???? 摘要:來電顯示的核心部分就是對來電顯示信號即FSK信號的解調。本文介紹了一種新型FSK解調算 法,該算法是基于最小均方差準則的線性預測算法,能夠快速準確的解調FSK信號,非常適用于來電顯示。同時還介紹了TI公司的TMS320C5402 DSP芯片以及來電顯示在該芯片上的實現。?
??? 來電顯示功能作為電話的一種附加功能,被越來越多的用戶所接受,成為電話必不可少的功能。本文介紹的就是一種新型FSK解調算法在來電顯示中的應用,以及其在TMS320VC5402 DSP上的實現。?
1 基本原理及算法設計
??? 來電顯示(CID,Calling Identity Delivery)是主叫號碼信息識別及傳送的通俗說法,它是由具有主叫號碼信息識別功能的交換機將主叫用戶的號碼及呼叫的日期、時間等信息傳送給具有主叫號碼顯示功能的終端。
來電顯示的信息傳輸方式有2種:2FSK和DTMF。2FSK方式與 DTMF方式相比有如下的優點:(l)數據傳輸速率高,在規定時間內能傳的字符數多;(2)2FSK方式支持ASCII字符集,而DTMF方式只支持數字及少數字符。目前采用2FSK方式的國家和地區有:美國、中國、日本、英國、加拿大、比利時、西班牙、新加坡等;采用DTMF主要則是以瑞典為代表的一些歐洲國家等。
2FSK是二進制信號的頻移鍵控的英文縮寫,它是指傳號(指發送"1")時發送某一頻率正弦波,而空號(指發送"0")時發送另一頻率正弦波。根據Bell202的建議,來電顯示的數據傳送采用連續相位的二進制頻移鍵控,比特率是1200bps,而"1"對應的頻率是1200Hz,"0"對應的頻率是2200Hz。
???????為了以下敘述方便,在此先給出FSK系統的原理框圖,如圖1所示。?
?
?
??? 整個系統的核心是FSK的算法設計。從圖1可以看出,關鍵幾步為:①調制,即如何實現任意頻率的正弦波發生器。②濾波器設計包括發送濾波器和接收端的低通濾波器。這一步相對來說比較簡單,可以利用MATLAB軟件來計算其系數,只要給出要求的截止頻率等參數即可,這大大減輕了我們的工作。③解調方法使用延遲相乘法,其延遲步數k的選擇是整個系統的關鍵。④同步可使用鎖相環來實現,這可以參考大多數文獻的鎖相環實現方法。為此,在討論中我們著重突出第①、③兩步。?
1.1 調制部分
??? 調制就是把數字信號變成適合于信道傳輸的正弦波。在此利用查表法來產生正弦波。因為TMS320C5402中包含一個N=256點的Q15正弦表。相位Ψi在[0,2π]上均勻分布:Ψi=2iπ/N ? i∈[0,N-1]。假設sin_addr為正弦表首地址,則sin(Ψi)的地址是sin_addr+i。?
調制信號可表示為:x(t)=Asin(2πFt)=Asin(Φ(t)),F={F0,F1}。設Te為抽樣間隔,則當t=nTe時,Φ(nTe)=Φn=2πFnTe=Φn-1+2πFTe?
???Φn=(Φn-1+ΔΦF)MOD2π?
???ΔΦF=2πFTe≤π??? (由仙農定理知:1/Te≥2F)?
?? Φn的取模可利用二進制補碼的循環性實現。在程序中,Φn以16位有符號整數In表示:In=215Φn/π-215。例如,當Φn=0時,In=-215;當Φn=π時,In=0;當Φn=2π時,In=215,超出了表示范圍,變成-215,這樣便起到了取模的作用。?
??? 由In確定i方法為:i=In/(216/N)+N/2,其中216/N為正弦表相鄰兩點的相位差值,相應的ΔI=215ΔΦF/π=216FTe。?
??? 假設絕對幅度誤差為dx,則AsinΔΦF<2dx?
???????? ???????????????? ?Asin(2π/N)<2dx?
? ??????????????????????? ?A2π/N<2dx即N>Aπ/dx?
??? 這就是對正弦表大小的要求。反過來,如果給定N,則對信號幅度提出了限定。?
??? 對于v.23,比特率為1200bps,而采樣率一般為8000Hz,每個比特的采樣點數為8000/1200=20/3,不為整數。為了處理方便,調制時可以提高采樣率使其為24kbps,則每個比特采樣點數為20。但要注意,發送到線路上的信號采樣率仍為8000Hz,可用程序的簡單循環控制實現。按照這種處理辦法,當發送比特“1”時,ΔI=216F1Te=216×1300×1/(8000×3)=3550;當發送比特“0”時,ΔI=216F0Te=216×2100×1/(8000×3)=5734。?
1.2 解調部分
??? 在圖1中,k一定要小于每個比特的采樣數,此例k<6。假設接收到的樣值s(n)和s(n-k)屬于同一個比特,則:?
??? v(n)=s(n)s(n-k)=A2sin(2πFnTe)sin(2πF(n-k)Te)?
??? ??? =A2/2[cos(2πFkTe)-cos(4πFnTe-2πFkTe)]?
??? 通過低通濾波器后,r(n)=A2/2cos(2πFkTe) F={F0,F1}?
??? 由此可見,r(n)為常數,A2/2cos(2πF0kTe)或A2/2cos(2πF1kTe),僅依賴于發送比特是“0”還是“1”。?
??? k的選擇應使d(k)=|cos(2πF0kTe)-cos(2πF1kTe)|最大。在此方案中,k=4。?
??? 由于v.23的比特率為1200bps,因此低通濾波器fcutoff=1200Hz。?
2 DSP設計
??? TMS320C5402是一款高性價比的數字信號處理器。片上有可編程等待狀態發生器和塊切換寄存器、兩個多通道增強型緩沖串口(McBsp)、一個增強型的8位并行主機接口(HPI8)、兩個16位定時器、一個六通道DMA控制器。TMS320C5402還有4K×16bit片上ROM和4K×16bit片上RAM,最大可尋址1M×16bit的存儲空間。片上ROM的保留區域對用戶來說是不可用的,原因是用戶無法寫入數據。片上ROM包括為Bootloader保留的區域及A律表、μ律表、sin表和中斷向量表。TMS320C5402有內部振蕩器構成的內部時鐘源和鎖相環時鐘發生器構成的外部時鐘源。?
??? 系統初始化工作頻率為100MHz,對片上存儲器訪問無需等待狀態,訪問外部I/O空間設為兩個等待狀態。?
??? 在本系統中,采用McBsp0、DMA0、DMA4。DMA0的同步事件為McBsp0的接收事件REVT0;源地址指向DRR,并固定不變;目的地址指向DMA接收緩沖區,每次自增1;采用ABU模式實現雙緩沖,DMA0接收緩沖區半滿或全滿時發生中斷;中斷服務子程序對其中剛引起中斷的那一半數據進行解調,而此時接收的數據順序放到另一半。為了節省存儲器空間,串口不對接收數據進行擴張,而在程序中進行軟件擴張。DMA4的同步事件為McBsp0的發送事件XEVT0;源地址指向DMA發送緩沖區,每次自增1;目的地址指向DXR,并固定不變;采用ABU模式實現雙緩沖;DMA發送緩沖區半滿或全滿時發生中斷,中斷服務子程序發送剛引起中斷的那一半數據,而此時正在調制的數據順序放到另一半。因為線路上一般傳送的是A律數據,因此發送時要在串口中進行硬件壓縮。?
??? 經仿真發現,采用C語言編程,TMS320C5402至少可以實現16路全雙工來電顯示,因此McBsp0應設置為:接收數據格式為每幀8字,每字16位(表示16路A律數據);發送數據格式為每幀16字,每字16位。為了減少串口錯誤,指定由RSYNCERR和XSYNCERR產生RINT和XINT。?
??? 另外還需注意,為了實現字同步,異步傳輸時首先對發送數據的每個字節加上起始位“0”和停止位“1”,解調后應去掉相應的起始位和停止位。在發送過程中,如果沒有待發數據,可以發送停止位(即頻率為F1的載波)或靜音(樣值為0)。?
??? 利用TMS320C5402實現符合v.23建議的16路全雙工來電顯示,其原理簡單,易實現,但是抗干擾性較差。由于DTMF的某些頻率與v.23碼的載波頻率非常接近,如果混有DTMF碼,也可解出少量的DTMF碼。為了排除此類錯誤,需要加上增益控制、帶通濾波等,這使得設計變得復雜。實踐中,此類錯誤較少,除非特別要求,否則不必理會。?
??? 為了進一步提高精度,可以用長整數表示相位,還可以采用重采樣技術及局部FFT等技術[5]或者改進解調方法可實現高精度檢測。?
?
評論