summaryrefslogtreecommitdiff
path: root/eater_cpu/eater_computer.sv
diff options
context:
space:
mode:
authoruvok2026-01-18 11:01:36 +0100
committeruvok2026-01-18 11:01:36 +0100
commitb7e0fb39cf82ed736d831d4a30aa351819cf5dde (patch)
tree9eecfefe6a5fd23fdc80f2c1f6349cc68b2e0a16 /eater_cpu/eater_computer.sv
parent1cfdda0d9f76d36df95677e631b8b15dd19b4dcb (diff)
eater: Use separate "zbuffer" module
keeps code a bit cleaner
Diffstat (limited to 'eater_cpu/eater_computer.sv')
-rw-r--r--eater_cpu/eater_computer.sv22
1 files changed, 17 insertions, 5 deletions
diff --git a/eater_cpu/eater_computer.sv b/eater_cpu/eater_computer.sv
index 4c59697..4f71f1c 100644
--- a/eater_cpu/eater_computer.sv
+++ b/eater_cpu/eater_computer.sv
@@ -21,7 +21,7 @@ logic A_to_bus, bus_to_A,
INS_to_bus, bus_to_INS,
RAM_to_bus, bus_to_RAM,
ALU_to_bus,
- PC_to_bus, bus_to_PC,
+ PC_to_bus, bus_to_PC, PC_count_en,
bus_to_MAR
;
@@ -90,7 +90,11 @@ my_mem #(
.async_data_o(RAM_out)
);
-assign bus = RAM_to_bus ? RAM_out : 8'bz;
+zbuffer ram_to_bus_buffer (
+ .data_in(RAM_out),
+ .en_output_in(RAM_to_bus),
+ .data_out(bus)
+);
eater_alu alu (
.clk_in(clk_in),
@@ -108,11 +112,19 @@ counter #(
.DATA_WIDTH(4)
) PC (
.clk_in(clk_in),
- .counter_out(PC_out),
.X_in(PC_in),
- .st_store_X_in(bus_to_PC)
+ .st_store_X_in(bus_to_PC),
+ .count_enable_in(PC_count_en),
+ .counter_out(PC_out)
);
-assign bus[3:0] = PC_to_bus ? PC_out[3:0] : 4'bz;
+tri[7:0] PC_out_full;
+assign PC_out_full = {4'b0, PC_out};
+
+zbuffer PC_to_bus_buffer (
+ .data_in(PC_out_full),
+ .en_output_in(PC_to_bus),
+ .data_out(bus)
+);
endmodule