上篇博客讲了led控制,实现了led闪烁,那我们趁热打铁,做一个补充实验:
设计流水灯,让4个led灯按照流水的方式循环闪烁。
这个实验是为了练习verilog中移位操作的使用方法。
![](https://img-blog.csdnimg.cn/img_convert/588946a5063399f36a39bb1d638a0317.png)
想要实现流水灯,就需要使亮的那个灯移位,按照逻辑来说就是0001->0010->0100->1000->0001
但是由于led是低电平点亮,所以我们需要取反,新定义一个led_r,令led=~led_r。在输出端也要将reg去掉,led无需作为寄存器了,作为物理连线即可,之前的任务改由led_r执行。
下面进行全编译,下载程序到板子上,观察现象
![](https://img-blog.csdnimg.cn/img_convert/893956ababcdc48141c08be9bca9e497.png)
![](https://img-blog.csdnimg.cn/img_convert/a9be2e8949c0c625d8d10cd3504150ba.png)
![](https://img-blog.csdnimg.cn/img_convert/e2ced8beaa1c37b8e56c3d2e8c1d73e5.png)
![](https://img-blog.csdnimg.cn/img_convert/ebade577f71867c5de6119c184815f5e.png)
流水灯完成。还有其他方法来实现这个功能。
![](https://img-blog.csdnimg.cn/img_convert/37ac56bff2f267600f0e5d1cdbf11392.png)
使用这种位拼接方法,简单有效的进行移位。将程序下载到板卡中验证
![](https://img-blog.csdnimg.cn/img_convert/199587520b639ca400b9f035b96f12aa.png)
![](https://img-blog.csdnimg.cn/img_convert/098ccdd0d4d3ab77b53586ebb6ee0e3d.png)
![](https://img-blog.csdnimg.cn/img_convert/fd0af1ed52aa0449ac120e07a5696439.png)
![](https://img-blog.csdnimg.cn/img_convert/75684d36d7a7c4ba27158709898cb13b.png)
现象与之前没区别。这些小实验可以有效地帮助我们熟悉verilog语言和开发流程。