0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

FPGA设计论坛 来源:电子设计应用 作者:fengfeng 2021-09-28 17:53 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文分析了卷积交织和解交织的基本原理,然后采用AlteraFPGA器件,用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的解交织器,只要重设程序里的参数值就可以了,非常方便。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1664

    文章

    22504

    浏览量

    639308
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1401

    浏览量

    121012
  • 交织器
    +关注

    关注

    0

    文章

    5

    浏览量

    7848

原文标题:用RAM分区循环移位法来实现解交织器

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RAM存储中的地址冲突场景

    RAM 是基于 FPGA 的系统设计中的关键组件,通常用于其高速数据存储功能。然而,地址冲突可能会带来重大挑战,影响系统的可靠性和性能。本文我们将探讨简单双端口 RAM 模块中地址冲突的概念,并
    的头像 发表于 04-24 09:59 4247次阅读
    块<b class='flag-5'>RAM</b>存储<b class='flag-5'>器</b>中的地址冲突场景

    74AHC594:8位移位寄存器的详细解析与应用

    74AHC594:8位移位寄存器的详细解析与应用 在电子设计领域,移位寄存器是一种常见且重要的数字电路元件,它能够实现数据的串行输入、串行输出或并行输出。今天,我们就来深入了解一下SGMICRO公司
    的头像 发表于 03-26 09:10 471次阅读

    74HC595 8位移位寄存器:设计与应用全解析

    74HC595 8位移位寄存器:设计与应用全解析 在电子工程师的工具箱中,移位寄存器是一个非常实用的组件。今天,我们就来深入了解一下SG Micro Corp的74HC595 8位串行输入/串行输出
    的头像 发表于 03-16 10:35 372次阅读

    74LV595A:8位移位寄存器的全方位解析

    74LV595A:8位移位寄存器的全方位解析 在电子设计领域,移位寄存器是一种常用的逻辑元件,能实现数据的串行输入和并行输出。今天我们要深入探讨SGMICRO的74LV595A,一款功能强大的8位
    的头像 发表于 03-16 10:35 269次阅读

    74AHCT595F:8位移位寄存器的特性与应用解析

    74AHCT595F:8位移位寄存器的特性与应用解析 在电子设计领域,移位寄存器是一种常用的数字电路元件,它能够实现数据的串行输入、串行输出或并行输出。SGMICRO的74AHCT595F就是这样
    的头像 发表于 03-16 10:25 558次阅读

    AES加解密算法逻辑实现及其在蜂鸟E203SoC上的应用介绍

    这次分享我们会简要介绍AES加解密算法的逻辑实现,以及如何将AES算法做成硬件协处理集成在蜂鸟E203 SoC上。 AES算法介绍 AES算法属于对称密码算法中的分组密码,其明文/密文分组长度为
    发表于 10-29 07:29

    ram ip核的使用

    ram ,通过对这些bram存储模块进行配置,可以实现ram移位寄存器、rom以及fifo缓冲
    发表于 10-23 07:33

    如何利用Verilog HDL在FPGA实现SRAM的读写测试

    本篇将详细介绍如何利用Verilog HDL在FPGA实现SRAM的读写测试。SRAM是一种非易失性存储,具有高速读取和写入的特点。在FPGA
    的头像 发表于 10-22 17:21 4571次阅读
    如何利用Verilog HDL在<b class='flag-5'>FPGA</b>上<b class='flag-5'>实现</b>SRAM的读写测试

    SN74HCT165 8位并行输入移位寄存器技术解析

    Texas Instruments SN74HCT165/SN74HCT165-Q1并联负载移位寄存器是一款并联或串联输入、串联输出8位移位寄存器。借助八个独立的直接数据 (A-H) 输入并行访问
    的头像 发表于 09-19 14:39 1692次阅读
    SN74HCT165 8位并行输入<b class='flag-5'>移位寄存器</b>技术解析

    ‌TLC6C5816-Q1 16位移位寄存器LED驱动技术文档总结

    错误故障意味着通道已配置为 LED 诊断,但寄存写入命令同时打开了该通道。该器件提供循环冗余校验,以验证移位寄存器中的寄存值。在回读模式下,器件提供 6 位 CRC 余数。MCU可
    的头像 发表于 08-25 18:13 1140次阅读
    ‌TLC6C5816-Q1 16位<b class='flag-5'>移位寄存器</b>LED驱动<b class='flag-5'>器</b>技术文档总结

    生态循环园区环网箱局放传感:脉冲电流的绿色守护

    的波动性冲击,电气设备绝缘劣化风险显著增加。局部放电作为绝缘故障的早期征兆,其监测技术成为保障园区电力安全的关键手段。本文聚焦基于脉冲电流的环网箱局放传感,解
    的头像 发表于 08-25 11:51 748次阅读
    生态<b class='flag-5'>循环</b>园区环网箱局放传感<b class='flag-5'>器</b>:脉冲电流<b class='flag-5'>法</b>的绿色守护

    Linux系统中磁盘分区与挂载详解

    磁盘分区是将物理硬盘划分为不同的逻辑部分,每个分区都可以被视为一个独立的存储设备。通过磁盘分区,我们可以更好地管理磁盘空间,实现数据的组织和隔离。
    的头像 发表于 06-17 15:08 2721次阅读
    Linux系统中磁盘<b class='flag-5'>分区</b>与挂载详解

    服务数据恢复—服务器重装系统导致分区消失的数据恢复案例

    服务上有一组由raid卡组建的raid5磁盘阵列。上层安装linux才做系统,采用XFS文件系统,划分了3个分区。 管理员将服务的操作系统重装后,发现服务上的
    的头像 发表于 05-14 10:13 745次阅读
    服务<b class='flag-5'>器</b>数据恢复—服务器重装系统导致<b class='flag-5'>分区</b>消失的数据恢复案例

    Xilinx Shift RAM IP概述和主要功能

    Xilinx Shift RAM IP 是 AMD Xilinx 提供的一个 LogiCORE IP 核,用于在 FPGA实现高效的移位寄存器(Shift Register)。该
    的头像 发表于 05-14 09:36 1279次阅读

    FPGA从0到1学习资料集锦

    种类更多,而不仅仅是原来的简单逻辑单元(LE)。早期的 FPGA 相对比较简单, 所有的功能单元仅仅由管脚、内部 buffer、LE、RAM 构建而成,LE 由 LUT(查找表)和 D 触发构成
    发表于 05-13 15:41