衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

電子設計 ? 來源:FPGA技術聯盟 ? 作者:FPGA技術聯盟 ? 2020-11-13 16:02 ? 次閱讀

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

第一章:模塊書寫

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

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

圖 1 電路示意圖

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

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

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

功能:該電路實現 a 和 b 相與,結果為 c。

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

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

圖2 模塊代碼編輯示意

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

圖3 模塊代碼

代碼解析:

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

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

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

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

第二章節我們將會講解在ISE中如何驗證代碼是否有語法錯誤,以及將對應的代碼轉變成 RTL 電路。

第二章:電路綜合

第一章中已經將 a & b = c 對應的 Verilog HDL 程序寫出, 但是我們無法得知我們所寫的代碼是否有語法錯誤,也不知道代碼是否能夠按照我們的意思生成對應的電路。本章中我們將會使用 xilinx 公司的 ISE 軟件對所寫的程序進行綜合,從中可以得知代碼是否有語法錯誤,以及生成對應的 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 創建工程

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

圖 3 工程設置

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

圖4 添加 V 文件

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

圖 5 添加 V 文件后的工程

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

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

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

圖 7 展開后的 Synthesize 選項

雙擊 View RTL Schematic 選項,出現如圖8所示的界面。

圖 8 RTL 顯示選項頁面

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

圖 9 模塊模型

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

圖 10 RTL 電路

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

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

編輯:hfy

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

    關注

    1630

    文章

    21798

    瀏覽量

    606056
  • Xilinx
    +關注

    關注

    71

    文章

    2171

    瀏覽量

    122150
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137736
  • 硬件電路
    +關注

    關注

    39

    文章

    244

    瀏覽量

    29322
  • VerilogHDL
    +關注

    關注

    2

    文章

    39

    瀏覽量

    19132
收藏 人收藏

    評論

    相關推薦

    電子工程師的電路設計經驗分享

    本文分享了電子工程師在電路設計方面的豐富經驗,包括項目開發步驟、電路設計核心思想、元器件選擇與優化等內容,旨在幫助初學者快速提升電路設計能力。
    的頭像 發表于 01-21 15:13 ?127次閱讀

    基于FPGA的電子琴設計

    在之前也出了幾篇源碼系列,基本上都是一些小設計,源碼系列主要就會想通過實操訓練讓各位學習者,尤其是初學者去更好的理解學習FPGA,或者給要的學生提供一些源碼,之前設計過各個芯片的配置等
    的頭像 發表于 01-20 14:07 ?160次閱讀
    基于<b class='flag-5'>FPGA</b>的電子琴設計

    EE-269:以太網802.3初學者指南

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

    XD08M3232紅外感應單片機開發板適合初學者嗎?

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

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

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

    適合初學者的嵌入式項目有哪些?

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

    FPGA的學習筆記---FPGA的開發流程

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

    基于STM32的智能循跡小車

    初學者的智能小車
    的頭像 發表于 05-08 14:43 ?4089次閱讀
    基于STM32的智能循跡小車

    如何快速入門FPGA

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

    如何快速入門FPGA

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

    想學國產fpga,有推薦的嗎?

    各位大神,國產fpga那一款比較適合初學者呢?能推薦一下嗎?
    發表于 04-27 11:58

    國內哪家的FPGA適合初學者

    如題,想著手學習FPGA的話,國內哪家的比較好,更適合初學者學習?這方面的經驗,是一點都沒。
    發表于 04-14 19:17

    FPGA芯片的工作原理和使用

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

    初學者請問各位大佬

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

    初識FPGA需要關注的注意事項!

    1.基礎問題 FPGA的基礎就是數字電路和HDL語言,想學好FPGA的人,建議床頭都有一本數字電路的書,不管是哪個版本的,這個是基礎,多了解也有助于形成硬件設計的思想。在語言方面,建
    發表于 02-22 10:57
    德州扑克下载| 半圆百家乐官网桌布| 百家乐二人视频麻将| 新世纪娱乐城信誉怎么样| 网上百家乐官网娱乐平台| 皇冠网百家乐啊| 百家乐官网好赌吗| 威尼斯人娱乐城首存| 百家乐官网赌博详解| 线上百家乐怎么玩| 百家乐官网娱乐分析软件v4.0| 大发888手机下载| 番禺百家乐官网电器店| 大发888娱乐城客户端下载| rmb百家乐官网的玩法技巧和规则| 大发888 登陆不上| 三公百家乐官网在线哪里可以| 97玩棋牌游戏中心| 百家乐网上公式| 高密市| 百家乐赌场走势图| 百家乐官网输了好多钱| 免费百家乐的玩法技巧和规则| 任我赢百家乐官网软件中国有限公司| 金木棉百家乐的玩法技巧和规则| 利都百家乐官网国际娱乐场 | 澳门百家乐官网心| 德州扑克打法| 百家乐娱乐城提款| 百家乐官网开户送彩网址| 全讯网999| 24山分房法| 百家乐官网所有技巧| 威尼斯人娱乐城 104| 女优百家乐官网的玩法技巧和规则| 乐众国际| 缅甸百家乐娱乐场开户注册| 百家乐官网娱乐平台官网网| 中信娱乐城| 真人百家乐的玩法技巧和规则| 金殿百家乐官网的玩法技巧和规则|