主要内容

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

这个例子展示了如何使用MATLAB®中的数据帧来验证一个针对硬件的LTE Turbo译码器设计。

要运行此示例,请使用VerifyLTEHDLTurboDecoderFramedData.m剧本

LTE Toolbox™和5G Toobox™对框架数据、浮点数据和整数数据进行建模操作,并提供出色的行为参考。硬件设计必须使用流布尔或定点数据。本示例将框架数据导入Simulink®,然后转换为用于硬件算法设计的样本金宝app流。在Simulink中的硬件算法和MATLAB中的行为算法中都应用了相同的数据。金宝appSimu金宝applink模型将输出样本流转换为帧,并将帧输出到MATLAB进行比较。

Simulink中的硬件目标金宝app

Simulink®中硬件目标模型的主要功能包括:金宝app

  • 流式采样接口:LTE Toolbox和5G Toolbox函数处理帧,而无线HDL Toolbox中的块使用流式采样接口。串行处理对于硬件设计非常有效。有关更多信息,请参阅流式采样接口。您可以在Simulink中使用金宝app帧到样本块或在MATLAB中使用whdlFramesToSamples在本例中,我们使用Frame to samples块在Simulink中将帧转换为样本流。金宝app

  • 针对HDL代码生成的子系统:通过从中选择块,设计硬件友好的样本流模型. 针对HDL代码生成的设计部分必须位于单独的子系统中。

  • 将基于样本的输出转换为帧:为了验证,您可以将您的硬件兼容设计的结果导出到MATLAB®工作空间。然后,您可以将此结果与MATLAB行为设计的输出进行比较。在这个例子中,我们在Simulink中用金宝app样品架

你可以使用VerifyLTEHDLTurboDecoderFramedData.mMATLAB脚本运行MATLAB行为代码,建立、导入数据并运行Simulink™模型,导出数据,并比较行为和Simulink输出。金宝app

MATLAB脚本包含四个部分:

  1. Turbo译码器的行为模拟

  2. 建立硬件设计的Simu金宝applink模型

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

  4. 验证Simulink模型的输出金宝app

Turbo译码器的行为模拟

对于设计的行为模拟,请使用lteTurboDecode功能从LTE工具箱。这个代码生成输入数据,软比特我们可以使用它作为HDL目标设计的输入。行为输出lteTurboDecode作用rxBits可用于与HDL目标设计的输出进行比较。这两个软比特rxBits是浮点数据的帧。

%噪声星座中软比特的Turbo译码turboFrameSize=6144;txBits=randi([0 1],turboFrameSize,1);codedData=LTETRBOONECODE(txBits);TXSYMBOL=LTESYMBOL调制(代码数据,“正交相移编码”); 噪声=0.5*复数(randn(大小(txSymbols)),randn(大小(txSymbols));rxSymbols=txSymbols+噪声;散射(实(rxSymbols)、imag(rxSymbols),“有限公司”);持有在…上;散射(实(txSymbols)、imag(txSymbols),“处方”)传奇(“Rx星座”,“Tx星座”)软位=lteSymbolDemodulate(rxSymbols,“正交相移编码”,“软的”);rxBits = lteTurboDecode (softBits);

建立硬件设计的Simu金宝applink模型

该模型从MATLAB工作区导入基于帧的数据次声布洛克赛因是模型的输入。

这个LTE-Turbo解码器子系统包括LTE-Turbo解码器该块被设置为在6144系统比特的帧大小和6次解码迭代中运行。

Simu金宝applink模型从MATLAB导入数据帧,并将其转换为Simulink模型中的样本流。

帧到采样块将帧数据转换为采样和控制信号流。此块还将无效样本添加到样本流以模拟流硬件数据。这个块提供了针对于HDL代码生成的子系统的输入,但是它本身不支持HDL代码生成。金宝app

在此示例中,帧到采样块被配置为向LTE Turbo解码器块提供输入。在有效采样之间没有插入无效采样。

Simu金宝applink模型还从工作区导入帧大小参数,并将其传递到LTE Turbo解码器块的blockSize端口。此示例使用一个块大小,因此该端口保持由涡轮框架尺寸参数。

LTE Turbo解码器块接收一帧数据,运行指定的迭代次数,然后可以接受另一个输入帧。为了允许块处理时间运行6次迭代,我们在帧之间发送无效样本。在本例中,我们将帧之间的无效样本数设为7次迭代(或14个半迭代,每个迭代对应一个延迟帧)LTE-Turbo解码器

turbo编码器功能首先发送所有系统位,然后是第一组奇偶校验位,最后是第二组奇偶校验位。但是,LTE turbo解码器要求将每组系统位和2个奇偶校验位一起发送。要相应地重塑LTE turbo解码器块的输入数据,我们选择co选项从交错输入样本中mpose输出样本。

%打开模型型号名称=“TurboDecoderFramedDataHDLExample”;开放式系统(型号名称);
%设置从工作区框输入inframesize=长度(软位);
LTE Turbo Decoder块的设置numTurboIterations=6;
%“帧到采样”块的设置idlecyclesbetweensamples = 0;每半迭代从LTE Turbo解码块得到的大约延迟%tdlatency =(装天花板(turboFrameSize / 32) + 4) * 32;%LTE Turbo解码器输出的近似帧延迟algframedelay=(2*numTurboIterations+2)*(ceil(tdlatency/turboFrameSize));%速率1/3代码:系统+2奇偶校验insamplesize=3;idlecyclesbetweenframes=(insamplesize/insamplesize)*algframedelay;%选择从交错输入样本合成输出的选项set_param ([modelname“/Frame To Samples”],...“InterleaveSamples”,“开”);
%“采样到帧块”的设置%精确设置,包括引入的空闲周期totalframesize = ((inframesize / insamplesize) *...(idlecyclesbetweensamples + 1)) + idlecyclesbetweenframes;%可选设置,与LTE Turbo解码器输出帧大小相同% totalframesize = outframesize;过采样=1;

MATLAB代码还将输入数据转换为定点,用于硬件目标模型,并计算所需的仿真时间。

%模拟时间numFrames=1;要运行的帧数simTime = numFrames;
%输入模型的帧数据%使用与lteTurboDecode相同的数据,转换为固定点inframes = fi(softBits, 1, 5, 2);

运行仿真金宝app软件模型

您可以通过点击Play按钮或调用MATLAB命令行上的sim命令来运行模型。

sim (modelname);

验证Simulink模型的输出金宝app

运行该模型会产生从变量中的Frame Output To Workspace块记录的数据帧outframes_logdata.将数据与行为模拟的输出进行比较,以发现行为代码与硬件目标模型之间的位不匹配数。

这种模拟不会产生比特错误。增加添加到样本中的噪声量或减少迭代次数都可能导致比特错误。

%处理HDL模型的输出并与行为模拟输出进行比较%将所有记录的数据收集到一个数组中rxBits_hdl = outframes_logdata (:);
%检查位不匹配的个数numBitsDiff = sum(rxBits_hdl ~= rxBits);流([“nLTE Turbo Decoder: Behavioral and”...'HDL模拟相差%d位\n\n'],numBitsDiff);

生成HDL代码并验证其行为

一旦你的设计在模拟中工作,你可以使用HDL Coder™生成HDL代码对于LTE-Turbo解码器子系统。使用HDL验证程序™ 产生SystemVerilog DPI测试台(高密度脂蛋白编码器)或运行FPGA-in-the-Loop

makehdl ([modelname“/LTE Turbo解码器”])%生成HDL代码makehdltb([modelname“/LTE Turbo解码器”])生成HDL测试平台

另见

功能

相关实例

更多关于