胥珂銘,高 博,龔 敏
(四川大學(xué)物理學(xué)院,成都 610065)
高分辨率的數(shù)據(jù)成為了現(xiàn)代生物醫(yī)學(xué)信號處理系統(tǒng)中的重要參數(shù)之一[1-4],SAR ADC在這種使用環(huán)境下精度不足以滿足要求[5]。Sigma-Delta ADC是最合適的高分辨率結(jié)構(gòu),而且容易集成到信號處理系統(tǒng)中[6]。Sigma-Delta ADC結(jié)構(gòu)分為調(diào)制器和抽取濾波器兩個主要部分,目前調(diào)制器的設(shè)計(jì)可以達(dá)到120 dB以上[7-9],這對抽取濾波器的設(shè)計(jì)提出了高性能要求。在Sigma-Delta ADC中,抽取濾波器是功耗最大、占面積最大的模塊。單極濾波器難以在高阻帶抑制、平坦的通帶、降采樣上達(dá)到設(shè)計(jì)目標(biāo)[10-11]。一些文章采用多級濾波器結(jié)構(gòu),其中第一級常為CIC濾波器加補(bǔ)償濾波器進(jìn)行降采樣[12-14]。CIC濾波器無乘法器,用于降采樣可以有效降低濾波器面積,但是其有明顯的帶內(nèi)衰減,需要加入有乘法器的補(bǔ)償濾波器設(shè)計(jì),又增加了部分面積[15];有文章把CIC濾波器的補(bǔ)償濾波器當(dāng)作第二級,即CIC濾波器、FIR補(bǔ)償濾波器、半帶或FIR濾波器的三級結(jié)構(gòu),這種結(jié)構(gòu)相比第一級為CIC濾波器加補(bǔ)償FIR濾波器的結(jié)構(gòu)來說,面積更小,但是阻帶抑制不如之前的結(jié)構(gòu)[16];也有文章在設(shè)計(jì)中把FIR濾波器替換成無限脈沖響應(yīng)數(shù)字濾波器(Infinite Impulse Response Filter,IIR Filter),相比FIR濾波器,IIR濾波器計(jì)算更簡單,面積相對較小,但I(xiàn)IR濾波器有非線性相位的問題,需要額外增加相位補(bǔ)償器,或用于對相位不敏感的系統(tǒng)中[17]。銳化CIC濾波器對通帶寬度和阻帶抑制都有改善[18],但是對面積和功耗都有一定的妥協(xié)。
本文提出一種低面積、高精度的抽取濾波器結(jié)構(gòu),濾波器的降采樣率為32。該濾波器級聯(lián)了4階4抽SCIC濾波器,29階4抽FIR濾波器和148階2抽的半帶濾波器。其中SCIC濾波器有良好的通帶帶寬和混疊帶抑制且不需要補(bǔ)償濾波器,后兩級濾波器使用乘法器復(fù)用級數(shù),極大壓縮乘法器數(shù)量,在不影響性能的情況下減少邏輯單元數(shù)量,降低FPGA資源消耗。
該濾波器的降采樣率為32,預(yù)設(shè)濾波器采樣頻率為20 MHz,第一級SCIC濾波器設(shè)計(jì)為最大平坦通帶,后兩級FIR濾波器工作在更低的頻率,且使用了很少的乘法器,以降低資源消耗。整體系統(tǒng)結(jié)構(gòu)如圖1所示,圖中L為濾波器階數(shù),x(n)為SCIC濾波器輸入,y(n)為SCIC輸出。第一級SCIC濾波器采用了遞歸結(jié)構(gòu),第二級為一個盡可能少系數(shù)的FIR濾波器。第一級與第二級的主要作用是降采樣,同時(shí)防止信號混疊,其中第一級SCIC濾波器是主要的混疊可能產(chǎn)生的結(jié)構(gòu)。第三級則是一個半帶濾波器,因?yàn)榘霂V波器有一半的濾波器系數(shù)為0,且其通帶總是在奈奎斯特頻率的一半處。半帶濾波器沒有通帶波紋,在第一級與第二級的降采樣下,乘法器復(fù)用數(shù)量可以更大,更加節(jié)省FPGA資源,這一級在降采樣的同時(shí)對阻帶進(jìn)行有效的抑制。
圖1 多級級聯(lián)濾波器整體結(jié)構(gòu)
第一級為一個SCIC濾波器,該濾波器結(jié)構(gòu)由KWENTUS等人提出[19],傳遞函數(shù)的z域表達(dá)式如下:
其中傳遞函數(shù)HCIC(z)為
M為抽取率。
多階SCIC與4階CIC濾波器對比的頻率響應(yīng)如圖2所示,圖2中縱坐標(biāo)為阻帶衰減,橫軸為歸一化頻率。4階SCIC濾波器與4階CIC濾波器相比,其通帶更寬,阻帶抑制也更高。SCIC濾波器級數(shù)的旁瓣衰減比CIC濾波器更大,每多一級旁瓣衰減增加約22 dB。級數(shù)同樣影響混疊帶抑制,在固定4抽取的情況下,3階4抽SCIC旁瓣衰減有58 dB,混疊帶抑制有135 dB,而4階4抽SCIC旁瓣衰減有80 dB,混疊帶抑制有180 dB,雖然5階4抽的SCIC濾波器旁瓣衰減有100 dB,且阻帶抑制超過200 dB,但對于本濾波器設(shè)計(jì),第一級濾波器的降采樣和防混疊目標(biāo)只需要4階4抽SCIC就可以滿足,沒有繼續(xù)提高階數(shù)的需求。所以應(yīng)用在本次設(shè)計(jì)中,設(shè)計(jì)為4階4抽SCIC,其通帶可以滿足濾波器系統(tǒng)通帶290 kHz,在通帶處的衰減僅為0.011 dB,因此完全可以省去補(bǔ)償濾波器,同樣條件下CIC濾波器通帶有0.18 dB的衰減,需要添加補(bǔ)償濾波器。雖然SCIC濾波器需要復(fù)數(shù)個CIC濾波器,但是省略了補(bǔ)償濾波器的結(jié)構(gòu),F(xiàn)IR補(bǔ)償濾波器存在大量加法器與乘法器,因此減少補(bǔ)償濾波器后整體的資源消耗是降低的。4階4抽的SCIC濾波器混疊抑制超過150 dB,通帶衰減小,可以達(dá)到設(shè)計(jì)目標(biāo)。
圖2 SCIC頻率響應(yīng)
該SCIC濾波器是非遞歸結(jié)構(gòu)[19],相比遞歸結(jié)構(gòu),非遞歸結(jié)構(gòu)的所有模塊都需要全字長,且因?yàn)镾CIC結(jié)構(gòu)是3個CIC濾波器級聯(lián),因此每增加一位輸入位寬,相對于CIC濾波器需要增加3倍的寄存器,這對于節(jié)省資源是不利的。為了節(jié)省資源,本設(shè)計(jì)中把SCIC修改為遞歸結(jié)構(gòu)。對于式(2)中(1-z-M)可以拆分為
其中(1-z-1)可與式(2)分母約分,得到:
根據(jù)第一稀有恒等式,對于(1+z-M/2n),如果經(jīng)過M/2n抽取率會變?yōu)?1+z-1),因此把CIC濾波器結(jié)構(gòu)改變?yōu)槎鄠€(1+z-1)級聯(lián),每個級聯(lián)之間加入2抽取,CIC結(jié)構(gòu)只有(1+z-1)的模塊。這就是遞歸結(jié)構(gòu)的CIC濾波器。遞歸CIC濾波器每個(1+z-1)模塊固定增加一位字長,不需要所有模塊增加全字長,因此節(jié)省了寄存器,相比非遞歸結(jié)構(gòu)達(dá)到了節(jié)省資源的作用。
對于SCIC,其為3個CIC濾波器級聯(lián),把CIC濾波器改為遞歸結(jié)構(gòu)后,其遞歸結(jié)構(gòu)如圖1所示,其傳輸函數(shù)如式(1)所示。
第二級為一個29階4抽的FIR濾波器,F(xiàn)IR濾波器傳遞函數(shù)如下:
其中h(n)為濾波器系數(shù)。
該級FIR濾波器主要作用是降采樣,因此對于過渡帶不做過多要求,設(shè)計(jì)主要目標(biāo)在階數(shù)、通帶波紋和阻帶抑制平衡。其中最重要的是通帶波紋,高精度的濾波器需要通帶足夠平坦,因此不能有太大的通帶波紋,這一級的通帶波紋設(shè)計(jì)為0.01 dB。FIR濾波器的阻帶抑制不需要太大,設(shè)計(jì)為60 dB防止混疊,在滿足這兩個要求的情況下,設(shè)計(jì)階數(shù)為29階,使用乘法器復(fù)用結(jié)構(gòu)后正好只需要一個乘法器即可以完成29階系數(shù)的計(jì)算,對于乘法器的節(jié)省有很好的作用。乘法器復(fù)用結(jié)構(gòu)將在下面介紹。最終FIR濾波器參數(shù)如表1所示。
表1 第二級參數(shù)
為了節(jié)省資源,F(xiàn)IR濾波器與下一級半帶濾波器均采用了乘法器復(fù)用結(jié)構(gòu),其結(jié)構(gòu)示意圖見圖3,圖中datain為輸入信號,coefficient為FIR濾波器參數(shù)。乘法器復(fù)用包含乘法器部分和累加器部分。對一個復(fù)用的乘法器,在每個主時(shí)鐘同步更換系數(shù)和輸入進(jìn)行乘法計(jì)算,最后再把整組的輸出數(shù)據(jù)累加得到結(jié)果,如果一個濾波器結(jié)構(gòu)中使用到了多個乘法器,只需要在輸出時(shí)把多個累加器輸出相加即可得到輸出信號。這種結(jié)構(gòu)下,一個乘法器能計(jì)算的系數(shù)由分頻時(shí)鐘與主時(shí)鐘的倍差決定,本設(shè)計(jì)中,濾波器處的分頻時(shí)鐘是主時(shí)鐘的1/4,因此一個乘法器可以計(jì)算4個系數(shù),又因FIR濾波器的系數(shù)是對稱的,所以一個乘法器可以支持9階FIR濾波器的計(jì)算。更進(jìn)一步,因?yàn)镕IR濾波器的抽取是對完成計(jì)算的輸出進(jìn)行抽取,而未被抽取的輸出則被浪費(fèi)了。因此對于FIR濾波器,使用一組寄存器保存輸入,且在只抽取后更新數(shù)據(jù),乘法器的輸入信號變?yōu)樵摻M寄存器,則乘法器復(fù)用可以用一個乘法器計(jì)算(主頻時(shí)鐘/分頻時(shí)鐘×本級抽取率)個系數(shù)。如第二級設(shè)計(jì)中,一個乘法器可以計(jì)算16個系數(shù),而29階FIR濾波器存在15個不同的系數(shù),則該FIR濾波器只需要一個乘法器即可完成計(jì)算。乘法器復(fù)用結(jié)構(gòu)可以有效減少乘法器數(shù)量,但是會增加寄存器數(shù)量,因此需要考慮為了減少乘法器而增加寄存器是否劃算。
圖3 乘法器復(fù)用結(jié)構(gòu)
第三級為一個148階2抽的半帶濾波器,半帶濾波器是一種特殊的FIR濾波器,其傳遞函數(shù)與式(3)相同,半帶濾波器的特點(diǎn)是偶數(shù)次系數(shù)全為0,奇數(shù)次系數(shù)不為0,其中不為0的系數(shù)與FIR濾波器一樣是對稱的。因此半帶濾波器的系數(shù)實(shí)際上只有階數(shù)的1/4,且半帶濾波器的通帶一定在歸一化頻率的1/2左右。
半帶濾波器通帶波紋很小,因此主要考慮過渡帶帶寬和阻帶抑制。第三級是最后一級,為了防止混入噪聲,所以阻帶抑制應(yīng)該足夠高,而且過渡帶不應(yīng)過大,根據(jù)乘法器復(fù)用結(jié)構(gòu),第三級的主頻時(shí)鐘和分頻時(shí)鐘差距更大,因此一個乘法器可以計(jì)算更多的系數(shù),在這樣的條件下,可以適當(dāng)放寬階數(shù),主要達(dá)到過渡帶和阻帶的要求。在這樣的設(shè)計(jì)目標(biāo)下,該半帶濾波器有120 dB的阻帶抑制,過渡帶為62.5 kHz,其設(shè)計(jì)參數(shù)如表2所示。對于該濾波器,同樣使用乘法器復(fù)用結(jié)構(gòu),根據(jù)之前的計(jì)算,148階半帶濾波器有74個系數(shù),38個不重復(fù)系數(shù)??紤]到最后一級如果使用寄存器在抽取后更新輸入以節(jié)省乘法器的設(shè)計(jì)方法,會增加(148×24)位寄存器,而只能節(jié)省一個乘法器,寄存器面積增加太大而不劃算。因此使用3個乘法器是更節(jié)省面積的辦法,相比正常的38個乘法器有效節(jié)省了邏輯單元。
表2 第三級半帶濾波器參數(shù)
三級濾波器級聯(lián)頻譜響應(yīng)如圖4所示,圖中縱軸為阻帶衰減,橫軸為頻率。從圖4可以看到,級聯(lián)濾波器通帶內(nèi)很平整,其中第一級與第二級濾波器主要用于降采樣,同時(shí)防止奈奎斯特頻率內(nèi)出現(xiàn)信號混疊。前兩級的過渡帶寬度都大于第三級的奈奎斯特頻率,因此,阻帶抑制主要依靠第三級濾波器的設(shè)計(jì)。第三級半帶濾波器有120 dB的阻帶抑制,且其過渡帶很小,可以有效防止混入噪聲。
圖4 三級濾波器級聯(lián)頻譜響應(yīng)
濾波器使用Verilog HDL代碼進(jìn)行實(shí)現(xiàn),使用Quartus軟件進(jìn)行綜合,綜合結(jié)果如表3所示。對濾波器代碼進(jìn)行前仿,使用MATLAB的Simulink設(shè)計(jì)的五階反饋調(diào)制器輸出作為濾波器信號輸入,該調(diào)制器輸出250 kHz理想信號的SNR為149 dB,調(diào)制器輸出頻譜信號如圖5所示。把Verilog HDL代碼下載到Altera DE10 FPGA開發(fā)板,使用DE10開發(fā)板HPS端的網(wǎng)線把經(jīng)過濾波器結(jié)構(gòu)處理后的數(shù)據(jù)傳輸?shù)诫娔X,使用輸出的數(shù)據(jù)進(jìn)行SNR計(jì)算,得到SNR結(jié)果為134.6 dB,有效字長(Enable of Bits Number,ENOB)為22位,仿真SNR計(jì)算結(jié)果如圖6所示。圖6存在一個直流分量,而圖5不存在,這是因?yàn)閳D5使用Simsides進(jìn)行頻譜繪制,而圖6使用MATLAB的SNR函數(shù)進(jìn)行繪制。
圖6 仿真SNR計(jì)算結(jié)果
表3 Quartus軟件綜合結(jié)果
圖5 調(diào)制器輸出信號頻譜
對比圖5和圖6可以發(fā)現(xiàn),圖5調(diào)制器輸出的信號在通帶內(nèi)隨著頻率增大而增大,而圖6中濾波器輸出信號的通帶內(nèi)頻譜是基本平坦的。造成這樣的原因在于實(shí)際設(shè)計(jì)濾波器時(shí),為了平衡硬件消耗和性能,對通過濾波器的信號進(jìn)行了截取。本文中,輸入的調(diào)制器信號為15位位寬,每級濾波器輸出都截取高24位信號,這樣做會導(dǎo)致低頻的噪聲被拉高,表現(xiàn)出如圖6一般的平坦通帶。截取位寬選擇24位是因?yàn)楦鶕?jù)調(diào)制器SNR推算,最終輸出有效位寬在24.5位以內(nèi),因此選擇最終輸出24位信號,最后計(jì)算ENOB達(dá)到了22位,效果較好。截取信號可以節(jié)省大量的寄存器,比如在本文中,后兩級濾波器的參數(shù)量化為24位,和24位信號卷積后,輸出信號超過50位寬,這時(shí)進(jìn)行截取,則可以節(jié)省一半寄存器。位寬截取對SNR的影響較小,在實(shí)際設(shè)計(jì)中對輸出信號進(jìn)行截取是有必要的。
為對比本文設(shè)計(jì)節(jié)省的FPGA資源,在表3中加入了一個未使用SCIC濾波器與乘法器復(fù)用結(jié)構(gòu)的對照組。該對照組由CIC濾波器、補(bǔ)償FIR濾波器、FIR濾波器和半帶濾波器組成,其中CIC濾波器結(jié)構(gòu)為4階4抽;補(bǔ)償FIR濾波器為新設(shè)計(jì)的20階、通帶波紋0.01 dB、阻帶抑制20 dB的FIR濾波器;后兩級FIR濾波器與半帶濾波器參數(shù)未作改變,但并沒有使用乘法器復(fù)用。最終該設(shè)計(jì)綜合后占用FPGA如表3中對照設(shè)計(jì)所示,可以看到不管是邏輯單元數(shù)量還是寄存器數(shù)量相比本文設(shè)計(jì)都有了較大的增加,其中本文設(shè)計(jì)的邏輯單元比對照組節(jié)省了26.3%,而寄存器節(jié)省了15.6%。
本文提出了一種適用于Sigma Delta ADC抽取濾波器的高分辨率、低面積的三級濾波器結(jié)構(gòu),該濾波器在高精度的前提下,節(jié)省了大量FPGA資源。設(shè)計(jì)主要在第一級節(jié)省了補(bǔ)償濾波器和FIR濾波器的乘法器復(fù)用結(jié)構(gòu),這兩者都減少了乘法器的數(shù)量,大大減少了濾波器邏輯單元的消耗;乘法器復(fù)用結(jié)構(gòu)同樣節(jié)省了大量的寄存器,因此本文的設(shè)計(jì)節(jié)省了邏輯單元和寄存器。
在使用5階調(diào)制器的理想輸出對濾波器進(jìn)行仿真的情況下,濾波器輸出的有效位寬達(dá)到22位,使用Quartus進(jìn)行板級綜合,相比普通設(shè)計(jì)節(jié)省了26.3%的邏輯單元和15.6%的寄存器,其結(jié)果符合高精度、低資源消耗的設(shè)計(jì)目標(biāo)。
本設(shè)計(jì)已通過FPGA板級驗(yàn)證,對于乘法器復(fù)用和SCIC濾波器可節(jié)省補(bǔ)償濾波器結(jié)構(gòu),在門級綜合里也可大量節(jié)省面積,設(shè)計(jì)出低面積、高精度的抽取濾波器結(jié)構(gòu)。