目 錄
第1章 EDA技術概述 1
1.1 EDA技術 1
1.2 EDA技術應用對象 2
1.3 常用HDL和Verilog HDL 3
1.4 EDA技術的優勢 5
1.5 麵嚮FPGA的EDA開發流程 6
1.5.1 設計輸入 6
1.5.2 綜閤 7
1.5.3 適配(布綫布局) 9
1.5.4 仿真 10
1.5.5 RTL描述 10
1.6 可編程邏輯器件 11
1.6.1 PLD的分類 11
1.6.2 PROM可編程原理 12
1.6.3 GAL 14
1.7 CPLD的結構與可編程原理 15
1.8 FPGA的結構與工作原理 18
1.8.1 查找錶邏輯結構 18
1.8.2 Cyclone III係列器件的結構原理 19
1.9 硬件測試技術 22
1.9.1 內部邏輯測試 22
1.9.2 JTAG邊界掃描測試 22
1.10 編程與配置 23
1.11 Quartus II 24
1.12 IP核 25
1.13 EDA的發展趨勢 26
習題 27
第2章 Verilog程序結構與數據類型 29
2.1 Verilog程序結構 29
2.1.1 Verilog的模塊的錶達方式 30
2.1.2 Verilog模塊的端口信號名和端口模式 30
2.1.3 Verilog信號類型定義 31
2.1.4 Verilog模塊功能描述 32
2.2 Verilog數據類型 32
2.2.1 net網綫類型 33
2.2.2 wire網綫型變量的定義方法 33
2.2.3 register寄存器類型 34
2.2.4 reg寄存器型變量的定義方法 34
2.2.5 integer整數型寄存器類型變量定義方法 35
2.2.6 存儲器類型 35
2.3 Verilog基本要素與文字規則 37
2.3.1 Verilog的4種邏輯狀態 37
2.3.2 Verilog的數字錶達形式 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.1 always語句 44
3.1.2 always語句在D觸發器設計中的應用 46
3.1.3 多過程應用與異步時序電路設計 47
3.1.4 簡單加法計數器及其Verilog錶述 47
3.1.5 initial語句 48
3.2 塊語句 50
3.3 case條件語句 50
3.4 if條件語句 52
3.4.1 if語句的一般錶述形式 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.9 含同步預置功能的移位寄存器設計 62
3.4.10 關注if語句中的條件指示 63
3.5 過程賦值語句 64
3.6 循環語句 65
3.6.1 for語句 65
3.6.2 while語句 66
3.6.3 repeat語句 67
3.6.4 forever語句 67
3.7 任務與函數語句 68
習題 70
第4章 時序仿真與硬件實現 72
4.1 Verilog程序輸入與仿真測試 72
4.1.1 編輯和輸入設計文件 72
4.1.2 創建工程 73
4.1.3 全程編譯前約束項目設置 74
4.1.4 全程綜閤與編譯 75
4.1.5 仿真測試 77
4.1.6 RTL圖觀察器應用 79
4.2 引腳鎖定與硬件測試 79
4.2.1 引腳鎖定 79
4.2.2 編譯文件下載 81
4.2.3 JTAG間接編程模式 82
4.2.4 USB-Blaster驅動程序安裝方法 83
4.3 電路原理圖設計流程 83
4.3.1 用原理圖輸入方式設計半加器 84
4.3.2 完成全加器頂層設計 85
4.3.3 對全加器進行時序仿真和硬件測試 86
4.4 利用屬性錶述實現引腳鎖定 87
4.5 宏模塊邏輯功能查詢 88
4.6 SignalTap II的使用方法 88
4.7 編輯SignalTap II的觸發信號 93
習題 94
實驗與設計 95
實驗4-1 多路選擇器設計實驗 95
實驗4-2 十六進製7段數碼顯示譯碼器設計 95
實驗4-3 8位硬件乘法器設計實驗 97
實驗4-4 應用宏模塊設計數字頻率計 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.5 BCD碼加法器設計示例 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.3 Verilog例化語句及其用法 114
5.4 參數傳遞語句應用 116
5.5 用庫元件實現結構描述 117
5.6 用戶自定義元件(UDP) 119
5.6.1 UDP組閤元件設計 119
5.6.2 UDP時序元件設計 120
5.7 編譯指示語句 123
5.7.1 宏定義命令語句 123
5.7.2 文件包含語句'include 124
5.7.3 條件編譯命令語句'ifdef、'else、'endif 124
5.8 keep屬性應用 125
5.9 SignalProbe使用方法 126
習題 128
實驗與設計 130
實驗5-1 高速硬件除法器設計實驗 130
實驗5-2 不同類型的移位寄存器設計實驗 130
實驗5-3 基於Verilog代碼的頻率計設計 130
實驗5-4 8位加法器設計實驗 132
實驗5-5 VGA彩條信號顯示控製電路設計 132
實驗5-6 移位相加型8位硬件乘法器設計 135
第6章 LPM宏模塊的應用 137
6.1 計數器LPM宏模塊調用 137
6.1.1 計數器LPM模塊文本代碼的調用 137
6.1.2 LPM計數器代碼與參數傳遞語句應用 138
6.1.3 創建工程與仿真測試 140
6.2 利用屬性控製乘法器的構建 141
6.3 LPM_RAM宏模塊的設置與使用 142
6.3.1 初始化文件及其生成 142
6.3.2 以原理圖方式對LPM_RAM進行設置和調用 144
6.3.3 測試LPM_RAM 146
6.3.4 Verilog代碼描述的存儲器初始化文件加載錶述 147
6.3.5 存儲器設計的結構控製 148
6.4 LPM_ROM的定製和使用示例 150
6.4.1 簡易正弦信號發生器設計 150
6.4.2 正弦信號發生器硬件實現和測試 151
6.5 在係統存儲器數據讀寫編輯器應用 152
6.6 LPM嵌入式鎖相環調用 153
6.6.1 建立嵌入式鎖相環元件 154
6.6.2 測試鎖相環 156
6.7 In-System Sources and Probes Editor使用方法 156
6.8 數控振蕩器核使用方法 159
6.9 FIR核使用方法 161
6.10 DDS實現原理與應用 162
6.10.1 DDS原理 163
6.10.2 DDS信號發生器設計示例 165
習題 166
實驗與設計 166
實驗6-1 查錶式硬件運算器設計 166
實驗6-2 正弦信號發生器設計 167
實驗6-3 簡易邏輯分析儀設計 167
實驗6-4 DDS正弦信號發生器設計 169
實驗6-5 移相信號發生器設計 169
實驗6-6 AM幅度調製信號發生器設計 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.2 關鍵路徑法 193
7.5.3 乒乓操作法 194
7.5.4 加法樹法 194
習題 195
實驗與設計 197
實驗7-1 4×4陣列鍵盤鍵信號檢測電路設計 197
實驗7-2 直流電機綜閤測控係統設計 198
實驗7-3 VGA簡單圖像顯示控製模塊設計 199
實驗7-4 樂麯硬件演奏電路設計 200
實驗7-5 PS2鍵盤控製模型電子琴電路設計 204
實驗7-6 SPWM脈寬調製控製係統設計 207
第8章 Verilog狀態機設計技術 210
8.1 Verilog狀態機的一般形式 210
8.1.1 狀態機的特點與優勢 211
8.1.2 狀態機的一般結構 212
8.1.3 初始控製與錶述 215
8.2 Moore型狀態機及其設計 216
8.2.1 多過程結構狀態機 216
8.2.2 序列檢測器及其狀態機設計 220
8.3 Mealy型狀態機設計 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-2 ADC采樣控製電路設計 236
實驗8-3 數據采集模塊設計 237
實驗8-4 五功能智能邏輯筆設計 239
第9章 基於Verilog的實用CPU創新設計 241
9.1 KX9016的結構與特色 241
9.2 KX9016基本硬件係統設計 244
9.2.1 單步節拍發生模塊 244
9.2.2 ALU模塊 245
9.2.3 比較器模塊 245
9.2.4 基本寄存器與寄存器陣列組 246
9.2.5 移位器模塊 248
9.2.6 程序與數據存儲器模塊 249
9.3 KX9016v1指令係統設計 249
9.3.1 指令格式 250
9.3.2 指令操作碼 251
9.3.3 軟件程序設計示例 252
9.3.4 KX9016v1控製器設計 254
9.3.5 指令設計示例詳解 258
9.4 KX9016的時序仿真與硬件測試 259
9.4.1 時序仿真與指令執行波形分析 259
9.4.2 CPU工作情況的硬件測試 261
9.5 KX9016應用程序設計示例和係統優化 263
9.5.1 除法算法及其硬件實現 263
9.5.2 乘法算法及其硬件實現 264
9.5.3 KX9016v1的硬件係統優化 265
習題 266
實驗與設計 267
實驗9-1 16位CPU驗證性設計綜閤實驗 267
實驗9-2 新指令設計及程序測試實驗 267
實驗9-3 16位CPU的優化設計與創新 268
實驗9-4 CPU創新設計競賽 269
第10章 Verilog Test Bench仿真 271
10.1 Verilog行為仿真流程 272
10.2 Verilog測試基準示例 274
10.3 Verilog Test Bench測試流程 276
10.4 Verilog係統任務和係統函數 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.1 fork-join塊語句 287
10.6.2 wait語句 288
10.6.3 force、release語句 288
10.6.4 deassign語句 289
10.7 仿真激勵信號的産生 289
10.8 Verilog數字係統仿真 291
習題 292
實驗 292
實驗10-1 在ModelSim上對計數器的Test Bench進行仿真 292
實驗10-2 在ModelSim上進行16位纍加器設計仿真 292
第11章 DSP Builder設計初步 294
11.1 MATLAB/DSP Builder及其設計流程 294
11.2 正弦信號發生器設計 297
11.2.1 建立設計模型 297
11.2.2 Simulink模型仿真 303
11.2.3 SignalCompiler使用方法 307
11.2.4 使用ModelSim進行RTL級仿真 308
11.2.5 使用Quartus II實現時序仿真 310
11.2.6 硬件測試與硬件實現 310
11.3 DSP Builder層次化設計 311
11.4 基於DSP Builder的DDS設計 314
11.4.1 DDS模塊設計 314
11.4.2 FSK調製器設計 316
11.4.3 正交信號發生器設計 318
11.4.4 數控移相信號發生器設計 319
11.4.5 幅度調製信號發生器設計 320
11.5 數字編碼與譯碼器設計 321
11.5.1 僞隨機序列 321
11.5.2 幀同步檢齣 323
11.6 HIL硬件仿真 325
習題 329
實驗與設計 329
實驗11-1 利用MATLAB/DSP Builder設計基本電路模塊 329
實驗11-2 基於DSP Builder的DDS應用模型設計 330
實驗11-3 編譯碼器設計實驗 332
實驗11-4 HIL硬件環仿真實驗 332
實驗11-5 DSP Builder狀態機應用實驗 333
第12章 DSP Builder設計深入 335
12.1 FIR數字濾波器設計 335
12.1.1 FIR濾波器原理 335
12.1.2 使用DSP Builder設計FIR濾波器 336
12.1.3 使用MATLAB的濾波器設計工具 341
12.1.4 使用FIR IP Core設計FIR濾波器 346
12.2 HDL模塊插入仿真與設計 350
12.3 正交幅度調製與解調模型設計 351
12.4 NCO IP核應用 354
12.5 基於IP的數字編譯碼器設計 356
習題 358
實驗與設計 359
實驗12-1 FIR數字濾波器設計實驗 359
實驗12-2 編譯碼器與調製解調模塊設計實驗 360
實驗12-3 HDL Import模塊應用實驗 360
參考文獻 361
附錄A EDA開發係統及相關軟硬件 362
A.1 KX_DN8係列EDA/SOPC係統 363
A.2 部分實驗擴展模塊 365
A.3 .mif文件生成器使用方法 366
· · · · · · (
收起)