CCSDS CONVOLUTIONAL CODING 卷积码 规范

文章目录

  • 3 CONVOLUTIONAL CODING
    • 3.1 overview
    • 3.2 general
      • 3.2.1 ATTACHED SYNC MARKER
      • 3.2.2 DATA RANDOMIZATION
      • 3.2.3 FRAME VALIDATION
      • 3.2.4 QUANTIZATION
    • 3.3 BASIC CONVOLUTIONAL CODE SPECIFICATION
    • 3.4 PUNCTURED CONVOLUTIONAL CODES
  • matlab中的 comm.ConvolutionalEncoder 与CCSDS卷积码协议的对应
    • matlab中的poly2trellis

来源:官方文件 CCSDS 131x0b5.pdf

3 CONVOLUTIONAL CODING

3.1 overview

基本卷积码是速率 ® 1/2、约束长度 (K) 7 的透明码,非常适合以高斯噪声为主的信道。,该代码在 3.3 中定义。,当根据 3.4 对此代码进行穿孔(punctured)时,尽管纠错性能较低,但可以实现较高的码率。

穿孔(punctured)允许选择 2/3、3/4、5/6 或 7/8 的单一码率。,四种不同的穿孔方案允许为给定的服务或数据速率选择最合适的纠错级别和符号率。

3.2 general

3.2.1 ATTACHED SYNC MARKER

与卷积码一起使用的附加同步标记应为 9.2 中规定的 32 位模式,并且应始终在执行卷积编码之前插入。

3.2.2 DATA RANDOMIZATION

应使用第 10 节中定义的伪随机化器,除非系统设计者验证以下注释中确定的问题已通过其他方式解决。

当与二进制相移键控 (BPSK) 调制一起使用时,使用基本卷积码指定反相器,以确保足够的位转换以保持接收器符号同步器锁定。,如果使用一些复用方案,例如使用正交相移键控(QPSK)调制,或者如果使用穿孔卷积码,则单独的反相器不能保证足够的位转换。,还有一些数据模式无法确定卷积码同步。,伪随机化器还用于帮助信号采集并减轻传输信号中的谱线。

3.2.3 FRAME VALIDATION

当使用 TM、AOS 或 USLP 传输帧时,应使用参考文献 [1]、[2] 或 [6] 中指定的帧错误控制字段 (FECF) 来验证传输帧,除非卷积码被级联,带有外部 Reed-Solomon 代码(参见第 4 节)。

如果超出解码器的纠正能力,输出中可能会出现未检测到的错误突发。

3.2.4 QUANTIZATION

只要约束(例如解码器的复杂性)允许,就应该使用至少具有三位量化的软位决策。

3.3 BASIC CONVOLUTIONAL CODE SPECIFICATION

在这里插入图片描述
NOTES:
1 由于卷积码是透明的,因此可以在卷积编码器之前使用差分编码来帮助解决相位模糊度,相应地,接收端从NRZ-M到NRZ-L的转换应该在卷积解码器的输出处执行。,不建议在卷积编码器之后进行差分编码,因为它会带来相当大的性能损失。,它还需要差分检测,这对于软符号来说更加复杂。
2 当符号流中的固定模式(卷积编码的附加同步标记的固定部分)用于为卷积解码器提供节点同步时,需要考虑由调制波形转换产生的模式的任何修改。

在这里插入图片描述

3.4 PUNCTURED CONVOLUTIONAL CODES

在这里插入图片描述

matlab中的 comm.ConvolutionalEncoder 与CCSDS卷积码协议的对应

trellis=poly2trellis(7,[171,133]);function out = conv_encode(data,trellis)
code_conv_0 = convenc(data,trellis);
l=length(data);
code_conv=ones(l,1);
for i=1:2:2*l-1%这里对应c2的那个inverter。poly2trellis函数里似乎没有直接的表示取反的系数,用了一个亦或code_conv(i)=code_conv_0(i);code_conv(i+1)=xor(code_conv_0(i+1),1);
end
out = code_conv;function decode = conv_decode( code, trellis )% 解码
% 约束长度1+6=7
% 第一位输出生成序列为(1111001)2=(171)8
% 第二位输出生成序列为(1011011)2=(133)8
% trellis=poly2trellis([7],[171,133]);
% 上述含义为:2种输入状态,4种输出状态,64=2^6个寄存器
% 下一个状态可以组合出64*2种,输出64*2种
% 这东西本质上是个网格图,一堆点那个l=length(code);code_conv=ones(l,1);for i=1:2:l-1code_conv(i)=code(i);code_conv(i+1)=xor(code(i+1),1);end%解码tbdepth = 30; % 维特比解码器的回溯深度decode= vitdec(code_conv,trellis,tbdepth,'trunc','hard');

matlab中的poly2trellis

trellis = poly2trellis(ConstraintLength,CodeGenerator)
trellis = poly2trellis(ConstraintLength,CodeGenerator,FeedbackConnection)

trellis = poly2trellis(ConstraintLength,CodeGenerator) returns the trellis structure description corresponding to the conversion for a rate K / N feedforward encoder. K is the number of input bit streams to the encoder, and N is the number of output connections. ConstraintLength specifies the delay for the input bit streams to the encoder. CodeGenerator specifies the output connections for the input bit streams to the encoder.

trellis = poly 2 trellis(constraint length,CodeGenerator)返回与速率为K / N的前馈编码器的转换相对应的网格结构描述。k是编码器的输入比特流数,N是输出连接数。ConstraintLength指定编码器输入比特流的延迟。CodeGenerator指定输入比特流到编码器的输出连接。

The poly2trellis function accepts a polynomial description of a convolutional encoder and returns the corresponding trellis structure description. This output can be used as an input to the convenc and vitdec functions. It can also be used as a mask parameter value for the Convolutional Encoder, Viterbi Decoder, and APP Decoder blocks.

poly2trellis函数接受卷积编码器的多项式描述并返回相应的网格结构描述。此输出可用作convenc和vitdec函数的输入。它也可以用作卷积编码器、维特比解码器和APP解码器模块的掩码参数值。

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

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

相关文章

pip永久修改镜像地址

修改命令: pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple/ 效果: 会在C:\Users\PC(用户名)\AppData\Roaming\pip目录下新增或修改文件pip.ini 文件内容: [global] index-url https://pypi.tuna.tsinghua.e…

4.模板-数组类封装

文章目录 功能代码运行结果 功能 利用模板进行数组类封装,在代码实现过程中,使用了 1.operator重载,利用深拷贝防止浅拷贝问题; 2.operator[]重载,确保可以使用[]来仿真数组元素; 3.尾插法、尾删法、返回数…

PyTorch深度学习

一、深度学习的概念 如上所示,人工智能包含了机器学习和深度学习,其中深度学习是机器学习的一种特殊的学习方法,人工智能的核心是深度学习 1、深度学习 深度学习需要用到大量的神经网络构建和运算模块,故出现了很多的深度学习框…

Unity 窗口化设置

在Unity中要实现窗口化,具体设置如下: 在编辑器中,选择File -> Build Settings。在Player Settings中,找到Resolution and Presentation部分。取消勾选"Fullscreen Mode",并选择"Windowed"。设…

数据库的横表和竖表

先来看个图: 定义如下: 横表:在一行数据中包含了所有的属性,一行就代表了一个完整的实体 竖表:在一行中只存储一个实体的一个属性,多个行组合在一起才组成一个完整的属性适用场景: 横表:对查…

(C++笔试题)选择题+编程题

个人主页:Lei宝啊 愿所有美好如期而遇 选择题 第一道 下面对析构函数的正确描述是() A. 系统不能提供默认的析构函数B. 析构函数必须由用户定义C. 析构函数没有参数D. 析构函数可以设置默认参数 解析: 正确描述析构函数的…

WebPack的使用及属性配、打包资源

WebPack(静态模块打包工具)(webpack默认只识别js和json内容) WebPack的作用 把静态模块内容压缩、整合、转译等(前端工程化) 1️⃣把less/sass转成css代码 2️⃣把ES6降级成ES5 3️⃣支持多种模块文件类型,多种模块标准语法 export、export…

GESP Python编程二级认证真题 2024年3月

Python 二级 2024 年 03 月 1 单选题(每题 2 分,共 30 分) 第 1 题 小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?( ) A. 小程序 B. 计时器 C. 操作系统…

Stable Diffusion之核心基础知识和网络结构解析

Stable Diffusion核心基础知识和网络结构解析 一. Stable Diffusion核心基础知识1.1 Stable Diffusion模型工作流程1. 文生图(txt2img)2. 图生图3. 图像优化模块 1.2 Stable Diffusion模型核心基础原理1. 扩散模型的基本原理2. 前向扩散过程详解3. 反向扩散过程详解4. 引入Late…

Java_20 元素和最小的山形三元组

元素和最小的山形三元组 给你一个下标从 0 开始的整数数组 nums 。 如果下标三元组 (i, j, k) 满足下述全部条件&#xff0c;则认为它是一个 山形三元组 &#xff1a; i < j < knums[i] < nums[j] 且 nums[k] < nums[j] 请你找出 nums 中 元素和最小 的山形三元…

【如何解决一些常见的 Composer 错误的保姆级讲解】

&#x1f308;个人主页:程序员不想敲代码啊&#x1f308; &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家&#x1f3c6; &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提…

ABAP AMDP 示例

AMDP 是HANA开发中的一种优化模式 按SAP的官方建议&#xff0c;在可以使用Open SQL实现需要的功能或优化目标的时候&#xff0c;不建议使用AMDP。而在需要使用Open SQL不支持的特性&#xff0c;或者是大量处理流和分析导致了数据库和应用服务器之间有重复的大量数据传输的情况…

SiameseRPN原理详解(个人学习笔记)

参考资源&#xff1a; 视觉目标跟踪SiamRPNSiameseRPN详解CVPR2018视觉目标跟踪之 SiameseRPN 目录&#xff09; 1. 模型架构1.1 Siamese Network1.2 RPN 2. 模型训练2.1 损失函数2.2 端到端训练2.3 正负样本选择 3. 跟踪阶段总结 SiamRPN是在SiamFC的基础上进行改进而得到的一…

开源,微信小程序-超级计算器T3000 简介

笔者于四年前自学微信小程序开发&#xff0c;这个超级计算器T3000就是当时的练习作品。超级计算器T3000的功能有很多&#xff0c;其中的核心技术是矩阵计算&#xff0c;使用的工具库是math.js&#xff0c;其次是复杂运算和分式运算。关于math.js的使用&#xff0c;可以参考另一…

基于springboot的船舶维保管理系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

Kibana操作Elasticsearch教程

文章目录 简介ES文档操作创建索引查看索引创建映射字段查看映射关系字段属性详解typeindexstore 字段映射设置流程 新增数据新增会随机生成id新增自定义id智能判断 修改数据删除数据查询基本查询查询所有&#xff08;match_all&#xff09;匹配查询多字段查询词条匹配多词条精确…

可望而不可即的“人文关怀”

死亡既然是最后的归宿&#xff0c;生命的必然&#xff0c;自然也就没有必要过多地害怕了。一切顺其自然&#xff0c;交给“命运”就是了。 我参观过英国的临终关怀医院&#xff0c;这是世界上最早的一所临终关怀医院&#xff0c;已有100多年历史。 那里的大多数病人都只剩一个…

沃通国密SSL根证书入根赢达信国密浏览器

近日&#xff0c;沃通CA国密SSL根证书正式入根赢达信国密安全浏览器&#xff0c;携手推动国产密码技术应用、完善国密应用生态体系&#xff0c;也标志着沃通国密SSL证书兼容性再次得到提升&#xff0c;进一步夯实国密应用根基。 密码算法的安全性是信息安全保障的核心&#xff…

ethers.js:sign(签名)

Signers 在ethers中Signer是以太坊账户的抽象&#xff0c;可以用来签名消息和交易&#xff0c;如将签名的交易发送到以太坊网络以执行状态更改的操作。 npm install ethers5.4.0// 引入 import { ethers } from ethers签名 this.provider new ethers.providers.Web3Provider(…

数据库系统概论(超详解!!!) 第四节 关系数据库标准语言SQL(Ⅱ)

1.数据查询 SELECT [ ALL | DISTINCT] <目标列表达式>[&#xff0c;<目标列表达式>] … FROM <表名或视图名>[&#xff0c; <表名或视图名> ] … [ WHERE <条件表达式> ] [ GROUP BY <列名1> [ HAVING <条件表达式> ] ] [ ORDER BY…