相關主題
商品描述
本書結合Vivado2022.2開發環境對FPGA的開發過程進行詳細描述,註重理論與工程實踐相結合。本書內容由淺入深,循序漸進。全書共11章,分別對初識FPGA、FPGA硬件與配置基礎、Vivado與Sublime Text的安裝與配置、Vivado基本開發流程、數字邏輯基礎設計、FPGA常用的設計規範與方法、Vivado IP核使用基礎、基本波形發生器、常用通信接口設計、FPGA綜合數字系統設計及Vivado IDE高級技巧進行了詳細描述。書中的設計代碼均通過實際板級驗證,讀者可以直接將其應用於實際工程設計,同時大部分設計給出了對應的Testbench,便於讀者通過模擬對設計進行更加深入的研究學習,快速提升設計能力。本書可作為FPGA初學者、研究人員、工程技術人員的參考書籍,也可以作為大專院校相關專業的輔助教材。
目錄大綱
目錄
第1章 初識FPGA 1
1.1 FPGA基礎 1
1.1.1 FPGA是什麽 1
1.1.2 FPGA的發展歷程 1
1.2 FPGA的主流應用領域 2
1.2.1 視頻圖像處理 2
1.2.2 通信領域 3
1.2.3 數字信號處理 3
1.2.4 高性能計算 3
1.2.5 嵌入式領域 4
1.3 FPGA的開發流程 4
1.4 FPGA必備基礎與學習方法 5
1.4.1 必備基礎 5
1.4.2 學習方法 5
1.5 總結 5
第2章 FPGA硬件與配置基礎 6
2.1 FPGA最小系統 6
2.1.1 最小系統的組成 6
2.1.2 電源電路 6
2.1.3 時鐘電路 7
2.1.4 復位電路 7
2.1.5 JTAG配置電路 8
2.1.6 配置Flash電路 9
2.2 AMD FPGA的配置流程 9
2.2.1 配置模式 9
2.2.2 配置模式設置 10
2.2.3 配置功能引腳詳解 12
2.2.4 FPGA配置過程詳解 14
第3章 Vivado與Sublime Text的安裝與配置 17
3.1 Vivado安裝與License加載 17
3.1.1 Vivado安裝 17
3.1.2 Vivado License加載 22
3.2 Sublime Text下載與安裝 26
3.2.1 Sublime Text下載 26
3.2.2 Sublime Text安裝 26
3.3 Vivado與Sublime Text關聯 28
第4章 Vivado基本開發流程 30
4.1 工程建立基礎 30
4.1.1 創建工程 30
4.1.2 RTL代碼設計 33
4.1.3 邏輯模擬 36
4.1.4 添加約束 42
4.1.5 工程綜合 43
4.1.6 工程實現 44
4.1.7 bit文件生成與程序下載 45
4.2 MCS文件生成與程序固化 47
4.2.1 MCS配置文件的生成 48
4.2.2 MCS文件下載 51
第5章 數字邏輯基礎設計 55
5.1 編碼器設計 55
5.1.1 編碼器的原理 55
5.1.2 優先編碼器SystemVerilog實現 55
5.1.3 邏輯模擬驗證 56
5.2 流水燈設計 58
5.2.1 功能描述 58
5.2.2 流水燈SystemVerilog實現 58
5.2.3 模擬驗證 59
5.2.4 實際驗證 60
5.3 按鍵消抖設計 61
5.3.1 按鍵的物理結構 61
5.3.2 按鍵消抖的原理與狀態機設計 61
5.3.3 按鍵消抖SystemVerilog實現 63
5.3.4 模擬驗證 70
5.3.5 實際驗證 71
5.4 數碼管顯示驅動設計 71
5.4.1 數碼管基礎 71
5.4.2 數碼管的驅動設計原理 72
5.4.3 數碼管掃描模塊SystemVerilog實現 73
5.4.4 SN74HC595顯示驅動設計 78
5.4.5 實際驗證 80
5.5 數字時鐘設計 80
5.5.1 任務描述 80
5.5.2 需求分析 81
5.5.3 邏輯功能實現 81
5.5.4 實際驗證 95
第6章 FPGA常用的設計規範與方法 97
6.1 復位設計 97
6.1.1 同步復位設計 97
6.1.2 異步復位設計 98
6.1.3 異步復位同步釋放 98
6.1.4 AMD(Xilinx)FPGA推薦復位設計 100
6.2 跨時鐘域處理 101
6.2.1 單比特信號跨時鐘域處理 101
6.2.2 多比特信號跨時鐘域處理 104
6.3 狀態機設計 105
6.3.1 狀態編碼形式選擇 106
6.3.2 單進程、多進程(多段)狀態機設計 106
6.3.3 三種狀態機的比較 112
6.4 時序優化的基本方法 113
6.4.1 時序基礎 113
6.4.2 插入寄存器 114
6.4.3 重定時 116
第7章 Vivado IP核使用基礎 118
7.1 ILA IP核 118
7.1.1 ILA IP核創建 118
7.1.2 ILA IP核實際應用舉例 120
7.1.3 ILA抓取窗口按鈕說明 122
7.2 VIO IP核 123
7.2.1 VIO IP核創建 123
7.2.2 VIO IP核實際應用舉例 125
7.3 鎖相環——Clocking Wizard IP核 128
7.3.1 Clocking Wizard IP核創建 129
7.3.2 Clocking Wizard IP核模擬驗證 132
7.4 塊RAM使用——雙埠RAM IP核 134
7.4.1 雙埠RAM IP核的創建 134
7.4.2 雙埠RAM IP核讀寫模擬 137
7.5 塊RAM的使用——單埠ROM 140
7.5.1 ROM IP核的創建 140
7.5.2 單埠ROM讀寫模擬 143
7.6 塊RAM使用——FIFO 144
7.6.1 單時鐘FIFO IP核 144
7.6.2 雙時鐘FIFO IP核 150
第8章 基本波形發生器 157
8.1 PWM控制器設計 157
8.1.1 PWM控制器模塊設計 157
8.1.2 PWM控制器SystemVerilog實現 158
8.1.3 PWM控制器模擬驗證 160
8.2 三角波發生器設計 161
8.2.1 三角波發生模塊設計 161
8.2.2 三角波發生器SystemVerilog實現 162
8.2.3 三角波發生器模擬驗證 165
8.3 正弦波發生器設計 167
8.3.1 DDS的基本原理 168
8.3.2 幅度調節原理 169
8.3.3 正弦波模塊設計 169
8.3.4 正弦波模塊SystemVerilog實現 173
8.3.5 模擬驗證 174
第9章 常用通信接口設計 177
9.1 UART通信與RS232、RS485接口 177
9.1.1 UART協議基礎 177
9.1.2 UART發送設計 178
9.1.3 UART接收設計 191
9.1.4 RS485接口 202
9.2 SPI與ADC128S102 203
9.2.1 SPI協議簡介 203
9.2.2 ADC128S102讀寫驅動框架設計 204
9.2.3 ADC驅動SystemVerilog實現 206
9.2.4 模擬驗證 212
9.2.5 實際測試 215
9.3 IIC接口與24LC64 217
9.3.1 IIC協議簡介 217
9.3.2 24LC64讀寫時序基礎 218
9.3.3 24LC64寫模塊設計 220
9.3.4 24LC64讀模塊設計 222
9.3.5 實際測試 224
第10章 FPGA綜合數字系統設計 229
10.1 基於XADC的FPGA溫度監控與調節 229
10.1.1 功能概述 229
10.1.2 XADC IP核配置 229
10.1.3 XADC IP核使用講解 233
10.1.4 代碼設計 236
10.1.5 板級驗證 243
10.2 FPGA程序編譯時間與版本管理 244
10.2.1 功能需求概述 244
10.2.2 pro_version_infor模塊設計與實現 245
10.2.3 ascii_transform模塊設計與實現 248
10.2.4 send_period_ctrl模塊設計與實現 249
10.2.5 uart發送設計 250
10.2.6 編譯時間與版本管理頂層設計 250
10.2.7 板級驗證 253
10.3 Modbus通信協議基礎設計 254
10.3.1 Modbus通信協議基礎 254
10.3.2 Modbus-RTU協議 255
10.3.3 CRC校驗理論與工程計算 257
10.3.4 CRC16-Modbus SystemVerilog實現 259
10.3.5 Modbus-RTU協議03H/06H功能碼實現 266
10.4 逆變電源SPWM控制器設計 274
10.4.1 SPWM控制器的結構 275
10.4.2 SPWM控制器SystemVerilog實現 275
10.4.3 SPWM控制器模擬 281
10.5 DDR3 SDRAM控制器設計 282
10.5.1 DDR3 SDRAM基礎 283
10.5.2 MIG IP核使用 284
10.5.3 MIG IP核接口時序 295
10.5.4 DDR3讀寫測試設計 296
10.5.5 實際板級驗證 304
第11章 Vivado IDE高級技巧 306
11.1 MCS文件加載速度的提升方法 306
11.1.1 bit文件加載屬性 306
11.1.2 bit文件壓縮設置 308
11.2 edif文件的生成方法 309
11.2.1 edif文件的生成步驟 309
11.2.2 edif文件的使用 312
11.3 邏輯資源消耗查看方法 312
11.3.1 需求背景 312
11.3.2 子模塊資源消耗查詢方法 313
11.3.3 相同子模塊資源消耗查看與預估 315
11.4 JTAG時鐘頻率的修改方法 315
11.5 ILA窗口異常的解決方法 316
11.5.1 debug hub core介紹 316
11.5.2 JTAG、ILA、dbg_hub時鐘頻率的關系 317
11.5.3 dbg_hub時鐘連接原則 317
11.5.4 ILA調試窗口異常的解決方法 317
11.6 自定義IP核封裝方法 317
11.6.1 自定義IP核的封裝步驟 318
11.6.2 自定義IP核使用 324
11.6.3 自定義IP核封裝總結 328
參考文獻 329