Verilog HDL與FPGA數字系統設計 第2版
內容描述
本書是根據數字技術的發展和EDA課程教學要求,
以及作者多年教學與實踐經驗的基礎上而編寫的,目標是快速地提高讀者的數字電路(或系統)設計能力。
內容覆蓋了數字邏輯基礎、Verilog HDL基礎知識與建模方法、有限狀態機設計、
可編程邏輯器件及其開發工具、數字電路與系統設計實例、靜態時序分析工具以及可編程片上系統等相關知識。
本書將數字邏輯設計和Verilog HDL有機地結合在一起,以可綜合的Verilog設計為重點,
方便讀者快速地掌握Verilog HDL建模方法,以及用FPGA實現數字電路(或系統)的技巧。
本書以Quartus Prime 18.1等軟件為工具,
所有程序都通過了DE2-115(或DE1-SOC)開發板的硬件測試,讀者可參考使用。
本書可用作高等院校電氣信息類等專業本、專科生的教材或教學參考書,
也可以作為電子技術課程設計、電子設計大賽或數字系統設計工程技術人員學習EDA技術的參考書。
目錄大綱
前言
第1版前言
教學建議
第一篇 數字系統基礎
第1章 數字邏輯設計基礎 / 2
本章目的 / 2
1.1 數制及其相互轉換 / 2
1.1.1 數制 / 2
1.1.2 不同進制數的相互轉換 / 4
1.2 二進制代碼 / 5
1.2.1 二-十進制編碼 / 5
1.2.2 格雷碼 / 6
1.2.3 奇偶校驗碼 / 8
1.2.4 ASCII字符編碼 / 9
1.3 邏輯運算及邏輯門 / 11
1.3.1 基本邏輯運算 / 11
1.3.2 常用複合邏輯運算 / 14
1.3.3 集成邏輯門電路簡介 / 15
1.3.4 三態門 / 20
1.4 邏輯代數的基本公式和規則 / 21
1.4.1 邏輯代數的基本定律和恆等式 / 21
1.4.2 邏輯代數的基本規則 / 22
1.4.3 邏輯函數表達式的形式 / 23
1.5 邏輯函數的代數化簡法 / 25
1.6 邏輯函數的卡諾圖化簡法 / 26
1.6.1 邏輯函數的最小項及其性質 / 26
1.6.2 邏輯函數的最小項表達式 / 27
1.6.3 用卡諾圖表示邏輯函數 / 28
1.6.4 用卡諾圖化簡邏輯函數 / 31
1.6.5 用卡諾圖化簡含無關項的邏輯函數 / 33
1.7 組合邏輯電路設計 / 35
1.7.1 設計組合邏輯電路的一般步驟 / 35
1.7.2 組合邏輯電路設計舉例 / 36
小結 / 40
習題 / 40
第2章 Verilog HDL入門與功能仿真 / 42
本章目的 / 42
2.1 硬件描述語言簡介 / 42
2.1.1 硬件描述語言的起源 / 42
2.1.2 硬件描述語言的特點 / 43
2.2 Verilog HDL程序的基本結構 / 44
2.2.1 Verilog HDL模塊組成 / 44
2.2.2 Verilog HDL模塊舉例 / 45
2.3 編寫測試模塊 / 47
2.4 ModelSim仿真軟件的使用 / 49
2.4.1 創建工作目錄 / 50
2.4.2 輸入源文件 / 50
2.4.3 建立工作庫 / 50
2.4.4 編譯設計文件 / 50
2.4.5 將設計文件載入仿真器 / 52
2.4.6 運行仿真 / 53
2.4.7 調試結果 / 54
2.5 Verilog HDL基本語法規則 / 57
2.5.1 詞法規定 / 57
2.5.2 邏輯值集合 / 57
2.5.3 常量及其表示 / 58
2.5.4 數據類型 / 60
2.6 編譯指令、系統任務和系統函數 / 67
2.6.1 Verilog HDL編譯器指令 / 67
2.6.2 Verilog HDL系統任務 / 69
2.6.3 Verilog HDL系統函數 / 71
小結 / 72
習題 / 73
第3章 組合邏輯電路建模 / 74
本章目的 / 74
3.1 Verilog HDL門級建模 / 74
3.1.1 多輸入門 / 74
3.1.2 多輸出門 / 76
3.1.3 三態門 / 76
3.1.4 門級建模舉例 / 77
3.2 Verilog HDL數據流建模 / 79
3.2.1 數據流建模 / 79
3.2.2 表達式與操作數 / 82
3.2.3 運算符 / 82
3.2.4 運算符的優先級別 / 87
3.3 組合電路的行為級建模 / 88
3.4 分層次的電路設計方法 / 96
3.4.1 設計方法 / 96
3.4.2 模塊實例引用語句 / 98
3.4.3 迭代結構 / 100
3.5 常用組合電路及其設計 / 102
3.5.1 編碼器 / 103
3.5.2 二進制譯碼器 / 104
3.5.3 七段顯示譯碼器 / 106
3.5.4 二進制數與8421碼的轉換 / 108
小結 / 115
習題 / 115
第4章 時序邏輯電路建模 / 119
本章目的 / 119
4.1 鎖存器 / 119
4.1.1 基本SR鎖存器 / 119
4.1.2 門控D鎖存器 / 121
4.1.3 門控D鎖存器的Verilog HDL建模 / 122
4.2 觸發器 / 123
4.2.1 D觸發器的邏輯功能 / 123
4.2.2 有清零輸入和預置輸入的D觸發器 / 124
4.2.3 有使能端的D觸發器 / 125
4.2.4 時序邏輯電路建模基礎 / 126
4.2.5 D觸發器及其應用電路的建模 / 128
4.3 寄存器和移位寄存器 / 131
4.3.1 寄存器建模 / 131
4.3.2 移位寄存器建模 / 132
4.3.3 移位寄存器應用電路建模 / 136
4.4 同步計數器 / 138
4.4.1 同步計數器的設計 / 138
4.4.2 同步計數器的Verilog HDL建模 / 142
4.5 Verilog HDL函數與任務的使用 / 146
4.5.1 函數說明語句 / 146
4.5.2 任務說明語句 / 149
4.6 m序列碼產生電路設計 / 151
小結 / 155
習題 / 156
第5章 有限狀態機設計 / 158
本章目的 / 158
5.1 狀態機的基本概念 / 158
5.1.1 狀態機的基本結構及類型 / 158
5.1.2 狀態機的狀態圖表示法 / 159
5.1.3 狀態機的設計步驟 / 160
5.2 基於Verilog HDL的狀態機描述方法 / 160
5.2.1 狀態圖的建立過程 / 160
5.2.2 狀態圖的描述方法 / 161
5.3 狀態機設計中的關鍵技術 / 165
5.3.1 狀態編碼 / 165
5.3.2 消除輸出端產生的毛刺 / 166
5.3.3 使用One-Hot編碼方案設計狀態機 / 168
5.4 狀態機設計舉例 / 170
5.4.1 十字路口交通燈控制電路設計 / 170
5.4.2 汽車尾燈控制電路設計 / 176
小結 / 181
習題 / 182
第6章 可編程邏輯器件 / 184
本章目的 / 184
6.1 概述 / 184
6.1.1 PLD的歷史 / 184
6.1.2 PLD器件的符號 / 186
6.2 簡單可編程邏輯器件 / 187
6.2.1 PLA / 188
6.2.2 PAL與GAL / 190
6.3 複雜可編程邏輯器件 / 195
6.3.1 傳統CPLD的基本結構 / 195
6.3.2 基於查找表的CPLD結構 / 198
6.4 現場可編程門陣列 / 199
6.4.1 FPGA實現邏輯函數的基本原理 / 200
6.4.2 FPGA的一般結構 / 203
6.5 Intel FPGA器件系列及開發平台 / 204
6.5.1 器件系列 / 204
6.5.2 FPGA開發板簡介 / 205
小結 / 207
習題 / 208
第二篇 數字系統設計實踐
第7章 FPGA開發工具的使用 / 214
本章目的 / 214
7.1 Quartus Prime 軟件概述 / 214
7.1.1 軟件的安裝與設置 / 214
7.1.2 Quartus Prime的設計流程 / 217
7.2 基於Verilog HDL輸入的電路實現 / 220
7.2.1 建立新的設計項目 / 220
7.2.2 輸入設計文件 / 222
7.2.3 分配引腳 / 222
7.2.4 編譯設計文件 / 226
7.2.5 編程器件,測試功能 / 227
7.2.6 使用電路網表觀察器查看電路圖 / 230
7.2.7 實驗任務 / 230
7.3 基於Verilog HDL輸入的電路仿真 / 231
7.3.1 輸入設計文件,建立新的設計項目 / 232
7.3.2 分配引腳,編譯設計源文件 / 233
7.3.3 波形仿真 / 233
7.3.4 編程器件,測試功能 / 240
7.3.5 實驗任務 / 240
7.4 基於原理圖輸入的電路實現 / 241
7.4.1 建立新的設計項目 / 241
7.4.2 輸入電路原理圖 / 242
7.4.3 分配引腳 / 245
7.4.4 編譯設計項目 / 245
7.4.5 編程器件,測試功能 / 245
7.4.6 實驗任務 / 245
7.5 基於原理圖和Verilog HDL混合輸入的電路實現 / 246
7.5.1 編碼、譯碼、顯示電路 / 246
7.5.2 輸入原理圖文件,建立新的設計項目 / 247
7.5.3 輸入HDL底層文件,完善原理圖文件 / 249
7.5.4 分配引腳,編譯設計項目 / 249
7.5.5 編程器件,測試功能 / 251
7.5.6 實驗任務 / 251
7.6 基於IP模塊的電路設計 / 251
7.6.1 LPM_COUNTER模塊的設置與調用 / 253
7.6.2 嵌入式鎖相環模塊ALTPLL的設置與調用 / 257
7.6.3 存儲器模塊LPM_ROM的配置與調用 / 261
7.6.4 實驗任務 / 269
7.7 嵌入式邏輯分析儀的使用 / 270
7.7.1 嵌入式邏輯分析儀的實現原理 / 270
7.7.2 嵌入式邏輯分析儀的使用流程 / 271
7.7.3 Signal Tap使用示例 / 272
7.7.4 實驗任務 / 278
小結 / 279
第8章 數字電路與系統的設計實踐 / 280
本章目的 / 280
8.1 變模計數器設計 / 280
8.1.1 功能要求 / 280
8.1.2 設計分析 / 280
8.1.3 邏輯設計 / 281
8.1.4 設計實現 / 281
8.1.5 實驗任務 / 282
8.2 移動顯示字符設計 / 285
8.2.1 功能要求 / 285
8.2.2 設計分析 / 285
8.2.3 邏輯設計 / 286
8.2.4 設計實現 / 287
8.2.5 實驗任務 / 288
8.3 分頻器設計 / 289
8.3.1 功能要求 / 289
8.3.2 設計分析 / 289
8.3.3 邏輯設計 / 290
8.3.4 設計仿真 / 291
8.3.5 實際運行結果 / 291
8.3.6 實驗任務 / 292
8.4 多功能數字鐘設計 / 292
8.4.1 功能要求 / 292
8.4.2 設計分析 / 292
8.4.3 數字鐘主體電路邏輯設計 / 293
8.4.4 功能擴展電路邏輯設計 / 297
8.4.5 頂層電路設計 / 299
8.4.6 實驗任務 / 302
8.5 頻率計設計 / 302
8.5.1 功能要求 / 302
8.5.2 設計分析 / 303
8.5.3 邏輯設計 / 305
8.5.4 頂層電路設計 / 310
8.5.5 實驗任務 / 311
8.6 LCD1602顯示的定時器設計 / 311
8.6.1 功能要求 / 311
8.6.2 設計分析 / 311
8.6.3 30秒遞減定時器設計 / 312
8.6.4 字符型LCD1602模塊的顯示設計 / 313
8.6.5 頂層模塊設計 / 321
8.6.6 設計實現 / 322
8.6.7 實驗任務 / 323
8.7 DDS函數信號發生器設計 / 323
8.7.1 功能要求 / 323
8.7.2 DDS產生波形的原理 / 324
8.7.3 設計分析 / 326
8.7.4 頂層電路設計 / 330
8.7.5 設計實現 / 331
8.7.6 D/A轉換電路及放大電路設計 / 332
8.7.7 實驗任務 / 333
小結 / 335
第9章 VGA接口控制器的設計 / 336
本章目的 / 336
9.1 VGA接口標準和接口電路 / 336
9.1.1 VGA接口標準 / 336
9.1.2 VGA接口電路 / 338
9.2 VGA彩條信號發生器 / 340
9.2.1 功能要求 / 340
9.2.2 設計分析 / 340
9.2.3 邏輯設計 / 341
9.2.4 頂層電路設計 / 345
9.2.5 對目標器件編程與硬件電路測試 / 346
9.2.6 使用Signal Tap Logic Analyzer觀察VGA工作時序 / 347
9.2.7 實驗任務 / 350
9.3 24位位圖顯示 / 350
9.3.1 功能要求 / 350
9.3.2 設計分析 / 351
9.3.3 邏輯設計 / 351
9.3.4 頂層電路設計 / 354
9.3.5 對目標器件編程與硬件電路測試 / 356
9.3.6 實驗任務 / 357
小結 / 357
第10章 靜態時序分析工具TimeQuest的使用 / 358
本章目的 / 358
10.1 靜態時序分析基礎 / 359
10.1.1 同步路徑的分析 / 359
10.1.2 異步路徑的分析 / 363
10.1.3 外部同步路徑的分析 / 363
10.1.4 不同的時序模型 / 367
10.2 時序分析工具的使用 / 367
10.2.1 時序分析工具的使用流程 / 367
10.2.2 兩級流水線乘法器設計 / 368
10.2.3 設定時序要求 / 370
10.2.4 全編譯並完成佈局佈線 / 372
10.2.5 驗證時序 / 374
小結 / 376
第三篇 可編程片上系統
第11章 可編程片上系統入門 / 380
本章目的 / 380
11.1 SOPC技術概述 / 380
11.1.1 SOC技術 / 380
11.1.2 SOPC技術 / 381
11.1.3 基於Nios II處理器的嵌入式系統組成 / 381
11.2 SOPC系統設計流程 / 383
11.3 SOPC硬件系統設計 / 384
11.3.1 設計任務 / 384
11.3.2 創建Quartus Prime工程 / 385
11.3.3 構建嵌入式硬件系統 / 386
11.3.4 在Quartus Prime項目中集成嵌入式硬件系統 / 394
11.4 SOPC軟件開發 / 398
11.4.1 軟件開發工具簡介 / 398
11.4.2 創建Nios II軟件工程 / 398
11.4.3 應用程序設計 / 402
11.4.4 應用工程編譯調試 / 403
11.5 SOPC系統設計實踐 / 407
11.5.1 Nios II嵌入式處理器PIO應用 / 407
11.5.2 Nios II嵌入式處理器中斷應用 / 413
11.5.3 Nios II實時時鐘設計 / 418
小結 / 424
第12章 自定義IP組件設計 / 425
本章目的 / 425
12.1 重識Avalon總線 / 425
12.1.1 Avalon Clock和Avalon Reset接口 / 427
12.1.2 Avalon-MM接口 / 427
12.1.3 Avalon中斷接口 / 429
12.1.4 Avalon-ST接口 / 429
12.1.5 Avalon Conduit接口 / 430
12.1.6 Avalon-TC接口 / 431
12.2 自定義IP組件設計 / 431
12.2.1 PWM的HDL設計 / 431
12.2.2 PWM自定義IP組件的封裝方法 / 435
12.2.3 PWM自定義IP組件的應用方法 / 436
小結 / 438
附錄A DE2-115開發板引腳配置信息 / 439
參考文獻 / 445