杭电 2016 计算机组成原理,杭电计算机组成原理寄存器堆设计实验4.doc

杭州电子科技大学计算机学院

实验报告

课程名称:计算机组成原理

实验项目:寄存器堆设计实验

指导教师

实验位置:

班 级:

学 号:

日 期:2015年5月7日

实验目的学习和使用Verlilog HDL 进行和思绪电路的设计方法

掌握灵活的运用Verilog HDL 进行各种描述与建模的技巧和方法

学习寄存器堆的数据传送与读写工作原理,掌握寄存器读一的设计方法实验环境ISE Design Suite 14.6Digilent Adept

Nexys3实验板实验内容(算法、程序、步骤和方法)根据实验原理设计32个32位的寄存器堆,有俩个读端口,1个写端口,既能同时读出两个寄存器的值,写入一个寄存器,设计寄存器只需要定义一个reg类型的数组即可完成,利用数组下标操作,寄存器即可,同时也有Rest 和CLk 信号控制我们的操作的进行。8位的LED进行显示我们读出的数据的一部分!

实验的顶层模块:

module Test_Rgisterfile(Addr,Write_Reg,C1,C2,Clk,Reset,LED);

input [4:0]Addr;

input [1:0]C1;

input Write_Reg,C2,Clk,Reset;

output reg [7:0]LED;

wire [31:0]R_Data_A,R_Data_B;

reg [31:0]W_Data;

reg [4:0]A,B;

Registerfile 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)

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

寄存器的操作模块:

module Registerfile(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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值