]> jspc29.x-matter.uni-frankfurt.de Git - trbnet.git/commitdiff
*** empty log message ***
authorhadeshyp <hadeshyp>
Tue, 12 Feb 2008 15:45:43 +0000 (15:45 +0000)
committerhadeshyp <hadeshyp>
Tue, 12 Feb 2008 15:45:43 +0000 (15:45 +0000)
trb_net16_api_base.vhd
trb_net16_endpoint_0_trg_1_api.vhd
trb_net16_med_tlk.vhd
trb_net16_obuf.vhd

index 581d1e015dd1a2fec02cfa3aed65cec403334991..4c9ad51a3d825b506d175dbba97110681fcb7d5a 100644 (file)
@@ -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;
index 14085b3d61179b9ebdc9e1aebcd49b718d5b3f64..faffa6c7fd83df9bb23db33e0a004f74f457e2dd 100644 (file)
@@ -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;
index 3faf6ce19e294d4c4ed08d82ef367d71aee76bac..499eae00545f10e769f7ef55f1d88187812983b4 100644 (file)
@@ -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;
index 8a13851f3819ff6bd2299cfcdee355a3720be4c2..1134d573f2f6a5616c9933ccbc2f875ee75ada92 100644 (file)
@@ -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');