- 相關(guān)推薦
基于軟件的DTMF產(chǎn)生器及其性能分析
摘要:簡(jiǎn)述DTMF信號產(chǎn)生的基本原理,提出使用SPCE061芯片的D/A端口和使用I/O端口模擬D/A產(chǎn)生DTMF信號的兩種實(shí)現方案,并通過(guò)實(shí)驗和仿真對兩種實(shí)現方案進(jìn)行對比分析。實(shí)驗證明,由于D/A精度較高,采用D/A輸出的DTMF信號質(zhì)量比使用I/O電阻網(wǎng)絡(luò )的DTMF質(zhì)量好;但在采樣頻率足夠高的情況下,使用I/O電阻網(wǎng)絡(luò )仍然可以滿(mǎn)足電信標準要求。在全世界范圍內,雙音多頻DTMF(Dual Tone Multi Frequency)信令逐漸使用在按鍵式電話(huà)機上,因其提供更高的撥號速率,迅速取代了傳統轉盤(pán)式電話(huà)機使用的撥號脈沖信號。近年來(lái),DTMF也應用在交互式控制中,如語(yǔ)言菜單、語(yǔ)言郵件、來(lái)電顯示、電話(huà)銀行和ATM終端等。在芯片內部沒(méi)有內置DTMF產(chǎn)生器時(shí),用普通D/A甚至于用4~5個(gè)普通I/O口和簡(jiǎn)單的電阻網(wǎng)絡(luò )來(lái)模擬D/A實(shí)現DTMF信號的產(chǎn)生,將擴大DTMF在工程中的應用,具有一定的應用價(jià)值。本文主要研究以上兩種用軟件產(chǎn)品 DTMF信號的方案。
DTMF信號由8個(gè)頻率兩兩組合而成。這8個(gè)頻率又分為低頻群和高頻群兩組。低頻群的4個(gè)頻率依次為697Hz、770Hz、852Hz、941Hz;高頻群的4個(gè)頻率依次為1209Hz、1336Hz、1477Hz、1336Hz。在通信領(lǐng)域應用中,DTMF主要用于電話(huà)機撥號信號和CID(Caller Identification,來(lái)電顯示)信號的傳送。在應用于電話(huà)機的撥號信號中,按照國家電信標準,其信號持續時(shí)間和間隔時(shí)間都不小于40ms,而頻率偏差不大于±1.5%。
1 傳統的可編程硬件DTMF發(fā)生器原理
傳統的DTMF發(fā)生器芯片有Hotel公司的HT9200A/B、Mitel公司的MT8880等。部分MCU也內置了DTMF發(fā)生器,其DTMF信號產(chǎn)生原理可簡(jiǎn)述如下:
將振蕩器產(chǎn)生的高頻振蕩信號分別送至兩個(gè)計數器,當計數器達到預設的值時(shí),產(chǎn)生一次反轉信號輸出,形成低頻方波。其中計數器寄存器可用軟件設置且有自動(dòng)裝載功能。通過(guò)這兩個(gè)計數器可設置輸出的兩路方波頻率。軟件編寫(xiě)控制程序時(shí),只須將對應頻率的計數值寫(xiě)入控制寄存器便可自動(dòng)產(chǎn)生所需的頻率信號。
從以上兩路輸出的方波再進(jìn)行信號正弦化處理和幅度控制,然后將兩路信號同時(shí)送至信號混合器輸出。這樣,如果其中一路輸出的方波頻率接近DTMF低頻群中的一個(gè)頻率,而另一路接近DTMF高頻群中的一個(gè)頻率,從混合器輸出的信號便是所需的DTMF信號了。
2 用D/A產(chǎn)生DTMF信號
DTMF軟件產(chǎn)生器是基于兩個(gè)用軟件模擬的二階數字在弦波振蕩器,一個(gè)用于產(chǎn)生低頻,一個(gè)用于產(chǎn)生高頻。典型的DTMF信號頻率范圍是697Hz~1633Hz。選取8192Hz作為采樣頻率,即可滿(mǎn)足Nyquist條件。系統中信號合成的函數方程為
Y(n)=a0 a1sin(2·Pi·f0·n/fs) a2sin(2·Pi·f1·n/fs) (1)
式中:a0為直流分量;f0、f1分別為DTMF中的低頻和高頻;fs為采樣頻率,在此定為8192Hz;a1、a2分別為f0、f1的振幅;n為采樣點(diǎn)數。
2.1 sin函數的計算
采樣頻率并不是DTMF的8個(gè)頻率中各頻率的整數倍,若采用查表法得到各采樣點(diǎn)處理的D/A輸出值,由于查表意味著(zhù)輸出值周期性的出現,則要求采樣頻率是輸出頻率的多個(gè)周期的整數倍。又由于輸出數據表中需要包括多個(gè)周期,而且要逼近上述的整數倍,因此輸出頻率必須是采樣頻率整數倍的倍數。由此產(chǎn)生以下幾個(gè)問(wèn)題:
①多個(gè)周期的數據表較大(平均一個(gè)頻率20字左右);
②數據表中各數值的計算煩雜;
③產(chǎn)生的信號頻率存在頻偏。
若采用計算sin函數的方法,以上問(wèn)題都將迎刃而解。只是,如何計算sin函數呢?在傳統的電子計算機系統中,處理浮點(diǎn)數比處理整數要復雜且占用CPU較多的時(shí)間;而在鄭易里片機系統中,一般對程序運行的時(shí)間都有要求。因此,本文采用了定點(diǎn)小數近似表示浮點(diǎn)數的方法,再利用線(xiàn)性插值法計算各點(diǎn)處的正弦函數值。
定點(diǎn)小數的表示方法:將需要表示的小數空間乘上一個(gè)系數映射到整數所能所示的空間。本文使用16位的單片機SPCE061,其D/A的精度為10位,DAC輸出寄存器為16位數據的高10位;sin函數的值域為[-1, 1],取整數域[0x0000,0x03ff]映射sin函數值中的[0, 1],取補數映射sin函數值中的負值,即可滿(mǎn)足DTMF輸出精度要求。要求將1映射為0x03ff,因此,當函數值為正時(shí),應乘以0x03ff即1023,經(jīng)取整后作為計算sin函數子程序的輸出;當函數值為負時(shí),只須將對應的正時(shí)的函數值取補便可得到。
計算sin函數時(shí),將0~2π映射為整數域的[0x0000,0x4000],因此,可通過(guò)整數域的第13和12位獲得象限信息。查表時(shí)只計算第一象限[0, π/2]的正弦值,其它象限的函數仁政由三角函數公式計算得到。第一象限sin函數的計算:0~π/2被映射到整數域的[0x0000,0x1000],將其分為16等分,將分割點(diǎn)上的函數值建立數據表,即將0、0x0100、0x0200等17個(gè)點(diǎn)處對應的正弦值列表,若弧度值x介于兩分割點(diǎn)x1與x2之間,則通過(guò)查表獲得sin(x1)與sin(x2),則有:
sin(x)=sin(x1) [sin(x2)-sin(x1)](x2-x1)/256
其它象限可根據三角函數公式獲得類(lèi)似的計算公式。
2.2 DTMF信號的軟件合成
由于在DTMF的傳輸過(guò)程中,高頻在線(xiàn)路中的傳輸損耗比低頻高,為了保證信號到達交
【基于軟件的DTMF產(chǎn)生器及其性能分析】相關(guān)文章:
基于Markov鏈的停-等ARQ性能分析03-07
軟件無(wú)線(xiàn)電中ADC/DAC性能分析及應用03-07
軟件性能測試研究03-28
基于MSP430的嵌入式DTMF撥號解碼器實(shí)現方案03-19
基于on-off模型設計與OPNET仿真的P-ALOHA系統性能分析03-07
淺析PGP軟件及其應用03-20