《零點起飛學FPGA/零點起飛》以Verilog HDL語言為藍本,結合Altium Designer軟件、Quartus II軟件與ModelSim軟件的功能,通過豐富的實例,從實驗、實踐和實用的角度,詳細闡述了FPGA在電子系統中的應用。本書共9章,主要內容包括FPGA基礎知識、FPGA硬件電路的設計、Quartus II軟件操作基礎、Verilog HDL語言概述、面向綜合的行為描述語句、ModelSim仿真工具、面向驗證和仿真的行為描述語句、Verilog HDL語言設計進階、外設接口和綜合系統設計,全面詳細地闡述了FPGA的設計方法和開發過程。
《零點起飛學FPGA/零點起飛》由淺入深,從易到難,各章節既相對獨立又前后關聯,其最大特點是打破了傳統書籍的講解方法,以圖解方式敘述基本功能的應用與操作,并通過提示、技巧和注意的方式指導讀者對重點內容的理解,從而達到在實際產品設計中的熟練應用。本書每章配有習題,以指導讀者深入地進行學習。
本書既可作為高等學校電子系統設計課程的教材,也可作為電路設計及相關行業工程技術人員的技術參考書。
電子工業的飛速發展和電子計算機技術的廣泛應用,促進了電子設計自動化技術的日新月異。FPGA是英文Field Programmable Gate Array的縮寫,即現場可編程門陣列,它是在可編程陣列邏輯(PAL)、通用陣列邏輯(GAL)、復雜可編程邏輯器件(CPLD)等器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點,其廣泛應用于航空、航天、汽車、造船、通用機械和電子等工業的各個領域。
本書結合Verilog HDL硬件描述語言,以Altera公司的Quartus II軟件和Model Technology公司的ModelSim軟件作為FPGA軟件設計工具;同時,以Altium Designer軟件作為FPGA硬件電路設計工具,詳細闡述了FPGA軟硬件系統的設計方法和開發過程。
本書以Altium Designer軟件、Quartus II軟件和ModelSim軟件開發環境為背景,介紹FPGA產品開發的完整解決方案。本書共分9章,分別從FPGA硬件設計和FPGA軟件設計兩個方面進行闡述,主要內容包括FPGA基礎知識、FPGA硬件電路的設計、Quartus II軟件操作基礎、Verilog HDL語言概述、面向綜合的行為描述語句、ModelSim仿真工具、面向驗證和仿真的行為描述語句、Verilog HDL語言設計進階、外設接口和綜合系統設計等,最后通過大量的工程實例,將FPGA開發語言、開發思想和實際工程進行完美的結合。
為了使初學者迅速入門,提高對電子系統設計的興趣,并能在短時間內掌握電子系統設計開發的要點,作者在編寫過程中注意體現本書的以下特點:
由淺入深,循序漸進。本書在內容編排上遵循由淺入深、由易到難的原則,基礎知識與大量實例相結合,邊學邊練。
實例豐富,涉及面廣。本書提供了豐富的FPGA程序設計實例,內容涉及電子系統的各個領域。
兼顧原理,注重實用。本書側重于實際應用,精煉理論講解內容。考慮到基本原理和基本應用一直是學習FPGA技術的基本要求,為了緊隨FPGA技術的發展,在編寫過程中注重知識的新穎性和實用性,因而本書中講解了Quartus II參數化宏功能模塊、Quartus Ⅱ軟件與ModelSim軟件的聯合仿真等。
本書配套資料請到清華大學出版社網站下載,其中包含主要實例源文件、練習文件和電子課件,這些文件都被保存在與章節相對應的文件夾中。
本書第1~5章由黑龍江工程學院的武超群編寫,第6~8章由哈爾濱工程大學的高敬鵬編寫,參加本書編寫工作的人員還有楊敏、岳立雷、管殿柱、宋一兵、趙景波、張忠林、王獻紅、曹立文、魏賓、李文秋、初航、郭方方,在此表示衷心的感謝。
感謝您選擇了本書,希望我們的努力對您的工作和學習有所幫助,也希望您把對本書的意見和建議告訴我們。
零點工作室網站地址:www.zerobook.net
零點工作室聯系信箱:syb33@163.com
第1章 FPGA基礎知識1
1.1 通用數字集成電路1
1.1.1 TTL數字集成電路2
1.1.2 CMOS數字集成電路2
1.1.3 可編程邏輯器件3
1.2 FPGA的工藝結構5
1.3 FPGA技術的發展方向6
1.4 典型的FPGA芯片7
1.4.1 Altera公司的典型產品7
1.4.2 Xilinx公司的典型產品9
1.5 FPGA芯片的應用11
1.6 FPGA的設計流程12
1.7 FPGA的設計開發工具14
1.8 典型的FPGA產品設計軟件使用簡介15
1.8.1 Altium Designer Summer 09的安裝15
1.8.2 Altium Designer summer 09的啟動17
1.8.3 Altium Designer Summer 09的主頁界面管理20
1.8.4 Quartus II軟件的安裝22
1.8.5 Quartus II軟件的啟動25
1.8.6 Quartus II的主頁界面管理26
1.9 思考與練習27
第2章 FPGA硬件電路的設計28
2.1 硬件電路的設計流程28
2.2 FPGA最小系統29
2.1.1 FPGA芯片管腳介紹30
2.2.2 電源電路設計31
2.2.3 濾波電容電路模塊設計32
2.2.4 JTAG調試與AS下載電路的設計33
2.2.5 時鐘電路設計33
2.2.6 復位電路的設計34
2.2.7 鎖相環外圍電路的設計34
2.2.8 LED電路的設計35
2.2.9 高速SDRAM存儲器接口電路設計35
2.2.10 Flash存儲器接口電路設計36
2.2.11 FPGA最小系統擴展接口電路設計36
2.3 FPGA硬件系統的設計技巧37
2.4 FPGA硬件系統的調試方法38
2.5 綜合實例:FPGA最小硬件系統的設計39
2.6 思考與練習51
第3章 Quartus II軟件操作基礎52
3.1 Quartus II基本設計流程52
3.2 Quartus II基本設計操作53
3.2.1 工程創建53
3.2.2 設計輸入57
3.2.3 編譯項目60
3.2.4 設計文件的仿真61
3.2.5 引腳分配與器件編譯67
3.2.6 器件編程69
3.2.7 其他操作74
3.3 Quartus II參數化宏功能模塊及其使用方法77
3.3.1 LPM計數器的使用方法77
3.3.2 建立存儲器文件80
3.3.3 LPM存儲器ROM的使用方法81
3.3.4 LPM存儲器RAM的使用方法84
3.4 SignalTap II在線邏輯分析儀的使用方法86
3.4.1 SignalTap II介紹86
3.4.2 使用SignalTap II操作流程87
3.4.3 SignalTap II邏輯分析儀的使用88
3.5 典型實例:正弦波發生器及SignalTap II的使用96
3.6 思考與練習108
第4章 Verilog HDL語言概述109
4.1 硬件描述語言的概念109
4.2 Verilog HDL的產生與發展110
4.3 Verilog HDL語言的魅力111
4.3.1 Verilog HDL語言與VHDL語言的比較111
4.3.2 Verilog HDL與C語言的比較112
4.3.3 Verilog HDL的應用113
4.4 采用Verilog HDL設計復雜數字電路的優點113
4.5 Verilog HDL程序設計模式114
4.6 Verilog HDL程序基本結構115
4.6.1 Verilog HDL程序入門116
4.6.2 模塊的框架118
4.6.3 Verilog HDL語言的描述形式119
4.7 Verilog HDL語言基本要素128
4.7.1 標志符與注釋128
4.7.2 數字與邏輯數值129
4.7.3 數據類型131
4.7.4 常用運算符138
4.7.5 Verilog HDL語言的賦值144
4.7.6 Verilog HDL語言的關鍵詞145
4.8 典型實例:利用Verilog HDL語言在FPGA上實現LED流水燈146
4.9 思考與練習153
第5章 面向綜合的行為描述語句154
5.1 可綜合模型的設計154
5.2 觸發事件控制155
5.2.1 信號電平事件語句155
5.2.2 信號跳變沿事件語句156
5.3 條件語句157
5.3.1 if語句157
5.3.2 case語句158
5.3.3 條件語句的深入理解161
5.4 循環語句163
5.4.1 repeat語句163
5.4.2 while語句164
5.4.3 for語句165
5.5 任務與函數167
5.5.1 任務(task)語句167
5.5.2 函數(function)語句169
5.5.3 任務和函數的深入理解170
5.6 有限狀態機的設計171
5.6.1 有限狀態機的分類172
5.6.2 有限狀態機的狀態編碼173
5.6.3 有限狀態機設計方法174
5.6.4 設計可綜合狀態機的指導原則179
5.6.5 有限狀態機設計實例180
5.7 Quartus II圖形化狀態機輸入工具使用181
5.8 Verilog HDL語言實現組合邏輯電路186
5.9 Verilog HDL語言實現時序邏輯電路188
5.10 硬件描述語言設計基礎實例189
5.10.1 8-3編碼器189
5.10.2 3-8譯碼器190
5.10.3 數據選擇器191
5.10.4 多位數值比較器193
5.10.5 全加器193
5.10.6 D觸發器195
5.10.7 寄存器196
5.10.8 雙向移位寄存器197
5.10.9 四位二進制加減法計數器198
5.10.10 順序脈沖發生器199
5.10.11 序列信號發生器201
5.11 思考與練習201
第6章 ModelSim仿真工具203
6.1 ModelSim仿真工具簡介203
6.1.1 菜單欄204
6.1.2 工具欄216
6.1.3 工作區216
6.1.4 命令窗口217
6.1.5 MDI窗口217
6.1.6 狀態欄217
6.1.7 定制用戶界面217
6.2 ModelSim的命令與文件218
6.2.1 vlib命令219
6.2.2 vmap命令219
6.2.3 vcom命令220
6.2.4 vlog命令221
6.2.5 vsim命令222
6.2.6 force命令223
6.2.7 add wave命令225
6.2.8 run命令226
6.2.9 DO命令227
6.2.10 宏命令227
6.3 ModelSim仿真工具安裝與使用230
6.3.1 ModelSim的安裝231
6.3.2 在Quartus II中直接調用ModelSim軟件進行時序仿真231
6.3.3 使用ModelSim軟件直接進行功能仿真235
6.4 典型實例:SDRAM讀寫控制的實現與ModelSim仿真238
6.4.1 SDRAM簡介238
6.4.2 SDRAM控制器的ModelSim仿真241
6.5 思考與練習243
第7章 面向驗證和仿真的行為描述語句244
7.1 驗證與仿真概述244
7.1.1 收斂模型245
7.1.2 測試平臺說明245
7.1.3 驗證測試方法論247
7.1.4 Testbench結構說明251
7.2 仿真程序執行原理252
7.3 延時控制語句254
7.4 常用的行為仿真描述語句257
7.4.1 循環語句257
7.4.2 force和release語句259
7.4.3 wait語句260
7.4.4 事件控制語句261
7.4.5 task和function語句262
7.4.6 串行激勵與并行激勵語句263
7.5 用戶自定義元件264
7.6 仿真激勵的產生267
7.6.1 變量初始化267
7.6.2 時鐘信號的產生270
7.6.3 復位信號的產生271
7.6.4 數據信號的產生272
7.6.5 測試向量的產生274
7.6.6 關于仿真效率的說明275
7.7 典型實例:全加器的驗證與仿真276
7.8 思考與練習280
第8章 Verilog HDL語言設計進階281
8.1 系統任務281
8.1.1 輸出顯示任務281
8.1.2 文件輸入輸出任務287
8.1.3 時間標度任務291
8.1.4 仿真控制任務293
8.1.5 仿真時間函數294
8.1.6 數字類型變換函數295
8.1.7 概率分布函數296
8.2 編譯預處理297
8.2.1 宏定義`define語句298
8.2.2 條件編譯命令`if語句300
8.2.3 文件包含`include語句301
8.2.4 時間尺度`timescale語句303
8.2.5 其他語句304
8.3 Verilog HDL語言的代碼風格305
8.3.1 Verilog HDL語言的基本原則306
8.3.2 Verilog HDL語言的編寫規范309
8.3.3 Verilog HDL語言的處理技巧314
8.4 思考與練習316
第9章 外設接口和綜合系統設計318
9.1 外設接口實驗318
9.1.1 數碼管顯示接口實驗318
9.1.2 LCD液晶顯示接口實驗326
9.1.3 VGA顯示接口實驗334
9.1.4 RS-232C串行通信接口實驗338
9.1.5 PS2鍵盤接口實驗346
9.2 綜合系統設計360
9.2.1 實時溫度采集系統360
9.2.2 實時紅外采集系統378