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

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

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

【教程分享】FPGA零基礎(chǔ)學(xué)習(xí):LED流水燈設(shè)計(jì)

電子發(fā)燒友論壇 ? 來源:未知 ? 2023-03-14 09:20 ? 次閱讀

本系列將帶來FPGA的系統(tǒng)性學(xué)習(xí),從最基本的數(shù)字電路基礎(chǔ)開始,最詳細(xì)操作步驟,最直白的言語描述,手把手的“傻瓜式”講解,讓電子、信息通信類專業(yè)學(xué)生、初入職場小白及打算進(jìn)階提升的職業(yè)開發(fā)者都可以有系統(tǒng)性學(xué)習(xí)的機(jī)會。

系統(tǒng)性的掌握技術(shù)開發(fā)以及相關(guān)要求,對個人就業(yè)以及職業(yè)發(fā)展都有著潛在的幫助,希望對大家有所幫助。后續(xù)會陸續(xù)更新 Xilinx 的 Vivado、ISE 及相關(guān)操作軟件的開發(fā)的相關(guān)內(nèi)容,學(xué)習(xí)FPGA設(shè)計(jì)方法及設(shè)計(jì)思想的同時,實(shí)操結(jié)合各類操作軟件,會讓你在技術(shù)學(xué)習(xí)道路上無比的順暢,告別技術(shù)學(xué)習(xí)小BUG卡破腦殼,告別目前忽悠性的培訓(xùn)誘導(dǎo),真正的去學(xué)習(xí)去實(shí)戰(zhàn)應(yīng)用,這種快樂試試你就會懂的。話不多說,上貨。

LED流水燈設(shè)計(jì)

在學(xué)習(xí)軟件設(shè)計(jì)時,第一個例程總是“hello world!”,那么學(xué)習(xí)硬件時,也會有硬件的“hello world”------流水燈。本篇硬件基于叁芯智能科技的 SANXIN-B01開發(fā)板,如有想要入手,可查看以下鏈接,官方淘寶店已上架。

在FPGA開發(fā)板上有四個LED,我們要做的流水燈,顧名思義就是要LED像流水一樣的點(diǎn)亮熄滅。直白點(diǎn)說就是,點(diǎn)亮第一個一段時間,然后熄滅第一個的同時,點(diǎn)亮第二個·····。在此,我們設(shè)置每一個LED點(diǎn)亮的時間為1秒鐘。

硬件介紹

在我們的開發(fā)板上有四個LED,設(shè)計(jì)邏輯為:FPGA輸出高電平時,LED點(diǎn)亮;FPGA輸出低電平時,LED熄滅。

da425626-c205-11ed-bfe3-dac502259ad0.png

架構(gòu)設(shè)計(jì)和信號說明

da5cd5fa-c205-11ed-bfe3-dac502259ad0.png

本設(shè)計(jì)的模塊名稱為ledrun。

da638f76-c205-11ed-bfe3-dac502259ad0.png


建立工程、新建文件等步驟在專輯前篇中已經(jīng)明確羅列,以后將不再敘述。這里給出超鏈接,方便參考學(xué)習(xí)。

FPGA零基礎(chǔ)學(xué)習(xí):Intel FPGA 開發(fā)流程

設(shè)計(jì)代碼

da7f116a-c205-11ed-bfe3-dac502259ad0.png

parameter可以定義一個參數(shù)(默認(rèn)是32位)。在寫代碼時,對于某些數(shù)字,設(shè)計(jì)者經(jīng)常利用定義參數(shù)的方式進(jìn)行編寫,方便修改,也方便閱讀。

在硬件電路中,使用計(jì)數(shù)器當(dāng)做計(jì)時器,每記錄一個數(shù)字等于過去一個時鐘周期。由于本設(shè)計(jì)中采用的clk為50MHz,所以經(jīng)過50_000_000(在verilog中,如果是描述數(shù)字,中間的下劃線只起到分隔的作用,不影響數(shù)值的大?。﹤€周期正好為1秒鐘。由于計(jì)數(shù)器是從0開始計(jì)數(shù),所以計(jì)數(shù)器只需要記錄到50_000_000-1即可。

為了能夠記錄到50_000_000-1這么大的數(shù)字,所以定義了一個26位的計(jì)數(shù)器cnt(參考附錄1:設(shè)計(jì)中位寬的概念和計(jì)算位寬的小技巧)。

在verilog中,“{}”( 大括號)的第一個特殊作用為位拼接。{a,b}相當(dāng)于將a和b拼接為一個整體,并且是高位為a,低位為b。

當(dāng)led輸出為4’b0001時,第一個led點(diǎn)亮;經(jīng)過1秒鐘,輸出4’b0010時,第二個led點(diǎn)亮;經(jīng)過1秒鐘,輸出4’b0100時,第三個led點(diǎn)亮;經(jīng)過1秒鐘,輸出4’b1000時,第四個led點(diǎn)亮;經(jīng)過1秒鐘,輸出4’b0001時,第一個led點(diǎn)亮······按照上述的過程周而復(fù)始,就形成了流水燈。

不難發(fā)現(xiàn),led的輸出,一直為3個0,1個1。并且1的位置每1秒鐘移動一次,從頭到尾,然后又到頭。這種現(xiàn)象可以利用移位的思想進(jìn)行實(shí)現(xiàn)。即:led[3]<=led[2]; led[2]<=led[1]; led[1]<=led[0]; led[0]<=led[3];如果將被賦值的組成一個整體,那就是led,賦值的組成一個整體就是{led[2:0], led[3]}。

仿真代碼

da8e9bc6-c205-11ed-bfe3-dac502259ad0.png

$stop是一個系統(tǒng)任務(wù),功能為將modelsim的仿真停止。

設(shè)置好testbench后,運(yùn)行分析綜合后,打開RTL仿真。

波形分析

在modelsim中,打開sim窗口,選擇ledrun_tb下的ledrun_inst。

daa7a602-c205-11ed-bfe3-dac502259ad0.png

打開objects,將cnt選中。

dabaa478-c205-11ed-bfe3-dac502259ad0.png

objects窗口中顯示在sim窗口中選中模塊中所有的信號。

右擊,將其添加入波形窗口。

dac2e110-c205-11ed-bfe3-dac502259ad0.png

返回到wave窗口中,cnt信號已經(jīng)添加到wave窗口中。由于新添加進(jìn)來,沒有數(shù)據(jù)(no data)。

dacbdd88-c205-11ed-bfe3-dac502259ad0.png

點(diǎn)擊restart。

daecd9a2-c205-11ed-bfe3-dac502259ad0.png

restart按鈕為重新運(yùn)行波形,點(diǎn)擊后,軟件會詢問是否保持各種屬性,點(diǎn)擊ok即可。

db08dd8c-c205-11ed-bfe3-dac502259ad0.png

wave窗口中所有的波形都處于no data 狀態(tài)。點(diǎn)擊run –all按鈕,開始運(yùn)行波形。

db23072a-c205-11ed-bfe3-dac502259ad0.png

運(yùn)行后,會自動停止。停止在tb文件中的$stop處。

返回wave窗口,各個信號都會有波形。

設(shè)置cnt的信號進(jìn)制為無符號的十進(jìn)制:右擊cnt信號,選擇radix中的unsigned。

db396dee-c205-11ed-bfe3-dac502259ad0.png

把光標(biāo)放到復(fù)位結(jié)束時,選擇放大波形。

放大按鈕的左側(cè)第一個按鈕為全局縮放,功能為將所有運(yùn)行波形,顯示到目前的窗口里;左側(cè)第二個為縮小。最左邊和最右邊的按鈕暫時用不到,這里不再介紹。

db433f4a-c205-11ed-bfe3-dac502259ad0.png

可以看到,在復(fù)位結(jié)束后,cnt信號每一個時鐘周期都會增加1。

由于我們設(shè)計(jì)的流水燈是每1秒鐘流動一個,在上述的仿真中,led數(shù)值是不會變化的。如果仿真幾秒鐘的話,仿真的時間會比較長。在此不建議仿真幾秒鐘的時長,有可能會導(dǎo)致電腦卡住。

仿真時,可以將T_1s的值,改成一個較小值。例如:5。然后在此編譯仿真。

quartus的編譯器中,修改完后。進(jìn)行綜合分析,保證沒有任何語法錯誤。在之前打開的modelsim中,打開library窗口,找到最上面的work,打開其前面的“+”。

db490ace-c205-11ed-bfe3-dac502259ad0.png

選中剛才修改過的文件,右擊,選擇recompile。此時,modelsim會重新編譯此文件。

回到wave窗口中,點(diǎn)擊restart,run-all。運(yùn)行波形。

能夠清楚的看到,led在進(jìn)行移位,并且都是5個周期移動一次。

db635e4c-c205-11ed-bfe3-dac502259ad0.png

仿真通過后,關(guān)閉modelsim?;氐絨uartus中,將參數(shù)修改成為50_000_000,綜合分析后,分配管腳。布局布線,生成配置文件,進(jìn)行下板測試。

開發(fā)板上的四個LED開始做流水狀點(diǎn)亮。


本文由電子發(fā)燒友社區(qū)發(fā)布,轉(zhuǎn)載請注明以上來源。如需社區(qū)合作及入群交流,請?zhí)砑?/span>微信EEFans0806,或者發(fā)郵箱liuyong@huaqiu.com。

db7f1e70-c205-11ed-bfe3-dac502259ad0.png

熱門推薦干貨好文

1、RK3568!四核64位ARMv8.2A架構(gòu),匯聚編譯源碼及實(shí)戰(zhàn)樣例

2、開源作品秀,教你如何DIY一款自己的聲源跟蹤小車

3、從零入門物聯(lián)網(wǎng)OH開源平臺,從簡單到高階項(xiàng)目,創(chuàng)客、電子愛好者都愛用!

4、低成本ESP32方案,支持OpenHarmony系統(tǒng)開發(fā)(附10+項(xiàng)目樣例Demo)

5、從0到1玩轉(zhuǎn)瑞薩RA4系列開發(fā)板,教你變著花樣玩板子

6、四核64位,超強(qiáng)CPU ,看RK3568“競”開發(fā)板DEMO!

7、人工智能也能這么玩, 簡單快速入手,還能自定義AI運(yùn)算

8、全部開源 | 基于全志V85X的運(yùn)動相機(jī),工業(yè)網(wǎng)關(guān),可穿戴式攝像頭

9、高性能雙核RISC-V,滿足大多數(shù)開發(fā),這款國產(chǎn)MCU工程師都愛


原文標(biāo)題:【教程分享】FPGA零基礎(chǔ)學(xué)習(xí):LED流水燈設(shè)計(jì)

文章出處:【微信公眾號:電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。


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

原文標(biāo)題:【教程分享】FPGA零基礎(chǔ)學(xué)習(xí):LED流水燈設(shè)計(jì)

文章出處:【微信號:gh_9b9470648b3c,微信公眾號:電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    單片機(jī)POV LED流水燈制作

    電子發(fā)燒友網(wǎng)站提供《單片機(jī)POV LED流水燈制作.docx》資料免費(fèi)下載
    發(fā)表于 05-28 14:34 ?2次下載

    【紫光同創(chuàng)盤古PGX-Nano教程】——(盤古PGX-Nano開發(fā)板/PG2L50H_MBG324第三章)鍵控流水燈實(shí)驗(yàn)例程

    )改變繼而調(diào)整流水燈的狀態(tài); 按鍵消抖模塊 前后抖動時間約為5~10ms,取按鍵抖動區(qū)間開始標(biāo)識,持續(xù)10-20ms后標(biāo)識歸,在抖動區(qū)間內(nèi)輸出保持,非消抖區(qū)間,按鍵狀態(tài)輸出。 LED控制模塊
    發(fā)表于 04-29 16:06

    【紫光同創(chuàng)盤古PGX-MINI-4K教程】——(盤古PGX-MINI-4K開發(fā)板/PGC4KD-6ILPG144第二章)LED 流水燈實(shí)驗(yàn)例程

    載 jtag 調(diào)試接口, 預(yù)留兩組 20PIN 擴(kuò)展 IO、數(shù)碼管、按鍵、led 燈等硬件資源,為用戶提供基本的 開發(fā)環(huán)境。 二:實(shí)驗(yàn)?zāi)康恼莆?b class='flag-5'>流水燈原理并實(shí)現(xiàn)流水燈 三:實(shí)驗(yàn)要求流水燈
    發(fā)表于 03-26 16:24

    【紫光同創(chuàng)盤古PGX-Lite 7K教程】——(盤古PGX-Lite 7K開發(fā)板/PGC7KD-6IMBG256第二章)?LED 流水燈實(shí)驗(yàn)例程

    流水燈原理并實(shí)現(xiàn)流水燈 三:實(shí)驗(yàn)要求流水燈:8 個 LED 以 0.5s 間隔接替閃爍 四:實(shí)驗(yàn)原理相比上一個 LED 閃爍的實(shí)現(xiàn),只需
    發(fā)表于 03-20 15:07

    51單片機(jī)流水燈制作

    ?流水燈學(xué)習(xí)51單片機(jī)的一個基本項(xiàng)目,是我們對單片機(jī)IO口輸出認(rèn)識的基本項(xiàng)目。當(dāng)然學(xué)會了花樣流水燈也很好玩。 下面就分享一種51單片機(jī)流水燈制作的方法。 一、
    的頭像 發(fā)表于 02-26 10:06 ?1184次閱讀
    51單片機(jī)<b class='flag-5'>流水燈</b>制作

    【紫光同創(chuàng)國產(chǎn)FPGA教程】——(PGL22G第二章)鍵控流水燈實(shí)驗(yàn)例程

    5~10ms,取按鍵抖動區(qū)間開始標(biāo)識,持續(xù) 10-20ms 后標(biāo)識歸,在抖動區(qū)間內(nèi)輸出保持,非消抖區(qū)間,按鍵狀態(tài)輸出。 LED 控制模塊功能 3 種流水燈模式有按鍵傳遞過來的計(jì)數(shù)控制切換,每一個
    發(fā)表于 01-05 11:22

    零基礎(chǔ)入門 Hyperlynx 仿真教程

    電子發(fā)燒友網(wǎng)站提供《零基礎(chǔ)入門 Hyperlynx 仿真教程.pdf》資料免費(fèi)下載
    發(fā)表于 12-22 10:49 ?22次下載

    【每周一練】盤古1K開發(fā)板 練習(xí)一:LED流水燈實(shí)驗(yàn)

    查看附件中的快速使用手冊。 LED流水燈實(shí)驗(yàn) 本次實(shí)驗(yàn)實(shí)現(xiàn)LED流水燈,使用的到的硬件為LED燈,在【每周一練】小眼睛
    發(fā)表于 12-21 00:20

    【每周一練】盤古1K開發(fā)板 練習(xí)一:LED流水燈

    實(shí)驗(yàn)?zāi)康?熟悉PDS開發(fā)流程,掌握流水燈原理并實(shí)現(xiàn)流水燈。 實(shí)驗(yàn)要求 設(shè)計(jì)8個LED以0.5s間隔接替點(diǎn)亮。 學(xué)習(xí)心得 實(shí)現(xiàn)了IO控制,點(diǎn)亮了LED
    發(fā)表于 12-10 16:39

    【每周一練】盤古1K開發(fā)板 練習(xí)一:LED流水燈實(shí)驗(yàn)學(xué)習(xí)

    實(shí)驗(yàn)?zāi)康?熟悉PDS開發(fā)流程,掌握流水燈原理并實(shí)現(xiàn)流水燈 實(shí)驗(yàn)要求 設(shè)計(jì)8個LED以0.5s間隔接替點(diǎn)亮 實(shí)現(xiàn)代碼 `define UD #1 module led
    發(fā)表于 12-09 14:20

    【每周一練】+盤古1K開發(fā)板+1. 流水燈實(shí)現(xiàn)

    License)鏈接”下面提供的軟件即可。 2 開發(fā)學(xué)習(xí) 參考“1K2K鏈接”下面提供的“MES2KG”,里面有示例代碼和說明,我們可以參考這些入門。 下面就是我實(shí)現(xiàn)流水燈的過程。 2.1 新建
    發(fā)表于 12-08 00:30

    【每周一練】+盤古1K開發(fā)板+環(huán)境建立與流水燈

    下載線,該下載線的連接請參考“小眼睛FPGA”微信視頻號中的“#紫光同創(chuàng)盤古系列FPGA開發(fā)板@盤古1K2K開發(fā)板 燒錄器下載器 連接教程”。 二、流水燈測試 要實(shí)現(xiàn)流水燈的效果,在
    發(fā)表于 11-27 21:57

    【每周一練】盤古1K開發(fā)板 練習(xí)一:LED流水燈實(shí)驗(yàn)

    實(shí)驗(yàn)?zāi)康模?熟悉PDS開發(fā)流程,掌握流水燈原理并實(shí)現(xiàn)流水燈 實(shí)驗(yàn)要求: 設(shè)計(jì)8個LED以0.5s間隔接替點(diǎn)亮
    發(fā)表于 11-21 11:32

    分享花樣流水燈源程序

    電子發(fā)燒友網(wǎng)站提供《分享花樣流水燈源程序.doc》資料免費(fèi)下載
    發(fā)表于 11-18 09:59 ?3次下載
    分享花樣<b class='flag-5'>流水燈</b>源程序

    基于單片機(jī)的流水燈電路設(shè)計(jì)

    前面一課掌握了嵌入式程序源代碼級調(diào)試,為復(fù)雜單片機(jī)實(shí)驗(yàn)程序的調(diào)試做好了準(zhǔn)備工作。本次實(shí)驗(yàn)完成流水燈電路模型設(shè)計(jì)和編程,在實(shí)驗(yàn)過程中,學(xué)習(xí)流水燈電路設(shè)計(jì)、編寫延遲函數(shù)、循環(huán)移位宏定義。
    的頭像 發(fā)表于 10-31 14:56 ?2921次閱讀
    基于單片機(jī)的<b class='flag-5'>流水燈</b>電路設(shè)計(jì)