Xilinx FPGA高级设计及应用
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.6 高速数据通信的加固设计

随着通信速率的不断提高和传输范围的日益扩展,高频衰减和冲击噪声对信号传输质量的影响越来越明显。以往在无线通信中广泛使用的差错控制编译码技术,在有线传输中也开始受到重视。然而,板间或机箱间高速数据通信的设计具有其固有的特点。为提高这类应用中数据通信的质量,本节考虑引入合适的差错控制算法,对高速信道进行加固设计。

3.6.1 数据通信加固的概念

数据通信加固的概念来源于抗干扰纠错设计,目的与系统加固一样,都是为了提高系统可靠性。但通信加固的概念要相对简单一些,对于无线应用,主要方法是使用信道编码来降低接收误码率。在有线传输中,着力改善信道上影响信号质量的因素,提高接收信号的信噪比,结合合适的差错控制算法来提高接收数据的可信度。一般通信信道相对比较固定,本书主要研究适合高速通信应用的差错控制算法。

自1950年汉明(Hamming)提出用冗余数据位来检测和纠正差错比特的理论和方法以来,差错控制编译码算法的研究得到了快速的发展。这一方面得益于算法对通信质量的改善,另一方面就是无线通信技术迅速发展对高可靠传输需求的结果。如今,性能优越的算法种类繁多,并在通信网中得到了广泛应用,但适合高速数据通信的高效差错控制编译码算法却十分鲜见。

目前,高速的数据通信大都采用信道编码调制(如8B/10B编码)技术来实现自同步传输。这虽然提高了传输速率和可靠性,却会使误码衍生,即单比特的通道误码解调成多位数据错误。复杂的差错控制算法,如RS、Turbo、Viterbi等,虽然具有纠正连续错误的能力,但存在编译码电路复杂、延时大、码率低等缺点,不方便应用,特别是在实时性要求高、速率冗余量小、接口电路简单的高速数据通信中,其缺点更明显。

本节设计的基于汉明码原理的交织汉明码算法,继承了汉明码编译码电路简单易实现的特点,同时扩展了纠错性能,使其可以应对突发连续误码的情况,应用十分方便,并且可用在高速数据通信中,显著提高数据通信的质量。由于主要面对二进制数据处理系统,本书不区分误码和误比特的概念。

3.6.2 交织汉明码原理及其性能分析

在论述交织汉明码的设计原理和性能之前,有必要先对汉明码做一个简单的介绍。汉明码是线性分组码的一种,能纠正一位误码或检测出两位误码,它因编译码电路简单、码率易控、延时小等特点而得到广泛应用。汉明码的实现原理是在分组码字的特定位置插入校验位,并把每个信息位分配在几个奇偶校验组中,若某个信息位出错就会引起相关的几个校验位发生变化,从而发现错误并能指出错误信息的位置。

若设汉明码字的长度为n, 信息位数为knk),则冗余位即校验位数为r=n-k, 称为(n,k,d)汉明码,其中d为最小汉明距离,且d=3。对于r位校验元,共可表示2r 个信息,其中全零组合表示码字无误,其他组合表示有误码并标志误码的位置。除去r个校验位出错的可能,仅有2r-r-1个组合能用于指示码字中的数据位。因此,(n,k,d)汉明码应该满足式(3-2):

式(3-2)取等号时称为标准汉明码,否则称为缩短汉明码。

汉明码的编译码电路用简单的异或逻辑就可以实现:先把码元从1到n进行编号,并用二进制数表示,校验位分配在2ii=0,1,…,r-1)的位置上,其余位依次放置用户数据。例如(7,4,3)汉明码的编码过程可按表3-3进行。

表3-3 汉明码中码元分配

表中“cx”和“dx”分别表示校验位和信息位编号,前面的数字表示该位在码字中的编号。因此,校验位可按式(3-3)生成:

可见,每一个信息位都参与了多个校验位的生成。假设传输中码字第5 位(d2)出错,接收端同样按照式(3-3)计算校验信息,发现c1c3(码字中的第1位和第4位)与原来不同,立即可判断第5位出错,即d2 出错。对于码字中的任意一位误码,汉明码都能纠正出来。但当码字中有多个错误出现时,则会出现有错不纠或“乱纠”的现象。因此,汉明码只适合于出现单比特随机误码的无记忆信道应用。

交织汉明码是对汉明码的改进算法。它通过把交织技术引入到汉明码编译码电路中,可以把原来可能出现的突发连续误码转换成单比特独立误码,然后进行译码运算,因而具有更强的纠错能力,能够纠正码字内的多个突发误码,避免了经典汉明码对多个错误有错不纠或“乱纠”的现象,并且编译码电路并不复杂,因此十分适用于高速数据通信。

1. 交织器设计

单纯地使用信道编码技术,要纠正数据传输过程中突发产生的多个连续误码,即使性能很优的编码方案也必须借助较长的码字,编译码电路会相当复杂。在差错控制算法中融入交织技术,可以改善这一状况。所谓交织,就是将编码后的数据按照一定的顺序打乱重排[38],使原来的突发连续错误,在解交织的时候分散开。交织的实现过程可使用公式表示如下,若设交织器输入序列为

则其输出序列可表示为

式中,的重新排列。常用的交织器有三种:矩阵分组式、伪随机式和半伪随机式[39]。后两种需要将交织信息发到对方,占用数据带宽,不适于高速通信使用。交织汉明码中使用矩阵分组式交织技术。

2. 交织汉明码原理

交织汉明码的设计思想是把从信道上接收过来的连续码元打乱重排,构成新的码字。如果数据中有连续误码,重排后就被拆散分布在不同的码组中,使用简单的汉明码即可完成差错控制。因此,把交织器融入到汉明编解码电路中就能实现交织汉明码。使用(n,k,d,m)表示交织汉明码,其中m表示交织深度,(n,k,d)遵循汉明码定义。多于n个码字的交织没有应用意义,故应有mn,nk满足下式:

交织汉明码编码电路分为两个部分:编码器和交织器。其中编码器借助汉明码的编码算法实现,具有汉明码的所有优点;交织器则是交织汉明码性能提高的关键部分,如前所述使用矩阵分组式交织技术实现码间交织,是比较容易实现的一种交织方式,并不会提高交织汉明码编译码复杂度。(n,k,d,m)交织汉明码的实现过程如图3-38所示。

事实上,交织汉明码的实现过程可以看做是把m个汉明编码后的n位码字按行依次写入m ×n的矩阵中,然后按列以m位一个码字读出,并发送出去。接收端先进行解交织,再进行汉明译码。解交织的过程就是把接收到的码字按列写入m ×n矩阵中,完成 n 次写入后,再以行为单位读出,进行汉明解码。即使在数据传输过程中突发出现多个连续错误比特,只要错误码元的最大间距不超过m-1,接收端解交织后就可以把这些错误比特分散到m个汉明码字中,从而实现每个误码的单独纠正。因此,(n,k,d,m)交织汉明码可以纠正连续m个误码,其纠错能力相对于汉明码得到了很大提高。

图3-38 交织汉明码实现过程

3. 交织汉明码的性能分析

交织汉明码除了依靠汉明码进行差错控制以外,其性能在很大程度上依赖交织变换。就(n,k,d,m)交织汉明码而言,若在连续的m ×n个码元中存在任何长度ppm)的突发错误,经过交织变换后,成为至少被n-1位隔开的单个独立差错,即每个汉明码字中至多只有一个误码,可纠正。对于ppm)个误码,若错误码元不连续,则只要第一个误码到最后一个误码的距离小于m-1,(n,k,d,m)交织汉明码依然可以正确恢复原数据。

对于存在p个连续误码的情况且p>m,p≤2mn, 则交织变换后将有p-m个汉明码字中存在两个误码,而其余的2m-p个码字中仅有一个误码。这种情况下,仅有2m-p个码字能够起到差错控制的作用;若np>2m, 此时(n,k,d,m)交织汉明码将无法纠错。此外,还可能存在的一种情况就是,即便在pm的情况下,若是不连续误码或随机误码,任何间距大于m-1的两个或多个误码,在经过交织变换后都有可能集中到一个汉明码字中,造成无法纠错或“乱纠”。

上述分析显示,m越大,(n,k,d,m)交织汉明码的纠正连续误码的能力越强。然而m个码字的交织会引入2mn个比特周期的编译码延时。还必须注意,增大交织深度mmn),会相应地要求增加汉明码长 n。对于(n,k,d)汉明码,其纠错后输出的误码率可按式(3-7)估算:

式中,(1-pen分别指码字中无误码和仅有一个误码的概率;pe 是指BSC (Binary Symmetry Channel,二进制对称信道)的误码率,由信道信噪比决定。分析(n,k,d)汉明码纠错后的输出误码率p与码字长度n的关系曲线如图3-39(a)所示,图3-39(b)是汉明码的编码增益曲线。

图3-39 汉明码纠错后输出误码率与码长的关系及其编码增益

从图3-39可以看出,式(3-7)是一个递增的函数,即汉明码纠错后输出误码率随码长的增加而增加。当BSC本身的误码率较高时,码长越长越不利于纠错。因此,实际中汉明码字长度不应选得太长,应参考实际信道误码率确定,(n,k,d,m)交织汉明码的交织深度是受限的。

此外,交织汉明码的码率与汉明码相同,如式(3-8)所示。

由于n、k只要满足式(3-6)即可,因此其码率可变。这一点在速率冗余有限的高速数据传输中十分重要,即可以根据实际速率冗余量来确定交织汉明码的码形。

3.6.3 基于交织汉明码的高速通信加固设计

基于8B/10B编码调制的嵌入式时钟自同步高速数据通信方案,可以提高通信速率和距离,却会使误码衍生。其10B码字中出现单比特或多比特误码,解调后可能引起最多连续8个数据比特错误。理论分析表明,交织汉明码可以处理这种误码。下面通过添加扰码的方式验证远程光纤信道中交织汉明码的性能。

在Xilinx FPGA上对(29,24,3,8)交织汉明码方案进行仿真验证,高速通信接口用Rocke-tIO GTP实现,通信协议和交织汉明编解码电路依FPGA逻辑搭建。条件如下:信源端对8个独立通道上的8位并行数据分别进行(29,24,3,8)交织汉明编码,在输出的每帧29个8位并行数中添加一个8位的扰码操作(8位的异或运算),然后添加一个8位的帧头并封装成帧送给通信接口完成调制和串化。最终信道以3.0 Gbps速率传输,信源端恢复数据。这样,每帧数据存在的误码数可以从1到8,且第一个误码和最后一个误码的距离不超过7,在(29,24,3,8)交织汉明码的纠错能力之内。发送端和接收端的8位并行数的ChipScope截图如图3-40所示。

图3-40 硬仿真中发送和接收的数据截图

测试中8个通道发送的都是8位0 ~255 的连续递增数。图中 error bit是扰码数据。可以看出,接收到的数据存在误码且连续误码不止一个。图3-41 是信源端接收到的第一路数据波形图,其中图3-41(a)是关闭纠错功能时的数据,图3-41(b)是普通汉明码纠错后的数据,图3-41(c)是使用交织汉明码纠错后的数据。图3-41(a)和图3-41(b)中的波形毛刺是数据出错造成的。无纠错使能时接收数据有误,经典汉明码对于存在多位错误的传输信道,性能基本无改善,而使用交织汉明码可完全恢复原始数据。因此(29,24,3,8)交织汉明码可实现多达8 个连续误码的纠错,从而验证了方案性能。

图3-41 实测时接收端的数据截图

图3-41 实测时接收端的数据截图(续)