DVB-S系统发射端Matlab仿真及FPGA实现

DVB标准

Digital Video Broadcasting(数字视频广播)是一个完整的数字电视解决方案,其中包括DVB-C(数字电视有线传输标准),
DVB-T(数字电视地面传输标准),DVB-S(数字电视卫星传输标准),下面主要介绍DVB-S系统。

DVB-S为数字卫星广播标准,卫星传输具有覆盖面广、节目容量大等优点。信号采用RS(188,204)和卷积码的级联编码,调制方式为QPSK。

DVB-S信道编码及调制的基本原理

原理框图

根据ETSI的DVB-S标准,原理框图如下所示

1717241147381.png

由于卫星提供的DTH服务特别受功率限制的影响,因此主要的设计目的应该为抗噪声和干扰,而不是频谱效率。为了在不过度损害频谱效率的前提下实现很高的能量效率,系统应使用QPSK调制和卷积码和RS码的级联。

接口

2024after4202406012140085.png

信道编码

TS流适配单元(adaptation)

输入的TS流根据MPEG-2格式按照固定的长度打包,数据包的长度为188,帧头为同步字 4 7 h e x 47_{hex} 47hex。DVB-S标准中要求每8个TS数据包组成一个超帧,将超帧中的8个同步头进行反转,变为 b 8 h e x b8_{hex} b8hex,其余的同步头不变。同时还要自动插入空包,在数据包后插入16个0,将长度为188的数据包包补充成长度为204的数据包,与后续的信道编码模块建立时钟匹配和接口连接。

扰码单元(energy dispersal)

基带信号中含有很多连“1”或者连“0”的现象,会导致基带信号的频谱中含有较多的低频成分,既不利于信号在信道的传输,也不利于在接收端提取时钟信号。因此采用扰码,将TS流转化成伪随机序列。DVB-S标准中的随机化的原理图如下:

2024after4202406012158761.png

伪随机二进制序列的生成多项式如下:

1   +   x 14   +   x 15 1 + x^{14} + x^{15} 1 +x14+x15

扰码以8个数据包组成的超帧为单位进行处理,在每一个单元开始处理时,将序列”100101010000000“装入寄存器,对其进行扰码处理。数据包的同步字不进行扰码处理。

RS编码

外码采用RS编码,其具有同时纠正随机错误和突发错误的能力,并且纠正突发错误更有效。DVB-S采用的编码格式为RS(239,255)截断而得到的RS(188,204)编码,最大可纠错长度为8个字节,编码从同步字 4 7 h e x 47_{hex} 47hex b 8 h e x b8_{hex} b8hex开始。

2024after4202406021124574.png

编码原理简述

假设信息多项式为

m ( x ) = m 187 x 187 + m 186 x 186 + ⋯ + m 1 x 1 + m 0 m(x)=m_{187}x^{187}+m_{186}x^{186}+\cdots+m_1x^1+m_0 m(x)=m187x187+m186x186++m1x1+m0

码生成多项式为

g ( x ) = ( x + a 0 ) ( x + a 1 ) ( x + a 2 ) ⋯ ( x + a 14 ) ( x + a 15 ) g(x)=(x+a^0)(x+a^1)(x+a^2)\cdots(x+a^{14})(x+a^{15}) g(x)=(x+a0)(x+a1)(x+a2)(x+a14)(x+a15)

其中的_a_ = 02_hex_,则生成多项式的展开式为

g ( x ) = x 16 + 59 x 15 + 13 x 14 + 104 x 13 + 189 x 12 + 68 x 11 + 209 x 10 + 30 x 9 + 8 x 8 + 163 x 7 + 65 x 6 + 41 x 5 + 229 x 4 + 98 x 3 + 50 x 2 + 36 x + 59 g(x)=x^{16}+59x^{15}+13x^{14}+104x^{13}+189x^{12}+68x^{11}+209x^{10}\\\\+30x^{9}+8x^8+163x^7+65x^6+41x^5+229x^4+98x^3+50x^2+36x+59 g(x)=x16+59x15+13x14+104x13+189x12+68x11+209x10+30x9+8x8+163x7+65x6+41x5+229x4+98x3+50x2+36x+59

x 16 ⋅ m ( x ) x^{16}\cdot m(x) x16m(x)除以 g ( x ) g(x) g(x)后,余式为关于x的15次多项式,其16个系数即为生成的16个校验字节,将其添加到188长度的数据包后即可完成RS(188,204)的编码。

卷积交织

在数字信号传输过程中,由于一些突发性干扰,会导致一连串的数据错误,很有可能超出RS码的纠错范围。而卷积交织可以将错误的字符分散开,使得信道变成近似无记忆信道。DVB-S中采用的是交织深度为12的卷积交织。交织和解交织的框图如下:

2024after4202406021621696.png

卷积编码

内码采用的是(2,1,7)型的卷积码,编码效率为 k n = 1 2 \frac{k}{n}=\frac{1}{2} nk=21,由6个移位寄存器和2个模二加加法器构成,1个bit信号生成2个bit的编码信号,约束长度为7。

2024after4202406021629604.png

当信道质量较好时可以对编码信号进行删余,提高信道利用率。

Matlab仿真

TS流适配及扰码模块

2024after4202406052140904.png

CLKdivide

一路高清电视信号的码率为 8 M b p s 8Mbps 8Mbps,因此二进制信号的速率为 8 M b p s 8Mbps 8Mbps,输入的数据为 u i n t 8 uint8 uint8类型,所以输入的信号速率为 1 M 1M 1M。所以CLKdivide模块将 200 M H z 200MHz 200MHz的时钟分频到 1 M H z 和 8 M H z 1MHz和8MHz 1MHz8MHz

sigSource

此模块产生输入的TS流信号,并且生成RS编码的开始、结束和使能信号。由于每输出一个188字节长度的数据包后要暂停输出TS流插入空包,所以采用使能系统,每计数188次后拉低使能插入空包。

1717680505998.png

HeaderProcess

此模块对输入的TS流进行速率转换和组超帧,每八个数据包组合为一个超帧,并反转第一个同步字,由 0 x 47 0x47 0x47转为 0 x b 8 0xb8 0xb8,并生成使能sigSource的信号。同时生成扰码模块的控制信号。

1717595838765.png

第一个Multiport Switch用来进行插入空包,第二个Multiport Switch用来反转超帧的第一个同步字。

myScrambler

根据扰码的生成多项式进行设计。HeaderProcess生成的扰码使能信号正好在输入同步字时拉低,不进行扰码处理,扰码复位信号在输入了一个超帧后重新装入初始序列”100101010000000“。

1717596010781.png

仿真数据

1717596346825.png

RS编码模块

1717660503082.png

使用HDL Coder中的模块,由于时钟速率为200 M H z MHz MHz,因此需要加入一个触发模块,保证RS编码是按照码元速率 R B R_B RB进行编码

卷积交织

1717678715013.png

同样加入触发模块,保证交织的速度为码元速率 R B R_B RB

uint8转binary模块

1717679814804.png

首先对输入的数据按位相与,取出每一位的数据后使用Multiport Switch逐位输出,计数器的使能速率为码元速率 R B R_B RB的8倍。

卷积编码

1717680106902.png

不进行删余的话,编码效率为 1 2 \frac{1}{2} 21。也可以进行删余,可以得到 2 3 、 3 4 、 5 6 、 7 8 \frac{2}{3}、\frac{3}{4}、\frac{5}{6}、\frac{7}{8} 32436587的编码效率。在一定带宽内,编码效率越大传输效率越大,同时纠错能力越差。

Vivado实现

Vivado的代码大部分都由HDL Coder生成,或者由Matlab生成系数文件,再导入到Vivado的IP核中。

1717682059758.png

DataSource_Scrambler

直接生成hdl代码的话,DataSource_Scrambler模块中的sigSource模块在200 M H z MHz MHz的频率下建立时间的裕量不满足时序,因此在生成HDL之前进行如下配置:

2024after4202406062201977.png

在输出端加入一级流水线后,综合布线后时序即可通过。同时在这个模块的输出信号处全部加上一个delay模块组成流水线。

扰码模块

1717850077215.png

可以看到每输入8个数据包后,扰码内部的D触发器的初值得到重置,同时反转后的同步字 0 x b 8 0xb8 0xb8没有被扰码处理。

数据对齐

在仿真过程中,发现同步字 0 x b 8 0xb8 0xb8和RS编码的使能信号没有对齐,因此添加如下模块:

1717914876682.png

在将输出的使能信号延后一个数据周期,即可保证信号的同步。

RS编码

将modelsim的数据导入到matlab进行解码,可以看到将188个数据包完整的解了出来。

1717915096882.png

升余弦滚降滤波器

Matlab滤波器设计

根据DVB-S标准的要求,升余弦滚降系数为 0.35 0.35 0.35,使用Matlab的filterDesigner工具设计滤波器系数。

1717726664610.png

在FPGA中要对滤波器系数进行定点化处理。

对系数进行32位量化后幅值响应如下:

1717726986681.png

对系数进行16位量化后幅值响应如下:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可以看出16位量化的幅值响应和32位量化的响应几乎一样,为了节省空间,因此使用16位量化。

量化结束后点击目标→Xilinx系数文件 生成coe文件。

1717727667745.png

Vivado Fir滤波器设计

选择 Source为COE FIle

2024after4202406071040715.png

输入的采样频率要和时钟频率相等,不进行过采样。

2024after4202406071042659.png

在Implementation中将系数类型选择为有符号数,位宽设置为16。

2024after4202406071044904.png

输入的信号为正负1,所以输入的位宽为2,第一位为符号位。输出模式设置为全精度。

1717728524290.png

波形

1717728686099.png

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[CR]厚云填补_综述整理

SAR-to-Optical Image Translation and Cloud Removal Based on Conditional Generative Adversarial Networks: Literature Survey, Taxonomy, Evaluation Indicators, Limits and Future Directions Abstract 由于光学图像的局限性,其波段无法穿透云层&#xff0…

智能变电站网络报文记录及故障录波分析装置

是基于Intel X86、PowerPC、FPGA等技术的高度集成化的硬件平台,采用了高性能CPU无风扇散热、网络数据采集、高速数据压缩存储加密等多种技术,实现了高性能计算、多端口同步高速数据采集、数据实时分析、大容量数据存储等功能。 ● 在满足工业标准的同时&…

Dubbo 3.x源码(21)—Dubbo服务引用源码(4)

基于Dubbo 3.1,详细介绍了Dubbo服务的发布与引用的源码。 此前我们学习了createInvokerForRemote方法中的Wrapper有哪些以及作用,接下来我们将会的学习真正的本地、应用级别、接口级别的Protocol的引入逻辑,以及创建Proxy服务接口代理对象的逻…

整除及求余运算符、数字的提取、顺序结构程序

1.运算符 在有余数的除法运算中,如果要知道商和余数分别是多少,可以用/和%这两个运算符号来得到。 (1)/(整除),当被除数和除数均为整数时,结果也为整型,只取商的整数部分。 如:10/25 10/33 5/10 0 (2)%(求余)&…

Knife4j 生成 API 文档

文章目录 Knife4j 简介使用步骤Knife4j 常用注解的列表案例可能遇到报错 Knife4j 简介 Knife4j 是一个增强的 Swagger 文档生成工具,提供了更加友好的界面和更多功能,使得 API 文档更加美观且易于使用。它是基于 Spring Boot 和 Swagger 进行封装的&…

5分钟快速带了解fl studio21破解汉化版安装激活指南

随着数字音乐制作的快速发展,越来越多的音乐制作软件涌现出来,而FL Studio无疑是其中的佼佼者。作为一款功能强大、易于上手的音乐制作软件,FL Studio V21中文版在继承了前代版本优秀基因的基础上,进一步提升了用户体验&#xff0…

Databricks Data Warehouse

Warehouse features 原来的data warehouse痛点: 用例不兼容的支持模型的安全和管理不兼容不相交和重复的数据 ETL workloads Streaming Architecture Data Science and ML

《软件定义安全》之三:用软件定义的理念做安全

第3章 用软件定义的理念做安全 1.不进则退,传统安全回到“石器时代” 1.1 企业业务和IT基础设施的变化 随着企业办公环境变得便利,以及对降低成本的天然需求,企业始终追求IT集成设施的性价比、灵活性、稳定性和开放性。而云计算、移动办公…

06 Linux 设备驱动模型

1、Overview Linux-2.6 引入的新的设备管理机制 - kobject 降低设备多样性带来的 Linux 驱动开发的复杂度,以及设备热拔插处理、电源管理等将硬件设备归纳、分类,然后抽象出一套标准的数据结构和接口驱动的开发,就简化为对内核所规定的数据结构的填充和实现驱动模型是 Linu…

XUbuntu24.04之ch9344(usb转串口芯片)安装驱动(二百四十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

【C#】开发过程中记录问题

1.DateTimePicker控件获取时间 拖动控件,设置属性format为custom格式。例如我想获得20240101这种类型的string类型的数据: string DateTime = DateTimePicker.Value.ToString("yyyyMMdd");2.ComboBox下拉列表控件 默认为DropDown,下拉可修改。 DropDownList为下…

【计算机网络】P3 计算机网络协议、接口、服务的概念、区别以及计算机网络提供的三种服务方式

目录 协议什么是协议协议是水平存活的协议的组成 接口服务服务是什么服务原语 协议与服务的区别计算机网络提供的服务的三种方式面向连接服务与无连接服务可靠服务与不可靠服务有应答服务与无应答服务 协议 什么是协议 协议,就是规则的集合。 在计算机网络中&…

workerman error 2 send buffer full and drop package

来源 报错信息:workerman error 2 send buffer full and drop package 定时发送数据的时候,本地偶尔出现这种情况 线上第一条数据发出去就报错了,数据改小一点可以发,不过一会还是会出现这种情况。 解决 根据我的经验&#xf…

星舰四飞成功!SpaceX 今年还要飞 4 次?星舰未来 10 年规划展望

SpaceX 的星舰(Starship)项目一直备受瞩目,最近的第四次试飞再次引发了全球关注。本文将详细回顾星舰第四次发射的成功经验,并探讨其未来的十年规划。 一、引言 星舰是 SpaceX 研制的下一代重型运载火箭系统,旨在实现…

[经验] 场效应管是如何发挥作用的 #知识分享#学习方法#职场发展

场效应管是如何发挥作用的 在现代电子技术领域,场效应管(MOSFET)是一种重要的半导体元器件。它的作用非常广泛,例如在集成电路中扮演着关键的角色。在本文中,我们将详细探讨场效应管的作用及其在实际应用中的意义。 简…

关于烫烫烫和屯屯屯

微较的msvc编译器,调试模式下为了方便检测内存的非法访问,对于不同的内存做了初始化, 未初始化栈: 0xCCCCCCCC 未初始化堆: 0xCDCDCDCD 已释放的堆: 0xDDDDDDDD 0xCCCC解释为GB2312字符即是烫&#xff…

vue27:脚手架详细介绍main.js

在 Vue.js 中,render 函数是一个可选的选项,它允许你自定义组件的渲染逻辑。 如果你没有在 Vue 实例中提供 render 函数,Vue 将使用模板(template)来生成虚拟 DOM。 以下是render / template 两种方式的比较&#…

Recognize Anything: A Strong Image Tagging Model(RAM模型使用方法)

一、RAM模型介绍 这篇论文介绍了一个名为“Recognize Anything Model”(RAM)的新型基础模型,专用于图像标签识别(图像分类)。这一模型采用大规模图像-文本配对数据进行训练,无需手动注释,能够在…

OpenCV-绘制虚线

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 功能函数 // 绘制虚线 void DrawDottedLine(cv::Mat &input, cv::Point p1, cv::Point p2, cv::Scalar color, int thickne…

前端计网面试题(二)

一、在浏览器中输入url并且按下回车之后发生了什么? 首先解析url,判断url是否合法,如果合法再判断是否完整。如果不合法,则使用用户默认的搜索引擎进行搜索。DNS域名解析获取URL对应的ip地址。(首先看本地是否有缓存&…