Foreword
前言
第一部分 基礎篇
第1章 初試ZedBoard/2
1.1 GPIO LED動手玩/2
1.1.1 拷貝SD卡/2
1.1.2 跳綫與外設連接/2
1.1.3 演示操作/2
1.2 Linaro Ubuntu動手玩/3
1.2.1 SD卡分區/3
1.2.2 文件拷貝(FAT/EXT)/6
1.2.3 外設連接/6
1.2.4 可演示的效果/7
第2章 Zynq平颱介紹/9
2.1 7係列FPGA簡介/9
2.2 Zynq-7000 AP SoC體係簡介/12
第3章 ZedBoard開發環境/15
3.1 ZedBoard的闆載外設/15
3.1.1 LED/15
3.1.2 按鍵/16
3.1.3 開關/16
3.1.4 OLED/17
3.1.5 USB接口/18
3.1.6 音頻接口/20
3.1.7 VGA接口/21
3.1.8 HDMI接口/22
3.1.9 10/100/1000兆網口/23
3.2 ZedBoard的擴展外設/25
3.2.1 外擴PMod插座/25
3.2.2 外擴FMC插槽/27
3.2.3 外擴AMS插座/28
第4章 開發工具鏈/29
4.1 可編程邏輯開發工具鏈/29
4.1.1 PlanAhead/29
4.1.2 Xilinx Platform Studio/31
4.2 軟件開發工具鏈/34
4.2.1 Xilinx Software Development Kit/34
4.2.2 交叉編譯工具鏈/35
4.3 軟硬件調試工具/36
4.3.1 ChipScope Pro/36
4.3.2 GDB與GDBserver/38
第5章 Zynq體係結構/40
5.1 應用處理器單元(APU)/40
5.1.1 ARM Cortex A9處理器/40
5.1.2 偵聽控製單元(SCU)/43
5.1.3 L2高速緩存/44
5.1.4 APU接口/44
5.2 通用外設/46
5.2.1 通用IO(GPIO)/46
5.2.2 SPI接口/49
5.2.3 UART接口/51
5.2.4 計時器/54
5.2.5 USB控製器/57
5.2.6 DDR控製器/58
5.3 數字邏輯設計/59
5.3.1 可編程邏輯“外設”(PL)/59
5.3.2 XADC/61
5.3.3 PCIe/62
5.4 MIO/EMIO/63
第6章 係統級信號/66
6.1 電源管理/66
6.2 Clock信號/67
6.2.1 CPU時鍾域/68
6.2.2 DDR時鍾域/69
6.2.3 基本的時鍾分支結構/69
6.2.4 I/O外設(IOP)時鍾/70
6.2.5 PL時鍾/72
6.2.6 其他時鍾/72
6.3 復位係統/73
6.4 JTAG/75
6.5 中斷處理/76
第7章 Zynq啓動與配置/78
7.1 Zynq啓動過程簡介/78
7.2 外部啓動條件/79
7.2.1 電源要求/79
7.2.2 時鍾要求/79
7.2.3 復位要求/79
7.2.4 啓動引腳設置/80
7.3 BootROM/80
7.3.1 BootROM的作用/80
7.3.2 BootROM的特點/81
7.3.3 BootROM後的狀態/82
7.4 FSBL/82
7.5 SSBL/84
7.6 Linux啓動過程/84
7.7 Secure Boot/86
第8章 麵嚮軟件工程師的邏輯設計/87
8.1 FPGA硬件加速原理/87
8.1.1 以空間換時間/87
8.1.2 以存儲器換門電路/89
8.1.3 以IP集成換生産力/90
8.2 部分動態可重配置於Zynq/93
第9章 ZedBoard入門/95
9.1 UART和GPIO控製/95
9.1.1 UART和GPIO接口/95
9.1.2 硬件設計過程/96
9.1.3 軟件設計過程/106
9.2 硬件/軟件調試方法/112
9.2.1 ChipScope IP Core/112
9.2.2 SDK Gdb使用/115
9.3 搭建你的單闆計算機(Single Board Computer)/117
9.3.1 搭建係統環境/118
9.3.2 準備工作/118
第二部分 進階篇
第10章 基於虛擬平颱的Zynq開發/126
10.1 QEMU介紹/126
10.2 編譯QEMU源碼/126
10.2.1 下載QEMU源碼/126
10.2.2 配置QEMU/127
10.2.3 QEMU所依賴的庫文件/127
10.2.4 編譯QEMU/127
10.3 啓動QEMU/127
10.4 QEMU中的嵌入式Linux/128
10.5 商業版虛擬平颱/131
第11章 PL和PS的接口技術詳解/132
11.1 PL和PS的接口/132
11.1.1 AXI接口簡介/133
11.1.2 AXI Interconnect/134
11.2 Zynq的內部連接/137
11.2.1 AXI_HP/139
11.2.2 AXI_GP/140
11.2.3 AXI_ACP/140
11.3 PL和存儲器係統性能概述/142
11.3.1 接口理論帶寬/142
11.3.2 DDR控製器的吞吐率及其效率/143
11.3.3 內部互連吞吐量瓶頸/143
11.3.4 如何選擇PL的接口/144
第12章 基於Zynq的軟硬件協同設計/149
12.1 多核處理器架構簡介/149
12.1.1 什麼是多核處理器/149
12.1.2 多核處理器發展的動機和優勢/150
12.1.3 同構、異構多核架構的優點和挑戰/152
12.2 軟硬件協同設計方法論/152
12.2.1 什麼是軟硬件協同設計/152
12.2.2 軟硬件協同設計發展的動機和優勢/152
12.2.3 軟硬件協同設計的基本流程/153
12.2.4 基於Xilinx工具的軟硬件協同設計簡介/154
12.3 高層次綜閤/154
12.3.1 高層次綜閤綜述/154
12.3.2 高層次綜閤發展的動機與優勢/155
12.3.3 Xilinx AutoESL工具簡介/156
12.4 基於Xilinx Zynq的軟硬件協同設計實例/157
12.4.1 功能簡介/157
12.4.2 設計流程簡介/157
12.4.3 實驗結果與驗證/165
第13章 Zynq開發實戰/166
13.1 用戶IP設計/166
13.1.1 用戶IPcore介紹/166
13.1.2 用戶IPcore設計/167
13.2 嵌入式Linux設備驅動開發/180
13.2.1 設備驅動開發介紹/180
13.2.2 驅動程序的加載與卸載/181
13.2.3 sys文件係統簡介/181
13.2.4 PWM模塊驅動程序/182
13.2.5 PWM驅動程序編譯與測試/184
13.3 構建嵌入式Linux係統/186
13.3.1 搭建係統環境/186
13.3.2 編譯u-boot/186
13.3.3 編譯內核與設備樹/187
13.3.4 製作根文件係統/188
13.3.5 啓動嵌入式Linux/192
13.4 HDMI設計/193
13.4.1 HDMI傳輸原理/193
13.4.2 ADV7511芯片的相關控製信號/195
13.4.3 設計過程/198
13.5 OpenCV移植/203
13.5.1 開發環境準備/203
13.5.2 配置cmake/203
13.5.3 OpenCV編譯與安裝/205
13.5.4 OpenCV移植與ZedBoard測試/206
13.6 基於OpenCV的樹葉識彆係統/207
13.6.1 項目總覽/208
13.6.2 圖像采集/208
13.6.3 預處理/209
13.6.4 特徵提取/211
13.6.5 分類決策/216
13.6.6 總結/219
13.7 基於OpenCV的人臉識彆係統/220
13.7.1 係統綜述/220
13.7.2 基於Haar特徵和Adaboost算法的人臉檢測/220
13.7.3 係統設計與實現/222
13.7.4 總結/226
13.8 嵌入式Web服務器的移植與搭建/226
13.8.1 嵌入式Web服務器介紹/226
13.8.2 Boa服務器移植與配置/228
13.8.3 Boa服務器部署與測試/230
13.9 嵌入式網絡攝像機的移植與搭建/233
13.9.1 嵌入式網絡攝像機/233
13.9.2 mjpg-streamer的移植與架設/234
13.10 FreeRTOS實時操作係統的應用/238
13.10.1 FreeRTOS介紹/238
13.10.2 FreeRTOS與ucOS-Ⅱ的比較/239
13.10.3 FreeRTOS在Zynq上的應用實例與分析/239
13.10.4 基於FreeRTOS的Lwip/250
13.11 XADC的使用/250
13.11.1 建立硬件工程/252
13.11.2 軟件工程設計/253
13.11.3 程序分析/255
13.12 基於Zynq的部分可重配置/256
13.12.1 可重配置係統介紹/256
13.12.2 可重配置的開發流程/257
13.12.3 小結/265
13.13 在Zynq上搭建Android簡介/265
第14章 係統級設計案例/266
14.1 電機控製係統/266
14.1.1 雙閉環控製器理論/266
14.1.2 雙閉環係統/267
14.1.3 雙閉環控製IP核說明/272
14.1.4 硬件實現過程/275
14.1.5 軟件實現過程/285
14.1.6 硬件平颱測試/286
14.2 智能傢庭健康平颱/287
14.2.1 智能傢庭健康平颱簡介/287
14.2.2 EKG AFE模塊硬件設計/287
14.2.3 Night EKG Controller IP設計/292
14.2.4 建立可運行Linux的完整係統/295
14.2.5 Night EKG Controller的Linux驅動設計/297
14.2.6 基於Qt的圖形用戶界麵設計/299
14.2.7 在ZedBoard上運行Qt程序/308
14.2.8 實現軟件開機自動運行/310
14.3 高性能視頻處理係統設計/311
14.3.1 係統架構/312
14.3.2 硬件架構設計/313
14.3.3 軟件架構設計/316
14.3.4 利用Vivado HLS實現Sobel濾波硬件/318
14.3.5 使係統在ZedBoard上運行/320
14.4 智能小車係統開發/320
14.4.1 智能小車係統結構/320
14.4.2 運動控製設計/323
14.4.3 Linux係統應用程序設計/326
14.4.4 智能小車平颱的後續拓展/333
第15章 如何獲取資料和幫助/334
15.1 如何獲取Xilinx的技術文檔/334
15.1.1 DocNav介紹/334
15.1.2 DocNav使用案例/334
15.2 如何找到Zynq開發資料/336
15.2.1 如何獲取本書的最新例程/336
15.2.2 如何獲取Zynq開發資料/337
15.2.3 如何獲取ZedBoard文檔與例程/337
15.3 Xilinx網站資源導讀/338
15.3.1 序/338
15.3.2 Xilinx軟件介紹/338
15.3.3 軟件版本和軟件更新/340
15.3.4 軟件教程/341
15.3.5 硬件資料/343
15.3.6 參考資源/343
15.3.7 問題解決/344
附錄A Xilinx開發套件版本14.1到14.3的主要升級變化/346
參考資料/353
· · · · · · (
收起)