呼吸灯设计
AI summary
呼吸灯设计涉及LED亮度调节,通过物理方法和PWM(脉冲宽度调制)实现。设计需求为使用ZX-1板卡实现4秒周期的呼吸灯功能,测试结果符合设计要求。文中还讨论了设计过程、测试方法及后续练习,包括闪光灯和呼吸灯功能的实现分析。
Last edited time
Sep 24, 2024 01:29 PM
Last edited by
Tags
Led Control
Pwm Technology
Circuit Design
一:呼吸灯背景
在电子设备中,比如手机未知消息/未接来电,往往会采用呼吸灯作为提醒作用。
二:呼吸灯过程分析
- 呼吸灯过程
吸过程:LED不亮到最亮 呼过程:LED最亮到不亮
呼吸过程:其实就是调节LED亮度
- 调节LED亮度方式分析
- 物理上采用给LED串联一个滑动变阻器,调节电阻器的阻值,从而来改变经过LED的电流,控制LED的亮度(电流在LED可承受范围内)。
- PWM(脉冲宽度调制)
主要对模拟信号进行数字化编码。
电流信号属于模拟量,故PWM可以使用。
改变LED的亮度实则使用PWM控制时就是调整方波占空比(占空比:高电平持续时间占整个周期比值)。
PWM调制频率:LED调节(500HZ~10KHZ)。
PWM实现:采用多个高精度计数器实现。
三:ZX-1板卡原理图
LED低电平点亮,高电平熄灭
独立按键作为复位信号,低电平代表闭合,的高电平代表断开
四:设计需求
使用ZX-1板卡上的一个LED实现呼吸灯功能,呼吸整个周期时间为4s,呼2s,吸2s。
五:设计分析
吸持续时间2s:假设LED从不亮到最亮分为1000次,每一次持续时间2s/1000=2ms;
那么每一小段(图中红色递增时间)持续时间为2ms/1000=2us
PWM调试频率:500HZ
根据板卡实际情况出发:板载晶振时钟50MHZ(T=20ns)。
PWM实现:采用多个高精度计数器实现。
通过分析:需要设置3个计数器来实现(2us/2ms/2s)
cnt_100 : 2us/20ns=100
cnt_2us : 2ms/2us=1000
cnt_2ms : 2s/2ms=1000
PWM产生:采用cnt_2ms和cnt_2us计数器来进行比较,如果cnt_2ms大于cnt_2us计数器,PWM输出为高电平,反之为低电平。
在第一个2ms中,PWM全部为低,在第二个2ms中,PWM只有一个2us高电平,
在第三个2ms中,PWM只有2个2us高电平,在第四个2ms中,PWM只有3个2us高电平…依次类推,在最后一个2ms中,PWM持续2ms-2us的高电平。
在可以实现呼/吸基础之上,讨论呼吸灯整个功能。
六:设计测试
呼吸灯功能测试结果和设计一致。
七:下板验证
- 安装USB-Blaster驱动
D:\altera\quartus\drivers\usb-blaster
- 分配管脚
查看EP4CE10F17C8N.tcl
- 全编译(CTRL+L)
为了生成下载配置文件.sof文件
- 下载程序到板卡
拓展:下载.sof文件到FPGA芯片上,断电程序会丢失。
可以选择将.sof文件下载在片外Flash(非易失性存储器:掉电数据不丢失,上电数据自读取)上;这种方式称为程序固化。
固化文件类型一般为.jic文件
八:练习
- 完成上课内容(理论+实现)
- 利用4个LED完成闪光和呼吸功能。
要求:
- 1和3LED完成闪光灯功能,闪光灯间隔时间为2s(2s全亮,2s全灭,周期4s)
- 2和4LED完成呼吸灯功能,呼吸周期4s(2s呼,2s吸)
练习2分享:
- 闪光灯实现分析
要求亮2s,灭2s,闪光周期4s。
T=2s, F=1/T=1/2s=0.5HZ
分频器:50MHZ~0.5HZ
CNT_MAX=Fclk/Fout(DUTY:50%)
- 闪光灯架构
- 整体设计架构
- 仿真测试结果
- 运行脚本文件使其管脚自动分配
EP4CE10F17C8N.tcl文件
适用于管脚比较多(一般10个以上)。
- 在线逻辑分析仪使用(板级调试工具)
- 采样定理(奈奎斯特定理)
- 采样深度
- 触发条件
Quartus II:SignalTap II Vivado:ila
F采 >= 2Fmax
其实也就是采样点个数。
可以设置采样点少/多,取决于片内存储器资源。一般合适即可。
电平触发(高电平/低电平),上升沿/下降沿触发,双边沿触发…
一般来说,简单的设计可以不用设置触发条件,如需设置,具体设计具体对待。
Loading...