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

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

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

FPGA技術(shù)分享:FPGA雜記之基礎(chǔ)篇

潤欣科技Fortune ? 來源:潤欣科技 ? 作者:潤欣科技Fortune ? 2020-11-30 11:31 ? 次閱讀

上海潤欣科技股份有限公司創(chuàng)研社

Verilog基礎(chǔ)語法

1.1 可綜合模塊

以module為單元,具體實(shí)現(xiàn)如下

1.1.1 時(shí)序邏輯

以異步觸發(fā)的D觸發(fā)器為例,時(shí)序邏輯在always塊里實(shí)現(xiàn)

主要注意點(diǎn):

1. 聲明模塊時(shí),輸入變量一定是wire類型

2. 聲明模塊時(shí),輸出變量可以是wire,也可以是reg, reg變量只能在always塊中賦值

3. 敏感列表既可以是邊沿觸發(fā),也可以是電平觸發(fā)

4. 沿觸發(fā)的邏輯里,一定采用的是非阻塞觸發(fā)<=

1.1.2 組合邏輯

以數(shù)據(jù)選擇器為例,組合邏輯通常使用assign語句賦值

主要注意點(diǎn):

1. sel = 0時(shí),c = a;sel = 1時(shí),c =b,即二選一數(shù)據(jù)選擇器。四選一則有兩個(gè)選擇端,四個(gè)輸入端,八選一則是三個(gè)選擇端,八個(gè)輸入端。

2. wire 變量一定要用連續(xù)賦值語句賦值,而且必須用阻塞賦值

1.2 仿真模塊

仿真模塊和可綜合模塊的區(qū)別:

可綜合模塊最終生成的bit文件會(huì)燒錄進(jìn)芯片運(yùn)行,而仿真模塊編譯過后是在仿真軟件(例如modelsim)上運(yùn)行的。仿真模塊是基于可綜合模塊進(jìn)行例化,并通過仿真軟件的模擬,可以初步驗(yàn)證我們寫的可綜合模塊的實(shí)現(xiàn)現(xiàn)象。

以計(jì)數(shù)器為例,可綜合模塊如下:

基于以上可綜合模塊的仿真模塊如下:

1. 仿真的模塊聲明不需要輸入列表

2. initial塊只能對【寄存器】量進(jìn)行賦值

3. 例化模塊時(shí),如果原始模塊是輸出變量,則括號(hào)內(nèi)必須【wire變量】

HDL常見例子

2.1 譯碼器

2.1.1 可綜合模塊(case語句)

此模塊用case實(shí)現(xiàn)了一個(gè)數(shù)據(jù)選擇的功能,先產(chǎn)生了一個(gè)8位計(jì)數(shù)器,通過判斷計(jì)數(shù)器的值來輸出不同的取值,當(dāng)計(jì)數(shù)器計(jì)數(shù)到1時(shí),o_data和o_dv分別輸出5和1,當(dāng)計(jì)數(shù)器為2時(shí),輸出7和1,其余均輸出0。(Note:Case語句常常運(yùn)用于狀態(tài)機(jī)中狀態(tài)的判斷)

Case語句注意點(diǎn):

必須有default語句,否則會(huì)形成鎖存器

2.1.2 仿真模塊

2.2狀態(tài)機(jī)

由于FPGA內(nèi)部語句塊都是并行運(yùn)行的,當(dāng)我們希望FPGA按照順序執(zhí)行我們的語句時(shí),就會(huì)用到狀態(tài)機(jī)。

下面例子是使用狀態(tài)機(jī)模擬的一個(gè)簡單的自動(dòng)售貨機(jī),該售貨機(jī)中的商品 2.5 元一件,每次投幣既能投入 1 元, 也能投入 0.5 元,當(dāng)投入 3 元時(shí),需要設(shè)定找零。

2.2.1 狀態(tài)圖

2.2.2 可綜合模塊(2段式狀態(tài)機(jī))

2.2.3 仿真模塊

2.2.4 仿真腳本

仿真腳本可以省去人工操作modelsim軟件圖形頁面的步驟,運(yùn)行腳本,modelsim可以根據(jù)腳本命令自動(dòng)運(yùn)行包括創(chuàng)建工作目錄,編譯文件,啟動(dòng)仿真等步驟,以下是本例中的仿真腳本。

仿真腳本編寫好后,只需要進(jìn)入仿真軟件(本例使用的是modelsim),改變當(dāng)前路徑到腳本保存的路徑,然后在modelsim命令行輸入 do [腳本文件名]即可。

仿真結(jié)果:

2.2.5 上板測試

上板測試對原來的條件做了一定改動(dòng)更方便觀測結(jié)果,輸入和輸出分別使用的按鍵和LED燈,測試版使用的是Anlogic的EF3L40CG332B_DEV,實(shí)現(xiàn)的功能如下:

① 在開發(fā)板上完成自動(dòng)售貨機(jī)的實(shí)驗(yàn),投幣的動(dòng)作通過按鍵實(shí)現(xiàn), 當(dāng)按一次按鍵(按下到抬起算一次),算作投幣一次;

② 按鍵有兩個(gè),按下分別代表 5 毛和 1 元,可樂售價(jià) 2.5 元;

③ 當(dāng)投入總金額為 5 毛時(shí), led 燈亮一個(gè),投入總金額為 1 元時(shí), led 燈亮兩個(gè), 投入總金額為 1.5 元時(shí), led 燈亮三個(gè), 投入總金額為 2 元時(shí), led 亮四個(gè), 用單向流水燈效果充當(dāng)出可樂并且不找零的情況,用雙向流水燈效果充當(dāng)既出可樂又找零的情況。流水燈持續(xù)十秒后熄滅,狀態(tài)回到初始狀態(tài)。

重新設(shè)計(jì)狀態(tài)圖如下:

代碼詳見工程fsm_key,筆記不再贅述,此次筆記主要記錄關(guān)于頂層模塊和例化的相關(guān)知識(shí)點(diǎn):

工程目錄如下所示:

各模塊之間的關(guān)系是:

頂層文件是fsm.v,在fsm.v中調(diào)用了模塊led_water_single,led_Water_double和key_debounce,這三個(gè)模塊的功能分別是單向流水燈,雙向流水燈和按鍵消抖。想在頂層文件中調(diào)用對應(yīng)的模塊需要在頂層文件中對相應(yīng)的模塊進(jìn)行例化,以單向流水燈為例。

單向流水燈的聲明如下:

(具體功能實(shí)現(xiàn)代碼略,如有需要,請登錄www.fortune-co.com留言)

那么在fsm.v中例化方法如下:

括號(hào)外的信號(hào)是對應(yīng)的聲明信號(hào);括號(hào)內(nèi)的信號(hào)是從fsm模塊中傳入的信號(hào),該信號(hào)名稱可以自定義。

整個(gè)工程的框架如下:(由于本實(shí)驗(yàn)沒有另外寫一個(gè)總的TOP文件,而是將例化和狀態(tài)機(jī)信號(hào)處理都放在了fsm模塊中,因此top層和狀態(tài)機(jī)模塊都標(biāo)注的是fsm)

其中key05,key10,就是從外界接入的信號(hào),led[7:0]即輸出信號(hào)。接入信號(hào)我們要引到對應(yīng)的按鍵,可以參考EF3L40CG332B_DEV的原理圖

SW2和SW3對應(yīng)的FPGA的管腳分別是R19和R20,同理可查,八個(gè)led的對應(yīng)腳,并寫出相應(yīng)的管腳約束文件

管腳約束文件寫完后,在可綜合模塊頂層文件中的輸入輸出信號(hào)就會(huì)對應(yīng)到相應(yīng)的物理輸入輸出,也可以使用圖形頁面設(shè)置。

完成后編譯下載到板子上觀測現(xiàn)象。

在本次實(shí)驗(yàn)的過程中也發(fā)生了一個(gè)編程錯(cuò)誤問題,剛編寫完上板測試時(shí)發(fā)現(xiàn)結(jié)果和預(yù)想的有差異,具體錯(cuò)處在輸入3元進(jìn)入雙向流水燈的狀態(tài)時(shí),雙向流水燈正向流水正常,當(dāng)反向流水時(shí),在倒數(shù)第二個(gè)燈會(huì)卡住,然后反復(fù)亮滅倒數(shù)一二個(gè)燈,沒法完成反向流水。

由于第一次正向流水是正常的,因此推測是在反向流水時(shí)有條件判斷錯(cuò)誤使得反向流水無法正常運(yùn)行,進(jìn)入到led_water_double模塊關(guān)于反向流水燈的操作模塊,經(jīng)查驗(yàn)發(fā)現(xiàn)是設(shè)置翻轉(zhuǎn)標(biāo)志的時(shí)候判斷條件寫錯(cuò)了。

判斷條件應(yīng)該是led == 8’b1111_1110,更改后,實(shí)驗(yàn)現(xiàn)象符合預(yù)期要求。

fqj

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

    關(guān)注

    1624

    文章

    21573

    瀏覽量

    600688
  • 觸發(fā)器
    +關(guān)注

    關(guān)注

    14

    文章

    1992

    瀏覽量

    60981
收藏 人收藏

    評論

    相關(guān)推薦

    Primemas選擇Achronix eFPGA技術(shù)用于Chiplet平臺(tái)

    高性能 FPGA 和嵌入式FPGA (eFPGA) IP 的領(lǐng)導(dǎo)者 Achronix Semiconductor Corporation 和使用Chiplet 技術(shù)開發(fā)創(chuàng)新 SoC H
    的頭像 發(fā)表于 09-18 16:16 ?414次閱讀

    FPGA技術(shù)的主要應(yīng)用

    FPGA(Field-Programmable Gate Array)技術(shù),即現(xiàn)場可編程門陣列,是一種可編程邏輯設(shè)備,它允許設(shè)計(jì)人員根據(jù)具體需求進(jìn)行靈活的硬件配置和功能實(shí)現(xiàn)。由于其高度的可重構(gòu)性
    的頭像 發(fā)表于 07-17 16:38 ?1774次閱讀

    FPGA技術(shù)的五大優(yōu)勢

    各行各業(yè)紛紛采用FPGA芯片是源于FPGA融合了ASIC和基于處理器的系統(tǒng)的最大優(yōu)勢。 FPGA能夠提供硬件定時(shí)的速度和穩(wěn)定性,且無需類似自定制ASIC設(shè)計(jì)的巨額前期費(fèi)用的大規(guī)模投入。
    發(fā)表于 04-23 15:50 ?997次閱讀

    fpga封裝技術(shù)和arm架構(gòu)的優(yōu)缺點(diǎn)

    FPGA封裝技術(shù)和ARM架構(gòu)是兩個(gè)不同的概念,分別屬于硬件設(shè)計(jì)的不同領(lǐng)域。
    的頭像 發(fā)表于 03-26 15:51 ?664次閱讀

    fpga封裝技術(shù)有哪些應(yīng)用領(lǐng)域

    總的來說,FPGA封裝技術(shù)憑借其高性能、靈活性和可靠性,在多個(gè)領(lǐng)域發(fā)揮著重要作用。隨著技術(shù)的不斷進(jìn)步和應(yīng)用需求的增長,FPGA封裝技術(shù)的應(yīng)用
    的頭像 發(fā)表于 03-26 15:49 ?504次閱讀

    fpga開發(fā)板是什么?fpga開發(fā)板有哪些?

    FPGA開發(fā)板是一種基于FPGA(現(xiàn)場可編程門陣列)技術(shù)的開發(fā)平臺(tái),它允許工程師通過編程來定義和配置FPGA芯片上的邏輯電路,以實(shí)現(xiàn)各種數(shù)字電路和邏輯功能。
    的頭像 發(fā)表于 03-14 18:20 ?1677次閱讀

    為什么對FPGA軟件進(jìn)行測評?

    FPGA軟件包含進(jìn)行設(shè)計(jì)而產(chǎn)生的程序、文檔和數(shù)據(jù),同時(shí)包含與相關(guān)的軟件特性和硬件特性。FPGA軟件測試需要考慮軟件代碼正確性、軟硬件接口協(xié)調(diào)性、時(shí)序性等方面的全面覆蓋。
    發(fā)表于 03-06 11:39 ?527次閱讀

    fpga是什么 fpga用什么編程語言

    FPGA(Field-Programmable Gate Array)是一種可編程邏輯技術(shù),它使用可重構(gòu)的硬件單元(如門陣列和查找表)來實(shí)現(xiàn)電路功能。相比傳統(tǒng)的專用集成電路(ASIC),FPGA具有
    的頭像 發(fā)表于 02-04 15:26 ?1486次閱讀

    什么是FPGA原型驗(yàn)證?FPGA原型設(shè)計(jì)的好處是什么?

    FPGA原型設(shè)計(jì)是一種成熟的技術(shù),用于通過將RTL移植到現(xiàn)場可編程門陣列(FPGA)來驗(yàn)證專門應(yīng)用的集成電路(ASIC),專用標(biāo)準(zhǔn)產(chǎn)品(ASSP)和片上系統(tǒng)(SoC)的功能和性能。
    發(fā)表于 01-12 16:13 ?1046次閱讀

    FPGA設(shè)計(jì)高級技巧 Xilinx

    FPGA設(shè)計(jì)高級技巧 Xilinx
    發(fā)表于 01-08 22:15

    【2023電子工程師大會(huì)】國產(chǎn)FPGA技術(shù)及國內(nèi)FPGA發(fā)展pp

    【2023電子工程師大會(huì)】國產(chǎn)FPGA技術(shù)及國內(nèi)FPGA發(fā)展ppt
    發(fā)表于 01-03 16:31 ?26次下載

    基于FPGA的數(shù)字存儲(chǔ)示波器的顯示技術(shù)

    電子發(fā)燒友網(wǎng)站提供《基于FPGA的數(shù)字存儲(chǔ)示波器的顯示技術(shù).doc》資料免費(fèi)下載
    發(fā)表于 11-02 10:18 ?3次下載
    基于<b class='flag-5'>FPGA</b>的數(shù)字存儲(chǔ)示波器的顯示<b class='flag-5'>技術(shù)</b>

    FPGA是什么?FPGA的工作原理和應(yīng)用

    你是否好奇過FPGA技術(shù)是如何影響日常使用的設(shè)備的?在當(dāng)今快節(jié)奏的技術(shù)領(lǐng)域中,FPGA變得越來越重要。FPGA擁有強(qiáng)大的功能和廣泛的應(yīng)用,驅(qū)
    的頭像 發(fā)表于 11-02 10:06 ?2898次閱讀

    FPGA技術(shù)的內(nèi)部工作原理、應(yīng)用和優(yōu)勢

    你是否好奇過FPGA技術(shù)是如何影響日常使用的設(shè)備的?在當(dāng)今快節(jié)奏的技術(shù)領(lǐng)域中,FPGA變得越來越重要。FPGA擁有強(qiáng)大的功能和廣泛的應(yīng)用,驅(qū)
    發(fā)表于 11-02 10:04 ?529次閱讀

    如何學(xué)習(xí)FPGA?FPGA學(xué)習(xí)必備的基礎(chǔ)知識(shí)

    FPGA已成為現(xiàn)今的技術(shù)熱點(diǎn)之一,無論學(xué)生還是工程師都希望跨進(jìn)FPGA的大門。網(wǎng)絡(luò)上各種開發(fā)板、培訓(xùn)班更是多如牛毛,仿佛在告訴你不懂FPGA你就OUT啦。那么我們要玩轉(zhuǎn)
    的頭像 發(fā)表于 10-27 17:43 ?736次閱讀