FPGA設計實例:VHDL實戰指南
孟偉 張國宇
- 出版商: 機械工業
- 出版日期: 2026-01-01
- 售價: $894
- 語言: 簡體中文
- ISBN: 7111798163
- ISBN-13: 9787111798163
-
相關分類:
FPGA
- 此書翻譯自: FPGA Prototyping by SystemVerilog Examples: Xilinx MicroBlaze MCS SoC Edition (Hardcover)
下單後立即進貨 (約4週~6週)
相關主題
商品描述
本書主要包括三部分內容:基本數字電路、I/O模塊和PicoBlaze微控制器。 部分介紹了基礎的HDL結構和對應硬件,並且示範如何用這些結構來搭建基本的數字電路;第二部分是應用 部分的技術為原型板設計一系列外圍模塊,介紹了外設的開發、實現和驗證,可以將這些模塊組成一個 大的覆雜系統;第三部分介紹了基於FPGA的軟核微控制器,即PicoBlaze,展示了如何通過處理器和 電路進行集成。本書不僅介紹了HDL的語法,還重點介紹了對可編程邏輯器件的設計方法,提供了一系列使用VHDL對可編程邏輯器件進行設計的實例,書中的實例均可運行於Xilinx公司Spartan-3開發板中,使讀者能夠邊動手實踐邊學習,達到快速入門並掌握要領的目的。本書可作為可編程邏輯器件的學習指導書,通過書中的案例,初學者 終可以 掌握可編程邏輯器件的設計方法。同時,也可作為工程實踐的指導用書,對提高可編程邏輯器件開發人員的設計水平有借鑒價值。
作者簡介
曲邦平(Pong P. Chu)博士是俄亥俄州克利夫蘭州立大學電子和計算機工程系的副教授。他教授本科生和研究生水平的數字系統和計算機架構課程超過十年,並獲得了美國 科學基金會和克利夫蘭州立大學的教學資助。
目錄大綱
目錄
譯者序
原書前言
致謝
第一部分 基本數位電路
第1章 閘級組合電路 3
1.1 簡介 3
1.2 一般描述 3
1.2.1 基本詞彙規則 4
1.2.2 函式庫與套件 4
1.2.3 實體宣告 4
1.2.4 資料型別與運算子 5
1.2.5 結構體 5
1.2.6 2 位比較器程式碼 6
1.3 結構描述 7
1.4 Testbench 8
1.5 參考書目 10
1.6 參考實驗 10
1.6.1 閘級大於電路程式碼 11
1.6.2 閘級二進位解碼器程式碼 11
第2章 FPGA 與 EDA 軟體概述 12
2.1 簡介 12
2.2 FPGA 12
2.2.1 通用 FPGA 元件概述 12
2.2.2 Xilinx Spartan-3 元件概述 13
2.3 Digilent S3 開發板概述 14
2.4 開發流程 16
2.5 Xilinx ISE Project Navigator 概述 17
2.6 ISE Project Navigator 簡明教學 19
2.6.1 建立工程與 HDL 程式碼 20
2.6.2 建立 Testbench 與執行 RTL 模擬 22
2.6.3 新增約束檔、綜合與實作程式碼 22
2.6.4 產生並下載設定檔至 FPGA 晶片 23
2.7 ModelSim HDL 模擬器簡明教學 26
2.8 參考書目 30
2.9 參考實驗 30
2.9.1 閘級大於電路 30
2.9.2 閘級二進位解碼器 31
FPGA 設計實例:VHDL 實戰指南
第3章 暫存器傳輸級組合邏輯電路 32
3.1 簡介 32
3.2 暫存器傳輸級元件 32
3.2.1 關係運算子 33
3.2.2 算術運算子 33
3.2.3 其他可綜合的 VHDL 結構 35
3.2.4 總結 36
3.3 並行指定敘述的組合電路 37
3.3.1 條件訊號指定敘述 37
3.3.2 選擇訊號指定敘述 39
3.4 行為建模 41
3.4.1 行程(Process) 41
3.4.2 時序訊號指定敘述 42
3.5 if 與 case 敘述的佈線電路 42
3.5.1 if 敘述 42
3.5.2 case 敘述 44
3.5.3 並行敘述比較 45
3.5.4 意外產生的儲存器 47
3.6 常數與屬性 48
3.6.1 常數 48
3.6.2 屬性 49
3.7 設計實例 51
3.7.1 十六進位七段 LED 解碼器 51
3.7.2「符號-幅值」加法器 54
3.7.3 桶式移位器 56
3.7.4 簡化浮點加法器 58
3.8 參考書目 63
3.9 參考實驗 63
3.9.1 多功能桶式移位器 63
3.9.2 雙優先權編碼器 63
3.9.3 BCD 碼遞增器 63
3.9.4 浮點數大於比較電路 64
3.9.5 浮點數與有號整數轉換電路 64
3.9.6 增強型浮點加法器 64
第4章 常規時序電路 65
4.1 簡介 65
4.1.1 D 觸發器與暫存器 65
4.1.2 同步系統 66
4.1.3 程式碼開發 67
4.2 觸發器與暫存器的 HDL 程式碼 67
4.2.1 D 觸發器 67
4.2.2 暫存器 70
4.2.3 暫存器檔案 71
4.2.4 Xilinx Spartan-3 的儲存元件 72
4.3 簡單設計範例 72
4.3.1 移位暫存器 72
4.3.2 二進位計數器及其變形 74
4.4 時序電路的 Testbench 77
4.5 案例學習 81
4.5.1 LED 分時多工電路 81
4.5.2 碼錶 87
4.5.3 FIFO 緩衝器 91
4.6 參考書目 96
4.7 參考實驗 96
4.7.1 可程式方波產生器 96
4.7.2 PWM 與 LED 調光器 96
4.7.3 旋轉方形圖案電路 96
4.7.4 心跳電路 96
4.7.5 可輪換 LED 跑馬燈 97
4.7.6 增強型碼錶 97
4.7.7 堆疊(Stack) 97
第5章 有限狀態機 98
5.1 簡介 98
5.1.1 Mealy 與 Moore 輸出 98
5.1.2 有限狀態機表示法 98
5.2 有限狀態機編碼設計 100
5.3 設計範例 103
5.3.1 上升沿偵測器 103
5.3.2 去彈跳電路 108
5.3.3 測試電路 111
5.4 參考書目 113
5.5 參考實驗 113
5.5.1 雙沿偵測器 113
5.5.2 另一種去彈跳電路 113
5.5.3 停車場佔用計數器 114
第6章 FSMD 115
6.1 簡介 115
6.1.1 單一 RT 操作 115
6.1.2 ASMD 圖 115
6.1.3 含暫存器的判斷盒 117
6.2 FSMD 程式碼開發 118
6.2.1 基於 RT 理論的去彈跳電路 118
6.2.2 含資料路徑元件的編碼 120
6.2.3 含隱含資料路徑元件的編碼 122
6.2.4 比較 123
6.2.5 測試電路 124
6.3 設計實例 126
6.3.1 費波那契電路 126
6.3.2 除法電路 128
6.3.3 二進位轉 BCD 電路 131
6.3.4 週期計數器 134
6.3.5 低頻計數器 137
6.4 參考書目 140
6.5 參考實驗 140
6.5.1 另一種去彈跳電路 140
6.5.2 BCD 轉二進位電路 141
6.5.3 含 BCD I/O 的費波那契電路:方法一 141
6.5.4 含 BCD I/O 的費波那契電路:方法二 141
6.5.5 尺度自適應低頻計數器 142
6.5.6 反應計時器 142
6.5.7 巴貝奇差分機模擬電路 143
第二部分 I/O 模組
第7章 UART 147
7.1 簡介 147
7.2 UART 接收子系統 147
7.2.1 過取樣步驟 148
7.2.2 鮑率產生器 148
7.2.3 UART 接收器 149
7.2.4 介面電路 151
7.3 UART 傳送子系統 154
7.4 UART 系統概述 156
7.4.1 完整 UART 核心 156
7.4.2 UART 驗證設定 158
7.5 一個 UART 162
7.6 參考書目 162
7.7 參考實驗 162
7.7.1 全功能 UART 162
7.7.2 自動鮑率偵測 UART 163
7.7.3 含自動鮑率與同位檢查 UART 164
7.7.4 UART 控制碼錶 164
7.7.5 UART 控制 LED 跑馬燈 164
第8章 PS2 鍵盤 165
8.1 簡介 165
8.2 PS2 接收子系統 165
8.2.1 PS2 連接埠的實體介面 165
8.2.2 裝置至主機的通訊協定 165
8.2.3 設計與程式碼 166
8.3 PS2 鍵盤掃描碼 169
8.3.1 掃描碼概述 169
8.3.2 掃描碼監測電路 170
8.4 PS2 鍵盤介面電路 172
8.4.1 基本設計與 HDL 程式碼 172
8.4.2 驗證電路 174
8.5 參考書目 177
8.6 參考實驗 177
8.6.1 鍵盤介面轉換Ⅰ 177
8.6.2 鍵盤介面轉換Ⅱ 177
8.6.3 含看門狗計時器的 PS2 接收子系統 177
8.6.4 鍵盤控制碼錶 177
8.6.5 鍵盤控制移動式 LED 跑馬燈 178
第9章 PS2 滑鼠 179
9.1 簡介 179
9.2 PS2 滑鼠協定 179
9.2.1 基本操作 179
9.2.2 基本初始化程序 180
9.3 PS2 傳輸子系統 181
9.3.1 主機至 PS2 裝置的通訊協定 181
9.3.2 設計與程式碼 182
9.4 雙向 PS2 介面 185
9.4.1 基本設計與程式碼 185
9.4.2 驗證電路 186
9.5 PS2 滑鼠介面 189
9.5.1 基本設計 189
9.5.2 測試電路 191
9.6 參考書目 192
9.7 參考實驗 192
9.7.1 鍵盤控制電路 193
9.7.2 增強型滑鼠介面 193
9.7.3 滑鼠控制七段 LED 顯示器 193
第10章 外部 SRAM 194
10.1 簡介 194
10.2 IS61LV25616AL SRAM 說明 194
10.2.1 方塊圖與 I/O 訊號 194
10.2.2 時序參數 196
10.3 基本記憶體控制器 198
10.3.1 方塊圖 198
10.3.2 時序需求 199
10.3.3 暫存器檔案與 SRAM 200
10.4 安全設計 200
10.4.1 ASMD 圖 200
10.4.2 時序分析 201
10.4.3 HDL 編碼(執行) 202
10.4.4 基本測試電路 204
10.4.5 完整 SRAM 測試電路 206
10.5 主流設計 211
10.5.1 時序問題 211
10.5.2 可選設計Ⅰ 211
10.5.3 可選設計Ⅱ 213
10.5.4 可選設計Ⅲ 214
10.5.5 Xilinx 公司 FPGA 特性 215
10.6 參考書目 216
10.7 參考實驗 216
10.7.1 512K×16 位元記憶體設定 216
10.7.2 1M×8 位元記憶體設定 216
10.7.3 8M×1 位元記憶體設定 217
10.7.4 擴充記憶體實驗電路 217
10.7.5 可選設計Ⅰ測試電路與控制器 217
10.7.6 可選設計Ⅱ測試電路與控制器 217
10.7.7 可選設計Ⅲ測試電路與控制器 217
10.7.8 DCM 記憶體控制器 217
10.7.9 高效能記憶體控制器 217
第11章 Xilinx Spartan-3 專用記憶體 218
11.1 簡介 218
11.2 Spartan-3 內部記憶體 218
11.2.1 概述 218
11.2.2 比較 219
11.3 新增記憶體模組的方法 219
11.3.1 HDL 元件實例化 219
11.3.2 核心產生器方式 220
11.3.3 HDL 模型方式 220
11.4 記憶體 HDL 範本 221
11.4.1 單埠 RAM 221
11.4.2 雙埠 RAM 223
11.4.3 ROM 225
11.5 參考書目 228
11.6 參考實驗 228
11.6.1 基於區塊 RAM 的 FIFO 228
11.6.2 基於區塊 RAM 的堆疊 228
11.6.3 基於 ROM 的原碼加法器 228
11.6.4 基於 ROM 的 sin(x) 函數 229
11.6.5 基於 ROM 的 sin(x) 與 cos(x) 函數 229
第12章 VGA 控制器Ⅰ:圖形 230
12.1 簡介 230
12.1.1 CRT 基本工作原理 230
12.1.2 S3 開發板 VGA 連接埠 231
12.1.3 視訊控制器 232
12.2 VGA 同步 232
12.2.1 水平同步 233
12.2.2 垂直同步 234
12.2.3 同步時序計算 235
12.2.4 HDL 實作 235
12.2.5 測試電路 237
12.3 像素產生電路概述 238
12.4 物件圖形產生 239
12.4.1 矩形物件 240
12.4.2 非矩形物件 244
12.4.3 動態物件 246
12.5 點陣圖形產生 252
12.5.1 雙埠 RAM 實作 253
12.5.2 單埠 RAM 實作 257
12.6 參考書目 258
12.7 參考實驗 258
12.7.1 VGA 測試圖樣產生器 258
12.7.2 SVGA 同步電路 258
12.7.3 螢幕調整電路 258
12.7.4 盒中球電路 259
12.7.5 盒中雙球電路 259
12.7.6 雙人乒乓球遊戲 259
12.7.7 突破重圍遊戲 259
12.7.8 全螢幕點軌跡 260
12.7.9 滑鼠遊標電路 260
12.7.10 小螢幕滑鼠塗鴉 260
12.7.11 全螢幕滑鼠塗鴉 260
第13章 VGA 控制器Ⅱ:範例 261
13.1 簡介 261
13.2 範例 261
13.2.1 點陣特性 261
13.2.2 字型 ROM 262
13.2.3 基本文字產生電路 263
13.2.4 字型顯示電路 264
13.2.5 字型縮放比例 266
13.3 全螢幕文字顯示 266
13.4 完整乒乓球遊戲設計 271
13.4.1 文字子系統 271
13.4.2 圖形子系統修正 277
13.4.3 輔助計數器 278
13.4.4 頂層系統 280
13.5 參考書目 284
13.6 參考實驗 284
13.6.1 旋轉旗幟 284
13.6.2 遊標底線 285
13.6.3 雙模式文字顯示 285
13.6.4 鍵盤文字輸入 285
13.6.5 UART 終端機 285
13.6.6 方波顯示 285
13.6.7 四通道邏輯分析器 286
13.6.8 完整雙人乒乓球遊戲 286
13.6.9 完整通關遊戲 286
第三部分 PicoBlaze 微控制器
第14章 PicoBlaze 概述 289
14.1 簡介 289
14.2 硬體與軟體 289
14.2.1 從專用 FSMD 到通用微控制器 289
14.2.2 微控制器應用 291
14.3 PicoBlaze 架構 291
14.3.1 基本組成 291
14.3.2 頂層 HDL 模組 293
14.4 開發流程 293
14.5 指令集 294
14.5.1 程式設計模式 295
14.5.2 指令格式 296
14.5.3 邏輯指令 296
14.5.4 算術指令 297
14.5.5 比較與測試指令 298
14.5.6 移位與循環指令 299
14.5.7 資料傳輸指令 300
14.5.8 程式控制指令 302
14.5.9 中斷指令 305
14.6 偽指令 306
14.6.1 KCPSM3 偽指令 306
14.6.2 pBlaze IDE 偽指令 306
14.7 參考書目 307
第15章 PicoBlaze 組合語言開發 308
15.1 簡介 308
15.2 有效程式區段 308
15.2.1 KCPSM3 協定 308
15.2.2 位元操作 308
15.2.3 多位元組操作 309
15.2.4 控制結構 310
15.3 副程式開發 312
15.4 程式發展 313
15.4.1 範例 314
15.4.2 程式檔案 318
15.5 組譯程式處理 320
15.5.1 KCPSM3 編譯 320
15.5.2 pBlaze IDE 模擬 321
15.5.3 JTAG 重新載入 323
15.5.4 pBlaze IDE 編譯 323
15.6 PicoBlaze 綜合 323
15.7 參考書目 325
15.8 參考實驗 325
15.8.1 符號乘法 325
15.8.2 多位元組乘法 325
15.8.3 循環移位 326
15.8.4 高低位互換 326
15.8.5 二進位轉 BCD 326
15.8.6 BCD 轉二進位 326
15.8.7 心跳電路 326
15.8.8 順序循環 LED 326
15.8.9 LED 調光器 326
第16章 PicoBlaze I/O 介面 327
16.1 簡介 327
16.2 輸出埠 327
16.2.1 output 指令與時序 327
16.2.2 輸出介面 328
16.3 輸入埠 330
16.3.1 input 指令與時序 330
16.3.2 輸入介面 331
16.4 含開關輸入與七段顯示的平方運算程式 332
16.4.1 輸出介面 332
16.4.2 輸入介面 333
16.4.3 組合語言開發 335
16.4.4 VHDL 程式碼開發 342
16.5 結合乘法器與 UART 的運算程式 345
16.5.1 乘法器介面 345
16.5.2 UART 介面 345
16.5.3 組合語言開發 347
16.5.4 VHDL 程式碼開發 355
16.6 參考書目 359
16.7 參考實驗 359
16.7.1 低頻計數器Ⅰ 359
16.7.2 低頻計數器Ⅱ 359
16.7.3 自適應低頻計數器 359
16.7.4 軟體計時反應計時器 359
16.7.5 硬體計時反應計時器 360
16.7.6 增強型反應計時器 360
16.7.7 小螢幕滑鼠追蹤 360
16.7.8 全螢幕滑鼠追蹤 360
16.7.9 增強型跑馬燈字幕 360
16.7.10 乒乓球遊戲 361
16.7.11 文字編輯器 361
第17章 PicoBlaze 中斷介面 362
17.1 簡介 362
17.2 PicoBlaze 中斷操作 362
17.2.1 軟體處理 362
17.2.2 時序圖 363
17.3 外部介面 364
17.3.1 中斷請求訊號 364
17.3.2 多重中斷請求 365
17.4 軟體設計考量 365
17.4.1 作為替代排程方案的中斷 365
17.4.2 中斷服務程式設計 366
17.5 設計案例 366
17.5.1 中斷介面 366
17.5.2 中斷服務程式 366
17.5.3 組合語言程式發展 367
17.5.4 VHDL 程式發展 369
17.6 參考書目 372
17.7 參考實驗 372
17.7.1 替代計時器中斷服務程式 372
17.7.2 可程式計時器 373
17.7.3 按鍵中斷服務程式 373
17.7.4 兩請求中斷服務程式 373
17.7.5 四請求中斷控制器 373
附錄 A VHDL 範例板 374
A.1 通用 VHDL 結構 374
A.1.1 整體程式架構 374
A.1.2 元件實例化 375
A.2 組合電路 376
A.2.1 算術運算 376
A.2.2 固定位移操作 376
A.2.3 並行敘述範本 377
A.2.4 if 與 case 範本 378
A.2.5 使用行程的組合電路 379
A.3 儲存元件 380
A.3.1 暫存器範本 380
A.3.2 暫存器檔案 381
A.4 常規時序電路 382
A.5 有限狀態機 383
A.6 FSMD 384
A.7 S3 開發板約束檔(S3.UCF) 387
參考文獻 390
