本系列將帶來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熄滅。
架構(gòu)設(shè)計(jì)和信號說明
本設(shè)計(jì)的模塊名稱為ledrun。
建立工程、新建文件等步驟在專輯前篇中已經(jīng)明確羅列,以后將不再敘述。這里給出超鏈接,方便參考學(xué)習(xí)。
FPGA零基礎(chǔ)學(xué)習(xí):Intel FPGA 開發(fā)流程
設(shè)計(jì)代碼
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]}。
仿真代碼
$stop是一個系統(tǒng)任務(wù),功能為將modelsim的仿真停止。
設(shè)置好testbench后,運(yùn)行分析綜合后,打開RTL仿真。
波形分析
在modelsim中,打開sim窗口,選擇ledrun_tb下的ledrun_inst。
打開objects,將cnt選中。
objects窗口中顯示在sim窗口中選中模塊中所有的信號。
右擊,將其添加入波形窗口。
返回到wave窗口中,cnt信號已經(jīng)添加到wave窗口中。由于新添加進(jìn)來,沒有數(shù)據(jù)(no data)。
點(diǎn)擊restart。
restart按鈕為重新運(yùn)行波形,點(diǎn)擊后,軟件會詢問是否保持各種屬性,點(diǎn)擊ok即可。
wave窗口中所有的波形都處于no data 狀態(tài)。點(diǎn)擊run –all按鈕,開始運(yùn)行波形。
運(yùn)行后,會自動停止。停止在tb文件中的$stop處。
返回wave窗口,各個信號都會有波形。
設(shè)置cnt的信號進(jìn)制為無符號的十進(jìn)制:右擊cnt信號,選擇radix中的unsigned。
把光標(biāo)放到復(fù)位結(jié)束時,選擇放大波形。
放大按鈕的左側(cè)第一個按鈕為全局縮放,功能為將所有運(yùn)行波形,顯示到目前的窗口里;左側(cè)第二個為縮小。最左邊和最右邊的按鈕暫時用不到,這里不再介紹。
可以看到,在復(fù)位結(jié)束后,cnt信號每一個時鐘周期都會增加1。
由于我們設(shè)計(jì)的流水燈是每1秒鐘流動一個,在上述的仿真中,led數(shù)值是不會變化的。如果仿真幾秒鐘的話,仿真的時間會比較長。在此不建議仿真幾秒鐘的時長,有可能會導(dǎo)致電腦卡住。
仿真時,可以將T_1s的值,改成一個較小值。例如:5。然后在此編譯仿真。
在quartus的編譯器中,修改完后。進(jìn)行綜合分析,保證沒有任何語法錯誤。在之前打開的modelsim中,打開library窗口,找到最上面的work,打開其前面的“+”。
選中剛才修改過的文件,右擊,選擇recompile。此時,modelsim會重新編譯此文件。
回到wave窗口中,點(diǎn)擊restart,run-all。運(yùn)行波形。
能夠清楚的看到,led在進(jìn)行移位,并且都是5個周期移動一次。
仿真通過后,關(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。
熱門推薦干貨好文
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)載請注明出處。
-
電子技術(shù)
+關(guān)注
關(guān)注
18文章
853瀏覽量
55510 -
電子發(fā)燒友論壇
+關(guān)注
關(guān)注
4文章
197瀏覽量
990
原文標(biāo)題:【教程分享】FPGA零基礎(chǔ)學(xué)習(xí):LED流水燈設(shè)計(jì)
文章出處:【微信號:gh_9b9470648b3c,微信公眾號:電子發(fā)燒友論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論