汉明码编译码实验
汉明码编译码课程设计
汉明码编译码课程设计一、课程目标知识目标: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 汉明码的编解码实验
实验十七汉明码的编解码实验实验十八汉明码的编解码实验实验内容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确定误码的位置,然后给以纠正。
汉明码编译码
图中绿线为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_实验十五汉明编码和译码实验
实验十五 汉明编码和译码实验一、 实验前的准备(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. 了解汉明码的编码和解码原理;2. 掌握汉明码编码和解码的具体实现方法;3. 验证汉明码在检测和纠正错误方面的有效性;4. 分析汉明码的性能及其应用范围。
二、实验原理:1. 汉明码编码原理:汉明码的编码过程主要包括以下几个步骤:(1)确定数据位数和冗余位数:根据要传输的数据确定数据位数n,并计算冗余位数m。
(2)确定冗余位的位置:将数据位和冗余位按照特定规则排列,确定冗余位的位置。
(3)计算冗余位的值:根据冗余位的位置和数据位的值,计算每个冗余位的值。
(4)生成汉明码:将数据位和冗余位按照一定顺序排列,得到最终的汉明码。
2. 汉明码解码原理:汉明码的解码过程主要包括以下几个步骤:(1)接收数据:接收到经过传输的汉明码数据。
(2)计算冗余位的值:根据接收到的数据,计算每个冗余位的值。
(3)检测错误位置:根据冗余位的值,检测是否存在错误,并确定错误位的位置。
(4)纠正错误:根据错误位的位置,纠正错误的数据位。
(5)输出正确数据:输出经过纠正后的正确数据。
三、实验过程:1. 编码程序设计:根据汉明码编码原理,编写编码程序,实现将输入的数据进行编码的功能。
2. 解码程序设计:根据汉明码解码原理,编写解码程序,实现将输入的汉明码进行解码的功能。
3. 实验数据准备:准备一组数据,包括数据位和冗余位,用于进行编码和解码的实验。
4. 编码实验:将准备好的数据输入编码程序,得到编码后的汉明码。
5. 传输和接收实验:将编码后的汉明码进行传输,模拟数据传输过程,并接收传输后的数据。
6. 解码实验:将接收到的数据输入解码程序,进行解码,检测和纠正错误。
7. 实验结果分析:分析编码和解码的正确性,检测和纠正错误的能力,并对汉明码的性能进行评估。
通信报告 汉明编译码
汉明编译码实验一、实验目的1、通过实验,进一步了解差错控制的概念;2、通过纠错编解码实验,加深对纠错编解码理论的理解;3、加深对hanming码的产生、加错、纠错、译码的过程。
二、实验仪器1、JH5001通信原理综合实验系统一台2、20MHz双踪示波器一台3、JH9001型误码测试仪(或GZ9001型)一台三、实验原理差错控制编码的基本作法是:在发送端被传输的信息序列上附加一些监督码元,这些多余的码元与信息之间以某种确定的规则建立校验关系。
接收端按照既定的规则检验信息码元与监督码元之间的关系,一旦传输过程中发生差错,则信息码元与监督码元之间的校验关系将受到破坏,从而可以发现错误,乃至纠正错误。
通信原理综合实验系统中的纠错码系统采用汉明码(7,4)。
所谓汉明码是能纠正单个错误的线性分组码。
它有以下特点:码长n=2m-1 最小码距d=3信息码位k=2n-m-1 纠错能力t=1监督码位r=n-k这里m位≥2的正整数,给定m后,既可构造出具体的汉明码(n,k)。
用a6、a5、a4、a3代表4个信息元,a2、a1、a0三个监督码元可表示为:a2=a6+a5+a4a1=a6+a5+a3a0=a6+a4+a3汉明译码的方法,可以采用计算校正子,然后确定错误图样并加以纠正的方法。
校正子可表示为:s1=a6+a5+a4+a2;s2=a6+a5+a3+a1s3=a6+a4+a3+a0图9.1和图9.2给出汉明编码器和译码器电原理图。
a6a5a4a3a2a1a0a6a5a4a3图9.1汉明编码器电原理图a6a5a4a3a3a3a3图9.2汉明译码器电原理图表9.1 (7,4)汉明编码输入数据与监督码元生成表a6bit,其次是a5、a4……,最后输出a0位。
四、程序设计1、设计分析首先根据实验要求绘制出框图。
如下:图1 时钟产生框图实验的输入时钟为14.336MHz,编码输入的码元速率为32kbps,生成的4位m序列码元信息,再经编码器后变成7位汉明码发送,码元速率为32*7/4=56kbps。
汉明码编译码实验
本次实验较为简单,我们小组很快就能做出来,而且实验原理及实验结果也很容易看懂,所以我们在很短的时间就完成了本次实验,唯一就是需要记录的数据较前两次实验较多,所以本次记录的时间就较多,不过我们还是成功的完成了本次实验。
1100
1101
1110
1111
五、实验记录与处理(数据、图表、计算等)
汉明码编码规则验证:
输入
编码输出
α6α500
0000000
0001
0001011
0010
0010101
0011
0011110
0100
0100110
0101
0101101
0110
0110011
(1)将2号模块的拨码开关S12#拨为10100000,拨码开关S22#、S32#、S42#均拨为00000000;
(2)将6号模块的拨码开关S16#拨为0001,即编码方式为汉明码。开关S36#拨为0000,即无错模式。按下6号模块S2系统复位键。
3、此时系统初始状态为:2号模块提供32K编码输入数据,6号模块进行汉明编译码,无差错插入模式。
0111
0111000
输入
编码输出
α6α5α4α3
α6α5α4α3α2α1α0
1000
1000111
1001
1001100
1010
1010010
1011
1011001
1100
1100001
1101
1101010
1110
1110100
1111
1111111
六、实验结果及分析
本项目通过改变输入数字信号的码型,观测延时输出,编码输出及译码输出,验证汉明码编译码规则。
实验三 汉明码编译码实验
实验三汉明码编译码实验
汉明码编译码实验
一、实验目的
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。
实验三 汉明码编码与译码
实验三汉明码编码与译码一、实验题目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();intm,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];intH[100][100],HT[100][100],Ig[100][100],P[100][100],G[100][100],Ibit[100],Cbit[100],Err_Cbit[1 00],V[100];/**************************************************************************//*函数名:void Binary_Conversion(int i) *//*功能:十-二进制转换*//*说明:该函数输出二进制数为低位在前,高位在后*//**************************************************************************/ void Binary_Conversion(int i){int j=0,temp=0;do // 生成完整n个二进制{temp = i % 2; // 判断相应最低位为0或1(若为2的倍数则为0,否则为1)i = i / 2; // 为考虑前一位为0或1做准备if(j < m) // m确定二进制的位数{N[j] = temp;j++;}}while(i != 0); // 等待i等于0(即等待十进制数为0时不进行二进制转换)}/**************************************************************************/ /*函数名:void Random_Array() */ /*功能:将数组的列随机排放*/ /**************************************************************************/ void Random_Array(){srand(unsigned(time(NULL))); // 随机生成条件(抵消rand函数伪随机效果)cout << endl << "产生随机数为:" << endl;for(int j=0;j<n;j++){loop:r= rand() % n; // 随机生成范围为0~n-1的正整数for(int i=0;i<j;i++){if(R[i] == r) // 如果随机产生的数与已产生的数相等,则重新随机产生数{goto loop;}}R[j] = r; // 产生不重复的随机数cout << setw(4) << r + 1;for(int i=0;i<m;i++){PT_D[i][j] = PT_S[i][r]; // 顺序转置系数矩阵->随机转置系数矩阵}}}/**************************************************************************/ /*函数名:void Creat_H() */ /*功能:创建系统型奇偶校验矩阵H */ /*说明:系统型奇偶校验矩阵H由转置负系数矩阵和单位矩阵组成*/ /**************************************************************************/ void Creat_H(){int i,j,count0=0,count1=0,count2=0,count3=0;/*************生成单位矩阵Ih************/ //教材P101for(i=0;i<m;i++) //i表示行j表示列{for(j=0;j<n;j++){if((j >= k) && (i+k == j))Ih[i][j] = 1;elseIh[i][j] = 0;}}/*********生成转置负系数矩阵PT**********/for(i=0;i<m;i++) // 转置二进制转换数组到PT_S{for(j=0;j<n;j++){PT_S[i][j] = num[j][i]; // 生成顺序转置系数矩阵}}Random_Array();//将数组的列随机排放for(j=0;j<n;j++){for(i=0;i<m;i++){if(PT_D[i][j] == 0)count0 ++;}count1 = count0; // count1记录每一列1的个数count0 = 0;if(count1 == (m-1)) // 将只有一位为1其余位为0的列的所有位置0{for(i=0;i<m;i++){PT_D[i][j] = 0;}}else// COUNT数组记录只有一位为1其余位为0的列为0,其余位的值为PT_D列的位置值+1 COUNT[count2] = j + 1;count2 ++;}for(int q=0;q<n;q++) // 将PT_D的至少有两个1的列赋给PT{if(COUNT[q] > 0){for(i=0;i<m;i++)PT[i][count3] = PT_D[i][q];count3 ++;}}cout << endl;/********生成系统型奇偶校验矩阵H********/for(i=0;i<m;i++){for(j=0;j<n;j++){H[i][j] = PT[i][j] + Ih[i][j];}}cout << endl << "系统型奇偶校验矩阵H为:" << endl;for(i=0;i<m;i++) // 显示系统型奇偶校验矩阵H{for(j=0;j<n;j++){cout << setw(2) << H[i][j] << setw(2);}cout << endl;}}/**************************************************************************/ /*函数名:void Creat_G() *//*功能:创建系统型生成矩阵G */ /*说明:系统型生成矩阵G由单位矩阵和系数矩阵组成*/ /**************************************************************************/ void Creat_G(){int i,j;/*************生成单位矩阵Ig************/for(i=0;i<k;i++){for(j=0;j<n;j++){if(i == j)Ig[i][j] = 1;elseIg[i][j] = 0;}}/*************生成系数矩阵P*************/for(j=0;j<n;j++){for(i=0;i<k;i++){if(j>k-1)P[i][j] = PT[j-k][i];}}/**********生成系统型生成矩阵G**********/for(i=0;i<k;i++){for(j=0;j<n;j++){G[i][j] = P[i][j] + Ig[i][j];}}cout << endl << "系统型生成矩阵G为:" << endl;for(i=0;i<k;i++) // 显示系统型奇偶校验矩阵H{for(j=0;j<n;j++){cout << setw(2) << G[i][j] << setw(2);}cout << endl;}}/*******************************主函数*************************************/ int main(){int i,j;cout << setw(30) << "汉明码" << endl;cout << "请输入校验元位数m = ";cin >> m;n = pow(2,m) - 1; //码长k = pow(2,m) - 1 -m; //信息源位数cout << "提示:" << setw(10) << "您输入的为(" <<n<< "," <<k<< ")汉明码,可纠正" << t << "个错误" << endl;cout << endl;for(i=0;i<n;i++) // 将n个转换二进制数组存入二维数组{Binary_Conversion(i+1);for(j=0;j<m;j++){num[i][j] = N[j];//num[i][m-j-1] = N[j]; // m-j-1意义在于将二进制高位在前,低位在后}}cout << "n个二进制转换表为:" << endl;for(i=0;i<n;i++) // 输出二进制转换对应表低位在前高位在后{for(j=0;j<m;j++){cout << num[i][j] << setw(2);}cout << setw(4);}cout << endl;Creat_H();Creat_G();cout << endl << "请输入" << k << "位信息比特流:" << endl;for(i=0;i<k;i++)cin >> Ibit[i];for(i=0;i<n;i++){for(j=0;j<k;j++){Cbit[i] += (Ibit[j] * G[j][i]); // 十进制加法Cbit[i] = Cbit[i] % 2; // 将十进制转换二进制}}cout << endl << "输出" << n << "位码字比特流:" << endl;for(i=0;i<n;i++) //输出编码后的码字cout << setw(3) << Cbit[i];cout << endl;Err_Pro(); //错误概率函数Hamming_Decode(); //汉明译码return 0;}/**************************************************************************/ /*函数名:void Err_Pro() */ /*功能:产生错误概率函数*/ /**************************************************************************/ void Err_Pro(){float p;cout << endl << "请输入错误概率p = ";cin >> p;for(int x=0;x<n;x++){if((float)((rand() % 1001) * 0.001) < p) // 如果小于概率,则原码0与1互换{err ++;Err_Cbit[x] = (Cbit[x] + 1) % 2;}elseErr_Cbit[x] = Cbit[x]; // 如果大于错误概率,则赋值原码}cout << endl << "输出" << n << "位码字比特流(每位等概出错):" << endl;for(int y=0;y<n;y++)cout << setw(3) << Err_Cbit[y];cout << endl;}/**************************************************************************/ /*函数名:void Hamming_Decode() */ /*功能:汉明译码函数*//**************************************************************************/ void Hamming_Decode(){int i,j,flag=0,d;for(i=0;i<n;i++) // 得到H的转置矩阵HT{for(j=0;j<m;j++){HT[i][j] = H[j][i];}cout << endl << "输出转置奇偶校验矩阵HT为:" << endl;for(i=0;i<n;i++){for(j=0;j<m;j++){cout << setw(3) << HT[i][j] << setw(3);}cout << endl;}for(i=0;i<m;i++) // 计算伴随矩阵{for(j=0;j<n;j++){V[i] += Err_Cbit[j] * HT[j][i];}if(V[i] % 2 == 0) // 将十进制转换二进制V[i] = 0;elseV[i] = 1;}cout << endl << "输出伴随矩阵为:" << endl;for(i=0;i<m;i++)cout << V[i] << setw(2);cout << endl;for(i=0;i<m;i++){if(V[i] == 0) // 如果伴随矩阵为零矩阵,则直接输出原码流{if(i == m-1){cout << endl << "<译码正确!>输出码流为:" << endl;for(j=0;j<n;j++)cout << Err_Cbit[j] << setw(3);cout << endl;}}else{flag ++; // 如果伴随矩阵为非零矩阵,则标志位自加1break;}if(flag != 0){if(err == 1) // 伴随矩阵为非零矩阵时执行{for(i=0;i<n;i++){for(j=0;j<m;j++){if(V[j] == HT[i][j]){if(j == (m-1)) d = i;//d记录行}elsebreak;}}cout << endl << "<译码正确!>输出码流为:"<< endl;Err_Cbit[d] = (Err_Cbit[d] + 1) % 2;for(i=0;i<n;i++)cout << setw(3) << Err_Cbit[i] << setw(3);cout << endl;}elsecout << endl << "由于本次编码有" << err << "个错误位,大于纠错能力" << t << ",故<译码错误!>" << endl;}}六、程序运行结果。
实验三 汉明码编译码实验
实验三汉明码编译码实验
汉明码编译码实验
一、实验目的
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。
北交大通原实验实验十五汉明编码和译码实验剖析
北交大通原实验-实验十五汉明编码和译码实验剖析————————————————————————————————作者:————————————————————————————————日期:通信原理实验电子信息工程学院学生:学号:指导教师:王根英日期: 2014年12月30日上课时间:星期二第 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 的值决定于输入信号,因此它们是随机的。
- 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开始记录一个周期),验证汉明编译码的正确性。
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?。