內容簡介
本書系統地介紹了EDA技術和VerilogHDL硬體描述語言,將VerilogHDL的基礎知識、編程技巧和實用方法與實際工程開發技術在先進的EDA設計平台——QuartusII上很好地結合起來,使讀者通過本書的學習能迅速了解並掌握EDA技術的基本理論和工程開發實用技術,為後續的深入學習和發展打下堅實的理論與實踐基礎。
作者依據高校課堂教學和實驗操作的規律與要求,並以提高學生的實際工程設計能力和自主創新能力為目的,恰當編排了全書內容。全書共分為7個部分:EDA技術的概述、VerilogHDL語法知識及其實用技術、QuartusII及LPM宏模組的詳細使用方法、基於Verilog的有限狀態機設計技術、基於Verilog的16位實用CPU設計技術及創新實踐項目、基於ModelSim的TestBench仿真技術,以及基於MATLAB和DSPBuilder平台的EDA設計技術及大量實用系統設計示例。
圖書目錄
第1章EDA技術概述 1
1.1EDA技術 1
1.2EDA技術套用對象 2
1.3常用HDL和VerilogHDL 3
1.4EDA技術的優勢 5
1.5面向FPGA的EDA開發流程 6
1.5.1設計輸入 6
1.5.2綜合 7
1.5.3適配(布線布局) 9
1.5.4仿真 10
1.5.5RTL描述 10
1.6可程式邏輯器件 11
1.6.1PLD的分類 11
1.6.2PROM可程式原理 12
1.6.3GAL 14
1.7CPLD的結構與可程式原理 15
1.8FPGA的結構與工作原理 18
1.8.1查找表邏輯結構 18
1.8.2CycloneIII系列器件的結構原理 19
1.9硬體測試技術 22
1.9.1內部邏輯測試 22
1.9.2JTAG邊界掃描測試 22
1.10編程與配置 23
1.11QuartusII 24
1.12IP核 25
1.13EDA的發展趨勢 26
習題 27
第2章Verilog程式結構與數據類型 29
2.1Verilog程式結構 29
2.1.1Verilog的模組的表達方式 30
2.1.2Verilog模組的連線埠信號名和連線埠模式 30
2.1.3Verilog信號類型定義 31
2.1.4Verilog模組功能描述 32
2.2Verilog數據類型 32
2.2.1net網線類型 33
2.2.2wire網線型變數的定義方法 33
2.2.3register暫存器類型 34
2.2.4reg暫存器型變數的定義方法 34
2.2.5integer整數型暫存器類型變數定義方法 35
2.2.6存儲器類型 35
2.3Verilog基本要素與文字規則 37
2.3.1Verilog的4種邏輯狀態 37
2.3.2Verilog的數字表達形式 37
2.3.3數據類型表示方式 38
2.3.4常量 39
2.3.5標識符、關鍵字及其他文字規則 40
2.3.6參數定義關鍵字parameter和localparam的用法 42
習題 42
第3章Verilog行為語句 44
3.1過程語句 44
3.1.1always語句 44
3.1.2always語句在D觸發器設計中的套用 46
3.1.3多過程套用與異步時序電路設計 47
3.1.4簡單加法計數器及其Verilog表述 47
3.1.5initial語句 48
3.2塊語句 50
3.3case條件語句 50
3.4if條件語句 52
3.4.1if語句的一般表述形式 52
3.4.2基於if語句的組合電路設計 53
3.4.3基於if語句的時序電路設計 55
3.4.4含異步復位和時鐘使能的D觸發器的設計 56
3.4.5含同步復位控制的D觸發器的設計 57
3.4.6含清零控制的鎖存器的設計 58
3.4.7時鐘過程表述的特點和規律 59
3.4.8實用加法計數器設計 60
3.4.10關注if語句中的條件指示 63
3.5過程賦值語句 64
3.6循環語句 65
3.6.1for語句 65
3.6.2while語句 66
3.6.3repeat語句 67
3.6.4forever語句 67
3.7任務與函式語句 68
習題 70
第4章時序仿真與硬體實現 72
4.1Verilog程式輸入與仿真測試 72
4.1.1編輯和輸入設計檔案 72
4.1.2創建工程 73
4.1.3全程編譯前約束項目設定 74
4.1.4全程綜合與編譯 75
4.1.5仿真測試 77
4.1.6RTL圖觀察器套用 79
4.2引腳鎖定與硬體測試 79
4.2.1引腳鎖定 79
4.2.2編譯檔案下載 81
4.2.3JTAG間接編程模式 82
4.2.4USB-Blaster驅動程式安裝方法 83
4.3電路原理圖設計流程 83
4.3.1用原理圖輸入方式設計半加器 84
4.3.2完成全加器頂層設計 85
4.3.3對全加器進行時序仿真和硬體測試 86
4.4利用屬性表述實現引腳鎖定 87
4.5宏模組邏輯功能查詢 88
4.6SignalTapII的使用方法 88
4.7編輯SignalTapII的觸發信號 93
習題 94
實驗與設計 95
實驗4-2十六進制7段數碼顯示解碼器設計 95
實驗4-38位硬體乘法器設計實驗 97
實驗4-5計數器設計實驗 101
實驗4-6數碼掃描顯示電路設計 101
實驗4-7半整數與奇數分頻器設計 102
實驗4-8串列靜態顯示控制電路設計 104
第5章Verilog運算符與結構描述語句 105
5.1運算操作符 105
5.1.1按位邏輯操作符 105
5.1.2邏輯運算操作符 106
5.1.3算術運算操作符 106
5.1.4關係運算操作符 107
5.1.5BCD碼加法器設計示例 108
5.1.6縮位操作符 109
5.1.7並位操作符 110
5.1.8移位操作符套用法 110
5.1.9使用移位操作符的設計示例 110
5.1.10條件操作符 111
5.2連續賦值語句 112
5.3例化語句 113
5.3.1半加器設計 113
5.3.2全加器設計 114
5.3.3Verilog例化語句及其用法 114
5.4參數傳遞語句套用 116
5.5用庫元件實現結構描述 117
5.6用戶自定義元件(UDP) 119
5.6.1UDP組合元件設計 119
5.6.2UDP時序元件設計 120
5.7編譯指示語句 123
5.7.1宏定義命令語句 123
5.7.2檔案包含語句'include 124
5.7.3條件編譯命令語句'ifdef、'else、'endif 124
5.8keep屬性套用 125
5.9SignalProbe使用方法 126
習題 128
實驗與設計 130
實驗5-1高速硬體除法器設計實驗 130
實驗5-3基於Verilog代碼的頻率計設計 130
實驗5-48位加法器設計實驗 132
實驗5-5VGA彩條信號顯示控制電路設計 132
第6章LPM宏模組的套用 137
6.1計數器LPM宏模組調用 137
6.1.1計數器LPM模組文本代碼的調用 137
6.1.2LPM計數器代碼與參數傳遞語句套用 138
6.1.3創建工程與仿真測試 140
6.2利用屬性控制乘法器的構建 141
6.3LPM_RAM宏模組的設定與使用 142
6.3.1初始化檔案及其生成 142
6.3.2以原理圖方式對LPM_RAM進行設定和調用 144
6.3.3測試LPM_RAM 146
6.3.4Verilog代碼描述的存儲器初始化檔案載入表述 147
6.3.5存儲器設計的結構控制 148
6.4LPM_ROM的定製和使用示例 150
6.4.2正弦信號發生器硬體實現和測試 151
6.5在系統存儲器數據讀寫編輯器套用 152
6.6LPM嵌入式鎖相環調用 153
6.6.1建立嵌入式鎖相環元件 154
6.6.2測試鎖相環 156
6.7In-SystemSourcesandProbesEditor使用方法 156
6.8數控振盪器核使用方法 159
6.9FIR核使用方法 161
6.10DDS實現原理與套用 162
6.10.1DDS原理 163
習題 166
實驗與設計 166
實驗6-1查表式硬體運算器設計 166
實驗6-4DDS正弦信號發生器設計 169
實驗6-5移相信號發生器設計 169
實驗6-6AM幅度調製信號發生器設計 170
實驗6-7硬體消抖動電路設計 171
第7章Verilog設計深入 173
7.1過程中的兩類賦值語句 173
7.1.1未指定延時的阻塞式賦值語句 173
7.1.2指定了延時的阻塞式賦值 174
7.1.3未指定延時的非阻塞式賦值 175
7.1.4指定了延時的非阻塞式賦值 176
7.1.5深入認識阻塞式與非阻塞式賦值的特點 177
7.1.6不同的賦初值方式導致不同綜合結果的示例 179
7.2過程語句深入探討 181
7.2.1過程語句套用總結 181
7.2.2深入認識不完整條件語句與時序電路的關係 182
7.3三態與雙向連線埠設計 183
7.3.1三態控制電路設計 184
7.3.2雙向連線埠設計 184
7.3.3三態匯流排控制電路設計 186
7.4資源最佳化 188
7.4.1資源共享 188
7.4.2邏輯最佳化 189
7.4.3串列化 190
7.5速度最佳化 191
7.5.1流水線設計 191
7.5.3桌球操作法 194
7.5.4加法樹法 194
習題 195
實驗與設計 197
實驗7-14×4陣列鍵盤鍵信號檢測電路設計 197
實驗7-3VGA簡單圖像顯示控制模組設計 199
實驗7-4樂曲硬體演奏電路設計 200
實驗7-5PS2鍵盤控制模型電子琴電路設計 204
實驗7-6SPWM脈寬調製控制系統設計 207
第8章Verilog狀態機設計技術 210
8.1Verilog狀態機的一般形式 210
8.1.1狀態機的特點與優勢 211
8.1.2狀態機的一般結構 212
8.1.3初始控制與表述 215
8.2Moore型狀態機及其設計 216
8.2.1多過程結構狀態機 216
8.2.2序列檢測器及其狀態機設計 220
8.3Mealy型狀態機設計 221
8.4不同編碼類型狀態機 224
8.4.1直接輸出型編碼 224
8.4.2用宏定義語句定義狀態編碼 226
8.4.3順序編碼 227
8.4.4一位熱碼編碼 228
8.4.5狀態編碼設定 228
8.5異步狀態機設計 230
8.6安全狀態機設計 233
8.6.1狀態導引法 233
8.6.2狀態編碼監測法 234
8.6.3藉助EDA工具自動生成安全狀態機 235
習題 235
實驗與設計 236
實驗8-1序列檢測器設計 236
實驗8-2ADC採樣控制電路設計 236
實驗8-4五功能智慧型邏輯筆設計 239
第9章基於Verilog的實用CPU創新設計 241
9.1KX9016的結構與特色 241
9.2KX9016基本硬體系統設計 244
9.2.1單步節拍發生模組 244
9.2.2ALU模組 245
9.2.3比較器模組 245
9.2.4基本暫存器與暫存器陣列組 246
9.2.5移位器模組 248
9.2.6程式與數據存儲器模組 249
9.3KX9016v1指令系統設計 249
9.3.1指令格式 250
9.3.2指令操作碼 251
9.3.3軟體程式設計示例 252
9.3.4KX9016v1控制器設計 254
9.3.5指令設計示例詳解 258
9.4KX9016的時序仿真與硬體測試 259
9.4.1時序仿真與指令執行波形分析 259
9.4.2CPU工作情況的硬體測試 261
9.5KX9016應用程式設計示例和系統最佳化 263
9.5.1除法算法及其硬體實現 263
9.5.2乘法算法及其硬體實現 264
9.5.3KX9016v1的硬體系統最佳化 265
習題 266
實驗與設計 267
實驗9-116位CPU驗證性設計綜合實驗 267
實驗9-2新指令設計及程式測試實驗 267
實驗9-316位CPU的最佳化設計與創新 268
實驗9-4CPU創新設計競賽 269
第10章VerilogTestBench仿真 271
10.1Verilog行為仿真流程 272
10.2Verilog測試基準示例 274
10.3VerilogTestBench測試流程 276
10.4Verilog系統任務和系統函式 279
10.4.1系統任務和系統函式 279
10.4.2預編譯語句 285
10.5延時模型 285
10.5.1#延時和門延時 286
10.5.2延時說明塊 286
10.6其他仿真語句 287
10.6.1fork-join塊語句 287
10.6.2wait語句 288
10.6.3force、release語句 288
10.6.4deassign語句 289
10.7仿真激勵信號的產生 289
10.8Verilog數字系統仿真 291
習題 292
實驗 292
實驗10-1在ModelSim上對計數器的TestBench進行仿真 292
實驗10-2在ModelSim上進行16位累加器設計仿真 292
第11章DSPBuilder設計初步 294
11.1MATLAB/DSPBuilder及其設計流程 294
11.2正弦信號發生器設計 297
11.2.1建立設計模型 297
11.2.2Simulink模型仿真 303
11.2.3SignalCompiler使用方法 307
11.2.4使用ModelSim進行RTL級仿真 308
11.2.5使用QuartusII實現時序仿真 310
11.2.6硬體測試與硬體實現 310
11.3DSPBuilder層次化設計 311
11.4基於DSPBuilder的DDS設計 314
11.4.1DDS模組設計 314
11.4.2FSK調製器設計 316
11.4.3正交信號發生器設計 318
11.4.4數控移相信號發生器設計 319
11.4.5幅度調製信號發生器設計 320
11.5數字編碼與解碼器設計 321
11.5.2幀同步檢出 323
11.6HIL硬體仿真 325
習題 329
實驗與設計 329
實驗11-1利用MATLAB/DSPBuilder設計基本電路模組 329
實驗11-2基於DSPBuilder的DDS套用模型設計 330
實驗11-3編解碼器設計實驗 332
實驗11-4HIL硬體環仿真實驗 332
實驗11-5DSPBuilder狀態機套用實驗 333
第12章DSPBuilder設計深入 335
12.1FIR數字濾波器設計 335
12.1.2使用DSPBuilder設計FIR濾波器 336
12.1.3使用MATLAB的濾波器設計工具 341
12.1.4使用FIRIPCore設計FIR濾波器 346
12.2HDL模組插入仿真與設計 350
12.4NCOIP核套用 354
12.5基於IP的數字編解碼器設計 356
習題 358
實驗與設計 359
實驗12-1FIR數字濾波器設計實驗 359
實驗12-2編解碼器與調製解調模組設計實驗 360
實驗12-3HDLImport模組套用實驗 360
參考文獻 361
附錄AEDA開發系統及相關軟硬體 362
A.1KX_DN8系列EDA/SOPC系統 363
A.2部分實驗擴展模組 365
A.3.mif檔案生成器使用方法 366