aboutsummaryrefslogtreecommitdiff
path: root/rtl/src/control_unit.v
diff options
context:
space:
mode:
authorFlavian Kaufmann <flavian@flaviankaufmann.ch>2024-05-23 08:20:16 +0200
committerFlavian Kaufmann <flavian@flaviankaufmann.ch>2024-05-23 08:20:16 +0200
commit6a9573628b3c7e537bd273a483be9abcfa2ee429 (patch)
treeacc804258af80527e3f606b709cb2fe8e36593a9 /rtl/src/control_unit.v
parentc6e342f93d1a7fe92d2a7e1b4e488f328e1f4469 (diff)
downloadriscv_cpu-6a9573628b3c7e537bd273a483be9abcfa2ee429.tar.gz
riscv_cpu-6a9573628b3c7e537bd273a483be9abcfa2ee429.zip
mem size
Diffstat (limited to 'rtl/src/control_unit.v')
-rw-r--r--rtl/src/control_unit.v4
1 files changed, 4 insertions, 0 deletions
diff --git a/rtl/src/control_unit.v b/rtl/src/control_unit.v
index 6849214..608f6b1 100644
--- a/rtl/src/control_unit.v
+++ b/rtl/src/control_unit.v
@@ -14,6 +14,7 @@ module control_unit (
output reg mem_addr_src,
output reg mem_we,
+ output reg [2:0] mem_size,
output reg instr_we,
@@ -132,6 +133,7 @@ always @ (*) begin
instr_we = INSTR_WE_DISABLE;
pc_update = PC_UPDATE_DISABLE;
branch = BRANCH_DISABLE;
+ mem_size = FUNCT3_LS_W;
case(state)
STATE_FETCH: begin
mem_addr_src = MEM_ADDR_SRC_PC;
@@ -155,6 +157,7 @@ always @ (*) begin
STATE_MEM_LOAD: begin
mem_addr_src = MEM_ADDR_SRC_RESULT;
result_src = RESULT_SRC_ALU_RESULT_BUF;
+ mem_size = funct3;
end
STATE_MEM_WB: begin
result_src = RESULT_SRC_DATA_BUF;
@@ -164,6 +167,7 @@ always @ (*) begin
mem_addr_src = MEM_ADDR_SRC_RESULT;
result_src = RESULT_SRC_ALU_RESULT_BUF;
mem_we = MEM_WE_ENABLE;
+ mem_size = funct3;
end
STATE_EXECUTE_R: begin
alu_a_src = ALU_A_SRC_RD1_BUF;