IntelFPGA 權威設計指南:基於 QuartusPrimePro19 集成開發環境
內容描述
本書以Intel公司的QuartusPrimePro19集成開發環境與Intel新一代的可編程邏輯器件Cyclone10GX為軟件和硬件平台,
系統地介紹了可編程邏輯器件的原理和Quartus PrimePro集成開發環境的關鍵特性。
全書共11章,內容主要包括IntelCyclone10GXFPGA結構詳解、QuartusP rimeProHDL設計流程、
QuartusPrimePro塊設計流程、QuartusPrimePro定制IP核設計流程、Quartus PrimePro命令行腳本設計流程、
DesignSpaceExplorerII設計流程、QuartusPrimePro系統調試原理及實現、QuartusPrimePro時序和物理約束原理及實現、
QuartusPrimePro中HDL高級設計方法、QuartusPrimePro部分可重配置原理及實現,以及Intel高級綜合工具原理及實現方法。
本書可作為使用Intel集成開發環境QuartusPrimePro進行FPGA設計的工程技術人員的參考用書,
也可作為電子信息類專業高年級本科生和研究生的教學與科研用書,
還可以作為Intel公司QuartusPrimePro相關培訓的培訓教材。
目錄大綱
第 1 章 Intel Cyclone 10 GX FPGA 結構詳解 1
1.1 邏輯陣列塊和自適應邏輯塊 1
1.1.1 ALM結構和功能 1
1.1.2 LUT的工作模式 2
1.1.3 寄存器和鎖存器 12
1.1.4 LAB的互聯架構 21
1.1.5 分佈式存儲器 22
1.2 存儲器塊 32
1.2.1 嵌入式存儲器塊設計指導 32
1.2.2 存儲器塊打包模式 34
1.2.3 地址時鐘使能 35
1.2.4 存儲器塊異步清除 35
1.2.5 存儲器塊糾錯碼 35
1.2.6 使用M20K實現RAM 36
1.3 時鐘網絡和相位鎖相環 40
1.3.1 時鐘網絡類型 40
1.3.2 時鐘資源功能 43
1.3.3 層次化時鐘結構 45
1.3.4 時鐘控制塊 47
1.3.5 時鐘功耗控制 50
1.3.6 相位鎖相環 52
1.4 I/O塊 58
1.4.1 I/O組的排列 59
1.4.2 I/O電氣標準 60
1.4.3 I/O架構和特性 62
1.4.4 可編程的IOE特性 65
1.4.5 片上端接 67
1.4.6 SERDES和DPA 67
1.5 DSP塊 70
1.5.1 DSP塊特性 71
1.5.2 DSP塊資源 71
1.5.3 DSP塊架構 72
1.5.4 DSP塊應用 72
1.6 外部存儲器接口 78
1.6.1 外部存儲器接口特性 79
1.6.2 外部存儲器接口I/O引腳 80
1.6.3 器件封裝支持的存儲器接口 80
1.6.4 外部存儲器接口架構 82
1.7 配置技術 87
1.7.1 AS配置 89
1.7.2 PS配置 94
1.7.3 FPP配置 97
1.7.4 JTAG配置 106
1.7.5 配置流程 108
1.8 電源管理 110
1.8.1 功耗 110
1.8.2 可編程電源技術 110
1.8.3 電源傳感線 111
1.8.4 片上電壓傳感器 111
1.8.5 溫度傳感二極管 112
1.8.6 上電/斷電順序要求 112
第 2 章 Quartus Prime Pro HDL 設計流程 113
2.1 Quartus Prime Pro及組件的下載、安裝和授權 113
2.1.1 下載Quartus Prime Pro及組件 113
2.1.2 安裝Quartus Prime Pro及組件 117
2.1.3 授權Quartus Prime Pro及組件 118
2.2 Quartus Prime Pro功能和特性 121
2.3 Quartus Prime Pro設計流程 122
2.3.1 處理流程框架 122
2.3.2 增量優化的概念 125
2.3.3 超感知設計流程 125
2.4 建立新的設計工程 128
2.5 添加新的設計文件 134
2.6 設計的分析和綜合處理 137
2.6.1 分析和綜合的概念 137
2.6.2 分析和綜合的屬性選項 140
2.6.3 分析和綜合的實現 147
2.6.4 查看分析和綜合的結果 149
2.7 設計的行為級仿真 155
2.7.1 使用Verilog HDL生成測試向量的仿真 155
2.7.2 使用波形文件生成測試向量的仿真 161
2.8 設計的約束 165
2.8.1 通過GUI指定約束的方法 165
2.8.2 使用Tcl腳本約束設計的方法 166
2.8.3 在Assignment Editor中添加約束條件 172
2.8.4 在Pin Planner中添加約束條件 174
2.8.5 I/O分配分析 178
2.8.6 添加簡單的時序約束條件 180
2.9 設計的適配 184
2.9.1 適配器設置選項 184
2.9.2 適配的實現 189
2.9.3 查看適配後的結果 190
2.10 查看時序分析結果 196
2.10.1 時序分析的基本概念 196
2.10.2 時序路徑和時鐘分析 197
2.10.3 時鍾建立分析 200
2.10.4 時鐘保持分析 201
2.10.5 恢復和去除分析 202
2.10.6 多周期路徑分析 203
2.10.7 亞穩態分析 206
2.10.8 時序悲觀 207
2.10.9 時鐘作為數據分析 208
2.10.10 多角時序分析 209
2.10.11 時序分析的實現 210
2.11 功耗分析原理和實現 217
2.11.1 功耗分析器輸入 218
2.11.2 功耗分析器設置 220
2.11.3 節點和實體分配 222
2.11.4 執行功耗分析 223
2.12 生成編程文件 226
2.12.1 裝配器選項屬性設置 226
2.12.2 可編程文件類型 232
2.12.3 運行裝配器工具 232
2.12.4 生成PROM文件 233
2.13 下載設計 239
2.13.1 下載設計到FPGA 239
2.13.2 編程串行Flash存儲器 241
第 3 章 Quartus Prime Pro 塊設計流程 243
3.1 基於塊的設計介紹 243
3.1.1 與塊設計有關的術語 243
3.1.2 設計塊重用介紹 244
3.1.3 基於塊的增量編譯介紹 246
3.2 設計方法學介紹 247
3.2.1 自頂向下設計方法學介紹 247
3.2.2 自底向上設計方法學介紹 247
3.2.3 基於團隊的設計方法學介紹 248
3.3 設計分區 249
3.3.1 為外圍IP、時鐘和PLL規劃分區 250
3.3.2 設計分區指導 251
3.3.3 保留和重用分區快照 251
3.3.4 創建設計分區 252
3.4 設計分區重用流程 255
3.4.1 重用核心分區 256
3.4.2 重用根分區 263
3.4.3 保留核心實體重新綁定 269
3.5 增量塊設計流程 270
3.5.1 增量的時序收斂 270
3.5.2 設計抽象及實現 272
3.5.3 空分區時鐘源保留 273
3.6 設計塊重用和基於塊增量編譯的組合 273
3.7 建立基於團隊的設計 274
3.7.1 為基於團隊的設計創建一個頂層工程 274
3.7.2 為工程集成準備一個設計分區 277
3.8 自底向上的設計考慮 278
第 4 章 Quartus Prime Pro定制IP 核設計流程 279
4.1 Platform Designer工具功能介紹 279
4.1.1 Platform Designer支持的接口 279
4.1.2 元件結構 280
4.1.3 元件文件組織 281
4.1.4 元件版本 281
4.1.5 IP元件的設計週期 281
4.2 調用Platform Designer工具 282
4.3 創建定制元件IP核 285
4.3.1 指定IP元件類型 285
4.3.2 創建/指定用於綜合和仿真的HDL文件 286
4.4 創建通用元件IP核 298
4.5 對定制元件IP核進行驗證 309
4.6 對通用元件IP核進行驗證 310
4.6.1 添加頂層原理圖文件 310
4.6.2 修改user_define. v文件 312
4.6.3 添加generic_component_0. v文件 314
4.7 IP核生成輸出(Quartus Prime Pro版本) 315
第 5 章 Quartus Prime Pro命令行腳本設計流程 317
5.1 工具命令語言 317
5.2 Quartus Prime Tcl包 317
5.3 Quartus Prime Tcl API Help 319
5.3.1 命令行選項 321
5.3.2 Quartus Prime Tcl控制台窗口 323
5.4 端到端的設計流程 323
5.4.1 建立新的設計工程 325
5.4.2 添加新的設計文件 325
5.4.3 添加設計約束條件 326
5.4.4 設計綜合 329
5.4.5 設計適配 330
5.4.6 設計裝配(生成編程文件) 331
5.4.7 報告 331
5.4.8 時序分析 333
5.5 自動腳本執行 335
5.5.1 執行例子 336
5.5.2 控制處理 336
5.5.3 顯示消息 337
5.6 其他腳本 337
5.6.1 自然總線命名 337
5.6.2 短選項名字 337
5.6.3 集合命令 337
5.6.4 Node Finder命令 339
5.6.5 get_names命令 354
5.6.6 post_message命令 356
5.6.7 訪問命令行參數 356
5.6.8 quartus() Array 358
5.7 tclsh shell 359
5.8 Tcl腳本基礎知識 359
5.8.1 Intel FPGA COOL的例子 359
5.8.2 變量 359
5.8.3 替換 360
5.8.4 算術 360
5.8.5 列表 361
5.8.6 數組 361
5.8.7 控制結構 362
5.8.8 過程(子程序或函數) 363
5.8.9 文件I/O 363
第 6 章 Design Space Explorer II 設計流程 365
6.1 啟動DSE II工具 365
6.2 DSE II工具介紹 366
6.2.1 Project頁面 366
6.2.2 Setup頁面 367
6.2.3 Exploration頁面 369
6.2.4 Status頁面 373
6.3 在本地計算機上探索不同的實現策略 373
6.4 在遠程計算機上探索不同的實現策略 377
6.4.1 創建一個Azure賬戶 378
6.4.2 下載PuTTY相關工具 378
6.4.3 選擇Intel FPGA工具 379
6.4.4 創建和配置虛擬機 380
6.4.5 配置和啟動PuTTY工具 388
6.4.6 捕獲虛擬機上的GUI界面 391
6.4.7 打開Quartus Prime軟件 393
6.4.8 終止虛擬機 395
6.4.9 持久存儲和數據傳輸 396
6.4.10 搭建和配置許可證服務器 397
6.4.11 連接到許可證服務器 406
6.4.12 在虛擬機上運行DSE II 407
第 7 章 Quartus Prime Pro系統調試原理及實現 411
7.1 系統調試工具概述 411
7.1.1 系統調試工具組合 411
7.1.2 用於監視RTL節點的工具 414
7.1.3 具有激勵功能的工具 416
7.1.4 Virtual JTAG Interface Intel FPGA IP核 417
7.1.5 系統級調試結構 417
7.1.6 SLD JTAG橋 418
7.1.7 部分重配置設計調試 422
7.2 使用Signal Tap邏輯分析儀的設計調試 422
7.2.1 軟件和硬件要求 423
7.2.2 Signal Tap邏輯分析儀的特性和優點 423
7.2.3 Signal Tap邏輯分析儀任務流程概述 424
7.2.4 創建新的調試工程 426
7.2.5 添加FIFO IP核 427
7.2.6 添加頂層設計文件 430
7.2.7 配置Signal Tap邏輯分析儀 432
7.2.8 編譯設計 463
7.2.9 編程目標器件或器件 467
7.2.10 運行邏輯分析儀 468
7.2.11 查看、分析和使用捕獲的數據 472
7.3 使用Signal Probe的快速設計驗證 474
7.4 使用外部邏輯分析儀的系統內調試 477
7.4.1 選擇邏輯分析儀 477
7.4.2 為邏輯分析儀接口定義參數 479
7.4.3 將LAI文件引腳映射到可用的I/O引腳 480
7.4.4 將內部信號映射到LAI組 480
7.4.5 編譯Quartus Prime工程 481
7.4.6 使用LAI編程Intel支持的器件 482
7.4.7 運行時控制活動的組 482
7.5 系統內修改存儲器和常量 482
7.5.1 用系統內存儲器內容編輯器調試設計 483
7.5.2 使能運行時修改設計中的實例 483
7.5.3 用系統內存儲器內容編輯器編程器件 484
7.5.4 將存儲器實例加載到ISMCE 485
7.5.5 監視存儲器中的位置 485
7.5.6 使用“Hex Editor”窗口編輯存儲器內容 486
7.5.7 導入和導出存儲器文件 487
7.6 使用系統內源和探針的設計調試 488
7.6.1 系統內源和探針的設計流程概述 489
7.6.2 例化In-System Sources & Probes IP核 490
7.6.3 編譯設計 492
7.6.4 運行系統內源和探針編輯器 492
7.6.5 用JTAG Chain Configuration編程器件 493
7.6.6 “Instance Manager:”窗口 494
7.6.7 In-System Sources and Probes Editor主界面 494
7.6.8 In-System Sources and Probes Editor的Tcl命令 495
第 8 章 Quartus Prime Pro時序和物理約束原理及實現 497
8.1 SDC文件的高級特性 497
8.1.1 使用實體綁定的SDC文件 497
8.1.2 實體綁定的約束範圍 498
8.1.3 實體綁定的約束實例 498
8.2 創建時鐘和時鐘約束 500
8.2.1 基本時鐘 500
8.2.2 虛擬時鐘 501
8.2.3 生成時鐘 502
8.2.4 推導PLL時鐘 507
8.2.5 創建時鐘組 509
8.2.6 時鐘效應特性 512
8.3 創建I/O約束 515
8.3.1 設置輸入延遲(set_input_delay) 515
8.3.2 設置輸出延遲(set_output_delay) 516
8.4 創建偏移和延遲約束 516
8.4.1 高級I/O時序和板佈線模型延遲 516
8.4.2 設置最大偏移(set_max_skew) 517
8.4.3 設置網絡延遲(set_net_delay) 521
8.4.4 創建時序例外(異常) 523
8.4.5 多周期例外的實例 531
8.4.6 延遲註解 550
8.4.7 約束設計分區端口 550
8.5 使用適配器過約束 551
8.6 接口規劃工具原理及應用 552
8.6.1 接口規劃概述 553
8.6.2 建立新的設計工程 554
8.6.3 添加並配置外部存儲器接口IP核 555
8.6.4 添加Avalon MMM BFM IP核 563
8.6.5 在頂層文件中例化IP核 565
8.6.6 初始化Interface Planner 567
8.6.7 用工程分配更新計劃 568
8.6.8 規劃外圍佈局 568
8.6.9 報告佈局數據 573
8.6.10 驗證和導出規劃約束 574
第 9 章 Quartus Prime Pro中HDL 高級設計方法 576
9.1 綜合支持的HDL語言 576
9.1.1 Verilog和SystemVerilog綜合支持 576
9.1.2 VHDL綜合支持 580
9.2 HDL支持的綜合屬性和命令 581
9.2.1 Verilog HDL綜合屬性和命令 581
9.2.2 VHDL綜合屬性和命令 597
9.3 底層原語的使用 614
9.3.1 底層I/O原語 616
9.3.2 底層邏輯原語 621
第 10 章 Quartus Prime Pro部分可重配置原理及實現 628
10.1 部分可重配置基本概念 628
10.1.1 部分可重配置術語 629
10.1.2 部分可重配置過程序列 629
10.1.3 內部主設備部分可重配置 630
10.1.4 外部主設備部分可重配置 632
10.1.5 部分可重配置設計注意事項 632
10.2 部分可重配置基本流程的實現 633
10.2.1 建立新的設計工程 634
10.2.2 添加設計文件 634
10.2.3 創建設計分區 637
10.2.4 為PR分區分配佈局和佈線區域 639
10.2.5 添加部分可重配置控制器IP核 642
10.2.6 定義角色 644
10.2.7 創建修訂版 645
10.2.8 編譯基本修訂版本 647
10.2.9 準備PR實現修訂版 648
10.2.10 編程器件 650
10.3 層次化部分可重配置流程的實現 652
10.3.1 建立新的設計工程 652
10.3.2 添加設計文件 653
10.3.3 創建設計分區 655
10.3.4 為PR分區分配佈局和佈線區域 658
10.3.5 添加部分可重配置控制器IP核 660
10.3.6 定義角色 662
10.3.7 創建修訂版 663
10.3.8 編譯基本修訂版本 666
10.3.9 為父PR分區準備PR實現修訂版 667
10.3.10 為子PR分區準備PR實現修訂版 669
10.3.11 編程器件 672
第 11 章 Intel高級綜合工具原理及實現方法 673
11.1 高級綜合工具概論 673
11.1.1 高級綜合工具的優勢 673
11.1.2 高級綜合工具運行要求 675
11.1.3 高級綜合工具的簡要流程 675
11.1.4 HLS與OpenCL 676
11.1.5 高級綜合工具編譯器細節 676
11.2 高級綜合工具基本流程的實現 680
11.2.1 構建C++模型和測試平台 680
11.2.2 C和C++庫 685
11.2.3 設置高級綜合編譯器 690
11.2.4 運行高級綜合編譯器 692
11.2.5 查看高級設計報告 694
11.2.6 查看元件RTL仿真波形 700
11.3 任意精度數據類型及優化 702
11.3.1 元件中聲明ac_int數據類型 703
11.3.2 調試ac_int數據類型的使用 703
11.3.3 元件中聲明ac_fixed數據類型 704
11.3.4 浮點編譯優化 707
11.4 元件接口 712
11.4.1 元件調用接口 712
11.4.2 Avalon流接口 715
11.4.3 Avalon存儲器映射的主接口 721
11.4.4 Avlaon存儲器映射的從接口 725
11.4.5 元件調用接口參數 731
11.4.6 不穩定和穩定元件參數 734
11.4.7 全局變量 736
11.4.8 元件接口的結構體 736
11.4.9 復位行為 736
11.5 元件中的本地變量(存儲器屬性) 737
11.5.1 編譯器元件存儲器屬性 737
11.5.2 靜態變量 761
11.6 元件中的循環 762
11.6.1 循環啟動間隔(ii編譯指示) 764
11.6.2 循環攜帶的依賴性(ivdep編譯指示) 765
11.6.3 循環合併(loop_coalesce編譯指示) 768
11.6.4 循環展開(unroll編譯指示) 770
11.6.5 循環並發(max_concurrency編譯指示) 773
11.7 元件並發性 773
11.7.1 存儲空間或I/O的串行等效 774
11.7.2 並行性控制 774
附錄A C10-EDP-1硬件開發平台原理圖 775
附錄B USB-Blaster下載器驅動故障排除方法 790
作者介紹
著名的嵌入式技術和EDA技術專家,長期從事電子信息技術方面的教學和科研工作,
與全球多家知名的半導體廠商和EDA工具廠商大學計劃保持緊密合作。
目前已經出版電子信息技術方面的著作近70部,內容涵蓋電路仿真、電路設計、
可編程邏輯器件、數字信號處理、單片機、嵌入式系統、片上可編程系統等。
典型的代表作有《模擬電子系統設計指南(基礎篇):從半導體、分立元件到TI集成電路的分析與實現》、
《模擬電子系統設計指南(實踐篇):從半導體、分立元件到TI集成電路的分析與實現》、
《Xilinx Zynq-7000嵌入式系統設計與實現-基於ARM Cortex-A9雙核處理器和Vivado的設計方法(第2版)》、
《Altium Designer17一體化設計標準教程-從仿真原理和PCB設計到單片機系統》、
《STC8系列單片機開髮指南:面向處理器、程序設計和操作系統的分析與應用》、
《Xilinx FPGA數字信號處理系統設計指南-基於HDL、Simulink和HLS的實現》等。
內頁插圖