浅析差错控制技术在串行通信协议中的应用

2015-10-21 17:24康冰赵琳卫瑞张蔚郑洋
科技与企业 2015年24期
关键词:接收端串口差错

康冰 赵琳 卫瑞 张蔚 郑洋

1、前言

在自动化控制系统(如单片机和DSP等嵌入式系统)中,串行通信是实现两端设备数据交换的一种非常重要且普遍使用的通信方式。串行通信在数据量要求不是特别高的情况下,因其具有硬件设备简单、成本低廉、成熟度高和编码复杂程度低等优点,为过去和现在的自动化控制系统作出了巨大的贡献,在未来一段时期仍将发挥不可低估的作用。

串行通信中,由于实际信道的传输特性不尽理想以及噪声干扰,使得通信接收端易产生误码。为了保证通信可靠,实现两端设备数据正确交换,通信协议中需要采取差错控制技术,实现差错检测和纠正,改善通信系统的传输可靠性。本文介绍了差错控制技术在串行通讯协议中的应用。

2、差错控制概述

2.1差错控制

差错就是在通信接收端收到的数据与发送端实际发出的数据出现不一致的现象。差错出现的原因有多种,如信号在物理信道中传输时,线路本身电器特性造成的随机噪声、信号幅度的衰减、频率和相位的畸变、电器信号在线路上产生反射造成的回音效应、相邻线路间的串扰等造成的信号失真;如大气中的闪电、开关的跳火、外界强电流磁场的变化、电源的波动等各种外界因素造成的信号失真等。在串行数据通信中,信号失真将会使接收端收到的二进制数位和发送端实际发送的二进制数位不一致,从而造成由“0”变成“1”或由“1”变成“0”的差错。物理层传输链路受到干扰带来的数据差错无法被物理層识别,因而在数据链路层通信协议中采取差错控制技术,实现差错检测、数据纠正是十分必要的。

差错控制是指在数据通信过程中能发现或纠正差错,把差错限制在尽可能小的允许范围内。差错检测是通过差错控制编码来实现的;而差错纠正是通过差错控制方法来实现的。

2.2差错控制编码

差错控制编码是用以实现差错控制的编码,可分为检错码和纠错码。检错码是指能自动发现差错的编码,如奇偶校验码、循环冗余校验码(CRC)等。纠错码是指不仅能发现差错而且能自动纠正差错的编码,如正反码、海明码等。

差错控制编码的原理是:发送方对准备传输的数据进行抗干扰编码,即按照某种算法附加上一定的冗余位,构成一个码字后再发送。接收方收到数据后进行校验,即检查信息位和附加的冗余位之间的关系,以检查传输过程中是否有差错发生。

2.3差错控制方法

差错控制方法是在数据通信中检测差错后对差错进行纠正,把差错限制在所能允许范围内的技术和方法。差错控制方法一般可分为反馈检测、自动请求重发(ARQ)和前向纠错(FEC)三类。

反馈检查方法的原理是:双方在进行数据传输时,接收方将接收到的数据重新发送回发送方,由发送方检查是否与原始数据完全相符;如不相符,则发送方发送一个控制信息删去出错的数据,并重新发送该数据;如相符则发送下一个数据。

自动请求重发(ARQ)的原理是:发送方将要发送的数据附加上一定的冗余检错码一并发送。接收方则根据检错码对数据进行差错检测;如发现差错,则接收方返回请求重发的信息,发送方在收到请求重发的信息后,重新传送数据;如没有发现差错,则发送下一个数据。ARQ方式使用检错码检查差错,并通过重发机制纠正差错。

前向纠错(FEC)的原理是:发送方将要发送的数据附加上一定的冗余纠错码一并发送,接收方则根据纠错码对数据进行差错检测,如发现差错,由接收方进行纠正。FEC方式需要使用纠错码。

3、差错控制在串口通信协议中的应用

串口通信协议是串行通信的核心,它的主要功能是为应用层提供可靠的数据信息。串口通信协议包括数据格式、同步方式、传送速度、传送步骤、检纠错方式以及控制字符定义等。为了能够充分发挥串口通信的自身作用,制定合适的数据链路层协议就显得尤为重要。串口通信数据链路层协议包括协议帧结构、重发机制等内容。

3.1差错控制编码的应用

3.1.1协议帧结构

设备常用的串口通信数据链路层协议帧结构一般包括帧头、信息域、检错码和帧尾。在实际应用中,根据实际情况可以对帧结构进行删减,但是删减的前提是保证帧结构的检错能力,把差错限制在所能允许的范围内。

3.1.2帧头和帧尾

如果接收端在接收中有一个错误,导致识别不到下一个数据帧的开始或结束,整个通信将会混乱,所以帧头和帧尾的识别相当重要。帧头是识别帧起始的重要标志。帧头的长度越长识别的可靠性就越高,但是过长的帧头会带来整帧长度的增加,从而影响传输效率。因此帧头一般控制在1-3个字节。帧尾是识别帧结束的重要标志。如果定义了帧长度,那么可以通过帧长度和帧尾共同识别帧的结束,增加识别的可靠性。帧尾一般控制在1-2个字节。

3.1.3信息域

信息域包含的内容丰富,长度是可变的。信息域包括地址段、控制段、数据段等多种信息。其中控制段的内容还可细分为帧序号、帧长度、帧类型、通信控制命令和数据块链接信息等等,它们可以根据实际需求删减。地址段、控制段中的帧序号和帧长度等等信息都是识别差错的重要依据。地址段用于识别发送端、接收端地址,如果不是多机通信,可以删减。帧序号的设置主要目的是为了数据帧在传输过程中出错时,进行漏帧检测。帧长度表示协议帧的字节数,指示帧的结束位置。在非定长帧协议中,帧长度的定义是非常必要的。数据段是数据信息交互的部分。如果协议设计中数据段采用ASCII码数据格式,帧头帧尾、地址段、控制段等其他信息选用区别于数据段使用的ASCII码,则在数据帧的检测中可以大大提高识别的可靠性。ASCII码数据格式的缺点是数据冗长、传输效率低,比较适用于数据量少且实时性要求不高的场合。

3.1.4检错码的应用

检错码用于检测通过物理层链路传输后数据可能出现的错误。比较常用的检错码有:累加和、异或和、纵向冗余校验、循环冗余校验(CRC)等等。累加和(Check-Sum)校验算法:累加和校验码的初始值为0,将需运算的所有数据字节(8bit),与初始值相加模256,最后所得的余数即为累加和校验码。异或(XOR)校验算法:异或和校验码的初始值为0,将需运算的所有数据字节(8bit),与初始值相异或,最后所得结果即为异或校验码。纵向冗余(Longitudinal Redundancy Code,简称LRC)校验算法:纵向冗余校验码的初始值为0,将需运算的所有数据字节(8bit)相加,所得之和丢弃进位,求补码,所得结果即为纵向冗余校验码。

循环冗余(Cyclic Redundancy Check,简称CRC)校验算法:将需运算的所有数据字节(8bit),按照约定的CRC码生成规则,用16位CCITT生成多项式G(x)生成的余数即是CRC码(n位)。目前较常使用的CRC位数(n位)有8、16、32,CRC位数越大,错误检测能力越强,不过运算费时。据理论统计,使用16位CRC时,超过17个连续位的错误检测率有99.9969%。累加和、异或和、纵向冗余3种检错码算法简单,对内存要求小,但是检错码的重码率高,错误检测率低;相对来说CRC校验码是高效的。

3.2差错控制方法的应用

根据多年的实际工作总结,串口通信数据链路層协议中可以通过以下三种方法实现重发机制:逐字节检测重发、全数据检测重发、时间控制重发。

3.2.1逐字节检测重发

逐字节检测重发机制属于差错控制方法中的反馈检测方法。两端数据传输过程中进行逐字节握手,如果握手不成功则重新开始逐字节握手,直到确认整帧握手成功。优点:纠错能力强,不依靠检错码检错、随时纠错。缺点:两端数据逐字节握手,传输效率低。这种数据重发机制适用于对传输时间要求低,但对传输可靠性要求高的系统。在进行软件系统设计时,需重点考虑完成整帧发送和接收的最长时间是否有可能对系统时间或时序造成影响。

3.2.2全数据检测重发

全数据检测重发机制属于差错控制方法中的自动请求重发方法。发送端将数据包一次性发出,接收端根据帧头帧尾、地址段、检错码等特征字符判断接收的数据包的完整性和正确性,如果不正确要求发送端重发。与逐字节检测方式相比,全数据检测方式握手频率减少,大大提高了传输效率,只是检错和纠错只能在一帧数据传输完毕之后。

在进行软件系统设计时,如果选用这种数据重发机制,需考虑通信出现错误时发送方决定重发的条件、重发次数和重发延时时间,及对系统的影响。建议发送方的重发延时时间取T21的5~10倍。

3.2.3时间控制重发

时间控制重发机制属于差错控制方法中的前向纠错方法的简化。发送端按约定的频率,不断将数据帧发送到接收端;接收端根据帧头帧尾、地址段、检错码等特征字符判断接收的数据包的完整性和正确性。由于没有握手机制,如果检测到差错只能等待下一时刻的数据帧来完成纠错;同样由于没有握手机制,数据传输具有较高的实时性,尤其在传输线路条件良好的前提下。

在进行软件系统设计时,需根据数据传输波特率、数据帧长度、字格式计算数据传输时间,然后确定数据帧间隔时间。上述几种不同的差错控制方法各有其优缺点和使用范围。如果存在反馈信道,而且传输的实时性要求不高,那么ARQ方式是很好的选择。串口通信数据链路层协议广泛采用了ARQ方式的差错控制方法:运用检错方法和重发机制达到对差错的检测和纠正。

4、结语

文中介绍了一种适用于单片机系统的串行数据通信协议,协议将差错控制方法与差错控制编码相结合,实现了数据差错的有效控制。差错控制一直是保障通信传输可靠性的重要手段,通过合理运用差错控制方法可以有效的提高数据通信的可靠性及通信质量。

(作者单位:北京航天发射技术研究所)

猜你喜欢
接收端串口差错
丁是丁,卯是卯
手机无线充电收发设计
基于组织行为学对建立容错纠错机制必要性分析
MCS—51单片机中的多串口通讯技术的应用
差错是习题课的有效资源
基于盲波束形成的MIMO雷达稳健参数估计
全国计算机等级考试机房准备工作探讨
那些损失上百万的演员
微机串口的测试诊断
连接音乐的彩虹