??? 摘? 要: 設(shè)計(jì)了一種可用于語音信號(hào)處理的CODEC芯片,討論了濾波器組的多級(jí)實(shí)現(xiàn)。設(shè)計(jì)中充分利用順序執(zhí)行、左右聲道共享電路、時(shí)分復(fù)用等思想優(yōu)化了電路面積。該芯片設(shè)計(jì)采用Silterra18標(biāo)準(zhǔn)CMOS工藝流片成功,通過測(cè)試完全達(dá)到了設(shè)計(jì)要求。?
????關(guān)鍵詞: 音頻CODEC;抽取濾波器;多級(jí)實(shí)現(xiàn)
?
??? 近年來,音頻CODEC被廣泛應(yīng)用于數(shù)字電話、MP3、PDA等便攜式設(shè)備中,其核心在于模數(shù)轉(zhuǎn)換器的設(shè)計(jì)。本文設(shè)計(jì)了一種可廣泛應(yīng)用于數(shù)字音頻領(lǐng)域的CODEC芯片,它主要包括抽取濾波器和插值濾波器組的設(shè)計(jì),并采用過采樣技術(shù)和多級(jí)濾波結(jié)構(gòu)以簡(jiǎn)化濾波器的設(shè)計(jì)。?
1 系統(tǒng)結(jié)構(gòu)?
??? 由于插值濾波器和抽取濾波器的實(shí)現(xiàn)結(jié)構(gòu)非常類似,只是信號(hào)流的方向相反,通過簡(jiǎn)單的置換關(guān)系就能得到插值濾波器的實(shí)現(xiàn),所以本文只詳細(xì)介紹抽取濾波器組的實(shí)現(xiàn)。?
??? 抽取濾波器組的系統(tǒng)結(jié)構(gòu)如圖1所示。該設(shè)計(jì)輸出采樣率為44.1 kHz,輸出精度16 bit。從SDM輸出的數(shù)字信號(hào)進(jìn)入CIC濾波器做34倍的抽取,然后進(jìn)入高通濾波去除直流分量,再進(jìn)入240階FIR濾波器做4倍的抽取,最后從I2S數(shù)字音頻接口輸出。
?
?
2 系統(tǒng)實(shí)現(xiàn)?
2.1 CIC抽取濾波器?
??? 級(jí)聯(lián)積分梳狀濾波器是一種簡(jiǎn)單的整系數(shù)濾波器,優(yōu)點(diǎn)是可以用簡(jiǎn)單的積分器和減法器實(shí)現(xiàn)較高的過采樣倍數(shù)。其系統(tǒng)函數(shù)為:?
?????
式中M為過采樣倍數(shù),N為級(jí)聯(lián)CIC濾波器的個(gè)數(shù)。?
??? 通過Matlab仿真4階CIC,在實(shí)現(xiàn)所需要的抽取倍數(shù)的同時(shí)還能濾除帶外諧波,其實(shí)現(xiàn)結(jié)構(gòu)如圖2所示。?
?
?
??? 由CIC濾波器的結(jié)構(gòu)可知,每級(jí)必須保持一定的精度,否則會(huì)發(fā)生運(yùn)算溢出。由字長(zhǎng)公式計(jì)算得出當(dāng)過采樣率為34時(shí),字長(zhǎng)需大于20.4,本設(shè)計(jì)中CIC濾波器字長(zhǎng)選擇22 bit。SDM調(diào)制后的信號(hào)在CIC濾波器的阻帶截止頻率176 kHz處有60 dB的衰減,因此只需設(shè)計(jì)CIC濾波器在阻帶截止頻率176 kHz處為38 dB即可。為了保證設(shè)計(jì)冗余,選取其在176 kHz處的衰減為90 dB。圖3是CIC濾波器輸出信號(hào)的頻譜,可看出它能滿足設(shè)計(jì)要求。?
?
?
2.2 高通濾波器?
??? 因?yàn)樵赟DM輸出的數(shù)字信號(hào)中用0代表-1,引入的直流分量需要濾除。本設(shè)計(jì)采用求平均值去直流的方法:去直流又分為加速和不加速模式,加速模式是通過N次累加所得的和再除以N,可得到一個(gè)加速模式下的平均值,它只用約10~20 ms就能計(jì)算出一個(gè)平均值。不加速模式是實(shí)際中用到的,它先求出兩個(gè)相鄰周期的平均值,然后通過加+1或-1使相鄰周期的平均值相同,從而避免相鄰周期減去的平均值不同產(chǎn)生的高頻噪聲。它要大約每過500 ms~1 s為一個(gè)累加周期才能計(jì)算出一個(gè)CIC濾波器輸出數(shù)據(jù)的平均值。然后用輸入的數(shù)據(jù)減去平均值就可去掉直流。圖4為高通濾波器的實(shí)現(xiàn)框圖。?
?
?
2.3 FIR抽取濾波器?
??? FIR濾波器除了要完成4倍的抽取還要對(duì)CIC濾波器的衰減進(jìn)行補(bǔ)償。當(dāng)級(jí)聯(lián)級(jí)數(shù)為4,過采樣倍數(shù)為34時(shí),CIC衰減的幅度為1.4 dB。本設(shè)計(jì)采用基于切比雪夫逼近的等波紋FIR設(shè)計(jì)方法,該方法能使濾波器在信號(hào)頻帶與理想特性的逼近誤差的峰值最小。采用matlab中提供的Remez函數(shù),調(diào)整其中的參數(shù)a0和f0,經(jīng)過多次調(diào)試可以得出一組濾波器系數(shù),使其在0~20 kHz范圍內(nèi)的幅頻特性曲線有一定的抬高。圖5為FIR濾波器補(bǔ)償后的整體幅頻響應(yīng)。?
?
?
??? 當(dāng)FIR濾波器的實(shí)現(xiàn)采用傳統(tǒng)的多相結(jié)構(gòu)時(shí),將會(huì)需要大量的乘法器和加法器。本設(shè)計(jì)采用順序執(zhí)行的方式實(shí)現(xiàn),利用ROM存儲(chǔ)濾波器系數(shù),RAM存儲(chǔ)濾波器輸入數(shù)據(jù),在MCLK的一個(gè)時(shí)鐘節(jié)拍運(yùn)算一次乘累加,就可把長(zhǎng)度為240的濾波器分為240次來運(yùn)算。圖6為該濾波器實(shí)現(xiàn)結(jié)構(gòu)圖。?
?
?
??? rom數(shù)據(jù)的讀?。河捎跒V波器的系數(shù)是對(duì)稱的,只需將120個(gè)濾波器系數(shù)存入rom中,這樣可以節(jié)省一半的存儲(chǔ)空間。讀取系數(shù)時(shí),地址先依次遞增,等到最后一個(gè)系數(shù)讀出后再依次遞減,便可讀出所有的240個(gè)濾波器系數(shù)。?
??? ram數(shù)據(jù)的讀寫:在一次濾波過程中(即在一個(gè)LRCK周期中),首先往ram中寫入一個(gè)數(shù)據(jù),接著連續(xù)60次讀出ram數(shù)據(jù);反復(fù)4次,即往ram中寫入了4個(gè)數(shù)據(jù),讀出了240個(gè)數(shù)據(jù);再與讀出的rom數(shù)據(jù)相乘可得一次濾波結(jié)果。ram讀數(shù)據(jù)和rom讀數(shù)據(jù)是同步的。由此也可看出,在一個(gè)LRCK周期中寫入4個(gè)數(shù)據(jù),經(jīng)過運(yùn)算送出一個(gè)數(shù)據(jù)完成了4倍的抽取。?
3 芯片實(shí)現(xiàn)與測(cè)試?
??? 本設(shè)計(jì)采用Silterra18標(biāo)準(zhǔn)CMOS工藝一次流片成功,其數(shù)字電路版圖如圖7所示。?
?
?
??? 數(shù)字電路面積2.04 mm2,Standard cell共12 228個(gè),其中register為3 027個(gè)。?
??? 最后對(duì)芯片進(jìn)行了THD+N、幅頻特性測(cè)試和FFT分析,其結(jié)果在設(shè)計(jì)允許的范圍之內(nèi)。圖8為ADC+DAC的FFT測(cè)試波形,其信噪比也達(dá)到了設(shè)計(jì)要求。?
?
?
??? 通過數(shù)次在不同負(fù)載條件下的測(cè)試分析,該設(shè)計(jì)的音頻CODEC芯片滿足設(shè)計(jì)指標(biāo)要求。?
??? 本文根據(jù)數(shù)字音頻設(shè)備的需要設(shè)計(jì)了一款CODEC芯片,它包括兩個(gè)濾波器組的設(shè)計(jì):抽取濾波器和插值濾波器。設(shè)計(jì)中CIC濾波器的實(shí)現(xiàn)比較簡(jiǎn)單,可以實(shí)現(xiàn)較大的抽取及插值倍數(shù),高通濾波器采用了較為巧妙的方法去除直流分量,F(xiàn)IR濾波器不但補(bǔ)償了CIC濾波器的帶內(nèi)衰減,還通過順序結(jié)構(gòu)的思想設(shè)計(jì)了基于rom和ram實(shí)現(xiàn)FIR,共享了乘、加法單元,優(yōu)化了電路面積。?
參考文獻(xiàn)?
[1] 飛思科技產(chǎn)品研發(fā)中心.MATLAB7基礎(chǔ)與提高.北京:電子工業(yè)出版社,2005.?
[2] 皇甫堪,陳建文,樓生強(qiáng).現(xiàn)代數(shù)字信號(hào)處理.北京:電子工業(yè)出版社,2003.?
[3] 帕里,陳弘毅.VLSI數(shù)字信號(hào)處理系統(tǒng):設(shè)計(jì)與實(shí)現(xiàn).北京:機(jī)械工業(yè)出版社,2004.?
[4] (美)克勞切拉賓納著.多抽樣率數(shù)字信號(hào)處理.鄧廣增譯.北京:人民郵電出版社,1988.