杭电计组实验实现R型指令的CPU设计实验.docx
- 文档编号:28272058
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:11
- 大小:52.13KB
杭电计组实验实现R型指令的CPU设计实验.docx
《杭电计组实验实现R型指令的CPU设计实验.docx》由会员分享,可在线阅读,更多相关《杭电计组实验实现R型指令的CPU设计实验.docx(11页珍藏版)》请在冰豆网上搜索。
杭电计组实验实现R型指令的CPU设计实验
杭电计组实验-实现R型指令的
CPU设计实验
作者:
日期:
实验报告
姓名
阳光男
学号
16041321
班级
16052317
专业
计算机科学与技术
课程名称
《计算机组成原理与系统结构试验》
任课老师
张翔老师
指导老
师
张翔老师
机位号
无
实验序号
8
实验名称
《实验八实现R型指令的CPU设计实验》
实验时间
2018/5/25
实验地
占
八、、
1教225
实验设备号
个人电脑
一、实验程序源代码
顶层LED测试模块:
moduleTop_LED(clk,rst,SW,LED);
inputclk,rst;
input[2:
0]SW;
outputreg[7:
0]LED;
wireZF,OF;
wire[31:
0]ALU_F;
top_R_cputest_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]=0F;LED[0]=ZF;enddefault:
LED=0;
endcase
end
2018年_6_月1日
成绩:
endmodule
顶层R型CPU模块:
moduletop_R_cpu(inputrst,inputclk,outputZF,outputOF,output[31:
0]F);regwrite_reg;
wire[31:
0]lnst_code;
wire[31:
0]R_Data_A;
wire[31:
0]R_Data_B;
reg[2:
0]ALU_OP;
pcpc_connect(clk,rst,Inst_code);
Register_fileR_connect(Inst_code[25:
21],lnst_code[20:
16],
Inst_code[15:
11],write_reg,F,~clk,rst,R_Data_A,R_Data_B);
ALUALU_connect(R_Data_A,R_Data_B,F,ALU_OPOF);
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
end
endmodule
PC取指令模块:
modulepc(inputclk,inputrst,output[31:
0]lnst_code);reg[31:
0]PC;
wire[31:
0]PC_new;
initial
PC<=32'h00000000;
Inst_ROMInst_ROM1(
.clka(clk),
.addra(PC[7:
2]),
.douta(Inst_code)
);
assignPC_new二{24'h000000,PC_new[7:
0]};always@(negedgeclkorposedgerst)begin
if(rst)
PC=32'h00000000;
elsePC=PC_new;
end
endmodule
寄存器堆模块:
module
B);
Register_file(R_Addr_A,R_Addr_B,W_Addr,Write_Reg,W_Data,Clk,Reset,R_Data_A,R_Datainput[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];
initial//仿真过程中的初始化
begin
for(i=0;iv=31;i二i+1)
REG_Files[i]=O;
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]=O;
else
if(Write_Reg&&W_Addr!
=0)
REG_Files[W_Addr]=W_Data;
end
endmodule
ALU算术逻辑运算单元模块:
moduleALU(A,B,F,ALU_QZF,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=AAB;
3'bO11:
F=~(A^B);
3'b100:
begin{C32,F}=A+B;OF=A[31]AB[31]AF[31]AC32;end
3'b101:
begin{C32,F}二A-B;OF二A[31]AB[31]AF[31FC32;end3'b110:
if(A
F=1;
else
F=0;
3'b111:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 杭电计组 实验 实现 指令 CPU 设计