杭电计组实验8实现R型指令的CPU设计实验Word文档格式.docx
《杭电计组实验8实现R型指令的CPU设计实验Word文档格式.docx》由会员分享,可在线阅读,更多相关《杭电计组实验8实现R型指令的CPU设计实验Word文档格式.docx(10页珍藏版)》请在冰点文库上搜索。
实验序号
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];
b001:
LED=ALU_F[15:
8];
b010:
LED=ALU_F[23:
16];
b011:
LED=ALU_F[31:
24];
b100:
beginLED[7:
2]=0;
LED[1]=OF;
LED[0]=ZF;
end
default:
LED=0;
endcase
endmodule
顶层R型CPU模块:
for(i=0;
i<
=31;
i=i+1)
REG_Files[i]=0;
assignR_Data_A=REG_Files[R_Addr_A];
assignR_Data_B=REG_Files[R_Addr_B];
always@(posedgeClkorposedgeReset)
if(Reset)
for(i=0;
else
if(Write_Reg&
&
W_Addr!
=0)
REG_Files[W_Addr]=W_Data;
end
endmodule
ALU算术逻辑运算单元模块:
moduleALU(A,B,F,ALU_OP,ZF,OF);
input[31:
0]A,B;
0]ALU_OP;
outputregZF,OF;
outputreg[31:
0]F;
regC32;
OF=1'
b0;
C32=1'
case(ALU_OP)
3'
F=A&
B;
F=A|B;
F=A^B;
F=~(A^B);
begin{C32,F}=A+B;
OF=A[31]^B[31]^F[31]^C32;
b101:
begin{C32,F}=A-B;
b110:
if(A<
B)
F=1;
else
F=0;
b111:
F=B<
<
A;
endcase
if(F==0)
ZF=1;
ZF=0;
测试代码:
moduletest;
//Inputs
regrst;
regclk;
//Outputs
wireZF;
wireOF;
wire[31:
0]F;
//InstantiatetheUnitUnderTest(UUT)
top_R_cpuuut(
.rst(rst),
.clk(clk),
.ZF(ZF),
.OF(OF),
.F(F)
);
initialbegin
//InitializeInputs
rst=0;
clk=0;
//Wait100nsforglobalresettofinish
#100;
clk=1;
//Addstimulushere
forever
begin
#50;
clk=~clk;
end
二、仿真波形
三、电路图
顶层电路模块
顶层电路内部结构:
四、引脚配置(约束文件)
NET"
LED[7]"
LOC=T11;
LED[6]"
LOC=R11;
LED[5]"
LOC=N11;
LED[4]"
LOC=M11;
LED[3]"
LOC=V15;
LED[2]"
LOC=U15;
LED[1]"
LOC=V16;
LED[0]"
LOC=U16;
SW[2]"
LOC=V9;
SW[1]"
LOC=T9;
SW[0]"
LOC=T10;
clk"
LOC=C9;
rst"
LOC=C4;
五、思考与探索
(1)R型指令CPU实验结果记录表
序号指令执行结果标志结论
10000827FFFFFFFF00正确
20001102b0000_000100正确
3004218200000_000200正确
4006220200000_000300正确
5008328200000_000500正确
600a330200000_000700正确
7004638040000_000E00正确
800a648200000_000C00正确
9012640040000_700000正确
1000284826FFFF_8FFF00正确
1101215020FFFF_8FFE00正确
12010758220000_6FF200正确
1300e86022FFFF_900E00正确
14012c6824FFFF_800E00正确
15012c7025FFFF_9FFF00正确
1600c778250000_FFFF00正确