当前位置:文档之家› 73循环码编译码软件实现

73循环码编译码软件实现

73循环码编译码软件实现
73循环码编译码软件实现

摘要

循环码是目前研究最成熟的一类码,并且有严密的代数理论,它的检、纠错能力较强,编码和译码设备并不复杂,而且性能较好,不仅能纠随机错误,也能纠突发错误。当然它还具有循环性。

本说明书介绍了(7,3)循环码的定义,以及编码与译码原理,用C语言编程实现其编码与译码功能。通过C语言平台运行所编写的程序,输入任意的数字信息序列,得出了编码结果。另外还分别在无差错和部分差错的情况下进行了译码。

关键词:循环码;编码与译码;检错纠错;C语言

目录

前言 (1)

一、循环码编码、译码的基本原理 (2)

1.1、循环码 (2)

1.1.1、循环码定义 (2)

1.1.2、循环码的特点 (2)

1.1.3、码多项式 (3)

1.1.4、生成多项式 (4)

1.1.5、生成矩阵 (5)

1.1.6、监督多项式与监督矩阵 (6)

1.1.7、系统循环码 (6)

1.1.8、循环码的编码 (7)

1.1.9、循环码的译码 (8)

1.1.10、循环码检错与纠错能力 (9)

二、设计过程及运行 (11)

2.1 c语言的介绍 (11)

2.1.1 C语言的发展 (11)

2.1.2 C语言特点 (11)

2.2 循环码编码的设计 (12)

2.3循环码译码的设计 (13)

2.4运行结果及仿真 (15)

2.4. 1.正确编码界面 (15)

2.4.2无差错编码仿真结果 (15)

2.4.3部分差错编码图 (15)

2.5运行结果及理论分析 (16)

2.6软件可行性分析 (17)

参考文献 (18)

总结 (19)

附录 (20)

前言

在计算机通信信息码中循环码是线性分组码的一个重要子集,它的循环码的编码和译码电路比较简单,纠错能力也较强,是目前研究得最成熟的一类码。因此本文运用C语言对(7,3)循环码的编码与译码进行编程及运行仿真。

C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。

一、循环码编码、译码的基本原理

信道编码:信道编码又称差错控制编码或纠错编码,它是提高信息传输可靠性的有效方法之一。一类信道编码是对传输信号的码型进行变换,使之更适合于信道特性或满足接收端对恢复信号的要求,从而减少信息的损失;另一类信道编码是在信息序列中人为的增加冗余位,使之具有相关特性,在接收端利用相关性进行检错或纠错,从而达到可靠通信的目的。

1.1、循环码

循环码是线性分组码中一个重要的分支。它的检、纠错能力较强,编码和译码设备并不复杂,而且性能较好,不仅能纠随机错误,也能纠突发错误。

循环码是目前研究得最成熟的一类码,并且有严密的代数理论基础,故有许多特殊的代数性质,这些性质有助于按所要求的纠错能力系统地构造这类码,且易于实现,所以循环码受到人们的高度重视,在FEC 系统中得到了广泛应用。

1.1.1、循环码定义

定义:一个线性分组码,若具有下列特性,则称为循环码。设码字

()0121...c c c c c n n --= (1)

若将码元左移一位,得

(2)

()1c 也是一个码字。

由于(k n ,)线性分组码是n 维线性空间n V 中的一个k 维子空间,因此

()k n ,循环码是n 维线性空间n V 中的一个k 维循环子空间。

注意:循环码并非由一个码字的全部循环移位构成。 1.1.2、循环码的特点 循环码有两个数学特征: (1)线性分组码的封闭型;

(2)循环性,即任一许用码组经过循环移位后所得到的码组仍为该许用码组集合中的一个码组。

()()

1

012

1...--=n n c c c c c

即若

()0121...a a a a n n --为一循环码组,则

()1032---???n n n a a a a 、()2143----???n n n n a a a a 、……还是

许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。

以3号码组(0100111)为例,左移循环一位变成5号码组(1001110),依次左移一位构成的状态图如图1所示。

图1(7,3)循环码中的循环圈

可见除全零码组外,不论循环右移或左移,移多少位,其结果均在该循环码组的集合中(全零码组自己构成独立的循环圈)。

1.1.3、码多项式

为了用代数理论研究循环码,可将码组用多项式表示,循环码组中各码元分别为多项式的系数。长度为n 的码组()0121...a a a a A n n --=用码多项式表示则为

(3)

式中,x 的幂次是码元位置的标记。

若把一个码组左移i 位后的码组记为()i n i n i n i n i a a a a A -+-----=,,,121,其码多项式为

(4)

)()(x A i 可以根据)(x A x i

按模1+n x 运算得到,即

(5) 或

(6) 3号 5号

2号

4号

8号 7号

6号()01

2

21

1a x a x a x a x A n n n n +++=---- ()()i

n i n n i n n i n i a x a x a x a x A -+-------++++=12211 ()()()()

1

mod +≡n i i x x A x x x ()()()

()()x A x x Q x A x i n i ++=1

式中,()x Q 为()x A x i 除以1+n x 的商式,而)()(x A i 等于()x A A i ?被1+n

x 除

得之余式。

以码组1011100为例,若将此码左移两位,则由式(6)可得 ()()()

()()x A x x Q x x x x x 22234621++=+++ (7)

易有其余式为()

()x x x x x A

i +++=456 ,对应的码组为1110010,它与

直接对码组进行循环左移的结果相同。

码多项式之间可以进行代数运算,在二元码中遵循模2运算的规则。根据线性码的封闭性,任意两码字经模运算后仍为本码组中的码字。

1.1.4、生成多项式

(n,k )循环码码组集合中(全“0”码除外)幂次最低的多项式(n-k )阶称为生成多项式()x g 。它是能整除1+n x 且常数项为1的多项式,具有唯一性。集合中其他码多项式,都是按模(1+n x )运算下()x g 的倍式,即可以由多项式()x g 产生循环码的全部码组。

假设信息码多项式为()x m ,则对应的循环码多项式为

(8) 式中,)(x m 为次数不大于1-k 的多项式,共有k 2个(k n ,)循环码组。 考查表1.1-1,其中4=-k n 阶的多项式只有编号为2的码组(0011101),所以表中所示(7,3)循环码组的生成多项式1)(234+++=x x x x g ,并且该码组集合中的任何码多项式)(x A 都可由信息位乘以生成多项式得到

(9) 式中,)(0121m m m m k k ???--为信息码元。 对于(7,k )循环码,17

+x 的因式分解为

(10)

由该式可以构成表1所示几种(7,k )循环码。

()()()x g x m x A =)1mod()()()(0121+++???++=--n

k k x x g m m m m x A ()()()11112

3

3

7

+++++=+x x x x x x

表1(7,3)循环码的生成多项式

从表1中可以看出,即使n,k 均已确定,也可能由多种生成多项式供选择,选用的多项式不同,产生出的循环码组也不同。

1.1.5、生成矩阵

根据各码组集合中生成多项式的唯一性,可以构造生成矩阵G 。由于g (x )的次数为k n -,则)(,),(),(1

x g x

x xg x g k -???都是码多项式,而且线性无关,

因此以这k 各多项式对应的码组作为k 行就能构成该循环码的生成矩阵,因此循环码的生成矩阵多项式可以写成

(11) 以生成多项式1)(234+++=x x x x g 构造)(x G ,相应的矩阵形式为

(12)

(13)

则G 为g(x)升幂排列时的G 为

(14)

对式(14)作线性变换,整理成典型形式的生成矩阵

(15)

若信息码元与式(14)相乘,得到的就是系统循环码。

??

??

?

?????+++++++++=??????????=1)()()()(2343

452

4562x x x x x x x x x x x x g x g x x g x x G ??

??

??????=101110001011100010111G ()()

x g x

x h n 1

+=??

?

???

?

????

???=-)()()()(1x g x g x x g x x G k ()()

x h x g x n =+1

1.1.6、监督多项式与监督矩阵

如前所述,在(n ,k )循环码中,由于g(x)能除尽,因此1+n

x 可分解成g(x)

和其他因式的乘积,记为

即可写成

(16)

由于g(x)是常数项为1的r 次多项式,所以h(x)必为k 次多项式。称h(x)为监督多项式或一致校验多项式,与式(15)给出的G(x)相对应,监督矩阵多项式可表示为

(17)

式中,)(*x h 式h(x)的逆多项式。 由式(17)可知,前述生成多项式的g(x)的一致校验多项式为1)(23++=x x x h ,所以其一致校验矩阵(监督矩阵)为

(18) 1.1.7、系统循环码 循环码也可以构成为系统循环码。为方便系统码的构造,将消息多项式和码式都记为高位在前,即),,,,(0121m m m m m k k ???=--的消息多项式为m(x),

()1110--+++=k k x m x m m x m (19)

又设码式的高幂次部分等于m(x),即

(20)

其中p(x)称为校验位多项式,由于码式是生成式的倍式,所以 ??

??

?

?????=101110011100100111001G ??????

????????=-)()()()(**

*1x h x xh x h x x H r ??

??

?

????

???=1011000010110000101100001011)(X H )()()(1

1

11

1

x p x m x x c x c x c x c c x c k n n n k n k n k n k

n +?=++++++=---+-+---

(21) 因此循环码的系统码码式为

(22) 将循环码的系统码构造步骤总结为

(1)多项式乘))(()(x m x x m x r

r = (2)多项式求模(余式) )())())(mod ((x p x g x m x r

=

(3)多项式减)()())((x c x p x m x r

=- 如果令)(x m 为单项式1

+r x ,1,,1,0-=k i

(23)

那么容易看到,)(x c i 对应的向量i c ,1,,1,0-=k i 是线性无关的,从而得到循环码系统码的生成矩阵s

G 为

(24) 故由式(24)可以求得前述(7,3)循环码系统码的生成矩阵为 (1.1.23)

(25)

1.1.8、循环码的编码 1.利用生成多项式()x g 实现编码:

如上所述,但循环码的生成多项式()x g 确定时,码就完全确定了。现在讨论生成多项式()x g 给定以后,如何实现循环码的编码问题。

若已知 ()0g x g x g g x g i i k n i k n k n +++=----- (26)

并设信息元多项式 ()012211m x m x m x m x m k k k k +++=----

(27)

要编码成系统循环码形式,即码字的最左边k 位是信息元,其余n-k 位是校

验元,则要用k n x -乘以()x m ,再加上校验元多项式()x r ,这样得到的码字多项式

()x c 为

??

??

?

?????=101110011100100111001s G ?

?

???

???????=------1000100011,11,10,11,111101,00100

r k k k r r s p p p p p p p p p G ()()()()()()

x g x g x a x m x x p k n mod 0==+-))()(mod ()(x g x

m x x p r

?-=))]((mod )([)()(x g x m x x m x x c r

r -=

(28) 其中 ()0r x r x r x r i i k n i k n +++=----

()x c 一定是()x g 的倍式,即有

(29)

注意到()x g 为n-k 次多项式,而()x r 最多为n-k-1次多项式,必有 ()()()x g x m x x r k n m o d ,

-= (30)

即()x r 必是()x m x k m -除以()x g 的余式。

式(28)指出了系统循环码的编码方法:首先将信息元多项式()x m 乘以k n x -成为()x m x k n -,然后将()x m x k n -除以生成多项式()x g 得到余式()x r ,该余式就是校验元多项式,从而得到码字多项式

(31)

综上所述,系统循环码的编码问题,可以归结为两个多项式的除法运算,即将

()x m x k n -除以生成多项式()x g 得到余式()x r 的运算,因此研究多项式除法的电路实现是必要的。

由前面得叙述以求得循环码的生成矩阵等,故对于生成式为

()1234+++=x x x x g 的(7,3)循环编码器,其编码原理图如图1.1-2。

当码字c 通过噪声信道传送时,会受到干扰而产生错误。如信道产生

e c y +=。

上式也可以写成多项式形式 ()()()x e x c x y += (32)

()()()0

02r x r x r x m x m x m x r x m x x c i i k n i k n k n n i k i n i k k n +++++++=+=---------- ()()()()()

x g x q x r x m x x c k

n =+=-()()()()

x g x r x m x x c k n mod 0

=+=-()()()x r x m x x c k

n +=-x )

译码器的任务就是从()x y 中得到()∧x e ,然后求得估值码字()()x e x y c ∧

∧+=,并从中得到信息组()x m ∧

循环码的译码可按以下三个步骤进行:

()1接收到的()x y 计算伴随式式()x s ;

()2根据伴随式()x s 找到对应的估值错误图样 ;

()3计算, ,得到估值码字()∧

x c 。若()()x c x c =∧,则译码正确,

否则,若()()x c x c ≠∧

,则译码错误。

译码器实现的复杂程度,往往是一个纠错码能否使用的关键。

利用循环码的循环特性,经常会使其译码运算变得简单,这也是循环码受到关注和重视的重要原因。

对于本报告讨论的(7,3)循环码,其译码器原理图如图3。

1.1.10、循环码检错与纠错能力

由于循环码是一种线性分组码,所以其纠检错能力与线性分组码相当。而线性分组码的最小距离可用来衡量码的抗干扰能力,那么一个码的最小距离就与它的纠检错能力有关。

定理: 对于任一个(n,k )线性分组码,若要在码字内

()1检测e 个错误,要求码的最小距离1+≥e d ; ()2纠正t 个错误,要求码的最小距离12+≥t d ;

()3纠正t 个错误同时检测()t e ≥个错误,则要求1++≥e t d ;

循环码的译码分检错译码与纠错译码两类。在无记忆信道上,对码字c ,差错图案e 和接收向量r 的多项式描述为

)()()(x e x c x r += (33) 定义)(x r 的伴随多项式为)(x s

()()x e x y c ∧

∧+=()∧

x e

(34)

由于)),((mod 0)()()(x g x g x a x c ==所以 ))()(mod ()(x g x e x s = (35) 由此可见,0)(≠x s 则一定有差错产生,或说满 足0))()(mod (≠x g x e 的差错图样)(x e 产生,它满足0))()(mod (=x g x e 。

循环码的检错译码即是计算)(x s 并判断是否为0。

112210))

((mod )()(--++++==r r x s x s x s s x g x r x s

二、设计过程及运行

2.1 c语言的介绍

C语言是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出。1978后,C语言已先后被移植到大、中、小及微型机上。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画。具体应用比如单片机以及嵌入式系统开发。

2.1.1 C语言的发展

总的来说,C语言发展大概可以分为三个阶段:第一阶段从80年代到1995年。这一阶段C语言基本上是传统类型上的面向对象语言,并且凭借着接近C 语言的效率,在工业界使用的开发语言中占据了相当大份额;第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C受到了一定的冲击;第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C已经成为当今主流程序设计语言中最复杂的一员。

2.1.2 C语言特点

C是中级语言,它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。

C是结构式语言,结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

C 语言功能齐全,具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。另外C 语言也具有强大的图形功能,支持多种显示器和驱动器。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。

C 语言适用范围大,适合于多种操作系统,如Windows 、DOS 、UNIX 等等;也适用于多种机型。

C 语言对编写需要硬件进行操作的场合,明显优于其它解释型高级语言,有一些大型应用软件也是用C 语言编写的。

2.2 循环码编码的设计

由信息码构成信息多项式()011m x m x m k k ++=-- ,其中高幂次为k-1; 用n k

x

-乘以信息多项式()x m ,得到的n k

x

-()x m 最高幂次为n-1,该过程相当

于把信息码(1-k m ,2-k m ,……,1m ,0m )移位到了码字的前k 个信息位,其后是r 个全为零的监督位。

用()x g 除n k

x -()x m 得到余式()x r ,其次数必小于g(x)的次数,即小于(n-k ),

将此r(x)加于信息位后做监督位,即将r(x)与n k

x

-()x m 相加,得到的多项式必为

一码多项式。

根据上面的讨论,可得到在(7,3)循环码编码的程序流程图如图2.2-1 所示:

图4 编码程序框图

2.3循环码译码的设计

纠错码的译码是该编码能否得到实际应用的关键所在。译码器往往比编码较难实现,对于纠错能力强的纠错码更复杂。根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。

通常,将接收到的循环码组进行除法运算,如果除尽,则说明正确传输;如果未除尽,则在寄存器中的内容就是错误图样,根据错误图样可以确定一种逻辑,来确定差错的位置,从而达到纠错的目的。用于纠错目的的循环码的译码算法比较复杂,感兴趣的话可以参考一些参考书。而用于检错目的循环码,一般使用ARQ 通信方式。检测过程也是将接受到的码组进行除法运算,如果除尽,则说明传输无误;如果未除尽,则表明传输出现差错,要求发送端重发。用于这种目的的循环码经常被成为循环冗余校验码,即CRC 校验码。CRC 校验码由于编码电路、检错电路简单且易于实现,因此得到广泛的应用。在通过MODEM 传输文件的协议如ZMODEM 、XMODEM 协议中均用到了CRC 校验技术。在磁盘、光盘介质存储技术中也使用该方法。

当码字c 通过噪声信道传送时,会受到干扰而产生错误。如果信道产生的错误图样是e ,译码器收到的n ,重接受矢量是y,则表示为:e c y += (36)

上式也可以写成多项式形式:()()()x e x c x y += (37) 译码器的任务就是从()x y 中得到()∧

x e ,然后求的估值码字

()()()x e x y x c +=∧

(38) 并从中得到信息组()∧x m 。

循环码译码可按以下三个步骤进行: (1)由接收到的()x y 计算伴随式()x s ;

(2)根据伴随式()x s 找出对应的估值错误图样()∧

x e ;

(3)计算()()()x e x y x c +=∧

,得到估计码字()∧

x c 。若()()x c x c =∧

,则译码正确,否则,若()()x c x c ≠∧

,则译码错误。

由于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所示。

BCH (7,3)循环码错误图样表:

上式指出了系统循环码的译码方法:将收到的码字()x r 用()x g 去除,如果除尽则无错;否则有错。如果有错,可由余式()x s 一一找出对应图样,然后将错误图样()x

E 与()x R 模2和,即为所求码字()x C ,从而实现纠错目的。

根据前面的讨论,可得(7,3)循环码译码的程序流程图如图2.3-1所示

图 5 译码程序框图

2.4运行结果及仿真

2.4. 1.正确编码界面

图6 正确编码界面

在C环境下,输入“c”,再输入3位信息位,软件执行后输出7位循环编码。例如输入的是010,系统输出的是0101110.

2.4.2无差错编码仿真结果

图7 无差错编码仿真结果图

输入“e”,系统将进行译码操作,当输入的译码信息和编码结果一样时,系统就会把正确将信息位从该码组译出来。输入7位为1101000,与编码输入的3个信息位的结果相同,检验无错误。

2.4.3部分差错编码图

图8 一位差错编码图

当输入的译码信息与编码的结果错一位码时,系统就会检测出该错误并将其纠正过来,从而译出真确的信息位。 输入7位0101100,译码结果为010,译码信息与编码结果出现1位错误,系统自动将错误改正,输出为0101110。

2.5运行结果理论分析

由循环码性质可知,(7,3)循环码的最小码距d=4,可以检测出小于等于3位错误,纠正1位错误,编码效率为42.8%。设传输正确概率为p,据此设定信道模型存在如下关系:

传输正确概率为()n

p -1,信息传输错误概率为()n

e p p --=11,每帧仅发生

1位错误的概率为:

(39)

%100)1(11)1(%100p 21?----=????

? ??=n p n p np p R E E %100)1(11

)1(%100p 21?----=????? ??=n p n p np p R E E %100)1(11)1(%100p 21?----=????

? ??=n p n p np p R E E

表2 模拟结果

综合上表的模拟结果和理论结果可以看出,通信系统的帧传输具有以下性质:(1)在n一定的情况下,信息帧错误传输概率随着比特误码率的增加而增加,最坏情况下帧错误概率几乎为100%,此时系统失去通信能力。

(2)在典型的通信环境下,当比特误码率足够小时,绝大多数信息帧错误时每帧1位错误,因此纠正每帧错误有实用价值。

2.6软件可行性分析

由上述结果可知,该软件的操作方法为程序通过编译运行后,在C环境下,当输入c后按回车键,然后就会提示输入信息,当输入3位的信息位再按回车键,系统就会输出7位的循环编码。当输入d后按回车键,系统会进行译码的操作,当输入的译码信息和编码结果一样时,系统就会正确将信息位从该码组译出来。当输入的译码信息与编码的结果错一位码时,系统就会检测出该错误并将其纠正过来,从而译出真确的信息位。当输入e后按回车,就会退出系统。

由此可知,该系统能够实现(7,3)循环码的编码与在无差错和部分差错情况下的译码,因此该软件具有可行性。

参考文献

[1] 樊昌信著.通信原理[M].国防工业出版社,1999,10.

[2] 宋祖顺著.现代通信原理[M].电子工业出版社,2001,2

[3] 黄亚新,米央著.信息编码技术及其应用大全[M].电子工业出版社1994.8

[4] 孙丽华著.信息论与纠错编码[M].电子工业出版社,2005,3

[5] Proakis 著,张力军译.数字通信(第四版)[M].电子工业出版社,2004,7

[6] 潘新民著.计算机通信技术[M].电子工业出版社,2003,7

[7] 贾世楼著.信息论理论基础(第二版).哈尔滨工业大学出版社

基于MATLAB的循环码实验报告

课程名称:信息论与编码 课程设计题目:循环码的编码和译码程序设计指导教师: 系别:专业: 学号:姓名: 合作者 完成时间: 成绩:评阅人:

一、实验目的: 1、通过实验了解循环码的工作原理。 2、深刻理解RS 码构造、RS 编译码等相关概念和算法。 二、实验原理 1、RS 循环码编译码原理与特点 设C 使某 线性分组码的码字集合,如果对任C c c c C n n ∈=--),,,(021 ,它的循环 移位),,,(1032)1(---=n n n c c c c C 也属于C ,则称该 码为循环码。 该码在结构上有另外的限制,即一个码字任意循环移位的结果仍是一个有效码字。其特点是:(1)可以用反馈移位寄存器很容易实现编码和伴随式的计算;(2)由于循环码有很多固有的代数结构,从而可以找到各种简单使用的译码办法。 如果一个 线性码具有以下的属性,则称为循环码:如果n 元组 },,,{110-=n c c c c 是子空间S 的一个码字,则经过循环移位得到的},,,{201)1(--=n n c c c c 也 同样是S 中的一个码字;或者,一般来说,经过j 次循环移位后得到的 },,,,,,,{11011)(---+--=j n n j n j n j c c c c c c c 也是S 中的一个码字。 RS 码的编码系统是建立在比特组基础上的,即字节,而不是单个的0和1,因此它是非二进制BCH 码,这使得它处理突发错误的能力特别强。 码长:12-=m n 信息段:t n k 2-= (t 为纠错符号数) 监督段:k n t -=2 最小码段:12+=t d 最小距离为d 的本原RS 码的生成多项式为:g(x)=(x-α)(x -α2)(x -α3)…(x -αd -2) 信息元多项式为::m(x)=m0+m1x+m2x2+…+mk -1xk-1 循环码特点有: 1)循环码是线性分组码的一种,所以它具有线性分组的码的一般特性,且具有循环性,纠错能力强。 2)循环码是一种无权码,循环码编排的特点为相邻的两个数码之间符合卡诺中的邻接条件,即相邻数码间只有一位码元不同,因此它具有一个很好的优点是它满足邻接条件,没有瞬时错误(在数码变换过程中,在速度上会有快有慢,中间经过其他一些数码形式,即为瞬时错误)。 3)码字的循环特性,循环码中任一许用码经过牡环移位后,所得到的码组仍然是许用码组。

格雷码编译码电路

格雷码编 发布时间:2009-02-11 22:20:56 译码电路 技术类别: CPLD/FPGA 格雷码(Gray code),又叫循环二进制码或反射二进制码 在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,自然二进制码可以直接由数/模转换器转换成模拟信号,但某些情况,例如从十进制的3转换成4时二进制码的每一位都要变,使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它是一种数字排序系统,其中的所有相邻整数在它们的数字表示中只有一个数字不同。它在任意两个相邻的数之间转换时,只有一个数位发生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。另外由于最大数与最小数之间也仅一个数不同,故通常又叫格雷反射码或循环码。 一般的,普通二进制码与格雷码可以按以下方法互相转换: 二进制码->格雷码(编码):从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0); 格雷码-〉二进制码(解码):从左边第二位起,将每位与左边一位解码后的值异或,作为该位解码后的值(最左边一位依然不变). 数学(计算机)描述: 原码:p[0~n];格雷码:c[0~n](n∈N);编码:c=G(p);解码:p=F(c);书写时从左向右标号依次减小. 编码:c=p XOR p[i+1](i∈N,0≤i≤n-1),c[n]=p[n]; 解码:p[n]=c[n],p=c XOR p[i+1](i∈N,0≤i≤n-1). Gray Code是由贝尔实验室的Frank Gray在20世纪40年代提出的(是1880年由法国工程师Jean-Maurice-Emlle Baudot发明的),用来在使用PCM(Pusle Code Modulation)方法传送讯号时避免出错,并于1953年3月17日取得美国专利。由定义可知,Gray Code的编码方式不是唯一的,这里讨论的是最常用的一种。 格雷码 (英文:Gray Code, Grey Code,又称作葛莱码,二进制循环码)是1880年由法国工程师Jean-Maurice-Emlle Baudot发明的一种编码,是一种绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠性编码,是一种错误最小化的编码方式,因为,虽然自然二进制码可以直接由数/模转换器转换成模拟信号,但在某些情况,例如从十进制的3转换为4时二进制码的每一位都要变,能使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它在相邻位间转换时,只有一位产生变化。它大大地减少了由一个状态到下一个状态时逻辑的混淆。由于这种编码相邻的两个码组之间只有一位不同,因而在用于风向的转角位移量-数字量的转换中,当风向的转角位移量发生微小变化(而可能引起数字量发生变化时,格雷码仅改变一位,这样与其它编码同时改变两位或多位的情况相比更为可靠,即可减少出错的可能性。 但格雷码不是权重码,每一位码没有确定的大小,不能直接进行比较大小和算术运算,也不能直接转换成液位信号,要经过一次码变换,变成自然二进制码,再由上位机读取。解码的方法是用…0?和采集来的4位格雷码的最高位(第4位)异或,结果保留到4位,再将异或的值和下一位(第3位)相异或,结果保留到3位,再将相异或的值和下一位(第2位)异或,结果保留到2位,依次异或,直到最低位,依次异或转换后的值(二进制数)就是格雷码转换后自然码的值. 异或:异或则是按位“异或”,相同为“0”,相异为“1”。例: 10011000 异或01100001 结果: 11111001 举例: 如果采集器器采到了格雷码:1010 就要将它变为自然二进制: 0 与第四位 1 进行异或结果为 1 上面结果1与第三位0异或结果为 1 上面结果1与第二位1异或结果为0

8421码到余三循环码的转换电路仿真课设报告

东北大学秦皇岛分校计算机与通信工程院 电子线路课程设计 具有数显的数码转换电路(8421码—余3循环码)

课程设计任务书 专业:通信工程学号:4101015 学生姓名:吴玉新 设计题目:具有数显的码制转换电路8421码—余3循环码一、设计实验条件 高频实验室 二、设计任务及要求 1. 要求输入为8421码。输出为余三循环码 2. 输出要具有数显功能 三、设计报告的内容 1.前言 数字电路课程设计是继“数字电路”课后开出的实践环节课程其目的是训练学生综合运用学过的数字电路的基本知识独立设计比较复杂的数字电路能力。设计建立在硬件和软件两个平台的基础上。硬件平台是可编程逻辑器件所选器件可保存在一片芯片上设计出题目要求的数字电路。软件平台是multisim通过课程设计学生要掌握使用EDA电子设计自动化工具设计数字电路的方法包括设计输入便宜软件仿真下载及硬件仿真等全过程。数字电路课程设计在于更好的让学生掌握这门课程并且了解其实用性知道该门课程和我们的生活息息相关并且培养学生的动手能力让学生对该门课程产生浓厚的兴趣。 2.设计内容及其分析 (1)方案一 1.设计思路 设计8421转余三循环码主要是考虑怎样找到二者之间的联系。列出真值表后,根据值为1的那些项列出表达式,用最小项之和表示。然后根据卡诺图进行

化简,得出最简表达式。最后根据表达式,在Multisim上画图仿真,用灯的灭(表示0)和亮(表示1)来表示码制的转换。即可得到8421码对余三循环码的转换。 真值表: 表1 8421转余三循环码真值表 根据真值表得出表达式: X4=A——C X3=B——C——+ A——BCD+A——B——D—— X2=A B——C——D——+A——B+A——C+A——D X1=A B——C——+A——BD+A——BC 根据表达式画出逻辑电路图:

实验6 BCH循环码的编码与译码的matlab实现

实验6 BCH循环码的编码与译码 一、实验内容 用VC或Matlab软件编写循环BCH码的编码与译码程序。利用程序对教科书的例题做一个测试。 二、实验环境 1.计算机 2.Windows 2000 或以上 3.Microsoft Visual C++ 6.0 或以上 4.Matlab 6.0或以上 三、实验目的 1.通过BCH循环码的编码与译码程序的编写,彻底了解并掌握循环BCH的编码与译码原理 2.通过循环BCH码的编码与译码程序的编写,提高编程能力。 四、实验要求 1.提前预习实验,认真阅读实验原理以及相应的参考书。 2.对不同信道的进行误码率分析。特别是对称信道,画出误码性能图。即信道误码率与循环汉明码 之间的关系。 3.认真填写实验报告。 五、实验原理 1.循环BCH的编码与译码原理(略) 2.循环BCH的程序实现。 六、实验步骤 bch_en_decode.m文件 function bch_en_decode() code=bch155 code=code+randerr(5,15,1:3); code=rem(code,2); code=gf(code) %随机产生1-3位错误 decode=debch155(code) end function decode=debch155(code) code=gf(code); M=4; code = gf(code.x,M); [m , n]=size(code);decode=[]; code1=[]; for i=1:m ;code1=code(i,:); M=code1.m;T2=6;N=15; S = code1* ((gf(2,M,code1.prim_poly)).^([N-1:-1:0]'*([1:T2]))); LambdaX = gf([1 zeros(1,T2)],M,code1.prim_poly);

7,3循环码

****************** 实践教学 ******************* 兰州理工大学 计算机与通信学院 2014年秋季学期 计算机通信课程设计 题目:(7,3)循环码编译码软件设计 专业班级: 姓名: 学号: 指导教师: 成绩:

摘要 随着计算机通信的日益发展,传输数据的场合越来越多。串行数据的差错检验是保证数据传输正确的必要手段,而循环码是差错码中最常用的一种编码。 循环码是线性分组码中最重要的一种子类,它除了具有分组码的线性外,还具有循环性,其码字结构一般用符号(n,k)表示,其中,n是该码组中的码元数,k是信息码元位数,r=n-k是监督码元位数。循环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,能简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。已有循环码编译码系统大多以标准逻辑器件(如中小规模TTL系列、CMOS系列)按传统数字系统设计方法设计而成,其主要缺点是逻辑规模小、功耗大、可靠性低。随着大规模、超大规模集成电路的发展,以及电子设计自动化水平的提高,这种制约正在被逐渐消除。 本文通过C 语言平台运行所编写的程序,观察了在输入信息码情况下输出对应的编码结果以及相反的译码功能。通过多组的对比验证了该(7,4)循环码的编译码程序的正确性。最后,在程序运行的过程中进步分析循环码的编译码原理,并通过比较仿真模型与理论计算的性能,证明了仿真模型的可行性。 关键词:循环码;编码;译码;程序仿真

目录 前言 (1) 1、目的及意义 (2) 2、设计原理 (3) 2.1循环码的介绍 (3) 2.1.1循环码的定义 (3) 2.1.2循环码的特点 (3) 2.1.3循环码的多项式表示 (4) 2.1.4(n,k)循环码的生成多项式 (4) 2.1.5循环码的生成矩阵和一致校验矩阵 (6) 2.2循环码编码原理 (8) 2.2.1多项式除法电路 (8) 2.3循环码译码原理 (9) 3、设计结果及分析 (11) 3.1程序运行结果 (11) 3.2运行结果理论分析 (14) 3.3软件可行性分析 (15) 4、总结 (16) 附录 (17) 参考文献 (22)

循环码编译码实验报告

Harbin Institute of Technology 信息论与编码报告 题目:循环码编译码实验 院(系)电子与信息工程学院 班级通信1班 学生 学号 序号 哈尔滨工业大学

循环码编译码实验 1 设计内容 循环码是线性分组码中最重要的一类码,它的结构完全建立在有限域多项式的基础上,它具有两个基本特点:一是编码电路与译码电路非常简单,易于实现;二是其代数性质好,分析方便,有一定的成熟的译码方法。 一个(n ,k )线性分组码C ,如果码组中的一个码字的循环移位也是这个码组中的一个码字,则称C 为循环码。 本实验主要完成以下四项内容: (1)利用(7,4)系统循环码的生成多项式为:3()1g x x x =++,请设计该循环码的编码器。 (2)随机产生重量为0或1的八种错误图样中的一种,得到实际接收码字。 (3)根据接收到的码字进行译码,译码方式分为校验子译码和梅吉特译码两种。 (4)对于在BSC 信道传输时的情形进行讨论,验证(7,4)系统循环码的纠错能力。 2 编程环境 本实验采用Matlab 作为编程工具,所有代码均在Matlab 软件中运行,此软件功能强大,应用广泛,在此不再赘述。 3 各模块设计 3.1 编码器模块 利用(7,4)系统循环码的生成多项式为:3()1g x x x =++,请设计该循环码的编码器。流程图为:

图1 (7,4)循环码编码流程图图2 4位信息码元编码流程图 在学生设计的演示工具中输入的信息码元可以为任意多个,系统自动按每4个连续的码字一组进行编码,当输入的信息码元不是4的倍数时,自动补零到与信息码元长度最接近的4的倍数。译码时也是按照每7个连续的码字一组进行译码。但是为了流程图的清晰明了,在本文的流程图除流程图1以外,其余均按一个循环码码字(即7位)来描述。 编码器模块源程序如下: %%%函数功能:(7,4)系统循环码编码器 %%%编程时间:2013-11-29 %%%该系统循环码编码器的生成多项式是g(x) = x^3 + x + 1; % %%系统循环码编码的原理是,首先用x^r乘以信息码字多项式m(x),这里r = 3;然后用x^r*m(x)除以生成多项式g(x), % %%得余式r(x);最后得系统循环码多项式c(x) = x^r*m(x) + r(x) function [code_out,code_in_L] = coder(code_in) %%code_in:输入信息码字 %%code_out:输出编码后的码字 %%L:输入的信息码元的长度 n=7;%%每个码字长度 k=4;%%每个码字中信息码元长度 code_in_L=length(code_in);

实验6 循环码的软件编、译码实验

实验六循环码的软件编、译码实验 一、实验目的 (1)通过实验了解循环码的工作原理。 (2)了解生成多项式g(x)与编码、译码的关系。 (3)了解码距d与纠、检错能力之间的关系。 (4)分析(7.3)循环码的纠错能力。 二、实验要求 用你熟悉的某种计算机高级语言或单片机汇编语言,编制一(7,3)循环码的编、译码程序,并改变接受序列R(x)和错误图样E(x),考查纠错能力情况。 设(7,3)循环码的生成多项式为:g(x)=x4+x3+x2+1 对应(11101)(1)按编、译码计算程序框图编写编、译码程序 (2)计算出所有的码字集合,可纠的错误图样E(x)表和对应的错误伴随式表。 (3)考查和分析该码检、纠一、二位错误的能力情况。 (4)整理好所有的程序清单,变量名尽量用程序框图所给名称,并作注释。 (5) 出示软件报告. 三、实验设计原理 循环码是一类很重要的线性分组码纠错码类,循环码的主要优点是编、译码器较简单,编码和译码能用同样的反馈移存器重构,在多余度相同的条件下检测能力较强,不检测的错误概率随多余度增加按指数下降。另外由于循环码具有特殊的代数结构,使得循环码的编、译码电路易于在微机上通过算法软件实现。 1、循环码编码原理 设有一(n,k)循环码,码字C=[C n-1…C r C r-1…C0],其中r=n-k。码字多项式为: C (x ) = C n-1x n-1+ C n-2x n-2+… +C1x+C0。 码字的生成多项式为: g(x)= g r-1x r-1+g r-2x r-2+…+g1x+g0 待编码的信息多项式为:m(x)=m K-1x K-1+…+m0 x n-k.m(x)=C n-1x n-1+…+C n-K x n-K

循环码编译码matlab程序

循环码编译码matlab程序 循环码编码程序 function [ C ] = cyclic_encoder( Si ) %C为循环编码的输出编码结果 %对x^8+1进行模2因式分解得到:x^8+1=(x^3+x^2+x+1)*(x^5+x^4+x+1) y=size(Si,2);%y表示Si的列数,即输入码元的个数 M=ceil(y/5);%将信息码元分成M帧,一帧5个信息码元 n=8;%循环编码的一帧码长 k=5;%信息位的个数 r=n-k;%监督位的个数 gx=[1,1,1,1];%(8,5)循环码的生成多项式g(x)=x^3+x^2+x+1 Ai=zeros(1,8*M);%Ai用来存放所输入的码元经过循环编码后的码字 Axi=zeros(1,8);%Axi用来表示循环编码后的一帧的编码输出码字 mi=zeros(1,5);%mi用来存放每一帧的信息码元 for i=1:M for j=1:5 mi(j)=Si(j+(i-1)*5); end Axi(4:8)=mi(1:5); Axi=circshift(Axi',-r)';%实现(x^(n-k))*m(x),其中m(x)的系数由mi决定 [qx,rx]=deconv(Axi,gx);%实现((x^(n-k))*m(x))/g(x),得到商q(x)和余数r(x) Axi=Axi+rx;%实现Axi(x)=Axi(x)+r(x),得到的Axi就是循环编码的编码输出码字 Ai(8*i-4:8*i)=Axi(1:5); Ai(8*i-7:8*i-5)=Axi(6:8); end %for循环是为了实现模2相加,使循环编码的输出码字Ai中只有0,1 for i=1:8*M if rem(abs(Ai(i)),2)==0 Ai(i)=0; else Ai(i)=1; end end C=Ai;%循环编码的输出码字C=Ai end

循环码的编码方法研究

摘要本文对循环码的编码方法进行了深入的分析和探讨,循环码具有很高的可靠性,在通信、军事等领域应用非常广泛。关键词循环码编码中图分类号:G202文献标识码:A 0 引言循环码是线性分组码最重要的子集。它除了具有线性分组码的一般性质外,还有许多特殊的性质,这些性质有助于按照要求的纠错能力系统地构造这类码,并且简化译码算法。循环码还有易于实现的特点,很容易用带反馈的移位寄存器实现其硬件。正是由于循环码具有码的代数结构清晰、检纠错能力强、编译码易于实现,具有很高的可靠性等特点,因此在通信、军事等领域应用非常广泛。 1 循环码的相关概念 1.1 循环码的特性表1给出了(7,3)循环码的所有码字,我们可以直观的看出循环码具有如下特性:(1)封闭性。(线性性):任何许用码组的线性和还是许用码组。(2)循环性:任何许用的码组循环移位后的码组还是许用码组。表1 (7,3)循环码 1.2 循环码的码多项式用码多项式来表示来表示循环码,可以方便的利用代数理论对其进行研究。若许用码字为C = (,,…,):,码多项式可表示为:C(x) = … c1x c0其中:对于二元码组,多项式的每个系数是0或者1; x仅是码元位置的标志,并不关心x的取值。利用码多项式可以方便的表示循环移位特性。若C(x) 是一个长为n的许用码字,则xi C(x) (左乘xi)在按模xn 1运算下,亦是一个许用码字,也就是:xiC(x) = Ci(x) (模xn 1),正是C(x) 代表的码组向左循环移位次的结果。 1.3 循环码的生成多项式和生成矩阵循环码的生成多项式g(x)是一个常数项为1,且能除尽xn 1的r = n - k次多项式;循环码中其它码多项式都是g(x)的倍式。由生成多项式可以表示出生成矩阵G(x)为: 1.4 循环码的监督多项式和监督矩阵利用循环码的特点来确定监督矩阵H, 由于循环码中是的因式,因此可令:h(x) == xk hk-1xk-1 … h1x 1,这里称为监督多项式。与G(x)相对应,监督矩阵表示为: 其中:h*(x)是h(x)逆多项式,h*(x) = xk h1xk-1 h2xk-2 … hk-1x 1。 2 循环码编码的具体实现方法 2.1 利用生成矩阵编码 2.1.1 求解生成多项式根据g(x)的特性,g(x)是xn 1的一个r次因式。因此,先对xn 1进行因式分解,找到它的r次因式。以(7,3)循环码为例进行分析: 第一步:对x7 1进行因式分解得:x7 1 = (x 1)(x3 x2 1)(x3 x 1) 第二步:构造生成多项式g(x),即找r = n - k = 4次因子。不难看出,这样的因子有两个,即: (x 1)·(x3 x2 1) = x4 x2 x 1 (x 1)·(x3 x 1) = x4 x3 x2 1 2.1.2 编码由g(x)得到生成矩阵为: 循环码是线性码的一种,根据线性码编码的特点,生成矩阵确定,码组也就确定了。 C = mG 其中,C是编码之后的码字,m是信息码元序列,G是生成矩阵。 2.2 利用监督矩阵编码由h*(x)得到监督矩阵为: 根据线性码编码的特点,监督矩阵确定,码组也就确定了。 HCT = 0其中,C是编码之后的码字,H是监督矩阵。 2.3 循环码的系统码编码方法设要产生(n,k)循环码,m(x)表示信息多项式,编码步骤如下: (1)用xn-k乘m(x)。根据码多项式的特点,左乘xn-k实际上是把信息位左移位(n-k),即在信息码后加上(n-k)个“0”。例如,信息码为110,它相当于m(x) = x2 x。当n-k = 7-3 = 4时, xn-k·m(x) = x6 x5,它相当于1100000。而希望的到得系统循环码多项式应当是C(x) = xn-k·m(x) r(x) (2)求r(x)。由于循环码多项式C(x)都可以被g(x)整除,也就是: == (3)求C(x),C(x) = xn-k·m(x) r(x) 例如,对于(7,3)循环码,若选用g(x) = x4 x2 x 1,信息码110时,则: = ,求得r(x) = x2 1,这时的编码输出为:1100101。 3 结论本文深入系统地分析了循环码的编码技术。随着数字技术的高速发展,循环码纠错技术已经广泛应用于各种通信系统中。其编码和译码都可以通过简单的反馈移位寄存器来完成,实现简单,纠错能力强 ,可以降低误码率,保证数据传输的可靠性,大大提高通信质量。

循环码产生电路设计

循环码产生电路设计 1.引言 在线性分组码中,有一种重要的码称为循环码。循环码是线性分组码中最重要的一种子类,是目前研究的比较成熟的一类码。循环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,并且简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。循环码还有易于实现的特点,很容易用带反馈的移位寄存器实现其硬件。循环码是在严密的代数学理论基础上建立起来的。这种编码和解码设备都不太复杂,而且纠错的能力较强。循环码除了具有线性码的一般性质外,还具有循环性。循环性是指任一码组循环一位以后,认为该码中的一个码组。 正是由于循环码具有码的代数结构清晰、性能较好、编译码简单和易于实现的特点,因此在目前的计算机纠错系统中所使用的线性分组码几乎都是循环码。它不但可以纠正独立的随机错误,也可用于检错突发错误并且非常有效。(n,k)循环码能够检测长为n-k 或更短的任何突发错误, 包括首尾相接突发错误。n-k+1位长的突发错误不能被检出所占的概率最大是错误!未找到引用源。,如果l>n-k+1,则不能检测长为l 的突发错误所占据的比值最大为)(2k n --。 2.设计要求 (1)用simulink 对系统建模。 (2)写出其生成多式。 (3)对所设计的系统性能进行仿真分析。 (4)对其应用举例阐述。 3.设计原理 3.1 循环码多项式 为了利用代数理论研究循环码,可以将码组用代数多项是来表示,这个多项式被称为码多项式,对于许用循环码A =(0121a a a a n n ?-- ),可以将它的码多项式表示为:

T(x)=012211a x a x a x a x a i i n n n n ++?++?++----对于二进制码组,多项式的每个系数不是0就是1,x 仅是码元位置的标志。因此,这里并不关心x 的取值。 3.2 循环码的生成多项式和生成矩阵 (全0码字除外)称为生成多项式,用g (x )表示。可以证明生成多项式g (x )具有以下特性: 1)g (x )是一个常数项为1的r=n-k 次多项式; 2)g (x )是1+n x 的一个因式; 3)该循环码中其它码多项式都是g (x )的倍式。 为了保证构成的生成矩阵G 的各行线性不相关,通常用g (x )来构造生成矩阵,这时,生成矩阵G 可以表示为: ?????? ?? ?????????????=--)()()()()(21x g x g x x g x x g x x G k k 其中011)(a x a x a x x g r r r ++++=- ,因此,一旦生成多项式g (x )确定以后,该循环码的生成矩阵就可以确定,进而该循环码的所有码字就可以确定。 3.3 循环码的编、译码方法 在编码时,首先需要根据给定循环码的参数确定生成多项式g (x ),也就是从1+n x 的因子中选一个(n-k )次多项式作为g (x );然后,利用循环码的编码特点,即所有循环码多项式A (x )都可以被g (x )整除,来定义生成多项式g (x )。 根据上述原理可以得到一个较简单的系统循环码编码方法:设要产生(n,k )循环码,m (x )表示信息多项式,则其次数必小于k ,而)(x m x k n ?-的次数必小于n ,用)(x m x k n ?-除以g (x ),可得余数r (x ),r (x )的次数必小于(n-k ),将r (x )加到信息位后作监督位,就得到了系统循环码。下面就将以上各步处理加以解释。 (1)用)(x m x k n ?-。这一运算实际上是把信息码后附加上(n-k )个“0”。例如,信息码为110,它相当于m (x )=2x +x 。当n-k =7-3=4时,)(x m x k n ?-=6x +5x ,它相当于1100000。

简述简易循环码编译码器设计

简述简易循环码编译码器设计 摘要通信系统可靠性要求系统可靠地传输消息,而信道编码旨在解决可靠性问题。循环码属于线性代码,具有严密的代数理论基础,具有良好的错误检测和纠正功能。循环码编译电路大多用移位寄存器和模2构成的线性时序网络来完成。基本电路简单,容易实现,但在体积和功能扩展上受到了限制而不能发挥更大的作用。本设计充分运用单片机的软件功能进行编码及译码纠错,可有效克服来自通信信道的干扰,保证数据通信的可靠及系统的稳定,使误码率大幅度的降低。只要改变软件算法,即可适用于不同微机、不同字长的需要。 关键词信道编码;循环码;单片机;编译码;可靠 前言 信息在有线或无线信道传输时,受外界干扰或信噪比恶化的影响,信息的传递容易发生错误,需要有效检测出错状况,进行纠错,保证信息传输的质量。前向纠错编码技术在发送端引入冗余可以实现检错和纠错,一种广泛应用前向纠错码循环码它是线性分组码中最重要的一种类别码,不光具备分组码的线性性质,还具有自身的循环性[1]。现阶段国内外基于循环码编译码方法的研究都取得了很大的进展,例如循环码在卫星通信与移动通信方面中起到很重要的作用。采用单片机编程的方法可以实现循环码编译码,成本小,通过软件升级可以适配多种码型。 1 循环码编译码原理 1.1 循环码特点 循环码隶属于线性代码,具有嚴密的代数理论基础,良好的错误检测和纠正功能,具有如下特点[2]:循环码具有线性码的封闭性,意味着线性码中的任何两个码组总和仍为这种码中的一个码组。两个信息码组之间的长度差一定是后一个信息码组的权重,码的最小距离等同于码的最小权重。循环码还具有循环的性质,任一码组不管是从按左到右还是从右到左方向循环移位,仍为该码中的一个码组。 1.2 编码原理 设信息元多项式表达式: 编码步骤可以归纳如下: ⑴用信息集合m(x)乘以信息集得到,这种运算操作其实就是在信息码后添加上(n-k)个“0”。

循环码(7,3)码

循环码(7,3)码 (生成多项式1)(234 +++=x x x x g ) 摘要:本报告详细给出了循环码的定义以及由生成多项式求解生成 矩阵和系统生成矩阵的过程,并在Matlab 环境下写出了循 环码的编码器和解码器代码,实现了编码和译码功能。分析和讨论了 此码发现错误、纠正错误的能力,并讨论了其与线性分组码、Hamming 码等信道编码的区别与联系。 关键字:循环码 编码 译码 检错 纠错 Matlab 信道编码:信道编码又称差错控制编码或纠错编码,它是提高信 息传输可靠性的有效方法之一。一类一类信道编码是对传输信号的码型进行变换,使之更适合于信道特性或满足接收端对恢复信号的要求,从而减少信息的损失;另一类信道编码是在信息序列中人为的增加冗余位,使之具有相关特性,在接收端利用相关性进行检错或纠错,从而达到可靠通信的目的。 1.1、循环码 循环码是线性分组码中一个重要的分支。它的检、纠错能力较强,编码和译码设备并不复杂,而且性能较好,不仅能纠随机错误,也能纠突发错误。 循环码是目前研究得最成熟的一类码,并且有严密的代数理论 基础,故有许多特殊的代数性质,这些性质有助于按所要求的纠错能

力系统地构造这类码,且易于实现,所以循环码受到人们的高度重视,在FEC 系统中得到了广泛应用。 1.1.1、循环码定义 定义:一个线性分组码,若具有下列特性,则称为循环码。设码字 )(0121c c c c c n n ???=-- (1.1.1) 若将码元左移一位,得 () )(10121--???=n n c c c c c (1.1.2) () 1c 也是一个码字。 由于(k n ,)线性分组码是n 维线性空间n V 中的一个k 维子空间,因此()k n ,循环码是n 维线性空间n V 中的一个k 维循环子空间。 注意:循环码并非由一个码字的全部循环移位构成。 1.1.2、循环码的特点 循环码有两个数学特征: (1)线性分组码的封闭型; (2)循环性,即任一许用码组经过循环移位后所得到的码组仍为该许用码组集合中的一个码组。 即若()0121a a a a n n ???--为一循环码组,则 ()1032---???n n n a a a a 、()2143----???n n n n a a a a 、……还 是许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍

(7,4)循环码的编码和译码

(7,4)循环码的编码译码 编码的实验原理: 根据循环码的代数性质建立系统编码的过程,可以把消息矢量用如下多项式表示: 要编码成系统循环码形式,把消息比特移入码字寄存器的最右边k 位,而把监督比特加在最左边的n-k 个中,则要用k n x -乘以m(x)得到 k n x - m(x)= k n x - m(x)= q(x) g(x)+ p(x),其中p(x)可以表示为 p(x)= ,则p(x)+ k n x - m(x) = + 另U(x)= p(x)+ k n x - m(x),则U=(0p ,1p ,2p ,·,1--k n p ,0m ,1m ,·,1-k m )。 本实验根据以上原理,用matlab 实现书上例6.8系统形式的循 环码,生成多项式为g(x)= (7,4)循环码的编码的程序如下:clear; clc; a=[1 0 1 1]; %高次项系数在前的生成多项式 Gx=[1 0 1 1]; %将数组a 的高位依次放在数组Data 的低位 Data=zeros(1,7); Data(1)=a(4); Data(2)=a(3); Data(3)=a(2); Data(4)=a(1); %Data 除以Gx 得到余数Rx [Qx,Rx]=deconv(Data,Gx); 12211...)(m x m x m x m x m k k k k ++++=----k n k n n k n k x m x m x m x m -+-----++++0112211 (011) 1...p x p x p k n k n +++----0 111...p x p x p k n k n +++----k n k n n k n k x m x m x m x m -+-----++++0112211 (3) 1x x ++

循环码产生电路设计

课程设计 班 级: 通信09—4 姓 名: 宋蕾 学 号: 0906030421 指导教师: 刘玉珍 成 绩: 原理 数字 课程设计报告 电子与信息工程学院 通信工程系

循环码产生电路设计 1. 引言 在线性分组码中,有一种重要的码称为循环码(cycil code)。循环码是在严密的代数学理论基础上建立起来的。这种编码和解码设备都不太复杂,而且检(纠)错的能力较强。循环码是线性分组码中最重要的一种子类,是目前研究得比较成熟的一类码。循环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,并且简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。循环码还有易于实现的特点,很容易用带反馈的移位寄存器实现其硬件。 simulink 是matlab 中的一种可视化仿真工具, 是一种基于matlab 的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。simulink 可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。为了创建动态系统模型,Simulink 提供了一个建立模型方块图的图形用户接口(GUI) ,这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。 2. 设计要求 (1)用simulink 对系统建模。 (2)写出其生成多项式(自定)。 (3)对所设计的系统性能进行仿真分析。 (4)对其应用举例阐述。 3. 设计原理 3.1 循环码的循环性 循环码除了具有线性码的一般性质外,还具有循环性。循环性是指任一码组循环一位(即将最右端的一个码元移至左端,或反之)以后,仍为该码中的一个码组。在表1中给出一种(7,3)循环码的全部码组。由此表可以直观看出这种码的循环型。例如,表中的第2码组向右移一位即得到第5码组;第6码组向右移一位即得到第7码组。一般说来,若(0121a a a a n n ?-- )是循环码的一个码组,则循环移位后的码组:

卷积码实验报告

卷积码实验报告 篇一:卷积码实验报告 实验五信道编解码() 本章目标 掌握数字频带传输系统调制解调的仿真过程掌握数字频带传输系统误码率仿真分析方法 5.1实验目的 1. 使用MATLAB进行卷积码编/译码器的仿真。 2. 熟练掌握MATLAB软件、语句。 3. 了解卷积码编/译码器的原理、知识。 5.2实验要求 1. 编写源程序、准备测试数据。 2. 在 MATLAB环境下完成程序的编辑、编译、运行,获得程序结果。如果结果有误, 应找出原因,并设法更正之。 5.3 实验原理 (一)卷积码编码器 1. 连接表示 卷积码由3个整数n,k,N描述。k/n也表示编码效率(每编码比特所含的信 N称为约束长度,息量);但n与线性分组码中的含义不同,不再表示分组或码子长度; 表示在编码移位寄存器中k元组的级数。卷积码不同于分组码的一个重要特征就是编码器的记忆性,即卷积码编码过程中产生的n元组,不仅是当前输入k元组的函数,而且

还是前面N?1个输入k元组的函数。实际情况下,n和k经常取较小的值,而通过N的变化来控制编码的能力和复杂性。 下面以图1中的卷积码编码器为例介绍卷积码编码器。该图表示一个约束长度 K?3的(2,1)卷积译码器,模2加法器的数目为n?2,因此,编码效率k/n?1/2。 在每个输入比特时间上,1位信息比特移入寄存器最左端的一级,同时将寄存器中原有比特均右移一级,接着便交替采样两个模2加法器,得到的码元就是与该输入比特相对应的分支字。对每一个输入信号比特都重复上述采样过程。 图1卷积码编码器(编码效率1/2,K?3) 用于描述反馈移位寄存器实现循环码时所使用的生成多项式也可用户描述卷积码编码器的连接。应用n个生成多项式描述编码的移位寄存器与模2加法器的连接方式,n个生成多项式分别对应n个模2加法器,每个生成多项式不超过K?1阶。仍以图 1中的编码器为例,用生成多项式g1(X)代表上方连接,g2(X)代表下方连接,则有: g1(X)?1?X?X2g2(X)?1?X 2 多项式中的最低阶项对应于寄存器的输入级。输出序

循环码

实验、循环码编译码系统 一、 实验目的: 1、熟悉循环码的编译码原理; 2、掌握Quartus Ⅱ开发软件的运用,在该软件下熟练的运用多种输入方式完成各种电路设计的要求; 3、初步掌握VHDL 语言,能够运用该语言编写简单的程序,完成设计要求; 4、熟悉对PLD 的下载和仿真,学会观察测试结果的正确性; 5、学会运用各方面知识,设计并实现一个系统。 二、 实验要求: 使用Quartus Ⅱ软件,用m 序列发生器作为信号源设计循环码编译码,速率可自定,并在实验箱上调试出编码和译码波形,比较信号源和译码后的信号波形。 三、实验设备: Quartus II 软件、Modelsim 软件、FPGA 实验箱、微机1台、示波器1台 四、实验原理: 1、 循环码的编码 循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。若(1n a - 2n a -…… 1a 0a )为一循环码组,则(2n a - 3n a -……0a 1n a -)、(3n a - 4n a -……1n a - 2n a -)、……还是许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。表1-2给出了一种(7,3)循环码的全部码字。 可以将循环码码组用代数多项是来表示,这个多项式被称为码多项式,对于表1-2中的任一码组可以表示为: 654326543210()A x a x a x a x a x a x a x a =++++++ (1-4) 表1-2一种(7,3)循环码的全部码字

在码多项式运算中采用按模运算法则。若一任意多项式F (x )被一个n 次多项式N (x )除,得到商式Q (x )和一个次数小于n 的余式R (x ),也就是: ()() ()()() F x R x Q x N x N x =+ (1-5) 则可以写为:F (x )≡R (x )(模N (x ))。 这时,码多项式系数仍按模2运算,即只取值0和1,假设:计算x 4+x 2+1除以x 3+1的值可得: 42233 11 11 x x x x x x x ++++=+++ (1-6) 循环码的生成多项式和生成矩阵:(全0码字除外)称为生成多项式,用g (x )表示。 可以证明生成多项式g (x )具有以下特性: (1)g (x )是一个常数项为1的r=n-k 次多项式; (2)g (x )是1n x +的一个因式; (3)该循环码中其它码多项式都是g (x )的倍式。 一旦生成多项式g (x )确定以后,该循环码的生成矩阵就可以确定,进而该循环码的所有码字就可以确定。 以表1-2的(7,3)循环码为例,来构造它的生成矩阵和生成多项式,这个循环码主要参数为,n =7,k =3,r =4。从表中可以看到,其生成多项式可以用第1码字构造: 421()()1g x A x x x x ==+++ (1-7) 2643253242()()()()1x g x x x x x G x xg x x x x x g x x x x ???? +++???? ==+++????????+++???? (1-8) 一个较简单的系统循环码编码方法:设要产生(n ,,k )循环码,m (x )表示信息多项式,则其次数必小于k ,而()n k x m x -?的次数必小于n ,用()n k x m x -?除以g (x ), 可得余数r (x ),r (x )的次数必小于(n-k ),将r (x )加到信息位后作监督位,就得到了系统 循环码。下面就将以上各步处理加以解释。 (1)用n k x -这一运算实际上是把信息码后附加上(n-k )个“0”。例如,信息码为110, 它相当于2 ()m x x x =+。当n-k =7-3=4时,65()n k x m x x x -?=+,它相当于1100000。而希望的到得系统循环码多项式应当是()()()n k A x x m x r x -=?+。 (2)求r (x )。由于循环码多项式A (x )都可以被g (x )整除,也就是:

循环码产生电路设计-参考模板

课程设计 班级:通信09—4 姓名:宋蕾 学号:0906030421 指导教师:刘玉珍 成绩: 电子与信息工程学院 通信工程系

循环码产生电路设计 1. 引言 在线性分组码中,有一种重要的码称为循环码(cycil code)。循环码是在严密的代数学理论基础上建立起来的。这种编码和解码设备都不太复杂,而且检(纠)错的能力较强。循环码是线性分组码中最重要的一种子类,是目前研究得比较成熟的一类码。循环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,并且简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。循环码还有易于实现的特点,很容易用带反馈的移位寄存器实现其硬件。 simulink 是matlab 中的一种可视化仿真工具, 是一种基于matlab 的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。simulink 可以用连续采样时间、离散采样时间或两种混合的采样时间进行建模,它也支持多速率系统,也就是系统中的不同部分具有不同的采样速率。为了创建动态系统模型,Simulink 提供了一个建立模型方块图的图形用户接口(GUI) ,这个创建过程只需单击和拖动鼠标操作就能完成,它提供了一种更快捷、直接明了的方式,而且用户可以立即看到系统的仿真结果。 2. 设计要求 (1)用simulink 对系统建模。 (2)写出其生成多项式(自定)。 (3)对所设计的系统性能进行仿真分析。 (4)对其应用举例阐述。 3. 设计原理 3.1 循环码的循环性 循环码除了具有线性码的一般性质外,还具有循环性。循环性是指任一码组循环一位(即将最右端的一个码元移至左端,或反之)以后,仍为该码中的一个码组。在表1中给出一种(7,3)循环码的全部码组。由此表可以直观看出这种码的循环型。例如,表中的第2码组向右移一位即得到第5码组;第6码组向右移一位即得到第7码组。一般说来,若(0121a a a a n n ?-- )是循环码的一个码组,则循环移位后的码组:

相关主题
文本预览
相关文档 最新文档