DVB-T2 调制器FPGA设计文档
0赞1.功能目标
根据EN302755v111标准,使用FPGA实现DVB-T2发送的基带处理部分。该产品也可以作为一个独立的DVB-T2调制器FPGA IP core 使用。
2.系统框图
整个系统框图如下所示。
3.系统实现
系统使用统一的时钟Fsys=Fsymbol*N,其中Fsymbol为符号率,N为倍频数,根据符号率所处的频段各不相同,M为每个符号进行星座映射的比特,对QPSK为2,16QAM为4, 保持数据输入的速率大于发送的数据速率。并通过填充程度,控制数据输入的节奏。
BCHcoder使能且数据有效后两个时钟,开始输出有效数据。
ldpc_codec第一次使能后12个时钟后请求输入数据,输入数据有效后两个时钟,开始输出有效数据。
4.Twist比特交织
对经过编码后的数据流进行twist比特交织
5.比特demux
根据不同的调制方式/编码率/码长的组合,得到Addr的起始地址start_pos及item_size,然后根据计数值与start_pos的和作为地址取得实际位置的地址。使用2个深度为32,字长为4的RAM,以乒乓方式分别进行写入/读出操作,以得到连续的输出结果。
6.星座旋转及循环延时
按照实数展开,即为
实部 IqCOSΦ - QqSINΦ
虚部 Iq-1SINΦ + Q q-1COSΦ
当q=0时,q-1为Ncells -1
7.Cell interleaver
星座旋转的输出的cell在一个位置为r 的FEC block内进行cell interleave,每一个位置为q的cell,被插入的位置由Lr(q) = [L0(q) +P(r)] mod Ncells 决定,其中L0(q) 由Ncells决定,而P(r)则由Ncells与r共同决定。
8.Time interleaver
每个PLP中,每个TI所包含的cell的最大数目为Mti = 2^19+2^15 = 557056。如果每个cell需要16*2=32bit,那么共计内存为557056*32=16Mb=2MB。
每个TI所包含的FEC block的最大数目为:
index |
mod |
Ncell |
Nfec_ti_max |
0 |
256QAM |
2025 |
275 |
1 |
64QAM |
2700 |
206 |
2 |
16QAM |
4050 |
137 |
3 |
256QAM/QPSK |
8100 |
68 |
4 |
16QAM |
16200 |
34 |
5 |
QPSK |
32400 |
17 |
6 |
64QAM |
10800 |
51 |
9.L1 signalling zero padding
无论single 或者multiple PLP,L1-pre是固定的200bit, 对于Single PLP的情况,L1-post是固定的350bit,都无法填满第一个Bit group,所以仅仅在后面分别填充3072-200以及7032-350个0就可以了
10.L1 signalling puncturing
对于L1-pre来说,需要删除11488个Parity bit,即31个360bit的parity group(πp(0)~πp(30))外加πp(30)中的前328个parity bit。由于位置固定,所以考虑以程序逻辑进行判断来进行。
对于L1-post来说,由于需要删除的Parity bit与调制方式及FFT大小相关,故决定在初始化阶段根据Npunc等参数,使用一个ram来保存需要保留的parity bit位置,以后每次L1-post输出时,根据当时的bit顺序数得到当前parity bit是否需要保留。
11.P1 Symbol insertion
插入P1符号。
12.Frame Builder
其中,L1-pre是固定的值,不随T2帧变化,L1-post中T2帧索引随着时间变化。两种数据均经过时间交织,行列参数如下。
行数 |
列数 |
|
L1-pre |
1840/ Np2 |
Np2 |
L1-post |
1504/(n* Np2) |
Np2 |
13.Pilot insertion
SP与Pilot pattern决定。
CP的位置是固定的常数组合与Kmod取模决定。幅度与SP有所不同。
14.Frequency interleaver
按照协议规定的建立地址产生器。
15.FFT module
做变换前,需要做数据的顺序调整
fft_in(0:num_halfused -1)=data_in(num_halfused -1:num_halfused*2-2) |
|
16.参数输入模块
参数输入模块的作用是接受用户输入的直接参数,并对他们的组合进行校验,然后查表和计算输出需要的各种间接参数。
Parameter |
category |
scope |
mean |
default |
FFT_TYPE |
OFDM |
0/1/2/3/4/5 |
1/2/4/8/16/32 K FFT |
2 |
GUARD_INT |
OFDM |
0/1/2/3/4/5/6 |
1/32 1/16 1/8 1/4 1/128 19/128 19/256 |
1 |
PILOT_PAT |
OFDM |
0/1/2/3/4/5/6/7 |
PP1/PP2/PP3/PP4/PP5/PP6/PP7/PP8 |
6 |
BANDWIDTH |
SYS |
0/1/2/3/4 |
1.7/5/6/7/8 MHz |
4 |
FREQ |
SYS |
40~860.00 |
40~860.00 |
474 |
NET_ID |
L1 |
0~65535 |
0~65535 |
0 |
T2_SYS_ID |
L1 |
0~65535 |
0~65535 |
0 |
CELL_ID |
L1 |
0~65535 |
0~65535 |
0 |
L1_MOD |
L1 |
0/1/2/3 |
BPSK/QPSK/16QAM/64QAM |
2 |
PLP_MOD |
L1 |
0/1/2/3 |
QPSK/16QAM/64QAM/256QAM |
2 |
PLP_COD |
L1 |
0/1/2/3/4/5 |
1/2 3/5 2/3 3/4 4/5 5/6 |
2 |
PLP_FEC_TYPE |
L1 |
0/1 |
16K/64K |
1 |
TIME_IL_TYPE |
L1 |
0/1 |
one interleaving frame corresponds to one T2 frame |
0 |
TIME_IL_LEN |
L1 |
0~255 |
number of TI-block per T2-frame |
3 |
CONST_ROT |
L1 |
0/1 |
disable/enable |
1 |
FRAMES_PER_SUP |
L1 |
2~255 |
Number of T2-frame per super-frame |
2 |
NUM_DATA_SYM |
L1 |
Np2+2/Np2+7 ~Lfmax |
Number of symbols per T2-frame |
|
NUM_BLOCK |
L1 |