Xilinx FPGA設計與實踐教程

Xilinx FPGA設計與實踐教程

《Xilinx FPGA設計與實踐教程》是2012年1月西安電子科技大學出版社出版的圖書,作者是趙吉成、王智勇。

基本介紹

  • 書名:Xilinx FPGA設計與實踐教程
  • 作者:趙吉成、王智勇
  • ISBN:9787560626291
  • 定價:52.00元
  • 出版社:西安電子科技大學出版社
  • 出版時間:2012-01
  • 裝幀:平裝
  • 開本:16
編輯推薦,內容簡介,圖書目錄,

編輯推薦

本書整體而言,有以下三個特色: (1) 內容非常豐富。全書覆蓋了FPGA開發的整個流程、基於Verilog語言的數字電路設計、經典FPGA案例設計與驗證、基於源碼開放的微處理器PicoBlaze軟硬體開發四個部分,富含120多個例程和近100道思考與練習題,對於提升讀者的設計與實踐能力有著實質性的幫助。 (2) 描述精闢透徹。全書知識點講述中,能夠從深層次剖析知識點的本質,由淺入深引領讀者理解數字設計的關鍵知識點,如時序電路基本模型、帶數據路徑狀態機和同步電路設計方法等,其理論剖析深入而透徹。 (3) 經典實用。書中結合Xilinx 的開發板講述了UART串口通信、PS/2鍵盤/滑鼠接口控制器、VGA顯示接口控制以及SRAM控制器等富有代表性的案例的設計、仿真以及驗證,所有案例採用統一的設計思想和代碼風格,使讀者在牢固鞏固數字設計基本方法的同時,從工程套用方面不知不覺上升一個高度。 本書寫作上的亮點在於能夠通過簡單的實例引申出可程式邏輯設計的高級技巧和思想,通過巧妙的實踐設計幫助讀者理解和消化高深的理論,並養成良好的設計習慣。我鄭重地向大家推薦這本書,使更多的讀者能夠早日掌握FPGA的開發技能,促進FPGA技術的進一步推廣。

內容簡介

本書系統講述了FPGA的軟硬體開發知識,並以Spartan-3開發套件為硬體平台,配合經典的實例套用,使讀者能夠從硬體設計、軟體開發和系統設計等方面系統掌握FPGA的使用方法。
本書共四篇16章。第一篇為FPGA設計基礎與ISE開發基本流程,共2章,內容包括PLD技術基礎,Xilinx FPGA的開發、仿真以及實現整個流程。第二篇為數字電路設計基礎與VerilogHDL描述,共5章,介紹了基於VerilogHDL的數字電路基礎、同步電路設計思想和高級技巧。第三篇為基於FPGA的接口開發,共5章,結合Xilinx FPGA開發板,詳細講述了UART串口通信控制器、PS/2鍵盤/滑鼠接口控制器、VGA圖形圖像顯示控制器以及RAM接口控制器等案例的設計、開發以及驗證。第四篇為基於FPGA的軟核微控制器PicoBlaze,共4章,以PicoBlaze為例,介紹了PicoBlaze微處理器的軟硬體開發、中斷設計等。

圖書目錄

第一篇 FPGA設計基礎與ISE開發基本流程
第一章 FPGA設計基礎 1
1.1 FPGA的基本概念 1
1.2 可程式邏輯技術發展簡介 2
1.2.1 可程式技術發展演變過程 2
1.2.2 FPGA技術 5
1.3 FPGA器件編程技術 6
1.3.1 熔絲互連編程技術 6
1.3.2 基於反熔絲的編程技術 8
1.3.3 基於SRAM的可程式技術 10
1.3.4 基於FLASH或E2PROM的可程式技術 11
1.4 通用FPGA的構成結構 11
1.4.1 現代FPGA的基本邏輯單元 12
1.4.2 Xilinx Spartan-3 FPGA的基本結構 14
1.5 Xilinx FPGA的開發流程 20
1.6 FPGA技術的未來發展 23
本章小結 25
思考與練習 25
第二章 ISE12.1開發環境與S3開發板 26
2.1 ISE12.1軟體綜述 26
2.1.1 ISE12.1套件分類 26
2.1.2 ISE12.1功能介紹 27
2.1.3 ISE12.1用戶界面和選單操作 27
2.2 S3開發板簡介 28
2.3 ISE開發流程 29
2.3.1 創建工程和設計輸入 30
2.3.2 創建TestBench並進行RTL仿真 33
2.3.3 添加約束 36
2.3.4 綜合與實現 37
2.3.5 生成配置檔案並對FPGA進行配置 38
2.4 第三方開發工具 40
2.4.1 ModelSim介紹 40
2.4.2 在ModelSim中編譯Xilinx的器件庫 41
2.4.3 ModelSim 功能仿真舉例 42
2.4.4 Synplify Pro介紹 47
2.4.5 關聯ISE和Synplify Pro 47
2.4.6 Synplify Pro使用流程 48
本章小結 52
思考與練習 52
第二篇 數字電路設計基礎與VerilogHDL描述
第三章 VerilogHDL語言基礎 53
3.1 基本知識介紹 53
3.2 模組結構和編程框架 54
3.2.1 模組的結構 54
3.2.2 編程框架 56
3.3 數據類型和基本元素 58
3.3.1 基本概念 58
3.3.2 基本數據類型值 59
3.3.3 數據類型 59
3.3.4 常量 61
3.4 結構化描述 62
3.5 TestBench簡介 64
本章小結 66
思考與練習 67
第四章 組合邏輯設計 68
4.1 基本操作符 68
4.1.1 算術操作符 69
4.1.2 移位操作符 70
4.1.3 關係運算符與相等運算符 70
4.1.4 位操作、複製和邏輯操作運算符 70
4.1.5 連線與複製運算符 72
4.1.6 條件運算符 72
4.1.7 位寬調整操作 73
4.1.8 關於Z和X的綜合 74
4.2 組合邏輯描述 75
4.2.1 使用always模組描述組合邏輯 75
4.2.2 使用賦值語句描述組合邏輯 76
4.2.3 舉例說明 76
4.3 條件控制語句 78
4.3.1 if-else語句 78
4.3.2 case語句 80
4.3.3 casez和casex語句 82
4.3.4 “full case”和“parallel case”語句 83
4.4. 條件控制語句的布線結構 84
4.4.1 優先權布線網路 84
4.4.2 多路選擇布線網路 85
4.5 always語句的編程指導 86
4.6 工程實踐 89
4.6.1 十六進制數到七段數碼管解碼器 89
4.6.2 帶符號加法器設計 92
4.6.3 桶形移位器設計 95
本章小結 96
思考與練習 97
第五章 時序邏輯設計 98
5.1 時序電路基礎 98
5.1.1 時序電路基本存儲單元 98
5.1.2 同步時序電路 99
5.1.3 時序電路分類 100
5.2 時序電路基本單元的HDL描述 101
5.2.1 D觸發器 101
5.2.2 暫存器 104
5.2.3 暫存器檔案 104
5.3 簡單例程 105
5.3.1 移位暫存器 105
5.3.2 二進制計數器和變數 107
5.4 時序電路的TestBench 111
5.5 工程實踐 114
5.5.1 LED時序動態選擇電路 114
5.5.2 秒表設計 122
5.5.3 FIFO緩衝器設計 126
本章小結 131
思考與練習 131
第六章 時序狀態機設計 133
6.1 有限狀態機 133
6.1.1 Moore和Mealy狀態機 133
6.1.2 有限狀態機的描述方式 133
6.1.3 有限狀態機的HDL開發 135
6.2 狀態機設計實例 138
6.2.1 上升沿檢測電路 138
6.2.2 按鍵防抖動電路 143
6.2.3 電路硬體驗證 147
6.3 帶數據路徑的狀態機(FSMD) 149
6.3.1 簡單暫存器傳輸操作 149
6.3.2 FSMD狀態描述 150
6.3.3 FSMD的模組框圖 151
6.4 FSMD的HDL代碼開發 152
6.4.1 基於FSMD描述的按鍵防抖動電路 152
6.4.2 顯性描述數據路徑 153
6.4.3 隱含描述數據路徑 156
6.5 設計舉例 158
6.5.1 斐波納契序列(Fibonacci Number)實現電路 158
6.5.2 頻率檢測器設計 162
6.5.3 除法電路設計 165
本章小結 169
思考與練習 169
第七章 數字電路設計原則與VerilogHDL難點解析 171
7.1 時序電路基礎 171
7.1.1 同步電路的時序分析 173
7.1.2 異步電路和同步電路的區別 174
7.1.3 同步時序設計規則 175
7.2 異步電路中的同步處理方法 175
7.2.1 時鐘的同步處理 175
7.2.2 接口電路處理 177
7.2.3 全局信號處理 182
7.3 阻塞賦值與非阻塞賦值 184
7.3.1 概述 185
7.3.2 組合邏輯電路中的賦值描述 186
7.3.3 時序電路賦值描述 187
7.3.4 時序電路中的混合賦值 188
7.4 優秀HDL代碼風格 191
7.4.1 代碼風格的含義 191
7.4.2 通用代碼風格 191
7.4.3 Xilinx晶片專用代碼風格 195
7.4.4 推薦時序電路描述代碼風格 196
7.5 TestBench編寫 199
7.5.1 基於HDL的TestBench編寫 199
7.5.2 always和initial模組 199
7.5.3 順序執行語句 200
7.5.4 時序控制語句 201
7.5.5 系統函式和任務 203
7.5.6 用戶自定義函式和任務 208
7.5.7 TestBench舉例 211
本章小結 218
思考與練習 218
第三篇 基於FPGA的接口開發
第八章 UART串口通信控制器 219
8.1 UART傳輸系統 219
8.2 UART接收模組設計 220
8.2.1 設計方案 220
8.2.2 波特率產生器 221
8.2.3 UART接收器 221
8.2.4 接口電路 225
8.3 UART傳送模組設計 228
8.4 UART系統的總結 231
8.4.1 完整UART系統 231
8.4.2 UART驗證電路 233
8.4.3 Windows的超級終端 234
8.4.4 定製UART 235
本章小結 236
思考與練習 236
第九章 PS/2鍵盤接口控制器 237
9.1 PS/2基礎 237
9.1.1 PS/2連線埠的物理接口 237
9.1.2 PS/2接口主從設備通信協定 237
9.1.3 PS/2接收模組設計 238
9.2 PS/2鍵盤掃描設計 242
9.2.1 關於鍵盤掃描編碼 242
9.2.2 按鍵掃描電路設計 243
9.3 PS/2鍵盤接口電路 246
9.3.1 接口電路設計 246
9.3.2 接口電路驗證 248
本章小結 251
思考與練習 251
第十章 PS/2滑鼠接口控制器 253
10.1 PS/2滑鼠接口電路 253
10.1.1 關於滑鼠 253
10.1.2 滑鼠PS/2通信協定 253
10.1.3 初始化過程 254
10.2 PS/2傳輸子系統設計 254
10.2.1 主系統對PS/2設備的通信協定 254
10.2.2 設計與編碼 255
10.3 PS/2滑鼠數據傳輸系統 260
10.3.1 雙向傳輸PS/2接口電路設計 260
10.3.2 雙向傳輸PS/2驗證電路 262
10.4 PS/2滑鼠數據接口電路 265
10.4.1 傳輸PS/2接口電路設計 265
10.4.2 傳輸PS/2接口電路測試 268
本章小結 270
思考與練習 270
第十一章 RAM接口控制器 271
11.1 關於IS61LV25616AL SRAM 271
11.1.1 晶片介紹以及I/O接口 271
11.1.2 時序參數 272
11.2 基本存儲控制器 274
11.2.1 設計框圖 274
11.2.2 時序要求 276
11.2.3 存儲器檔案與SRAM的對比 276
11.2.4 設計安全性 276
11.2.5 ASMD狀態機圖 276
11.2.6 時序分析 277
11.2.7 HDL代碼設計 278
11.2.8 基本測試電路 281
11.2.9 完整的SRAM測試電路 283
11.3 更加完善的設計 289
11.3.1 異步SRAM的時序信息 289
11.3.2 選擇設計Ⅰ 290
11.3.3 選擇設計Ⅱ 291
11.4 Xilinx Spartan-3內部存儲器 292
11.4.1 概述 292
11.4.2 利用CoreGenerator定製嵌入式RAM模組 292
11.5 Xilinx嵌入式存儲器例化舉例 293
11.5.1 單連線埠RAM 293
11.5.2 雙連線埠RAM 295
11.5.3 ROM 297
本章小結 299
思考與練習 299
第十二章 VGA圖形圖像顯示控制器 301
12.1 CRT顯示器原理 301
12.1.1 CRT顯示的基本原理 301
12.1.2 視頻顯示基本術語 302
12.1.3 S3開發板上的VGA連線埠 303
12.1.4 VGA視頻控制器 303
12.2 VGA同步電路 304
12.2.1 水平同步 304
12.2.2 垂直同步 305
12.2.3 HDL實現 306
12.2.4 測試電路 308
12.3 像素產生電路 309
12.3.1 矩形圖形顯示 311
12.3.2 非矩形目標顯示 316
12.3.3 動態目標顯示 317
12.4 點陣圖顯示方案 324
12.4.1 採用雙連線埠RAM實現 324
12.4.2 採用單連線埠RAM實現 328
本章小結 328
思考與練習 329
第四篇 基於FPGA的軟核微控制器PicoBlaze
第十三章 基於Xilinx FPGA的微處理器 331
13.1 PicoBlaze架構介紹 331
13.1.1 微處理器的套用 333
13.1.2 PicoBlaze處理器的特點 333
13.1.3 頂層HDL模型 335
13.1.4 設計流程 335
13.2 指令設定 336
13.2.1 編程模型 337
13.2.2 指令格式 337
13.2.3 邏輯指令 338
13.2.4 算術指令 339
13.2.5 比較和測試指令 339
13.2.6 移位和循環指令 340
13.2.7 數據傳輸指令 341
13.2.8 程式流程控制指令 342
13.2.9 中斷相關指令 344
13.2.10 KCPSM3彙編宏命令 345
13.3 PicoBlaze檔案結構 346
本章小結 349
思考與練習 349
第十四章 PicoBlaze彙編語言開發 350
14.1 PicoBlaze彙編基礎 350
14.1.1 KCPSM3語法規定 350
14.1.2 位操作 350
14.1.3 多位元組操作 351
14.1.4 常用控制語句結構的彙編語言描述 352
14.2 子程式開發 355
14.3 PicoBlaze彙編程式開發 356
14.3.1 開發流程 356
14.3.2 程式舉例 357
14.3.3 說明文檔與注釋 363
14.4 PicoBlaze軟體開發流程 365
14.4.1 使用KCPSM3編譯 365
14.4.2 使用PBlazeIDE仿真 366
14.4.3 使用JTAG接口下載代碼 369
14.4.4 代碼綜合 369
本章小結 371
思考與練習 371
第十五章 PicoBlaze接口開發 372
15.1 輸出連線埠 372
15.1.1 輸出指令和時序 372
15.1.2 輸出接口 373
15.2 輸入連線埠 375
15.2.1 輸入指令和時序 375
15.2.2 輸入接口 375
15.3 求平方和電路接口開發 377
15.3.1 輸出接口 377
15.3.2 輸入接口 379
15.3.3 彙編程式設計 380
15.3.4 HDL程式開發 389
本章小結 392
思考與練習 392
第十六章 PicoBlaze中斷 393
16.1 PicoBlaze中斷處理機制 393
16.1.1 軟體中斷處理過程 393
16.1.2 中斷時序描述 394
16.2 外部中斷接口 395
16.2.1 單箇中斷請求 395
16.2.2 多箇中斷請求 395
16.3 軟體開發 396
16.3.1 中斷處理主程式 396
16.3.2 中斷服務程式 397
16.4 設計舉例 397
16.4.1 中斷接口 397
16.4.2 中斷服務子程式開發 397
16.4.3 彙編程式開發 398
16.4.4 HDL代碼開發 405
本章小結 409
思考與練習 409
參考文獻 410

相關詞條

熱門詞條

聯絡我們