@@ -62,7 +62,6 @@ module axis_frame_len #
62
62
63
63
reg [LEN_WIDTH- 1 :0 ] frame_len_reg = 0 , frame_len_next;
64
64
reg frame_len_valid_reg = 1'b0 , frame_len_valid_next;
65
- reg frame_reg = 1'b0 , frame_next;
66
65
67
66
assign frame_len = frame_len_reg;
68
67
assign frame_len_valid = frame_len_valid_reg;
@@ -72,19 +71,17 @@ integer offset, i, bit_cnt;
72
71
always @* begin
73
72
frame_len_next = frame_len_reg;
74
73
frame_len_valid_next = 1'b0 ;
75
- frame_next = frame_reg;
74
+
75
+ if (frame_len_valid_reg) begin
76
+ frame_len_next = 0 ;
77
+ end
76
78
77
79
if (monitor_axis_tready && monitor_axis_tvalid) begin
78
80
// valid transfer cycle
79
81
80
82
if (monitor_axis_tlast) begin
81
83
// end of frame
82
84
frame_len_valid_next = 1'b1 ;
83
- frame_next = 1'b0 ;
84
- end else if (! frame_reg) begin
85
- // first word after end of frame
86
- frame_len_next = 0 ;
87
- frame_next = 1'b1 ;
88
85
end
89
86
90
87
// increment frame length by number of words transferred
@@ -101,14 +98,12 @@ always @* begin
101
98
end
102
99
103
100
always @(posedge clk) begin
101
+ frame_len_reg <= frame_len_next;
102
+ frame_len_valid_reg <= frame_len_valid_next;
103
+
104
104
if (rst) begin
105
105
frame_len_reg <= 0 ;
106
106
frame_len_valid_reg <= 0 ;
107
- frame_reg <= 1'b0 ;
108
- end else begin
109
- frame_len_reg <= frame_len_next;
110
- frame_len_valid_reg <= frame_len_valid_next;
111
- frame_reg <= frame_next;
112
107
end
113
108
end
114
109
0 commit comments