主要内容

FPGA-in-the-Loop

FPGA-in-the-loop (FIL)使您能够运行一个模型万博1manbetx®或MATLAB®模拟与HDL设计同步运行在一个FPGA板。这个模拟器和董事会之间的联系使您能够验证HDL实现直接对模型或MATLAB算法。万博1manbetx你可以从这些算法应用实际数据和测试场景的HDL设计FPGA上运行。

在仿真万博1manbetx软件中,您可以使用费尔帧像素费尔像素帧块加速仿真软件和FPGA板之间的通信。万博1manbetx在MATLAB中,您可以修改生成的代码与FPGA板加速沟通。

FPGA-in-the-Loop模拟与视觉HDL工具箱块

这个例子展示了如何修改生成的FPGA-in-the-loop (FIL)模型更有效地模拟视觉HDL工具箱™流媒体协议。

自动生成费尔模型

当你生成一个编程文件费尔目标在仿真软件中,高密度脂蛋白工作流顾问创建一个模型比较费尔模拟与仿真软件的设计。万博1manbetx的细节如何生成费尔构件模型模型,明白了万博1manbetx费尔模拟与高密度脂蛋白工作流仿真软件Advisor万博1manbetx(高密度脂蛋白校验)

为视觉HDL工具箱设计,费尔块在生成的模型复制pixel-streaming接口和发送一个像素FPGA。所示的模型生成模型的例子在仿真软件为HDL设计视频处理算法万博1manbetx

模型的顶部复制你的模型设计。万博1manbetx生成的费尔块底部与FPGA通信。ToFILSrc子系统复制pixel-stream HDL算法的输入块FromFILSrc子系统。ToFILSink子系统pixel-stream HDL算法的输出块复制到比较子系统,它在哪里而HDL Algorithm_fil块的输出。图像和视频处理,这个设置是缓慢的,因为模型只发送一个像素,及其相关的控制信号,在每个数据包的FPGA板。

修改费尔模型像素流

改善通信带宽与FPGA板,您可以使用生成的费尔块与向量输入而不是流。这个例子包含一个模型,FIL万博1manbetxSimulinkWithVHTExample.slx由修改生成的费尔模型。修改后的模型使用费尔帧像素和费尔像素帧块发送一帧生成的费尔块。你不能运行这个模型。你必须创造自己的费尔块和比特流文件,使用你的董事会和连接设置。

从生成的模型转换到修改后的模型:

  1. 删除ToFILSrc, FromFILSrc ToFILSink,比较子系统,并创建一个分支输入帧的像素块的帧。

  2. 插入前的费尔帧像素块高密度脂蛋白Algorithm_fil块。插入费尔像素帧块后HDL Algorithm_fil块。

  3. 分支的帧输出像素帧块进行比较。你可以比较整个帧用Diff块。比较validOut信号使用XOR块。

  4. 在费尔帧像素和费尔像素帧块,设置视频格式参数匹配的视频格式的帧像素和像素帧块。

  5. 设置向量的大小在费尔帧像素和费尔像素帧块框架。费尔像素矢量输出帧的大小必须匹配的大小费尔向量输入像素帧。向量的大小费尔接口不修改生成的HDL代码块。它的数据包大小只影响模拟器和FPGA板之间的沟通。

修改后的模型将整个帧发送给FPGA板在每一个包,显著提高通信链路的效率。

FPGA-in-the-Loop Multipixel流仿真

当使用FPGA-in-the-Loop multipixel流设计,必须把像素的端口为输入和输出向量费尔块。使用选择器块单独的输入像素流进NumPixels向量,并使用向量连接块重组输出向量。

如果每个像素由多个组件费尔帧像素有一个数据块港口/组件和费尔块NumPixels×NumComponents港口。每个组件矩阵分割成NumPixels向量。

这个模型显示了multipixel,单一的组件设计。

Multipixel,单个组件费尔模型

硬件描述语言(VHDL)代码生成,配置参数>HDL代码生成>全局设置>港口,设置Scalarize港口参数DUT的水平

配置参数,开放HDL代码生成>全局设置面板和显示的下拉菜单选项Scalarize端口参数

FPGA-in-the-Loop模拟与视觉HDL工具箱系统对象

这个例子展示了如何修改生成的FPGA-in-the-loop (FIL)脚本的更高效的模拟视觉HDL工具箱™流媒体协议。详情如何生成费尔工件的MATLAB®系统对象™,明白了费尔顾问MATLAB仿真与高密度脂蛋白工作流(高密度脂蛋白校验)

自动生成费尔函数

当你生成一个编程文件费尔目标在MATLAB中,高密度脂蛋白工作流顾问创建一个试验台比较费尔与MATLAB仿真设计。对于视觉HDL工具箱的设计,DUTname_fil功能试验台复制pixel-streaming接口和发送一个像素FPGA。DUTname的名字是HDL代码生成的函数。

这个代码片段从生成的试验台TBname_fil.m,生成的示例脚本在MATLAB Pixel-Streaming设计。生成的代码调用DUTname_fil函数一次每个像素在一个框架。

p = 1: numPixPerFrm [pixOutVec (p), ctrlOutVec (p)] = PixelStreamingDesignHDLDesign_fil (pixInVec (p), ctrlInVec (p));结束

生成的DUTname_fil函数调用HDL-targeted函数。它还称DUTname_sysobj_fil函数,它包含一个连接到FPGA的系统对象。DUTname_fil比较两个函数的输出验证FPGA实现匹配最初的MATLAB的结果。这个片段来自文件DUTname_fil.m

%调用原始的MATLAB函数得到参考信号[ref_pixOut, tmp_ctrlOut] = PixelStreamingDesignHDLDesign (pixIn ctrlIn);
% FPGA-in-the-Loop运行[pixOut, ctrlOut_hStart ctrlOut_hEnd、ctrlOut_vStart ctrlOut_vEnd, ctrlOut_valid]= PixelStreamingDesignHDLDesign_sysobj_fil (pixIn ctrlIn_hStart、ctrlIn_hEnd ctrlIn_vStart, ctrlIn_vEnd, ctrlIn_valid);
%验证FPGA-in-the-Loop输出hdlverifier.assert (pixOut ref_pixOut,“pixOut”);

图像和视频处理,这个设置是缓慢的,因为函数只发送一个像素,及其相关的控制信号,在每个数据包的FPGA板。

修改费尔像素流试验台

改善通信带宽与FPGA板,您可以修改自动生成测试台上,TBname_fil.m。修改后的测试台上直接调用费尔系统对象,一次一个框架。从这些片段PixelStreamingDesignHDLTestBench_fil_frame.m修改脚本,从费尔工件产生的示例脚本在MATLAB Pixel-Streaming设计。你不能运行这个脚本。您必须生成自己的费尔的系统对象,函数,比特流文件,使用你的董事会和连接设置。然后,要么修改版本生成的试验台,或修改该脚本使用您的费尔生成对象。

声明费尔系统生成对象的一个实例。

费尔= class_PixelStreamingDesignHDLDesign_sysobj;

注释掉的遍历像素帧。

% p = 1: numPixPerFrm% (pixOutVec (p)、ctrlOutVec (p)) = PixelStreamingDesignHDLDesign_fil (pixInVec (p), ctrlInVec (p));%结束

用下面的代码替换评论循环。调用一步的方法费尔对象的向量包含整个帧像素的数据和控制信号。分别将每个控制信号传递给对象,作为一个向量的逻辑值。然后,再结合控制信号向量的向量的结构。

[pixOutVec, hStartOut hEndOut、vStartOut vEndOut, validOut] =费尔(pixInVec [ctrlInVec.hStart], [ctrlInVec.hEnd], [ctrlInVec.vStart], [ctrlInVec.vEnd], [ctrlInVec.valid]”);ctrlOutVec = arrayfun (@ (hStart,这个到音速启动,出售,有效)结构(“hStart”hStart,“又”这个,“音速启动”音速启动,“出售”出售,“有效”有效),hStartOut、hEndOut vStartOut、vEndOut validOut);

这些代码更改删除费尔的逐像素的验证结果与MATLAB的结果。可选地,您可以添加一个像素循环调用引用函数,和一帧一帧的比较结果。然而,调用原始的函数引用减缓了模拟。

p = 1: numPixPerFrm [ref_pixOutVec (p), ref_ctrlOutVec (p)] = PixelStreamingDesignHDLDesign (pixInVec (p), ctrlInVec (p));结束

在调用之后费尔对象,比较输出向量。

ref_pixOutVec hdlverifier.assert (pixOutVec ',“pixOut”)hdlverifier.assert ([ctrlOutVec.hStart]、[ref_ctrlOutVec.hStart],“hStart”)hdlverifier.assert ([ctrlOutVec.hEnd]、[ref_ctrlOutVec.hEnd],“又”)hdlverifier.assert ([ctrlOutVec.vStart]、[ref_ctrlOutVec.vStart],“音速启动”)hdlverifier.assert ([ctrlOutVec.vEnd]、[ref_ctrlOutVec.vEnd],“vEnc”)hdlverifier.assert ([ctrlOutVec.valid]、[ref_ctrlOutVec.valid],“有效”)

这个修改试验台整个帧发送给FPGA板在每一个包,显著提高通信链路的效率。

另请参阅

对象

相关的话题