CPU 速通系列 4-1:MEM 模块
代码
Path src/cpu/mem.sv
1`include "defines.svh"
2
3module mem (
4
5 input logic rst,
6
7 //来自执行阶段的信息
8 input logic [`RegAddrBus] wd_i,
9 input logic wreg_i,
10 input logic [ `RegBus] wdata_i,
11 input logic [ `RegBus] hi_i,
12 input logic [ `RegBus] lo_i,
13 input logic whilo_i,
14
15 //送到回写阶段的信息
16 output logic [`RegAddrBus] wd_o,
17 output logic wreg_o,
18 output logic [ `RegBus] wdata_o,
19 output logic [ `RegBus] hi_o,
20 output logic [ `RegBus] lo_o,
21 output logic whilo_o
22
23);
24
25
26 always_comb begin
27 if (rst == `RstEnable) begin
28 wd_o = `NOPRegAddr;
29 wreg_o = `WriteDisable;
30 wdata_o = `ZeroWord;
31 hi_o = `ZeroWord;
32 lo_o = `ZeroWord;
33 whilo_o = `WriteDisable;
34 end else begin
35 wd_o = wd_i;
36 wreg_o = wreg_i;
37 wdata_o = wdata_i;
38 hi_o = hi_i;
39 lo_o = lo_i;
40 whilo_o = whilo_i;
41 end //if
42 end //always
43
44
45endmodule
解读
实现了一个存储器模块,用于存储和传递数据。
设计意图
简要而言,这个模块的设计意图是在给定的输入条件下,根据时钟信号传递相应的数据。
具体而言,这个模块需要根据输入的信号决定输出的数据,同时在复位信号(rst)为使能状态时,将输出数据设置为默认值。
端口
-
clk
:输入时钟信号 -
rst
:复位信号
来自执行阶段的信息:
-
wd_i
:写寄存器的地址 -
wreg_i
:写寄存器使能信号 -
wdata_i
:写入的数据 -
hi_i
:hi寄存器的数据 -
lo_i
:lo寄存器的数据 -
whilo_i
:whilo寄存器使能信号
送到回写阶段的信息:
-
wd_o
:写寄存器的地址 -
wreg_o
:写寄存器使能信号 -
wdata_o
:写入的数据 -
hi_o
:hi寄存器的数据 -
lo_o
:lo寄存器的数据 -
whilo_o
:whilo寄存器使能信号
实现思路
在always_comb
块中,首先判断复位信号(rst
)是否使能。如果使能,则将输出信号设置为默认值;否则,将输出信号设置为相应的输入信号值。通过这样的逻辑判断,实现了根据输入条件传递数据的功能。
参考资料
本文与 AI 合作完成。