Lattice用中檔FPGA實(shí)現(xiàn)多相濾波器
引言
本文引用地址:http://www.ex-cimer.com/article/261094.htm在現(xiàn)代電子系統(tǒng)中,到處都可以看到數(shù)字信號處理( DSP )的應(yīng)用,從MP3播放器、數(shù)碼相機(jī)到手機(jī)。DSP設(shè)計(jì)人員的工具箱的支柱之一是有限脈沖響應(yīng)( FIR )濾波器。FIR濾波器越長(有大量的抽頭),濾波器的響應(yīng)越好。然而這里有折衷的情況,由于大量的抽頭增加了對邏輯的需求、增加了計(jì)算的復(fù)雜性,增加了功耗,以及可能引起飽和/溢出。
多相技術(shù)可以用于實(shí)現(xiàn)濾波器,擁有與傳統(tǒng)FIR濾波器可比的結(jié)果,而且使用了較少的邏輯、需要較少的計(jì)算資源、更低的功耗,并減少了可能的飽和/溢出??捎萌缃裥滦偷男∫?guī)模、中檔的FPGA,如LATTICEECP3 來實(shí)現(xiàn)這些濾波器。
基本概念
進(jìn)入DSP世界可能會有些令人生畏,因此,讓我們首先介紹一些簡單的概念。對于數(shù)字系統(tǒng),如音頻,視頻和無線領(lǐng)域,形成信號的結(jié)果是與采樣率相關(guān)的。舉例來說,以48 kHz(即每秒48000個(gè)樣本)對專業(yè)音頻信號進(jìn)行采樣。相比之下,消費(fèi)者的CD播放機(jī)則使用44.1 kHz的采樣率。
多速率系統(tǒng)
多速率系統(tǒng)使用多個(gè)采樣速率。在某些情況下,運(yùn)行于某個(gè)速率的系統(tǒng)的一部分需要一個(gè)原來以另外某個(gè)速率采樣的信號(轉(zhuǎn)換專業(yè)音頻到消費(fèi)者的CD音頻就是一個(gè)例子)。在這種情況下,原始信號的速率必須根據(jù)需要增加或減少。
或者針對特定的用途,也可能以比實(shí)際需要更高的速率對原來的數(shù)據(jù)進(jìn)行了采樣。因此,降低采樣率,然后運(yùn)行所得到的數(shù)據(jù)就可以大幅度降低數(shù)據(jù)吞吐量的要求,降低對存儲器的要求,提高處理效率并降低功耗。
向下采樣和抽取
讓我們首先考慮降低采樣率的問題。假設(shè)我們有一個(gè)信號,原來以我們稱之為fHz的某一頻率進(jìn)行采樣,如如圖1所示。
圖1 用f Hz采樣率對原始信號采樣
現(xiàn)在假設(shè)我們要降低采樣率至原來頻率的1/4。達(dá)到此目的一個(gè)方法來就是簡單地扔掉每四個(gè)原始采樣中的三個(gè),如圖2所示。
圖2 用1/4 f Hz采樣率得到新的信號
在數(shù)字信號處理中, “混疊現(xiàn)象”是指采樣時(shí)造成不同的連續(xù)信號彼此難以區(qū)分的情況,它們互相“混疊”。 混疊現(xiàn)象也稱為失真,或贗品,即源于采樣重構(gòu)的信號不同于原來的連續(xù)信號。
如果我們丟棄了如上文所討論的一些樣本,由此得到的信號會含有混疊現(xiàn)象的贗品。作為一個(gè)簡單的例子,考慮一個(gè)音頻信號,可能含有人耳聽不見的高頻分量的樂曲。如果我們以過低的速率對這個(gè)信號采樣(當(dāng)我們丟棄一些樣本時(shí),實(shí)際上是我們正在做的事情),然后用數(shù)字模擬轉(zhuǎn)換器重構(gòu)這個(gè)樂曲,我們可以聽到欠采樣高頻分量的低頻混疊。
為了避免這種情況,常見的做法是在丟棄不想要的樣本之前,用低通濾波器去除不要的高頻,如圖3所示。
圖3 在丟棄任何樣本前對這個(gè)信號進(jìn)行濾波
一般而言, “向下采樣”只是指丟棄樣本的處理而不執(zhí)行濾波的操作。相比之下, “抽取”指的是降低采樣率的整個(gè)過程,即執(zhí)行濾波操作,然后丟棄樣本。實(shí)際上, “向下采樣” 、“下變頻”和“抽取”往往交替使用。
“抽取因子”是指輸入采樣率與輸出采樣率之比。通常用字母M來表示。在上面的例子中,輸入速率是輸出速率的4倍,所以M=4。
向上采樣和內(nèi)插
現(xiàn)在考慮的情況是,我們希望提高采樣率。這樣做的原因是為了使系統(tǒng)的另一部分與信號運(yùn)行在更高的采樣速率。假設(shè)我們從一個(gè)信號開始,即原來以我們稱為fHz的某個(gè)頻率進(jìn)行采樣的信號,如圖4所示。
圖4 采樣率為f Hz的原始信號
現(xiàn)在假設(shè)我們要增加采樣率為原來頻率的4倍。我們開始在原始樣本之間插入零值樣本,以提高采樣率,如圖5所示。
圖5 用零值樣本對原始信號進(jìn)行擴(kuò)充
但現(xiàn)在有一個(gè)問題,因?yàn)樾碌牧阒禈悠诽砑恿瞬灰念l譜分量至信號。為了解決此問題,我們對這個(gè)新的信號進(jìn)行了濾波,除去了不想要的分量,產(chǎn)生了更合適的采樣值,如圖6所示。
圖6采樣率為4倍 fHz的最終信號
從技術(shù)上講, “ 向上采樣 ”只是指插入零值樣本的過程。相比之下, “內(nèi)插”指的是增加采樣率的整個(gè)過程,即插入零值樣本,然后進(jìn)行濾波操作1。實(shí)際上, “向上采樣 ”、“向上轉(zhuǎn)換”和“內(nèi)插”往往交替使用。
“內(nèi)插因子”指的是輸出采樣率對輸入采樣率的比例。這通常用字母L來表示。在上面的例子中,輸出速率4倍于輸入速率,因此,L = 4 。這個(gè)過程的圖形說明參見圖7。
圖7 插入零值樣本后對這個(gè)信號進(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è)我們要修改信號的采樣率,以便在兩個(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)生輸出對輸入采樣率為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è)音頻信號的過程,采樣率為48千赫,對于消費(fèi)者的音頻設(shè)備,需要的采樣率為44.1千赫。在這種情況下,重采樣因子等于輸出速率對輸入速率之比: 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 對商業(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,對應(yīng)延時(shí)單元的Z變換)。
圖10 經(jīng)典FIR濾波器的通用表示
濾波器的工作原理是用一系列的常數(shù)(稱為抽頭系數(shù))乘以一系列最新的n個(gè)數(shù)據(jù)采樣,并對所得到的數(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)的符號表示,如圖11所示(為了使用這些例子,我們假設(shè)抽取因子為M = 4 )。
圖11 基于傳統(tǒng)的8抽頭FIR濾波器的抽取器的符號表示
現(xiàn)在讓我們假設(shè)主時(shí)鐘正在以某一頻率fHz運(yùn)行。像往常一樣,在濾波操作之后任何不要的樣本將被丟棄,但這樣做是低效率的,因?yàn)檫@意味著是以完全的時(shí)鐘頻率在進(jìn)行濾波。用另一種方式來看這種操作,即在每個(gè)時(shí)鐘時(shí)刻,每個(gè)抽頭級執(zhí)行乘法和加運(yùn)算。
相比多相實(shí)現(xiàn)的情況,我們可以將原來的8抽頭FIR濾波器分為四個(gè)2抽頭子濾波器,如圖12所示。
圖12 基于4 × 2抽頭多相濾波器的抽取器的符號表示
假設(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)的邏輯。
然而,對于傳統(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ù)對。每一個(gè)抽頭需要額外的寄存器和用于維護(hù)的邏輯,但與減少的乘法器和加法器相比,與我們的最初多相實(shí)現(xiàn)相比,這是微不足道的。
當(dāng)然,在我們原來的多相實(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)的符號表示,如圖15所示。
圖15傳統(tǒng)的基于8抽頭FIR濾波器的內(nèi)插器的符號表示
針對這些例子的用途,我們假設(shè)內(nèi)插因子為L = 4,主時(shí)鐘頻率為FHz。正如先前所討論的,向上采樣(插入零值樣本的過程)發(fā)生在濾波操作之前。
現(xiàn)在讓我們來考慮一個(gè)最初的多相實(shí)現(xiàn),我們原來的8抽頭FIR濾波器被分成四個(gè)2 抽頭子濾波器,如圖16所示。
圖16 基于4 × 2抽頭多相濾波器的內(nèi)插器的符號表示
在這種情況下,相同的輸入數(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濾波器越長(有大量的抽頭),濾波器的響應(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),具有級聯(lián)/鏈接DSP slice和模塊的功能,增強(qiáng)的DSP指令集使LATTICEECP3系列能夠引人注目地用于范圍廣泛的數(shù)字信號處理的應(yīng)用,包括那些需要傳統(tǒng)的FIR和基于多相的濾波功能。
注釋:
1 DSP的插值形式不同于傳統(tǒng)的數(shù)學(xué)插值方法,從現(xiàn)有的數(shù)據(jù)點(diǎn)構(gòu)建新的數(shù)據(jù)點(diǎn),但它的概念是相同的,因?yàn)樗婕暗綇默F(xiàn)有的值產(chǎn)生新的值。
2 顯然,在第一個(gè)抽頭與0 (零)相加可以省略。然而在實(shí)踐中,由MAC實(shí)行每對加和乘的操作,因此即使我們與0相加,邏輯仍然存在。
3 應(yīng)該指出的是,本文對多相濾波器專題只提供一個(gè)高層次的介紹;文中的例子都做了簡化。
評論