(完整版)循环码
- 格式:doc
- 大小:157.00 KB
- 文档页数:5
8.5 循环码循环码是线性分组码中最重要的一个子类码,它的基本特点是编码电路及伴随式解码电路简单易行;循环码代数结构具有很多有用的特性,便于找到有效解码方法。
因此在实际差错控制系统中所使用的线性分组码,几乎都是循环码。
下面将介绍循环码的多项式表示及其性质,同时简介几种重要的循环码,CRC、BCH和R-S 码等。
8.5.1 循环码的描述1. 码多项式及其运算通式表示为:(8-69)于是称与为“同余”式,即[模](8-70)如:则[模] 即能被整除利用这一运算原理,我们可对一个码字进行移位表示:如:的多项式表示为:使码组向左移2位(循环)则有对应多项式然后以去除得:这一结果表明,以作除法运算(称模)后,即与为同余因此,(模)应注意,利用这种同余式表示,必须加注(模),否则就不明确在什么条件下得到的这一同余关系式。
2.循环码的构成循环码的构成突出特点是只要是该码中的一个许用码组——码字,通过循环位其结果则可包括全部个非全0码字,如上面介绍的(7,3)分组码,从信码位0 0 1构成的码字(0011101)开始逐一向左(或者向右)移一位,可得其余6个码字:(0111010)、(1110100)、(1101001)、(1010011)、(0100111)、(1001110)。
若把这些码字写成码多项式,都具有同一个移位运算模式,并设(0011101)对应的码多项式,于是,有:(模)(8-71)这样,就构成了(7,3)循环码,如表8-4。
从表8-4看出,循环得到的(7,3)码,仍为系统码,信息码组均在表中码字的高位(左方)。
表8-4 (7,3)循环码移位(7,3)码码多项式(模)0 0 0 1 1 1 0 11 0 1 1 1 0 1 02 1 1 1 0 1 0 03 1 1 0 1 0 0 14 1 0 1 0 0 1 15 0 1 0 0 1 1 16 1 0 0 1 1 1 08.5.2 循环码生成多项式与生成矩阵1. 生成多项式由表8-4构成个非全0码字多项式的过程与结果看,我们从开始进行逐一循环,并以模运算,该码字正是信码组中最低位为1,对应码字多项式,在全部非全0码字中,它的最高位阶次也最低,并等于,即最高次项为,随后一系列码字都源于它的移位而形成,因此称其为生成多项式,即(8-72)然后再从的因式分解来进一步分析(8-73)我们可以将三个既约多项式因式任意组合成两个因式,可有(8-74)如:(8-75)(8-76)其中可以组合为二因式中包含最高次为4次的情况有两种,即展开式的第4及第5两组,都可以作为阶次最高为4的即(8-77)(8-78)在展开式中选用了其中一个(组合)因式为后,余下一个因式,则称其为循环码的监督多项式,如式(8-74)生成多项式与相应监督多项式乘积等于多项式。
循环码是线性分组码中一个重要的子类,具有检错纠错能力强,实现方便等特点.它具有严密的代数学理论,封闭性与循环性.(n,k)循环码表示信息位为k位,监督位为(n-k)位.本次设计实验首先分析了(7,4)循环码的编码与译码原理,然后,用C语言实现其编码与译码功能。
通过C语言平台运行所编写的程序,观察了在输入信息码情况下输出对应的编码结果以及相反的译码功能。
通过多组的对比验证了该(7,4)循环码的编译码程序的正确性。
最后,在程序运行的过程中进一步分析循环码的编译码原理,并通过比较仿真模型与理论计算的性能,证明了仿真模型的可行性。
关键词:循环码,编码与译码,C程序。
现代通信的发展趋势为数字化,随着现代通信技术的不断开发,差错控制技术已日趋成熟,在各个领域都得到了广泛的应用和认同。
本文就(7,4)循环码的编码与译码原理进行C语言的编程及运行仿真。
现代社会发展要求通信系统功能越来越强,可靠性越来越高,构成也越来越复杂;这就要借助于功能强大的计算机辅助分析设计技术和工具才能实现。
现代计算机科学技术快速发展,已经研发出了新一代的可视化的仿真软件。
这些功能强大的仿真软件,使得通信系统仿真的设计和分析过程变得相对直观和便捷,由此也使得通信系统仿真技术得到了更快的发展。
本文使用的是功能强大的C语言软件。
C语言是一种使用简便的、特别适用于科学研究和工程计算的高级语言,与其他计算机语言相比,它的特点是简洁和智能化,具有极高的编程和调试效率.通过使用C工具箱函数对数字调制进行仿真,更能直观彻底的掌握循环码的编码与译码原理。
有助于我们的学习和研究,加深对知识的理解和运用. C的便利性还体现在它的仿真结果还可以存放到的工作空间里做事后处理。
方便我们修改参数对不同情况下的输出结果进行对比。
目录第1章概述 (1)第2章计算机通信与纠错码 (2)2。
1 计算机通信技术 (2)2.1.1 通信的概念 (2)2。
1。
2 通信的发展史简介 (2)2。
2、循环码2.1循环码的基本原理 1.定义循环码是满足循环特性的线性分组码,是线性分组码的子类,之所以这样说是因为线性分组码要求所选择的码是线性的,循环码则是在线性分组码的基础之上进一步要求所选择的码具有循环性。
假设C 是一个(n,k)线性码,如果C 中任意一个码字经任意循环移位之后仍然是C 中的码字,那么此码是一个循环码。
循环码具有规则的代数结构,且是自封闭的,因此用多项式来描述更方便。
长度为n 的循环码可用一个n-1次多项式来描述,此多项式称为码多项式,表示如下:(1)左移i 位后的码多项式为(2)码多项式与循环移位后的多项式之间的关系为)1()(c xC(x)1)1(021121-n -+=++⋅⋅⋅++=---nn n n n x c x C x c x c x c x (3)也即是)1m od()()()1(-≡n x x xC x C (4)以此类推,可以得到)1m od()()()(-≡n i i x x C x x C (5)2.循环码的性质(1)GF(q)上的(n,k)循环码中,存在唯一的一个n-k 次首一多项式0111)(g x g x g x x g k n k n k n ++⋅⋅⋅++=-----,每一个码多项式)(x C 都是)(x g 的倍式,即循环码的码多项式)(x C 中次数最低且其常数项为1的码多项式有且仅有一个,为码的生成多项式,记做)(x g 。
循环码C 中的每个码多项式)(x C 都可唯一表示成)()()(x g x m x C =。
(2))(,),(),(),(12x g x x g x x xg x g k -⋅⋅⋅都是生成多项式,他们的线性组合也是生成多项式。
(3)GF(q)上(n,k)循环码的生成多项式)(x g 一定是)1(-nx 的因子。
(4)循环码的生成矩阵H 和校验矩阵H 的正交性可以用多项式表示为1)()(-=n x x h x g 。
循环码(7,4)第3章循环码编码和译码3.1循环码概念循环码是线性分组码中一个重要的分支。
它的检、纠错能力较强,编码和译码设备并不复杂,而且性能较好,不仅能纠随机错误,也能纠突发错误。
循环码是目前研究得最成熟的一类码,并且有严密的代数理论基础,故有许多特殊的代数性质,这些性质有助于按所要求的纠错能力系统地构造这类码,且易于实现,所以循环码受到人们的高度重视,在fec系统中得到了广泛应用。
3.1.1、循环码定义定义。
一个线性分组码,若具有下列特性,则称为循环码。
设码字a。
(an。
1an。
2...(3-1)a1a0)若将码元左移一位,得a(1)。
(an。
2an。
1...a1a0an。
1)a(1)也是一个码字。
注意。
循环码并非由一个码字的全部循环移位构成。
3.1.2循环码的特点表3-1列出了某(7,4)循环码的全部码组码组编号a61234567800000000信息位a500001111a400110011a301010101a201110110监督位a100101100a001111001码组编号a691011121314151611111111信息位a500001111a400110011a301010101a210011001监督位a111000011(3-2)a001101001循环码有两个数学特征:1.线性分组码的封闭型。
即如果c1,c2,是与消息m1,m2对应的码字,则c1+c2必定是与m1+m2对应的码字。
2.循环性,即任一许用码组经过循环移位后所得到的码组仍为该许用码组集合中的一个码组。
即若(an-1an-2…a1a0)为一循环码组,则(an-2an-3…anan-1)、(an-3an-2…an-1an-2)、……还是许用码组。
也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。
以3号码组(0010111)为例,左移循环一位变成6号码组(0101110),依次左移一位构成的状态图如图1.1-2所示。
常用循环码简介3.1 循环码循环码是在严密的代数学理论基础上建立起来的,是线性分组码的一种。
这种码的编码和解码设备都不太复杂,而且纠错的能力较强。
顾名思义,循环码除具有线性码的一般性质之外,还具有循环性,即任一码组循环移位以后,仍为该码中的一个码组。
在代数编码理论中,为了便于计算,经常将循环码表示成码多项式的形式,设码组为),,,,(0121a a a a a n n --=,则码多项式定义如下:0121)(a x a x a x a X T n n ++++=--在循环码除全“0”码组外,再没有连续k 位均为“0”的码组,即连“0”的长度最多只有)1(-k 位。
否则,在经过若干次循环移位后将得到一个k 位信息位全为“0”,但监督位不全为“0”的一个码组。
因此,)(x g 必须是一个常数项不为“0”的)(k n -次多项式,而且这个)(x g 还是这种码中次数为)(k n -的唯一一个多项式,称这唯一的)(k n -次多项式)(x g 为码的生成多项式。
一旦确定了)(x g ,则整个),(k n 循环码就被确定了。
由此,可以写出循环码的生成矩阵G. 通常这时得到的循环码的生成矩阵不是典型矩阵,可通过线性变换转为典型矩阵,则循环码组可写成:[])()(21X G a a a X T k n n n ---=[])()()1(21x g a x a x a x a X G k n n n +++=----所有的码组多项式)(x T 都可被)(x g 整除,而且任意一个次数不大于)1(-k 的多项式乘)(x g 都是码多项式,该条性质用于编码,还可用于验证接收码组是否出错。
由于任一循环码多项式)(x T 都是)(x g 的倍式,故可写成)()()(x g x h X T =,而)(x g 本身也是一个码组,即有)()(x g X T ='。
由于)(X T '是一个)(k n -次多项式,故)(X T x k '是一个n 次多项式,在模1+n x 运算下,也是该编码中的一个许用码组。
2、循环码2.1循环码的基本原理 1.定义循环码是满足循环特性的线性分组码,是线性分组码的子类,之所以这样说是因为线性分组码要求所选择的码是线性的,循环码则是在线性分组码的基础之上进一步要求所选择的码具有循环性。
假设C 是一个(n,k)线性码,如果C 中任意一个码字经任意循环移位之后仍然是C 中的码字,那么此码是一个循环码。
循环码具有规则的代数结构,且是自封闭的,因此用多项式来描述更方便。
长度为n 的循环码可用一个n-1次多项式来描述,此多项式称为码多项式,表示如下:(1)左移i 位后的码多项式为(2)码多项式与循环移位后的多项式之间的关系为)1()(c xC(x)1)1(021121-n -+=++⋅⋅⋅++=---nn n n n x c x C x c x c x c x (3)也即是)1m od()()()1(-≡n x x xC x C (4)以此类推,可以得到)1m od()()()(-≡n i i x x C x x C (5)2.循环码的性质(1)GF(q)上的(n,k)循环码中,存在唯一的一个n-k 次首一多项式0111)(g x g x g x x g k n k n k n ++⋅⋅⋅++=-----,每一个码多项式)(x C 都是)(x g 的倍式,即循环码的码多项式)(x C 中次数最低且其常数项为1的码多项式有且仅有一个,为码的生成多项式,记做)(x g 。
循环码C 中的每个码多项式)(x C 都可唯一表示成)()()(x g x m x C =。
(2))(,),(),(),(12x g x x g x x xg x g k -⋅⋅⋅都是生成多项式,他们的线性组合也是生成多项式。
(3)GF(q)上(n,k)循环码的生成多项式)(x g 一定是)1(-nx 的因子。
(4)循环码的生成矩阵H 和校验矩阵H 的正交性可以用多项式表示为1)()(-=n x x h x g 。
因此,h(x)也是1-n x 的因子。
(5)生成矩阵G 中的每一行都是上一行经过循环移位的结果。
3.生成矩阵和校验矩阵由上面内容中的性质(4),若g(x)的次数为n-k 次以g(x)作为生成多项式组成的(n,k)循环码的k 个码多项式)(,),(),(),(12x g xx g x x xg x g k -⋅⋅⋅一定是线性无关的,根据线性分组码的定义,这些码多项式构成循环码的生成矩阵)(x G⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡++⋅⋅⋅++⋅⋅⋅++⋅⋅⋅++++⋅⋅⋅++=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⋅⋅⋅=---------------------0111201131210121121)()()()x (g x g x g x g x g x g x g x g x g x g x g x g x g x g x x g x G k n k n k n k n k k n k n n k n k k n k n n k n k k (6) 则(n,k)循环码的生成矩阵G 为⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅=--------011012011000000g g g g g g g g g g g g G k n kn n k n k n kn (7)定义0111)(h x h x h x h x h k k k k ++⋅⋅⋅++=--为(n,k)循环码的校验多项式,由1)()(-=n x x h x g 可得到系数方程⎩⎨⎧-==+=+⋅⋅⋅++-----1,...,2,10000)(110n i h g h g h g h g h g k k n k n i k n i i , (8) 通过解方程,可得到(n,k)循环码的校验矩阵H 为⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅=k kk h h h h h h h h h H 1010*******000 (9)可以验证0=T GH (10)对于系统码形式的(n,k)循环码,假设码字C 的前k 位为系统信息位。
假设信息多项式的第n-1次(1-n x 的系数)到第n-k 次(kn x-的系数)的系数的信息位,其余为校验位,设信息多项式为012211)(u x u x u x u x u k k k k k ++⋅⋅⋅++=----- (11)校验多项式为012211)(r x r x r x r x r k n k n k n k n ++⋅⋅⋅++=-------- (12)则有)(m od 0)()()(x g x r x x m x C k n ≡+=- (13)即)(m od )()(x g x x m x r k n -≡ (14)而[]P I G k = (15)即生成矩阵G 的第i 行(i=1,2,...,k)分别为信息序列中仅第i 个信息元不为0的信息序列编码得到的码字,相应的信息多项式分别为1,,...,,21x x xk k --,校验多项式为k i x g x x x x r i n k n i k i ,...,2,1),(mod )(=≡≡--- (16)故生成矩阵多项式G(x)为⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡+⋅⋅⋅++=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡+⋅⋅⋅++=---------))(mod ())(mod ())(mod ()()()()x (22112211x g x x x g x x x g x x x r x x r x x r x G k n k n n n n n k k n n n (17) 设)(x r i 的系数序列为),,...,,(0,,2,1,_i i i k n i k n i i r r r r r ----=,则系统循环码的生成矩阵为⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⋅⋅⋅=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅=------------__2_10,1,2,1,0,21,22,21,20,11,12,11,1100010001k k k k k n k k n k k n k n k n k n r r I r r r r r r r r r r r r r G (18) 相应的校验矩阵为⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅⋅=⎥⎦⎤⎢⎣⎡⋅⋅⋅=-------------1000100010,0,20,11,1,21,12,12,22,11,1,21,1__2_1k k k n k n k n k n k k n k n k n TkTTr r r r r r k r r r r r I r r r H(19)2.2循环码的编码所谓编码,就是在已知信息位的条件下求出循环码的码组。
首先,根据给定的(n,k)值选定生成多项式g(x),它是)1(+nx 的一个常数项不为0的阶次为(n-k)因子,再根据(6)式,由生成多项式得到循环码的生成矩阵。
若已知输入信息码元为)(0121u u u u k k ⋅⋅⋅--,则相应的循环码多项式为)()()()()()()(0122110121x g x u x g u x u x u x u x G u u u u x C k k k k k k ⋅=⋅++⋅⋅⋅++=⋅⋅⋅⋅=------(20) 由式(20)可求得循环码各许用码组,且都为g(x)的倍式,由此式得到的并非系统码。
在系统码中,码组的前k 位为信息位,随后的(n-k)位为监督位。
此时的码多项式为)()()()()(0110112211x g x u r x r x u x u x u x u x r x x u x C k n k n k n k n k k n k k n ⋅=+⋅⋅⋅++++⋅⋅⋅++=+⋅=-----+------ (21)其中,011)(r x r x r k n k n +⋅⋅⋅+=----为监督多项式,监督码元为)(01r r k n ⋅⋅⋅--。
由式(20)和(21)可知,)(m od )()()()(x g x x u x x u x C x r k n k n --≡+= (22)由式(22)知,系统码的构造只需将信息码多项式升(n-k)阶,再对g(x)做模运算,得到的余式r(x)为监督多项式。
由以上的分析,先将系统码的编码步骤归纳如下: (1)先用kn x-乘以信息多项式u(x),即kn xx u -⋅)(;(2)再用kn xx u -⋅)(除以g(x),得到商式p(x)和余式r(x),即)()()()()(x g x r x p x g x u x k n +=- (23)(3)最后得出码多项式)()()(x r x x u x C k n +⋅=- (24)2.3循环码的译码接收端译码包括检错和纠错。
检错:循环码的任一许用码多项式C(x)都能被生成多项式g(x)整除,因此在接收端只需将接收到的码多项式)(_x c 用生成多项式g(x)去除;如果余式为0,则传输过程中未发生错误。
故可用余式是否为零来判断码组中是否出错;但是,也有例外,当一许用码错误成另一许用码时,错误将无法检测出来,这种错误称为不可检错误。
纠错:为了能够纠错,要求每个可纠正的错误图样必须与一个特定余式有一一对应关系,这样才能从上述余式中唯一地确定其错误图样,从而纠正错码。
因此,循环码的纠错译码可分为以下三步进行:(1)根据接收到的码)(_x c 计算校正子(或称伴随式)多项式)(_x r ;对于循环码来说,校正子多项式就是用接收到的码多项式)(_x c 除以生成多项式g(x)得到的余式,即)(mod )()(__x g x c x r =(2)由校正子多项式)(_x r 确定错误图样e(x);(3)将错误图样e(x)与接收码多项式)(_x c 相加,即可纠正错误恢复原发送码组。