在現(xiàn)代電子系統(tǒng)中,,到處都可以看到數(shù)字信號(hào)處理( DSP )的應(yīng)用,從MP3播放器,、數(shù)碼相機(jī)到手機(jī),。DSP設(shè)計(jì)人員的工具箱的支柱之一是有限脈沖響應(yīng)( FIR )濾波器。FIR濾波器越長(zhǎng)(有大量的抽頭),濾波器的響應(yīng)越好,。然而這里有折衷的情況,,由于大量的抽頭增加了對(duì)邏輯的需求、增加了計(jì)算的復(fù)雜性,,增加了功耗,,以及可能引起飽和/溢出。
多相技術(shù)可以用于實(shí)現(xiàn)濾波器,,擁有與傳統(tǒng)FIR濾波器可比的結(jié)果,,而且使用了較少的邏輯、需要較少的計(jì)算資源,、更低的功耗,,并減少了可能的飽和/溢出??捎萌缃裥滦偷男∫?guī)模,、中檔的FPGA,如LatticeECP3 來實(shí)現(xiàn)這些濾波器,。
基本概念
進(jìn)入DSP世界可能會(huì)有些令人生畏,,因此,讓我們首先介紹一些簡(jiǎn)單的概念,。對(duì)于數(shù)字系統(tǒng),,如音頻,視頻和無線領(lǐng)域,,形成信號(hào)的結(jié)果是與采樣率相關(guān)的,。舉例來說,以48 kHz(即每秒48000個(gè)樣本)對(duì)專業(yè)音頻信號(hào)進(jìn)行采樣,。相比之下,,消費(fèi)者的CD播放機(jī)則使用44.1 kHz的采樣率。
多速率系統(tǒng)
多速率系統(tǒng)使用多個(gè)采樣速率,。在某些情況下,,運(yùn)行于某個(gè)速率的系統(tǒng)的一部分需要一個(gè)原來以另外某個(gè)速率采樣的信號(hào)(轉(zhuǎn)換專業(yè)音頻到消費(fèi)者的CD音頻就是一個(gè)例子)。在這種情況下,,原始信號(hào)的速率必須根據(jù)需要增加或減少,。
或者針對(duì)特定的用途,也可能以比實(shí)際需要更高的速率對(duì)原來的數(shù)據(jù)進(jìn)行了采樣,。因此,,降低采樣率,然后運(yùn)行所得到的數(shù)據(jù)就可以大幅度降低數(shù)據(jù)吞吐量的要求,,降低對(duì)存儲(chǔ)器的要求,,提高處理效率并降低功耗,。
向下采樣和抽取
讓我們首先考慮降低采樣率的問題。假設(shè)我們有一個(gè)信號(hào),,原來以我們稱之為fHz的某一頻率進(jìn)行采樣,,如如圖1所示。

圖1 用f Hz采樣率對(duì)原始信號(hào)采樣
現(xiàn)在假設(shè)我們要降低采樣率至原來頻率的1/4,。達(dá)到此目的一個(gè)方法來就是簡(jiǎn)單地扔掉每四個(gè)原始采樣中的三個(gè),,如圖2所示。

圖2 用1/4 f Hz采樣率得到新的信號(hào)
在數(shù)字信號(hào)處理中,, “混疊現(xiàn)象”是指采樣時(shí)造成不同的連續(xù)信號(hào)彼此難以區(qū)分的情況,,它們互相“混疊”。 混疊現(xiàn)象也稱為失真,,或贗品,即源于采樣重構(gòu)的信號(hào)不同于原來的連續(xù)信號(hào),。
如果我們丟棄了如上文所討論的一些樣本,,由此得到的信號(hào)會(huì)含有混疊現(xiàn)象的贗品。作為一個(gè)簡(jiǎn)單的例子,,考慮一個(gè)音頻信號(hào),,可能含有人耳聽不見的高頻分量的樂曲。如果我們以過低的速率對(duì)這個(gè)信號(hào)采樣(當(dāng)我們丟棄一些樣本時(shí),,實(shí)際上是我們正在做的事情),,然后用數(shù)字模擬轉(zhuǎn)換器重構(gòu)這個(gè)樂曲,我們可以聽到欠采樣高頻分量的低頻混疊,。
為了避免這種情況,,常見的做法是在丟棄不想要的樣本之前,用低通濾波器去除不要的高頻,,如圖3所示,。

圖3 在丟棄任何樣本前對(duì)這個(gè)信號(hào)進(jìn)行濾波
一般而言, “向下采樣”只是指丟棄樣本的處理而不執(zhí)行濾波的操作,。相比之下,, “抽取”指的是降低采樣率的整個(gè)過程,即執(zhí)行濾波操作,,然后丟棄樣本,。實(shí)際上, “向下采樣” ,、“下變頻”和“抽取”往往交替使用,。
“抽取因子”是指輸入采樣率與輸出采樣率之比。通常用字母M來表示,。在上面的例子中,,輸入速率是輸出速率的4倍,,所以M=4。
向上采樣和內(nèi)插
現(xiàn)在考慮的情況是,,我們希望提高采樣率,。這樣做的原因是為了使系統(tǒng)的另一部分與信號(hào)運(yùn)行在更高的采樣速率。假設(shè)我們從一個(gè)信號(hào)開始,,即原來以我們稱為fHz的某個(gè)頻率進(jìn)行采樣的信號(hào),,如圖4所示。

圖4 采樣率為f Hz的原始信號(hào)
現(xiàn)在假設(shè)我們要增加采樣率為原來頻率的4倍,。我們開始在原始樣本之間插入零值樣本,,以提高采樣率,如圖5所示,。

圖5 用零值樣本對(duì)原始信號(hào)進(jìn)行擴(kuò)充
但現(xiàn)在有一個(gè)問題,,因?yàn)樾碌牧阒禈悠诽砑恿瞬灰念l譜分量至信號(hào)。為了解決此問題,,我們對(duì)這個(gè)新的信號(hào)進(jìn)行了濾波,,除去了不想要的分量,產(chǎn)生了更合適的采樣值,,如圖6所示,。

圖6采樣率為4倍 fHz的最終信號(hào)
從技術(shù)上講, “ 向上采樣 ”只是指插入零值樣本的過程,。相比之下,, “內(nèi)插”指的是增加采樣率的整個(gè)過程,即插入零值樣本,,然后進(jìn)行濾波操作1,。實(shí)際上, “向上采樣 ”,、“向上轉(zhuǎn)換”和“內(nèi)插”往往交替使用,。
“內(nèi)插因子”指的是輸出采樣率對(duì)輸入采樣率的比例。這通常用字母L來表示,。在上面的例子中,,輸出速率4倍于輸入速率,因此,,L = 4 ,。這個(gè)過程的圖形說明參見圖7。

圖7 插入零值樣本后對(duì)這個(gè)信號(hào)進(jìn)行濾波
重采樣
前面的討論中,,應(yīng)該指出的是,,抽取和內(nèi)插因子可以假設(shè)為只有整數(shù)值。也就是說,,我們只可以抽取或內(nèi)插整數(shù)因子,,而不是分?jǐn)?shù)因子,。例如,如果進(jìn)行抽取,,我們只能丟棄整數(shù)的樣本(2個(gè)中的1個(gè),、3個(gè)中的1個(gè)、3個(gè)中的2個(gè),、3個(gè)4個(gè)中的3個(gè),,等等)。
假設(shè)我們要修改信號(hào)的采樣率,,以便在兩個(gè)子系統(tǒng)之間進(jìn)行接口,。如果子系統(tǒng)的采樣率的比率是一個(gè)整數(shù)值,那么我們只需要執(zhí)行抽取或內(nèi)插,。但是,,如果采樣率的比率是一個(gè)分?jǐn)?shù)值,那么我們需要進(jìn)行抽取和內(nèi)插的組合,,這樣的過程稱之為重采樣,。
例如,如果用2.5因子進(jìn)行重采樣,,首先我們用插值因子為5 ,然后用抽取因子2產(chǎn)生輸出對(duì)輸入采樣率為5/2 = 2.5的采樣率,,如圖8所示,。

圖8 重采樣(L= 5、M= 2 )
在實(shí)踐中,,如圖8所示的內(nèi)插和抽取濾波器將組合在一起,。術(shù)語“重采樣因子”是指輸出采樣率和輸入采樣率之間的比例。不考慮涉及的頻率,,這可以表示為內(nèi)插和抽取因子L/M之間的比例,,在上面的例子中就是5/2 = 2.5。
作為另一個(gè)例子,,考慮重采樣專業(yè)音頻信號(hào)的過程,,采樣率為48千赫,對(duì)于消費(fèi)者的音頻設(shè)備,,需要的采樣率為44.1千赫,。在這種情況下,重采樣因子等于輸出速率對(duì)輸入速率之比: 44.1 kHz /48 kHz = 0.91875 ,。
看看另一種方法,,采樣速率必須由48,000Hz改變到44100Hz,這意味著輸入輸出比為44100/48,000 = = 441 / 480 = 147 / 160,。由于在147和160中沒有公共的因子,,我們只好就此止步,,這意味著我們需要的內(nèi)插因子為147 ,然后抽取因子為160,,如圖9所示,。

圖9 對(duì)商業(yè)音頻重采樣(L= 147、M= 160 )
再次說明,,重采樣因子可表示為內(nèi)插和抽取因子L/M之間的比例,,就是147/160 =0.91875 。毫不意外,,這正是我們得到的與輸入和輸出采樣率的比例完全相同的值,,因?yàn)樗璧膬?nèi)插和抽取因子源于這些比率。
介紹FIR濾波器
有兩種基本類型的數(shù)字濾波器:有限脈沖響應(yīng)( FIR )和無限脈沖響應(yīng)( IIR),。
IIR濾波器使用反饋,,而且往往是模仿傳統(tǒng)的模擬濾波器的響應(yīng)。反饋的用途意味著他們的脈沖響應(yīng)是遞歸的,,并延伸到無限的時(shí)段,。雖然可以用比FIR濾波器更少的計(jì)算來實(shí)施IIR濾波器,IIR濾波器可能有穩(wěn)定性的問題,,他們可能與用FIR濾波器完成的性能不匹配,。
相比之下, FIR濾波器沒有反饋,,這意味著它的脈沖響應(yīng)在一個(gè)有限的時(shí)間范圍之內(nèi),。 FIR濾波器擁有優(yōu)于IIR濾波器的幾個(gè)優(yōu)點(diǎn),其中包括一個(gè)事實(shí),,即在整個(gè)頻譜范圍,,他們有完全恒定的群時(shí)延,在所有頻率范圍內(nèi),,不論濾波器的大小,,他們是完全穩(wěn)定的。
通用FIR濾波器的圖形表示如圖10所示,。在這種情況下,,輸入樣本xn通過一系列的緩沖寄存器(這些都標(biāo)記為z-1,對(duì)應(yīng)延時(shí)單元的Z變換),。

圖10 經(jīng)典FIR濾波器的通用表示
濾波器的工作原理是用一系列的常數(shù)(稱為抽頭系數(shù))乘以一系列最新的n個(gè)數(shù)據(jù)采樣,,并對(duì)所得到的數(shù)組的單元進(jìn)行求和。通過改變系數(shù)和濾波器抽頭數(shù)目的加權(quán)(值),,F(xiàn)IR濾波器實(shí)際上可實(shí)現(xiàn)幾乎任何所需的頻率響應(yīng)特性,。
問題是FIR濾波器可能需要大量的抽頭(有時(shí)數(shù)百個(gè)),以實(shí)現(xiàn)其預(yù)定的目標(biāo),。每一個(gè)抽頭需要消耗邏輯資源的乘法器累加器( Mac )單元,。另外在每個(gè)時(shí)鐘,,每個(gè)抽頭執(zhí)行消耗功率2的乘法和加操作。
用多相FIR濾波器進(jìn)行抽取
多相濾波器的基本概念是把FIR濾波器分割成若干較小的單元,,然后組合這些單元的結(jié)果,。首先,讓我們考慮一個(gè)基于常規(guī)8抽頭FIR濾波器的抽取子系統(tǒng)的符號(hào)表示,,如圖11所示(為了使用這些例子,,我們假設(shè)抽取因子為M = 4 )。

圖11 基于傳統(tǒng)的8抽頭FIR濾波器的抽取器的符號(hào)表示
現(xiàn)在讓我們假設(shè)主時(shí)鐘正在以某一頻率fHz運(yùn)行,。像往常一樣,,在濾波操作之后任何不要的樣本將被丟棄,但這樣做是低效率的,,因?yàn)檫@意味著是以完全的時(shí)鐘頻率在進(jìn)行濾波,。用另一種方式來看這種操作,即在每個(gè)時(shí)鐘時(shí)刻,,每個(gè)抽頭級(jí)執(zhí)行乘法和加運(yùn)算,。
相比多相實(shí)現(xiàn)的情況,我們可以將原來的8抽頭FIR濾波器分為四個(gè)2抽頭子濾波器,,如圖12所示,。

圖12 基于4 × 2抽頭多相濾波器的抽取器的符號(hào)表示
假設(shè)同樣的主時(shí)鐘以f Hz的頻率運(yùn)行,我們可以想象輸入數(shù)據(jù)流被送入一個(gè)旋轉(zhuǎn)開關(guān)(當(dāng)然,,這可用標(biāo)準(zhǔn)的邏輯技術(shù)來實(shí)現(xiàn)),。第一個(gè)數(shù)據(jù)值送入第一個(gè)子濾波器;第二個(gè)數(shù)據(jù)值送入第二個(gè)子濾波器;第三個(gè)數(shù)據(jù)值送入第三個(gè)子濾波器;第四個(gè)數(shù)據(jù)值送入第四個(gè)子濾波器。然后,,我們進(jìn)行“循環(huán)”操作,以便第五個(gè)數(shù)據(jù)值送入第一個(gè)子濾波器;第六個(gè)數(shù)據(jù)值送入第二個(gè)子濾波器;等等,。
使用子濾波器減少了可能的飽和/溢出(發(fā)生任何飽和/溢出通常只需要在最后的函數(shù)求和時(shí)進(jìn)行處理),。另外,使用子濾波器具有一個(gè)直接有效的優(yōu)點(diǎn),,因?yàn)樵趫?zhí)行濾波操作之前,,我們有效地“抽取”了數(shù)據(jù)。這也意味著,,我們的四個(gè)子濾波器中的每個(gè)都能有效地以F ÷ 4Hz的頻率運(yùn)行,,如圖13所示。

圖13 4 × 2抽頭多相濾波器的運(yùn)行情況
除了任何寄存器和一般用途的邏輯,,常規(guī)8抽頭FIR濾波器中的每個(gè)抽頭包含一個(gè)乘法器和一個(gè)加法器,,當(dāng)然為我們提供了總共8個(gè)乘法器和8個(gè)加法器。濾波器之后需要一些額外的邏輯,,以便丟棄任何不想要的樣本,。
同樣,,在我們最初的4 × 2抽頭多相實(shí)現(xiàn)中的每一個(gè)抽頭含有一個(gè)乘法器和一個(gè)加法器,再次為我們提供了總共8個(gè)乘法器和8個(gè)加法器,。在多相實(shí)現(xiàn)中,,需要實(shí)現(xiàn)“旋轉(zhuǎn)開關(guān)”送入濾波器的邏輯數(shù)量大約相當(dāng)于在常規(guī)8抽頭FIR濾波器中丟棄不要的樣本所需的邏輯。
當(dāng)然,,多相實(shí)現(xiàn)還需要一些額外的邏輯和一個(gè)加法器累加來自四個(gè)子濾波器的結(jié)果,。因此,最終的結(jié)果是,,最初的多相實(shí)現(xiàn)需要比傳統(tǒng)的8抽頭FIR濾波器更多一點(diǎn)的邏輯,。
然而,對(duì)于傳統(tǒng)的8位FIR濾波器,,在每個(gè)時(shí)鐘都要執(zhí)行8次乘和8次加,。相比最初的多相實(shí)現(xiàn)的情況,在任何主時(shí)鐘時(shí)刻,,只有一個(gè)子濾波器是工作的,。由于在這個(gè)例子中每個(gè)子濾波器含有兩個(gè)抽頭,這意味著這個(gè)功能的濾波器部分在每個(gè)時(shí)鐘只進(jìn)行兩次乘法和兩次加法,。
當(dāng)然,,從四個(gè)子濾波器收集結(jié)果的求和功能還必須在每個(gè)主時(shí)鐘進(jìn)行加(在每4時(shí)鐘周期開始時(shí),這個(gè)累加器清零;它從四個(gè)子濾波器收集結(jié)果; 在每4時(shí)鐘周期結(jié)束時(shí),,它產(chǎn)生一個(gè)新的值),。
這意味著,最初的多相實(shí)現(xiàn)的每個(gè)子濾波器有效地以常規(guī)8抽頭FIR濾波器1/ 4的頻率運(yùn)行,。反過來,,這意味著最初多相實(shí)現(xiàn)只在每個(gè)主時(shí)鐘進(jìn)行兩次乘法和三次加法(包括加法器的加操作),從而大大節(jié)省了功耗,。
此外,,在最初的多相實(shí)現(xiàn)中,由于四個(gè)子濾波器的每個(gè)只用了1/4的時(shí)間,,這意味著在任何特定時(shí)間,,我們實(shí)際上只需要其中的一個(gè),這使我們更加完善了實(shí)現(xiàn)方法,,如圖14所示,。

圖14 更完善的基于多相濾波器的抽取器實(shí)現(xiàn)方案
在這種情況下,我們采用了單一的2抽頭子濾波器,,每個(gè)抽頭含有乘法器和加法器,。在每個(gè)主時(shí)鐘,我們選擇合適的系數(shù)對(duì)。每一個(gè)抽頭需要額外的寄存器和用于維護(hù)的邏輯,,但與減少的乘法器和加法器相比,,與我們的最初多相實(shí)現(xiàn)相比,這是微不足道的,。
當(dāng)然,,在我們?cè)瓉淼亩嘞鄬?shí)現(xiàn)中,我們?nèi)匀灰诿總€(gè)主時(shí)鐘時(shí)刻執(zhí)行兩次乘法和三次加法,,,。這些抽取實(shí)現(xiàn)例子的總結(jié)如表1所示。
表1抽取實(shí)現(xiàn)實(shí)例的總結(jié)

利用多相FIR濾波器進(jìn)行內(nèi)插
現(xiàn)在讓我們來考慮內(nèi)插的情況,。首先讓我們先考慮一個(gè)基于常規(guī)8抽頭FIR濾波器的內(nèi)插子系統(tǒng)的符號(hào)表示,,如圖15所示。

圖15傳統(tǒng)的基于8抽頭FIR濾波器的內(nèi)插器的符號(hào)表示
針對(duì)這些例子的用途,,我們假設(shè)內(nèi)插因子為L(zhǎng) = 4,,主時(shí)鐘頻率為FHz。正如先前所討論的,,向上采樣(插入零值樣本的過程)發(fā)生在濾波操作之前,。
現(xiàn)在讓我們來考慮一個(gè)最初的多相實(shí)現(xiàn),我們?cè)瓉淼?抽頭FIR濾波器被分成四個(gè)2 抽頭子濾波器,,如圖16所示,。

圖16 基于4 × 2抽頭多相濾波器的內(nèi)插器的符號(hào)表示
在這種情況下,相同的輸入數(shù)據(jù)流面向所有的四個(gè)子濾波器,,在子濾波器輸出之間輪流產(chǎn)生主輸出數(shù)據(jù)流,。最終的結(jié)果是,多相實(shí)現(xiàn)含有如同我們的常規(guī)8抽頭FIR濾波器相同數(shù)量的乘法器和加法器,。然而,,因?yàn)樵趦?nèi)插之前進(jìn)行了濾波,子濾波器只需要以1 / 4的主時(shí)鐘頻率運(yùn)行,,從而大大節(jié)省了功耗(這里主時(shí)鐘用于子濾波器輸出之間的采樣),。
此外,多相實(shí)現(xiàn)不需要向上采樣(零值插入)的邏輯,。當(dāng)然,,我們可以用完全運(yùn)行于主時(shí)鐘頻率和復(fù)用系數(shù)的單個(gè)2抽頭子濾波器取代原來的多相濾波器實(shí)現(xiàn),。
內(nèi)插實(shí)現(xiàn)的這些例子的總結(jié)見表2 ,。
表2內(nèi)插實(shí)現(xiàn)實(shí)例的總結(jié)

總結(jié)
DSP設(shè)計(jì)人員的工具箱的支柱之一是有限脈沖響應(yīng)( FIR )濾波器。FIR濾波器越長(zhǎng)(有大量的抽頭),,濾波器的響應(yīng)越好,。但是更多的抽頭增加了邏輯要求、增加了計(jì)算的復(fù)雜性,,增加了功耗,,以及有更大可能的飽和/溢出,。
多相技術(shù)3可用于實(shí)現(xiàn)濾波器,提供可比較的結(jié)果,,而使用較少的邏輯,,需要更少的計(jì)算資源、消耗更低的功率,,并減少了可能的飽和/溢出,。
所有這一切都意味著,多相基于濾波器的抽取器,、內(nèi)插器和重采樣功能是非常適合用更小的中檔FPGA來實(shí)現(xiàn),,如Lattice半導(dǎo)體公司的擁有SERDES功能的LatticeECP3系列,它具有高性能的sysDSP模塊,。它的特點(diǎn)是有dual-slice結(jié)構(gòu),,具有級(jí)聯(lián)/鏈接DSP slice和模塊的功能,增強(qiáng)的DSP指令集使LatticeECP3系列能夠引人注目地用于范圍廣泛的數(shù)字信號(hào)處理的應(yīng)用,,包括那些需要傳統(tǒng)的FIR和基于多相的濾波功能,。