內容簡介
本書系統地論述了XilinxALLProgrammableZynq7000SoC的體系結構與設計方法,全書共23章,分為3篇。Zynq7000基礎理論篇介紹了可程式SoC設計和AMBA協定規範;Zynq7000體系結構篇介紹了Zynq7000套用處理單元、可程式邏輯資源、系統互聯結構、系統公共資源特性及功能、Zynq調試和測試子系統、Zynq平台的啟動和配置、Zynq平台主要外設模組、Zynq平台描述規範和高級綜合工具HLS;Zynq7000設計實踐篇介紹了Zynq基本處理器系統的建立和運行、添加AXIIP到設計、基於定製IP實現簡單嵌入式系統設計、基於定製IP實現複雜嵌入式系統設計、軟體和硬體協同調試系統、Zynq平台配置和啟動的實現、基於ZynqHP從連線埠的數據傳輸實現、基於ZynqACP從連線埠的數據傳輸實現、XADC在Zynq平台上的套用、Ubuntu作業系統在Zynq平台上的實現、μC/OSⅢ作業系統在Zynq平台上的實現和HLS在Zynq嵌入式系統設計中的套用。全書基於Xilinx最新的Zynq7000平台,理論和實踐相結合;並配套提供了工程檔案及課件。
圖書目錄
推薦序(一)1
推薦序(二)3
前言5
第一篇Zynq7000基礎理論
第1章可程式SoC設計
1.1可程式SoC系統
1.1.1軟核及硬核處理器
1.1.2可程式SoC技術的發展
1.1.3可程式SoC技術的特點
1.1.4可程式SoC的設計流程
1.1.5可程式SoC的開發工具
1.2Xilinx Zynq平台
1.2.1Zynq平台的功能
1.2.2處理系統PS特性
1.2.3可程式邏輯PL特性
1.2.4互聯特性
1.2.5Zynq信號、接口和引腳
1.3Zynq平台設計方法學
1.3.1使用PL實現軟體算法的優勢
1.3.2設計PL加速器
1.3.3PL加速限制
1.3.4降低功耗
1.3.5實時減負
1.3.6可重配置計算
第2章AMBA協定規範
2.1AMBA規範導論
2.2AMBA APB規範
2.2.1AMBA APB寫傳輸
2.2.2AMBA APB讀傳輸
2.2.3AMBA APB錯誤回響
2.2.4操作狀態
2.2.5AMBA3 APB信號
2.3AMBA AHB規範
2.3.1AMBA AHB結構
2.3.2AMBA AHB操作
2.3.3AMBA AHB傳輸類型
2.3.4AMBA AHB猝發操作
2.3.5AMBA AHB傳輸控制信號
2.3.6AMBA AHB地址解碼
2.3.7AMBA AHB從設備傳輸回響
2.3.8AMBA AHB數據匯流排
2.3.9AMNA AHB傳輸仲裁
2.3.10AMBA AHB分割傳輸
2.3.11AMBA AHB復位
2.3.12AHB數據匯流排的位寬
2.3.13AMBA AHB接口設備
2.4AMBA AXI 4規範
2.4.1AMBA AXI 4功能
2.4.2AMBA AXI 4互聯結構
2.4.3AXI 4Lite功能
2.4.4AXI 4Stream功能
第二篇Zynq7000體系結構
第3章Zynq7000套用處理單元
3.1套用處理單元
3.1.1基本功能
3.1.2系統級視圖
3.2CortexA9處理器
3.2.1中央處理器
3.2.2L1高速快取
3.2.3存儲器管理單元
3.2.4接口
3.2.5NEON
3.2.6性能監視單元
3.3偵聽控制單元
3.3.1地址過濾
3.3.2SCU主設備連線埠
3.4L2高速快取
3.4.1互斥L2L1高速快取配置
3.4.2高速快取替換策略
3.4.3高速快取鎖定
3.4.4使能/禁止L2高速快取控制器
3.4.5RAM訪問延遲控制
3.4.6保存緩衝區操作
3.4.7在CortexA9和L2控制器之間的最佳化
3.4.8預取操作
3.4.9編程模型
3.5片上存儲器
3.5.1片上存儲器結構
3.5.2片上存儲器功能
3.6APU接口
3.6.1PL協處理接口
3.6.2中斷接口
3.7APU內的TrustZone
3.7.1CPU安全過渡
3.7.2CP15暫存器訪問控制
3.7.3MMU安全性
3.7.4L1快取安全性
3.7.5安全異常控制
3.7.6CPU調試TrustZone訪問控制
3.7.7SCU暫存器訪問控制
3.7.8L2快取中的TrustZone支持
3.8套用處理單元復位
3.8.1復位功能
3.8.2復位後的APU狀態
3.9功耗考慮
3.9.1待機模式
3.9.2在L2控制器內的動態時鐘門控
3.10系統地址分配
3.10.1地址映射
3.10.2系統匯流排主設備
3.10.3I/O外設
3.10.4SMC存儲器
3.10.5SLCR暫存器
3.10.6雜項PS暫存器
3.10.7CPU私有匯流排暫存器
3.11中斷
3.11.1中斷環境
3.11.2中斷控制器的功能
3.11.3編程模型
3.12定時器
3.12.1CPU私有定時器和看門狗定時器
3.12.2全局定時器
3.12.3系統看門狗定時器
3.12.4三重定時器/計數器
3.12.5I/O信號
3.13DMA控制器
3.13.1DMA控制器結構及特性
3.13.2DMA控制器功能
3.13.3外部信號
3.13.4暫存器描述
3.13.5用於管理器和命令的指令集參考
3.13.6編程模型參考
3.13.7編程限制
3.13.8DMAC IP配置選項
第4章Zynq7000可程式邏輯資源
4.1Zynq7000可程式邏輯資源特性
4.2可程式邏輯資源功能
4.2.1CLB、Slice和LUT
4.2.2時鐘管理
4.2.3塊RAM
4.2.4數位訊號處理
4.2.5輸入/輸出
4.2.6低功耗串列收發器
4.2.7PCIE模組
4.2.8模擬/數字轉換
4.2.9配置
第5章系統互聯結構
5.1系統互聯功能及特性
5.1.1數據路徑
5.1.2時鐘域
5.1.3連線性
5.1.4AXI ID
5.1.5暫存器
5.2服務質量
5.2.1基本仲裁
5.2.2高級QoS
5.2.3DDR連線埠仲裁
5.3AXI_HP接口
5.3.1AXI_HP接口結構及特點
5.3.2接口數據寬度
5.3.3交易類型
5.3.4命令交替和重新排序
5.3.5性能最佳化總結
5.4AXI_ACP接口
5.5AXI_GP接口
5.6AXI信號總結
5.7PL接口選擇
5.7.1使用通用主設備連線埠的CortexA9
5.7.2通過通用主設備的PS DMA控制器(DMAC)
5.7.3通過高性能接口的PL DMA
5.7.4通過AXI ACP的PL DMA
5.7.5通過通用AXI從(GP)的PL DMA
第6章系統公共資源特性及功能
6.1時鐘子系統
6.1.1時鐘系統結構及功能
6.1.2CPU時鐘域
6.1.3時鐘編程實例
6.1.4時鐘系統內生成電路結構
6.2復位子系統
6.2.1復位系統結構和層次
6.2.2啟動流程
6.2.3復位的結果
第7章Zynq調試和測試子系統
7.1JTAG和DAP子系統
7.1.1JTAG和DAP系統功能
7.1.2JTAG和DAP系統I/O信號
7.1.3編程模型
7.1.4ARM DAP控制器
7.1.5跟蹤連線埠接口單元TPIU
7.1.6Xilinx TAP控制器
7.2CoreSight系統結構及功能
7.2.1CoreSight結構
7.2.2CoreSight功能
第8章Zynq平台的啟動和配置
8.1Zynq平台啟動和配置功能
8.2外部啟動要求
8.3BootROM
8.3.1BootROM功能
8.3.2BootROM頭部
8.3.3啟動設備
8.3.4BootROM多啟動和啟動分區查找
8.3.5調試狀態
8.3.6BootROM後狀態
8.4器件配置接口
8.4.1器件配置接口功能
8.4.2器件配置流程
8.4.3PL配置
8.4.4暫存器集合
第9章Zynq平台主要外設模組
9.1DDR存儲器控制器
9.1.1DDR存儲器控制器接口及功能
9.1.2AXI存儲器連線埠接口
9.1.3DDR核交易調度器
9.1.4DDRC仲裁
9.1.5DDR控制器PHY
9.1.6DDR初始化和標定
9.1.7糾錯碼
9.2靜態存儲器控制器
9.2.1靜態存儲器控制器接口及功能
9.2.2靜態存儲器控制器和存儲器的信號連線
9.3四SPI Flash控制器
9.3.1四SPI Flash控制器功能
9.3.2四SPI控制器反饋時鐘
9.3.3四SPI Flash控制器接口
9.4SD/SDIO外設控制器
9.4.1SD/SDIO控制器功能
9.4.2SD/SDIO控制器傳輸協定
9.4.3SD/SDIO控制器接口信號連線
9.5通用輸入/輸出控制器
9.5.1通用輸入/輸出GPIO接口及功能
9.5.2通用輸入/輸出GPIO中斷功能
9.6USB主機、設備和OTG控制器
9.6.1USB控制器接口及功能
9.6.2USB主機操作模式
9.6.3USB設備操作模式
9.6.4USB OTG操作模式
9.7吉比特乙太網控制器
9.7.1吉比特乙太網控制器接口及功能
9.7.2吉比特乙太網控制器接口編程嚮導
9.7.3吉比特乙太網控制器接口信號連線
9.8SPI控制器
9.8.1SPI控制器的接口及功能
9.8.2SPI控制器時鐘設定規則
9.9CAN控制器
9.9.1CAN控制器接口及功能
9.9.2CAN控制器操作模式
9.9.3CAN控制器訊息保存
9.9.4CAN控制器接收過濾器
9.9.5CAN控制器編程模型
9.10UART控制器
9.11I2C控制器
9.11.1I2C速度控制邏輯
9.11.2I2C控制器的功能和工作模式
9.12ADC轉換器接口
9.12.1ADC轉換器功能
9.12.2ADC命令格式
9.12.3供電感測器報警
9.13PCIE接口
第10章Zynq平台描述規範
10.1Zynq平台檔案描述規範功能集
10.2微處理器硬體規範
10.2.1通用微處理器硬體規範
10.2.2AXI系統微處理器硬體規範
10.2.3Zynq7000系統微處理器規範實例
10.3微處理器外設規範
10.3.1微處理器規範框架
10.3.2匯流排接口規範
10.3.3I/O接口規範
10.3.4選項規範
10.3.5參數規範
10.3.6連線埠規範
10.3.7設計考慮
10.4外設分析命令
10.5黑盒定義
10.6微處理器軟體規範
10.6.1微處理器軟體規範格式
10.6.2全局參數
10.6.3實例指定參數
10.6.4MDD/MLD指定參數
10.6.5OS指定參數
10.6.6處理器指定參數
10.7微處理器庫定義
10.7.1庫定義檔案
10.7.2MLD格式規範
10.7.3MLD參數描述
10.7.4設計規則檢查
10.7.5庫產生
10.8微處理器驅動定義
10.8.1驅動定義檔案
10.8.2MDD格式規範
10.9Xilinx板描述格式
10.9.1XBD格式
10.9.2屬性命令
10.9.3本地參數命令及子屬性
10.9.4本地連線埠命令及子屬性
10.9.5使用IO_INTERFACE關聯IP
10.9.6AXI系統XBD格式
第11章高級綜合工具HLS
11.1高級綜合工具結構
11.1.1不同的命令對HLS綜合結果的影響
11.1.2從C中提取硬體結構
11.2高級綜合工具調度和綁定
11.2.1高級綜合工具調度
11.2.2高級綜合工具綁定
11.3Vivado HLS工具的優勢
11.4C代碼的關鍵屬性
11.4.1函式
11.4.2類型
11.4.3循環
11.4.4數組
11.4.5連線埠
11.4.6操作符
11.5HLS內提供的用於時鐘測量的術語
第三篇Zynq7000設計實踐
第12章Zynq基本處理系統的建立和運行
12.1使用BSB嚮導生成Zynq基本系統
12.1.1Zynq硬體系統的生成
12.1.2生成Hello World套用工程
12.1.3運行Hello World套用工程
12.2生成和運行存儲器測試工程
12.2.1導入前面的XPS設計到SDK
12.2.2生成存儲器測試工程
12.2.3運行存儲器測試工程
12.2.4調試存儲器測試工程
12.3生成和運行外設測試工程
12.3.1導入前面的XPS設計到SDK
12.3.2生成外設測試工程
12.3.3運行外設測試工程
第13章添加AXI IP到設計
13.1設計原理
13.2添加IP到系統設計
13.2.1創建設計工程
13.2.2添加GPIO IP到設計
13.2.3添加AXI Timer IP到設計
13.2.4連線中斷源到PS
13.2.5通過EMIO將PS的GPIO連線到PL
13.2.6添加約束到約束檔案
13.3使用SDK設計和實現套用工程
13.3.1導入前面的XPS設計到SDK
13.3.2生成套用工程
13.3.3運行套用工程
第14章基於定製IP實現簡單嵌入式系統設計
14.1創建設計工程
14.2定製GPIO IP核
14.2.1產生GPIO IP模板
14.2.2基於模板構建完整GPIO IP
14.3添加和連線AXI外設
14.4添加約束到用戶約束檔案
14.5使用SDK設計和實現套用工程
14.5.1修改模板驅動函式
14.5.2導入硬體設計到SDK工具
14.5.3生成新套用工程
14.5.4添加定製IP核軟體驅動到設計
14.5.5導入應用程式
14.5.6下載硬體比特流檔案到FPGA
14.5.7運行套用工程
14.5.8使用XMD分析目標檔案
第15章基於定製IP實現複雜嵌入式系統設計
15.1設計原理
15.1.1VGA IP核的設計原理
15.1.2移位暫存器IP核的設計原理
15.2創建設計工程
15.3定製VGA IP核
15.3.1產生VGA IP模板
15.3.2基於模板構建完整VGA IP
15.4定製移位暫存器IP核
15.4.1產生shifter IP模板
15.4.2基於模板構建完整shifter IP
15.5添加和連線VGA IP核
15.6添加和連線shifter IP核
15.7添加約束到用戶約束檔案
15.8使用SDK設計和實現套用工程
15.8.1修改模板驅動函式
15.8.2導入硬體設計到SDK工具
15.8.3生成新的套用工程
15.8.4添加定製IP核軟體驅動到設計
15.8.5編寫應用程式
15.8.6下載硬體比特流檔案到FPGA
15.8.7運行套用工程
第16章軟體和硬體協同調試系統
16.1複製並打開設計工程
16.2例化AXI Chipscope核
16.3導入硬體設計到SDK工具
16.4啟動ChipScope Pro硬體調試器
16.5執行H/S驗證
第17章Zynq平台配置和啟動的實現
17.1生成SD卡鏡像檔案並啟動
17.1.1SD卡接口
17.1.2複製並打開前面的設計工程
17.1.3創建第一級啟動引導
17.1.4創建SD卡啟動鏡像
17.1.5從SD卡啟動引導系統
17.2生成QSPI Flash鏡像並啟動
17.2.1QSPI Flash接口
17.2.2創建QSPI Flash鏡像
17.2.3從QSPI Flash啟動引導系統
第18章基於Zynq HP從連線埠的數據傳輸實現
18.1設計原理
18.2創建設計工程
18.3添加並配置AXI CDMA到設計
18.3.1添加AXI CDMA IP和互聯到設計
18.3.2連線AXI CDMA到設計
18.3.3添加連線埠連線
18.3.4分配地址空間
18.4使用SDK設計和實現套用工程
18.4.1軟體套用的實現原理
18.4.2導入硬體設計到SDK
18.4.3創建新的軟體套用工程
18.4.4導入應用程式
18.4.5下載硬體比特流檔案到FPGA
18.4.6運行套用工程
第19章基於Zynq ACP從連線埠的數據傳輸實現
19.1設計原理
19.2創建設計工程
19.3配置PS連線埠
19.3.1配置PS 32位GP AXI主連線埠
19.3.2配置PS的ACP從連線埠
19.4添加並連線IP到設計
19.4.1添加IP到設計
19.4.2匯流排連線
19.4.3連線埠連線
19.4.4分配地址空間
19.5使用SDK設計和實現套用工程
19.5.1導入硬體設計到SDK
19.5.2創建新的軟體套用工程
19.5.3導入應用程式
19.5.4下載硬體比特流檔案到FPGA
19.5.5運行套用工程
第20章XADC在Zynq平台上的套用
20.1設計原理
20.2創建設計工程
20.3添加XADC IP到設計
20.4添加約束到用戶約束檔案
20.4.1Zedboard板上XADC接口
20.4.2添加約束條件
20.5使用SDK設計和實現套用工程
20.5.1導入硬體設計到SDK工具
20.5.2生成新的套用工程
20.5.3下載硬體比特流檔案到FPGA
20.5.4運行套用工程
第21章Ubuntu作業系統在Zynq平台上實現
21.1Ubuntu作業系統環境搭建
21.1.1安裝虛擬機
21.1.2在虛擬機上安裝Ubuntu 12.10
21.1.3Linux和Windows檔案傳輸工具CuteFTP安裝使用
21.1.4Ubuntu相關環境和命令設定
21.2uboot原理及實現
21.2.1uboot結構
21.2.2下載uboot源碼
21.2.3uboot配置與編譯
21.3核心概述及編譯
21.3.1核心結構
21.3.2核心編譯
21.4設備樹原理及實現
21.4.1設備樹功能
21.4.2設備樹數據格式
21.4.3設備樹的編譯
21.5檔案系統原理及實現
21.6打開設計工程
21.7使用SDK設計生成軟體工程
21.7.1創建第一級引導啟動代碼
21.7.2SD啟動鏡像的生成
21.8驗證Ubuntu作業系統的運行
第22章μC/OSⅢ作業系統在Zynq平台上的實現
22.1μC/OSⅢ作業系統簡介
22.2μC/OSⅢ作業系統環境構建
22.3創建設計工程
22.4建立基於μC/OSⅢ作業系統的軟體套用工程
22.4.1導入設計到SDK中
22.4.2創建新的μC/OSⅢ設計工程
22.4.3修改編譯環境參數
22.4.4重新編譯設計工程
22.5運行外設測試工程
22.5.1配置硬體平台
22.5.2配置運行環境
22.6相關檔案目錄功能
22.6.1App、BSP和Documentation資料夾
22.6.2μC/CPU資料夾
22.6.3μC/CSP資料夾
22.6.4μC/LIB資料夾
22.6.5μC/OSⅢ資料夾
22.6.6用於μC/OSⅢ資料夾的Xilinx BSP
22.7基於μC/OSIII作業系統的關鍵工程檔案分析
22.7.1Main()
22.7.2AppTaskStart()
22.7.3AppTaskCreate()
22.7.4AppMutexCreate()
22.7.5AppTask1()
22.7.6AppPrint()
22.7.7app_cfg.h
第23章HLS在Zynq嵌入式系統設計中的套用
23.1設計原理
23.2基於HLS生成FIR濾波器
23.2.1設計FIR濾波器
23.2.2運行仿真和驗證功能
23.2.3設計綜合
23.2.4設計最佳化
23.2.5運行CoSimulation
23.2.6實現ISim軟體下的仿真
23.2.7使用指令創建Pcore
23.2.8生成Pcore核
23.3創建處理器系統
23.3.1建立新的設計工程
23.3.2修改處理器系統外設參數設定
23.3.3複製Pcore到當前工程
23.3.4例化並連線生成的Pcore
23.3.5添加用戶約束到用戶約束檔案
23.4使用SDK設計和實現套用工程
23.4.1導入設計到SDK
23.4.2生成套用工程
23.4.3導入應用程式
23.4.4驗證硬體設計
23.4.5運行套用工程