主要内容

HDL交织器和反交织器

这个例子展示了如何设计分块交织器和分块反交织器,并使用这些分块在通信系统中实现交织和反交织。

交叉

音频处理和无线电传输的应用经常受到突发噪声的影响。突发噪声会降低前向纠错(FEC)码的性能。这种性能下降的结果是在解码数据中出现错误。交错是一种利用FEC码来扩展连续错误突发和改进数据解码的技术。交叉是数字视频广播-卫星-第二代(DVB-S2)、无线局域网(WLAN 802.11)和长期演进(LTE)等无线标准的一部分。这个框图显示了一个具有交织器和反交织器的通信系统的概述。

交错器以行格式将输入数据写入内存,并以列格式从内存读取输出数据。反交错器以相反的方式操作,它以列的格式将输入数据写入内存,并以行的格式从内存读取输出数据。行数和列数决定交错的程度。这个图显示了块交织器和块反交织器的工作,每个有四行和四列。

高密度脂蛋白衬垫模型

本节提供了一个通信系统的概述WHDLInterleaverModel.slx模型,其中包含交织器和反交织器块。模型的输入数据,dataIn,是使用卷积编码的卷积编码器块。编码数据然后由交织器子系统中的交织器块进行交织。通过对数据与突发噪声进行异或操作,将突发噪声添加到交错数据中。损坏的数据作为输入给反交织分系统,反交织分系统将数据中的突发错误扩散开来。的维特比译码器块解码去交错的数据并输出最终解码的数据。模型包含用于同步模型中的块的附加子系统。一个常量块交错变量在模型的交织器和反交织器子系统中提供。您可以设置或重置交错用于启用或禁用交错的变量。

端口描述

本节解释交织器子系统中的交织器块的输入和输出端口WHDLInterleaverModel.slx模型。

输入端口

  • dataIn—需要交错输入的数据。当块执行串行处理时,dataIn指定为标量。块支持金宝app布尔整数,固定点数据类型。

  • startIn—输入数据块的开始信号,指定为布尔标量。

  • endIn-输入数据块的结束信号,指定为布尔标量。

  • validIn-输入数据块的有效信号,指定为布尔标量。

输出端口

  • dataOut-作为标量返回的交错输出数据。的输出数据类型相同dataIn端口。

  • 开始-输出数据块的开始信号,返回一个布尔标量。

  • endOut-输出数据块的结束信号,返回一个布尔标量。

  • validOut-输出数据块的有效信号,返回为布尔标量。

  • 准备好了-用于外部接口的输出信号,返回为布尔标量。交织器接受一个新的输入数据块,同时仍在处理先前的数据块。如果在处理较早的数据块时给出了多个数据块作为输入,则就绪信号降低,表明交织器还没有准备好接受新数据。

所述除交错器块的输入和输出端口,该块位于所述除交错器子系统中WHDLInterleaverModel.slx型号,与交织块相同。

参数

这个图显示了交织块的块掩码。您可以通过修改块掩码上的参数选择,将此块用作交织器或反交织器。

交织块支持这些参数:金宝app

  • 衬垫—不可调掩码参数。选择衬垫参数,将该块用作交织器。清除此参数以使用块作为反交错器。

  • 最大的块大小—不可调掩码参数。该参数指定支持的最大块大小。金宝app这个值设置块内使用的RAM的大小。该参数最小值为4。

  • 列数—不可调掩码参数。该参数指定列的数量。最小列数是2,并且必须是的因数最大的块大小

块大小交错器是可调的,这意味着它可以在模拟过程中使用输入进行调整开始结束,有效的控制信号。块大小是从数据块的开始到末尾的输入有效样本的数量。块大小必须是整数倍数列数.块大小的最小值为列数X 2,最大值为最大的块大小

例如,如果您指定了最大的块大小参数为30列数参数为5时,模拟过程中可调块大小的可能值为10、15、20、25和30。块自动计算行数,行数随块大小而变化。

体系结构

本节介绍了交织器块的体系结构。交织器块以数据块的形式以及控制信号接受输入数据。交织器块独立地对每个数据块进行交织。该图显示了交织器块的体系结构。

交织块包含三个子系统和两个块:

  • 写逻辑——这个子系统接受输入控制信号,并产生适当的写有效信号和写地址信号,以便将数据写入RAM。

  • 存储块长度-这是一个FIFO块,在模拟期间存储输入数据块长度。

  • 读逻辑——这个子系统执行实际的交叉操作,并生成读地址从RAM读出数据。

  • 生成就绪-这个子系统生成就绪输出信号,用于与其他块接口。

  • RAM -这个块存储输入数据并基于输入读地址输出交错数据。

交织块和反交织块的读逻辑子系统中,只有生成读地址子系统的功能不同,其余子系统是相同的。

模型仿真

运行runWHDLInterleaverModel.m脚本来模拟WHDLInterleaverModel.slx模型。脚本初始化,模拟和验证模型的输出。为了获得最佳结果,基于突发噪声参数调整脚本中的交织参数。

禁用交错,然后运行脚本来模拟模型、验证输出并显示错误。

errorRateWithoutInterleaving = 0.1354

启用交错,然后运行脚本来模拟模型、验证输出并显示错误。

艰难的WithInterleaving = 0.0125.

当启用交错时,错误率小于禁用交错时的错误率。这种结果的产生是因为交错提高了性能维特比译码器通过分散突发错误来阻止。

HDL代码生成与实现结果

要检查和生成本例中引用的HDL代码,您必须拥有HDL Coder™产品。要生成HDL代码,请在MATLAB命令提示符处输入此命令。

> > makehdl (WHDLInterleaverModel / Deinterleaver / Deinterleaver块)

操作值的资源利用率和频率随输入数据类型、最大块大小和列数而变化。用Xilinx®Zynq®-7000 ZC706为Deinterleaver子系统的Deinterleaver Block合成了HDL代码fixdt(14) 1日16日输入,最大块大小为360,30列。该表显示了发布地点和路由资源的使用情况。最大工作频率为292mhz。交织分系统的交织分块也得到了类似的结果。

资源使用_______________ _____ Slice寄存器293 Slice LUT 271 RAMB18