axis dma desc and status interface

This commit is contained in:
otroubi
2026-07-14 18:39:48 +03:00
parent 7cf727883f
commit 8aefa4f3f6
3 changed files with 149 additions and 16 deletions

View File

@ -47,23 +47,11 @@ parameter int unsigned WRITE_STATUS_WIDTH = LEN_WIDTH + TAG_WIDTH + AXIS_ID_WIDT
output logic adc_rst,
// AXIS DMA
input logic ready_desc_read,
input logic ready_desc_write,
axis_if.master m_axis_status_read,
axis_if.master m_axis_status_write,
output logic ready_status_read,
output logic ready_status_write,
output logic valid_desc_read,
output logic valid_desc_write,
input logic valid_status_read,
input logic valid_status_write,
input logic [READ_STATUS_WIDTH-1:0] status_read_cmd_in,
input logic [WRITE_STATUS_WIDTH-1:0] status_write_cmd_in,
output logic [READ_DESC_WIDTH-1:0] desc_read_cmd_out,
output logic [WRITE_DESC_WIDTH-1:0] desc_write_cmd_out
axis_if.slave s_axis_desc_read,
axis_if.slave s_axis_desc_write
);
logic start, rst_soft, send_desc_read, send_desc_write, take_status_read, take_status_write, cfg_bus_valid, busy;
@ -230,4 +218,89 @@ parameter int unsigned WRITE_STATUS_WIDTH = LEN_WIDTH + TAG_WIDTH + AXIS_ID_WIDT
.status_write_dma_hs(status_write_dma_hs)
);
// AXIS LOGIC TRANSFORMATION
axis_flat_to_if
#(
.DATA_W(READ_STATUS_WIDTH),
.ID_W(8),
.DEST_W(8),
.USER_W(1)
) axis_flat_to_if_status_read
(
.s_axis_tdata(status_read_cmd_in),
.s_axis_tkeep(),
.s_axis_tstrb(),
.s_axis_tlast(),
.s_axis_tid(),
.s_axis_tdest(),
.s_axis_tuser(),
.s_axis_tvalid(valid_status_read),
.s_axis_tready(ready_status_read),
.m_axis(m_axis_status_read)
);
axis_flat_to_if
#(
.DATA_W(WRITE_STATUS_WIDTH),
.ID_W(8),
.DEST_W(8),
.USER_W(1)
) axis_flat_to_if_status_write
(
.s_axis_tdata(status_write_cmd_in),
.s_axis_tkeep(),
.s_axis_tstrb(),
.s_axis_tlast(),
.s_axis_tid(),
.s_axis_tdest(),
.s_axis_tuser(),
.s_axis_tvalid(valid_status_write),
.s_axis_tready(ready_status_write),
.m_axis(m_axis_status_write)
);
axis_if_to_flat
#(
.DATA_W(READ_DESC_WIDTH),
.ID_W(8),
.DEST_W(8),
.USER_W(1)
) axis_if_to_flat_desc_read
(
.s_axis(s_axis_desc_read),
.m_axis_tdata(desc_read_cmd_out),
.m_axis_tkeep(),
.m_axis_tstrb(),
.m_axis_tlast(),
.m_axis_tid(),
.m_axis_tdest(),
.m_axis_tuser(),
.m_axis_tvalid(valid_desc_read),
.m_axis_tready(ready_desc_read)
);
axis_if_to_flat
#(
.DATA_W(WRITE_DESC_WIDTH),
.ID_W(8),
.DEST_W(8),
.USER_W(1)
) axis_if_to_flat_desc_write
(
.s_axis(s_axis_desc_write),
.m_axis_tdata(desc_write_cmd_out),
.m_axis_tkeep(),
.m_axis_tstrb(),
.m_axis_tlast(),
.m_axis_tid(),
.m_axis_tdest(),
.m_axis_tuser(),
.m_axis_tvalid(valid_desc_write),
.m_axis_tready(ready_desc_write)
);
endmodule