新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 使用MATLAB為System Generator for DSP創(chuàng)建IP(圖)

使用MATLAB為System Generator for DSP創(chuàng)建IP(圖)

作者: 時(shí)間:2008-05-20 來(lái)源:網(wǎng)絡(luò) 收藏

M文件借助AccelChip綜合工具優(yōu)化FPGA實(shí)現(xiàn)

將基于圖形和基于語(yǔ)言的設(shè)計(jì)方法結(jié)合起來(lái)最能準(zhǔn)確描述系統(tǒng)。建模軟件行業(yè)專(zhuān)家The MathWorks提供了一種稱(chēng)為Simulink的時(shí)序精度的圖形化設(shè)計(jì)環(huán)境和一種稱(chēng)為的數(shù)學(xué)建模語(yǔ)言,從而滿(mǎn)足了這種二分法。


Simulink非常適合設(shè)計(jì)的“系統(tǒng)”方面,包括輸入輸出接口和存儲(chǔ)器數(shù)據(jù)流的控制與同步。Simulink還以模塊集的形式提供了一個(gè)豐富的預(yù)定義DSP算法集,可以用來(lái)構(gòu)建DSP系統(tǒng)。不過(guò),對(duì)于專(zhuān)用算法的建模來(lái)說(shuō),Simulink并非總是最有效的開(kāi)發(fā)環(huán)境。它不必要地增加了設(shè)計(jì)人員考慮時(shí)序精度的負(fù)擔(dān),并且強(qiáng)制用圖形模塊集而非簡(jiǎn)明的文本表達(dá)式來(lái)構(gòu)建底層的算術(shù)運(yùn)算和數(shù)組操作。

圖1 顯示系統(tǒng)控制和同步邏輯的Xilinx


有些DSP算法開(kāi)發(fā)人員發(fā)現(xiàn)語(yǔ)言最能滿(mǎn)足他們喜歡的開(kāi)發(fā)方式。MATLAB具有針對(duì)信號(hào)處理、通信和小波處理的1000多種內(nèi)置函數(shù)和工具箱擴(kuò)展,為復(fù)雜算法的開(kāi)發(fā)和調(diào)試提供了豐富且易用的環(huán)境。


Simulink利用一個(gè)嵌入式MATLAB模塊將這兩種建模環(huán)境統(tǒng)一起來(lái),該模塊允許MATLAB模型在Simulink內(nèi)部仿真,再通過(guò)Real-Time Workshop編譯成C代碼后在DSP處理器上實(shí)現(xiàn)。


Xilinx DSP是一種廣泛公認(rèn)的高效工具,用于在FPGA中DSP設(shè)計(jì)。 DSP提供了基于Simulink的圖形環(huán)境和Xilinx DSP核的預(yù)定義模塊集,這同時(shí)滿(mǎn)足了系統(tǒng)架構(gòu)設(shè)計(jì)師和硬件設(shè)計(jì)人員的需要,前者需要把組件集成到設(shè)計(jì)中,而后者需要優(yōu)化實(shí)現(xiàn)。不過(guò),System Generator DSP缺少對(duì)基于MATLAB的設(shè)計(jì)流程的支持。

Xilinx AccelDSPTM綜合工具是專(zhuān)為已經(jīng)熟悉基于語(yǔ)言的DSP算法建模的算法開(kāi)發(fā)人員和DSP架構(gòu)設(shè)計(jì)師開(kāi)發(fā)的。借助AccelDSP綜合工具,算法開(kāi)發(fā)人員可以用浮點(diǎn)MATLAB M文件激勵(lì)、評(píng)估算法并對(duì)結(jié)果進(jìn)行后處理。

DSP硬件系統(tǒng)


System Generator for DSP非常適合DSP系統(tǒng)建模,它不僅包括核心DSP算法,還包括針對(duì)外部總線(xiàn)、存儲(chǔ)器讀寫(xiě)訪(fǎng)問(wèn)、系統(tǒng)數(shù)據(jù)同步和整體系統(tǒng)控制的同步接口。System Generator for DSP提供了面向控制的模塊(如MicroBlazeTM處理器),還提供了用于實(shí)現(xiàn)DSP系統(tǒng)同步的各個(gè)寄存器、延時(shí)器和存儲(chǔ)器模塊(如圖1所示)。

自定制DSP算法


任何DSP系統(tǒng)的核心都是算法。算法與系統(tǒng)的區(qū)別在于所產(chǎn)生的輸出是基于給定輸入集的函數(shù),與時(shí)鐘或硬件無(wú)關(guān)。這可以由以下簡(jiǎn)單公式表示:


y=f(x)


我們可以分別在FPGA、DSP處理器和軟件上執(zhí)行一種MATLAB定義的算法,它們對(duì)時(shí)序精度的理解各不相同。


算法的這種特有性質(zhì)具有兩大好處。


首先,算法開(kāi)發(fā)人員完全不用顧及硬件實(shí)現(xiàn)細(xì)節(jié),可以只專(zhuān)心于算法功能。正因?yàn)槿绱?,今天在DSP中的算法估計(jì)有90%都是首先作為MATLAB模型出現(xiàn)的,即使設(shè)計(jì)流程表明它們此后還要重新實(shí)現(xiàn)Simulink圖或System Generatorfor DSP圖。用一個(gè)簡(jiǎn)單的MATLAB語(yǔ)句就可以計(jì)算41024數(shù)據(jù)矩陣的快速傅里葉變換(FFT),不必考慮基數(shù)、擴(kuò)展性、緩沖或有效信號(hào)的同步,如下所示:


y=fft(data,1024)


其次,在建立算法模型時(shí),給定的輸出集總是對(duì)應(yīng)于給定的輸入集;因此,不必在生成的硬件中解決同步問(wèn)題。這就使算法具有可通過(guò)AccelDSP這樣的綜合工具進(jìn)行調(diào)度的固有“可調(diào)度”性。由于硬件要求,可能需要多個(gè)時(shí)鐘周期來(lái)計(jì)算一個(gè)輸出(如資源共享MAC FIR濾波器的情形),但這種操作卻非常適合AccelDSP綜合工具的自動(dòng)流程。加入一個(gè)簡(jiǎn)單的硬件握手接口即可為集成到整個(gè)系統(tǒng)敞開(kāi)方便之門(mén),如圖2所示。

圖2 AccelDSP 握手接口

MATLAB運(yùn)算符(如矩陣轉(zhuǎn)置)可以使MATLAB代碼短小易讀。而像矩陣求逆運(yùn)算這類(lèi)復(fù)雜運(yùn)算可以用MATLAB豐富的線(xiàn)性代數(shù)功能完成。

AccelDSP和System Generator工具一起使用


AcceDSP綜合工具可依據(jù)浮點(diǎn)MATLAB模型生成System Generator 模塊,從而使System Generator for DSP能夠支持DSP系統(tǒng)和算法兩種建模方法。這樣可以產(chǎn)生與用嵌入式MATLAB模塊功能相似的FPGA設(shè)計(jì)流程(見(jiàn)圖3)。我們可以用Xilinx DSP模塊集實(shí)現(xiàn)系統(tǒng)設(shè)計(jì),而用浮點(diǎn)MATLAB實(shí)現(xiàn)算法設(shè)計(jì)。用AccelDSP綜合工具的System Generator 模塊是具有時(shí)序精度特點(diǎn)的定點(diǎn)模塊。

卡爾曼濾波器示例


我們來(lái)看一種用MATLAB編寫(xiě)的高級(jí)算法,使用AccelDSP綜合工具進(jìn)行綜合,然后將算法集成到System Generator模型中。卡爾曼濾波器是一種特殊類(lèi)型的自適應(yīng)遞歸濾波器,非常適合將多個(gè)有噪聲的信號(hào)合并成一個(gè)較清晰的信號(hào)??柭鼮V波器以對(duì)象(如由地面雷達(dá)跟蹤的商用飛機(jī))的數(shù)學(xué)模型開(kāi)始,使用該模型預(yù)測(cè)未來(lái)行為。然后,濾波器使用實(shí)測(cè)信號(hào)(如返回到雷達(dá)接收器的飛機(jī)特征信號(hào))定時(shí)校正預(yù)測(cè)。

圖3 DSP系統(tǒng)框圖


以下是一個(gè)卡爾曼濾波器的MATLABM文件。該算法定義矩陣R和I,這兩個(gè)矩陣描述了實(shí)測(cè)信號(hào)和預(yù)測(cè)行為的統(tǒng)計(jì)數(shù)據(jù)。算法的后九行是前向預(yù)測(cè)代碼和自我校正代碼。


表1 控制所生成硬件的綜合指令


像加減這類(lèi)常用運(yùn)算符是在A或P_cap這類(lèi)數(shù)組上運(yùn)算,無(wú)須像C語(yǔ)言所要求的那樣編寫(xiě)循環(huán)語(yǔ)句。二維數(shù)組自動(dòng)以矩陣相乘,無(wú)須任何特別注釋。


MATLAB運(yùn)算符(如矩陣轉(zhuǎn)置)可以使MATLAB代碼短小易讀。而像矩陣求逆這類(lèi)復(fù)雜運(yùn)算可以用MATLAB豐富的線(xiàn)性代數(shù)功能完成。雖然可以將這種算法構(gòu)建成框圖,但這樣做很容易使算法結(jié)構(gòu)在MATLAB中顯得費(fèi)解。有了AccelDSP綜合工具,就可以用AccelWare 工具套件將復(fù)雜的MATLAB工具箱和內(nèi)置函數(shù)(如卡爾曼濾波器示例中使用的矩陣求逆)直接賦予硬件。這些工具套件提供多種矩陣求逆方法。核的選擇取決于矩陣的大小、結(jié)構(gòu)和值。


我們?cè)倩氐娇柭鼮V波器示例,最適宜的方法是使用AccelWare QR矩陣求逆核。AccelWare核是依據(jù)MATLAB語(yǔ)法生成的,可有多種硬件實(shí)現(xiàn)架構(gòu),這些架構(gòu)允許用戶(hù)對(duì)設(shè)計(jì)進(jìn)行速度、面積、功耗和噪聲優(yōu)化。為了使用AccelWare功能,需要對(duì)代碼進(jìn)行以下小修改:


用AccelDSP綜合工具綜合MATLAB可以使用AccelDSP綜合工具進(jìn)行浮點(diǎn)仿真,以建立一個(gè)基準(zhǔn)來(lái)參考。然后將設(shè)計(jì)轉(zhuǎn)換成定點(diǎn),以便進(jìn)行定點(diǎn)效果仿真。有諸多功能可以幫助分析這些效果和定點(diǎn)設(shè)計(jì)(如飽和與四舍五入)。數(shù)據(jù)位寬的增長(zhǎng)可以用戶(hù)控制的方式自動(dòng)傳播到整個(gè)設(shè)計(jì)中。這種算法設(shè)計(jì)瀏覽過(guò)程可以幫助您獲得理想的量化結(jié)果,此量化結(jié)果能夠在控制上溢出/下溢出的同時(shí)盡量縮小位寬,以便盡早在硅片面積與性能指針之間進(jìn)行權(quán)衡。一旦確定了適宜的量化結(jié)果,使用AccelDSP綜合工具的下一步就是為Xilinx目標(biāo)器件生成RTL??梢酝ㄟ^(guò)使用表1所列綜合指令來(lái)規(guī)定硬件含義。使用這些指令可以規(guī)范基于硬件的設(shè)計(jì)瀏覽,使設(shè)計(jì)小組能夠進(jìn)一步提高結(jié)果質(zhì)量。在綜合RTL時(shí),AccelDSP綜合工具評(píng)估和調(diào)度整個(gè)算法,并且在可能時(shí)進(jìn)行邊界優(yōu)化。


AccelDSP工具在整個(gè)流程中都保持始終如一的驗(yàn)證環(huán)境,這是因?yàn)槭褂昧俗孕r?yàn)式測(cè)試平臺(tái),即使用MATLAB定點(diǎn)設(shè)計(jì)時(shí)生成的輸入/輸出向量來(lái)驗(yàn)證生成的RTL。AccelDSP綜合工具還會(huì)報(bào)告卡爾曼濾波器的流量和延時(shí)量,這是衡量設(shè)計(jì)是否滿(mǎn)足指標(biāo)以及生成時(shí)序精度的SystemGenerator模型所必需的。

生成System Generator模型


成功完成RTL驗(yàn)證之后,即可通過(guò)單擊“Generate System Generator”圖標(biāo)來(lái)為設(shè)計(jì)生成System Generator模型。AccelDSP工具產(chǎn)生一個(gè)可支持仿真和RTL代碼的System Generator IP模塊。


此時(shí),設(shè)計(jì)流程過(guò)渡到System Generator for DSP,其中可以在Simulink庫(kù)瀏覽器中使用卡爾曼濾波器的新模塊,只需選擇卡爾曼濾波器模塊,然后將其拖入到目標(biāo)環(huán)境中,便可將AccelDSP生成的卡爾曼濾波器集成到System Generator設(shè)計(jì)中。


結(jié)束語(yǔ)


自定制DSP算法最適于用MATLAB建立數(shù)學(xué)模型,而完整的系統(tǒng)則最適于用Simulink建立時(shí)序精度的模型。這兩種建模域緊密結(jié)合即可使用豐富的MATLAB語(yǔ)言(包括內(nèi)置函數(shù)和工具箱函數(shù))來(lái)創(chuàng)建復(fù)雜DSP算法的System Generator IP模塊,從而為在FPGA中設(shè)計(jì)DSP系統(tǒng)提供一種有效的手段。



評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉