內容簡介
VerilogSOPC高級實驗教程是為學習Verilog語言之後,想在FPGA上設計並實現嵌入式數字系統的人們而專門編寫的。本實驗教程是《Verilog數字系統設計教程》(第2版)的後續課程,是姊妹篇。本書通過由淺入深的10個實驗,詳細地介紹了ModelSim6.0和Quartus Ⅱ 8.1的操作步驟,扼要地介紹了QuartusⅡ8.1的主要設計資源和SOPCBuilder等工具的套用方法,並闡述了如何配合自己設計的Verilog模組和FPGA中的內嵌處理器NiosⅡ等現成IP資源,設計並實現高性能嵌入式硬體/軟體系統。本實驗教程也可以作為積體電路設計專業系統晶片(SOC)前端邏輯設計和驗證課程的實驗教材。為了使闡述的內容更加具體,本教程中的每個實驗均選用AlteraFPGA(型號為CycloneⅡEP2C35F672C8)實現,並在革新科技公司專業級實驗平台GXSOC/SOPC運行通過。
本書可作為電子信息、自動控制、計算機工程類大學本科高年級學生和研究生的教學用書,亦可供其他工程技術人員自學與參考。
前言
我們知道,經過仿真證明是正確的RTLVerilog模組可以通過EDA工具綜合成邏輯網表,並通過布局布線工具與物理電路對應起來。因此,正確無誤的RTLVerilog模組可以很方便地轉換成與某具體工藝對應的物理電路。這就是為什麼說RTLVerilog模組比固定電路具有更大靈活性的緣故。RTL模組不但可以映射到不同工藝和原理的基本電路,而且可以通過VerilogHDL語言支持的參數,將配置的參數值傳入RTL模組,從而產生靈活多變的系列物理電路。
在本實驗教程中,將從設計簡單的模組開始,將其參數化,又通過參數設定將其轉換成一個規模較大的電路。可以通過綜合工具將其轉變成邏輯網表,然後由布局布線工具將網錶轉換成某種FPGA晶片或某種工藝的物理電路。在本實驗教程中,為了方便起見,只將其轉換成AlteraCycloneⅡEP2C35FPGA實驗板上能運行的物理電路。首先經過modelsim仿真已被證明行為和時序都正確的Verilog模組,配置引腳後還需要進行一次布局布線,然後將所生成的物理電路檔案下載到CycloneⅡFPGA實驗板上,通過硬體運行,再一次驗證所設計的電路是正確的,這樣就有了一個隨時可以使用的RTL模組。逐個積累每個模組的設計資源,再將這些模組配合系統中已經有的宏模組構成很大的系統,從而完成具有自己智慧財產權的複雜晶片設計。由此可見,所謂SoC晶片前端的邏輯設計過程,其實只是在理解晶片(設計項目)的功能和原理基礎上,將其分割成可以操作的多個模組,逐塊加以實現和驗證,最後合在一起在大型FPGA上驗證的過程。
在AlteraQuartusⅡ8.1的工具包中包含許多已經驗證的宏模組(megacore),這些宏模組為設計者構建複雜數字系統提供了極大的便利。由於開發環境中已經有許多可以利用的資源,所以,合理地利用免費的或者需要付一定費用的技術資源能顯著加快設計的進度,提高設計的質量。這對數字系統設計師而言,無疑是一個很重要的環節,使得我們能對商業化的設計資源進行估價,根據市場的大小、上市進度,以及設計經費的預算等因素,迅速地做出採用商業化IP資源的權衡和決策,並加以實施。這些能力是SoC設計師應該具備的。
在本實驗教程中,第1講至第5講和實驗是為了介紹ModemSim仿真工具和QuartusⅡ綜合工具的使用,以及基本的設計方法、RTL功能仿真、時序仿真和硬體運行仿真的概念;第6講到第10講內容和實驗是為學習如何創建和利用現成的IP資源而專門設計的。
在本實驗教程的後面,有很大一部分涉及NiosⅡCPU核的使用。任何複雜的數字系統都離不開負責處理人機界面、數學計算、系統記憶體管理、進程管理,和外設管理等基本操作的CPU。學會利用AlteraQuartusⅡ的SopcBuilder工具,合理地配置系統所需要的嵌入式處理器核,並與自己設計的模組結合而構成一個完整的系統硬體架構,再配置合理的作業系統,並編寫應用程式對於SoC系統的前端設計都是非常重要的。
SoC晶片前端設計包括的內容非常廣泛,數字電路的設計只是基礎,而更多的內容涉及現成資源的合理配置和套用,特別是CPU資源的利用所涉及的面很廣,不但有計算機體系結構、外圍設備和作業系統的選擇問題,還有運算速度和輸入輸出資源配套等問題。具體的設計方法不但與想要實現系統的功能技術指標有關,還與各種EDA開發環境密切相關。因此編寫這樣的教材具有相當大的難度。作為教師只能為學生舉幾個具體例子,如配合想要設計的系統功能要求,做一定的合理劃分,給每個模組分配確定的技術指標;找到並熟悉宏函式館中的有關IP核的配置和使用;定義必須自己設計的IP核;在設計中將這些IP核的實例構成完整的硬體系統;編寫相應的軟體,並在硬體平台上進行實際運行調試。本書中的許多實驗是專門為以上教學目標而編寫的。
負責SoC設計課題的指導教師,應該挑選有學習主動性的學生,利用寒暑假,集中一至三月以上的時間,或者利用本科生的畢業設計時間,就系統原理、體系結構、現成資源的套用、作業系統的選擇和改進、套用軟體程式編制等主題進行深入的討論,分工協作共同完成設計任務,並對設計工作中的優缺點進行有針對性的講評,鼓勵有創造精神的學生。教師必須有意識地培養設計小組的團隊精神,唯有這樣才能加快培養我國新一代的SoC設計大師,爭取我國IC設計界的業務水準在未來的10年內逐步接近和趕上世界先進水平。
我們還將陸續推出一些用硬體實現快速算法基礎的原理性實驗資料。其目的是讓學生能通過實踐透徹地理解把複雜算法轉變成為特定硬體來提高運算速度的原理,從而理解算法性能的提高是與硬體設計密切相關的;靈活運用實驗教程中的原理,便於將其套用到課題研究中去。特定算法的硬體研究開發是嵌入式系統套用的重要方面之一,也是關係到國防電子產品和高級消費類電子產品發展的關鍵技術。
2006年我從北京航空航天大學退休後,先後受北京神州龍芯和巨數IC設計公司的邀請,到公司擔任培訓和顧問工作。本書的編寫工作是在巨數IC設計公司支持下完成的。本實驗教程的許多例子是從作者多年來為學校和公司培訓FPGA設計工程師而專門編寫的教材中精選的。2006年初我與革新科技公司合作,帶領四位碩士研究生楊雷、陳先勇、楊鑫、徐偉俊,根據革新科技公司提出的需求開發了一個由FPGA直接控制的LCD顯示器和配套的演示軟體。最後三講中的LCD控制器硬體/軟體接口實驗是根據這個項目,為實現教學目標,經多次簡化修改後定稿的。這個原創性的開發工作,對本實驗教程的技術水準有至關重要的影響。作為本實驗教程的合作者黃然、甘偉、陳岩和徐樹,在學習期間幫助作者核對和整理了本教材中從第1講到第10講的全部實驗資料。《VerilogSOPC高級實驗教程》是在這些實驗材料的基礎上,由我和所有這些年輕人經過多次共同討論,互相啟發,前後總共花費兩年半時間編寫成。初稿完成後,石家莊軍械學院的滿夢華老師認真審查了全書的實驗,並把所有插圖更新為QuartusⅡ8.0版本。特別應該感謝黃然工程師,他提出了許多寶貴的修改意見,把所有插圖更新為QuartusⅡ8.1版本,再次核對了所有實驗代碼,做了相應的文字調整,補充了關於軟體設計說明的小節,完成了所有思考題的標準答案,並且下載了必要的英文資料,刻錄了供出版用的,帶有所有課堂實驗和思考題解答原始碼和QuartusⅡ8.1工程檔案的光碟中,方便了讀者,提高了書的質量。全書的最後定稿由夏宇聞完成。
目錄
第1講ModelSimSE60的操作1
11創建設計檔案的目錄2
12編寫RTL代碼3
13編寫測試代碼3
14開始RTL仿真前的準備工作4
15編譯前的準備、編譯和載入5
16波形觀察器的設定5
17仿真的運行控制5
總結6
思考題6
第2講Quartus81入門8
21QuartusⅡ的基本操作知識8
22QuartusⅡ的線上幫助9
23建立新的設計項目9
24用線路原理圖為輸入設計電路12
241圖塊編輯器的使用12
242線路原理圖檔案與Verilog檔案之間的轉換16
25編譯器的使用16
26對已設計的電路進行仿真19
27對已布局布線的電路進行時序仿真20
總結21
思考題21
第3講用Altera器件實現電路23
31用CycloneⅡFPGA實現電路23
32晶片的選擇24
33項目的編譯26
34在FPGA中實現設計的電路27
總結35
思考題35
第4講參數化模組庫的使用37
41在QuartusⅡ下建立引用參數化模組的目錄和設計項目37
42在QuartusⅡ下進入設計資源引用環境37
43參數化加法-減法器的配置和確認38
44參數化加法器的編譯和時序分析43
45複雜算術運算的硬體邏輯實現43
總結44
思考題45
第5講鎖相環模組和SignalTap的使用48
51在QuartusⅡ下建立引用參數化模組的目錄和設計項目48
52在QuartusⅡ下進入設計資源引用環境49
53參數化鎖相環的配置和確認49
54參數化鎖相環配置後生成的Verilog代碼53
55參數化PLL的實例引用57
56設計模組電路引腳的分配59
57用ModelSim對設計電路進行布局布線後仿真圖60
58SignalTapⅡ的使用62
581SignalTapⅡ和其他邏輯電路調試工具的原理63
582調用SignalTapⅡ的方法63
583SignalTapⅡ的配置64
總結70
思考題71
第6講QuartusⅡSOPCBuilder的使用73
61QuartusⅡSOPCBuilder的總體介紹73
62SOPCBuilder人機界面的介紹73
63將NiosⅡ處理器核添加到系統75
64部件之間連線的確定76
65系統記憶體部件的確定及其在系統中的添加77
66系統構成部件的重新命名和系統的標識符78
67基地址和中斷請求優先權別的指定78
68NiosⅡ復位和異常地址的設定79
69NiosⅡ系統的生成79
610將配置好的NiosⅡ核集成到MyNiosSystem項目81
611用NiosⅡ軟體集成開發環境IDE建立用戶程式83
612軟體代碼解釋87
總結88
思考題和實驗88
第7講在NiosⅡ系統中融入IP91
71Avalon匯流排概況91
72設計模組和信號輸入電路簡介92
721LED陣列顯示接口的設計(leds_matrixv)92
722按鈕信號的輸入(buttonv)98
73硬體設計步驟100
731建一個目錄放置設計檔案100
732創建設計的組件101
733NiosⅡ系統的構成105
734對Verilog檔案的歸納和編寫設計項目的頂層檔案108
735用tcl檔案對FPGA引腳的定義110
736對項目的編譯113
737把編譯生成的電路配置代碼下載到FPGA114
74軟體設計步驟114
741建立軟體程式目錄並調用NiosⅡIDE114
742程式的運行118
總結118
思考題119
第8講LCD顯示控制器IP的設計121
81LCD顯示的相關概念介紹121
811點陣圖的基礎知識121
812點陣圖的尺寸122
813點陣圖顏色122
814地址的線性、矩形選擇122
815alpha混合122
816TFT-LCD彩色顯示控制時序圖123
817顯示器控制接口(IP)智慧財產權核介紹124
82顯示控制器IP核總體結構及其與嵌入式NiosⅡ處理器核的關係125
83連線埠信號的說明127
84顯示控制器IP核的基本操作128
85顯示控制器IP暫存器的說明128
851暫存器總體介紹128
852控制暫存器組129
853時序暫存器組130
854背景層相關暫存器組131
86模組劃分及模組功能簡介132
87LCDIP模組的測試137
88在SOPC系統中套用LCD顯示控制器IP核137
89構建SOPC系統145
810引腳分配151
811軟體開發153
812軟體代碼解釋158
總結158
思考題159
第9講BitBlt控制器IP161
91圖形加速及BitBLT相關概念介紹161
911點陣圖和BitBLT162
912調色板162
913顏色擴展163
914顏色鍵控163
915光柵操作163
92BitBLT控制器IP介紹164
921BitBLT控制器IP結構和系統結構框圖164
922BitBLT控制器IP暫存器說明166
923BitBLT控制器IP模組說明167
93BitBLT控制器IP使用示例169
931構建SOPC系統169
932引腳分配173
933軟體開發176
934軟體源程式182
935軟體代碼解釋189
總結190
思考題191
第10講複雜SOPC系統的設計192
101本講使用的主要組件簡介193
1011LCD控制器193
1012BitBLT控制器193
102硬體設計步驟193
1021QuartusⅡ工程的建立193
1022在工程中加入LCD控制器和BitBLT控制器194
1023NiosⅡ系統的構成194
1024編寫設計項目頂層檔案194
1025FPGA引腳定義194
1026編譯和下載項目194
103軟體開發194
1031軟體程式介紹194
1032軟體結構195
1033軟體源程式195
1034軟體代碼解釋203
總結203
思考題205
本書的結束語206
附錄GXSOC/SOPC專業級創新開發實驗平台207
附錄1GXSOC/SOPCDEV
LABPlatform開發實驗平台概述207
附錄2GXSOC/SOPCDEV
LABPlatform創新開發實驗平台簡介209
附錄3GXSOC/SOPCDEVLAB
Platform創新開發實驗平台的組成和結構210
附錄4GXSOPCEP2C35M672
CycloneⅡ核心板硬體資源介紹253
參考文獻259