Add some flops to the mapper

This is NOT how to do CDC
This commit is contained in:
Byron Lathi
2023-11-30 17:40:21 -08:00
parent db4848b6fe
commit e805b19eca
4 changed files with 109 additions and 90 deletions

View File

@@ -1,6 +1,8 @@
module mapper(
input i_reset,
input i_clk,
input i_clk50,
input i_clk100,
input i_cs,
input i_we,
input [7:0] i_data,
@@ -10,6 +12,7 @@ module mapper(
);
logic [15:0] mm [16];
logic [15:0] _mm [16];
logic [15:0] mm_next [16];
logic [31:0] we;
@@ -20,13 +23,14 @@ logic [15:0] mm_sel;
logic [15:0] selected_mm;
logic [15:0] _cpu_addr;
always_comb begin
we = ((i_we & i_cs) << i_cpu_addr[4:0]);
mm_sel = (1 << i_cpu_addr[4:1]);
o_data = mm_sel[8*i_cpu_addr[0] +: 8];
selected_mm = mm[i_cpu_addr[15:12]];
o_mapped_addr = {selected_mm[12:0], i_cpu_addr[11:0]};
for (int i = 0; i < 16; i++) begin
@@ -40,6 +44,11 @@ always_comb begin
end
end
always_ff @(posedge i_clk100) begin
_cpu_addr <= i_cpu_addr;
selected_mm <= mm[_cpu_addr[15:12]];
end
always_ff @(negedge i_clk or posedge i_reset) begin
if (i_reset) begin
for (int i = 0; i < 16; i++) begin