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 |