摘 要:使用嵌入式微处理器S3C4510B内部包含的HDLC控制器封装和解析HDLC协议,微处理器既可实现系统功能,又可完成HDLC协议的数据传输,降低了设计的复杂度。本设计已应用于微波网络管理系统中,该系统可以通过RS-232接口或RS-485接口遵循HDLC协议完成网管数据传输。经验证,HDLC协议传输正确、可靠,达到设计要求。
关键词:S3C4510B;HDLC协议;数据传输
传统的HDLC协议采用专用芯片或软件编程等方法实现。专用芯片针对性强、性能可靠,但灵活性差,尤其是片内数据存储器容量有限,当需要扩大数据缓存的容量时,芯片要外接存储器或其他电路,这就增加了系统成本。软件编程方法灵活,但占用处理器资源多,执行速度慢,实时性不易预测,一般只能用于个别路数的低速信号处理。采用ASIC芯片设计成本过于昂贵。考虑到HDLC协议的应用多和系统其他功能有机结合,而在很多应用系统中均采用嵌入式设计技术实现[1]。选用嵌入式微处理器S3C4510B设计微波网络管理系统控制器,实现数据的采集、控制、存储与传输,利用S3C4510B内嵌的HDLC控制器完成HDLC传输数据的封装与解析,系统设计简单、实用[2]。
1 HDLC简介
HDLC 是一个在同步网上传输数据并面向位的高级数据链路层协议, 由国际标准化组织ISO制定,具有透明传输、可靠性高、传输速率高以及灵活性高等特点。它采用点对点或多点( 多路播送或一对多) 连接的主/从结构, 要求每个从站都有唯一的地址, 从站只有在允许通信时才能且只能和主站通信, 这就消除了串行线路上由于几个从站同时发送引起冲突的可能性。由于HDLC 面向位的特性, 因而可以实现不限制编码的、高可靠和高效率的透明数据传输。随着通信的发展, HDLC 得到日益广泛的应用, 同时, 它还是许多重要的数据链路层协议的基础。HDLC 帧结构如表1所示。
表1所列HDLC帧结构中各部分功能为:
标志位: Flag (F), 每个HDLC 帧以8 位序列( 01111110) 标志帧的开始和结束, 这是HDLC中仅有的2个包含连续6个1 的可能组合。为了避免在其他域中出现这种组合, HDLC 采用“零比特插入法”, 即每发现有接连5个1 时便在下一位自动插入一个0, 接收器在收到连续5个1 之后又自动删去插入的0。标志位除了标志帧的开始和结束外, 还可用作时钟同步, 接收设备不断地搜寻标志位, 以实现帧同步, 从而保证接收部分对后续字段的正确识别。另外, 在帧与帧的空载期间, 可以连续发送这种标志序列, 用作时间填充。
地址域:Address (A) Field,命令帧或响应帧的地址。每个从站必须有唯一的地址, 主站必须知道每个从站的指定地址。全“1”构成的地址在HDLC中定义为广播地址;全“0”构成的地址在HDLC中定义为无站地址, 用于测试数据链路的状态。
控制域:Control (C) Field, 用于确定待传送帧的类型,并携带有关帧的顺序、载波控制和轮询信息。HDLC有3种类型的帧,分别为信息帧、监控帧和无编号帧。三者都符合帧结构,帧的格式不一样,帧的用途也不一样。
信息域:Information (I) Field,要传送的数据,长度可变,是帧的数据部分,字段通常取8位的整数倍。
校验域:Frame Check Sequence (FCS) Field,采用16位循环冗余校验码进行差错控制,其生成的多项式为G(X)=X16+X12+X5+1。帧校验序列用于对帧进行循环冗余校验, 其校验范围从地址字段的第一比特到信息字段的最后一比特的序列, 并且规定为了透明传输而插入的“0”不在校验范围内。
2 HDLC协议实现[3-5]
2.1 S3C4510B HDLC 控制器结构
微波网管系统控制器采用嵌入式设计方法,系统CPU选用三星公司生产的S3C4510B。S3C4510B具有HDLC模块,能够完成HDLC协议的帧同步、比特填充、FCS的产生和检测等,可以利用硬件实现HDLC协议的数据处理。
S3C4510B是含有双通道的HDLC控制器,支持符合SDLC 标准和HDLC 标准的CPU/数据通道接口, 包含2 个DMA 引擎,支持使用对应帧的缓冲区描述符结构,可以灵活地配置通道物理编码模式(NRZ、FM、MAN), 选择本地或者外部时钟; 支持通过锁相环路从接收数据流提取时钟信号。S3C4510B的HDLC通道具有以下特点:
(1)HDLC协议特征:标准检测与同步、零插入与删除、空闲检测与发送、FCS生成和检测(16位)、终止检测与发送;
(2)FIFO:发送和接收模块都有8 B FIFO,提供CPU内部总线到HDLC串行接口之间的数据缓存;
(3)DMA:HDLC通道的发送和接收支持DMA方式;
(4)波特率生成器:HDLC通道包含一个可编程的波特率产生计数器,能够产生各种波特率的传输速率;
(5)PLL模块:HDLC通道包含一个数字锁相环,提供了时钟恢复功能,可从编码后的数据流中迅速提取出时钟信息。
S3C4510B的HDLC 控制器功能结构如图1所示。
HDLC 控制器功能结构主要包括总线仲裁单元、DMA 控制器、8 B的发送/接收( Tx/Rx) FIFO、状态/控制寄存器和物理收发器。总线仲裁单元负责向CPU 申请系统总线,DMA 控制器使用缓冲描述符在无CPU 干预下控制数据帧的收发,8 B的FIFO 结构对CPU 和串行接口的数据进行立即存储,物理收发器控制HDLC 通道的运行模式、编解码等,状态/控制寄存器是运行的核心, 程序设计人员通过设置来检测这些寄存器控制数据的收发。
2.2 HDLC协议实现
2.2.1 HDLC传输通道设计
微波网络管理系统主要用于管理和维护传输网络中微波网络及微波设备的性能、故障、告警和配置,实时监测与管理微波网络的运行状况,系统由微波网管软件与微波网管系统控制器组成。微波网管软件通过访问控制器监测连接在网络上的微波设备的性能状态,控制器通过HDLC 协议与微波设备通信,采集微波设备数据并存储。
HDLC传输通道连接如图2所示。网管系统控制器通过RS-232接口与微波设备连接,接口芯片选用MAX3232,采用HDLC协议实现数据传输。不同微波站点的网管系统控制器间通过RS-485接口完成通信,接口芯片选用ADM3491,数据传输时同样遵循HDLC协议。
2.2.2 HDLC协议实现
系统HDLC协议传输支持2种数据传输模式: 中断模式和DMA 模式。对于中断模式, 由于CPU 需要主动干预缓冲区和I/O 模块之间的数据传送, 因此将会导致过多的系统切换开销,降低CPU 利用率, 同时无法支持高速的数据传输。本系统采用DMA 模式。在DMA 模式下, S3C4510B 中的HDLC 控制器使用了缓冲区描述符BD (Buffer Descriptor) 来实现以帧为单位的数据发送和接收。BD 是S3C4510B 中HDLC 控制器用以实现DMA 模式下的数据收发而使用的数据结构, 且构成循环链表的形式,使用BD缓冲描述符结构,可以实现以帧为单位对数据进行接收和发送控制,只需要填写相应BD结构的域信息,配置收发模式,具体的执行由DMA单元控制完成。
DMA方式下HDLC数据接收和发送的实现。首先要进行系统HDLC通道的初始化。实现步骤如下:
(1)HDLC通道复位, 恢复其默认配置;
(2)设置工作模式寄存器(HMODE)来配置HDLC工作模式;
(3)设置控制寄存器(HCON)来控制HDLC通道的工作;
(4)设置中断使能寄存器(HINTEN)来控制HDLC通道的中断产生;
(5)设置站地址寄存器(HSAR0- HSAR3)和掩码寄存器(HMASK);
(6)建立DMA方式的发送和接收BUFFER描述符链表结构, 并初始化DMA发送BUFFER 缓冲描述符指针寄存器(DMATxPTR)和DMA接收BUFFER缓冲描述符指针寄存器(DMARxPTR);
(7)使能HDLC通道的收发功能。
DMA方式下HDLC通道的数据发送实现步骤如下:
(1)读取发送缓冲帧描述符指针寄存器DMATxPTR,得到当前发送帧描述符的地址,得到整个发送帧描述符的内容;
(2)得到发送帧描述符中帧数据BUFFER起始地址;
(3)将准备好的HDLC帧拷贝到BUFFER中;
(4)设置当前帧描述符中的相应控制位;
(5)将发送帧描述符的OWERSHIP位设置为DMA所有,使能HDLC的DMA发送。
按上述步骤完成后, DMA即可主动将BUFFER中的数据拷贝到HDLC通道TxFIFO中发送出去。一帧发送完毕后,S3C4510B将已使用的发送BUFFER描述符的OWERSHIP位设置为CPU所有, 并将帧缓冲描述符指针寄存器DMATxPTR中的内容更新为下一个未使用的发送BUFFER描述符地址。
HDLC通道数据接收实现步骤如下:
(1)接收到数据时,DMA机制会从DMARxPTR指向的接收BUFFER描述符中找到接收BUFFER的起始地址, 然后把收到的数据写入BUFFER;
(2)如果接收无误,S3C4510B自动更新DMARxPTR寄存器的值,使其指向下一个还未使用的接收BUFFER描述符,以备下一次接收使用。
3 系统验证
对系统进行调试、联机测试。
网管系统遵循HDLC协议传输微波设备性能数据。参数包括误码秒 ES、严重误码秒 SES、不可用秒数US以及总秒数TS及状态数据,包括输出功率TX、输出频率TF、输出电平RF、频率RX以及输出电源电压,微波网管软件通过查询/轮询方式访问网管控制器,读取微波设备数据。微波网管软件通过HDLC协议传输的微波设备数据如图3所示。
HDLC协议在微波网管系统的正确实现说明了通过利用S3C4510B内嵌的HDLC控制器完成HDLC协议的封装与解析,在实现系统功能的同时,简化了电路设计,缩短了系统开发周期。
参考文献
[1] 李驹光,聂雪媛.ARM应用系统开发详解——基于S3C4510B的系统设计[M].北京:清华大学出版社,2003.
[2] Samsung Electronics. S3C4510B User Manual.1999.
[3] 刘朋,金野. 基于S3C4510B和μClinux的HDLC接口设计实现[J]. 微计算机信息,2007(2):1-3.
[4] 谈国文,张炜,朱丹,等. 基于HDLC协议的实时通信软件的设计与实现[J].计算机工程与科学,2000(22):87-90.
[5] 高振斌,陈禾,韩月秋. HDLC协议RS-485总线控制器的FPGA实现[J].河北工业大学学报,2004(5):28-32.