如圖3所示的Impulse C通過(guò)結(jié)合使用C兼容庫(kù)函數(shù)與Impulse CoDeveloper C代碼到硬件的編譯器,使嵌入式系統(tǒng)設(shè)計(jì)工程師能創(chuàng)建高度并行的、FPGA加速的應(yīng)用。Impulse C通過(guò)使用定義完好的數(shù)據(jù)通信、消息傳遞和同步處理機(jī)制,簡(jiǎn)化了硬件/軟件混合應(yīng)用設(shè)計(jì)。Impulse C提供了C代碼(例如循環(huán)流水線處理、展開(kāi)和運(yùn)算符調(diào)度)的自動(dòng)優(yōu)化以及交互式工具,允許你對(duì)每個(gè)周期的硬件行為進(jìn)行分析。
圖3. Impulse C
Impulse C設(shè)計(jì)用于面向數(shù)據(jù)流的應(yīng)用,但是它也具有足夠的靈活性來(lái)支持其他的編程模型,包括使用共享存儲(chǔ)器。這一點(diǎn)很重要,因?yàn)榛贔PGA不同的應(yīng)用具有不同的性能和數(shù)據(jù)要求。在一些應(yīng)用中,通過(guò)塊存儲(chǔ)器讀和寫(xiě)在嵌入式處理器和FPGA之間轉(zhuǎn)移數(shù)據(jù)是有意義的;在其它的情況下,流傳數(shù)通信信道可能提供更高的性能??梢钥焖俳!⒕幾g和評(píng)估可選的算法的能力對(duì)于實(shí)現(xiàn)某個(gè)應(yīng)用最佳的結(jié)果來(lái)說(shuō),非常重要。
到目前為止,Impulse C庫(kù)包含以新數(shù)據(jù)類型和預(yù)定義的函數(shù)調(diào)用形式的最少C語(yǔ)言擴(kuò)展。使用Impulse C函數(shù)調(diào)用,你可以定義多個(gè)并行程序段(調(diào)用進(jìn)程),并使用流、信號(hào)和其他機(jī)制描述它們的互連。Impulse C編譯器將這些C語(yǔ)言進(jìn)程轉(zhuǎn)換并優(yōu)化成:可以綜合到FPGA的較低級(jí)HDL,或可以通過(guò)廣泛存在的C交叉編譯器編譯到支持的微處理器上標(biāo)準(zhǔn)C(帶相關(guān)的庫(kù)調(diào)用)。
完整的CoDeveloper開(kāi)發(fā)環(huán)境包括與標(biāo)準(zhǔn)C編譯器和調(diào)試器(包括微軟公司的Visual Studio和GCC/GDB)兼容的臺(tái)式電腦仿真庫(kù)。使用這些庫(kù),Impulse C程序設(shè)計(jì)工程師能編譯和執(zhí)行他們用于算法驗(yàn)證和調(diào)試目的的應(yīng)用程序。C程序設(shè)計(jì)工程師還能檢驗(yàn)并行進(jìn)程,分析數(shù)據(jù)移動(dòng),并利用CoDeveloper Application Monitor解決進(jìn)程到進(jìn)程的通信問(wèn)題。
在編譯時(shí),Impulse C應(yīng)用的輸出是一組硬件和軟件源文件,用于輸入到FPGA綜合工具。這些文件包括:
1. 用于描述編譯硬件進(jìn)程的自動(dòng)產(chǎn)生的HDL文件;
2. 用于描述連接硬件進(jìn)程到系統(tǒng)總線所需的流、信號(hào)和存儲(chǔ)器組件的自動(dòng)產(chǎn)生的HDL文件;
3. 自動(dòng)產(chǎn)生的軟件組件(包括運(yùn)行時(shí)間庫(kù))用于建立任何硬件/軟件流連接的軟件端;
4. 附加文件,包括腳本文件,用于輸入產(chǎn)生的應(yīng)用程序到目標(biāo)FPGA布局布線環(huán)境。這種編譯進(jìn)程的結(jié)果是一個(gè)完整的應(yīng)用,包括需要的硬件/軟件接口,用于在基于FPGA的編程平臺(tái)上實(shí)現(xiàn)。
設(shè)計(jì)實(shí)例
圖4所示的Mandelbrot圖是一種經(jīng)典的不規(guī)則幾何圖形,該圖形廣泛用在科學(xué)和工程學(xué)界用于仿真無(wú)序事件,例如天氣。不規(guī)則圖形也用于產(chǎn)生紋理和在視頻顯示應(yīng)用上成像。Mandelbrot圖像描述為自相似性。放大圖形的局部,可以獲得類似于整個(gè)圖形的另外一個(gè)圖形。
圖4:Mandelbrot圖
Mandelbrot圖形是硬件/軟件協(xié)同設(shè)計(jì)的理想選擇,因?yàn)樗哂袉蝹€(gè)運(yùn)算密集的函數(shù)。通過(guò)將關(guān)鍵的函數(shù)轉(zhuǎn)移到硬件實(shí)現(xiàn)將大大地增加整個(gè)系統(tǒng)的速度,使這個(gè)關(guān)鍵函數(shù)更快。Mandelbrot應(yīng)用還能清楚地區(qū)分硬件和軟件進(jìn)程,使用C-HDL工具很容易實(shí)現(xiàn)。
本文使用CoDeveloper工具組作為C-HDL工具組用于該設(shè)計(jì)實(shí)例,而且只修改了軟件Mandelbrot C程序以使其與C-HDL工具兼容。其中的改變包括:將軟件項(xiàng)目分割成不同的進(jìn)程(順序執(zhí)行的獨(dú)立單元);函數(shù)接口轉(zhuǎn)換(硬件到軟件)到流;增加編譯器指令來(lái)對(duì)產(chǎn)生的硬件進(jìn)行優(yōu)化。我們隨后使用CoDeveloper工具組來(lái)創(chuàng)建Pcore協(xié)處理器,將該協(xié)處理器輸入到Xilinx Platform Studio(XPS)。利用XPS,我們將PC連接到PowerPC APU控制器接口,并測(cè)試系統(tǒng)。
Xilinx公司的應(yīng)用說(shuō)明資料XAPP901中提供了該設(shè)計(jì)的全面描述和設(shè)計(jì)文件,并提供下載。同時(shí),用戶指南UG096提供一種實(shí)現(xiàn)設(shè)計(jì)實(shí)例的逐步設(shè)計(jì)指導(dǎo)。
我們對(duì)Mandelbrot圖像紋理問(wèn)題、圖像濾波應(yīng)用和三倍DES加密的性能改善進(jìn)行了測(cè)量。性能改善顯示了從11倍到34倍的加速。
評(píng)論
查看更多