verilog呼吸灯代码

 前言

        呼吸灯也就是PWM调光,这个相比于网上其他大部分代码内容少一点,但是功能还是可以实现的。代码是在别人的基础上修改的。我自己也是迷迷糊糊的,参考链接:https://www.cnblogs.com/hechengfei/p/4106538.html

第一版

module led(LED,CLK);
output reg LED = 1;
input CLK;//50Mhz
// 时钟参数化
parameter CLK_50M = 31'd50_000_000;
// 时间参数化
parameter UP_TIME = 1;
parameter T1 = CLK_50M / 100 * UP_TIME;      // T1=UP_TIME*(1s/100)=UP_TIME*10us,时间改变占空比,时间内 有100个 不同占空比的脉冲。T1表示每个占空比的周期,也就是cunt2的最大值。   
parameter high_TZL  = T1 / 100;     // 高电平时间有1000个等级,也就是cut1的最大值。               
reg [30:0] cut1=high_TZL;//变亮时间计数变量,T1 = 1/1000/100s
reg [30:0] cut0=0;//子周期内的高电平计数变量,增量是1/50 000 000s,最大值是T1
reg flag=1;//1变亮,0变暗            
always @(posedge CLK)
begin
        if(cut0<cut1) begin  LED<=1; cut0<=cut0+1; end
        else if(cut0< T1) begin  LED<=0;cut0<=cut0+1; end
        else  
        begin 
          cut0<=0; 
          if(flag==1)  begin    cut1<=cut1+high_TZL; 
                       if(cut1>=T1-high_TZL) begin cut1<=cut1; flag=~flag; end end
          else begin cut1<=cut1-high_TZL; 
                       if(cut1<high_TZL) begin cut1<=high_TZL; flag=~flag; end end
        end
end
endmodule

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_1615549892

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值