Xilinx FPGA權威設計指南:基于Vivado 2023設計套件 ( 簡體 字) |
作者:何賓 | 類別:1. -> 電子工程 -> FPGA |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 56393 詢問書籍請說出此書號!【有庫存】 NT售價: 990 元 |
出版日:4/1/2024 |
頁數:632 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787121475160 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:自從本書作者2009年第一次出版Xilinx FPGA的書籍到現在已經過去近15年了,在這15年間,作為全球最大的FPGA廠商—美國Xilinx,不斷推出新的器件和軟件開發環境,業已成為全球信息技術重要的推動者,為全球信息技術的發展做出了重要貢獻。由于Xilinx FPGA在高算力方面有著不可替代的作用,全球知名的半導體公司AMD于2022年完成了對Xilinx公司的收購。在AMD并購Xilinx后,將進一步拓展Xilinx FPGA在人工智能、數據中心等高算力方面的應用。
在這里需要指出,在此次并購完成后,新推出的關于FPGA的官方文檔、軟件設計套件和器件都用AMD進行冠名。為了兼顧老讀者的閱讀習慣,本書仍然沿用Xilinx這一名字。
本書是在《Xilinx FPGA權威設計指南:基于Vivado 2018集成開發環境》(電子工業出版社,2018)基礎上,采用Xilinx公司最新的Vivado 2023設計套件,針對讀者提出的意見和建議,對原書進行修訂的。主要修訂內容包括:
(1)在第1章Xilinx新一代UltraScale+架構FPGA中,將器件從原書的UltraScale架構更新為UltraScale+架構,并增加了對VHDL語言的支持。通過同時使用Verilog HDL和VHDL,詳細解讀了UltraScale+架構FPGA內部原語的原理和使用方法。
(2)在第2章Vivado設計套件導論中,針對 Vivado 2023設計套件,大幅度修訂了關于設計套件框架、圖形窗口和綜合屬性的內容。
(3)在第3章Vivado工程模式基本設計實現中,增加了對Vivado 2023集成開發環境新功能和新特性的介紹,并且增加了對綜合屬性、實現屬性和配置屬性的一些細節內容的介紹。
(4)在第6章Vivado時序和物理約束原理及實現中,大幅度增加了時序約束原理的介紹,并通過相應設計實例對時序約束原理進行解釋和說明。
(5)根據Vivado設計套件的新特性,重新編寫了第8章動態功能交換原理及實現中的內容。
(6)根據Vitis HLS的新特性,重新編寫了第9章Vitis HLS原理詳解中的內容。
(7)根據Vitis HLS的新特性,重新編寫了第10章Vitis HLS實現過程詳解中的內容。
由于FPGA技術發展迅速,作者水平有限,書中難免會有疏漏之處,歡迎讀者批評指正。
作 者
2024年4月于北京 |
內容簡介:本書全面系統介紹了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 |
序: |