******************实践教学*******************兰州理工大学计算机与通信学院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)前言数字信号在传输过程中,由于受到干扰的影响,码元波形将变坏。
接收端收到后可能发生错误判决。
由乘性干扰引起的码间串扰,可以采用均衡的办法纠错,而加性干扰的影响则需要用其他方法解决,在设计数字通信系统时,应该首先从合理选择调至制度,解调方法一级发送功率等方面考虑,使加性干扰不足以影响达到误码率的要求。
在仍不能妈祖要求是,就要考虑才用差错控制技术。
现代通信的发展趋势为数字化,随着现代通信技术的不断开发,差错控制技术已日趋成熟,在各个领域都得到了广泛的应用和认同。
本文就(7,4)循环码的编码与译码原理进行C 语言的编程及运行仿真。
现代社会发展要求通信系统功能越来越强,可靠性越来越高,构成也越来越复杂,这就要借助于功能强大的计算机辅助分析设计技术和工具才能实现。
现代计算机科学技术快速发展,已经研发出了新一代的可视化的仿真软件。
这些能强大的仿真软件,使得通信系统仿真的设计和分析过程变得相对直观和便捷,由此也使得通信系统仿真技术得到了更快的发展。
本文使用的是功能强大的C 语言软件。
C 语言是一种使用简便的,特别适用于科学研究和工程计算的高级语言,与其他计算机语言相比,它的特点是简洁和智能化,具有极高的编程和调试效率。
通过使用C 工具箱函数对数字调制进行仿真,更能直观彻底的掌握循环码的编码与译码原理。
有助于我们的学习和研究,加深对知识的理解和运用。
C 的便利性还体现在它的仿真结果还可以存放到的工作空间里做事后处理。
方便我们修改参数对不同情况下的输出结果进行对比。
1、目的及意义在实际的通信系统中,由于信道传输特性不理想以及加噪声的影响,接收到的信息中不可避免的会发生错误,影响通信系统的传输可靠性。
随着数字通信技术的发展,各种业务对系统误码率的要求逐渐提高,差错控制编码技术是提高数字通信可靠性的有效方法之一。
循环码的编码与译码电路比较简单,纠错能力也较强,是应用比较广泛的差错控制编码方法之一。
通过完成本课题的设计,拟达到以下目的:1、学习循环码编、译码的基本原理,并重点掌握(7,3)循环码的编码与译码;2、查找并分析选择一个合理的生成多项式;3、用C语言分别编程实现(7,3)循环码的编码与译码部分;4、输入任意的数字信息序列,仿真并分析(7,3)循环码的编码结果;5、分别在无差错和部分差错的情况下仿真并分析(7,3)循环码的译码结果;6、分析软件的可行性。
2、设计原理2.1循环码的介绍循环码是线性分组码中一个重要的分支。
它的检、纠错能力较强,编码和译码设备并不复杂,而且性能较好,不仅能纠随机错误,也能纠突发错误。
循环码是目前研究得最成熟的一类码,并且有严密的代数理论基础,故有许多特殊的代数性质,这些性质有助于按所要求的纠错能力系统地构造这类码,且易于实现,所以循环码受到人们的高度重视。
2.1.1循环码的定义循环码是一种线性代数分组码,记为(n,k )码,其中n 为码长,k 为信息码元数。
2.1.2循环码的特点若()0121c c c c n n --是一个码字,则它的循环移位()1032---n n n c c c c 也是一个码字。
循环码是线性分组码的一种,所以它具有线性分组码的一般特性,此外还具有循环性。
循环码的编码和解码设备都不太复杂,且检(纠)错能力强。
它不但可以检测随机的错误,还可以检错突发的错误。
(n,k )循环码可以检测长为n-k 或更短的任何突发错误,包括首尾相接突发错误。
循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。
符合这个特点的有多种方案,但循环码只能是表中的那种。
循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。
这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。
循环码就是这样一种编码,它可以在卡诺图中依次循环得到。
循环码又称格雷码( Grey Code )。
循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。
若()0121c c c c n n --为一循环码组,则()1032---n n n c c c c 、()21043----n n n n c c c c c ……还是许用码组。
也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。
2.1.3循环码的多项式表示设码长为n 的循环码表示为()0121c c c c n n --,其中i c 为二进制数,通常把码组中各码元当做二进制的系数,即把上式中长为n 的各个分量看做多项式:()012211T c x c x c x c x c x i i n n n n ++++++=---- (2-1)的各项系数,则码字与码多项式一一对应,这种多项式中,x 仅表示码元位置的标记,因此我们并不关心x 的取值,这种多项式称为码多项式。
我们用多项式来表示循环码的码字0122110121c x c x c x c c c c c n n n n n n ⊕⊕⊕⇔------ (2-2) 也就是一个n 长码字可以用一个1-n X 次多项式来表示。
它的循环特性,可由多模多项式来表示,例如左移一位,相当于乘x()102312021121021121012211---------------⊕⊕⊕⊕=⊕⊕⊕⊕=⊕⊕⊕+=⊕⊕⊕⊕n n n n n n n n n n n n n n n n c x c x c x c xc x c x c c xc x c x c x c c x c x c x c x 模1-n x 应该指出,这里采用了模多项式运算。
同样,左移两位相当于乘以2x 等等。
2.1.4(n,k )循环码的生成多项式一个(n,k )循环码,它共有k 2个码字,从中取出其前面1-k 位的码字,以()x g 表示,它的次数为()k n k n -=---11。
则()()()()x g x x g x x xg g k 12,,,x - 都是码字,且k 个码字彼此独立,因此可以作为码的生成矩阵[]G 的k 行。
[]G 一经确定,码也就确定了,编码的问题也就解决了。
因此,我们称()x g 为码的生成多项式。
生成矩阵[]G 可以表示如下()[]()()()()()⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=--x g x xg x g x x g x x g x k k 221x G (2-3) 因此,循环码()x c 可以写成()[]()[]x G m m m m c k k 0121x --=,式中[]0121k m m m m k --为K 位信息元矩阵。
变换上式可得,()()()()()()()()()x g x m x g m x m x m x m x g m x xg m x g x m x g x m x c k k k k k k k k =++++=++++=--------012211012211 (2-4)式中,()x m 为信息码组多项式。
由(2-4)可以看出,所有用()[]x G 生成的码字()x c 都是生成多项式()x g 的倍式。
也就是说,凡是一个码字多项式一定能被()x g 除尽。
反之,能被()x g 除尽的次数不大于(n-1)次的多项式,也一定是码多项式。
由此可以得出循环码编码方法如下:首先将次数小于(k-1)次的信息码组多项式()x m 乘以k n X -,得到()x m X k n -,其次数小于等于()1-n 次。
然后用生成多项式()x g 去除()x m X k n -,得到除式为()x r ,它的次数小于()x g 的次数()k n -,把此余式的系数作为监督元附加在信息码组后面,就得到一个必能被()x g 除尽的多项式,且它必是一个码多项式,运算过程为:(2-3) ()()()()x r x g x q x m x k n +=- (2-4) 式中()x q 为商式,()x r 为余式,则码多项式为()()()()()x g x q x r x m x x c k n =+=- (2-5) 而余式可以写成()()x m x r k n -≡x [模()x g ] (2-6)且由于它是循环码,故()x g 必是1-n X 的一个因式,也就是说,它必能被g(x)整除,即:()(),01≡=-x h x g X n [模1-n X ] (2-7)()()x g x r x x g x m x k)()(q )( n +=-式中,()x g 为次数k n -=r 次,()x h 的次数为k 次。