DVB-S系统仿真学习

DVB-S系统用于卫星电视信号传输,发送端框图如下所示

1711536126647.png

扰码

实际数字通信中,载荷数据的码元会出现长连0或长连1的情况,不利于接收端提取时钟信号,同时会使得数据流中含有大量的低频分量,使得QPSK调制器的相位长时间不变,使得信号易受干扰。因此要对载荷数据进行随机化扰码处理

DVB-S标准中规定扰码的生成多项式为

p ( x ) = x 15 + x 14 + 1 p(x)=x^{15}+x^{14}+1 p(x)=x15+x14+1

同时移位寄存器的初始状态为"1001_0101_0000_000”

1711536797434.png

Matlab代码仿真

n=500;
% origin_data=randi([0 1],n,1);
origin_cnt_1=nnz(origin_data==1)scrambling = comm.Scrambler("CalculationBase",2,"InitialConditions",[1 0 0 1 0 1 0 1 0 0 0 0 0 0 0], ..."Polynomial",[1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1]);
scrambling_data=step(scrambling,origin_data);
scrambling_data_cnt_1=nnz(scrambling_data==1)

运行结果如下图所示

1711536855542.png

可以看出初始的500点长度的数据包中有403个“1”,经过扰码处理后“1”的个数接近数据总量的一半

外码纠错编码(RS编码)

RS码定义:

G F ( q ) 上( q ≠ 2 , 通常 q = 2 m ),码长 n = q − 1 的本原 B C H 码 GF(q)上(q \neq 2, 通常q=2^m),码长n=q-1的本原BCH码 GF(q)上(q=2,通常q=2m),码长n=q1的本原BCH

能纠正 t 个错误的RS码的参数为

- 分组长度n=q-1
- 校验符号数n-k=2t
- 码的最小距离dmin=2t+1

DVB-S系统中使用的RS(188,204)是由RS(239,255)截断而来的,可以纠正8个字节的错误

Matlab仿真

m=8; %bit per symbol
n=204;
k=188;data_test=randi([0,n],1,k);
data_gf=gf(data_test,m);data_rs_enc=rsenc(data_gf,n,k);
data_enc=data_rs_enc.x;data_rs_dec=rsdec(data_rs_enc,n,k);
data_dec=data_rs_dec.x;subplot(3,1,1);
stem(data_test);
subplot(3,1,2);
stem(data_enc);
subplot(3,1,3);
stem(data_dec);

首先生成一个长度为188的序列,将其转换到伽罗华域后,使用rsenc函数进行RS编码,再进行译码,根据对比可以看出译码后的比特和译码前的完全一样

1711538853533.png

卷积交织

在实际的传输过程中,由于脉冲干扰、多径效应等因素会带来持续一定时间的突发错误,虽然RS码对突发错误有较好的纠错能力,但是当其持续时间较长时,就会超出RS码的纠错能力,因此在编码过程中引入了卷积交织,将数据的传输顺序按照一定的规律分散开,就可以使得错误的码元也被分散开

DVB-S中交织深度为12,总共17个FIFO,数据按行写入寄存器,按列读出

交织后最大可纠错长度为12*8=96

1711539867512.png

可以看出前一段时间读取到了很多0,说明下面的移位寄存器中的数据还没有移动到末端

卷积编码

卷积码是一种有效的前向纠错码记作 ( n , k , m ) (n,k,m) (n,k,m),将k个信息比特编为n个比特,m为编码存储长度,N=m+1为约束长度,即卷积码的当前码元不仅与当前输入的k的信息码元有关,还与前面m个时刻输入的信息码元有关

clc;
close all;
n=500;
tre1=[1 1 1 1 0 0 1]; %oct 171
tre2=[1 0 1 1 0 1 1]; %oct 133trellis = poly2trellis(7,[171 133]);convData=convenc(scrambling_data,trellis);decData=vitdec(convData,trellis,499,"trunc","hard");subplot(3,1,1);
stem(scrambling_data);
subplot(3,1,2);
stem(convData);
subplot(3,1,3);
stem(decData);
biterr(scrambling_data,decData)

使用poly2trellis将卷积编码多项式转换为网格描述

1711541868504.png

比对后可以看到解码出的数据和原数据完全相同

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

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

相关文章

【Frida】【Android】05_Objection实战

🛫 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

线程创建方式、构造方法和线程属性

欢迎各位!!!推荐PC端观看 文章重点:学会五种线程的创造方式 目录 1.开启线程的五种方式 2.线程的构造方法 3.线程的属性及获取方法 1.开启线程的五种方式 创造线程的基本两步:(1)使用run方法…

app审核攻与防 解决Guideline 2.3.1 - Performance The app contains hidden features.

app审核会碰到各种问题,其中The app contains hidden features. 是最麻烦的之一,如果处理不好,会延迟审核,甚至下架、封号。有时app实际上并没有隐藏功能,还是会中招,通过我多年经验,尝试多种方…

2024最新华为OD机试试题库全 -【二叉树计算】- C卷

1. 🌈题目详情 1.1 ⚠️题目 给出一个二叉树如下图所示: 请由该二叉树生成一个新的二叉树,它满足其树中的每个节点将包含原始树中的左子树和右子树的和。 左子树表示该节点左侧叶子节点为根节点的一颗新树;右子树表示该节点右侧叶子节点为根节点的一颗新树。 1.2 �…

智能车主控板原理图原理讲解

智能车主控板原理图原理讲解 综述:本篇文章对智能车主控板的一部分电路进行原理分析,文末附加整体原理图。 1. 电源电路 (1)通过外接电池供电并通过电源模块电路,运用稳压芯片lm2940,将电源电压转化为5V…

分布式处理

前言 大家好,我是jiantaoyab,这是我作为学习笔记原理篇的最后一章,一台计算机在数据中心里是不够的。因为如果只有一台计算机,我们会遇到三个核心问题。第一个核心问题,叫作垂直扩展和水平扩展的选择问题,…

【leetcode】双“指针”

标题:【leetcode】双指针 水墨不写bug 我认为 讲清楚为什么要用双指针 比讲怎么用双指针更重要! (一)快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数…

排序C++

题目 法1 sort升序排序&#xff0c;再逆序输出 #include<iostream> #include<algorithm> using namespace std;const int N 5e53;//注意const&#xff0c;全局 int a[N]; int main() {//错误int N5e53;//错误const int a[N];int n;cin >> n;for (int i 1;…

HBase Shell基本操作

一、进入Hbase Shell客户端 先在Linux Shell命令行终端执行start-dfs.sh脚本启动HDFS&#xff0c;再执行start-hbase.sh脚本启动HBase。如果Linux系统已配置HBase环境变量&#xff0c;可直接在任意目录下执行hbase shell脚本命令&#xff0c;就可进入HBase Shell的命令行终端环…

【容器源码篇】Set容器(HashSet,LinkedHashSet,TreeSet的特点)

文章目录 ⭐容器继承关系&#x1f339;Set容器&#x1f5d2;️HashSet源码解析构造方法public HashSet()public HashSet(Collection<? extends E> c)public HashSet(int initialCapacity, float loadFactor)HashSet(int initialCapacity, float loadFactor, boolean dum…

2024蓝桥杯每日一题(背包)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一&#xff1a;货币系统 试题二&#xff1a;01背包问题 试题三&#xff1a;完全背包问题 试题一&#xff1a;货币系统 【题目描述】 给定 V 种货币&#xff08;单位&#xff1a;元&#xff09;&#xff0c;每…

JAVA 100道题(21)

21.编写一个Java程序&#xff0c;使用多线程实现两个数的同时累加。 在Java中&#xff0c;我们可以使用多线程来实现两个数的同时累加。下面是一个简单的示例&#xff0c;其中创建了两个线程&#xff0c;每个线程负责累加不同的数字。 请注意&#xff0c;此示例假设我们要同时…

【ZZULIOJ】1008: 美元和人民币(Java)

目录 题目描述 输入 输出 样例输入 Copy 样例输出 Copy code 题目描述 美元越来越贬值了&#xff0c;手上留有太多的美元似乎不是件好事。赶紧算算你的那些美元还值多少人民币吧。假设美元与人民币的汇率是1美元兑换6.5573元人民币&#xff0c;编写程序输入美元的金额&a…

【实体字段校验:@NotNull、@NotEmpty、@NotBlank详解】

文章目录 前言1. NotNull1.1 什么是NotNull&#xff1f;1.2 使用步骤1.2.1 引入依赖1.2.2 在字段上添加注解 1.3 示例代码1.4 应用场景 2. NotEmpty2.1 什么是NotEmpty&#xff1f;2.2 使用步骤2.2.1 引入依赖2.2.2 在字段上添加注解 2.3 示例代码2.4 应用场景 3. NotBlank3.1 …

VLAN实验记录---对抗遗忘

sw1的接口6应该调成混杂模式&#xff0c;因为pc2,4,5,6的pvid各不相同而网段相同&#xff0c;所以往上去路由时应该剥离标记&#xff08;VLAN里面是标记而不是标签&#xff09;出去&#xff0c;这样 路由器上的物理接口用来管理不带标记的流量&#xff0c;而vlan2流量的往上打上…

记录 AI绘图 Stable Diffusion的本地安装使用,可搭建画图服务端

开头 最近刷短视频看到了很多关于AI绘图&#xff0c;Midjourney&#xff0c;gittimg.ai&#xff0c;Stable Diffusion等一些绘图AI工具&#xff0c;感受到了AI绘画的魅力。通过chatGPT生成关键词再加上绘图工具&#xff0c;真是完美&#xff0c;文末教大家如何用gpt提词 Midj…

解决Windows Edge兼容性问题:一站式修复指南

解决Windows Edge兼容性问题&#xff1a;一站式修复指南 1. 引言1.1. Windows Edge的重要性1.2. 面对兼容性挑战 2. Windows Edge简介2.1. Windows Edge的特点2.2. 兼容性挑战 3. Windows Edge兼容性问题诊断3.1. 识别问题3.2. 检查系统更新 4. Windows Edge兼容性问题修复4.1.…

每日算法之接雨水

题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2,1,2,1] 输出&#xff1a;6 解释&#xff1a;上面是由数组 [0,1,0,2,1,0,1…

打造核心竞争力:高效Web系统数据中台的设计与实践_光点科技

在数字化的浪潮中&#xff0c;数据已经成为企业赖以生存和发展的核心资源。一个高效的Web系统数据中台&#xff0c;能够赋予企业在激烈的市场竞争中立于不败之地的能力。本文将深入探讨如何设计和实施一个能够提升企业数据管理水平和支持业务决策的高效数据中台架构。 数据中台…

【YOLOv8训练结果评估】YOLOv8如何使用训练好的模型对验证集进行评估及评估参数详解

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…