在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于FPGA的呼吸燈設計

CHANBAEK ? 來源:小小研究生 ? 作者: xxyjs2020 ? 2023-06-27 17:39 ? 次閱讀

設計規劃

呼吸燈的效果是LED燈在一段時間內從完全熄滅的狀態逐漸變到最亮,再在同樣的時間段內逐漸達到完全熄滅的狀態。這里我們需要實現1s內實現從滅到亮,1s內從亮到滅。

LED的明亮有兩種方式,第一種是在安全范圍內給LED燈不同的供電電壓可以控制明滅;第二種是通過控制PWM的 占空比 ,同一時間段內供給LED燈一個脈沖信號的低電平持續時間越長,LED燈越亮。我們取n個相同的時間段,讓低電平的持續時間按照相等的時間間隔逐漸增多,led燈就會越來越亮了。

首先我們將1s分為1000個時間段,每段1ms。再將1ms分為1000個時間小段,每段1us。第一個1ms內亮0us(滅),并在第二個1ms內亮1us,...,在第1000個1ms內亮999us。劃分的等級越多,看上去效果越好,但是人眼分辨率有限,大于這個分辨率就看起來幾乎沒有差異。

我們至少需要三個計數器,用來計時1s,1ms,1us。cnt_1us需要從0計數到49,不復位就計數,計滿就清零。cnt_1ms完全沒必要重新產生,每當cnt_1ms計數到999且cnt_1us計數到49,cnt_1ms就清零。cnt_1s同理在cnt_1ms計數到999且cnt_1us計數到49時就清零。

圖片

led_out要在不同時間段低電平持續時長慢慢增加,需要一個小技巧。觀察上圖,LED為低電平時,cnt_1s是0時,cnt_1ms是1-999;cnt_1s是1時,cnt_1ms是2-999...

圖片

LED燈從亮到滅是相反的過程,LED燈為高電平時,cnt_1s>cnt_1ms。

區分從滅到亮和從亮到滅,可以使用一個電平標志信號(使能)cnt_1s_en。cnt_1s_en為低電平時實現呼吸燈從滅到亮的過程,cnt_1s_en為高的時候實現呼吸燈從亮到滅的過程,cnt_1s清零時cnt_1s_en取反。

圖片

圖片

編寫代碼

module breath_led
#(
parameter CNT_1US_MAX = 6'd49 ,
parameter CNT_1MS_MAX = 10'd999 ,
parameter CNT_1S_MAX = 10'd999
)
(
input wire sys_clk , 
input wire sys_rst_n , 
output reg led_out 
 );


 //reg define
 reg [5:0] cnt_1us ;
 reg [9:0] cnt_1ms ;
 reg [9:0] cnt_1s ;
 reg cnt_1s_en ;


 //cnt_1us:1us計數器
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 cnt_1us <= 6'b0;
 else if(cnt_1us == CNT_1US_MAX)
 cnt_1us <= 6'b0;
 else
 cnt_1us <= cnt_1us + 1'b1;


 //cnt_1ms:1ms計數器
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 cnt_1ms <= 10'b0;
 else if(cnt_1ms == CNT_1MS_MAX && cnt_1us == CNT_1US_MAX)
 cnt_1ms <= 10'b0;
 else if(cnt_1us == CNT_1US_MAX)
 cnt_1ms <= cnt_1ms + 1'b1;


 //cnt_1s:1s計數器
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 cnt_1s <= 10'b0;
 else if(cnt_1s == CNT_1S_MAX && cnt_1ms == CNT_1MS_MAX
 && cnt_1us == CNT_1US_MAX)
 cnt_1s <= 10'b0;
 else if(cnt_1ms == CNT_1MS_MAX && cnt_1us == CNT_1US_MAX)
 cnt_1s <= cnt_1s + 1'b1;


 //cnt_1s_en:1s計數器標志信號
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 cnt_1s_en <= 1'b0;
 else if(cnt_1s == CNT_1S_MAX && cnt_1ms == CNT_1MS_MAX
 && cnt_1us == CNT_1US_MAX)
 cnt_1s_en <= ~cnt_1s_en;


 //led_out:輸出信號連接到外部的led燈
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 led_out <= 1'b0;
 else if((cnt_1s_en == 1'b1 && cnt_1ms < cnt_1s)||
 (cnt_1s_en == 1'b0 && cnt_1ms > cnt_1s))
 led_out <= 1'b0;
 else
 led_out <= 1'b1;
 endmodule

參數定義,輸入輸出定義,中間信號(計數器和使能信號)定義都是很熟悉的。

1us計數器 :復位有效時拉低電平;計滿時清零;其他情況+1。

1ms計數器 :復位有效時拉低電平;計滿時清零(計滿條件是達到CNT_1MS_MAX和CNT_1US_MAX);達到CNT_1US_MAX時+1。

1s計數器 :復位有效時拉低電平;計滿時清零(計滿條件是達到CNT_1S_MAX,CNT_1MS_MAX和CNT_1US_MAX);達到CNT_1MS_MAX且CNT_1US_MAX時+1。

1s使能 :復位有效時拉低電平,計滿1s時取反(達到CNT_1S_MAX,CNT_1MS_MAX和CNT_1US_MAX,和1s計數器的清零條件一樣)。

led_out :復位有效時拉低電平,使能為高電平且cnt_1mscnt_1s時led_out拉低,反之拉高。

圖片

編寫testbench

`timescale 1ns/1ns
module tb_breath_led();
//wire define
wire led_out ;
//reg define
reg sys_clk ;
reg sys_rst_n ;


 //初始化系統時鐘、全局復位
 initial begin
 sys_clk = 1'b1;
 sys_rst_n <= 1'b0;
 #20
 sys_rst_n <= 1'b1;
 end


//sys_clk:模擬系統時鐘,每10ns電平翻轉一次,周期為20ns,頻率為50MHz
 always #10 sys_clk = ~sys_clk;


//-------------------- breath_led_inst --------------------
 breath_led
 #(
 .CNT_1US_MAX(6'd4 ),
 .CNT_1MS_MAX(10'd9 ),
 .CNT_1S_MAX (10'd9 )
 )
 breath_led_inst
 (
 .sys_clk (sys_clk ), 
 .sys_rst_n (sys_rst_n ), 
 .led_out (led_out ) 
 );


 endmodule

信號定義,初始化,規定時鐘頻率,參數設置(參數設置得小一點節省時間),實例化

對比波形

cnt_1ns,cnt_1ms,cnt_1s,cnt_1s_en是中間信號,查看波形需要手動添加

圖片

將要查看的信號拖進波形圖中

圖片

我們可以觀察到,計數器的最大值分別為4,9,9,與我們在testbench中設置的參數一致。輸出信號的波形也達到了預期效果,先由滅到亮,再由亮到滅

分配管腳

圖片

全編譯后上板驗證

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21797

    瀏覽量

    606019
  • led燈
    +關注

    關注

    22

    文章

    1592

    瀏覽量

    108416
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5198

    瀏覽量

    214889
  • 脈沖信號
    +關注

    關注

    6

    文章

    400

    瀏覽量

    37077
  • 呼吸燈
    +關注

    關注

    10

    文章

    111

    瀏覽量

    42810
收藏 人收藏

    評論

    相關推薦

    #硬聲創作季 #FPGA 明德揚 FPGA至簡設計原理與應用52_1_PWM呼吸(PPT講解)-3

    fpga呼吸
    水管工
    發布于 :2022年09月20日 12:30:33

    基于CPLD/FPGA呼吸效果實現(附全部verilog源碼)(by 大飛)

    你的CPLD/FPGA里吧,瞬間實現你盼望已久的呼吸效果,賦予她(LED)生命的氣息! 2. 曬干貨例化時,僅需要按您的需求修改代碼中帶★號的參數ps. 只有一處需要修改哦親
    發表于 11-19 22:58

    xilinx ISE 中異步FIFO ip的使用、仿真及各信號的討論(圖文教程)

    傳輸協議b2s (附全部verilog源碼)2.脈沖信號正常與否的判斷(附全部verilog源碼)3.基于CPLD/FPGA呼吸效果實現(附全部verilog源碼)4.“同頻異寬”脈沖的選擇(附
    發表于 07-16 15:09

    霧盈FPGA筆記之(一):基于FPGA呼吸簡單實驗程序(Verilog)

    ` 本帖最后由 西疆木 于 2016-8-29 10:37 編輯 基于FPGA呼吸簡單實驗程序(Verilog)霧盈 2016-7-26 1.呼吸
    發表于 07-28 19:03

    FPGA呼吸

    基于FPGA呼吸一、目標1、占空比(pwm)的理解。2、計數器的應用。3、分頻的應用。二、要求四個LED從暗逐漸變亮,然后從亮逐漸變暗形成呼吸
    發表于 10-26 21:01

    基于CPLD/FPGA呼吸效果實現_呼吸源碼_明德揚資料

    特效呼吸1功能概述顧名思義,特效呼吸是指在電路控制之下,LED燈光完成由滅到亮、由亮到滅的逐漸變化,感覺像是在呼吸一樣。最原始的表現形式
    發表于 08-02 18:03

    至芯昭哥帶你學FPGAFPGA_100天之旅_呼吸

    至芯昭哥帶你學FPGAFPGA_100天之旅_呼吸
    發表于 08-22 09:54

    呼吸有什么用_華為呼吸在哪設置

    本文開始介紹了呼吸的概念和呼吸的作用,其次介紹了呼吸電路以及修改手機
    發表于 03-29 08:29 ?7.4w次閱讀
    <b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>有什么用_華為<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>在哪設置

    基于FPGA呼吸設計

    呼吸主要是利用PWM的方式,在固定的頻率下,通過調整占空比的方式來控制LED的亮度的變化,從而實現由暗漸亮再由亮漸暗的過程。
    的頭像 發表于 09-27 11:43 ?2194次閱讀
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>設計

    仿真測試:呼吸PWM

    呼吸的效果是逐漸由暗變亮再逐漸由亮變暗,FPGA的引腳電壓只有“0”和“1”兩個等級。
    的頭像 發表于 10-10 14:52 ?1342次閱讀
    仿真測試:<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>PWM

    基于FPGA呼吸設計(附源工程)

    設計背景 呼吸廣泛應用于手機之上,并成為各大品牌新款手機的賣點之一。如果手機里面有未處理的通知,比如說未接來電,未查收的短信等等,呼吸就會在控制之下完成由亮到暗的逐漸變化,感覺好像
    的頭像 發表于 01-16 10:09 ?101次閱讀
    基于<b class='flag-5'>FPGA</b>的<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>設計(附源工程)
    主站蜘蛛池模板: 久久久久久综合 | 一本到卡二卡三卡免费高 | 五月天婷婷网亚洲综合在线 | 免费日韩网站 | 国产亚洲综合色就色 | 可以看黄色的网站 | 天天爽夜夜爽每晚高澡 | 欧美色图中文字幕 | 九九全国免费视频 | 国产黄色片一级 | 天天干天天拍天天操 | 男人免费看片 | 亚洲xxx视频| 四虎精品视频 | 日韩福利网站 | 午夜精品福利视频 | 乱妇伦小说 | 欧美高清激情毛片 | 日本色图在线 | 色偷偷888欧美精品久久久 | 四虎永久免费网站入口2020 | 成人国产精品高清在线观看 | 亚洲高清一区二区三区四区 | 欧美午夜性春猛xxxx | 日本黄色www| 免费看美女午夜大片 | 5566在线观看| 免费看的一级毛片 | 免费人成年激情视频在线观看 | 欧美精品久久久久久久小说 | 天天擦天天干 | 国产欧美精品午夜在线播放 | 亚洲韩国欧美一区二区三区 | 人人澡人人添 | 色在线网站 | 午夜三级国产精品理论三级 | 久久综合九色综合欧洲色 | swag系列国产精品 | 奇米四色777亚洲图 奇米影视四色首页手机在线 | 岛国毛片在线观看 | 丁香婷婷久久 |