RM新时代网站-首页

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

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

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

FPGA的入門(mén)基礎(chǔ)知識(shí)詳細(xì)說(shuō)明

Wildesbeast ? 來(lái)源:電子工程專(zhuān)輯 ? 作者:電子工程專(zhuān)輯 ? 2020-12-20 10:13 ? 次閱讀

Verilog基礎(chǔ)語(yǔ)法

570b6f2767ee480ba99da7064705679d.png

1.1 可綜合模塊

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

5a2b6b6a5c0049f29e6650a371b09554.png

1.1.1 時(shí)序邏輯

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

4ba021f11ced47e890499cbacd49b4a6.png

主要注意點(diǎn):

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

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

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

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

1.1.2 組合邏輯

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

851ed320caf14bddbc9ae648105002b8.png

5af1c633bf5e420fa7a43fc86556c925.png

主要注意點(diǎn):

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

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

1.2 仿真模塊

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

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

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

727552d2c30f4d4aa5f00a02f6cddacc.png

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

10855adad73440a18e7f2e16b18c0795.png

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

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

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

HDL常見(jiàn)例子

2.1 譯碼器

2.1.1 可綜合模塊(case語(yǔ)句)

此模塊用case實(shí)現(xiàn)了一個(gè)數(shù)據(jù)選擇的功能,先產(chǎn)生了一個(gè)8位計(jì)數(shù)器,通過(guò)判斷計(jì)數(shù)器的值來(lái)輸出不同的取值,當(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ǔ)句常常運(yùn)用于狀態(tài)機(jī)中狀態(tài)的判斷)

c52af06c0c1640d3b63532306559980c.png

f692d8d2437047228cf92c882b0ba577.png

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

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

2.1.2 仿真模塊

7f7bcce94b9a43b99038bd859e292818.png

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

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

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

2.2.1 狀態(tài)圖

0f55ce9b507043da8da118adbcdbdbe8.png

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

19f0b246e53945c4862b45b507dc817d.png

0b43c666631d461c928c8b50f9aed591.png

407386d637f149f7bbe990fc416b5187.png

2.2.3 仿真模塊

3a6eb27c0c9f404d85badc90d0cde82f.png

2.2.4 仿真腳本

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

142847a09b044555a02bc5306f3d0589.png

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

dada5945294640e3844a9a8998aeb71c.png

仿真結(jié)果:

2.2.5 上板測(cè)試

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

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

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

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

598f72ee4dc1426da5af9c1053870c24.png

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

工程目錄如下所示:

9c0dbc26980642479dc3af9e51506645.png

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

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

單向流水燈的聲明如下:

02887743b5ed4341a6169c25b1947dcd.png

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

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

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

整個(gè)工程的框架如下:(由于本實(shí)驗(yàn)沒(méi)有另外寫(xiě)一個(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)我們要引到對(duì)應(yīng)的按鍵,可以參考EF3L40CG332B_DEV的原理圖:

a81a462aed3740ecac2eee8683c1e980.png

7113f3138e0a4a3d9ec87bd94800808f.png

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

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

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

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

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

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

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

    關(guān)注

    1629

    文章

    21729

    瀏覽量

    602977
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1351

    瀏覽量

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

    關(guān)注

    14

    文章

    2000

    瀏覽量

    61130
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA教程之CPLD與FPGA基礎(chǔ)知識(shí)說(shuō)明

    本文檔詳細(xì)介紹的是FPGA教程之CPLD與FPGA基礎(chǔ)知識(shí)說(shuō)明主要內(nèi)容包括了:一、復(fù)雜可編程邏輯器件簡(jiǎn)介二、CPLD的組成與特點(diǎn)三、
    發(fā)表于 02-27 17:09 ?36次下載
    <b class='flag-5'>FPGA</b>教程之CPLD與<b class='flag-5'>FPGA</b>的<b class='flag-5'>基礎(chǔ)知識(shí)</b><b class='flag-5'>說(shuō)明</b>

    FPGA視頻教程之FPGA和CPLD與VHDL基礎(chǔ)知識(shí)詳細(xì)資料說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA視頻教程之FPGA和CPLD與VHDL基礎(chǔ)知識(shí)詳細(xì)資料說(shuō)明
    發(fā)表于 03-20 14:35 ?9次下載
    <b class='flag-5'>FPGA</b>視頻教程之<b class='flag-5'>FPGA</b>和CPLD與VHDL<b class='flag-5'>基礎(chǔ)知識(shí)</b>的<b class='flag-5'>詳細(xì)</b>資料<b class='flag-5'>說(shuō)明</b>

    FPGA視頻教程之SOPC builder的詳細(xì)基礎(chǔ)知識(shí)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA視頻教程之SOPC builder的詳細(xì)基礎(chǔ)知識(shí)說(shuō)明。主要目的是:1.在嵌入式系統(tǒng)中使用PLD,2.SO
    發(fā)表于 03-21 16:54 ?8次下載
    <b class='flag-5'>FPGA</b>視頻教程之SOPC builder的<b class='flag-5'>詳細(xì)</b><b class='flag-5'>基礎(chǔ)知識(shí)</b><b class='flag-5'>說(shuō)明</b>

    51單片機(jī)場(chǎng)效應(yīng)管的基礎(chǔ)知識(shí)詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)場(chǎng)效應(yīng)管的基礎(chǔ)知識(shí)詳細(xì)說(shuō)明
    發(fā)表于 08-23 17:30 ?8次下載
    51單片機(jī)場(chǎng)效應(yīng)管的<b class='flag-5'>基礎(chǔ)知識(shí)</b><b class='flag-5'>詳細(xì)說(shuō)明</b>

    51單片機(jī)的結(jié)構(gòu)及工作方式等基礎(chǔ)知識(shí)詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是51單片機(jī)的結(jié)構(gòu)及工作方式等基礎(chǔ)知識(shí)詳細(xì)說(shuō)明包括了:1 單片機(jī)基本構(gòu)成系統(tǒng),2 單片機(jī)存儲(chǔ)器結(jié)構(gòu),3單片機(jī)的工作方式,技能訓(xùn)練;AT89C51最小系統(tǒng)實(shí)驗(yàn)板的設(shè)計(jì)路, 基礎(chǔ)訓(xùn)練
    發(fā)表于 10-22 16:11 ?12次下載
    51單片機(jī)的結(jié)構(gòu)及工作方式等<b class='flag-5'>基礎(chǔ)知識(shí)</b><b class='flag-5'>詳細(xì)說(shuō)明</b>

    手機(jī)維修的基礎(chǔ)知識(shí)詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是手機(jī)維修的基礎(chǔ)知識(shí)詳細(xì)說(shuō)明包括了:一、發(fā)展歷史,二 、手機(jī)的條碼,三、手機(jī)的維修常用工具
    發(fā)表于 12-27 08:00 ?23次下載
    手機(jī)維修的<b class='flag-5'>基礎(chǔ)知識(shí)</b><b class='flag-5'>詳細(xì)說(shuō)明</b>

    射頻的基礎(chǔ)知識(shí)培訓(xùn)教程詳細(xì)說(shuō)明

    本文檔的做作業(yè)內(nèi)容詳細(xì)介紹的是華為射頻的基礎(chǔ)知識(shí)培訓(xùn)教程詳細(xì)說(shuō)明包括了:第一章無(wú)線(xiàn)通信的基本概念第二章 射頻常用計(jì)算單位簡(jiǎn)介第三章 射頻常用概念辨析第四章 天線(xiàn)傳播基礎(chǔ)知識(shí)簡(jiǎn)介
    發(fā)表于 03-14 08:00 ?18次下載
    射頻的<b class='flag-5'>基礎(chǔ)知識(shí)</b>培訓(xùn)教程<b class='flag-5'>詳細(xì)說(shuō)明</b>

    機(jī)器學(xué)習(xí)的基礎(chǔ)知識(shí)詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是機(jī)器學(xué)習(xí)的基礎(chǔ)知識(shí)詳細(xì)說(shuō)明
    發(fā)表于 03-24 08:00 ?0次下載
    機(jī)器學(xué)習(xí)的<b class='flag-5'>基礎(chǔ)知識(shí)</b><b class='flag-5'>詳細(xì)說(shuō)明</b>

    被動(dòng)電子元器件的基礎(chǔ)知識(shí)詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是被動(dòng)電子元器件的基礎(chǔ)知識(shí)詳細(xì)說(shuō)明包括了:常用電阻電容等無(wú)源器件的結(jié)構(gòu)、分類(lèi)、參數(shù)、使用等基礎(chǔ)知識(shí)。
    發(fā)表于 08-03 08:00 ?11次下載
    被動(dòng)電子元器件的<b class='flag-5'>基礎(chǔ)知識(shí)</b><b class='flag-5'>詳細(xì)說(shuō)明</b>

    使用FPGA設(shè)計(jì)的2個(gè)實(shí)例詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用FPGA設(shè)計(jì)的2個(gè)實(shí)例詳細(xì)說(shuō)明包括了:Verilog HDL 設(shè)計(jì)練習(xí)一. 簡(jiǎn)單的組合邏輯設(shè)計(jì),練習(xí)二. 簡(jiǎn)單時(shí)序邏輯電路的設(shè)計(jì)
    發(fā)表于 09-23 16:48 ?13次下載
    使用<b class='flag-5'>FPGA</b>設(shè)計(jì)的2個(gè)實(shí)例<b class='flag-5'>詳細(xì)說(shuō)明</b>

    Python的知識(shí)點(diǎn)總結(jié)詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是Python的知識(shí)點(diǎn)總結(jié)詳細(xì)說(shuō)明。
    發(fā)表于 09-29 17:13 ?14次下載
    Python的<b class='flag-5'>知識(shí)</b>點(diǎn)總結(jié)<b class='flag-5'>詳細(xì)說(shuō)明</b>

    控陣天線(xiàn)輻射的基礎(chǔ)知識(shí)詳細(xì)說(shuō)明

    電子發(fā)燒友網(wǎng)站提供《控陣天線(xiàn)輻射的基礎(chǔ)知識(shí)詳細(xì)說(shuō)明.pdf》資料免費(fèi)下載
    發(fā)表于 11-26 05:30 ?30次下載
    控陣天線(xiàn)輻射的<b class='flag-5'>基礎(chǔ)知識(shí)</b><b class='flag-5'>詳細(xì)說(shuō)明</b>

    Xilinx FPGA IO的GTLP和HSTL電平標(biāo)準(zhǔn)的詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是Xilinx FPGA IO的GTLP和HSTL電平標(biāo)準(zhǔn)的詳細(xì)說(shuō)明
    發(fā)表于 01-06 17:13 ?25次下載
    Xilinx <b class='flag-5'>FPGA</b> IO的GTLP和HSTL電平標(biāo)準(zhǔn)的<b class='flag-5'>詳細(xì)說(shuō)明</b>

    時(shí)序分析的優(yōu)化策略詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是FPGA的時(shí)序分析的優(yōu)化策略詳細(xì)說(shuō)明。
    發(fā)表于 01-14 16:03 ?19次下載
    時(shí)序分析的優(yōu)化策略<b class='flag-5'>詳細(xì)說(shuō)明</b>

    PIC系列單片機(jī)程序設(shè)計(jì)基礎(chǔ)知識(shí)詳細(xì)說(shuō)明

    本文檔的主要內(nèi)容詳細(xì)介紹的是PIC系列單片機(jī)程序設(shè)計(jì)基礎(chǔ)知識(shí)詳細(xì)說(shuō)明
    的頭像 發(fā)表于 04-05 18:09 ?4567次閱讀
    RM新时代网站-首页