实验三 汉明码编译码实验

合集下载

信息论实验3汉明码

信息论实验3汉明码

实验三、汉明码一、汉明编码步骤:公式:码长:n=2^m-1信息位数:k=2^m-m-1监督位数:r=n-k=m最小码距:d=31、当给定m后,可由以上公式得到汉明码的一致校验矩阵H2、然后根据一致校验矩阵与生成矩阵之间的部分转置关系得到生成矩阵G3、再由信源矩阵与生成矩阵的乘积得到汉明编码二、汉明码的解码:由生成矩阵或一致校验矩阵与码字之间的乘积为零矩阵可得出监督码元与信息码元之间的模二加关系,然后根据所得的关系,用计算伴随式进行译码。

然后确定错误图样并加以纠正。

三、汉明码编解码流程图如图(1)四、仿真程序:clear all %初始化clc[h,g,n,k]=hammgen(3); %产生H和G矩阵for i=1:2^k %for j=k:-1:1if rem(i-1,2^(-j+k+1))>=2^(-j+k)u(i,j)=1;elseu(i,j)=0;endendendc=rem(u*g,2) %产生(7,4)汉明码本d=min(sum((c(2:2^k,:)))) %计算最小码距h %输出监督矩阵g %输出生成矩阵运行结果如下:c =0 0 0 0 0 0 01 0 1 0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 10 1 1 0 1 0 01 1 0 0 1 0 1 1 0 0 0 1 1 00 0 1 0 1 1 11 1 0 1 0 0 0 0 1 1 1 0 0 10 0 1 1 0 1 01 0 0 1 0 1 1 1 0 1 1 1 0 0 0 0 0 1 1 0 10 1 0 1 1 1 01 1 1 1 1 1 1d =3h =1 0 0 1 0 1 1 0 1 0 1 1 1 00 0 1 0 1 1 1g =1 1 0 1 0 0 00 1 1 0 1 0 01 1 1 0 0 1 0 1 0 1 0 0 0 1图(1)五、汉明码的性能及优缺点:汉明码是一种完备码,是能够就政党恶错误的线性分组码。

汉明码编译码实验

汉明码编译码实验

汉明码编译码实验一、实验目的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。

汉明码编译码

汉明码编译码

汉明码编译码一设计思想汉明码是一种常用的纠错码,具有纠一位错误的能力。

本实验使用Matlab平台,分别用程序语言和simulink来实现汉明码的编译码。

用程序语言实现就是从原理层面,通过产生生成矩阵,错误图样,伴随式等一步步进行编译码。

用simulink实现是用封装好的汉明码编译码模块进行实例仿真,从而验证程序语言中的编译码和误码性能分析结果。

此外,在结合之前信源编码的基础上,还可实现完整通信系统的搭建。

二实现流程1.汉明码编译码图 1 汉明码编译码框图1)根据生成多项式,产生指定的生成矩阵G2)产生随机的信息序列M得到码字3)由C MG4)进入信道传输S RH得到伴随式5)计算=T6)得到解码码流7)得到解码信息序列2.汉明码误码性能分析误码率(SER)是指传输前后错误比特数占全部比特数的比值。

误帧率(FER)是指传输前后错误码字数占全部码字数的比值。

通过按位比较、按帧比较可以实现误码率和误帧率的统计。

3. 构建完整通信系统图 2 完整通信系统框图三 结论分析1. 汉明码编译码编写了GUI 界面方便呈现过程和结果。

图 3 汉明码编译码演示GUI 界面以产生(7,4)汉明码为例说明过程的具体实现。

1) 根据生成多项式,产生指定的生成矩阵G用[H,G,n,k] = hammgen(3,'D^3+D+1')函数得到系统码形式的校验矩阵H 、G 以及码字长度n 和信息位数k100101101011100010111H ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦1101000011010011100101010001G ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦2) 产生随机的信息序列M输入信息序列Huffman 编码Hamming 编码信道Hamming 译码Huffman 译码输出信息序列噪声0010=01000111M ⎡⎤⎢⎥⎢⎥⎢⎥⎣⎦3) 由C MG =得到码字010001101101000010111C ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦4) 进入信道传输假设是BSC 信道,错误转移概率设定为0.1 传输后接收端得到的码流为000011110100000111101R ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦红色表示错误比特。

汉明码编码实验报告详细解释

汉明码编码实验报告详细解释

汉明码的实现详细实验报告一、实验目的1、掌握线性分组码的编码原理2、掌握汉明码编码方法3、了解编码对误码性能的改善二、实验内容1、自行设置汉明码的参数,生成矩阵,计算所设计出的汉明码;写出产生(3,1)汉明码的生成矩阵,给出生成码的源程序,并给出运行结果。

2、利用encode库函数实现汉明编码;3、搭建一个通信仿真模块,并给出运行结果,分析汉明码对通信性能的影响;4、整理好所有的程序清单或设计模块,并作注释。

三、实验原理(一)、汉明码的介绍汉明码是1951年由汉明(R.W.Hamming)提出的能纠正单个错误的线性分组码。

它性能良好,既具有较高的可靠性,又具有较高的传输效率,而且编译码电路较为简单,易于工程实现,因此汉明码在发现后不久,就得到了广泛的应用。

我们的目的是要寻找一个能纠正单个错误,且信息传输率(即码率r=k/n )最大的线性分组码。

我们已经知道,具有纠正单个错误能力的线性分组码的最小距离应为 3,即要求其H 矩阵中至少任意两列 线性无关。

要做到这一点,只要H 矩阵满足“两无”一一无相同的列, 无全零列就可以了。

(n,k )线性分组码的H 矩阵是一个⑴-"n 訂n 阶矩阵,这里 r =n —k 是校验元的数目。

显然,r 个校验元能组成2r 列互不相同的r 重 矢量,其中非全零矢量有2r -1个。

如果用这2r -1个非全零矢量作为H 矩阵的全部列,即令H 矩阵的列数n =2「一1,则此H 矩阵的各列均不 相同,且无全零列,由此可构造一个纠正单个错误的(n ,k )线性分 组码同时,2r -1是n 所能取的最大值,因为如果n 2r -1,那么H 矩 阵的n 列中必会出现相同的两列,这样就不能满足对 H 矩阵的要求。

而由于n =2 -1是门所能取的最大值,也就意味着码率 R 取得了最大 值,即这样设计出来的码是符合我们的要求的,这样的码就是汉明码 定义 若H 矩阵的列是由非全零且互不相同的所有二进制r 重矢量组成,则由此得到的线性分组码,称为 GF (2)上的(2r -1, 2r -1-r )汉 明码。

实验三 汉明码编码与译码

实验三 汉明码编码与译码

实验三汉明码编码与译码一、实验题目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;}}六、程序运行结果。

汉明码的编码和译码算法

汉明码的编码和译码算法

汉明码的编码和译码算法汉明码(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 ⽐特输⼊消息,即每个消息是独⽴编码的,从⽽编码器是⽆记忆的,且可⽤组合逻辑电路来实现。

定义:⼀个长度为n ,有2k 个码字的分组码,当且仅当其2k 个码字构成域GF(2)上所有n 维向量组成的向量空间的⼀个K 维⼦空间时被称为线性(linear )(n, k)码。

汉明码(n ,k ,d )就是线性分组(n, k)码的⼀种。

其编码算法即为使⽤⽣成矩阵G :v = u ·G 。

通信原理实验 汉明编码和译码实验 实验报告

通信原理实验 汉明编码和译码实验 实验报告

姓名:学号:班级:
第周星期第大节
实验名称:汉明编码和译码实验
一、实验目的
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时,输出数据经过汉明编码。

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

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

课程名称通信原理实验序号实验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)汉明码作为一种信道编码的方式,具有一定的纠错检错能力。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三汉明码编译码实验
一、实验目的
1、了解信道编码在通信系统中的重要性。

2、掌握汉明码编译码的原理。

3、掌握汉明码检错纠错原理。

4、理解编码码距的意义。

二、实验原理
1、实验原理框图
汉明码编译码实验框图
汉明码编码过程:数字终端的信号经过串并变换后,进行分组,分组后的数据再经过汉明码编码,数据由4bit变为7bit。

三、实验器材
1、主控&信号源、6号、2号模块各一块
2、双踪示波器一台
3、连接线若干
四、实验步骤
汉明码编码规则验证连线汉明码
1.2号模块的拨码开关S12#拨为10100000 S22#、S32#、S42#均拨为00000000;
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。

相关文档
最新文档