DVB-S系统用于卫星电视信号传输,发送端框图如下所示
扰码
实际数字通信中,载荷数据的码元会出现长连0或长连1的情况,不利于接收端提取时钟信号,同时会使得数据流中含有大量的低频分量,使得QPSK调制器的相位长时间不变,使得信号易受干扰。因此要对载荷数据进行随机化扰码处理
DVB-S标准中规定扰码的生成多项式为
同时移位寄存器的初始状态为”1001_0101_0000_000”
Matlab代码仿真
1 | n=500; |
运行结果如下图所示
可以看出初始的500点长度的数据包中有403个“1”,经过扰码处理后“1”的个数接近数据总量的一半
外码纠错编码(RS编码)
RS码定义:
$GF(q)上(q \neq 2, 通常q=2^m),码长n=q-1的本原BCH码$
能纠正 t 个错误的RS码的参数为
- 分组长度n=q-1
- 校验符号数n-k=2t
- 码的最小距离dmin=2t+1
DVB-S系统中使用的RS(188,204)是由RS(239,255)截断而来的,可以纠正8个字节的错误
Matlab仿真
1 | m=8; %bit per symbol |
首先生成一个长度为188的序列,将其转换到伽罗华域后,使用rsenc函数进行RS编码,再进行译码,根据对比可以看出译码后的比特和译码前的完全一样
卷积交织
在实际的传输过程中,由于脉冲干扰、多径效应等因素会带来持续一定时间的突发错误,虽然RS码对突发错误有较好的纠错能力,但是当其持续时间较长时,就会超出RS码的纠错能力,因此在编码过程中引入了卷积交织,将数据的传输顺序按照一定的规律分散开,就可以使得错误的码元也被分散开
DVB-S中交织深度为12,总共17个FIFO,数据按行写入寄存器,按列读出
交织后最大可纠错长度为12*8=96
可以看出前一段时间读取到了很多0,说明下面的移位寄存器中的数据还没有移动到末端
卷积编码
卷积码是一种有效的前向纠错码记作$(n,k,m)$,将k个信息比特编为n个比特,m为编码存储长度,N=m+1为约束长度,即卷积码的当前码元不仅与当前输入的k的信息码元有关,还与前面m个时刻输入的信息码元有关
1 | clc; |
使用poly2trellis将卷积编码多项式转换为网格描述
比对后可以看到解码出的数据和原数据完全相同