- 1、本文档共7页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
R型指令的CPU设计
杭州电子科技大学计算机学院
实验报告
实验目的 掌握MIPS R型指令的设计,掌握指令流和数据流的控制方法。
完整的单周期CPU顶层模块的设计方法
MIPS R型指令的功能ISE Design Suite 14.6
Digilent Adept
Nexys3实验板 实验内容(算法、程序、步骤和方法)
本实验实现MIPS核心指令集的一个R型指令集包含八条指令。将实验ALU模块,实验寄存器模块,实验七的储存和取指令模块集成完成本实验
各个模块之间的关系
顶层模块:
module Test_CPU(rst,clk,SW,LED);
input rst,clk;
output reg [7:0]LED;
wire ZF,OF;
wire [31:0]ALU_F;
CPU r_cpu(rst,clk,ZF,OF,ALU_F);
always@(*)
begin
case(SW)
3b000:LED=ALU_F[7:0];
3b001:LED=ALU_F[15:8];
3b010:LED=ALU_F[23:16];
3b011:LED=ALU_F[31:24];
3b100:begin LED[7:2]=0;LED[1]=OF;LED[0]=ZF;end
default:LED=0;
endcase
end
endmodule
综合ALU,取指令,寄存器模块顶层模块
module CPU(
input rst,
input clk,
output ZF,
output OF,
output [31:0]F
);
reg write_reg;
wire [31:0]Inst_code;
wire [31:0]R_Data_A;
wire [31:0]R_Data_B;
reg [2:0]ALU_OP;
Fetch_Inst fetch(rst,clk,Inst_code);
Registerfile register(Inst_code[25:21],Inst_code[20:16],Inst_code[15:11],write_reg,
F,~clk,rst,R_Data_A,R_Data_B);
ALU alu(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])
6b100000:ALU_OP=3b100;
6b100010:ALU_OP=3b101;
6b100100:ALU_OP=3b000;
6b100101:ALU_OP=3b001;
6b100110:ALU_OP=3b010;
6b100111:ALU_OP=3b011;
6b101011:ALU_OP=3b110;
6b000100:ALU_OP=3b111;
endcase
write_reg=1;
end
end
endmodule
ALU模块:
module ALU(A,B,F,ALU_OP,ZF,OF);
input [31:0]A,B;
input [2:0]ALU_OP;
output reg ZF,OF;
output reg [31:0]F;
reg C32;
always@(*)
begin
OF=1b0;
C32=1b0;
case(ALU_OP)
3b000:F=AB;
3b001:F=A|B;
3b010:F=A^B;
3b011:F=~(A|B);
3b100:begin {C32,F}=A+B;OF=A[31]^B[31]^F[31]^C32; end
3b101:begin {C32,F}=A-B;OF=A[31]^B[31]^F[31]^C32; end
3b110:
if(AB)
F=1;
else
F=0;
3b111:F=BA;
endcase
if(F==0)
ZF=1;
else
ZF=0;
end
endmodule
实验四的寄存器模块:
module Registerfile(input [4:0]R_Addr_A,
input
文档评论(0)