大连东软信息学院电子工程系实用编解码技术实验指导书肖军编写大连东软信息学院电子工程系大连东软信息学院循环码码的编码和译码一、实验目的1、巩固循环码码的编码和译码的理论知识2、利用matlab仿真实现循环码码的编码和译码过程3、利用C语言来实现线循环码码的编码和译码过程二、参考资料和基础知识1、理论知识:教材第四章内容2、matlab基础知识:第一次试验内容和教材109-119页三、循环码的原理循环码除了具有线性码的一般性质外,还具有循环性。循环性是指任一码组循环一位(即将最右端的一个码元移至左端,或反之)以后,仍为该码中的一个码组。在表1中给出一种(7,3)循环码的全部码组。由此表可以直观看出这种码的循环型。例如,表中的第2码组向右移一位即得到第5码组;第6码组向右移一位即得到第7码组。一般说来,若是循环码的一个码组,则循环移位后的码组,也是该编码组中的码组。大连东软信息学院电子工程系由于循环码具有码的代数结构清晰、性能较好、编译码简单和易于实现的特点,因此在目前的计算机纠错系统中所使用的线性分组码几乎都是循环码。它不但可以纠正独立的随机错误,也可用于检测突发错误并且非常有效。),(kn循环码能够检测长为或更短的任何突发错误;其中n为码长,k为信息位数。循环码多项式表示在代数编码理论中,为了便于计算,把这样的码组中各码元当作是一个多项式的系数,即把一个长度为n的码组表示成:例如,表1中第7个码组可以表示为:在循环码中,一个),(kn码有2k个不同的码组。若用)(xg表示其中前)1(k位皆为“0”的码组,则)(,),(),(),(12xgxxgxxxgxgk都是码组,而且这k个码组是线性无关的。对于(n,k)循环码中的生成多项式g(x),它是(n,k)循环码码集中唯一的,幂次为n-k的码多项式,则kxgx是一个幂次为n的码多项式。按模(1nx)运算,此时:1)()(1)(nnkxxRxQxxgx,R(x)余数多项式(2-2)即kxgxRx,且因kxgx也是n阶幂,故Q(x)=1.由于它是循环码,大连东软信息学院电子工程系故kxgx按模(1nx)运算后的“余式”也是循环码的一个码字,它必能被g(x)整除,即:)()()(xFxGxR(2-3)由以上两式可以得到:)()()1()()1)(()(xGxFxxRxxQxgxnnk(2-4)和1nkxxFxGx(2-5)从上式中可以看出,生成多项式g(x)应该是1nx的一个因式,即循环码多项式应该是1nx的一个n-k次因式。循环码的编码原理(1)有信息码构成信息多项式)()()(xRxExc,其中最高幂次为k-1;(2)用knx乘以信息多项式)(xm,得到的)()()(xRxExc,最高幂次为1n,该过程相当于把信息码),,.....,,(0121mmmmkk移位到了码字德前k个信息位,其后是r个全为零的监督位;(3)用g(x)除)(xmxkn得到余式r(x),其次数必小于g(x)的次数,即小于(n-k),将此r(x)加于信息位后做监督位,即将r(x)于)(xmxkn相加,得到的多项式必为一码多项式。根据上面的讨论,可得(7,4)循环码编码的程序框图,如图1如下:图1编码程序框图大连东软信息学院电子工程系循环码的译码原理纠错码的译码是该编码能否得到实际应用的关键所在。译码器往往比编码较难实现,对于纠错能力强的纠错码更复杂。根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。通常,将接收到的循环码组进行除法运算,如果除尽,则说明正确传输;如果未除尽,则在寄存器中的内容就是错误图样,根据错误图样可以确定一种逻辑,来确定差错的位置,从而达到纠错的目的。用于纠错目的的循环码的译码算法比较复杂,感兴趣的话可以参考一些参考书。而用于检错目的循环码,一般使用ARQ通信方式。检测过程也是将接受到的码组进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错,要求发送端重发。当码字c通过噪声信道传送时,会受到干扰而产生错误。如果信道产生的错误图样是e,译码器收到的n重接受矢量是y,则表示为:ecy上式也可以写成多项式形式:)()()(xexcxy译码器的任务就是从y(x)中得到)ˆ(xe,然后求的估值码字ˆˆ()()()cxyxex并从中得到信息组)ˆ(xm。循环码译码可按以下三个步骤进行:(1)有接收到的)(xy计算伴随式)(xs;(2)根据伴随式s(x)找出对应的估值错误图样)ˆ(xe;(3)计算ˆˆ()()()cxyxex,得到)ˆ(xc估计码字。若)()ˆ(xcxc,则译码正确,否则,若)()ˆ(xcxc,则译码错误。由于g(x)的次数为n-k次,g(x)除E(x)后得余式(即伴随式)的最高次数为n-k-1次,故S(x)共有2n-k个可能的表达式,每一个表达式对应一个错误格式。可以知道(7,4)循环码的S(x)共有2(7-4)=8个可能的表达式,可根据错误图样表大连东软信息学院电子工程系来纠正(7,4)循环码中的一位错误,其伴随式如下表2所示。表2BCH(7,4)循环码错误图样表上式指出了系统循环码的译码方法:将收到的码字R(x)用g(x)去除,如果除尽则无错;否则有错。如果有错,可由余式S(x)一一找出对应图样,然后将错误图样E(x)与R(x)模2和,即为所求码字C(x),从而实现纠错目的。解码过程流程图,如图2所示:图2译码程序框图大连东软信息学院电子工程系四、实验内容设计一个(7,4)循环码码,其生成多项式可在下表中任意选择一个(一)、matlab相关工作:1、推导生成矩阵2、利用生成矩阵推导校验矩阵3、利用matlab产生生成矩阵(列出matlab编程源代码;以屏幕截图形式,列出生产矩阵结果)4、利用matlab和步骤3中的生成矩阵产生校验矩阵(列出matlab编程源代码;以屏幕截图形式,列出校验矩阵结果)5、编写matlab语句,完成对任意信息序列的编码(列出matlab编码的源代码;以屏幕截图形式,列出输入原始信息和编码后的信息,附在项目报告中)5、利用matlab编程,通过计算伴随式的方法,进行译码,要求1)对输入任意6bit数据,都可以进行译码2)译码输入信息要求能够体现如下3种:输入信息无错误,输入信息中1bit错误,输入信息中2bit错误(将matlab源代码附在项目报告中,同时将满足要求的输出信息屏幕截图附在项目报告中)(二)、C语言相关工作1、在已知生成多项式的情况下,利用C语言编程完成编码过程(将源代码附在项目报告中,同时将输出结果以屏幕截图的形式附在项目报告中)2、在生成多项式的情况下(第一项工作中的步骤2中已知该项),利用C语言编程和计算校验式(余式)的方式完成译码过程,要求:1)对输入任意6bit数据,都可以进行译码2)译码输入信息要求能够体现如下3种:输入信息无错误,输入信息中1bit错误,输入信息中2bit错误(将C语言源代码附在项目报告中,同时将满足要求的输出信息屏幕截图附在项大连东软信息学院电子工程系目报告中)五、评分标准1、上课实际工作检查(6分),该分值在上课检查过程中完成。2、实验报告(4分),该分值在学生提交报告后进行评分。说明:本次实验每2位同学分成一组。提交报告时,在报告上标明所有组内同学姓名和学号。