原理
呼吸灯:让led灯在固定时间由暗变亮,再由亮变暗,循环往复
原理:假定使led灯在2s内由暗变亮,再由亮变暗,这里采用的办法就是设置占空比,将2s分为100份,每份20ms,在每一个20ms到来,就将占空比加大或缩小1/100,达到呼吸的效果。
实现
代码
这里定义2个计数器
一个2ms计数器,一个2s计数器
2ms计数器周期为100_000次,1/1000就是100次,则每20ms到来,占空比preset_duty加或减100,定义一个flag,每2s翻转一次,由flag控制占空比的加减,在一个2ms内,当2ms计数器小于占空比时则令led灯亮,其余时间不亮,最后实现呼吸灯。
module led2(
input clk ,
input rst_n ,
output led
);
//参数定义
parameter TIME_2S = 100_000_000;
parameter TIME_2MS = 100_000;
//信号定义
//2s
reg [25:0] cnt;
wire add_cnt;
wire end_cnt;
//20ms
reg [19:0]