实现流程

1:呼吸灯分为两个部分,一个部分是 由亮变暗,

一个部分是 由暗变亮,

2:当由亮变暗,也就是:

首先,占空比100%为零,

然后,占空比99%为零,1%为1;等于占空比100%

然后,占空比98%为零,2%为1;等于占空比100%

。。。。。。。。

。。。。。。。。

然后,占空比2%为零,98%为1;等于占空比100%

然后,占空比1%为零,99%为1;等于占空比100%

3:当由暗变亮,也就是:

首先,占空比100%为1,

然后,占空比99%为1,1%为零;等于占空比100%

然后,占空比98%为1,2%为零;等于占空比100%

。。。。。。。。

。。。。。。。。

然后,占空比2%为1,98%为零;等于占空比100%

然后,占空比1%为1,99%为零;等于占空比100%

功能分解

01)定义:一个完整的呼吸灯时间为2s,也就是,由亮变暗需要1s,由暗变亮需要1s;

02)将    1s分为1000等份,也就是 由亮变暗,需要100次的变化,每次为1ms

03)将1ms分为1000等份,占空比100%过渡到0%,需要1000次的变化,每次为1us;

04)增加hold状态,每次最亮和最暗的时候,保持一端时间,呼吸灯的观感效果感觉更好(个人喜好)

`timescale 1ns / 1ps
//
// Company:
// Engineer:
//
// Create Date: 2019/10/17 10:34:46
// Design Name:
// Module Name: breath_led
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//
module  breath_led(input        wire        clk_in1_p,input     wire        clk_in1_n,input     wire        rst,output      reg     led);//==================//parameter  T_ms = 10'd999;   //10'd22;1sparameter   T_us = 10'd999; //10'd22;//  //1msparameter   T_ns = 10'd99 ; //10'd9; nsparameter   LED_ON = 1'b1 ;parameter   LED_OFF = 1'b0 ;reg               cnt_s;reg   [9:0]       cnt_ms;reg  [9:0]       cnt_us;reg  [6:0]       cnt_ns;wire            clk ;reg [19:0]      cnt_hold ;reg           hold_on ;clk_wiz_0 u_pll(// Clock out ports.clk_out1 (clk ),  // 100Mhz// Status and control signals.reset   (rst),.locked  (  ),// Clock in ports.clk_in1_p (clk_in1_p),.clk_in1_n(clk_in1_n));always @(posedge clk) beginif(rst)    hold_on <= 1'b0 ;else if(&cnt_hold[19:16])hold_on <= 1'b0 ;else if((cnt_ms == T_ms) && (cnt_us == T_us) && (cnt_ns == T_ns)) hold_on <= 1'b1 ;else hold_on <= hold_on ;end always @(posedge clk) beginif(rst)    cnt_hold <= 20'd0 ;else if(hold_on)cnt_hold <= cnt_hold + 20'd1 ;else cnt_hold <= 20'd0 ;end always @(posedge clk) beginif(rst)cnt_ns <= 7'd0 ;else if(cnt_ns == T_ns)cnt_ns <= 7'd0 ;else if(!hold_on)cnt_ns <= cnt_ns + 7'd1 ;  else cnt_ns <= cnt_ns ;  end always @(posedge clk) beginif(rst)cnt_us <= 10'd0 ;else if((cnt_us == T_us) && (cnt_ns == T_ns))cnt_us <= 10'd0 ;else if(cnt_ns == T_ns)cnt_us <= cnt_us + 10'd1 ;else cnt_us <= cnt_us ;    end     always @(posedge clk) beginif(rst)   cnt_ms <= 10'd0 ;else if((cnt_ms == T_ms) && (cnt_us == T_us) && (cnt_ns == T_ns)) cnt_ms <= 10'd0 ;else if((cnt_us == T_us) && (cnt_ns == T_ns))cnt_ms <= cnt_ms + 10'd1 ;else cnt_ms <= cnt_ms ;end     always @(posedge clk) beginif(rst)    cnt_s <= 1'b0 ;else if((cnt_ms == T_ms) && (cnt_us == T_us) && (cnt_ns == T_ns)) cnt_s <= !cnt_s ;else cnt_s <= cnt_s ;end     always @(posedge clk) beginif(rst)led <= LED_ON ;else if(hold_on)led <= !cnt_s ;else if(!cnt_s)begin if(cnt_ms <= cnt_us)led <= LED_ON ;else led <= LED_OFF ;end else begin if(cnt_ms <= cnt_us)led <= LED_OFF ;else led <= LED_ON ;end                 end     endmodule

呼吸灯verilog实现相关推荐

  1. (27)呼吸灯verilog与VHDL编码(学无止境)

    5 呼吸灯verilog与VHDL编码 1 本章目录 1)FPGA简介 2)Verilog简介 3)VHDL简介 4)呼吸灯verilog编码 5)呼吸灯VHDL编码 6)结束语 2 FPGA简介 F ...

  2. 5 呼吸灯verilog与Systemverilog编码

    5 呼吸灯verilog与Systemverilog编码 1 本章目录 1)FPGA简介 2)Verilog简介 3)Systemverilog简介 4)呼吸灯verilog编码 5)呼吸灯Syste ...

  3. 呼吸灯——verilog 实现

    小灯在一段时间里面实现由完全熄灭到完全点亮,再由完全点亮到完全熄灭,整个过程就像呼吸一样.呼吸灯的呼吸效果分为两个过程,一是由完全熄灭到完全点亮,二是由完全点亮到完全熄灭.这里通过PWM的占空比来控制 ...

  4. (5)呼吸灯systemverilog与VHDL编码

    5呼吸灯systemverilog与VHDL编码 1 本章目录 1)FPGA简介 2)SystemVerilog简介 3)VHDL简介 4)呼吸灯verilog编码 5)呼吸灯VHDL编码 6)结束语 ...

  5. 【Verilog HDL 训练】第 10 天(PWM 呼吸灯)

    5月8日 PWM 用verilog实现PWM控制呼吸灯.呼吸周期2秒:1秒逐渐变亮,1秒逐渐变暗.系统时钟24MHz,pwm周期1ms,精度1us. 今天的题目我是第一次见,答案借鉴大神的:Veril ...

  6. (99)Verilog HDL:呼吸灯设计

    (99)Verilog HDL:呼吸灯设计 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL:呼吸灯设计 5)结语 1.2 FPGA简介 FPGA( ...

  7. (5)verilog语言编写呼吸灯

    2.5 verilog语言编写呼吸灯 2.5.1 本节目录 1)本节目录: 2)FPGA简介: 3)verilog简介: 4)verilog语言编写呼吸灯: 5)本节结束. 2.5.2 FPGA简介 ...

  8. Verilog实现呼吸灯效果

    呼吸灯的效果采用PWM调波的形式,即快速的改变每个周期的占空比(一个周期内高电平时间占一个周期时间的比值)来实现点亮到熄灭的效果.示意如下图 而关于整个波形图,用50MHz的晶振,从0开始计数到49则 ...

  9. 呼吸灯(Verilog)

    呼吸灯(Verilog) 产生一个2s的led呼吸灯,呼吸灯原理是调整亮灭的占空比实现的,1s钟由灭到亮,1s由亮到灭, 图中是由灭到亮的占空比. 使用三个计数器描述由灭到亮的过程. 应当注意,在计数 ...

  10. verilog呼吸灯

    上代码: module led(input clk, // 50MHz 输入时钟output reg led // led 输出(低电平有效) );//------------------------ ...

最新文章

  1. MDA模型定义及扩展
  2. html语言文字闪烁,html+CSS3实现的文字闪烁特效
  3. ReSimNet: drug response similarity prediction using Siamese neural networks
  4. linux dd 截文件,Linux使用dd命令快速生成大文件(转)
  5. 3 种发布策略,解决 K8s 中快速交付应用的难题
  6. Linux线程(四)
  7. 一个超轻量级工作流引擎:Workflow-Core
  8. 【CodeForces - 124D】Squares (旋转坐标系,计算几何,思维)
  9. font awesome java_java awt实现 fontawesome转png
  10. str_replace中的匹配空白符,必须用双引号
  11. 计算机操作系统笔记(二)
  12. 无人机底层开发-MPU6050六轴传感器+磁力计初始化
  13. java 问题 无法解析类型 java.lang.CharSequence。从必需的 .class 文件间接引用了它
  14. 《Mastering OpenCV》--3.Markless AR.无标识式AR (2)
  15. 星加坡php开发_PHP 中文简繁互转代码 完美支持大陆、香港、台湾及新加坡
  16. 一个80后神话的倒掉----郑立
  17. Unity的UGUI用TexturePacker全自动打图集,包括九宫格切图信息
  18. python工具方法 10 h5py批量写入文件、读取文件,支持任意维度的数据
  19. 巴菲特在University of Florida商学院的一次演讲
  20. Python读写文件rb,wb,ab模式

热门文章

  1. jsp定义java方法_jsp中java成员变量、方法的声明以及使用
  2. es提示 MaxNewSize (1048576k) is equal to or greater than the entire heap (1048576k). A new max genera
  3. 无法安装驱动程序此计算机上不存在,在win7中安装打印机时,如果“找不到打印机驱动程序包所需的核心驱动程序包”怎么办?...
  4. windows10开机时出现你的设备遇到问题,需要重启
  5. USB_PD_R3_0 V1.1 PD协议 协议层 中文翻译
  6. 文献阅读: 基因组选择技术在农业动物育种中的应用
  7. ubuntu使用教程
  8. 小米wifi显示无网络连接到服务器,小米路由器wifi连接上不能上网怎么办?
  9. 离谱!程序员业余时间开发的项目,版权也属于公司的?
  10. Excel中输入整数却总是显示小数,如何调整?