主要内容

从MATLAB验证Turbo译码器与框架数据

这个例子显示了如何验证hardware-targeted LTE Turbo译码器设计利用MATLAB®的数据帧。

要运行这个例子,可以使用VerifyLTEHDLTurboDecoderFramedData.m脚本。

LTE工具箱™和5 g Toobox™函数模型操作框架,浮点数,整数数据并提供优秀的行为引用。硬件设计必须使用布尔或定点数据流。这个例子进口框架数据模型®,然后转换为硬件算法设计一个示例流。金宝app相同的数据应用于硬件算法模型,并在MATLAB环境下行为的算法。金宝app仿真软件金宝app模型转换的输出示例流帧的帧MATLAB和出口比较。

硬件的目标模型金宝app

模型的关键特性仿真软件的硬件针对®是:金宝app

  • 流示例接口:5 g LTE工具箱,工具箱函数过程框架模块在无线HDL工具箱使用流示例接口。硬件设计的串行处理是有效的。为进一步的信息,请参阅流示例接口。你可以在仿真软件使用帧转换为样本金宝app帧样本块或MATLAB使用whdlFramesToSamples函数。在本例中,我们将帧转换为一连串的样本在仿真软件使用样本块的帧。金宝app

  • 子系统针对HDL代码生成:设计一个hardware-friendly sample-streaming模型通过选择的块。设计针对HDL代码生成的部分必须在一个单独的子系统。

  • 纸浆包转换输出帧:验证,你可以导出你的hardware-compatible结果设计的MATLAB®工作区。你可以把这个结果与MATLAB的输出行为的设计。在这个例子中,我们把样品在仿真软件使用帧金宝app样品架块。

您可以使用VerifyLTEHDLTurboDecoderFramedData.mMATLAB脚本运行MATLAB行为代码,设置,输入数据和运行仿真软件™模型,导出数据,并比较行为和模型的输出。金宝app

MATLAB脚本包含四个部分:

  1. 行为模拟涡轮解码器

  2. 设置硬件设计的仿真软件金宝app模型

  3. 运行仿真金宝app软件模型

  4. 验证仿真软件模型的输出金宝app

行为模拟涡轮解码器

行为模拟的设计、使用lteTurboDecode从LTE工具箱函数。这段代码生成输入数据,softBits我们可以使用作为输入的高密度脂蛋白有针对性的设计。行为的输出lteTurboDecode函数,rxBits可用于比较的输出高密度脂蛋白有针对性的设计。这两个softBitsrxBits是浮点数据的帧。

% Turbo译码软位从嘈杂的星座turboFrameSize = 6144;txBits =兰迪([0 1]turboFrameSize 1);codedData = lteTurboEncode (txBits);txSymbols = lteSymbolModulate (codedData,“正交相移编码”);噪音= 0.5 *复杂(randn(大小(txSymbols)), randn(大小(txSymbols)));rxSymbols = txSymbols +噪声;散射(真实(rxSymbols),图像放大(rxSymbols),“有限公司”);持有;散射(真实(txSymbols),图像放大(txSymbols),“处方”)传说(“Rx星座”,“Tx星座”)softBits = lteSymbolDemodulate (rxSymbols,“正交相移编码”,“软”);rxBits = lteTurboDecode (softBits);

设置硬件设计的仿真软件金宝app模型

从MATLAB模型导入框架数据工作区。在这种情况下,变量inframesblockSizeIn是输入到模型中。

LTE Turbo译码器子系统包括LTE Turbo译码器块。此块设置为运行的帧尺寸6144系统比特和迭代解码。

从MAT金宝appLAB仿真软件模型进口帧的数据并将它们转换为一连串的样品在仿真软件模型。

样本块的帧转换框架数据的样本和控制信号。这一块还增加了无效的样本示例流模拟硬件数据流。这个块提供的输入子系统针对HDL代码生成,但本身不支持HDL代码生成。金宝app

在这个例子中,帧样本块被配置为提供LTE Turbo译码器的输入块。没有无效的样本之间插入有效样本。

仿真软件金宝app模型还从工作区进口帧尺寸参数并将其传递到blockSize端口的LTE Turbo译码器。这个例子使用一块大小,这仍然保持在一个恒定值指定的端口turboFrameSize参数。

LTE Turbo译码器块在一帧的数据,运行指定的迭代次数,并可以接受另一个输入框。为了允许运行6块处理时间迭代,我们之间发送无效样本帧。在这个例子中,我们设置帧之间的无效的样本数目为7的迭代(或14 half-iterations,每个对应一个帧的延迟)。计算所需的周期过程框架,看看LTE Turbo译码器

涡轮编码器功能发送所有系统的第一位,紧随其后的是第一组奇偶校验位和最后,奇偶校验位的第二组。然而需要每组的LTE Turbo译码器系统和两个奇偶校验位发送在一起。重塑LTE Turbo译码器的输入数据块因此,我们选择的选项组成的输出样本交叉输入样本。

%打开模型modelname =“TurboDecoderFramedDataHDLExample”;open_system (modelname);
%设置帧输入工作空间块inframesize =长度(softBits);
%设置LTE Turbo译码器numTurboIterations = 6;
%设置帧样本块idlecyclesbetweensamples = 0;%近似延迟从每half-iteration LTE Turbo译码器块tdlatency =(装天花板(turboFrameSize / 32) + 4) * 32;%近似帧延迟LTE Turbo译码器输出algframedelay = (2 * numTurboIterations + 2) *(装天花板(tdlatency / turboFrameSize));%率1/3代码:系统+ 2平价insamplesize = 3;idlecyclesbetweenframes = (inframesize / insamplesize) * algframedelay;%选择交叉组合输出的选项输入样本set_param ([modelname“/帧样本”),“InterleaveSamples”,“上”);
%设置帧块样品%的设置,包括空闲周期totalframesize = ((inframesize / insamplesize) *(idlecyclesbetweensamples + 1)) + idlecyclesbetweenframes;%替代设置,同样大小作为LTE Turbo译码器输出帧% totalframesize = outframesize;outsamplesize = 1;

MATLAB代码也将输入数据转换为定点用于hardware-targeted模型和仿真计算所需的时间。

%的仿真时间numFrames = 1;%的帧数simTime = numFrames;
%输入帧数据模型% lteTurboDecode使用相同的数据,转换为定点inframes = fi (softBits 1 5、2);

运行仿真金宝app软件模型

您可以运行该模型通过单击播放按钮或调用MATLAB命令行上的sim命令。

sim (modelname);

验证仿真软件模型的输出金宝app

运行模型导致帧的数据记录从工作区块的帧的输出变量outframes_logdata。比较数据的输出行为模拟行为代码之间找到一些不匹配的数量和hardware-targeted模型。

这个仿真结果没有错误。增加噪声的量添加到样品或减少迭代的数量可能会导致一些错误。

%过程HDL的输出模型和比较行为模拟输出%收集所有的数据记录到一个数组中rxBits_hdl = outframes_logdata (:);
%检查的数量有些不匹配numBitsDiff = (rxBits_hdl ~ = rxBits)之和;流([“\ nLTE Turbo译码器:行为和的高密度脂蛋白模拟不同% d位\ n \ n '),numBitsDiff);

生成HDL代码并验证其行为

一旦你的设计是在仿真工作,您可以使用HDL编码器™生成HDL代码LTE Turbo译码器子系统。使用高密度脂蛋白校验™来生成一个SystemVerilog DPI试验台(高密度脂蛋白编码器)或运行FPGA-in-the-Loop

makehdl ([modelname' / LTE Turbo译码器的])%生成HDL代码makehdltb ([modelname' / LTE Turbo译码器的])%产生高密度脂蛋白试验台

另请参阅

功能

相关的例子

更多关于