FPGA如何使用RAM分区循环移位法实现解交织器

本文分析了卷积交织和解交织的基本原理,然后采用altera 的fpga器件,用ram分区循环移位法来实现解交织器。无论从理论上,还是从计算机仿真和综合结果上来分析,都可以看出用这种方法来实现dvb-c解交织器能有效地节省硬件资源。
卷积交织和解交织原理简介
在dvb-c系统当中,实际信道中的突发错误往往是由脉冲干扰、多径衰落引起的,在统计上是相关的,所以一旦出现不能纠正的错误时,这种错误将连续存在。因此在dvb-c系统里,采用了卷积交织来解决这种问题。它以一定规律扰乱源符号数据的时间顺序,使其相关性减弱,然后将其送入信道,解交织器按相反规律恢复出源符号数据。
dvb-c的卷积交织和解交织原理为:交织由i=12(i为交织深度)个分支构成。每个分支的延时逐渐递增,递增的单元数m=n/i=204/12=17(m为交织基数)。这里的数据单位为字节。0支路无延时,1支路延时17个符号周期,11支路则延时l7×11个符号周期。输入端有一开关随着时间推移依次连接各个延时支路,输出端有一开关与输入端一一对应,同步连接各延时支路。
解交织器的实现
解交织器的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)《 span=“”》
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分区号)
ram每区的读写地址相同,也就是先读出给定地址单元的数据后,再写入新的数据。这里要同时发生读写操作,所以要使用双口ram。每隔一个时钟周期,ram读写指针就跳到下一个ram区,这样读写指针在ram的11个区循环移动,实现解交织。
 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的解交织器,只要重设程序里的参数值就可以了,非常方便。


当谈到无线连接技术时你会想到谁
网络呼叫中心系统介绍
智慧园区三维可视化建模,广州华锐互动推动数字城市信息化升级
iPhone7必备神器Airpods昨日开售 耳机掉了还能单买
如何解决薄壁套筒类零件在加工中产生变形的难题
FPGA如何使用RAM分区循环移位法实现解交织器
苹果iOS10.2升级搞乌龙 很多果粉遭到牵累中
TDA8445各引脚功能及电压
hCaptcha已成为全球最大的独立验证码服务提供商
微星推出三款PRO MP242显示器
GM8284DD是LVDS转RGB/TTL视频转换
云计算发展赛道如何保持不掉队
数字温度传感器规范及标准介绍
“新基建”带动国产网络设备研发和应用的发展
高通“超低功率神经元形态人工智能计算加速器”专利解析
一文读懂捷豹I-PACE技术
电力高清无线监控系统的结构及方案设计
新能源物流车:瑞驰新能源自3月份以来,连续8个月获得销量第一
4G芯片攻防战激烈 高通“内伤”严重
那朵伴随着成长阵痛而扶摇直上的阿里云,今年也已经十周岁