mirror of
https://github.com/fpganinja/taxi.git
synced 2025-12-09 00:48:40 -08:00
zircon: Improve sideband signal handling in length/checksum computation module
Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
@@ -39,12 +39,15 @@ localparam DATA_W = s_axis_pkt.DATA_W;
|
|||||||
localparam KEEP_W = s_axis_pkt.KEEP_W;
|
localparam KEEP_W = s_axis_pkt.KEEP_W;
|
||||||
localparam META_W = m_axis_meta.DATA_W;
|
localparam META_W = m_axis_meta.DATA_W;
|
||||||
|
|
||||||
localparam ID_W = m_axis_meta.ID_W;
|
localparam ID_W = s_axis_pkt.ID_W;
|
||||||
localparam ID_EN = s_axis_pkt.ID_EN && m_axis_meta.ID_EN;
|
localparam ID_EN = s_axis_pkt.ID_EN && m_axis_pkt.ID_EN;
|
||||||
localparam DEST_W = m_axis_meta.DEST_W;
|
localparam META_ID_EN = s_axis_pkt.ID_EN && m_axis_meta.ID_EN;
|
||||||
localparam DEST_EN = s_axis_pkt.DEST_EN && m_axis_meta.DEST_EN;
|
localparam DEST_W = s_axis_pkt.DEST_W;
|
||||||
localparam USER_W = m_axis_meta.USER_W;
|
localparam DEST_EN = s_axis_pkt.DEST_EN && m_axis_pkt.DEST_EN;
|
||||||
localparam USER_EN = s_axis_pkt.USER_EN && m_axis_meta.USER_EN;
|
localparam META_DEST_EN = s_axis_pkt.DEST_EN && m_axis_meta.DEST_EN;
|
||||||
|
localparam USER_W = s_axis_pkt.USER_W;
|
||||||
|
localparam USER_EN = s_axis_pkt.USER_EN && m_axis_pkt.USER_EN;
|
||||||
|
localparam META_USER_EN = s_axis_pkt.USER_EN && m_axis_meta.USER_EN;
|
||||||
|
|
||||||
parameter LEVELS = $clog2(DATA_W/8);
|
parameter LEVELS = $clog2(DATA_W/8);
|
||||||
parameter OFFSET_W = START_OFFSET/KEEP_W > 1 ? $clog2(START_OFFSET/KEEP_W) : 1;
|
parameter OFFSET_W = START_OFFSET/KEEP_W > 1 ? $clog2(START_OFFSET/KEEP_W) : 1;
|
||||||
@@ -84,9 +87,21 @@ logic [USER_W-1:0] m_axis_meta_user_reg = '0;
|
|||||||
assign m_axis_pkt.tdata = s_axis_pkt.tdata;
|
assign m_axis_pkt.tdata = s_axis_pkt.tdata;
|
||||||
assign m_axis_pkt.tkeep = s_axis_pkt.tkeep;
|
assign m_axis_pkt.tkeep = s_axis_pkt.tkeep;
|
||||||
assign m_axis_pkt.tstrb = s_axis_pkt.tstrb;
|
assign m_axis_pkt.tstrb = s_axis_pkt.tstrb;
|
||||||
|
if (ID_EN) begin
|
||||||
assign m_axis_pkt.tid = s_axis_pkt.tid;
|
assign m_axis_pkt.tid = s_axis_pkt.tid;
|
||||||
|
end else begin
|
||||||
|
assign m_axis_pkt.tid = '0;
|
||||||
|
end
|
||||||
|
if (DEST_EN) begin
|
||||||
assign m_axis_pkt.tdest = s_axis_pkt.tdest;
|
assign m_axis_pkt.tdest = s_axis_pkt.tdest;
|
||||||
|
end else begin
|
||||||
|
assign m_axis_pkt.tdest = '0;
|
||||||
|
end
|
||||||
|
if (USER_EN) begin
|
||||||
assign m_axis_pkt.tuser = s_axis_pkt.tuser;
|
assign m_axis_pkt.tuser = s_axis_pkt.tuser;
|
||||||
|
end else begin
|
||||||
|
assign m_axis_pkt.tuser = '0;
|
||||||
|
end
|
||||||
assign m_axis_pkt.tlast = s_axis_pkt.tlast;
|
assign m_axis_pkt.tlast = s_axis_pkt.tlast;
|
||||||
assign m_axis_pkt.tvalid = s_axis_pkt.tvalid;
|
assign m_axis_pkt.tvalid = s_axis_pkt.tvalid;
|
||||||
assign s_axis_pkt.tready = m_axis_pkt.tready;
|
assign s_axis_pkt.tready = m_axis_pkt.tready;
|
||||||
@@ -94,9 +109,21 @@ assign s_axis_pkt.tready = m_axis_pkt.tready;
|
|||||||
assign m_axis_meta.tdata = {m_axis_meta_csum_reg, m_axis_meta_len_reg};
|
assign m_axis_meta.tdata = {m_axis_meta_csum_reg, m_axis_meta_len_reg};
|
||||||
assign m_axis_meta.tkeep = '1;
|
assign m_axis_meta.tkeep = '1;
|
||||||
assign m_axis_meta.tstrb = m_axis_meta.tkeep;
|
assign m_axis_meta.tstrb = m_axis_meta.tkeep;
|
||||||
assign m_axis_meta.tid = ID_EN ? m_axis_meta_id_reg : '0;
|
if (META_ID_EN) begin
|
||||||
assign m_axis_meta.tdest = DEST_EN ? m_axis_meta_dest_reg : '0;
|
assign m_axis_meta.tid = m_axis_meta_id_reg;
|
||||||
assign m_axis_meta.tuser = USER_EN ? m_axis_meta_user_reg : '0;
|
end else begin
|
||||||
|
assign m_axis_meta.tid = '0;
|
||||||
|
end
|
||||||
|
if (META_DEST_EN) begin
|
||||||
|
assign m_axis_meta.tdest = m_axis_meta_dest_reg;
|
||||||
|
end else begin
|
||||||
|
assign m_axis_meta.tdest = '0;
|
||||||
|
end
|
||||||
|
if (META_USER_EN) begin
|
||||||
|
assign m_axis_meta.tuser = m_axis_meta_user_reg;
|
||||||
|
end else begin
|
||||||
|
assign m_axis_meta.tuser = '0;
|
||||||
|
end
|
||||||
assign m_axis_meta.tlast = 1'b1;
|
assign m_axis_meta.tlast = 1'b1;
|
||||||
assign m_axis_meta.tvalid = m_axis_meta_valid_reg;
|
assign m_axis_meta.tvalid = m_axis_meta_valid_reg;
|
||||||
|
|
||||||
@@ -117,9 +144,9 @@ always_ff @(posedge clk) begin
|
|||||||
end
|
end
|
||||||
sum_valid_reg[0] <= 1'b1;
|
sum_valid_reg[0] <= 1'b1;
|
||||||
sum_last_reg[0] <= s_axis_pkt.tlast;
|
sum_last_reg[0] <= s_axis_pkt.tlast;
|
||||||
id_reg[0] <= ID_W'(s_axis_pkt.tid);
|
id_reg[0] <= s_axis_pkt.tid;
|
||||||
dest_reg[0] <= DEST_W'(s_axis_pkt.tdest);
|
dest_reg[0] <= s_axis_pkt.tdest;
|
||||||
user_reg[0] <= USER_W'(s_axis_pkt.tuser);
|
user_reg[0] <= s_axis_pkt.tuser;
|
||||||
|
|
||||||
if (s_axis_pkt.tlast) begin
|
if (s_axis_pkt.tlast) begin
|
||||||
offset_reg <= OFFSET_W'(START_OFFSET/KEEP_W);
|
offset_reg <= OFFSET_W'(START_OFFSET/KEEP_W);
|
||||||
|
|||||||
Reference in New Issue
Block a user