引言:《Exploring Zynq MPSoC With PYNQ and Machine Learning Applications》是當年Zynq Book(ZYNQ-7000)的升級版本,在新版本中,不僅僅介紹了MPSOC的體系結構和應用場景,更是結合當前應用最廣的PYNQ框架和機器學習應用進行分析。作為一本不可多得的免費電子英文書籍,本書既是使用Zynq
MPSoC的開發(fā)人員的實用指南,同樣也是希望熟悉器件及其相關設計方法的技術人員的有效參考資料。
前? 言
Zynq MPSoC(多處理器片上系統(tǒng))是Xilinx公司推出的第二代SoC系列產品,集成了復雜的處理系統(tǒng),包括ARM Cortex-A53應用程序處理器和ARM Cortex-R5實時處理器,以及FPGA可編程邏輯。
來自蘇格蘭斯特拉斯克萊德大學(University of Strathclyde)的Louise Crockett團隊基于這一平臺的軟件和硬件結構,撰寫了Exploring Zynq MPSoC: With PYNQ and Machine Learning Applications,綜合且全面地介紹了軟件堆棧、多處理器處理系統(tǒng)以及可編程硬件陣列等問題。本書既是使用Zynq MPSoC的開發(fā)人員的實用指南,同樣也是希望熟悉器件及其相關設計方法的技術人員的有效參考。程序員可以學會如何使用簡單的軟件界面和框架來快速實現他們的機器學習算法,系統(tǒng)設計師可以利用它來獲取系統(tǒng)的最高性能。
《基于PYNQ和機器學習探索Zynq MPSoC》將帶領讀者了解軟件堆棧、多處理器處理系統(tǒng)和強大的可編程硬件陣列方面的重要內容。MPSoC處理器系統(tǒng)最多配備四個ARM Cortex-A53處理器內核和兩個ARM Cortex-R5實時處理器內核。其FPGA結構由強大的DSP Slices陣列和大量分布式RAM擴展而成。這種新架構使處理器系統(tǒng)從當今新興人工智能應用所需的復雜算術和數據移動中解放出來。這本書特別關注軟件堆棧和編程工具的闡述,有專門的一章專門介紹PYNQ編程環(huán)境。
PYNQ是Xilinx的一個開源項目,可以輕松地在Zynq平臺上設計嵌入式系統(tǒng)。使用Python語言和庫,設計者可以利用可編程邏輯和ARM微處理器的優(yōu)勢來構建更強大、更令人興奮的嵌入式系統(tǒng)。本書的E部分討論了Zynq MPSoC平臺上許多應用程序的實現。這包括對用于有效實現神經網絡的FINN-R開源框架的詳細討論。
第一章? 簡 介
接下來將全面介紹Zynq MPSoC器件,它是Xilinx的一種片上集成系統(tǒng)(SoC)器件,它繼承了其前身Zynq-7000的眾多特性。
術語MPSoC反映了其是一種多處理器片上系統(tǒng),它包括許多不同的處理單元,每個處理單元都針對特定目的進行了優(yōu)化。例如,應用處理器、實時處理器和圖形處理器,以及現場可編程門陣列(FPGA)可編程邏輯。該器件的組成將在后面的章節(jié)中詳細介紹,但就目前而言,我們可以簡單地認為Zynq MPSoC為工作提供了各種最佳資源!
圖2:Zynq UltraScale+ EV內部框圖
除了Zynq MPSoC體系結構之外,設計方法和軟件工具也非常重要。適當的設計方法可以充分利用Zynq MPSoC的組件來解決實際設計問題。與以前的器件相比,隨著處理組件的擴展,設計師能夠利用Zynq MPSoC同時在系統(tǒng)性能、可靠性、成本、功耗、安全性、上市時間等方面實現預期結果以及適用的任何其他約束。因此,本書重要的一個方面是概述系統(tǒng)開發(fā),包括部署在處理核上的設計工具和操作系統(tǒng)。
我們在Xilinx SDx工具中包含了一個特定功能,它使系統(tǒng)能夠完全使用軟件代碼進行描述,然后在各種可用的處理元素之間進行分區(qū)(在用戶指導下)。SDx中的SD代表軟件定義,如將在后面的章節(jié)中進一步討論的,基于軟件的設計正成為可編程設備越來越強大的設計方法。Zynq MPSoC器件的應用多種多樣,根據Zynq-7000的先前經驗和Zynq MPC提供的擴展組件,Zynq MPSoC在高級駕駛員輔助系統(tǒng)(ADAS)、計算機視覺、大數據分析、軟件無線電(SDR)以及高價值監(jiān)控和自動化(工業(yè)物聯網,IoT)等領域廣泛應用。
1.為什么我應該感興趣?
傳統(tǒng)上,半導體器件市場包括多個領域,包括邏輯(固定和可編程)、存儲器、微處理器、光學、模擬、分立元件、微控制器、傳感器系統(tǒng)和專用數字信號處理器。2017年,全球半導體市場總價值為4122億美元,為有史以來的最高水平,與前一年相比增長了20%以上。半導體器件可以實現從兒童玩具到筆記本電腦、核電站控制系統(tǒng)、國際空間站的一切功能。簡而言之,我們離不開他們!
近年來,系統(tǒng)集成已成為一個備受關注的領域。簡單來說,為什么要制作系統(tǒng)所需的各種組件,然后將它們連接在一起?設計將所需資源組合到單個芯片中的器件會更好嗎?由此我們提出了片上系統(tǒng)(SoC)的思想。
參考上面確定的半導體類別,請注意,Zynq和Zynq MPSoC等SoC包括可編程邏輯、微處理器和存儲器,這些是嵌入式系統(tǒng)中通常需要的主要組件。事實上,這些器件還包括一些模擬電路,以及支持數字信號處理(DSP)應用的算術引擎,類似于DSP處理器提供的功能。如圖下圖所示,Zynq MPSoC是由一個處理系統(tǒng)(PS)與FPGA可編程邏輯(PL)耦合組成的器件。這兩個部分通過許多高級可擴展接口(AXI)接口互聯。這種高級結構與Zynq-7000芯片非常相似。
圖3:Zynq MPSoC架構的簡化圖
與Zynq相比,主要的區(qū)別在于,Zynq MPSoC擴展了PS中處理器的種類和數量以及FPGA PL部分的大小,以及增加PS和PL之間AXI連接的數量和帶寬,使集成更進一步。當然還有許多其他增強功能(稍后將詳細介紹)。
圖4:Zynq系列家族核心資源對比
對SoC的需求在一定程度上是由在快速發(fā)展的應用領域需要實現快速上市的動機驅動的。其他因素包括將組件集成到系統(tǒng)中所需的工程工作量減少、物理尺寸最小化以及功耗降低。另一方面,由于軟件設計工具和方法的發(fā)展,這些相對復雜的SoC設備必須能夠設計系統(tǒng),而且其易用性也在不斷提高。Xilinx及其合作伙伴支持各種設計輸入方法和語言,并繼續(xù)引入新功能以實現快速開發(fā)及快速評估不同實施方案。
如果你是一名工程師,目前正在使用FPGA等可編程邏輯設備,或基于處理器的嵌入式系統(tǒng),那么SoC的增長很可能很快就會與你相關。值得將SoC設計添加到你的技能中,或者至少閱讀本書的其余部分,了解更多關于它的信息!如果你是一名學生,那么同樣地,獲得SoC技能對你未來的職業(yè)生涯非常有用。最后,如果你是一個愛好者,那么用SoC創(chuàng)建酷炫系統(tǒng)的可能性幾乎是無限的!即使承認了通常的學術和商業(yè)壓力,這無疑也吸引了學生和專業(yè)人士。
2.Xilinx SoCs的演變簡述
Xilinx傳統(tǒng)上是一家可編程邏輯公司,專門從事FPGA技術和復雜可編程邏輯器件(CPLDs,可以被認為是FPGA的一個不那么復雜的版本)設計。自2011年推出Zynq-7000以來,在向SoC邁進的過程中,Xilinx Soc還集成了其他構建塊,因此Xilinx現在生產的器件不僅由可編程邏輯組成,而且是與處理器、存儲器、接口等相結合的可編程邏輯。
自從三十多年前Xilinx發(fā)明了FPGA,尤其是在最近的時代,人們對創(chuàng)建基于FPGA的靈活嵌入式系統(tǒng)產生了興趣,可以使用FPGA的通用可編程邏輯(而不是使用專用處理器芯片)創(chuàng)建可用的“軟”處理器。以這種方式實現嵌入式系統(tǒng)仍然有效,并且具有相當大的靈活性,但在處理器的性能方面受到限制。在某些情況下,應用程序會要求將一個單獨的處理器芯片集成到系統(tǒng)中,并與FPGA進行適當的接口連接。
這導致了Zynq-7000芯片在2010年代初開發(fā)時,便將FPGA的可編程邏輯與專用“硬”處理器內置于專用硅中,并提供了兩部分之間的快速交互。此時的處理器是雙核Arm Cortex-A9(“A”表示應用處理器),與智能手機中的處理器類型相同。與之前采用的“軟”處理器方法相比,該器件提供了增強處理器能力的優(yōu)勢,這意味著一個完整的系統(tǒng)可以在單個芯片上實現。
3.設計方法
一個至關重要的問題是我們如何利用這些復雜的SoC芯片創(chuàng)建系統(tǒng)?實際上,有多種方法可供選擇,反映了SoC系統(tǒng)的組成、電子設計自動化(EDA)工具的復雜演變以及支持的各種應用。賽靈思和第三方軟件合作伙伴不斷突破極限,使SoC系統(tǒng)的設計盡可能快速、簡單和可靠。
我們將在第4章中對設計方法和流程進行詳細討論,但同時,值得簡單概述的是,SoC系統(tǒng)將包括(i)硬件設計和(ii)軟件設計(由于其分層組成,軟件設計通常被稱為“堆棧”)。硬件設計被映射到SoC器件上可用的物理資源,而軟件在系統(tǒng)內部署的一個或多個處理器上運行。
圖5:使用Zynq MPSoC的簡化設計流程(左:傳統(tǒng)的“硬件/軟件”設計流程;右:使用SDx的“軟件定義”設計工具)
考慮到這些基本差異,通常分別使用專用工具設計硬件和軟件系統(tǒng)。這種“硬件和軟件”方法如圖5的左側所示(細節(jié)暫時抽象)。在這個設計流程中,硬件和軟件開發(fā)在很大程度上可以獨立進行,然后是集成階段,而不是一個階段依賴于另一個階段的完成。工程師使用他們選擇的工具生成硬件系統(tǒng)的元素,使用Xilinx Vivado開發(fā)環(huán)境進行系統(tǒng)集成并在目標器件上實現。軟件開發(fā)人員可以使用Xilinx軟件開發(fā)工具包(SDK),也可以選擇自己喜歡的開發(fā)環(huán)境。一種可能的變體是在第三方工具中開發(fā),該工具“隱藏”地利用Xilinx工具,但即便如此,同樣的高級方法仍然適用。
最近,有一個相當大的轉變,即以軟件為導向,硬件/軟件協同設計。簡單地說,這些工具允許使用軟件代碼或基于模塊的設計方法,在高抽象級別上描述整個系統(tǒng)的功能。然后,在設計者的指導下,考慮到可用資源的能力,在SoC的硬件和軟件元素之間劃分功能,工具可以快速生成不同的排列,而且軟件和硬件中實現的元素之間的所有接口都是自動處理的。這種“共同設計”方法如圖5右側所示,反映了本章前面提到的Xilinx SDx工具的流程。
我們將在第4章中更詳細地討論設計方法,包括填寫圖5中概述的設計流程的細節(jié)。SDx將是本書D部分深入回顧的主題。
4.如何使用本書
本書旨在介紹Zynq MPSoC設備以及相關的設計方法、工具和應用程序。希望讀者發(fā)現它可讀性和可訪問性很強。然而,這本書不可能成為所有問題的答案——請記住,該器件由Xilinx出版的1000多頁技術文獻支持,這是尋找細節(jié)的地方!
盡可能地,我們試圖在不假設太多先驗知識的情況下解決技術問題,盡管不可避免地,由于Zynq MPSoC是一個先進的集成系統(tǒng),因此背景材料會對許多主題有益。在適當的地方突出顯示有用的支持材料。
4.1書籍的組織
本書分為五個部分,概述如下。每一部分都由不同主題的多個章節(jié)組成,這些章節(jié)共同代表了本書的一個主題。
?A部分:了解Zynq MPSoC——本書的這一部分介紹了該器件,概述了其架構,并回顧了設計方法和候選應用領域。A部分的抽象水平略高于本書的其余部分,可能特別適合技術經理和其他希望在Zynq MPSoC的基礎上建立大綱而不必深入研究細節(jié)的人!
?B部分:Zynq MPSoC體系結構詳細介紹——B部分擴展了A部分的體系結構概述,其中有一系列專門的章節(jié)涵蓋了設備體系結構的不同方面。其中包括分別關于應用程序和實時處理系統(tǒng)以及安全、安全和電源管理設施的章節(jié)。
?C部分:Zynq MPSoC系統(tǒng)開發(fā)——在C部分中,重點是在Zynq MPC上開發(fā)系統(tǒng)設計的方法和工具。這里我們介紹硬件系統(tǒng)開發(fā),以及軟件堆棧和常見配置的概念。接下來的章節(jié)重點介紹多處理器開發(fā)和系統(tǒng)引導。
?D部分:Xilinx SDx開發(fā)環(huán)境下的系統(tǒng)設計——本書的第四部分深入探討了基于Xilinx SDx開發(fā)環(huán)境的軟件定義設計流程。
?E部分:展望——本書的最后一個簡短部分著眼于更廣泛的視角,包括SoC“生態(tài)系統(tǒng)”,它代表了Zynq MPSoC系統(tǒng)設計中可以利用的IP、設計工具、硬件開發(fā)板和其他可用資源的范圍。我們還考慮了一些基于先前發(fā)表的針對Zynq-7000 SoC的工作的學術案例研究。
4.2進一步的信息來源
在每一章的結尾,你會發(fā)現一份可能對進一步閱讀有用的參考文獻列表,并提供了網絡鏈接以方便閱讀(當然,請注意,這些內容可能會更改!)。這些信息來源多種多樣,包括Xilinx在線發(fā)布的許多參考手冊、教程和其他技術文獻,這些都是特別有價值和權威的信息來源。它們提供了支持設計項目所需的深層技術細節(jié)。您可以通過以下URL訪問Xilinx支持門戶,從中可以獲得文檔和其他有用的資源:
還要注意的是,特別重要的網絡鏈接偶爾會在本章的主要流程中突出顯示(如上所述),而不是通過章節(jié)末尾的參考。
同樣值得強調的是,這本書沿用了我們之前的標題《Zynq book》,該書涉及之前發(fā)布的Xilinx SoC設備Zynq-7000 SoC。您可能會發(fā)現參考《Zynk book》了解一般背景、介紹性示例和某些主題的擴展信息很有用;例如,Vivado HLS(高級合成)設計工具在Zynq書中進行了廣泛討論,而我們在本書中不重復該材料。相反,本書以Xilinx最新的設計工具SDx為特色,該工具使用基于軟件的設計入門方法實現硬件/軟件協同設計。順便說一句,SDx利用了Vivado HLS的功能。
4.3對初學者的建議
如果你認為自己是SoC設計的初學者,那么值得一讀《Zynq書》(在最后一節(jié)中提到),其中包括一些關于SoC原理和其他相關背景的介紹材料(從“什么是SoC?”開始)。特別是考慮到《Zynq書》是免費下載的,我們盡量不要在這里重復同樣的材料。
盡管Zynq MPSoC系統(tǒng)可以使用各種操作系統(tǒng)開發(fā),但預計大多數設計都將以Linux為特色,因此使用Linux開發(fā)嵌入式系統(tǒng)是一個需要注意的重要主題。提供對嵌入式Linux的全面處理超出了本書的范圍,但幸運的是,已經有一些非常好的書可用,例如[1]。
如果你想加強你在計算機體系結構和一般操作原理方面的背景知識,那么[2]也是一本有用的書。
5.后續(xù)
接下來,我們進入A部分——了解Zynq MPSoC。本大章節(jié)會進一步介紹MPSoC,包括設備架構的概述,以及創(chuàng)建MPSoC系統(tǒng)所需的設計過程和工具,最后討論應用領域。
6 參考資料
[1] Christopher Hallinan, Embedded Linux Primer: A Practical Real-World Approach, 2nd edition, Prentice Hall, 2011.
[2] David A. Patterson and John L. Hennessy, Computer Organization and Design: The Hardware Software Interface, ARM Edition,Morgan Kaufman, April 2016.