@@ -80,6 +80,8 @@ reg cfg_mgmt_write_reg = 1'b0, cfg_mgmt_write_next;
8080reg [31 :0 ] cfg_mgmt_write_data_reg = 32'd0 , cfg_mgmt_write_data_next;
8181reg [3 :0 ] cfg_mgmt_byte_enable_reg = 4'd0 , cfg_mgmt_byte_enable_next;
8282reg cfg_mgmt_read_reg = 1'b0 , cfg_mgmt_read_next;
83+ reg [31 :0 ] cfg_mgmt_read_data_reg = 32'd0 ;
84+ reg cfg_mgmt_read_write_done_reg = 1'b0 ;
8385
8486reg [7 :0 ] delay_reg = 8'hff , delay_next;
8587reg [7 :0 ] func_cnt_reg = 8'd0 , func_cnt_next;
@@ -115,12 +117,12 @@ always @* begin
115117 end else begin
116118 cfg_mgmt_addr_next = DEV_CTRL_OFFSET >> 2 ;
117119 cfg_mgmt_read_next = 1'b1 ;
118- if (cfg_mgmt_read_write_done ) begin
120+ if (cfg_mgmt_read_write_done_reg ) begin
119121 cfg_mgmt_read_next = 1'b0 ;
120122
121- ext_tag_enable_next[func_cnt_reg] = cfg_mgmt_read_data [8 ];
122- max_read_request_size_next[func_cnt_reg* 3 + : 3 ] = cfg_mgmt_read_data [14 :12 ];
123- max_payload_size_next[func_cnt_reg* 3 + : 3 ] = cfg_mgmt_read_data [7 :5 ];
123+ ext_tag_enable_next[func_cnt_reg] = cfg_mgmt_read_data_reg [8 ];
124+ max_read_request_size_next[func_cnt_reg* 3 + : 3 ] = cfg_mgmt_read_data_reg [14 :12 ];
125+ max_payload_size_next[func_cnt_reg* 3 + : 3 ] = cfg_mgmt_read_data_reg [7 :5 ];
124126
125127 if (func_cnt_reg == F_COUNT- 1 ) begin
126128 func_cnt_next = 0 ;
@@ -139,6 +141,22 @@ always @* begin
139141end
140142
141143always @(posedge clk) begin
144+ ext_tag_enable_reg <= ext_tag_enable_next;
145+ max_read_request_size_reg <= max_read_request_size_next;
146+ max_payload_size_reg <= max_payload_size_next;
147+
148+ cfg_mgmt_addr_reg <= cfg_mgmt_addr_next;
149+ cfg_mgmt_function_number_reg <= cfg_mgmt_function_number_next;
150+ cfg_mgmt_write_reg <= cfg_mgmt_write_next;
151+ cfg_mgmt_write_data_reg <= cfg_mgmt_write_data_next;
152+ cfg_mgmt_byte_enable_reg <= cfg_mgmt_byte_enable_next;
153+ cfg_mgmt_read_reg <= cfg_mgmt_read_next;
154+ cfg_mgmt_read_data_reg <= cfg_mgmt_read_data;
155+ cfg_mgmt_read_write_done_reg <= cfg_mgmt_read_write_done;
156+
157+ delay_reg <= delay_next;
158+ func_cnt_reg <= func_cnt_next;
159+
142160 if (rst) begin
143161 ext_tag_enable_reg <= {F_COUNT{1'b0 }};
144162 max_read_request_size_reg <= {F_COUNT{3'd0 }};
@@ -148,26 +166,11 @@ always @(posedge clk) begin
148166 cfg_mgmt_function_number_reg <= 8'd0 ;
149167 cfg_mgmt_write_reg <= 1'b0 ;
150168 cfg_mgmt_read_reg <= 1'b0 ;
169+ cfg_mgmt_read_write_done_reg <= 1'b0 ;
151170
152171 delay_reg <= 8'hff ;
153172 func_cnt_reg <= 8'd0 ;
154- end else begin
155- ext_tag_enable_reg <= ext_tag_enable_next;
156- max_read_request_size_reg <= max_read_request_size_next;
157- max_payload_size_reg <= max_payload_size_next;
158-
159- cfg_mgmt_addr_reg <= cfg_mgmt_addr_next;
160- cfg_mgmt_function_number_reg <= cfg_mgmt_function_number_next;
161- cfg_mgmt_write_reg <= cfg_mgmt_write_next;
162- cfg_mgmt_read_reg <= cfg_mgmt_read_next;
163-
164- delay_reg <= delay_next;
165- func_cnt_reg <= func_cnt_next;
166173 end
167-
168- cfg_mgmt_write_data_reg <= cfg_mgmt_write_data_next;
169- cfg_mgmt_byte_enable_reg <= cfg_mgmt_byte_enable_next;
170-
171174end
172175
173176endmodule
0 commit comments