您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

DVB-C解交错器的FPGA实现

发布日期:2011-04-19


   摘 要:本文阐发了卷积交错和解交错的基源头根本理,然后采取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 MegaWizard东西配置的双口RAM。RAM每区的读写地点雷同,也便是先读出给定地点单位的数据后,再写入新的数据。这里要同时产生读写操纵,以是要利用双口RAM。每隔一个时钟周期,RAM读写指针就跳到下一个RAM区,如许读写指针在RAM的11个区循环移动,实现解交错。

  图2为解交错器在Mentor公司的Modelsim SE环境下的逻辑仿真图。Clk为时钟信号,Reset为异步复位信号,ClkEn为时钟使能信号,高电平有效,FrameFirstIn为帧同步信号,高电平有效。DeinterleaverIn为输入数据。计划时要细致数据同步题目,要不然会导致数据错位,导致计划的失败。DeinterleaverIn为了在selector模块输入时和RAM的输出数据q保持同步,要作相应的延时,同步延时后DataIn4,同理,映射地RAM的输入数据DataIn1,selector模块的使能信号ClkEn4等也是颠末同步处理惩罚得到。Flag为selector模块的选择控制信号,当Flag信号为0~10时,选择RAM的输出数据q作为输出,而当Flag=11时,则选择DeinterleaverIn颠末同步处理惩罚后的数据DataIn4作为输出,从而包管在解交错器的11支路实现无延时输出。在解交错器的最前面输出的字节有些是无效的,加一个DataEffect模块是为了等全部字节都有效时,才把FrameFirstOut信号置高,报告背面的模块数据开始全部有效。

  从资源利用方面思量,利用RAM分区循环移位法来实现DVB-C解交错器比全部用根本寄存器或用配置FIFO的要领来实现要优化得多。

  为了更好地验证,本文把计划在synopsys 公司的synplify pro软件环境下举行综合,选用Altera公司的Cyclone EP1C12Q240C8器件。由于利用了软核IP,以是再把天生的*.vqm文件导入synopsys公司的QuartusII 软件举行再综合,选择同样的器件范例和型号,结果阐明采取双口RAM计划所利用的逻辑单位较少,并且利用的8976比特RAM资源占用了Cyclone器件中的3个M4K,只有全部存储资源的3%。

结语
  
  固然采取卷积交错会在刚开始传输数据的时间输出一些无效数据,在体系中引入肯定的延时,但是它能把突发滋扰导致的突发错误疏散成随机错误,利于RS纠错,如许一衡量,有延时也是很值得的。本文利用EDA东西完成解交错器的计划,并且采取Verilog和原理图协同输入的计划要领,大大进步了计划服从。这里计划的解交错用具有通用性,要是要用差别深度I和基数M的解交错器,只要重设步伐里的参数值就可以了,非常方便。