@@ -125,7 +125,7 @@ reg [DATA_WIDTH-1:0] m_axis_tdata_reg = {DATA_WIDTH{1'b0}}, m_axis_tdata_next;
125125reg [KEEP_WIDTH- 1 :0 ] m_axis_tkeep_reg = {KEEP_WIDTH{1'b0 }}, m_axis_tkeep_next;
126126reg m_axis_tvalid_reg = 1'b0 , m_axis_tvalid_next;
127127reg m_axis_tlast_reg = 1'b0 , m_axis_tlast_next;
128- reg m_axis_tuser_reg = 1'b0 , m_axis_tuser_next;
128+ reg [USER_WIDTH - 1 : 0 ] m_axis_tuser_reg = {USER_WIDTH{ 1'b0 }} , m_axis_tuser_next;
129129
130130reg [1 :0 ] start_packet_reg = 2'b00 ;
131131reg error_bad_frame_reg = 1'b0 , error_bad_frame_next;
@@ -154,7 +154,7 @@ assign m_axis_tdata = m_axis_tdata_reg;
154154assign m_axis_tkeep = m_axis_tkeep_reg;
155155assign m_axis_tvalid = m_axis_tvalid_reg;
156156assign m_axis_tlast = m_axis_tlast_reg;
157- assign m_axis_tuser = PTP_TS_ENABLE ? {ptp_ts_reg, m_axis_tuser_reg} : m_axis_tuser_reg;
157+ assign m_axis_tuser = m_axis_tuser_reg;
158158
159159assign start_packet = start_packet_reg;
160160assign error_bad_frame = error_bad_frame_reg;
@@ -308,7 +308,8 @@ always @* begin
308308 m_axis_tkeep_next = {KEEP_WIDTH{1'b1 }};
309309 m_axis_tvalid_next = 1'b0 ;
310310 m_axis_tlast_next = 1'b0 ;
311- m_axis_tuser_next = 1'b0 ;
311+ m_axis_tuser_next = m_axis_tuser_reg;
312+ m_axis_tuser_next[0 ] = 1'b0 ;
312313
313314 error_bad_frame_next = 1'b0 ;
314315 error_bad_fcs_next = 1'b0 ;
@@ -320,13 +321,18 @@ always @* begin
320321
321322 if (xgmii_rxc_d1[0 ] && xgmii_rxd_d1[7 :0 ] == XGMII_START) begin
322323 // start condition
324+
325+ if (PTP_TS_ENABLE) begin
326+ m_axis_tuser_next[1 + : PTP_TS_WIDTH] = ptp_ts_reg;
327+ end
328+
323329 if (control_masked) begin
324330 // control or error characters in first data word
325331 m_axis_tdata_next = {DATA_WIDTH{1'b0 }};
326332 m_axis_tkeep_next = 8'h01 ;
327333 m_axis_tvalid_next = 1'b1 ;
328334 m_axis_tlast_next = 1'b1 ;
329- m_axis_tuser_next = 1'b1 ;
335+ m_axis_tuser_next[ 0 ] = 1'b1 ;
330336 error_bad_frame_next = 1'b1 ;
331337 state_next = STATE_IDLE;
332338 end else begin
@@ -343,14 +349,14 @@ always @* begin
343349 m_axis_tkeep_next = {KEEP_WIDTH{1'b1 }};
344350 m_axis_tvalid_next = 1'b1 ;
345351 m_axis_tlast_next = 1'b0 ;
346- m_axis_tuser_next = 1'b0 ;
352+ m_axis_tuser_next[ 0 ] = 1'b0 ;
347353
348354 last_cycle_tkeep_next = {4'b0000 , tkeep_mask[7 :4 ]};
349355
350356 if (control_masked) begin
351357 // control or error characters in packet
352358 m_axis_tlast_next = 1'b1 ;
353- m_axis_tuser_next = 1'b1 ;
359+ m_axis_tuser_next[ 0 ] = 1'b1 ;
354360 error_bad_frame_next = 1'b1 ;
355361 reset_crc = 1'b1 ;
356362 state_next = STATE_IDLE;
@@ -367,7 +373,7 @@ always @* begin
367373 (detect_term[4 ] && crc_valid3)) begin
368374 // CRC valid
369375 end else begin
370- m_axis_tuser_next = 1'b1 ;
376+ m_axis_tuser_next[ 0 ] = 1'b1 ;
371377 error_bad_frame_next = 1'b1 ;
372378 error_bad_fcs_next = 1'b1 ;
373379 end
@@ -387,7 +393,7 @@ always @* begin
387393 m_axis_tkeep_next = last_cycle_tkeep_reg;
388394 m_axis_tvalid_next = 1'b1 ;
389395 m_axis_tlast_next = 1'b1 ;
390- m_axis_tuser_next = 1'b0 ;
396+ m_axis_tuser_next[ 0 ] = 1'b0 ;
391397
392398 reset_crc = 1'b1 ;
393399
@@ -396,7 +402,7 @@ always @* begin
396402 (detect_term_save[7 ] && crc_valid2)) begin
397403 // CRC valid
398404 end else begin
399- m_axis_tuser_next = 1'b1 ;
405+ m_axis_tuser_next[ 0 ] = 1'b1 ;
400406 error_bad_frame_next = 1'b1 ;
401407 error_bad_fcs_next = 1'b1 ;
402408 end
@@ -409,7 +415,7 @@ always @* begin
409415 m_axis_tkeep_next = 8'h01 ;
410416 m_axis_tvalid_next = 1'b1 ;
411417 m_axis_tlast_next = 1'b1 ;
412- m_axis_tuser_next = 1'b1 ;
418+ m_axis_tuser_next[ 0 ] = 1'b1 ;
413419 error_bad_frame_next = 1'b1 ;
414420 state_next = STATE_IDLE;
415421 end else begin
0 commit comments