欢迎来到天天文库
浏览记录
ID:5770568
大小:1.55 MB
页数:12页
时间:2017-12-24
《循环冗余校验码(crc)在mstp上的应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、循环冗余校验码(CRC)在MSTP上的应用尹恒(武汉邮电科学研究院,武汉,430074)摘要:本文介绍了循环冗余校验码(CRC)的原理、软硬件实现以及在MSTP中的应用,指出循环冗余校验码(CRC)是一中非常实用的检错码。关键词:循环冗余校验码(CRC);MSTP;PPP/HDLC协议;LAPS协议;GFP协议ApplicationofCyclicRedundancyCheck(CRC)intheMSTPYINHENG(WuhanResearchInstituteOfPostandCommunication,Wuhan,430074,China)Abstract:Thispaperintrod
2、ucestheprincipleandRealizationofCyclicRedundancyCheck(CRC),pointsoutthatRealizationofCyclicRedundancyCheck(CRC)isveryuseful.KeyWord:RealizationofCyclicRedundancyCheck(CRC);MSTP;PPP/HDLCprotocol;LAPSprotocol;GFPprotocol1前言根据经典的香农公式,理想信道的容量是无限的,然而在实际信道上传输数字信号时,由于信道传输特性不理想及加性噪声的影响,所收到的数字信号不可避免的会发生错误。为了
3、加强通信系统的可靠性,除了合理设计基带信号,选择调制、解调方式,采用频域均衡、时域均衡,使误码率尽可能降低之外,还需要采用信道编码,即差错控制编码,使误码率进一步降低以满足指标要求。随着差错控制编码理论的完善和数字电路的发展,信道编码已经成功地应用各种通信系统中。差错控制编码的基本做法是:在发送端被传输的信息序列上附加一些监督码元,这些多余的码元与信息码元之间以某种确定的规则相互关联(约束)。接收端按照既定的规则检验信息码元与监督码元之间的关系,一旦传输过程中出现差错,则信息码元与监督码元之间的关系将遭到破坏,从而可以发现错误,乃至纠正错误。其中,循环冗余校验码(CRC)凭借极强的检错性能,很
4、小的开销,以及易于实现的特点,成为目前通信系统中最常用的一种差错控制编码。2循环冗余校验码(CRC)原理[1]2.1循环冗余校验码(CRC)简介利用循环冗余校验码(CRC)进行检错的过程可简单描述为:在发送端根据要传送的二进制码序列,以一定的规则产生一个校验用的监督码,附在原始信息之后,构成一个新的二进制码序列,然后发送出去。在接收端根据信息码和监督码之间所遵循的规则进行检验,一旦传输过程中发生差错,则信息码与监督码之间的关系遭到破坏,从而可以发现错误。2.2循环冗余校验码(CRC)生成与校验过程2.2.1循环冗余校验码(CRC)的生成循环冗余校验码(CRC)校验生成的循环码为系统码,采用循环
5、码特有的多项式编码方法。信息码多项式升(n-k)次幂后除以生成多项式,然后将所得的余式加上升幂后的信息码多项式,由此得到系统码多项式。在发送端,设有一组信息码多项式,最高次数为k-1(共k位),以乘以构成一个n-1次(最高次)多项式,即,再除以生成多项式(以为模),则式中,为商,为余式,余式的系数即为生成的CRC监督码。将计算出的余式与相加,可得到循环码多项式,即将发送到信道上传输。2.2.2循环冗余校验码(CRC)的校验校验方法一:在接收端,对接收到的信息码多项式进行与发送端相同的运算,即通过计算,可得到新的余式。将与从接收的循环码多项式中提取的相比较,若,说明在传输的过程中未出现了误码。比
6、较的过程即为校验的过程。校验方法二:直接用接收到的序列除以生成多项式,即通过计算,若余数为0,则说明在传输的过程中未出现了误码。2.3生成多项式的国际标准2.4循环冗余校验码(CRC)检错性能循环冗余校验码(CRC)的检错能力很强,既能检测随机差错,也能检测突发性差错,其检错性能包括以下5点:l能检测出全部单个错误。l能检测出全部随机的2位错误。l能检测出全部奇数个错误。l能检测出全部长度小于等于k的错误。l能以的概率检测出长度为k位的突发性错误。1循环冗余校验码(CRC)的实现3.1软件实现软件实现的流程图如下所示:其中,GetCRC子程序的作用是生成循环冗余校验码(CRC)。GetCRC子
7、程序源代码如下:intGetCRC(intt)//生成循环冗余校验码 { intk; intg=0x13;//这里生成多项式使是4次10011 cin>>t;//输入的信息码是6位,如果要更长,修改下l字g=g<<5;for(;i<6;)if(t<0x200)t=t>>6; t=t<<4; k=t; g=g<<3; inti=0; for(;i<4;) {
此文档下载收益归作者所有