呼吸灯 fpga实现

本文介绍了如何使用FPGA来实现呼吸灯效果。通过设置占空比,将2秒时间分为100份,每20毫秒改变一次占空比,达到灯光明暗交替的呼吸效果。文中提供了具体的实现思路,包括定义2个计数器,一个2毫秒计数器和一个2秒计数器,并解释了时序问题可能导致的异常现象。
摘要由CSDN通过智能技术生成

目录

原理

呼吸灯:让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]
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值