华中科技大学HUST类MIPS单周期微处理器设计实验报告(共34页).docx
《华中科技大学HUST类MIPS单周期微处理器设计实验报告(共34页).docx》由会员分享,可在线阅读,更多相关《华中科技大学HUST类MIPS单周期微处理器设计实验报告(共34页).docx(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上类MIPS单周期微处理器设计实验报告专业:班级: 学号: 姓名: 一、 微处理器各模块设计各模块的框图结构如上图所示。由图可知,该处理器包含指令存储器、数据存储器、寄存器组、ALU单元、符号数扩张、控制器、ALU控制译码以及多路复用器等。图中还忽略了一个单元:时钟信号产生器,而且以上各个部件必须在时钟信号的控制下协调工作。1. 指令存储器的设计指令寄存器为ROM类型的存储器,为单一输出指令的存储器。因此其对外的接口为clk、存储器地址输入信号(指令指针)以及数据输出信号(指令)。(1)在IP wizard 中配置ROM,分配128个字的存储空间,字长为32位宽。(2)
2、选择输入具有地址寄存功能,只有当时钟上升沿有效时,才进行数据的输出。(3)配置ROM内存空间的初始化COE文件。最后单击Generate按钮生成IROM模块。2. 数据存储器的设计数据存储器为RAM类型的存储器,并且需要独立的读写控制信号。因此其对外的接口输入信号为clk、we、datain、addr;输出信号为dataout。数据存储器基本建立过程同ROM的建立。3. 寄存器组设计寄存器组是指令操作的主要对象,MIPS中一共有32个32位寄存器。在指令的操作过程中需要区分Rs、Rt、Rd的地址和数据,并且Rd的数据只有在寄存器写信号有效时才能写入,因此该模块的输入为clk、RegWriteA
3、ddr、RegWriteData、RegWriteEn、RsAddr、RtAddr、reset;输出信号为RsData、RtData。由于$0一直输出0,因此当RsAddr、RtAddr为0时,RsData以及RtData必须输出0,否则输出相应地址寄存器的值。另外,当RegWriteEn有效时,数据应该写入RegWriteAddr寄存器。并且每次复位时所有寄存器都清零。代码如下:module regFile( input clk, input reset, input 31:0 regWriteData, input 4:0 regWriteAddr, input regWriteEn, o
4、utput 31:0 RsData, output 31:0 RtData, input 4:0 RsAddr, input 4:0 RtAddr );reg31:0 regs0:31;assign RsData = (RsAddr = 5b0)?32b0:regsRsAddr;assign RtData = (RtAddr = 5b0)?32b0:regsRtAddr;integer i;always (posedge clk)beginif(!reset)beginif(regWriteEn=1)beginregsregWriteAddr=regWriteData;endendelsebe
5、ginfor(i=0;i31;i=i+1)regsi=0;regs31=32hffffffff;endendendmodule4. ALU设计在这个简单的MIPS指令集中,微处理器支持add、sub、and、or、slt运算指令,需要利用ALU单元实现运算,同时数据存储指令sw、lw也需要ALU单元计算存储器地址,条件跳转指令beq需要ALU来比较两个寄存器是否相等。所有这些指令包含的操作为加、减、与、或小于设置5种不同的操作。该模块根据输入控制信号对输入数据进行相应的操作,并获得输出结果以及零标示,由于MIPS处理器ALU单元利用4根输入控制线的译码决定执行何种操作,因此该模块的接口为:输入
6、:input1(32bit),input2(32bit),aluCtr(4bit)输出:zero(1bit),alluRes(32bit)代码如下:module ALU( input 31:0 input1, input 31:0 input2, input 3:0 aluCtr, output 31:0 aluRes, output zero );reg zero;reg31:0 aluRes;always (input1 or input2 or aluCtr)begincase(aluCtr)4b0110:beginaluRes=input1-input2;if(aluRes=0)zer
7、o=1;elsezero=0;end4b0010:aluRes=input1+input2;4b0000:aluRes=input1&input2;4b0001:aluRes=input1|input2;4b1100:aluRes=(input1|input2);4b0111:beginif(input1input2)aluRes = 1;enddefault:aluRes = 0;endcaseendendmodule5. ALU控制设计ALU单元对应以上5种操作的编码如表所示:输入信号操作类型0000与0001或0010加0110减0111小于设置通过2位操作类型码以及6位指令功能码就可以
8、产生ALU单元的4位控制信号。它们之间的对应关系如表所示:因此该模块的主要功能就是根据译码控制单元产生2位操作码以及6位功能码产生4位ALU控制信号,接口为:输入:aluop(2bit),funt(6bit)输出:aluctr(4bit)代码为:module aluctr( input 1:0 ALUOp, input 5:0 funct, output 3:0 ALUCtr );reg3:0 ALUCtr;always (ALUOp or funct)casex(ALUOp,funct)8b00xxxxxx:ALUCtr=4b0010;8b01xxxxxx:ALUCtr=4b0110;8b1
9、1xxxxxx:ALUCtr=4b0000;8b10xx0000:ALUCtr=4b0010;8b10xx0010:ALUCtr=4b0110;8b10xx0100:ALUCtr=4b0000;8b10xx0101:ALUCtr=4b0001;8b10xx1010:ALUCtr=4b0111;endcaseendmodule6. 控制器设计控制器输入为指令的opCode字段,即操作码。操作码经过主控制单元的译码,给ALUCtr、Data、Memory、Registers、Muxs等部件输出正的控制信号。微处理器在执行不同指令时,控制信号相对应的状态表如下:因此该模块的接口为:输入:opcode
10、(6bit)输出:alusrc,memtoreg,regwrite,memread,memwrite,branch,aluop1:0,jmp代码为:module ctr( input 5:0 opCode, output regDst, output aluSrc, output memToReg, output regWrite, output memRead, output memWrite, output branch, output 1:0 aluop, output jmp );reg regDst;reg aluSrc;reg memToReg;reg regWrite;reg m
11、emRead;reg memWrite;reg branch;reg1:0 aluop;reg jmp;always (opCode)begincase(opCode)6b:/jmpbeginregDst=0;aluSrc=0;memToReg=0;regWrite=0;memRead=0;memWrite=0;branch=0;aluop=2b00;jmp=1;end6b:/RbeginregDst=1;aluSrc=0;memToReg=0;regWrite=1;memRead=0;memWrite=0;branch=0;aluop=2b10;jmp=0;end6b:/lwbeginreg
12、Dst=0;aluSrc=1;memToReg=1;regWrite=1;memRead=1;memWrite=0;branch=0;aluop=2b00;jmp=0;end6b:/swbeginregDst=0;aluSrc=1;memToReg=0;regWrite=0;memRead=0;memWrite=1;branch=0;aluop=2b00;jmp=0;end6b:/beqbeginregDst=0;aluSrc=0;memToReg=0;regWrite=0;memRead=0;memWrite=0;branch=1;aluop=2b01;jmp=0;end6b:/andibe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华中科技大学 HUST MIPS 周期 微处理器 设计 实验 报告 34
限制150内