一、 实验目的
理解和掌握CPU中的算术逻辑运算部件(ALU)和寄存器堆(Register File)的工作原理,并使用Verilog和ModelSim进行设计和仿真。
二、 实验内容
- 使用Verilog完成ALU的设计,并编写测试仿真文件验证其正确性。要求:
ALU支持16位的加、减、与、或以及移位运算。 - 使用Verilog完成通用寄存器堆的设计,并编写测试仿真文件验证其正确性。要求
寄存器堆包含8个16位的寄存器;
寄存器堆有两个读端口和一个写端口。
三、 实验原理
ALU和寄存器堆的原理图:
ALU :通常支持许多基本算术和按位逻辑函数,实现指令所指定的各种算术和逻辑运算操作
寄存器堆:是CPU中多个寄存器组成的阵列,通常由快速的静态随机读写存储器(SRAM)实现。这种RAM具有专门的读端口与写端口,可以多路并发访问不同的寄存器。
四、实验步骤
- Verilog关键代码描述
ALU
代码如下:
module alu(
input wire [15:0] in1, in2,
input wire [2:0] alu_op,
output reg [15:0] Z
);
always@* begin
case(alu_op)
3'b000: Z = in1+in2;
3'b001: Z = in1-in2;
3'b010: Z = in1&&in2;
3'b011: Z = in1||in2;
3'b100: Z = in1<<in2;
3'b101: Z = in1>>in2;
endcase
end
endmodule
代码截图如下: