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

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

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

FPGA初學(xué)者系列——模塊書寫&電路綜合

電子設(shè)計 ? 來源:FPGA技術(shù)聯(lián)盟 ? 作者:FPGA技術(shù)聯(lián)盟 ? 2020-11-13 16:02 ? 次閱讀

本系列文章主要針對FPGA初學(xué)者編寫,包括FPGA的模塊書寫、基礎(chǔ)語法、狀態(tài)機、RAMUART、SPI、VGA、以及功能驗證等。將每一個知識點作為一個章節(jié)進行講解,旨在更快速的提升初學(xué)者在FPGA開發(fā)方面的能力,每一個章節(jié)中都有針對性的代碼書寫以及代碼的講解,可作為讀者參考。

第一章:模塊書寫

Verilog HDL 語言的基本語法與 C語言相似,因此與 VHDL 相比較更容易上手。本章將會在實際小項目的基礎(chǔ)上,以 Verilog HDL 語言為主, 教讀者怎么更方便、更高效的學(xué)習 FPGA。

Verilog HDL 中的 HDL 指的是硬件描述語言(Hardware Description Language), 顧名思義,Verilog HDL 可以描述對應(yīng)的硬件電路,下面以一個小例子說明。

圖 1 電路示意圖

如圖1所示為電路示意圖, 首先分析一下該電路:

①兩個輸入端口即 a 和 b,為了更好地讓讀者理解該變量為一個輸入端口,輸入端口可加上方向pi(port input)表示輸入。面對大量的代碼,一個比較好的命名風格,更方便我們后續(xù)的驗證, 希望前期就可以養(yǎng)成比較好的命名風格。

②一個輸出端口即 c,同理 po 即為 port output。

功能:該電路實現(xiàn) a 和 b 相與,結(jié)果為 c。

在用 Verilog HDL 描述一個電路時,必須要對該電路命名,此處我們對該電路命名為 a_and_b。在用 Verilog HDL 描述一個電路時, 模塊的開始都是以 module 開始,endmodule 結(jié)束, module 后面寫該模塊的模塊名,模塊名的后面有一個小括號,所有該模塊的端口都需要在此小括號內(nèi)聲明,小括號以分號結(jié)束(半角分號,同c 語言一樣, Verilog HDL 中每一條語句也是以分號結(jié)束)。

在 module 與 endmodule 之間,可以定義必要的內(nèi)部變量,以及我們所有描述的邏輯功能。具體如圖2所示:

圖2 模塊代碼編輯示意

建議安裝專門編輯程序的一些軟件,例如Notepad++軟件界面及功能都比較齊全。用 Notepad++打開我們新建的 V 文件, 按照模板書寫模塊a_and_b的 Verilog HDL 代碼, 如下所示:

圖3 模塊代碼

代碼解析:

①模塊以 module 作為開頭, endmodule 作為結(jié)尾, 需要注意模塊名與 V 文件名要一致;

②小括號內(nèi)描述端口, Verilog HDL 中輸入端口的關(guān)鍵字為 input,輸出端口的關(guān)鍵字為 output。wire(線) 為端口的變量類型, input 端口的變量均為 wire型, Verilog HDL 中另一種常用的變量類型為 reg(寄存器),將在后面的章節(jié)詳細介紹;

③代碼第 8 行, 描述了具體的邏輯功能, assign 為 Verilog HDL 中的關(guān)鍵字,assign 可以描述組合邏輯,每一個 assign 后面只能跟一條語句。Verilog HDL 中另一個常用的關(guān)鍵字為 always, 后續(xù)會詳細講解。該語句表達的意思為 a&b賦值給 c, 其中=為賦值號, 將右邊的結(jié)果賦值為左邊的變量, &為按位與,即變量的對應(yīng)位相與, 將在基礎(chǔ)語法部分詳細講解。

這樣我們就已經(jīng)將圖中電路描述清楚了,代碼只需要按照給出的模板填寫對應(yīng)的內(nèi)容即可。

第二章節(jié)我們將會講解在ISE中如何驗證代碼是否有語法錯誤,以及將對應(yīng)的代碼轉(zhuǎn)變成 RTL 電路。

第二章:電路綜合

第一章中已經(jīng)將 a & b = c 對應(yīng)的 Verilog HDL 程序?qū)懗觯?但是我們無法得知我們所寫的代碼是否有語法錯誤,也不知道代碼是否能夠按照我們的意思生成對應(yīng)的電路。本章中我們將會使用 xilinx 公司的 ISE 軟件對所寫的程序進行綜合,從中可以得知代碼是否有語法錯誤,以及生成對應(yīng)的 RTL 電路。為了方便管理,我們在與 design 文件夾同路徑下新建一個文件夾,取名為ise_prj(基于 ISE 的 project)。打開 ISE,會看到如圖 1 所示的界面。點擊右上角的 File,選擇 New Project…新建一個工程。

圖 1 ISE 主界面

彈出如圖 2 所示的界面,在 Name 處填寫工程名字(盡量保證與頂層文件名一致即a_and_b), Location 處選擇工程存放的路徑, Working Direction 默認路徑與 Location一致, Top-level source type 處按照所需選擇,此處我們選擇 HDL。

圖 2 創(chuàng)建工程

點擊 Next,彈出如下圖 3的界面,按照板卡芯片選擇對應(yīng)的選項,若是只想看看生成的 RTL 電路(不下板調(diào)試),則不需要選擇,或者隨便選擇一個芯片即可。

圖 3 工程設(shè)置

點擊 Next,再點擊 Finish 完成工程的創(chuàng)建。按照圖4所示,右鍵點擊芯片型號,選擇 Add Source…添加已經(jīng)存在的文件(a_and_b.v)。找到 design 文件夾中a_and_b.v 文件所在的路徑,選中該文件,點擊 OK。

圖4 添加 V 文件

添加文件后的工程界面如圖 5 所示。

圖 5 添加 V 文件后的工程

選中 a_and_b,雙擊 Synthesize 選項進行對我們的程序進行綜合。若是沒有語法錯誤則會出現(xiàn)圖6左所示的界面,如果有語法錯誤則會出現(xiàn)圖6右所示的界面,則需要查看錯誤報告將錯誤的地方改正并重新綜合,直至編譯通過為止。

圖6 左(正確)右(錯誤)

在綜合正確的情況下,點擊 Synthesize 選項前面的加號,如圖 7 所示。

圖 7 展開后的 Synthesize 選項

雙擊 View RTL Schematic 選項,出現(xiàn)如圖8所示的界面。

圖 8 RTL 顯示選項頁面

選擇 Start with a schematic of the top-level block,點擊 OK 選項,生成如下圖 9 所示界面。

圖 9 模塊模型

可以雙擊圖 9 所示的模塊的模型,則可以看到模塊內(nèi)部的 RTL 電路,如圖 10 所示。

圖 10 RTL 電路

從圖 10 中我們可以看到生成的電路是我們用 Verilog HDL 語言描述的電路結(jié)構(gòu)。代碼的語法及電路驗證都是正確的,但是具體的功能是否滿足我們的要求呢, 這就需要我們通過仿真來驗證了。

在第三章中,我們會針對該代碼書寫對應(yīng)的測試文件,并且通過 Modelsim 軟件來驗證我們的a_and_b 模塊功能是否正確。

編輯:hfy

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

    關(guān)注

    1630

    文章

    21769

    瀏覽量

    604637
  • Xilinx
    +關(guān)注

    關(guān)注

    71

    文章

    2168

    瀏覽量

    121772
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7613

    瀏覽量

    137240
  • 硬件電路
    +關(guān)注

    關(guān)注

    39

    文章

    244

    瀏覽量

    29262
  • VerilogHDL
    +關(guān)注

    關(guān)注

    2

    文章

    39

    瀏覽量

    19101
收藏 人收藏

    評論

    相關(guān)推薦

    EE-269:以太網(wǎng)802.3初學(xué)者指南

    電子發(fā)燒友網(wǎng)站提供《EE-269:以太網(wǎng)802.3初學(xué)者指南.pdf》資料免費下載
    發(fā)表于 01-05 09:48 ?0次下載
    EE-269:以太網(wǎng)802.3<b class='flag-5'>初學(xué)者</b>指南

    XD08M3232紅外感應(yīng)單片機開發(fā)板適合初學(xué)者嗎?

    XD08M3232是一款國產(chǎn)8位高性能Flash的接近感應(yīng)單片機,具有較大的內(nèi)存、恒流驅(qū)動電路、內(nèi)置運算放大器和模擬比較器等特點。對于初學(xué)者來說,選擇合適的開發(fā)板是非常重要的,因為它將直接影響
    發(fā)表于 12-07 14:55

    我用的是multisim14.0,因為是初學(xué)者,仿真電路的時候找不到合適的模型,應(yīng)該怎么辦?

    我用的是multisim14.0,因為是初學(xué)者,仿真電路的時候找不到合適的模型,應(yīng)該怎么辦? 比如我電路用的是AO3400的NMOS,但是在multisim14.0軟件自帶的元件庫里面沒找到類似的,開啟電壓是1.5v的nmos,
    發(fā)表于 08-23 10:59

    適合初學(xué)者的嵌入式項目有哪些?

    適合初學(xué)者的嵌入式項目有哪些? 嵌入式學(xué)習是一個實踐性很強的領(lǐng)域,通過實際項目可以幫助你鞏固理論知識并提升技能。以下是幾個適合初學(xué)者練手的嵌入式項目,每個項目都涵蓋了從硬件到軟件的不同層面
    發(fā)表于 07-11 10:23

    FPGA的學(xué)習筆記---FPGA的開發(fā)流程

    與通常的單片機應(yīng)用開發(fā)不同,FPGA有自己的開發(fā)流程。但具體上怎樣操作,作為初學(xué)者,沒有一點經(jīng)驗。網(wǎng)站獎勵的清華FPGA需要的開發(fā)軟件,到目前還沒有安裝成功。暫且先看看相關(guān)學(xué)習,慢慢積累這方面的知識
    發(fā)表于 06-23 14:47

    基于STM32的智能循跡小車

    初學(xué)者的智能小車
    的頭像 發(fā)表于 05-08 14:43 ?3890次閱讀
    基于STM32的智能循跡小車

    如何快速入門FPGA

    時鐘管理模塊、嵌入式塊RAM、布線資源等。 學(xué)習FPGA編程語言: 掌握Verilog HDL(硬件描述語言)。Verilog用于數(shù)字電路的系統(tǒng)設(shè)計,具有簡潔的語法和清晰的仿真語義,非常適合
    發(fā)表于 04-28 09:06

    如何快速入門FPGA?

    時鐘管理模塊、嵌入式塊RAM、布線資源等。 學(xué)習FPGA編程語言: 掌握Verilog HDL(硬件描述語言)。Verilog用于數(shù)字電路的系統(tǒng)設(shè)計,具有簡潔的語法和清晰的仿真語義,非常適合
    發(fā)表于 04-28 08:54

    想學(xué)國產(chǎn)fpga,有推薦的嗎?

    各位大神,國產(chǎn)fpga那一款比較適合初學(xué)者呢?能推薦一下嗎?
    發(fā)表于 04-27 11:58

    國內(nèi)哪家的FPGA適合初學(xué)者

    如題,想著手學(xué)習FPGA的話,國內(nèi)哪家的比較好,更適合初學(xué)者學(xué)習?這方面的經(jīng)驗,是一點都沒。
    發(fā)表于 04-14 19:17

    PLD/FPGA基本使用問題

    ? 當需要對某一信號作一段延時時,初學(xué)者往往在此信號后串接一些非門或其它門電路,此方法在分離電路中是可行的。但在FPGA中,開發(fā)軟件在綜合設(shè)
    發(fā)表于 04-12 16:58

    FPGA芯片的工作原理和使用

    FPGA(現(xiàn)場可編程門陣列)芯片的使用和工作原理對于初學(xué)者來說,可能是一個相對復(fù)雜但非常有趣的學(xué)習領(lǐng)域。
    的頭像 發(fā)表于 03-27 14:59 ?1043次閱讀

    初學(xué)者請問各位大佬

    為什么在89C51單片機中R1可以提供低地址 在外部擴展RAM中不是P0口提供低8位地址P2口提供高8位地址嗎初學(xué)者有些不理解望各位大佬解答一下謝謝
    發(fā)表于 02-23 16:39

    初識FPGA需要關(guān)注的注意事項!

    1.基礎(chǔ)問題 FPGA的基礎(chǔ)就是數(shù)字電路和HDL語言,想學(xué)好FPGA的人,建議床頭都有一本數(shù)字電路的書,不管是哪個版本的,這個是基礎(chǔ),多了解也有助于形成硬件設(shè)計的思想。在語言方面,建
    發(fā)表于 02-22 10:57

    復(fù)雜電氣電路圖的查看方式

    對于許多初學(xué)者來說,看懂復(fù)雜的電路圖可能是一項挑戰(zhàn)。但是,通過掌握一些方法和技巧,你可以快速提高自己的讀圖能力。
    的頭像 發(fā)表于 01-23 09:22 ?1456次閱讀
    復(fù)雜電氣<b class='flag-5'>電路</b>圖的查看方式