文档库 最新最全的文档下载
当前位置:文档库 › 循环码的编译码软件设计

循环码的编译码软件设计

循环码的编译码软件设计
循环码的编译码软件设计

******************

实践教学

*******************

兰州理工大学

计算机与通信学院

2012年春季学期

《计算机通信》课程设计

题目:循环码的编译码软件设计

专业班级:通信工程(3)班

姓名:张光伟

学号:0 9 2 5 0 3 1 5

指导教师:曹明华

成绩:

摘要

随着计算机通信的日益发展,传输数据的场合越来越多。串行数据的差错检验是保证数据传输正确的必要手段,而循环码是差错码中最常用的一种编码。

循环码是线性分组码中最重要的一种子类,它除了具有分组码的线性外,还具有循环性,

其码字结构一般用符号(n,k)表示,其中,n是该码组中的码元数,k是信息码元位数,r=n-k是监督码元位数。循环码具有许多特殊的代数性质,这些性质有助于按照要求的纠错能力系统地构造这类码,能简化译码算法,并且目前发现的大部分线性码与循环码有密切关系。已有循环码编译码系统大多以标准逻辑器件(如中小规模TTL系列、CMOS系列)按传统数字系统设计方法设计而成,其主要缺点是逻辑规模小、功耗大、可靠性低。随着大规模、超大规模集成电路的发展,以及电子设计自动化水平的提高,这种制约正在被逐渐消除。

本文通过C 语言平台运行所编写的程序,观察了在输入信息码情况下输出对应的编码结果以及相反的译码功能。通过多组的对比验证了该(7,4)循环码的编译码程序的正确性。最后,在程序运行的过程中进步分析循环码的编译码原理,并通过比较仿真模型与理论计算的性能,证明了仿真模型的可行性。

关键词:循环码;编码;译码;程序仿真

数字信号在传输过程中,由于受到干扰的影响,码元波形将变坏。接收端收到后可能发生错误判决。由乘性干扰引起的码间串扰,可以采用均衡的办法纠错,而加性干扰的影响则需要用其他方法解决,在设计数字通信系统时,应该首先从合理选择调至制度,解调方法一级发送功率等方面考虑,使加性干扰不足以影响达到误码率的要求。在仍不能妈祖要求是,就要考虑才用差错控制技术。

现代通信的发展趋势为数字化,随着现代通信技术的不断开发,差错控制技术已日趋成熟,在各个领域都得到了广泛的应用和认同。本文就(7,4)循环码的编码与译码原理进行C 语言的编程及运行仿真。

现代社会发展要求通信系统功能越来越强,可靠性越来越高,构成也越来越复杂,这就要

借助于功能强大的计算机辅助分析设计技术和工具才能实现。现代计算机科学技术快速发展,已经研发出了新一代的可视化的仿真软件。这些能强大的仿真软件,使得通信系统仿真的设计和分析过程变得相对直观和便捷,由此也使得通信系统仿真技术得到了更快的发展。本文使用的是功能强大的C 语言软件。

C 语言是一种使用简便的,特别适用于科学研究和工程计算的高级语言,与其他计算机语言相比,它的特点是简洁和智能化,具有极高的编程和调试效率。通过使用C 工具箱函数对数字调制进行仿真,更能直观彻底的掌握循环码的编码与译码原理。有助于我们的学习和研究,加深对知识的理解和运用。C 的便利性还体现在它的仿真结果还可以存放到的工作空间里做事后处理。方便我们修改参数对不同情况下的输出结果进行对比。

第1章计算机通信与纠错码 (1)

1.1计算机通信技术 (1)

1.2纠错码 (2)

第2章循环码原理与介绍 (5)

2.1循环码介绍 (5)

2.2循环码编译码原理 (7)

第3章程序仿真及结果分析 (11)

3.1C语言简介 (11)

3.2C语言优缺点 (11)

3.3C语言结构特点 (13)

3.4基于C语言程序编写 (13)

3.5运行及分析 (14)

参考文献 (18)

课程设计总结 (19)

致谢 (20)

附录源程序代码 (21)

第1章计算机通信与纠错码

1.1计算机通信技术

1.1.1通信的概念

通信就是克服距离上的障碍,从一地向另一地传递和交换消息。消息是信息源所产生的,是信息的物理表现,例如,语音、文字、数据、图形和图像等都是消息(Message)。消息由模拟消息(如语音、图像等)以及数字消息(如数据、文字等)之分。所有消息必须在转换成电信号(通常简称为信号)后才能在通信系统中传输。所以,信号(Signal)是传输消息的手段,信号是消息的物资载体。

相应的信号可以分为模拟信号和数字信号,模拟信号的自变量可以是连续的或离散的,但幅度是连续的,如电话机、电视摄像机输出的信号就是模拟信号。数字信号的自变量可以是连续的或离散的,但幅度是离散的,如计算机等各种数字终端设备输出的信号就是数字信号。

通信的目的是传递消息,但对受信者有用的是消息中包含的有效内容,即信息(Information)。消息是具体的、表面的,而信息是抽象的、本质的,且消息中包含的信息的多少可以用信息量来度量。通信技术,特别是数字通信技术近年来发展非常迅速,它的应用越来越广泛。

数字通信系统较模拟通信系统而言,具有抗干扰能力强、便于加密、易于实现集成化、便于与计算机连接等优点。因而,数字通信更能适应对通信技术的高要求。

1.1.2通信的发展史简介

远古时代,远距离的传递消息是以书信的形式来完成的,这种通信方式明显具有传递时间长的缺点。为了在尽量短的时间内传递尽量多的消息,人们不断地尝试所能找到的各种最新技术手段。1837年发明的莫尔斯电磁式电报标志着电通信的开始。之后,利用电进行通信的研究取得了长足的进步。1866年利用海底电缆实现了跨大西洋的越洋电报通信。1876年贝耳发明了电话,利用电信号实现了语音信号的有线传递,使信息的传递变得既迅速又准确,这标志着模拟通信的开始,由于它比电报更便于交流使用,所以直到20世纪前半叶这种采用模拟技术的电话通信技术比电报得到了更为迅速和广泛的发展。1937年瑞威斯发明的脉冲编码调制标志数字通信的开始。20世纪60年代以后集成电路、电子计算机的出现,使得数字通信迅速发展。在70年代末在全球发展起来的模拟移动电话在90年代中期被数字移动电话所代替,现有的模拟电视也正在被数字电视所代替。数字通信的高速率和大容量等各方面的优越性也使人们看到了它的发展前途。

1.1.3计算机通信介绍

计算机通信是一种以数据通信形式出现,在计算机与计算机之间或计算机与终端设备之间进行信息传递的方式。它是现代计算机技术与通信技术相融合的产物,在军队指挥自动化系统、武器控制系统、信息处理系统、决策分析系统、情报检索系统以及办公自动化系统等领域得到了广泛应用。

计算机通信按照传输连接方式的不同,可分为直接式和间接式两种。直接式是指将两部计算机直接相联进行通信,可以是点对点,也可以是多点通播。间接式是指通信双方必须通过交换网络进行传输。

按照通信覆盖地域的广度,计算机通信通常分为局域式、城域式和广域式三类。

局域式是指在一局部的地域范围内(例如一个机关、学校、军营等)建立计算机通信。局域计算机通信覆盖地区的直径在数公里以内。

城域式是指在一个城市范围内所建立的计算机通信。城域计算机通信覆盖地区的直径在十公里到数十公里。

广域式是指在一个广泛的地域范围内所建立的计算机通信。通信范围可以超越城市和国家,以至于全球。广域计算机通信覆盖地区的直径一般在数十公里到数干公里乃至上万公里。

在通常情况下,计算机通信都是由多台计算机通过通信线路连接成计算机通信网进行的,这样可共享网络资源,充分发挥计算机系统的效能。

1.2纠错码

1.2.1纠错码

纠错码(error correcting code),在传输过程中发生错误后能在收端自行发现或纠正的码。仅用来发现错误的码一般常称为检错码。为使一种码具有检错或纠错能力,须对原码字增加多余的码元,以扩大码字之间的差别,即把原码字按某种规则变成有一定剩余度(见信源编码)的码字,并使每个码字的码之间有一定的关系。关系的建立称为编码。码字到达收端后,可以根据编码规则是否满足以判定有无错误。当不能满足时,按一定规则确定错误所在位置并予以纠正。纠错并恢复原码字的过程称为译码。检错码与其他手段结合使用,可以纠错。

纠错编码又称信道编码,它与信源编码是信息传输的两个方面。它们之间存在对偶的关系。应用信道译码直接对一些自然信息进行处理,可以去掉剩余度,以达到压缩数据的目的。

为了使一种码具有检错或纠错能力,必须对原码字增加多余的码元,以扩大码字之

间的差别,使一个码字在一定数目内的码元上发生错误时,不致错成另一个码字。准确地说,即把原码字按某种规则变成有一定剩余度的码字,并使每个码字的码元间有一定的关系。关系的建立称为编码。码字到达收端后,用编码时所用的规则去检验。如果没有错误,则原规则一定满足,否则就不满足。由此可以根据编码规则是否满足以判定有无错误。当不能满足时,在可纠能力之内按一定的规则确定错误所在的位置,并予以纠正。纠错并恢复原码字的过程称为译码;码元间的关系为线性时,称为线性码;否则称为非线性码。检错码与其他手段结合使用,可以纠错。检错反馈重发系统(ARQ系统)就是一例。

在构造纠错码时,将输入信息分成k位一组以进行编码。若编出的校验位仅与本组的信息位有关,则称这样的码为分组码。若不仅与本组的k个信息位有关,而且与前若干组的信息位有关,则称为格码。这种码之所以称为格码,是因为用图形分析时它象篱笆或格架。线性格码在运算时为卷积运算,所以叫卷积码。

1.2.2 纠错原理

纠错码能够检错或纠错,主要是靠码字之间有较大的差别。这可用码字之间的汉明距离d(x,y)来衡量。它的定义为码字x与y之间的对应位取不同值的码元个数。一种纠错码的最小距离d定义为该种码中任两个码字之间的距离的最小值。一种码要能发现e个错误,它的最小距离d应不小于e+1。若要能纠正t个错误,则d应不小于2t+1。一个码字中非零码元的个数,称为此码字的汉明重量。一种码中非零码字的重量的最小值,称为该码的最小重量。对线性码来说,一种码的最小重量与其最小距离在数值上是相等的。

在构造线性码时,数字上是从n维空间中选一k维子空间,且使此子空间内各非零码字的重量尽可能大。当构造循环码时,可进一步将每一码字看成一多项式,将整个码看成是多项式环中的理想,这一理想是主理想,故可由生成多项式决定;而多项式完全可由它的根规定。这样,就容易对码进行构造和分析。这是BCH码等循环码构造的出发点。一般地说,构造一种码时,均设法将它与某种代数结构相联系,以便对它进行描述,进而推导它的性质,估计它的性能和给出它的译码方法。若一种码的码长为n,码字数为M,或信息位为h,以及最小距离为d,则可把此码记作(n,M,d)码。若此码为线性码,常简记作(n,k)或(n,k,d)码。人们还常用R=log2M/n表示码的信息率或简称码率,单位为比特/码元。R越大,则每个码元所携带的信息量越大,编码效率越高。

纠错码实现中最复杂的部分是译码。它是纠错码能否应用的关键。根据式(1),采用的码长n越大,则误码率越小。但n越大,编译码设备也越复杂,且延迟也越大。人们希望找到的译码方法是:误码率随码长n的增加按指数规律下降;译码的复杂程度随码长n

的增加接近线性地增加;译码的计算量则与码长n基本无关。可惜,已经找到的码能满足这样要求的很少。不过由于大规模集成电路的发展,既使应用比较复杂的但性能良好的码,成本也并不太高。因此,纠错码的应用越来越广泛。

纠错码传输的都是数字信号。这既可用硬件实现,也可用软件实现。前者主要用各种数字电路,主要是采用大规模集成电路。软件实现特别适合计算机通信网等场合。因为这时可以直接利用网中的计算机进行编码和译码,不需要另加专用设备。硬件实现的速度较高,比软件可快几个数量级。

在传信率一定的情况下,如果采用纠错码提高可靠性,要求信道的传输率增加,带宽加大。因此,纠错码主要用于功率受限制而带宽较大的信道,如卫星、散射等系统中。纠错码还用在一些可靠性要求较高,但设备或器件的可靠性较差,而余量较大的场合,如磁带、磁盘和半导体存储器等。

在分组码的研究中,谱分析的方法受到人们的重视。纠同步错误码、算术码、不对称码、不等错误纠正码等,也得到较多的研究。

第2章 循环码原理与介绍

2.1 循环码介绍

循环码是线性分组码的一种,所以它具有线性分组码的一般特性,此外还具有循环性。循环码的编码和解码设备都不太复杂,且检(纠)错能力强。它不但可以检测随机的错误,还可以检错突发的错误。(n,k )循环码可以检测长为n-k 或更短的任何突发错误,包括首尾相接突发错误。

循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。符合这个特点的有多种方案,但循环码只能是表中的那种。循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。循环码就是这样一种编码,它可以在卡诺图中依次循环得到。循环码又称格雷码( Grey Code )。

循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经

过循环移位后,所得到的码组仍然是许用码组。若(

)为一循环码组,

则(

)、(… )、……还是许用码组。也就是说,不论

是左移还是右移,也不论移多少位,仍然是许用的循环码组。 2.1.1 循环码的多项式表示

设码长为n 的循环码表示为

(1n a -,2n a -,……i a ,…… 1a ,0a ) (1) 其中i a 为二进制数,通常把码组中各码元当做二进制的系数,即把上式中长为n 的各个分量看做多项式:

T(x) =1

n a -1

n x

-+2n a -2

n x

-+……+i a n i

x

-+……+1a x +0a (2)

的各项系数,则码字与码多项式一一对应,这种多项式中,x 仅表示码元位置的标记,因此我们并不关心x 的取值,这种多项式称为码多项式。 2.1.2 (n,k)循环码的生成多项式

(n,k)循环码的生成多项式写为g(x),它是(n,k)循环码码集中唯一的,幂次为n-k 的码多项式,则k x g(x)是一个幂次为n 的码多项式。按模(n

x +1)运算,此时:

g (x )

+1

k

n

x x = Q(x)商+()1n R x x

+ ,R (x )余数多项式 (3)

k

x

g(x)≡R (x ),且因

k

x

g(x)也是n 阶幂,故Q(x)=1.由于它是循环码,故

k

x

g(x)按模(

n

x

+1)

运算后的“余式”也是循环码的一个码字,它必能被g(x)整除,即:

()

()

R x G x =F(x) (4) 由以上两式可以得到:

k

x

g(x)= Q(x)(n

x

+1)+R(x) =(

n

x

+1)+f(x)g(x) (5)

和n

x +1=[k

x +f(x)]g(x)=h(x)g(x) (6)

从上式中可以看出,生成多项式g(x)应该是n

x +1的一个因式,即循环码多项式应该是

n

x

+1的一个n-k 次因式。

2.1.3 循环码的生成矩阵和一致校验矩阵

对所有的i=0,1,2,……k-1,用生成多项式g(x)除n k i

x

-+,有:

n k i

x

-+=i a (x)g(x)+i b (x) (7)

式中i b (x )是余式,表示为:

i b (x )=,1

i n k b --1

n k x

--+……+,1i b x +,0i b (8)

因此,n k i

x

-++i b (x )是g(x)的倍式,即n k i

x -++i b (x )是码多项式,由此得到系统形式的

生成矩阵为:

G=1,11,11,0

2,1

2,1

2,00,1

0,1

0,01

00010000

k n k k k k n k k k n k b b b b

b

b

b

b

b ------------?????????????

?

(9) 它是一个k ?n 阶的矩阵。 同样,由G ?

T H =0可以得到系统形式的一致校验矩阵为:

H=1,1

2,1

0,1

1,12,10,11,0

2,0

0,0

100010001k n k k n k n k k k k k b b

b

b b b b b

b

------------??

??

??

?

???

?

???

(10)

??????

?

?????????11010000110100

0011010

0001101

?????

???????101110001011100010111如已知(7,4)循环码的生成多项式和校验多项式分别为:g(x) = x 3 + x +1,h(x) = x 4 + x 2

+ x +1。写得其生成矩阵和校验矩阵分别为:

G= (11)

H= (12)

2.2 循环码编译码原理

2.2.1 循环码编码原理

(1) 有信息码构成信息多项式m(x)= 1

k m -1

k x -+……+0m 其中高幂次为k-1;

(2) 用n k

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

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

信息吗(1k m -,2k m -,……,1m ,0m )移位到了码字德前k 个信息位,其后

是r 个全为零的监督位; (3) 用g(x)除n k

x

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

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

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

为一码多项式。

如图所示为除法电路:

循环码

图1 除法电路

根据上面的讨论,可得到在(7,4)循环码编码的程序框图如图1 所下图示:

图2 编码程序框图

2.2.2循环码的译码原理

纠错码的译码是该编码能否得到实际应用的关键所在。译码器往往比编码较难实

现,对于纠错能力强的纠错码更复杂。根据不同的纠错或检错目的,循环码译码器可分为用于纠错目的和用于检错目的的循环码译码器。

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

在SystemView 中没有提供专用的CRC 循环冗余校验码编码器,我们可以在CDMA 库中找到一个现成的专用的CRC 编码器和译码器。该图符是的接入信道的数据帧品质指示编码器,其中使用了多种不同比特率的数据模型,通过CRC 校验来判断接入信道的质量好坏。其中规定每一帧的长度为20ms 的数据。一个典型IS-95-A 标准规定的9600信道的CRC 测试码的长度为192比特,其中信息位172位、校验位12比特、尾部全零8

特。感兴趣的读者可以加入一个速率为860bps (192bit/0.2ms =860)的PN 数据,然后观察经过CRC 编码后的波形。并可用对应的译码器译码观察输出波形是否与输入的PN 码一致。

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

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

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

译码器的任务就是从y(x)中得到)?(x

e ,然后求的估值码字 )?()()?c(x e x y x

+= (15)

并从中得到信息组)?(x

m 。

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

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

e ; (3)计算)?()()?c(x

e x y x

+=,得到估计码字)?(x c 。若)?(x c =c(x),则译码正确,否则,若)?(x

c ≠c(x),则译码错误。 由于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)循环码中的一位错误,其伴随式如表1所示。 BCH (7,4)循环码错误图样表: 表1 BCH (7,4)循环码错误图样表

上式指出了系统循环码的译码方法:将收到的码字R (x ) 用g (x ) 去除,如果除尽则无错;

否则有错。如果有错,可由余式S(x) 一一找出对应图样,然后将错误图样E(x) 与R(x) 模2 和,即为所求码字C(x) ,从而实现纠错目的。

根据前面的讨论,可得(7,4)循环码译码的程序框图如图2 所示

图 3 译码程序框图

第3章程序仿真及结果分析

3.1 C语言简介

C语言是Combined Language(组合语言)的中英混合简称。是一种计算机程序设计语言。它既具有高级语言的特点,又具有汇编语言的特点。它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。

C语言特点。

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

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

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

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

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

C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。因此C语言常常被用于开发大型软件,在工程软件和生活中以及游戏开发中得到广泛的应用。

3.2 C语言优缺点

3.2.1 C语言优点

简洁紧凑、灵活方便

C语言一共只有32个关键字,9种控制语句,程序书写形式自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以像

汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。

运算符丰富

C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型装换

等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。

数据结构丰富

C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。

C是结构式语言

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

C语法限制不太严格,程序设计自由度大

虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。

C语言允许直接访问物理地址,对硬件进行操作

由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。

生成目标代码质量高,程序执行效率高一般只比汇编程序生成的目标代码效率低10へ20%。 C语言适用范围大,可移植性好

C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX;也适用于多种机型。C语言具有强大的绘图能力,可移植性好,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画,它也是数值计算的高级语言。

3.2.2 C语言缺点

C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。 2. C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。

C语言也有自身的不足,比如:C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数族下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。

总之,C语言既有高级语言的特点,又具有汇编语言的特点;既是一个成功的系统设计语言,又是一个使用的程序设计语言;既能用来编写不依赖计算机硬件的应用程序,又能用来编写各种系统程序;是一种受欢迎、应用广泛的程序设计语言C语言版本。

3.3 C语言结构特点

1.一个C语言源程序可以由一个或多个源文件组成。

2.每个源文件可由一个或多个函数组成。

3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。

4.源程序中可以有预处理命令(include 命令仅为其中的一种),预处理命令通常应放在源文件或源程序的最前面。

5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。

6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。

3.4 基于C语言程序编写

就74循环码的编码与译码程序如附录所示:

3.5 运行及分析

3.5.1 运行结果理论分析

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

传输正确概率为(1? p )n ,信息帧传输错误概率为Pe=1-(1-p) n ,每帧仅发生1 位错误的概率为P e =Cn 1p(1-p) n-1=np(1-p) n-1, 则1 位错误帧在总的错误帧中的概率为

(16) 表2 P e ,P e1,R 的模拟结果(n=7)

综合表2 的模拟结果和理论分析可知,通信系统的帧传输具有下列性质:

(1) 在n 一定的条件下,信息帧错误概率随着比特误码率p 的增加而增加,最坏条件下帧错误 概率几乎为100%,此时系统失去通信能力。

(2) 在典型的通信环境下( p 为10-3 ~10-5 5,帧长n =128 ~ 1024,np <1 ) , 当p → 0 时,R →1,表明当比特误码率p 足够小的情况下,绝大多数信息帧错误是每帧1 位错误,因此纠正每帧1 位错误有实际应用价值。 3.5.2 程序运行结果 1.初始化界面

在C++中输入源程序代码,经过编译连接运行后出现初始化界面,其中C 表示编码,输入四位信息码,d 表示译码,在其后输入七位信息码,e 表示推出程序。

1(1)1()100%100%

1(1)E E P np p n R P p n --=?=?--

图4初始化界面

2.正确编码界面

如图所示,进入初始界面后,输入c,继续输入四位信息码0101,就可以得到相应编码以后的七位码。

图5正确编码界面

3.正确译码界面

如图所示输入d以后,继续输入七位信息码进行译码,正确译码后,会出现如下图中所示s(x)=[0,0,0],这就表示我们的译码结果是正确的,如果s(x)不为零则表示译码错误。

图6正确译码界面

4.信息位有一位错误时的译码界面

如图所示,进入译码输入状态,输入错一位后s(x)=[1,10],不为零说明其译码出现错误,而我们所编写的程序则是可以将正确的信心码译出,具体如下图。

图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。

LDPC信道编译码算法研究

河北工业大学本科毕业设计(论文)前期报告 毕业设计(论文)题目: LDPC信道编译码算法研究 专业(方向):通信工程 学生信息: 学号:112198 姓名:杨昌兆班级:通信112 指导教师信息: 姓名:高军萍职称:副教授 报告提交日期:2015年3月11日 文献综述 通信系统最基本目的就是将信息从信源高效、可靠、以及安全地传送到信宿,所以有噪声干扰的通信信道不可避免地会对信道中传输的信息产生一定程度的干扰,这就可能降低通信的可靠性。以前人们认为通信系统的可靠性与有效性是一对无法调和的矛盾,一方的改善总会导致另一方受到损害,直到Shannon 信息和编码理论的奠基性论文“通信的数学理论”于1948年发表之后,人们才逐渐改变了这一观点。他在论文中首次提出了在有扰信道上实现可靠通信的一些方法,这就是通过信源信道的编码。 目前广泛使用的信道编码技术有,奇偶校验码、行列监督码、恒比码、汉明码、循环码(CRC)等编码技术。信道编码的本质是增加通信的可靠性,或者说增加整个系统的抗干扰性。对信道编码有以下要求:1.透明性:要求对所传消息的内容不加任何限制;2.有纠错能力;3.效率高:为了与信道频谱匹配和具有纠错能力,通常要向原信号添加一些码,要求加入最少的比特数而得到最大的利益;4.包含适当的定时信息。LDPC码就是其中的一种方式,它具有很多优势和特点。 根据 Shannon 提出的信道编码理论[1],他指出只要信息的传输速率低于信道容量C,就必然会存在一种编码方法,能使得信息出现差错的概率趋于0;这就是著名的信道编码定理。但遗憾的是Shannon 信道编码理论并没有指出具体的那一种编码方式能够实现码元传输速率逼近信道容量。 直到1962 年,Gallager在他的博士论文中提出了LDPC编码[2][3],但由于当时的计算能力,人们认为LDPC码不实用。直到Turbo码的出现,LDPC码才重新受到了人们的重视[5][6]。Tanner在他的一篇的文章中正式提出了用图模型来描述码字的概念,从而将LDPC码的校验矩阵对应到被称为Tanner图[7][8]的双向二部图上。采用Tanner图构造的LDPC码,通过并行译码可以显著地降低译码复杂度。Turbo码的发现重新引发了众多学者对LDPC码的研究兴趣。 后来MacKay和Neal利用随机构造的Tanner图研究了LDPC码的性能,发现采用和积译码算法的正则LDPC码具有和Turbo码相似的译码性能,在长码时甚至超过了Turbo码[9][10],这一结果引起了信道编码界的极大关注。此后,Davey和MacKay从减少Tanner图上小环路的概念出发提出了基于GF (q),q >2的LDPC码[11][12],进一步提高了LDPC码的译码性能。

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

简述简易循环码编译码器设计 摘要通信系统可靠性要求系统可靠地传输消息,而信道编码旨在解决可靠性问题。循环码属于线性代码,具有严密的代数理论基础,具有良好的错误检测和纠正功能。循环码编译电路大多用移位寄存器和模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 多项式中的最低阶项对应于寄存器的输入级。输出序

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

课程设计 班级:通信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 ?-- )是循环码的一个码组,则循环移位后的码组:

循环码

实验、循环码编译码系统 一、 实验目的: 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 )整除,也就是:

相关文档