FPGA呼吸灯

1、呼吸灯。
控制一个LED灯在1s内从灭慢慢到亮,下一秒内从亮慢慢到灭。循环往复。
提示:LED的亮度可以由点亮时间与熄灭时间长度来控制。比如一个毫秒里,亮0us,灭1000us,下一毫秒亮1us灭999us,下一下毫秒里,亮2us灭998us,在下一毫秒里,亮3us灭997us,依次进行下去,直到1000us亮,0us灭。

`timescale 1ns / 1ps
module breathing_led(
	input 	wire	clk,//50M始终
	input   wire    nrst,
	output 	reg 	[7:0] 	led
    );
    localparam   T_1ms = 50_000;  //1ms  50_000个周期
    localparam   T_cycle = 1000;
   
    reg		[9:0]	dis_cnt  =  0; 	//灯亮的时间 计数单位
    reg		[25:0]	cnt  =  0;      //计数
    reg             flag = 0;       //标记 向前  翻转
    always @(posedge clk or negedge nrst ) begin
    	if(~nrst) begin
    		cnt <= 0;
    		dis_cnt <= 0;
    		led <= 8'b0000_0000;
    	end
    	else	if(cnt == T_1ms -1 ) begin
    				cnt <= 0;    				
    				if(dis_cnt == T_cycle) begin
    					dis_cnt <= 0;
    					flag <= ~flag;
 
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值