基于VHDL的CRC编解码设计(2)

2019-08-17 13:26

? 以数据帧为单位传输数据,并通过检错编码和重发数据帧来发现与纠正

通信错误,从而有效保证通信的可靠性; ? 使用加密技术可有效增强通信的安全性;

? 多路光纤技术的发展大大提高了数字通信的效率。

“信息社会”“信息经济”等名称越来越多的出现在我们的生活中,生活离不开信息,随着社会生产的发展,科学技术的进步,人们对传输信息的要求急剧增加.到了20世纪20年代,如何提高传递信息的能力和可靠性已成为普遍重视的课题,在传输过程中发生错误后能在收端自行发现或纠正的码。数字信号在传输过程中,由于受到干扰的影响,码元波形变坏。接收端收到后可能发生错误的判决。由于乘性干扰引起的码间串扰,可以采用均衡的办法纠正.而加性的影响则需要用其他的办法解决。在设计数字数字通信系统时,应该首先从合理选择调制制度,解调方法以及发生功率等方面考虑,使加性干扰不足以影响达到误码率的要求,在仍不能满足要求是,就要考虑采用查错控制措施了。一些通用的系统,其误码率要求因用途而异,也可以把查错控制作为附加手段,在需要时加用。

从查错控制角度看,按照加性干扰引起的错码分布规律的不同,信道可以分为三类。即随机信道、突发信道和混合信道。在随机信道中,错码的出现是随机的,而且错码之间的统计是独立的。在突发信道中,错码是成串集中出现的,即在一些短促的时间段内会出现大量错码,而在这些短促的时间段之间存在较长的无错码区间。

查错控制技术主要有以下四种:

检错重发:在发生码元序列中加入差错控制码元,接收端利用这些码元检测到有码元时,利用反相信道通知发送端,要求发送端重发,直到正确接收为止。所谓检测到有码错,是指在一组接收码元中知道有一个或一些错码,但是不知道该错码该如何纠正。采用检错重发技术时,通信系统需要有双向信道传送重发指令。

前向纠错:前向纠错一般简称FEC(Forward Error Correction)。这时接收端利用发送端在发送码元序列中加入的差错控制码元,不但能够发现错码,还能将错码恢复其正确取值。在二进制码元的情况下,能够确定错码的位置,就相当于能够就纠正错码。

采用FEC是,不需要反相信道传送重发指令,也没有因反复重发而产生的时延,故实时性好。但是为了能够纠正错码,而不是仅仅检测到有错码,和检测重发相比,需要加入更多的差错控制码元。故设备要比检测重发设备复杂。

2

反馈校验(Feed Checkout):这时不需要在发送序列中加入差错控制码元。接收端将接收到的码元原封不动地转发回发送端。在发送端将它和原发送码元逐一比较。若发现有不同,就认为接收端收到的序列中有错码,发送端立即重发。这种技术的原理和设备都很简单。但是需要双向信道,传输效率也比较低,因为每个码元都需要占用两次传输时间。

检错删除(deletion):它和检错重发的区别在于,在接收端发现错误码后,立即将其删除,不要求重发。这种方法只适用在少数特定系统中,在那里发送码元中有大量多余度,删除不分接收码元不影响应用。

循环码是线性分组码中最重要的一个子类,它的结构完全建立在有限域的基础上,可以用近似代数的方法精确描述,循环码是1957年由普兰奇(Prange)提出的,此后几十年中得到了充分的研究和发展。起初人们认识到并感兴趣的是循环码的外在特点,即循环码码字的循环移位后仍然是码字,这个特点给循环码的编译码实现带来了便利。在以后的实践中,人们从循环群的角度,在代数机构、纠错性能控制等方面找到了循环码更加吸引人的优越之处。目前,使用查错控制系统中使用的线性分组码几乎都是循环码或循环码的子类。循环冗余校验码(CRC)是一种系统的缩短循环码,广泛应用于帧校验。

1.2 内容概要

本设计主要分析循环冗余码理论,在理论基础上探讨其运用VHDL语言实现其算法,设计主要分为两个模块,即循环冗余码编码模块和循环冗余解码模块,主要编程工具为Max Plus II。

本设计主要内容首先从了解循环冗余校验码的实际应用入手,然后分析纠错编码的基本原理,研究程序设计中的基本运算规则(模2运算)入手,深入分析循环冗余码的编解码理论及其工程实现算法。提出编解码方案并进行比较分析,选出符合本设计要求的实现方案,进行硬件设计,最后进行程序的模块化设计,并进行仿真验证,模块仿真验证无误进行模块组合调试仿真。分析仿真结果得出结论。

- 3 -

第2章 CRC编解码理论

2.1纠错编码的基本原理

信道编码是在被传送的信息中附加一些监督码元,来检错和纠错。下面以三位二进制码组为例,说明检错纠错的基本原理。三位二进制码元共有23=8种可能的组合;000、001、010、011、100、101、110、111。下面分三种情况讨论 (l)如果这8种码组都用于传送消息,即每个码组都是许用码组。在传输过程中若发生一个或多个误码,则一种码组会错误地变成另一种码组。这样的编码既不能检错,也不能纠错,完全没有抗干扰能力;

(2)若只选其中的000、011、101、110四种码组作为许用码组。除上述4种许用码组以外的另外4种码组001、010、100、111称为禁用码组。经观察我们可以发现,许用码组中“1”的个数为偶数个,禁用码组中“1”的个数为奇数个。如果在传输过程中发生了一位或三位的错码,则“1”的个数就变为奇数个,许用码组就变为禁用码组;接收端一旦发现这些禁用码组,就表明传输过程中发生了错误。用这种简单的校验关系可以发现一个和三个错误,但不能纠正错误。例如,当接收到的码组为010时,我们可以断定这是禁用码组,但无法判断原来的正确码组是哪个许用码组。虽然原发送码组为101的可能性很小(因为发生三个误码的情况极少),但不能绝对排除;即使传输过程中只发生一个误码,也有三种可能的发送码组:000、011和110。显然,上述编码无法发现2个错码。以上编码方法相当于只传递00、01、10、11四种信息,而第三位是附加的监督位。这位附加的监督码位与前面两位信息码元和在一起,保证码组中“1”码的个数为偶数。下表示出了这种情况:

表2-1 信息位与监督位的关系

信息位 监督位 晴 00 0 云 01 1 阴 10 1 雨 11 0 (3)如果进一步将许用码组限制为二种:000和 111。则不难看出,用这种方法可以发现所有不超过2个的误码;或能纠正一位错码。纠正一位错码的方法是:将 8个码组分成二个子集,其中{000、 100、 010、001}与许用码组000对应,{111、011、101、110}与许用码组111对应;这样,在接收端如果认为码

4

组中仅有一个错码,只要收到第一子集中的码组即判为 000,收到第二子集中的码组即判为 111。例如,当收到的码组为禁用码组100时,如果认为该码组中仅有1个错码,则可判断此错码发生在“1”位,从而纠正为000;若认为上述接收码组中的错码数不超过两个,则存在两种可能性:000错一位和111错两位都可能变成100,因而只能检测出存在错码而无法纠正它。

分组码一般用符号(n,k)表示,其中k是每个码组中二进信息码元的数目;n是每个码组的总位数,又称为码组长度(码长);n-k = r为每码组中的监督码元数目,或称监督位数目。通常,将分组码规定为具有如下图所示的结构。图中前面k位(an-1?ar)为信息位,后面附加个监督位(ar-1?a0)。

a ar?1an?1 an?2r ?? a 0r个监督位 K个信息位 码长n=k+r 图2-1分组码的结构

在信道编码中,码组的重量就是码组中非零码元的数目,简称码重,例如 0010码组的码重为1,0011码组的码重为2。汉明(Hamming)距离就是两个码组中对应码位上具有不同二进制码元的位数定义为两码组的距离,简称码距。我们把某种编码中各个码组间距离的最小值称为最小码距,可记为min。在上述三位二进制码组例子中,8种码组均为许用码组时,两码组间的最小距离为1,常记作dmind?1。在选四种码组为许用码组情况下,最小码距式中dmin?2;

采用两种许用码组时,dmin?3。

由上例可知,一种编码的最小码距直接关系到这种码的检错和纠错能力,码距实际上是由一种码组变成另一种码组必须变化的比特数。因此最小码距是信道编码的一个重要参数。在一般情况下,对于分组码有以下结论: ①为检测e个误码,要求该编码的最小码距

dmi?ne?1 (2.1-1)

②为纠正t个误码,要求该编码的最小码距

dmi?n2t?1(2.1-2)

dmi?1? (2.1-3) nt?e③为纠正t个误码,同时检测e(e>t)个误码,要求最小码距

所谓“纠正t个误码,同时检测e个误码”,是指若接收码组与某一许用码组

- 5 -

间的距离在纠错能力范围t内,则按前向纠错方式工作,自动将误码予以纠正;而当与任何许用码组间的距离都超过t时,则按检错方式工作。也就是按“纠检结合的方式”工作。

在简要讨论了编码的纠(检)错能力后,再来分析一下差错控制编码的效用。 假设在信道中传输“0”和“l”的错误概率p相等,且p<<1,则在码长为n位的码组中发生r位错码的概率(误码率)为

Pn?r??Cp?1?p?rnrn?rr!?pr (2.1-4) r!?n?r?!

?3p?10例如,当码长n=7,时,则有

p7?1??7p?7?10?3 p7?2??31p2?2.1?10?5 p7?3??35p3?3.5?10?8

可见,采用了差错控制编码,即使只能纠正(或检测)码组中的l~2个错0码,也可以使误码率下降几个数量级。这就表明,只能纠(检)1~2个错码的简单编码也有很大实用价值。事实上,常用的差错控制编码大多数也只能纠正(或检测)码组中的l~2个错码。

2.2 模2运算原理

模2运算是一种二进制算法,CRC校验技术中的核心部分,因此,我们在分析CRC算法之前,必须掌握模2运算的规则。与四则运算相同,模2运算也包括模2加、模2减、模2乘、模2除四种二进制运算。而且,模2运算也使用与四则运算相同的运算符,即“+”表示模2加,“-”表示模2减,“×”或“·”表示模2乘,“÷”或“/”表示模2除。与四则运算不同的是模2运算不考虑进位和借位,即模2加法是不带进位的二进制加法运算,模2减法是不带借位的二进制减法运算。这样,两个二进制位相运算时,这两个位的值就能确定运算结果,不受前一次运算的影响,也不对下一次造成影响。 ①模2加法运算定义为:

0+0=0; 0+1=1; 1+0=1; 1+1=0 ②模2减法运算定义为:

0-0=0; 0-1=1; 1-0=1; 1-1=0

③模2乘法运算定义为:

6


基于VHDL的CRC编解码设计(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:财务管理制度

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: