(7,4)汉明码编解码器的设计
- 格式:doc
- 大小:186.50 KB
- 文档页数:15
(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)汉明码编译码系统设计专业:通信工程学生姓名: 马勇学号:起迄日期:2013 年12月20日~2014年1月3日指导教师:宁志刚副教授系主任:王彦教授《通信原理课程设计》任务书3.主要参考文献:[1]樊昌信.通信原理(第6版)[M].北京:电子工业出版社,2012,12.[2]樊昌信,曹丽娜 .通信原理教程(第3版)[M].北京:国防工业出版社,2006,9.[3]刘学勇 .详解MATLAB/Simulink通信系统建模与仿真[M].北京:电子工业出版社,2011,11.[4]张水英 ,徐伟强 .通信原理及MATLAB/Simulink仿真[M].北京:人民邮电出版社,2012,9.[5]赵鸿图,茅艳 .通信原理MATLAB仿真教程[M].北京:人民邮电出版社,2010,11.[6]赵静 ,张瑾 .基于MATLAB的通信系统仿真[M].北京:北京航空航天大学出版社,2010,1.[7]赵谦 .通信系统中MATLAB基础与仿真应用[M].西安:西安电子科技大学出版社,2010,3.[8]徐明远 ,邵玉斌 . MATLAB仿真在现代通信中的应用[M].西安:西安电子科技大学出版社,2011,4.[9]邵玉斌 .Matlab/Simulink通信系统建模与仿真实例分析[M].北京:清华大学出版社,2008, 6.[10]邵佳 ,董辰辉 . MATLAB/Simulink通信系统建模与仿真实例精讲[M].北京:电子工业出版社,2009, 6.[11]黄智伟 .基于NI Multisim的电子电路计算机仿真设计与分析(修订版)[M].北京:电子工业出版社,2011, 6.[12]孙屹 ,戴妍峰 . SystemView通信仿真开发手册[M].北京:国防工业出版社,2004,11.[13]青松,程岱松,武建华 .数字通信系统的SystemView仿真与分析[M].北京:北京航空航天大学出版社,2001,6.4.课程设计工作进度计划:序号起迄日期工作内容2013.12.20~2013.12.24 系统方案设计12013.12.25~2013.12.28 利用Matlab/Systemview/Multisim等软件进行仿真设计22013.12.29~2013.12.31 通信系统的调试和测量,排除故障,分析实验结果32014.1.1 ~2014.1.3 整理设计报告4指导教师宁志刚日期:2013年12 月18日《通信原理课程设计》设计说明书格式一、纸张和页面要求A4纸打印;页边距要求如下:页边距上下各为2.5 厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。
南华大学电气工程学院《通信原理课程设计》任务书设计题目:(7, 4)汉明码编译码系统设计专业:通信工程学生姓名: 马勇学号:20114400236 起迄日期:2013 年12月20日~2014年1月3日指导教师:宁志刚副教授系主任:王彦教授《通信原理课程设计》任务书《通信原理课程设计》设计说明书格式一、纸张和页面要求A4纸打印;页边距要求如下:页边距上下各为2.5 厘米,左右边距各为2.5厘米;行间距取固定值(设置值为20磅);字符间距为默认值(缩放100%,间距:标准)。
二、说明书装订页码顺序(1)任务书 (2)论文正文 (3)参考文献,(4)附录三、课程设计说明书撰写格式见范例引言(黑体四号)☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆(首行缩进两个字,宋体小四号)1☆☆☆☆(黑体四号)正文……(首行缩进两个字,宋体小四号)1.1(空一格)☆☆☆☆☆☆(黑体小四号)正文……(首行缩进两个字,宋体小四号)1.2 ☆☆☆☆☆☆、☆☆☆正文……(首行缩进两个字,宋体小四号)2 ☆☆☆☆☆☆ (黑体四号)正文……(首行缩进两个字,宋体小四号)2.1 ☆☆☆☆、☆☆☆☆☆☆,☆☆☆(黑体小四号)正文……(首行缩进两个字,宋体小四号)2.1.1☆☆☆,☆☆☆☆☆,☆☆☆☆(楷体小四号)正文……(首行缩进两个字,宋体小四号)(1)……图1. 工作波形示意图(图题,居中,宋体五号)…………5结论(黑体四号)☆☆☆☆☆☆(首行缩进两个字,宋体小四号)参考文献(黑体四号、顶格)参考文献要另起一页,一律放在正文后,不得放在各章之后。
只列出作者直接阅读过或在正文中被引用过的文献资料,作者只写到第三位,余者写“等”,英文作者超过3人写“et al”。
几种主要参考文献著录表的格式为:⑴专(译)著:[序号]著者.书名(译者)[M].出版地:出版者,出版年:起~止页码.⑵期刊:[序号]著者.篇名[J].刊名,年,卷号(期号):起~止页码.⑶论文集:[序号]著者.篇名[A]编者.论文集名[C] .出版地:出版者,出版者. 出版年:起~止页码.⑷学位论文:[序号]著者.题名[D] .保存地:保存单位,授予年.⑸专利文献:专利所有者.专利题名[P] .专利国别:专利号,出版日期.⑹标准文献:[序号]标准代号标准顺序号—发布年,标准名称[S] .⑺报纸:责任者.文献题名[N].报纸名,年—月—日(版次).附录(居中,黑体四号)☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆(首行缩进两个字,宋体小四号)(另起一页。
目录前言...............................................................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)码是一种能够纠正一位错码或检测两位错码的一种效率较高的线性分组码。
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 结果分析·运行结果正确。
*******************实践教学*******************兰州理工大学计算机与通信学院2012年秋季学期计算机通信课程设计题目:(7,4)汉明码编译码软件设计专业班级:姓名:学号:指导教师:成绩:摘要汉明码是一种能自动检错并纠正一位错码的线性纠错码,用于信道编码与译码中,高通信系统抗干扰的能力。
本次课设主要是(7,4)汉明码的编译码软件设计,该软件可以对输入的多个四位信息码进行编码,对于接收的多个七位信息码可以进行译码,从而译出四位信息位.当接收到的信息码有一位错误时,可以纠正这一位错码,进而译出正确的信息码组,整个程序使用C语言编写.关键词:汉明码、编码、译码、检错、纠错目录一、C语言简介 (1)1.1什么是C语言 (1)1.2 C语言的特点 (1)1.3 运行C程序的步骤与方法 (2)二、汉明码编码 (4)2.1汉明码编码原理 (4)2.2监督矩阵 (6)2.3生成矩阵 (7)三、汉明码纠错检错 (9)3.1 汉明距离 (9)3.2 汉明码纠错原理 (9)四、汉明码编译码的实现过程 (10)4.1编码过程 (10)4.2译码过程 (10)五、软件设计及测试分析 (12)5.1程序流程图 (12)5.1.2 编码程序流程图 (12)5.1.3 译码程序流程图 (13)5.2 软件运行分析 (15)5.2.1主程序运行分析 (15)5.2.2 编码运行分析 (17)5.2.3 译码运行分析 (18)5.3 软件分析 (19)总结 (20)参考文献 (21)附录 (22)一、C语言简介1.1什么是C语言C语言是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它由美国贝尔研究所的D.M.Ritchie于1972年推出。
1978后,C语言已先后被移植到大、中、小及微型机上。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
课程设计报告题目:汉明码编译码器仿真设计学生姓名:学生学号:系别:专业:届别:指导教师:汉明码编译码器仿真设计1 课程设计任务汉明码是一种能够纠正一位错码或检测两位错码的一种效率较高的线性分组码。
本次课程设计的任务就是利用Systemview 软件实现(7,4)汉明码的编译码器的仿真设计。
进一步分析该系统的性能。
2 汉明码编译码原理的研究背景在通信编码方面,其发展的速度是非常快的,而且未来的发展空间还很巨大。
20世纪40年代才开始形成编码原理。
数字通信系统是利用数字信号来传递信息的通信系统数字通信系统设计的问题很多,其中编码是数字通信系统必不可少的模块。
编码包括信源编码和信道编码,信源编码有两个基本功能:一是提高传输系统的有效性,即通过某种数据压缩技术减少码元数目和降低码元速率。
码元速率决定传输所占的带宽,而传输带宽反应了信道的有效性。
二是完成数模转换。
信道编码的目的是增强数字信号的抗干扰能力。
信道编码对传输的信息码元按一定的规则加入保护成分,组成所谓抗干扰编码。
接收端的信道译码器按相应的逆规则进行解码从中发现错误或者纠正错误,提高通信系统的可靠性。
我们把建立在数学基础上的编码称为代数码。
在代数码中常见的是线性码。
在线性码中信息位和监督位是由一些线性代数方程联系着的,或者说线性码是按照一定的线性方程构成的。
汉明码是1950年由美国贝尔实验室提出来的,是第一个设计用来纠正错误的线性分组码,从20世纪50年代问世以来,在提高系统可靠性方面获得了广泛的应用。
最先用于磁芯存储器,60年代初用于大型计算机,70年代在MOS存储器中得到应用,后来在中小型计算机中普遍采用,随着科技的发展,现代编码理论和大规模集成电路的应用,性能优良的编译码方法不断出现而实现成本不断降低,其应用已不局限语音、图像等方面,现在更多的是扩展到计算机存储系统、磁盘,甚至在移动通信及卫星通信中得到应用,而且人们研究的不仅仅是纠正一位错码,而倾向于纠正多位错码。
基于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)汉明码,来提高错误检测和纠正能力。
可以结合其他编码技术,如校验和,奇偶校验等,来增加冗余度和提高系统的可靠性。
引言在实际信道中传输数字信号时,由于信道特性不理想及加性噪声的影响,接收端所收到的数字信号不可避免的的会产生错码,影响通信质量。
为了使数字通信系统达到一定的误比特率指标,首先应合理设计基带信号,选择合适的调制方式、解调方式,采用均衡,提高发信功率等,但如果误比特率指标仍不能满足要求,则必须采用信道编码。
信道编码也称差错控制编码或纠错编码,它是提高数字通信系统可靠的重要方法。
1948年,香农在他的开创性论文《通信的数学理论》中首次阐明了在有扰信道中实现可靠通信的方法,提出了著名的有扰信道编码定理,奠定了纠错编码的基石。
如今的纠错编码已有几十年的历史,从早期的线性分组码,BCH码,到后来的RS码、卷积码,级联码、Turbo码;从原来的代数译码,到后来的门限译码、软判决译码,到Viterbi译码等;从注重数学模型、理论研究,到注重纠错编码的使用化问题,并且通过计算机仿真、搜索好码。
无论是从编码方法、译码方法还有研究方法上,纠错编码研究都取得了长足的发展,并广泛应用于各种通信系统。
如今,纠错编码技术已开始渗透带很多领域,如移动通信中大量利用纠错编码,计算机通信系统中也大量应用纠错编码。
汉明码是1950年由Hamming首先构造的,他是一个能够纠正单个错误的线性分组码,即SEC(Sing Error Correcting)码,它不仅性能好,而且编译电路非常简单,易于实现。
从20世纪50年代问世以来,在提高系统可靠性方面获得了广泛的应用。
最先用于磁芯存储器,60年代初用于大型计算机,70年代在MOS存储器得到应用,后来在中小型计算机中普遍采用,目前常用在RFID系统中多位错误的纠正。
汉明码是在原编码的基础上附加一部分代码,使其满足纠错码的条件,原编码我们可将它称为信息码,附加码称为校验码(又可称为监督码或冗余码)。
汉明码的最小码间距为3,所以只能够检测到2个错误或纠正1个错误,编码效率最高。
它属于线性分组码,由于线性码的编码和译码容易实现,至今仍是应用最广泛的一类码。
(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,则表示其中有一位出错。