找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2596|回复: 0
收起左侧

FPGA Verilog呼吸灯程序

[复制链接]
ID:471101 发表于 2019-11-8 14:26 | 显示全部楼层 |阅读模式
Verilog程序,实现LED逐渐变亮逐渐变暗功能
  1. /*-----------------------------------------------------------
  2. filename:Breath_led.v
  3. Author: Terry
  4. Data:2019-02-17
  5. Version:0.1
  6. Description: ??????

  7. ----------------------------------------------------------------*/

  8. module Breath_led (
  9.                  input wire sys_clk,
  10.                  input wire reset,
  11.                  output reg [3:0]one_led,
  12.                  output reg o_1Mhz );

  13.         parameter END_CNT1=99,
  14.                    END_CNT2=999,
  15.                     END_CNT3=999;
  16.    reg [6:0] count_1Mhz;  //49
  17.         reg [10:0] count_1Khz; //999
  18.         reg [10:0] count_1hz;  //999   
  19.         reg       flag_1khz;
  20.         reg       flag_state;
  21.       //     0-49???????
  22.                   
  23.    always @(posedge sys_clk or negedge reset )
  24.                     if (reset==0)
  25.                       count_1Mhz <= 0;
  26.                    else if(count_1Mhz==END_CNT1)
  27.                   count_1Mhz <= 0;
  28.             else
  29.                   count_1Mhz <= count_1Mhz+1;     
  30.                   
  31.       //    1MHZ???????? ?????????????????????

  32.         always @(posedge sys_clk or negedge reset )
  33.                     if (reset==0)
  34.                        o_1Mhz <= 0;
  35.                    else if(count_1Mhz==END_CNT1)
  36.                    o_1Mhz <= 1;
  37.             else
  38.                    o_1Mhz <= 0;
  39.                   
  40.       //    ??1MHZ???м??? 1000??

  41.         always @(posedge sys_clk or negedge reset )
  42.                     if (reset==0)
  43.                        count_1Khz <= 0;
  44.                    else if((o_1Mhz==1)&&(count_1Khz==END_CNT2))
  45.                          begin
  46.                    count_1Khz <= 0;
  47.                    flag_1khz <= 1;
  48.                   end
  49.                   
  50.             else if(o_1Mhz==1)
  51.                    count_1Khz <= count_1Khz+1;
  52.             else   
  53.                    begin
  54.                    count_1Khz <= count_1Khz;
  55.                    flag_1khz <= 0;
  56.                    end
  57.    
  58.          //    ??flag_1khz???????м??? 1000??

  59.         always @(posedge sys_clk or negedge reset )
  60.                     if (reset==0)
  61.                           begin
  62.                        count_1hz <= 0;
  63.                                  flag_state <=0;
  64.                           end
  65.                    else if((flag_1khz==1)&&(count_1hz==END_CNT3))  
  66.                    begin                        
  67.                    count_1hz <= 0;
  68.                                                  flag_state <=~flag_state;
  69.                    end
  70.             else if(flag_1khz==1)
  71.                    count_1hz <= count_1hz+1;
  72.             else   
  73.                    begin
  74.                    count_1hz <= count_1hz;
  75.              //      flag_1khz <= 0;         //同一个寄存器在两个always中赋值会出错
  76.                    end   
  77.         // ??????            
  78.       always @(posedge sys_clk or negedge reset )
  79.                     if (reset==0)
  80.                        one_led <= 0;
  81.            else if ((count_1Khz>count_1hz)&&(flag_state==1))
  82.                    one_led <=4'b1111 ;
  83.            else if ((count_1Khz>count_1hz)&&(flag_state==0))
  84.                    one_led <=4'b0000 ;
  85.                      else if ((count_1Khz<=count_1hz)&&(flag_state==1))
  86.                    one_led <=4'b0000;
  87.            else if ((count_1Khz<=count_1hz)&&(flag_state==0))
  88.                    one_led <=4'b1111 ;                                 
  89.            else
  90.                   one_led<=one_led;

  91. endmodule                                                
复制代码
全部资料51hei下载地址:
Breath_led.rar (3.06 MB, 下载次数: 30)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表