HDLC协议处理芯片在微机查号系统中的应用
2010-08-11沈剑沧鲍培明
周 琳, 沈剑沧, 鲍培明
(①安徽财贸职业学院 计算机科学系,安徽 合肥 230619;②固体微结构物理国家重点实验室,南京大学 物理学系,江苏 南京 210093;③南京师范大学 计算机科学系,江苏 南京 210097)
0 引言
数据在传输过程中,需要遵循一定的数据链路控制协议。目前数据通信中使用的数据链路控制协议主要有面向字符的数据链路层协议 BSC协议和面向位的数据链路层协议HDLC协议。相比较而言,面向位的数据链路层协议HDLC协议具有鲜明的优点:
① 使用统一的帧格式,实现数据、命令和响应的传输,实施起来方便;
② 采用零位插入法,使规程可以支持任意的位流传输,保证了信息传输的透明性;
③ 采用窗口机制和捎带应答,支持全双工工作方式,允许在未收到确认情况下,连续发送多个帧,提高信息传输的效率;
④ 采用帧校验序列,并设置窗口序号,提高信息传输的正确性和可靠性[1]。
HDLC协议克服了BSC协议半双工、低速率、处理复杂,传输数据必须采用停—等方式,有字符校验能力而无块校验能力等若干弱点。因此,在微机查号系统的设计中,采用HDLC协议来确保数据信息在微机查号排队设备和话务员坐席台之间正确高效地交换。
HDLC协议的实现方式有软件实现或专用硬件芯片实现两种。目前常用的硬件芯片有Motorola公司的MC92460、ST公司的MK5025、Zarlink公司的MT8952B等。由于采用硬件可达到快速封装和解析,提高设备工作效率的目的,本文提出了在微机查号系统中采用 Zarlink公司的处理芯片MT8952B,以实现可靠的数据传输的设计方案。
1 HDLC协议在微机查号系统中应用概述
1.1 微机查号系统功能介绍
微机查号系统即通信特服114,如图1所示。
图1 微机查号系统
在用户拨打114时,用户的呼入信号经过程控交换机进入微机查号设备进行排队,当话务员坐席空闲时,排队器将用户的呼入信号与坐席接通,话务员通过操作坐席计算机完成查号工作并送出自动语音进行报号。
1.2 HDLC协议芯片MT8952B在微机查号系统中的作用
HDLC协议芯片MT8952B是从属于语音卡上的芯片,语音卡在微机查号系统中主要应用于坐席工作台和114排队器设备的坐席接口板之间信息的传递、坐席接口板和线路接口板之间信息交换等。坐席工作台与设备之间通信采用双绞线电缆连接方式,传送2B+D信号,其中D信道的信号信息格式为HDLC协议格式。语音卡结构框图如图2所示。
图2 语音卡结构
在坐席计算机送出自动语音报号信息时,单片机将从坐席计算机接收到的数字状态信息和从存储芯片中读出的数字报号语音信息送到MT8952B HDLC协议控制器中,MT8952B HDLC协议控制器对数据打包并增加帧校验序列,变成具有HDLC协议功能的串行ST.BUS格式数据,然后送入114排队器中,由114排队器中的数字网络接口芯片MT8981对其进行数据格式转换,转换成适合在线路上传输的码流,并在线路上进行传输,而接收数据过程与发送数据过程正好相反。
2 MT8952B协议控制器介绍
MT8952BHDLC协议芯片从硬件结构上主要分三大块:控制模块、发送模块、接收模块。
控制模块可接受外部的控制,主要完成复位芯片及初始化、地址译码、公共寄存器的控制、设置时钟及时序方式等功能。
发送模块由发送FIFO(First In First Out高速缓存)和协议封装两个子模块组成,可完成发送控制、封装数据协议以及对数据进行并串转换等功能,其中,协议封装主要包括封装数据包头和包尾、计算数据包的 CRC校验核及对整个数据流进行零插入处理等几个步骤。
接收模块由接收FIFO和协议解析两个子模块组成。可完成接收控制、解析数据协议以及对收到的数据进行串并转换等功能,其中,协议解析通过去掉插入的零字位、对数据包进行CRC校验以及剥掉数据包的包头和包尾等几个步骤,最终还原出封装前的数据。
3 MT8952B在微机查号系统中的具体应用
3.1 芯片初始化操作
在微机查号系统中MT8952B芯片初始化操作包括5个步骤:
① 芯片初始加电,操作控制寄存器中的RST字位 ,复位整个芯片;
② 设置时钟寄存器中的时钟方式字位,选择芯片工作在外部时钟还是内部时钟方式,一般采用外部时钟方式。即芯片收、发数据时使用芯片外接时钟管腿上所输入的时钟;
③ 为了便于观察,可设置控制寄存器中空闲状态字位,使芯片的发送管腿在空闲时发出7E(01111110)信号;
④ 设置控制寄存器中收、发使能字位,激活接收、发送模块;
⑤ 选择需要使用的中断,并将其在中断控制寄存器中所对应的字位设置为有效。保证芯片能正常收发,至少需要使用的中断有:
Tx m/n FULL :n为发送FIFO容量,in为发送FIFO中待发的字节数:
Tx DONE:一整包数据发送完毕 ;
Rx n/m FULL :n为接收FIFO容量,nl为接收FIFO中已接收的字节数;
其中,实现步骤①、②的代码如下:
3.2 发送过程控制
在微机查号系统中MT8952B芯片实现数据的发送过程控制分为3种情况:
① 当需要发送的数据不足n个字节(n为发送FIFO容量)时,则把除最后一个字节外的所有的数据写入发送 FIFO,然后设置控制寄存器中的EOP(End Of Packet)字位,标识下一个将要写入的字节是本包数据的最后一个字节,最后将最后一个字节写入到发送FIFO,发送操作完毕[2];
② 当需要发送的数据大于n个字节(n为发送FIFO容量 )时 ,则多次把前n个字节写入到发送FIFO中,当待发送数据少于或等于n~m个字节时,在最后一次中断响应程序中,进行如同步骤①的操作;也可以采用中断方式,第一次把前 n个字节写入到发送 FIFO中然后等待 “Tx m/n FULL”中断的产生,在中断响应程序中把接下来数据中的n—n1个字节写入发送FIFO;在最后一次中断响应程序中,进行如同步骤①的操作[2];
③ 结束一包数据的发送后,直到“Ix DONE”中断产生并响应,才可以启动下一包数据的发送。
对于MT8952B芯片来说,n为19。
在微机查号系统中数据发送控制的具体实现细节如下。
(1)坐席状态信息发送
坐席状态信息量小于等于FIFO容量,即小于19字节,因此,直接将要发送的坐席状态信息写入数据发送寄存器即可。发数据包子程序如下,其中FAST是变量,用于存放坐席状态信息,其特点是信息比较少,少于FIFO允许的最大信息19字节。
(2)数字化报号语音发送
数字化报号语音数据量可能较大,因此是一种长信息的发送。当语音数据量大于FIFO容量时通过循环字控制数据进行多次发送即可。实现代码如下:
(3)最后一个字节的发送处理
最后一个字节的发送处理方式,即将控制寄存器的 D0位写入高电平,通知 CPU下一个要发送的数据是最后一个字节,再进行数据的发送。程序如下:
3.3 接收过程控制
当接收模块接收到数据时,视情况不同会产生不同中断。接收数据控制分为3种情况:
① 当接收到的数据包长小于n个字节(n为接收FIFO容量)时,会产生“Rx DONE”中断,此时在中断响应程序中读取接收FIFO中的数据,同时通过读FIFO控制寄存器中的接收状态位,判断下一个字节是否为最后一个字节,如果不是,继续从接收FIFO中读出数据;如果是,则同样通过读FIFO控制寄存器中的接收状态位来检查对此包数据的CRC校验是否正确,如 CRC校验正确,则读入最后一个字节,完成一包有效数据的接收;反之,则丢弃该包数据;
② 当接收到的数据包长大于n个字节(n为接收FIFO容量)时,会产生“Rx m/n FULL”中断,此时在中断响应程序中读出m一1个字节(接收FIFO在接收数据过程中不能为空,至少保证有1个字节存在),等待下一个“Rx m/n FULL”中断。如果接收FIFO中已接收到最后一个字节后,接收模块会产生“Rx DONE”中断,中断响应操作如同上面所述[2];
③ 如果在接收过程中接收模块产生“Rx ABORT”中断,则意味着正在接收的一包数据为无效,丢弃已收到的字节[2]。
例如,微机查号系统中接收坐席状态程序框图如图 3所示。
图3 接收坐席状态程序
程序从MT8952B的FIFO状态寄存器中读取状态信息,判断接受数据为数据包的哪个部分:数据包头、数据包中或数据包尾。具体数据则是从FIFO数据接受寄存器中读出的。程序设置标志位 RNPT在接收到数据尾时判断在此之前是否正确接收过数据包头,如果是,表明数据接收正确,取数据,如果不是则放弃,转出错处理程序。程序设置CX为20,控制循环次数大于19,确保19字节数据可以正确读出。
4 结语
微机查号系统使用语音卡实现做细计算机和114排队器设备之间信息及语音的传送。语音卡采用MT8952B协议芯片,以硬件的形式进行帧格式实现与解析,即将要发送的数据封装成 HDLC协议帧格式并以数据包的形式送出;将接收的具有协议帧格式的数据包进行解析,从中提取出有效数据,传送给座席计算机,完成信息的双向传输与交换[3]。采用该芯片实现的查号系统的信息交换,可以将问候语与报号信息都以数据包形式自动报出,有效地减轻了话务员的工作量,提高效率。如果采用两片MT8952B芯片,结合软件编程,还可以实现两路交叉工作,一路处于话务员应答状态时,另一路可以向另一个用户报号,更有效地提高接入率,处理率。采用硬件芯片形式实现与采用软件实现形式相比,更加简洁高效[4]。设备已经被很多电信公司采用,实践证明它是一种行之有效和稳定的技术。
[1] 付新虎,史浩,郑喜凤,丁铁夫. HDLC协议在通信系统中的应用[J].电子技术, 2005(08):58-60.
[2] 韩露. 专用 HDLC协议芯片的应用[J].移动通信,2003(增刊):231-232.
[3] 谈国文,张炜,朱丹,等.基于 HDLC协议的实时通信软件的设计与实现[J].计算机工程与科学, 2000,22(04):87-90.
[4] 文冠果,陈家锦,梁松海,等.一种新型的 128路多通道 HDLC引擎设计[J].微电子学与计算机,2004,21(09):173-176.