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