@@ -202,6 +202,9 @@ architecture FULL of RX_MAC_LITE_CTRL_UNIT is
202
202
constant CMD_SW_BASE_REG : std_logic_vector (2 downto 0 ) := "011" ; -- 0x03
203
203
constant CMD_SM_CNT_CLEAR : std_logic_vector (2 downto 0 ) := "100" ; -- 0x04
204
204
205
+ -- reset of control logic
206
+ signal ctrl_reset : std_logic ;
207
+
205
208
-- MI32 slave interface signals
206
209
signal s_mi_dwr : std_logic_vector (31 downto 0 );
207
210
signal s_mi_addr : std_logic_vector (31 downto 0 );
@@ -296,6 +299,20 @@ architecture FULL of RX_MAC_LITE_CTRL_UNIT is
296
299
297
300
begin
298
301
302
+ -- Generate separate reset signal for logic that shouldn't be affected by the network
303
+ -- side resets
304
+ ctrl_reset_sync_i : entity work .ASYNC_RESET
305
+ generic map (
306
+ TWO_REG => false ,
307
+ OUT_REG => true ,
308
+ REPLICAS => 1
309
+ )
310
+ port map (
311
+ CLK => CLK,
312
+ ASYNC_RST => MI_RESET,
313
+ OUT_RST(0 ) => ctrl_reset
314
+ );
315
+
299
316
-- =========================================================================
300
317
-- MI32 ASYNC
301
318
-- =========================================================================
@@ -440,7 +457,7 @@ begin
440
457
reg_enable_p : process (CLK)
441
458
begin
442
459
if (rising_edge (CLK)) then
443
- if (RESET = '1' ) then
460
+ if (ctrl_reset = '1' ) then
444
461
s_reg_enable <= '0' ;
445
462
elsif (s_reg_enable_we = '1' ) then
446
463
s_reg_enable <= s_mi_dwr(0 );
@@ -452,7 +469,7 @@ begin
452
469
reg_error_mask_p : process (CLK)
453
470
begin
454
471
if (rising_edge (CLK)) then
455
- if (RESET = '1' ) then
472
+ if (ctrl_reset = '1' ) then
456
473
s_reg_error_mask <= (others => '1' );
457
474
elsif (s_reg_error_mask_we = '1' ) then
458
475
s_reg_error_mask <= s_mi_dwr(4 downto 0 );
@@ -487,7 +504,7 @@ begin
487
504
reg_min_frame_len_p : process (CLK)
488
505
begin
489
506
if (rising_edge (CLK)) then
490
- if (RESET = '1' ) then
507
+ if (ctrl_reset = '1' ) then
491
508
s_reg_min_frame_len <= std_logic_vector (to_unsigned (64 ,LEN_WIDTH));
492
509
elsif (s_reg_min_frame_len_we = '1' ) then
493
510
s_reg_min_frame_len <= s_mi_dwr(LEN_WIDTH- 1 downto 0 );
@@ -507,7 +524,7 @@ begin
507
524
reg_max_frame_len_p : process (CLK)
508
525
begin
509
526
if (rising_edge (CLK)) then
510
- if (RESET = '1' ) then
527
+ if (ctrl_reset = '1' ) then
511
528
s_reg_max_frame_len <= std_logic_vector (to_unsigned (1526 ,LEN_WIDTH));
512
529
elsif (s_reg_max_frame_len_we = '1' ) then
513
530
s_reg_max_frame_len <= s_mi_dwr(LEN_WIDTH- 1 downto 0 );
@@ -527,7 +544,7 @@ begin
527
544
reg_mac_check_mode_p : process (CLK)
528
545
begin
529
546
if (rising_edge (CLK)) then
530
- if (RESET = '1' ) then
547
+ if (ctrl_reset = '1' ) then
531
548
s_reg_mac_check_mode <= (others => '0' );
532
549
elsif (s_reg_mac_check_mode_we = '1' ) then
533
550
s_reg_mac_check_mode <= s_mi_dwr(1 downto 0 );
@@ -752,7 +769,7 @@ begin
752
769
reg_sel_register_out_p : process (CLK)
753
770
begin
754
771
if (rising_edge (CLK)) then
755
- if (RESET = '1' ) then
772
+ if (ctrl_reset = '1' ) then
756
773
-- Select base register field by default
757
774
s_reg_sel_register_out <= '0' ;
758
775
elsif (s_cmd_switch_rfc_reg = '1' ) then
0 commit comments