fpga学习——实现LED流水灯效果

实现LED的流水灯效果是入门的基础操作,所谓流水灯就是要让LED按照固定的频率依次闪烁,说到可能可能之前我们编写的计数器程序(实现LED翻转)能够帮助我们实现LED的流水灯效果。可以参考文章:fpga学习day3 LED灯翻转(计数器)-优快云博客文章浏览阅读297次,点赞12次,收藏6次。在代码实现上,需要先定义LED用到的输入输出端口(对LED_flash模块进行定义),需要用到系统时钟,低电平复位信号(ResetL=0时,所有操作复位)。我们可以采用计数器的方式,对系统的时钟周期进行计数。一个系统时钟周期为20ns,LED端口的信号周期为1ms(0.5ms进行翻转一次),也就是当系统时钟经过25000个周期后,LED端口的信号需要翻转一次。LED闪烁的本质就是输入电平的翻转,因此想要让LED灯按照我们期待的频率闪烁,需要根据板子的系统时钟和LED电平翻转频率之间的关系来实现。https://blog.youkuaiyun.com/crrrd/article/details/135704967?spm=1001.2014.3001.5502

这篇文章中使用计数器来使LED灯按照1khz的频率反转。在此基础上,我们可以让扩展板上的8个LED灯按照1Khz的频率一次点亮。下面将介绍三种方法:

一、使用移位方式实现流水灯效果

首先,能想到的最简单和直观的方式就是使用移位运算符<<来实现流水效果。但此时需要注意:当第八个LED点亮时,如果再进行<<操作,会导致8个LED对应的位全为0,图示如下:

我们需要的是当LED7被点亮后,下一次的操作可以让LED0点亮,因此需要使用条件语句来区别不同的情况,当出现上述情况是,下一步让LED变为00000001,其他情况则使用<<进行移位操作,代码如下:

    always@(posedge CLK or negedge Reset_n)
    if(!Reset_n)
        LED <= 8'b
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值