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,一经查实,立即删除!

相关文章

javascript学习记录:location.hash的用法和说明

location.hash 是 JavaScript 中 Web API window.location 对象的一个属性,它返回 URL 的 hash 部分(从 ‘#’ 符号开始的部分)。这个属性常常用于单页面应用(SPA, Single Page Application)中,通过改变 UR…

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…

postman和express

Postman的使用和express搭建后台服务 今日目标: 1.使用postman调式接口 2.使用express书写get请求 3.使用express属性post请求 01-服务器概述 (url组成) 服务器: 一台性能强大的,用来存储数据的电脑# 注意:前端发送请求其实…

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. 析构函数可以设置默认参数 解析: 正确描述析构函数的…

2024年github开源top100中文

2024年github开源top100中文 动动美丽的小指头点个赞呗,感谢啦!💕💕💕😘😘😘 本文由Butterfly一键发布工具发布 语言star项目名称描述Python45670xai-org/grok-1Grok开源发布Ruby260…

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…

OD C卷 - 推荐多样性

推荐多样性(200) 第一行输入n,即窗口数;第二行输入k, 每个窗口的大小;后续输入不确定的行,每行为一个数字列表(各个列表长度相同);从第一个列表中选择4个连续的数值,分别放入n个窗口…

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;欢迎在评论区提…

【计算机网络】第 10 问:为什么要进行流量控制?

为什么要进行流量控制? 减少数据丢失和延迟 由于接收发双方各自的工作速率和缓存空间的差异&#xff0c;可能出现发送方的发送能力大于接收方的接收能力的现象&#xff0c;如若此时不适当限制发送方的发送速率&#xff08;即链路上的信息流量&#xff09;&#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;可以参考另一…

Vue.js - Vue 项目 dist 利用 Docker 一键部署方案

如果你想利用 Docker 和 Nginx 来部署你的 Vue.js 项目&#xff0c;但又不想通过创建 Docker 镜像的方式来做&#xff0c;你可以直接将你的 dist 目录挂载到 Nginx 容器中的相应目录&#xff0c;然后让 Nginx 服务这些静态文件。 具体步骤 1. 确保你的 Vue 项目已经构建完成 …