微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 有关FPGA跑马灯的程序问题

有关FPGA跑马灯的程序问题

时间:10-02 整理:3721RD 点击:

实验3:流水灯实验:
完成一个8路流水灯控制实验,要求有以下3种花型:
1)8路灯同时亮灭;
2)从左至右再从右至左逐个亮(每次只有1路亮);
3)8路灯每次4路灯亮,4路灯灭,且亮灭相间,交替亮灭。
用3个按键控制3种花型。按下花型按键就一直显示相应花型,再按该键可暂停。可设置1个复位键关闭显示。
这个eda程序要怎么写?求大神指教。
下面是我写的程序,可是不懂错误要如何修改?




if的逻辑关系就有错误,你仔细看看,其他的你再找找

代码发xtajmhfhn@163.com.帮你看看。

之前的问题解决了。但是现在结果发现我的程序思路有问题?那我发给你,麻烦你帮我看看怎么写程序,才能实现我的实验要求。谢谢了。

多个always块对同一个变量赋值

新手、入门的兄弟姐妹可以加群咱相互交流学习哈,FPGA入门学习交流群 466511993

RTL设计是不推荐for语句的,因为写的不好的情况下for语句无法综合,就算能够综合的也是在简单的自动复制几遍代码,Testbench可以使用for语句来产生信号。
建议小编要将这个小实验分拆一下,按键的处理消抖按键检测独立出来,然后状态机一个,专门针对状态机设计一个always,然后再有一个always来控制LED灯,这样条理会清晰一些

刚学fpga,不懂什么是状态机

状态机就是控制程序的执行状态的描述,比如你的这个按键的问题,用语言描述的话大概是这样

  1. state:状态机
  2. if(reset_key)
  3. state=reset;
  4. else if(state==reset)
  5. begin
  6.   if(key1)  state=led1;
  7.   else if(key2) state=led2;
  8.   else if(key3) state=led3;
  9.   else state=state;
  10. else if(led1)
  11. if(key1) state=led1pause;
  12. else if(key2) state=led2;
  13. else if(key3) state=led3;
  14. else state=state;
  15. .
  16. .
  17. .
  18. .

复制代码


这个如果用图形表示的话就叫做状态转移流程图....
然后后面的显示逻辑去排定state的状态做相应的显示动作就行了。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top