本書根據(jù)EDA課程教學要求,以提高數(shù)字設(shè)計能力為目的,系統(tǒng)闡述FPGA數(shù)字系統(tǒng)開發(fā)的相關(guān)知識,主要內(nèi)容包括EDA技術(shù)概述、FPGA/CPLD器件、Verilog硬件描述語言等。全書以Quartus Prime、Synplify Pro軟件為平臺,以Verilog―1995和Verilog―2001語言標準為依據(jù),以可綜合的設(shè)計為重點,通過大量經(jīng)過驗證的數(shù)字設(shè)計實例,闡述數(shù)字系統(tǒng)設(shè)計的方法與技術(shù),由淺入深地介紹Verilog工程開發(fā)的知識與技能。本書的特點是:著眼于實用,緊密聯(lián)系教學實際,實例豐富。全書深入淺出,概念清晰,語言流暢。
王金明,南京解放軍理工大學通信學院教授,長期從事數(shù)字系數(shù)設(shè)計、電子電路設(shè)計方面課程的教學與科研工作。
第1章 EDA技術(shù)概述 1
1.1 EDA技術(shù)及其發(fā)展 1
1.2 Top-down設(shè)計與IP核復(fù)用 4
1.2.1 Top-down設(shè)計 4
1.2.2 Bottom-up設(shè)計 5
1.2.3 IP復(fù)用技術(shù)與SoC 5
1.3 數(shù)字設(shè)計的流程 7
1.3.1 設(shè)計輸入 7
1.3.2 綜合 9
1.3.3 布局布線 9
1.3.4 仿真 10
1.3.5 編程配置 10
1.4 常用的EDA軟件工具 10
1.5 EDA技術(shù)的發(fā)展趨勢 14
習題1 15
第2章 FPGA/CPLD器件 16
2.1 PLD器件概述 16
2.1.1 PLD器件的發(fā)展歷程 16
2.1.2 PLD器件的分類 17
2.2 PLD的基本原理與結(jié)構(gòu) 19
2.2.1 PLD器件的基本結(jié)構(gòu) 19
2.2.2 PLD電路的表示方法 20
2.3 低密度PLD的原理與結(jié)構(gòu) 21
2.4 CPLD的原理與結(jié)構(gòu) 26
2.4.1 宏單元結(jié)構(gòu) 26
2.4.2 典型CPLD的結(jié)構(gòu) 27
2.5 FPGA的原理與結(jié)構(gòu) 30
2.5.1 查找表結(jié)構(gòu) 30
2.5.2 典型FPGA的結(jié)構(gòu) 32
2.5.3 Cyclone IV器件結(jié)構(gòu) 35
2.6 FPGA/CPLD的編程元件 38
2.7 邊界掃描測試技術(shù) 42
2.8 FPGA/CPLD的編程與配置 44
2.8.1 在系統(tǒng)可編程 44
2.8.2 FPGA器件的配置 45
2.8.3 Cyclone IV器件的編程 46
2.9 FPGA/CPLD器件概述 49
2.10 FPGA/CPLD的發(fā)展趨勢 52
習題2 53
第3章 Quartus Prime使用指南 54
3.1 Quartus Prime原理圖設(shè)計 55
3.1.1 半加器原理圖設(shè)計輸入 55
3.1.2 1位全加器設(shè)計輸入 60
3.1.3 1位全加器的編譯 61
3.1.4 1位全加器的仿真 63
3.1.5 1位全加器的下載 67
3.2 基于IP核的設(shè)計 71
3.2.1 模24方向可控計數(shù)器 71
3.2.2 4×4無符號數(shù)乘法器 78
3.3 SignalTap II的使用方法 84
3.4 Quartus Prime的優(yōu)化設(shè)置與時序分析 88
習題3 93
實驗與設(shè)計 95
3-1 簡易數(shù)字鐘 95
3-2 m序列發(fā)生器 97
3-3 8位帶符號乘法器 97
3-4 用常量模塊實現(xiàn)補碼轉(zhuǎn)換幅度碼電路 101
第4章 Verilog設(shè)計初步 102
4.1 Verilog簡介 102
4.2 Verilog模塊的結(jié)構(gòu) 103
4.3 Verilog基本組合電路設(shè)計 107
4.3.1 用Verilog設(shè)計基本組合電路 107
4.3.2 用Verilog設(shè)計加法器 107
4.4 Verilog基本時序電路設(shè)計 110
4.4.1 用Verilog設(shè)計觸發(fā)器 110
4.4.2 用Verilog設(shè)計計數(shù)器 111
習題4 113
實驗與設(shè)計 113
4-1 Synplify Pro綜合器的使用方法 113
4-2 Synplify綜合器的使用方法 117
第5章 Verilog語法與要素 119
5.1 Verilog語言要素 119
5.2 常量 120
5.2.1 整數(shù)(Integer) 120
5.2.2 實數(shù)(Real) 122
5.2.3 字符串(Strings) 122
5.3 數(shù)據(jù)類型 123
5.3.1 net型 123
5.3.2 variable型 124
5.4 參數(shù) 126
5.5 向量 128
5.6 運算符 130
習題5 134
實驗與設(shè)計 135
5-1 用altpll鎖相環(huán)宏模塊實現(xiàn)倍頻和分頻 135
第6章 Verilog行為語句 140
6.1 過程語句 140
6.1.1 always過程語句 141
6.1.2 initial過程語句 144
6.2 塊語句 145
6.2.1 串行塊begin-end 145
6.2.2 并行塊fork-join 146
6.3 賦值語句 147
6.3.1 持續(xù)賦值與過程賦值 147
6.3.2 阻塞賦值與非阻塞賦值 148
6.4 條件語句 149
6.4.1 if-else語句 150
6.4.2 case語句 151
6.5 循環(huán)語句 155
6.5.1 for語句 156
6.5.2 repeat、while、forever語句 157
6.6 編譯指示語句 159
6.7 任務(wù)與函數(shù) 160
6.7.1 任務(wù)(task) 160
6.7.2 函數(shù)(function) 162
6.8 順序執(zhí)行與并發(fā)執(zhí)行 166
習題6 167
實驗與設(shè)計 167
6-1 4×4矩陣鍵盤檢測電路 167
第7章 Verilog設(shè)計的層次與風格 170
7.1 Verilog設(shè)計的層次 170
7.2 門級結(jié)構(gòu)描述 170
7.2.1 Verilog HDL內(nèi)置門元件 171
7.2.2 門級結(jié)構(gòu)描述 173
7.3 行為描述 174
7.4 數(shù)據(jù)流描述 175
7.5 不同描述風格的設(shè)計 176
7.5.1 半加器設(shè)計 176
7.5.2 1位全加器設(shè)計 177
7.5.3 4位加法器設(shè)計 179
7.6 多層次結(jié)構(gòu)電路的設(shè)計 179
7.7 基本組合電路設(shè)計 182
7.7.1 門電路 182
7.7.2 編譯碼器 182
7.7.3 其他組合電路 184
7.8 基本時序電路設(shè)計 185
7.8.1 觸發(fā)器 185
7.8.2 鎖存器與寄存器 185
7.8.3 計數(shù)器與串并轉(zhuǎn)換器 187
7.8.4 簡易微處理器 188
7.9 三態(tài)邏輯設(shè)計 190
習題7 192
實驗與設(shè)計 192
7-1 數(shù)字表決器 192
7-2 FIFO緩存器設(shè)計 195
第8章 Verilog有限狀態(tài)機設(shè)計 199
8.1 有限狀態(tài)機 199
8.2 有限狀態(tài)機的Verilog描述 201
8.2.1 用三個過程描述 202
8.2.2 用兩個過程描述 203
8.2.3 單過程描述方式 205
8.3 狀 態(tài) 編 碼 207
8.3.1 常用的編碼方式 207
8.3.2 狀態(tài)編碼的定義 211
8.4 有限狀態(tài)機設(shè)計要點 213
8.4.1 復(fù)位和起始狀態(tài)的選擇 213
8.4.2 多余狀態(tài)的處理 213
習題8 215
實驗與設(shè)計 215
8-1 流水燈控制器 215
8-2 汽車尾燈控制器 217
8-3 狀態(tài)機A/D采樣控制電路 218
8-4 用狀態(tài)機實現(xiàn)字符液晶顯示控制 219
第9章 Verilog設(shè)計進階 226
9.1 加法器設(shè)計 226
9.1.1 級連加法器 226
9.1.2 數(shù)據(jù)流描述的加法器 227
9.1.3 超前進位加法器 228
9.1.4 流水線加法器 229
9.2 乘法器設(shè)計 230
9.2.1 并行乘法器 230
9.2.2 移位相加乘法器 232
9.2.3 布斯乘法器 234
9.2.4 查找表乘法器 237
9.3 奇數(shù)分頻與小數(shù)分頻 237
9.3.1 奇數(shù)分頻 237
9.3.2 半整數(shù)分頻與小數(shù)分頻 239
9.4 VGA圖像的顯示與控制 241
9.4.1 VGA圖像顯示原理與時序 241
9.4.2 VGA圖像顯示與控制的實現(xiàn) 244
9.5 點陣式液晶顯示控制 250
9.6 樂曲演奏電路 255
習題9 260
實驗與設(shè)計 262
9-1 數(shù)字跑表 262
9-2 實用多功能數(shù)字鐘 269
第10章 Verilog設(shè)計的優(yōu)化 278
10.1 設(shè)計的可綜合性 278
10.2 流水線設(shè)計技術(shù) 280
10.3 資源共享 284
10.4 過程 286
10.5 阻塞賦值與非阻塞賦值 288
習題10 292
實驗與設(shè)計 292
10-1 小數(shù)分頻 292
10-2 如何在FPGA設(shè)計中消除毛刺 294
10-3 消抖動電路 297
第11章 Verilog Test Bench與仿真 298
11.1 系統(tǒng)任務(wù)與系統(tǒng)函數(shù) 298
11.2 用戶自定義元件 302
11.2.1 組合電路UDP元件 303
11.2.2 時序邏輯UDP元件 304
11.3 延時模型的表示 306
11.3.1 時間標尺定義`timescale 306
11.3.2 延時的表示與延時說明塊 307
11.4 Test Bench測試平臺 308
11.5 組合和時序電路的仿真 310
11.5.1 組合電路的仿真 310
11.5.2 時序電路的仿真 312
習題11 313
實驗與設(shè)計 314
11-1 用ModelSim SE仿真8位二進制加法器 314
11-2 用ModelSim SE仿真乘累加器 322
第12章 Verilog語言的發(fā)展 324
12.1 Verilog―2001語法結(jié)構(gòu) 324
12.1.1 語法結(jié)構(gòu)的擴展與增強 324
12.1.2 設(shè)計管理 330
12.1.3 系統(tǒng)任務(wù)和系統(tǒng)函數(shù)的擴展 332
12.1.4 VCD文件的擴展 335
12.2 Verilog―2002語法結(jié)構(gòu) 336
12.2.1 硬件單元建模 337
12.2.2 屬性 340
12.2.3 編程語言接口 344
習題12 345
第13章 通信與信號處理設(shè)計實例 346
13.1 m序列發(fā)生器 346
13.1.1 m序列的原理與性質(zhì) 346
13.1.2 m序列產(chǎn)生器設(shè)計 348
13.2 Gold碼 350
13.2.1 Gold碼的原理與性質(zhì) 350
13.2.2 Gold碼產(chǎn)生器設(shè)計 351
13.3 CRC校驗碼 353
13.4 FSK解調(diào) 355
13.5 數(shù)字過零檢測與等精度頻率測量 358
13.5.1 數(shù)字過零檢測法 358
13.5.2 等精度頻率測量 359
13.6 QPSK調(diào)制器的FPGA實現(xiàn) 362
13.7 FIR數(shù)字濾波器 365
習題13 369
實驗與設(shè)計 369
13-1 信號音產(chǎn)生器 369
13-2 異步串行接口(UART) 376
附錄A Verilog HDL(IEEE Std 1364―1995)關(guān)鍵字 382
附錄B Verilog HDL(IEEE Std 1364―2001)關(guān)鍵字 383
附錄C DE2―115介紹 384
附錄D 有關(guān)術(shù)語與縮略語 386
參考文獻 391