手把手課堂:FPGA 101 將SoC平臺設(shè)計與DSP系統(tǒng)生成器相集成 作者:Daniel E. Michek,賽靈思公司系統(tǒng)級產(chǎn)品營銷高級經(jīng)理,daniel.michek@xilinx.com Vivado系統(tǒng)生成器工具能方便地接入平臺設(shè)計,從而可充分利用開發(fā)板接口和處理系統(tǒng)。 FPGA的應(yīng)用不斷拓展,同時FPGA設(shè)計流程也隨之不斷演進。我們不再將FPGA用作簡單的膠合邏輯,甚至不再作為信號處理鏈的核心,用以將IP與專有后端接口集成。相反,F(xiàn)PGA正在轉(zhuǎn)變?yōu)榭删幊唐舷到y(tǒng),其中包含作為處理器外設(shè)的硬件以及在強大APU上運行的高級軟件。這種架構(gòu)就是我們所說的賽靈思全可編程SoC。 為了充分發(fā)揮這種全新流程的優(yōu)勢,我們需要將設(shè)計方法從FPGA早期的自上而下RTL轉(zhuǎn)變?yōu)橐訧P開發(fā)和標(biāo)準(zhǔn)化連接(例如ARM的高級可擴展接口 (AXI))為中心的自下而上流程。隨著接口從定制接口發(fā)展為通用接口,我們就可以花更少的精力來驗證數(shù)據(jù)路徑與平臺設(shè)計之間的交互。 賽靈思DSP系統(tǒng)生成器(System Generator for DSP)同樣也得到了發(fā)展。該工具是Vivado®設(shè)計套件的一部分,其通過將DSP數(shù)據(jù)路徑整合到用Vivado IP Integrator工具構(gòu)建的平臺設(shè)計中,打造出全新的自下而上設(shè)計方法。我們仔細看看系統(tǒng)生成器(System Generator)實現(xiàn)的設(shè)計自動化如何幫助高性能設(shè)計充分利用平臺連接功能。 構(gòu)建全可編程平臺框架 通過定義用來存放數(shù)據(jù)路徑的平臺框架,我們可以啟動全新的設(shè)計流程。Vivado工具套件能識別開發(fā)板;我們將利用開發(fā)板自動化功能構(gòu)建新的平臺設(shè)計。 如圖1所示,平臺設(shè)計或平臺框架的基本組成包括:處理器級和開發(fā)板級接口,以及將其組合在一起的邏輯。我們將平臺框架作為系統(tǒng)級設(shè)計的基礎(chǔ)(即外殼),這給我們的數(shù)據(jù)路徑提供了空間。模塊和連接功能自動化通過IP外設(shè)將處理系統(tǒng)連接到板級接口。封裝在IP Catalog中的DSP數(shù)據(jù)路徑或軟件加速器利用賽靈思Designer Assistance自動化功能方便地連接到我們的處理器平臺框架中,進而連接到外部器件接口。 創(chuàng)建作為可輸入IP的數(shù)據(jù)路徑 我們的最終目標(biāo)是讓數(shù)據(jù)路徑能進入全可編程平臺框架。如果要從頭開始,我們可以用標(biāo)準(zhǔn)化接口創(chuàng)建數(shù)據(jù)路徑。如圖2所示,只需將網(wǎng)關(guān)端口迅速標(biāo)記為AXI4-Lite接口,或者對端口進行命名以匹配標(biāo)準(zhǔn)連接(如Simulink®圖上的AXI4-Stream),這樣,System Generator為Vivado IP Catalog打包設(shè)計時就會為設(shè)計添加額外邏輯并將通用信號收集到接口內(nèi)。 不過,我們利用一種新設(shè)計方法,使用平臺框架定制一個可集成到全可編程設(shè)計的插件。我們使用自動化功能確定平臺設(shè)計中現(xiàn)有哪些接口,哪些接口與開發(fā)板關(guān)聯(lián),以及哪些接口可為DSP數(shù)據(jù)路徑創(chuàng)建插件。既然我們的目標(biāo)是將數(shù)據(jù)路徑轉(zhuǎn)換為可連接至平臺框架的IP,因此我們不需要關(guān)注板級接口,而是關(guān)注標(biāo)準(zhǔn)化AXI接口。開發(fā)板上的每個不關(guān)聯(lián)接口轉(zhuǎn)變?yōu)镾ystem Generator網(wǎng)關(guān)。這些網(wǎng)關(guān)在System Generator中充當(dāng)簡單信號,當(dāng)我們將平臺設(shè)計導(dǎo)出到IP Catalog時,這些網(wǎng)關(guān)會生成用以連接平臺設(shè)計的AXI 接口。 ![]() 圖1 –將處理系統(tǒng)連接到板級接口的平臺框架實例 如實例所示,AXI4-Lite接口創(chuàng)建獨立的讀/寫信號,在導(dǎo)出到Vivado工具套件時共享通用的可尋址寄存器接口。簡單的復(fù)制-粘貼使我們在地址偏移位置通過相同接口獲得更多用于處理器的直接寄存器。同時,我們可自動生成軟件驅(qū)動API以讀/寫寄存器。 ![]() 圖2 – 自動將網(wǎng)關(guān)導(dǎo)入AXI4-Lite和AXI4-Stream接口 ![]() 圖3 – 將DSP數(shù)據(jù)路徑連接到平臺框架的平臺系統(tǒng) 如果平臺設(shè)計中提供AXI4-Stream接口,System Generator會向模型添加正確匹配的網(wǎng)關(guān)。AXI4- Stream接口極其靈活并包含很多信號。ACLK時鐘源與該接口相關(guān)聯(lián),但該信號直接作為這部分?jǐn)?shù)據(jù)路徑的抽象系統(tǒng)時鐘。TVALID信號表示接口有效。其他信號為可選信號。System Generator會將初始流接口中的信號添加到我們的模型,不過我們可以通過刪除或添加信號來滿足內(nèi)部要求。 在圖2所示的模型中,我們的數(shù)據(jù)路徑只關(guān)心TDATA(經(jīng)接口發(fā)送的數(shù)據(jù))和S_AXIS接口上的TVALID。為刪除不必要的信號,我們針對該模型對沒用的網(wǎng)關(guān)添加注釋,因為默認值將會驅(qū)動IP Integrator中的信號連接。 AXI4-Lite和AXI4-Stream信號能利用自下而上方法輕松進行仿真和驗證。AXI4-Lite接口建模為用于訪問大量Simulink模塊的簡單網(wǎng)關(guān),實現(xiàn)網(wǎng)關(guān)一側(cè)到另一側(cè)數(shù)據(jù)傳送的抽象。同樣,AXI4-Stream接口只是一系列遵循簡單握手規(guī)則的信號,以將數(shù)據(jù)從一個IP核傳遞到另一個。 仿真建模的唯一挑戰(zhàn)在于接口上所用的可選端口。如果我們每個周期都接收數(shù)據(jù)并通過數(shù)據(jù)路徑無中斷地進行處理,我們就不需要TREADY握手信號。簡化模型通過TDATA 網(wǎng)關(guān)將矢量的每個元素從Simulink的信號發(fā)送到Workspace令牌。當(dāng)需要完整握手時,我們用AXI4-Stream FIFO進行建模以緩沖數(shù)據(jù),如圖2中的M_AXIS接口所示。 這種定制的自動化功能可作為創(chuàng)建連接平臺框架的IP的起點。不過,System Generator很靈活,允許我們添加或刪除部分甚至整個AXI接口。最終可將數(shù)據(jù)路徑轉(zhuǎn)換為可在多個系統(tǒng)級設(shè)計中重用的IP。 添加邏輯后,最后一步是將使用DSP系統(tǒng)生成器構(gòu)建的數(shù)據(jù)路徑導(dǎo)出到Vivado IP Catalog。這種操作能實現(xiàn)接口的簡單連接,無論使用RTL還是在IP Integrator中都是如此。此外,我們還生成在SDK中使用的驅(qū)動器,并將具有最佳測試向量數(shù)據(jù)的仿真模型連接到IP。由于我們在創(chuàng)建DSP數(shù)據(jù)路徑時事先知道平臺框架的情況,因此能自動組合模型和平臺設(shè)計,如圖3中的完整系統(tǒng)所示。 降低仿真風(fēng)險 生成包含硬件加速器、DSP數(shù)據(jù)路徑或定制邏輯的完整片上系統(tǒng)很具有挑戰(zhàn)性。采用自下而上方式進行仿真以確定數(shù)據(jù)路徑按預(yù)期工作,這種方法風(fēng)險很大,而且維持可支持?jǐn)?shù)據(jù)路徑的平臺接口帶寬同樣很困難。 我們通過使用標(biāo)準(zhǔn)化接口開發(fā)能降低仿真風(fēng)險的IP。這是因為接口級的交互被抽象化,使我們專注于驗證內(nèi)部數(shù)據(jù)路徑。最后,通過利用開發(fā)板、模塊和連接的智能自動化功能,我們可生成基于平臺的系統(tǒng),從而滿足我們的需求并集成自定義數(shù)據(jù)路徑。 如需了解有關(guān)DSP系統(tǒng)生成器的更多詳情,敬請訪問china.xilinx. com/products/design-toolsvivado/ integration/sysgen.html。如果您有任何問題或意見,請致電電話 (858) 207-5213,或發(fā)送電子郵件至daniel.michek@xilinx.com,聯(lián)系作者Daniel Michek。 |