在采用FPGA設(shè)計DSP系統(tǒng)中仿真的重要性
仿真是所有系統(tǒng)成功開發(fā)的基礎(chǔ)。通過在不同條件、參數(shù)值和輸入情況下對系統(tǒng)進行高級行為仿真,工程師可以迅速找到、分離并糾正系統(tǒng)的設(shè)計問題。因為在這一階段,比較容易區(qū)分設(shè)計問題和編程問題。通過在系統(tǒng)級工作,設(shè)計人員可以確定這一階段的問題是來自設(shè)計缺陷,而不是編程問題。此外,在信號處理系統(tǒng)設(shè)計中使用基于模型的方法大大縮短了“錯誤診斷延遲”時間——從設(shè)計中出現(xiàn)錯誤到發(fā)現(xiàn)錯誤并分離錯誤的時間。
在電信領(lǐng)域,一直采用現(xiàn)場可編程門陣列(FPGA)做為預(yù)/后處理器或者協(xié)處理器。語音電信應(yīng)用中的數(shù)字信號處理(DSP)要求輸入數(shù)據(jù)為正常語音速率,具有嚴格的時序約束,要求能在連續(xù)的輸入數(shù)據(jù)采樣間完成計算。采用DSP處理器之后,在整個計算中可以執(zhí)行數(shù)萬條指令。但是,無線通信中,一個DSP處理器無法實時實現(xiàn)中頻(IF)和基帶調(diào)制解調(diào)器中的高速算法。利用某些DSP處理器的多個處理單元可以克服指令帶寬限制。然而,創(chuàng)建專用的流水線代碼以真正發(fā)揮這種并行(同時執(zhí)行)的優(yōu)勢需要手工優(yōu)化匯編語言例程。
對這類代碼進行維護、重用和實現(xiàn)會產(chǎn)生很多問題,成本比較高。而且,實際的并行能力也相對較弱。用于實現(xiàn)高帶寬計算的比較好的替代方案是采用FPGA做為預(yù)/后處理器或者協(xié)處理器,將重復(fù)算法和算法中對速率要求嚴格的部分集成到FPGA中。采用FPGA和自動設(shè)計軟件后,工程師能夠采用單純用DSP不可能實現(xiàn)的方式來優(yōu)化系統(tǒng)性能。
圖1顯示了FPGA的速率優(yōu)勢。由于是并行算法,因此,計算吞吐量和時鐘周期數(shù)之比非常高?,F(xiàn)在單個FPGA能夠?qū)崿F(xiàn)幾百個千兆MAC區(qū)。為了發(fā)揮這種性能潛力,可以利用Altera DSP Builder模塊組構(gòu)成的Simulink結(jié)構(gòu)圖來建立一個系統(tǒng)。DSP Builder的好處在于可通過采用標準信號處理模塊,在PLD中建立一個高速信號處理系統(tǒng),而不必通過HDL編程。
設(shè)計人員可以利用DSP Builder中的模塊,為Simulink中的以采樣時間建模的系統(tǒng)生成硬件實現(xiàn)。具體工具包括比特和周期精度級的Simulink模塊,包含算法和存儲功能等基本操作。Altera DSP IP庫支持的復(fù)雜功能和子系統(tǒng),也可以采用提供的DSP Builder模塊組來集成。
FPGA中的DSP系統(tǒng)設(shè)計需要高級算法和后端HDL開發(fā)工具,將自動生成的HDL綜合到硬件中。采用這兩種集成工具,設(shè)計人員不需要成為VHDL或者Verilog程序員。這些程序包是自動系統(tǒng)生成工具,在其中對硬件系統(tǒng)組件進行定義、互聯(lián)、仿真和驗證,不需要進行下層的HDL的編程。采用真正的“指向然后點擊”設(shè)計方法,完全在PC中將系統(tǒng)結(jié)構(gòu)生成一個完整的系統(tǒng),對其進行仿真和驗證,并下載到FPGA中。
圖1.一個算法的串行和并行實現(xiàn)對比
DSP Builder使用 MathWorks公司的MATLAB工具和Simulink環(huán)境來生成信號處理系統(tǒng)。這一工具結(jié)合了MATLAB/Simulink的算法開發(fā)、仿真、驗證功能以及FPGA設(shè)計軟件的硬件綜合和仿真功能。DSP Builder集成到Simulink中,系統(tǒng)、算法和硬件設(shè)計人員利用這一工具可以共享使用“拖放”結(jié)構(gòu)的開發(fā)平臺。從大菜單選項中選擇DSP Builder模塊組的組件,將其放置到Simulink工作空間中,用鼠標點擊把它們連接起來。通過下拉菜單來控制指定組件的參數(shù)。
圖2. 一個互相關(guān)的DSP Builder結(jié)構(gòu)圖
在做出決定使用FPGA處理來實現(xiàn)項目時,主要設(shè)計任務(wù)是將設(shè)計劃分為多個任務(wù),在協(xié)處理器、DSP處理器或者其他系統(tǒng)微處理器(主處理器)中實現(xiàn)。在某些情況下,使用軟核處理器后,能夠在一個FPGA中實現(xiàn)整個系統(tǒng),從而可以從硬件設(shè)計中省去主處理器。進行任務(wù)劃分時,解決問題最簡單、最直接的方法是將問題分成兩個獨立但又相關(guān)的部分:計算算法本身和算法的硬件控制。
對設(shè)計進行劃分時,設(shè)計人員一般會發(fā)現(xiàn),算法中有的部分很顯然應(yīng)該放到FPGA中,而有的則取決于很多系統(tǒng)問題,例如控制代碼的內(nèi)容等。進行這種判斷的一個好方法是開發(fā)代碼的高級語言(例如C/C++或MATLAB)模型。
與復(fù)雜系統(tǒng)的設(shè)計判斷一樣,將全部或者部分算法移植到FPGA協(xié)處理器中取決于很多因素,需要對設(shè)計中硬件和軟件組件的性能需求、容量、復(fù)雜度和靈活性進行分析。例如,對于目前能在低成本DSP處理器中以足夠速度運行的一個簡單算法,將其移植到PLD中運行就不一定合適,除非設(shè)計目的是進一步提高硬件集成度,縮小PCB面積。然而,如果您的系統(tǒng)性能很高,已經(jīng)把DSP處理器的性能發(fā)揮到極限,但仍然要求系統(tǒng)具有更新的靈活度,那么FPGA協(xié)處理器將是唯一的可行方案。
圖3. DSP Builder設(shè)計流程
Altera設(shè)計軟件(Quartus II 軟件、DSP Builder和用于集成控制面組件的SOPC Builder系統(tǒng)集成工具)是系統(tǒng)開發(fā)方面的重要進步。與高端DSP處理器