实验二 寄存器堆实现
本实验通过Verilog语言设计并验证了MIPS计算机的寄存器堆功能。实验使用Xilinx Vivado工具和教学实验箱,通过测试模块实现了对寄存器堆的读写操作验证。核心代码展示了寄存器初始化、数据写入(地址17写入7F)和读取过程,通过仿真验证了寄存器堆的正确性。创新性地新增了test.v测试文件。硬件结果显示成功实现了指定地址(REG11)的写入(AAAAAAAA)和读取操作,读取结果与写入数
一.实验目的
1. 熟悉并掌握 MIPS 计算机中寄存器堆的原理和设计方法。
2. 初步了解 MIPS 指令结构和源操作数/目的操作数的概念。
3. 熟悉并运用 verilog 语言进行电路设计。
4. 为后续设计 cpu 的实验打下基础。
二.实验设备
1. 装有 Xilinx Vivado 的计算机一台。
2. LS-CPU-EXB-002 教学系统实验箱一套。
三. 实验内容与步骤
1.设计框图

2.核心代码
`timescale 1ns / 1ps
module test;
//Inputs
reg clk;
reg wen;
reg [4 :0] raddr1;
reg [4 :0] raddr2;
reg [4 :0] waddr;
reg [31:0] wdata;
reg [4 :0] test_addr;
//Outputs
wire [31:0] rdata1;
wire [31:0] rdata2;
wire [31:0] test_data;
regfile rf(
.clk(clk),
.wen(wen),
.raddr1(raddr1),
.raddr2(raddr2),
.waddr(waddr),
.wdata(wdata),
.rdata1(rdata1),
.rdata2(rdata2),
.test_addr(test_addr),
.test_data(test_data)
);
initial begin
//Initialize
clk = 0;
wen = 0;
raddr1 = 0;
raddr2 = 0;
waddr = 0;
wdata = 0;
test_addr = 0;
//write
#10;
waddr = 5'h17;
wdata = 32'h7F;
#40;
wen = 1'b1;
#50;
wen = 1'b0;
//read
#100;
raddr1 = 5'h17;
#100;
raddr2 = 5'h17;
#100;
test_addr = 5'h17;
end
always #5 clk = ~clk;
endmodule
3.创新点说明
新增了test.v文件。
4.仿真曲线截图

5.硬件实现照片
图1
图2
图3
图4
6.实验结果分析
图1:初始化成功。
图2:输入WADDR:00000011表示在REG11中进行写操作。
图3:WDATA:AAAAAAAA表示在REG11中写入的内容是AAAAAAAA。
图4:RADD1:00000011表示读取REG11中的数据。RDAT1:AAAAAAAA表示读取REG11中的数据为AAAAAAAA。
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)