@@ -125,7 +125,7 @@ reg [DATA_WIDTH-1:0] m_axis_tdata_reg = {DATA_WIDTH{1'b0}}, m_axis_tdata_next;
125
125
reg [KEEP_WIDTH- 1 :0 ] m_axis_tkeep_reg = {KEEP_WIDTH{1'b0 }}, m_axis_tkeep_next;
126
126
reg m_axis_tvalid_reg = 1'b0 , m_axis_tvalid_next;
127
127
reg 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;
129
129
130
130
reg [1 :0 ] start_packet_reg = 2'b00 ;
131
131
reg error_bad_frame_reg = 1'b0 , error_bad_frame_next;
@@ -154,7 +154,7 @@ assign m_axis_tdata = m_axis_tdata_reg;
154
154
assign m_axis_tkeep = m_axis_tkeep_reg;
155
155
assign m_axis_tvalid = m_axis_tvalid_reg;
156
156
assign 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;
158
158
159
159
assign start_packet = start_packet_reg;
160
160
assign error_bad_frame = error_bad_frame_reg;
@@ -308,7 +308,8 @@ always @* begin
308
308
m_axis_tkeep_next = {KEEP_WIDTH{1'b1 }};
309
309
m_axis_tvalid_next = 1'b0 ;
310
310
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 ;
312
313
313
314
error_bad_frame_next = 1'b0 ;
314
315
error_bad_fcs_next = 1'b0 ;
@@ -320,13 +321,18 @@ always @* begin
320
321
321
322
if (xgmii_rxc_d1[0 ] && xgmii_rxd_d1[7 :0 ] == XGMII_START) begin
322
323
// start condition
324
+
325
+ if (PTP_TS_ENABLE) begin
326
+ m_axis_tuser_next[1 + : PTP_TS_WIDTH] = ptp_ts_reg;
327
+ end
328
+
323
329
if (control_masked) begin
324
330
// control or error characters in first data word
325
331
m_axis_tdata_next = {DATA_WIDTH{1'b0 }};
326
332
m_axis_tkeep_next = 8'h01 ;
327
333
m_axis_tvalid_next = 1'b1 ;
328
334
m_axis_tlast_next = 1'b1 ;
329
- m_axis_tuser_next = 1'b1 ;
335
+ m_axis_tuser_next[ 0 ] = 1'b1 ;
330
336
error_bad_frame_next = 1'b1 ;
331
337
state_next = STATE_IDLE;
332
338
end else begin
@@ -343,14 +349,14 @@ always @* begin
343
349
m_axis_tkeep_next = {KEEP_WIDTH{1'b1 }};
344
350
m_axis_tvalid_next = 1'b1 ;
345
351
m_axis_tlast_next = 1'b0 ;
346
- m_axis_tuser_next = 1'b0 ;
352
+ m_axis_tuser_next[ 0 ] = 1'b0 ;
347
353
348
354
last_cycle_tkeep_next = {4'b0000 , tkeep_mask[7 :4 ]};
349
355
350
356
if (control_masked) begin
351
357
// control or error characters in packet
352
358
m_axis_tlast_next = 1'b1 ;
353
- m_axis_tuser_next = 1'b1 ;
359
+ m_axis_tuser_next[ 0 ] = 1'b1 ;
354
360
error_bad_frame_next = 1'b1 ;
355
361
reset_crc = 1'b1 ;
356
362
state_next = STATE_IDLE;
@@ -367,7 +373,7 @@ always @* begin
367
373
(detect_term[4 ] && crc_valid3)) begin
368
374
// CRC valid
369
375
end else begin
370
- m_axis_tuser_next = 1'b1 ;
376
+ m_axis_tuser_next[ 0 ] = 1'b1 ;
371
377
error_bad_frame_next = 1'b1 ;
372
378
error_bad_fcs_next = 1'b1 ;
373
379
end
@@ -387,7 +393,7 @@ always @* begin
387
393
m_axis_tkeep_next = last_cycle_tkeep_reg;
388
394
m_axis_tvalid_next = 1'b1 ;
389
395
m_axis_tlast_next = 1'b1 ;
390
- m_axis_tuser_next = 1'b0 ;
396
+ m_axis_tuser_next[ 0 ] = 1'b0 ;
391
397
392
398
reset_crc = 1'b1 ;
393
399
@@ -396,7 +402,7 @@ always @* begin
396
402
(detect_term_save[7 ] && crc_valid2)) begin
397
403
// CRC valid
398
404
end else begin
399
- m_axis_tuser_next = 1'b1 ;
405
+ m_axis_tuser_next[ 0 ] = 1'b1 ;
400
406
error_bad_frame_next = 1'b1 ;
401
407
error_bad_fcs_next = 1'b1 ;
402
408
end
@@ -409,7 +415,7 @@ always @* begin
409
415
m_axis_tkeep_next = 8'h01 ;
410
416
m_axis_tvalid_next = 1'b1 ;
411
417
m_axis_tlast_next = 1'b1 ;
412
- m_axis_tuser_next = 1'b1 ;
418
+ m_axis_tuser_next[ 0 ] = 1'b1 ;
413
419
error_bad_frame_next = 1'b1 ;
414
420
state_next = STATE_IDLE;
415
421
end else begin
0 commit comments