汉明码编译码实验

合集下载

汉明码编译码课程设计

汉明码编译码课程设计

汉明码编译码课程设计一、课程目标知识目标:1. 学生能理解汉明码的基本概念,掌握编码和译码的原理;2. 学生能够运用汉明码进行信息编码和错误检测与纠正;3. 学生了解汉明码在通信和计算机科学中的应用,理解其重要性。

技能目标:1. 学生能够运用所学知识,独立完成汉明码的编码和译码过程;2. 学生能够通过实际案例分析,提高问题解决和逻辑思维能力;3. 学生能够运用合作学习的方式,进行小组讨论和成果分享。

情感态度价值观目标:1. 学生培养对信息科学的兴趣,激发学习热情;2. 学生认识到团队合作的重要性,培养协作精神;3. 学生通过学习汉明码,认识到科技对社会发展的贡献,增强社会责任感。

课程性质:本课程属于信息技术学科,以实际应用为导向,注重理论与实践相结合。

学生特点:六年级学生具备一定的信息科学基础和逻辑思维能力,对新鲜事物充满好奇心,但注意力集中时间有限。

教学要求:结合学生特点,教师应采用生动形象的教学方法,注重启发式教学,引导学生主动参与,提高课堂互动性。

同时,将课程目标分解为具体的学习成果,以便在教学过程中进行有效评估。

1. 汉明码基本概念:介绍汉明码的定义、原理及其在通信和计算机科学中的应用。

教材章节:第三章第三节2. 汉明码编码过程:讲解如何利用汉明码进行信息编码,包括奇偶校验位的添加方法。

教材章节:第三章第四节3. 汉明码译码过程:介绍汉明码的译码原理,以及如何检测和纠正错误。

教材章节:第三章第五节4. 案例分析与实操:通过实际案例,分析汉明码在信息传输中的应用,并进行编码和译码实操。

教材章节:第三章第六节5. 小组合作与讨论:分组进行讨论,分享学习心得,培养学生的团队合作精神。

教材章节:第三章实践活动教学安排与进度:第一课时:汉明码基本概念及编码过程第二课时:汉明码译码过程及案例分析第三课时:实操练习,小组合作与讨论第四课时:总结与评价,巩固所学知识教学内容确保科学性和系统性,结合课程目标进行详细的教学大纲制定,以便教师有序开展教学活动,帮助学生更好地掌握汉明码相关知识。

汉明码编译码及纠错能力验证实验

汉明码编译码及纠错能力验证实验

课程名称通信原理实验序号实验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码后的信号是:0111 对照无错的编码后序列,可知错误位为:a3、a4、a5 、a6 ,对照译码后的波形与编码前的波形,可知译码后的波形与编码前的波形对不上。

(7,4)汉明码的4位纠错功能无法实现。

六、实验结论与体会1.课堂上对汉明码的理解不够深入,经过本次实验明显加深了我对汉明码的理论的认识和理解,实际动手才是关键2.经过编码后的编码序列,在加错码的时候,对a0、a1、a2位没有影响,也就是说这三位不会在无错的时候编码是什么,加错后这三位的编码还是一样3.一位加错时,(7,4)汉明码有检错以及纠错的功能,两位加错的时候,只有检错的功能,却没有纠错的功能,三位或三位以上加错时,既没有检错的功能,也没有纠错的功能;4.(7,4)汉明码作为一种信道编码的方式,具有一定的纠错检错能力。

汉明码编译码及纠错性能验证

汉明码编译码及纠错性能验证

汉明码编译码及纠错性能验证目录一、实验目的 (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 10 1 0 0 1 1 00 0 1 0 1 0 10 0 0 1 0 1 1],编码情况见表格1。

表格1 (7,4)Hamming编码表●汉明码译码计算校正子S=[S1,S2,S3],其中S1=a6⨁a5⨁a4⨁a2S2=a6⨁a5⨁a3⨁a1S3=a6⨁a4⨁a3⨁a0校正子S 的值决定了接收码元中是否有错码,并且指出错码的位置,见表格 2。

表格 2 错码位置示意3.举例说明信息位a6a5a4a3=1001,根据表格 1(4,7) Hamming 编码表,编码为1001100,如果在信道传输的过程中产生一位误码,编码接收时变为1101100 ,我们计算校正子:S1=a6⨁a5⨁a4⨁a2=1S2=a6⨁a5⨁a3⨁a1=1S3=a6⨁a4⨁a3⨁a0=0校正子S=110,查找表格 2 错码位置示意,a5产生误码,则译码输出信息位1001。

通信报告-汉明码编译码

通信报告-汉明码编译码

自主设计实验二.汉明码编译码121180165赵博睿一.实验原理汉明码是差错控制编码的一种,是一种线性分组码,可以纠一位错,利用监督位和信息位的线性方程关系实现监督。

满足n=k+r,n=2^r-1的关系,本次实验采用的是(7,4)汉明码。

二.设计思路本次实验可以分为6个模块:m序列产生模块、汉明编码模块、编码输出模块、信道加错模块、接收译码模块、译码输出模块。

1.m序列产生模块:上次实验做过,因此不赘述设计思路;2.汉明码编码模块:需要将m序列缓冲到一个寄存器中进行汉明编码,编码方法由生成矩阵G决定,需要将编码数据放入到另一个寄存器中。

3.编码输出模块:将寄存器中编好的数据输出,需要另一个寄存器进行并行存储到串行输出的转换,并且需要一个同步计数器跟踪串行输出的首位。

4.信道加错模块:需要一个计数器来进行固定频率的加错,需要一个寄存器进行汉明码串行输出到并行存储的转换。

5.译码输出模块:将加错后的汉明码进行纠错译码并且输出,需要一个同步信号查找首位,需要一个寄存器进行译码,需要一个寄存器进行译码后数据并行存储到串行输出的转换。

从技术层面来讲,需要三种技术:同步技术、串/并行转换技术、编译码技术。

三.Verilog代码module hanmingma(clk,mout,hout,tout);input clk;//晶振clk信号//output reg mout;//m序列输出//output reg hout;//汉明码输出//reg mclk;//m序列clk//reg hclk;//汉明码clk//reg [3:0] mreg;//m序列寄存器//reg [6:0] hreg;//用来汉明码编码的汉明码寄存器//reg [6:0] hreg2;//用来输出的汉明码寄存器//reg [6:0] rereg;//接收端汉明码寄存器//reg [3:0] m;//m序列产生寄存器//reg [7:0] count1;//mclk计数器//reg [7:0] count2;//hclk计数器//reg [1:0] mcount;//m序列同步计数器//reg [2:0] hcount;//汉明码同步计数器//reg [6:0] ecount;//加错计数器//reg [3:0] rem;//用来译码的译码m序列寄存器//output reg tout;//译码输出//reg [3:0 ]rem2;//用来输出的译码m序列寄存器//reg[2:0] tcount;//译码输出同步计数器//reg [2:0] a1;//接收端同步寄存器1//reg[2:0] a2;//接收端同步寄存器2//reg [3:0] acount;//接收端同步计数器//always @(posedge clk)beginif(count1==223)//分频产生32khz时钟信号mclk// beginmclk<=~mclk;count1<=0;endelsecount1<=count1+1;if(count2==127)//分频产生56khz的时钟信号hclk// beginhclk<=~hclk;count2<=0;endelsecount2<=count2+1;endalways @(posedge mclk)//产生m序列并且输出到mout// beginif(m==0)m=1;elsebeginm[0]<=m[0]^m[3];m[1]<=m[0];m[2]<=m[1];m[3]<=m[2];mout<=m[3];endendalways @(posedge mclk)//将mout输入到mreg寄存器中并且计数,每当存入4个数据时进行汉明码编码并存储到hreg寄存器中,并且重新开始计数//beginmreg[3:1]<=mreg[2:0];mreg[0]<=mout;if(mcount==2)beginhreg[6:3]<=mreg[3:0];hreg[2]<=mreg[3]^mreg[2]^mreg[1];hreg[1]<=mreg[1]^mreg[2]^mreg[0];hreg[0]<=mreg[3]^mreg[0]^mreg[2];mcount<=mcount+1;endelsemcount<=mcount+1;endalways @(posedge hclk)//将hreg中的汉明码存入hreg2中用以输出,hreg2中的最高位输出到hout并且进行移位,同时进行计数,输出7个数据之后重新将hreg中的数据存入hreg2中并且重复上述输出过程//beginhout<=hreg2[6];hreg2[6:1]<=hreg2[5:0];if(hcount==6)beginhreg2<=hreg;hcount<=0;endelsehcount<=hcount+1;endalways @(posedge hclk)//模拟加错信道,将hout输入到接收端汉明码寄存器,并将接收端寄存器数据移位,同时进行错码周期计数,当传输18个数据时,将当前数据取反输入给接收端//beginrereg[6:1]<=rereg[5:0];if(ecount==17)beginrereg[0]<=~hout;ecount<=0;endelsebeginrereg[0]<=hout;ecount<=ecount+1;endendalways @(posedge hclk)//进行接收端汉明码首位寻址,若两个同步监督寄存器中有一个为0,即连续两个7位序列中有一个无错误,视为同步成功,将同步计数器归0,否则同步计数器数值不变,继续寻找满足条件的首位//beginif(acount==6)beginif(a2==0||a1==0)acount<=0;elseacount<=6;endelseacount<=acount+1;endalways @(posedge hclk)//接收端纠错译码和监督,寻找首位时进行同步监督,并将同步监督寄存器1值赋给同步监督寄存器2,以实现监督连续两组汉明码的目的,与上一个模块共同作用保证同步,并同时进行纠错译码,将译码后的结果放到译码m序列寄存器中// beginif(acount==6)begina1[2]<=rereg[6]^rereg[5]^rereg[4]^rereg[2];a1[1]<=rereg[5]^rereg[4]^rereg[3]^rereg[1];a1[0]<=rereg[6]^rereg[5]^rereg[3]^rereg[0];a2<=a1;rem[3]<=((~(rereg[5]^rereg[3]^rereg[4]^rereg[1]))&(rereg[6] ^rereg[5]^rereg[3]^rereg[0])&(rereg[6]^rereg[5]^rereg[4]^re reg[2]))^rereg[6];rem[2]<=((rereg[5]^rereg[3]^rereg[4]^rereg[1])&(rereg[6]^re reg[5]^rereg[3]^rereg[0])&(rereg[6]^rereg[5]^rereg[4]^rereg [2]))^rereg[5];rem[1]<=((rereg[5]^rereg[3]^rereg[4]^rereg[1])&(~(rereg[6] ^rereg[5]^rereg[3]^rereg[0]))&(rereg[6]^rereg[5]^rereg[4]^r ereg[2]))^rereg[4];rem[0]<=((rereg[5]^rereg[3]^rereg[4]^rereg[1])&(rereg[6]^re reg[5]^rereg[3]^rereg[0])&(~(rereg[6]^rereg[5]^rereg[4]^rer eg[2])))^rereg[3];endendalways @(posedge mclk)//译码后的m序列输出,将译码m序列寄存器中的数据存入rem2中,rem2中最高位输出到tout并进行移位,并同时进行计数,输出4个数据后将m序列寄存器中的数据再次存入rem2中,重复上述输出过程//begintout<=rem2[3];rem2[3:1]<=rem2[2:0];if(tcount==3)beginrem2<=rem;tcount<=0;endelsetcount<=tcount+1;endendmodule四.实验结果分析1.程序仿真结果分析:图1.汉明码编码仿真分析:图中的hout为..1110100 1011000 0010110 0011101.., 经查表(此表格在报告最后附录给出)可知分为别1110,1011,0010,0011的汉明码编码,而1110-1011-0010-0011也符合mout的输出,所以这个仿真结果表明编码成功。

通信原理实验18 汉明码的编解码实验

通信原理实验18 汉明码的编解码实验

实验十七汉明码的编解码实验实验十八汉明码的编解码实验实验内容1. 熟悉汉明码码型变换编码实验2.熟悉汉明码码型变换译码实验一、实验目的1.了解汉明码的编解码原理2.掌握汉明码的编解码过程3. 学习通过CPLD编程实现汉明码编译码实验二、实验电路工作原理汉明码是1949年提出的一种能纠正单个错误的线性分组码。

它是在原有数据中插入若干校验码来进行错误检查和纠正的编码技术。

它在CDMA多载波系统中得到了广泛应用。

1.线性分组码的编码原理分组码中信息码元和监督码元是用线性方程联系起来的。

设分组系统码(n,k)中k=4,为能纠正一位误码,取r=3,则n=k+r=7。

我们用a0a1a2a3a4a5a6表示这7个码元,用S1,S2,S3表示由三个监督方程式计算得到的校正子,并假设S1S2S3三位校正子组码与误码位置的对应关系如表1-1所示。

由表可知: S1=6542(1-1)94实验十七 汉明码的编解码实验95S2=6531a a a a ⊕⊕⊕ (1-2) S3=6430a a a a ⊕⊕⊕ (1-3)在编码时,a6,a5,a4,a3为信息码元,取决于被传输的信息。

由式(1-1),(1-2),(1-3)可知,监督码元a2,a1和a0应根据以下的监督方程确定:a2=654a a a ⊕⊕(1-4); a1=653a a a ⊕⊕(1-5); a0=643a a a ⊕⊕(1-6)不难看出,上述(7.4)码的最小码距dmin=3,它能纠正一个误码或检测两个误码。

如超出纠错能力,则反而会因“乱纠”而增加新的误码。

2.线性分组码的实现方法 dataout(7)<='0';dataout(6 downto 3 ) <=datain(3 downto 0); dataout(2)<=datain(3)xor datain(2) xor datain(1); dataout(1)<=datain(2) xor datain(1) xor datain(0); dataout(0)<=datain(3) xor datain(2) xor datain(0); 3.线性分组码的解码原理接收端收到的每个码组后,计算出S1,S2和S3,如不全为0,则可按表1-1确定误码的位置,然后给以纠正。

汉明码编译码

汉明码编译码
图6误码率随Pe变化曲线图
图中绿线为BSC信道误码率,红线为设定Pe值,蓝线为Hamming码解码误码率。由图线可以看出仿真的BSC信道误码率与Pe一致。
在Pe<0.2时,Hamming码的解码误码率随着BSC信道错误传输概率Pe的减小而减小。Hamming码的解码误码率显著下降,约为Pe的1/2。Hamming码的纠1位错起到了很好的效果。
附录
clear all
[H,G,n,k] =hammgen(3,'D^3+D+1');%
2)产生随机的信息序列M
3)由 得到码字
4)进入信道传输
假设是BSC信道,错误转移概率设定为0.1
传输后接收端得到的码流为
红色表示错误比特。
5)计算 得到伴随式
错误图样
伴随式
1
001
010
100
查表可知第一行码字错误图样为0100000,第二行码字错误图样为1000000,第三行码字错误图样为0000001。
进行 即可得到纠错解码的码字C2。
6)得到解码码流
7)得到解码信息序列
可以看出解码信息序列与原信息序列一样,体现了汉明码的纠错能力。
2.性能分析
1)BSC信道仿真
设置BSC错误转移概率Pe从0到1变化,步进为0.01,在每个Pe值进行1000次蒙特卡洛仿真,得到图4所示误码率随Pe变化曲线图和图5所示误帧率随Pe变化曲线图。
0.2<Pe<0.5时,Hamming码的解码误码率大于Pe。这是因为在Pe>0.2时,传一个码字错误比特数近似为2,而Hamming码只能纠一位错,两位同时出错时会纠成另一个码字,这样就可能增加误比特数,使得“越纠越错”。
Pe>0.5时,情况恰好相反。

汉明码实验报告

汉明码实验报告

一、实验目的1. 理解汉明码的基本原理及其在数据传输中的作用。

2. 掌握汉明码的编码和译码方法。

3. 通过实验验证汉明码在纠正单个错误和检测多个错误方面的能力。

4. 增强对编码理论在实际应用中的理解和应用能力。

二、实验原理汉明码是一种线性分组码,由理查德·汉明于1950年提出。

它通过在原始数据中插入额外的校验位来检测和纠正错误。

汉明码的特点是,它可以纠正单个错误,同时也能检测出两个或更多的错误。

在汉明码中,校验位的位置是按照2的幂次来安排的,即第1位、第2位、第4位、第8位等。

信息位则填充在这些校验位之间。

在编码过程中,校验位通过计算特定信息位的逻辑和来确定。

三、实验内容1. 设置汉明码参数:选择要编码的信息位长度和校验位长度。

例如,选择7位信息位和4位校验位,总共编码为11位。

2. 生成生成矩阵:根据校验位的数量,生成对应的生成矩阵。

例如,对于7位信息位和4位校验位,生成矩阵为:```G = [1 0 0 0 1 0 10 1 0 0 1 1 00 0 1 0 1 1 10 0 0 1 1 1 1]```3. 编码:将信息位与生成矩阵相乘,得到编码后的数据。

例如,信息位为`1101010`,编码后的数据为`1111000110`。

4. 译码:在接收端,首先计算每个校验位的值。

如果所有校验位的值都为0,则认为没有错误。

否则,通过计算错误位置,纠正错误。

5. 纠错:如果检测到错误,根据错误位置进行纠正。

例如,如果检测到第3位(校验位)错误,则将其反转。

四、实验步骤1. 编码过程:- 初始化信息位和校验位。

- 使用生成矩阵对信息位进行编码。

- 输出编码后的数据。

2. 译码过程:- 初始化校验位。

- 计算每个校验位的值。

- 根据校验位的值判断是否有错误。

- 如果有错误,纠正错误。

3. 纠错过程:- 根据错误位置,反转对应的位。

五、实验结果与分析1. 正确性验证:通过实验验证,编码后的数据在传输过程中发生单个错误时,能够被正确纠正。

北交大通原实验5_实验十五汉明编码和译码实验

北交大通原实验5_实验十五汉明编码和译码实验

实验十五 汉明编码和译码实验一、 实验前的准备(1) 预习本实验的相关内容。

(2) 熟悉实验指导书附录B 和附录C 中实验箱面板分布及测试孔位置相关模块的跳线状态。

(3) 实验前重点熟悉的内容:汉明码的编码规则、汉明码的纠错能力。

二、 实验目的(1) 掌握汉明码编译码原理。

(2) 掌握汉明码纠错检错原理。

(3) 通过纠错编解码实验,加深对纠错编解码理论的理解。

三、 实验仪器(1) ZH5001A 通信原理综合实验系统(2) 20MHz 双踪示波器四、 基本原理差错控制编码的基本原理是:由发送端的信道编码器在信息码元序列中增加一些监督码元。

这冗余的码元与信息之间以某种确定的规则建立校验关系,使接收端可以利用这种关系由信道译码器来发现或纠正可能存在的错码。

不同的编码方法有不同的检错或纠错能力。

为了纠正位错码,在分组码中最少要加入多少监督位才可行呢?编码效率能否提高呢?从这种思想出发进行研究,便导致了汉明码的诞生。

汉明码是一种能够纠正一位错码且编码效率较高的线性分组码。

下面介绍汉明码的编码原理。

一般来说,若码长为n ,信息位数为k ,记作(,)n k 码,则监督位数r n k =-,如果希望用r 个监督位构造出r 个监督关系式来指示一位错码的n 种可能位置,则要求2121r n r k r -≥≥++或 通信原理综合实验系统中的纠错码系统采用(7,4)汉明码。

用650a a a … 表示这7个码元,用123S S S 、、表小3个监督关系式中的校正子,则123S S S 的值与码元间构成偶数监督关系:165422443136530S a a a a S a a a a S a a a a =⊕⊕⊕=⊕⊕⊕=⊕⊕⊕在发送端编码时,信息位654a a a 、、和3a 的值决定于输入信号,因此它们是随机的。

监督位21a a 、和0a 应根据信息位的取值按监督关系来确定,即监督位应使以上=式中123S S S 、、的值为零(表示变成的码组中应无错码),即 654254316530000a a a a a a a a a a a a ⊕⊕⊕=⎫⎪⊕⊕⊕=⎬⎪⊕⊕⊕=⎭上式经移项运算,解出监督位265415430653a a a a a a a a a a a a =⊕⊕⎫⎪=⊕⊕⎬⎪=⊕⊕⎭给定信息位后,可直接按上式算出监督位,其结果如下表接收端收到每个码组后,先计算出123S S S 、、,再按上表判断错码情况。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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开始记录一个周期),验证汉明编译码的正确性。

3、发端加错信号观测
(1)保持S2为“1110”,将S1拨为“0000”(此时无误码)。

用示波器同时观测FS2(发端加错指示)和TS0(收端检错指示),说明这两点的波形的状态;
(2)将S1拨为“0001”(表示插入一个误码)。

用示波器同时观测FS2(发端加错指示和TS0(收端错码指示),上下对应记录这两点的波形,定性说明汉明译码能否检测出错码。

(3)将S1拨为“0010”(表示插入两个误码)。

用示波器同时观测FS2(发端加错指示)和TS0(收端检错指示),定性说明汉明译码能否检测出错码。

回答:为什么TS0(收端错码指示)的脉冲有时窄,有时宽(宽度是窄脉冲的2倍)?
(4)将S1拨为“0011”(表示插入三个误码),用示波器同时观测FS2(发端加错指示)和TS0(收端检错指示),定性说明汉明译码能否检测出错码。

回答:为什么TS0(收端错码指示)的脉冲出现的规律与发端FS2(发端加错指示)不完全一致?
4、汉明码检纠错能力验证实验
(1)保持S2为“1110”,将S1拨为“0001”(表示插入一个误码)。

用示波器同时观测FS3(汉明码编码输入)和TS_SEL(汉明码译码输出)的波形是否稳定一致?
(2)将S1拨为“0010”(表示插入两个误码)。

用示波器同时观测FS3(汉明码编码输入)和TS_SEL(汉明码译码输出)的波形是否稳定一致?描述所观察到的现象。

(3)将S1拨为“0011”(表示插入三个误码)。

用示波器同时观测FS3(汉明码编码输入)和TS_SEL(汉明码译码输出)的波形是否稳定一致?描述所观察到的现象。

用文字说明该汉明编译码系统能纠正几位错码?
七、实验报告要求
1、根据实验测试记录,整理数据。

2、为什么汉明编码前的数据数率是32Kb/S,编码后的数据速率是56Kb/S?。

相关文档
最新文档