]> jspc29.x-matter.uni-frankfurt.de Git - trbnet.git/commitdiff
added number of pakets, IF
authorIngo Froehlich <ingo@nomail.fake>
Wed, 28 Feb 2018 18:27:45 +0000 (19:27 +0100)
committerIngo Froehlich <ingo@nomail.fake>
Wed, 28 Feb 2018 18:27:45 +0000 (19:27 +0100)
media_interfaces/sync/rx_control.vhd
media_interfaces/sync/tb/med_sync_tb.vhd
media_interfaces/sync/tx_control.vhd

index 7345eb8a003d9aedde65375389610df989c836fa..8c9c0e6684fbb86266df9fb6189e30f78414f64f 100644 (file)
@@ -94,7 +94,7 @@ signal pulse_good_100      : std_logic;
 signal pulse_bad_100       : std_logic;
 signal waiting_for_retr    : std_logic := '0';
 signal good_pos_counter    : unsigned(7 downto 0) := (others => '0');
-
+signal num_pakets          : unsigned(3 downto 0) := (others => '0');
 
 begin
 
@@ -250,16 +250,16 @@ PROC_RX_FSM : process begin
         rx_data(16)         <= next_sop;
         rx_data(17)         <= '0';
         ct_fifo_write       <= '1';
+        num_pakets          <= num_pakets+1;
         rx_state            <= FIRST;
       else
         rx_state <= SLEEP;        
       end if;
 
     when GET_CRC => --TODO: mitzaehlen, of CRC nach 5 16-Bit-Paketen kommt
-      -- alles wegwerfen bis neue retransmission kommt
       crc_reset          <= '1';
       rx_state           <= FIRST;
-      if (crc_q = reg_rx_data_in and waiting_for_retr = '0') then -- CRC match
+      if (crc_q = reg_rx_data_in and waiting_for_retr = '0' and num_pakets = 5) then -- CRC match
         pulse_good       <= '1';
       else
         pulse_bad        <= '1';
@@ -268,6 +268,7 @@ PROC_RX_FSM : process begin
           waiting_for_retr <= '1';
         end if;
       end if;
+      num_pakets <= (others => '0'); 
 
     when GET_RETR =>
       rx_state              <= FIRST;
index 663c72a3a8ae8e3721c4adff7d19d737224fd747..408d92425cca6524c1eafc8af6ba08ee0fb0cd92 100644 (file)
@@ -121,25 +121,25 @@ process begin
   wait for 30 us;
 
   -- generate good packages to test the RAM overflow
-  GEN_GOOD: for i in 0 to 60 loop
+  GEN_GOOD: for i in 0 to 3 loop
   wait until rising_edge(clk_100_m); wait for 1 ns;
-  int2med_m.data <= x"affe";
+  int2med_m.data <= x"0001";
   int2med_m.packet_num <= "100";
   int2med_m.dataready <= '1';
   wait until rising_edge(clk_100_m); wait for 1 ns;
-  int2med_m.data <= x"affe";
+  int2med_m.data <= x"0002";
   int2med_m.packet_num <= "000";
   int2med_m.dataready <= '1';
   wait until rising_edge(clk_100_m); wait for 1 ns;
-  int2med_m.data <= x"affe";
+  int2med_m.data <= x"0003";
   int2med_m.packet_num <= "001";
   int2med_m.dataready <= '1';
   wait until rising_edge(clk_100_m); wait for 1 ns;
-  int2med_m.data <= x"affe";
+  int2med_m.data <= x"0004";
   int2med_m.packet_num <= "010";
   int2med_m.dataready <= '1';
   wait until rising_edge(clk_100_m); wait for 1 ns;
-  int2med_m.data <= x"affe";
+  int2med_m.data <= x"0005";
   int2med_m.packet_num <= "011";
   int2med_m.dataready <= '1';
   wait until rising_edge(clk_100_m); wait for 1 ns;
@@ -173,26 +173,30 @@ process begin
   int2med_m.dataready <= '0';
   wait until rising_edge(clk_100_m); wait for 1 ns;
   wait until rising_edge(clk_100_m); wait for 1 ns;
+  wait until rising_edge(clk_100_m); wait for 1 ns;
+  wait until rising_edge(clk_100_m); wait for 1 ns;
+  wait until rising_edge(clk_100_m); wait for 1 ns;
+  wait until rising_edge(clk_100_m); wait for 1 ns;
 
   --good package which should be thrown away
   wait until rising_edge(clk_100_m); wait for 1 ns;
-  int2med_m.data <= x"dead";
+  int2med_m.data <= x"ff01";
   int2med_m.packet_num <= "100";
   int2med_m.dataready <= '1';
   wait until rising_edge(clk_100_m); wait for 1 ns;
-  int2med_m.data <= x"dead";
+  int2med_m.data <= x"ff02";
   int2med_m.packet_num <= "000";
   int2med_m.dataready <= '1';
   wait until rising_edge(clk_100_m); wait for 1 ns;
-  int2med_m.data <= x"dead";
+  int2med_m.data <= x"ff03";
   int2med_m.packet_num <= "001";
   int2med_m.dataready <= '1';
   wait until rising_edge(clk_100_m); wait for 1 ns;
-  int2med_m.data <= x"dead";
+  int2med_m.data <= x"ff04";
   int2med_m.packet_num <= "010";
   int2med_m.dataready <= '1';
   wait until rising_edge(clk_100_m); wait for 1 ns;
-  int2med_m.data <= x"dead";
+  int2med_m.data <= x"ff05";
   int2med_m.packet_num <= "011";
   int2med_m.dataready <= '1';
   wait until rising_edge(clk_100_m); wait for 1 ns;
index 3e05dcf52ec1e5e4290ae8ad7b0ed9c4efa54e34..553517d3f3d303e5a4ae5fe9fa0a9222b196ea26 100644 (file)
@@ -249,6 +249,7 @@ begin
             TX_K_OUT           <= '1';
             current_state      <= SEND_IDLE_H;
             first_idle         <= first_idle;
+            load_eop           <= '0';
 
           when SEND_IDLE_H =>
             if rx_allow_qtx = '1' or toggle_idle = '1' then