加入星計劃,您可以享受以下權(quán)益:

  • 創(chuàng)作內(nèi)容快速變現(xiàn)
  • 行業(yè)影響力擴散
  • 作品版權(quán)保護
  • 300W+ 專業(yè)用戶
  • 1.5W+ 優(yōu)質(zhì)創(chuàng)作者
  • 5000+ 長期合作伙伴
立即加入
  • 正文
  • 相關(guān)推薦
  • 電子產(chǎn)業(yè)圖譜
申請入駐 產(chǎn)業(yè)圖譜

基于PYNQ和機器學習探索MPSOC-讀書筆記(開篇)

11/08 09:55
704
閱讀需 21 分鐘
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點資訊討論

引言:《Exploring Zynq MPSoC With PYNQ and Machine Learning Applications》是當年Zynq Book(ZYNQ-7000)的升級版本,在新版本中,不僅僅介紹了MPSOC的體系結(jié)構(gòu)和應(yīng)用場景,更是結(jié)合當前應(yīng)用最廣的PYNQ框架和機器學習應(yīng)用進行分析。作為一本不可多得的免費電子英文書籍,本書既是使用Zynq
MPSoC的開發(fā)人員的實用指南,同樣也是希望熟悉器件及其相關(guān)設(shè)計方法的技術(shù)人員的有效參考資料。

前? 言

Zynq MPSoC(多處理器片上系統(tǒng))是Xilinx公司推出的第二代SoC系列產(chǎn)品,集成了復雜的處理系統(tǒng),包括ARM Cortex-A53應(yīng)用程序處理器和ARM Cortex-R5實時處理器,以及FPGA可編程邏輯。

來自蘇格蘭斯特拉斯克萊德大學(University of Strathclyde)的Louise Crockett團隊基于這一平臺的軟件硬件結(jié)構(gòu),撰寫了Exploring Zynq MPSoC: With PYNQ and Machine Learning Applications,綜合且全面地介紹了軟件堆棧、多處理器處理系統(tǒng)以及可編程硬件陣列等問題。本書既是使用Zynq MPSoC的開發(fā)人員的實用指南,同樣也是希望熟悉器件及其相關(guān)設(shè)計方法的技術(shù)人員的有效參考。程序員可以學會如何使用簡單的軟件界面和框架來快速實現(xiàn)他們的機器學習算法,系統(tǒng)設(shè)計師可以利用它來獲取系統(tǒng)的最高性能。

《基于PYNQ和機器學習探索Zynq MPSoC》將帶領(lǐng)讀者了解軟件堆棧、多處理器處理系統(tǒng)和強大的可編程硬件陣列方面的重要內(nèi)容。MPSoC處理器系統(tǒng)最多配備四個ARM Cortex-A53處理器內(nèi)核和兩個ARM Cortex-R5實時處理器內(nèi)核。其FPGA結(jié)構(gòu)由強大的DSP Slices陣列和大量分布式RAM擴展而成。這種新架構(gòu)使處理器系統(tǒng)從當今新興人工智能應(yīng)用所需的復雜算術(shù)和數(shù)據(jù)移動中解放出來。這本書特別關(guān)注軟件堆棧和編程工具的闡述,有專門的一章專門介紹PYNQ編程環(huán)境。

PYNQ是Xilinx的一個開源項目,可以輕松地在Zynq平臺上設(shè)計嵌入式系統(tǒng)。使用Python語言和庫,設(shè)計者可以利用可編程邏輯和ARM微處理器的優(yōu)勢來構(gòu)建更強大、更令人興奮的嵌入式系統(tǒng)。本書的E部分討論了Zynq MPSoC平臺上許多應(yīng)用程序的實現(xiàn)。這包括對用于有效實現(xiàn)神經(jīng)網(wǎng)絡(luò)的FINN-R開源框架的詳細討論。

第一章? 簡 介

接下來將全面介紹Zynq MPSoC器件,它是Xilinx的一種片上集成系統(tǒng)(SoC)器件,它繼承了其前身Zynq-7000的眾多特性。

術(shù)語MPSoC反映了其是一種多處理器片上系統(tǒng),它包括許多不同的處理單元,每個處理單元都針對特定目的進行了優(yōu)化。例如,應(yīng)用處理器、實時處理器和圖形處理器,以及現(xiàn)場可編程門陣列(FPGA)可編程邏輯。該器件的組成將在后面的章節(jié)中詳細介紹,但就目前而言,我們可以簡單地認為Zynq MPSoC為工作提供了各種最佳資源!

圖2:Zynq UltraScale+ EV內(nèi)部框圖

除了Zynq MPSoC體系結(jié)構(gòu)之外,設(shè)計方法和軟件工具也非常重要。適當?shù)脑O(shè)計方法可以充分利用Zynq MPSoC的組件來解決實際設(shè)計問題。與以前的器件相比,隨著處理組件的擴展,設(shè)計師能夠利用Zynq MPSoC同時在系統(tǒng)性能、可靠性、成本、功耗、安全性、上市時間等方面實現(xiàn)預期結(jié)果以及適用的任何其他約束。因此,本書重要的一個方面是概述系統(tǒng)開發(fā),包括部署在處理核上的設(shè)計工具和操作系統(tǒng)。

我們在Xilinx SDx工具中包含了一個特定功能,它使系統(tǒng)能夠完全使用軟件代碼進行描述,然后在各種可用的處理元素之間進行分區(qū)(在用戶指導下)。SDx中的SD代表軟件定義,如將在后面的章節(jié)中進一步討論的,基于軟件的設(shè)計正成為可編程設(shè)備越來越強大的設(shè)計方法。Zynq MPSoC器件的應(yīng)用多種多樣,根據(jù)Zynq-7000的先前經(jīng)驗和Zynq MPC提供的擴展組件,Zynq MPSoC在高級駕駛員輔助系統(tǒng)(ADAS)、計算機視覺、大數(shù)據(jù)分析、軟件無線電(SDR)以及高價值監(jiān)控和自動化(工業(yè)物聯(lián)網(wǎng),IoT)等領(lǐng)域廣泛應(yīng)用。

1.為什么我應(yīng)該感興趣?

傳統(tǒng)上,半導體器件市場包括多個領(lǐng)域,包括邏輯(固定和可編程)、存儲器、微處理器、光學、模擬、分立元件、微控制器、傳感器系統(tǒng)和專用數(shù)字信號處理器。2017年,全球半導體市場總價值為4122億美元,為有史以來的最高水平,與前一年相比增長了20%以上。半導體器件可以實現(xiàn)從兒童玩具到筆記本電腦、核電站控制系統(tǒng)、國際空間站的一切功能。簡而言之,我們離不開他們!

近年來,系統(tǒng)集成已成為一個備受關(guān)注的領(lǐng)域。簡單來說,為什么要制作系統(tǒng)所需的各種組件,然后將它們連接在一起?設(shè)計將所需資源組合到單個芯片中的器件會更好嗎?由此我們提出了片上系統(tǒng)(SoC)的思想。

參考上面確定的半導體類別,請注意,Zynq和Zynq MPSoC等SoC包括可編程邏輯、微處理器和存儲器,這些是嵌入式系統(tǒng)中通常需要的主要組件。事實上,這些器件還包括一些模擬電路,以及支持數(shù)字信號處理(DSP)應(yīng)用的算術(shù)引擎,類似于DSP處理器提供的功能。如圖下圖所示,Zynq MPSoC是由一個處理系統(tǒng)(PS)與FPGA可編程邏輯(PL)耦合組成的器件。這兩個部分通過許多高級可擴展接口(AXI)接口互聯(lián)。這種高級結(jié)構(gòu)與Zynq-7000芯片非常相似。

圖3:Zynq MPSoC架構(gòu)的簡化圖

與Zynq相比,主要的區(qū)別在于,Zynq MPSoC擴展了PS中處理器的種類和數(shù)量以及FPGA PL部分的大小,以及增加PS和PL之間AXI連接的數(shù)量和帶寬,使集成更進一步。當然還有許多其他增強功能(稍后將詳細介紹)。

圖4:Zynq系列家族核心資源對比

對SoC的需求在一定程度上是由在快速發(fā)展的應(yīng)用領(lǐng)域需要實現(xiàn)快速上市的動機驅(qū)動的。其他因素包括將組件集成到系統(tǒng)中所需的工程工作量減少、物理尺寸最小化以及功耗降低。另一方面,由于軟件設(shè)計工具和方法的發(fā)展,這些相對復雜的SoC設(shè)備必須能夠設(shè)計系統(tǒng),而且其易用性也在不斷提高。Xilinx及其合作伙伴支持各種設(shè)計輸入方法和語言,并繼續(xù)引入新功能以實現(xiàn)快速開發(fā)及快速評估不同實施方案。

如果你是一名工程師,目前正在使用FPGA等可編程邏輯設(shè)備,或基于處理器的嵌入式系統(tǒng),那么SoC的增長很可能很快就會與你相關(guān)。值得將SoC設(shè)計添加到你的技能中,或者至少閱讀本書的其余部分,了解更多關(guān)于它的信息!如果你是一名學生,那么同樣地,獲得SoC技能對你未來的職業(yè)生涯非常有用。最后,如果你是一個愛好者,那么用SoC創(chuàng)建酷炫系統(tǒng)的可能性幾乎是無限的!即使承認了通常的學術(shù)和商業(yè)壓力,這無疑也吸引了學生和專業(yè)人士。

2.Xilinx SoCs的演變簡述

Xilinx傳統(tǒng)上是一家可編程邏輯公司,專門從事FPGA技術(shù)和復雜可編程邏輯器件(CPLDs,可以被認為是FPGA的一個不那么復雜的版本)設(shè)計。自2011年推出Zynq-7000以來,在向SoC邁進的過程中,Xilinx Soc還集成了其他構(gòu)建塊,因此Xilinx現(xiàn)在生產(chǎn)的器件不僅由可編程邏輯組成,而且是與處理器、存儲器、接口等相結(jié)合的可編程邏輯。

自從三十多年前Xilinx發(fā)明了FPGA,尤其是在最近的時代,人們對創(chuàng)建基于FPGA的靈活嵌入式系統(tǒng)產(chǎn)生了興趣,可以使用FPGA的通用可編程邏輯(而不是使用專用處理器芯片)創(chuàng)建可用的“軟”處理器。以這種方式實現(xiàn)嵌入式系統(tǒng)仍然有效,并且具有相當大的靈活性,但在處理器的性能方面受到限制。在某些情況下,應(yīng)用程序會要求將一個單獨的處理器芯片集成到系統(tǒng)中,并與FPGA進行適當?shù)慕涌谶B接。

這導致了Zynq-7000芯片在2010年代初開發(fā)時,便將FPGA的可編程邏輯與專用“硬”處理器內(nèi)置于專用硅中,并提供了兩部分之間的快速交互。此時的處理器是雙核Arm Cortex-A9(“A”表示應(yīng)用處理器),與智能手機中的處理器類型相同。與之前采用的“軟”處理器方法相比,該器件提供了增強處理器能力的優(yōu)勢,這意味著一個完整的系統(tǒng)可以在單個芯片上實現(xiàn)。

3.設(shè)計方法

一個至關(guān)重要的問題是我們?nèi)绾卫眠@些復雜的SoC芯片創(chuàng)建系統(tǒng)?實際上,有多種方法可供選擇,反映了SoC系統(tǒng)的組成、電子設(shè)計自動化(EDA)工具的復雜演變以及支持的各種應(yīng)用。賽靈思和第三方軟件合作伙伴不斷突破極限,使SoC系統(tǒng)的設(shè)計盡可能快速、簡單和可靠。

我們將在第4章中對設(shè)計方法和流程進行詳細討論,但同時,值得簡單概述的是,SoC系統(tǒng)將包括(i)硬件設(shè)計和(ii)軟件設(shè)計(由于其分層組成,軟件設(shè)計通常被稱為“堆?!保?。硬件設(shè)計被映射到SoC器件上可用的物理資源,而軟件在系統(tǒng)內(nèi)部署的一個或多個處理器上運行。

圖5:使用Zynq MPSoC的簡化設(shè)計流程(左:傳統(tǒng)的“硬件/軟件”設(shè)計流程;右:使用SDx的“軟件定義”設(shè)計工具)

考慮到這些基本差異,通常分別使用專用工具設(shè)計硬件和軟件系統(tǒng)。這種“硬件和軟件”方法如圖5的左側(cè)所示(細節(jié)暫時抽象)。在這個設(shè)計流程中,硬件和軟件開發(fā)在很大程度上可以獨立進行,然后是集成階段,而不是一個階段依賴于另一個階段的完成。工程師使用他們選擇的工具生成硬件系統(tǒng)的元素,使用Xilinx Vivado開發(fā)環(huán)境進行系統(tǒng)集成并在目標器件上實現(xiàn)。軟件開發(fā)人員可以使用Xilinx軟件開發(fā)工具包(SDK),也可以選擇自己喜歡的開發(fā)環(huán)境。一種可能的變體是在第三方工具中開發(fā),該工具“隱藏”地利用Xilinx工具,但即便如此,同樣的高級方法仍然適用。

最近,有一個相當大的轉(zhuǎn)變,即以軟件為導向,硬件/軟件協(xié)同設(shè)計。簡單地說,這些工具允許使用軟件代碼或基于模塊的設(shè)計方法,在高抽象級別上描述整個系統(tǒng)的功能。然后,在設(shè)計者的指導下,考慮到可用資源的能力,在SoC的硬件和軟件元素之間劃分功能,工具可以快速生成不同的排列,而且軟件和硬件中實現(xiàn)的元素之間的所有接口都是自動處理的。這種“共同設(shè)計”方法如圖5右側(cè)所示,反映了本章前面提到的Xilinx SDx工具的流程。

我們將在第4章中更詳細地討論設(shè)計方法,包括填寫圖5中概述的設(shè)計流程的細節(jié)。SDx將是本書D部分深入回顧的主題。

4.如何使用本書

本書旨在介紹Zynq MPSoC設(shè)備以及相關(guān)的設(shè)計方法、工具和應(yīng)用程序。希望讀者發(fā)現(xiàn)它可讀性和可訪問性很強。然而,這本書不可能成為所有問題的答案——請記住,該器件由Xilinx出版的1000多頁技術(shù)文獻支持,這是尋找細節(jié)的地方!

盡可能地,我們試圖在不假設(shè)太多先驗知識的情況下解決技術(shù)問題,盡管不可避免地,由于Zynq MPSoC是一個先進的集成系統(tǒng),因此背景材料會對許多主題有益。在適當?shù)牡胤酵怀鲲@示有用的支持材料。

4.1書籍的組織

本書分為五個部分,概述如下。每一部分都由不同主題的多個章節(jié)組成,這些章節(jié)共同代表了本書的一個主題。

?A部分:了解Zynq MPSoC——本書的這一部分介紹了該器件,概述了其架構(gòu),并回顧了設(shè)計方法和候選應(yīng)用領(lǐng)域。A部分的抽象水平略高于本書的其余部分,可能特別適合技術(shù)經(jīng)理和其他希望在Zynq MPSoC的基礎(chǔ)上建立大綱而不必深入研究細節(jié)的人!

?B部分:Zynq MPSoC體系結(jié)構(gòu)詳細介紹——B部分擴展了A部分的體系結(jié)構(gòu)概述,其中有一系列專門的章節(jié)涵蓋了設(shè)備體系結(jié)構(gòu)的不同方面。其中包括分別關(guān)于應(yīng)用程序和實時處理系統(tǒng)以及安全、安全和電源管理設(shè)施的章節(jié)。

?C部分:Zynq MPSoC系統(tǒng)開發(fā)——在C部分中,重點是在Zynq MPC上開發(fā)系統(tǒng)設(shè)計的方法和工具。這里我們介紹硬件系統(tǒng)開發(fā),以及軟件堆棧和常見配置的概念。接下來的章節(jié)重點介紹多處理器開發(fā)和系統(tǒng)引導。

?D部分:Xilinx SDx開發(fā)環(huán)境下的系統(tǒng)設(shè)計——本書的第四部分深入探討了基于Xilinx SDx開發(fā)環(huán)境的軟件定義設(shè)計流程。

?E部分:展望——本書的最后一個簡短部分著眼于更廣泛的視角,包括SoC“生態(tài)系統(tǒng)”,它代表了Zynq MPSoC系統(tǒng)設(shè)計中可以利用的IP、設(shè)計工具、硬件開發(fā)板和其他可用資源的范圍。我們還考慮了一些基于先前發(fā)表的針對Zynq-7000 SoC的工作的學術(shù)案例研究。

4.2進一步的信息來源

在每一章的結(jié)尾,你會發(fā)現(xiàn)一份可能對進一步閱讀有用的參考文獻列表,并提供了網(wǎng)絡(luò)鏈接以方便閱讀(當然,請注意,這些內(nèi)容可能會更改?。?。這些信息來源多種多樣,包括Xilinx在線發(fā)布的許多參考手冊、教程和其他技術(shù)文獻,這些都是特別有價值和權(quán)威的信息來源。它們提供了支持設(shè)計項目所需的深層技術(shù)細節(jié)。您可以通過以下URL訪問Xilinx支持門戶,從中可以獲得文檔和其他有用的資源:

還要注意的是,特別重要的網(wǎng)絡(luò)鏈接偶爾會在本章的主要流程中突出顯示(如上所述),而不是通過章節(jié)末尾的參考。

同樣值得強調(diào)的是,這本書沿用了我們之前的標題《Zynq book》,該書涉及之前發(fā)布的Xilinx SoC設(shè)備Zynq-7000 SoC。您可能會發(fā)現(xiàn)參考《Zynk book》了解一般背景、介紹性示例和某些主題的擴展信息很有用;例如,Vivado HLS(高級合成)設(shè)計工具在Zynq書中進行了廣泛討論,而我們在本書中不重復該材料。相反,本書以Xilinx最新的設(shè)計工具SDx為特色,該工具使用基于軟件的設(shè)計入門方法實現(xiàn)硬件/軟件協(xié)同設(shè)計。順便說一句,SDx利用了Vivado HLS的功能。

4.3對初學者的建議

如果你認為自己是SoC設(shè)計的初學者,那么值得一讀《Zynq書》(在最后一節(jié)中提到),其中包括一些關(guān)于SoC原理和其他相關(guān)背景的介紹材料(從“什么是SoC?”開始)。特別是考慮到《Zynq書》是免費下載的,我們盡量不要在這里重復同樣的材料。

盡管Zynq MPSoC系統(tǒng)可以使用各種操作系統(tǒng)開發(fā),但預計大多數(shù)設(shè)計都將以Linux為特色,因此使用Linux開發(fā)嵌入式系統(tǒng)是一個需要注意的重要主題。提供對嵌入式Linux的全面處理超出了本書的范圍,但幸運的是,已經(jīng)有一些非常好的書可用,例如[1]。

如果你想加強你在計算機體系結(jié)構(gòu)和一般操作原理方面的背景知識,那么[2]也是一本有用的書。

5.后續(xù)

接下來,我們進入A部分——了解Zynq MPSoC。本大章節(jié)會進一步介紹MPSoC,包括設(shè)備架構(gòu)的概述,以及創(chuàng)建MPSoC系統(tǒng)所需的設(shè)計過程和工具,最后討論應(yīng)用領(lǐ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.

相關(guān)推薦

電子產(chǎn)業(yè)圖譜

專注FPGA技術(shù)開發(fā),涉及Intel FPGA、Xilinx FPGA技術(shù)開發(fā),開發(fā)環(huán)境使用,代碼風格、時序收斂、器件架構(gòu)以及軟硬件項目實戰(zhàn)開發(fā),個人公眾號:FPGA技術(shù)實戰(zhàn)。