Xilinx FPGA 權威設計指南:基於 Vivado 2023 設計套件

何賓

  • 出版商: 電子工業
  • 出版日期: 2024-04-01
  • 定價: $1,188
  • 售價: 8.5$1,010
  • 語言: 簡體中文
  • 頁數: 632
  • ISBN: 7121475162
  • ISBN-13: 9787121475160
  • 相關分類: FPGA
  • 下單後立即進貨 (約4週~6週)

買這商品的人也買了...

商品描述

本書全面系統介紹了Xilinx新一代集成開發環境Vivado 2023的設計方法、設計流程和具體實現。全書共11章,內容包括:Xilinx新一代UltraScale+架構FPGA、Vivado設計套件導論、Vivado工程模式基本設計實現、Vivado非工程模式基本設計實現、Vivado創建和封裝用戶IP核流程、Vivado時序和物理約束原理及實現、Vivado調試工具原理及實現、Vivado動態功能交換原理及實現、Vitis HLS原理詳解、Vitis HLS實現過程詳解,以及HDMI顯示屏驅動原理和實現。本書參考了Xilinx最新的Vivado 2023設計套件設計資料,理論與應用並重,將Xilinx最新的設計理論貫穿在具體的設計實現中。

目錄大綱

目 錄
第 章 Xilinx新一代UltraScale+架構FPGA 1
1.1 UltraScale+結構特點 1
1.1.1 Artix UltraScale+ FPGA系列 1
1.1.2 Kintex UltraScale+ FPGA系列 2
1.1.3 Virtex UltraScale+ FPGA系列 3
1.2 可配置邏輯塊 4
1.2.1 查找表功能和配置 7
1.2.2 多路復用器 10
1.2.3 進位邏輯 21
1.2.4 存儲元件 29
1.2.5 分佈式RAM(只有SLICEM) 33
1.2.6 只讀存儲器(ROM) 37
1.2.7 移位寄存器(只有SLICEM) 42
1.3 時鐘資源和時鐘管理模塊 45
1.3.1 時鐘架構概述 45
1.3.2 時鐘布線資源概述 46
1.3.3 CMT概述 46
1.3.4 時鐘資源 47
1.3.5 時鐘管理模塊 52
1.4 存儲器資源 56
1.4.1 BRAM資源 56
1.4.2 UltraRAM資源 66
1.5 專用的DSP模塊 72
1.6 SelectIO資源 83
1.6.1 SelectIO接口資源 83
1.6.2 SelectIO接口通用指南 87
1.6.3 SelectIO接口邏輯資源 90
1.6.4 高密度I/O組 99
1.7 高速串行收發器 100
1.7.1 GTH和GTY收發器 101
1.7.2 GTM收發器 103
1.8 系統監控器模塊 104
1.9 互聯資源 107
1.10 配置模塊 107
1.10.1 配置模式概述 108
1.10.2 JTAG連接 110
1.10.3 保護比特流 111
1.11 參考資料 112
第 章 Vivado設計套件導論 113
2.1 Vivado設計套件框架 113
2.1.1 Vivado設計套件功能 113
2.1.2 Vivado設計套件支持的工業標準 114
2.1.3 Vivado對第三方工具的支持 114
2.2 Vivado系統級設計流程 114
2.3 Vivado兩種設計流程模式 117
2.3.1 工程模式 117
2.3.2 非工程模式 117
2.3.3 兩種模式不同點比較 118
2.3.4 兩種模式命令的區別 119
2.4 Vivado中電路結構的網表描述 120
2.5 Vivado中工程數據的目錄結構 121
2.6 Vivado中Journal文件和Log文件功能 121
2.6.1 Journal文件(Vivado.jou) 121
2.6.2 Log文件(Vivado.log) 122
2.7 Vivado中XDC文件 124
2.7.1 XDC的特性 124
2.7.2 XDC與UCF區別 125
2.7.3 約束文件的使用方法 125
2.7.4 約束順序 126
2.7.5 XDC命令 127
2.8 Vivado IDE的啟動方法 128
2.9 Vivado IDE主界面 128
2.9.1 Quick Start分組 129
2.9.2 Tasks分組 132
2.9.3 Learning Center分組 132
2.10 Vivado IDE工程界面及功能 133
2.10.1 流程處理主界面及功能 133
2.10.2 Sources窗口及功能 134
2.10.3 工程總結窗口 136
2.10.4 運行設計的交互窗口 138
2.11 Vivado支持的屬性 142
第 章 Vivado工程模式基本設計實現 159
3.1 創建新的設計工程 159
3.2 修改工程屬性 162
3.2.1 修改目標語言設置 162
3.2.2 General設置參數含義 163
3.3 創建並添加一個新的設計文件 164
3.4 設計RTL分析 169
3.4.1 運行Linter 169
3.4.2 詳細描述的實現 170
3.4.3 運行方法檢查 173
3.4.4 報告DRC 174
3.4.5 報告噪聲 176
3.4.6 生成HDL例化模板 177
3.5 行為級模擬 179
3.5.1 模擬功能概述 179
3.5.2 編譯模擬庫(可選) 179
3.5.3 行為級模擬的實現 180
3.5.4 模擬器界面的功能 184
3.6 設計綜合和分析 187
3.6.1 綜合的概念和特性 187
3.6.2 設計綜合選項 188
3.6.3 執行設計綜合 191
3.6.4 打開綜合後的設計 193
3.6.5 打開綜合後的原理圖 194
3.6.6 查看綜合報告 196
3.6.7 添加其他報告 197
3.6.8 創建新的運行 198
3.7 綜合後的模擬 199
3.8 創建實現約束 200
3.8.1 實現約束的原理 200
3.8.2 I/O規劃工具 201
3.8.3 添加引腳約束 206
3.8.4 添加時序約束 210
3.9 設計實現和分析 212
3.9.1 設計實現原理 213
3.9.2 設計實現設置 214
3.9.3 設計實現及分析 228
3.9.4 靜態時序分析 236
3.10 佈局布線後時序模擬 241
3.11 生成編程文件 242
3.11.1 配置器件屬性 242
3.11.2 修改生成編程文件選項 248
3.11.3 執行生成可編程文件 249
3.12 下載比特流文件到FPGA 249
3.13 生成並燒寫PROM文件 251
第 章 Vivado非工程模式基本設計實現 255
4.1 非工程模式基本命令和功能 255
4.1.1 非工程模式基本命令列表 255
4.1.2 典型Tcl腳本的使用 256
4.2 Vivado集成開發環境分析設計 257
4.2.1 啟動Vivado集成開發環境 257
4.2.2 打開設計檢查點的方法 257
4.3 修改設計路徑 258
4.4 設置設計輸出路徑 258
4.5 讀取設計文件 259
4.6 運行設計綜合 259
4.7 運行設計佈局 260
4.8 運行設計布線 262
4.9 生成比特流文件 263
4.10 下載比特流文件 263
第 章 Vivado創建和封裝用戶IP核流程 265
5.1 Vivado IP設計方法 265
5.1.1 Vivado IP設計流程 265
5.1.2 IP核術語 266
5.2 創建並封裝包含源文件的IP 266
5.2.1 創建新的用於創建IP的工程 266
5.2.2 設置定製IP的庫名和目錄 268
5.2.3 封裝定製IP的實現 270
5.3 調用並驗證包含源文件的IP設計 273
5.3.1 創建新的用於調用IP的工程 273
5.3.2 設置包含調用IP的路徑 274
5.3.3 創建基於IP的系統 275
5.3.4 執行行為級模擬 279
5.3.5 系統設計綜合 281
5.3.6 系統實現和驗證 281
5.4 創建並封裝不包含源文件的IP 282
5.4.1 創建網表文件 282
5.4.2 創建新的設計工程 282
5.4.3 設置定製IP的庫名和目錄 283
5.4.4 封裝定製IP的實現 283
5.5 調用並驗證不包含源文件的IP設計 285
5.5.1 創建新的用於調用IP的工程 285
5.5.2 設置包含調用IP的路徑 285
5.5.3 創建基於IP的系統 285
5.5.4 系統設計綜合 287
第 章 Vivado時序和物理約束原理及實現 288
6.1 時序檢查的概念 288
6.1.1 基本術語 288
6.1.2 時序路徑 288
6.1.3 建立和保持鬆弛 290
6.1.4 時序分析關鍵概念 291
6.2 定義時鐘 297
6.2.1 關於時鐘 297
6.2.2 基本時鐘 298
6.2.3 虛擬時鐘 299
6.2.4 生成時鐘 300
6.2.5 時鐘組 309
6.2.6 時鐘延遲、抖動和不確定性 315
6.3 I/O延遲約束 316
6.3.1 輸入延遲 316
6.3.2 輸出延遲 318
6.4 時序例外 332
6.4.1 多周期路徑 333
6.4.2 假路徑 345
6.4.3 最大和最小延遲 346
6.4.4 Case分析 355
6.4.5 禁止時序弧 356
6.5 CDC約束 357
6.5.1 關於總線偏移約束 357
6.5.2 set_bus_skew命令的語法 358
6.6 物理約束原理 359
6.6.1 關於佈局約束 359
6.6.2 網表約束 360
6.6.3 佈局約束原理 361
6.6.4 布線約束原理 362
6.7 配置約束 363
6.8 定義相對佈局的宏 363
6.8.1 定義設計元素集 363
6.8.2 創建宏 364
6.8.3 單元分配到RPM集 364
6.8.4 分配相對位置 365
6.8.5 分配固定位置到RPM 368
6.9 佈局約束實現 369
6.9.1 修改綜合屬性 369
6.9.2 佈局約束方法 370
6.10 布線約束實現 372
6.10.1 手工布線 373
6.10.2 進入分配布線模式 373
6.10.3 分配布線節點 375
6.10.4 取消分配布線節點 375
6.10.5 完成並退出分配布線模式 375
6.10.6 鎖定LUT負載上的單元輸入 376
6.10.7 分支布線 376
6.10.8 直接約束布線 377
6.11 修改邏輯實現 378
6.12 增量編譯 379
6.12.1 增量編譯流程 379
6.12.2 運行增量佈局和布線 379
6.12.3 使用增量編譯 381
6.12.4 增量編譯高級分析 383
第 章 Vivado調試工具原理和實現 384
7.1 設計調試原理和方法 384
7.2 創建新的調試設計 385
7.2.1 創建新的FIFO調試工程 385
7.2.2 添加FIFO IP到設計中 386
7.2.3 添加頂層設計文件 389
7.2.4 在頂層文件中添加設計代碼 389
7.2.5 添加約束文件 393
7.3 網表插入調試探測流程的實現 395
7.3.1 網表插入調試探測流程的方法 395
7.3.2 網表插入調試探測流程的實現 396
7.4 添加HDL屬性調試探測流程的實現 404
7.5 添加HDL例化調試核探測流程的實現 405
7.6 VIO原理和應用 408
7.6.1 設計原理 409
7.6.2 添加VIO核 409
7.6.3 生成比特流文件 413
7.6.4 下載並調試設計 414
第 章 Vivado動態功能交換原理及實現 416
8.1 動態功能交換導論 416
8.1.1 動態功能交換介紹 416
8.1.2 術語解釋 417
8.1.3 設計考慮 418
8.1.4 常見應用 421
8.1.5 Vivado軟件流程 424
8.2 基於工程的動態功能交換實現 425
8.2.1 設計原理 425
8.2.2 建立動態功能交換工程 427
8.2.3 創建新的分區定義 429
8.2.4 添加新的可重配置模塊 430
8.2.5 設置不同的配置選項 432
8.2.6 查看/修改分區的佈局 436
8.2.7 執行DRC 437
8.2.8 實現第一個運行配置並生成比特流文件 439
8.2.9 實現第二個運行配置並生成比特流文件 439
8.2.10 實現第三個運行配置並生成比特流文件 440
8.2.11 實現第四個運行配置並生成比特流文件 440
8.2.12 下載不同運行配置的部分比特流 441
8.3 基於非工程的動態功能交換實現 442
8.3.1 查看腳本 443
8.3.2 綜合設計 443
8.3.3 實現第一個配置 444
8.3.4 實現第二個配置 449
8.3.5 驗證配置 451
8.3.6 生成比特流 451
8.3.7 部分重配置FPGA 453
8.4 動態功能交換控制器的原理及應用 453
8.4.1 動態功能交換控制器原理 453
8.4.2 實現原理 460
8.4.3 創建和配置新的設計 461
8.4.4 添加和配置ILA核 464
8.4.5 添加和配置DFXC核 465
8.4.6 創建新的分區定義 467
8.4.7 設置不同的配置選項 469
8.4.8 定義分區的佈局 471
8.4.9 實現第一個運行配置並生成比特流文件 473
8.4.10 實現第二個運行配置並生成比特流文件 474
8.4.11 實現第三個運行配置並生成比特流文件 474
8.4.12 創建應用工程 475
8.4.13 創建啟動鏡像 480
8.4.14 從SD卡啟動引導系統 482
第 章 Vitis HLS原理詳解 483
9.1 高級綜合工具概述 483
9.1.1 硬件實現算法的優勢 483
9.1.2 高級綜合工具的概述 484
9.1.3 Vitis HLS工具的優勢 485
9.1.4 從C中提取硬件結構 486
9.1.5 從不同角度理解代碼 489
9.1.6 吞吐量和性能定義 492
9.1.7 FPGA編程的三種模式 492
9.2 高級綜合工具調度和綁定 497
9.3 HLS的抽象並行編程模型 500
9.3.1 控制和數據驅動任務 501
9.3.2 數據驅動任務級並行 501
9.3.3 控制驅動任務級並行 504
9.3.4 混合數據驅動和控制驅動模型 511
9.3.5 小結 513
9.4 函數 513
9.4.1 函數內聯 514
9.4.2 函數流水線 514
9.4.3 函數例化 515
9.5 循環 515
9.5.1 循環流水線 516
9.5.2 展開循環 524
9.5.3 合並循環 525
9.5.4 嵌套循環 526
9.5.5 可變循環邊界 528
9.6 數據類型 529
9.6.1 標準類型 530
9.6.2 復合類型 534
9.6.3 任意精度類型 542
9.6.4 指針 544
9.7 數組 546
9.7.1 數組的映射 547
9.7.2 數組分割 548
9.7.3 數組重組 550
9.8 Vitis HLS優化技術 551
9.9 接口及信號定義 552
9.9.1 模塊級控制協議 552
9.9.2 埠級協議 555
第 章 Vitis HLS實現過程詳解 561
10.1 基於Vitis HLS實現組合邏輯 561
10.1.1 修改Vitis HLS環境參數 561
10.1.2 建立新的設計工程 562
10.1.3 添加設計文件 565
10.1.4 工具欄的功能 566
10.1.5 流程導航器的功能 567
10.1.6 執行高級綜合 567
10.1.7 添加用戶命令優化設計 570
10.1.8 打開調度查看器 572
10.1.9 運行協同模擬 574
10.1.10 查看RTL模擬結果 576
10.1.11 運行實現 577
10.1.12 導出RTL 580
10.2 基於Vitis HLS實現時序邏輯 583
10.2.1 創建新的設計工程 583
10.2.2 添加設計文件 584
10.2.3 添加用戶命令 585
10.2.4 執行高級綜合 585
10.2.5 打開調度查看器 587
10.2.6 運行協同模擬 588
10.2.7 查看RTL模擬結果 589
10.2.8 運行實現 590
10.2.9 導出RTL 591
10.3 基於Vitis HLS實現矩陣相乘 594
10.3.1 創建新的設計工程 594
10.3.2 添加設計文件 594
10.3.3 執行高級綜合 595
10.3.4 打開調度查看器 597
10.3.5 添加C++測試文件 597
10.3.6 運行和調試C工程 598
10.3.7 運行協同模擬 599
10.3.8 查看RTL模擬結果 600
10.3.9 添加用戶策略 601
10.3.10 添加策略後的高級綜合 602
10.3.11 查看RTL模擬結果 603
10.3.12 比較設計結果 604
第 章 HDMI顯示屏驅動原理和實現 606
11.1 HDMI的發展歷史 606
11.2 HDMI視頻顯示接口定義 607
11.3 HDMI鏈路結構 608
11.4 HDMI鏈路時序要求 609
11.5 HDMI編碼算法 609
11.6 HDMI並行編碼數據轉換原理及實現 613
11.6.1 數據並行-串行轉換 613
11.6.2 三態並行-串行轉換器 614
11.6.3 OSERDESE2原語 614
11.6.4 TMDS信號轉換模塊 616
11.6.5 HDMI並行編碼數據轉換的實現 616
11.7 系統整體設計結構 618