采用DSP、PLD和ASIC實現(xiàn)多速濾波器設(shè)計的比較
在多速濾波器設(shè)計過程中,有效地采用硬件實現(xiàn)插值和抽取功能非常重要,問題的關(guān)鍵還在于怎樣選擇正確的硬件類型。下面分別討論采用DSP、PLD和ASIC實現(xiàn)多速濾波器的方法。
插值和抽取
插值功能常用來增加輸出信號的取樣率(圖1),實際上在原始取樣值附近增加新的取樣值很有必要。由于新的取樣點處的值是未知數(shù),一般就設(shè)為零,因此也被稱為上取樣(upsampling)、零值插入或零值填充。輸出端數(shù)據(jù)點的增加會改變?nèi)铀俾?,從而使奈奎斯特頻率外推。在時域中向數(shù)據(jù)插入零值,則信號在頻域上會產(chǎn)生原始信號頻譜的鏡像。由于取樣速率的改變并不會產(chǎn)生更多的信息,因此所有的鏡像信號(以人工方式加入系統(tǒng)中)都表現(xiàn)為噪聲,幸運的是這些噪聲可以通過理想低通濾波器濾除。
抽取濾波器的工作方式也大致相同。這種濾波器要消除某些取樣點,從而降低取樣速率和奈奎斯特頻率。任何低于或高于奈奎斯特頻率的信號都將表現(xiàn)為噪聲,因此有必要在消除數(shù)據(jù)(下取樣)前加入低通濾波器,這樣可以確保噪聲不串入系統(tǒng)(圖2)。
實現(xiàn)策略
在插值與抽取實現(xiàn)方案中采用的低通濾波器最好具有線性相位特性,一般是利用有限沖擊響應(yīng)(FIR)濾波器來實現(xiàn)這種線性相位濾波器,但FIR濾波器的實現(xiàn)要比無限沖擊響應(yīng)濾波器(IIR)的代價高得多。為了取得更好的性能,需要增加濾波器的階數(shù),而FIR濾波器可以從10階到200階甚至更高。每個濾波器的輸出必須經(jīng)過10到200次運算。由于FIR濾波器非常昂貴,設(shè)計師一般會采用專用硬件來實現(xiàn),這里的專用硬件可能是一塊專用濾波芯片、一種可編程邏輯解決方案或一些半定制(標(biāo)準(zhǔn)化單元實現(xiàn))集成電路。
用標(biāo)準(zhǔn)單元實現(xiàn)的FIR濾波器可以獲得最大的吞吐量,按速度排序的話,可編程邏輯器件(PLD)和專用濾波芯片的吞吐量排第二,然后才是通用DSP器件。當(dāng)最終用戶需要高的數(shù)據(jù)吞吐量時,幾乎沒有什么硬件可以勝過ASIC和PLD。ASIC設(shè)計流程相當(dāng)成熟,對于PLD來說,可以利用能自動創(chuàng)建FIR濾波器的工具來加速開發(fā)流程。為了減小插值與抽取濾波器的芯片面積并增強其性能,很有必要采用一些專門技術(shù)。
目前還沒有最佳的多速濾波器實現(xiàn)方案,而方案的評估也有很多種方法。方案的成本取決于某個實現(xiàn)方案所對應(yīng)的性能要求。這里性能可以定義為每秒鐘乘法運算的總次數(shù)(由于加法一般都與乘法結(jié)合在一起,因此運算成本中不再包含加法)。假設(shè)單個乘法操作需要一個時鐘周期,那么我們就可以確定實現(xiàn)某個方案所需的MIPS值。
檢查插值濾波器的運算速度有個比較直接的方法,即將數(shù)據(jù)先進行上取樣然后再進行濾波。圖3所示的樣本要求采用388抽頭的濾波器,并且濾波器工作時的數(shù)據(jù)速率必須達(dá)到每秒12兆樣點(MSPS)。這種實現(xiàn)方式所要求的運算速率大約為4500MIPS。
多級濾波
好在有許多方法來降低運算速率要求,比如可以在三級內(nèi)實現(xiàn)插值因子為12的多級濾波。設(shè)計人員可以將第一級的插值因子定為2,在第二級再以因子2對第一級的輸出進行插值,然后輸出到第三級,第三級的插值因子設(shè)為3,這樣就有了3級濾波器,圖3給出了每個濾波器的詳細(xì)參數(shù)。
通過分級插值可以降低對每個濾波器的要求,從而減少濾波器的階數(shù)。另外,前二個濾波器分別工作在2MSPS和4MSPS,只有最后一個濾波器才工作在12MSPS,而改進前的方法要求整個濾波器工作在12MSPS。同樣,若采用分級抽取,運算速率就不必要求太高。
多級濾波法可以將運算速率減小到1035MIPS。對多級濾波器的各級重新分配運算任務(wù),用小得多的濾波器就可以達(dá)到期望的運算結(jié)果,這是一種相對高水平的優(yōu)化方法。
多相分解
降低運算速率的另外一種方式需要詳細(xì)分析插值濾波器的實現(xiàn)方案。眾所周知,先進行零值插入然后濾波,就可以將問題分解到多個較短的濾波器中解決,每個濾波器工作于不同的時間點上,這種方法被稱為多相分解,如圖4所示。
舉個簡單的例子來說明一下多相分解的工作原理。在該例中濾波器系數(shù)為24,插值因子為4。由于濾波器插值因子為4,因此實際上大多數(shù)輸出到濾波器的數(shù)據(jù)為零,通過執(zhí)行特殊的乘法操作可以消除這些零數(shù)據(jù)的系數(shù)。例如,第一個輸出數(shù)據(jù)可以單獨由系數(shù)C0、C4、C8……C20確定,而第二個輸出數(shù)據(jù)則由C1、C5、C9……C21等系數(shù)決定。在這種情況下每個輸出只要求6次乘法運算而不是24次乘法運算,調(diào)整插值因子可以減少運算速率。對于插值因子為12的388抽頭濾波器,每個輸出只需33次乘法即可確定。多相插值器可以用388MIPS完成相同的運算量。
抽取結(jié)構(gòu)同樣也可利用類似的技術(shù)。在本例中抽取因子為4,因此4個數(shù)據(jù)點經(jīng)過濾波后只剩下了1個,其實沒有必要去計算被丟棄的取樣點數(shù)。多相抽取器將數(shù)據(jù)分配給4個較短的多相濾波器(抽取因子為4),最后將4個濾波器的輸出疊加在一起從而形成最終濾波輸出。每個多相濾波器以抽取后的數(shù)據(jù)速率輸出數(shù)據(jù),從而降低了對抽取器的性能要求。
當(dāng)然可以綜合運用多種方法以進一步降低運算速率。例如,可以對多相結(jié)構(gòu)中的每個單級濾波器執(zhí)行多級濾波。
采用DSP和內(nèi)核的實現(xiàn)方案
從實現(xiàn)層次看,需要采用特殊的結(jié)構(gòu)(占用最小的器件資源,工作于最低的功耗等)。這種方案的選用取決于運算速度要求,對于要求幾百MIPS的情形采用DSP就是很理想的方案,某些DSP器件的運算速度能達(dá)到1GOPS,采用DSP的典型設(shè)計還能做濾波以外的其它工作,在處理器執(zhí)行的所有不同功能上謹(jǐn)慎地分配MIPS也很有必要。
許多情況下用戶都會做出MIPS預(yù)算,并根據(jù)具體性能要求選擇DSP。如果性能要求超過了單片DSP的處理能力,可以考慮多種應(yīng)變方案,如將任務(wù)分配到多個DSP上,或采用硬件協(xié)處理器來加速運算量巨大的任務(wù),此時,采用ASIC和PLD器件就恰到好處。
采用專用邏輯器件的實現(xiàn)方案
許多半導(dǎo)體供應(yīng)商都提供能實現(xiàn)插值功能的專用芯片,這些芯片包含若干用于實現(xiàn)濾波功能的乘法器,因此能獲得比DSP器件更優(yōu)異的性能。它們還能支持固定數(shù)值的系數(shù)和特定的插值或抽取因子。
ASIC和PLD方案可以結(jié)合起來形成“用戶專用硬件”產(chǎn)品。采用這種方法后可以在一個時鐘周期內(nèi)計算全部127抽頭的FIR濾波器(比DSP快兩個數(shù)量級)。設(shè)計中要仔細(xì)考慮后續(xù)工作,如HDL仿真、綜合、驗證、可測性及故障覆蓋率,這點在DSP設(shè)計中也一樣。
對于完全并行的插值濾波器來說,將濾波器進行多相分解可以產(chǎn)生由較短濾波器構(gòu)成的濾波器組。為了在一個時鐘周期內(nèi)進行一次濾波運算,多相濾波器中的每個系數(shù)必須配備一個乘法器。在每個輸入時鐘周期要完成兩個任務(wù):1.數(shù)據(jù)存貯到每個多相結(jié)構(gòu)中;2.每個濾波器會產(chǎn)生N個輸出。最后輸出時鐘會在同一時間掃描所有的各相濾波器,就如同是單一輸入時鐘的效果。
時鐘域與靜態(tài)時序分析
將設(shè)計分解開來可以得到二個時鐘域,即輸入時鐘與輸出時鐘,輸出時鐘速率是輸入時鐘速率的整數(shù)倍。輸出結(jié)構(gòu)(一個簡單的乘法器)需要以高于輸入多相濾波器的數(shù)據(jù)速率工作。當(dāng)進行專用硬件(如ASIC或可編程邏輯)設(shè)計時可以考慮減小時鐘域的數(shù)量。當(dāng)用ASIC產(chǎn)生掃描向量時需要另外增加時鐘域,通過靜態(tài)時序分析可能還需消除一些錯誤路徑。采用可編程邏輯器件,可供選擇的時鐘信號數(shù)量是固定的,因此每個時鐘域也就顯得更加珍貴。
當(dāng)時鐘使能端作用于多相結(jié)構(gòu)中的觸發(fā)器時,就有可能采用輸出時鐘對整個結(jié)構(gòu)進行時鐘控制。采用時鐘使能功能,多相結(jié)構(gòu)只需運行于輸入時鐘速率(較慢的時鐘信號),還可放寬這些復(fù)雜結(jié)構(gòu)的時序要求。這使多相結(jié)構(gòu)成為一個多循環(huán)組件,靜態(tài)時序必須符合多循環(huán)規(guī)范。在ASIC和PLD為主的設(shè)計流程中使用的時序分析工具需要支持多循環(huán)規(guī)范。
當(dāng)設(shè)計ASIC時,所需數(shù)量的乘法單元可以集成進芯片中,并且可以在最小的面積上獲得所要的速度。ASIC實現(xiàn)方案要比DSP和PLD實現(xiàn)方案的靈活性低,任何改變都需要對整個系統(tǒng)作重新設(shè)計(既費時又費力)。
采用PLD結(jié)構(gòu)的濾波方案
PLD實現(xiàn)方案則不同,用PLD實現(xiàn)濾波功能可以采用兩種結(jié)構(gòu):串行與并行,這兩種結(jié)構(gòu)都能有效地將系數(shù)映射到查尋表格并執(zhí)行乘法運算。完全并行的結(jié)構(gòu)可在單個時鐘周期內(nèi)進行完整的濾波運算,而串行結(jié)構(gòu)需要將運算分配在若干時鐘周期內(nèi)完成(取決于輸入數(shù)據(jù)寬度),因此串行結(jié)構(gòu)的吞吐量較小,但串行結(jié)構(gòu)在芯片的利用率方面還是很高的(只需很小的存儲空間和邏輯單元)。
目前用于可編程邏輯的FIR濾波器自動生成工具已經(jīng)面世。至少這些工具能在給定系數(shù)后自動生成各個濾波器,而更先進的工具可以為用戶產(chǎn)生定點系數(shù),并在此基礎(chǔ)上實現(xiàn)多相濾波器,同時進行芯片面積和速度評估。
本文結(jié)論
實現(xiàn)插值與抽取邏輯的方案很多,設(shè)計師必須評估所需的吞吐量,提出高效率的實現(xiàn)方案,并在設(shè)計優(yōu)化與盡快完工之間取得設(shè)計工時上的平衡。