From c7913d6022466fd7b7d40688f453f4e8b5d02cb3 Mon Sep 17 00:00:00 2001 From: hadeshyp Date: Tue, 12 Feb 2008 15:45:43 +0000 Subject: [PATCH] *** empty log message *** --- trb_net16_api_base.vhd | 22 ++++++---------------- trb_net16_endpoint_0_trg_1_api.vhd | 1 + trb_net16_med_tlk.vhd | 10 +++++----- trb_net16_obuf.vhd | 19 +++++++++++++------ 4 files changed, 25 insertions(+), 27 deletions(-) diff --git a/trb_net16_api_base.vhd b/trb_net16_api_base.vhd index 581d1e0..4c9ad51 100644 --- a/trb_net16_api_base.vhd +++ b/trb_net16_api_base.vhd @@ -724,29 +724,25 @@ begin next_INT_MASTER_DATAREADY_OUT <= sbuf_free and (fifo_to_int_read_before or not or_all(master_counter)); if APL_SEND_IN = '0' then -- terminate the transfer update_registered_trailer <= '1'; --- next_INT_MASTER_DATAREADY_OUT <= sbuf_free; - if fifo_to_int_empty = '1' then -- immediate stop - if master_counter = "11" and sbuf_free = '1' then - next_state_to_int <= SEND_TRAILER; - end if; + if fifo_to_int_empty = '1' and master_counter = "11" and sbuf_free = '1' then -- immediate stop + next_state_to_int <= SEND_TRAILER; else next_state_to_int <= SHUTDOWN; end if; end if; when SHUTDOWN => fifo_to_int_read <= not fifo_to_int_empty and sbuf_free and or_all(master_counter); - next_INT_MASTER_DATAREADY_OUT <= sbuf_free and (fifo_to_int_read_before or not or_all(master_counter)); + next_INT_MASTER_DATAREADY_OUT <= sbuf_free and + ((fifo_to_int_read_before or not or_all(master_counter)) or --write data from fifo + (fifo_to_int_empty and or_all(master_counter))); --fill with padding words if master_counter = "11" and fifo_to_int_empty = '1' and sbuf_free = '1' then - --implicit: fill with padding words next_state_to_int <= SEND_TRAILER; - --out_select <= TRM; end if; when SEND_TRAILER => out_select <= TRM; next_INT_MASTER_DATAREADY_OUT <= sbuf_free; if master_counter = "11" and sbuf_free = '1' then next_state_to_int <= IDLE; - --next_INT_MASTER_DATAREADY_OUT <= '0'; next_sequence_counter <= sequence_counter +1; release_slave_running <= '1'; end if; @@ -989,18 +985,12 @@ begin fifo_to_int_data_in <= APL_DATA_IN; fifo_to_int_packet_num_in <= APL_PACKET_NUM_IN; fifo_to_int_write <= (APL_WRITE_IN and not fifo_to_int_full); --- when (current_state = IDLE or current_state = SEND_HEADER or current_state = RUNNING) --- else '0'; - APL_FIFO_FULL_OUT <= fifo_to_int_full; -- APL has to stop writing - INT_SLAVE_READ_OUT <= reg_INT_SLAVE_READ_OUT; - - -- connect receiver fifo_to_apl_data_in <= INT_SLAVE_DATA_IN; fifo_to_apl_packet_num_in <= INT_SLAVE_PACKET_NUM_IN; - + INT_SLAVE_READ_OUT <= reg_INT_SLAVE_READ_OUT; genAPL_RUN_OUT_0: if API_TYPE = 0 generate APL_RUN_OUT <= slave_running; diff --git a/trb_net16_endpoint_0_trg_1_api.vhd b/trb_net16_endpoint_0_trg_1_api.vhd index 14085b3..faffa6c 100644 --- a/trb_net16_endpoint_0_trg_1_api.vhd +++ b/trb_net16_endpoint_0_trg_1_api.vhd @@ -546,6 +546,7 @@ STAT_api_control_signals(11) <= apl_to_buf_INIT_DATAREADY; STAT_api_control_signals(12) <= apl_to_buf_INIT_READ; STAT_api_control_signals(19 downto 16) <= MED_INIT_DATA_OUT(3 downto 0); STAT_api_control_signals(21 downto 20) <= MED_INIT_PACKET_NUM_OUT(1 downto 0); +STAT_api_control_signals(22) <= MED_INIT_DATAREADY_OUT and MED_INIT_READ_IN; --STAT_api_control_signals(30 downto 13) <= (others => '0'); STAT_api_control_signals(31) <= buf_to_apl_INIT_READ; diff --git a/trb_net16_med_tlk.vhd b/trb_net16_med_tlk.vhd index 3faf6ce..499eae0 100644 --- a/trb_net16_med_tlk.vhd +++ b/trb_net16_med_tlk.vhd @@ -139,7 +139,7 @@ begin fifo_wr_en_a <= reg_RX_DV and not reg_RX_ER and rx_allow; fifo_din_a <= rx_allow & reg_RX_ER & reg_RXD; - fifo_rd_en_a <= not fifo_empty_a; + fifo_rd_en_a <= '1';--not fifo_empty_a; fifo_reset <= internal_reset; buf_MED_DATAREADY_OUT <= last_fifo_rd_en_a and not fifo_dout_a(16) and fifo_dout_a(17); MED_ERROR_OUT <= buf_MED_ERROR_OUT; @@ -228,7 +228,7 @@ begin if internal_reset = '1' then last_fifo_rd_en_a <= '0'; else - last_fifo_rd_en_a <= fifo_rd_en_a; + last_fifo_rd_en_a <= fifo_rd_en_a and not fifo_empty_a; end if; end if; end process; @@ -283,8 +283,6 @@ U1_BUFG: BUFG port map (I => CLK_FB_Out, O => FB_CLK); fifostatus_out => fifo_status_m ); - fifo_rd_en_m <= tx_allow and not fifo_empty_m; - TLK_TX_ER <= '0'; TLK_TX_EN <= reg_TX_EN; TLK_TXD <= reg_TXD; @@ -302,6 +300,7 @@ U1_BUFG: BUFG port map (I => CLK_FB_Out, O => FB_CLK); end if; end process; + fifo_rd_en_m <= tx_allow; -- and not fifo_empty_m; process(TLK_CLK_neg) begin @@ -309,11 +308,12 @@ U1_BUFG: BUFG port map (I => CLK_FB_Out, O => FB_CLK); if internal_reset = '1' then reg_TXD <= (others => '0'); --reg_TX_EN <= '0'; + --fifo_rd_en_m <= '0'; last_fifo_rd_en_m <= '0'; else reg_TXD <= fifo_dout_m(15 downto 0); reg_TX_EN <= last_fifo_rd_en_m; - last_fifo_rd_en_m <= fifo_rd_en_m; + last_fifo_rd_en_m <= fifo_rd_en_m and not fifo_empty_m; end if; end if; end process; diff --git a/trb_net16_obuf.vhd b/trb_net16_obuf.vhd index 8a13851..1134d57 100644 --- a/trb_net16_obuf.vhd +++ b/trb_net16_obuf.vhd @@ -121,7 +121,18 @@ begin ); comb_read <= '1'; - sbuf_free <= comb_next_read; + + process(CLK) + begin + if rising_edge(CLK) then + if RESET = '1' then + sbuf_free <= '0'; + else + sbuf_free <= comb_next_read; + end if; + end if; + end process; + --sbuf_free <= comb_next_read; -- end generate; -- gen_non_sbuf : if SECURE_MODE = 0 generate -- MED_DATAREADY_OUT <= comb_dataready; @@ -137,12 +148,8 @@ begin decrease_TRANSMITTED_BUFFERS <= GOT_ACK_IN; send_ACK <= SEND_ACK_IN or reg_SEND_ACK_IN or reg_SEND_ACK_IN_2; next_SEND_ACK_IN_2 <= (reg_SEND_ACK_IN_2 or SEND_ACK_IN) and reg_SEND_ACK_IN; - send_DATA <= not TRANSMITTED_BUFFERS(1);--'1' when (TRANSMITTED_BUFFERS(1) = '0') else '0'; - - --only for full obuf + send_DATA <= not TRANSMITTED_BUFFERS(1); send_EOB <= '1' when (CURRENT_DATA_COUNT = max_DATA_COUNT_minus_one and saved_packet_type /= TYPE_TRM) else '0'; - - -- buffer registers STAT_BUFFER(1 downto 0) <= TRANSMITTED_BUFFERS; STAT_BUFFER(14 downto 2) <= (others => '0'); -- 2.43.0