signal start_retr_i : std_logic;
signal request_retr_position_i : std_logic_vector(7 downto 0);
signal start_retr_position_i : std_logic_vector(7 downto 0);
+signal request_retr_tx : std_logic;
+signal start_retr_tx : std_logic;
+signal request_retr_position_q : std_logic_vector(7 downto 0);
+signal start_retr_position_q : std_logic_vector(7 downto 0);
signal rx_dlm_i : std_logic;
signal led_ok : std_logic;
TX_K_OUT => TX_K,
TX_CD_OUT => TX_CD,
- REQUEST_RETRANSMIT_IN => request_retr_i, --TODO
- REQUEST_POSITION_IN => request_retr_position_i, --TODO
+ REQUEST_RETRANSMIT_IN => request_retr_tx, --TODO
+ REQUEST_POSITION_IN => request_retr_position_q, --TODO
- START_RETRANSMIT_IN => start_retr_i, --TODO
- START_POSITION_IN => start_retr_position_i, --TODO
+ START_RETRANSMIT_IN => start_retr_tx, --TODO
+ START_POSITION_IN => start_retr_position_q, --TODO
SEND_DLM => TX_DLM,
SEND_DLM_WORD => TX_DLM_WORD,
RX_DLM <= rx_dlm_i;
MEDIA_MED2INT <= media_med2int_i;
+THE_RETRANSMIT_PULSE_SYNC_1 : pulse_sync
+port map(
+ CLK_A_IN => CLK_RXI,
+ RESET_A_IN => reset_i,
+ PULSE_A_IN => request_retr_i,
+ CLK_B_IN => CLK_TXI,
+ RESET_B_IN => reset_i,
+ PULSE_B_OUT => request_retr_tx
+);
+
+THE_RETRANSMIT_PULSE_SYNC_2 : pulse_sync
+port map(
+ CLK_A_IN => CLK_RXI,
+ RESET_A_IN => reset_i,
+ PULSE_A_IN => start_retr_i,
+ CLK_B_IN => CLK_TXI,
+ RESET_B_IN => reset_i,
+ PULSE_B_OUT => start_retr_tx
+);
+
+THE_POSITION_REG : process(CLK_RXI)
+begin
+ if rising_edge(CLK_RXI) then
+ if request_retr_i = '1' then
+ request_retr_position_q <= request_retr_position_i;
+ end if;
+ if start_retr_i = '1' then
+ start_retr_position_q <= start_retr_position_i;
+ end if;
+ end if;
+end process;
+
-------------------------------------------------
-- Generate LED signals
-------------------------------------------------
signal ram_empty : std_logic;
signal ram_afull : std_logic;
- signal request_position_q : std_logic_vector( 7 downto 0);
- signal restart_position_q : std_logic_vector( 7 downto 0);
signal request_position_i : std_logic_vector( 7 downto 0);
signal restart_position_i : std_logic_vector( 7 downto 0);
signal make_request_i : std_logic;
signal load_read_pointer_i : std_logic;
signal send_dlm_in_i : std_logic;
signal send_dlm_i : std_logic;
- signal start_retransmit_i : std_logic;
- signal request_retransmit_i : std_logic;
signal buf_tx_read_out : std_logic;
signal tx_data_200 : std_logic_vector(17 downto 0);
D_OUT(0) => tx_allow_q);
- THE_RETRANSMIT_PULSE_SYNC_1 : pulse_sync
- port map(
- CLK_A_IN => CLK_100,
- RESET_A_IN => RESET_IN,
- PULSE_A_IN => REQUEST_RETRANSMIT_IN,
- CLK_B_IN => CLK_200,
- RESET_B_IN => RESET_IN,
- PULSE_B_OUT => request_retransmit_i
- );
-
- THE_RETRANSMIT_PULSE_SYNC_2 : pulse_sync
- port map(
- CLK_A_IN => CLK_100,
- RESET_A_IN => RESET_IN,
- PULSE_A_IN => START_RETRANSMIT_IN,
- CLK_B_IN => CLK_200,
- RESET_B_IN => RESET_IN,
- PULSE_B_OUT => start_retransmit_i
- );
-
-- THE_RETRANSMIT_PULSE_SYNC_3 : pulse_sync
-- port map(
-- CLK_A_IN => CLK_100,
-- );
send_dlm_in_i <= SEND_DLM;
- THE_POSITION_REG : process(CLK_100)
- begin
- if rising_edge(CLK_100) then
- if REQUEST_RETRANSMIT_IN = '1' then
- request_position_q <= REQUEST_POSITION_IN;
- end if;
- if START_RETRANSMIT_IN = '1' then
- restart_position_q <= START_POSITION_IN;
- end if;
- end if;
- end process;
-
--Store Request Retransmit position
THE_STORE_REQUEST_PROC : process(CLK_200, RESET_IN)
if tx_allow_qtx = '0' then
make_request_i <= '0';
request_position_i <= (others => '0');
- elsif request_retransmit_i = '1' then
+ elsif REQUEST_RETRANSMIT_IN = '1' then
make_request_i <= '1';
- request_position_i <= request_position_q;
+ request_position_i <= REQUEST_POSITION_IN;
elsif current_state = SEND_REQUEST_L then
make_request_i <= '0';
elsif current_state = SEND_REQUEST_H then
if tx_allow_qtx = '0' then
make_restart_i <= '0';
restart_position_i <= (others => '0');
- elsif start_retransmit_i = '1' then
+ elsif START_RETRANSMIT_IN = '1' then
make_restart_i <= '1';
- restart_position_i <= restart_position_q;
+ restart_position_i <= START_POSITION_IN;
elsif current_state = SEND_START_L then
make_restart_i <= '0';
elsif current_state = SEND_START_H then