公众号:FPGA技术小开发
源代码
module breathing_lamp(
input clk,//50kHz
input rst,
output reg lamp
);
reg [15:0] count;//计数器
reg [15:0] inc_dec_duty;//从5%到95%每次10%叠加
reg flag;//递增递减的标志位
//计数器
always @(posedge clk or negedge rst)
begin
if(!rst)//复位
count<=0;
else if(count==16'd5000)//可以根据需要更改
count<=0;
else
count<=count+1;
end
//标志位与占空比
always @(posedge clk or negedge rst)
begin
if(!rst)
begin
flag<=1;
inc_dec_duty<=16'd250;
end
else if(count==16'd5000&&flag==1)
inc_dec_duty<= inc_dec_duty+16'd500;
else if(count==