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