此文章內容節錄自本人筆記「使用Quartus與Verilog HDL設計FPGA應用_第一章_數位電路與HDL.docx」
相關教學筆記依能力指標共被劃分為四級:入門、初階、中階、高階,本筆記屬入門級。現今 PLDs(CPLD/FPGA)常被用應用於處理大量即時資料或平行高速計算的場合(如實作FFT ),假若讀者已掌握入門的內容,建議後續不要在七段顯示器、掃描鍵盤、LCD 等基礎周邊浪費時間,應把心力放在撰寫測試平台(test bench)上。
圖 1、講解 Quad-Output FFT Engine 的片段(來自 intel.com)
數位電路設計與實作,歷經了真空管、電晶體、小型積體電路(SSI)直至現今極大型積體電路(ULSI)等時期。早期小型積體電路所使用的方法,主要仰賴使用 7400 與 4000 系列等各式小型數位晶片,採用人力方式規劃拼湊組合出滿足目標功能的數位電路。
圖 3、使用 CPLD 設計的經典案例(三軸光學擷取單元)
Verilog HDL 與 VHDL 是現今硬體描述語言的主流,主要用於描述一個電路的行為,透過類似 Quartus、Vivado 等支援該標準的電子設計自動化工具(EDA Tools)進行一系列的編譯、模擬與實際驗證,產生出滿足目標 CPLD/FPGA 晶片或需的配置資料並下載到其中,完成最終的數位電路實作。
圖 4、1364-2005 - IEEE Standard 封面(來自 ieeexplore.ieee.org)此外 Verilog 也存在不同的標準版本,如 Verilog-95、Verilog-2001、Verilog-2005、SystemVerilog-2005(具 Verilog-2005 子集)、SystemVerilog-2009(合併 Verilog)、SystemVerilog-2017。基於 Quartus Prime 預設採用 Verilog-2001標準, 所以本系列筆記將皆以該標準為主。
圖 5、Quartus 編譯設定頁面由於 Verilog 可以方便調用 VHDL代碼,甚至能快速撰寫測試平台(test bench) 模擬 VHDL 所撰寫的模塊,所以吾人並不推薦在小規模 CPLD/FPGA 的應用場景中使用VHDL進行設計。儘管話雖如此,但後續把 VHDL 學好仍是必要的,畢竟這兩種硬體描述語言各有適合的應用場合。於此,讀者可以透過下方的範例代碼,初步了解一下VHDL與Verilog的風格差異。
圖 6、使用 VHDL 撰寫的計數器範例代碼(來自 intel.com)圖 7、使用 Verilog 撰寫的計數器範例代碼(來自 intel.com)
關於 Verilog 的版本,吾人可以再進一步精簡如下。
圖 8、使用 Verilog 撰寫的計數器範例代碼(較圖 7 精簡)對於大部份的 CPLD/FPGA EDA 開發工具而言,設計流程大致都相去不遠。但吾人仍要提醒讀者不要忽略模擬(Simulation)的重要性,一定要養成模擬的習慣!儘管初期使用七段顯示器、掃描鍵盤、點矩陣等周邊直接進行測試簡單又直覺、程式碼數量也不大,但往往需要解決抽象問題時,撰寫測試平台(test bench)的開發效率要遠高於使用實驗板周邊。
吾人對於入門級的設計流程建議如下:
1. 執行分析與合成 Analysis & Synthesis 。
2. 查看 RTL Viewr 確認合成結構狀況。
3. 進行 RTL 模擬(不考量實體延遲的理想功能模擬)。
4. 選定目標晶片與接腳配置。
5. 執行編譯 Complication。
6. 將資料下載至目標 CPLD/FPGA 上。
圖 9、Quartus Prime design flow(來自 intel.com)
於此,吾人分享自身經驗,以期減少讀者在學習過程中的障礙。
1. 不建議學習過於老舊的 Quartus 版本,例如 Quartus 9 已是吾人高三時期所發表的版本,也沒必要為了支援老舊的 Cyclone III (距今超過15年)去安裝 Quartus 13,沒事請用最新的工具 Quartus 22。
2. 對於學習 CPLD/FPGA 設計而言,吾人較重視讀者能透過撰寫測試平台(test bench)自行驗證 RTL 模擬功能的能力,畢竟這是開發效率較高的作法。初期會先演示波形模擬的方法,待讀者建立好觀念以後,後續測試將會把重心放在安排 test bench 資料輸出的技巧。
3. 電路如果採用暫存器、記憶體、解碼器等概念進行描述,該層次屬於暫存器轉移級別(register-transfer level, RTL)。而所謂邏輯閘級別的層次(gate level, GL),則代表電路皆採用基礎邏輯閘的概念進行描述。
4. Quartus 模擬又分 RTL Simulation 與 Gate Level Simulation,前者不會考慮延遲的問題,而後者會。由於 Intel 自 Arria V, Cyclone V, MAX 10, Stratix V 系列起不再支援 Gate level 模擬,請依官方建議使用 Timing Analyzer 進行靜態時序分析,後續再配合 Signaltap II 工具來作最後硬體驗證。
5. 為了避免讀者在學習過程中遭遇困難,另補充幾項前情概要
a. Intel FPGA Programming Cable 原為 Altera USB-Blaster Download Cable
b. Intel Quartus Prime 可視為 Altera Quartus 後續版本
c. QuestaSim 與 ModelSim 介面幾乎一樣,前者是後者的高階版。
d. 本筆記所配合之軟體版本為:Microsoft Windows 11 Pro 22H2 x64、Intel Quartus Prime 22.1.2 Lite Editon x64、Mentor Questa Intel Starter FPGA Editon 2021.04 x64。
參考資料:
1. Digital Design (4th Edition) by M. Morris Mano; Michael D. Ciletti [Pearson, 2007]
2. FFT IP Core User Guide [Intel, 2017]
https://cdrdv2-public.intel.com/667064/ug_fft-683374-667064.pdf
3. IEEE Standard Verilog Hardware Description Language, IEEE Std 1364-2001 [IEEE, 2001]
https://standards.ieee.org/ieee/1364/2052/
4. IEEE Standard for Verilog Hardware Description Language, IEEE Std 1364-2005 [IEEE, 2007]
https://standards.ieee.org/ieee/1364/3641/
5. VHDL: Behavioral Counter [intel.com]
6. Verilog HDL: Behavioral Counter [intel.com]
7. Intel Quartus Prime Design Software - Support Center [intel.com]
8. Intel Quartus Prime Standard Edition User Guide: Third-party Simulation
https://www.intel.com/content/www/us/en/docs/programmable/683080/22-1/simulation-levels.html
Comments
Post a Comment