chuqiao

DVB-T2 调制器FPGA设计文档

0
阅读(648) 评论(1)

1.     功能目标

根据EN302755v111标准,使用FPGA实现DVB-T2发送的基带处理部分。该产品也可以作为一个独立的DVB-T2调制器FPGA IP core 使用。

 

2.     系统框图

整个系统框图如下所示。 

 dvb-t2.jpg

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)
fft_in(num_halfused: num_halfused + num_unused -1)=0
fft_in(num_halfused + num_unused:Nfft -1)=data_in(0:num_halfused -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




 

 


  1. 谢谢分享!!!!!!!!!