fpga_pwm呼吸灯(EP4CE6F17C8)

这篇具有很好参考价值的文章主要介绍了fpga_pwm呼吸灯(EP4CE6F17C8)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、呼吸灯

呼吸灯是指灯光在微电脑的控制之下完成由亮到暗的逐渐变化,使用开发板上的四个led灯实现1s间隔的呼吸灯。

二、代码实现


```c
module pwm_led( 
    input				clk		,
    input				rst_n	,
    
    output reg [3:0]    led
);								 
parameter CNT_US = 6'd49;//50x20=1000ns=1us
parameter CNT_MS = 10'd999;//1usx1000=1ms
parameter CNT_S  = 10'd999;//1msx1000=1s

reg [5:0] cnt_us;
wire      add_cnt_us;
wire      end_cnt_us;

reg [9:0] cnt_ms;
wire      add_cnt_ms;
wire      end_cnt_ms;

reg [9:0] cnt_s;
wire      add_cnt_s;
wire      end_cnt_s;

reg flag;//闪烁标志
always @(posedge clk or negedge rst_n)begin 
   if(!rst_n)begin
        cnt_us <= 0;
    end 
    else if(add_cnt_us)begin 
            if(end_cnt_us)begin 
                cnt_us <= 0;
            end
            else begin 
                cnt_us <= cnt_us + 1;
            end 
    end
   else  begin
       cnt_us <= cnt_us;
    end
end 

assign add_cnt_us = 1'd1;
assign end_cnt_us = add_cnt_us && cnt_us == CNT_US;

always @(posedge clk or negedge rst_n)begin 
   if(!rst_n)begin
        cnt_ms <= 0;
    end 
    else if(add_cnt_ms)begin 
            if(end_cnt_ms)begin 
                cnt_ms <= 0;
            end
            else begin 
                cnt_ms <= cnt_ms + 1;
            end 
    end
   else  begin
       cnt_ms <= cnt_ms;
    end
end 

assign add_cnt_ms = end_cnt_us;
assign end_cnt_ms = add_cnt_ms && cnt_ms == CNT_MS;

always @(posedge clk or negedge rst_n)begin 
   if(!rst_n)begin
        cnt_s <= 0;
    end 
    else if(add_cnt_s)begin 
            if(end_cnt_s)begin 
                cnt_s <= 0;
            end
            else begin 
                cnt_s <= cnt_s + 1;
            end 
    end
   else  begin
       cnt_s <= cnt_s;
    end
end 

assign add_cnt_s = end_cnt_ms;
assign end_cnt_s = add_cnt_s && cnt_s == CNT_S;

always @(posedge clk or negedge rst_n)begin 
    if(!rst_n)begin
        flag <= 1'b0;
    end 
    else if(end_cnt_s)begin 
        flag <= ~flag;//1s取反
    end 
    else begin 
        flag <= flag;
    end 
end

always @(posedge clk or negedge rst_n)begin 
    if(!rst_n)begin
        led <= 4'b0;
    end 
    else begin
        if(flag)begin//亮pwm
            led <= {cnt_s > cnt_ms, cnt_s > cnt_ms,cnt_s > cnt_ms,cnt_s > cnt_ms};
        end 
        else begin//灭pwm
            led <= {cnt_s < cnt_ms, cnt_s < cnt_ms,cnt_s < cnt_ms,cnt_s < cnt_ms};
        end
    end 
end
endmodule



三、引脚分配

fpga_pwm呼吸灯(EP4CE6F17C8),fpga开发文章来源地址https://www.toymoban.com/news/detail-616778.html

到了这里,关于fpga_pwm呼吸灯(EP4CE6F17C8)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【技术分享】Altera FPGA EP4CGX22CF19C8详解:原理图、PCB图纸、源代码及PCIe二次开发驱动和代码全解析

    altera fpga ep4cgx22cf19c8,有原理图,PCB图纸,源代码,PCIe二次开发驱动和代码等。 ID:313000 681436451614 小明子555 《基于Altera FPGA EP4CGX22CF19C8的硬件开发与PCIe驱动开发》 摘要:本文基于Altera FPGA EP4CGX22CF19C8芯片,探讨了硬件开发和PCIe驱动开发的相关技术。首先介绍了EP4CGX22CF19C8芯片

    2024年04月25日
    浏览(35)
  • 【FPGA基础】基于PWM脉宽调制的呼吸灯设计(Vivado)

    软件:Vivado2019.1 硬件:Zynq7010 仿真:Vivado Simulator 众所周知,灯的亮度和加在其两端的电压有关。电压越高,亮度越亮,反之越暗。 于是,设计一个呼吸灯就变得很简单了。让IO的输出电平由低到高,再有高到底有规律的变化,就能达到呼吸效果。 现在问题来了,IO的输出电

    2024年02月07日
    浏览(71)
  • FPGA综合设计实验:基于PWM脉宽调制的呼吸流水灯设计

    目录 一、引言 二、项目准备 1.项目预期目标 2.项目原理及总体实现思路

    2024年02月13日
    浏览(61)
  • PWM 呼吸灯实验

    FPGA实现一个PWM模块(硬件)来控制灯的亮灭。 PWM本质上就是一个输出脉冲的硬件,通过改变一个周期高电平(占空比)的时间来对其他的硬件进行控制,比如电机。 呼吸灯的实现利用了人眼的视觉特性,控制灯亮和暗的间隔时间就形成了对灯亮度的调节。 通过一个N比特的

    2023年04月27日
    浏览(37)
  • PWM的驱动使用(呼吸灯)

    目录 一、初始化步骤 二、PWM所需函数  三、PWM初始化与引脚使用 1、输出比较模式 2、极性的选择 3、初始化: 怎么给结构体赋初始值 4、引脚的使用(引脚定义表) 四、代码(PWM呼吸灯) 1、PWM.c 2、PWM.h 3、main.c 4、模式的选择(复用推挽输出)  5、PWM参数的计算  6、效果

    2024年02月02日
    浏览(40)
  • stm32之PWM呼吸灯

            呼吸灯是灯从渐亮到渐灭周而复始形成的一个效果。由于51没有PWM所以需要定时器模拟PWM才能实现呼吸灯的效果,但是stm32的通用定时器是有PWM模式的,所以不需要再用软件模拟,精准度也高。 本实验用的基于stm32f103C8t6。在PB8引脚上接了一个led, led的另一端接到

    2024年02月05日
    浏览(37)
  • PWM呼吸灯+流水灯设计

    完成任务: 在流水灯基础上加入pwm呼吸灯设计,关于pwm呼吸灯设计可以看博主上一篇博客PWM呼吸灯设计 ,开发板上灯每两秒进行一次切换,每一个的亮灭间隔为一秒。 代码参考: 测试文件: 我们通过modelsim仿真结果如下: 结果展示:

    2024年02月16日
    浏览(39)
  • stm32定时器输出pwm&IO口模拟pwm——呼吸灯

    什么是pwm波?pwm就是脉冲宽度调制,就是占空比可变的脉冲波形,通过改变占空比,输出不同的pwm波,就能实现许多有趣的功能,比如说我们生活中常见的呼吸灯就是通过这样实现的。接下来我们就以呼吸灯为例,学习stm32通过定时器输出pwm波和io口模拟输出pwm波。 控制方式就

    2024年01月18日
    浏览(53)
  • IO口模拟PWM_呼吸灯实验

    呼吸灯简介:由亮到暗逐渐变化,很有节奏感地一起一伏,感觉好像人在呼吸,当手机收到消息,屏幕上的指示灯会渐变,比较显眼,能起到一个通知提醒的作用,其实这就是一个呼吸灯。一般人眼睛对于80Hz以上刷新频率则完全没有闪烁感(因人而异)。频率太小的话看起来

    2024年02月12日
    浏览(51)
  • STM32自学☞PWM驱动LED呼吸灯

    常用函数简单说明 ①用来配置输出比较模块  TIM_OC1Init()     (初始化)             TIM_OC2Init()                               TIM_OC3Init()                               TIM_OC4Init() ②TIM_OCStructInit();用来给输出比较结构体赋一个默认值 ③用来配置强制输出模式  TIM

    2024年02月19日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包