[FPGA 学习记录] 流水灯

本文详细介绍了如何利用单片机开发板实现LED流水灯实验,包括理论知识、程序设计(涉及Verilog代码编写)、模块框图绘制、波形分析以及实战演练,包括硬件资源、代码编译和仿真验证,最后进行上板验证。
呼吸灯

1 章节导读

在前面的几章节当中,我们实现了我们的机械按键和触摸按键控制我们的 LED 灯的一个小实验。那么在本章节当中,我们来一次 LED 灯小实验的一个进阶,我们利用开发板板载的 4 个 LED 灯完成一个流水灯的实验。

2 理论学习

那么如果大家之前玩过单片机的肯定知道,流水灯实验绝对是一个经典的例程,它的效果是让排列成一排的 LED 灯依次闪亮,那么像流水一样循环不止,看上去特别的舒服。

它的原理就是依次控制每个连接到 LED 灯的 I/O 口的高低电平的变化。

那么我们本次的实验是让我们的 LED 灯依次点亮,点亮间隔是 0.5s,换句话说就是:让排列成一排的 LED 灯每次只点亮一个,每次点亮的时间是 0.5s。那么这样就实现了流水灯的一个效果,而且我们的肉眼还能够分辨出来。

本讲视频的理论知识是比较简单的,我们直接开始实战演练。

3 实战演练

3.1 实验目标

在实战演练部分我们将使用实验工程,设计并实现一个流水灯电路。

3.2 硬件资源

使用板载的 4 个 LED 灯 D6、D7、D8、D9 验证实验工程

image-20231102163803569

3.3 程序设计

那么首先先来搭建一下文件体系

20231102120958_9cvWUIXvEp

然后打开 doc 文件夹建立一个 Visio 文件,绘制模块框图和波形图

OG9v6lJtbY

3.3.1 模块框图

那么首先是我们模块框图的绘制。那么在前边我们已经提到了,我们的 LED 灯每次点亮的时间是 0.5s 那么肯定需要一个计数器来对 0.5s 进行计时,那么需要计数器就肯定需要时钟信号和复位信号

20231102121431_MwtNL779aa

我们的输入信号除了时钟信号和复位信号之外,不需要其他的输入信号了。那么下面就是我们的输出信号

20231102121715_FEyqP71Hwv

因为我们要控制 4 个 LED 灯,所以说输出信号把它的位宽设为 4 位宽;它的每一个比特位控制一个 LED 灯,刚好是控制 4 个 LED 灯。

那么这样,模块框图绘制完成,那么下面开始波形图的绘制。

3.3.2 波形绘制

首先我们还是先将时钟和复位信号的波形画出

20231102121946_fmwrhyONVP

那么时钟信号和复位信号波形绘制完成。

因为我们的 LED 灯依次闪亮的时间间隔是 0.5s 这儿需要一个计数器来计数 0.5s 的时间,我们要声明一个内部的变量。

已知我们的时钟频率是 50 MHz 50\text{MHz} 50MHz 计数时间是 0.5 s 0.5\text{s} 0.5s 那么计数的最大值应该是 M = ( 0.5 s ) / ( 1 / 50 MHz ) = ( 0.5 s ) / ( 2 × 1 0 − 8 s ) = 2.5 × 1 0 7 \text{M} = (0.5\text{s}) / (1/50\text{MHz}) = (0.5\text{s}) / (2\times10^{-8}\text{s}) = 2.5\times10^7 M=(0.5s)/(1/50MHz)=(0.5s)/(2×

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值