资料简介
南通大学信息科学技术学院
《计算机组成实验》
实验报告
实验名称 寄存器堆的设计与实现
班级 物联网工程 192
学生姓名 谢焘 学号 1930110689
指导教师 成耀
日 期 2021 年 5 月 30 日
实验 寄存器堆的设计与实现
一、实验目的
1.熟悉 Vivado 软件的使用方法。
2.熟悉寄存器堆的功能。
3.掌握自顶而下的硬件模块设计方法。
4.掌握电路仿真测试方法,掌握仿真激励文件的编写,掌握仿真输出的分析方法。
二、实验任务
设计一个寄存器堆,满足两路输出一路输入的功能,并完成仿真测试。
三、实验预习
(1)实验电路原理及信号说明
寄存器堆(REGFILE)是 CPU 组成的重要存储部件,也是数据通路中的重要部件,其主要功能
是对数据进行存储。在本实验中将为 REGFILE 构建 32×32 的寄存器组,即共有 32 个寄存器,每个
寄存器的位宽都是 32 位。32×32 的 REGFILE 逻辑结构如图所示:
信号名 功能 位宽 类型
Ra 寄存器 rs 输出端口地址 5 输入
Rb 寄存器 rt 输出端口地址 5 输入
Wr 数据写入的寄存器号 5 输入
We 写使能信号 1 输入
D 写入的数据 32 输入
Qa A 端口的输出数据 32 输出
Qb B 端口的输出数据 32 输出
Clk 时钟信号 1 输入
具体设计如下:
通过带有 32 个带使能端的 D 触发器实现数据的存储,5-32 译码器实现地址与存储单元的连接选
择,32 位 32 选 1 选择器来实现输出。
(2)实验电路设计
顶层文件:
module REGFILE(Ra,Rb,D,Wr,We,Clk,Clrn,Qa,Qb);
input [4:0]Ra,Rb,Wr;
input [31:0]D;
input We,Clk,Clrn;
output [31:0]Qa,Qb;
wire [31:0]Y;
wire
[31:0]Q31,Q30,Q29,Q28,Q27,Q26,Q25,Q24,Q23,Q22,Q21,Q20,Q19,Q18,Q17,Q16,Q15,Q14,Q13,Q12,Q11,Q
10,Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0;
DEC5T32E dec(Wr,We,Y);
REG32
reg32(D,Y,Clk,Clrn,Q31,Q30,Q29,Q28,Q27,Q26,Q25,Q24,Q23,Q22,Q21,Q20,Q19,Q18,Q17,Q16,Q15,Q14,Q
13,Q12,Q11,Q10,Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0);
MUX32X32
select1(Q31,Q30,Q29,Q28,Q27,Q26,Q25,Q24,Q23,Q22,Q21,Q20,Q19,Q18,Q17,Q16,Q15,Q14,Q13,Q12,Q11,Q
10,Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0,Ra,Qa);
MUX32X32
select2(Q31,Q30,Q29,Q28,Q27,Q26,Q25,Q24,Q23,Q22,Q21,Q20,Q19,Q18,Q17,Q16,Q15,Q14,Q13,Q12,Q11,Q
10,Q9,Q8,Q7,Q6,Q5,Q4,Q3,Q2,Q1,Q0,Rb,Qb);
Endmodule
5-32 地址译码器:
module DEC5T32E(I,En,Y);
input [4:0] I;
input En;
output [31:0] Y;
reg [31:0] Y;
always@(En or I)
begin
if(En)
begin
case(I)
5'b00000:Y=32'b00000000000000000000000000000001;
5'b00001:Y=32'b00000000000000000000000000000010;
5'b00010:Y=32'b00000000000000000000000000000100;
5'b00011:Y=32'b00000000000000000000000000001000;
5'b00100:Y=32'b00000000000000000000000000010000;
5'b00101:Y=32'b00000000000000000000000000100000;
5'b00110:Y=32'b00000000000000000000000001000000;
5'b00111:Y=32'b00000000000000000000000010000000;
5'b01000:Y=32'b00000000000000000000000100000... 查看更多