汉明码编译码实验
11汉明码编解码实验
(1)端口设置 cs_hanming:输入汉明编码使能位,’1’电平有效; datain_hanming:输入 4 位编码输入位; dataout_hanming:输出 16 位编码输出位,低 7 位为编码输出位,高 9 位为 0。 (2)主程序 if cs_hanming='1'then dataout_hanming(6 downto 3)<=datain_hanming(3 downto 0); dataout_hanming(0)<=datain_hanming(3) xor datain_hanming(1) xor datain_hanming(0); dataout_hanming(1)<=datain_hanming(3) xor datain_hanming(2) xor datain_hanming(0); dataout_hanming(2)<=datain_hanming(3) xor datain_hanming(2) xor datain_hanming(1); dataout_hanming(15 downto 7)<="000000000"; else dataout_hanming(15 downto 0)<="0000000000000000"; end if; (3)输出结果
out38<="0000000" when "000", "0000001" when "001", "0000010" when "010", "0000100" when "100", "0001000" when "011", "0010000" when "101", "0100000" when "110", "1000000" when "111"; --输出错误标志 with sel select error_flag<='0' when "000", '1' when others; --纠错 dataout_hanming(3)<=out38(6) xor datain_hanming(6); dataout_hanming(2)<=out38(5) xor datain_hanming(5); dataout_hanming(1)<=out38(4) xor datain_hanming(4); dataout_hanmiΒιβλιοθήκη Baidug(0)<=out38(3) xor datain_hanming(3); error_hanming<=error_flag;
实验三 汉明码编码与译码
实验三汉明码编码与译码
一、实验题目
1、写一个错误生成器模块,在给定的一个比特流作输入时,它的输出流的每个
比特流都以概率p发生了改变,即比特错误概率为p。
2、对m=3,将汉明码编码后的比特流输入到上述模块,然后对收到的字用译码
器进行译码。
二、实验目的
1、理解和掌握汉明码编码与译码的原理;
三、算法设计
四、程序分析
1、错误生成模块:任一给以p,系统任意生成一数,若比p小则让其出错,否
则不出错。
2、编码:首先随机生成H矩阵,由H矩阵生成G矩阵,利用C=mG编码。
3、解码:
若v*H’=0,则没有出错,直接输出v中前k位;
若v*H’!=0,列出所有的e和e*H’得到伴随阵s,若能在s中找到s=v*H
则c0=v-e,输出c0中前k位;若找不到s,则输出“错误位数大于纠错能力,无法解码”。
五、程序代码
#include <iostream>
#include <string> // 字符串处理头文件
#include <iomanip> // 输入输出控制头文件
#include <math.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
void Err_Pro();
void Hamming_Decode();
int
m,n,k,t,err,r,R[100],N[100],COUNT[100],num[100][100],Th[100][100],PT_S[100][100],PT_D[1 00][100];
汉明码的编码和译码算法
汉明码(Hamming)的编码和译码算法
本文所讨论的汉明码是一种性能良好的码,它是在纠错编码的实践中较早发现的一类具有纠单个错误能力的纠错码,在通信和计算机工程中都有应用。例如:在“计算机组成原理”课程中,我们知道当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错。简单的说,汉明码是一个错误校验码码集,由Bell实验室的R.W.Hamming发明,因此定名为汉明码。如果对汉明码作进一步推广,就得出了能纠正多个错误的纠错码,其中最典型的是BCH码,而且汉明码是只纠1bit错误的BCH码,可将它们都归纳到循环码中。
各种码之间的大致关系显示如下。
一、汉明码的编码算法
输入:信源消息u(消息分组u)
输出:码字v
处理:
信源输出为一系列二进制数字0和1。在分组码中,这些二进制信息序列分成固定长度的消息分组(message blocks)。每个消息分组记为u,由k个信息位组成。因此共有2k种不同的消息。编码器按照一定的规则将输入的消息u转换为
二进制n 维向量v ,这里n >k 。此n 维向量v 就叫做消息u 的码字(codeword )或码向量(code vector )。 因此,对应于2k 种不同的消息,也有2k 种码字。这2k 个码字的集合就叫一个分组码(block code )。若一个分组码可用,2k 个码字必须各不相同。因此,消息u 和码字v 存在一一对应关系。由于n 符号输出码字只取决于对应的k 比特输入消息,即每个消息是独立编码的,从而编码器是无记忆的,且可用组合逻辑电路来实现。
汉明码编码实验报告
重庆工程学院
电子信息学院
实验报告
课程名称:_ 数据通信原理开课学期:__ 2015-2016/02_ 院(部): 电子信息学院开课实验室:实训楼512
学生姓名: 舒清清梁小凤专业班级: 1491003
学号: ********* *********
重庆工程学院学生实验报告
输入1000,编码1000111 输入1001,编码1001100 输入1010,编码1010010
输入1011,编码1011001 输入1100,编码1100001 输入1101,编码1101010
输入1110,编码1110100 输入1111,编码1111111
六、实验结果及分析
输入和输出会有一个时延,当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错,利用了奇偶校验位概念。
七、实验心得、体会及意见
通过实验我对汉明码有了进一步的认识,对生成矩阵有了一定得了解,重要的是我能够用我所学到的理论知识来解决我现所遇到的问题。
汉明码编码实验报告
汉明码实验报告
一、实验目的
实现汉明码纠错编码算法
二、实验步骤
1、判断是否执行程序
2、输入要查错的码字
3、分析输入的码字并输出码字
4、继续判断
三、源代码
#include<iostream>
using namespace std;
void input(int *a){
cout<<"请输入7位要查错的码字(输入一个数(0或1)就空格):"<<endl;
for(int i=0;i<7;i++)
cin>>a[i];
}
void analyze(int *a,int ht[7][3]){ //二维数组ht[7][3]调用之前一定要明确定义
int p[3]={0};
int q=0; //数据要初始化
int h[3][7];
int out[7];
for(int k=0;k<3;k++){
for(int i=0, j=0;j<7;i++,j++){
p[k]=p[k]+a[i]*ht[j][k];
p[k]=p[k]%2; //使数值小于2
}
if(p[k]==1){
q++;
}
}
cout<<"伴随式为:"<<p[0]<<p[1]<<p[2]<<endl;
if(q==2||q==3){
cout<<"一共有"<<q<<"位错误,超越了纠错范围"<<endl; }
if(q==0){
cout<<"码字没有错误!!"<<endl;
汉明码编译码及纠错性能验证
汉明码编译码及纠错性能验证
目录
一、实验目的 (2)
二、实验原理 (2)
1.汉明编译码介绍 (2)
2.汉明编译码原理 (2)
3.举例说明 (3)
4.实验框图说明 (3)
5.框图中各个测量点说明 (4)
三、实验任务 (5)
四、实验步骤 (5)
1. 实验准备 (5)
2.汉明码编码原理验证 (5)
3.汉明译码观测及纠错能力验证 (8)
4.实验结束 (10)
五、实验分析 (11)
一、实验目的
1.学习汉明码编译码的基本概念;
2.掌握汉明码的编译码方法;
3.验证汉明码的纠错能力。
二、实验原理
1.汉明编译码介绍
汉明码(Hamming Code)是一个可以有多个校验位,具有检测并纠正一位错误代码的纠错码,所以它也仅用于信道特性比较好的环境中,如以太局域网中,因为如果信道特性不好的情况下,出现的错误通常不是一位。
汉明码的检错、纠错基本思想是将有效信息按某种规律分成若干组,每组安排一个校验位进行奇偶性测试,然后产生多位检测信息,并从中得出具体的出错位置,最后通过对错误位取反(也是原来是 1 就变成 0,原来是 0 就变成 1)来将其纠正。
2.汉明编译码原理
●汉明码编码
采用(4,7)汉明码,信息位数k=4,监督位数r=n-k=3,可以纠一位错码,
生成矩阵G=[1 0 0 0 1 1 1
0 1 0 0 1 1 0
0 0 1 0 1 0 1
0 0 0 1 0 1 1
],编码情况见表格1。
表格1 (7,4)Hamming编码表
●汉明码译码
计算校正子S=[S
1,S
2
,S
3
],其中
S1=a6⨁a5⨁a4⨁a2
S2=a6⨁a5⨁a3⨁a1
汉明码编码译码实验报告(信息论与编码)及源程序
int j,k,m;
int a[4],q[7],rr[10000/4*7];
int p,D=0;
int cc[2500],dd[2500];
int e[8][7]={{1,0,0,0,0,0,0},{0,1,0,0,0,0,0},{0,0,1,0,0,0,0},{0,0,0,1,0,0,0},{0,0,0,0,1,0,0},
}
else if((cc[j]>=9)&&(cc[j]<=30))///当随机数在9~30时,一个码字产生一个错误
{dd[j]=rand()%7;
p=dd[j]; ///随机产生一个0~6的数,以确定是码字一个错误的位置
for(i=D;i<(D+7);i++)
{w[i]=0;
w[i]=(rr[i]+e[p][i-D])%2;
汉明码是一种能够纠正一位错码且编码效率较高的线性分组码。
汉明码是一种多重(复式)奇偶检错系统。它将信息用逻辑形式编码,以便能够检错和纠错。用在汉明码中的全部传输码字是由原来的信息和附加的奇偶监督位组成的。每一个这种奇偶位被编在传输码字的特定比特位置上。
推导并使用长度为m位的码字的汉明码,所需步骤如下:
scanf("%d",&N);
}
printf("随机产生的二进制序列为:\n");
汉明码编译码实验(新编)-作业
汉明码编译码实验班级学号姓名时间
1、实验目的
1、掌握汉明码编译码原理
2、掌握汉明码纠错检错原理
3、掌握用CPLD实现汉明码编译
码的方法2、实验内容
1、汉明码编码实验。
2、汉明码译码实验。
3、汉明码纠错检错能力验证
实验。
三|、实验步骤
1、验证汉明码编码规则实验
将S2拨为“1110”,设置8号板为汉明码的工作模式。将S1拨
为“0000”。此时,将对S3的数据进行汉明编码(COMRXA的输入无效)。以FS0(汉明编码的帧同步信号)为触发,观测FJOUT(汉明码输出)。将S3拨为0~15之间的数,然后观测汉明编码。并填写下表,验证汉明码编码结果。
输入编码输出输入编码输出
α6α5α4α3α6α5α4α3α2α1α0α6α5α4α3α6α5α4α3α2α1α0
00001000
00011001
00101010
00111011
01001100
01011101
01101110
01111111
2、译码数据输出测量:
S2保持不变,将S1拨为“0001”。此时,将对COMRXA的数据进行汉明编码(S3的输入无效)。用示波器同时观察FS3(汉明码编码输
入)和TS_SEL(汉明码译码输出)的波形,回答译码输出数据与发端信号是否保持一致,测出时延,并写出输出数据序列(从1111开始记录一个周期),验证汉明编译码的正确性。
3、发端加错信号观测
(1)保持S2为“1110”,将S1拨为“0000”(此时无误码)。用示波器同时观测FS2(发端加错指示)和TS0(收端检错指示),说明这两点的波形的状态;
(2)将S1拨为“0001”(表示插入一个误码)。用示波器同时观测FS2(发端加错指示和TS0(收端错码指示),上下对应记录这两点的波形,定性说明汉明译码能否检测出错码。
(7,4)汉明码编译码程序说明讲诉
(7,4)汉明码编译码原理程序说明书
1、线性分组码
假设信源输出为一系列二进制数字0和1.在分组码中,这些二进制信息序列分成固定长度的消息分组(message blocks )。每个消息分组记为u ,由k 个信息位组成。因此共有2
k
种不同的消息。编码器按照一定的规则将输入的消息u 转换为二进制n 维向量v ,这里n>k 。此n 维向量v 就叫做消息u 的码字(codeword )或码向量(code vector )。因此,对应于2k
种不同的消息,也有2k
种码字。这2k
个码字的集合就叫一个分组码(block code )。
一个长度为n ,有2k
个码字的分组码,当且仅当其2k
个码字构成域GF (2)上所有n
维向量空间的一个k 维子空间时被称为线性(linear )(n ,k )码。
对于线性分组码,希望它具有相应的系统结构(systematic structure ),其码字可分为消息部分和冗余校验部分两个部分。消息部分由k 个未经改变的原始信息位构成,冗余校验部分则是n-k 个奇偶校验位(parity-check )位,这些位是信息位的线性和(linear sums )。具有这样的结构的线性分组码被称为线性系统分组码(linear systematic block code )。 本实验以(7,4)汉明码的编译码来具体说明线性系统分组码的特性。 其主要参数如下:
码长:21m
n =- 信息位:21m k m =-- 校验位:m n k =-,且3m ≥ 最小距离:min 03d d ==
由于一个(n ,k )的线性码C 是所有二进制n 维向量组成的向量空间n V 的一个k 维子
汉明码编译码实验报告
汉明码编译码实验报告
引言:
汉明码是一种检错纠错编码方法,常用于数字通信和计算机存储中。它通过在数据中插入冗余位,以检测和纠正错误,提高数据传输的可靠性。本实验旨在通过编写汉明码的编码和解码程序,对汉明码的编译码原理进行实际验证,并分析其性能。
一、实验目的:
1. 了解汉明码的编码和解码原理;
2. 掌握汉明码编码和解码的具体实现方法;
3. 验证汉明码在检测和纠正错误方面的有效性;
4. 分析汉明码的性能及其应用范围。
二、实验原理:
1. 汉明码编码原理:
汉明码的编码过程主要包括以下几个步骤:
(1)确定数据位数和冗余位数:根据要传输的数据确定数据位数n,并计算冗余位数m。
(2)确定冗余位的位置:将数据位和冗余位按照特定规则排列,确定冗余位的位置。
(3)计算冗余位的值:根据冗余位的位置和数据位的值,计算每个冗余位的值。
(4)生成汉明码:将数据位和冗余位按照一定顺序排列,得到最终的汉明码。
2. 汉明码解码原理:
汉明码的解码过程主要包括以下几个步骤:
(1)接收数据:接收到经过传输的汉明码数据。
(2)计算冗余位的值:根据接收到的数据,计算每个冗余位的值。(3)检测错误位置:根据冗余位的值,检测是否存在错误,并确定错误位的位置。
(4)纠正错误:根据错误位的位置,纠正错误的数据位。
(5)输出正确数据:输出经过纠正后的正确数据。
三、实验过程:
1. 编码程序设计:
根据汉明码编码原理,编写编码程序,实现将输入的数据进行编码的功能。
2. 解码程序设计:
根据汉明码解码原理,编写解码程序,实现将输入的汉明码进行解码的功能。
汉明码编译码实验
实验报告
课程名称:《通信原理》开课学期: 17-18学年第1学期实验室地点:实训楼512 学生姓名:
学号:专业班级:
电子信息学院
五、实验记录与处理(数据、图表、计算等)汉明码编码规则验证:
实验三 汉明码编码与译码
实验三汉明码编码与译码
一、实验题目
1、写一个错误生成器模块,在给定的一个比特流作输入时,它的输出流的每个
比特流都以概率p发生了改变,即比特错误概率为p。
2、对m=3,将汉明码编码后的比特流输入到上述模块,然后对收到的字用译码
器进行译码。
二、实验目的
1、理解和掌握汉明码编码与译码的原理;
三、算法设计
四、程序分析
1、错误生成模块:任一给以p,系统任意生成一数,若比p小则让其出错,否
则不出错。
2、编码:首先随机生成H矩阵,由H矩阵生成G矩阵,利用C=mG编码。
3、解码:
若v*H’=0,则没有出错,直接输出v中前k位;
若v*H’!=0,列出所有的e和e*H’得到伴随阵s,若能在s中找到s=v*H
则c0=v-e,输出c0中前k位;若找不到s,则输出“错误位数大于纠错能力,无法解码”。
五、程序代码
#include
#include // 字符串处理头文件
#include // 输入输出控制头文件
#include
#include
#include
using namespace std;
void Err_Pro();
void Hamming_Decode();
int
m,n,k,t,err,r,R[100],N[100],COUNT[100],num[100][100],Th[100][100],PT_S[100][100],PT_D[1 00][100];
int
H[100][100],HT[100][100],Ig[100][100],P[100][100],G[100][100],Ibit[100],Cbit[100],Err_Cbit[1 00],V[100];
通信原理实验-汉明码编译
实验十五汉明编码和译码实验
一、实验前的准备
(1)预习帧成形及其传输电路的构成;预习自定义帧结构的帧同步系统电路的构成。
(2)熟悉实验指导书附录B和附录C中实验箱面板分布及测试孔位置,定义本实验相关模块的跳线状态。
(3)实验前重点掌握的内容:汉明码的编码规则、汉明码的纠错能力。
二、实验目的
1.掌握汉明码编译码原理
2.掌握汉明码纠错检错原理
3.通过纠错编解码实验,加深对纠错编解码理论的理解
三、实验仪器
(1)ZH5001A通信原理综合实验系统一台
(2)20MHz双踪示波器一台
四、基本原理
汉明编码模块实验电路工作原理描述如下:
1、输入数据:汉明编码输入数据可以来自ADPCM1模块的ADPCM码字,或
来自同步数据端口数据、异步端口数据、CVSD编码数据、m序列。选择ADPCM码字由工作方式选择开关SWC01中的ADPCM状态决定,当处于ADPCM状态时(插入跳线器),汉明编码器对ADPCM信号编码;否则处于非ADPCM状态时(拔除跳线器),输入编码数据来自开关KC01所设置的位置,分别为同步数据端口数据、异步端口数据、CVSD编码数据、m序列。
2、m序列发生器:m序列用于测试汉明编码规则,输出信号与开关KWC01位
置表3.4.2所示:
3、编码使能开关:此开关应与接收端汉明译码器使能开关同步使用,该开关处
于使能状态(H_EN短路器插入),汉明码编码器工作;否则汉明码编码器不工作。需注意:汉明码编码器不工作时,ADPCM和CVSD话音数据无法通话,这是因为编码速率与信道速率不匹配。
4、错码产生:错码产生专门设计用于测量汉明译码器的纠错和检错性能。输出
实验三 汉明码编译码实验
实验三汉明码编译码实验
汉明码编译码实验
一、实验目的
1、了解信道编码在通信系统中的重要性。
2、掌握汉明码编译码的原理。
3、掌握汉明码检错纠错原理。
4、理解编码码距的意义。
二、实验原理
1、实验原理框图汉明码编译码实验框图汉明码编码过程:数字终端的信号经过串并变换后,进行分组,分组后的数据再经过汉明码编码,数据由4bit变为7bit。
三、实验器材
1、主控&信号源、6号、2号模块各一块
2、双踪示波器一台
3、连接线若干
四、实验步骤汉明码编码规则验证连线汉明码1、2号模块的拨码开关S12#拨为 S22#、S32#、S42#均拨为;2、6号模块的拨码开关S16#拨为0001, S36#拨为0000按下6号模块S2系统复位键。3、此时2号模块提供32K编码输入数据,6号模块进行汉明编译码,无差错插入模式。4、用示波器观测6号模块TH5处编码输出波形。汉明码检纠错性能检验1、6号模块S3拨成0001
按下6号模块S2系统复位。2、对比观测译码结果与输入信号,验证汉明码的纠错能力。
3、对比观测插错指示与误码指示,验证汉明码的检错能力。
4、、6号模块S3按照插错控制表中的拨码方式,逐一插入不同错误,按下6号模块S2系统复位。重复步骤2,验证汉明码的检纠错能力。
5、将示波器触发源通道接TP2帧同步信号,示波器另外一个通道接TP1插错指示,可以观测插错的位置。
五、实验数据错2位码时错码检测指示输出波形汉明译码纠错性能检验六、实验分析开头数字序号1
汉明码编译码及纠错能力验证实验
课程名称通信原理
实验序号实验8
实验名称汉明码编译码及纠错能力验证实验实验地点B702
实验学时 2 实验类型验证性
指导教师实验员
专业 _电子信息工程__ 班级14电信一班
学号姓名
2016年12 月15 日
五、测试/调试及实验结果分析
图片说明:CH1(黄色)帧同步信号
CH2(浅蓝色)编码后信号
CH3(粉红色)编码前信号
CH4(深蓝色)译码后信号
保护位
无加错的时候设置的原始信号是:1100,编码后的信号是:1100001,译码后的信号为:1100。对照图片的波形图,无误输出,汉明码正确。有延时的现象。
1位加错的时候:设置的原始信号是:1100,编码后的信号是:1101001
译码后的信号是:1100 通过计算S1、S2、S3可知错误位为:a3 对照译码后的波形与编码前的波形,可知已经纠错成功。汉明码的一位纠错功能实现。有延时的现象。
2位加错的时候:设置的原始信号是:1100,编码后的信号是:1111001
码后的信号是:0111 对照无错的编码后序列,可知错误位为:a3、a4 对照译码后的波形与编码前的波形,可知译码后的波形与编码前的波形对不上。(7,4)汉明码的2位纠错功能无法实现。
3位加错的时候:设置的原始信号是:1100,编码后的信号是:1011001
码后的信号是:0111 对照无错的编码后序列,可知错误位为:a3、a4、a5 ,对照译码后
的波形与编码前的波形,可知译码后的波形与编码前的波形对不上。(7,4)汉明码的3位纠错功能无法实现。
4位加错的时候:设置的原始信号是:1100,编码后的信号是:0011001
通信原理实验 汉明编码和译码实验 实验报告
姓名:学号:班级:
第周星期第大节
实验名称:汉明编码和译码实验
一、实验目的
1.掌握汉明码编译码原理。
2.掌握汉明码纠错检错原理。
3.通过纠错编解码实验,加深对纠错编解码理论的理解。
二、实验仪器
1.ZH5001A通信原理综合实验系统
2.20MHz双踪示波器
三、实验内容
2.编码规则验证
(1)输入数据为0011
(2)输入数据为1100
3.译码数据输出观测
(1)m序列方式为11
(1)不加错
♦观测加错指示TPC03与错码检测指示输出波形TPW03波形
(2)加1位错
♦观测加错指示TPC03与错码检测指示输出波形TPW03波形
(4)加3位错
(1)不加错
加2位错不能全部正确译码
(4)加3位错
四、思考题
2.汉明编码器模块的使能开关,译码器模块的使能模块(H_EN断路器)起什么作用?
从电路图中可以看出,没有插入H_EN时,汉明编码器被短路,输出数据没有经过汉明编码。插入H_EN时,输出数据经过汉明编码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汉明码编译码实验
一、实验目的
1、掌握汉明码编译码原理
2、掌握汉明码纠错检错原理
二、实验内容
1、汉明码编码实验。
2、汉明码译码实验。
3、汉明码纠错检错能力验证实验。
三、实验器材
LTE-TX-02E通信原理综合实验系统----------------------------------------------模块8
四、实验原理
在随机信道中,错码的出现是随机的,且错码之间是统计独立的。例如,由高斯白噪声引起的错码就具有这种性质。因此,当信道中加性干扰主要是这种噪声时,就称这种信道为随机信道。由于信息码元序列是一种随机序列,接收端是无法预知的,也无法识别其中有无错码。为了解决这个问题,可以由发送端的信道编码器在信息码元序列中增加一些监督码元。这些监督码元和信码之间有一定的关系,使接收端可以利用这种关系由信道译码器来发现或纠正可能存在的错码。在信息码元序列中加入监督码元就称为差错控制编码,有时也称为纠错编码。不同的编码方法有不同的检错或纠错能力。有的编码就只能检错不能纠错。
那么,为了纠正一位错码,在分组码中最少要加入多少监督位才行呢?编码效率能否提高呢?从这种思想出发进行研究,便导致汉明码的诞生。汉明码是一种能够纠正一位错码且编码效率较高的线性分组码。下面我们介绍汉明码的构造原理。
一般说来,若码长为n,信息位数为k,则监督位数r=n−k。如果希望用r个监督位构造出r个监督关系式来指示一位错码的n种可能位置,则要求
2r− 1 ≥n 或2r ≥k + r + 1 (14-1)下面我们通过一个例子来说明如何具体构造这些监督关系式。
设分组码(n,k)中k=4,为了纠正一位错码,由式(14-1)可知,要求监督位数r≥3。若取r=3,则n= k + r =7。我们用α6α5…α0表示这7个码元,用S1、S2、S3表示三个监督关系式中的校正子,则S1 S2 S3的值与错码位置的对应关系可以规定如表14-1所列。
表14-1
由表中规定可见,仅当一错码位置在α2 、α4 、α5 或α6 时,校正子S1 为1;否则S1 为0。这就意味着α2 、α4 、α5 和α6四个码元构成偶数监督关系
S 1 =α6⊕α5 ⊕α4 ⊕α2 (14-2) 同理,α1 、α3 、α5 和α6构成偶数监督关系
S 2 =α6⊕α5 ⊕α3 ⊕α1 (14-3)
以及α0 、α3 、α4 和α6构成偶数监督关系
S 3 =α6⊕α4 ⊕α3 ⊕α0 (14-4)
在发送端编码时,信息位α6 、α5 、α4 和α3 的值决定于输入信号,因此它们是随机的。监督位α2 、α1 和α0 应根据信息位的取值按监督关系来确定,即监督位应使上三式中S 1、S 2和S 3的值为零(表示变成的码组中应无错码)
⎪
⎭⎪
⎬⎫
⊕⊕⊕⊕⊕⊕⊕⊕⊕000034613562456=αααα=αααα=αααα
(14-5)
由上式经移项运算,解出监督位
⎪
⎭⎪
⎬⎫
⊕⊕⊕⊕⊕⊕αα=αααα=ααααα=α34063516
4562
(14-6)
给定信息位后,可直接按上式算出监督位,其结果如表14-2所列。
表 14-2
接收端收到每个码组后,先按式(14-2)~(14-4)计算出S 1 、S 2 和S 3 ,再按表14-2判断错码情况。例如,若接收码组为0000011,按式(14-2)~(14-4)计算可得S 1 =0,S 2 =1,S 3 =1。由于S 1 S 2 S 3 等于011,故根据表14-1可知在α3 位有一错码。按上述方
法构造的码称为汉明码。表14-2中所列的(7,4)汉明码的最小码距d0 =3,因此,这种码能纠正一个错码或检测两个错码。
汉明码有以下特点:
码长 n =2r -1 最小码距d =3 信息码位 k =2r -m -1 纠错能力t =1 监督码位 r =n -k =m
这里m 为≥2的正整数,给定m 后,即可构造出具体的汉明码(n ,k )。
汉明码的编码效率等于k/n =(2r -1-r) / (2r -1) = 1- r / (2r -1) = 1-r/n 。当n 很大时,则编码效率接近1,可见,汉明码是一种高效码
汉明码的编码器和译码器电路如图14-1所示
a 6a 5
a 4a 3
a 6a 5a 4a 3a 2a 1a 0
(a)编码器
(b)译码器
a a a a a 2a 1a 0
图14-1 汉明码的编译码器
五、实验前准备
1、按如下电路连线(打了五角星标记的才要连线):
(FJOUT、FJIN、COMRXA、FS3指的是模块8上电路板上做了标注的相应的圆形插孔)六|、实验步骤
1、验证汉明码编码规则实验
将S2拨为“1110”(注:拨码开关向上拨动设置为“1”,向下拨动设置为“0”),设置8号板为汉明码的工作模式。将S1拨为“0000”。此时,将对S3的数据进行汉明编码(COMRXA的输入无效)。以FS0(汉明编码的帧同步信号)为触发,观测FJOUT (汉明码输出)。将S3拨为0~15之间的数,然后观测汉明编码。并填写下表,验证汉明码编码结果。(注:这里的FS0、FJOUT指的是模块8上电路板上做了标注的相应的半圆形向上凸起的金属测试点。)
2、译码数据输出测量:
S2保持不变,将S1拨为“0001”。此时,将对COMRXA的数据进行汉明编码(S3的输入无效)。用示波器同时观察FS3(汉明码编码输入)和TS_SEL(汉明码译码输出)的波形,回答译码输出数据与发端信号是否保持一致,测出时延,并写出输出数据序列(从1111开始记录一个周期),验证汉明编译码的正确性。