您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 酒店餐饮 > 基于51单片机的(7,4)循环码编程
1基于51单片机的(7,4)循环码编译码的设计电子信息科学与技术专业学生王东菊指导老师王心水摘要:通信系统中最重要的是通信质量问题,而衡量通信系统质量的主要性能指标就是有效性和可靠性。所谓有效性是指要求系统高效率地传输信息,在数字通信系统中信源编码旨在解决有效问题;所谓可靠性,是指要求系统可靠地传输消息,而信道编码旨在解决可靠性问题。以往循环码编译电路大多用移位寄存器和模2构成的线性时序网络来完成。基本电路简单,容易实现。但在体积和功能扩展上受到了限制而不能发挥更大的作用。采用(7,4)循环码,充分运用单片机的软件功能进行编码及译码纠错,可有效的克服来自通讯信道的干扰,保证数据通讯的可靠及系统的稳定,使误码率大幅度的降低。而且,只要改变软件算法,即可适用于不同微机、不同字长的需要。总之,本设计使用软件编程方法实现编译码过程既有简化电路、可靠性高、运算速度快、体积小等优点,又可以扩展电路其他功能,而且可以根据需要任意修改,这是其它硬件电路所无法相比的,是抛开传统模式的一种新尝试。关键词:单片机通信循环码编码译码纠错抗干扰ThedesignofEncodingandDecodingof(7,4)CyclicCodeBasedonthe51SCMStudentmajoringinElectronicinformationscienceandtechnologyWangDongjuTutorWangXinshuiAbstract:Themostimportantproblemincommunicationsystemiscommunicationquality,andthemostimportantmeasuresofthequalityofcommunicationsystemiseffectivenessandreliability.So-calledeffectivenessreferstothesystemefficientlytransmitinformationindigitalcommunicationsystem.So-calledreliability,referstothesystem,andreliabletransmissionchannelencodingaimsatsolvingproblems.Reliability,Previouscyclecodecompilercircuitwiththeshiftregisterandmostlycomposedoftwolineartemporalnetworktoaccomplish.Thebasiccircuitissimpleandeasytoimplement.Butinvolumeandfunctionexpansionbyrestrictionsandcannotplayabiggerrole.Using(7,4)codes,makefulluseoftheMCUsoftwarefunctionsencodedanddecodingcorrection,whichcaneffectivelyovercometheinterferencefromcommunicationchannel,ensurethereliabilityofdatacommunicationsystems,thestabilityandthebergreatlyreduced.And,justchangethesoftwarealgorithm,andcanbeusedindifferentmicrocomputer,differentwordslongneed.Anyhow,thisdesignusingthesoftwareprogrammingmethod(bothsimplifieddecodingprocess,highreliability,operationcircuitfaster,smaller,andmayexpandadvantagesandotherfunctions,circuitaccordingtoneedanymodification,thisiscomparedtootherhardwarecircuitcannotabandontraditionalpattern,isanewattempt.Keywords:Microcontroller;Communication;Cycliccode;Encode;Decode;Correctingcode;Anti-intreferance2引言在数据通信中,误码率是项重要指标。误码可能发生在各个环节,大量实践证明,传输媒介是产生误码的主要来源。为了提高数据传输可靠性,人们开始广泛采用编码技术,通过编码以一定的规则产生一些附加数字(称为监督数字),使原来不相关的信息序列变为相关的新序列(称为码字或者码序),然后把新的序列发送出去。通过编码的方法使信息具有纠检差错的功能。该通信模型可以简要的用图1来表示:近年来随着计算机软件的飞速发展,许多用实物实现的问题都可以在软件上得以实现。单片机具有内部资源丰富、性能全面、通用性强且可覆盖多种应用要求的优点,MCS-51系列单片机以其功能完善且方便易学而得到了越来越多的应用。随着科研、生产中测量与控制工程量的增大,单个单片机往往已不能满足要求。一项工作可能会有主从系统组成的单片机网来完成,这就会有各机之间大量的数据传送。同一般的通信系统一样,由于信道传输特性不理想和加性干扰的影响,数字信号在传输过程中码元波形会变坏,接收数据端中可能有差错,必须对接收到的数据进行校验。差错控制编码是提高数字传输可靠性的一种有效方法。它是通过对发送端待传送的信息序列附加一些监督码元或进行某种变换,使多余码元与信息码元之间以某种确定的规则相互关联,即使原来彼此独立、没有相关性的信息码元序列变换为具有相关性的序列。接收端按照这种相关性对信息码元和监督码元进行检验,一旦传输过程中发生差错,即可检查出来并予以纠正。随着数字电路技术的飞速发展,循环码检错纠错技术已经广泛应用于各种通信系统,译码电路采用微处理器或数字信号处理器,实现简单,检错纠错能力强,可降低误码率,确保数据传输的可靠性,大大提高了通信质量。数字信号在传输过程中,由于受到干扰的影响,码元波形将变坏。接收端收到后可能发生错误判决。为了提高传输的可靠性,在信道中往往要加入差错控制技术。循环码是一种线性分组码,单片机编程是软件实现循环码的一种方式,在通信中用于提高信道的可靠性。1.设计思想1.1选择编码形式人们已经研究出很多编码方法,如奇偶校验码、汉明码、循环码、卷积吗等。这些编码中,有的具有检错能力,有的既有检错能力又有纠错能力。在众多的编码中,汉明码比较直观简单,传输信息数字的频率(即信息率)最高,它既具有检错能力,又具有纠错能力,而且软硬件实现起来也较为简单。本设计采用循环码编码,当接收端发现接收到的信息出现了一位差错时,在译码的同时也就完成纠错。1.2MCS-51编码方案设计实现循环码的方法很多,可以用软件实现也可以由硬件完成,以往循环码编编码信道干扰收信者译码纠错信源图1通信模型图示3译电路大多用移位寄存器和模2构成的线性时序网络来完成,基本电路简单,容易实现。但在体积和功能扩展上受到了限制而不能发挥更大的作用。如果充分运用单片机的软件功能进行编码及译码纠错,则可以打破体积和功能扩展上的限制,而且只要改变软件算法,即可适用于不同微机、不同字长的需要。2.循环码的一切基本概念2.1循环码的内涵数字信号在传输过程中,由于受到干扰的影响,码元波形将变坏。接收端收到后可能发生错误判决。为了提高传输的可靠性,在信道中往往要加入差错控制技术。在差错控制技术中,有一种编码是建立在代数学基础上的,这种码称为代数码。而在代数码中常见的是线性码。在线性码中信息位和监督位是由一些线性代数方程联系着的,或者说,线性码是按照一组线性方程构成的。循环码是一种重要的线性分组码,它是在严格的代数学理论基础上建立起来的,这种码的编码和解码设备都不太复杂,而且检纠错能力较强。接下来将详细介绍循环码的性质及编码和解码算法。2.1.1循环码的概念及生成多项式在实际应用中,数据传输一般采用系统码的编码方式,即在发送的信息序列之后附加上特定位数的冗余位,该冗余位称为所发送信息序列的监督位。监督位一般是由所发送的信息序列经过恰当的变化而生成的。若监督位由信息位经线性组合而得到,则称得到的系统码为线性分组码。循环码是线性分组码的一个重要子类,具有严密的代数学理论。循环码“线性”是指任意两个循环码模2相加所得的新码仍为循环码。(n,k)循环码表示其中信息位为k,监督位为n-k。若循环码的所有码字多项式都是由一个次数最低的非零首一多项式g(x)的倍数,则g(x)生成该码,并称g(x)为该码的生成元或生成多项式。(n,k)循环码的生成多项式g(x)一定是nx+1的因式:nx+1=g(x)h(x);反之,若g(x)为n-k次,且除尽nx+1,则此g(x)一定生成一个(n,k)循环码。2.1.2循环码的性质循环码是线性分组码的一种,因而它具有线性码的性质。线性码的一个重要性质是封闭性,所谓封闭性,是指一种线性码中的任意两个码组之和仍为这种码中的一个码组。由于线性码具有封闭性,所以两个码组之间的距离必定是另一个码组的重量,因此线性码的最小距离就是码的最小重量(除全0码组外)。循环码除了具有线性码的一般性质外,还具有自己的性质:循环性。所谓循环性,是指一码组循环一位(即将最右端的一个码元移至左端,或反之)以后,仍为该码中的一个码组。由于循环码具有优良的代数结构,使得可用简单的反馈移位寄存器实现编码和伴随式计算,并且可以使用多种简单而有效的译码方法。循环码是研究最深入、理论最成熟、应用最广泛的一类线性分组码。接下来,详细分析一下循环码的编码及译码算法。2.1.3循环码的编码算法4根据给定的(n,k)值,再根据循环码生成定理对所给定信息位k,选定生成多项式g(x),所有码多项式c(x)都能被g(x)整除,且次数小于n-k。若已知0111gxgxgxgxgknknknkn,并设信息元多项式012211)(mxmxmxmxmkkkk要编码成系统循环码形式,即码字的最左边k位是信息元,其余n-k位是校验元,则要用knx乘以m(x),再加上校验元多项式r(x),这样得到的码字多项式011102211)()()(rxrxrxmxmxmxrxmxxcknknknnknkkn,上式中0111)(rxrxrxrknkn。c(x)一定是g(x)的倍数,即有多项式)()()()()(xgxqxrxmxxckn或)(mod0)()()(xgxrxmxxckn,注意到g(x)为n-k次多项式,而r(x)最多为n-k-1次多项式,必有r(x)=)(mod)()(xgxmxxrkn,即r(x)必是)(xmxkn除以g(x)的余式。上述过程指出了系统循环码的编码方法:⑴将信息组m(x)乘以knx变成)(xmxkn,乘以knx的目的是将m(x)提高n-k次。⑵然后将得到的)(xmxkn除以g(x),得到商q(x)和余式r(x)/g(x),可知该余式分子r(x),即为校验多项式,从而得到码字多项式)()()(xrxmxxckn根据上面的讨论,可得到(7,4)循环码编码的原理框图如图2所示:2.1.4循环码的译码算法设发送的码字为C(x),接收到的码字为R(x),如果C(x)=R(x),则说明收到的码字正确;如果C(x)≠R(x),则说明收到的码字出现错误,则有:R(x)=C(x)+E(x)。……⑴m(x)knx确定余式r(x):knxm(x)/g(x)的余式确定c(x):c(x)=knxm(x)+r(x)图2循环码编码原理框图5公式⑴中的E(x)称为错
本文标题:基于51单片机的(7,4)循环码编程
链接地址:https://www.777doc.com/doc-2567796 .html