简单16位CPU的设计.docx
《简单16位CPU的设计.docx》由会员分享,可在线阅读,更多相关《简单16位CPU的设计.docx(12页珍藏版)》请在冰豆网上搜索。
简单16位CPU的设计
简单16位CPU勺设计
简单CPU的设计
设计步骤:
1)确定CPU功能
2)拟定指令系统(采用MIPS
3)分析指令系统,为数据通路选择合适的组件,并给出组件所需的控制信号,连接组件建立数据通路
4)详细分析指令在多周期通路中的执行过程,给出指令执行的流程图
5)依据指令执行的流程图,分析控制信号的取值,生成相应的状态转换图
一、确定CPU功能
M[2]—M[0]+M[1]
RAM
90HI0
160H
2
拟定指令系统
OPQ
Rs
RD
Fun*1
4位
3筱|
3危
3位
3位2
1类型:
p
1512115
吃65
2
OP^
Rt*
Imm+:
4位
3社
3命
6位
65
R类型;卩
151211
J类型
OP
Target
4位12位
指令格式中的op(opcode)是指令操作码。
rs(registersource)是源操作数的寄存器号。
rd(registerdestination)是目的寄存器号。
rt(registertarget)即可作为源寄存器号,又可作为目的寄存器号,有具体的指令决定。
func(function)可被认为是扩展的操作码,Target表示一下个地址开始
注:
操作码4位,寄存器字段rs,rt,rd各三位,Fun功能字段3位,Imm立即值字段6位;一共8个寄存器,R0只读不可写,恒为
0。
R类型的指令
ADDRd,Rs,Rt
SUBRd,Rs,Rt
ANDRd,Rs,Rt
ORRd,Rs,Rt
XORRd,Rs,Rt
I类型的指令
LWRt,Rs,imm6
SWRt,Rs,imm6
指令
操作码OP
所属的指令
Fun
备注
格式
ADD
0000
R
001
R[rd]JR[rs]+R[rt]
无符号加法
SUB
0000
R
010
R[rd]JR[rs]-R[rt]无符号减法
AND
0000
R
011
R[rd]JR[rs]&R[rt]
逻辑与
OR
0000
R
100
R[rd]JR[rs]|R[rt]
逻辑或
XOR
0000
R
101
R[rd]JR[rs]®R[rt]
逻辑异或
LW
0001
I
R[rt]JM[R[rs]+lmm]主存中内容与入寄存器
SW
0010
I
M[R[rs]+lmm]JR[rt]
寄存器中内容回与到主存
存放在ROM中的汇编指令,完成M[2]JM[0]+M[1]
LWR1,0(RO);R1JM[R[0]+0],由于R(0)内容为0,艮卩R1J
M[0]
LWR2,1(RO);R1JM[R[0]+1],由于R(0)内容为0,艮卩R1J
M[1]
ADDR3,R1,R2;R3JR1+R2
SWR3,2(R0);M[R[0]+2]JR3
F面地址对应着rom模块里面
ROM地址
汇编指令
机器指令
0
LWR1,0(R0)
0001000001000000
1
LWR2,1(R0)
0001000010000001
2
ADDR3,R1,R2
0000001010011001
3
SWR3,2(R0)
0010000011000010
4
INCR4,R3
0000011010100111
5
SWR4,3(R0)
0010000100000011
6
ANDR5,R1,R2
0000001010101011
7
ORR6,R1,R2
0000001010110100
8
XORR7,R3,R4
0000011100111101
9
SWR5,4(R0)
0010000101000100
10
SWR6,5(R0)
0010000110000101
11
SWR7,6(R0)
0010000111000110
12
NOTR3,R1
0000001001011110
13
SUBR4,R1,R2
0000001010100010
14
BEQR1R2
0110001010000001
15
SWR3,7(R0)
0010000011000111
16
SWR4,8(R0)
0010000100001000
17
LWR1,2(R0)
0001000001000010
18
LWR2,3(R0)
0001000010000011
19
J
(2)
0011000000000001
LW表示读取数据,SW表示存储数据,BEQ表示相等就跳
转,J表示直接跳转到某个地址
三、根据指令的需求,连接组件,形成多周期的数据通路
诵码读RegI执IT.地址计氛:
访问TFWf器i
9EI
irwr,pcwr,regwr,aluoutregwr,memwr,lmdwr:
相应组件的写使能控制
信号,为1时,有效
Regdst:
为1时选择RD;为0时选择RT.
Signex:
为1时扩展器进行符号扩展;为0时扩展器进行零扩展。
Aluselb:
为1时选择暂存器B;为0时选择扩展器的输出端。
Alufunc:
0000与运算;0001或运算;0010异或;0011取反;0100加;
0101减
Memtoreg:
为1时选择LMD;为0时选择aluoutput
关键组件
1)寄存器及寄存器组
设计带复位(清零)、写使能控制功能的16位寄存器(PC),当复位信号为1时,寄存器输出0,否则,在时钟下降沿且写使能信号有效时将输入数据传送至输出端。
设计带写使能控制功能的16位寄存器(ALUO、LMD),在时钟下降沿且写使能信号有效时将输入数据传送至输出端。
设计暂存器(暂存器A、B),在时钟下降沿将输入数据传送至输出端。
设计指令寄存器(IR),在时钟下降沿且写使能信号有效时将
输入指令传送至输出端,并且分解出指令的op、rs、rt、rd、func、imm字段。
设计由8个寄存器构成的16位通用寄存器组。
通用寄存器组有两个读口,ReadOne和ReadTwo分别读出由RegOne和regTwo指定编号的寄存器中的信息,读操作属于组合逻辑操作,不需时钟控制;有一个写口,WriteData上的信息写入
由WriteReg指定编号的寄存器中,写操作属于时序逻辑操作,需要clk时钟信号的控制,在WriteEnable为1的情况下,clk下降沿完成信息的写入。
2)RAM及ROM
设计存储容量为64X16的RAM
写操作为时序逻辑操作,当时钟clock下降沿到来且wren=1的情
况下,data开始写入由address指定的存储单元中;读操作为组合
逻辑操作,address有效后,q输出address指定的存储单元的内容
定制初始化数据文件,建立MemoryInitializationFile(.mif)文件,选择FilefNew命令,并在New窗口选择Otherfile选项,再选择MemoryInitializationFile选项。
出现如图1所示的窗口,指定存储容量,字的个数输入64,字长输入
16。
之后,出现如图2所示的窗口,向存储单元中输入初始化数据,选择地址及存储内容采用16进制。
输入数据后保存文件,文件名ram1.mif。
初始化0单元数据为90H,1单元数据为60H。
数据窗口
设计存储容量为64X16的ROM
'fram
P——
•iddreBsfB..OJq[l5..Dj
■■E
…
-inst
■1
L..phi*1M・
■■■iiKiBr,iaivB,avriati■■a・・・nm・・t・・・ia・・・
Q输出由
ROM为只读存储器,读操作为组合逻辑操作,
ADDRESS指定的存储单元的内容。
3)ALU
设计具有下列功能的16位ALU
功能选择输入func[3..O]
操作
0000
gAandb
0001
cJAorb
0010
kAxorb
0011
cjNota
0100
cjA+b
0101
cja-b
0110
Ifa其它
cja
ALU的元件图符
4)指令执行流程图
5)状态转换图