DVB-S系统仿真学习

news2024/11/15 14:21:41

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 133

trellis = 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.coloradmin.cn/o/1549160.html

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

相关文章

Python算法100例-4.6 歌星大奖赛

完整源代码项目地址,关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序6.问题拓展7.知识点补充 1.问题描述 在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最…

金融投贷通(金融投资+贷款通)项目准备

金融投贷通(金融投资贷款通)项目准备 专业术语投资专业术语本息专业术语还款专业术语项目介绍三个子系统技术架构核心流程发布借款标投资业务 项目实施测试流程测试步骤 专业术语 投资专业术语 案例:张三借给李四5W,约定期满1年后…

MySQL 高级语句(二)

一、子查询 1.1 相同表子查询 1.2 不同表/多表子查询 1.3 子查询的应用 1.3.1 语法 1.3.2 insert 子查询 1.3.3 update 子查询 1.3.4 delete 子查询 1.4 exists 关键字 1.4.1 true 1.4.2 false 1.5 as别名 二、视图 2.1 视图和表的区别和联系 2.1.1 区别 2.1.2 …

【面试必备】针对一个案例,怎么测试

思考角度 测试用例设计万能公式功能测试(最重要)界面测试易用性测试性能测试安全性测试兼容性测试容错性测试 常见案例物品类水杯笔 软件类微信发送朋友圈功能 测试用例设计万能公式 在面试中经常会遇到的一类题是,给你一个具体的产品&#…

《Attention Is All You Need》

参考: Attention Is All You Need 论文解读:Attention is All you need Transformer模型中的attention结构作用是什么? 如何最简单、通俗地理解Transformer? Transformer 新型神经网络,基于注意力机制 的 编码器-解码器 的序列处…

数据分析web可视化神器---streamlit框架,无需懂前端也能搭建出精美的web网站页面

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 所属的专栏:数据分析系统化教学,零基础到进阶实战 景天的主页:景天科技苑 文章目录 Streamlit什么是streamli…

国内ip地址推荐,畅享网络新体验!

在数字化时代,IP地址不仅是网络连接的基石,也是互联网产业发展的重要标志。国内作为全球互联网市场的重要参与者,拥有众多IP地址资源。虎观代理小二旨在探索并推荐一些国内IP地址,分析它们的价值所在,并探讨如何更好地…

抖音电商“达人客服”产品上线啦!超多作者邀你一起“321上客服”!

有问题别自己克服,来抖音电商找“达人客服” 当代年轻人购物,正在从机智省变成理智购。越来越多的人在达人直播间购物,看重的不止是优惠力度,还有服务保障。 为了帮助达人更好地服务用户,抖音电商上线了「达人客服」…

BERT模型中句子Tokenize和ID转换的过程

当我们使用BERT或其他类似的预训练语言模型时,将句子转换为token的过程通常涉及以下几个步骤: 初始化Tokenizer:首先,我们需要导入相应的Tokenizer类,并根据需求选择合适的预训练模型进行初始化。 分词(To…

IRIS / Chronicles 数据库结构

对于我们用得最多的关系型数据库来说,首先有的是数据库名字,然后是表名字,然后就是字段名,随后就是一条一条的数据。 对于 IRIS 来说,因为是使用的层级数据库,所以上面的定义就不能完全的照搬了&#xff0…

腾讯云4核8G12M带宽配置服务器能支撑多少人访问?并发数测试

腾讯云4核8G服务器价格:轻量4核8G12M优惠价格646元15个月、CVM S5服务器4核8G配置1437元买1年送3个月。腾讯云4核8G服务器支持多少人同时在线?支持30个并发数,可容纳日均1万IP人数访问。腾讯云百科txybk.com整理4核8G服务器支持多少人同时在线…

MySQL的安装(Linux版)

1.所需要的文件 MySQL.zip 2. 卸载自带的Mysql-libs # 查看是否存在 rpm -qa | grep mariadb# 如果存在则执行命令进行卸载 rpm -e --nodeps mariadb-libs3.在/opt目录下创建MySQL目录并上传所需要的安装包 cd /optmkdir MySQL4.按照编号顺序安装(压缩包在解压完…

【业界动态】数字孪生到底意味着什么

什么是数字孪生?它可以理解为一种技术,也可以理解为某种生态。数字孪生即指将物理实体映射至虚拟空间,进而协助完成预测、决策等动作。随着互联网的建设与发展,数字孪生在未来又会如何落地? 一、数字孪生到底是什么&am…

【Java程序设计】【C00389】基于(JavaWeb)Springboot的校园疫情防控系统(有论文)

基于(JavaWeb)Springboot的校园疫情防控系统(有论文) 项目简介项目获取开发环境项目技术运行截图 博主介绍:java高级开发,从事互联网行业六年,已经做了六年的毕业设计程序开发,开发过…

弹性伸缩 AS

🍁博主简介: 🏅云计算领域优质创作者 🏅2022年CSDN新星计划python赛道第一名 🏅2022年CSDN原力计划优质作者 🏅阿里云ACE认证高级工程师 🏅阿里云开发者社区专…

JAVA 使用POI实现单元格行合并

POI实现单元格行合并 实现效果引入jar代码实现controller层Service层ServiceImpl层实现类 实现效果 如果最后面的三行数据大于1时 那么前面十二行就需要行合并 引入jar <dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</arti…

java多线程基本操作方法

目录 一、isAlive&#xff08;&#xff09; 二、 join&#xff08;&#xff09; 三、start和run 四、 volatile() 五、synchronized 1、synchronized 引入 2、死锁 第一种情况&#xff1a;反复加锁 第二种情况 对不同对象嵌套加锁的死锁 3、形成死锁条件 六、wait…

【正点原子FreeRTOS学习笔记】————(10)FreeRTOS时间管理

这里写目录标题 一、延时函数介绍&#xff08;了解&#xff09;二、延时函数解析&#xff08;熟悉&#xff09;三、延时函数演示实验&#xff08;掌握&#xff09; 一、延时函数介绍&#xff08;了解&#xff09; 相对延时&#xff1a;指每次延时都是从执行函数vTaskDelay()开始…

前缀和算法(1)

一维前缀和[模板] 一、题目描述 OJ题目链接&#xff1a;【模板】前缀和_牛客题霸_牛客网 二、思路解析 三、代码 #include <iostream> using namespace std; const int N 100010; long long arr[N], dp[N]; int n, q; int main() {cin >> n >> q;// 读取…

冗余双写方案下数据一致性问题解决及延申问题处理方案

主要整理了采用冗余双写方案后的问题解决方案。 1、问题&#xff1a;冗余双写场景下&#xff0c;如何解决数据一致性问题&#xff1f; 方案一&#xff1a; 直接RPC调用Seata分布式事务框架&#xff0c;采用该方式实现了事务的强一致性&#xff0c;代码逻辑简单的同时业务侵入…