新聞中心

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

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

作者: 時間:2008-05-20 來源:網絡 收藏

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

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


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

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


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


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


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

Xilinx AccelDSPTM綜合工具是專為已經熟悉基于語言的DSP算法建模的算法開發(fā)人員和DSP架構設計師開發(fā)的。借助AccelDSP綜合工具,算法開發(fā)人員可以用浮點MATLAB M文件激勵、評估算法并對結果進行后處理。

DSP硬件系統(tǒng)


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

自定制DSP算法


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


y=f(x)


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


算法的這種特有性質具有兩大好處。


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


y=fft(data,1024)


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

圖2 AccelDSP 握手接口

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

AccelDSP和System Generator工具一起使用


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

卡爾曼濾波器示例


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

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


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


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


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


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


我們再回到卡爾曼濾波器示例,最適宜的方法是使用AccelWare QR矩陣求逆核。AccelWare核是依據(jù)MATLAB語法生成的,可有多種硬件實現(xiàn)架構,這些架構允許用戶對設計進行速度、面積、功耗和噪聲優(yōu)化。為了使用AccelWare功能,需要對代碼進行以下小修改:


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


AccelDSP工具在整個流程中都保持始終如一的驗證環(huán)境,這是因為使用了自校驗式測試平臺,即使用MATLAB定點設計時生成的輸入/輸出向量來驗證生成的RTL。AccelDSP綜合工具還會報告卡爾曼濾波器的流量和延時量,這是衡量設計是否滿足指標以及生成時序精度的SystemGenerator模型所必需的。

生成System Generator模型


成功完成RTL驗證之后,即可通過單擊“Generate System Generator”圖標來為設計生成System Generator模型。AccelDSP工具產生一個可支持仿真和RTL代碼的System Generator IP模塊。


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


結束語


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



評論


相關推薦

技術專區(qū)

關閉