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

news2025/1/7 6:11:25

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

文章目录

    • 循环码的编码
    • 循环码的伴随多项式译码
    • 循环冗余校验 (Cyclic Redundancy Check, CRC)

循环码的编码

循环码编码用硬件实现时, 可用除法电路来实现。 除法电路主要是由移位寄存器和模 2 加法器组成。
r ( x ) = x n − k u ( x )   m o d   g ( x ) c ( x ) = x n − k u ( x ) + r ( x ) \begin{array}{c} r(x)=x^{n-k} u(x) \bmod g(x) \\ c(x)=x^{n-k} u(x)+r(x) \end{array} r(x)=xnku(x)modg(x)c(x)=xnku(x)+r(x)
码多项式中 x 的幂次代表移位的次数。

例如图给出 (7,3) 循环码编码器的组成。 g ( x ) = 1 + x + x 2 + x 4 g(x)=1+x+x^{2}+x^{4} g(x)=1+x+x2+x4。图中对应 g(x) 有4级移位寄存器, 分别用 D 1 , D 2 , D 3 , D 4 D_{1}, D_{2}, D_{3} , D_{4} D1,D2,D3,D4表示。

g(x) 多项式中系数是 1 或 0 表示该位上反馈线的有无, 信号 Φ 1 \Phi_{1} Φ1, Φ 2 \quad \Phi_{2} Φ2 , 控制门电路1-3。当信息位输入时, 控制信号使门1, 门3打开, 门2关闭, 输入信息码元一方面送 除法器进行运算, 另一方面直接输出。

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

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

循环码的伴随多项式译码

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

无错: y ( x )   m o d   g ( x ) = 0 y(x)_{\bmod g(x)}=0 y(x)modg(x)=0 ;

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

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

错误图样: e → = [ e 0 e 1 ⋯ e n − 1 ] ⇒ e ( x ) \overrightarrow{\boldsymbol{e}}=\left[e_{0} e_{1} \cdots e_{n-1}\right] \Rightarrow e(x) e =[e0e1en1]e(x);

接收码字: y ( x ) = c ( x ) ⨁ e ( x ) \mathrm{y}(x)=c(x) \bigoplus e(x) y(x)=c(x)e(x)

伴随式译码:

(1)对最可能出现的错误图样计算相应的伴随多项式: S ( x ) = e ( x )   m o d   g ( x ) S(x)=e(x) \bmod g(x) S(x)=e(x)modg(x) , 并构造伴随式一错误图样表 [ ( S ⃗ , e ⃗ ) ] [(\vec{S}, \vec{e})] [(S ,e )] ;

(2)根据接收码式计算伴随多项式; S ( x ) = y ( x )   m o d   g ( x ) S(x)=y(x) \bmod g(x) S(x)=y(x)modg(x)

(3)由伴随式 S ⃗ \vec{S} S 查错误图样 e ⃗ \vec{e} e ;

(4)对接收码字进行纠错, 得到发送码字的估计值:
c ^ = y → − e → = y → ⊕ e → \hat{\mathbf{c}}=\overrightarrow{\mathbf{y}}-\overrightarrow{\mathbf{e}}=\overrightarrow{\mathbf{y}} \oplus \overrightarrow{\mathbf{e}} c^=y e =y e

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

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

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

CRC检错性能如下:

  • 可以检测出突发长度 < n − k + 1 <\boldsymbol{n}-\boldsymbol{k}+\boldsymbol{1} <nk+1 的突发错误
  • 大部分突发长度 = n − k + 1 =\boldsymbol{n}-\boldsymbol{k}+1 =nk+1 的错误可以检测出, 其中不可检出的错误占 2 − ( n − k − 1 ) 2^{-(n-k-1)} 2(nk1) ;
  • 大部分突发长度 > n − k + 1 >\boldsymbol{n}-\boldsymbol{k}+\mathbf{1} >nk+1 的错误可以检测出, 其中不可检出的错误占 2 − ( n − k ) 2^{-(n-k)} 2(nk) ;
  • 可以检测出所有与许用码字码距 ≤ d min ⁡ − 1 \leq d_{\min }-1 dmin1 的错误;
  • 可以检测出所有奇数个错误。
  • CRC不一定是循环码。但是码多项式一定是生成多 项式的倍式。

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

CRC-16 g ( x ) = X 16 + X 15 + X 2 + 1 g(x)=X^{16}+X^{15}+X^{2}+1 g(x)=X16+X15+X2+1 (USB)

CRC-ITU g ( x ) = X 16 + X 12 + X 5 + 1 g(x)=X^{16}+X^{12}+X^{5}+1 g(x)=X16+X12+X5+1 (HDLC, PPP)

CRC-32 g ( x ) = X 32 + X 26 + X 23 + X 22 + X 16 + X 12 + X 11 + X 10 + X 8 + X 7 + X 5 + X 4 + X 2 + X + 1 g(x)=X^{32}+X^{26}+X^{23}+X^{22}+X^{16}+X^{12}+ X^{11}+X^{10}+X^{8}+X^{7}+X^{5}+X^{4}+X^{2}+X+1 g(x)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1 (LANS,
PPP)

注意:

  1. CRC不一定是循环码, 它是 (k+r, k) 线性分组码,其中 r 为 g(x) 的阶数;
  2. CRC码多项式一定是生成多项式的倍式;
  3. 生成多项式不一定是 x n + 1 x^{n}+1 xn+1 的因式;
  4. 编码过程和系统型循环码一样;
  5. 检错过程就是用接收码多项式除以生成多项式, 余式 ≠ 0 \neq \mathbf{0} =0 , 即为有错。

讨论:若已知CRC生成多项式 g(x) ,要信息位为 k \mathrm{k} k ,需 加入r位校验位,如何编码?

例: 若 g ( x ) = x 4 + x + 1 g(x)=x^{4}+x+1 g(x)=x4+x+1 ,已知数据信息为 110010110,现要对其进行CRC编码,如何编? 若收到的码字为 1100101001010 ,请问是否出错?

r=4 ; k \mathrm{k} k=9

码多项式的最高阶次为 12 .
x 4 u ( x ) = x 12 + x 11 + x 8 + x 6 + x 5 r ( x ) = x 4 u ( x )   m o d   g ( x ) = x 3 + x 2 + x \begin{array}{c} x^{4} u(x)=x^{12}+x^{11}+x^{8}+x^{6}+x^{5} \\ r(x)=x^{4} u(x) \bmod g(x)=x^{3}+x^{2}+x \end{array} x4u(x)=x12+x11+x8+x6+x5r(x)=x4u(x)modg(x)=x3+x2+x
故编码为 1100101101110,码字1100101001010,有错, r ( x ) = x ≠ 0 r(x)=x \neq 0 r(x)=x=0

参考文献:

  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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/657653.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

实现 strStr

在一个串中查找是否出现过另一个串&#xff0c;这是KMP的看家本领。 28. 实现 strStr() 力扣题目链接 实现 strStr() 函数。 给定一个 haystack 字符串和一个 needle 字符串&#xff0c;在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在&…

七、docker-compose方式运行Jenkins,更新Jenkins版本,添加npm node环境

docker-compose方式运行Jenkins&#xff0c;更新Jenkins版本&#xff0c;添加npm node环境 一、docker-compose方式安装运行Jenkins 中发现Jenkins版本有点老&#xff0c;没有node环境&#xff0c;本节来说下更新jenkins 及添加构建前端的node环境。 1. 准备好docker-compose…

算法刷题-双指针-二分法

27. 移除元素 力扣题目链接 给你一个数组 nums 和一个值 val&#xff0c;你需要 原地 移除所有数值等于 val 的元素&#xff0c;并返回移除后数组的新长度。 不要使用额外的数组空间&#xff0c;你必须仅使用 O(1) 额外空间并原地修改输入数组。 元素的顺序可以改变。你不需…

XSS数据接收平台——蓝莲花(BlueLotus)

文章目录 一、前言二、安装三、使用1、我的JS创建一个模板2、使用创建的模板攻击3、打开攻击的目标&#xff08;这里选择pikachu靶场的存储型XSS模块测试&#xff09;4、查看返回的数据 一、前言 蓝莲花平台是清华大学曾经的蓝莲花战队搭建的平台&#xff0c;该平台用于接收xs…

【QQ界面展示-通知的发布和监听 Objective-C语言】

一、来,看看,我们先给大家介绍一下通知 1.那么,这个通知,我们就是要给大家介绍三个东西 1)一个是通知的发布:如何发布通知 2)一个是通知的监听:发布以后,如何监听通知 3)一个是通知的移除:注意,通知一定要怎么样,最后,移除, 2.当你监听了一个通知以后,当你…

【Proteus仿真】51单片机+8255A IO扩展例程

【Proteus仿真】51单片机+8255A IO扩展例程 📍相关参考:51单片机8255A扩展IO口🎬Proteus仿真演示: 📓8255A与51单片机连接 🌿51单片机的P0口作为数据总线使用,与8255A的D7~D0数据信号线进行连接,当P00 - P07不作为8255A 的A、B、C端口地址使用时,可以不接上拉电阻…

3.部署glance服务(镜像获取组件)

身份认证服务部署完毕之后&#xff0c;部署 glance 映像服务&#xff0c;映像服务可以帮助用户发现、注册、检索虚拟机镜像&#xff0c;就是说 启动实例的镜像是放在这里的 。 默认镜像存储目录为&#xff1a; /var/lib/glance/images/ controller节点 在安装和配置 glance …

lua的元表与元方法理解

元表 在 Lua 中&#xff0c;元表&#xff08;metatable&#xff09;是一种特殊的表&#xff0c;用于定义另一个表的行为。每个表都有一个关联的元表&#xff0c;通过元表可以重载表的各种操作&#xff0c;例如索引、新索引、相加等。在 Lua 中&#xff0c;元表的使用非常灵活&…

【Soft-prompt Tuning for Large Language Models to Evaluate Bias 论文略读】

Soft-prompt Tuning for Large Language Models to Evaluate Bias 论文略读 INFORMATIONAbstract1 Introduction2 Related work3 Methodology3.1 Experimental setup 4 Results5 Discussion & Conclusion总结A Fairness metricsB Hyperparmeter DetailsC DatasetsD Prompt …

Intellij IDEA设置“选中变量或方法”的背景颜色、字体颜色(Mark Occurrences)

背景 IDEA 中选中一个变量就会将所有的变量相关变量标出来&#xff0c;这样就很方便知道这个变量出现的地方。Eclipse里头把这个功能叫做 Mark Occurrences&#xff0c;IDEA 里不知道怎么称呼。 我们要解决的痛点就是提示不明显&#xff0c;如下图所示&#xff0c;Macbook这么…

RocketMQ一条消息从生产者到消费者的流程

目录 1. rocketmq 中的角色介绍 2. 一条消息从生产者到消费者的所有流程&#xff08;简版&#xff09; 3. 一条消息从生产者到消费者的所有流程 1. rocketmq 中的角色介绍 生产者 producer 生产、创造消息&#xff0c;会把消息发送到 broker 中消息代理服务 broker 负责消息…

小白怎么入门网络安全?看这篇就够啦!

由于我之前写了不少网络安全技术相关的故事文章&#xff0c;不少读者朋友知道我是从事网络安全相关的工作&#xff0c;于是经常有人在微信里问我&#xff1a; 我刚入门网络安全&#xff0c;该怎么学&#xff1f;要学哪些东西&#xff1f;有哪些方向&#xff1f;怎么选&#xff…

JVM参数配置位置+JVM参数详细配置+Visual GC 插件安装及使用,jvm分析

调优的目的是什么呢&#xff1f; 1.就是让系统更加的丝滑&#xff0c;让用户体验变得更好。 2.提升系统的性能&#xff0c;提高效率&#xff0c;充分利用jvm内存。 一.JVM参数配置位置 1.java.lang.OutOfMemoryError: Java heap space 解决方法&#xff0c;Java堆异常&#…

CSS基础学习--15 CSS布局 - Overflow

一、定义 CSS overflow 属性用于控制内容溢出元素框时显示的方式。 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>CSS基础学习-overflow</title> <style> #overflowTest {background: #4CAF50;color: w…

Spring基础知识(二)

目录 1.Spring Bean是什么 2.Spring提供的配置方式 3.Spring bean中的scope 4.Spring bean容器的生命周期 5.Spring的内部bean 6.Spring装配是什么 7.自动装配模式 8.自动装配的局限性 9.基于注解配置容器 10.如何启动注解装配 1.Spring Bean是什么 Spring官方文档对…

lua的用户数据的使用与c语言交互

什么是用户数据 在 Lua 中&#xff0c;用户数据&#xff08;userdata&#xff09;是一种特殊的数据类型&#xff0c;它可以用来表示外部的 C 或 C 对象&#xff0c;并将它们传递给 Lua 程序使用。用户数据是 Lua 与其他语言或系统进行交互的主要方式之一&#xff0c;它可以让 …

选择排序代码

时间复杂度O&#xff08;n&#xff09;

《离散数学》:特殊的图

〇、前言 这一节会重点讨论一下一些特殊的图&#xff0c;这些图会解决一些特殊的问题。 一、欧拉图 给定无向连通图 G&#xff0c;若存在一条路经过 G 中每边一次且仅一次&#xff0c;则该路为欧拉路。若存在一条回路经过 G 中每边一次且仅一次&#xff0c;则该回路称为欧拉…

LVM管理linux

1. lvm的应用场景及其弊端 应用场景&#xff1a; 随着公司的发展&#xff0c;数据增长较快&#xff0c;最初规划的磁盘容量不够用了 弊端&#xff1a; 数据不是直接存放在硬盘上&#xff0c;而是在硬盘的上面又虚拟出来一层逻辑卷存放数据&#xff0c;故而增加了磁盘数据恢复的…

Web3 将 MetaMask添加入谷歌浏览器 扩展程序中

Web3到现在理论这段是说的有点太多了 那么 我们先来看个东西 叫 MetaMask 这个在我们项目开发过程中需要使用 MetaMask是一个开源的以太坊的一个钱包 那么 钱包肯定就是用来管理数据资产的 MetaMask 是以一个浏览器插件形式存在的 它可以直接连接到以太坊的网络中来管理我们…