单片机实现(74)汉明码的编码毕业设计_第1页
单片机实现(74)汉明码的编码毕业设计_第2页
单片机实现(74)汉明码的编码毕业设计_第3页
单片机实现(74)汉明码的编码毕业设计_第4页
单片机实现(74)汉明码的编码毕业设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、单片机实现(7,4)汉明码的编码摘 要在当今和未来的信息化社会中,数字通信已成为信息传输的重要手段,全球数字化已成为当今世界的主要潮流。但是,数字信号在传输过程中,加性噪声,码间串扰等都会产生误码,因此需要用信道编码来降低误码率,提高数字通信的可靠性。随着差错控制编码技术的蓬勃发展,作为信道传输过程抗干扰的有效手段,其中较为成熟的编码方法如汉明码、奇偶校验码、循环冗余码等编码技术,被广泛应用于计算机、电子通信、控制等领域。其中汉明码是一种能够纠正一位错误且编码效率较高的线性分组码。由于它的编译码在工程上较易实现,所以应用广泛。与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位

2、后面增加一些比特,可以验证数据的有效性。利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。在接受端通过纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向纠错fec。在数据链路中存在大量噪音时,fec可以增加数据吞吐量。通过在传输码列中加入冗余位(也称纠错位)可以实现前向纠错。但这种方法比简单重传协议的成本要高。汉明码利用奇偶块机制降低了前向纠错的成本。软件实现下面给出基于最常用的mcs-51单片机汇编语言的汉明码测试程序。它的有效信息占到了总编码长度的70%,测试程序中自动生成11个字节的原始数据。原始数据块的长度、存放地址可根据实际情况由用户自己确

3、定,只要将本测试程序的汉明码编码、解码子程序嵌入用户应用程序中,就可直接使用。本课题就是研究利用c8051f系列单片机来实现(7,4)汉明码的编码。关键词:单片机;线性分组码;(7,4)汉明码c8051f series mcu(7,4)hamming code encodingabstractin todays and future information society, digital communication has become an important means of information transmission, the global digital has become

4、a major trend in todays world. however, the digital signal in the transmission process, the additive noise, intersymbol interference, and this will result in error, channel coding, therefore need to reduce the error rate and improve the reliability of digital communications. with the error control c

5、oding techniques flourished as the transmission channel interference and effective means by which the more mature coding methods, such as hamming codes, parity bits, cyclic redundancy code and other coding techniques are widely used in computers, electronics communication, control and other fields.

6、hamming code which is able to correct a mistake and the code more efficient linear block codes. encoding and decoding in the project because of its easier to achieve, so widely used. with other similar error check code, hamming code parity bit also use the concept, followed by an increase in the num

7、ber of bits of data bits, the validity of data can be verified. use more than one parity bit, hamming codes can not only verify the data is valid, but also in the case of data error location specified in the error. by error correction decoding in a receiver automatically correct the transmission err

8、ors to achieve error correction code, known as forward error correction fec. there are a lot of data-link noise, fec can increase data throughput. transmission code in the column by adding redundant bits (also known as error correction bits) can be achieved fec. however, this method than a simple re

9、transmission protocol to the high cost. hamming code parity block mechanism reduces the use of forward error correction costs. software are given below based on the most popular mcs-51 microcontroller hamming code assembly language test program. it accounts for effective information length of 70% of

10、 the total coding and testing program automatically generates 11 bytes of raw data. the length of the original data block, or hold the actual situation according to the user to determine if the hamming code of the test program encoding and decoding routines embedded in user applications, can be used

11、 directly. this topic is to study the use of c8051f mcu to achieve (7,4) hamming code encoding.keywords:mcu; linear block codes; (7,4) hamming code目 录第1章 绪论1第2章 实验的软硬件环境22.1 vhdl语言的概述22.1.1 vhdl语言的发展历史22.1.2 vhdl语言的特点22.1.3 vhdl语言的开发流程42.1.4 vhdl的程序结构62.1.5 逻辑芯片的分类72.2 max+plus的使用10第3章 基于cpld的pcm解码电

12、路的设计163.1 pcm的概述163.2 解调pcm码的基本原理173.2.1 位同步的实现183.2.2 帧同步的实现213.2.3 字同步及pcm码串并转换233.2.4 模块综合273.3 分析与总结30总结32致谢33参考文献34第1章 绪论在简要介绍汉明码编码原理的基础上,详细分析干扰对汉明码纠错的影响;通过对汉明码重新组织排列,在不增加代码冗余的前提下,提高汉明码抗突发干扰的能力,为汉明码在实际中的应用提供新的思路;给出基于单片机的汇编语言汉明码测试程序。纠错引言汉明码是在原编码的基础上附加一部分代码,使其满足纠错码的条件。它属于线性分组码,由于线性码的编码和译码容易实现,至今仍

13、是应用最广泛的一类码。在实际应用中常常存在各种突发干扰,使连续多位数据发生差错。为了纠正3个以上的差错,就要加大码距,使代码冗余度大大增加,通信效率下降。本文所介绍的方法,就可以在不加大码距的同时,提高汉明码对突发干扰所产生差错的纠错能力,纠正多位连续的差错。用汉明码对连续多位差错纠正的实现要想在不加大码距的前提下,纠正连续多位差错,提高抵抗突发干扰的能力,可根据校验矩阵得出的汉明码重新进行组织排列。通信中,一般可分为异步、同步两种方式。在异步传输中起始位和停止位是由硬件电路产生的,如果干扰使起始位或停止位发生了改变,那么即使程序有跨字节纠错的能力也是无用的。对于同步方式则是可行的,因为在发送

14、接收双方取得同步后,数据块的每个字符间取消了起始位和停止位。常用的串口通信一般采用异步传输方式,能保证纠正连续1个字节的差错就可以了。我们也要看到,这样处理后提高了汉明码对突发干扰差错的纠错能力,却牺牲了对随机干扰纠错能力。因为这样对汉明码重新排序后,原来1个汉明码的各个位分布在不同位置的字节里,当有多个随机干扰出现时,可能使原来这个被拆开的1个汉明码多位出现差错。因此采用多少位的汉明码,如何对汉明码重新组织排列,要根据信道的特点来决定。软件实现下面给出基于最常用的mcs-51单片机汇编语言的汉明码测试程序。它的有效信息占到了总编码长度的70%,测试程序中自动生成11个字节的原始数据。原始数据

15、块的长度、存放地址可根据实际情况由用户自己确定,只要将本测试程序的汉明码编码、解码子程序嵌入用户应用程序中,就可直接使用。第2章 实验的软硬件环境2.1 keil c51语言的概述2.1.1 8051开发工具 keil c51标准c编译器为8051微控制器的软件开发提供了c语言环境,同时保留了汇编代码高效,快速的特点。c51编译器的功能不断增强, 使你可以更加贴近cpu本身,及其它的衍生产品。c51已被完全集成到uvision3的集成开发环境中,这个集成开发环境包含:编译器,汇编 器,实时操作系统,项目管理器,调试器。uvision3 ide可为它们提供单一而灵活的开发环境。 c51 v7版本

16、是目前最高效、灵活的8051开发平台。它可以支持所有8051的衍生产品,也可以支持所有兼容的仿真器,同时支持其它第三 方开发工具。因此,c51 v7版本无疑是8051开发用户的最佳选择。 2.1.2 uvision3集成开发环境一、项目管理 工程(project)是由源文件、开发工具选项以及编程说明三部分组成的。 一个单一的uvision3工程能够产生一个或多个目标程序。产生目标程序的源文件构成“组”。开发工具选项可以对应目标,组或单个文件。 uvision3包含一个器件数据库(device database),可以自动设置汇编器、编译器、连接定位器及调试器选项,来满足用户充分利用特定 微控制

17、器的要求。此数据库包含:片上存储器和外围设备的信息,扩展数据指针(extra data pointer)或者加速(mathaccelerator)的特性。 uvision3可以为片外存储器产生必要的连接选项:确定起始地址和规模。 二、集成功能 uvision3的强大功能有助于用户按期完工。 1.集成源极浏览器利用符号数据库使用户可以快速浏览源文件。用详细的符号信息来优化用户变数存储器。 2.文件寻找功能:在特定文件中执行全局文件搜索。 3.工具菜单:允许在v2集成开发环境下启动用户功能。 4.可配置svcs接口:提供对版本控制系统的入口。 5.pclint接口:对应用程序代码进行深层语法分析。

18、 6.infineon的easycase接口:集成块集代码产生。 7.infineon的dave功能:协助用户的cpu和外部程序。dave工程可被直接输入uvision32.1.3编辑器和调试器一、源代码编辑器 uvision3编辑器包含了所有用户熟悉的特性。彩色语法显像和文件辩识都对c源代码进行和优化。可以在编辑器内调试程序,它能提供一种自然的调试环境,使你更快速地检查和修改程序。 二、断点 uvision3允许用户在编辑时设置程序断点(甚至在源代码未经编译和汇编之前)。用户启动v2调试器之后,断点即被激活。断点可设置 为条件表达式,变量或存储器访问,断点被触发后,调试器命令或调试功能即可执

19、行。 在属性框(attributes column)中可以快速浏览断点设置情况和源程序行的位置。代码覆盖率信息可以让你区分程序中已执行和未执行的部分。 三、调试函数语言 uvision3中,你可以编写或使用类似c的数语言进行调试。 1.内部函数:如printf, memset, rand及其它功能的函数。 2.信号函数:模拟产生cpu的模拟信号和脉冲信号(simulate analog and digital inputs to cpu)。 3.用户函数:扩展指令范围,合并重复动作。 四、变量和存储器 用户可以在编辑器中选中变呈来观察其取值。双层窗口显示,可进行以下调整: 1.当前函数的局部变

20、量 2.用户在两个不同watch窗口页面上的自定义变量 3.堆栈调用(call stack)页面上的调用记录(树)(call tree) 4.不同格式的四个存储区 2.1.4 c51编译器keil c51编译器在遵循ansi标准的同时,为8051微控制器系列特别设计。语言上的扩展能让用户使用应用中的所有资源。 一、存储器和特殊功能寄存器的存取 c51编译器可以实现对8051系列所有资源的操作。sfr的存取由sfr和sbit两个关键字来提供。变量可旋转到任一个地址空间。用关键字at还能把变量放入固定的存储器存储模式(大,中,小)决定了变量的存储类型。连接定位器支持的代码区可达32个,这就允许用户

21、在原有64krom的8015基础上扩展程序。在v2的编译器和许多高性能仿真器中,可以支持应用程序的调试。 二、中断功能 c51允许用户使用c语言编写中断服务程序,快速进、出代码和寄存器区的转换功能使c语言中断功能更加高效。可再入功能是用关键字来定义的。多任务,中断或非中断的代码要求必须具备可再入功能。 三、灵活的指针 c51提供了灵活高效的指针。 通用指针用3个字节来存储存储器类型及目标地址,可以在8051的任意存储区内存取任何变量。特殊指针在声明的同时已指定了存储器类型,指向某一特定的存储区域。由于地址的存储只需12字节,因此,指针存取非常迅速。 2.1.5代码优化一、通用代码优化 1.常量

22、重叠(constant folding)6.寄存器间参数传递(parameter passing in register)2.通用子表达式删除(common subexpression elimination)7.循环(loop rotation)3.长度缩减速(reduction)8.死码删除(dead code elimination)4.控制流优化(control flow optimization)9.通用tail merging5.寄存器变量使用(register variable usage)10.通用子程序块打包(block subroutine packing)二、8051特殊

23、优化 1.孔颈优化(peephole optimization)4.数字覆盖(overlaying)2.跳转分支优化(switch-case optimization)5.扩展入口优化(extended access optimization)3.中断函数优化(interrupt function optimization)三、寄存器优化 c51为函数参数和局域变量分配了9个cpu寄存器。寄存器间最多可传递三个参数。p全局寄存器优化可删除不必要代码,优化cpu寄存器设备。 四、c语言实时库 c51实时库含100多种功能,其中大多数是可再入的。库支持所有的ansi c的程序,与嵌入式应用程序的限

24、制相符。 固有程序为硬件提供特殊指令,如:nop, testbit, rol, ror。 五,a51宏汇编 a51宏汇编支持标准宏和mpl宏。要实现快速产生汇编程序shell,就直接使用c51编译器的src。 在新的a51 v7版本中,允许用户c包含的头文件来定义常量和sfr。如今,一个单一头文件可被应用到x程序和汇编程序中。 2.1.6 rtx51实时核模块 rtx51多任务实时内核可以简化那些过程复杂,时间紧迫的软件项目。rtx51是无版税的,完全集成到keil c51工具链上,支持c语言和汇 编语言程序,也完全支持代码区的应用程序。rtx51完全支持: .标准任务(用一个共享寄存器区)

25、.快速任务(用一个专用寄存器区) .can .邮箱(为内部任务通信) .存储池(memory pools) rtx51 tiny是简化后的内核,适于单片机系统。 rtx51和rtx51 tiny都可使用户创建和撤消任务,发送和接收信号,也可执行其它操作系统管理。 一、上下文切换(任务切换) .轮询方式:(round-robin)每个任务在一个规定的时间段内运行,当一个任务的时间段结束时,另一个任务随之开始。 .抢占方式(preemptive):优先级最高的任务最先执行,直到被一个具有更高优先级的任务打断,或是为等待某个事件而主动放弃控制权。 二、事件与中断 rtx 51支持下列事件 rtx51

26、同时支持中断功能,可以向任务中发送或从任务中接收信号和信息。1.timeouts: 延迟到特定定时点4.messages: 在任务间互传信息2.intervals: 延迟一段时间间隔5.interrupts: 处理硬件中断3.signals: 协调内部任务操作6.semaphores: 共享有限资源2.1.5测试程序uvision2调试器具备所有常规源极调试,符号调试特性以及历史跟踪,代码覆盖,复杂断点等功能dde界面和shift语言支持自动程序测试 一、和外设模拟装置 uvision3为8051及衍生产品提供了高速模拟功能和片上扩展口在对话框内可直接观察和修改值,也可以用预装的c-like宏

27、指令书写符号函数来提供动态输入。 二、目标监控器 uvision3含一个可配置的监控器,可测试目标器件上的软件体。监控器用uvision2的调试器直接工作,可支持代码区。它要求目标系统具备6字节堆栈空间,6kb的代码和256字节xdata ram。 三、mcb517/251启动工具包 在开始一项8051工程时,mcb启动工具会对你有很大帮助。每一个启动工具包括一套2k字节的开发工具和许多可快速运行的举例程序。用户可在检测8051性能的同时,查看开发工具的可行性。 mcb517ac板含高性能infineonc517a单片机,它提供标准8052外围设备和a/d转换器,pwm,搜索比较,8位数据指针

28、,一个高速运算单元。同时包含对81c90can控制器和代码区的支持。 2.1.5 c51 v7版增强功能介绍c51 v7版提供了很多新的和增强的功能,使开发8051嵌入式应用比以前更加简单。c51 v7版新功能包括:新版编译器和连接器更加优化,可以缩短程序的大小; 能完全模拟支持的器件更多,如philips 80c51mx, dallas 80c390和analog devices microconverters;新的 isd51系统内调试器,允许在不变的目标硬件上调试程序;可更好地支持philips 51mx的24位地址; rtx51 tiny增加了新功能,它比以前更小,但提供的功能更多。2

29、.2 c8051f单片机简介单片机自20世纪70年代末诞生至今,经历了单片微型计算机scm、微控制器mcu及片上系统soc三大阶段,前两个阶段分别以mcs-51和80c51为代表。随着在嵌入式领域中对单片机的性能和功能要求越来越高,以往的单片机无论是运行速度还是系统集成度等多方面都不能满足新的设计需要,这时siliconlabs 公司推出了c8051f系列单片机,成为soc的典型代表。 c8051f具有上手快(全兼容8051指令集)、研发快(开发工具易用,可缩短研发周期)和见效快(调试手段灵活)的特点,其性能优势具体体现在以下方面:基于增强的cip-51内核,其指令集与mcs-51完全兼容,具

30、有标准8051的组织架构,可以使用标准的803x/805x汇编器和编译器进行软件开发。cip-51采用流水线结构,70%的的指令执行时间为1或2个系统时钟周期,是标准8051指令执行速度的12倍;其峰值执行速度可达100mips(c8051f120等),是目前世界上速度最快的8位单片机。增加了中断源。标准的8051只有7个中断源siliconlabs 公司 c8051f系列单片机扩展了中断处理这对于时实多任务系统的处理是很重要的扩展的中断系统向cip-51提供22个中断源允许大量的模拟和数字外设中断一个中断处理需要较少的cpu干预却有更高的执行效率。集成了丰富的模拟资源,绝大部分的c8051f

31、系列单片机都集成了单个或两个adc,在片内模拟开关的作用下可实现对多路模拟信号的采集转换;片内adc的采样精度最高可达24bit,采样速率最高可达500ksps,部分型号还集成了单个或两个独立的高分辨率dac,可满足绝大多数混合信号系统的应用并实现与模拟电子系统的无缝接口;片内温度传感器则可以迅速而精确的监测环境温度并通过程序作出相应处理,提高了系统运行的可靠性。集成了丰富的外部设备接口。具有两路uart和最多可达5个定时器及6个pca模块,此外还根据不同的需要集成了smbus、spi、usb、can、lin等接口,以及rtc部件。外设接口在不使用时可以分别禁止以降低系统功耗。与其他类型的单片

32、机实现相同的功能需要多个芯片的组合才能完成相比,c8051单片机不仅减少了系统成本,更大大降低了功耗。增强了在信号处理方面的性能,部分型号具有16x16 mac以及dma功能,可对所采集信号进行实时有效的算法处理并提高了数据传送能力。具有独立的片内时钟源(精度最高可达0.5%),设计人员既可选择外接时钟,也可直接应用片内时钟,同时可以在内外时钟源之间自如切换。片内时钟源降低了系统设计的复杂度,提高了系统可靠性,而时钟切换功能则有利于系统整体功耗的降低。提供空闲模式及停机模式等多种电源管理方式来降低系统功耗实现了i/o从固定方式到交叉开关配置。固定方式的i/o端口,既占用引脚多,配置又不够灵活。

33、在c8051f中,则采用开关网络以硬件方式实现i/o端口的灵活配置,外设电路单元通过相应的配置寄存器控制的交叉开关配置到所选择的端口上。复位方式多样化,c8051f把80c51单一的外部复位发展成多源复位,提供了上电复位、掉电复位、外部引脚复位、软件复位、时钟检测复位、比较器0复位、wdt复位和引脚配置复位。众多的复位源为保障系统的安全、操作的灵活性以及零功耗系统设计带来极大的好处。从传统的仿真调试到基于jtag接口的在系统调试。c8051f在8位单片机中率先配置了标准的jtag接口(ieee1149.1)。c8051f的jtag接口不仅支持flash rom的读/写操作及非侵入式在系统调试,

34、它的jtag逻辑还为在系统测试提供边界扫描功能。通过边界寄存器的编程控制,可对所有器件引脚、sfr总线和i/o口弱上拉功能实现观察和控制。基于上述特点,siliconlabs 公司c8051f系列单片机作为soc芯片的杰出代表能够满足绝大部分场合的复杂功能要求,并在嵌入式领域的各个场合都得到了广泛的应用:在工业控制领域,其丰富的模拟资源可用于工业现场多种物理量的监测、分析及控制和显示;在便携式仪器领域,其低功耗和强大的外设接口也非常适合各种信号的采集、存储和传输;此外,新型的c8051f5xx系列单片机也在汽车电子行业中崭露头角。正是这些优势,使得c8051单片机在进入中国市场的短短几年内就迅

35、速风靡,相信随着新型号的不断推出以及推广力度的不断加大,c8051系列单片机将迎来日益广阔的发展空间,成为嵌入式领域的时代宠儿此系列单片机完全兼容mcs-51指令集,容易上手,开发周期短,大大节约了开发成本。c8051f系统集成度高,总线时钟可达25m。 第3章 c8051f系列单片机实现(7,4)汉明码的编码汉明码是汉明(hamming)于1950年提出的能纠正一位错的线性分组码。汉明码有许多很好的性质,是一种完备码,它可以用一种简洁有效的方法进行译码。由于他的编、译码简单,且教容易实现,因此被广泛采用,尤其在计算机存储与运算系统中被广泛运用。汉明码的抗干扰能力较强,但付出的代介也很大,比如

36、8比特汉明码有效信息只有总编码长度的一半,可以纠正1个差错发现2个差错。在实际应用中常常存在各种突发干扰,使连续多位数据发生差错。为了纠正3个以上的差错,就要加大码距,使代码冗余度大大增加,通信效率下降。本文所介绍的方法,就可以在不加大码距的同时,提高汉明码对突发干扰所产生差错的纠错能力,纠正多位连续的差错。1 汉明码纠错原理及设计设原代码的码长为k比特,附加纠错编码部分为r比特,则合成后的纠错码为n=k+r比特。如果这种纠错码的纠错能力为纠正1个差错,则应满足如下基本条件:2rk+r+1当上式取等号时则称汉明码(hamming code)。干扰不仅使原代码的每一位(k比特(可能出错,而且附加

37、纠错位(r比特)也可能出错,故“一个差错”的情况共有k+r种,加上“正常”状态共有k+r+1种状态,而r比特的附加纠错位要能分辨这k+r+1种状态。汉明码是线性分组码,n,k线性分组码的编码设计就是在满足给定条件(如码距)下,如何从已知的k个信息元中求同r=n-k个校验元。要计算出校验元,就要先求出汉明码校验矩阵。我们可以从线性空间的角度去分析,推出一致校验矩阵。这里给出构造“纠正1个差错发现2个差错”汉明码校验矩阵的简便方法。以实际应用中经常使用的16位比特汉明码为例来说明。15比特汉明码由11位信息位、4位校验位组成,因此,编码长度为n=k+r=11+4=15。我们把1,2,3,15化为二

38、进制数,然后把它们作为矩阵的纵列,可得到的矩阵为:将包含单个1的4个纵列移到右边,在最后加1列全0的纵列,在第1行上面加1行全1的横行。这样就得到了16,11,4可纠正1位错误发现2位错误的增广汉明码校验矩阵。可以根据编程要求组织信息位和校验位的位置,最后得到矩阵如下:d1、d2、d4、d8是校验位,d16是全字节偶校验位,其余11位是信息位。校验码分别是c0=0ab61h,c1=0cda2h,c2=0f1c4h,c3=0fe08h,c4=0ffffh。2 用汉明码对连续多位差错纠正的实现要想在不加大码距的前提下,纠正连续多位差错,提高抵抗突发干扰的能力,可根据校验矩阵得出的汉明码重新进行组织

39、排列。以16比特的汉明码为例,把11个字节的数据编码为16个字节的汉明码后再按高低字节分成两组。我们把每组字节8个汉明码的第1位分别取出,组成第1个字节。然后,再把这8个字节汉明码的第2位取出,组成第2个字节。依此类推,将这组8个字节汉明码处理完毕,得到新的8个字节编码,两组一共16字节。我们可以看到这们排序后,每个字节包括原来8个汉明码的其中1位。这样,如果一次突发干扰使某一编码字节连续8位都发生改变,实际是分别使原来8个汉明码的其中1位发生了改变。只要在纠错前把受干扰的编码恢复为原来正常的排列顺序,就可通过计算校验码完成差错的定位及纠错。如果有163个字节的原始数据,经编码后为240个字节

40、的汉明码,那么如果把240个字节的汉明码的每一位都取出,分别组成15个字节的编码,这样是不是可以连续纠正15个字节的差错了呢?在实际应用中要分情况而定。通信中,一般可分为异步、同步两种方式。在异步传输中起始位和停止位是由硬件电路产生的,如果干扰使起始位或停止位发生了改变,那么即使程序有跨字节纠错的能力也是无用的。对于同步方式则是可行的,因为在发送接收双方取得同步后,数据块的每个字符间取消了起始位和停止位。常用的串口通信一般采用异步传输方式,能保证纠正连续1个字节的差错就可以了。我们也要看到,这样处理后提高了汉明码对突发干扰差错的纠错能力,却牺牲了对随机干扰纠错能力。因为这样对汉明码重新排序后,

41、原来1个汉明码的各个位分布在不同位置的字节里,当有多个随机干扰出现时,可能使原来这个被拆开的1个汉明码多位出现差错。因此采用多少位的汉明码,如何对汉明码重新组织排列,要根据信道的特点来决定。3.1 编码原理3.1.1 基本概念线性分组码是一类重要的纠错码,应用很广泛。在(n,k)分组码中,若督元是按线性关系相加而得到的,则称其为线性分组码。现在以(7,4)分组码为例来说明线性分组码的特点。设其码字为a=a6,a5,a4,a3,a2,a1,a0,其中前4位是信息元,后3位是监督元,可用下列线性方程组来描述该分组码,产生监督元: a2 = a6 + a5 + a4 a1 = a6 + a5+ a3

42、 (2.1.1) a0 = a6+ a4 + a3显然,这3个方程是线性无关的。经计算可得(7,4)码的全部码字,如表2-1所示。表2-1 (7,4)码的全部码字序号码 字序号码 字信 息码元监 督 元信 息码元监 督 元00 0 0 00 0 081 0 0 01 1 110 0 0 10 1 191 0 0 11 0 020 0 1 01 0 1101 0 1 00 1 030 0 1 11 1 0111 0 1 10 0 140 1 0 01 1 0121 1 0 00 0 150 1 0 11 0 1131 1 0 10 1 060 1 1 00 1 1141 1 1 01 0 070

43、 1 1 10 0 0151 1 1 11 1 1不难看出,上述(7,4)码的最小码距d0=3,它能纠1个错或检2个错。汉明码是能够纠正单个错误的线性分组码,其特点是:最小码距d0=3,码长n与监督位满足n=2r-1的关系,上述的(7,4)线性分组码就是一个汉明码。3.1.2 监督矩阵h式(2.1.1)所示(7,4)汉明码的3个监督方程改写后可用矩阵形式表示为 a6 a5 1 1 1 0 1 0 0 a4 0 1 1 0 1 0 1 0 a3 = 0 (2.2.1) 1 0 1 1 0 0 1 a2 0 a1 a0并简记为 hat=0t 或 aht=0 (2.2.2)h称为监督矩阵,一旦h给定

44、,信息位和监督位之间的关系也就确定了。h矩阵可以分成2部分 1 1 1 0 1 0 0 h = 1 1 0 1 0 1 0 =p ir (2.2.3) 1 0 1 1 0 0 1 hat=0t,可以用来作为判断接收码字a是否出错的依据。3.1.3 生成矩阵g把监督方程补充完整并改写为矩阵形式a6 1 0 0 0a5 0 1 0 0a4 0 0 1 0 a6a3 = 0 0 0 1 a5 (2.3.1)a2 1 1 1 0 a4a1 1 1 0 1 a3a0 1 0 1 1 a = a6 a5 a4 a3 g (2.3.2)其中 1 0 0 0 1 1 1 0 1 0 0 1 1 0 g = 0

45、 0 1 0 1 0 1 (2.3.3) 0 0 0 1 0 1 1g称为生成矩阵,由g和信息组就可以产生全部码字。生成矩阵也可以分成2部分,即 g = ik q (2.3.4)其中 1 1 1 q = 1 1 0 = pt (2.3.5) 1 0 1 0 1 13.1.3 伴随式(校正子)s设发送码组a= an1,an2,a1,a0 ,在传输过程中可能发生误码。接收码组b= bn1,bn2,b1,b0 ,收发码组之差定义为错误图样e,即 e = b - a(2.4.1)令s = bht,称为伴随式或校正子。s = bht =(a + e)ht = eht(2.4.2)上述(7,4)汉明码的伴

46、随式与错误图样的对应关系如表2-2所示。表2-2(7,4)汉明码s与e的对应关系序号错误码位ese6 e5 e4 e3 e2 e1 e0s2 s1 s00/0 0 0 0 0 0 00 0 01b00 0 0 0 0 0 10 0 12b10 0 0 0 0 1 00 1 03b20 0 0 0 1 0 01 0 04b30 0 0 1 0 0 00 1 15b40 0 1 0 0 0 01 0 16b50 1 0 0 0 0 01 1 07b61 0 0 0 0 0 01 1 13.2 (7,4)汉明码编码器的设计3.2.1 (7,4)汉明码的编码思路(7,4)汉明码的编码就是将输入的四位信

47、息码编成七位的汉明码,即加入三位监督位。根据式(2.3.2)a = a6 a5 a4 a3 g可知,信息码与生成矩阵g的乘积就是编好以后的(7,4)汉明码,而生成矩阵g又是已知的,由式(2.3.3)得 1 0 0 0 1 1 1 0 1 0 0 1 1 0 g = 0 0 1 0 1 0 1(3.1.1) 0 0 0 1 0 1 1所以,可以得出如下方程组 a6 = a6 a5 = a5 a4 = a4 a3 = a3(3.1.2) a2 = a6 + a5 + a4 a1 = a6 + a5 + a3 a0 = a6 + a4 + a3根据式(3.1.2)就可以编出编码程序了。3.2.2 (

48、7,4)汉明码的编码程序设计开始对单片机进行初始化汉明码编码程序流程图帧同步上升沿?y,到来n,没到n,不等于输出帧同步信号i=24?y,等于bs_in上升沿b=b+wave_inj; j=j+1;i=i+1;输出查找表中的一位;bs_out=!bs_out2bs_in上升沿bs_out=!bs_outbs_in下降沿输出查找表中的一位,bs_out!bs_out2bs_in上升沿bs_out!bs_outj4?j0利用查找表查找出b值对应的值n,没到n,没到n,没到y,到来y,到来y,到来y,到来n,没到第4章 编译程序的调试、下载与运行4.1 (7,4)汉明码的编码程序4.1.1 头文件及

49、端口等初步设置 头文件和内部时钟的设置:#include #include void port_init (void) xbr0=0x00; xbr1=0x14; /将int0,int1连接到交叉开关xbr2=0x40;prt0cf=0x40;prt1cf=0xff;prt2cf=0xff; void sysclk_init (void) oscicn=0x17; /内部时钟16mhz 端口设置: sbit wave_out=p06; /编码输出 p0.6端口 sbit bs_out=p12; /编码位同步输出 p1.2端口 sbit fs_out=p16; /编码帧同步输出 p1.6端口 s

50、bit wave_in=p04; /编码输入 p0.4端口 sbit bs_in=p03; /编码位同步输入 p0.3端口 sbit fs_in=p02; /编码帧同步输入 p0.2端口 sbit bs2_in=p05; /2bs位同步输入 p0.5端口建立数组,供编码时查表输出: unsigned char data i,j,k,a,b; unsigned char data c=0,11,21,30,38,45,51,56,71,76,82,89,97,106,116,127;4.1.2 汉明码编码主程序/主函数部分 main() wdtcn=0xde; wdtcn=0xad; /关看门狗 port_init(); sysclk_init(); a=0; b=0; fs_out=0; while(fs_in); /

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论