类MIPS单周期微处理器设计实验报告.docxVIP

类MIPS单周期微处理器设计实验报告.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
课程名称:微机原理与接口技术实验 类MIPS单周期微处理器设计 实验任务、目标 利用Verilog HDL语言,基于Xilinx FPGA nexys4实验平台,设计一个能够执行以下MIPS指令集的单周期类MIPS处理器,要求完成所有支持指令的功能仿真,验证指令执行的正确性,要求编写汇编程序将本人学号的ASCII码存入RAM的连续内存区域。 ? 支持基本的算术逻辑运算如add,sub,and,or,slt,andi指令 ? 支持基本的内存操作如lw,sw指令 ? 支持基本的程序控制如beq,j指令 (由于特殊情况,此次实验仅完成Reg、ALU、ALUCtr三个模块并分别加以仿真和验算) 微处理器各个模块硬件设计原理、verilog代码 Reg设计 Reg是指令操作地主要对象,MIPS微处理器中一共32个32位寄存器。该模块输入为 RsAddr,RtAddr,WriteAddr,RegWr,WriteData,clk,reset有两项输出 RsData,RtData。其中当复位信号reset为1时所有寄存器清零,当复位信号为0且写信号有效时数据才写入writedata寄存器。(其中0号寄存器永远为0)具体代码如下: module RegFile( input [4:0] RsAddr, input [4:0] RtAddr, input [4:0] WriteAddr, input RegWr, input [31:0] WriteData, input clk, input reset, output [31:0] RsData, output [31:0] RtData ); reg [31:0] regs[0:31]; assign RsData =(RsAddr==5b0) ? 32b0:regs[RsAddr]; assign RtData =(RtAddr==5b0) ? 32b0:regs[RtAddr]; integer i; always @(negedge clk) //下降沿回写到寄存器 if(!resetRegWr) regs[WriteAddr]=WriteData; else if(reset) for(i=0;i32;i=i+1) regs[i]=4*i; //寄存器的值初始化为编号乘以4 Endmodule ALU设计 微处理器支持add,sub,and,or,slt运算指令,需要用ALU单元实现运算,同时sw,lw,beq等指令也要用到ALU单元计算地址,比较数据,因此我们设计此模块输入为in1,in2,(此处要设置为signed类型,不然无法执行slt指令),ALUctr两个输出Res,zero。对于ALUctr的控制信号设置为0b0110对应sub,0b0010对应add,0b0000对应and,0b0001对应or,0b0111对应小于设置,具体代码如下: module ALU( input signed [31:0] SrcA, input signed [31:0] SrcB, input [3:0] ALUCtr, output reg [31:0] ALURes, output reg zero ); always @(SrcA or SrcB or ALUCtr) begin case (ALUCtr) 4b0000://and begin ALURes = SrcA SrcB; zero=0; end 4b0010: //add begin ALURes = SrcA + SrcB; zero=0; end 4b0001: //or begin ALURes = SrcA | SrcB; zero=0; end 4b0110: //sub begin ALURes = SrcA - SrcB; zero=(ALURes==0)?1:0; end 4b0111: //slt begin ALURes =( SrcA SrcB)?1:0; zero=0; end default: begin ALURes =0; zero=0;

文档评论(0)

浙江工程信息通 + 关注
实名认证
服务提供商

网络工程师持证人

本人已从事浙江省工程咨询5年,对浙江省内工程信息非常熟悉,可获取新建工程相关联系人、设计院、业主等关键信息。另外从事楼宇自控专业已10年,考取了一建二建等资格证书,有关考试方面的问题(考试心得、方法、学习资料等)都欢饮来咨询交流。

领域认证该用户于2023年05月11日上传了网络工程师

1亿VIP精品文档

相关文档