田照耀 刘泰
【摘要】 本文介绍了一种在NI CompactRIO平台基础上自主开发的HDLC通信协议,既有软件编程方法的功能灵活,方便修改,适用性广的特点,又具有专用芯片性能可靠、实时性高、可并行处理、CPU利用率抵等优点。
【关键词】 列车监控系统 HDLC FPGA
一、概述
HDLC(High Level Data Link Control),是国际标准化组织ISO制订的高级数据链路控制规程。它具有数据报文可透明传输、报文长度可以是任意位、传输效率高、可靠性高等优点。HDLC的一般实现方法为采用专用芯片和软件编程等。应用专用芯片时设计简单、使用简易、功能针对性强、性能可靠,适合应用于特定用途的大批量产品中,但灵活性较差;软件编程方法灵活,但占用处理器资源多、执行速度慢、实时性不易预测,HDLC 的软件编程方法功能灵活,通过修改程序就可以适用于不同的 HDLC 应用。本文在NI CompactRIO平台基础上,利用其集成的高性能FPGA芯片,使用编程方式实现HDLC协议,既有软件编程方法的功能灵活,方便修改,适用性广的特点,又具有专用芯片性能可靠、实时性高、可并行处理、CPU利用率低等优点,其生成电路所具有的性能可媲美经厂商定义并优化的硬件性能。另外还具有开发周期短,成本低的优点,在实际应用过程中,取得了良好的效果。
二、系统总体结构
HDLC协议的实现总共分三部分(如图1 所示),第一部分位于实时控制器中通过软件实现,主要是通信参数的设置(如周期、波特率、超时时间等)、故障处理和发送接收数据管理。第二部分位于NI CompactRIO FPGA中,主要实现HDLC的协议部分,其中包括通信管理单元,数据缓存区FIFO和完全独立的两个通信通道。通信管理单元是整个协议运行的指挥者,其负责通信的初始化设置、通信的周期控制及故障诊断。A通道和B通道是两个独立的通信通道,分别含有发送插0模块、接收删0模块、时钟同步模块和CRC校验模块。数据缓存区FIFO负责与实时控制器交换数据。第三部分为硬件接口,实现RS485电平的转换。
三、系统模块设计
3.1通信管理单元
通信管理单元负责整个协议的数据发送和接收管理,在上电时首先读取实时控制器设置的通信周期、通信波特率、超时时间等参数。在参数设置完成后进入发送接收循环,通信采用半双工通信方式。
在通信过程中,如果子系统响应时间小于数据发送周期则严格按照发送周期发送,如果到传输周期时子系统仍然在发送数据则通信管理单元等待接收子系统数据完成后立即进行发送数据。在通信周期到时,仍然没有收到子系统响应则视本帧为接收超时,在置位超时标志位后重新开始发送数据,如连续5次没有收到正确数据,通信管理单元向实时控制器报通信故障。
3.2数据发送模块
数据发送模块包括发送CRC校验,同步位发送,发送插0,和NRZI编码。
HDLC的帧格式如下
在起始标志之前至少应向接收器发送4个标志(7EH)以同步接收时钟和发送信号。
数据发送模块首先从FIFO中读取要发送的数据,在CRC校验完成后,加上同步位和标志位后,进入到发送循环。发送循环时钟为40MHz,根据发送波特率的设置对时钟分频得到实际发送波特率,发送完帧头标志位(7E)后开始对数据1计数,发现连续的5个1时,即在后面插入0。
CRC校验采用CRC‐CCITT,其校验多项式为(X16+X12+X5+1)。计算的应用范围为从地址1到信息。CRC的最高位先发送。
3.3数据接收模块
接收模块包括同步时钟提取、NRZI解码、接收数据删0模块。在进入到接收程序之后,即开始在数据流中检测有无“7E”标志,如果连续的收到“7E”后,本次收到数据不是“7E”,则认为上一次收到的“7E”标志为帧头,立即启动数据删0模块,之后如再收到“7E”标志则认为是帧尾,收到帧尾后即对收到数据进行CRC校验和帧长度检查,两项都正确的数据存入接收缓存,不正确的数据放弃。在HDLC数据接收程序中时钟提取模块起到了非常重要的作用,时钟提取模块根据NRZI编码的特点,在每一个数据位跳变沿都对接收误差进行重新校正,消除接收中的累积误差,这样接收容许波特率误差可以达到±7%。
四、结论
本文开发的HDLC通信协议在某地铁列车的牵引系统设备上进行了大量试验,试验表明:在多次长时间的测试当中通信稳定可靠,通信周期严格按照设置进行,在一次约60万帧的测试统计中,无丢帧现象,没有出现CRC校验错和接收超时的情况。
本文介绍的HDLC通信协议兼有软件编程和硬件芯片两方面的优点,并在现车试验成功,对于国产化列车监控系统的研发具有重要的意义。
参 考 文 献
[1]付新虎,史浩,郑喜凤,丁铁夫,HDLC 协议在通信系统中的应用[J],电子技术,No.8,2005,P58-60