位置:51电子网 » 技术资料 » 模拟技术

DVB-C解交织器的FPGA实现

发布时间:2008/5/27 0:00:00 访问次数:584

        

    

    

    作者:同济大学 超大规模集成电路研究所 相海英 林涛

    

    摘 要:本文分析了卷积交织和解交织的基本原理,然后采用altera 的fpga器件,用ram分区循环移位法来实现解交织器。无论从理论上,还是从计算机仿真和综合结果上来分析,都可以看出用这种方法来实现dvb-c解交织器能有效地节省硬件资源。

    

    关键词:dvb-c;卷积交织;解交织器;fpga

    

    卷积交织和解交织原理简介

    

    在dvb-c系统当中,实际信道中的突发错误往往是由脉冲干扰、多径衰落引起的,在统计上是相关的,所以一旦出现不能纠正的错误时,这种错误将连续存在。因此在dvb-c系统里,采用了卷积交织来解决这种问题。它以一定规律扰乱源符号数据的时间顺序,使其相关性减弱,然后将其送入信道,解交织器按相反规律恢复出源符号数据。

    

    dvb-c的卷积交织和解交织原理为:交织由i=12(i为交织深度)个分支构成。每个分支的延时逐渐递增,递增的单元数m=n/i=204/12=17(m为交织基数)。这里的数据单位为字节。0支路无延时,1支路延时17个符号周期,11支路则延时l7×11个符号周期。输入端有一开关随着时间推移依次连接各个延时支路,输出端有一开关与输入端一一对应,同步连接各延时支路。

    

    

    

    图1 解交织器的实现框图

    

    

    

    图2 解交织器的modelsim仿真图

    

    解交织器的实现

    

    解交织器的fpga实现原理

    

    本文采用ram分区循环移位法来实现,因为ram里面暂存一位数据,只需要用一个逻辑门大小的资源,比基本寄存器暂存一位数据需要12个逻辑门大小的资源要优化很多。用ram分区循环移位法来实现解交织器,就是把ram分成11个区。每个区的大小为(单位为字节):

    

    ni=m*(i-i-1)(i=0,1,2, …,(i-1))

    

    这里i为ram所分区的区号。

    

    因为11支路不需要延时,所以 ram的11分区大小即n11为0。本文在ram前面设置一个地址控制器,这是解交织器关键的一步。ram每区有一个首地址和区内偏移地址,分别用一个寄存器来存储。在地址控制器里产生每区的首地址和区内偏移地址,从而进一步产生ram的读写地址。

    

    解交织器的fpga实现

    

    把解交织器的深度i和基数m设成参数,以增强程序的通用性。如果以后设计的解交织器的系数i和m需要改动,只要把参数值重新设置一下就可以了,不需要改动程序。由前面的计算可知,解交织器总共需要延时的比特数,也就是ram的大小应该为8976比特。

    

    可以用下面一段程序实现首地址的初始化:

    

    firstaddr[0]=0;

    for(i=1;i<(i-1);i=i+1)

    firstaddr[i]=(i-i)*m+firstaddr[i-1];

    

    也就是说0~11支路的首地址在ram中分别为0,187,357,510,646,765,867,952,1020,1071,1105。

    

    ram每区的字节数可以由参数来表示,即为(i-i-1)*m,i为分支号。

    

    每区内偏移地址sectaddr[i]初始化为0,每写入一个数据,递增1并与由参数表示的每区的字节数进行比较,若两数相等,则sectaddr[i]重新设为零,保证区内偏移地址在每区内循环移动。

    

    由上可知,ram每区的读写地址为:firstaddr[i]+sectaddr[i](i为ram分区号)

    

    图1所示的就

        

    

    

    作者:同济大学 超大规模集成电路研究所 相海英 林涛

    

    摘 要:本文分析了卷积交织和解交织的基本原理,然后采用altera 的fpga器件,用ram分区循环移位法来实现解交织器。无论从理论上,还是从计算机仿真和综合结果上来分析,都可以看出用这种方法来实现dvb-c解交织器能有效地节省硬件资源。

    

    关键词:dvb-c;卷积交织;解交织器;fpga

    

    卷积交织和解交织原理简介

    

    在dvb-c系统当中,实际信道中的突发错误往往是由脉冲干扰、多径衰落引起的,在统计上是相关的,所以一旦出现不能纠正的错误时,这种错误将连续存在。因此在dvb-c系统里,采用了卷积交织来解决这种问题。它以一定规律扰乱源符号数据的时间顺序,使其相关性减弱,然后将其送入信道,解交织器按相反规律恢复出源符号数据。

    

    dvb-c的卷积交织和解交织原理为:交织由i=12(i为交织深度)个分支构成。每个分支的延时逐渐递增,递增的单元数m=n/i=204/12=17(m为交织基数)。这里的数据单位为字节。0支路无延时,1支路延时17个符号周期,11支路则延时l7×11个符号周期。输入端有一开关随着时间推移依次连接各个延时支路,输出端有一开关与输入端一一对应,同步连接各延时支路。

    

    

    

    图1 解交织器的实现框图

    

    

    

    图2 解交织器的modelsim仿真图

    

    解交织器的实现

    

    解交织器的fpga实现原理

    

    本文采用ram分区循环移位法来实现,因为ram里面暂存一位数据,只需要用一个逻辑门大小的资源,比基本寄存器暂存一位数据需要12个逻辑门大小的资源要优化很多。用ram分区循环移位法来实现解交织器,就是把ram分成11个区。每个区的大小为(单位为字节):

    

    ni=m*(i-i-1)(i=0,1,2, …,(i-1))

    

    这里i为ram所分区的区号。

    

    因为11支路不需要延时,所以 ram的11分区大小即n11为0。本文在ram前面设置一个地址控制器,这是解交织器关键的一步。ram每区有一个首地址和区内偏移地址,分别用一个寄存器来存储。在地址控制器里产生每区的首地址和区内偏移地址,从而进一步产生ram的读写地址。

    

    解交织器的fpga实现

    

    把解交织器的深度i和基数m设成参数,以增强程序的通用性。如果以后设计的解交织器的系数i和m需要改动,只要把参数值重新设置一下就可以了,不需要改动程序。由前面的计算可知,解交织器总共需要延时的比特数,也就是ram的大小应该为8976比特。

    

    可以用下面一段程序实现首地址的初始化:

    

    firstaddr[0]=0;

    for(i=1;i<(i-1);i=i+1)

    firstaddr[i]=(i-i)*m+firstaddr[i-1];

    

    也就是说0~11支路的首地址在ram中分别为0,187,357,510,646,765,867,952,1020,1071,1105。

    

    ram每区的字节数可以由参数来表示,即为(i-i-1)*m,i为分支号。

    

    每区内偏移地址sectaddr[i]初始化为0,每写入一个数据,递增1并与由参数表示的每区的字节数进行比较,若两数相等,则sectaddr[i]重新设为零,保证区内偏移地址在每区内循环移动。

    

    由上可知,ram每区的读写地址为:firstaddr[i]+sectaddr[i](i为ram分区号)

    

    图1所示的就

相关IC型号

热门点击

 

推荐技术资料

泰克新发布的DSA830
   泰克新发布的DSA8300在一台仪器中同时实现时域和频域分析,DS... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!