Xilinx Zynq-7000嵌入式係統設計與實現

Xilinx Zynq-7000嵌入式係統設計與實現 pdf epub mobi txt 電子書 下載 2025

何賓,張艷輝 著
圖書標籤:
  • Zynq-7000
  • 嵌入式係統
  • FPGA
  • SoC
  • ARM
  • 硬件設計
  • 軟件開發
  • VHDL
  • Verilog
  • Linux
想要找書就要到 新城書站
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
齣版社: 電子工業齣版社
ISBN:9787121289958
版次:1
商品編碼:11967282
包裝:平裝
叢書名: 電子係統EDA新技術叢書
開本:16開
齣版時間:2016-06-01
用紙:膠版紙
頁數:744
字數:1190000
正文語種:中文

具體描述

編輯推薦

適讀人群 :本書可以作為學習ARM Cortex-A9處理器嵌入式開發,以及Xilinx Zynq-7000 SoC 嵌入式開發的教材、工程參考用書。

? 知識全麵 本書內容涵蓋ARM Cortex-A9雙核處理器的架構、匯編指令集、片上存儲器係統、GPIO、中斷、定時器、DMA和外設等關鍵知識點。以Vivado 2015.4集成開發工具為設計平颱,全麵係統地說明瞭在Xilinx Zynq-7000 SoC平颱上實現嵌入式係統設計的方法,對裸機環境和Linux環境下的嵌入式實現流程進行瞭詳細的說明。此外,在本書中還引入Xilinx的HLS高層次綜閤工具,說明在片內硬件中使用C語言建模復雜算法的方法。

? 內容先進 在編寫本書內容時,參考瞭ARM公司大學計劃提供的Cortex-A9單核/雙核處理器的*新教學資料,以及Xilinx公司大學計劃提供的Zynq-7000 SoC嵌入式設計教學資料,力圖全麵反映全球新的嵌入式係統設計理論和實現方法。

? 實例豐富 通過大量的設計實例,以Xilinx公司Vivado 2015.4集成開發環境為平颱,基於XC7Z020 SoC器件,詳細說明Cortex-A9嵌入式係統的設計和實現方法。全書實例達到近40個,可以滿足嵌入式係統教學和自學的需求。

? 軟硬融閤 在編寫本書的過程中,特彆強調軟件硬件協同設計、協同仿真和協同調試的嵌入式係統設計新方法。同時,也突齣體現以IP核為中心的係統級軟件硬件相融閤的設計思想。


內容簡介

本書以Xilinx公司的XC7Z020 Zynq-7000 SoC器件和Xilinx新的Vivado 2015.4集成開發環境為平颱,全麵係統的介紹瞭嵌入式係統設計的完整設計流程。作者以本書為核心,構建瞭由公開視頻教學資源、設計案例代碼、教學課件、QQ交流群等學習資源,以方便廣大讀者與作者交流互動。

作者簡介

何賓 著名的嵌入式技術和EDA技術專傢,長期從事電子設計自動化方麵的教學和科研工作,與全球多傢知名的半導體廠商和EDA工具廠商大學計劃保持緊密閤作。目前已經齣版嵌入式和EDA方麵的著作近30部,內容涵蓋電路仿真、電路設計、可編程邏輯器件、數字信號處理、單片機、嵌入式係統、片上可編程係統等。典型的代錶作有《Xilinx FPGA數字設計-從門級到行為級的雙重描述》、《STC單片機原理及應用》、《Altium Designer15.0電路仿真》、《STC單片機C語言程序設計》等。

目錄

第1章Zynq-7000 SoC設計導論
1.1全可編程片上係統基礎知識
1.1.1全可編程片上係統的演進
1.1.2SoC與MCU和CPU的比較
1.1.3全可編程SoC誕生的背景
1.1.4可編程SoC係統技術特點
1.1.5全可編程片上係統中的處理器類型
1.2Zynq-7000 SoC功能和結構
1.2.1Zynq-7000 SoC産品分類及資源
1.2.2Xilinx Zynq-7000 SoC功能
1.2.3Zynq-7000 SoC處理係統PS的構成
1.2.4Zynq-7000 SoC可編程邏輯PL的構成
1.2.5Zynq-7000 SoC內的互聯結構
1.2.6Zynq-7000 SoC的供電引腳
1.2.7Zynq-7000 SoC內MIO到EMIO的連接
1.2.8Zynq-7000 SoC內為PL分配的信號
1.3Zynq-7000 SoC在嵌入式係統中的優勢
1.3.1使用PL實現軟件算法
1.3.2降低功耗
1.3.3實時減負
1.3.4可重配置計算
1.4Zynq-7000 SoC的Vivado設計流程
1.4.1Vivado的IP設計和係統級設計集成
1.4.2使用RTL或網錶的設計流程
1.4.3IP子係統設計
1.4.4嵌入式處理器硬件設計
1.4.5使用模型和高級綜閤的DSP設計
1.4.6脫離上下文的設計流程
1.4.7I/O引腳規劃和布局
1.4.8設計分析和驗證
1.4.9器件編程和硬件驗證
1.4.10部分可重配置
第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.9AMBA AHB傳輸仲裁
2.3.10AMBA AHB分割傳輸
2.3.11AMBA AHB復位
2.3.12關於AHB數據總綫的位寬
2.3.13AMBA AHB接口設備
2.4AMBA AXI4規範
2.4.1AMBA AXI4概述
2.4.2AMBA AXI4功能
2.4.3AMBA AXI4互聯結構
2.4.4AXI4-Lite功能
2.4.5AXI4-Stream功能
第3章Zynq-7000係統公共資源及特性
3.1時鍾子係統
3.1.1時鍾係統架構
3.1.2CPU時鍾域
3.1.3時鍾編程實例
3.1.4時鍾係統內生成電路結構
3.2復位子係統
3.2.1復位係統結構和層次
3.2.2復位流程
3.2.3復位的結果
第4章Zynq調試和測試子係統
4.1JTAG和DAP子係統
4.1.1JTAG和DAP係統功能
4.1.2JTAG和DAP係統I/O信號
4.1.3編程模型
4.1.4ARM DAP控製器
4.1.5跟蹤端口接口單元TPIU
4.1.6Xilinx TAP控製器
4.2CoreSight係統結構及功能
4.2.1CoreSight結構概述
4.2.2CoreSight係統功能
第5章Cortex-A9處理器及指令集
5.1應用處理單元概述
5.1.1基本功能
5.1.2係統級視圖
5.2ARM處理器架構發展
5.3Cortex-A9中央處理器結構
5.3.1處理器模式
5.3.2寄存器
5.3.3流水綫
5.3.4分支預測
5.3.5指令和數據對齊
5.3.6跟蹤和調試
5.4Cortex-A9處理器指令集
5.4.1指令集基礎
5.4.2數據處理操作
5.4.3存儲器指令
5.4.4分支
5.4.5飽和算術
5.4.6雜項指令
第6章Cortex-A9片上存儲器係統結構和功能
6.1L1高速緩存
6.1.1高速緩存背景
6.1.2高速緩存的優勢和問題
6.1.3存儲器層次
6.1.4高速緩存結構
6.1.5緩存策略
6.1.6寫和取緩衝區
6.1.7緩存性能和命中速度
6.1.8無效和清除緩存
6.1.9一緻性和統一性點
6.1.10Zynq-7000中Cortex-A9 L1高速緩存的特性
6.2存儲器順序
6.2.1普通、設備和強順序存儲器模型
6.2.2存儲器屬性
6.2.3存儲器屏障
6.3存儲器管理單元
6.3.1MMU功能描述
6.3.2虛擬存儲器
6.3.3轉換錶
6.3.4頁錶入口域的描述
6.3.5TLB構成
6.3.6存儲器訪問順序
6.4偵聽控製單元
6.4.1地址過濾
6.4.2SCU主設備端口
6.5L2高速緩存
6.5.1互斥 L2-L1高速緩存配置
6.5.2高速緩存替換策略
6.5.3高速緩存鎖定
6.5.4使能/禁止 L2高速緩存控製器
6.5.5RAM訪問延遲控製
6.5.6保存緩衝區操作
6.5.7在Cortex-A9和L2控製器之間的優化
6.5.8預取操作
6.5.9編程模型
6.6片上存儲器
6.6.1片上存儲器概述
6.6.2片上存儲器功能
6.7係統地址分配
6.7.1地址映射
6.7.2係統總綫主設備
6.7.3I/O外設
6.7.4SMC存儲器
6.7.5SLCR寄存器
6.7.6雜項PS寄存器
6.7.7CPU私有總綫寄存器
第7章Zynq-7000 SoC的Vivado基本設計流程
7.1創建新的工程
7.2使用IP集成器創建處理器係統
7.3生成頂層HDL並導齣設計到SDK
7.4創建應用測試程序
7.5設計驗證
7.5.1驗證前的硬件平颱準備
7.5.2設計驗證的具體實現
7.6SDK調試工具的使用
7.6.1打開前麵的設計工程
7.6.2導入工程到SDK
7.6.3建立新的存儲器測試工程
7.6.4運行存儲器測試工程
7.6.5調試存儲器測試工程
7.7SDK性能分析工具
第8章ARM GPIO的原理和控製實現
8.1GPIO模塊原理
8.1.1GPIO接口及功能
8.1.2GPIO編程流程
8.1.3I/O接口
8.1.4部分寄存器說明
8.1.5底層讀/寫函數說明
8.1.6GPIO的API函數說明
8.2Vivado環境下MIO讀/寫控製的實現
8.2.1調用底層讀/寫函數編寫GPIO應用程序
8.2.2調用API函數編寫控製GPIO應用程序
8.3Vivado環境下EMIO讀/寫控製的實現
8.3.1調用底層讀/寫函數編寫GPIO應用程序
8.3.2調用API函數編寫控製GPIO應用程序
第9章Cortex-A9異常與中斷原理及實現
9.1異常原理
9.1.1異常類型
9.1.2異常處理
9.1.3其他異常句柄
9.1.4Linux異常程序流
9.2中斷原理
9.2.1外部中斷請求
9.2.2Zynq-7000 SoC內的中斷環境
9.2.3中斷控製器的功能
9.3Vivado環境下中斷係統的實現
9.3.1Cortex-A9處理器中斷及異常初始化流程
9.3.2Cortex-A9 GPIO控製器初始化流程
9.3.3導齣硬件設計到SDK
9.3.4創建新的應用工程
9.3.5運行應用工程
第10章Cortex-A9定時器原理及實現
10.1定時器係統架構
10.1.1CPU私有定時器和看門狗定時器
10.1.2全局定時器/計數器
10.1.3係統看門狗定時器
10.1.4三重定時器/計數器
10.1.5I/O信號
10.2Vivado環境下定時器的控製實現
10.2.1打開前麵的設計工程
10.2.2創建SDK軟件工程
10.2.3運行軟件應用工程
第11章Cortex-A9 DMA控製器原理及實現
11.1DMA控製器架構
11.2DMA控製器功能
11.2.1考慮AXI交易的因素
11.2.2DMA管理器
11.2.3多通道數據FIFO(MFIFO)
11.2.4存儲器―存儲器交易
11.2.5PL外設AXI交易
11.2.6PL外設請求接口
11.2.7PL外設長度管理
11.2.8DMAC長度管理
11.2.9事件和中斷
11.2.10異常終止
11.2.11安全性
11.2.12IP配置選項
11.3DMA控製器編程指南
11.3.1啓動控製器
11.3.2執行DMA傳輸
11.3.3中斷服務例程
11.3.4寄存器描述
11.4DMA引擎編程指南
11.4.1寫微碼編程用於AXI交易的CCRx
11.4.2存儲器到存儲器傳輸
11.4.3PL外設DMA傳輸長度管理
11.4.4使用一個事件重新啓動DMA通道
11.4.5中斷一個處理器
11.4.6指令集參考
11.5編程限製
11.6係統功能之控製器復位配置
11.7I/O接口
11.7.1AXI主接口
11.7.2外設請求接口
11.8Vivado環境下DMA傳輸的實現
11.8.1DMA控製器初始化流程
11.8.2中斷控製器初始化流程
11.8.3中斷服務句柄處理流程
11.8.4導齣硬件設計到SDK
11.8.5創建新的應用工程
11.8.6運行軟件應用工程
第12章Cortex-A9安全性擴展
12.1TrustZone硬件架構
12.1.1多核係統的安全性擴展
12.1.2普通世界和安全世界的交互
12.2Zynq-7000 APU內的TrustZone
12.2.1CPU安全過渡
12.2.2CP15寄存器訪問控製
12.2.3MMU安全性
12.2.4L1緩存安全性
12.2.5安全異常控製
12.2.6CPU調試 TrustZone訪問控製
12.2.7SCU寄存器訪問控製
12.2.8L2緩存中的TrustZone支持
第13章Cortex-A9 NEON原理及實現
13.1SIMD
13.2NEON架構
13.2.1與VFP的共性
13.2.2數據類型
13.2.3NEON寄存器
13.2.4NEON指令集
13.3NEON C編譯器和匯編器
13.3.1嚮量化
13.3.2檢測NEON
13.4NEON優化庫
13.5SDK工具提供的優化選項
13.6使用NEON內聯函數
13.6.1NEON數據類型
13.6.2NEON內聯函數
13.7優化NEON匯編器代碼
13.8提高存儲器訪問效率
13.9自動嚮量化實現
13.9.1導齣硬件設計到SDK
13.9.2創建新的應用工程
13.9.3運行軟件應用工程
13.10NEON匯編代碼實現
13.10.1導齣硬件設計到SDK
13.10.2創建新的應用工程
13.10.3運行軟件應用工程
第14章Cortex-A9外設模塊結構及功能
14.1DDR存儲器控製器
14.1.1DDR存儲器控製器接口及功能
14.1.2AXI存儲器端口接口
14.1.3DDR核和交易調度器
14.1.4DDRC仲裁
14.1.5DDR控製器PHY
14.1.6DDR初始化和標定
14.1.7糾錯碼
14.2靜態存儲器控製器
14.2.1靜態存儲器控製器接口及功能
14.2.2靜態存儲器控製器和存儲器的信號連接
14.3四-SPI Flash控製器
14.3.1四-SPI Flash控製器功能
14.3.2四-SPI Flash控製器反饋時鍾
14.3.3四-SPI Flash控製器接口
14.4SD/SDIO外設控製器
14.4.1SD/SDIO控製器功能
14.4.2SD/SDIO控製器傳輸協議
14.4.3SD/SDIO控製器接口信號連接
14.5USB主機、設備和OTG控製器
14.5.1USB控製器接口及功能
14.5.2USB主機操作模式
14.5.3USB設備操作模式
14.5.4USB OTG操作模式
14.6吉比特以太網控製器
14.6.1吉比特以太網控製器接口及功能
14.6.2吉比特以太網控製器接口編程嚮導
14.6.3吉比特以太網控製器接口信號連接
14.7SPI控製器
14.7.1SPI控製器的接口及功能
14.7.2SPI控製器時鍾設置規則
14.8CAN控製器
14.8.1CAN控製器接口及功能
14.8.2CAN控製器操作模式
14.8.3CAN控製器消息保存
14.8.4CAN控製器接收過濾器
14.8.5CAN控製器編程模型
14.9UART控製器
14.9.1UART控製器接口及功能
14.10I2C控製器
14.10.1I2C速度控製邏輯
14.10.2I2C控製器的功能和工作模式
14.11ADC轉換器接口
14.11.1ADC轉換器接口及功能
14.11.2ADC命令格式
14.11.3供電傳感器報警
14.12PCI-E接口
第15章Zynq-7000內的可編程邏輯資源
15.1可編程邏輯資源概述
15.2可編程邏輯資源功能
15.2.1CLB、Slice和LUT
15.2.2時鍾管理
15.2.3塊RAM
15.2.4數字信號處理-DSP Slice
15.2.5輸入/輸齣
15.2.6低功耗串行收發器
15.2.7PCI-E模塊
15.2.8XADC(模擬-數字轉換器)
15.2.9配置
第16章Zynq-7000內的互聯結構
16.1係統互聯架構
16.1.1互聯模塊及功能
16.1.2數據路徑
16.1.3時鍾域
16.1.4連接性
16.1.5AXI ID
16.1.6寄存器概述
16.2服務質量
16.2.1基本仲裁
16.2.2高級QoS
16.2.3DDR端口仲裁
16.3AXI_HP接口
16.3.1AXI_HP接口結構及特點
16.3.2接口數據寬度
16.3.3交易類型
16.3.4命令交替和重新排序
16.3.5性能優化總結
16.4AXI_ACP接口
16.5AXI_GP接口
16.6AXI信號總結
16.7PL接口選擇
16.7.1使用通用主設備端口的Cortex-A9
16.7.2通過通用主設備的PS DMA控製器(DMAC)
16.7.3通過高性能接口的PL DMA
16.7.4通過AXI ACP的PL DMA
16.7.5通過通用AXI從(GP)的PL DMA
第17章Zynq-7000 SoC內定製簡單AXI-Lite IP
17.1設計原理
17.2定製AXI-Lite IP
17.2.1創建定製IP模闆
17.2.2修改定製IP設計模闆
17.2.3使用IP封裝器封裝外設
17.3打開並添加IP到設計中
17.3.1打開工程和修改設置
17.3.2添加定製IP到設計
17.3.3添加xdc約束文件
17.4導齣硬件到SDK
17.5建立和驗證軟件應用工程
17.5.1建立應用工程
17.5.2下載硬件比特流文件到FPGA
17.5.3運行應用工程
第18章Zynq-7000 SoC內定製復雜AXI LITE IP
18.1設計原理
18.1.1VGA IP核的設計原理
18.1.2移位寄存器IP核的設計原理
18.2定製VGA IP核
18.2.1創建定製VGA IP模闆
18.2.2修改定製VGA IP模闆
18.2.3使用IP封裝器封裝VGA IP
18.3定製移位寄存器IP核
18.3.1創建SHIFTER IP模闆
18.3.2修改定製SHIFTER IP模闆
18.3.3使用IP封裝器封裝SHIFTER IP
18.4打開並添加IP到設計中
18.4.1打開工程和修改設置
18.4.2添加定製IP到設計
18.4.3添加xdc約束文件
18.5導齣硬件到SDK
18.6建立和驗證軟件工程
18.6.1建立應用工程
18.6.2下載硬件比特流文件到FPGA
18.6.3運行應用工程
第19章Zynq-7000 AXI HP數據傳輸原理及實現
19.1設計原理
19.2構建硬件係統
19.2.1打開工程和修改設置
19.2.2添加並連接AXI DMA IP核
19.2.3添加並連接FIFO IP核
19.2.4連接DMA中斷到PS
19.2.5驗證和建立設計
19.3建立和驗證軟件工程
19.3.1導齣硬件到SDK
19.3.2創建軟件應用工程
19.3.3下載硬件比特流文件到FPGA
19.3.4運行應用工程
第20章Zynq-7000 ACP數據傳輸原理及實現
20.1設計原理
20.2打開前麵的設計工程
20.3配置PS端口
20.4添加並連接IP到設計
20.4.1添加IP到設計
20.4.2係統連接
20.4.3分配地址空間
20.5使用SDK設計和實現應用工程
20.5.1創建新的軟件應用工程
20.5.2導入應用程序
20.5.3下載硬件比特流文件到FPGA
20.5.4運行應用工程
第21章Zynq-7000軟件和硬件協同調試原理及實現
21.1設計目標
21.2ILA核原理
21.2.1ILA觸發器輸入邏輯
21.2.2多觸發器端口的使用
21.2.3使用觸發器和存儲限定條件
21.2.4ILA觸發器輸齣邏輯
21.2.5ILA數據捕獲邏輯
21.2.6ILA控製與狀態邏輯
21.3VIO核原理
21.4構建協同調試硬件係統
21.4.1打開前麵的設計工程
21.4.2添加定製IP
21.4.3添加ILA和VIO核
21.4.4標記和分配調試網絡
21.5生成軟件工程
21.6S/H協同調試
第22章Zynq-7000 SoC啓動和配置原理及實現
22.1Zynq-7000 SoC啓動過程
22.2Zynq-7000 SoC啓動要求
22.2.1供電要求
22.2.2時鍾要求
22.2.3復位要求
22.2.4模式引腳
22.3Zynq-7000 SoC內的BootROM
22.3.1BootROM特性
22.3.2BootROM頭部
22.3.3啓動設備
22.3.4BootROM多啓動和啓動分區查找
22.3.5調試狀態
22.3.6BootROM後狀態
22.4Zynq-7000 SoC器件配置接口
22.4.1描述功能
22.4.2器件配置流程
22.4.3配置PL
22.4.4寄存器概述
22.5生成SD卡鏡像文件並啓動
22.5.1SD卡與XC7Z020接口設計
22.5.2打開前麵的設計工程
22.5.3創建第一級啓動引導
22.5.4創建SD卡啓動鏡像
22.5.5從SD卡啓動引導係統
22.6生成QSPI Flash鏡像並啓動
22.6.1QSPI Flash接口
22.6.2創建QSPI Flash鏡像
22.6.3從QSPI Flash啓動引導係統
22.7Cortex-A9雙核係統的配置和運行
22.7.1構建雙核硬件係統工程
22.7.2添加並互聯IP核
22.7.3導齣硬件設計到SDK中
22.7.4設置闆級包支持路徑
22.7.5建立FSBL應用工程
22.7.6建立CPU0應用工程
22.7.7建立CPU1闆級支持包
22.7.8建立CPU1應用工程
22.7.9創建SD卡鏡像文件
22.7.10雙核係統運行和測試
22.7.11雙核係統的調試
第23章Zynq-7000 SoC內XADC原理及實現
23.1ADC轉換器接口結構
23.2ADC轉換器功能
23.2.1ADC命令格式
23.2.3供電傳感器報警
23.3XADC IP核結構及信號
23.4開發平颱上XADC接口
23.5在Zynq-7000 SoC內構建數模混閤係統
23.5.1打開前麵的設計工程
23.5.2配置PS端口
23.5.3添加並連接XADC IP到設計
23.5.4查看地址空間
23.5.5添加設計約束文件
23.5.6設計處理
23.6使用SDK設計和實現應用工程
23.6.1生成新的應用工程
23.6.2導入應用程序
23.6.3下載硬件比特流文件到FPGA
23.6.4運行應用工程
第24章Linux開發環境的構建
24.1構建虛擬機環境
24.2安裝和啓動Ubuntu14.04客戶機操作係統
24.2.1新添加兩個磁盤
24.2.2設置CD/DVD(SATA)
24.2.3安裝Ubuntu14.04
24.2.4更改Ubuntu14.04操作係統啓動設備
24.2.5啓動Ubuntu14.04操作係統
24.2.6添加搜索鏈接資源
24.3安裝FTP工具
24.3.1Windows操作係統下LeapFTP安裝
24.3.2Ubuntu操作係統環境下FTP安裝
24.4安裝和啓動SSH和git組件
24.4.1安裝和啓動SSH組件
24.4.2安裝和git組件
24.5安裝交叉編譯器環境
24.5.1安裝32位支持工具包
24.5.2安裝和設置SDK 2015.4工具
24.6安裝和配置Qt集成開發工具
24.6.1Qt集成開發工具功能
24.6.2構建PC平颱Qt環境
24.6.3構建ARM平颱Qt環境
第25章構建Zynq-7000 SoC內Ubuntu硬件運行環境
25.1建立新的設計工程
25.2添加IP核路徑
25.3構建硬件係統
25.3.1添加和配置ZYNQ7 IP
25.3.2添加和配置VDMA IP
25.3.3添加和配置AXI Display Controller IP
25.3.4添加和配置HDMI Transmitter IP核
25.3.5添加和配置VGA IP核
25.3.6連接用戶自定義IP核
25.3.7添加和配置Processor System Reset IP核
25.3.8連接係統剩餘部分
25.4添加設計約束文件
25.5導齣硬件文件
第26章構建Zynq-7000 SoC內Ubuntu軟件運行環境
26.1u-boot原理及實現
26.1.1下載u-boot源碼
26.1.2u-boot版文件結構
26.1.3u-boot工作模式
26.1.4u-boot啓動流程
26.1.5編譯u-boot
26.1.6鏈接腳本文件結構
26.2內核結構及編譯
26.2.1內核結構
26.2.2下載Linux內核源碼
26.2.3內核版本
26.2.4內核係統配置
26.2.5Bootloader啓動過程
26.2.6Linux內核啓動過程
26.2.7編譯內核
26.3設備樹原理及實現
26.3.1設備樹概述
26.3.2設備樹數據格式
26.3.3設備樹的編譯
26.4文件係統原理及下載
26.5生成Ubuntu啓動鏡像
26.5.1生成FSBL文件
26.5.2生成BOOT.BIN啓動文件
26.5.3製作SD卡
26.5.4復製BOOT.BIN文件
26.5.5復製編譯後的內核文件
26.5.6復製編譯後的設備樹文件
26.5.7復製文件係統
26.6啓動Ubuntu操作係統
第27章Linux環境下簡單字符設備驅動程序的開發
27.1驅動程序的必要性
27.2Linux操作係統下的設備文件類型
27.3Linux驅動的開發流程
27.4驅動程序的結構框架
27.4.1加載和卸載驅動函數模塊
27.4.2字符設備中重要的數據結構和函數
27.5編寫Makefile文件
27.6編譯驅動程序
27.7編寫測試程序
27.8運行測試程序
第28章Linux環境下包含中斷機製驅動程序的開發
28.1設計原理
28.2編寫包含中斷處理的驅動代碼
28.2.1驅動程序頭文件
28.2.2驅動的加載和卸載函數
27.2.3file_operations初始化
28.3編寫Makefile文件
28.4編譯驅動程序
28.5測試驅動程序
第29章Linux環境下圖像處理係統的構建
29.1係統整體架構和功能
29.2OV5640攝像頭性能
29.2.1攝像頭捕獲模塊的硬件
29.2.2SCCB接口規範
29.2.3寫攝像頭模組寄存器操作
29.2.4讀攝像頭模組寄存器操作
29.2.5攝像頭初始化流程
29.3Vivado HLS實現拉普拉斯算子濾波算法的設計
29.3.1Vivado HLS工具的性能和優勢
29.3.2拉普拉斯算法與HDL之間的映射
29.4圖像處理係統的整體構建
29.5圖像處理係統軟件的設計
29.5.1Ubuntu桌麵係統的構建
29.5.2Qt圖像處理程序的開發
29.6嵌入式圖像處理係統測試

前言/序言

序言


本書是在作者已經齣版的《Xilinx All Programmable Zynq-7000 SoC設計指南》一書的基礎上進行大幅度修訂而成的。在本書修訂的過程中,汲取瞭廣大讀者的參考意見。修訂後本書的特色主要包含:


(1)本書大幅度增加瞭ARM Cortex-A9基本知識的講解,包括指令集、處理器架構等方麵的內容,降低讀者閱讀本書的入門門檻;


(2)本書大幅度增加瞭ARM Cortex-A9應用和設計實例,包括MIO和EMIO、定時器、中斷、DMA、NEON等,幫助讀者進一步全麵掌握ARM Cortex-A9處理器的使用方法;


(3)本書開發環境使用瞭Xilinx最新的Vivado2015.4集成開發環境,使得本書能反映齣Vivado集成開發環境的最新特性;


(4)本書大幅度增加瞭Ubuntu操作係統在嵌入式係統中的應用實例,使得讀者係統掌握Ubuntu構建、驅動程序開發,以及Qt應用程序開發的全部流程。


在修訂本書的過程中,有更多新的體會,在此願意與廣大讀者分享。


(1)Xilinx推齣的Zynq-7000 SoC器件是異構架構的典型代錶,即把專用的嵌入式ARM Cortex-A9雙核處理器和通用的大規模現場可編程門陣列FPGA結閤在單個芯片中,將專用處理器的串行執行和FPGA的並行執行完美結閤,為解決未來大數據處理、人工智能等復雜高性能算法處理鋪平瞭道路。


(2)新的設計工具的推齣,比如Vivado HLS,SDSOC等,更加注重嵌入式係統的係統級建模,對未來設計方法將産生深遠的影響。通過HLS工具,用戶隻需要編寫C語言代碼,就可以讓工具自動轉換和生成HDL代碼,顯著地提高瞭設計效率,縮短瞭開發周期。


(3)隨著異構架構和片上係統技術的不斷發展,協同設計、協同仿真和協同調試將成為未來嵌入式係統開發者必須具備的品質。所謂的協同,要求設計者必須同時掌握軟件和硬件知識,這與傳統上軟件和硬件分離的設計方法有著本質的區彆。


(4)特彆值得一提的是,在2016年初Xilinx最新量産的Zynq UltraScale+ MPSoC采用瞭颱積電的16nm工藝,將ARM的Cortex-A53四核處理器、ARM的Cortex-R5雙核處理器、ARM的Mali-400 MP2 GPU及超大規模FPGA資源集成在單芯片中,為未來高性能數據中心提供強大的支持,進一步改善瞭數據中心的處理能力,可以預見越來越多的搜索引擎公司、電商平颱及互聯網企業等都會使用這種平颱加速海量數據的處理。


(5)由於半導體技術的不斷發展,使得電子係統從傳統的PCB闆級進化到瞭芯片級,這對嵌入式係統的小型化、低功耗和可靠性的改善都提供瞭強大的保障,這也是未來嵌入式係統發展的潮流。


本書在修訂的過程中,突齣體現ARM的嵌入式和Xilinx最新的Vivado設計工具,所涵蓋的內容是作者所齣版圖書中最多的,全書內容達到29章之多。在編排本書內容時,分成下麵幾大部分。


(1)設計導論是本書中最基礎的內容,目的要介紹Zynq-7000 SoC的架構、優勢、設計方法,以及Vivado2015.4集成開發環境流程。


(2)ARM AMBA規範是讀者理解和掌握ARM Cortex-A9架構必須要知道的基本知識,掌握這些知識對於讀者能順利學習本書後續章節非常關鍵。


(3)係統介紹Zynq-7000 SoC內PS所有功能部件的原理及使用方法,內容包括:Cortex-A9處理器架構、Cortex-A9指令集、片上存儲器係統、設計流程、MIO/EMIO操作、中斷和異常、定時器、DMA、安全性擴展、NEON、外設模塊。


(4)係統介紹Zynq-7000 SoC內PL的資源及Zynq-7000 SoC內的互聯結構,使得讀者可以清楚地瞭解並掌握在異構架構下,Cortex-A9專用處理器與PL內定製外設實現滿足不同要求的連接方法。


(5)係統介紹在Zynq-7000 SoC內PL通過GP、HP和ACP,構建不同定製外設,滿足不同數據處理和傳輸性能要求的方法。


(6)係統介紹基於Ubuntu操作係統構建嵌入式係統的方法,包括:Linux開發環境的構建、Zynq-7000 SoC內Ubuntu硬件運行環境的構建、Zynq-7000 SoC內Ubuntu軟件運行環境的構建、驅動程序的開發以及基於Ubuntu構建圖形處理係統。


在編寫本書的過程中,特彆感謝Xilinx公司大中華區大學計劃經理陸傢華、ARM公司亞太區大學計劃經理陳煒、Xilinx公司亞太區傳媒經理張俊偉給予的大力支持和幫助,也感謝Xilinx公司各位熱心的技術支持給予的無私幫助。集寜師範學院物理係聶陽老師參與編寫本書的第1-3章,作者的研究生張艷輝幫助作者設計和驗證本書所有章節的設計案例,研究生李寶隆編寫瞭本書第4-5章的內容,本科生湯宗美參與整理並編寫瞭本書所有配套的教學資源。在本書齣版的過程中,得到電子工業齣版社領導和編輯的大力支持和幫助,在此也一並嚮他們錶示感謝。




何賓2016年5 月於北京




學 習 說 明


Study Shows






本書提供的教學視頻、教學課件、設計文件、硬件原理圖、使用說明下載地址


北京匯眾新特科技有限公司技術支持網址:


http://www.edawiki.com


注意:所有教學課件及工程文件僅限購買本書讀者學習使用,不得以任何方式傳播!




本書作者聯絡方式


電子郵件:hb@gpnewtech.com




購買硬件事宜由北京匯眾新特科技有限公司負責


公司官網:http://www.gpnewtech.com


市場及服務支持熱綫:010-83139176, 010-83139076




《嵌入式係統開發實戰:基於ARM Cortex-A9與FPGA異構計算》 一、 導言:擁抱異構計算的時代浪潮 在當今電子信息産業蓬勃發展的時代,嵌入式係統已滲透到我們生活的方方麵麵,從智能手機、汽車電子到工業自動化、醫療設備,無處不在。然而,隨著應用需求的日益復雜化和性能瓶頸的不斷齣現,傳統的單一處理器架構已難以滿足高效、低功耗、高靈活性的要求。異構計算,即將不同類型的處理器(如CPU、GPU、FPGA等)集成在一起,協同工作,以發揮各自優勢,成為解決這些挑戰的關鍵。 本書聚焦於一種極具代錶性的異構計算平颱——集成瞭ARM Cortex-A9應用處理器和FPGA(現場可編程門陣列)的SoC(System-on-Chip)設備,通過深入淺齣的講解和詳實的實踐案例,引領讀者踏上嵌入式係統開發實戰的徵程。我們將不僅僅局限於理論的探討,更側重於將理論知識轉化為實際的開發技能,讓讀者能夠獨立設計、實現並優化復雜的嵌入式係統。 二、 ARM Cortex-A9 應用處理器:軟件開發的強大引擎 ARM Cortex-A9處理器以其優異的性能、低功耗和成熟的生態係統,成為高性能嵌入式應用處理器的翹楚。在本書中,我們將係統性地梳理ARM Cortex-A9處理器的核心架構、指令集以及與之相關的軟件開發工具鏈。 架構解析與指令集理解: 我們將從微架構層麵深入理解Cortex-A9的工作原理,包括流水綫、緩存機製、分支預測等。在此基礎上,詳細講解ARMv7-A架構的指令集,包括數據處理指令、分支指令、加載/存儲指令等,並輔以實際代碼示例,幫助讀者建立對底層匯編語言的直觀認識。這將是理解操作係統、驅動程序以及性能優化的基礎。 操作係統移植與驅動開發: 對於嵌入式係統而言,操作係統是承載應用軟件運行的基石。我們將重點關注Linux操作係統,演示如何在Cortex-A9平颱上進行Linux的交叉編譯、內核配置、根文件係統構建以及啓動流程。同時,將深入探討設備驅動程序的開發,包括字符設備、塊設備、網絡設備驅動的編寫,以及如何與硬件進行交互。通過實際案例,如GPIO、UART、SPI、I2C等外設的驅動開發,讓讀者掌握驅動開發的通用方法和技巧。 嵌入式Linux應用開發: 基於Linux操作係統,我們將教授讀者如何使用C/C++等主流編程語言進行嵌入式應用開發。內容將涵蓋多綫程編程、進程間通信、內存管理、網絡通信(Socket編程)等關鍵技術。本書還將介紹一些常用的嵌入式Linux開發框架和庫,例如Qt for Embedded、GTK+等,以及如何利用它們快速構建用戶友好的圖形界麵應用。 性能調優與調試技巧: 掌握高性能開發是嵌入式工程師必備的技能。我們將介紹各種性能分析工具,如perf、gprof等,以及如何利用它們識彆性能瓶頸。此外,還將詳細講解調試技術,包括GDB的使用、JTAG調試、邏輯分析儀的應用等,幫助讀者高效地定位和解決軟件開發中遇到的各種問題。 三、 FPGA:硬件加速的靈活戰場 FPGA(Field-Programmable Gate Array)作為一種高度靈活的可編程邏輯器件,為嵌入式係統帶來瞭前所未有的硬件加速和定製化能力。其並行處理的特性使其在圖像處理、信號處理、通信協議加速、人工智能推理等領域展現齣巨大的潛力。 FPGA基礎理論與硬件描述語言(HDL): 本部分將係統性地介紹FPGA的基本原理,包括查找錶(LUT)、觸發器(Flip-Flop)、布綫資源等。我們將重點講解兩種主流的硬件描述語言:Verilog和VHDL。通過大量的代碼示例,詳細闡述HDL的語法、結構、時序建模以及常用邏輯電路的設計方法,例如組閤邏輯電路(加法器、多路選擇器等)和時序邏輯電路(計數器、移位寄存器等)的設計。 IP核的使用與IP集成: 在FPGA開發中,閤理利用現有的IP(Intellectual Property)核可以極大地提高開發效率。我們將介紹如何查找、評估和使用廠商提供的IP核,例如DDR控製器、Ethernet MAC、PCIe接口等。同時,還將深入講解IP的集成方法,以及如何通過IP Integrator等工具將不同的IP核連接起來,構建復雜的係統。 HDL綜閤、布局布綫與時序分析: 從HDL代碼到最終的FPGA比特流文件,需要經過一係列的綜閤、布局布綫和時序分析過程。本書將詳細介紹這些過程的工作原理和關鍵參數,以及如何使用Xilinx Vivado等主流FPGA開發工具進行操作。重點講解如何優化設計以滿足時序約束,避免時序違例,確保電路的穩定運行。 FPGA性能優化與片上調試: 類似於軟件開發,FPGA設計也存在性能優化的問題。我們將探討各種優化策略,如流水綫技術、並行化處理、資源共享等,以提升FPGA的吞吐量和效率。此外,還將介紹片上調試技術,如ILA(Integrated Logic Analyzer)的使用,幫助讀者在硬件上實時觀測信號,分析和定位邏輯錯誤。 四、 異構係統集成與SoC協同設計 異構計算的魅力在於將CPU和FPGA的優勢結閤起來,實現軟硬件協同優化。本書將重點講解如何有效地集成ARM Cortex-A9和FPGA,構建一個高性能、高靈活性的嵌入式SoC係統。 SoC架構與接口設計: 我們將深入剖析典型的SoC架構,理解CPU和FPGA之間的互聯方式,例如AXI(Advanced eXtensible Interface)總綫協議。詳細講解如何設計高效的接口,實現CPU與FPGA之間的數據傳輸和控製。 軟硬件協同設計流程: 異構係統的設計是一個軟硬件協同的過程。我們將引導讀者瞭解完整的軟硬件協同設計流程,包括係統需求分析、軟硬件功能劃分、接口定義、IP核選擇與定製、軟件開發與硬件實現並行推進,以及最終的係統集成與驗證。 硬件加速應用案例: 為瞭讓讀者更直觀地理解異構計算的威力,本書將提供一係列精心設計的硬件加速應用案例。例如: 圖像處理加速: 利用FPGA實現圖像濾波、邊緣檢測、人臉識彆等算法,從而大幅提升處理速度,減輕CPU的負擔。 信號處理與通信: 設計FPGA模塊實現高性能的FFT(快速傅裏葉變換)、調製解調等算法,應用於通信係統或數據采集。 機器學習推理加速: 將低功耗的神經網絡模型部署到FPGA上,實現高效的AI推理,例如物體檢測、語音識彆等。 定製化硬件接口: 為特定應用場景設計專用的硬件接口,例如高速數據采集、工業控製協議等。 係統驗證與測試: 係統的正確性和穩定性是至關重要的。我們將介紹多種係統驗證和測試方法,包括單元測試、集成測試、係統級測試,以及如何利用仿真工具和實際硬件進行全麵的驗證。 五、 進階主題與未來展望 在掌握瞭異構係統開發的基礎知識後,本書還將觸及一些進階主題,為讀者未來的深入學習和職業發展打下基礎。 低功耗設計與優化: 在許多嵌入式應用中,功耗是一個關鍵的考量因素。我們將探討在CPU和FPGA層麵實現低功耗設計的策略和技術。 實時操作係統(RTOS)在異構係統中的應用: 探討如何將FreeRTOS等實時操作係統集成到異構係統中,以滿足對實時性要求更高的應用。 嵌入式AI與邊緣計算: 結閤FPGA的硬件加速能力,我們將探討如何在嵌入式設備上實現更強大的AI功能,並展望邊緣計算的未來發展。 安全與加密: 介紹如何在嵌入式係統中實現硬件加速的安全功能,例如加密解密、身份認證等。 六、 結語 《嵌入式係統開發實戰:基於ARM Cortex-A9與FPGA異構計算》旨在為讀者提供一個係統、全麵且實踐導嚮的學習平颱。我們相信,通過本書的學習,讀者不僅能夠深入理解嵌入式係統開發的精髓,更能夠掌握將先進的異構計算技術應用於實際項目中的核心能力,從而在快速發展的嵌入式技術領域中脫穎而齣,創造無限可能。

用戶評價

評分

作為一個在校的電子工程專業學生,我目前正在學習嵌入式係統和FPGA的相關課程。Xilinx Zynq-7000係列芯片因其高性能和廣泛的應用前景,是我們課程學習中經常提及的重點。對於我們學生而言,一本理論與實踐相結閤的書籍至關重要,它能夠幫助我們鞏固課堂上學到的知識,並將其轉化為實際的設計能力。我非常期待這本書能夠從最基礎的概念講起,循序漸進地介紹Zynq-7000的整體架構,包括PS部分(ARM A9處理器、外設接口等)和PL部分(可配置邏輯塊、DSP單元、Block RAM等)的功能和特點。更重要的是,我希望能看到詳細的開發流程講解,比如如何使用Xilinx Vivado進行HDL(硬件描述語言)設計,如何進行綜閤、實現和布局布綫,以及如何生成Bitstream文件。同時,對於PS部分的軟件開發,我也希望書中能有相應的指導,包括嵌入式Linux的移植、驅動程序的編寫以及用戶應用程序的開發。如果書中能包含一些經典的Zynq-7000應用案例,例如一個簡單的ADC數據采集與FPGA並行處理係統,或者一個基於TCP/IP的通信模塊,這將極大地幫助我們理解理論知識在實際項目中的應用,並為我們未來的畢業設計或者科研項目打下堅實的基礎。

評分

我是一名從事瞭幾年嵌入式Linux開發的工程師,平時接觸的主要是基於ARM Cortex-A係列處理器的通用嵌入式平颱,例如樹莓派或者一些工控闆。但最近在接觸一些對數據處理速度和並行計算要求較高的項目時,Xilinx Zynq-7000這個名字頻繁地齣現在我的視野中。它獨特的PS/PL異構架構,能夠將強大的ARM處理器和靈活的FPGA可編程邏輯集成在同一顆芯片上,這給我留下瞭深刻的印象,也讓我看到瞭解決現有技術瓶頸的希望。我一直想深入瞭解Zynq-7000係列,特彆是如何有效地利用FPGA的並行計算能力來加速特定任務,同時又能夠利用ARM處理器來處理通用的操作係統任務和應用程序。這本書的齣現,讓我覺得是一個非常好的學習契機。我特彆關注書中是否會深入講解AXI接口的總綫協議,以及如何在PS和PL之間進行高效的數據傳輸。此外,關於如何利用SDK(Software Development Kit)或者Vitis(如果更新的話)進行軟件和硬件協同開發,也極大地吸引瞭我。如果書中能提供一些實際的硬件加速案例,比如圖像處理、信號分析或者通信協議的實現,那將對我非常有啓發。我希望這本書能夠幫助我打開新的技術視野,並將其應用到我的實際工作中。

評分

我是一名硬件工程師,之前主要專注於傳統的ASIC或FPGA項目,主要使用Verilog/VHDL進行純邏輯設計,或者進行FPGA的邏輯功能實現。然而,隨著嵌入式係統對集成度和智能化要求的不斷提高,我發現許多項目都傾嚮於采用SoC(System on Chip)解決方案,而Xilinx Zynq-7000係列正是這一領域的佼佼者。這讓我對如何在一個芯片內集成CPU和FPGA感到非常好奇,同時也意識到這需要一種全新的設計思維和工具鏈。這本書的齣現,對我來說是一個絕佳的學習機會。我希望能看到書中詳細闡述Zynq-7000的PS和PL之間的接口設計,特彆是AXI總綫協議在不同IP核之間的通信機製。此外,我對於如何將FPGA設計集成到PS的係統中,以及如何進行軟件和硬件的協同調試,有著濃厚的興趣。如果書中能提供一些關於如何選擇閤適的IP核,以及如何利用IP Integrator等工具來構建係統框架的指導,那對我來說將是極大的幫助。我也期待書中能夠涵蓋一些實際的硬件加速設計案例,例如利用FPGA實現高性能的DSP算法,或者進行圖像信號的實時處理,並說明如何將這些加速模塊無縫集成到ARM處理器驅動的係統中。

評分

這本書我一直想入手,因為我最近在關注嵌入式領域,特彆是FPGA和ARM SoC的結閤應用。Xilinx Zynq-7000這個係列芯片的定位和性能一直讓我覺得非常有潛力,在很多高性能嵌入式産品中都有它的身影。所以,看到這本書的齣現,我感覺像是找到瞭打開Zynq-7000世界的一把金鑰匙。我特彆期待書中能詳細講解Zynq-7000的內部架構,比如PS(Processing System)和PL(Programmable Logic)是如何協同工作的,它們之間的數據交換和控製機製又是怎樣的。這對於理解整個係統的設計思路至關重要。此外,作為一本“設計與實現”的書,我希望它能夠提供豐富的實際案例,從硬件平颱搭建到軟件驅動開發,再到應用層的具體實現,能夠有循序漸進的指導。特彆是關於如何利用Vivado工具鏈進行FPGA邏輯設計,以及如何與ARM Cortex-A9處理器協同開發,這些都是我非常感興趣的點。如果書中能包含一些關於性能優化、功耗管理以及係統調試方麵的技巧,那就更加完美瞭。畢竟,在實際的項目開發中,這些往往是決定成敗的關鍵因素。我希望這本書能夠讓我從一個初學者迅速成長為一個能夠獨立完成Zynq-7000項目的設計者。

評分

作為一名對新興技術充滿好奇的科技愛好者,我對Xilinx Zynq-7000這種將ARM處理器和FPGA融閤的SoC技術感到非常著迷。它似乎是通往未來高性能嵌入式設備的橋梁,能夠實現軟件的靈活性和硬件的極緻性能。我一直對Zynq-7000芯片的內部究竟是如何構造的,以及工程師是如何將這兩種截然不同的技術集成在一起並發揮齣最大效用的感到好奇。我非常希望這本書能夠以一種相對易懂的方式,嚮我這樣的讀者介紹Zynq-7000的整體架構,特彆是PS(Processing System)和PL(Programmable Logic)各自承擔的功能,以及它們之間是如何“對話”的。我期待看到書中能夠用生動的圖解和比喻來解釋復雜的概念,例如AXI總綫的工作原理,或者FPGA如何被“編程”來執行特定的任務。此外,我對於學習如何使用Xilinx提供的開發工具鏈,比如Vivado和Vitis,來構建和運行一個簡單的Zynq-7000項目也充滿期待。如果書中能夠提供一些基礎的案例,例如如何點亮一個LED,或者如何通過串口發送一段文字,即使是最簡單的例子,也足以點燃我進一步探索的興趣。我希望這本書能夠讓我對Zynq-7000有一個整體的認識,並激發我對其更深入的瞭解和學習。

評分

書是正版,學習zynq 架構的好書

評分

學zynq用的工具書,講解很詳細

評分

必須好評,內容很詳實

評分

當工具書用也不錯,質量還可以吧

評分

京東真的很給力!以後什麼東西都在京東上買瞭!

評分

給徒弟買的,自己也學習學習,要緊跟時代潮流

評分

商品不錯,很好用,很喜歡,真的不錯呀,真的真的

評分

挺好

評分

這本書挺好的,寫的細。

相關圖書

本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有