8路FSK主叫號(hào)碼識(shí)別電路的設(shè)計(jì)
王昌世 2002/11/25
關(guān)鍵字:主叫識(shí)別 BEL202協(xié)議 FSK MT88E39 單片機(jī) 巡檢
Key Words: Caller ID Protocol FSK 88E39 MCS Circle Detect
摘要:本文主要講述基于單片機(jī)硬件的8路并發(fā)的FSK主叫號(hào)碼的識(shí)別電路的設(shè)計(jì)。
該文同時(shí)涉及了BEL202 協(xié)議、FSK以及借助雙口RAM的計(jì)算機(jī)并行數(shù)據(jù)通信等技術(shù)
Abstract: The paper mainly descriped the design of eight channel
hardware FSK Caller IDcircuit based on single chip microprocessor 。It
simultaneously include BEL202 protocole,F(xiàn)SK and computer the parallel
communication by dual port RAM technology,and so on.
1.主叫號(hào)碼識(shí)別協(xié)議。
主叫號(hào)碼識(shí)別(俗稱來電顯示)現(xiàn)已成為電話通信的一項(xiàng)重要功能,在許多的CTI
呼叫中心和交換機(jī)中也都是不可缺少的。
主叫號(hào)碼識(shí)別(英譯為Caller ID),又稱主叫號(hào)碼傳輸(Calling Number Delivery),
是一種按V.23或是BEL202數(shù)據(jù)流協(xié)議(在這里統(tǒng)稱為Caller ID協(xié)議),把主叫電話號(hào)碼等信息在電話的呼叫階段傳給被叫客戶的一種方法。典型的Caller
ID協(xié)議規(guī)范由下列三個(gè)層次組成。
1.1物理層
通過物理層異步傳輸?shù)乃袛?shù)據(jù)都是由8位字符構(gòu)成的。字符的格式如下:
S2 M B7 B6 B5 B4 B3 B2 L S1
在這里: S1=開始位,S2=停止位,M=最高有效位,L=最低有效位,B=第2到7數(shù)據(jù)位。
1.2數(shù)據(jù)鏈路層
鏈路層把數(shù)據(jù)幀組合成一個(gè)帶有效驗(yàn)和的數(shù)據(jù)包,以區(qū)分噪聲。這個(gè)數(shù)據(jù)包的格式如下:
通道占用 | 標(biāo)志信號(hào) | 信息類型 | 信息長度 | 信息 | 校驗(yàn)和 |
(1) 通道占用信號(hào): 這是一個(gè)接續(xù)的"0"和"1"(二進(jìn)制位)交替信號(hào)(按字節(jié),就是0x55) ,位數(shù)在96~315之間(對(duì)應(yīng)80ms~262ms),以"1"開始,以"0"結(jié)束。
這個(gè)信號(hào)的作用在于減少與真實(shí)的載波信號(hào)類似的信號(hào)干擾,接收端只有在正確收到這個(gè)信號(hào),
后續(xù)的信號(hào)才會(huì)有效。
(2)標(biāo)志信號(hào):這是一連串的停止位(即"1",就是持續(xù)的高電平),至少55位(對(duì)應(yīng)45ms)。
(3)信息類型:占一個(gè)字節(jié),其值取決于應(yīng)用情況,多見為"04h"。
(4)信息長度 :占一個(gè)字節(jié)。是"信息"的字節(jié)長度。其值為3--255。
(5)信息內(nèi)容:是真正的內(nèi)容所在(如電話號(hào)碼等)。此字段完整的內(nèi)容格式由"示意層(即presentation layer)"給出(1.3節(jié)討論)。其內(nèi)容長短隨國家地區(qū)的不同而不同,且具體的內(nèi)容格式大都比完整的內(nèi)容格式少許多。
(6)校驗(yàn)和:是從"信息類型"開始到"信息"結(jié)束的所有字節(jié)("校驗(yàn)和"本身除外)的字節(jié)和,不計(jì)溢出,占一字節(jié),然后求補(bǔ)碼。
1.3示意層
其完整的格式為:
參數(shù)類型 | 參數(shù)長度 | 參數(shù)字節(jié) | …… | 參數(shù)類型 | 參數(shù)長度 | 參數(shù)字節(jié) |
(1) 示意層的參數(shù)是可重復(fù)的 。
(2) "參數(shù)長度"取值為0~255。
(3) "參數(shù)字節(jié)"可為0,既可以沒有。若有,其數(shù)制(指ASCII碼等)也是可變的。
(4) 在實(shí)際應(yīng)用中,可以只有"參數(shù)字節(jié)"而無"參數(shù)類型"和"參數(shù)長度"。例如,在我國的一些電信應(yīng)用中。
1.4一個(gè)實(shí)例
下面是一個(gè)實(shí)例,是從深圳電信局接受到的FSK數(shù)據(jù)( 十六進(jìn)制數(shù),其中電話號(hào)碼和日期是ASCII碼 )。
1.4.1實(shí)例
分別用手機(jī)(13662573614)和電話(3302729)撥打我公司外線電話3302732。
(1)用手機(jī)撥打
0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x04,0x13,0x31,0x32,0x32,0x37,0x31,0x35,0x33,
0x31,0x31,0x33,0x36,0x36,0x32,0x35,0x37,x033,x036,x031,x034,x017
(2)用電話撥打
0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,
0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,04,0f,0x31,0x32,0x32,0x37,0x31,0x35,0x34,
0x36,0x33,0x33,0x30,0x32,0x37,0x32,0x39,0xe7
1.4.2數(shù)據(jù)分析
。1)在1.4.1中,先導(dǎo)的28個(gè)字節(jié)"0x55",計(jì)226位(bit)的"0"和"1",即是在上述的"通道占用信號(hào)"。其位數(shù)在協(xié)議范圍內(nèi)。
(2)"標(biāo)志信號(hào)"在此占約144ms(用數(shù)字示波器捕獲),即1200 BIT的"1"。接收時(shí)被芯片MT88E39屏蔽,無數(shù)據(jù)輸出。
。3)"0x04"是信息類型。
(4)"0x13"是信息長度。
(5)緊接著信息長度后的8個(gè)數(shù)據(jù)是撥打電話時(shí)的月、日、時(shí)和分的ASCII碼(16進(jìn)制),即12月27日15時(shí)31分。
(6)時(shí)間后的11個(gè)數(shù)據(jù)是手機(jī)號(hào)碼的ASCII碼,也即是13662573614。
。7)最后一個(gè)字節(jié)是效驗(yàn)和。
。8)對(duì)1.4.2的分析同上,僅把11位的手機(jī)號(hào)改為7位電話號(hào)即可。要注意的是作為先導(dǎo)的"0x55"的個(gè)數(shù)比1.4.1中多一個(gè)。
(9)很顯然,在此數(shù)據(jù)格式中省略前述的"示意層"中的"參數(shù)類型"和"參數(shù)長度",僅有"參數(shù)字節(jié)"。
2 FSK
FSK即"頻移鍵控",它的英譯為"Frequency Shift Keying"。它是在電話線上進(jìn)行二進(jìn)制數(shù)據(jù)(當(dāng)然,也包括"Caller
ID"數(shù)據(jù)信號(hào)在內(nèi))調(diào)制傳輸?shù)膬煞N常用的方法之一,是一種用不同的載
波頻率表示二進(jìn)制數(shù)據(jù)的"0"和"1"的調(diào)制方法。DTMF(即雙音多頻)是另一種方法。
這個(gè)過程可用微處理器(如TI 公司的MSP430)及其程序來實(shí)現(xiàn),也可由專門的芯片來完成(本文既是),而后者對(duì)設(shè)計(jì)者來說則顯得很簡單。
美國MITEL 公司的MT88E39就是這樣的芯片(當(dāng)然,還有其它產(chǎn)品,如,臺(tái)灣Holtek 公司的HT9032C/D(C為16腳DIP或SOP
封裝,D為8腳DIP或SOP封裝)等,但原理大同小異)。
2.2.1 MT88E39介紹
MT88E39為16Pin SOIC封裝。5個(gè)輸入腳,8個(gè)輸出,1對(duì)電源腳,1個(gè)內(nèi)部連接腳,具體如下:
。1) 第1、2腳,運(yùn)放的模擬輸入端IN+和IN-。可差分也可作單端輸入。它通常接中繼模塊的輸出端,F(xiàn)SK調(diào)制信號(hào)即由此輸入。
(2) 第6、7腳,所需晶振的連接端OSC1和OSC2。當(dāng)直連外部時(shí)鐘時(shí),OSC1作輸入,OSC2則懸空。OSC2也是時(shí)鐘輸出端。
。3) 第13腳,低功耗運(yùn)行控制輸入端。高電平有效。此時(shí),運(yùn)放、振蕩器及內(nèi)部電路不工作。
。4) 第14腳(MODE),工作模式選擇輸入端()。有模式0和 模式1兩種。兩鐘模式的不同僅在數(shù)據(jù)輸出與微處理器的接口方式上。模式0使用較多。
。5) 第10腳(DATA),串行數(shù)據(jù)輸出端。在無FSK信號(hào)輸入時(shí),其為高電平。在有信號(hào)時(shí),每字節(jié)按低位在前,高為在后送出。
。6) 第9腳(DCLK),在不同工作方式,有不同功能。在模式0,它是串行數(shù)據(jù)輸出位同步時(shí)鐘,在無FSK信號(hào)輸入時(shí),其為高電平,而在有信號(hào)時(shí),其上升沿指示數(shù)據(jù)位以穩(wěn)定,可以被讀取。在模式1,它作輸入端,需與微處理器的讀信號(hào)相連。
。7) 第11腳(/DR),一個(gè)數(shù)據(jù)字準(zhǔn)備好標(biāo)志信號(hào),也即是輸出字同步時(shí)鐘。
。8) 第12腳(/CD),在指定的時(shí)間內(nèi),載波被檢測標(biāo)志。
。9) 第15腳(IC),內(nèi)部連接端。行數(shù)據(jù)輸出端。
(10) 第3腳(GS),運(yùn)放增益調(diào)整端。
(11) 第4腳(Vref),參考電壓輸出端(2.5V)。
。12) 第5腳(CAP),外接0.1μF電容器接入端(另一端接地)。
。13) 第8、16腳(Vss、Vdd),一對(duì)電源腳。詳細(xì)資料請(qǐng)見參考文獻(xiàn)[4]。
3.電路設(shè)計(jì)
如圖1所示。這是一個(gè)在呼叫中心上使用的收號(hào)電路,八路可同時(shí)進(jìn)行。
圖1. 8路FSK主叫號(hào)碼接收電路(點(diǎn)擊放大)
3.1硬件電路
由三部分組成:FSK解碼,由單片機(jī)完成的FSK數(shù)據(jù)的串-并轉(zhuǎn)換及八路巡環(huán),由雙口FIFO RAM(IDT7202)完成與上位機(jī)的通信接口(ISA
總線的工控機(jī))。
3.1.1FSK解碼
這是一個(gè)依據(jù)MITEL公司在文獻(xiàn)[1]中所提供的典型應(yīng)用電路來設(shè)計(jì)的。C1(104)用來提供FSK正弦調(diào)制信號(hào)通道。R1、R2用于放大器的增益調(diào)整。該增益調(diào)整對(duì)整個(gè)的電路的正常工作至關(guān)重要。增益過大容易引起誤接收,增益偏小,則接收不到應(yīng)有的信號(hào)。增益調(diào)整主要是針對(duì)不同的內(nèi)外線摸塊而引起的不同的模擬信號(hào)輸出的情況。
晶振為3.58M。此時(shí),串行數(shù)據(jù)信號(hào)"DATA"的波特率為1200。
禁用低共耗模式(PWND=0)。
選擇工作方式0。在此方式下,位同步信號(hào)"DCLK"的波特率為2400。其上升沿出現(xiàn)在DATA信號(hào)位的中間。
3.1.2單片機(jī)電路
所有四個(gè)口(P1-P3)均工作在I/O方式。P1口作DATA信號(hào)接收用,每線對(duì)應(yīng)一路FSK信號(hào),總共八路。
P2口作DCLK信號(hào)檢測用,也有八路。
P0口作并行數(shù)據(jù)輸出用,與數(shù)據(jù)緩沖雙口FIFO相接。
僅部分使用了P3口。
3.1.3 FIFO電路
此部分電路功能有二,即多路號(hào)碼數(shù)據(jù)緩沖和上下位機(jī)接口。此FIFO的容量為1024*9bit(其中一位是奇偶效驗(yàn)為,這里未用),其有分別的讀寫數(shù)據(jù)線(即所謂雙口),可雙口同時(shí)讀寫。無地址線,通過內(nèi)部的讀寫指針來控制順序讀寫,配有硬件讀寫溢出保護(hù)。
3.3.4電路調(diào)試
(1)FSK主叫號(hào)碼識(shí)別技術(shù)的關(guān)鍵在于對(duì)當(dāng)?shù)氐碾娦挪块T所發(fā)FSK信號(hào)協(xié)議的了解,這項(xiàng)工作是你在硬件平臺(tái)搭建好后要做的第一件事,此事做好后,我想整個(gè)的設(shè)計(jì)工作即完成60%。我們是用美國泰克(Traxi)的數(shù)字示波器來做這項(xiàng)工作的。具體做法是:
、偈静ㄆ魍ǖ1接于電路中任意一路的"DCLK"端,并作為信號(hào)源。示波器通道2接于相應(yīng)的"DATA"端。
、趻呙钑r(shí)間取50ms或100ms,幅值取2V/格。選擇"單次捕捉"和上升沿觸發(fā)方式。
、劢o相應(yīng)的線路打入一個(gè)外線電話。如果電路正常,示波器上會(huì)顯示出二路同步波形,通道1為同步源。
、軐⒉ㄐ握归_加以分析。特別注意:每字節(jié)按低位在前,高為在后送出。
(2)應(yīng)特別注意增益電阻R2的調(diào)整。由于中繼(或曰外線)模塊的不同,其輸出的FSK模擬信號(hào)的幅值有很大差異,R2的大小必須適應(yīng)這種變化。因?yàn)閷?duì)MT88E39過大或過小的模擬信號(hào)輸入都會(huì)使其輸出的FSK數(shù)據(jù)出錯(cuò)。
4. 單片機(jī)程序設(shè)計(jì)
4.1程序算法
。1)依據(jù)FSK傳輸協(xié)議,接收數(shù)據(jù)。
。2)在定時(shí)器T0的中斷服務(wù)程序中,定時(shí)用查詢方式檢測由MT88E39輸出的FSK信號(hào)。當(dāng)判斷到"DCLK"有上升沿產(chǎn)生后立刻地采集"DATA"數(shù)據(jù)位信號(hào)。T0的定時(shí)時(shí)間需與MT88E39的DATA和DCLK的時(shí)序相匹配,必須保證在八路電話同時(shí)接通的情況下,在DATA的數(shù)據(jù)位的半周期(約為417us)內(nèi),能依次檢測到8路DCLK信號(hào)的變化(即上升沿),而不遺漏。以180us定時(shí)中斷為宜。選擇單片機(jī)89C51的主頻為24MHz。
。3)在連續(xù)收到至少20個(gè)55h數(shù)據(jù)(即通道占用信號(hào))后,程序才往下執(zhí)行,否則表明此次FSK數(shù)據(jù)出錯(cuò),應(yīng)退出本次收號(hào)。
(4)"04h"是FSK的標(biāo)志字,在此字后的一個(gè)字節(jié)是數(shù)據(jù)長度。
。5)在主程序中,在處理完某一路的一幀F(xiàn)SK數(shù)據(jù)后,才將其寫入FIFO把字節(jié)數(shù)據(jù)(主叫的日期和號(hào)碼)寫入FIFO。
。6)每次所寫數(shù)據(jù)前要加入同步碼(如"AA"),每個(gè)數(shù)據(jù)中還應(yīng)加入線(或路)號(hào)(對(duì)于兩路以上),用于
標(biāo)識(shí)一個(gè)完整的話路數(shù)據(jù)。
(7)循環(huán)執(zhí)行。
。8)在程序中建立以下的變量:
① FLAG*(*代表0~7的數(shù)字,對(duì)應(yīng)0~7個(gè)FSK接收通道,下同)是位標(biāo)志。記錄上一次被采到的"DCLK"的狀態(tài)。FLAG*=0,表示DCLK的"邏輯0";FLAG*=1,表示DCLK的"邏輯1";
、谖粯(biāo)志STATE*記錄是否受到"0x04"標(biāo)志字,受到,則STATE*=1,否則,TSATE*=0。
、跜OUNT*記錄收取某個(gè)字節(jié)時(shí)已收到的比特?cái)?shù)。
、蹵ACOUNT*記錄收到的"0x55"的個(gè)數(shù)。
⑤CCOUNT*保存收到的信息長度值。
⑥BCOUNT*作為程序中通用的計(jì)數(shù)器。
、38h(還有39h~3fh)單元用于存放當(dāng)前接收的字節(jié)。
圖2a. 主程序流程圖(點(diǎn)擊放大)
圖2b. 中斷服務(wù)程序流程圖(點(diǎn)擊放大)
4.2程序流程
見圖2。
5.注釋
(1)BELLCORE 即美國貝爾電信研究所。"BEL202"是該所制定的有關(guān)"CALLER ID"方面的協(xié)議文件。有關(guān)"BEL202"更詳細(xì)的信息,請(qǐng)參考"BELLCORE
Technical Manual"。
。2)V.23是CCITT(國際電話與電報(bào)顧問委員會(huì))于1988年制定的一個(gè)建議,是有關(guān)"公用交換電話網(wǎng)中使用的標(biāo)準(zhǔn)化600/1200波特調(diào)制解調(diào)器"的,詳見文獻(xiàn)[5]。
6.結(jié)束語
此設(shè)計(jì)已在我公司生產(chǎn)的"CTI2000呼叫中心"設(shè)備中使用多年,效果良好。
主要參考文獻(xiàn)
[1]《Applicaion Report SPRA462--Inplementing Caller ID on Fixed-point DSPS》((USA)Texas
Instruments Company/網(wǎng)址http://www.ti.com/)
[2]《Caller ID on TMS320C2xx》((USA)Texas Instruments Company)
[3]《FSK Modulation and Demodulation With the Msp430 Microcontroller》((USA)Texas
Instruments Company)
[4]《CMOS MT88E39 Calling Number Identifcation Circuit Advance information
(CNIC1.1)》((USA)Mitel
深圳菱科實(shí)業(yè)公司供稿 CTI論壇編輯