關(guān)于我們
書單推薦
新書推薦
|
Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計與實現(xiàn):基于Arm Cortex-A9雙核處理器和Vivado的設(shè)計方法(第二版) 讀者對象:本書可以作為學(xué)習(xí) ARM Cortex - A9 處理器嵌入式開發(fā)、Xilinx Zynq - 7000 SoC 嵌入式開發(fā)以及在arm嵌入式系統(tǒng)上使用Python語言開發(fā)嵌入式應(yīng)用程序的教材、 工程參考用書。
本書是作者在已經(jīng)出版的 《Xilinx Zynq-7000嵌入式系統(tǒng)設(shè)計與實現(xiàn):基于ARM Cortex-A9雙核處理器和Vivado的設(shè)計方法》 一書的基礎(chǔ)上進行修訂而成的。 本書新修訂后內(nèi)容增加到30章。修訂后,本書的一大特色就是加入了Arm架構(gòu)及分類、使用PetaLinux工具在Zynq-7000 SoC上搭建Ubuntu操作系統(tǒng),以及在Ubuntu操作系統(tǒng)環(huán)境下搭建Python語言開發(fā)環(huán)境,并使用Python語言開發(fā)應(yīng)用程序的內(nèi)容。本書修訂后。進一步降低了讀者學(xué)習(xí)Arm Cortex-A9嵌入式系統(tǒng)的門檻,并引入了在Zynq-7000 SoC上搭建Ubuntu操作系統(tǒng)的新方法。此外,將流行的Python語言引入到Arm嵌入式系統(tǒng)中,進一步拓寬了在Arm嵌入式系統(tǒng)上開發(fā)應(yīng)用程序的方法。
著名的嵌入式技術(shù)和EDA技術(shù)專家,長期從事電子設(shè)計自動化方面的教學(xué)和科研工作,與全球多家知名的半導(dǎo)體廠商和EDA工具廠商大學(xué)計劃保持緊密合作。目前已經(jīng)出版嵌入式和EDA方面的著作近60部,內(nèi)容涵蓋電路仿真、電路設(shè)計、可編程邏輯器件、數(shù)字信號處理、單片機、嵌入式系統(tǒng)、片上可編程系統(tǒng)等。典型的代表作有《Xilinx FPGA設(shè)計權(quán)威指南》、《Altium Designer13.0電路設(shè)計、仿真與驗證權(quán)威指南》、《Xilinx FPGA數(shù)字設(shè)計:從門級到行為級的雙重描述》、《Xilinx FPGA數(shù)字信號處理權(quán)威指南:從HDL、模型到C的描述》、《STC單片機原理及應(yīng)用》、《Altium Designer15.0電路仿真、設(shè)計、驗證與工藝實現(xiàn)權(quán)威指南》、《STC單片機C語言程序設(shè)計》、《Cypress WICED物聯(lián)網(wǎng)開發(fā)指南:從傳感器、無線接入到云端的設(shè)計與實現(xiàn)》,以及《模擬電子系統(tǒng)設(shè)計指南(基礎(chǔ)篇):從半導(dǎo)體、分立元件到ADI集成電路的分析與實現(xiàn)》。
目 錄
第 章 Zynq - 7000 SoC設(shè)計導(dǎo)論 1 1.1 全可編程片上系統(tǒng)基礎(chǔ)知識 1 1.1.1 全可編程片上系統(tǒng)的演進 1 1.1.2 SoC與MCU和CPU的比較 3 1.1.3 全可編程SoC誕生的背景 4 1.1.4 可編程SoC系統(tǒng)技術(shù)特點 5 1.1.5 全可編程片上系統(tǒng)中的處理器類型 5 1.2 Arm架構(gòu)及分類 6 1.2.1 M - Profile 7 1.2.2 R - Profile 9 1.2.3 A - Profile 10 1.3 Zynq - 7000 SoC功能和結(jié)構(gòu) 11 1.3.1 Zynq - 7000 SoC產(chǎn)品分類及資源 12 1.3.2 Zynq - 7000 SoC的功能 12 1.3.3 Zynq - 7000 SoC處理系統(tǒng)PS的構(gòu)成 14 1.3.4 Zynq - 7000 SoC可編程邏輯PL的構(gòu)成 19 1.3.5 Zynq - 7000 SoC內(nèi)的互聯(lián)結(jié)構(gòu) 20 1.3.6 Zynq - 7000 SoC的供電引腳 22 1.3.7 Zynq - 7000 SoC內(nèi)MIO到EMIO的連接 23 1.3.8 Zynq - 7000 SoC內(nèi)為PL分配的信號 28 1.4 Zynq - 7000 SoC在嵌入式系統(tǒng)中的優(yōu)勢 30 1.4.1 使用PL實現(xiàn)軟件算法 30 1.4.2 降低功耗 32 1.4.3 實時減負 33 1.4.4 可重配置計算 34 第 章 AMBA規(guī)范 35 2.1 AMBA規(guī)范及發(fā)展 35 2.1.1 AMBA 1 36 2.1.2 AMBA 2 36 2.1.3 AMBA 3 36 2.1.4 AMBA 4 37 2.1.5 AMBA 5 38 2.2 AMBA APB規(guī)范 40 2.2.1 AMBA APB寫傳輸 40 2.2.2 AMBA APB讀傳輸 42 2.2.3 AMBA APB錯誤響應(yīng) 43 2.2.4 操作狀態(tài) 44 2.2.5 AMBA 3 APB信號 44 2.3 AMBA AHB規(guī)范 45 2.3.1 AMBA AHB結(jié)構(gòu) 45 2.3.2 AMBA AHB操作 46 2.3.3 AMBA AHB傳輸類型 48 2.3.4 AMBA AHB猝發(fā)操作 50 2.3.5 AMBA AHB傳輸控制信號 53 2.3.6 AMBA AHB地址譯碼 54 2.3.7 AMBA AHB從設(shè)備傳輸響應(yīng) 55 2.3.8 AMBA AHB數(shù)據(jù)總線 58 2.3.9 AMBA AHB傳輸仲裁 59 2.3.10 AMBA AHB分割傳輸 64 2.3.11 AMBA AHB復(fù)位 67 2.3.12 關(guān)于AHB數(shù)據(jù)總線的位寬 67 2.3.13 AMBA AHB接口設(shè)備 68 2.4 AMBA AXI4規(guī)范 69 2.4.1 AMBA AXI4概述 69 2.4.2 AMBA AXI4功能 70 2.4.3 AMBA AXI4互聯(lián)結(jié)構(gòu) 78 2.4.4 AXI4 - Lite功能 79 2.4.5 AXI4 - Stream功能 80 第 章 Zynq - 7000系統(tǒng)公共資源及特性 83 3.1 時鐘子系統(tǒng) 83 3.1.1 時鐘子系統(tǒng)架構(gòu) 83 3.1.2 CPU時鐘域 84 3.1.3 時鐘編程實例 86 3.1.4 時鐘子系統(tǒng)內(nèi)的生成電路結(jié)構(gòu) 87 3.2 復(fù)位子系統(tǒng) 91 3.2.1 復(fù)位子系統(tǒng)結(jié)構(gòu)和層次 92 3.2.2 復(fù)位流程 93 3.2.3 復(fù)位的結(jié)果 94 第 章 Zynq調(diào)試和測試子系統(tǒng) 95 4.1 JTAG和DAP子系統(tǒng) 95 4.1.1 JTAG和DAP子系統(tǒng)功能 97 4.1.2 JTAG和DAP子系統(tǒng)I/O信號 99 4.1.3 編程模型 99 4.1.4 Arm DAP控制器 101 4.1.5 跟蹤端口接口單元(TPIU) 102 4.1.6 Xilinx TAP控制器 102 4.2 CoreSight系統(tǒng)結(jié)構(gòu)及功能 103 4.2.1 CoreSight結(jié)構(gòu)概述 103 4.2.2 CoreSight系統(tǒng)功能 104 第 章 Cortex - A9處理器及指令集 107 5.1 應(yīng)用處理單元概述 107 5.1.1 基本功能 107 5.1.2 系統(tǒng)級視圖 108 5.2 Cortex - A9處理器結(jié)構(gòu) 110 5.2.1 處理器模式 111 5.2.2 寄存器 113 5.2.3 流水線 118 5.2.4 分支預(yù)測 118 5.2.5 指令和數(shù)據(jù)對齊 119 5.2.6 跟蹤和調(diào)試 121 5.3 Cortex - A9處理器指令集 122 5.3.1 指令集基礎(chǔ) 122 5.3.2 數(shù)據(jù)處理操作 125 5.3.3 存儲器指令 130 5.3.4 分支 131 5.3.5 飽和算術(shù) 133 5.3.6 雜項指令 134 第 章 Cortex - A9片上存儲器系統(tǒng)結(jié)構(gòu)和功能 138 6.1 L1高速緩存 138 6.1.1 高速緩存背景 138 6.1.2 高速緩存的優(yōu)勢和問題 139 6.1.3 存儲器層次 140 6.1.4 高速緩存結(jié)構(gòu) 140 6.1.5 緩存策略 145 6.1.6 寫和取緩沖區(qū) 147 6.1.7 緩存性能和命中速度 147 6.1.8 無效和清除緩存 147 6.1.9 一致性點和統(tǒng)一性點 149 6.1.10 Zynq - 7000中Cortex - A9 L1高速緩存的特性 151 6.2 存儲器順序 153 6.2.1 普通、設(shè)備和強順序存儲器模型 154 6.2.2 存儲器屬性 155 6.2.3 存儲器屏障 155 6.3 存儲器管理單元 159 6.3.1 MMU功能描述 160 6.3.2 虛擬存儲器 161 6.3.3 轉(zhuǎn)換表 162 6.3.4 頁表入口域的描述 165 6.3.5 TLB構(gòu)成 167 6.3.6 存儲器訪問順序 169 6.4 偵聽控制單元 170 6.4.1 地址過濾 171 6.4.2 SCU主設(shè)備端口 171 6.5 L2高速緩存 171 6.5.1 互斥L2 - L1高速緩存配置 173 6.5.2 高速緩存替換策略 174 6.5.3 高速緩存鎖定 174 6.5.4 使能/禁止L2高速緩存控制器 176 6.5.5 RAM訪問延遲控制 176 6.5.6 保存緩沖區(qū)操作 176 6.5.7 在Cortex - A9和L2控制器之間的優(yōu)化 177 6.5.8 預(yù)取操作 178 6.5.9 編程模型 179 6.6 片上存儲器 180 6.6.1 片上存儲器概述 180 6.6.2 片上存儲器功能 181 6.7 系統(tǒng)地址分配 186 6.7.1 地址映射 186 6.7.2 系統(tǒng)總線主設(shè)備 188 6.7.3 I/O外設(shè) 188 6.7.4 SMC存儲器 188 6.7.5 SLCR寄存器 188 6.7.6 雜項PS寄存器 189 6.7.7 CPU私有寄存器 189 第 章 Zynq - 7000 SoC的Vivado基本設(shè)計流程 190 7.1 創(chuàng)建新的工程 190 7.2 使用IP集成器創(chuàng)建處理器系統(tǒng) 192 7.3 生成頂層HDL并導(dǎo)出設(shè)計到SDK 197 7.4 創(chuàng)建應(yīng)用測試程序 199 7.5 設(shè)計驗證 202 7.5.1 驗證前的硬件平臺準(zhǔn)備 202 7.5.2 設(shè)計驗證的具體實現(xiàn) 203 7.6 SDK調(diào)試工具的使用 205 7.6.1 打開前面的設(shè)計工程 205 7.6.2 導(dǎo)入工程到SDK 205 7.6.3 建立新的存儲器測試工程 205 7.6.4 運行存儲器測試工程 206 7.6.5 調(diào)試存儲器測試工程 207 7.7 SDK性能分析工具 209 第 章 Arm GPIO的原理和控制實現(xiàn) 213 8.1 GPIO模塊原理 213 8.1.1 GPIO接口及功能 214 8.1.2 GPIO編程流程 217 8.1.3 I/O接口 218 8.1.4 部分寄存器說明 218 8.1.5 底層讀/寫函數(shù)說明 220 8.1.6 GPIO的API函數(shù)說明 220 8.2 Vivado環(huán)境下MIO讀/寫控制的實現(xiàn) 221 8.2.1 調(diào)用底層讀/寫函數(shù)編寫GPIO應(yīng)用程序 221 8.2.2 調(diào)用API函數(shù)編寫控制GPIO應(yīng)用程序 224 8.3 Vivado環(huán)境下EMIO讀/寫控制的實現(xiàn) 226 8.3.1 調(diào)用底層讀/寫函數(shù)編寫GPIO應(yīng)用程序 227 8.3.2 調(diào)用API函數(shù)編寫控制GPIO應(yīng)用程序 232 第 章 Cortex - A9異常與中斷原理及實現(xiàn) 236 9.1 異常原理 236 9.1.1 異常類型 237 9.1.2 異常處理 241 9.1.3 其他異常句柄 242 9.1.4 Linux異常程序流 243 9.2 中斷原理 244 9.2.1 外部中斷請求 244 9.2.2 Zynq - 7000 SoC內(nèi)的中斷環(huán)境 247 9.2.3 中斷控制器的功能 248 9.3 Vivado環(huán)境下中斷系統(tǒng)的實現(xiàn) 252 9.3.1 Cortex - A9處理器中斷及異常初始化流程 252 9.3.2 Cortex - A9 GPIO控制器初始化流程 252 9.3.3 導(dǎo)出硬件設(shè)計到SDK 253 9.3.4 創(chuàng)建新的應(yīng)用工程 253 9.3.5 運行應(yīng)用工程 256 第 章 Cortex - A9定時器原理及實現(xiàn) 257 10.1 定時器系統(tǒng)架構(gòu) 257 10.1.1 CPU私有定時器和看門狗定時器 257 10.1.2 全局定時器/計數(shù)器 258 10.1.3 系統(tǒng)級看門狗定時器 259 10.1.4 3重定時器/計數(shù)器 261 10.1.5 I/O信號 264 10.2 Vivado環(huán)境下定時器的控制實現(xiàn) 264 10.2.1 打開前面的設(shè)計工程 265 10.2.2 創(chuàng)建SDK軟件工程 265 10.2.3 運行軟件應(yīng)用工程 267 第 章 Cortex - A9 DMA控制器原理及實現(xiàn) 268 11.1 DMA控制器架構(gòu) 268 11.2 DMA控制器功能 271 11.2.1 考慮AXI交易的因素 272 11.2.2 DMA管理器 273 11.2.3 多通道數(shù)據(jù)FIFO(MFIFO) 274 11.2.4 存儲器—存儲器交易 274 11.2.5 PL外設(shè)AXI交易 274 11.2.6 PL外設(shè)請求接口 275 11.2.7 PL外設(shè)長度管理 276 11.2.8 DMAC長度管理 277 11.2.9 事件和中斷 278 11.2.10 異常終止 278 11.2.11 安全性 280 11.2.12 IP配置選項 282 11.3 DMA控制器編程指南 282 11.3.1 啟動控制器 282 11.3.2 執(zhí)行DMA傳輸 282 11.3.3 中斷服務(wù)例程 282 11.3.4 寄存器描述 283 11.4 DMA引擎編程指南 284 11.4.1 寫微代碼編程用于AXI交易的CCRx 284 11.4.2 存儲器到存儲器傳輸 284 11.4.3 PL外設(shè)DMA傳輸長度管理 287 11.4.4 使用一個事件重新啟動DMA通道 289 11.4.5 中斷一個處理器 289 11.4.6 指令集參考 290 11.5 編程限制 291 11.6 系統(tǒng)功能之控制器復(fù)位配置 292 11.7 I/O接口 293 11.7.1 AXI主接口 293 11.7.2 外設(shè)請求接口 293 11.8 Vivado環(huán)境下DMA傳輸?shù)膶崿F(xiàn) 294 11.8.1 DMA控制器初始化流程 295 11.8.2 中斷控制器初始化流程 295 11.8.3 中斷服務(wù)句柄處理流程 296 11.8.4 導(dǎo)出硬件設(shè)計到SDK 296 11.8.5 創(chuàng)建新的應(yīng)用工程 297 11.8.6 運行軟件應(yīng)用工程 303 第 章 Cortex - A9安全性擴展 305 12.1 TrustZone硬件架構(gòu) 305 12.1.1 多核系統(tǒng)的安全性擴展 307 12.1.2 普通世界和安全世界的交互 307 12.2 Zynq - 7000 APU內(nèi)的TrustZone 308 12.2.1 CPU安全過渡 309 12.2.2 CP15寄存器訪問控制 310 12.2.3 MMU安全性 310 12.2.4 L1緩存安全性 311 12.2.5 安全異常控制 311 12.2.6 CPU調(diào)試TrustZone訪問控制 311 12.2.7 SCU寄存器訪問控制 312 12.2.8 L2緩存中的TrustZone支持 312 第 章 Cortex - A9 NEON原理及實現(xiàn) 313 13.1 SIMD 313 13.2 NEON架構(gòu) 315 13.2.1 與VFP的共性 315 13.2.2 數(shù)據(jù)類型 316 13.2.3 NEON寄存器 316 13.2.4 NEON指令集 318 13.3 NEON C編譯器和匯編器 319 13.3.1 向量化 319 13.3.2 檢測NEON 319 13.4 NEON優(yōu)化庫 320 13.5 SDK工具提供的優(yōu)化選項 321 13.6 使用NEON內(nèi)聯(lián)函數(shù) 324 13.6.1 NEON數(shù)據(jù)類型 325 13.6.2 NEON內(nèi)聯(lián)函數(shù) 325 13.7 優(yōu)化NEON匯編器代碼 327 13.8 提高存儲器訪問效率 328 13.9 自動向量化實現(xiàn) 329 13.9.1 導(dǎo)出硬件設(shè)計到SDK 329 13.9.2 創(chuàng)建新的應(yīng)用工程 330 13.9.3 運行軟件應(yīng)用工程 331 13.10 NEON匯編代碼實現(xiàn) 331 13.10.1 導(dǎo)出硬件設(shè)計到SDK 331 13.10.2 創(chuàng)建新的應(yīng)用工程 332 13.10.3 運行軟件應(yīng)用工程 333 第 章 Cortex - A9外設(shè)模塊結(jié)構(gòu)及功能 334 14.1 DDR存儲器控制器 334 14.1.1 DDR存儲器控制器接口及功能 335 14.1.2 AXI存儲器接口 337 14.1.3 DDR核和交易調(diào)度器 338 14.1.4 DDRC仲裁 338 14.1.5 DDR存儲器控制器PHY 340 14.1.6 DDR初始化和標(biāo)定 340 14.1.7 糾錯碼 341 14.2 靜態(tài)存儲器控制器 342 14.2.1 靜態(tài)存儲器控制器接口及功能 343 14.2.2 靜態(tài)存儲器控制器和存儲器的信號連接 344 14.3 四 - SPI Flash控制器 345 14.3.1 四 - SPI Flash控制器功能 347 14.3.2 四 - SPI Flash控制器反饋時鐘 349 14.3.3 四 - SPI Flash控制器接口 349 14.4 SD/SDIO外設(shè)控制器 351 14.4.1 SD/SDIO控制器功能 352 14.4.2 SD/SDIO控制器傳輸協(xié)議 353 14.4.3 SD/SDIO控制器端口信號連接 356 14.5 USB主機、設(shè)備和OTG控制器 356 14.5.1 USB控制器接口及功能 358 14.5.2 USB主機操作模式 361 14.5.3 USB設(shè)備操作模式 363 14.5.4 USB OTG操作模式 365 14.6 吉比特以太網(wǎng)控制器 365 14.6.1 吉比特以太網(wǎng)控制器接口及功能 367 14.6.2 吉比特以太網(wǎng)控制器接口編程向?qū)?368 14.6.3 吉比特以太網(wǎng)控制器接口信號連接 372 14.7 SPI控制器 373 14.7.1 SPI控制器的接口及功能 374 14.7.2 SPI控制器時鐘設(shè)置規(guī)則 376 14.8 CAN控制器 376 14.8.1 CAN控制器接口及功能 377 14.8.2 CAN控制器操作模式 379 14.8.3 CAN控制器消息保存 380 14.8.4 CAN控制器接收過濾器 381 14.8.5 CAN控制器編程模型 382 14.9 UART控制器 383 14.10 I2C控制器 387 14.10.1 I2C速度控制邏輯 388 14.10.2 I2C控制器的功能和工作模式 388 14.11 XADC轉(zhuǎn)換器接口 390 14.11.1 XADC轉(zhuǎn)換器接口及功能 391 14.11.2 XADC命令格式 392 14.11.3 供電傳感器報警 392 14.12 PCI - E接口 393 第 章 Zynq - 7000內(nèi)的可編程邏輯資源 395 15.1 可編程邏輯資源概述 395 15.2 可編程邏輯資源功能 396 15.2.1 CLB、Slice和LUT 396 15.2.2 時鐘管理 396 15.2.3 塊RAM 398 15.2.4 數(shù)字信號處理 - DSP Slice 398 15.2.5 輸入/輸出 399 15.2.6 低功耗串行收發(fā)器 400 15.2.7 PCI - E模塊 401 15.2.8 XADC(模擬 - 數(shù)字轉(zhuǎn)換器) 402 15.2.9 配置 402 第 章 Zynq - 7000內(nèi)的互聯(lián)結(jié)構(gòu) 404 16.1 系統(tǒng)互聯(lián)架構(gòu) 404 16.1.1 互聯(lián)模塊及功能 404 16.1.2 數(shù)據(jù)路徑 406 16.1.3 時鐘域 407 16.1.4 連接性 408 16.1.5 AXI ID 409 16.1.6 寄存器概述 409 16.2 服務(wù)質(zhì)量 410 16.2.1 基本仲裁 410 16.2.2 高級QoS 410 16.2.3 DDR端口仲裁 411 16.3 AXI_HP接口 411 16.3.1 AXI_HP接口結(jié)構(gòu)及特點 411 16.3.2 接口數(shù)據(jù)寬度 415 16.3.3 交易類型 416 16.3.4 命令交替和重新排序 416 16.3.5 性能優(yōu)化總結(jié) 416 16.4 AXI_ACP接口 417 16.5 AXI_GP接口 418 16.6 AXI信號總結(jié) 418 16.7 PL接口選擇 422 16.7.1 使用通用主設(shè)備端口的Cortex - A9 423 16.7.2 通過通用主設(shè)備的PS DMA控制器(DMAC) 423 16.7.3 通過高性能接口的PL DMA 426 16.7.4 通過AXI ACP的PL DMA 426 16.7.5 通過通用AXI從(GP)的PL DMA 426 第 章 Zynq - 7000 SoC內(nèi)定制簡單AXI - Lite IP 429 17.1 設(shè)計原理 429 17.2 定制AXI - Lite IP 429 17.2.1 創(chuàng)建定制IP模板 429 17.2.2 修改定制IP設(shè)計模板 432 17.2.3 使用IP封裝器封裝外設(shè) 436 17.3 打開并添加IP到設(shè)計中 440 17.3.1 打開工程和修改設(shè)置 440 17.3.2 添加定制IP到設(shè)計 442 17.3.3 添加XDC約束文件 445 17.4 導(dǎo)出硬件到SDK 446 17.5 建立和驗證軟件應(yīng)用工程 446 17.5.1 建立應(yīng)用工程 447 17.5.2 下載硬件比特流文件到FPGA 449 17.5.3 運行應(yīng)用工程 450 第 章 Zynq - 7000 SoC內(nèi)定制復(fù)雜AXI Lite IP 451 18.1 設(shè)計原理 451 18.1.1 VGA IP核的設(shè)計原理 451 18.1.2 移位寄存器IP核的設(shè)計原理 453 18.2 定制VGA IP核 454 18.2.1 創(chuàng)建定制VGA IP模板 454 18.2.2 修改定制VGA IP模板 455 18.2.3 使用IP封裝器封裝VGA IP 459 18.3 定制移位寄存器IP核 460 18.3.1 創(chuàng)建定制SHIFTER IP模板 460 18.3.2 修改定制SHIFTER IP模板 462 18.3.3 使用IP封裝器封裝SHIFTER IP 463 18.4 打開并添加IP到設(shè)計中 464 18.4.1 打開工程和修改設(shè)置 464 18.4.2 添加定制IP到設(shè)計 466 18.4.3 添加XDC約束文件 470 18.5 導(dǎo)出硬件到SDK 471 18.6 建立和驗證軟件工程 472 18.6.1 建立應(yīng)用工程 472 18.6.2 下載硬件比特流文件到FPGA 476 18.6.3 運行應(yīng)用工程 477 第 章 Zynq - 7000 AXI HP數(shù)據(jù)傳輸原理及實現(xiàn) 478 19.1 設(shè)計原理 478 19.2 構(gòu)建硬件系統(tǒng) 479 19.2.1 打開工程和修改設(shè)置 479 19.2.2 添加并連接AXI DMA IP核 480 19.2.3 添加并連接FIFO IP核 482 19.2.4 連接DMA中斷到PS 485 19.2.5 驗證和建立設(shè)計 487 19.3 建立和驗證軟件工程 487 19.3.1 導(dǎo)出硬件到SDK 488 19.3.2 創(chuàng)建軟件應(yīng)用工程 488 19.3.3 下載硬件比特流文件到FPGA 497 19.3.4 運行應(yīng)用工程 497 第 章 Zynq - 7000 ACP數(shù)據(jù)傳輸原理及實現(xiàn) 499 20.1 設(shè)計原理 499 20.2 打開前面的設(shè)計工程 499 20.3 配置PS端口 499 20.4 添加并連接IP到設(shè)計 500 20.4.1 添加IP到設(shè)計 501 20.4.2 系統(tǒng)連接 501 20.4.3 分配地址空間 502 20.5 使用SDK設(shè)計和實現(xiàn)應(yīng)用工程 504 20.5.1 創(chuàng)建新的軟件應(yīng)用工程 504 20.5.2 導(dǎo)入應(yīng)用程序 504 20.5.3 下載硬件比特流文件到FPGA 507 20.5.4 運行應(yīng)用工程 508 第 章 Zynq - 7000軟件和硬件協(xié)同調(diào)試原理及實現(xiàn) 509 21.1 設(shè)計目標(biāo) 509 21.2 ILA核原理 510 21.2.1 ILA觸發(fā)器輸入邏輯 510 21.2.2 多觸發(fā)器端口的使用 510 21.2.3 使用觸發(fā)器和存儲限制條件 510 21.2.4 ILA觸發(fā)器輸出邏輯 512 21.2.5 ILA數(shù)據(jù)捕獲邏輯 512 21.2.6 ILA控制與狀態(tài)邏輯 513 21.3 VIO核原理 513 21.4 構(gòu)建協(xié)同調(diào)試硬件系統(tǒng) 514 21.4.1 打開前面的設(shè)計工程 514 21.4.2 添加定制IP 514 21.4.3 添加ILA和VIO核 515 21.4.4 標(biāo)記和分配調(diào)試網(wǎng)絡(luò) 516 21.5 生成軟件工程 518 21.6 S/H協(xié)同調(diào)試 520 第 章 Zynq - 7000 SoC啟動和配置原理及實現(xiàn) 527 22.1 Zynq - 7000 SoC啟動過程 527 22.2 Zynq - 7000 SoC啟動要求 527 22.2.1 供電要求 528 22.2.2 時鐘要求 528 22.2.3 復(fù)位要求 528 22.2.4 模式引腳 528 22.3 Zynq - 7000 SoC內(nèi)的BootROM 530 22.3.1 BootROM特性 530 22.3.2 BootROM頭部 531 22.3.3 啟動設(shè)備 535 22.3.4 BootROM多啟動和啟動分區(qū)查找 538 22.3.5 調(diào)試狀態(tài) 539 22.3.6 BootROM后狀態(tài) 540 22.4 Zynq - 7000 SoC器件配置接口 543 22.4.1 描述功能 544 22.4.2 器件配置流程 545 22.4.3 配置PL 549 22.4.4 寄存器概述 550 22.5 生成SD卡鏡像文件并啟動 551 22.5.1 SD卡與XC7Z020接口設(shè)計 551 22.5.2 打開前面的設(shè)計工程 552 22.5.3 創(chuàng)建第一級啟動引導(dǎo) 553 22.5.4 創(chuàng)建SD卡啟動鏡像 553 22.5.5 從SD卡啟動引導(dǎo)系統(tǒng) 555 22.6 生成QSPI Flash鏡像并啟動 556 22.6.1 QSPI Flash接口 556 22.6.2 創(chuàng)建QSPI Flash鏡像 557 22.6.3 從QSPI Flash啟動引導(dǎo)系統(tǒng) 558 22.7 Cortex - A9雙核系統(tǒng)的配置和運行 558 22.7.1 構(gòu)建雙核硬件系統(tǒng)工程 558 22.7.2 添加并互聯(lián)IP核 559 22.7.3 導(dǎo)出硬件設(shè)計到SDK中 561 22.7.4 設(shè)置板級包支持路徑 561 22.7.5 建立FSBL應(yīng)用工程 562 22.7.6 建立CPU0應(yīng)用工程 562 22.7.7 建立CPU1板級支持包 566 22.7.8 建立CPU1應(yīng)用工程 566 22.7.9 創(chuàng)建SD卡鏡像文件 570 22.7.10 雙核系統(tǒng)運行和測試 571 22.7.11 雙核系統(tǒng)的調(diào)試 571 第 章 Zynq - 7000 SoC內(nèi)XADC原理及實現(xiàn) 574 23.1 ADC轉(zhuǎn)換器接口結(jié)構(gòu) 574 23.2 ADC轉(zhuǎn)換器功能 575 23.2.1 XADC的命令格式 576 23.2.3 供電傳感器報警 576 23.3 XADC IP核結(jié)構(gòu)及信號 577 23.4 開發(fā)平臺上的XADC接口 578 23.5 在Zynq - 7000 SoC內(nèi)構(gòu)建數(shù);旌舷到y(tǒng) 579 23.5.1 打開前面的設(shè)計工程 579 23.5.2 配置PS端口 579 23.5.3 添加并連接XADC IP到設(shè)計 580 23.5.4 查看地址空間 582 23.5.5 添加用戶約束文件 583 23.5.6 設(shè)計處理 583 23.6 使用SDK設(shè)計和實現(xiàn)應(yīng)用工程 584 23.6.1 生成新的應(yīng)用工程 584 23.6.2 導(dǎo)入應(yīng)用程序 585 23.6.3 下載硬件比特流文件到FPGA 591 23.6.4 運行應(yīng)用工程 591 第 章 Linux開發(fā)環(huán)境的構(gòu)建 592 24.1 構(gòu)建虛擬機環(huán)境 592 24.2 安裝和啟動Ubuntu 14.04客戶機操作系統(tǒng) 595 24.2.1 新添加兩個磁盤 595 24.2.2 設(shè)置CD/DVD(SATA) 596 24.2.3 安裝Ubuntu 14.04 597 24.2.4 更改Ubuntu 14.04操作系統(tǒng)啟動設(shè)備 600 24.2.5 啟動Ubuntu 14.04操作系統(tǒng) 600 24.2.6 添加搜索鏈接資源 600 24.3 安裝FTP工具 601 24.3.1 Windows操作系統(tǒng)下LeapFTP安裝 601 24.3.2 Ubuntu操作系統(tǒng)環(huán)境下FTP安裝 602 24.4 安裝和啟動SSH和GIT組件 603 24.4.1 安裝和啟動SSH組件 603 24.4.2 安裝和啟動GIT組件 604 24.5 安裝交叉編譯器環(huán)境 604 24.5.1 安裝32位支持工具包 604 24.5.2 安裝和設(shè)置SDK 2015.4工具 605 24.6 安裝和配置Qt集成開發(fā)工具 606 24.6.1 Qt集成開發(fā)工具功能 606 24.6.2 構(gòu)建PC平臺Qt環(huán)境 607 24.6.3 構(gòu)建Arm平臺Qt環(huán)境 613 第 章 構(gòu)建Zynq - 7000 SoC內(nèi)Ubuntu硬件運行環(huán)境 622 25.1 建立新的設(shè)計工程 622 25.2 添加IP核路徑 623 25.3 構(gòu)建硬件系統(tǒng) 623 25.3.1 添加和配置ZYNQ7 IP 624 25.3.2 添加和配置VDMA IP核 625 25.3.3 添加和配置AXI Display Controller IP核 626 25.3.4 添加和配置HDMI Transmitter IP核 627 25.3.5 添加和配置VGA IP核 627 25.3.6 連接用戶自定義IP核 627 25.3.7 添加和配置Processor System Reset IP核 630 25.3.8 連接系統(tǒng)剩余部分 630 25.4 添加設(shè)計約束文件 632 25.5 導(dǎo)出硬件文件 633 第 章 構(gòu)建Zynq - 7000 SoC內(nèi)Ubuntu軟件運行環(huán)境 635 26.1 u - boot原理及實現(xiàn) 635 26.1.1 下載u - boot源碼 635 26.1.2 u - boot文件結(jié)構(gòu) 636 26.1.3 u - boot工作模式 637 26.1.4 u - boot啟動過程 637 26.1.5 編譯u - boot 650 26.1.6 鏈接腳本文件結(jié)構(gòu) 652 26.2 內(nèi)核結(jié)構(gòu)及編譯 654 26.2.1 內(nèi)核結(jié)構(gòu) 654 26.2.2 下載Linux內(nèi)核源碼 655 26.2.3 內(nèi)核版本 655 26.2.4 內(nèi)核系統(tǒng)配置 655 26.2.5 Bootloader 啟動過程 658 26.2.6 Linux內(nèi)核啟動過程 660 26.2.7 編譯內(nèi)核 662 26.3 設(shè)備樹原理及實現(xiàn) 662 26.3.1 設(shè)備樹概述 662 26.3.2 設(shè)備樹數(shù)據(jù)格式 663 26.3.3 設(shè)備樹的編譯 664 26.4 文件系統(tǒng)原理及下載 664 26.5 生成Ubuntu啟動鏡像 665 26.5.1 生成FSBL文件 666 26.5.2 生成BOOT.bin啟動文件 666 26.5.3 制作SD卡 668 26.5.4 復(fù)制BOOT. bin文件 670 26.5.5 復(fù)制編譯后的內(nèi)核文件 670 26.5.6 復(fù)制編譯后的設(shè)備樹文件 671 26.5.7 復(fù)制文件系統(tǒng) 671 26.6 啟動Ubuntu操作系統(tǒng) 672 第 章 Linux環(huán)境下簡單字符設(shè)備驅(qū)動程序的開發(fā) 674 27.1 驅(qū)動程序的必要性 674 27.2 Linux操作系統(tǒng)下的設(shè)備文件類型 675 27.3 Linux驅(qū)動的開發(fā)流程 676 27.4 驅(qū)動程序的結(jié)構(gòu)框架 676 27.4.1 加載和卸載函數(shù)模塊 676 27.4.2 字符設(shè)備中重要的數(shù)據(jù)結(jié)構(gòu)和函數(shù) 677 27.5 編寫makefile文件 683 27.6 編譯驅(qū)動程序 684 27.7 編寫測試程序 685 27.8 運行測試程序 686 第 章 Linux環(huán)境下包含中斷機制驅(qū)動程序的開發(fā) 688 28.1 設(shè)計原理 688 28.2 編寫包含中斷處理的驅(qū)動代碼 688 28.2.1 驅(qū)動程序頭文件 688 28.2.2 驅(qū)動的加載和卸載函數(shù) 689 28.2.3 file_operations初始化 691 28.3 編寫makefile文件 691 28.4 編譯驅(qū)動程序 692 28.5 測試驅(qū)動程序 693 第 章 Linux環(huán)境下圖像處理系統(tǒng)的構(gòu)建 694 29.1 系統(tǒng)整體架構(gòu)和功能 694 29.2 OV5640攝像頭性能 695 29.2.1 攝像頭捕獲模塊的硬件 696 29.2.2 SCCB接口規(guī)范 696 29.2.3 寫攝像頭模組寄存器操作 697 29.2.4 讀攝像頭模組寄存器操作 698 29.2.5 攝像頭初始化流程 700 29.3 Vivado HLS實現(xiàn)拉普拉斯算子濾波算法的設(shè)計 701 29.3.1 Vivado HLS工具的性能和優(yōu)勢 701 29.3.2 拉普拉斯算法與HDL之間的映射 703 29.4 圖像處理系統(tǒng)的整體構(gòu)建 706 29.5 圖像處理系統(tǒng)軟件的設(shè)計 708 29.5.1 Ubuntu桌面系統(tǒng)的構(gòu)建 708 29.5.2 Qt圖像處理程序的開發(fā) 708 29.6 嵌入式圖像處理系統(tǒng)測試 710 第 章 Zynq-7000 SoC上構(gòu)建和實現(xiàn)Python應(yīng)用 712 30.1 設(shè)計所需的硬件環(huán)境 712 30.2 構(gòu)建PetaLinux開發(fā)環(huán)境 712 30.2.1 PetaLinx開發(fā)環(huán)境概述 712 30.2.2 安裝32位庫 714 30.2.3 安裝并測試tftp服務(wù)器 714 30.2.4 下載并安裝PetaLinux 715 30.3 構(gòu)建嵌入式系統(tǒng)硬件 717 30.3.1 下載并安裝Vivado 2018.2集成開發(fā)環(huán)境 717 30.3.2 添加板級支持包文件 717 30.3.3 建立新的Vivado工程 717 30.3.4 構(gòu)建硬件系統(tǒng) 718 30.4 構(gòu)建嵌入式Python開發(fā)環(huán)境 721 30.5 構(gòu)建PC端Python開發(fā)環(huán)境 723 30.6 服務(wù)器和客戶端Python的開發(fā) 724 30.6.1 服務(wù)器端Python的開發(fā) 725 30.6.2 客戶端Python的開發(fā) 726 30.7 設(shè)計驗證 728 30.7.1 啟動服務(wù)器程序 728 30.7.2 啟動客戶端程序 729
你還可能感興趣
我要評論
|