国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

改進(jìn)DTMF 信號檢測方案在定點DSP 上的實現(xiàn)

2012-03-18 08:09:42徐靈飛林浩冬
電訊技術(shù) 2012年5期
關(guān)鍵詞:頻點解碼定點

徐靈飛,章 紅,林浩冬

(1.成都理工大學(xué) 工程技術(shù)學(xué)院,四川 樂山614007;2.電子科技大學(xué) 電子工程學(xué)院, 成都610054)

1 引 言

目前,很多場合使用專用芯片, 例如MT8870、MT8880 等,進(jìn)行雙音多頻(DTMF)信號的檢測。但是,這種實現(xiàn)方案的外圍電路及用戶接口電路復(fù)雜,容易引入噪聲,并且功耗大、成本高[1]。再者,專用芯片都是依靠計算輸入信號的過零率來實現(xiàn)檢測,但當(dāng)信號混有音頻和噪音時,專用芯片檢測結(jié)果容易出現(xiàn)錯誤。還有,如果系統(tǒng)功能需要改變,往往需要重新設(shè)計電路,增加了系統(tǒng)升級、維護(hù)成本。這些因素都決定了傳統(tǒng)方法實現(xiàn)DTMF 信號生成與檢測方案的局限性,因此,利用定點DSP 芯片高速靈活的數(shù)值運(yùn)算能力,取代專用硬件芯片進(jìn)行DTMF 信號檢測,可提高系統(tǒng)集成度,降低成本,便于系統(tǒng)靈活更新調(diào)整,是一項具有很高工程實踐價值的工作。

本文對比研究了幾種DTMF 信號解調(diào)的方法,根據(jù)DTMF 信號的特點,在原始Goertzel(戈策爾)算法的基礎(chǔ)上,給出改進(jìn)的Goertzel 算法實現(xiàn)原理,并制定了詳細(xì)的信號有效性判定流程,形成了完整高效的DTMF 信號檢測在定點DSP 上實現(xiàn)的方案。對原始 Goertzel 算法和改進(jìn) Goertzel 算法在TMS320VC5416 上實現(xiàn)的檢測效果進(jìn)行了對比研究,并在不同噪聲背景下進(jìn)行了大量實驗,給出了改進(jìn)DTMF 信號檢測方案對DTMF 信號檢測率的結(jié)果。實驗結(jié)果表明,在DTMF 信號頻率偏移小于1.5%時,改進(jìn)算法具備更好的檢出效果,而在DTMF 信號頻率偏移大于3.5%時,改進(jìn)算法能更好地將信號濾除,較好地滿足ITU-T Q.24 在信號頻率容錯率上的要求。同時,制定的信號有效性判定流程可以將DTMF 信號和普通音頻信號區(qū)分開,并且在一定的背景噪音下,方案仍能實現(xiàn)較高的信號檢出率。

2 DTMF 信號的檢測

使用697 Hz、770 Hz、852 Hz、941 Hz 4 個低頻群信號和1 209 Hz、1 336 Hz、1 477 Hz和1 633 Hz 4 個高頻群頻率,兩兩組合形成16 種不同的高低頻信號疊加的DTMF 信號,可以對應(yīng)16 個不同的按鍵。DTMF 信號的檢測過程分三步進(jìn)行:第一,對輸入的信號的幅度進(jìn)行抑制;第二,對信號進(jìn)行DTMF 解碼;第三,對DTMF 解碼的結(jié)果進(jìn)行有效性判定。當(dāng)以上三步都處理結(jié)束后,就可以得到:當(dāng)前輸入信號是否是有效的DTMF 信號;如果輸入信號是有效的DTMF 信號,就可以通過簡單的掃描判別程序得到組成DTMF 信號的兩個頻率及對應(yīng)的按鍵值。

2.1 輸入信號幅度抑制

由于DTMF 信號檢測程序全部使用定點數(shù)進(jìn)行計算,一旦在計算中出現(xiàn)溢出,將影響到對信號頻率的準(zhǔn)確提取和判定。因此,為了在后面進(jìn)行解碼運(yùn)算時避免出現(xiàn)結(jié)果溢出的情況,需要對輸入的信號的幅度進(jìn)行抑制。幅度抑制原理如下:

式中,x(n)為輸入信號,y(n)為幅度抑制后的輸出信號, Tg 為幅度抑制常數(shù), Ag 為輸入信號平均峰值幅度,根據(jù)公式(1)計算得到:

經(jīng)測試, Tg可以設(shè)置為0120H,這時根據(jù)以上的幅度抑制原理編寫的程序,完全可以防止后續(xù)程序計算的溢出。

2.2 輸入信號的DTMF 解碼

基于DTMF 信號的基本特性,DTMF 信號的解碼過程主要通過數(shù)學(xué)變換方法將組成DTMF 信號的兩個頻點尋找出來,這樣的方法有MUSIC (Multiple Signal Classification)算法[2]、FFT 算法、SB -NDFT(Subband Nonuniform Discrete Fourier Transform algorithm)算法[3]和Goertze 算法。

MUSIC 算法對DTMF 信號檢測的效果較好,但其運(yùn)算量太大[2],不適合在定點DSP 處理器上進(jìn)行實時處理。

SB-NDFT 算法利用FFT 快速算法的原理,通過對輸入樣點的抽取[3],并結(jié)合Goertzel 算法,使得運(yùn)算量比Goertzel 算法降低將近50%,可以提高系統(tǒng)的實時性。SB -NDFT 算法的數(shù)學(xué)描述如公式(2)和公式(3):

其中, G(ej2ωk)2可以通過Goertzel 算法計算得到。

SB-NDFT 算法犧牲了一部分高頻分量的能量,同時又要求所檢測信號的頻率不能超出2 kHz,這就使得SB-NDFT 算法不能分離輸入信號中的DTMF 信號與其二次諧波(頻率超出了2 kHz 的范圍)。事實上,通過SB-NDFT 算法在定點DSP 處理器TMS320VC5416 上的實驗,發(fā)現(xiàn)這一算法的檢測效果非常不好,幾乎不能將DTMF 信號的頻率分離出來。分析造成這一結(jié)果的原因主要是:在定點DSP 上編寫匯編程序,用定點數(shù)進(jìn)行數(shù)學(xué)運(yùn)算,這一過程中存在大量的四舍五入,嚴(yán)重影響了算法的精確性。如果把程序改為浮點數(shù)進(jìn)行操作的話,將影響到程序的實時性和功能冗余性,使其很難在實際應(yīng)用。因此,SB-NDFT 算法在定點DSP 上實現(xiàn)的可行性不高。

DTMF 信號只用關(guān)心其8 個行頻/列頻及其二次諧波信息即可,因此,使用DFT 對DTMF 信號進(jìn)行解碼比使用FFT 進(jìn)行解碼更快。對于N 點DFT, 需要N2個復(fù)系數(shù),相應(yīng)的加法和乘法運(yùn)算次數(shù)分別為16(N-1)和16N 次。但是,使用Goertzel 算法計算一個頻點只需一個實系數(shù)和一個復(fù)系數(shù),相應(yīng)的加法和乘法運(yùn)算次數(shù)分別為8(2N -1)和8(N +1)次[4-5]。使用Goertzel 算法檢測DTMF 信號比使用DFT 檢測更有效率。

Goertzel 算法無論在運(yùn)算量、頻率檢測的精度以及抗干擾等方面都有很好的表現(xiàn)。Goertzel 算法的數(shù)學(xué)描述如公式(4)和公式(5):

其中,vk(-1)=0,vk(-2)=0,x(n)=input。

2.3 改進(jìn)Goertzel 算法

通常Goertzel 算法運(yùn)算中的k 取的是整數(shù),這就造成了對所檢測頻率的誤差。同時,隨著N 的變化,這一誤差也是不斷變化的。幾乎不可能在DTMF 信號所有頻點上找到一個N,使得產(chǎn)生的頻率誤差都符合ITU-T Q.24 對DTMF 信號檢測的規(guī)定。為了得到一個最優(yōu)的N 值,可以通過尋找使得所 有 頻 點 處 k 的 誤 差 平 均 值最小這一過程來實現(xiàn)[6]。通過Matlab 仿真可以得到, 當(dāng)N 取106、125、163、186、205、227、238、245 等值時,可以得到一個較好的檢測結(jié)果。在實際的計算過程中,如果調(diào)整k 的取值,不按照DFT 定義中取整數(shù)的規(guī)定來取值,而是直接按照實際的DTMF 信號頻率取值,這樣可以降低檢測過程中的檢測誤差。這時,用Q15 定點數(shù)格式表示,按照DTMF 信號的頻率由低到高排列,則分別是27 980、26 956、25 701、24 216、19 073、16 325、13 085、9 315。

2.4 原始Goertzel 算法和改進(jìn)Goertzel 算法對比

根據(jù)公式(4)和公式(5),以不同k 的取值編寫程序?qū)崿F(xiàn)原始Goertzel 算法和改進(jìn)Goertzel 算法。以DTMF 信號“4”為例,通過對頻率沒有誤差的DTMF信號的檢測和對有3.5%頻率誤差的DTMF 信號的抑制,來說明原始Goertzel 算法在頻率檢測上與改進(jìn)Goertzel 算法的區(qū)別,N 取值106。

(1)當(dāng)構(gòu)成DTMF 信號的頻率沒有誤差時,對同一信號兩種算法的檢測結(jié)果如圖1 和圖2 所示。

圖形顯示窗口中橫軸顯示的0 ~7 分別表示DTMF 信號的8 個頻率,存儲區(qū)顯示窗口顯示中ENERGY 開始顯示的8 個數(shù)據(jù)表示DTMF 信號的8 個頻率頻譜能量檢測結(jié)果。

圖1 頻率沒有誤差時原始Goertzel 算法檢測結(jié)果Fig.1 Test result of the original Goertzel algorithm when the frequency of DTMF signals has no error

圖2 頻率沒有誤差時改進(jìn)Goertzel 算法檢測結(jié)果Fig.2 Test resu lt of the modified Goertzel algorithm when the frequency of DTMF signals has no error

由圖1 和圖2 可以得到,原始Goertzel 算法在頻率770 Hz和1 209 Hz處得到的計算結(jié)果分別是2 845和3 007,而改進(jìn)Goertzel 算法得到的計算結(jié)果分別是4 129和4 281。由此可見,改進(jìn)Goertzel 算法比原始Goertzel 算法能更精確地定位信號的頻點。以同樣的方法對其他的頻率做同樣的實驗,當(dāng)頻率誤差小于1.5%時,可以得到相同的結(jié)果。

(2)當(dāng)構(gòu)成DTMF 信號的頻率有3.5%誤差時,對同一信號兩種算法的檢測結(jié)果如如圖3 和圖4 所示。

圖3 頻率有3.5%誤差時原始Goertzel 算法的檢測結(jié)果Fig.3 Test result of the original Goertzel algorithm when the frequency of DTMF signals has error of 3.5%

圖4 頻率有3.5%誤差時改進(jìn)Goertzel 算法的檢測結(jié)果Fig.4 Test result of the modified Goertzel algorithm when the frequency of DTMF signals has error of 3.5%

由圖3 和圖4 可以得到,原始Goertzel 算法在頻率770 Hz和1 209 Hz處得到的計算結(jié)果分別是3 605和1 656,而改進(jìn)Goertzel 算法得到的計算結(jié)果分別是2 617和899。由此可見,改進(jìn)Goertzel 算法比原始Goertzel 算法能更好地抑制準(zhǔn)確頻點外的信號。當(dāng)使用更大誤差頻率的DTMF 信號來做實驗,同樣可以得到以上結(jié)果。以同樣的方法對其他的頻率做了大量同樣的實驗,得到的結(jié)果都證明:改進(jìn)Goertzel算法比原始Goertzel 算法能更好地抑制3.5%誤差以外的DTMF 信號。

2.5 信號解碼結(jié)果的有效性判定

為了區(qū)分DTMF 信號和音頻信號,改進(jìn)Goertzel算法不僅要檢測DTMF 信號頻率,還要檢測其二次諧波的頻譜平方幅度。然后,通過一系列的判決步驟, 最終判定輸入的信號是否是一個有效性的DTMF 信號。判決步驟如下:

(1)檢測低頻群和高頻群信號能量中最大值是否高于某一能量閾值T-PStp;

(2)檢測信號的強(qiáng)度是否足夠大,低頻組分量和高頻組分量的最大能量應(yīng)高于某一確定閾值T-PStr;

(3)如果DTMF 信號存在,比較低頻組與高頻組中最大能量之間的差值,其值應(yīng)低于某一確定閾值T-PTwi;

(4)分別在低頻群與高頻群里比較最大能量與其他頻點能量的差值,所有差值都應(yīng)分別高于某一個閾值T-PDif;

(5)由于DTMF 信號只有在基頻上具有較高的能量,而音頻信號總是會在基頻上疊加了具有一定強(qiáng)度的二次諧波分量,因此,需要檢測信號的二次諧波強(qiáng)度,確定低頻群與高頻群頻點的二次諧波能量都應(yīng)低于某一確定閾值T-P2Har,以此區(qū)分DTMF信號和音頻信號。

在程序中用Q15 定點數(shù)形式設(shè)定T-PStp =0180h,T-PStr=0BB8h, T-PTwi=0400h, T-PDif=1100h,T-P 2Har=0700h。需要注意的是,這幾個參數(shù)不是一成不變的,必須根據(jù)系統(tǒng)的實際情況,經(jīng)測試確定。

3 DTMF 信號檢測程序流程圖

對信號有效性的判定,需要最少有兩次連續(xù)判定結(jié)果一樣,同時,在此之后緊接著能檢測到一個停頓狀態(tài),才能認(rèn)定當(dāng)前信號是一個有效的DTMF 信號。在判定一個有效的DTMF 信號后,就可通過鍵值掃描程序確定檢測出來的兩個頻點的具體頻率值,通過組合,從而得到DTMF 信號所對應(yīng)的按鍵值。DTMF 信號檢測整個程序執(zhí)行的流程圖如圖5所示。

圖5 DTMF 信號檢測程序總流程圖Fig.5 Flowchart of the DTMF signal detection

4 實驗測試結(jié)果

整個程序以匯編語言實現(xiàn), 在TMS320VC5416電路板上以160 MHz主頻進(jìn)行測試。系統(tǒng)采樣頻率為8 000 Hz,采樣間隔為125 μs。由圖5 可知,每采樣一個樣點都需要進(jìn)行處理,當(dāng)程序中所有需要判定的條件都滿足時,DSP 執(zhí)行程序的時間最長,需要2 532個CPU 時鐘周期,共16 μs。這證明整個程序在定點DSP 上具有很好實時性,在DSP 處理完DTMF信號的檢測后,還可以處理其他工作。

在一信噪比下,連續(xù)對同一DTMF 信號持續(xù)采樣21 200個樣點,完成200 次檢測。將改進(jìn)DTMF 信號檢測方案在定點DSP 上運(yùn)行, 對比不同信噪比DTMF 信號的檢測率(在單個N =106 的檢測窗口中),結(jié)果如表1 所示。

表1 信噪比與檢出率對照表Table 1 Table of SNR corresponding to the detection rate

DTMF 信號持續(xù)時間為55 ms,其中包含440 個樣點,當(dāng)N =106 時,程序可以完成4 次完整的檢測。在這期間,當(dāng)信噪比大于等于15 dB時,經(jīng)實驗測試,改進(jìn)Goertzel 算法對頻偏小于1.5%的DTMF信號的檢測成功率為100%(4 次完整檢測中,連續(xù)兩次成功檢測率), 同時, 對于頻偏大于3.5%的DTMF 信號拒絕成功率為100%。

5 結(jié)束語

本文給出了高效的DTMF 信號的檢測方法和詳細(xì)的DSP 實現(xiàn)方案。程序使用匯編語言編寫,已在TMS320VC5416 上實現(xiàn)。相比于純硬件實現(xiàn)方案,整個系統(tǒng)工作可靠、靈活、集成度高, 能準(zhǔn)確地檢測DTMF 信號。相對于復(fù)雜的MUSIC、FFT、SB-NDFT等算法,文中提出的DTMF 信號檢測方案更加適合于在定點DSP 和通用處理器上實現(xiàn)。同時,系統(tǒng)實時性高,具有很好的功能冗余度,完全可以應(yīng)用于主叫識別信息傳送、音頻菜單和遠(yuǎn)程控制等需要嵌入DTMF 信號檢測方案的場合。對方案中解調(diào)算法DSP 程序和相關(guān)信號有效性判定參數(shù)的進(jìn)一步優(yōu)化是下一步研究的內(nèi)容。

[1] 王偉東, 王薇.雙音多頻通信接口的設(shè)計[J] .電訊技術(shù),2007,47(4):60-62.

WANG Wei-deng,WANG Wei.Design of the Dual-Tone Multifrequency(DTMF)Data[ J] .Telecommunication Engineering,2007,47(4):60-62.(in Chinese)

[2] Arslan G, Evans B,Sakarya F A, et al.Performance evaluation and real-time implementation of subspace, adaptive and DFT algorithms for multi-tone detection[ C]//Proceedings of 1996 IEEE International Conference on Telecommunications.Istanbul, California:IEEE, 1996:884-887.

[3] Bagchi S, Mitra S K.The nonuniform discrete Fourier transform and its applications in filter design.I.1-D[ J] .IEEE Transactions on Circuits Systems II:Analog and Digital Signal Processing,1996, 43(6):422-433.

[4] 石明衛(wèi).基于Geortzel 算法實現(xiàn)高效多路DTMF 檢測[J] .電訊技術(shù),2001,41(5):74-76.

SHI Ming-wei.Implementation of High Efficient Multiplex DTIMF[ J] .Telecommunication Engineering, 2001, 41 (5):74-76.(in Chinese)

[5] 常青青,鄧大偉,艾紅.基于DSP 的DTMF 信號編解碼算法實現(xiàn)[J] .北京信息科技大學(xué)學(xué)報,2011,26(4):77-82.

CHANG Qing-qing,DENG Da-wei,AI Hong .The implementation of DTMF encoding /decoding based on DSP[ J] .Journal of Beijing Information Science and Technology University,2011,26(4):77-82.(in Chinese)

[6] Trajkovic M S,Radovic D.Performance Analysis of the DTMF Detector Based on the Goertzel′S Algorith[ C]//Proceedings of the 14th Telecommunications Forum.Belgrade:Telecommunications Society,2006:1-5.

猜你喜歡
頻點解碼定點
基于4G MR的大數(shù)據(jù)分析優(yōu)化EPSFB語音時延
《解碼萬噸站》
例談圓錐曲線中的定點定值問題
定點幫扶讓村民過上美好生活
解析幾何中定點問題的處理策略
直線過定點的5種特優(yōu)解法
解碼eUCP2.0
中國外匯(2019年19期)2019-11-26 00:57:32
NAD C368解碼/放大器一體機(jī)
Quad(國都)Vena解碼/放大器一體機(jī)
基于測量報告數(shù)據(jù)優(yōu)化CSFB頻點配置的方法
寻甸| 连江县| 秭归县| 界首市| 赞皇县| 盐源县| 张家港市| 邯郸县| 成都市| 青铜峡市| 榆中县| 图们市| 博罗县| 思茅市| 阜康市| 黄骅市| 嘉荫县| 成安县| 泾源县| 达拉特旗| 望奎县| 黄山市| 武川县| 红河县| 集贤县| 拉孜县| 长兴县| 都兰县| 马尔康县| 岳西县| 兰州市| 东海县| 桂阳县| 石林| 卢龙县| 阳山县| 平谷区| 丹江口市| 澄江县| 大渡口区| 嵩明县|