Update rtl-common, fix some axi violations in cpu writes
This commit is contained in:
@@ -290,6 +290,7 @@ axilxbar #(
|
|||||||
|
|
||||||
axi4_lite_rom #(
|
axi4_lite_rom #(
|
||||||
.ROM_SIZE(8),
|
.ROM_SIZE(8),
|
||||||
|
.BASE_ADDRESS(32'h0000ff00),
|
||||||
.ROM_INIT_FILE("init_hex.mem")
|
.ROM_INIT_FILE("init_hex.mem")
|
||||||
) u_rom (
|
) u_rom (
|
||||||
.i_clk(i_sysclk),
|
.i_clk(i_sysclk),
|
||||||
@@ -322,7 +323,8 @@ axi4_lite_rom #(
|
|||||||
);
|
);
|
||||||
|
|
||||||
axi4_lite_ram #(
|
axi4_lite_ram #(
|
||||||
.RAM_SIZE(9)
|
.RAM_SIZE(9),
|
||||||
|
.ZERO_INIT(1)
|
||||||
) u_ram(
|
) u_ram(
|
||||||
.i_clk(i_sysclk),
|
.i_clk(i_sysclk),
|
||||||
.i_rst(~master_resetn),
|
.i_rst(~master_resetn),
|
||||||
|
|||||||
@@ -82,6 +82,9 @@ logic w_write_data_en;
|
|||||||
logic [7:0] r_write_data, r_write_data_next;
|
logic [7:0] r_write_data, r_write_data_next;
|
||||||
logic w_write_data_empty;
|
logic w_write_data_empty;
|
||||||
|
|
||||||
|
logic latched_awvalid, latched_awvalid_next;
|
||||||
|
logic latched_wvalid, latched_wvalid_next;
|
||||||
|
|
||||||
logic [2:0] counter;
|
logic [2:0] counter;
|
||||||
logic w_reset;
|
logic w_reset;
|
||||||
|
|
||||||
@@ -160,7 +163,7 @@ always @(posedge i_clk_100 or posedge i_rst) begin
|
|||||||
end else begin
|
end else begin
|
||||||
flag <= '0;
|
flag <= '0;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
// // This uses inverted clock, remember in sdc?
|
// // This uses inverted clock, remember in sdc?
|
||||||
@@ -204,7 +207,7 @@ always @(posedge i_clk_100 or posedge i_rst) begin
|
|||||||
end else begin
|
end else begin
|
||||||
flag2 <= '0;
|
flag2 <= '0;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
localparam MAX_DELAY = 8;
|
localparam MAX_DELAY = 8;
|
||||||
@@ -232,6 +235,9 @@ always_ff @(posedge i_clk_100 or posedge i_rst) begin
|
|||||||
end
|
end
|
||||||
|
|
||||||
rdy_dly <= {rdy_dly[1:0], too_late};
|
rdy_dly <= {rdy_dly[1:0], too_late};
|
||||||
|
|
||||||
|
latched_awvalid <= latched_awvalid_next;
|
||||||
|
latched_wvalid <= latched_wvalid_next;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -244,11 +250,11 @@ always_comb begin
|
|||||||
// Set defaults
|
// Set defaults
|
||||||
o_AWVALID = '0;
|
o_AWVALID = '0;
|
||||||
o_AWADDR = '0;
|
o_AWADDR = '0;
|
||||||
o_AWPROT = '0;
|
o_AWPROT = '0;
|
||||||
o_WVALID = '0;
|
o_WVALID = '0;
|
||||||
o_WDATA = '0;
|
o_WDATA = '0;
|
||||||
o_WSTRB = '0;
|
o_WSTRB = '0;
|
||||||
o_BREADY = '0;
|
o_BREADY = '0;
|
||||||
o_ARVALID = '0;
|
o_ARVALID = '0;
|
||||||
o_ARADDR = '0;
|
o_ARADDR = '0;
|
||||||
o_ARPROT = '0;
|
o_ARPROT = '0;
|
||||||
@@ -259,6 +265,9 @@ always_comb begin
|
|||||||
read_data_next = read_data;
|
read_data_next = read_data;
|
||||||
did_delay_next = did_delay;
|
did_delay_next = did_delay;
|
||||||
|
|
||||||
|
latched_awvalid_next = latched_awvalid;
|
||||||
|
latched_wvalid_next = latched_wvalid;
|
||||||
|
|
||||||
case (state)
|
case (state)
|
||||||
RESET: begin
|
RESET: begin
|
||||||
// Is this a CDC violation?
|
// Is this a CDC violation?
|
||||||
@@ -273,6 +282,8 @@ always_comb begin
|
|||||||
end
|
end
|
||||||
|
|
||||||
did_delay_next = '0;
|
did_delay_next = '0;
|
||||||
|
latched_awvalid_next = '0;
|
||||||
|
latched_wvalid_next = '0;
|
||||||
end
|
end
|
||||||
|
|
||||||
ADDR_CONTROL: begin
|
ADDR_CONTROL: begin
|
||||||
@@ -327,9 +338,22 @@ always_comb begin
|
|||||||
end
|
end
|
||||||
|
|
||||||
WRITE_DATA: begin
|
WRITE_DATA: begin
|
||||||
o_AWVALID = '1;
|
if (~latched_awvalid) begin
|
||||||
|
o_AWVALID = i_AWREADY;
|
||||||
|
latched_awvalid_next = '1;
|
||||||
|
end else begin
|
||||||
|
o_AWVALID = '0;
|
||||||
|
end
|
||||||
o_AWADDR = {r_addr[15:2], 2'b0};
|
o_AWADDR = {r_addr[15:2], 2'b0};
|
||||||
o_WVALID = '1;
|
|
||||||
|
if (~latched_wvalid) begin
|
||||||
|
o_WVALID = i_WREADY;
|
||||||
|
latched_wvalid_next = '1;
|
||||||
|
end else begin
|
||||||
|
o_WVALID = '0;
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
o_WSTRB = 4'b1 << r_addr[1:0];
|
o_WSTRB = 4'b1 << r_addr[1:0];
|
||||||
o_WDATA = r_write_data << 8*r_addr[1:0];
|
o_WDATA = r_write_data << 8*r_addr[1:0];
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user