summaryrefslogtreecommitdiff
path: root/eater_cpu/eater_register.v
diff options
context:
space:
mode:
authoruvok2026-01-15 18:44:31 +0100
committeruvok2026-01-15 18:44:31 +0100
commit08736d0ca2bc9abe56ce0a306ebaa58021ae7f0e (patch)
tree848e13fba7448ca0186046fdda8148f096ad4414 /eater_cpu/eater_register.v
parentf0cc58df7795ea3925bd1142f69214fdfe54dba7 (diff)
Add 1st sketch of eater cpu
Diffstat (limited to 'eater_cpu/eater_register.v')
-rw-r--r--eater_cpu/eater_register.v35
1 files changed, 35 insertions, 0 deletions
diff --git a/eater_cpu/eater_register.v b/eater_cpu/eater_register.v
new file mode 100644
index 0000000..0502c8a
--- /dev/null
+++ b/eater_cpu/eater_register.v
@@ -0,0 +1,35 @@
+`timescale 1us/1us
+
+`ifndef EATER_REGISTER
+`define EATER_REGISTER
+
+module eater_register #(
+ parameter DATA_WIDTH = 8
+) (
+ input clk_i,
+
+ // sync? async?
+ input en_store_i,
+ input en_output_i,
+
+ input [(DATA_WIDTH-1) : 0] data_i,
+ output [(DATA_WIDTH-1) : 0] data_o
+);
+
+reg [(DATA_WIDTH-1) : 0] r_datastore /* verilator public */;
+
+reg int_output_data;
+
+always @(posedge clk_i) begin
+ if (en_store_i) begin
+ r_datastore <= data_i;
+ end
+
+ int_output_data <= en_output_i;
+end
+
+assign data_o = int_output_data ? r_datastore : 'z;
+
+endmodule
+
+`endif