单周期CPU设计参考_第1页
单周期CPU设计参考_第2页
单周期CPU设计参考_第3页
单周期CPU设计参考_第4页
单周期CPU设计参考_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、指令的设计MIPS32的指令的三种格式的参考:R类型:31 26 25 21 20 16 15 11 10 6 5 0oprsrtrdsafunc 6位 5位 5位 5位 5位 6位I类型:31 26 25 21 20 16 15 0oprsrtimmediate6位 5位 5位 16位J类型:31 26 25 0opaddress6位 26位R类型指令的op为0,具体操作由func指定。rs和rt是源寄存器号,rd是目的寄存器号。只有移位指令使用sa来指定移位位数。I类型指令的低16位是立即数,计算时要把它扩展到32位。依指令的不同,有零扩展和符号扩展两种。J类型指令右边26位是字地址,

2、用于产生跳转的目标地址。具体的指令格式和内容请参考MIPS32。设计报告中需自行设计所有指令的二进制格式和对应的汇编指令格式。二、单周期CPU的设计我们把时钟的电平从低到高变化的瞬间称为时钟上升沿,两个相邻时钟上升沿之间的时间间隔称为一个时钟周期。单周期CPU指的是一条指令的执行在一个这样的时钟周期内完成,然后开始下一条指令的执行,即一条指令用一个周期。我们的目的地是要设计CPU的硬件电路,使其能够从存储器中读出一条条指令并执行指令所描述的操作。从存储器中读取指令的动作一般与指令本身的意义无关,可以以同样的方法把指令从存储器中取出。而执行指令则与指令本身的意义密切相关,因此最重要是首先搞清楚C

3、PU要执行的每条指令的意义。下面以两种类型的电路来举例。指令存储在存储器中。CPU取指令时把程序计数器(PC)中的内容作为存储器的地址,根据它来访问存储器,从PC值指定的存储单元中取来一条32位指令。如果取来的指令执行时没有引起转移,PC的值要加4;如果转移,要把转移的目标地址写入PC,以便在下一个时钟周期取出下一条指令。 取指令时用到的硬件电路和指令寄存器如图2.1所示,PC是一个简单的32位寄存器,由32个D触发器构成。指令存储器(Inst Mem)的输入端a是地址、输出端do是数据输出,即指令。图中的加法器专供PC+4使用,它的输出接到多路器的一个输入端。如果取来的指令没有引起转移或跳转

4、,则选择PC+4,在时钟上升沿处将其打入PC;若引起转移或跳转,则用多路器选择下一条指令该打入的PC值。寄存器计算类型指令执行时所需电路寄存器类型的指令有add等。如图是执行它们所需的部分硬件电路。大多数MIPS指令属于三操作数指令。指令格式中的rs和rt是两个5位的寄存器号,由它们从寄存器堆(Regfile)中读出两个32位的数据。由于寄存器号有5位,所以能从32个寄存器中选出一个。32个寄存器合在一起称为寄存器堆(Register File)。从寄存器堆读出的两个32位数据分别被送到ALU的a和b的输入端。 图2.2 执行寄存器计算类型指令所需电路具体的计算由ALU完成。ALU的计算控制码

5、aluc由控制部件(Control Unit)产生。这里的控制部件是简单的组合电路,输入信号是指令的操作码op和功能码func,输出信号3个,它们分别是ALU的操作码aluc、计算结果是否写入寄存器堆的控制信号wreg和下一条指令的地址选择信号pcsource。ALU的计算结果要写入寄存器堆。到底要写入32个寄存器中的哪一个,由5位目的寄存器号rd指定。寄存器堆有两个读端口和一个写端口。每个端口都有一个5位寄存器号,用于指定一个寄存器;还有32位的数据端,用于写数据。寄存器堆的参考电路,其中, dec5e是一个带有使能端的5-32译码器,mux32x32是一个32位的32选1的多路器,reg3

6、2由许多D触发器组成。可以用功能描述风格的Verilog HDL代码来实现,关键部分是类似于二维数组的寄存器变量:reg31:0register1:31(寄存器0的内容永远是0)。 图2.3 寄存器堆regfile的电路图数据存储器和指令存储器设计我们利用Xilinx ISE自带的IP核实现数据存储器和指令存储器的设计。在使用IP核时,可以将其作为一个黑盒子,只关注核的功能和参数配置,不需要了解核内部的实现电路。下面以指令存储器的设计为例。1、双击“”启动软件,建立好project。2、编辑初始化存储器的文档。在工程目录下生成一个txt文档,内容格式为: 图2.4 初始化ROM的文件格式文件前

7、两行是格式说明,第一行说明数据格式是16进制,第二行说明是初始向量,每个单元内的数据用逗号隔开,结束用分号。这里的数据是机器指令代码。完成后将后缀改成.coe。3、在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令。在弹出如图2.5的窗口,选择IP(Core Generator&Architecture Wizard),设置好后点next进入IP核选择,如图2.6。 图2.5 选择源文件类型 图2.6 选择所需的存储器IP核生成器4、IP核参数设置。第1页,直接点next。第2页,修改Memory Type选择项为:Single Port Rom。其余不变。第

8、3页修改Write Width和Write Depth为需要的值,其余不变。第4页在Load Init File处打钩,用之前写好的后缀为.coe的文件初始化存储器。选择Show可以看到存储器里的内容。以后这个关联文件内容修改后都要重新做一个Regenerate Core。第5、6页不用修改。点击Generate系统自动生成My_Rom只读存储器模块。生成完后ISE的工程管理区会增加一个模块:My_Rom(My_Rom.xco),选中My_Rom(My_Rom.xco),在过程管理区会出现核生成器菜单。5、双击过程管理区的View HDL Instruction Template在代码逻辑区会给出My_Rom的调用参数,你可以像一般模块那样调用。YourInstanceName改成喜欢的名字即可。数据存储器的设计和指令存储器类似,只是注意Memory Type要选择Single Port Ram。设计报告中应包括完整的CPU结构图和完整Verilog HDL代码。三、单周期CPU的测试CPU测试分为两个内容的工作:1. 通过Xilinx的仿真环境仿真CPU的工作过程;2.编写测试程序测试CPU的功能的正确性。对于“”要求用软件实现一个从汇编指令到二进制指令的解释器,输出的内容作为ROM的内容供CPU执行。CPU的测试程序个数需5个以上,能够完全覆盖所设计的所

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论