多码率国标发射机信道编码器的设计与实现*

2010-06-25 09:38党宏社
电视技术 2010年4期
关键词:信道编码码率编码器

党宏社,方 鑫

(陕西科技大学 电气与信息工程学院,陕西 西安 710021)

1 引言

中国地面数字电视广播传输标准GB20600-2006(以下简称“国标”)适用于地面传输的数字多路电视/高清晰度电视固定和移动广播业务的帧结构、信道编码和调制系统。国标中的信道编码部分采用了BCH(外码)+QC-LDPC(内码)的级联纠错编码技术,使误码纠错能力和信号调制性能更高,系统抗干扰能力更强[1]。其内码采用了非规则的QC-LDPC码,性能更加接近随机非规则的LDPC码。

信道编码器作为发射机的重要组成部分,设计十分关键。而信道编码器中的LDPC编码器必须能够进行3种码率的编码工作,FPGA实现占用资源较多,对系统的成本和复杂度有重要影响,设计难度较高。因此设计的重点与难点就是要在满足系统要求的基础上,尽可能地降低资源的消耗,达到资源消耗与系统性能的平衡。

2 系统级设计

BCH+QC-LDPC级连纠错原理如图1所示,TS码流输入分组模块后,由模块分组并产生每组的数据使能信号后输入下一级。根据国标要求,信道编码器分为外码编码器BCH与内码编码器LDPC两部分,两级编码器中还添加了一个删除前261 bit的0并按照码率组织数据的结构,其作用是用于编码数据长度切换,以便达到更好的编码效率。编码器模块工作时钟为50 MHz,由一个板载50 MHz晶振产生。

图1 BCH+QC-LDPC级连纠错原理图

3 模块级设计

3.1 BCH编码器结构设计

根据国标,BCH(762,752)码由 BCH(1023,1013)系统码缩短而成,该BCH码生成多项式为GBCH(x)=1+x3+x10,可知编码器共需10个移位寄存器。BCH编码器结构如图2所示。

图2 BCH编码器结构图

开关A:前752个时钟周期闭合,使数据输入编码器,进行BCH编码;后10个时钟周期断开,输出10 bit校验位。开关B:前752个时钟周期向下,输入数据输出;后10个时钟周期向上,输出10 bit校验位。

每个周期BCH编码器完成一次长度为1023的编码运算,然后接受下一次数据输入,进行下次编码。

3.2 LDPC编码器结构设计

LDPC码的生成矩阵Gqc的结构为[1]

式中:I是 b×b 阶单位矩阵;O 是 b×b 阶零阵;Gi,j是 b×b阶循环矩阵,取 0≤i≤k-1,0≤j≤c-1。

LDPC 码由循环矩阵Gi,j生成。

LDPC编码器是整个信道编码器的核心[2-3],设计规模大,因此采用了自顶向下的设计方法,将这个编码器划分为6个子模块:计数器控制器,数据输入控制器,ROM总线控制器,运算器阵列,FIFO控制器和输出控制器。LDPC编码器的整体结构图如图3所示。

图3 LDPC编码器结构图

LDPC编码器各个部分及其功能如下:

1)计数器控制器

计数器控制器控制整个编码器内部的工作时序。该子模块包含3个计数器:count_127运算计数器、count_row行列计数器和count_output输出计数器。运算计数器对运算器每次载入新Gi,j首行数据后的运算次数进行计数,每溢出一次代表完成了一次行运算;行列计数器对行运算的次数进行计数,每溢出一次代表完成了一次编码;输出计数器对输出字进行计数,每溢出一次代表完成了一次编码结果输出。

2)数据输入控制器

该子模块完成对运算器阵列的输入数据的时序控制,同时产生ROM地址数据并对其进行约束。

在仿真测试中发现了两个问题:

(1)ROM地址数据不能与输入数据同步,必须比输入数据提前2个时钟周期出现在总线上,否则会造成数据错位。原因在于ROM从读取地址到输出数据需要2个时钟周期。由于ROM地址数据无法提前,因此设计时将输入数据进行了2个时钟周期的延时,达到了相同的设计效果。

(2)ROM必须使用CLK全局时钟的下降沿工作,否则会造成ROM读取地址数据时,恰好是地址正在变化的不稳定时刻,造成数据读取错误。解决办法是对CLK时钟进行反向后提供给ROM,这样让ROM读取地址的时刻延迟了半个时钟周期,解决了数据读取错误问题。

3)ROM总线控制器

该子模块只需按照输入的码率设定值将对应码率的ROM数据读入数据总线即可。

4)运算器阵列

运算器阵列由35个运算器串联组成,使用时根据不同的码率选择不同数目的运算器组成阵列进行运算。每1个运算器在使用过输入数据后,将输入数据保持后从数据输出口向后一级运算器输出。每个运算器可通过1个移位寄存器累加(SRAA)电路构成,采用反馈移位寄存器与逻辑门设计编码器电路实现。0.4码率LDPC需要 35个 SRAA,0.6码率 LDPC需要 23个 SRAA,0.8码率LDPC需要11个SRRA,但不同码率不会同时出现,所以只需设计35个SRAA即可。SRAA编码电路如图4所示。

图4 SRAA编码电路

设计中发现,虽然每个SRAA中均设计有与门,但是由于是输入数据与127 bit矩阵数据做与运算,结果不是127 bit的0,就是原矩阵数据。因此设计时不用刻意设计出与门,只需要利用Verilog语言的 If…else语句的特点,不加入else语句就会默认保持结果,即可完成设计。

每个单个的运算器完成以下功能:(1)获取输入待编码数据比特和ROM数据;(2)若输入待编码数据为1,则将ROM数据与结果寄存器中的数据按位异或后存入结果寄存器;若输入为0,则什么也不做;(3)将ROM数据循环右移1位,同时将本次运算的输入待编码数据输出给下一个运算器。运算器只需不停地实现以上3个功能,即可完成运算任务。外部数据输入控制由数据输入控制器完成。

下面以码率为 0.4的 LDPC(7493,3048)码为例,详细说明运算过程。矩阵Gi,j如图5所示。

图5 SRAA阵列运算示意图

第1个时钟到来时:第1个比特进入运算器1,与进入锁存器中的ROM首行127 bit数据(即G[0][0])做与运算,结果放入data_out临时寄存器中,锁存器中数据右移1位,同时将第1个比特输出至运算器2的bit_in数据输入线上。

第2个时钟到来时:第2个比特进入运算器1,与已移位的锁存器中数据(即国标文件中的G[0][1])做与运算,再与data_out中的数据做异或运算,并放入data_out中,锁存器中的数据右移1位;同时运算器2完成上一步运算后,把第1个比特输出至运算器3;运算器1把第2个比特输出至运算器2中。

第3~35个时钟完成如前两步所示。

第36~127个时钟到来时:ROM数据停止输入,运算器继续完成与锁存器中移位数据的运算过程。

第128个时钟到来时:ROM被输入新数据(G[1][0]),完成一个小阵(127×127)的运算。

当运算器运算结束时,读出运算结果,同时ROM地址复位,给运算器重新赋入数据(即G[0][0])。

得到的127×35=4445个数据为校验位,输出到127×24=3048 个原始数据前,组成 LDPC(7493,3048)码。

5)FIFO控制器

该子模块的任务是将最后一个运算器输出的输入数据按127 bit组合为一组,存入FIFO中,待校验码输出完毕后输出。

6)输出控制器

在输出控制器中,若输出使能位被计数器控制器置1,则与输出计数器同步运行,将每个运算器输出的运算结果输出至输出口上。设计时仅需注意在输出第一个127 bit校验位时需要将indication输出线输出高电平,以便后级处理时使用。

4 系统仿真与测试验证

4.1 系统仿真

编译结果表明,整个信道编码器占用了Altera的EP1S30B956C5芯片的12874个 (40%)逻辑单元与287060 bit(9%)存储器。

在经过时序仿真后,图6的BCH编码器输出结果示意图表明了输出BCH编码器运转正常,按照程序设计的方式工作并输出了正确的结果。

图6 BCH编码器输出结果示意图

LDPC输出示意图如图7所示。address地址信号在使能信号输入前2个时钟周期将数据送入了ROM,完成了各个模块的时钟同步。每个时钟周期下的数据准确无误;各个约束条件都发生了作用,在合适的时刻控制地址线,完成了地址的输入切换。所有的输出结果都准确,时序正确;在编码输出的同时,与新一次的编码运算衔接得很好。

4.2 测试验证

测试与验证主要是检验设计的信道编码器能否准确、稳定、快速地对每个输入比特完成编码。

图7 LDPC输出示意图

将编译通过的编码器在Quartus II中加入逻辑分析仪后再编译下载至芯片,连接测试数据输入模块,将编码器的所有控制与数据信号加入逻辑分析仪中[4],然后将预设的数据输入,检查各个信号线的输出是否正确;若各个信号无误,则将芯片的工作频率逐渐上调,直到数据出现错误停止,测试最高工作频率。

在测试过程中,每一步均采集了大量数据,并与Matlab仿真的数据进行比较,并未发现误码,说明上述设计的信道编码器能够准确、稳定、快速地对每个输入比特完成编码。工作频率测试发现上述设计的信道编码器的最高工作频率为60 MHz,为了保证运算的准确性与稳定性,正常使用时采用50 MHz时钟工作,而实际需要的最高时钟频率为6×7.56 MHz=45.36 MHz,这说明所设计的编码器完全满足系统需要。

4 小结

笔者提出了一种三码率、低复杂度、可扩展的国标数字电视信道编码器的结构,该编码器可根据设定的编码码率,自动进行对应码率的数字电视发射机前端编码工作。该结构资源消耗低,配置简单灵活,吞吐率大。

[1]GB 20600-2006,数字电视地面广播传输系统帧结构,信道编码和调制[S].北京:中国标准出版社,2006.

[2]杨抒文,彭克武,潘长勇.DTMB发射机LDPC编码器的设计与优化[J].电视技术,2008,32(7):4-5.

[3]王文君,朱晓暄,康桂霞,等.结构化LDPC码的高速编译码器FPGA 实现[J].数据采集与处理,2008(23):113-118.

[4]齐志强,葛建华,尚文静.地面数字电视国标编码器设计与实现[J].电视技术,2007,31(10): 35-36.

猜你喜欢
信道编码码率编码器
一种基于HEVC 和AVC 改进的码率控制算法
基于FPGA的多码率卷积编码器设计与实现
如何提升计算机在信道编码的处理应用效率
5G信道编码技术相关分析
华为:颁奖Polar码之父
基于FPGA的同步机轴角编码器
基于状态机的视频码率自适应算法
基于双增量码道的绝对式编码器设计
卫星数字电视信号部分信道编码的软件实现
JESD204B接口协议中的8B10B编码器设计