首页 > 其他分享 >循环码的编码、译码与循环冗余校验

循环码的编码、译码与循环冗余校验

时间:2023-06-17 23:32:39浏览次数:47  
标签:码元 错误 循环码 多项式 校验 CRC 码字 冗余

本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:<https://github.com/timerring/information-theory> 】或者【AIShareLab】回复 信息论 获取。

循环码的编码

循环码编码用硬件实现时, 可用除法电路来实现。 除法电路主要是由移位寄存器和模 2 加法器组成。

循环码的编码、译码与循环冗余校验_码元

码多项式中 x 的幂次代表移位的次数。

例如图给出 (7,3) 循环码编码器的组成。循环码的编码、译码与循环冗余校验_码元_02。图中对应 g(x) 有4级移位寄存器, 分别用 循环码的编码、译码与循环冗余校验_多项式_03表示。

循环码的编码、译码与循环冗余校验_多项式_04

g(x) 多项式中系数是 1 或 0 表示该位上反馈线的有无, 信号 循环码的编码、译码与循环冗余校验_多项式_05, 循环码的编码、译码与循环冗余校验_码字_06 , 控制门电路1-3。当信息位输入时, 控制信号使门1, 门3打开, 门2关闭, 输入信息码元一方面送 除法器进行运算, 另一方面直接输出。

在信息位全部输入除法器之后, 控制信号使门1, 3关闭, 门2打开, 这 时寄存器通过门2直接输出, 将寄位寄存器中的除法余项依次取出, 即 将监督码元附加在信息码元之后。则编出的码组前面是原来 循环码的编码、译码与循环冗余校验_码字_07 个信息 码元,后面是(n-k)个监督码元,从而得到系统分组码。

为便于理解,下表给出这一编码器的工作过程。这里设信息码元为110,编出的监督码元为0101,循环码组为1100101。

循环码的编码、译码与循环冗余校验_码字_08

循环码的伴随多项式译码

循环码的译码电路如图所示。

无错: 循环码的编码、译码与循环冗余校验_码元_09 ;

有错: $y(x)_{\bmod g(x)} \neq 0 $ 。

收、发码字与错误图样多项式关系:

错误图样: 循环码的编码、译码与循环冗余校验_码元_10;

接收码字: 循环码的编码、译码与循环冗余校验_多项式_11

循环码的编码、译码与循环冗余校验_多项式_12

伴随式译码:

(1)对最可能出现的错误图样计算相应的伴随多项式: 循环码的编码、译码与循环冗余校验_多项式_13 , 并构造伴随式一错误图样表 循环码的编码、译码与循环冗余校验_码字_14 ;

(2)根据接收码式计算伴随多项式; 循环码的编码、译码与循环冗余校验_码元_15

(3)由伴随式 循环码的编码、译码与循环冗余校验_多项式_16 查错误图样 循环码的编码、译码与循环冗余校验_多项式_17 ;

(4)对接收码字进行纠错, 得到发送码字的估计值:

循环码的编码、译码与循环冗余校验_多项式_18

(5)循环码可以用移位寄存器实现伴随式译码

循环冗余校验 (Cyclic Redundancy Check, CRC)

适合于检测错误, 具有很强的检错能力, 且实现简单。

CRC检错性能如下:

  • 可以检测出突发长度 循环码的编码、译码与循环冗余校验_码元_19 的突发错误
  • 大部分突发长度 循环码的编码、译码与循环冗余校验_码元_20 的错误可以检测出, 其中不可检出的错误占 循环码的编码、译码与循环冗余校验_码字_21 ;
  • 大部分突发长度 循环码的编码、译码与循环冗余校验_码元_22 的错误可以检测出, 其中不可检出的错误占 循环码的编码、译码与循环冗余校验_码字_23 ;
  • 可以检测出所有与许用码字码距 循环码的编码、译码与循环冗余校验_码字_24 的错误;
  • 可以检测出所有奇数个错误。
  • CRC不一定是循环码。但是码多项式一定是生成多 项式的倍式。

常用的CRC冗余校验码生成方程

CRC-16 循环码的编码、译码与循环冗余校验_码元_25 (USB)

CRC-ITU 循环码的编码、译码与循环冗余校验_码字_26 (HDLC, PPP)

CRC-32 循环码的编码、译码与循环冗余校验_码元_27 (LANS, PPP)

注意:

  1. CRC不一定是循环码, 它是 (k+r, k) 线性分组码,其中 r 为 g(x) 的阶数;
  2. CRC码多项式一定是生成多项式的倍式;
  3. 生成多项式不一定是 循环码的编码、译码与循环冗余校验_码元_28 的因式;
  4. 编码过程和系统型循环码一样;
  5. 检错过程就是用接收码多项式除以生成多项式, 余式 循环码的编码、译码与循环冗余校验_码字_29 , 即为有错。

讨论:若已知CRC生成多项式 g(x) ,要信息位为 循环码的编码、译码与循环冗余校验_码元_30 ,需 加入r位校验位,如何编码?

例: 若 循环码的编码、译码与循环冗余校验_多项式_31 ,已知数据信息为 110010110,现要对其进行CRC编码,如何编? 若收到的码字为 1100101001010 ,请问是否出错?

r=4 ; 循环码的编码、译码与循环冗余校验_码元_30=9

码多项式的最高阶次为 12 .

循环码的编码、译码与循环冗余校验_多项式_33

故编码为 1100101101110,码字1100101001010,有错, 循环码的编码、译码与循环冗余校验_多项式_34

参考文献:

  1. Proakis, John G., et al. Communication systems engineering. Vol. 2. New Jersey: Prentice Hall, 1994.
  2. Proakis, John G., et al. SOLUTIONS MANUAL Communication Systems Engineering. Vol. 2. New Jersey: Prentice Hall, 1994.
  3. 周炯槃. 通信原理(第3版)\[M]. 北京:北京邮电大学出版社, 2008.
  4. 樊昌信, 曹丽娜. 通信原理(第7版) \[M]. 北京:国防工业出版社, 2012.

标签:码元,错误,循环码,多项式,校验,CRC,码字,冗余
From: https://blog.51cto.com/u_15736437/6506687

相关文章

  • 身份证校验码:计算方法
    来源: 身份证校验码:计算方法 ......
  • 实现一个权限校验注解
    什么是注解?Java注解是附加在代码中的一些元信息,用于编译和运行时进行解析和使用,起到说明、配置的功能。注解不会影响代码的实际逻辑,仅仅起到辅助性的作用。包含在java.lang.annotation包中。注解的定义类似于接口的定义,使用@interface来定义,定义一个方法即为注解类型定义了一个元......
  • 充电桩测试机TK4800充电机(桩)现场校验仪检定装置
    高准确度测量:装置静态电能计量准确度达到0.01级,动态电能计量准确度达到0.02级。宽量程:直流输出100V~1150V,0.1A~300A,交流输出220V±20%,10mA~80A。ms级电能刷新:直流电能累积寄存器更新速率达10ms/次,交流电能累积寄存器更新速率达20ms/次,提高动态波形下累积电能的测量精度。......
  • Vue自定义校验
    age:[{required:true,message:'请输入年龄',trigger:'blur'},{validator:(rule,value,callback)=>{if(value>=18){callback();}else{callback(newError("教练年龄必须大于18周岁"));}}......
  • element表单校验
    通过一个案例来示意:element的表单校验html部分: <template><divid="app"><el-form:model="ruleForm"status-icon:rules="rules"ref="ruleForm"label-width="100px"class="demo-ruleForm">......
  • m基于FPGA的CRC循环冗余校验系统verilog实现,包含testbench
    1.算法仿真效果本系统进行了两个平台的开发,分别是:Vivado2019.2Quartusii18.0+ModelSim-Altera6.6dStarterEdition其中Vivado2019.2仿真结果如下:Quartusii18.0+ModelSim-Altera6.6dStarterEdition的测试结果如下:对比matlab结果:2.算法涉及理论知识概要CRC(CyclicR......
  • m基于FPGA的CRC循环冗余校验系统verilog实现,包含testbench
    1.算法仿真效果本系统进行了两个平台的开发,分别是: Vivado2019.2 Quartusii18.0+ModelSim-Altera6.6d StarterEdition 其中Vivado2019.2仿真结果如下:   Quartusii18.0+ModelSim-Altera6.6d StarterEdition的测试结果如下:  对比matlab结果:  2......
  • AntDesign自定义校验表单
    <a-rowclass="row":gutter="32"><a-col:span="16"><a-form-itemlabel="场景模板标签"name="tags"><a-......
  • 1238.循环码排列
    问题描述1238.循环码排列(Medium)给你两个整数n和start。你的任务是返回任意(0,1,2,,...,2^n-1)的排列p,并且满足:p[0]=startp[i]和p[i+1]的二进制表示形式只有一位不同p[0]和p[2^n-1]的二进制表示形式也只有一位不同示例1:输入:n=2,start=3输出:[3,2......
  • 案例1:路由交换无冗余线路设计1
    JR-SW1:undoterminalmonitorsystem-viewsysnameJR-SW1 user-interfacecon0 idle-timeout00 quit undoinfo-centerenable vlanbatch11to12100200 interfaceEthernet0/0/1 portlink-typeaccess portdefaultvlan11 interfaceEt......