前言
平台及寫作背景
作為全球最大的可程式化邏輯平台的供應商,Xilinx 已將可程式化邏輯技術帶領到了All Programmable(全可程式化)的時代,其產品不僅有最新的28nm的7 系列(分為Artix7,Kintex7,Virtex7)FPGA 晶片,更有透過SSI(堆疊晶圓互連)技術實現的最大容量FPGA Virtex7-2000T,同時在FPGA 晶片內整合了高速AD 以及最高可達28.05Gb/s 的高速串列通訊埠等可程式化邏輯外的模組。對於應用者而言,除了以上製程的創新外,更具有劃時代意義的是Xilinx 推出的Zynq-7000 AP SoC 晶片,其不僅解決了晶片製程實現上的困難,更解決了片內高性能處理器與高性能可程式化邏輯資料互動協定的困難。
Zynq-7000 是首款將高性能ARM Cortex A9 硬體核心與可程式化邏輯緊密整合到一起的元件。在Zynq 平台中,我們首先可以把可程式化邏輯看成是處理器外接裝置中一個具有可重設定特點的「外接裝置」,例如當序列埠或乙太網介面不夠時、需要視頻界面時,都可以用可程式化邏輯擴充;其次我們也可將其看成一個與處理器對等的主裝置,其可主動完成與外部晶片的資料互動,例如主動進行視訊、網路資料前置處理。透過這樣的結合,既發揮了處理器在處理複雜控制演算法、執行作業系統等方面的優勢,又利用FPGA 在平行算法加速、可動態重設定的特點,實現了系統加速,增加了靈活性;同時以片內結合為基礎的方案,減少了板面積,降低了耗電,也加快了硬體開發速度。結合Zynq 推出,Xilinx 不僅在先期將所有IP 核心介面切換到基於ARM AMBA4.0(AXI4)的標準,實現了邏輯IP 與Zynq 無縫移轉,同時還推出了C2HDL 的高層綜合工具AutoESL(目前已整合到最新的開發套件Vivado 中),這加快了已有演算法的硬體化過程,同時也使得軟體工程師可以在Zynq 上獨立完成軟硬體協作設計。
針對這些新的技術和概念,讀者不妨帶著這樣一些疑問閱讀本書:現在有什麼開發板可以直接用? ARM+FPGA 這樣的結構與板載ARM 處理器與FPGA 晶片的結合到底有哪些區別? ARM 與FPGA 在一個晶片內到底是如何緊密配合的?互相之間資料互動的介面和方式是怎樣的?通電之後ARM 和FPGA 是如何設定的?利用AutoESL 工具到底如何跟Zynq 結合? Linux 作業系統與FPGA 又是如何結合的?這裡的驅動如何寫?在本書中,將陸續對這些問題進行解答。
從Zynq 平台提出伊始,全球各地的客戶對這一平台都產生了濃厚的興趣,Xilinx 也於2011 年年末正式發佈了Zynq 的晶片,在2012 年年初就已經有了第一塊Zynq 開發板ZC702。到了2012 年6 月份,專為社區使用者以及科學研究、教學使用者訂製的低價版本ZedBoard 板也正式面世。但是對一個全新的平台來說,可參考的資源相對缺乏。我們從2012 年7 月份開始在ZedBoard 板上進行設計時就已經明顯感受到專案進度因缺少參考資源而受到的影響。而到了美信的DIY大賽時,更聽到國內使用者對參考資料的迫切需求,尤其是對應的中文資料。
而2013 年1 月份採用ZedBoard 板作為主要平台的開放原始碼硬體與嵌入式大賽—OpenHW12 也即將展開。
在這樣的背景下,賽靈思大學計畫部門決定以最快的速度對我們在這幾個月中開發的、參與的、學習的案例進行整理,撰寫出一本由淺入深、以案例為主的實戰類別書籍,希望透過這本書能幫助大家儘快了解、熟悉並掌握Zynq 的開發。
閱讀提示
本書分為基礎篇和進階篇兩部分。
基礎篇中主要介紹了ZedBoard 板、Zynq 元件、開發工具鏈、Zynq 的系統結構及其啟動過程等基本的元件與電路板情況,同時考慮了軟體工程師的知識結構。在第8 章中介紹了FPGA 的原理,以及硬體加速的原理,便於軟體工程師了解FPGA。在第9 章中透過基礎實驗帶領大家淺嘗Zynq 的開發過程,並帶領大家用ZedBoard 板架設出一個單板電腦系統。
進階篇中,首先介紹了利用虛擬平台QEMU 進行軟體開發的流程。在第11章中詳細分析了Zynq 中處理器與硬體邏輯的連接關係。第12 章主要介紹了在Zynq 上利用AutoESL 進行軟硬體協作設計的理念與過程。第13 章佔了全書四分之一的篇幅,介紹了使用Zynq 實現邏輯、驅動、作業系統、高畫質視訊顯示、OpenCV、網路攝影機等12 個應用案例,這是本書的精華之一。在第14 章,將13 章中提到的獨立案例再融合成4 個系統案例,這4 個系統案例都會應用到前面章節的知識,以此幫助大家儘快掌握在Zynq 上進行系統級設計的方法。筆者在這些年支援客戶的過程中, 常常會發現客戶困擾於不知如何尋找到Xilinx 相關工具、IP 的參考文件、參考設計。因此本書第15 章中主要介紹了如何取得資料和幫助,重點介紹了Xilinx 新推出的DocNav 工具,希望能幫助初學者迅速找到Xilinx 資料。
在本書案例開發與寫作的過程中,Xilinx 的工具已升級到了更高的14.3 版本,但是本書的部分案例是以14.1 版本為基礎的。在切換工具版本的過程中,相關設計可能會略有差異,因此本書在附錄中介紹了14.3 與14.1 工具版本的變化,便於大家快速移植設計。所以讀者在使用本書案例前,請務必閱讀一下本書的附錄部分。