主要内容

FPGA-in-the-Loop

fpga -in- loop (FIL)使您能够运行Simulink金宝app®与运行在Intel上的HDL设计同步的仿真®或Xilinx®FPGA板。模拟器和电路板之间的这种链接使您能够直接对照Simulink或MATLAB验证HDL实现金宝app®算法。您可以将来自这些算法的真实数据和测试场景应用到FPGA上的HDL设计。

在模拟Wireless HDL Toolbox™块时,必须使用流示例接口。流示例数据虽然是通信系统硬件实现所必需的,但在使用Simulink的fpga在环接口时非常耗时。金宝app

你可以在Simulink或MATLAB中从坐标系转换为样本,再从样本转换为坐标系。金宝app根据您的工作流程,您可以通过以下两种方式之一优化fpga在环模拟。

其中一个工作流是从MATLAB中导入金宝app框架数据的Simulink模型。这种类型的模型然后使用帧到样本而且帧样本块来转换数据格式。对于fpga在环,将这些转换块替换为FIL帧到样品而且FIL样本到框架块。

另一个工作流是从MATLAB中导入流数据的Sim金宝appulink模型。这种类型的模型与MATLAB脚本一起使用whdlFrameToSamples而且whdlSamplesToFrames功能。对于fpga在环,修改您的脚本和Simulink模型,以便它们将数据向量传递到fpga在环金宝app接口。

在Simulink中为FIL目标生成编程文件时,该工具将创建一个模型,以将FIL模拟与Simulink设计进行比较金宝app。对于无线HDL工具箱设计,该模型中的FIL块复制样本流接口,并一次向FPGA发送一个样本。这两种修改构造的向量都能更有效地利用Simulink模型和FPGA板之间的接口。金宝app

下面的说明说明如何修改fpga在环模型验证Turbo解码器与流数据从MATLAB而且用MATLAB的框架数据验证Turbo解码器工作流实例。

FIL工作流程:MATLAB框架数据

自动生成的FIL模型

生成的模型,包括与FPGA板接口的FIL块,显示了在Simulink中转换为流样本的模型。金宝app如果每个示例由多个值表示,则这些值将被平摊到用于FIL的单独端口中。

蓝色的ToFILSrc子系统的样本流输入进行分支高密度脂蛋白算法块到FromFILSrc子系统。蓝色的ToFILSink子系统的样本流输出进行分支高密度脂蛋白算法进入比较的输出进行比较高密度脂蛋白Algorithm_fil块。这种设置是缓慢的,因为模型只发送一个单一的样本,及其相关的控制信号,在每个包进出FPGA板。

修正的FIL模型

为了提高与FPGA板的通信带宽,需要修改自动生成的模型。修改后的模型使用FIL帧到样品而且FIL样本到框架块每次发送一帧。

要创建修改后的FIL模型:

  1. 删除蓝色子系统,并在框架接口输入端口帧到样本块。

  2. 插入FIL帧到样品高密度脂蛋白Algorithm_fil块。插入FIL样本到框架块后的高密度脂蛋白Algorithm_fil块。

  3. 设置输出帧大小到输入帧大小。

  4. FIL帧到样品而且FIL样本到框架块时,将参数设置为与帧到样本而且帧样本块。

  5. 分支的帧输出帧样本块进行比较。你可以将整个坐标系与a进行比较Diff块。比较validOut信号使用XOR块。

FIL块的输入大小是来自输入数据帧的帧大小。FIL块端口的向量大小不会修改生成的HDL代码。它只影响模拟器和FPGA板之间通信的数据包大小。该改进模型在每个数据包中向FPGA板发送一个完整的帧,显著提高了通信链路的效率。

FIL工作流程:MATLAB数据流

自动生成的FIL模型

生成的模型,包括与FPGA板接口的FIL块,显示了在MATLAB中转换为流样本的模型。如果每个示例由多个值表示,则这些值将被平摊到用于FIL的单独端口中。

蓝色的ToFILSrc子系统的样本流输入进行分支高密度脂蛋白算法块到FromFILSrc子系统。蓝色的ToFILSink子系统的样本流输出进行分支高密度脂蛋白算法进入比较的输出进行比较高密度脂蛋白Algorithm_fil块。这种设置是缓慢的,因为模型只发送一个单一的样本,及其相关的控制信号,在每个包进出FPGA板。

修正的FIL模型

为了提高与FPGA板的通信带宽,可以将生成的FIL块使用不同的型号。替代模型导入和导出扁平化数据的向量。附带的MATLAB脚本重塑输入和输出数据,并根据行为模型验证FIL输出。在MATLAB中重构数据比在Simulink中重构数据更简单,仿真速度更快。金宝app

首先修改附带的MATLAB脚本:

  1. 为FIL模拟选择一个帧大小。这个大小不必与生成的数据中的实际帧大小相匹配。它可以包含您的整个数据集。FIL块将数据划分为最大大小的数据包,用于与FPGA板通信。

    Filframesize = 99;

  2. 将输入帧的单元格数组组合成一个矩阵。

    Allframes = [frames{:}];

  3. 将采样和控制信号压平,以便在FIL块上的每个输入端口都有一个矢量。此模型包括LTE Turbo译码器块,因此输入样本由三个值组成。

    sysIn = allframes(1:3:end);p1In = allframes(2:3:end);p2In = allframes(3:3:end);ctrlstartIn = ctrlIn(1:3:结束);ctrlendIn = ctrlIn(2:3:结束);ctrlvalidIn = ctrlIn(3:3:结束);

  4. 调用FIL模型。

    simTime = size(allframes,1);modelname =“TurboDecoderStreamingFILVectortoSL”;open_system (modelname);sim (modelname);

  5. 类的输入重新塑造输出变量whdlSamplesToFrames函数。重建一个N-by-3控制信号矩阵和样本数据向量。在本例中,输出示例是单个值。如果输出示例有多个值,则构建一个N——- - - - - -SampleSize样本矩阵。

    sampleOut = squeeze(sampleOut_ts.Data);ctrlOut =[挤压(ctrlstartOut_ts.Data)]...挤压(ctrlendOut_ts.Data)...挤压(ctrlvalidOut_ts.Data)];

然后,创建一个Simulink金宝app模型:

  1. 将生成的FIL块复制到一个新模型中。

  2. 配置并连接来自工作空间的信号block为FIL块上的每个输入端口。使用MATLAB脚本中的变量作为参数值。

  3. 设置输出帧大小到所需的FIL帧大小。

  4. 配置并连接到工作空间block为FIL块的每个输出端口。

上指定的帧大小是FIL块上的输入大小信号到工作区块。FIL块端口的向量大小不会修改生成的HDL代码。它只影响模拟器和FPGA板之间通信的数据包大小。该改进模型在每个数据包中向FPGA板发送一个完整的帧,显著提高了通信链路的效率。

相关的话题