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

作者 : admin 本文共3688个字,预计阅读时间需要10分钟 发布时间: 2024-06-9 共1人阅读

DVB标准

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

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

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

原理框图

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

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

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

接口

DVB-S系统发射端Matlab仿真及FPGA实现插图(1)

信道编码

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标准中的随机化的原理图如下:

DVB-S系统发射端Matlab仿真及FPGA实现插图(2)

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

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开始。

DVB-S系统发射端Matlab仿真及FPGA实现插图(3)

编码原理简述

假设信息多项式为

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的卷积交织。交织和解交织的框图如下:

DVB-S系统发射端Matlab仿真及FPGA实现插图(4)

卷积编码

内码采用的是(2,1,7)型的卷积码,编码效率为

k

n

=

1

2

\frac{k}{n}=\frac{1}{2}

nk=21,由6个移位寄存器和2个模二加加法器构成,1个bit信号生成2个bit的编码信号,约束长度为7。

DVB-S系统发射端Matlab仿真及FPGA实现插图(5)

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

Matlab仿真

TS流适配及扰码模块

DVB-S系统发射端Matlab仿真及FPGA实现插图(6)

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次后拉低使能插入空包。

DVB-S系统发射端Matlab仿真及FPGA实现插图(7)

HeaderProcess

此模块对输入的TS流进行速率转换和组超帧,每八个数据包组合为一个超帧,并反转第一个同步字,由

0

x

47

0x47

0x47转为

0

x

b

8

0xb8

0xb8,并生成使能sigSource的信号。同时生成扰码模块的控制信号。

DVB-S系统发射端Matlab仿真及FPGA实现插图(8)

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

myScrambler

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

DVB-S系统发射端Matlab仿真及FPGA实现插图(9)

仿真数据

DVB-S系统发射端Matlab仿真及FPGA实现插图(10)

RS编码模块

DVB-S系统发射端Matlab仿真及FPGA实现插图(11)

使用HDL Coder中的模块,由于时钟速率为200

M

H

z

MHz

MHz,因此需要加入一个触发模块,保证RS编码是按照码元速率

R

B

R_B

RB进行编码

卷积交织

DVB-S系统发射端Matlab仿真及FPGA实现插图(12)

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

R

B

R_B

RB

uint8转binary模块

DVB-S系统发射端Matlab仿真及FPGA实现插图(13)

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

R

B

R_B

RB的8倍。

卷积编码

DVB-S系统发射端Matlab仿真及FPGA实现插图(14)

不进行删余的话,编码效率为

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核中。

DVB-S系统发射端Matlab仿真及FPGA实现插图(15)

DataSource_Scrambler

直接生成hdl代码的话,DataSource_Scrambler模块中的sigSource模块在200

M

H

z

MHz

MHz的频率下建立时间的裕量不满足时序,因此在生成HDL之前进行如下配置:

DVB-S系统发射端Matlab仿真及FPGA实现插图(16)

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

扰码模块

DVB-S系统发射端Matlab仿真及FPGA实现插图(17)

可以看到每输入8个数据包后,扰码内部的D触发器的初值得到重置,同时反转后的同步字

0

x

b

8

0xb8

0xb8没有被扰码处理。

数据对齐

在仿真过程中,发现同步字

0

x

b

8

0xb8

0xb8和RS编码的使能信号没有对齐,因此添加如下模块:

DVB-S系统发射端Matlab仿真及FPGA实现插图(18)

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

RS编码

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

DVB-S系统发射端Matlab仿真及FPGA实现插图(19)

升余弦滚降滤波器

Matlab滤波器设计

根据DVB-S标准的要求,升余弦滚降系数为

0.35

0.35

0.35,使用Matlab的filterDesigner工具设计滤波器系数。

DVB-S系统发射端Matlab仿真及FPGA实现插图(20)

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

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

DVB-S系统发射端Matlab仿真及FPGA实现插图(21)

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

DVB-S系统发射端Matlab仿真及FPGA实现插图(22)

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

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

DVB-S系统发射端Matlab仿真及FPGA实现插图(23)

Vivado Fir滤波器设计

选择 Source为COE FIle

DVB-S系统发射端Matlab仿真及FPGA实现插图(24)

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

DVB-S系统发射端Matlab仿真及FPGA实现插图(25)

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

DVB-S系统发射端Matlab仿真及FPGA实现插图(26)

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

DVB-S系统发射端Matlab仿真及FPGA实现插图(27)

波形

DVB-S系统发射端Matlab仿真及FPGA实现插图(28)

本站无任何商业行为
个人在线分享 » DVB-S系统发射端Matlab仿真及FPGA实现
E-->