简单16位CPU的设计

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

简单CPU的设计

设计步骤:

1)确定CPU功能

2)拟定指令系统(采用MIPS)

3)分析指令系统,为数据通路选择合适的组件,并给出组件

所需的控制信号,连接组件建立数据通路

4)详细分析指令在多周期通路中的执行过程,给出指令执行

的流程图

5)依据指令执行的流程图,分析控制信号的取值,生成相应

的状态转换图

一、确定CPU功能

M[2]←M[0]+M[1]

二、拟定指令系统

J类型

4位12位

指令格式中的op(opcode)是指令操作码。rs(register source)是源操作数的寄存

器号。rd(register destination)是目的寄存器号。rt(register target)即可作为源寄

存器号,又可作为目的寄存器号,有具体的指令决定。func(function)可被认为

是扩展的操作码,Target表示一下个地址开始

注:操作码4位,寄存器字段rs,rt,rd各三位,Fun功能字段3位,Imm立即值字段6位;一共8个寄存器,R0只读不可写,恒为0。

R类型的指令

ADD Rd,Rs,Rt

SUB Rd,Rs,Rt

AND Rd,Rs,Rt

OR Rd,Rs,Rt

XOR Rd,Rs,Rt

I类型的指令

LW Rt, Rs,imm6

SW Rt, Rs,imm6

存放在ROM中的汇编指令,完成M[2]←M[0]+ M[1]

LW R1,0(R0);R1←M[R[0]+0],由于R(0)内容为0,即R1←M[0] LW R2,1(R0);R1←M[R[0]+1],由于R(0)内容为0,即R1←M[1] ADD R3,R1,R2 ; R3←R1+R2

SW R3,2(R0) ; M[R[0]+2]←R3

下面地址对应着rom模块里面

LW表示读取数据,SW表示存储数据,BEQ表示相等就跳转,J表示直接跳转到某个地址

三、根据指令的需求,连接组件,形成多周期的数据通路

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

下降沿完成信息的写入。

图1PC元件图符

图 2 寄存器元件图符

图3暂存器元件图符

图4 IR 元件图符图5 寄存器组的元件图符

2)RAM 及ROM

●设计存储容量为64×16的RAM

写操作为时序逻辑操作,当时钟clock下降沿到来且wren=1的情况下,data开始写入由address指定的存储单元中;读操作为组合逻辑操作,address有效后,q输出address指定的存储单元的内容.

定制初始化数据文件,建立Memory Initialization File(.mif)文件,选择File→New命令,并在New窗口选择Other file

选项,再选择Memory Initialization File选项。出现如图1

所示的窗口,指定存储容量,字的个数输入64,字长输入

16。之后,出现如图2所示的窗口,向存储单元中输入初

始化数据,选择地址及存储内容采用16进制。输入数据后

保存文件,文件名ram1.mif。初始化0单元数据为90H,1

单元数据为60H。

图1 指定存储容量窗口图2 初始化数据窗口

设计存储容量为64×16的ROM

ROM为只读存储器,读操作为组合逻辑操作,Q输出由ADDRESS指定的存储单元的内容。

3)ALU

设计具有下列功能的16位ALU

ALU的元件图符4)指令执行流程图

5)状态转换图

相关文档
最新文档