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

2020-11-26 電子發燒友

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

FPGA技術聯盟 發表於 2020-11-13 16:02:12

本系列文章主要針對FPGA初學者編寫,包括FPGA的模塊書寫、基礎語法、狀態機、RAM、UART、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
打開APP閱讀更多精彩內容

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

相關焦點

  • 【從零開始走進FPGA】路在何方——Verilog快速入門
    HDL簡介  HDL : Hardware Discription Language 硬體描述語言,即描述FPGA/CPLD內部邏輯門的工作狀態,來實現一定電路。  隨著EDA技術的發展,使用硬體語言設計PLD/FPGA成為一種趨勢。目前硬體描述語言有VHDL、Verilog、Superlog、System C、Cynlib C++、C Level等。
  • 高雲半導體FPGA系列面世 為國產FPGA注入活力
    本文引用地址:http://www.eepw.com.cn/article/264914.htm  三大系列產品詳細情況如下:  1.擁有完全自主智慧財產權的現場可編程門陣列(FPGA)朝雲™產品系列  朝雲™產品系列在目前FPGA市場上處於中密度範圍,邏輯單元從18K LUT到100K LUT。
  • LabVIEW FPGA模塊在時鐘電路的運用
    打開APP LabVIEW FPGA模塊在時鐘電路的運用 技術編輯archive1 發表於 2017-11-18 05:54:01
  • 基於FPGA的八通道超聲探傷系統設計
    系統主要包含前端發射接收電路、八通道模數轉換電路,FPGA數據處理與邏輯控制系統和ARM後處理模塊4個部分組成。本文引用地址:http://www.eepw.com.cn/article/189499.htm
  • fpga應用領域_fpga應用三個主要方向
    並發是指重複分配計算資源,使得多個模塊之間可以同時獨立進行計算。      4)FPGA是ASIC電路中設計周期最短、開發費用最低、風險最小的器件之一。   5) FPGA採用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。   可以說,FPGA晶片是小批量系統提高系統集成度、可靠性的最佳選擇之一。那麼fpga的應用領域有哪些呢?主要的方向又是什麼呢?具體的跟隨小編來了解一下。
  • 基於FPGA的RS232行列式矩陣鍵盤接口設計
    -led2的顯示狀態可判斷晶片的工作情況;實現所有電路功能的程序均是在美國ALTERA公司生產的具有現場可編程功能的晶片EPM7128SLC84-15上調試通過的。 三、晶片設計數據接收模塊框圖如圖4所示。
  • FPGA設計開發軟體ISE使用技巧之:創建設計工程
    圖6.9 新建工程對話框  表6.1 頂層模塊類型說明  頂層模塊類型類 型 說 明  HDL硬體描述語言(Verilog或VHDL),用描述語言將各底層模塊連接起來  Schematic原理圖,頂層模塊可以用原理圖將各底層模塊連接起來,比較直觀  EDIF工業標準網表格式  NGC/NGO綜合後輸出的文件格式,可以直接被NGDBuild讀取  (3)設置工程屬性。
  • 一種基於FPGA的視頻圖像畫面分割器設計
    使電路的設計、調試得到了很大的改善。但是,設計中所使用的獨立的邏輯電路較多,有的甚至使用專用的DSP晶片去處理視頻畫面的分割。雖然可以滿足對視頻圖像數據處理速度的要求,但是還需要外加CPU去協調系統工作,使得整個系統仍顯得體積較大,而且系統成本較高。隨著半導體加工工藝的不斷發展,FPGA在結構、速度、工藝、集成度和性能方面都取得了很大的進步和提高。
  • FPGA初學者做時序最易忽視的幾個要點,每一項都很重要
    本文將從代碼風格,時序修正,工程設置等幾個方面介紹本人的實踐經驗,希望讓各位初學者快速提高,也希望FPGAer能給出寶貴建議。1.代碼風格推薦使用Xilinx language templates的代碼塊,這裡的代碼能夠綜合出正確且結構簡潔的電路,包括移位寄存器,乘法,複數乘法,FIR濾波器等,凡是涉及到的模塊儘量使用官方寫法。合理的設計代碼框架。
  • 9年FPGA工作經驗,轉行了,苦海無涯……
    工作了9年的fpga,總要總結…… 其實說我的fpga經驗,也是一坨屎。三年的,用altera的c3和c4 做led控制卡。2年的用lattice的MACHXO-XO2和ECP2做了視頻和網絡光端機,3年的XILINX的SPARTAN 6 做了視頻ISP處理,現在一年的xilinx的ZYNQ做機器視覺。
  • 教你三步看懂電路圖 初學者如何看懂電路圖
    新手在學習電路圖時如何才能看懂?物理知識比較差的學生怎樣看懂電路圖?下文有途網小編給大家整理了三步看懂電路圖的方法,供參考!如何讓你三步看懂電路圖1:充分利用基礎的物理公式和定律。2:多看,多分析電路圖。最方便的方法就是在百度上搜電路圖,一張張看過去,夠你看一天的。然後要注意糾錯,看看元器件的使用和數值是否正確,網上的東西也有很多是錯的。3:把想法直接變成原理圖,把原理圖直接變成電路板。現在打板比以前便宜了不少,10塊雙面也就大概七八十的樣子,也就幾頓飯錢。
  • 初學者怎麼才能快速學會自己設計電路
    很多剛參加工作的畢業生,初到公司卻感覺很迷茫,完全不知道怎麼設計電路,感覺自己所學的知識完全用不上,那麼初學者怎麼快速入門設計電路呢?電路設計,三分理論,七分實踐。所以很多剛畢業的學生不懂怎麼設計電路情有可原,光有專業知識還不行,缺乏實踐能力,往往會無從下手。
  • 基於SoC+FPGA平臺快速動態加載驅動開發及實現
    201605/291764.htm引言  OMAP-L138雙核處理器是TI公司推出的新一代低功耗單片系統(SoC),廣泛應用於通信、工業、醫療診斷和音視頻嵌入式設備,其內部集成的ARM核與DSP核協同工作,既能滿足基於嵌入式作業系統的通用應用程式開發,又能滿足專屬複雜算法的高效實時運行,再加上大容量FPGA晶片做數位訊號的前端處理,可作為較高速率的綜合通信數據業務處理通用數字平臺
  • 中國的FPGA處於什麼水準?發展前景分析
    fpga突出特點   可以說,FPGA晶片是小批量系統提高系統集成度、可靠性的最佳選擇之一。FPGA可做其它全定製或半定製ASIC電路的中試樣片。採用FPGA設計ASIC電路(專用集成電路),用戶不需要投片生產,就能得到合用的晶片。FPGA內部有豐富的觸發器和I/O引腳。
  • FPGA設計基礎之Verilog
    數字電路系統的設計者利用這種語言可以從上層到下層(從抽象到具體)逐層描述自己的設計思想,用一系列分層次的模塊來表示極其複雜的數字系統。然後利用電子設計自動化(以下簡稱為EDA)工具逐層進行仿真驗證,再把其中需要變為具體物理電路的模塊組合經由自動綜合工具轉換到門級電路網表。接下去再用專用集成電路(ASIC)或現場可編程門陣列(FPGA)自動布局布線工具把網錶轉換為具體電路布線結構的實現。
  • FPGA數據採集電子電路設計攻略
    模塊原理框圖FPGA內部邏輯功能強大,外圍電路設計基於簡單、可靠的原則。該模塊由FIFO、USB2.0單片機、光電隔離器等部分組成。模塊通過電源接口向各個部分供電。其原理框圖如圖1所示。FPGA配置電路FPGA是採用XILINX公司的Spantan-II系列XC2S100E,該系列器件的內核採用2.5 V供電,工作頻率高達200 MHz;I/O埠供電電壓為3.3 V,可承受5 V的輸入高電平。Spartan-II系列的FPGA具有豐富的I/O埠資源。
  • 科普FPGA是個啥?
    它是作為專用集成電路領域中的一種半定製電路而出現的,既解決了全定製電路的不足,又克服了原有可編程邏輯器件門電路數有限的缺點。」它就像一個盒子,裡面是各種邏輯門,你可以用這些門組成各種數字電路。所以,fpga編程本身指的就是編輯內部的電路結構。另外,給FPGA編程的語言就是硬體描述語言。
  • 幾個基礎模塊電路的詳細講解分析
    打開APP 幾個基礎模塊電路的詳細講解分析 電子工程專輯 發表於 2021-01-03 17:47:00 基本的模塊電路,熟練電路原理
  • 初學者應該如何選擇書寫方式
    許多初學者在學習書法的時候,都會遇到這麼一個困擾,到底應該不應該懸肘去寫字?這個問題對於書法家來說自然不會造成什麼困擾,但對於初學者來說,就十分的艱巨了。在選擇書寫方式之前,最先要了解是站坐姿勢。從魏晉時期開始,懸肘就變成了書法主流的書寫方式。但是這種主流拿到今天來講卻是行不通的。寫書法的目的是為了寫字,而書寫方式的選擇則是為了便於更好的書寫。無論是伏案還是懸肘,這些書寫技能都是為了寫字而存在的。如果脫離了實用性,那麼存在的本身也就沒有價值。
  • 初學者必讀:整流電路常見故障處理實操
    電子電路初學者必讀:整流電路常見故障處理實操本文是電子電路基礎性文章,我覺得大家有必要了解和掌握,特別是對初學的愛好者,很有幫助。檢查整流裝置故障,一般首先判斷故障的大致部位,由表及裡縮小範圍,最後找準故障所在。分析故障部位要依據電路原理,不能盲目更換元器件。