• 正文
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于PYNQ和機(jī)器學(xué)習(xí)探索MPSOC-讀書(shū)筆記(開(kāi)篇)

2024/11/08
2025
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

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

前? 言

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

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

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

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

第一章? 簡(jiǎn) 介

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

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

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

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

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

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

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

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

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

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

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

圖4:Zynq系列家族核心資源對(duì)比

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

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

2.Xilinx SoCs的演變簡(jiǎn)述

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

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

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

3.設(shè)計(jì)方法

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

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

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

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

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

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

4.如何使用本書(shū)

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

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

4.1書(shū)籍的組織

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

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

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

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

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

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

4.2進(jìn)一步的信息來(lái)源

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

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

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

4.3對(duì)初學(xué)者的建議

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

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

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

5.后續(xù)

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

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫(xiě)文章/發(fā)需求
立即登錄

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