- 相關推薦
基于軟件的DTMF產生器及其性能分析
摘要:簡述DTMF信號產生的基本原理,提出使用SPCE061芯片的D/A端口和使用I/O端口模擬D/A產生DTMF信號的兩種實現方案,并通過實驗和仿真對兩種實現方案進行對比分析。實驗證明,由于D/A精度較高,采用D/A輸出的DTMF信號質量比使用I/O電阻網絡的DTMF質量好;但在采樣頻率足夠高的情況下,使用I/O電阻網絡仍然可以滿足電信標準要求。在全世界范圍內,雙音多頻DTMF(Dual Tone Multi Frequency)信令逐漸使用在按鍵式電話機上,因其提供更高的撥號速率,迅速取代了傳統轉盤式電話機使用的撥號脈沖信號。近年來,DTMF也應用在交互式控制中,如語言菜單、語言郵件、來電顯示、電話銀行和ATM終端等。在芯片內部沒有內置DTMF產生器時,用普通D/A甚至于用4~5個普通I/O口和簡單的電阻網絡來模擬D/A實現DTMF信號的產生,將擴大DTMF在工程中的應用,具有一定的應用價值。本文主要研究以上兩種用軟件產品 DTMF信號的方案。
DTMF信號由8個頻率兩兩組合而成。這8個頻率又分為低頻群和高頻群兩組。低頻群的4個頻率依次為697Hz、770Hz、852Hz、941Hz;高頻群的4個頻率依次為1209Hz、1336Hz、1477Hz、1336Hz。在通信領域應用中,DTMF主要用于電話機撥號信號和CID(Caller Identification,來電顯示)信號的傳送。在應用于電話機的撥號信號中,按照國家電信標準,其信號持續時間和間隔時間都不小于40ms,而頻率偏差不大于±1.5%。
1 傳統的可編程硬件DTMF發生器原理
傳統的DTMF發生器芯片有Hotel公司的HT9200A/B、Mitel公司的MT8880等。部分MCU也內置了DTMF發生器,其DTMF信號產生原理可簡述如下:
將振蕩器產生的高頻振蕩信號分別送至兩個計數器,當計數器達到預設的值時,產生一次反轉信號輸出,形成低頻方波。其中計數器寄存器可用軟件設置且有自動裝載功能。通過這兩個計數器可設置輸出的兩路方波頻率。軟件編寫控制程序時,只須將對應頻率的計數值寫入控制寄存器便可自動產生所需的頻率信號。
從以上兩路輸出的方波再進行信號正弦化處理和幅度控制,然后將兩路信號同時送至信號混合器輸出。這樣,如果其中一路輸出的方波頻率接近DTMF低頻群中的一個頻率,而另一路接近DTMF高頻群中的一個頻率,從混合器輸出的信號便是所需的DTMF信號了。
2 用D/A產生DTMF信號
DTMF軟件產生器是基于兩個用軟件模擬的二階數字在弦波振蕩器,一個用于產生低頻,一個用于產生高頻。典型的DTMF信號頻率范圍是697Hz~1633Hz。選取8192Hz作為采樣頻率,即可滿足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為采樣點數。
2.1 sin函數的計算
采樣頻率并不是DTMF的8個頻率中各頻率的整數倍,若采用查表法得到各采樣點處理的D/A輸出值,由于查表意味著輸出值周期性的出現,則要求采樣頻率是輸出頻率的多個周期的整數倍。又由于輸出數據表中需要包括多個周期,而且要逼近上述的整數倍,因此輸出頻率必須是采樣頻率整數倍的倍數。由此產生以下幾個問題:
①多個周期的數據表較大(平均一個頻率20字左右);
②數據表中各數值的計算煩雜;
③產生的信號頻率存在頻偏。
若采用計算sin函數的方法,以上問題都將迎刃而解。只是,如何計算sin函數呢?在傳統的電子計算機系統中,處理浮點數比處理整數要復雜且占用CPU較多的時間;而在鄭易里片機系統中,一般對程序運行的時間都有要求。因此,本文采用了定點小數近似表示浮點數的方法,再利用線性插值法計算各點處的正弦函數值。
定點小數的表示方法:將需要表示的小數空間乘上一個系數映射到整數所能所示的空間。本文使用16位的單片機SPCE061,其D/A的精度為10位,DAC輸出寄存器為16位數據的高10位;sin函數的值域為[-1, 1],取整數域[0x0000,0x03ff]映射sin函數值中的[0, 1],取補數映射sin函數值中的負值,即可滿足DTMF輸出精度要求。要求將1映射為0x03ff,因此,當函數值為正時,應乘以0x03ff即1023,經取整后作為計算sin函數子程序的輸出;當函數值為負時,只須將對應的正時的函數值取補便可得到。
計算sin函數時,將0~2π映射為整數域的[0x0000,0x4000],因此,可通過整數域的第13和12位獲得象限信息。查表時只計算第一象限[0, π/2]的正弦值,其它象限的函數仁政由三角函數公式計算得到。第一象限sin函數的計算:0~π/2被映射到整數域的[0x0000,0x1000],將其分為16等分,將分割點上的函數值建立數據表,即將0、0x0100、0x0200等17個點處對應的正弦值列表,若弧度值x介于兩分割點x1與x2之間,則通過查表獲得sin(x1)與sin(x2),則有:
sin(x)=sin(x1) [sin(x2)-sin(x1)](x2-x1)/256
其它象限可根據三角函數公式獲得類似的計算公式。
2.2 DTMF信號的軟件合成
由于在DTMF的傳輸過程中,高頻在線路中的傳輸損耗比低頻高,為了保證信號到達交
【基于軟件的DTMF產生器及其性能分析】相關文章:
數據關聯算法綜述及其性能評估05-05
基于顧客價值的需求,流動網挖掘策略分析06-04
我國氣壓盤式制動結構性能和前景分析05-11
電磁波及其經濟價值分析12-30
基于組織行為學分析沃爾瑪企業文化05-01
基于成交量標度的股價動力學分析05-12
網銀互聯的利弊及其主要問題分析06-11
鄭州市人口及其對經濟發展的影響分析04-20