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