版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于51单片机的(7,4)循环码编译码的设计电子信息科学与技术专业学生 王东菊指导老师 王心水摘要: 通信系统中最重要的是通信质量问题,而衡量通信系统质量的主要性能指标就是有效性和可靠性。所谓有效性是指要求系统高效率地传输信息,在数字通信系统中信源编码旨在解决有效问题;所谓可靠性,是指要求系统可靠地传输消息,而信道编码旨在解决可靠性问题。以往循环码编译电路大多用移位寄存器和模2构成的线性时序网络来完成。基本电路简单,容易实现。但在体积和功能扩展上受到了限制而不能发挥更大的作用。采用 (7,4)循环码,充分运用单片机的软件功能进行编码及译码纠错,可有效的克服来自通讯信道的干扰,保证数据通讯的可靠
2、及系统的稳定,使误码率大幅度的降低。而且,只要改变软件算法,即可适用于不同微机、不同字长的需要。总之,本设计使用软件编程方法实现编译码过程既有简化电路、可靠性高、运算速度快、体积小等优点,又可以扩展电路其他功能,而且可以根据需要任意修改,这是其它硬件电路所无法相比的,是抛开传统模式的一种新尝试。关键词: 单片机 通信 循环码 编码 译码 纠错 抗干扰The design of Encoding and Decoding of (7,4) Cyclic Code Based on the 51 SCM Student majoring in Electronic information scie
3、nce and technology Wang Dongju Tutor Wang XinshuiAbstract: The most important problem in communication system is communication quality, and the most important measures of the quality of communication system is effectiveness and reliability. So-called effectiveness refers to the system efficiently tr
4、ansmit information in digital communication system .So-called reliability, refers to the system, and reliable transmission channel encoding aims at solving problems. Reliability, Previous cycle code compiler circuit with the shift register and mostly composed of two linear temporal network to accomp
5、lish. The basic circuit is simple and easy to implement. But in volume and function expansion by restrictions and cannot play a bigger role. Using (7,4) codes, make full use of the MCU software functions encoded and decoding correction, which can effectively overcome the interference from communicat
6、ion channel, ensure the reliability of data communication systems, the stability and the ber greatly reduced. And, just change the software algorithm, and can be used in different microcomputer, different words long need. Anyhow, this design using the software programming method (both simplified dec
7、oding process, high reliability, operation circuit faster, smaller, and may expand advantages and other functions, circuit according to need any modification, this is compared to other hardware circuit cannot abandon traditional pattern, is a new attempt.Key words: Microcontroller;Communication;Cycl
8、ic code;Encode;Decode;Correcting code;Anti-intreferance引 言在数据通信中,误码率是项重要指标。误码可能发生在各个环节,大量实践证明,传输媒介是产生误码的主要来源。为了提高数据传输可靠性,人们开始广泛采用编码技术,通过编码以一定的规则产生一些附加数字(称为监督数字),使原来不相关的信息序列变为相关的新序列(称为码字或者码序),然后把新的序列发送出去。通过编码的方法使信息具有纠检差错的功能。该通信模型可以简要的用图1来表示: 编码信道干扰收信者译码纠错 信源图1 通信模型图示近年来随着计算机软件的飞速发展,许多用实物实现的问题都可以在软件上得
9、以实现。单片机具有内部资源丰富、性能全面、通用性强且可覆盖多种应用要求的优点,MCS51系列单片机以其功能完善且方便易学而得到了越来越多的应用。随着科研、生产中测量与控制工程量的增大,单个单片机往往已不能满足要求。一项工作可能会有主从系统组成的单片机网来完成,这就会有各机之间大量的数据传送。同一般的通信系统一样,由于信道传输特性不理想和加性干扰的影响,数字信号在传输过程中码元波形会变坏,接收数据端中可能有差错,必须对接收到的数据进行校验。差错控制编码是提高数字传输可靠性的一种有效方法。它是通过对发送端待传送的信息序列附加一些监督码元或进行某种变换,使多余码元与信息码元之间以某种确定的规则相互关
10、联,即使原来彼此独立、没有相关性的信息码元序列变换为具有相关性的序列。接收端按照这种相关性对信息码元和监督码元进行检验,一旦传输过程中发生差错,即可检查出来并予以纠正。 随着数字电路技术的飞速发展,循环码检错纠错技术已经广泛应用于各种通信系统,译码电路采用微处理器或数字信号处理器,实现简单,检错纠错能力强,可降低误码率,确保数据传输的可靠性,大大提高了通信质量。 数字信号在传输过程中,由于受到干扰的影响,码元波形将变坏。接收端收到后可能发生错误判决。为了提高传输的可靠性,在信道中往往要加入差错控制技术。循环码是一种线性分组码,单片机编程是软件实现循环码的一种方式,在通信中用于提高信道的可靠性。
11、1.设计思想1.1 选择编码形式人们已经研究出很多编码方法,如奇偶校验码、汉明码、循环码、卷积吗等。这些编码中,有的具有检错能力,有的既有检错能力又有纠错能力。在众多的编码中,汉明码比较直观简单,传输信息数字的频率(即信息率)最高,它既具有检错能力,又具有纠错能力,而且软硬件实现起来也较为简单。本设计采用循环码编码,当接收端发现接收到的信息出现了一位差错时,在译码的同时也就完成纠错。1.2 MCS-51编码方案设计实现循环码的方法很多,可以用软件实现也可以由硬件完成,以往循环码编译电路大多用移位寄存器和模2构成的线性时序网络来完成,基本电路简单,容易实现。但在体积和功能扩展上受到了限制而不能发
12、挥更大的作用。如果充分运用单片机的软件功能进行编码及译码纠错,则可以打破体积和功能扩展上的限制,而且只要改变软件算法,即可适用于不同微机、不同字长的需要。2.循环码的一切基本概念2.1 循环码的内涵数字信号在传输过程中,由于受到干扰的影响,码元波形将变坏。接收端收到后可能发生错误判决。为了提高传输的可靠性,在信道中往往要加入差错控制技术。 在差错控制技术中,有一种编码是建立在代数学基础上的,这种码称为代数码。而在代数码中常见的是线性码。在线性码中信息位和监督位是由一些线性代数方程联系着的,或者说,线性码是按照一组线性方程构成的。 循环码是一种重要的线性分组码,它是在严格的代数学理论基础上建立起
13、来的,这种码的编码和解码设备都不太复杂,而且检纠错能力较强。接下来将详细介绍循环码的性质及编码和解码算法。2.1.1循环码的概念及生成多项式在实际应用中,数据传输一般采用系统码的编码方式,即在发送的信息序列之后附加上特定位数的冗余位,该冗余位称为所发送信息序列的监督位。监督位一般是由所发送的信息序列经过恰当的变化而生成的。若监督位由信息位经线性组合而得到,则称得到的系统码为线性分组码。循环码是线性分组码的一个重要子类,具有严密的代数学理论。循环码“线性”是指任意两个循环码模2相加所得的新码仍为循环码。(n,k )循环码表示其中信息位为k,监督位为n- k。若循环码的所有码字多项式都是由一个次数
14、最低的非零首一多项式g(x) 的倍数,则g(x)生成该码,并称g(x)为该码的生成元或生成多项式。(n,k)循环码的生成多项式g(x)一定是+1 的因式:+1 =g(x)h(x);反之,若g(x)为n- k次,且除尽+1,则此g(x)一定生成一个(n,k )循环码。2.1.2循环码的性质循环码是线性分组码的一种,因而它具有线性码的性质。线性码的一个重要性质是封闭性,所谓封闭性,是指一种线性码中的任意两个码组之和仍为这种码中的一个码组。由于线性码具有封闭性,所以两个码组之间的距离必定是另一个码组的重量,因此线性码的最小距离就是码的最小重量(除全0码组外)。 循环码除了具有线性码的一般性质外,还具
15、有自己的性质:循环性。所谓循环性,是指一码组循环一位(即将最右端的一个码元移至左端,或反之)以后,仍为该码中的一个码组。由于循环码具有优良的代数结构,使得可用简单的反馈移位寄存器实现编码和伴随式计算,并且可以使用多种简单而有效的译码方法。循环码是研究最深入、理论最成熟、应用最广泛的一类线性分组码。接下来,详细分析一下循环码的编码及译码算法。2.1.3循环码的编码算法 根据给定的(n,k )值,再根据循环码生成定理对所给定信息位k,选定生成多项式g(x),所有码多项式c(x)都能被g(x)整除,且次数小于n- k。 若已知,并设信息元多项式要编码成系统循环码形式,即码字的最左边k位是信息元,其余
16、n- k位是校验元,则要用乘以m(x),再加上校验元多项式r(x),这样得到的码字多项式,上式中。c(x)一定是g(x)的倍数,即有多项式或,注意到g(x)为n- k次多项式,而r(x)最多为n- k-1次多项式,必有r(x)= ,即r(x)必是除以g(x)的余式。上述过程指出了系统循环码的编码方法:将信息组m(x)乘以变成,乘以的目的是将m(x)提高n- k次。然后将得到的除以g(x),得到商q(x)和余式r(x)/ g(x),可知该余式分子r(x),即为校验多项式,从而得到码字多项式根据上面的讨论,可得到(7,4)循环码编码的原理框图如图2所示: m(x)确定余式r(x): m(x)/ g
17、(x)的余式确定c(x):c(x)= m(x)+r(x)图2 循环码编码原理框图2.1.4循环码的译码算法设发送的码字为C(x),接收到的码字为R(x),如果C(x)= R(x),则说明收到的码字正确;如果C(x)R(x),则说明收到的码字出现错误,则有:R(x)=C(x)+E(x)。 公式中的E(x)称为错误图样。当E(x)=0时说明没有错误,用g(x)去除R(x),得=,因为C(x)是由g(x)生成的,故C(x)必能为g(x)除尽,显然R(x)与E(x)同余式(R(x) E(x)mod g(x)),以g(x)除E(x)所得余式称为伴随式S(x)。 由公式可知,R(x)=(C(x)+E(x)
18、)H(x)= E(x)H(x)。若E(x)=0,则E(x)H(x)=0;若E(x)0,则E(x)H(x)0。这说明,R(x)仅与错误图样有关,而与发送的码字无关,由此可以确定错误图样表。由于g(x)的次数为n-k次,g(x)除E(x)后得到余式(即伴随式S(x))的次数为n-k-1次,故S(x)共有个表达式,每个可能的表达式对应一个错误格式,可以知道(7,4)循环码的S(x)共有=8个表达式,可以根据错误图样表来纠正(7,4)循环码的一位错误。其伴随式如表1所示:表1 伴随式与错误图像关系表错误图样错误图样码字伴随式S(x)伴随式100110+111101110101010010000上式指出
19、了系统循环码的译码方法:将收到的码字R(x)用g(x)去除,如果除尽则无错;否则有错。如果有错可由余式S(x)一一找出对应图样,然后将错误图样E(x)与R(x)模2相加,即为所求码字C(x),从而实现纠错目的。 根据上面的讨论,可得(7,4)循环码译码的原理框图如图3所示: 由R(x)确定S(x): R(x)/g(x) 的余式S(x)=0,无误码同S(x),确定错误图样E(x) 纠错:C(x) = R(x)+E(x)N图3 循环码译码原理框图3.基于单片机的循环码编程3.1单片机编程在由单片机组成的遥控、遥测系统中,大多数直接利用单片机的串口通信功能进行数据的传输和控制。然而,在实际通信过程中
20、,大量的随机干扰严重影响了数据传输的准确信,破坏了系统的稳定性,使串行通信的误码率达到无法容忍的程度。为此,我们针对信道对数据传输的影响,提出了基于单片机系统的软件编码、译码方案,并详细介绍了实现方法。3.2用单片机实现循环码编码 单片机实现循环码编码编程时,本文采用的是用左移和异或运算相结合,实现除法求余的操作的。3.2.1用单片机实现循环码编码的流程图如图3所示 将四位信息位存在内部RAM连续的空间内,用单片机将信息位后补全三位监督位,具体做法:设要传输的信息分别为:0000、0001、0010、0011、0100、0101、0110、0111、1000、1001、1010、1011、11
21、00、1101、1110、1111由于,所以,或者本文选择30H-3FH用于存储码字分别为:、。其中红色字体标明的是需要添加的监督位。用单片机实现循环码编码的流程图如图4所示开始将四位二进制信息后补四位0,存于30H-3FH的片内RAM中 赋值:将首地址30H赋给R0,给R1赋0FH,R2赋04H,均用于计数R0所对应的地址中的数据赋给A累加器A中的数据备份一份到R7A中的数据入栈A与80H求与测试A的首位A为0?NA出栈并与立即数D0H异或,结果存入AYA出栈A左移一位, R2自减1R2为0?YA半字节交换,与R7求或,存入R0,R0增1,R1减1R1为0?Y结束NN图4 循环码编码流程图3
22、.2.2用单片机实现循环码编码的程序ORG 0000HSJMP STARTORG 30HSTART: MOV R0,#30H ;待传信息的首地址存入R0 MOV R1,#10H ;R1记待传信息的个数 MOV A,#00H ;四位待传信息0000后补四位0之后的初值存入ALOOP1 : MOV R0,A ;将补0后的待传信息存入R0所对应的存储单元 ADD A,#10H ;将待传信息加1后补四位0之后的八位数据存入A INC R0 ;数据地址加1 DJNZ R1,LOOP1 ;判断信息是否存储完毕 MOV R0,#30H ;将待编码信息的首地址赋给R0 MOV R1,#10H ;R1用来记待编
23、码数据的个数 MOV R2,#04H ;R2用来记移位的次数 LOOP3: MOV A,R0 ;取出一个数赋给 MOV R7,A ;将A中的数据备份在R7中 PUSH ACC ;A入栈 LOOP2: ANL A,#80H ;判断A首位是否为0 JZ SHIFT POP ACC XRL A,#0D0H ;A与生成多项式对应的二进制数据做异或 RL A ;A左移一位 PUSH ACC JMP A1SHIFT: POP ACC RL A PUSH ACC A1: DJNZ R2,LOOP2 ;R2自减1,并判断是否为0 SWAP A ;A高低四位互换,低四位中的高三位就是监督位 ORL A,R7 ;
24、将监督位加在信息位的后面 MOV R0,A ;将编码后的数据存入原存储区 INC R0 ;存储区地址加1 DJNZ R1,LOOP3 ;判断数据是否编码完毕 END 由以前的叙述可以知道,想要实现循环码编程,最重要的是通过求余运算找到余式,然后在信息码后加上余式即实现的编码。3.3用单片机实现循环码译码单片机实现循环码译码编程时,采用的是和编码程序相同的思想。3.3.1用单片机实现循环码译码的流程图 假设收到的数据存在30-3F单元中,生成多项式对应的二进制序列为1101 算出的余式右移一位作为指针,去查表,然后用表中的数据与接收到的数据模2相加即得到正确的数据,完成了译码。用单片机实现循环码
25、译码的流程图如图5所示开始接收到的信息存于30H-3FH的片内RAM中 赋值:将首地址30H赋给R0,给R1赋0FH,R2赋04H,均用于计数R0所对应的地址中的数据赋给A累加器A中的数据备份一份到R7A中的数据入栈A与80H求与测试A的首位A为0?NA出栈并与立即数D0H异或,结果存入AYA出栈A左移一位, R2自减R2为0?YA半字节交换,再右移一位R1为0?Y结束NNA为偏移量查表放入A,A异或 R7存入R0,R0增1,R1减1图5 循环码译码流程图3.3.2用单片机实现循环码译码的程序ORG 00H SJMP START ORG 30HSTART: MOV R0,#30H ;接收到的数
26、据的首地址存入R0 MOV R1,#10H ;R1用来记接收到数据的个数 MOV R2,#04H ;R2用来记左移的次数 LOOP3: MOV A,R0 ;取出接收到的一个数据存在A中 MOV R7,A ;将A中数据备份在R7中 PUSH ACC ;A中数据入栈 LOOP2: ANL A,#80H ;判断首位是否为0 JZ SHIFT POP ACC ;出栈数据存入A XRL A,#0D0H ;A与生成多项式对应的二进制序列做异或 RL A ;A左移一位 PUSH ACC ;A入栈 JMP A1 SHIFT: POP ACC ;A出栈 RL A ;A左移一位 PUSH ACC ;A入栈 A1:
27、 DJNZ R2,LOOP2 ;判断是否左移完毕 SWAP A ;A高低四位互换 RR A ;A右移一位得到的低三位就是对应的余式 MOV DPTR,#TABLE ;表首地址赋给DPTR MOVC A,A+DPTR ;取出于是对应的表中的错误图样 XRL A,R7 ;将取出的错误图样与接收到的数据模2相加完成译码 MOV R0,A ;译码后的数据存入原地址 INC R0 DJNZ R1,LOOP3 ;判断要译码的数据是否完毕TABLE: DB 00H,02H,04H,10H,80H,08H,40H,20H END4.实验验证算法4.1单片机通信为了验证循环码纠错检错的能力,我们需实现双机之间的
28、通信。在此我们采用单片机串行通信,由于发送的是八位数据,所以采用串行通信的方式1,定时计数器1的模式2两机均采用6.0MHz的振荡频率,SMOD=0,波特率为,定时器的初值为0F3H。4.2实验思想由于实验室里通信环境不算恶劣,通信距离很短,干扰很少,所以一般情况下,这样的通信是不会有误码的。但是为了验证循环码的纠错检错能力,我们希望在通信过程中会出现误码,因此,我们可以在通信过程中人为地改变要传输的信息位中的一位,这就是我们进行试验验证循环码纠错检错能力的思想。4.3实验编码 设甲机发送待传输的信息,由乙机进行接收。则甲乙两机实现发送和接收的程序分别如下:甲机: ORG 0000H LJMP
29、 MAIN ORG 23H LJMP SBR1 ORG 2000HMAIN: MOV TMOD,#20H MOV TL1,#0F3H MOV TH1,#0F3H SETB TR1 MOV SCON,#40H MOV R0,#30H ;要发送的数据的首地址 MOV R1,#10H ;要发送的数据的个数 SETB ES ;开中断 SETB EAMOV A,R0 XRL A,#30H ;人为地发送一位错码 MOV SBUF,A ;发送 SJMP $ ;等待中断SBR1: CLR TI INC R0 DJNZ R1,RETI JMP OUTRETIOUT: END乙机: ORG 0000H LJMP
30、MAIN ORG 23H LJMP SBR2 ORG 2000HMAIN: MOV TMOD,#20H MOV TL1,#0F3H MOV TH1,#0F3H SETB TR1 MOV SCON,#50H ;允许接收 MOV R0,#30H ;置接收的数据的首地址 MOV R1,#10H ;要接收的数据的个数 SETB ES ;开中断 SETB EAMOV A,R0 MOV A,SBUF ;接收 SJMP $ ;等待中断SBR2: CLR RI DJNZ R1,RETI JMP OUTRETIOUT: END当接收完毕以后,调用前面编好的译码的程序。5.结果处理由循环码的性质我们可以知道,对于(7,4)循环码来说,最小码距d=4,可以检测出3位错误,纠正1位错误,编码效率为100%=51.7%。设传输信道的误码率为p,据此设定信道模型存在如下关系:传输正确概率为,信息帧传输错误概率为,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨领域学习在提高综合职业素养中的作用研究
- 混合式学习模式下学生自主学习的培养策略
- 2025年冀教版八年级历史上册月考试卷含答案
- 2025年人教新起点选修6历史下册月考试卷
- 二零二五年度健康医疗合同中的患者隐私保护与责任承担4篇
- 二零二五年度模具钢材市场分析与风险评估合同4篇
- 二零二五年度猕猴桃树种子知识产权保护及商业化应用合同4篇
- 二零二五年度煤炭运输合同环境风险防范范本4篇
- 二零二五年度泥工贴砖工程设计与施工总承包合同4篇
- 2025年度欧盟电子商务政策实施细则合同4篇
- 2025水利云播五大员考试题库(含答案)
- 老年髋部骨折患者围术期下肢深静脉血栓基础预防专家共识(2024版)解读
- 中药饮片验收培训
- 手术室专科护士工作总结汇报
- DB34T 1831-2013 油菜收获与秸秆粉碎机械化联合作业技术规范
- 苏州市2025届高三期初阳光调研(零模)政治试卷(含答案)
- 创伤处理理论知识考核试题及答案
- (正式版)HG∕T 21633-2024 玻璃钢管和管件选用规定
- 《义务教育数学课程标准(2022年版)》测试题+答案
- 残疾军人新退休政策
- 白酒代理合同范本
评论
0/150
提交评论