杭电计组实验寄存器堆设计实验.docx
- 文档编号:15977982
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:9
- 大小:125.22KB
杭电计组实验寄存器堆设计实验.docx
《杭电计组实验寄存器堆设计实验.docx》由会员分享,可在线阅读,更多相关《杭电计组实验寄存器堆设计实验.docx(9页珍藏版)》请在冰点文库上搜索。
杭电计组实验寄存器堆设计实验
杭电计组实验-寄存器堆设计实验
————————————————————————————————作者:
————————————————————————————————日期:
实验报告
2018年5月12日成绩:
姓名
阳光男
学号
16041321
班级
16052317
专业
计算机科学与技术
课程名称
《计算机组成原理与系统结构试验》
任课老师
张翔老师
指导老师
张翔老师
机位号
默认
实验序号
4
实验名称
《实验四寄存器堆设计》
实验时间
2018/5/12
实验地点
1教211
实验设备号
个人电脑、Nexys3开发板
一、实验程序源代码
1.寄存器堆模块代码:
moduleRegister_file(R_Addr_A,R_Addr_B,W_Addr,Write_Reg,W_Data,Clk,Reset,R_Data_A,R_Data_B);
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;
end
endmodule
2.顶层电路模块代码:
moduleTop_Register_file(Addr,Write_Reg,C1,C2,Clk,Reset,LED);
input[4:
0]Addr;
input[1:
0]C1;//C1选择32位数据输出哪八位字节
inputWrite_Reg,C2,Clk,Reset;//C2选择读A/B端口的数据
outputreg[7:
0]LED;
wire[31:
0]R_Data_A,R_Data_B;
reg[31:
0]W_Data;
reg[4:
0]A,B;
Register_filereg1(A,B,Addr,Write_Reg,W_Data,Clk,Reset,R_Data_A,R_Data_B);
always@(AddrorWrite_RegorC1orC2orR_Data_AorR_Data_B)
begin
A=0;
B=0;
LED=0;
W_Data=0;
if(!
Write_Reg)//读操作Write_Reg=0
begin
if(!
C2)
begin
A=Addr;
case(C1)
2'b00:
LED=R_Data_A[7:
0];
2'b01:
LED=R_Data_A[15:
8];
2'b10:
LED=R_Data_A[23:
16];
2'b11:
LED=R_Data_A[31:
24];
endcase
end
else
begin
B=Addr;
case(C1)
2'b00:
LED=R_Data_B[7:
0];
2'b01:
LED=R_Data_B[15:
8];
2'b10:
LED=R_Data_B[23:
16];
2'b11:
LED=R_Data_B[31:
24];
endcase
end
end
else//写操作
begin
case(C1)
2'b00:
W_Data=32'h0000_0003;
2'b01:
W_Data=32'h0000_0607;
2'b10:
W_Data=32'hFFFF_FFFF;
2'b11:
W_Data=32'h1111_1234;
endcase
end
end
endmodule
3.测试代码
moduletest;
//Inputs
reg[4:
0]R_Addr_A;
reg[4:
0]R_Addr_B;
reg[4:
0]W_Addr;
regWrite_Reg;
reg[31:
0]W_Data;
regClk;
regReset;
//Outputs
wire[31:
0]R_Data_A;
wire[31:
0]R_Data_B;
//InstantiatetheUnitUnderTest(UUT)
Register_fileuut(
.R_Addr_A(R_Addr_A),
.R_Addr_B(R_Addr_B),
.W_Addr(W_Addr),
.Write_Reg(Write_Reg),
.W_Data(W_Data),
.Clk(Clk),
.Reset(Reset),
.R_Data_A(R_Data_A),
.R_Data_B(R_Data_B)
);
initialbegin
//InitializeInputs
R_Addr_A=0;
R_Addr_B=0;
W_Addr=0;
Write_Reg=0;
W_Data=0;
Clk=0;
Reset=0;
//Wait100nsforglobalresettofinish
#100;
//Addstimulushere
#100;
R_Addr_A=0;
R_Addr_B=0;
W_Addr=5'b00001;
Write_Reg=1;
W_Data=32'h1111_1111;
Clk=1;
Reset=0;
#100;
R_Addr_A=0;
R_Addr_B=0;
W_Addr=5'b00001;
Write_Reg=1;
W_Data=32'h1111_1111;
Clk=0;
Reset=0;
#100;
R_Addr_A=0;
R_Addr_B=0;
W_Addr=5'b00010;
Write_Reg=1;
W_Data=32'h2222_2222;
Clk=1;
Reset=0;
#100;
R_Addr_A=5'b00001;
R_Addr_B=5'b00010;
W_Addr=0;
Write_Reg=0;
W_Data=0;
Clk=0;
Reset=0;
#100;
R_Addr_A=5'b00001;
R_Addr_B=5'b00010;
W_Addr=0;
Write_Reg=0;
W_Data=0;
Clk=0;
Reset=1;
end
endmodule
二、仿真波形
三、电路图
顶层电路模块
顶层电路内部结构:
四、引脚配置(约束文件)
NET"Clk"LOC=C9;
NET"Reset"LOC=D9;
NET"Write_Reg"LOC=T5;
NET"C2"LOC=C4;
#PlanAheadGeneratedphysicalconstraints
NET"LED[7]"LOC=T11;
NET"LED[6]"LOC=R11;
NET"LED[4]"LOC=M11;
NET"LED[3]"LOC=V15;
NET"LED[1]"LOC=V16;
NET"LED[0]"LOC=U16;
NET"LED[2]"LOC=U15;
NET"LED[5]"LOC=N11;
NET"Addr[0]"LOC=T10;
NET"Addr[2]"LOC=V9;
NET"Addr[3]"LOC=M8;
NET"Addr[4]"LOC=N8;
NET"C1[0]"LOC=U8;
NET"C1[1]"LOC=V8;
NET"Addr[1]"LOC=T9;
五、思考与探索
(1)实验四实验结果记录表
寄存器地址写入数据读出数据
$132'h0000_000332'h0000_0003
$232'h0000_060732'h0000_0607
$332'hFFFF_FFFF32'hFFFF_FFFF
$432'h1111_123432'h1111_1234
$532'h0000_000332'h0000_0003
$632'h0000_060732'h0000_0607
$732'hFFFF_FFFF32'hFFFF_FFFF
$832'h1111_123432'h1111_1234
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 杭电计组 实验 寄存器 设计