基于PSoC的嵌入式DTMF解碼器實現(xiàn)方案
引言
本文引用地址:http://m.butianyuan.cn/article/81649.htmDTMF (雙音多頻)信號是電話網(wǎng)中常用的信令,無論是家用電話、移動電話還是程控交換機上,多采用DTMF信號發(fā)送接收號碼。DTMF技術(shù)廣泛地應用于電話機,遠程家用電器產(chǎn)品的控制,語音信箱,報警系統(tǒng)等領域??梢姡珼TMF撥號和解碼在通信系統(tǒng)及其它方面有著廣泛的應用。通常DTMF信號的檢測采用專用芯片,DSP,16位或更高檔的MCU來實現(xiàn),但其成本較高。本文介紹 了一種低成本的基于賽普拉斯的8位PSoC芯片的DTMF解碼器實現(xiàn)方案。
PSoC 簡述
PSoC是Cypress半導體有限公司生產(chǎn)的的可編程片上系統(tǒng)芯片。它主要由8位微處理器,可編程模擬模塊和數(shù)字模塊,外加硬件乘法累加器,I2C,F(xiàn)lash,SRAM等周邊外圍模塊組成,如圖2所示。
因此,PSoC除了能實現(xiàn)一般MCU的功能外,還可通過可編程模擬和數(shù)字模塊靈活地實現(xiàn)嵌入式系統(tǒng)所需的模擬與數(shù)字外圍功能。為了方便用戶簡單而快速地實現(xiàn)模擬數(shù)字外圍功能的設計,Cypress基于可編程數(shù)字模擬模塊構(gòu)建了大量的用戶模塊,如可編程運算放大器,比較器,6至14位的模數(shù)和數(shù)模轉(zhuǎn)換器,濾波器,8/16 /24/32位定時器/計數(shù)器,脈寬調(diào)制器,觸摸感應等模塊。這些用戶模塊將PSoC內(nèi)部的寄存器配置,數(shù)字模塊和模擬模塊之間的內(nèi)部連線,底層API(Application Program Interface, 應用程序接口)函數(shù)都已設計好了。當用戶需要某個數(shù)字模擬外圍功能時,只需要簡單地調(diào)用相應的用戶模塊即可實現(xiàn)。
DTMF信號
DTMF信號是將撥號盤上的0~9、A~D及*/E、#/F共16個字符,用音頻范圍的8個頻率來表示的一種編碼方式。8個頻率分為高頻群和低頻群兩組,分別作為列頻和行頻。每個字符的信號由來自列頻和行頻的兩個頻率的正弦信號疊加而成。頻率組合方式如圖1所示。
根據(jù)CCITT Q.23建議,DTMF信號的技術(shù)指標是:傳送/接收率為每秒10個號碼,或每個號碼100ms。每個號碼傳送過程中,信號存在時間至少45ms,且不多 于55ms,100ms的其余時間是靜音。在每個頻率點上允許有不超過±1.5%的頻率誤差。任何超過給定頻率 ±3.5%的信號,均被認為是無效的,拒絕承認接收。另外,在最壞的檢測條件下,信噪比不得低于15dB。
采用軟件方式進行DTMF解碼,首先要將模擬信號轉(zhuǎn)換成數(shù)字信號,然后再送入CPU處理。利用PSoC的可編程模擬運算放大器和8位ADC用戶模塊,加上簡單的接口就可以實現(xiàn)DTMF信號的模數(shù)轉(zhuǎn)換,ADC接口電路如圖3所示。 可編程模擬運算放大器用戶模塊主要用來實現(xiàn)DTMF輸入信號的自動增益控制功能。
DTMF解碼可以通過計算所接收到的信號在8個既定頻率點的頻譜值來確定是否為有效的DTMF信號及接收到的是哪個號碼。另外,需要通過一系列的有效性檢驗以防止誤判。
FFT可用來計算N點頻率處的頻譜值,但不適合于此處應用。因為它計算了許多不需要的值,計算量太大;而且為保證頻率分辨率,F(xiàn)FT的點數(shù)較大。另外,它不能按逐個樣點的方式處理,不利于實時實現(xiàn)。
由于只需要知道8個特定點的頻譜值,采用一種稱為Goertzel算法的DFT算法可以有效地提高計算效率。它相當于一個含兩個極點的IIR濾波器,8個頻點對應各自相匹配的濾波器,其傳遞函數(shù)為:
然而Goertzel算法還是有一個缺點,那就是它計算的是頻率fk=kfs/N處的頻譜值,而精確的頻率值fi通常只能對應某個近似的整數(shù)k,為了達到要求的分辨率,就需要較大的樣點數(shù)N。改進的方法是:修改傳遞函數(shù),不計算角頻率處的頻譜值,而計算精確角頻率處的頻譜值。這樣分辨率能達到數(shù)據(jù)自然加窗(矩形窗)的分辨率。它的傳遞函數(shù)為
改進的Goertzel算法運算步驟如下:
1. 對每個采樣點遞歸計算(n=0,1,…,N)
Si(n)=2cos(2πfi/fs)× Si(n-1)- Si(n-2)+x[n]
其初始條件是Si[-1]= Si[-2]=0。
2. 當N個樣點采集并計算完成后,計算8個頻譜值:
|Y(i)|2=Si2[N]+ Si2[N-1]- 2cos(2πfi/fs)× Si[N] × Si[N-1]
在選定采樣頻率為7.8125Khz基礎上,選取N=84個樣點即可達到所需的頻率分辨率。這對應約11ms信號的采樣時間,這足以保證PSOC在100mS的信號碼傳輸周期里的非采樣時間里完成DTMF解碼和用戶應用系統(tǒng)的其它功能。
當8 個頻譜值計算出來后,還要進行DTMF有效性檢驗,以判定是否為有效的DTMF信號。有效性檢驗包括以下幾項內(nèi)容:(1)高、低頻段的最大幅值都必須大于 某個門限值,而且二者之和也要大于某個門限值。(2)高、低頻段的最大幅值與各自頻段其它三個幅值相比,其差值必須大于某個門限值。(3)逆向絞度檢驗即 低頻段最大幅值不得超過高頻段最大幅值8dB,標準絞度檢驗即高頻段最大幅值不得超過低頻段最大幅值4dB。
若上述檢驗通過,判定當前周期DTMF信號有效,根據(jù)頻率組合可確定是對應哪個號碼。為了避免重復識別,還需進行靜音檢測。
DTMF解碼程序流程圖如圖4所示。
解碼時需要大量的乘法運算,可以通過PSoC內(nèi)部的8位有符號硬件乘法器完成,從而實現(xiàn)DTMF的實時解碼要求。
結(jié)語
該方案所需PSoC的軟硬件資源少,性能可靠,可方便地集成于基于PSOC的單片系統(tǒng)產(chǎn)品實現(xiàn)低成本的遠程控制功能。
評論