- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实用文案
标准文档
实验报告
2018 年 5 月 12 日 成绩:
姓名
阳光男
学号班级专业
计算机科学与技术
课程名称
《计算机组成原理与系统结构试验》
任课老师
张翔老师
指导老师
张翔老师
机位号
默认
实验序号
4
实验名称
《实验四 寄存器堆设计》
实验时间
2018/5/12
实验地点
1教211
实验设备号
个人电脑、Nexys3开发板
一、实验程序源代码
1.寄存器堆模块代码:
module Register_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;
input Write_Reg;
input [31:0]W_Data;
input Clk;
input Reset;
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
assign R_Data_A=REG_Files[R_Addr_A];
assign R_Data_B=REG_Files[R_Addr_B];
always@(posedge Clk or posedge Reset)
begin
if(Reset)
for(i=0;i=31;i=i+1)
REG_Files[i]=0;
else
if(Write_RegW_Addr!=0)
REG_Files[W_Addr]=W_Data;
end
endmodule
2.顶层电路模块代码:
module Top_Register_file(Addr,Write_Reg,C1,C2,Clk,Reset,LED);
input [4:0]Addr;
input [1:0]C1;//C1选择32位数据输出哪八位字节
input Write_Reg,C2,Clk,Reset;//C2选择读A/B端口的数据
output reg [7:0]LED;
wire [31:0]R_Data_A,R_Data_B;
reg [31:0]W_Data;
reg[4:0] A,B;
Register_file reg1(A,B,Addr,Write_Reg,W_Data,Clk,Reset,R_Data_A,R_Data_B);
always@(Addr or Write_Reg or C1 or C2 or R_Data_A or R_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)
2b00:LED=R_Data_A[7:0];
2b01:LED=R_Data_A[15:8];
2b10:LED=R_Data_A[23:16];
2b11:LED=R_Data_A[31:24];
endcase
end
else
begin
B=Addr;
case(C1)
2b00:LED=R_Data_B[7:0];
2b01:LED=R_Data_B[15:8];
2b10:LED=R_Data_B[23:16];
2b11:LED=R_Data_B[31:24];
endcase
end
end
else//写操作
begin
case(C1)
2b00:W_Data=32h0000_0003;
2b01:W_Data=32h0000_0607;
2b10:W_Data=32hFFFF_FFFF;
2b11:W_Data=32h1111_1234;
endcase
end
end
endmodule
3.测试代码
module test;
// Inputs
reg [4:0] R_Addr_A;
reg [4:0] R_Addr_B;
reg [4:0] W_Addr;
reg Write_Reg;
reg [31:0] W_Data;
r
文档评论(0)