主要内容

流数据从软件到硬件

这个例子展示了如何设计一个嵌入式处理器的数据通路(FPGA)使用硬件逻辑SoC Blockset™。设计和模拟整个应用程序由FPGA和处理器的算法,内存接口和任务调度来满足系统需求。然后,验证硬件设计的生成代码模型和实现SoC (SoC)设备。

万博1manbetx支持硬件平台:

  • Xilinx®Zynq®ZC706评估工具

  • Xilinx Zynq UltraScale™+ MPSoC ZCU102评估工具

  • Xilinx Zynq UltraScale™+ RFSoC ZCU111评估工具

  • ZedBoard™zynq - 7000开发板

  • 阿尔特拉®气旋®V SoC开发工具包

  • 阿尔特拉Arria®10 SoC开发工具包

设计任务和系统需求

在这个例子中,嵌入式处理器发送测试数据或高或低频率正弦信号的FPGA。FPGA算法检测信号的频率过滤和点亮一个发光二极管(LED)检测。这个示例模型数据路径相似流数据从硬件到软件的例子。在本例中,数据流是逆转而流数据从硬件到软件的例子。

这些性能需求的应用程序。

  • 吞吐量:每秒10 e6样本

  • 最大延迟:10 ms

  • 数据流:连续

设计采用SoC Blockset

创建SoC模型soc_swhw_stream_top使用模板流处理器和FPGA模板。模型包括FPGA模型soc_swhw_stream_fpga和处理器模型soc_swhw_stream_proc实例化模型引用。模型还包括软件顶部AXI4-Stream块模型共享FPGA之间的外部存储器和处理器。

设计来满足延迟的要求:首先几个潜在的帧大小和计算每一帧的帧周期尺寸在表1。两个连续帧之间的帧的时间内从处理器的FPGA。对于这个示例,FPGA输出样本时间1/10e6,或1 e - FPGA算法运行10 MHz。计算帧周期

FramePeriod =当前帧大小* FPGAOutputSampleTime美元

记忆的延迟是由于样品的时间帧缓冲区和FPGA先进先出的队列。选择FPGA FIFO大小,这样它相当于一帧缓冲区的大小。留在最大延迟的要求,计算每一帧的帧缓冲区的数量大小,这样:

美元(NumFrameBuffers + 1) * FramePeriod < = MaxLatency $

这个例子的最大允许延迟时间是10 ms。计算最大帧缓冲区的所有情况下表所示。由于缓冲区的数量占最大延迟的要求,所有的情况下满足延迟的要求。

数量的缓冲区的范围是由内存架构约束。帧缓冲区所允许的最大数量的软件直接内存访问(DMA)司机是64。帧缓冲区的最小数量是3。而处理器写一帧缓冲区,FPGA读取来自另一个帧缓冲。因此,数量的帧缓冲区的范围是:

< = 3美元NumFrameBuffers < = 64美元

案例# 5和# 6违反最低缓冲要求。

设计来满足吞吐量的要求:平均而言,软件处理帧时间内必须完成。如果没有,软件任务不生成数据足够快的消费由FPGA,违反了吞吐量的需求。即。

美元FramePeriod & # 62;MeanTaskDuration美元

各种方式获取存在意味着任务持续时间对应帧大小的算法。这些概念的任务执行的例子。意味着任务的持续时间捕获各种帧大小如下表2。因为平均任务持续时间大于计算框架,案例# 1和# 2违反吞吐量要求。

设计来满足数据连续性的要求:为了满足数据连续性要求,填写的帧缓冲区内存(启动)开始前流数据。由于处理器执行临时中断发生时,仔细地填补帧缓冲区的数据可用了。在启动是通过设计软件逻辑soc_swhw_stream_proc /作家/启动生成一个子系统streamEnable命令FPGA开始流媒体数据在内存几乎是完整的。

因为任务的持续时间可能会有所不同,原因有很多,如不同的代码执行路径和操作系统开关时间的变化,软件任务可能不提供数据通过共享内存FPGA。这可能导致数据丢失的连续性。指定的任务执行时间及其统计分布在任务管理器的面具,然后模拟来验证是否满足这个需求。

默认情况下,模型配置了默认情况下# 3参数。模拟模型顶部,并点击数据检查模拟选项卡。添加bufAvail信号在顶视图。在这种情况下,可用软件缓冲信号不会降至零,和validDropLED在模型顶部不点亮,表明连续数据流。

案例# 4的模型设置为在这段代码中,再次模拟模型。

soc_swhw_stream_set_parameters (4);% # 4行

在这种情况下,可用软件缓冲区降至零,和validDropLED在模型顶部灯光。

案例# 4违反数据连续性的要求。案例# 3是被证明是最优,满足所有的设计要求。表3显示了更新后的结果。

运行soc_swhw_stream_set_parameters (3)命令恢复模型与案例# 3参数模型的部署之前。

实现和硬件上运行模型

这些产品都是s manbetx 845需要这部分:

  • 高密度脂蛋白编码器™

  • 嵌入式编码器®

  • SoC Blockset 万博1manbetxXilinx设备支持包,或者SoC Blockset为英特尔设备支持包

关于支持包的更多信息,请参阅万博1manbetxSoC Blockset支万博1manbetx持硬件

实现模型支持的SoC板上使用万博1manbetxSoC建设者工具。默认情况下,模型上实现Xilinx Zynq ZC706评估工具因为它是配置了董事会。打开SoC建设者,点击配置、构建和部署在将来发布按钮,遵循这些步骤:

  1. 设置屏幕上,选择构建模型。点击下一个

  2. 选择构建操作屏幕上,选择为外部模式构建和负载。点击下一个

  3. 选择项目文件夹屏幕上,指定项目文件夹。点击下一个

  4. 检查硬件映射屏幕上,单击下一个

  5. 检查内存映射点击屏幕,查看内存映射查看/编辑。点击下一个

  6. 验证模型屏幕,检查模型的兼容性实现点击验证。点击下一个

  7. 构建模型通过点击屏幕,开始建立模型构建。外部壳打开当FPGA合成开始。点击下一个

  8. 连接硬件屏幕上,与SoC测试主机的连接板通过点击测试连接。去运行应用程序屏幕上,单击下一个

FPGA合成往往超过30分钟才能完成。为了节省时间,您可以使用所提供的pregenerated比特流遵循这些步骤。

  • 关闭外部shell终止合成。

  • pregenerated比特流复制到项目文件夹中运行拷贝文件下面的命令。

拷贝文件(fullfile (matlabshared.sup万博1manbetxportpkg.getSupportPackageRoot,“工具箱”,“soc”,“万博1manbetxsupportpackages”,“xilinxsoc”,“xilinxsocexamples”,“比特流”,“soc_swhw_stream_top-zc706.bit”),”。/ soc_prj ');

% *点击加载并运行加载pregenerated比特流和开放生成的软件模型soc_swhw_stream_top_sw

加载比特流后,运行生成的软件模型soc_swhw_stream_top_sw在外部模式通过点击监视和优化在将来发布。这将点燃LED2董事会,表明FPGA的高频信号的检测。改变正弦信号的频率信号在运行时动态地替换SourceSelector终结者块以一个恒定的块,然后再次运行该模型在外部模式。修改定值从0到1改变信号的频率从高到低分别。

实现在其他董事会:实现模型支持董事会除了ZC706,首先配置模型来支持董事会万博1manbetx,然后设置参数的例子如下。

  • 在仿真软件®将万博1manbetx来发布的系统芯片选项卡,打开配置参数窗口点击硬件设置

  • 在配置参数窗口中,硬件实现,选择你的董事会硬件板下拉列表顶部和处理器模式。

  • 硬件板设置部分,扩大目标硬件资源。下,点击FPGA设计(顶级)。指定IP核心的时钟频率(MHz)作为10

接下来,打开SoC建设者和遵循相同的步骤Xilinx Zynq ZC706董事会。修改拷贝文件命令匹配相对应的比特流你的董事会。在阿尔特拉Arria®10 SoC开发工具包,阿尔特拉气旋®V SoC开发工具包使用下面拷贝文件命令对应你的董事会。在阿尔特拉Arria®10 SoC开发工具包,.periph副本”。rbf’和‘.core。rbf的文件。

拷贝文件(fullfile (matlabshared.sup万博1manbetxportpkg.getSupportPackageRoot,“工具箱”,“soc”,“万博1manbetxsupportpackages”,“intelsoc”,“intelsocexamples”,“比特流”,“soc_swhw_stream_top-c5soc.rbf”),”。/ soc_prj ');

以下是可用的预生成的位流文件:

  • “soc_swhw_stream_top-zc706.bit”

  • “soc_swhw_stream_top-zedboard.bit”

  • “soc_swhw_stream_top-zcu102.bit”

  • “soc_swhw_stream_top-XilinxZynqUltraScale_RFSoCZCU111EvaluationKit.bit”

  • “soc_swhw_stream_top-c5soc.rbf”

  • “soc_swhw_stream_top-a10soc.periph.rbf”

  • “soc_swhw_stream_top-a10soc.core.rbf”

总之,这个例子展示了如何设计连续流处理器FPGA的数据通路。你设计和建模的行为使用SoC Blockset和经历了SoC设备上实现它所需的工作流。

另请参阅