《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 解決方案 > 標(biāo)準(zhǔn)測試:Vivado的 ESL功能可加速Zynq SoC上的IP設(shè)計(jì)

標(biāo)準(zhǔn)測試:Vivado的 ESL功能可加速Zynq SoC上的IP設(shè)計(jì)

2013-09-22
關(guān)鍵詞: 開發(fā)工具 Zynq SOC Vivado

Sébastien Fuhrmann,理學(xué)碩士
研發(fā)工程師
巴黎CNRS-ENSEA-UCP ETIS實(shí)驗(yàn)室(現(xiàn)就職于Elsys Design) se.fuhrmann@gmail.com

Bertrand Granado,博士
教授
巴黎CNRS-ENSEA-UCP ETIS實(shí)驗(yàn)室和UPMC LIP6 實(shí)驗(yàn)室 bertrand.granado@lip6.fr

采用自動(dòng)方法為兩種圖像處理IP核實(shí)現(xiàn)類似于手工RTL編碼的效果

FPGA被廣泛用作信號處理應(yīng)用中的原型設(shè)計(jì)或SoC實(shí)現(xiàn)工具。它們具備大規(guī)模并行處理功能、豐富的片上存儲器異構(gòu)模塊以及DSP構(gòu)建塊,是一款高 效的實(shí)現(xiàn)方案,往往能夠比肩標(biāo)準(zhǔn)的微處理器、DSP和GPU。而集成ARM® 硬處理器和可編程邏輯的賽靈思28nm Zynq®-7000 All Programmable SoC的問世,則使賽靈思器件對嵌入式系統(tǒng)來說更富吸引力。

盡管FPGA具有優(yōu)異的特性,極富吸引力,但一些設(shè)計(jì)人員出于對編程復(fù)雜性(編程工作晦澀難懂而且涉及VHDL和Verilog等硬件描述語言)的 顧慮仍然避免使用該器件。而實(shí)用的電子系統(tǒng)級(ESL)設(shè)計(jì)的問世則有望確保簡化設(shè)計(jì)任務(wù)并使更多設(shè)計(jì)工程師掌握FPGA編程技術(shù)。

ESL工具在業(yè)內(nèi)由來已久,其可將設(shè)計(jì)抽象提高到主流寄存器傳輸級(RTL)之上的水平。[1]在經(jīng)過無數(shù)次失敗之后,這些高層次的設(shè)計(jì)工具最終在 實(shí)際應(yīng)用中得到了廣泛采用。賽靈思已經(jīng)在其最新設(shè)計(jì)工具Vivado® 設(shè)計(jì)套件中采用ESL方法來解決FPGA的可編程性問題。Vivado HLS是一種內(nèi)置ESL的高層次綜合工具,能夠自動(dòng)將C、C++或SystemC轉(zhuǎn)換為HDL語言設(shè)計(jì)。

Vivado HLS與Zynq SoC的推出激發(fā)了我們團(tuán)隊(duì)在工業(yè)學(xué)術(shù)合作項(xiàng)目IP圖像處理解決方案研發(fā)過程中對ESL方法和手工編碼進(jìn)行對比分析的想法。我們希望我們的工作能夠?yàn)槠渌?有興趣的設(shè)計(jì)團(tuán)隊(duì)提供公正獨(dú)立的案例研究結(jié)果,因?yàn)檫@些工具仍然比較新,而且有關(guān)一般用戶使用體驗(yàn)的參考文獻(xiàn)也不是很多。BDTI實(shí)驗(yàn) [2, 3]從總體上很好地反映了在更高層面將ESL工具用于FPGA的性能和潛力。但為了能通過ESL工具來實(shí)現(xiàn),BDTI團(tuán)隊(duì)以最佳方式對源應(yīng)用 (source application)程序進(jìn)行了重寫。

相比之下,我們則采用針對PC編寫的最初算法的源代碼。

在將IP的手工編碼模塊(之前曾在賽靈思競爭對手的40nm中端產(chǎn)品上驗(yàn)證過)與Zynq SoC上的ESL編程方法進(jìn)行對比時(shí)我們發(fā)現(xiàn),ESL結(jié)果在多個(gè)方面都可以媲美手動(dòng)實(shí)現(xiàn)方案,唯有時(shí)延明顯例外。此外,ESL方案還能顯著縮短開發(fā)時(shí)間。

我們的關(guān)鍵目標(biāo)是:

• 在不修改或者盡可能少改動(dòng)的情況下,評估現(xiàn)有(C/C++)代碼向硬件移植的工作量/質(zhì)量;

• 進(jìn)行具體的設(shè)計(jì)空間探索(ESL與手工編碼IP);

• 研究生產(chǎn)力權(quán)衡因素(效率與設(shè)計(jì)時(shí)間);

• 檢查可移植性問題(移植到其它FPGA或ASIC上);

• 衡量ESL工具對硬件、軟件和系統(tǒng)設(shè)計(jì)人員的易用性。

基于VIVADO的方法

我們采用賽靈思Vivado HLS 2012.4 (ISE® 14.4)設(shè)計(jì)工具和基于Zynq SoC的ZedBoard(XC7z20clg484-1)對所提出的實(shí)驗(yàn)進(jìn)行原型設(shè)計(jì)。我們從針對掃描應(yīng)用的現(xiàn)行圖像處理FPGA-SoC合作項(xiàng)目中的 10個(gè)IP核中選出兩個(gè)。所選IP均為項(xiàng)目中最復(fù)雜的IP核。這些IP采用Verilog優(yōu)化設(shè)計(jì)并在賽靈思競爭對手的40nm產(chǎn)品上進(jìn)行過驗(yàn)證,可針對 業(yè)界合作伙伴Sagemcom公司的掃描產(chǎn)品執(zhí)行特定的圖像處理功能。

圖1概括說明了使用賽靈思工具的實(shí)驗(yàn)流程。為達(dá)到實(shí)驗(yàn)?zāi)康?,我們從算法最初的C源代碼開始。值得注意的是,該代碼通過傳統(tǒng)方式針對PC進(jìn)行編寫,而且就嵌入式系統(tǒng)高效移植而言并非最佳代碼。


圖1 – 針對Zynq Z20 SoC的硬件測試系統(tǒng)
 

我們的目標(biāo)是,理想情況下對代碼進(jìn)行最少修改甚至不修改。盡管Vivado HLS可支持ANSI C/C++,我們?nèi)孕栳槍?dòng)態(tài)存儲器分配和復(fù)雜結(jié)構(gòu)體指針等問題做一些基本調(diào)整。根據(jù)賽靈思技術(shù)文檔的建議,我們在沒有觸及核心編碼的情況下完成了這一任 務(wù)。我們在函數(shù)自變量上創(chuàng)建AXI4主/從(AXI-Lite)接口,并利用各種約束條件在Vivado HLS中處理代碼。我們使用指令來指定這些約束條件,以便創(chuàng)建不同的解決方案,并利用ZedBoard在Zynq Z20 SoC上對其進(jìn)行驗(yàn)證。

為便于比較,我們必須設(shè)定涉及時(shí)延的唯一約束條件。我們必須假定:在相同的頻率下,Zynq SoC的AXI4接口與手工編碼設(shè)計(jì)中競爭對手FPGA總線的時(shí)延具有可比較性。將RTL代碼(IP核)移植到賽靈思環(huán)境非常簡單直觀,但對接口進(jìn)行重新 設(shè)計(jì)則超出了我們的工作范圍。

在開發(fā)板上進(jìn)行原型設(shè)計(jì)之前,我們利用Vivado HLS工具的內(nèi)置SystemC協(xié)同仿真功能來驗(yàn)證生成的硬件。事實(shí)上Vivado HLS也為IP生成軟件驅(qū)動(dòng)器(訪問函數(shù)),這會(huì)進(jìn)一步加快IP驗(yàn)證與調(diào)試的速度。

我們使用Zynq器件中ARM Cortex™-A9 MPCore的666.7 MHz Core 0以及一個(gè)533.3 MHz 的DDR3接口,并通過AXI4定時(shí)器進(jìn)行時(shí)延測量。圖2給出了FPGA原型設(shè)計(jì)所采用的驗(yàn)證流程。首先在ARM上利用初始的C源代碼對圖像進(jìn)行處理,以 獲得“黃金”參考結(jié)果。然后利用IP處理相同的圖像,將它們進(jìn)行比較并驗(yàn)證結(jié)果。

作為獨(dú)立項(xiàng)目,我們還評估了100-MHz MicroBlaze™處理器的兩個(gè)IP模塊的時(shí)延測量值。該處理器帶有8+8KB I+D高速緩存,以及通過AXI4總線與DDR3直接相連的硬件乘法器和除法器單元。我們將MicroBlaze上兩個(gè)IP核的時(shí)延測量值作為參考值,用 以比較由Vivado HLS生成IP和ARM處理器所實(shí)現(xiàn)的加速效果。這種加速性能為FPGA設(shè)計(jì)人員帶來了可觀的軟件計(jì)算能力。

實(shí)驗(yàn)結(jié)果

現(xiàn)在我們來具體看一下兩個(gè)IP核的設(shè)計(jì)空間探索問題,并利用HLS工具將它們標(biāo)記為IP1和IP2。我們已經(jīng)詳細(xì)概述了IP1 的實(shí)驗(yàn),但為了簡便起見,對于IP2,我們只給出其結(jié)果。最后,我們還將針對賽靈思專家就賽靈思ESL工具中AXI4 “Burst”實(shí)現(xiàn)效率問題所給出的反饋意見進(jìn)行討論。

表1和表2按步驟(表示為S1、S2等)列出了IP1設(shè)計(jì)空間探索的細(xì)節(jié)。在實(shí)驗(yàn)中,我們采用了256 x 256像素的灰度測試圖。需要注意的是時(shí)鐘周期、時(shí)延和功耗數(shù)據(jù)僅為在對多次實(shí)現(xiàn)結(jié)果交叉分析進(jìn)行快速綜合后,通過工具給出的參考值。正如您在FPGA原 型設(shè)計(jì)結(jié)果(表2)的討論中所看到的,最終實(shí)現(xiàn)后,實(shí)際值會(huì)發(fā)生顯著變化。

表1 – 針對IP1的HLS探索結(jié)果
*工具的功耗值用于迭代比較,因此沒有單位
 

表2 – 針對IP1探索的FPGA原型設(shè)計(jì)結(jié)果
*參考值,請參閱方法章節(jié)
**從XPower分析器得到的動(dòng)態(tài)功耗

S1:源代碼轉(zhuǎn)換

在第一步中,我們首先編譯沒有最優(yōu)約束條件的代碼(除了前面所述的必須修改項(xiàng))。從表1中可以看到,硬件占用了大量資源。當(dāng)我們根據(jù)Vivado HLS快速綜合報(bào)告和GUI設(shè)計(jì)查看器工具分析資源分配詳情時(shí),可以很清楚地看出算法中的幾個(gè)除法運(yùn)算占用了絕大部分資源。與乘法器不同,在FPGA中沒 有用于除法的硬模塊,因此除法運(yùn)算會(huì)占用大量邏輯。因此,我們首先要解決的就是優(yōu)化這個(gè)問題。

S2:S1結(jié)合共享除法器

直觀地說,對于如何減少除法硬件資源消耗問題,我們首先想到的是采用資源共享的方式來解決,但這同時(shí)也會(huì)降低性能。不幸的是,在我們所使用的工具版 本中很難甚至是不太可能直接將定制約束條件應(yīng)用于運(yùn)算符。不過解決方法也很簡單,我們可以用函數(shù)來替代除法運(yùn)算(/),這樣就可將約束條件應(yīng)用于函數(shù)。在 默認(rèn)情況下,此工具可將函數(shù)作為內(nèi)聯(lián)函數(shù)來使用,可為每個(gè)除法運(yùn)算生成完整的除法硬件。我們在除法函數(shù)上應(yīng)用“Allocation”指令,運(yùn)用不同的值 來進(jìn)行實(shí)驗(yàn),并監(jiān)控其對時(shí)延的影響。最后我們選擇了一個(gè)共享除法硬件。正如您在表1中所看到的,這種方式顯著減少了查找表(LUT)、觸發(fā)器(FF)和其 它邏輯資源的使用量,而且對時(shí)延的影響也可以忽略不計(jì),完全達(dá)到了雙贏效果。

S3:S2結(jié)合除數(shù)到乘法的轉(zhuǎn)換

接下來我們選擇將除法運(yùn)算轉(zhuǎn)換為乘法。這種轉(zhuǎn)換是可行的,因?yàn)樵搼?yīng)用使用的是常數(shù)值除法。我們這樣做的目的有兩方面:首先,盡管已決定采用一個(gè)共享 除法器來完成所有的除法運(yùn)算,但除法硬件依然比較昂貴(約2000個(gè)LUT和觸發(fā)器);其次,這種共享除法器完成除法運(yùn)算的速度相當(dāng)緩慢,需要34個(gè)周 期,而且我們所使用的賽靈思工具僅支持HLS庫中的一種除法器類型。但在接下來的步驟中,我們可以看到實(shí)現(xiàn)乘法則有多種選擇。

因此,在本步驟中,我們將除法運(yùn)算轉(zhuǎn)換為乘法運(yùn)算(我們通過使用C語言的#ifdef指令來保持代碼的可移植性)。通過AXI-Lite從寄存器將 近似值作為函數(shù)參數(shù)提供。這就是在此步驟中表1能夠顯示性能和資源使用量得到顯著改善的原因,但乘法運(yùn)算量的加大必須采用更多DSP。

S4:S3結(jié)合緩沖存儲器分區(qū)

源算法采用統(tǒng)一布置在存儲器分配(malloc)模塊中的多個(gè)內(nèi)存緩沖器(8位、16位和32位)。在準(zhǔn)備好算法Vivado HLS這一轉(zhuǎn)換初始階段(圖1)中 ,存儲器模塊會(huì)轉(zhuǎn)變?yōu)閮?nèi)部片上存儲器(Block RAM)。

盡管對于共享外部存儲器來說采用統(tǒng)一的存儲器分配模塊是一種比較普遍的選擇,但是當(dāng)使用內(nèi)部片上存儲器時(shí),更好的做法則是利用存儲器分區(qū)來實(shí)現(xiàn)更快 的吞吐量。因此在這個(gè)步驟中,我們將比較大的存儲器模塊分成若干獨(dú)立的小存儲器(8位、16位和32位)。表1顯示的結(jié)果突出了明顯的性能改善效果,而且 分區(qū)也只是少量增加了BRAM數(shù)量(表2)。此外,這種技術(shù)還大幅減少了邏輯資源占用,原因可能是用于存儲器訪問的控制邏輯得到了簡化。

S5:S4結(jié)合共享32/64位帶符號或無符號乘法器

在這個(gè)步驟中,我們受S2中共享除法器實(shí)驗(yàn)的啟發(fā),使用共享資源對DSP模塊進(jìn)行了優(yōu)化。首先,我們使用設(shè)計(jì)查看器實(shí)用工具詳細(xì)分析生成的硬件,并 將其與C源代碼進(jìn)行相互參考。分析結(jié)果顯示在原始模式下硬件正在使用的26個(gè)不同種類的乘法器單元,可被分為無符號16/32/64位乘法和32位帶符號 乘法。與S2實(shí)驗(yàn)一樣,我們構(gòu)建了一個(gè)由32位帶符號、32位無符號和64位無符號乘法器(用函數(shù)替代“*”運(yùn)算)組成的系統(tǒng)。然后,我們應(yīng)用了一個(gè)分配 約束條件,即只用一個(gè)單元來完成這三種截然不同的運(yùn)算。表1顯示盡管性能有些損失,但是DSP的使用量顯著減少。這一結(jié)果激發(fā)我們進(jìn)一步研究智能共享方 案。

S6:S5結(jié)合智能乘法共享

為減少由乘法器共享帶來的性能損失,需要以更加巧妙的方式對其加以利用。我們創(chuàng)建了兩個(gè)附加乘法器類型,即16位無符號乘法器和具有64位返回值的 32位無符號乘法器。我們以相互獨(dú)立的方式使用這些乘法器并改變它們的數(shù)量,經(jīng)過多次實(shí)驗(yàn)后得出的最終解決方案包含兩個(gè)無符號64位乘法器、兩個(gè)無符號 32位乘法器、一個(gè)帶符號32位乘法器、一個(gè)無符號16位乘法器以及一個(gè)獨(dú)立的帶64位返回值的無符號32位乘法器。這種技術(shù)可使性能得到小幅改善(如表 1所示),但是也會(huì)小幅增加DSP的使用量。

S7:S6結(jié)合乘法器時(shí)延實(shí)驗(yàn)(組合乘法器)

在乘法器優(yōu)化的最后階段,我們完成了兩次用以改變乘法器時(shí)延值的實(shí)驗(yàn)。默認(rèn)情況下,Vivado HLS所使用的乘法器的延遲時(shí)間介于2至5個(gè)時(shí)鐘周期之間。硬IP核中的乘法器要么是單時(shí)鐘周期要么是組合乘法器。在這個(gè)步驟中,我們使用“資源”指令并 從庫中選擇相應(yīng)的組合乘法器,將乘法器的時(shí)延設(shè)定為0。結(jié)果如表1中所示,延遲時(shí)間得到了改善。然而,從時(shí)序的角度來看設(shè)計(jì)明顯變差了許多,因此FPGA 設(shè)計(jì)的時(shí)鐘速度減慢可能會(huì)將性能提高變?yōu)榻档托阅堋?/p>

S8:S6結(jié)合乘法器時(shí)延實(shí)驗(yàn)(1時(shí)鐘周期乘法器)

在這個(gè)步驟中,我們不使用組合乘法器,而是從庫中選擇一個(gè)單時(shí)鐘周期乘法器。結(jié)果如表1所示。我們可以看到時(shí)延略有增加,但出人意料的是時(shí)鐘周期顯著增大,從而導(dǎo)致硬件變慢。

S9、S10、S11:Burst訪問實(shí)驗(yàn)

到目前為止,所有探索步驟對C代碼功能方面的知識要求很少或者根本不要求。在最后的實(shí)驗(yàn)中,我們探索了Burst訪問。對基于共享存儲器系統(tǒng)的IP 來說Burst訪問幾乎是必不可少的,因?yàn)橛糜谛K數(shù)據(jù)或隨機(jī)數(shù)據(jù)訪問的總線具有較高的時(shí)延。為此,我們分析了C代碼的算法結(jié)構(gòu),以便探究實(shí)現(xiàn)Burst 訪問的可能性,因?yàn)閺囊话愕能浖嵌葋碚f根本就沒有Burst訪問這一概念。但是值得格外關(guān)注的是,即便是在Burst訪問實(shí)驗(yàn)中,我們也從未改變過軟件 的代碼結(jié)構(gòu)。

Burst訪問實(shí)驗(yàn)分兩個(gè)步驟執(zhí)行。首先我們使用轉(zhuǎn)儲方法(盡管并不實(shí)用,但不失為獲得技術(shù)信息的良好途徑),此時(shí)整個(gè)圖像被快速送到內(nèi)部存儲器緩 沖器中,并在實(shí)施最后快速輸出完整結(jié)果。通過使用較小的圖像并確保FPGA中有充足的片上存儲器,就可以很輕松做到這點(diǎn)。我們將此迭代步驟稱為 “superburst”(S9)。

在第二階段,我們在確保不改變源代碼結(jié)構(gòu)的限制條件下實(shí)現(xiàn)了智能的交互式Burst(S10,S11)。結(jié)果如表1中所示。我們根據(jù)賽靈思提供的實(shí) 例教程,利用標(biāo)準(zhǔn)的“memcpy”函數(shù)在C語言中實(shí)現(xiàn)了Burst功能。遺憾的是,當(dāng)在代碼中插入memcpy 函數(shù)時(shí)無法看到時(shí)延值。但FPGA的實(shí)現(xiàn)結(jié)果 (表 2)可以說明實(shí)驗(yàn)所獲得的性能。

所選步驟的FPGA原型設(shè)計(jì)

使用ESL工具的最大優(yōu)勢之一是能夠?qū)崿F(xiàn)快速的設(shè)計(jì)空間探索。我們可在幾分鐘之內(nèi)評估以上列出的所有探索步驟和表1所示結(jié)果,從而避免針對少數(shù)最終 所選迭代執(zhí)行冗長的FPGA實(shí)現(xiàn)階段。表2給出了表1中部分所選步驟在Zynq Z20 SoC上的最終實(shí)現(xiàn)結(jié)果;同時(shí)也給出了在MicroBlaze處理器上(作為參考)和ARM Cortex-A9上實(shí)現(xiàn)初始源代碼所獲得的等效結(jié)果(時(shí)延), 以體現(xiàn)出Zynq SoC帶給FPGA設(shè)計(jì)人員的強(qiáng)大計(jì)算能力。該表還給出了由賽靈思XPower分析器計(jì)算得出的動(dòng)態(tài)功耗估計(jì)值。

我們利用賽靈思工具將最優(yōu)手工編碼IP轉(zhuǎn)化為RTL,從而獲得手工編碼IP在Zynq SoC上的實(shí)現(xiàn)結(jié)果。我們不得不使用之前實(shí)驗(yàn)得到的時(shí)延測量結(jié)果并將競爭對手的FPGA作為參考,因?yàn)橄駻XI4總線進(jìn)行移植超出了我們的實(shí)驗(yàn)范圍。這進(jìn) 一步凸顯了HLS工具的潛力,即可幫助設(shè)計(jì)人員更加輕松地向多種協(xié)議移植。

如果我們將表2與表1中的結(jié)果進(jìn)行比較,會(huì)發(fā)現(xiàn)幾個(gè)有意思的現(xiàn)象。首先,ESL的快速綜合會(huì)得出比實(shí)際情況(尤其是對于LUT和觸發(fā)器)更好的估計(jì)結(jié)果;對存儲器和DSP而言,綜合器有時(shí)可顯著改變資源數(shù)量以進(jìn)行優(yōu)化。

其次,時(shí)序收斂會(huì)成為最后實(shí)現(xiàn)階段的大問題。我們可以看到FPGA實(shí)現(xiàn)后獲得的頻率與HLS估計(jì)結(jié)果相比發(fā)生了顯著變化。最后,令人驚訝的是,即便 對于Burst訪問實(shí)驗(yàn), HLS預(yù)計(jì)值與手工編碼IP得到的時(shí)延值也存在明顯差別。這也使我們對HLS工具生成的DMA的質(zhì)量更加感興趣。

新的IP,相似的結(jié)果

我們以類似方式來研究第二個(gè)IP(即IP2)。根據(jù)之前對IP1的深入討論,表3和表4中所列結(jié)果也就不言自明。值得注意的一點(diǎn)是表3中的步驟8。 與IP1的情況一樣(詳見S2和S3討論內(nèi)容),無論從資源使用還是時(shí)延的角度來說,除法器都是高消耗器件。與IP1不同的是,IP2使用實(shí)數(shù)除法運(yùn)算, 因此除法器不能移除。但遺憾的是,當(dāng)前版本的ESL工具只有一種除法器,其延遲時(shí)間為34個(gè)時(shí)鐘周期。S8表明,如果使用時(shí)延為一個(gè)時(shí)鐘周期的除法器(就 像手工編碼IP中提供的除法器),理論上其可實(shí)現(xiàn)30%的性能提升。表4顯示了所選步驟的FPGA原型設(shè)計(jì)結(jié)果。

 

VIVADO HLS的DMA/BURST效率問題

通過比較手工編碼IP和ESL技術(shù)得到的結(jié)果可得出一些結(jié)論。盡管研究嵌入式系統(tǒng)所用的初始源代碼(幾乎不做修改)并非以最佳方式編寫,但ESL工 具所提供的結(jié)果仍可以在資源利用率方面與經(jīng)過優(yōu)化的手工編碼IP相媲美。ESL與手工編碼IP在實(shí)驗(yàn)結(jié)果上的顯著區(qū)別在于時(shí)延,后者得到的時(shí)延性能要遠(yuǎn)遠(yuǎn) 優(yōu)于前者。

針對這一問題,我們觀察到手工編碼IP與ESL IP在構(gòu)建方式上存在較大差異,(這也是IP2的資源消耗量存在較大差異的原因)。由于源代碼類型不同,在ESL IP中只有一條用于輸入和輸出的數(shù)據(jù)總線,相比之下,在手工編碼IP中則有兩條。此外,手工編碼IP中的FIFO更適合處理Burst訪問。而ESL IP則由于其源代碼的固有特性,很難建立一個(gè)理想高效的Burst處理機(jī)制,因而只能通過緩沖器來實(shí)現(xiàn)Burst。由于ESL硬件需要根據(jù)代碼結(jié)構(gòu)將這些 存儲器作為任務(wù)緩沖器和Burst緩沖器,因此ESL方案會(huì)影響B(tài)RAM的使用。此外,Burst是根據(jù)賽靈思AXI4主接口教程,通過C語言的 memcpy函數(shù)來完成的。

我們還與賽靈思專家交換了意見,他們建議使用外部DMA來實(shí)現(xiàn)最佳性能。因?yàn)榫臀覀兯褂玫腣ivado HLS版本而言,其生成的AXI4主接口尚處于測試階段,但會(huì)在未來得到升級。這些因素可能會(huì)導(dǎo)致時(shí)延值的顯著差異,同時(shí)也是未來實(shí)驗(yàn)研究的良好出發(fā)點(diǎn)。

生產(chǎn)力與效率

這次的具體實(shí)驗(yàn)工作揭示出ESL設(shè)計(jì)的幾個(gè)重要方面,同時(shí)也清除了一些誤區(qū)。ESL工具自推出以來已取得了長足進(jìn)步,現(xiàn)可支持ANSI C/C++,并能給出具有競爭力結(jié)果,還可依照硬件/系統(tǒng)設(shè)計(jì)實(shí)踐方法,采用約束指令的形式開發(fā)出多種設(shè)計(jì)方案(不僅限于過去的循環(huán)開發(fā))。

事實(shí)上,我們發(fā)現(xiàn)用ESL獲得的所有結(jié)果(延遲時(shí)間除外)都可達(dá)到最佳值。此外,若通過工具的高級特性實(shí)現(xiàn)精確位類型(而非實(shí)驗(yàn)中使用的一般C語言類型),還能進(jìn)一步優(yōu)化資源使用,即類似于代碼部分重寫所取得的效果。

研究工作還使我們了解到生產(chǎn)力與效率間的權(quán)衡問題。圖3給出了IP模塊開發(fā)時(shí)間(包括設(shè)計(jì)、軟件、FPGA實(shí)現(xiàn)及驗(yàn)證等)的對比情況。ESL設(shè)計(jì)能 快速轉(zhuǎn)化為解決方案,尤其是對于驗(yàn)證工作,其所獲得的結(jié)果不亞于最佳實(shí)現(xiàn)方案。值得注意的是設(shè)計(jì)與驗(yàn)證時(shí)間高度依賴于設(shè)計(jì)人員的技術(shù)水平。因此,手工編碼 設(shè)計(jì)與ESL設(shè)計(jì)都由同一組人員完成。

圖3對流程的實(shí)現(xiàn)效果進(jìn)行了公正的比較。考慮到設(shè)計(jì)人員對IP設(shè)計(jì)與集成的傳統(tǒng)RTL方法更加熟悉,而對ESL工具比較陌生,因此從長期來看一旦這種新工具被人們所熟悉,其開發(fā)設(shè)計(jì)所需時(shí)間很可能會(huì)顯著縮短。

ESL的未來發(fā)展?

從技術(shù)和商業(yè)角度來看,應(yīng)該會(huì)制定一些針對ESL工具約束結(jié)構(gòu)的EDA標(biāo)準(zhǔn),以便輕松地向其它FPGA或ASIC移植設(shè)計(jì)(這種靈活性是RTL工具 所固有的,從原則上講,采用ESL工具應(yīng)該更容易做到這一點(diǎn))。ESL工具供應(yīng)商應(yīng)該像對待RTL工具一樣,提高ESL工具的質(zhì)量和效果。

這是一個(gè)復(fù)雜、需要長時(shí)間探討的論題,我們不再在這篇短文中對以下問題做出詳細(xì)解答:軟件設(shè)計(jì)人員是否能利用ESL工具對FPGA進(jìn)行編程?ESL 是否將取代RTL設(shè)計(jì)/工作?誰是ESL工具的最大受益者?但從本次實(shí)驗(yàn)所獲得的經(jīng)驗(yàn)來看,我們認(rèn)為ESL工具可以讓所有相關(guān)人員受益,尤其是系統(tǒng)設(shè)計(jì)人 員。

對硬件設(shè)計(jì)人員而言,這種工具在創(chuàng)建或評估設(shè)計(jì)片段時(shí)非常有效,其有助于快速構(gòu)建可支持總線接口的測試用基礎(chǔ)設(shè)施。嘗試設(shè)計(jì)硬件的軟件設(shè)計(jì)人員也是 ESL工具的主要受眾之一。盡管ESL工具為此已取得了很大進(jìn)步,但仍有很長的路要走。例如在我們的項(xiàng)目中, ELS工具為軟件設(shè)計(jì)人員將硬件復(fù)雜性降到了非常低的程度。然而,當(dāng)涉及到約束和優(yōu)化工作時(shí),要實(shí)現(xiàn)好的設(shè)計(jì)仍需要從硬件方面進(jìn)行考慮。這個(gè)問題將隨著 ESL工具的進(jìn)一步發(fā)展而得到逐步好轉(zhuǎn)。

隨著軟硬件協(xié)同設(shè)計(jì)在SoC領(lǐng)域中不斷推廣采用,系統(tǒng)設(shè)計(jì)人員也變得越來越普遍,對于他們來說,ESL工具可能形成一種雙贏局面。系統(tǒng)設(shè)計(jì)人員可在多個(gè)層面上探索這些工具。

在硬件方面,之所以選擇賽靈思28nm 7系列FPGA中的Zynq-7000 All Programmable SoC,關(guān)鍵原因之一就是要探究將ARM硬核與FPGA邏輯集成在同一芯片上到底有多大潛力。正如我們在實(shí)驗(yàn)結(jié)果中所看到的, ARM雙核為FPGA設(shè)計(jì)人員帶來了前所未有的計(jì)算性能。而事實(shí)上,Zynq SoC為嵌入式設(shè)計(jì)人員帶來了一款微型超級計(jì)算機(jī),而且可利用緊密集成的FPGA架構(gòu)對其進(jìn)行定制。

鳴謝

我們感謝產(chǎn)業(yè)合作伙伴Sagemcom為我們提供的資金支持與技術(shù)協(xié)助。同時(shí),我們還要感謝賽靈思?xì)W洲公司的專家Kester Aernoudt和Olivier Tremois為本次項(xiàng)目提供及時(shí)的技術(shù)指導(dǎo)。

參考資料

1. G. Martin,G. Smith,“高層次綜合:過去、現(xiàn)在及未來”,IEEE 計(jì)算機(jī)設(shè)計(jì)與測試,2009年7/8月

2. BDTI 報(bào)告,“賽靈思FPGA的高層次綜合工具”,2010年

3. BDTI報(bào)告,“AutoESL AutoPilot高層次綜合工具”,2010年

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。