系统硬件综合设计说明

系统硬件综合设计说明

ID:47413979

大小:264.13 KB

页数:23页

时间:2020-01-10

系统硬件综合设计说明_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《系统硬件综合设计说明》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、........计算机与信息学院《系统硬件综合设计》课程设计报告学生姓名:李学号:1234567890.专业学习资料.........专业班级:计算机2017年07月01日一、实验原理及设计.专业学习资料.........本次试验我主要根据上图进行理解和编程,起先参考了5个基础实验,期间又翻阅了自己动手写cpu,并且在网上查了很多资料,下面我将对该图做出我的理解和设计:1.pcf部分always@(posedgeClk)beginPCPlus4F_Reg=PCPlus4F;if(BranchM&ZeroM)PCF=PCBranchM;elsePCF=PCPlus4F;Instr

2、uctionF_Reg=InstructionF;if(InstructionF[31:26]==6'b000010)beginPCF={6'h0,InstructionF[25:0]};PCF=PCF<<2;endEndassignPCPlus4F=PCF+4;assignImemRdAddrF=PCF;.专业学习资料.........每个时钟上升沿到来,根据上一个时钟的PCSrcM判断是否为分支指令,若是,则选择PCBranchM作为这个时钟的指令地址,否则选PCF+4作为这个指令的指令地址,另外对于J类指令,我设计了一个特定的OpCode==“000010”,即为跳转指令

3、,因为每个指令以字节格式存储,占用,4个字节,故将后26位立即数进行位扩展后将其左移两位,效果等同于乘4,再将其赋值给PCF,这样下一跳的指令地址即为所要跳转的地址。对于这个部分,我起先是准备将其设计成一个模块的,之后由于模块接口连接时出现了无法解决的错误:输出PCF要作为InstructionMemory的输入,又要作为自身模块下一跳的输入,导致三者关联一起变化,程序报错,后来我又想到将PCF的输出改成两个,PCFout及PCFnext,PCFout作为InstructionMemory的输入,PCFnext作为自身模块下一跳的输入,但是程序仍无法正常运行,最后我想到了在to

4、p模块中对PCF进行处理并得以实现。2.InstructionMemory模块initialbegin$readmemh("instruction",InstMem,8'h0);endalways@(ImemRdAddr)beginInstruction<=InstMem[ImemRdAddr>>2];end这个模块很简单,主要是通过instructin文档来存储指令,以PCF作为地址取出指令输出至Control,SignExtend,Register三个模块。3.Ctr模块always@(OpCode)begincase(OpCode).专业学习资料.........//R-

5、I//addiu6'b001001:beginRegDstD=1;ALUSrcD=1;MemtoRegD=0;RegWriteD=1;MemWriteD=0;BranchD=0;ALUOp=2'b10;end//addi......endcaseendalways@(ALUOporFunct)begincasex({OpCode,ALUOp,Funct})14'b10001100xxxxxx:ALUControlD=5'b00010;//LW:add14'b00010001xxxxxx:ALUControlD=5'b00110;//SW:substractbeq.......专

6、业学习资料.........endcaseendendmoduleControl模块主要对来自InstructionMemory模块的指令进行分解,得到OpCode(指令高六位),Funct(指令低六位),在通过分析OpCode得到RegDstD,ALUSrcD,MemtoRegD,RegWriteD,BranchD,ALUOp这六个信号量,用于后面的运算,再使用OpCode,ALUOp,Funct三者的组合对指令的运算方法进行分析,得到相应的ALUControlD输出至ALU模块。4.Register模块initialbegin$readmemh("register",reg

7、File,32'h0);end//writeonfallingclockedgealways@(posedgeClk)beginif(RegWrite==1'b1)regFile[RegWrAddr]<=RegWrData;endassignRegARdData=(RegARdAddr>=0)?regFile[RegARdAddr]:0;.专业学习资料.........assignRegBRdData=(RegBRdAddr>=0)?regFile[RegBRdAddr]:0;通过信号量Re

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。