从空白设计到运行 Applet#
关键术语
即使桌面上没有图像采集卡硬件,您也可以按照此学习路径进行学习。您将运行设计、参数设置、设计规则检查和仿真。 VisualApplets 在PC端运行。构建需要FPGA工具链(通常情况下)。 Xilinx 在PC上使用Vivado软件进行测试,无需开发板。Flash /加载和运行时验证需要图像采集卡和运行时软件,例如Basler Framegrabber SDK 。要进行完整的集成测试,还需要图像采集卡和摄像头或其他图像源。
有关同一工作流的分步演练,请参阅用户手册中的 Hardware Applet: From Idea to Application。
有关在 microDisplay X 中设计、构建和使用 Applet 的简短介绍,请参阅用户手册中的 Getting Started。
工作流概述#
从 VisualApplets 设计到运行中的 Applet 的整体工作流如下。
在 PC 上的 VisualApplets 中:
- 设计 Applet。在设计面板中将operators放置为modules,并在它们之间添加links。设置模块和链接 Property。
- 运行DRC 1 级和 2 级以在构建前检查形式正确性并估算 FPGA 资源。当您启动仿真或构建时,DRC 1 级和 2 级也会自动运行。
- 使用 Test Images 仿真设计。仅当 DRC Level 1 报告没有错误时,仿真才会启动。
- 构建硬件 Applet 并生成 *.hap 文件。构建使用 PC 上的 FPGA 工具链。它不需要连接采集卡。
在采集卡和主机上:
- 对于 microEnable 5 系列平台,请将 applet 烧录到板卡。对于 microEnable 6 / imaFlex 板卡,请将 applet 加载到硬件。
- 通过 microDisplay X、Framegrabber SDK 或 pylon 在硬件上使用该 applet。
本教程主要参考 microEnable 5 (mE5) 和 imaFlex 采集卡(CXP-12 Quad/Penta、microEnable 6 系列)。运算符库因平台而异。例如,mE5 设计使用 ImageBuffer 进行 DRAM 行缓冲,而 imaFlex 设计使用 LineBuffer.
关键术语
硬件 Applet 是构建生成且采集卡运行的 *.hap 文件。设计时是指您在 PC 上的 VisualApplets 中编辑 *.vad 项目时。运行时是指主机软件将 Applet 加载到采集卡 FPGA 并采集图像时。VisualApplets 中的仿真不是运行时。
启动新项目#
您完全可以在 VisualApplets 中执行设计阶段。从安装目录的 bin 文件夹中的 VisualApplets.exe、Windows 开始菜单或桌面快捷方式(如果您创建了一个)启动应用程序。
当未加载项目时,主窗口显示一个空白工作区。要启动项目,请单击 File 和 New,或按 Ctrl + n。在 New Project 对话框中,您设置项目名称、目标硬件平台(例如 microEnable 5 marathon VCL)以及目标运行时(例如 Win 64)。
信息
您可以稍后更改这些项目设置,但平台决定了适用的算子库和构建选项,因此切换平台可能需要您替换或重新参数化某些模块。
确认 确定后,VisualApplets 会打开一个空白设计窗口。新设计始终包含两个名为 AppletProperties 和 BoardStatus. AppletProperties 的固定模块,用于设置设计的常规属性(如作者和版本); AppletProperties 还提供对某些硬件平台接口属性的访问权限。 BoardStatus 的固定模块用于在运行时提供 PCIe 接口状态和温度等 Property。 项目信息 选项卡总结了当前项目名称、硬件目标和平台信息。
运算符、模块、链接和管道#
您可以在 VisualApplets 的设计窗口中,使用位于 Operator Library 中的 operators 来设计图像处理 pipeline。将 operator 拖放到图表中即可将其放置。每个放置的实例都是一个 module。module 暴露出 input 和 output ports。将一个 module 的 output port 连接到另一个 module 的 input port 即可创建一个 link。图表将每个 link 显示为一条箭头。module 和 link 共同构成了构建在 FPGA 上的图像处理 pipeline。处理顺序遵循连接顺序。
operator 和 link 都具有诸如尺寸、Bit Width、协议、Parallelism 以及其他设置等 properties。Links 沿连接携带其自身的 properties。您可以编辑哪些 link 字段取决于 upstream operator。不可编辑的 link 字段从 upstream operator 或链中的 link 位置接收其值。此外,规则还会自动在 pipeline 中传播 properties。例如,您只需在相机 output link 上设置某些 properties。它们会一直向下游传播,直到某个 operator 更改它们。双击 link 或 module 以打开并更改其 properties。产品内帮助和 Operator Reference 记录了特定于 operator 的行为。

Basler 建议您定期保存设计,在能提高可读性时重命名 module,并使用 HierarchicalBox 元素来构建大型设计。您可以从安装目录下 Examples 中的示例设计开始。有关指导,请参阅用户手册中的 Processing Examples。
在设计阶段设置参数#
Link properties 描述了图像数据如何沿连接传输。它们涵盖最大图像尺寸、图像协议、Bit Width 和 Parallelism 等设置。较大的最大尺寸和较高的 Parallelism 通常会消耗更多的 FPGA 资源,因此 Basler 建议您仅将这些值设置为应用所需的最高水平。您只能在 VisualApplets 中编辑 link properties,而不能在运行时进行编辑。有关 link properties 的详细描述,请参阅 Parameterization 教程主题。
Module 参数分为 static 或 dynamic。您只能在设计时的 VisualApplets 中更改静态参数。您可以在 VisualApplets 中将动态参数设置为默认值,并且稍后在小程序于采集卡上运行时,可以从主机软件中更改它们。
设计规则检查 (DRC)#
创建设计并设置参数后,Basler 建议您运行 Design Rules Check Level 1 和 Design Rules Check Level 2。选择 Analysis → Design Rules Check Level 1,或 Design Rules Check Level 2,或者点击构建工具栏上的相应图标。
- 启动 Level 2 会自动先运行 Level 1。
- 在 simulation 和 build 之前,也会自动运行 Level 1。有关详细信息,请参阅用户手册中的 Design Rules Check。
DRC Level 1 在 DRC log 中报告正式的设计问题,并在设计窗格中高亮显示受影响的位置。常见问题包括 link 上的 Bit Width 不匹配,以及 ROI 或图像尺寸不一致。在构建硬件 applet 之前,您必须清除 Level 1 errors。
DRC Level 2 运行进一步的检查并 estimates FPGA resource 的使用情况。请将此估算值视为指导原则,而不是精确预测:对于某些 operator,构建过程中的后期逻辑优化可能会改变最终的资源使用情况,因此即使估算值超过 100%,在某些情况下仍然可以成功构建。如果任何资源远超 100%,请简化设计、降低 Parallelism 或图像尺寸,或者选择其他 operator,然后重新运行检查。
下图显示了在没有错误的设计规则检查 Level 1 和 2 之后的典型 DRC log:正式状态以及 LUT、触发器、块 RAM 和 Arithmetic 资源的估计使用情况。

若要查看哪个 module 使用了多少资源,请打开 Analysis → View FPGA Resources。FPGA Resource Estimation 对话框会显示针对 entire design 以及 each module 的估计明细。您可以将表格导出为 CSV。若要仅查看所选 module 的 FPGA 资源,请打开该 module 的上下文菜单并选择 FPGA Resources。另请参阅用户手册中的 FPGA Resource Estimation。
如果 DRC log 报告了问题,请结合 DRC 消息以及高亮显示的 module 或 link 来修复错误。有关更多详细信息,请参阅用户手册中的 Design Rules Check。
链接颜色#
在设计窗格中,red link 高亮显示标记了图像路径上的 formal design errors。在 Link Properties 或 Module Properties 对话框中,标记为红色的 link 还可以提供包含特定错误类型详细信息的工具提示消息。

紫色 高亮显示标记 同步规则违规 分支之间(例如 O 型网络规则)。在将 applet 部署到硬件之前,您必须修复红色错误和紫色同步违规。对于包含信号的处理(即使用以下内容的 link: Image Protocol = VALT_SIGNAL的连线),则允许使用紫色连线。
这些颜色并非整个设计的红绿灯状态。应用属性更改后显示的 Green link 意味着 VisualApplets 已经传播并验证了更新后的 link properties。绿色本身并不意味着设计已准备好构建。请参阅 Propagation of Link Properties 教程主题。

有关 link 规则的更多详细信息,请参阅用户手册中的 Rules of Links 以及 Operator Types and Synchronization 教程主题。
仿真与 DRC#
如果 DRC Level 1 报告了 error,您将无法启动仿真。Warnings(包括同步警告)不会阻止仿真。Red 状态表示错误并会停止仿真。Purple 状态标记同步问题。在这种情况下您仍然可以进行仿真,但在依赖硬件上的 applet 之前,您应该修复这些问题。
即使 DRC Level 1 和 2 在没有错误的情况下完成,simulation 仍可能失败。例如,当加载的图像宽度不是 link parallelism 的整数倍,或者图像超出在 link 上设置的最大图像尺寸时,仿真会失败。若要解决这些问题,请将仿真图像大小与这些约束对齐或调整 link properties。
下图显示了 DRC Level 1 中的错误:

下图显示了 DRC Level 2 中的错误:

仿真#
在设计过程中,仿真功能会将测试图像馈送到流水线中,并允许您在没有硬件的情况下检查中间结果。添加仿真源以注入图像,并添加仿真探针以查看特定链路上的数据。VisualApplets 在 %VASINSTALLDIR%\testimages 下随附了测试图像。您还可以将自己的图像加载到仿真源中。TIFF 是首选格式,但 VisualApplets 也支持加载许多其他常见格式的图像。

当您从 Analysis → Start Simulation 或工具栏控件启动仿真时,VisualApplets 会自动运行 DRC Level 1。Simulation 窗口列出了活动的源和探针,并在下窗格中显示 DRC Level 1 的结果。您不需要运行 DRC Level 2 即可进行仿真,但 Basler 建议您在构建小应用程序之前运行 DRC Level 2,以便获得 FPGA 资源估算值。有关所有进一步的仿真选项、模式和窗口,请参阅《用户手册》中的 Simulation。
您可以在一个仿真会话中运行多个仿真循环:在 Simulation 窗口中,设置 Processing cycles 并单击 Start。如果仿真源仅包含一张图像,VisualApplets 将为每个循环重复使用该图像。如果源包含多张图像,则每个新循环将按顺序使用下一张图像。在最后一张图像之后,序列将从第一张图像重新开始。
对于图像数据路径上的像素值,仿真通常与测试数据的硬件相匹配。在仿真探针中,您可以通过缩放详细检查像素。诸如图像直方图之类的工具可以帮助您解释像素数据。
仿真并不能显示所有的硬件效应。死锁、缓冲区过小、共享 DRAM 带宽限制以及某些溢出情况通常只在采集卡上出现。成功的仿真不能代替硬件上的运行时测试。
构建硬件 Applet#
当您构建设计时,VisualApplets 会将设计转换为 FPGA 比特流,并将其与运行时软件接口的内容打包到一个名为硬件小应用程序的文件中。构建过程需要在构建计算机上安装并配置受支持的 AMD/Xilinx 工具链。请根据您的平台和 VisualApplets 版本使用 Vivado。有关哪些工具链版本与哪些采集卡平台相匹配的概述,请参阅Installing VisualApplets。有关构建硬件小应用程序的详细说明,请参阅《用户手册》中的 Build。
构建持续时间取决于 FPGA 逻辑使用率、硬件目标平台以及设计的复杂性。简单的示例可能在几分钟内完成,而大型设计可能需要数小时。构建成功后,输出的 *.hap 文件通常使用与设计文件相同的基本名称。例如,Sobel_Filter.vad 会生成 Sobel_Filter.hap。
烧录、运行时加载和主机软件#
对于 microEnable 5 系列板卡,您必须使用 microDiagnostics 刷写新小应用程序,以便板卡上的固件分区包含您的 *.hap 文件。对于 microEnable 6 板卡,您可以将小应用程序加载到硬件中。有关如何使用 Framegrabber SDK 的 microDiagnostics 工具将小应用程序刷写或加载到采集卡上的说明,请参阅Managing Applets in microDiagnostics。
要使用构建好的硬件小应用程序,请在 microDisplay X 中打开该小应用程序。microDisplay X 中的参数树反映了设计中的模块名称,因此请在 VisualApplets 中选择清晰的模块名称。动态参数会显示在其中。您可以在采集期间更改某些参数,但其他参数必须在采集开始前进行设置。DMA 维度是一个典型例子。您可以在采集期间更改其他参数,例如阈值。
有关 microDisplay X 的功能和采集行为,请参阅 Framegrabber SDK 文档中的 microDisplay X。
或者,您可以使用 Framegrabber API 将采集和参数控制集成到您自己的应用程序中。VisualApplets 可以通过 Build 和 Generate SDK Example 生成 C++ 示例项目。这些项目包含初始化、内存分配、Fg_setParameterWithType / Fg_getParameterWithType 调用、采集开始和停止以及清理。有关如何生成 SDK 示例的信息,请参阅《用户手册》中的 Framegrabber SDK。
将生成的代码视为起点。在 Framegrabber SDK 文档中查找 API 参考,例如 basler_fg.h 和 Framegrabber API 简介。
设计时与运行时#
在设计时,您可以编辑图形流水线、设置静态和动态参数、定义链路属性、运行 DRC Level 1 和 2 以及进行仿真。每次启动仿真时,VisualApplets 都会自动运行 DRC Level 1。您还可以将构建输出生成为 *.hap 文件。
在 runtime,主机软件加载该小程序,配置 dynamic 参数并启动采集。VisualApplets 设计中定义的模块名称和层次结构也用于参数树和 API 中。一致的命名和文档有助于集成商并简化现场调试。

相关主题#
- VisualApplets Fundamentals 教程主题 — 设计、构建和硬件小应用程序
- Parameterization 教程主题 — 设计时的链路属性和模块参数
- Pipeline Concept 教程主题 — 模块、链路和流水线结构
- Operator Types and Synchronization 教程主题 — 运算符类型和链路颜色
- 用户手册中的 Design Rules Check — DRC Level 1 和 Level 2
- 《用户手册》中的 Simulation — 仿真源、探针和模式
- 《用户手册》中的 Build — 生成硬件小应用程序
- 安装 VisualApplets — Xilinx 工具链版本