[数据传输] 68013数据传输过程中发生丢失

[复制链接]
1832|2
 楼主| sianmin123 发表于 2015-4-29 01:09 | 显示全部楼层 |阅读模式
我使用FPGA直接向上位机传输8位不断循环自加的数据...然后通过68013不断向PC传输这些数据...可是我用Streamer观察数据的发现数据"跳"了,或者说丢失了吧。。反正不连续~请问这是什么问题?上源代码~
  1. ----------------------------------------------------------------------------------
  2. -- Company: Cypress Semiconductors
  3. -- Engineer: Hridya Valsaraju
  4. --
  5. -- Create Date:    03:28:52 12/18/2009
  6. -- Design Name:  FX2LP-FPGA interface
  7. -- Module Name:    test - Behavioral
  8. -- Project Name:
  9. -- Target Devices:
  10. -- Tool versions:
  11. -- Description:
  12. --
  13. -- Dependencies:
  14. --
  15. -- Revision:
  16. -- Revision 0.01 - File Created
  17. -- Additional Comments:
  18. --
  19. ----------------------------------------------------------------------------------
  20. library IEEE;
  21. use IEEE.STD_LOGIC_1164.ALL;      
  22. use IEEE.STD_LOGIC_ARITH.ALL;     
  23. use IEEE.STD_LOGIC_UNSIGNED.ALL;

  24. entity fpga_master is
  25.   Port (  
  26.     fdata : inout  STD_LOGIC_VECTOR(15 downto 0);  --  FIFO data lines.
  27.     faddr     : out STD_LOGIC_VECTOR(1 downto 0); --  FIFO select lines
  28.     slrd      : out STD_LOGIC;                    -- Read control line
  29.     slwr      : out STD_LOGIC;                    -- Write control line
  30.     gstate    : out STD_LOGIC_VECTOR(3 downto 0); -- debug lines
  31.    
  32.    
  33.     flagd     : in  STD_LOGIC;                    --EP6 full flag
  34.     flaga     : in  STD_LOGIC;                    --EP2 empty flag
  35.     clk       : in  STD_LOGIC;                    --Interface Clock
  36.     sloe      : out STD_LOGIC                     --Slave Output Enable control
  37.   );
  38. end fpga_master;

  39. architecture rtl of fpga_master is
  40.   
  41. signal faddr_i    : STD_LOGIC_VECTOR(1 downto 0);  

  42. signal slrd_i     : STD_LOGIC;
  43. signal slwr_i     : STD_LOGIC;
  44.    
  45. signal gstate_i : STD_LOGIC_VECTOR(3 downto 0);
  46.   
  47. signal MasterState : STD_LOGIC_VECTOR(3 downto 0);   -- Counter to sequence the fifo signals.

  48. signal sloe_i : STD_LOGIC;

  49. shared variable cnt : integer range 0 to 9 := 0 ;

  50. CONSTANT A: STD_LOGIC_VECTOR (3 DownTo 0) := "0000";
  51. CONSTANT B: STD_LOGIC_VECTOR (3 DownTo 0) := "0001";
  52. CONSTANT C: STD_LOGIC_VECTOR (3 DownTo 0) := "0010";
  53. CONSTANT D: STD_LOGIC_VECTOR (3 DownTo 0) := "0011";
  54. CONSTANT E: STD_LOGIC_VECTOR (3 DownTo 0) := "0100";
  55. CONSTANT F: STD_LOGIC_VECTOR (3 DownTo 0) := "0101";
  56. CONSTANT G: STD_LOGIC_VECTOR (3 DownTo 0) := "0110";
  57. CONSTANT H: STD_LOGIC_VECTOR (3 DownTo 0) := "0111";  
  58. begin

  59.         slrd        <= slrd_i;
  60.         slwr        <= slwr_i;
  61.         faddr <= faddr_i;
  62.         gstate<= gstate_i;
  63.         sloe         <= sloe_i;


  64. process(clk)

  65. variable fdatawe : natural := 0;
  66. variable fifodatabyte : STD_LOGIC_VECTOR(15 downto 0) := "0000000000000000";  -- Local for now.

  67. begin
  68.         if(rising_edge(clk)) then
  69.   
  70.                 case MasterState(3 downto 0) is
  71.      
  72.                         when A =>  -- IDLE STATE   
  73.                           
  74.                                 sloe_i <= '1';                        
  75.                                 faddr_i <= "10";        
  76.                                 slrd_i  <= '1';
  77.                                 slwr_i  <= '1';
  78.                                 MasterState <= E;
  79.                                 fdatawe := 0;
  80.                                 gstate_i <= "0001";
  81.                      
  82.                         when E =>   
  83.                        
  84.                                 faddr_i <= "10";
  85.                                 slrd_i  <= '1';
  86.                                 sloe_i <= '1';
  87.                                 if (flagd = '1')   then                 -- if Full flag is in a deasserted state
  88.                                         slwr_i  <= '0';                         --assert slave write control signal
  89.                                         fdatawe := 0 ;
  90.                                         fdata <= fifodatabyte;        
  91.                                         fifodatabyte := fifodatabyte + '1';          
  92.                                         MasterState <= E;                       -- stay in state E
  93.                                 else
  94.                                         slwr_i  <= '1';
  95.                                         MasterState <= A;                                  --when Full flag gets asserted, move to state A

  96.                                 end if;
  97.                                                
  98.                                 gstate_i <= "0110";  
  99.                   
  100.                         when others =>--if an undefined state move to IDLE

  101.                                 faddr_i <= "00";
  102.                   
  103.                                 slrd_i  <= '1';                        
  104.                                 sloe_i <= '1';
  105.                                 slwr_i  <= '1';
  106.                                
  107.                                 gstate_i <= "1000";  
  108.                                 MasterState <= A;
  109.                 end case;
  110.         end if;
  111. end process;
  112. end rtl;
 楼主| sianmin123 发表于 2015-4-29 01:11 | 显示全部楼层
不好意思。。。写错了..是16位的数据...自己顶一个
 楼主| sianmin123 发表于 2015-4-29 12:08 | 显示全部楼层
来个大神指导一下...
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

3

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部