HDLC協(xié)議處理芯片MT8952B在數(shù)字程控交換機中的應用
關(guān)鍵詞: HDLC;MT8952B;FIFO;數(shù)字程控交換機
在目前數(shù)字程控交換機或網(wǎng)絡(luò)設(shè)計中,普遍采用了HDLC高級數(shù)據(jù)鏈路控制協(xié)議。HDLC協(xié)議不依賴于任何一種字符編碼集;數(shù)據(jù)報文可透明傳輸,用于實現(xiàn)透明傳輸?shù)摹?比特插入法”易于硬件實現(xiàn);全雙工通信,不必等待確認便可連續(xù)發(fā)送數(shù)據(jù),有較高的數(shù)據(jù)鏈路傳輸效率;所有幀均采用CRC校驗,對信息幀進行順序編號,可防止漏收或重分,傳輸可靠性高;傳輸控制功能與處理功能分離,具有較大的靈活性。
MT8952B簡介
MT8952B HDLC協(xié)議控制器有以下特點:符合X.25 第二層標準數(shù)據(jù)格式,前向序列的產(chǎn)生和檢測,單字節(jié)地址識別,具有微處理器端口,靈活操作和控制寄存器,發(fā)送和接收分別有19個字節(jié)的FIFO緩沖區(qū),多路數(shù)據(jù)鏈路握手信號,高速串行時鐘輸出(2.5Mbps),符合ST-BUS的可編程的通道選擇和時隙控制,獨立的看門狗定時器,靈活的協(xié)議控制功能,低功耗ISO-CMOS技術(shù)。其適用的主要應用領(lǐng)域包括:數(shù)據(jù)鏈路控制和協(xié)議產(chǎn)生,數(shù)字設(shè)備,PBX和專用數(shù)據(jù)網(wǎng),ISDN基本數(shù)據(jù)的D通道控制器,數(shù)據(jù)網(wǎng)絡(luò)接口電路(典型的MT8972)的C通道控制器,內(nèi)部通信處理等。內(nèi)部結(jié)構(gòu)見圖1。
MT8952B電路的基本原理
MT8952B HDLC協(xié)議控制器,通過零位插入和刪除技術(shù)獲得數(shù)據(jù)傳輸?shù)耐该餍浴T诎l(fā)送數(shù)據(jù)的過程中,自動產(chǎn)生HDLC幀標志(0111110)和FCS(frame check sequence)字段以及幀異常中止、信道空閑和其他接收狀態(tài),因而MT8952B將準備發(fā)送的數(shù)據(jù)自動地構(gòu)成HDLC幀。在接收端,把來自遠方的HDLC幀進行FCS校驗,并恢復原始數(shù)據(jù)。
MT8952B HDLC的幀格式
在HDLC中,數(shù)據(jù)和控制報文均以幀的標準格式傳送。HDLC中命令和響應以統(tǒng)一的格式按幀傳輸。完整的HDLC幀由標志字段(F)、地址字段(A)、控制字段(C)、信息字段(I)、幀校驗序列字段(FCS)等組成,其格式如表1。
標志字段(F):標志字段01111110的比特模式,用以標志幀的起始和前一幀的終止。通常,在不進行幀傳送的時刻,信道仍處于激活狀態(tài)。標志字段也可以作為幀與幀之間的填充字符。在這種狀態(tài)下,發(fā)送方不斷地發(fā)送標志字段,而接收方則檢測每一個收到的標志字段,一旦發(fā)現(xiàn)某個標志字段后面不再是一個標志字段,便可認為一個新的幀傳送已經(jīng)開始。采用"0比特插入法"可以實現(xiàn)數(shù)據(jù)的透明傳輸,該法在發(fā)送端檢測除標志碼以外的所有字段,若發(fā)現(xiàn)連續(xù)5個"1"出現(xiàn)時,便在其后添插1個"0",然后繼續(xù)發(fā)送后面的比特流;在接收端同樣檢測除標志碼以外所有字段,若發(fā)現(xiàn)連續(xù)5個"1"后是"0",則將其刪除以恢復比特流的原貌。
地址字段(A):地址字段的內(nèi)容取決于所采用的操作方式。在操作方式中,有主站、從站、組合站之分,每一個從站和組合站都被分配一個惟一的地址。命令幀中的地址字段攜帶的地址是對方站的地址,而響應幀中的地址字段所攜帶的地址是本站的地址。某一地址也可分配給不止一個站,這種地址稱為組地址,利用一個組地址傳輸?shù)膸鼙唤M內(nèi)所有擁有該組地址的站接收,但當一個從站或組合站發(fā)送響應時,它仍應當用它唯一的地址。還可以用全"1"地址來表示包含所有站的地址,這種地址稱為廣播地址,含有廣播地址的幀傳送給鏈路上所有的站。
控制字段(C):控制字段用于構(gòu)成各種命令和響應,以便對鏈路進行監(jiān)視和控制。發(fā)送方主站或組合站利用控制字段來通知被尋址的從站或組合站執(zhí)行約定的操作;相反,從站用該字段作為對命令的響應,報告已完成的操作或狀態(tài)的變化。
信息字段(I):信息字段可以是任意的二進制比特串。HDLC協(xié)議比特串長度未做嚴格限定,但MT8952B的FIFO只有19個字節(jié),所以每次發(fā)送不超過19個字節(jié);而下限可以為0 ,即無信息字段。
幀校驗序列字段(FCS):幀校驗序列字段可以使用16位CRC,對兩個標志字段之間的整個幀的內(nèi)容進行校驗。
MT8952B寄存器
MT8952B有兩個端口,一個是串行端口用來發(fā)送和接收數(shù)據(jù)包,另一個是并口,允許在單片機系統(tǒng)總線和協(xié)議處理器之間并行傳輸數(shù)據(jù)。這個接口包括數(shù)據(jù)總線(D0-D7),地址總線(A0-A3),E時鐘,片選(CS)和讀寫控制,單片機可以讀寫協(xié)議處理器的各個寄存器。表2給出這些寄存器的地址,寄存器的詳細描述可參考MT8952B的數(shù)據(jù)手冊。
圖1 MT8952B內(nèi)部結(jié)構(gòu)圖
圖2 ST-BUS 格式
圖3 內(nèi)部時鐘模式下的時序圖
圖4 W77E58P與MT8952B的連接電路圖
MT8952B時序圖
根據(jù)時鐘控制寄存器的設(shè)置,MT8952B可以設(shè)置為內(nèi)部和外部時鐘模式。在外部時鐘模式下,發(fā)送和接收數(shù)據(jù)分別由/TxCEN和/RxCEN使能,而/Foi僅僅用于看門狗定時器。在內(nèi)部時鐘模式下,發(fā)送和接收數(shù)據(jù)由輸入時鐘Cki和/Foi產(chǎn)生內(nèi)部時鐘控制,/Foi的輸入定義一個幀的開始,見圖2,所選擇的時隙由設(shè)置TC0-TC3來選擇,該模式下,輸入/TxCEN和/RxCEN無效。Cki的選擇是根據(jù)時鐘控制寄存器的BRCK位來控制,BRCK為1時,Cki為2.048MHz,BRCK為0時,Cki為4.096MHz,與/Foi的時序關(guān)系見圖3。
單片機與MT8952B連接電路圖
文中給出在程控交換機上常用的連接電路圖,通過MT8952B進行消息的發(fā)送和接收,如圖4所示。A3~A0為協(xié)議控制器的寄存器地址選擇,單片機可以讀寫這些寄存器,串口可以傳送/接收數(shù)據(jù)包,可以連接到數(shù)字傳輸媒介或數(shù)字接口電路如MT8972、MT8980等,如DSTO52和DSTI52可以MT8980的一對母線相連。
MT8952B 數(shù)據(jù)讀寫的應用程序?qū)嵗?BR>根據(jù)前面的介紹,通過圖4的接口電路,可以控制寄存器,達到所需要的目的。以下為讀取和發(fā)送數(shù)據(jù)的子程序?qū)嵗?BR>//定義8952的寄存器地址
#define FSR_R 0x1000 //讀 FIFO 狀態(tài)
#define DDR_W 0x0100 //寫 發(fā)送數(shù)據(jù)
#define DDR_R 0x1100 //讀 接收數(shù)據(jù)
#define CR_W 0x0200 //寫 控制寄存器
#define CR_R 0x1200 //讀 控制寄存器
#define IFR_R 0x1600 //讀 中斷標志寄存器
讀取數(shù)據(jù)
MT8952B數(shù)據(jù)的讀取,是在外部中斷里實現(xiàn)的,當有數(shù)據(jù)到達時,IRQ拉低,單片機產(chǎn)生中斷,可以在外部中斷服務(wù)程序中操作。
//外部中斷,由MT8952B產(chǎn)生,完成一次消息(19個字節(jié))的接收。
#define uchar unsigned char
#define MSGLEN 19
uchar r_8952d[MSGLEN]; //接收消息緩沖區(qū)
void ex0_int() interrupt 0
{
uchar I ;
for(i=0;i<19;i++) r_8952d[i]=XBYTE[DDR_R]; //將接收到數(shù)據(jù)放入消息緩沖區(qū)
ACC=XBYTE[IFR_R]; //中斷標志寄存器復位,
}
在實際應用中,可能會遇到接收的數(shù)據(jù)不正確,可以讀取中斷標志寄存器幀異常和接收溢出標志,若任意為1,則讀取數(shù)據(jù)并放棄。若發(fā)送的數(shù)據(jù)每次均為19個字節(jié),則可以判斷FIFO狀態(tài)寄存器中接收FIFO滿標志,這樣能確保數(shù)據(jù)的正確性。
發(fā)送數(shù)據(jù)
MT8952B的數(shù)據(jù)發(fā)送,既可以在中斷里,也可以在程序執(zhí)行中。假設(shè)要發(fā)送的數(shù)據(jù)放入緩沖區(qū)t_8952d[MSGLEN]里,在下面實例中,MSGLEN可以為小于或等于19,注意在發(fā)送消息或數(shù)據(jù)最后一個字節(jié)前,將控制寄存器的D0(EOP-EOP OF PACKET數(shù)據(jù)包結(jié)束)位寫1,表明下一個數(shù)據(jù)是數(shù)據(jù)包要發(fā)送的最后一個字節(jié)。
void transmit_data (void);
{
uchar I;
for(i=0;i
XBYTE[CR_W] = XBYTE[CR_R] | 0x01; //控制寄存器EOP位寫1
XBYTE[DDR_W] = t_8952d[MSGLEN-1]; //發(fā)送最后一個字節(jié)數(shù)據(jù)
}
MT8952B在程控數(shù)字交換機中應用
在程控數(shù)字交換機中,最廣泛的應用就是交換信令的傳輸和接收,微處理器根據(jù)收到的信令或消息,進行相應的操作。如收到占用請求消息,需發(fā)送占用證實,再根據(jù)消息的不同,進行不同的話路接續(xù)、語音接續(xù)、電路控制等等。而在程控數(shù)字交換機中,幾乎所有的消息都不會超過19個字節(jié),當確實需要更長的消息,可以發(fā)送多條即可。文中給出一條消息實例供參考。
消息名稱:占用請求
主叫類型允許值為:2HEX-環(huán)路、8HEX-普通用戶、12HEX-熱線用戶)、13HEX-遇忙記存用戶、14HEX-不撥號用戶,等等。
交換機中可以將交換網(wǎng)的一條母線與MT8952B的串行口相連,如圖4的硬件連接圖,將DSTO52和DSTI52與MT8980D的一條母線相連,利用其中的一個時隙就可以實現(xiàn)信令消息的收發(fā)?!?/P>
參考文獻
1 Digital Switching/Networking G Data Book.MITEL Corporation, Printed in Canada, Issue 10, 1995
2 王興寶.計算機網(wǎng)絡(luò)技術(shù)基礎(chǔ)與應用.電子科技大學出版社.2001
3 何立民. MCS-51系列單片機應用系統(tǒng)設(shè)計系統(tǒng)配置與接口技術(shù). 北京航空航天大學出版社,1990
4 馬忠梅等. 單片機的C語言應用程序設(shè)計. 北京航空航天大學出版社,1997
交換機相關(guān)文章:交換機工作原理
評論