实验一:永远的流水灯

扫描频率配置为100Hz,即是说扫描周期为10ms.这里需要注意的是扫描周期的概念。流水灯嘛,顾名思义,扫描周期指的是流水灯扫一轮所需要的时间。听到说周期,就应该想到在建模的时候需要写计数器模块,这个计数器模块应该是神一般的独立存在,独立运行。每隔10ms复位一次,复位后又重新开始计数。

实验二:闪耀灯和流水灯

闪耀灯涉及到闪耀频率,流水灯涉及到扫描频率的概率。这里先区分一下闪耀频率和扫描频率的概念。闪耀频率对应闪耀周期,闪耀周期是针对于单个LED灯而言的,即是指LED灯亮的时间加上熄灭的时间总和称为一个闪耀周期。

关于写计数器模块,对于时间较长的周期,可以采用分级的方式来写,例如:100ms的时间,前一级我们可以先写一个1ms的计数模块,当这一级的计数器计满1ms的时候,可以把这一刻当做后一级100ms计数器的一个条件语句,触发下一级的计数。

在流水灯模块,最后采用位拼接运算来控制rLED_Out各个位的电平,达到控制LED灯的目的。其中语句:

rLED_Out <= {rLED_Out[1:0],1’b0};//注意这里面的没一个量都要限定位宽

每次执行此条语句,相当于把最低位赋值0,把rLED_Out[1:0]赋值给rLED_Out[2:1],即原来的第0位放在现在的第一位,原来的第1位放在现在的第2位,这相当于把数据进行了左移操作。

总结:

对比一下实验一与实验二的流水灯建模思路:

实验一把每一颗LED灯当做一个功能模块进行单独建模,通过一个总的计数器计数,把计数器计数的范围值当做控制LED灯亮与灭的条件控制语句。

实验一建模框图

实验二把流水灯当做一整个模块,在定义output时定义[2:0]LED_Out;即有多少颗LED灯,就定义多少个位,通过写出状态移位控制程序来控制LED灯的亮与灭,达到流水灯的效果。

实验二建模框图

最新文章

  1. 详细了解HTML标签内容模型
  2. AES128和AES256主要区别和安全程度是多少?他们对于机器的消耗是怎样的?两者性能如何?实际开发如何选择?
  3. java.util.ResourceBundle使用详解(转)
  4. poj3356 dp
  5. UVA 10078 The Art Gallery
  6. Java中resourceBundle和Properties的区别
  7. Struts2零碎点整理
  8. 第六十六篇、OC_Sqlite数据库操作
  9. [转载]GDB十分钟教程
  10. add-apt-repository cloud-archive:liberty
  11. Hadoop 新生报道(二) hadoop2.6.0 集群系统版本安装和启动配置
  12. 别再说找不到Python练手项目了,这80个拿去过冬
  13. C语言学习之桶排序
  14. ubuntu 启动时提示 Failed to load session ubuntu
  15. ejabberd在windows10上安装记录
  16. MAC帧格式、IPV4数据报格式、TCP报文格式、UDP数据报格式
  17. elasticsearch批量删除(查询删除)
  18. KEIL、uVision、RealView、MDK、KEIL C51之间比较
  19. 如何垂直居中元素(浮动元素&amp;居中一个&lt;img&gt;)?
  20. RTX51 Tiny

热门文章

  1. CentOS7 增加tomcat 启动,停止,使用systemctl进行配置
  2. Maven内置变量说明
  3. java.util.concurrent包分类结构图
  4. (34)odoo反代理中客户IP处理
  5. JAVA OOP 基础知识提纲
  6. Mongodb异常关闭重启失败解决
  7. log4net.NoSql +ElasticSearch 实现日志记录
  8. iOS开发多线程篇—自定义NSOperation
  9. Linux diable ipv6
  10. poj 2777