Verilog HDL那些事_建模篇笔记(实验一,实验二)
2016-07-15 12:22
323 查看
实验一:永远的流水灯
扫描频率配置为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灯的亮与灭,达到流水灯的效果。
实验二建模框图
相关文章推荐
- android textview 添加上划线 中划线 删除线
- javascript语句——表达式语句、块语句、空语句和声明语句
- 设备节点和设备堆栈
- 2016夏季练习——二分
- 购物车与商城订单的关系以及技术实现深入分析
- CentOS7.2上搭建httpd-2.4
- POJ 3678 Katu Puzzle
- 五种常见的 PHP 设计模式
- 面试题汇总
- 向上/向下取整和四舍五入编程实现
- 私有网络地址
- apply函数处理数据的方式
- Java Web学习(15): 客户端请求、服务器响应及其HTTP状态码
- Codeforces Round #362 (Div. 2) A.B.C
- 分页查询优化
- Android面试一天一题(2)优雅地介绍自己的项目
- ServletContextListener 接口
- 【旧代码整理】uri路由处理部分
- 打印蛇形矩阵
- mysql 日期操作 增减天数、时间转换、时间戳