diff options
Diffstat (limited to 'eater_cpu/eater_register.v')
| -rw-r--r-- | eater_cpu/eater_register.v | 35 |
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 |
