通信原理板块——线性分组码之循环码

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
在这里插入图片描述
1、循环码原理
循环码(cycle code),是一种线性分组码。具有线性码的一般性质外,还具有循环性。
循环性是指任一码组循环一位以后,仍然为该码中的一个码组。
即将最右端的一个码元移至左端,或者将最左端的一个码元移至右端,仍然为该码中的一个码组。
一个循环码的例子
在这里插入图片描述
长度n的循环码组的多项式
在这里插入图片描述
(2)循环码的运算
①码多项式的按模运算
模n(modulo-n)运算
若一个整数(integer)m,满足
在这里插入图片描述
Q为整数
在模n运算下,一个整数m等于它被n除得的余数(remainder)。
码多项式的按模运算,若任一多项式F(x)被一n次多项式N(x)除,得到商式(quotient)Q(x)和一个次数小于n的余式(residue)R(x)
注意:模2运算中,用加法代替了减法
在这里插入图片描述
一个重要结论:一个长为n的循环码必定为按模(x^n+1)运算的一个余式
②循环码的生成矩阵G
在循环码中,一个(n,k)码有2^k个不同码组。
g(x)必须是一个常数项不为“0”的(n-k)次多项式,而且这个g(x)还是(n,k)码中次数为(n-k)的唯一一个多项式。
以唯一的(n-k)次多项式g(x)为码生成多项式
可得到循环码的生成矩阵G
在这里插入图片描述
③任一(n,k)循环码的生成多项式
任一循环码多项式A(x)都是g(x)的倍式,即A(x)=h(x)×g(x)
生成多项式g(x)是一个(n-k)次多项式
x^k×g(x)是一个n次多项式
进行模(x^n+1)运算可得
(xk×g(x))/(xn+1) = Q(x)+A(x)/(x^n+1)
左端分子和分母都是n次多项式,故Q(x)=1
(xk×g(x))=(xn+1)+h(x)×g(x)
(xn+1)=g(x)×(xk+h(x))
生成多项式g(x)应该是(x^n+1)因子中的一个(n-k)次多项式
④循环码的编码方法
在编码时,根据给定的(n,k)值选定生成多项式g(x),即从(x^n+1)的因子中选一个(n-k)次多项式作为g(x)
具体编码规则:
设m(x)为信息码多项式,其次数小于k
x^(n-k)×m(x)的次数必定小于n,即在信息码后面附加上(n-k)个“0”
余式r(x)=g(x)/(x^(n-k)×m(x)),次数必定小于g(x)的次数(n-k)
余式r(x)与x^(n-k)×m(x)相加,得到码多项式
一个以(7,3)码为例分析:
第一步:
信息码为110,m(x)=x ^ 2+x
n=7,k=3,n-k=4
x ^ (n-k)×m(x)=x ^ 4×(x ^ 2+x)=x ^ 6+x ^ 5,即1100000
第二步:
x ^ n+1=x ^ 7+1=(x+1)×(x ^ 3+x ^ 2+1)×(x ^ 3+x+1)
循环码的生成多项式g(x)有两个:
(x+1)×(x ^ 3+x ^ 2+1)=x ^ 4+x ^ 2+x+1
(x+1)×(x ^ 3+x+1)=x ^ 4+x ^ 3+x ^ 2+1
用g(x)除x^(n-k)×m(x),得到商Q(x)和余式r(x)
(x ^ 6+x ^ 5)/(x ^ 4+x^ 2+x+1)=(x ^ 2+x+1)+(x ^ 2+1)/(x ^ 4+x ^ 2+x+1)
即Q(x)=(x2+x+1);r(x)=(x2+1)
第三步:
编码为:A(x)=x^(n-k)×m(x)+r(x)=1100000+101=1100101
⑤循环码的解码方法
接收端解码有两个要求:检错和纠错
通过余项是否为零来判断接收码组中有无错码
传输过程中为发送错误时,接收码组B(x)与发送码组A(x)相同,即B(x)必定能被g(x)整除;
传输过程中发生错误时,B(x)被g(x)除时,可能存在除不尽而有余项;
B(x)/g(x)=Q(x)+r(x)/g(x)
检错解码器的原理,一个除法电路和缓冲移位寄存器
除法电路与发送端编码器的除法电路相同,进行B(x)/g(x)的运算
余项为“0”,将暂存于缓冲器中的接收码组发送到解码器的输出端
余项不为“0”,将缓存器中的接收码组删除,并向发送端发出一个重发指令,要求重发一次该码组
在这里插入图片描述
捕错解码法,具体解码规则:
第一步:
用生成多项式g(x)除接收码组B(x),得出余式r(x)
第二步:
按余式r(x),用查表法或其他计算获得错误图样E(x),确定错码的位置
第三步:
从B(x)中减去E(x),得到已经纠正错码的原发送码组A(x)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux操作系统使用及C高级编程-D3Linux shell命令(权限、输入输出)

Shell 是一种应用程序,用以完成用户与内核之间的交互 一个功能强大的编程语言(C语言) 一个解释执行的脚本语言,不需要编译,写完直接执行 目前Linux 乌班图的Shell默认是bash 查看当前提供的Shell:cat /…

Milvus Cloud——LangChain 分块简介

LangChain 分块简介 LangChain 是一个 LLM 协调框架,内置了一些用于分块以及加载文档的工具。本次分块教程主要围绕设置分块参数,并最小限度地使用 LLM。简而言之,通过编写一个函数并设置其参数来加载文档并对文档进行分块,该函数打印结果为分块后的文本块。在下述实验中,…

Linux服务器从零开始训练 RT-DETR 改进项目 (Ultralytics) 教程,改进RTDETR算法(包括使用训练、验证、推理教程)

手把手从零开始训练 RT-DETR 改进项目 (Ultralytics版本) 教程,改进RTDETR算法 本文以Linux服务器为例:从零开始使用Linux训练 RT-DETR 算法项目 《芒果剑指 RT-DETR 目标检测算法 改进》 适用于芒果专栏改进RT-DETR算法 文章目录 百度 RT-DETR 算法介绍改进网络代码汇总第…

轻量封装WebGPU渲染系统示例<26>- PingpongBlur模糊效果(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/PingpongBlur.ts 当前示例运行效果: WGSL片段shader group(0) binding(0) var<uniform> param: vec4f; group(0) binding(1) var sampler0: sampler; group(…

(免费领源码)Springboot宠物医院管理系统的设计与实现84724-计算机毕业设计项目选题推荐

摘 要 现如今生活质量提高&#xff0c;人们追求精神健康&#xff0c;与家中宠物朝夕相处&#xff0c;感情深厚&#xff0c;宠物渐渐成了我们身边的朋友。因而宠物生病了&#xff0c;需要去看病&#xff0c;自古医院救死扶伤&#xff0c;生命无贵贱&#xff0c;无论人类还是动物…

C# Onnx LSTR 基于Transformer的端到端实时车道线检测

目录 效果 模型信息 项目 代码 下载 效果 模型信息 lstr_360x640.onnx Inputs ------------------------- name&#xff1a;input_rgb tensor&#xff1a;Float[1, 3, 360, 640] name&#xff1a;input_mask tensor&#xff1a;Float[1, 1, 360, 640] -----------------…

计算机毕业设计项目选题推荐(免费领源码)Springboot+MySQL智能购房推荐系统09040

摘 要 近年来随着我国经济的高速发展&#xff0c;房地产业也随之蓬勃发展&#xff0c;尤其是最近国家新出台的房改政策。鼓励居民购房&#xff0c;这对房产公司无疑是一个极好的发展势头。尤为重要的是&#xff0c;近几年随着信息技术和电子商务的快速发展&#xff0c;许多企业…

倾斜摄影三维模型的根节点合并的点云抽稀关键技术分析

倾斜摄影三维模型的根节点合并的点云抽稀关键技术分析 倾斜摄影三维模型的根节点合并是指将多个倾斜摄影拍摄得到的点云数据进行抽稀操作&#xff0c;以减少点云数据量和提高数据处理效率。在处理大规模的倾斜摄影点云数据时&#xff0c;点云抽稀是一个关键的技术&#xff0c;它…

Linux基础环境开发工具的使用(三):gdb调试器

Linux基础环境开发工具的使用[三]:gdb调试器 一.调试命令的应用场景1.为什么要介绍调试命令的应用场景呢?2.调试命令的应用场景1.找到问题1.不借助调试2.调试 2.解决问题1.不借助调试2.借助调试 二.调试命令1.gdb使用的前置说明2.基础指令3.断点相关指令4.范围查找相关操作5.局…

番外 1 : Java 环境下的 selenium 搭建

Java 环境下的 selenium 搭建 一 . 下载谷歌浏览器二 . 下载谷歌浏览器驱动2.1 查看谷歌浏览器版本2.2 下载对应版本的谷歌驱动2.3 解压下载好的驱动压缩包 , 将下载好的 chromedriver.exe 放到java 系统环境变量下 三 . 下载 Edge 浏览器的驱动3.1 查看 Edge 浏览器的版本3.2 …

【数据结构与算法】JavaScript实现单向链表

文章目录 一、单向链表简介二、封装单向链表类2.0.创建单向链表类2.1.append(element)2.2.toString()2.3.insert(position,element)2.4.get(position)2.5.indexOf(element)2.6.update(position,element)2.7.removeAt(position)2.8.其他方法2.9.完整实现 一、单向链表简介 链表…

Qt文档阅读笔记-Fetch More Example解析

Fetch More Example这个例子说明了如何在视图模型上添加记录。 这个例子由一个对话框组成&#xff0c;在Directory的输入框中&#xff0c;可输入路径信息。应用程序会载入路径信息的文件信息等。不需要按回车键就能搜索。 当有大量数据时&#xff0c;需要对视图模型进行批量增…

C语言精选练习题:(10)字幂数

每日一言 信心这个东西&#xff0c;什么时候都像个高楼大厦&#xff0c;但是里面会长白蚁。 --沉默的大多数 题目 打印1~100000之间的所有的字幂数&#xff0c;中间用空格分隔 (字幂数是指一个数的位数的n次方之和等于这个数本身) 如&#xff1a;370 3 ^ 3 7 ^ 3 0 ^ 3&…

我的一点记录 —— 256天

机缘 之所以开始坚持写博客&#xff0c;是希望可以借此对所学的知识进行一个巩固&#xff0c;并方便日后的复习。在CSDN这个平台&#xff0c;我也确实学到了很多有质量的内容&#xff0c;同时也希望自己可以向外输出高质量且有水平的相关知识。256天&#xff0c;蛮快的&#x…

(一)正点原子I.MX6ULL kernel6.1移植准备

一、概述 学完了正点原子的I.MX6ULL移植&#xff0c;正点原子的教程是基于Ubuntu18&#xff0c;使用的是4.1.15的内核&#xff0c;很多年前的了。NXP官方也发布了新的6.1的内核&#xff0c;以及2022.04的uboot。 本文分享一下基于Ubuntu22.04&#xff08;6.2.0-36-generic&…

云计算——ACA学习 云计算架构

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 公众号&#xff1a;网络豆云计算学堂 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a; 网络豆的主页​​​​​ 目录 写在前面 前期回顾 本期介绍 一.云计算架…

做一个springboot登陆注册功能

目录 一、环境搭建 1、数据库 2、引入依赖 3、配置信息 4、创建包结构和数据库实体类 二、接口开发-注册接口 前提准备 响应数据 需求分析 全局异常处理 代码编写 测试 三、接口开发-登录接口 前提准备 响应数据 需求分析 代码编写 测试 拦截器 测试 一、环…

超图Web许可无法访问

1. 报错 docker 容器(7f6f88XXXXX)找不到许可&#xff0c;查看日志&#xff0c;发现报错日志 2. 原因&#xff1a; 查看管理页面&#xff0c;发现许可被172.17.0.8占用 根据容器id寻找容器&#xff0c;找不到&#xff0c;猜测可能是以前删除过的容器&#xff0c;占用了名额 解决…

第十八章DOM操作控制

DOM操作分类&#xff1a; jQuery中的DOM操作 一。设置和获取样式值 1.追加样式 addClass&#xff1a;追加CSS效果 removeClass&#xff1a;去除CSS内容 2.切换样式 3.判断是否含有指定样式&#xff1a;判断的是布尔类型的值 二。内容操作&#xff1a; 1.HTML代码操作 2.TEXT代…

用示波器测量高压电

示波器本身是不可以测试几千v的高压电电路的&#xff0c;一般自带的探头衰减倍数不够&#xff0c;需要使用高压差分探头或者高压探棒&#xff0c;将测试信号衰减到合适的范围再接入示波器。 普通探头能测差分电压吗&#xff1f;差分探头和普通探头有什么区别&#xff1f;全网最…