entity med_ecp3_sfp_sync_all_125M_RS is
generic(
- IS_MODE : int_array_t(0 to 3) := (c_IS_UNUSED, c_IS_UNUSED, c_IS_UNUSED, c_IS_UNUSED);
- IS_WAP_ZERO : integer := 1
+ IS_MODE : int_array_t(0 to 3) := (c_IS_UNUSED, c_IS_UNUSED, c_IS_UNUSED, c_IS_UNUSED)
);
port(
-- Clocks and reset
CLK_REF_FULL : in std_logic; -- TRBnet reference clock
SYSCLK : in std_logic; -- FPGA fabric clock
+ CLEAR : in std_logic;
RESET : in std_logic; -- synchronous reset
-- Media Interface TX/RX
MEDIA_MED2INT : out med2int_array_t(0 to 3);
fpga_txrefclk => MASTER_CLK_IN, -- reference TX clock
tx_serdes_rst_c => '0',
tx_pll_lol_qd_s => TX_PLL_LOL_OUT,
- rst_qd_c => QUAD_RST_IN,
+ rst_qd_c => CLEAR, --QUAD_RST_IN,
serdes_rst_qd_c => '0', -- was wrong
tx_sync_qd_c => SYNC_TX_PLL_IN
);
gen_used_control : if (IS_MODE(i) = c_IS_SLAVE) or (IS_MODE(i) = c_IS_MASTER) generate
THE_MED_CONTROL : entity work.med_sync_control_RS
generic map(
- IS_WAP_ZERO => IS_WAP_ZERO,
IS_MODE => IS_MODE(i)
)
port map(
CLK_RXHALF => clk_rx_half(i),
CLK_TXI => clk_tx_full(i),
CLK_REF => CLK_REF_FULL,
+ CLEAR => CLEAR,
RESET => RESET,
-- Media Interface
MEDIA_MED2INT => MEDIA_MED2INT(i),
MEDIA_MED2INT(i).dataready <= '0';
MEDIA_MED2INT(i).tx_read <= '1';
MEDIA_MED2INT(i).stat_op <= x"0007";
+ cv_cnt(i) <= (others => '0');
+ word_sync_i(i) <= '0';
+ RX_DLM_WORD_OUT(i*8+7 downto i*8) <= (others => '0');
+ rx_rst_i(i) <= '0';
+ rx_rst_word_i(i*8+7 downto i*8) <= (others => '0');
end generate;
end generate;
THE_SCI_READER : entity work.sci_reader_RS
port map(
CLK => SYSCLK,
- RESET => RESET,
+ RESET => CLEAR, --'0', -- need for link establishment
--SCI
SCI_WRDATA => sci_data_in_i,
SCI_RDDATA => sci_data_out_i,
MEDIA_STATUS_REG_IN(207 downto 200) => cv_cnt_sys(1),
MEDIA_STATUS_REG_IN(215 downto 208) => cv_cnt_sys(2),
MEDIA_STATUS_REG_IN(223 downto 216) => cv_cnt_sys(3),
- MEDIA_STATUS_REG_IN(255 downto 224) => (others => '0'),
- DEBUG_OUT => open
+ MEDIA_STATUS_REG_IN(255 downto 224) => (others => '0')
);
cv_cnt_sys <= cv_cnt when rising_edge(SYSCLK);
-- SerDes #3 is used for debugging
-- DEBUG_OUT <= debug_i(0*32+31 downto 0*32);
-- all SerDes debug
- DEBUG_OUT(31 downto 24) <= debug_i(3*32+7 downto 3*32);
+ DEBUG_OUT(31 downto 24) <= stat_fsm_reset_i(3*32+7 downto 3*32);--debug_i(3*32+7 downto 3*32);
DEBUG_OUT(23 downto 16) <= debug_i(2*32+7 downto 2*32);
DEBUG_OUT(15 downto 8) <= debug_i(1*32+7 downto 1*32);
DEBUG_OUT(7 downto 0) <= debug_i(0*32+7 downto 0*32);
library work;
use work.trb_net_std.all;
---use work.trb_net_components.all;
use work.med_sync_define_RS.all;
entity med_sync_control_RS is
generic(
- IS_WAP_ZERO : integer := 1; -- should be 1 for synchronous operation
IS_MODE : integer := c_IS_UNUSED
);
port(
CLK_RXHALF : in std_logic; -- used for media interface
CLK_TXI : in std_logic; -- TX clock, from SerDes TX channel
CLK_REF : in std_logic; -- SerDes reference clock
+ CLEAR : in std_logic;
RESET : in std_logic;
-- Media Interface
MEDIA_MED2INT : out MED2INT; -- Media Interface OUT
signal link_rx_null_i : std_logic;
signal link_rx_null_qref : std_logic;
--- attribute syn_keep : boolean;
--- attribute syn_preserve : boolean;
--- attribute syn_keep of rx_lsm_state : signal is true;
--- attribute syn_preserve of rx_lsm_state : signal is true;
-
begin
-------------------------------------------------
-------------------------------------------------
THE_MAIN_RX_RST: main_rx_reset_RS
port map(
- CLEAR => '0',
+ CLEAR => CLEAR, --'0', -- DO NOT USE
CLK_REF => CLK_REF,
CDR_LOL_IN => RX_CDR_LOL_IN,
CV_IN => RX_CV_IN,
port map(
CLK_RXI => CLK_RXI,
CLK_SYS => CLK_SYS,
- RESET => '0', --reset_i,
+ RESET => CLEAR, --'0', -- DO NOT USE
--
RX_DATA_OUT => media_med2int_i.data,
RX_PACKET_NUMBER_OUT => media_med2int_i.packet_num,
port map(
CLK_TXI => CLK_TXI,
CLK_SYS => CLK_SYS,
- RESET => '0', --reset_i,
+ CLEAR => CLEAR, --'0', -- DO NOT USE
-- Media Interface
TX_DATA_IN => MEDIA_INT2MED.data,
TX_PACKET_NUMBER_IN => MEDIA_INT2MED.packet_num,
-------------------------------------------------
led_ok <= link_full_done_i when rising_edge(CLK_SYS);
led_rx <= (media_med2int_i.dataready or led_rx) and not timer(20) when rising_edge(CLK_SYS);
--- led_tx <= (MEDIA_INT2MED.dataready or led_tx or sd_los_q) and not timer(20) when rising_edge(CLK_SYS);
led_tx <= (MEDIA_INT2MED.dataready or led_tx or SFP_LOS_IN) and not timer(20) when rising_edge(CLK_SYS);
ROC_TIMER_PROC: process( CLK_SYS, RESET )
LINK_RX_NULL_OUT <= link_rx_null_qref;
-- TEST_LINE signals
--- DEBUG_OUT(31 downto 12) <= (others => '0');
--- DEBUG_OUT(11) <= link_full_done_qsys;
--- DEBUG_OUT(10) <= link_half_done_qsys;
--- DEBUG_OUT(9) <= '0';
--- DEBUG_OUT(8) <= link_rx_ready_qsys;
--- DEBUG_OUT(7) <= link_tx_ready_qsys;
--- DEBUG_OUT(6 downto 2) <= (others => '0');
--- DEBUG_OUT(1 downto 0) <= debug_rx_control_i(1 downto 0);
--- DEBUG_OUT <= (others => '0');
DEBUG_OUT(31 downto 8) <= (others => '0');
-- these signals will be used outside!
DEBUG_OUT(7 downto 4) <= (others => '0');
port(\r
CLK_TXI : in std_logic;\r
CLK_SYS : in std_logic;\r
- RESET : in std_logic; -- async/sync reset\r
+ CLEAR : in std_logic;\r
-- Media Interface\r
TX_DATA_IN : in std_logic_vector(15 downto 0); -- media interface\r
TX_PACKET_NUMBER_IN : in std_logic_vector(2 downto 0); -- media interface\r
AlmostFull => ct_fifo_afull\r
);\r
\r
- THE_RD_PROC : process(CLK_SYS)\r
- begin\r
- if rising_edge(CLK_SYS) then\r
- buf_tx_read_out <= link_active_qsys and not ct_fifo_afull ;\r
- end if;\r
- end process;\r
+ THE_RD_PROC: process( CLK_SYS )\r
+ begin\r
+ if rising_edge(CLK_SYS) then\r
+ buf_tx_read_out <= link_active_qsys and not ct_fifo_afull ;\r
+ end if;\r
+ end process;\r
\r
ct_fifo_reset <= not link_active_qtx;\r
TX_READ_OUT <= buf_tx_read_out;\r
----------------------------------------------------------------------\r
-- RAM\r
----------------------------------------------------------------------\r
- THE_RAM_WR_PROC : process(CLK_TXI)\r
- begin\r
- if( rising_edge(CLK_TXI) ) then\r
- ram_write <= last_ct_fifo_read and not last_ct_fifo_empty;\r
- end if;\r
- end process;\r
+ THE_RAM_WR_PROC: process( CLK_TXI )\r
+ begin\r
+ if( rising_edge(CLK_TXI) ) then\r
+ ram_write <= last_ct_fifo_read and not last_ct_fifo_empty;\r
+ end if;\r
+ end process THE_RAM_WR_PROC;\r
\r
--RAM\r
- THE_RAM_PROC : process(CLK_TXI)\r
- begin\r
- if( rising_edge(CLK_TXI) ) then\r
- if( ram_write = '1' ) then\r
- ram((to_integer(ram_write_addr))) <= tx_data_200;\r
- end if;\r
- next_ram_dout <= ram(to_integer(ram_read_addr));\r
- ram_dout <= next_ram_dout;\r
+ THE_RAM_PROC: process( CLK_TXI )\r
+ begin\r
+ if( rising_edge(CLK_TXI) ) then\r
+ if( ram_write = '1' ) then\r
+ ram((to_integer(ram_write_addr))) <= tx_data_200;\r
end if;\r
- end process;\r
+ next_ram_dout <= ram(to_integer(ram_read_addr));\r
+ ram_dout <= next_ram_dout;\r
+ end if;\r
+ end process THE_RAM_PROC;\r
\r
--RAM read pointer\r
- THE_READ_CNT : process(CLK_TXI)\r
- begin\r
- if( rising_edge(CLK_TXI) ) then\r
- if( link_active_qtx = '0' ) then\r
- ram_read_addr <= (others => '0');\r
- elsif( ram_read = '1' ) then\r
- ram_read_addr <= ram_read_addr + to_unsigned(1,1);\r
- end if;\r
+ THE_READ_CNT: process( CLK_TXI )\r
+ begin\r
+ if( rising_edge(CLK_TXI) ) then\r
+ if( link_active_qtx = '0' ) then\r
+ ram_read_addr <= (others => '0');\r
+ elsif( ram_read = '1' ) then\r
+ ram_read_addr <= ram_read_addr + to_unsigned(1,1);\r
end if;\r
- end process;\r
+ end if;\r
+ end process THE_READ_CNT;\r
\r
--RAM write pointer\r
- THE_WRITE_CNT : process(CLK_TXI)\r
- begin\r
- if( rising_edge(CLK_TXI) ) then\r
- if( link_active_qtx = '0' ) then\r
- ram_write_addr <= (others => '0');\r
- elsif( ram_write = '1' ) then\r
- ram_write_addr <= ram_write_addr + to_unsigned(1,1);\r
- end if;\r
+ THE_WRITE_CNT: process( CLK_TXI )\r
+ begin\r
+ if( rising_edge(CLK_TXI) ) then\r
+ if( link_active_qtx = '0' ) then\r
+ ram_write_addr <= (others => '0');\r
+ elsif( ram_write = '1' ) then\r
+ ram_write_addr <= ram_write_addr + to_unsigned(1,1);\r
end if;\r
- end process;\r
+ end if;\r
+ end process THE_WRITE_CNT;\r
\r
--RAM fill level counter\r
- THE_FILL_CNT : process(CLK_TXI)\r
- begin\r
- if( rising_edge(CLK_TXI) ) then\r
- if( link_active_qtx = '0' ) then\r
- ram_fill_level <= (others => '0');\r
- else\r
- ram_fill_level <= last_ram_write_addr - ram_read_addr;\r
- end if;\r
+ THE_FILL_CNT: process( CLK_TXI )\r
+ begin\r
+ if( rising_edge(CLK_TXI) ) then\r
+ if( link_active_qtx = '0' ) then\r
+ ram_fill_level <= (others => '0');\r
+ else\r
+ ram_fill_level <= last_ram_write_addr - ram_read_addr;\r
end if;\r
- end process;\r
+ end if;\r
+ end process THE_FILL_CNT;\r
\r
--RAM empty\r
- ram_empty <= '1' when (last_ram_write_addr = ram_read_addr) or RESET = '1' else '0';\r
- ram_afull <= '1' when ram_fill_level >= 4 else '0';\r
+ ram_empty <= '1' when ((last_ram_write_addr = ram_read_addr) or (CLEAR = '1')) else '0';\r
+ ram_afull <= '1' when (ram_fill_level >= 4) else '0';\r
\r
last_ram_write_addr <= ram_write_addr when rising_edge(CLK_TXI);\r
\r
-- TX control state machine\r
----------------------------------------------------------------------\r
\r
- THE_DATA_CONTROL_FSM : process(CLK_TXI, RESET)\r
- begin\r
- if( RESET = '1' ) then\r
- current_state <= IDLE;\r
- tx_k_i <= '1';\r
- tx_data_i <= K_NULL;\r
- word_sync_i <= '0';\r
- else \r
- if( rising_edge(CLK_TXI) ) then\r
- tx_k_i <= '0';\r
- word_sync_i <= '0';\r
- debug_sending_dlm <= '0';\r
- debug_sending_rst <= '0';\r
+ THE_DATA_CONTROL_FSM: process( CLK_TXI, CLEAR, link_active_qtx )\r
+ begin\r
+ if( CLEAR = '1' ) then\r
+ current_state <= IDLE;\r
+ tx_k_i <= '1';\r
+ tx_data_i <= K_NULL;\r
+ word_sync_i <= '0';\r
+ else \r
+ if( rising_edge(CLK_TXI) ) then\r
+ tx_k_i <= '0';\r
+ word_sync_i <= '0';\r
+ debug_sending_dlm <= '0';\r
+ debug_sending_rst <= '0';\r
\r
- case current_state is\r
- when IDLE =>\r
- tx_k_i <= '1';\r
- tx_data_i <= K_NULL;\r
- if( (link_tx_ready_qtx = '1') and (link_tx_null_qtx = '0') ) then\r
- current_state <= SEND_IDLE_L;\r
- else\r
- current_state <= IDLE;\r
- end if;\r
+ case current_state is\r
+ when IDLE =>\r
+ tx_k_i <= '1';\r
+ tx_data_i <= K_NULL;\r
+ if( (link_tx_ready_qtx = '1') and (link_tx_null_qtx = '0') ) then\r
+ current_state <= SEND_IDLE_L;\r
+ else\r
+ current_state <= IDLE;\r
+ end if;\r
\r
- when SEND_IDLE_L =>\r
- tx_data_i <= K_IDLE;\r
- tx_k_i <= '1';\r
- if( WORD_SYNC_IN = '1' )then\r
- current_state <= SEND_IDLE_H;\r
- else\r
- current_state <= SEND_IDLE_L;\r
- end if;\r
-\r
- when SEND_IDLE_H =>\r
- word_sync_i <= '1';\r
- if( send_steady_idle_int = '1' ) then\r
- tx_data_i <= D_IDLE1;\r
- else\r
- tx_data_i <= D_IDLE0;\r
- end if;\r
-\r
- when SEND_DATA_L =>\r
- tx_data_i <= ram_dout(7 downto 0);\r
- load_sop <= ram_dout(16);\r
- load_eop <= ram_dout(17);\r
- current_state <= SEND_DATA_H;\r
-\r
- when SEND_DATA_H =>\r
- word_sync_i <= '1';\r
- tx_data_i <= ram_dout(15 downto 8);\r
-\r
- when SEND_DLM_L =>\r
- tx_data_i <= K_DLM;\r
- tx_k_i <= '1';\r
- current_state <= SEND_DLM_H;\r
- debug_sending_dlm <= '1';\r
-\r
- when SEND_DLM_H =>\r
- word_sync_i <= '1';\r
- tx_data_i <= send_dlm_word_i;\r
-\r
- when SEND_RST_L =>\r
- tx_data_i <= K_RST;\r
- tx_k_i <= '1';\r
- current_state <= SEND_RST_H;\r
- debug_sending_rst <= '1';\r
-\r
- when SEND_RST_H =>\r
- word_sync_i <= '1';\r
- tx_data_i <= send_rst_word_i;\r
-\r
- when others =>\r
+ when SEND_IDLE_L =>\r
+ tx_data_i <= K_IDLE;\r
+ tx_k_i <= '1';\r
+ if( WORD_SYNC_IN = '1' )then\r
+ current_state <= SEND_IDLE_H;\r
+ else\r
current_state <= SEND_IDLE_L;\r
- end case;\r
-\r
- if( (current_state = SEND_IDLE_H) or (current_state = SEND_DATA_H) or\r
- (current_state = SEND_DLM_H) or (current_state = SEND_RST_H) ) then\r
- if ( (link_tx_ready_qtx = '0') or (link_tx_null_qtx = '1') ) then\r
- current_state <= IDLE;\r
- elsif( send_dlm_i = '1' ) then\r
- current_state <= SEND_DLM_L;\r
- elsif( send_rst_i = '1' ) then\r
- current_state <= SEND_RST_L;\r
- elsif( ram_empty = '0' ) then\r
- current_state <= SEND_DATA_L;\r
+ end if;\r
+\r
+ when SEND_IDLE_H =>\r
+ word_sync_i <= '1';\r
+ if( send_steady_idle_int = '1' ) then\r
+ tx_data_i <= D_IDLE1;\r
else\r
- current_state <= SEND_IDLE_L;\r
+ tx_data_i <= D_IDLE0;\r
end if;\r
\r
+ when SEND_DATA_L =>\r
+ tx_data_i <= ram_dout(7 downto 0);\r
+ load_sop <= ram_dout(16);\r
+ load_eop <= ram_dout(17);\r
+ current_state <= SEND_DATA_H;\r
+\r
+ when SEND_DATA_H =>\r
+ word_sync_i <= '1';\r
+ tx_data_i <= ram_dout(15 downto 8);\r
+\r
+ when SEND_DLM_L =>\r
+ tx_data_i <= K_DLM;\r
+ tx_k_i <= '1';\r
+ current_state <= SEND_DLM_H;\r
+ debug_sending_dlm <= '1';\r
+\r
+ when SEND_DLM_H =>\r
+ word_sync_i <= '1';\r
+ tx_data_i <= send_dlm_word_i;\r
+\r
+ when SEND_RST_L =>\r
+ tx_data_i <= K_RST;\r
+ tx_k_i <= '1';\r
+ current_state <= SEND_RST_H;\r
+ debug_sending_rst <= '1';\r
+\r
+ when SEND_RST_H =>\r
+ word_sync_i <= '1';\r
+ tx_data_i <= send_rst_word_i;\r
+\r
+ when others =>\r
+ current_state <= SEND_IDLE_L;\r
+\r
+ end case;\r
+\r
+ if( (current_state = SEND_IDLE_H) or (current_state = SEND_DATA_H) or\r
+ (current_state = SEND_DLM_H) or (current_state = SEND_RST_H) ) then\r
+ if ( (link_tx_ready_qtx = '0') or (link_tx_null_qtx = '1') ) then\r
+ current_state <= IDLE;\r
+ elsif( send_dlm_i = '1' ) then\r
+ current_state <= SEND_DLM_L;\r
+ elsif( send_rst_i = '1' ) then\r
+ current_state <= SEND_RST_L;\r
+ elsif( ram_empty = '0' ) then\r
+ current_state <= SEND_DATA_L;\r
+ else\r
+ current_state <= SEND_IDLE_L;\r
end if;\r
- end if;\r
- end if;\r
\r
- --async because of oreg.\r
- if ((current_state = SEND_IDLE_H) or (current_state = SEND_DATA_H) or (current_state = SEND_DLM_H) or (current_state = SEND_RST_H)) \r
- and (ram_empty = '0') and (link_active_qtx = '1') and (send_dlm_i = '0') and (send_rst_i = '0') then\r
- ram_read <= '1';\r
- else \r
- ram_read <= '0';\r
- end if;\r
- if RESET = '1' then\r
- ram_read <= '0';\r
+ end if;\r
end if;\r
+ end if;\r
\r
- end process;\r
+ --async because of oreg.\r
+ if ((current_state = SEND_IDLE_H) or (current_state = SEND_DATA_H) or (current_state = SEND_DLM_H) or (current_state = SEND_RST_H)) \r
+ and (ram_empty = '0') and (link_active_qtx = '1') and (send_dlm_i = '0') and (send_rst_i = '0') then\r
+ ram_read <= '1';\r
+ else \r
+ ram_read <= '0';\r
+ end if;\r
+ if (CLEAR = '1') then\r
+ ram_read <= '0';\r
+ end if;\r
\r
+ end process THE_DATA_CONTROL_FSM;\r
\r
----------------------------------------------------------------------\r
--\r
----------------------------------------------------------------------\r
\r
-send_dlm_i <= SEND_DLM_IN when rising_edge(CLK_TXI);\r
-send_dlm_word_i <= SEND_DLM_WORD_IN when rising_edge(CLK_TXI);\r
+ send_dlm_i <= SEND_DLM_IN when rising_edge(CLK_TXI);\r
+ send_dlm_word_i <= SEND_DLM_WORD_IN when rising_edge(CLK_TXI);\r
\r
-- Send RST message\r
-- UNTESTED\r
- THE_STORE_RST_PROC: process( CLK_TXI, RESET )\r
- begin\r
- if( RESET = '1' ) then\r
+ THE_STORE_RST_PROC: process( CLK_TXI, CLEAR )\r
+ begin\r
+ if( CLEAR = '1' ) then\r
+ send_rst_i <= '0';\r
+ send_rst_word_i <= (others => '0');\r
+ elsif( rising_edge(CLK_TXI) ) then\r
+ if ( link_active_qtx = '0' ) then\r
send_rst_i <= '0';\r
send_rst_word_i <= (others => '0');\r
- elsif( rising_edge(CLK_TXI) ) then\r
- if ( link_active_qtx = '0' ) then\r
- send_rst_i <= '0';\r
- send_rst_word_i <= (others => '0');\r
- elsif( SEND_RST_IN = '1' ) then\r
- send_rst_i <= '1';\r
- send_rst_word_i <= SEND_RST_WORD_IN;\r
- elsif( current_state = SEND_RST_L ) then\r
- send_rst_i <= '0';\r
- elsif( current_state = SEND_RST_H ) then\r
- send_rst_word_i <= (others => '0');\r
- end if;\r
+ elsif( SEND_RST_IN = '1' ) then\r
+ send_rst_i <= '1';\r
+ send_rst_word_i <= SEND_RST_WORD_IN;\r
+ elsif( current_state = SEND_RST_L ) then\r
+ send_rst_i <= '0';\r
+ elsif( current_state = SEND_RST_H ) then\r
+ send_rst_word_i <= (others => '0');\r
end if;\r
- end process THE_STORE_RST_PROC;\r
+ end if;\r
+ end process THE_STORE_RST_PROC;\r
\r
----------------------------------------------------------------------\r
-- Debug\r
DEBUG_OUT(4) <= '0'; --toggle_idle when rising_edge(CLK_TXI);\r
DEBUG_OUT(3 downto 0) <= state_bits when rising_edge(CLK_TXI);\r
\r
- process(CLK_SYS)\r
- begin\r
- if rising_edge(CLK_SYS) then\r
--- STAT_REG_OUT <= (others => '0');\r
- STAT_REG_OUT(3 downto 0) <= state_bits;\r
- STAT_REG_OUT(7 downto 4) <= (others => '0');\r
- STAT_REG_OUT(15 downto 8) <= std_logic_vector(ram_read_addr);\r
- STAT_REG_OUT(17) <= ram_empty;\r
- STAT_REG_OUT(18) <= link_active_qsys;\r
- STAT_REG_OUT(19) <= '0';\r
- STAT_REG_OUT(21 downto 20) <= (others => '0');\r
- STAT_REG_OUT(22) <= load_eop;\r
- STAT_REG_OUT(23) <= send_dlm_i;\r
- STAT_REG_OUT(26 downto 24) <= (others => '0');\r
- STAT_REG_OUT(27) <= ct_fifo_afull;\r
- STAT_REG_OUT(28) <= ct_fifo_read;\r
- STAT_REG_OUT(29) <= ct_fifo_write;\r
- STAT_REG_OUT(30) <= RESET;\r
- STAT_REG_OUT(31) <= '0';\r
- end if;\r
- end process;\r
+ THE_STAT_PROC: process( CLK_SYS )\r
+ begin\r
+ if rising_edge(CLK_SYS) then\r
+-- STAT_REG_OUT <= (others => '0');\r
+ STAT_REG_OUT(3 downto 0) <= state_bits;\r
+ STAT_REG_OUT(7 downto 4) <= (others => '0');\r
+ STAT_REG_OUT(15 downto 8) <= std_logic_vector(ram_read_addr);\r
+ STAT_REG_OUT(17) <= ram_empty;\r
+ STAT_REG_OUT(18) <= link_active_qsys;\r
+ STAT_REG_OUT(19) <= '0';\r
+ STAT_REG_OUT(21 downto 20) <= (others => '0');\r
+ STAT_REG_OUT(22) <= load_eop;\r
+ STAT_REG_OUT(23) <= send_dlm_i;\r
+ STAT_REG_OUT(26 downto 24) <= (others => '0');\r
+ STAT_REG_OUT(27) <= ct_fifo_afull;\r
+ STAT_REG_OUT(28) <= ct_fifo_read;\r
+ STAT_REG_OUT(29) <= ct_fifo_write;\r
+ STAT_REG_OUT(30) <= CLEAR;\r
+ STAT_REG_OUT(31) <= '0';\r
+ end if;\r
+ end process THE_STAT_PROC;\r
\r
state_bits <= x"0" when current_state = IDLE else\r
x"1" when current_state = SEND_IDLE_L else\r