0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

基于FPGA的流水燈設(shè)計

CHANBAEK ? 來源:小小研究生 ? 作者:xxyjs2020 ? 2023-06-23 16:54 ? 次閱讀

設(shè)計規(guī)劃

依次點亮4個LED燈,實現(xiàn)流水燈的效果,兩燈之間點亮間隔為0.5s,LED燈一次點亮持續(xù)時間0.5s。

LED燈低電平點亮,因此流水燈應(yīng)該是1110-1101-1011-0111-1110-1101-...

圖片

首先是時鐘信號、復(fù)位信號,由于需要計時,我們還要產(chǎn)生一個計數(shù)器cnt。然后還需要產(chǎn)生一個cnt_flag脈沖標(biāo)志信號作為流水切換的標(biāo)志,每當(dāng)計數(shù)器計數(shù)到24_999_998時拉高并只產(chǎn)生一個時鐘的高電平(高電平出現(xiàn)LED狀態(tài)就開始切換)。最重要的是,流水燈的實現(xiàn)是通過左移操作,無法直接通過led_out的左移實現(xiàn),因此需要定義一個led_out_reg(led_out從1110左移一次是1100,會有兩個燈點亮,而led_out_reg是LED的位反0001,左移一次是0010,取反后led_out是1101,就能實現(xiàn)流水的需求)。

編寫代碼

module water_led
#(
parameter CNT_MAX = 25'd24_999_999
)
(
input wire sys_clk , 
input wire sys_rst_n , 
output wire [3:0] led_out 
 );


 //reg define
 reg [24:0] cnt ;
 reg cnt_flag ;
 reg [3:0] led_out_reg ;


 //cnt:計數(shù)器計數(shù)500ms
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 cnt <= 25'b0;
 else if(cnt == CNT_MAX)
 cnt <= 25'b0;
 else
 cnt <= cnt + 1'b1;


 //cnt_flag:計數(shù)器計數(shù)滿500ms標(biāo)志信號
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 cnt_flag <= 1'b0;
 else if(cnt == CNT_MAX - 1)
 cnt_flag <= 1'b1;
 else
 cnt_flag <= 1'b0;


 //led_out_reg:led循環(huán)流水
 always@(posedge sys_clk or negedge sys_rst_n)
 if(sys_rst_n == 1'b0)
 led_out_reg <= 4'b0001;
 else if(led_out_reg == 4'b1000 && cnt_flag == 1'b1)
 led_out_reg <= 4'b0001;
 else if(cnt_flag == 1'b1)
 led_out_reg <= led_out_reg < < 1'b1; //左移
 assign led_out = ~led_out_reg;
 endmodule

三個中間信號的定義:cnt,cnt_flag,led_out_reg。

1、cnt:計數(shù)器變化的條件是時鐘上升和復(fù)位有效(復(fù)位下降),復(fù)位信號有效時cnt變?yōu)榈碗娖剑挥嫕M時清零;其他時刻+1。

2、cnt_flag:計數(shù)器計滿的脈沖標(biāo)志信號,變化條件和cnt一樣,復(fù)位有效時變?yōu)榈碗娖?;計滿前一個時鐘拉高;其他時刻都為0,這樣就能成為一個脈沖信號,并在計滿前拉高,標(biāo)志led要左移。

3、led_out_reg:暫存led燈狀態(tài),可以直接對這個信號進行操作來控制LED燈。復(fù)位和初始時是最右邊的燈亮,反推出led_out_reg=0001;當(dāng)最左邊的燈亮且計滿標(biāo)志信號拉高時,令最右邊的燈亮led_out_reg=0001;當(dāng)計滿標(biāo)志信號拉高時,led_out_reg左移。而控制LED電平的輸出信號led_out是led_out_reg的按位取反。

image.png

編寫testbench

`timescale 1ns/1ns
module tb_water_led();
//wire define
wire [3:0] led_out ;
 //reg define
 reg sys_clk ;
 reg sys_rst_n ;
 //初始化系統(tǒng)時鐘、全局復(fù)位
 initial begin
 sys_clk = 1'b1;
 sys_rst_n <= 1'b0;
 #20
 sys_rst_n <= 1'b1;
 end


 //sys_clk:模擬系統(tǒng)時鐘,每10ns電平翻轉(zhuǎn)一次,周期為20ns,頻率為50MHz
 always #10 sys_clk = ~sys_clk;
 //-------------------- water_led_inst --------------------
 water_led
 #(
 .CNT_MAX (25'd24)
 )
 water_led_inst
 (
 .sys_clk (sys_clk ), //input sys_clk
 .sys_rst_n (sys_rst_n ), //input sys_rst_n
 .led_out (led_out ) //output [3:0] led_out
 );
 endmodule

testbench代碼是非常熟悉的,信號定義,初始化,實例化。

對比波形

圖片

圖片

1110-1101-1011-0111分別對應(yīng)了十六進制的e,d,b,7

由于在testbench模塊,為了節(jié)省時間將CNT_MAX設(shè)置成24,因此24個時鐘脈沖LED的狀態(tài)就會發(fā)生變化,波形和我們預(yù)想的一致。

分配管腳

圖片

圖片

圖片

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598937
  • led燈
    +關(guān)注

    關(guān)注

    22

    文章

    1588

    瀏覽量

    107399
  • 計數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2241

    瀏覽量

    93975
  • 流水燈
    +關(guān)注

    關(guān)注

    21

    文章

    432

    瀏覽量

    59470
  • 時鐘信號
    +關(guān)注

    關(guān)注

    4

    文章

    434

    瀏覽量

    28394
收藏 人收藏

    評論

    相關(guān)推薦

    基于Verilog FPGA 流水燈設(shè)計

    流水廣告燈主要應(yīng)用于LED燈光控制。通過程序控制LED的亮和滅, 多個LED燈組成一個陣列,依次逐個點亮的時候像流水一樣,所以叫流水燈。由于其形成美觀大方的視覺效果,因此廣泛應(yīng)用于店鋪招牌、廣告、大型建筑夜間裝飾、景觀裝飾等
    發(fā)表于 08-09 15:14 ?1.7w次閱讀
    基于Verilog <b class='flag-5'>FPGA</b> <b class='flag-5'>流水燈</b>設(shè)計

    FPGA流水燈的設(shè)計流程

    完成項目需求分析、電路圖分析以及方案設(shè)計后,接下來可以進行FPGA設(shè)計了。如果用戶的計算機已安裝云源軟件GOWIN FPGA Designer,雙擊桌面上的程序圖標(biāo),即可打開GOWIN FPGA
    發(fā)表于 10-13 14:36 ?1309次閱讀

    基于FPGA的音樂流水燈控制系統(tǒng)設(shè)計

    介紹一種基于 FPGA的音樂流水燈控制器, 采用硬件描述語言對其進行描述, 分別實現(xiàn)樂曲的播放和同步流水燈的閃爍。并構(gòu)建一個 SOPC系統(tǒng), 集成 LCD模塊來顯示實時音樂的音階值和頻率強度
    發(fā)表于 10-20 17:21 ?4402次閱讀

    #硬聲創(chuàng)作季 實驗2 流水燈實驗

    fpga流水燈
    Mr_haohao
    發(fā)布于 :2022年08月29日 20:05:15

    #硬聲創(chuàng)作季 FPGA技術(shù)應(yīng)用:流水燈設(shè)計

    fpga流水燈
    Mr_haohao
    發(fā)布于 :2022年10月19日 17:23:48

    #硬聲創(chuàng)作季 數(shù)字設(shè)計FPGA應(yīng)用:51.1流水燈的關(guān)鍵設(shè)計

    fpga流水燈數(shù)字設(shè)計
    Mr_haohao
    發(fā)布于 :2022年10月24日 03:10:25

    #硬聲創(chuàng)作季 數(shù)字設(shè)計FPGA應(yīng)用:51.2流水燈工程實現(xiàn)與測試

    fpga流水燈數(shù)字設(shè)計
    Mr_haohao
    發(fā)布于 :2022年10月24日 03:11:14

    FPGA流水燈實驗

    FPGA初級實驗 verilog let's start (流水燈實驗)module countpro(sys_clk,rst_n,led); //接口定義input sys_clk,rst_n
    發(fā)表于 02-08 16:28

    求分享一個用simulink編的altera FPGA流水燈的simulink程序

    有大神能給我分享一個用simulink編的altera FPGA流水燈的simulink程序嗎?我想學(xué)通過simulink來給FPGA編程,但是苦于沒有教程或案例,求好心人給我分享一個程序吧,供我研究研究,感激不盡[qq]91
    發(fā)表于 08-05 11:06

    基于Verilog FPGA 流水燈設(shè)計_流水燈源碼_明德?lián)P資料

    LED流水廣告燈工程說明在本案例中,使用常用的verilog語言完成該程序,設(shè)計并控制8個燈的花式或循環(huán)點亮;即上電后,實現(xiàn)左移和右移交替的流水燈。案例補充說明在FPGA電路設(shè)計中,盡管流水燈
    發(fā)表于 08-02 17:56

    數(shù)字設(shè)計FPGA應(yīng)用:流水燈的設(shè)計

    LED流水燈這篇采用最簡單的就是點亮一個燈延時一定時間,然后關(guān)閉,接下去點亮下一個燈,依次類推形成流水燈的效果
    的頭像 發(fā)表于 12-04 07:09 ?3494次閱讀
    數(shù)字設(shè)計<b class='flag-5'>FPGA</b>應(yīng)用:<b class='flag-5'>流水燈</b>的設(shè)計

    使用FPGA實現(xiàn)流水燈的詳細資料說明

    本文檔的主要內(nèi)容詳細介紹的是使用FPGA實現(xiàn)流水燈的詳細資料說明。流水燈模塊對于發(fā)展商而言,動土儀式無疑是最重要的任務(wù)。為此,流水燈實驗作為低級建模II的動土儀式再適合不過了。廢話少說
    發(fā)表于 07-11 16:45 ?27次下載
    使用<b class='flag-5'>FPGA</b>實現(xiàn)<b class='flag-5'>流水燈</b>的詳細資料說明

    使用FPGA實現(xiàn)流水燈設(shè)計的資料合集

    本文檔的主要內(nèi)容詳細介紹的是使用FPGA實現(xiàn)流水燈設(shè)計的資料合集免費下載。
    發(fā)表于 01-18 08:00 ?30次下載

    如何通過FPGA實現(xiàn)一個流水燈?

    流水燈,有時候也叫跑馬燈,是一個簡單、有趣又經(jīng)典的實驗,基本所有單片機的玩家們在初期學(xué)習(xí)的階段都做過。本次我們也來介紹一下如何通過小腳丫FPGA實現(xiàn)一個流水燈。
    的頭像 發(fā)表于 06-06 10:42 ?7985次閱讀
    如何通過<b class='flag-5'>FPGA</b>實現(xiàn)一個<b class='flag-5'>流水燈</b>?

    基于FPGA開發(fā)板流水燈的設(shè)計實現(xiàn)

    流水燈,有時候也叫跑馬燈,是一個簡單、有趣又經(jīng)典的實驗,基本所有單片機的玩家們在初期學(xué)習(xí)的階段都做過。本次我們也來介紹一下如何通過小腳丫FPGA實現(xiàn)一個流水燈
    發(fā)表于 06-20 17:10 ?1150次閱讀
    基于<b class='flag-5'>FPGA</b>開發(fā)板<b class='flag-5'>流水燈</b>的設(shè)計實現(xiàn)