王 勉, 郭永剛, 趙高院
(陜西烽火通信技術(shù)有限公司,西安 710075)
雙音多頻信號(hào)(Double Tone Multi Frequency)是指電話撥號(hào)中脈沖信號(hào)和音頻信號(hào)中音頻信號(hào)的撥號(hào)方式。也就是電話撥號(hào)時(shí),每按一個(gè)鍵,有兩個(gè)音頻頻率疊加成一個(gè)雙音信號(hào)。雙音多頻信號(hào)(DTMF)檢測(cè)與識(shí)別在市場(chǎng)上有著很多成熟的芯片,能夠可靠地完成這一功能;但是隨著設(shè)備體積的縮小,以及對(duì)設(shè)備功耗的進(jìn)一步要求。我們?cè)絹碓絻A向于使用軟件來代替這個(gè)芯片。STM32系列屬于ARM CortexTM-M3,是一款高性能、低成本、低功耗的32位RISC處理器。現(xiàn)如今被廣泛地用于移動(dòng)設(shè)備的主控制器系統(tǒng)。使用這款芯片來完成DTMF檢測(cè)的功能,可以不增加任何成本和功耗。
隨著集成度的不斷提高,MCU的功能在不斷增強(qiáng),如圖1所示。單片STM32F1系列芯片可以完成諸如液晶顯示、鍵盤掃描、與系統(tǒng)信道通訊,通過USB或者 USART與PC交互數(shù)據(jù),甚至通過以太網(wǎng)物理層PHY芯片,接入Internet。

圖1 中為典型主控示意圖
現(xiàn)如今大多數(shù)主控芯片都集成 ADC,DAC這樣的外設(shè),這使得我們?cè)诓挥迷黾尤魏瓮鈬娐非闆r下,就能很方便地進(jìn)行數(shù)據(jù)采集。STM32的AD分辨率是12位的,在CPU主頻56 MHz時(shí)。轉(zhuǎn)換時(shí)間為1 μs,也就是1MHz的采樣率。
為了減少連線的數(shù)目,MIC和DTMF信號(hào)線是復(fù)用,兩者的復(fù)用是非常合理的,因?yàn)橐纛l信號(hào)也要經(jīng)過采樣,然后音頻編碼(俗稱聲碼化)。兩個(gè)信號(hào)也不會(huì)同時(shí)有效。這樣一來,也節(jié)省了AD的數(shù)目。但是 MIC產(chǎn)生的音頻信號(hào),有可能會(huì)干擾DTMF,造成誤判斷。

圖2 DTMF手柄引腳定義圖
人的語音可以分為清音、濁音兩種。清音的頻譜接近白噪聲,不會(huì)對(duì)我們的檢測(cè)造成影響;濁音從發(fā)聲過程來講是聲帶的震動(dòng),通過鼻腔和口腔的共鳴腔形成,有明顯的周期性,在頻譜上有明顯的雙音特性,影響我們的判斷;與DTMF明顯的區(qū)別在于,濁音有明顯的二次諧波分量,因此對(duì)二次諧波的判斷,可以幫我區(qū)分話音和DTMF信號(hào)。
采樣電路如圖3所示。

圖3 低通濾波器硬件電路
A:因?yàn)镾TM32的引腳的最小電壓輸入為 VSS-0.3 V,音頻信號(hào)輸入均值為零,必須為這個(gè)信號(hào)疊加直流信號(hào),以免造成信號(hào)的失真和芯片的損壞;
B:電容C221, C220,電阻 R147, R148組成了簡(jiǎn)單的抗混疊濾波器。濾波器只有信號(hào)頻率超過了500 kHz時(shí),才能起到很好的抗混疊作用。因?yàn)楫a(chǎn)品中的發(fā)射頻率工作在800 MHz,對(duì)發(fā)射主頻能起到很好的抗混疊作用。對(duì)于500 kHz以下的干擾信號(hào),和發(fā)射頻率交叉調(diào)制帶來的干擾就無能為力。為了進(jìn)一步提高可靠性, DTMF手柄與機(jī)器的連線必須使用屏蔽線,手柄的地線采用獨(dú)立接地來減少ADC采樣前端的干擾。
采樣的語音信號(hào)帶寬為300 Hz-3 kHz,為了滿足奈奎斯特采樣法則,我們選擇采樣頻率Fs =8 kHz。這個(gè)頻率在u_PCM編碼中也被廣泛采用。
系統(tǒng)采樣率Fs =8kHz,我們要求它的頻率穩(wěn)定度一般為100ppm;而程序運(yùn)行時(shí)間的長短不容易控制,產(chǎn)品中我們采用定時(shí)器TIM2,ADC1,DMA1三個(gè)外設(shè)協(xié)同工作來完成,從而保證頻率穩(wěn)定度。數(shù)據(jù)采樣流程圖如圖4所示。

圖4 數(shù)據(jù)采樣流程圖
在連續(xù)采樣中,使用這種方法的好處是,不需要CPU的參與,所有的采樣工作都是在硬件上實(shí)現(xiàn)了,可靠性好,能夠準(zhǔn)確的保證8 kHz的采樣率。缺點(diǎn)是程序移植困難。有些芯片上不支持DMA,就無法實(shí)現(xiàn)了;好在現(xiàn)在芯片大多數(shù)都支持這些外設(shè)。
Goertzel算法俗稱戈澤爾算法。它的原理是利用2個(gè)極點(diǎn)的IIR濾波器計(jì)算離散傅里葉變換,能夠高效地提取頻譜信息。戈澤爾算法描述如下:
(a)從n= 0,…,N遞歸計(jì)算

Min(Fr -Fc)= 73Hz
所以Δf<73;
當(dāng) Fs=8 kHz;
N>110。
在戈澤爾算法中,雖然N必須取整數(shù),但是對(duì) k的取值沒有限制,而且我們所需要的是:

我們?cè)贛ATLAB上計(jì)算得到 8個(gè)頻率所對(duì)應(yīng)的CONSTAT_VALUE,因?yàn)镃PU支持定點(diǎn)運(yùn)算,存儲(chǔ)類型為 INT16,歸一化處理如下:

在程序計(jì)算過程中,N為每次運(yùn)算的采樣點(diǎn)數(shù)。N值的選擇決定了最小頻率關(guān)系。從上一節(jié)中我們得出:
N>110。
根據(jù)人們的按鍵習(xí)慣,每次按鍵的時(shí)間大約在60-200 ms左右,機(jī)械操作抖動(dòng)是不可避免的,所以需要去抖動(dòng)。如果以每采到2次相同按鍵來去抖動(dòng),每次的檢測(cè)時(shí)間不應(yīng)該大于30 ms。

在實(shí)際應(yīng)用中,因?yàn)槭褂玫氖嵌c(diǎn)運(yùn)算,所以N 的選擇還要考慮到計(jì)算過程中的精度和溢出。戈澤爾算法是DFT的一種快速實(shí)現(xiàn),所以DFT的溢出問題在戈澤爾算法中同樣存在。根據(jù)帕塞瓦爾定理:

X(k)2的均方值是x(n)2均方值的N倍,因此如果不采取有效措施,溢出是不可避免的;不僅如此,因?yàn)槲覀円x取的是單音信號(hào),所以有如下公式成立:

這個(gè)公式對(duì)工程運(yùn)算十分重要,它直接決定了我們的運(yùn)算結(jié)果會(huì)不會(huì)溢出。給我們提供了自動(dòng)增益控制穩(wěn)態(tài)值的選擇范圍。具體用法如下。
(a) 輸入信號(hào)x(t)=A*cos(t); A=3 V, AD的最大動(dòng)態(tài)范圍
(b) Fs = 8000;
(c) 采樣信號(hào)為x(n)= B*cos(n/Fs);
(d) ADC采樣精度為12 bit,考慮到符號(hào)位所以B = 210;

(e) CPU的 加 法 器 為32bit,所 以MAX(X(K0)2) =231
利用公式 (13)得到

所以N=64,不滿足 N>110的要求。
為了滿足頻率分辨率的要求,我們只有通過自動(dòng)增益控制來實(shí)現(xiàn)。
我們使用的參考電壓VREF+為3 V。在輸入信號(hào)Vpp大于這個(gè)動(dòng)態(tài)范圍時(shí),就會(huì)產(chǎn)生溢出。經(jīng)過戈澤爾算法后出現(xiàn)諧波成分,造成誤判斷;當(dāng)信號(hào)幅度過小,沒有足夠的信噪比時(shí),會(huì)造成漏判斷。
在AD采樣前,通過硬件電路進(jìn)行壓縮放大,防止信號(hào)超過最大動(dòng)態(tài)范圍,造成AD溢出。
(1)硬件音頻放大Ssm2167 進(jìn)行壓縮放大;

圖5 音頻壓縮放大硬件電路
ssm2167的輸入動(dòng)態(tài)范圍可以達(dá)到50 dB,提高了設(shè)備的兼容性。
(2)軟件音頻壓縮,保證DFT運(yùn)算不溢出。
上一節(jié)中已經(jīng)仔細(xì)論證了軟件壓縮的重要性,在此給出程序流圖如圖6所示。

圖6 音頻壓放時(shí)序圖

工程測(cè)試中,采用 cr-cooledit軟件生成測(cè)試音頻文件。通PC耳機(jī)插孔接入目標(biāo)板。測(cè)試文件包括:
(1) 標(biāo)準(zhǔn)DTMF測(cè)試文件 600 s,每組雙音持續(xù)時(shí)間為25 ms。相當(dāng)于24000個(gè)DTMF信號(hào)。
(2) 非標(biāo)準(zhǔn)測(cè)試文件600 s,每組雙音持續(xù)時(shí)間為25ms。
(3) 音樂文件 600 s。
(4) 語音文件 600 s。
輸入動(dòng)態(tài)范圍測(cè)試,音頻輸入1mvRMS—1VRMS,60dB動(dòng)態(tài)范圍的情況下,標(biāo)準(zhǔn)測(cè)試文件能夠準(zhǔn)確識(shí)別,識(shí)別率 100%。在同樣的動(dòng)態(tài)范圍下,非標(biāo)準(zhǔn)文件,音樂文件,和語音文件的全部拒識(shí),拒識(shí)率 100%。
[1] 陳亮,楊吉斌,張雄偉.信號(hào)處理算法的實(shí)時(shí)DSP實(shí)現(xiàn)[M].北京:電子工業(yè)出版社,2008.
[2] 金鑫春,旺一鳴.Goertzel 算法下DTMF信號(hào)檢測(cè)及參數(shù)優(yōu)化[J].現(xiàn)代電子技術(shù),2010(06):152-155.
[3] 弋今朝,張祿林,錢玉美.一種新的基于Goertzel算法的DTMF信號(hào)檢測(cè)方法[J].通信技術(shù),2002(9):16-18.
[4] International Telecommunication Union . ITU-T Recommendation Q23. Technical Features Of Push - Button Telephone Sets[R]. Switzerland:ITU-T. November 1988.
[5] 丁玉美,高西全.?dāng)?shù)字信號(hào)處理[M].2版.西安:西安電子科技大學(xué)出版社,1994.
[6] 胡廣書.?dāng)?shù)字信號(hào)處理理論、算法與實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,2003.
[7] 傅豐林.電子線路基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2001.
[8] Jean J.Labrosse.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ[M].邵貝貝 譯.北京:北京航空航天大學(xué)出版社,2001.