序
本書是作者耗時半年多時間後,獻給廣大讀者的又一本反映最新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公司和北京麥克泰軟體技術有限公司在軟體和硬體平臺方面給予的大力支持和幫助。最後,也要對清華大學出版社的編輯和領導的辛勤工作表示感謝。正是由於他們的支援和幫助,使得作者能在短時間內高品質的完成該書的編寫和校對工作。
雖然作者花費了大量的精力和時間用於該書的編寫,但是由於作者的能力有限,書中一定會存在不足之處。在此,也懇請廣大讀者、同仁對本書提出寶貴的修改意見。
何賓