R型指令的CPU设计_第1页
R型指令的CPU设计_第2页
R型指令的CPU设计_第3页
R型指令的CPU设计_第4页
R型指令的CPU设计_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

杭州电子科技大学计算机学院实验报告实验目的掌握MIPSR型指令的数据通路设计,掌握指令流和数据流的控制方法。掌握完整的单周期CPU顶层模块的设计方法实现MIPSR型指令的功能实验环境ISEDesignSuite14.6DigilentAdeptNexys3实验板实验内容(算法、程序、步骤和方法)本实验实现MIPS核心指令集的一个R型指令集,包含八条指令。将实现实验三的ALU模块,实验四实现的寄存器模块,实验七实现的指定储存器和取指令模块一起集成起来完成本实验。各个模块之间的关系图顶层模块:moduleTest_CPU(rst,clk,SW,LED);inputrst,clk; input[2:0]SW;//选择信号 outputreg[7:0]LED; wireZF,OF; wire[31:0]ALU_F; CPUr_cpu(rst,clk,ZF,OF,ALU_F); always@(*)begin case(SW) 3'b000:LED=ALU_F[7:0]; 3'b001:LED=ALU_F[15:8]; 3'b010:LED=ALU_F[23:16]; 3'b011:LED=ALU_F[31:24]; 3'b100:beginLED[7:2]=0;LED[1]=OF;LED[0]=ZF;end default:LED=0; endcase endendmodule综合ALU,取指令,寄存器模块的顶层模块moduleCPU(inputrst, inputclk, outputZF, outputOF, output[31:0]F); regwrite_reg;wire[31:0]Inst_code; wire[31:0]R_Data_A; wire[31:0]R_Data_B; reg[2:0]ALU_OP; Fetch_Instfetch(rst,clk,Inst_code); Registerfileregister(Inst_code[25:21],Inst_code[20:16],Inst_code[15:11],write_reg, F,~clk,rst,R_Data_A,R_Data_B); ALUalu(R_Data_A,R_Data_B,F,ALU_OP,ZF,OF); always@(*) begin write_reg=0; ALU_OP=0; if(Inst_code[31:26]==0) begin case(Inst_code[5:0]) 6'b100000:ALU_OP=3'b100; 6'b100010:ALU_OP=3'b101; 6'b100100:ALU_OP=3'b000; 6'b100101:ALU_OP=3'b001; 6'b100110:ALU_OP=3'b010; 6'b100111:ALU_OP=3'b011; 6'b101011:ALU_OP=3'b110; 6'b000100:ALU_OP=3'b111; endcase write_reg=1; end endendmoduleALU模块:moduleALU(A,B,F,ALU_OP,ZF,OF);input[31:0]A,B; input[2:0]ALU_OP; outputregZF,OF; outputreg[31:0]F; regC32; always@(*) begin OF=1'b0;C32=1'b0; case(ALU_OP) 3'b000:F=A&B; 3'b001:F=A|B; 3'b010:F=A^B; 3'b011:F=~(A|B); 3'b100:begin{C32,F}=A+B;OF=A[31]^B[31]^F[31]^C32;end 3'b101:begin{C32,F}=A-B;OF=A[31]^B[31]^F[31]^C32;end 3'b110: if(A<B) F=1; else F=0; 3'b111:F=B<<A; endcase if(F==0) ZF=1; else ZF=0; endendmodule实验四的寄存器模块:moduleRegisterfile(input[4:0]R_Addr_A,input[4:0]R_Addr_B, input[4:0]W_Addr, inputWrite_Reg, input[31:0]W_Data, inputClk, inputReset, output[31:0]R_Data_A, output[31:0]R_Data_B ); reg[31:0]REG_Files[0:31]; reg[5:0]i; initial begin for(i=0;i<=31;i=i+1) REG_Files[i]=0; end assignR_Data_A=REG_Files[R_Addr_A];assignR_Data_B=REG_Files[R_Addr_B]; always@(posedgeClkorposedgeReset) begin if(Reset) for(i=0;i<=31;i=i+1) REG_Files[i]=0; else if(Write_Reg&&W_Addr!=0) REG_Files[W_Addr]=W_Data; endendmodule实验七的取指令模块:moduleFetch_Inst(inputrst, inputclk, output[31:0]Inst_code);wire[31:0]PC_new; reg[31:0]PC; initial PC=32'h00000000; Inst_addrInst_mem(.clka(clk),.addra(PC[7:2]),.douta(Inst_code)); assignPC_new=PC+4; always@(posedgerstornegedgeclk) begin if(rst) PC=32'h00000000; else PC={24'h000000,PC_new[7:0]}; endendmodule(接上)实验内容(算法、程序、步骤和方法)管脚配置:NET"LED[0]"LOC=U16;NET"LED[1]"LOC=V16;NET"LED[2]"LOC=U15;NET"LED[3]"LOC=V15;NET"LED[4]"LOC=M11;NET"LED[5]"LOC=N11;NET"LED[6]"LOC=R11;NET"LED[7]"LOC=T1

温馨提示

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

评论

0/150

提交评论