0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

详解基于FPGA的数字电路对流水灯的实验

电子森林 来源:哔哩哔哩 作者:硬禾学堂 2021-03-19 16:36 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

继年前介绍的时序逻辑电路之时钟分频后,今天我们来介绍第7讲:流水灯。

流水灯,有时候也叫跑马灯,是一个简单、有趣又经典的实验,基本所有单片机的玩家们在初期学习的阶段都做过。本次我们也来介绍一下如何通过小脚丫FPGA实现一个流水灯。

流水灯就是让一连串的灯在一定时间内先后点亮并循环往复,所以其中的关键要领就在于控制每两个相邻LED亮灭的时间差,以及所有LED灯完成一组亮灭动作后的循环。很久都没有用过小脚丫的朋友可以再回顾一下,这上面有8个LED灯,且低电平点亮。

实现流水灯的方法绝不止一种,在这里我们采用模块化的设计思路,因为模块化设计对于之后构建大型电路系统非常有帮助,并且我们还可以借机温习一下以前学过的内容。

现在我们的目标是每过1秒后点亮下一个LED灯并且熄灭当前灯,且在第8个灯熄灭之后循环整个流程,该如何设计整个模块?我们先上图后解释。

毫无疑问,第一步需要做的就是通过分频来生成一个周期为1秒的时钟信号,不了解时钟分频童鞋可以读一下本系列的第6篇内容。

有了一个1秒钟嘀嗒一次的时钟后,我们还要考虑到循环问题,因为在第8个LED灯熄灭之后还需要再返回到第1个。那么这个时候我们就需要一个计数器,它的作用就是数羊,一只,两只…。..数到第八只后重头再来。数8只羊需要一个3位宽的变量(23=8)。

最后,由于我们是要依次点亮,也就是说8位的输出中每次只有1位是低电平,其余均为高电平(小脚丫LED灯为低电平点亮)。这个特性正好对应了我们之前学过的3-8译码器。

现在我们再来捋一遍。首先,通过分频在小脚丫上生成一个周期为1秒的慢速时钟信号,这个时钟信号传送到计数器之中;这个计数器是3位宽的,因此最多可以计八次慢速时钟的嘀嗒,并且计数每增加1时,都对应着3-8译码器的下一种输出,也就对应着流水灯的下一个状态。

现在我们上代码:

module runningled (clk,led); input clk,rst; output[7:0] led; reg [2:0] cnt ; //定义了一个3位的计数器,输出可以作为3-8译码器的输入 wire clk1hz; //定义一个中间变量,表示分频得到的时钟,用作计数器的触发 //例化分频模块,产生一个1Hz时钟信号 divide #(.WIDTH(24),.N(12000000)) u2 ( //除数为12,000,000,因此频率为1Hz .clk(clk), .rst_n(rst), .clkout(clk1hz) ); //生成计数器,上沿触发并循环计数 always@(posedge clk1hz) cnt 《=《 span=“”》 cnt +1; // 达到位宽上限后可自动溢出清零 //例化3-8译码器模块 decode38 u1 ( .X(cnt), //例化的输入端口连接到cnt,输出端口连接到led .D(led) );endmodule

在第四篇讲译码器的文章里,我们介绍过,如果需要调用/例化子模块时,需要将各子模块与大模块放入同一个工程文件下进行编译。最后我们再来对小脚丫进行管脚配置并烧录就可以了。

对应变量小脚丫管脚FPGA管脚

clkClockJ5

led [0]LED1N15

led [1]LED2N14

led [2]LED3M14

led [3]LED4M12

led [4]LED5L12

led [5]LED6K12

led [6]LED7L11

led [7]LED8K11

如果大家成功地在小脚丫上实现了流水灯的程序,还可以自己玩一个有意思的实验:比如,你可以通过修改程序来提高流水灯的刷新频率,然后看看LED灯的刷新率为多少时你的肉眼无法分别。同时再打开手机的摄像头,也以同样的方法试验一番。结合到你观察的现象,可以自己琢磨并思考一下,说不定能挖掘出更多的知识。

备注一些大伙都知道的常识:我国交流电工频为50Hz,电脑常用显示器的刷新率有60,75和144赫兹。华为Mate30刷新频率为90赫兹,苹果6-12的刷新频率为60赫兹。
编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1655

    文章

    22283

    浏览量

    630228
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663490
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73144

原文标题:基于FPGA的数字电路实验7:流水灯的实现

文章出处:【微信号:xiaojiaoyafpga,微信公众号:电子森林】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    数字电路—24、计数器

    数字电路中,能够记忆输入脉冲个数的电路称为计数器
    发表于 03-26 15:13

    数字电路—23、寄存器

    数字电路中,用来存放二进制数据或代码的电路称为寄存器。
    发表于 03-26 15:11

    数字电路设计中:前端与后端的差异解析

    本文介绍了数字电路设计中“前端”和“后端”的区别。 数字电路设计中“前端”和“后端”整个过程可类比盖一栋大楼:前端好比建筑师在图纸上进行功能和布局的抽象设计,后端则是工程队把图纸变成实体建筑的过程
    的头像 发表于 02-12 10:09 1331次阅读

    数字电路有哪些特点和作用

    在电子技术领域,数字电路具有一系列鲜明的特点,这些特点使其在众多应用场景中发挥关键作用,推动着现代科技不断向前发展。 信号的离散性是数字电路最为突出的特点之一。数字电路所处理的数字信号
    的头像 发表于 02-04 17:17 1570次阅读

    数字电路与控制系统关系

    在现代技术领域,数字电路和控制系统是两个不可或缺的组成部分。数字电路作为电子技术的基础,为控制系统提供了必要的硬件支持。而控制系统则是利用这些硬件来实现对各种机械设备或过程的精确控制。 数字电路
    的头像 发表于 01-24 09:43 1160次阅读

    数字电路在嵌入式系统中的应用

    随着科技的迅猛发展,嵌入式系统已经成为现代电子产品不可或缺的一部分。从简单的家用电器到复杂的工业控制系统,嵌入式系统无处不在。数字电路作为嵌入式系统的核心组成部分,其设计和应用直接影响着系统的性能
    的头像 发表于 01-24 09:41 1148次阅读

    数字电路中常见组件

    数字电路是由一系列电子组件组成的,它们处理的是二进制信号,即电压水平的高低,通常对应于逻辑“0”和“1”。以下是数字电路中常见的一些组件,以及它们的基本功能和特点: 逻辑门(Logic Gates
    的头像 发表于 01-24 09:40 1520次阅读

    数字电路编程语言介绍

    数字电路编程语言是专门为描述和模拟数字电路而设计的编程语言。它们通常具有以下特点: 硬件描述语言(HDL) :大多数数字电路编程语言都是硬件描述语言,如VHDL和Verilog。这些语言允许设计师以
    的头像 发表于 01-24 09:39 1388次阅读

    数字电路故障排除方法

    在现代电子技术中,数字电路扮演着至关重要的角色。它们广泛应用于计算机、通信、工业控制等领域。然而,由于各种原因,数字电路可能会出现故障,影响系统的正常运行。 一、故障排除的基本原则 安全第一: 在
    的头像 发表于 01-24 09:38 1626次阅读

    数字电路与模拟电路的区别

    在电子工程领域,数字电路和模拟电路是两种截然不同的技术。它们在处理信号、设计方法、应用领域以及性能特点上有着明显的差异。 一、信号处理方式 1.1 模拟电路 模拟电路处理的是连续变化的
    的头像 发表于 01-24 09:36 2104次阅读

    模拟电路数字电路的区别

    在现代电子技术中,模拟电路数字电路是两种截然不同的电路类型,它们各自有着独特的特点和应用场景。 一、信号处理方式 模拟电路: 模拟电路处理
    的头像 发表于 01-24 09:22 2044次阅读

    数字电路仿真实现

    电子发烧友网站提供《数字电路仿真实现.pdf》资料免费下载
    发表于 01-21 09:24 2次下载
    <b class='flag-5'>数字电路</b>仿真实现

    卡诺图在数字电路中的应用

    卡诺图(Karnaugh map,简称K-map)在数字电路中具有广泛的应用,它主要用于布尔代数表达式的简化和最小化,从而优化数字电路的设计。以下是卡诺图在数字电路中的具体应用: 一、布尔代数
    的头像 发表于 01-14 17:08 2330次阅读

    低成本单片机方案——触摸流水灯开关控制

    方案触摸流水灯控制方案Thedevelopmentofascheme随着物联网技术的不断发展和智能家居的普及,触摸流水灯控制方案作为一种新型的智能照明控制方式,逐渐成为市场的新宠。PART.1方案
    的头像 发表于 12-26 16:37 1188次阅读
    低成本单片机方案——触摸<b class='flag-5'>流水灯</b>开关控制

    如何使用 Verilog 进行数字电路设计

    使用Verilog进行数字电路设计是一个复杂但有序的过程,它涉及从概念设计到实现、验证和优化的多个阶段。以下是一个基本的步骤指南,帮助你理解如何使用Verilog来设计数字电路: 1. 明确设计需求
    的头像 发表于 12-17 09:47 1754次阅读