原创 CY7C68013A开发板编程之18(用FIFO实现高速数据传输_续1)

2011-1-22 14:12 3768 5 5 分类: 通信

   用FIFO实现高速数据传输,原理上并不是太困难,但是要真正做出来,还是要费不少功夫的。其实搞USB开发,涉及的东西太多,哪一方面都有可能成为拌路虎,让你失败。今天主要是实现一个状态机,用VHDL语言开发,编程工具是QUARTUS II 9.0,芯片用的是ALTERA公司的EPM240,实验板如下,


c71690db-f22d-4f2c-97ce-fa59103170a1.JPG


  状态机的写法有多种,有说一段式的,有说两段式的,还有说三段式的,还有说最标准的写法就是三段式的。我用的是一段式的,但以前在东软的时候写过三段式的,本质上与两段式的没有什么区别。关于状态机如何写,我这里就不多说了,反正这也是一篇大文章,也不是我三言两语能表达清楚的,有兴趣的朋友可以自己查一下。


  以下是我的程序片断,


 PROCESS(clk) 
    BEGIN
      IF (clk'EVENT AND clk='1') THEN
          CASE current_state is 
         
    WHEN S0=> --idle state
     faddr<="00";
     sloe_out_i<='1';
     slwr_out_i<='1';
     fdata_i <= "11110000";
             IF flagd='1' THEN
      current_state<=S1;
             ELSE
      current_state<=S0;
             END IF;
            
    WHEN S1=>--prepare data  
             IF flagd='1' THEN
      faddr<="00";
      sloe_out_i<='0';
      slwr_out_i<='0';
      fdata_i <= counter_i;
      current_state<=S2;
             ELSE
      current_state<=S0;
             END IF;
            
    WHEN S2=>--write data
     slwr_out_i<='1';
     current_state<=S1;
             
          END CASE;
  END IF;
END PROCESS;


  当然,在结构体的最前面要对这三个状态进行声明,如下,


 TYPE STATE IS (S0,S1,S2);
 SIGNAL  current_state :STATE;


  程序编绎通过,没有什么问题,仿真也是正确的。完整的程序我会放在开发板对应的例程里,请访问我的淘宝网。


 


良子.2011年


沈阳市东陵区白塔街龙盛家园


欢迎交流:liangziusb@163.com


QQ:392425239


http://shop64171919.taobao.com

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条