基于FPGA的呼吸灯控制电路设计
实验题目:基于 FPGA 的呼吸灯控制电路设计
1. 课程简要信息
课程名称:基于FPGA的系统设计
课程学时:54
项目学时:6
适用专业:电子信息工程、通信工程、电子科学与技术
学生年级:三年级上学期
2. 实验内容与任务(限 500 字,可与“实验过程及要求”合并)
根据在课程中前期对软硬件开发系统的讲解,利用硬件描述语言(VHDL/Verilog HDL)设计一个呼吸灯控制电路,通过 FPGA 器件控制 LED 灯的亮度由暗到亮、由亮到暗逐级变化。
基本要求:
(1) 掌握使用 PWM方式控制LED 灯亮度变化的原理,完成整体方案设计;
(2) 控制 1 路 LED 灯由熄灭状态开始逐渐变为全亮状态,变化等级和时间自定;
(3) 控制 1路 LED灯由全亮状态开始逐渐变为熄灭状态,变化等级和时间自定;
(4) 控制多路 LED灯按照一定顺序亮度依次接力变化,变化等级和时间自定;
(5) 根据设计原理,分模块完成设计,并通过仿真进行验证;
(6) 通过 FPGA开发板实现实物演示,观察实验现象,记录实验结果;
提高要求:
(1) 能够通过按键调节 LED 灯亮度变化的时间并显示;
(2) 能够通过按键调节 LED灯亮度变化的等级并显示;
(3) 增加多路 LED灯的变化模式;
3. 实验过程及要求(限 300 字)
课前准备阶段
(1) 根据设计要求,查找相关资料进行阅读,理解呼吸灯控制的基本原理,并在理论课上进行讲解和讨论;(2) 复习在 Vivado 集成开发环境中从工程建立、代码输入、仿真和下载各阶段的使用方
法;
(3) 根据选择的设计方案对系统进行模块划分,设计系统框图和基本控制流程;
(4) 对各子模块进行设计进行仿真;
(5) 设计顶层模块并进行仿真;
二、 课上实验阶段
(1) 学生在 AX7035开发板上进行调试和功能实现;
(2) 对实验结果进行记录;
(3) 进行演示验收,并回答教师提出的问题;
三、 课后阶段
撰写设计报告,对原理、方案、内容、结果进行总结和讨论;
4. 相关知识及背景(限 150 字)
这是一个运用EDA技术设计日常电子产品中常见功能的实验案例,例如手机上的提醒灯光信号。在实验中需要首先了解呼吸灯工作的基本原理,例如怎样产生 PWM 信号等;其次要学会应用 FPGA实现数字系统开发的基本技能,包括模块的划分、仿真等。
5. 实验环境条件
该实验项目中需要用到 FPGA 开发板,型号为 AX7035,FPGA 芯片为 Xilinx 公司 ARTIX-7 系列的 XC7A35T-2FGG484I。设计工具软件使用的是 Vivado(2019.1)。
6. 教学目标与目的(限 150 字)
在该实验项目的完成过程中引导学生学习基于 FPGA 设计数字系统的方法,使得他们掌握自顶向下的电子系统设计流程,并能熟练应用 EDA 软件中的各项工具。同时培养学生分析设计需求、查阅资料获取解决方案、计算关键参数以及协同配合等能力。
7. 教学设计与实施进程
本实验是学生在掌握了常见组合逻辑电路和时序逻辑电路设计的基础上实现一个较为完整系统的过程,需要在以下几个方面加强对学生的引导:
(1) 通过将实际电子产品中呼吸灯应用的图片和视频展示给学生,让他们对设计的目标有一个直观的认识;(2) 在布置任务时对于设计要求进行说明,让学生知道与之前所学内容的关联以及强调设计中
参数的计算依据;
(3) 对于呼吸灯实现的原理首先给予简单的介绍,然后让学生在课下通过查阅资料提出各自的解决方案并在课上进行讨论,帮助他们进行分析并引导学生画出系统的整体框图,完成功能模块的划分,明确每个模块的接口和实现的功能;
(4) 通过 QQ群与学生进行课下的交流,解答他们在设计过程遇到的问题,对于一些共性问题还会在课堂上进行统一解答;
(5) 通过预设一些问题引导学生在设计时对于参数选取的思考,比如设计的 PWM 信号频率为多少,为什么选择这个频率,过大或过小对于结果有什么影响等。
(6) 在课上引导学生通过仿真验证设计的正确性,帮助他们掌握在调试过程中排错的方法;
(7) 在验收过程中对设计内容进行提问,确保学生是通过自行思考完成的设计;
(8) 对于实验完成较好的作品进行展示,组织学生进行交流,并给予点评;
8. 实验原理及方案
(1) 实验基本原理
呼吸灯是指灯光在芯片的控制之下完成由亮到暗、由暗到亮的逐渐变化,感觉好像是人在呼吸。其广泛应用于手机、电脑等电子产品之上,起到一个通知提醒的作用。
LED 的亮度与流过的电流成正比。驱动 LED 的PWM 信号在一定的频率之下,如果占空比是 0,则 LED 不亮;如果占空比是 $100 %$ ,则 LED 最亮;如果占空比刚好是 $50 %$ ,则 LED 亮度适中。如果我们让占空比从 $0 { \sim } 1 0 0 %$ 变化,再从 $1 0 0 % { \sim } 0$ 不断变化,就可以实现 LED 一呼一吸的效果。
(2) 设计思路
以 $1$ 秒内让 LED 逐渐点亮为例,选择 PWM 信号的频率为 $1 \mathrm { k H } z$ ,每个 PWM 信号的周期为:
$$ T _ { \mathrm { P W M } } = { \frac { 1 } { 1 0 0 0 } } = 1 m s $$
选择 LED 的亮度等级为 100 级,每个亮度等级持续时间相同,则
$$ T _ { \mathrm { S } } = { \frac { 1 } { 1 0 0 } } = 1 0 m s $$
即PWM信号的占空比从0开始每隔 $1 0 \mathrm { m s }$ 增加 $1 %$ ,最大到 $9 9 %$ ,即高电平的时间每隔10ms增加
$$ T _ { \mathrm { { D } } } = { \frac { 1 m s } { 1 0 0 } } = 1 0 \mu s $$
在设计过程中需要使用 3 个计数器 cnt_1ms、cnt_10ms 和 cnt_10us,其中计数器 cnt_10us 对周期是10us(频率为 100kHz)的时钟信号进行计数,计数范围是 $\boldsymbol { 0 } ^ { \sim } 9 9$ ,产生的进位信号使得计数器 cnt_1ms加 1;cnt_1ms 的计数范围是 0~9,产生的进位信号使得计数器 cnt_10ms 加 1;cnt_10ms 的计数范围是 0~99,实现 1 秒的点亮周期,计数过程如图 1 所示:

图 1 计数过程示意图
通过比较 cnt_10us 和 cnt_10ms 计数值的大小来确定 LED 控制信号的高低电平:当cnt_10us<cnt_10ms 时,使得 LED 点亮;当 cnt_10us> $=$ cnt_10ms 时,使得 LED 熄灭,从而使得 PWM信号的占空比逐渐增大,控制信号的产生过程如下举例所示:
cnt_10ms:
| 0 | 2 | 3 | . | 99 |
cnt_1ms:
cnt_10us:

PWM信号:
此时输出的信号周期为 1ms(频率为 1kHz),高电平时间为 $3 0 \mathrm { { u s } }$ ,占空比为 $3 %$ ,cnt_ $\boldsymbol { \mathrm { 1 0 m s } }$ 为 3 时会输出 10 个同样的信号,保持当前的亮度等级维持 $1 0 \mathrm { m s }$ ;当 cnt_ $1 0 \mathrm { m s }$ 为 4 时则会输出 10 个周期为 1ms(频率为1kHz),高电平时间为 40us,占空比为 $4 %$ 的信号。以此类推,从而达到让LED 逐渐增亮的控制效果,对于逐渐熄灭的过程将上述的判断条件颠倒即可实现。
根据上述思路完成核心代码的设计,辅以按键判断、数码管译码显示等模块可完成整体项目的设计工作,项目的整体框图如图 2所示:

图 2 整体框图
在上述设计基础上进一步引导学生了解 PWM 信号的边沿对齐和中心对齐,以及 SPWM 信号产生的方法。
(3) 开发板资源及接口实验中所使用的的开发板如下图 3 所示:

图 3 开发板实物图
其结构示意图如图 4 所示:

图 4 开发板结构示意图
该实验利用开发板上的 FPGA、LED、按键、数码管等资源完成。
9. 实验报告要求
实验报告需要反映以下工作:
1)实验需求分析
2)实现方案论证
3)电路设计与参数选择
4)模块仿真结果
5) 实物验证图片
6)实验结果总结
7)问题及解决方法
8) 心得体会
10.考核要求与方法(限 300 字)
1)实物验收:通过开发板展示设计结果,回答问题。
2)实验质量:对于实验要求完成的符合程度。
3)自主创新:功能构思、方案实现的创新性,自主思考与独立实践能力。
4)实验数据:各模块仿真结果和实物照片。
5)实验报告:实验报告的规范性与完整性。
11.项目特色或创新(可空缺,限 150 字)
该实验项目牵涉的内容是平时使用的电子产品中常见的功能,具有较强的实用性,学生比较感兴趣也容易理解。
设计中能将课程中前期讲解的模块融合进去,让学生循序渐进地掌握数字系统的设计方法。
设计中选取的设计内容对应的实际应用较多,为课程的综合设计选择打下基础。

附件1:实验报告展示
附件 2 实物作品
