一 汉明码的编解码说明

(一)编码

Hamming(12,8)

N=12,表示编码后的比特长度

K=8,待编码数据的比特长度

R=N-K=4,校验位的比特长度

D=3 汉明距离:相邻行之间不同比特数据的最小值

(D-1)/2=1 纠错能力

表格1:

----------------------------------------------------------------------------------------------------

单位矩阵(I)                                       生成校验位的矩阵(P)

----------------------------------------------------------------------------------------------------

标号   11      10       9       8       7      6      5     4           3         2     1      0

编号     x^7     x^6    x^5   x^4   x^3   x^2   x^1   1           c3      c2    c1    c0

7      1        0       0       0       0      0       0     0           1        1      1      0

6            0        1       0       0       0      0       0     0           0        1      1      1

5            0        0       1       0       0      0       0     0           1        0      1      0

4            0        0       0       1       0      0       0     0           0        1      0      1

3            0        0       0       0       1      0       0     0           1        0      1      1

2            0        0       0       0       0      1       0     0           1        1      0      0

1            0        0       0       0       0      0       1     0           0        1      1      0

0            0        0       0       0       0      0       0     1           0        0      1      1

---------------------------------------------------------------------------------------------------

G是生成矩阵见表格1

A[7:0]

CODE=G x A

CODE[11]=A[7]

CODE[10]=A[6]

...

CODE[4]=A[0]

CODE[3]=A[7]^A[5]^A[3]^A[2] (^为异或)

CODE[2]=A[7]^A[6]^A[4]^A[2]^A[1]

CODE[1]=A[7]^A[6]^A[5]^A[3]^A[1]^A[0]

CODE[0]=A[6]^A[4]^A[3]^A[0]

(二)解码

1.求校验矩阵H

H = {P^T,I(N-K)}(^T表示转置; I(N-K)=I(4)表示4x4单位矩阵)

H为4x11矩阵

表2:

----------------------------------------------------------------------------------------------------------

11    10   9   8   7   6   5   4   3   2   1   0

-----------------------------------------------------------------------------------------------------------

p7   p6   p5 p4     p3  p2  p1   P0   I3    I2   I1   I0

-----------------------------------------------------------------------------------------------------------

3      1      0     1   0   1     1   0   0   1   0   0   0

2      1      1     0   1   0     1   1   0   0   1   0   0

1      1      1     1   0   1     0   1   1   0   0   1   0

0      0      1     0   1   1     0      0   1   0   0   0   1

----------------------------------------------------------------------------------------------------------

2.求校正子S

S = H^T * U (U为待解码的数据)

S[3] = U[11]^U[9]^U[7]^U[6]^U[3]

S[2] = U[11]^U[10]^U[8]^U[6]^U[5]^U[2]

S[1] = U[11]^U[10]^U[9]^U[7]^U[5]^U[4]^U[1]

S[0] = U[10]^U[8]^U[7]^U[4]^U[0]

3.根据假设错误模式定位错误比特

通过错误模式推导校正子Si,i是index指的是错误模式的种类,因为我们汉明码解码数据有12bit,

所以错误模式有12种,还包括一种全部正确的模式。

Si = H^T * Ei

表3:

-----------------------------------------------------------------------------

Ei             H^T      Si     编号

----------------------------------------------------------------------------

12'b0000_0000_0000  1110    0000

12'b0000_0000_0001  0111    0001   0

12'b0000_0000_0010   1010      0010   1

12'b0000_0000_0100  0101     0100  2

12'b0000_0000_1000  1011    1000  3

12'b0000_0001_0000  1100    0011  4

12'b0000_0010_0000   0110    0110  5

12'b0000_0100_0000   0011    1100  6

12'b0000_1000_0000   1000    1011  7

12'b0001_0000_0000   0100     0101  8

12'b0010_0000_0000   0010    1010  9

12'b0100_0000_0000   0001    0111  10

12'b1000_0000_0000           1110    11

----------------------------------------------------------------------------

4.优化数据修正方法

C[11] = U[11]^(S[3]&S[2]&S[1]&(~S[0]))

C[10] = U[10]^(~S[3]&S[2]&S[1]&S[0])

C[9] = U[9]^(S[3]&(~S[2])&S[1]&(~S[0]))

C[8] = U[8]^(S[3]&(~S[2])&S[1]&S[0])

C[7] = U[7]^(S[3]&(~S[2])&S[1]&S[0])

C[6] = U[6]^(S[3]&S[2]&(~S[1])&(~S[0]))

C[5] = U[5]^((~S[3])&S[2]&S[1]&(~S[0]))

C[4] = U[4]^((~S[3])&(~S[2])&S[1]&S[0])

C[3] = U[3]^(S[3]&(~S[2])&(~S[1])&(~S[0]))

C[2] = U[2]^((~S[3])&S[2]&(~S[1])&(~S[0]))

C[1] = U[1]^((~S[3])&(~S[2])&S[1]&(~S[0]))

C[0] = U[0]^((~S[3])&(~S[2])&(~S[1])&S[0])

例如:

待编码数据:8'b0011_0101

编码后数据:CODE[11:4] = 0011_0101

CODE[3:0] = 0000

CODE[11:0] = 12'b0011_0101_0000

经过信道,假设接收到的数据:

U[11:0] = 12'b0011_0101_0001

校正子:

S[3] = 0

S[2] = 0

S[1] = 0

S[0] = 1

S[3:0] = 4'b0001

根据表3,可知是在接收数据的最低位发生错误

汉明码纠错java_汉明码(Hamming)编码与纠错原理相关推荐

  1. 汉明码纠错java_汉明码纠错的基本原理及优化解决方案

    引言 汉明码是在原编码的基础上附加一部分代码,使其满足纠错码的条件.它属于线性分组码,由于线性码的编码和译码容易实现,至今仍是应用最广泛的一类码.汉明码的抗干扰能力较强,但付出的代介也很大,比如8比特 ...

  2. 【通信系统仿真系列】基于Matlab的汉明码(Hamming Code)纠错传输以及交织编码(Interleaved coding)仿真

    基于Matlab的汉明码纠错传输以及交织编码仿真 前言 原理 汉明码 编码过程 冗余位数量计算 校验位位置计算 计算校验相关位 开始编码 解码过程 实验结果 仿真代码 可以修改的参数 下载链接 主函数 ...

  3. MATLAB实现(7,4)汉明码的编码解码纠错及BER的分析

    MATLAB实现7,4汉明码的编码解码纠错及BER的分析 背景 代码 计算BER 计算不使用汉明编码情况时的BER(模拟环境与理论情况) 总结 背景 本科时信息论与编码的作业 课程为 Informat ...

  4. 趣题:猜帽子游戏与Hamming编码

    三个人坐成一个圆圈,每个人头上戴着一顶黑色的或者白色的帽子.每个人都只能看到另外两个人头上的帽子颜色.现在,他们需要独立地猜测自己头上的帽子颜色.每个人都需要在自己的小纸条上写下"黑色&qu ...

  5. 音视频同步原理解析;音频编码和解码原理

    视频流中的DTS/PTS到底是什么? DTS(解码时间戳)和PTS(显示时间戳)分别是解码器进行解码和显示帧时相对于SCR(系统参考)的时间戳.SCR可以理解为解码器应该开始从磁盘读取数据时的时间. ...

  6. 彻底弄懂base64的编码与解码原理

    作者介绍 背景 base64的编码原理网上讲解较多,但解码原理讲解较少,并且没有对其中的内部实现原理进行剖析.想要彻底了解base64的编码与解码原理,请耐心看完此文,你一定会有所收获. 涉及算法与逻 ...

  7. php实现汉明码,实验四 汉明码系统

    <实验四 汉明码系统>由会员分享,可在线阅读,更多相关<实验四 汉明码系统(11页珍藏版)>请在人人文库网上搜索. 1.实验四 汉明码系统 一. 实验原理和电路说明这些多差错控 ...

  8. simulink 汉明码 用法_汉明码的性能分析

    武汉理工大学<MATLAB应用>课程设计报告 disp(['译码器输出信号误码率: ' num2str(symerr(msg,rcv)/length(msg))]) %计算误码率 3.2. ...

  9. 15 11 汉明码matlab,数字通信汉明码报告

    <数据通信原理>实验报告 实验题目: 汉明码的编译码 专业班级: 信息工程 2 班 姓名学号: 赵星敏 201342351 李明阳 201342300 指导教师: 刘钰 实验五 汉明码的编 ...

最新文章

  1. 栈与队列3——用递归和栈操作逆序一个栈
  2. 字符串作为freemarker模板的简单实现例子
  3. 基于java封装的语言_封装在java中的应用
  4. 类继承、组合和抽象类
  5. zone.js在bootstrap阶段对window对象里一些标准方法的注入逻辑
  6. 利用ABAP调试模式修改SE16里数据库表的内容
  7. PhpStorm之操作数据库
  8. 被中国人误传了数千年的七句话
  9. 删除U盘时提示无法停止‘通用卷’设备的解决方法
  10. Oracle11gR1中细粒度访问网络服务(转)
  11. centos 更新内核步骤
  12. Python基础 模块化编程(模块的导入)
  13. OIer__ZLY__OI计划
  14. 玛格丽特·米德2019下半年EI会议与人格理论初探
  15. 面向对象封装案例 --- 士兵突击
  16. 计算机笔记--【并发编程①】
  17. Redis单线程和多线程
  18. 蓝桥杯刷题冲刺 | 倒计时28天
  19. python员工管理系统课程设计报告_python--员工信息管理系统编译及思路
  20. 推荐--jQuery使用手册 1

热门文章

  1. 数据结构:通过hash表建立一个宝可梦图鉴管理系统
  2. 歌单助手:一键导出网易云音乐歌单列表,推荐你喜爱的专辑
  3. windows下sass开发环境的搭建
  4. 中国石油大学(北京)-《计算机网络应用基础》第三阶段在线作业
  5. ZN-M160G光猫 Telnet打不开
  6. GO语言开发高性能网络通信服务
  7. fiddler手机抓包配置代理后没有网络(手机不能上网)
  8. 一种鼠标手势识别的方案
  9. 2019 初入IT十年(下)---- 视线所及只剩生活
  10. 机器学习常用数据处理