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