序 本書是作者耗時半年多時間後,獻給廣大讀者的又一本反映最新Xilinx可程式設計技術的著作。在該書編寫的過程中感觸頗多,願於廣大讀者在此一起分享這些心得:
1.當Xilinx將ARM公司的雙核Cortex-A9處理器嵌入到FPGA晶片內,並結閤最新的28納米工藝,製造齣全新一代的可程式設計SoC平颱後,起名叫EPP,即可擴展的處理平颱,後來又改成AllProgrammable平颱。在這個名字變化的過程中,反映瞭Xilinx給這個最新Zynq設計平颱的定位,即:平颱側重於嵌入式係統的應用,未來的可程式設計邏輯器件嚮著嵌入式處理方嚮發展,即傳統的可程式設計邏輯器件未來稱為嵌入式處理元素。未來的嵌入式係統“硬體”和“軟體”將根據應用的要求,真正的變成AllProgrammable(以下稱為全可程式設計),即:可以在單晶片內設計滿足特定要求的硬體平颱和相應的軟體應用。在這個全可程式設計的實現過程中,體現著軟體和硬體協同設計、軟體和硬體協同調試、軟體的串列執行和硬體邏輯的並存執行完美結閤、未來的嵌入式係統是“積木塊”的設計風格等設計思想。這些設計理念將在Zynq-7000平颱上由理想變成實現。
2.Zynq-7000器件是最新半導體技術、電腦技術和電子技術的一個結閤體。在一個小小的半導體矽片上卻集成瞭當今最新的資訊技術。基於Zynq-7000平颱進行高性能的嵌入式實現,需要微電子、數位邏輯、嵌入式處理器、電腦介麵、電腦體係結構、數位信號處理等相關的知識。錶麵上看,Zynq-7000是一個比較復雜的係統。但是,是對一個設計者基礎理論知識和係統級設計能力的一個真正的考察。在這個平颱上實現嵌入式係統的應用,體現著自頂嚮下的一體化設計理念。
3.Zynq-7000平颱是非常好的教學平颱、科研平颱和應用平颱。作為教學平颱,可以在這個平颱上實現全過程的電腦相關課程的教學,使得學生可以清楚地看到每個實現的具體過程。這樣,學生就可以真正地理解嵌入式係統的內涵;作為科研平颱,從事嵌入式相關技術研究人員,可以在這個全開放的平颱上,將演算法進行高性能的實現。並且,可以在這個平颱上實現很多設計的性能分析等研究;作為應用平颱,該平颱的應用將進一步的提高嵌入式係統的靈活性和可靠性、大大降低設計成本,提高瞭産品的市場競爭力。
為瞭更好的幫助讀者學習和掌握Zynq全可程式設計平颱的設計原理和實現方法。全書共23章,按照Zynq-7000基礎理論篇、Zynq-7000體係結構篇和Zynq-7000設計實戰篇分彆進行瞭詳細的介紹。
1.Zynq-7000基礎理論篇,詳細介紹瞭學習Zynq-7000全可程式設計平颱需要的基礎理論知識,共包括2個章節內容:
(1)可程式設計SoC設計導論,包括:可程式設計SoC係統概述、XilinxZynq平颱導論和Zynq平颱設計方法概述。
(2) AMBA協定規範,包括:AMBA規範概述、AMBA APB規範、AMBAAHB規範和AMBA AXI4規範。
2.Zynq-7000體係結構篇,詳細介紹瞭Zynq-7000內的處理器係統、可程式設計邏輯係統、互聯結構和外設模組等,共包含9個章節的內容:
(1)Zynq-7000應用處理單元,包括:應用處理單元概述、Cortex-A9處理器、偵聽控製單元、L2快取記憶體、片上存儲、APU介麵、APU內的TrustZone、應用處理單元重定、功耗考慮、係統位址分配、中斷、計時器和DMA控製器。
(2)可程式設計邏輯資源,包括:可程式設計邏輯資源概述和可程式設計邏輯資源功能。
(3)係統互連結構,包括:係統互連概述、服務品質、AXI_HP介麵、AXI_ACP介麵、AXI_GP介麵、AXI信號總結和PL介麵選擇。
(4)係統公共資源特性及功能,包括:時鍾子係統和重定子係統。
(5)Zynq調試和測試子係統,包括:JTAG和DAP子係統、CoreSight係統及功能。
(6)Zynq平颱的啓動和配置,包括:概述、外部啓動要求、BootROM和器件配置介麵。
(7) Zynq平颱主要外設模組,包括:DDR記憶體控製器、靜態記憶體控製器、四-SPIFlash控製器、SD/SDIO外設控製器、通用輸入輸齣控製器、USB主、設備和OTG控製器、吉比特乙太網控製器、SPI控製器、CAN控製器、UART控製器、I2C控製器、ADC轉換器介麵和PCI-E介麵。
(8)Zynq平颱描述規範,包括:Zynq平颱檔描述規範概述、微處理器硬體規範、微控製器外設規範、外設分析命令、黑盒定義、微處理器軟體規範、微處理器庫定義、微處理器驅動定義和Xilinx闆描述格式。
(9)高級綜閤工具HLS概述,包括:高級綜閤工具概述、高級綜閤工具調度和綁定、VivadoHLS工具的優勢、C代碼的關鍵屬性和HLS內提供的用於時鍾測量的術語。
3.Zynq-7000設計實戰篇,詳細介紹瞭基於Zynq全可程式設計平颱的不同設計實例,共包含12個章節的內容:
(1)使用BSP嚮導生成Zynq基本係統。包括:使用BSB嚮導生成Zynq基本係統、生成和運行記憶體測試工程及生成和運行外設測試工程。
(2)添加AXIIP到設計。包括:設計原理、添加IP到係統設計、使用SDK設計和實現應用工程。
(3)基於定製IP實現簡單嵌入式係統設計。包括:創建設計工程、定製GPIOIP核、添加和連接AXI外設、添加約束到用於約束檔、使用SDK設計和實現應用工程。
(4)基於定製IP實現復雜嵌入式係統設計。包括:設計原理、創建設計工程、定製VGAIP核、定製移位暫存器IP核、添加和連接VGA IP核、添加和連接shifterIP核、添加約束到用戶約束檔、使用SDK設計和實現應用工程。
(5)軟體和硬體協同調試係統。包括:復製並打開設計工程、例化AXIChipscope核、導入硬體設計到SDK工具、啓動ChipScope Pro硬體調試器工具、執行H/S驗證。
(6)Zynq平颱配置和啓動的實現。包括:生成SD卡鏡像檔並啓動、生成QSPIFlash鏡像並啓動。
(7)基於Zynq HP從埠的資料傳輸實現。包括:設計原理、創建設計工程、添加並配置AXICDMA到設計、使用SDK設計和實現應用工程。
(8)基於ZynqACP從埠資料傳輸實現。包括:設計原理、創建設計工程、配置PS埠、添加並連接IP到設計、使用SDK設計和實現應用工程。
(9)XADC在Zynq平颱上的應用。包括:設計原理、創建設計工程、添加XADCIP到設計、使用SDK設計和實現應用工程。
(10)Ubuntu作業係統在Zynq平颱上實現。包括:Ubuntu作業係統環境搭建、u-boot原理及實現、內核概述及編譯、設備樹原理及實現、檔案係統原理及實現、打開設計工程、使用SDK設計生成軟體工程、驗證Ubuntu係統的運行。
(11)?C/OS-III作業係統在Zynq平颱上的實現。包括:?C/OS-III作業係統概述、?C/OS-III作業係統環境構建、創建設計工程、建立?C/OS-III作業係統的軟體應用工程、運行外設測試工程、相關檔目錄功能、基於?C/OS-III作業係統的關鍵工程檔分析。
(12)HLS在Zynq嵌入式係統設計的應用。包括:設計原理、基於HLS生成FIR濾波器、創建處理器係統、使用SDK設計和實現應用工程。
在本書所包含這些設計實例代錶著Zynq的一個應用的方嚮,在介紹這些設計實例的過程中,貫穿瞭很多重要的設計方法和設計思路,這些設計方法和設計思路比設計案例本身更加重要。為瞭便於讀者的學習,本書還配套瞭光碟,光碟上提供瞭相關設計的完整工程及相關代碼,以及教學課件等設計資源。
在本書的編寫過程中,得到瞭大量的幫助。感謝彭勃、李寶隆、孫丹陽同學,他們分彆幫助驗證瞭本書實驗部分案例的驗證,以及完成瞭書中一部分錶格和插圖的繪製工作。中科院南京天文光學技術研究所的陸啓帥參與本書實驗部分第9章、第10章內容的編寫。還要感謝Xilinx大學閤作計畫、ARM大學閤作計畫、美國Digilent公司、美國Avent公司和北京麥剋泰軟體技術有限公司在軟體和硬體平颱方麵給予的大力支持和幫助。最後,也要對清華大學齣版社的編輯和領導的辛勤工作錶示感謝。正是由於他們的支援和幫助,使得作者能在短時間內高品質的完成該書的編寫和校對工作。
雖然作者花費瞭大量的精力和時間用於該書的編寫,但是由於作者的能力有限,書中一定會存在不足之處。在此,也懇請廣大讀者、同仁對本書提齣寶貴的修改意見。
何賓