通信原理板块——卷积码(原理、代数和几何表示、编码和解码)

2023-10-31 01:36

本文主要是介绍通信原理板块——卷积码(原理、代数和几何表示、编码和解码),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

微信公众号上线,搜索公众号小灰灰的FPGA,关注可获取相关源码,定期更新有关FPGA的项目以及开源项目源码,包括但不限于各类检测芯片驱动、低速接口驱动、高速接口驱动、数据信号处理、图像处理以及AXI总线等
在这里插入图片描述
1、卷积码定义
卷积码(convolutional code)是一种线性非分组码,适用于前向纠错。
卷积码在编码是,把k比特的信息段变成n个比特的码组,但是监督码元不仅仅和当前的k比特信息段有关系,而且还跟前面m=(N-1)个信息段有关。
一个码组中的监督码元监督着N个信息段,N称为编码约束度,nN称为编码约束长度。将卷积码记作(n,k,N)。码率为k/n。
2、卷积码的基本原理
卷积码编码器由三种主要元件构成,包括Nk级移存器、n个模2加法器和一个旋转开关。
模2加法器的输入端连接到一些移存器的输出端,数目可以不同。
模2加法器的输出端均接到旋转开关上。
将时间分成等间隔的时隙,在每个时隙中k比特从左端进入移存器,并且移存器各级暂存的信息向右移k位。
旋转开关每时隙旋转一周,输出n比特(n>k)。
在这里插入图片描述
常用的卷积码,k=1。移存器共有N级,每个时隙中,只有1b输入信息进入移存器,并且移存器各级暂存的内容向右移1位,开关旋转一周输出n比特。码率为1/n。
一个(n,k,N)=(3,1,3)的卷积码编译器
在这里插入图片描述
输入信息比特序列为…b(i-2) b(i-1) b(i) b(i+1)…
当输入b(i)时,编码器输出ci,di,ei与b(i-2) b(i-1) b(i)的关系
在这里插入图片描述
3、卷积码的代数表示
卷积码是一种线性码,故可以由一个监督矩阵H或生成矩阵G所确定。
①监督矩阵
在第一个信息位b1进入编码器之前,各级移存器均处于“0”状态,监督位di、ei和信息位bi之间的关系
注意:“+”表示的是异或“⊕”
在这里插入图片描述
在这里插入图片描述
用矩阵表示为
在这里插入图片描述
故监督矩阵为
在这里插入图片描述
监督矩阵是一种截短监督矩阵,矩阵的最左边n列、(n-k)N行的一个子矩阵,且向右的每n行均相对于前n列降低(n-k)行。
在这里插入图片描述
卷积码的截短监督矩阵的一般形式:
在这里插入图片描述
②生成矩阵G
在这里插入图片描述
截短生成矩阵
在这里插入图片描述
一般截短生成矩阵
在这里插入图片描述
4、卷积码的几何表述
①码树图
一个(3,1,3)卷积码的码树图
移存器M1,M2,M3的初始状态000作为码树的起点。
输入信息位为“0”,状态支路向上移动;
输入信息位为“1”,状态支路向下移动。
在这里插入图片描述
②状态图
将码树改进为状态机,M2和M3的四种状态表示符号a,b,c,d
当前输入信息位、移存器前一状态、移存器下一状态和输出码元之间关系
在这里插入图片描述
卷积码状态图
在这里插入图片描述
③网格图
将状态图在时间上展开,即可得到网格图
在这里插入图片描述
5、卷积码的解码
卷积码的解码方法有两种:代数解码和概率解码。
代数解码是利用编码本身的代数结构进行解码,不考虑信道的统计特性。
大数逻辑解码,或门限解码,是卷积码代数解码的最主要一种方法,也应用于循环码的解码。适应于约束长度较短的卷积码。
概率解码,或最大似然解码,基于信道的统计特性和卷积码的特点进行计算。一是序贯解码,二是维特比(Viterbi)算法。
①大数逻辑解码
卷积码的大数逻辑解码是基于卷积码的代数表述运算的。
在这里插入图片描述
具体的操作步骤:
将接收信息位暂存于移存器,并从接收码元的信息位和监督位计算校正子。
将计算得出的校正子暂存,用来检测错码的位置。
在信息位移存器输出端,接一个模2加电路,当检测输出的信息位有错时,在输出的信息位上加“1”,从而纠正。
②维特比解码算法
维特比解码算法原理是将接收到的信号序列和所有可能的发送信号序列比较,选择其中汉明码距最小的序列认为是当前发送信号序列。
维特比解码算法,常用于卫星通信和蜂窝网通信系统中。

这篇关于通信原理板块——卷积码(原理、代数和几何表示、编码和解码)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/311916

相关文章

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

VSCode中C/C++编码乱码问题的两种解决方法

《VSCode中C/C++编码乱码问题的两种解决方法》在中国地区,Windows系统中的cmd和PowerShell默认编码是GBK,但VSCode默认使用UTF-8编码,这种编码不一致会导致在VSC... 目录问题方法一:通过 Code Runner 插件调整编码配置步骤方法二:在 PowerShell

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操