基于VHDL的(7,4)汉明码编解码器的设计
通信原理设计报告(7-4)汉明码的编解码设计

目录前言...............................................................1第1章设计要求..................................................3第2章QuartusⅡ软件介绍.......................................4第3章汉明码的构造原理........................................6 3.1 (7,4)汉明码的构造原理...........................................63.2 监督矩阵H与生成矩阵G..........................................73.3 校正子(伴随式S)...............................................8第4章(7,4)汉明码编码器的设计...............................104.1 (7,4)汉明码的编码原理及方法....................................104.2 (7,4)汉明码编码程序的设计......................................104.3 (7,4)汉明码编码程序的编译及仿真................................11第5章(7,4)汉明码译码器的设计.............................125.1 (7,4)汉明码的译码方法.........................................125.2 (7,4)汉明码译码程序的设计....................................13 5.3 (7,4)汉明码译码程序的编译及仿真..............................15第6章(7,4)汉明码编译码器的设计..........................176.1 (7,4)汉明码编译码器的设计...................................17参考文献.........................................................18体会与建议.......................................................19附录..............................................................20前言汉明(Hamming)码是一种能够纠正一位错码或检测两位错码的一种效率较高的线性分组码。
基于vhdl(7,4)汉明码编解码器的设计说明书

(7,4)汉明码编解码器的设计序言VHDL语言具有功能强大的语言结构,可用明确的代码描述复杂的控制逻辑设计,并且具有多层次的设计描述功能,支持设计库和可重复使用的元件的生成。
近几十年来,EDA技术获得了飞速发展。
它以计算机为平台,根据硬件描述语言VHDL,自动地完成逻辑编译、化简分割、综合及优化,布局布线,仿真直至对特定目标芯片的适配编译,逻辑映射和编程下载等工作。
以自顶向下的设计方法,使硬件设计软件化,摆脱了传统手工设计的众多缺点。
随着EDA技术的深入发展基于硬件描述语言的方法将有取代传统手工设计方法的趋势。
EDA ( Elect ronics Design Automation) 技术是随着集成电路和计算机技术飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。
目前,VHDL语言已经成为EDA的关键技术之一,VHDL 是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计,支持结构、数据流、行为三种描述形式的混合描述,覆盖面广,抽象能力强,因此在实际应用中越来越广泛。
汉明码是在原编码的基础上附加一部分代码,使其满足纠错码的条件。
它属于线性分组码,由于汉明码的抗干扰能力较强,至今仍是应用比较广泛的一类码。
本文用VHDL语言实现了(7,4)汉明码的编码和译码,并通过实例来说明利用VHDL语言实现数字系统的过程。
在介绍(7,4)汉明码编码和译码原理的基础上,设计出了(7,4)汉明码的编码器和译码器,写出了基于VHDL实现的源程序,并通过QUARTUSⅡ软件进行仿真验证。
第1章QuartusⅡ与VHDL简介1.1 QuartusⅡ软件简介QuartusⅡ是Altera公司推出的CPLD/FPGA的开发工具,QuartusⅡ提供了完全集成且与电路结构无关的开发环境,具有数字逻辑设计的全部特性。
?/P>Quartus Ⅱ设计软件提供完整的多平台设计环境,可以很轻松地满足特定设计的需要。
二元(7,4)汉明码的编译码分析与实验研究

设计(论文)题目:二元(7,4)汉明码的编译码分析与实验研究摘要汉明码(Hamming Code)在电信领域内属于线性分组码,或者可以称为线性调试码。
它是以发明者理查德·卫斯里·汉明的名字命名的。
汉明码在传输信息序列时插入校验码,当计算机存储或传输数据时,或者在信道传输的过程中,可能会产生误码,即信息错位,以检测并纠正一个比特错误。
由于汉明编码简单,它们被广泛应用于实际传输中。
本文主要涉及二元(7,4)汉明码的编码、译码及实现,以及信息论与编码的相关知识。
对于二元(7,4)汉明码C,其校验矩阵为H,汉明距离d(C)=3的充要条件是校验矩阵H的任意2个列矢量线性无关,且任意3个列向量是线性相关。
监督矩阵H生成的码是(7,4,3)码。
所以接下来问题是构建监督矩阵H和生成矩阵G,找出编码器和译码器输入和输出对应的逻辑关系,画出汉明码的编码电路图和译码电路图,通过VHDL语言实现汉明码的编码过程和译码过程,观察仿真波形,来观察实验结果。
关键字:二元(7,4)汉明码;生成矩阵;监督矩阵;编码;译码;AbstractHamming code field belongs to the linear block codes in the telecommunications, or you could be called linear debugging code. It is the inventor, Richard Wesley Hamming named after. Hamming code inserted into the check code in information transmission sequence, when the computer refers for data storage,or in the process of channel transmission. it may produce error, namely the informational burst-error, and Hamming Code could detect and correct errors one bit. Due to its simple hamming coding, they are widely used in the actual transmission.This paper mainly relates to binary (7, 4) hamming code about coding, decoding and realization, as well as the related knowledge of Information Theory and Coding. For binary (7, 4) hamming code called C, its supervision matrix of the H, hamming distance d (C) = 3 of any two of the sufficient and necessary condition is checking matrix H column vector linearly independent, and arbitrary three column vector is linearly dependent. Supervision of matrix H generated code is (7, 3) code. So the next problem is to build the generator matrix G and supervision matrix H, generate the encoder and decoder ,inputs and outputs corresponding logical relationship, as well as,draw the circuit diagram of hamming code encoding and decoding circuit diagram, using VHDL language realization of hamming code encoding and decoding process, observing the simulation waveform and the result of the experiment.Keywords:binary (7, 4) hamming code ;generator matrix;supervision matrix;encoding ;decoding ;引言汉明码是最早提出来的用于纠错的编码,它是一类可以纠正一位错误的高效的线性分组码。
Hamming(7,4)编译码器实验报告8.8

8.8 Hamming(7,4)编译码器1.1实验目的·加深理解Hamming(7,4)码的编码方法和抗干扰性能;·通过编程实现Hamming(7,4)码的编码算法,进一步掌握按位二进制加法的实现原理。
1.2 实验原理·输入:长度为4的任意二进制序列。
·输出:输入数据经Hamming(7,4)编码器编码之后,通过8.7节的BSC信道(错误概率为0.1)传输后,再经过Hamming(7,4)译码器译码输出得到信宿端的长度为4的二进制序列。
·源程序格式整齐清晰,注释简单明了。
1.3 实验内容1.3.1 算法描述Hamming(7,4)码的生成矩阵为G=1000101 0100110 0010111 0001011⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦其校验矩阵为H=1110100 0111010 1011001⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦1.3.2 实验程序#include<stdio.h>#define M 7#define N 3int fun(int a,int b){if(a==b)return (0);elsereturn (1);}int main(void){int a[M],i,p[N];printf("请输入四位码 m1,m2,m3,m4:");scanf("%d%d%d%d",&a[0],&a[1],&a[2],&a[3]);p[0]=fun(fun(a[0],a[1]),a[2]);p[1]=fun(fun(a[0],a[2]),a[3]);p[2]=fun(fun(a[1],a[2]),a[3]);printf("%d%d%d%d%d%d%d\n",a[0],a[1],a[2],a[3],p[0],p[1],p[2]);return 0;}1.3.3 运行结果1.3.4 结果分析·运行结果正确。
(完整版)(7,4)汉明码信道编码_共10页

E=B-A
(4.4.1)
令 S = BHT,称为伴随式或校正子。
S = B H t =(A + E) H t = E H t
(4.4.2)
上述(7,4)汉明码的伴随式与错误图样的对应关系如表2-2所示。
表2-2(7,4)汉明码 S 与 E 的对应关系
E
S
序
错误
e6 e5 e4 e3 e2 e1
号
码位
111
1
0001 011
9
1001
100
2
0010 101
10
1010
010
3
0011
110
11
1011
001
3
通信系统课程设计报告
4
0100
110
12
1100
5
0101
101
13
1101
6
0110
011
14
1110
7
0111
000
15
1111
001 010 100 111
不难看出,上述(7,4)码的最小码距 d0=3,它能纠1个错或检2个错。汉明码是能 够纠正单个错误的线性分组码,其特点是:最小码距 d0=3,码长 n 与监督位满足 n=2r-1的关系,上述的(7,4)线性分组码就是一个汉明码。
3.5 奇偶校验位
奇偶校验是一种添加一个奇偶位用来指示之前的数据中包含有奇数还是偶 数个1的检验方式。如果在传输的过程中,有奇数个位发生了改变,那么这个错 误将被检测出来(注意奇偶位本身也可能改变)。一般来说,如果数据中包含有 奇数个1的话,则将奇偶位设定为1;反之,如果数据中有偶数个1的话,则将奇
(7,4)汉明码课程设计

【摘要】本文主要介绍利用ALTERA公司的Quartus II软件实现(7,4)汉明码的编码和译码的设计,设计共分为三个模块:m序列产生与分组模块、编码模块、译码模块,实现m序列的分组输出。
在QuartusII编辑环境下用VHDL文本输入的输入方法编制程序,经编译正确后进行波形仿真,调试,从而验证设计的正确性。
关键字:汉明码,编码,译码,VHDL【Abstract】T his article propose a method for Hamming encoder and Hamming decoder which is based on the VHDL language. It introduces the theory of Hamming encoder and Hamming decoder and the source program based on VHDL, and the way simulated and checked through QuartusII.Throughout the whole design is totally divided into three modules: the m sequence generated and the Packet Module,the encoding module,the decoding Module.Keywords: Hamming, coder,encoder, decoder ,VHDL目录第1章问题的提出及方案论证 (3)1.1 问题的提出 (3)1.2 方案论证 (3)1.2.1 Quartus II和VHDL简介 (3)1.2.2 软件设计方案介绍 (6)第2章设计方案的实施 (8)2.1 m序列模块 (8)2.1.1 m序列简介 (8)2.1.2 m序列模块设计流程 (9)2.2 (7,4)汉明码知识介绍 (10)2.2.1基本概念 (10)2.2.2监督矩阵 (11)2.2.3生成矩阵 (12)2.2.4 伴随式(校正子)S (12)2.3 汉明码编码模块 (13)2.3.1汉明码编码原理 (13)2.3.2 汉明码编码程序设计流程 (14)2.4 汉明码译码模块 (15)2.4.1汉明码译码原理 (15)2.4.2汉明码译码程序设计流程 (16)第3章软件调试及遇到的问题 (19)3.1 软件调试仿真波形图 (19)3.2 软件调试过程中遇到的问题 (21)第4章总结体会 (22)附录: (23)参考文献 (30)第1章问题的提出及方案论证1.1 问题的提出在上学期的通信原理课程中,我们学习了线性码的基本理论知识。
基于FPGA汉明码编译码器设计

基于FPGA汉明码编译码器设计汉明码是一种能够检测和纠正错误的编码方式。
在FPGA(Field Programmable Gate Array)中,我们可以使用FPGA来设计并实现一个基于(7,4)汉明码的编码器和解码器。
1.编码器设计:编码器将4位数据编码为7位汉明码。
下面是一个基于FPGA的(7,4)汉明码编码器的设计步骤:-设置一个4位输入端口和一个7位输出端口。
-创建一个4×7的矩阵,用于存储所有可能输入与对应汉明码的关系。
每行代表一个输入,每列代表一个汉明码位。
-在FPGA中,使用逻辑门(如XOR门和AND门)来实现矩阵的功能。
根据矩阵,依次设计逻辑门电路来计算每个汉明码位。
例如,对于第一个汉明码位,使用四个输入位的异或门计算出结果。
-将每个汉明码位的结果输出到对应的输出端口。
2.解码器设计:解码器将7位汉明码解码为4位数据。
下面是一个基于FPGA的(7,4)汉明码解码器的设计步骤:-设置一个7位输入端口和一个4位输出端口。
-创建一个7×4的矩阵,用于存储所有可能的汉明码与对应的输出数据的关系。
每行代表一个汉明码,每列代表一个输出数据位。
-同样,使用逻辑门来实现矩阵的功能。
根据矩阵,依次设计逻辑门电路来计算每个输出数据位。
例如,对于第一个数据位,使用七个输入位的与门计算出结果。
-将每个输出数据位的结果输出到对应的输出端口。
3.性能分析和优化:可以通过FPGA的资源利用率和时钟频率等指标对设计进行性能评估。
通过仔细设计逻辑电路,合理分配资源和优化电路,可以提高编码器和解码器的性能。
可以考虑使用并行计算、流水线等技术来提高时钟频率和减少时延。
另外,还可以在FPGA中使用多个编码器和解码器来实现更高级的错误检测和纠正功能。
可以考虑使用更高级的汉明码,如(15,11)汉明码或(31,26)汉明码,来提高错误检测和纠正能力。
可以结合其他编码技术,如校验和,奇偶校验等,来增加冗余度和提高系统的可靠性。
单片机实现(7,4)汉明码的编码毕业设计

单片机实现(7,4)汉明码的编码摘要在当今和未来的信息化社会中,数字通信已成为信息传输的重要手段,全球数字化已成为当今世界的主要潮流。
但是,数字信号在传输过程中,加性噪声,码间串扰等都会产生误码,因此需要用信道编码来降低误码率,提高数字通信的可靠性。
随着差错控制编码技术的蓬勃发展,作为信道传输过程抗干扰的有效手段,其中较为成熟的编码方法如汉明码、奇偶校验码、循环冗余码等编码技术,被广泛应用于计算机、电子通信、控制等领域。
其中汉明码是一种能够纠正一位错误且编码效率较高的线性分组码。
由于它的编译码在工程上较易实现,所以应用广泛。
与其他的错误校验码类似,汉明码也利用了奇偶校验位的概念,通过在数据位后面增加一些比特,可以验证数据的有效性。
利用一个以上的校验位,汉明码不仅可以验证数据是否有效,还能在数据出错的情况下指明错误位置。
在接受端通过纠错译码自动纠正传输中的差错来实现码纠错功能,称为前向纠错FEC。
在数据链路中存在大量噪音时,FEC可以增加数据吞吐量。
通过在传输码列中加入冗余位(也称纠错位)可以实现前向纠错。
但这种方法比简单重传协议的成本要高。
汉明码利用奇偶块机制降低了前向纠错的成本。
软件实现下面给出基于最常用的MCS-51单片机汇编语言的汉明码测试程序。
它的有效信息占到了总编码长度的70%,测试程序中自动生成11个字节的原始数据。
原始数据块的长度、存放地址可根据实际情况由用户自己确定,只要将本测试程序的汉明码编码、解码子程序嵌入用户应用程序中,就可直接使用。
本课题就是研究利用C8051F系列单片机来实现(7,4)汉明码的编码。
关键词:单片机;线性分组码;(7,4)汉明码C8051F series MCU(7,4)hamming code encodingABSTRACTIn today's and future information society, digital communication has become an important means of information transmission, the global digital has become a major trend in today's 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 coding 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. 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 number 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 caseof data error location specified in the error. By error correction decoding in a receiver automatically correct the transmission errors 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 retransmission 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 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 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章实验的软硬件环境 (2)2.1 VHDL语言的概述 (2)2.1.1 VHDL语言的发展历史 (2)2.1.2 VHDL语言的特点 (2)2.1.3 VHDL语言的开发流程 (3)2.1.4 VHDL的程序结构 (5)2.1.5 逻辑芯片的分类 (5)2.2 MAX+plusⅡ的使用 (9)第3章基于CPLD的PCM解码电路的设计 (12)3.1 PCM的概述 (13)3.2 解调PCM码的基本原理 (18)3.2.1 位同步的实现 ..................................................................错误!未定义书签。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(7,4)汉明码编解码器的设计序言VHDL语言具有功能强大的语言结构,可用明确的代码描述复杂的控制逻辑设计,并且具有多层次的设计描述功能,支持设计库和可重复使用的元件的生成。
近几十年来,EDA技术获得了飞速发展。
它以计算机为平台,根据硬件描述语言VHDL,自动地完成逻辑编译、化简分割、综合及优化,布局布线,仿真直至对特定目标芯片的适配编译,逻辑映射和编程下载等工作。
以自顶向下的设计方法,使硬件设计软件化,摆脱了传统手工设计的众多缺点。
随着EDA技术的深入发展基于硬件描述语言的方法将有取代传统手工设计方法的趋势。
EDA ( Elect ronics Design Automation) 技术是随着集成电路和计算机技术飞速发展应运而生的一种高级、快速、有效的电子设计自动化工具。
目前,VHDL语言已经成为EDA的关键技术之一,VHDL 是一种全方位的硬件描述语言,具有极强的描述能力,能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计,支持结构、数据流、行为三种描述形式的混合描述,覆盖面广,抽象能力强,因此在实际应用中越来越广泛。
汉明码是在原编码的基础上附加一部分代码,使其满足纠错码的条件。
它属于线性分组码,由于汉明码的抗干扰能力较强,至今仍是应用比较广泛的一类码。
本文用VHDL语言实现了(7,4)汉明码的编码和译码,并通过实例来说明利用VHDL语言实现数字系统的过程。
在介绍(7,4)汉明码编码和译码原理的基础上,设计出了(7,4)汉明码的编码器和译码器,写出了基于VHDL实现的源程序,并通过QUARTUSⅡ软件进行仿真验证。
第1章QuartusⅡ与VHDL简介1.1 QuartusⅡ软件简介QuartusⅡ是Altera公司推出的CPLD/FPGA的开发工具,QuartusⅡ提供了完全集成且与电路结构无关的开发环境,具有数字逻辑设计的全部特性。
?/P>Quartus Ⅱ设计软件提供完整的多平台设计环境,可以很轻松地满足特定设计的需要。
它是可编程片上系统(SOPC)设计的综合性环境,拥有FPGA 和CPLD设计的所有阶段的解决方案。
与其它EDA软件相比较QuartusⅡ软件的特点主要包括:1、可利用原理图、结构框图、Verilog HDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件。
2、芯片(电路)平面布局连线编辑。
3、LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统的性能影响较小或无影响的后续模块。
4、功能强大的逻辑综合工具。
5、完备的电路功能仿真与时序逻辑分析。
6、定时/时序分析与关键路径延时分析。
7、可使用SignalTap Ⅱ逻辑分析工具进行嵌入式的逻辑分析。
8、支持软件源文件的添加和创建,并将它们链接起来生成编程文件。
9、使用组合编译方式可一次完成整体设计流程。
10、自动定位编译错误。
11、高效的期间编程与验证工具。
12、可读入标准的EDIF网表文件、VHDL网表文件和Verilog网表文件。
13、能生成第三方EDA软件使用的VHDL网表文件和Verilog网表文件。
1.2 VHDL简介“VHDL设计”作为信息类专业新开出的一门重要的专业课,相对于传统课程具有内容新、发展快、应用性强等特点。
在硬件电子电路设计领域中,电子设计自动化(EDA)工具已成为主要的设计手段,而VHDL语言则是EDA的关键技术之一。
VHDL语言具有功能强大的语言结构,可用明确的代码描述复杂的控制逻辑设计,并且具有多层次的设计描述功能,支持设计库和可重复使用的元件的生成。
近几十年来,EDA技术获得了飞速发展。
它以计算机为平台,根据硬件描述语言VHDL,自动地完成逻辑编译、化简分割、综合及优化,布局布线,仿真直至对特定目标芯片的适配编译,逻辑映射和编程下载等工作。
以自顶向下的设计方法,使硬件设计软件化,摆脱了传统手工设计的众多缺点。
随着EDA技术的深入发展基于硬件描述语言的方法将有取代传统手工设计方法的趋势。
第2章 (7,4)汉明码的原理2.1 基本概念线性分组码是一类重要的纠错码,应用很广泛。
在(n,k)分组码中,若督元是按线性关系相加而得到的,则称其为线性分组码。
现在以(7,4)分组码为例来说明线性分组码的特点。
设其码字为A=[a6,a5,a4,a3,a2,a1,a0],其中前4位是信息元,后3位是监督元,可用下列线性方程组来描述该分组码,产生监督元:a2 = a6 + a5 + a4a1 = a6 + a5 + a3 (2.1.1)a0 = a6 + a4 + a3显然,这3个方程是线性无关的。
经计算可得(7,4)码的全部码字,如表2-1所示。
表2-1 (7,4)码的全部码字?/P>不难看出,上述(7,4)码的最小码距d0=3,它能纠1个错或检2个错。
汉明码是能够纠正单个错误的线性分组码,其特点是:最小码距d0=3,码长n与监督位满足n=2r-1的关系,上述的(7,4)线性分组码就是一个汉明码。
2.2 监督矩阵H式(2.1.1)所示(7,4)汉明码的3个监督方程改写后可用矩阵形式表示为a6a51 1 1 0 1 0 0 a4 01 1 0 1 0 1 0 · a3 = 0 (2.2.1)1 0 1 1 0 0 1 a2 0a1a0并简记为H·AT=0T 或A·HT=0(2.2.2)H称为监督矩阵,一旦H给定,信息位和监督位之间的关系也就确定了。
H矩阵可以分成2部分1 1 1 0 1 0 0H = 1 1 0 1 0 1 0 =[P Ir] (2.2.3)1 0 1 1 0 0 1H·AT=0T,可以用来作为判断接收码字A是否出错的依据。
2.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 1A = [a6 a5 a4 a3] ·G(2.3.2)其中1 0 0 0 1 1 10 1 0 0 1 1 0G = 0 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 1Q = 1 1 0 = PT (2.3.5)1 0 10 1 12.4 伴随式(校正子)S设发送码组A= [an—1,an—2,…,a1,a0 ],在传输过程中可能发生误码。
接收码组B=[ bn—1,bn—2,…,b1,b0 ],收发码组之差定义为错误图样E,即E = B - A (2.4.1)令S = BHT,称为伴随式或校正子。
S = BHT =(A + E)HT = EHT (2.4.2)上述(7,4)汉明码的伴随式与错误图样的对应关系如表2-2所示。
表2-2(7,4)汉明码S与E的对应关系第3章 (7,4)汉明码编解码器的设计3.1 (7,4)汉明码的编码思路及程序设计3.1.1 (7,4)汉明码的编码思路(7,4)汉明码的编码就是将输入的四位信息码编成七位的汉明码,即加入三位监督位。
根据式(2.3.2)A = [a6 a5 a4 a3] ·G可知,信息码与生成矩阵G的乘积就是编好以后的(7,4)汉明码,而生成矩阵G又是已知的,由式(2.3.3)得1 0 0 0 1 1 10 1 0 0 1 1 0G = 0 0 1 0 1 0 1 (3.1.1)0 0 0 1 0 1 1所以,可以得出如下方程组a6 = a6a5 = a5a4 = a4a3 = a3 (3.1.2)a2 = a6 + a5 + a4a1 = a6 + a5 + a3a0 = a6 + a4 + a3根据式(3.1.2)就可以编出编码程序了。
3.1.2 (7,4)汉明码的编码程序设计根据(7,4)汉明码的编码原理,首先画出程序设计的流程图:图3.1 编码流程图输入信息码a3a2a1a0,输出(7,4)汉明码b6b5b4b3b2b1b0。
首先,输入信息码a3a2a1a0,即使用以下语句:port(a:in std_logic_vector(3 downto 0);然后,根据式(3.1.2),就可以得到监督位与信息码之间的对应关系,使用异或运算,即:b(2)<=a(3) xor a(2) xor a(1);b(1)<=a(3) xor a(2) xor a(0);b(0)<=a(3) xor a(1) xor a(0);最后,将算好的监督位与原来输入的信息码一起输出,这样,编码程序就算完成了。
3.2 (7,4)汉明码的译码思路及程序设计3.2.1 (7,4)汉明码的译码思路(7,4)汉明码的译码就是将输入的七位汉明码翻译成四位的信息码,并且纠正其中可能出现的一个错误。
由于生成矩阵G是已知的,所以根据式(2.3.4)G = [Ik Q] ,可以得到矩阵Q的值1 1 1Q = 1 1 0 = PT (3.2.1)1 0 10 1 1那么 1 1 1 0P = 1 1 0 1 (3.2.2)1 0 1 1而监督矩阵H与PT又存在一定的关系,即H =[P Ir] (3.2.3)那么就可以算出监督矩阵H的值,即1 1 1 0 1 0 0H = 1 1 0 1 0 1 0 (3.2.4)1 0 1 1 0 0 1所以 1 1 11 1 01 0 1HT = 0 1 1 (3.2.5)1 0 00 1 00 0 1根据式(2.4.2)S = BHT =(A + E)HT = EHT可以看出校正子S与错误图样E之间有确定的线性变换关系。
而E =[ en-1,en-2,…,e1,e0 ],这样就可以算出校正子S与(7,4)汉明码各位之间的关系,即S2 = a2 + a6 + a5 + a4S1 = a1 + a6 + a5 +a3 (3.2.6)S0 = a0 + a6 + a4 + a3对照表2-2,就可以确定每一位出错时,对应的校正子s2s1s0的值。
这样,译码问题就迎刃而解了。
3.2.2 (7,4)汉明码的译码程序设计根据(7,4)汉明码的译码原理,首先画出程序设计的流程图:图3.2.1 译码流程图首先,输入7位汉明码a6a5a4a3a2a1a0,用以下语句来实现:port(a:in std_logic_vector(6 downto 0);然后,根据这7位码a6a5a4a3a2a1a0,计算校正子s2s1s0的值,根据式(3.2.6)可知校正子S与(7,4)汉明码各位之间的关系,即:ss(2):=a(6) xor a(5) xor a(4) xor a(2);ss(1):=a(6) xor a(5) xor a(3) xor a(1);ss(0):=a(6) xor a(4) xor a(3) xor a(0);第三,要判定校正子与0的关系,使用if语句,若等于0,则表示没有错误;若不为0,则表示其中有一位出错。