所有平台的通用接口

您可以定义 VA IP 核的接口数量和类型(如 'Defining the IP Core Properties' 中所述)。

不过,所有平台都有两个相同的接口:时钟接口和寄存器从接口。在您实际开始 Fill 硬件描述文件之前,将在此处对这些接口进行说明。

时钟接口

在硬件中,您需要向 IP 核提供两个时钟输入:iDesignClk 和 iDesignClk2x。这类时钟信号通常可以使用 FPGA 的数字时钟管理器(由您控制)非常轻松地生成。

这些时钟必须满足以下要求:

  • 保持相位同步

  • 频率比为 2,其中 iDesignClk2x 较快。

时钟输入对设计速度的影响:所有运算符VisualApplets 设计工作与iDesignClk的发展趋势同步。

在 IP 核定义期间 eVA Designer您将为 IP 核设置允许的频率范围限制(即,对于 iDesignClk(如第 节所述) 正在输入FPGA详细信息步骤 3)。此信息提供给VisualApplets在设计过程中VisualApplets , 这VisualApplets 用户选择目标频率(对于 iDesignClk在允许的范围内。此信息将用于综合和实现:综合之后VisualApplets 设计中,目标频率存储在…… *.hap 文件(其中也包含合成的FPGA比特流)。运行时系统包含一个用于从该文件中获取目标设计频率的函数。 *.hap 文件。

寄存器从接口

VA IP 核的寄存器从接口是一个简单的寄存器接口,由与设计时钟同步的地址、数据和控制信号控制。

动态设计参数(即图像应用程序中运算符实例的动态参数)通过寄存器从接口进行通信。该接口提供读取和写入操作。

注册接口具有以下属性:

  • I/O 与时钟iDesignClk同步。

  • 复位信号和使能信号对寄存器值没有影响。

  • 数据宽度为 32 位。

  • 接口的地址宽度为 16 位。

  • 读写操作可以同时进行。

  • 通过寄存器接口访问的寄存器宽度可以是 1 到 64 之间的任意值。从接口数据宽度与实际寄存器宽度之间的映射关系如下: VisualApplets 参数分配是自动完成的。当参数寄存器的宽度大于寄存器接口的宽度时,运行时软件会自动分割访问。此时,单个参数会占用多个寄存器地址。

 

寄存器接口的端口

图 192:寄存器接口的端口


上图显示了与寄存器接口相关的端口。

写入:写入通信协议基于写入地址 ivRegWrAddr、写入数据 ivRegWrData 和写入选通信号 iRegWrValid。任何对高电平有效信号 iRegWrValid 的置位操作都会启动对地址为 ivRegWrAddr 的 VisualApplets 寄存器的单次写入访问。写入访问可以在随后的时钟周期内进行,因此允许隐式突发(burst)。

读取:读取通信协议基于读取地址 ivRegRdAddr、读取选通信号 iRegRdValid 以及读取数据的有效信号 oRegRdDataValid,数据随后在端口 ovRegRdData 上输出。任何对高电平有效信号 iRegRdValid 的置位操作都会启动对地址为 ivRegRdAddr 的 VisualApplets 寄存器的单次读取访问。返回的输出值的延迟可能取决于 eVA IP Core 和 VisualApplets 设计的配置。

当在硬件平台的 VA IP Core 中运行 VisualApplets 设计时,可以通过 VisualApplets 运行时软件接口访问这些参数。

VisualApplets 支持在运行时访问设计参数的不同模型:

  • 使用基于 HAP 文件的 eVA 运行时环境此方法非常类似于来自 Basler 的采集卡的运行时接口。HAP 文件包含轻松访问设计特定参数所需的所有信息。提供了一个运行时软件 API,可以加载 HAP 文件、提取 FPGA 配置数据并提供对设计参数的访问。

  • 使用基于生成的 GenICam XML 代码的 GenICam API当目标平台通过兼容 GenICam 的接口连接到软件时,此选项允许将图像处理参数无缝集成到 GenICam API 中。不需要任何额外的软件组件。

  • 使用由 VisualApplets 生成的通用的、设计特定的 C API 代码生成的代码是平台无关的 ANSI-C 代码。用于通过 VA IP Core 寄存器从机进行读写访问的回调函数在启动时注册。然后,代码提供对按名称寻址的参数的访问,其中转换函数通过回调函数触发通信。这种方法非常适合嵌入式系统(例如 Zynq7000)中的软件集成。

[注意] 运行时接口文件的自动生成

设计特定的运行时接口文件由 VisualApplets 自动生成(适用于所有三种访问模型)。

运行时软件接口的选项在 “运行时软件接口” 中进行了详细描述。

复位和使能

VA IP Core 还使用寄存器从机接口来控制 Reset 和 Enable 信号,而不是为此目的使用专用端口。通过这种方式,Reset 和 Enable 由运行时软件在用户控制之下,并且可以分别控制数量在先验上未知的进程。

Reset 和 Enable 信号与 VA IP Core 设计的交互如下:

  • 每个进程都有自己的 Reset 和 Enable 信号(高电平有效),这些信号由 1 位寄存器设置。

  • 置位 Reset 会将整个进程置于其初始状态。

  • 置位 Enable 会开始处理。

  • 取消激活 Enable 会停止处理。当 Enable=0 时,不读取输入 FIFO。对于输出 FIFO,根据图像处理流水线的状态,在取消置位 Enable 后,某些数据可能仍会写入其中,但流控制可确保安全地防止任何 FIFO 内容损坏。

  • 仅当 Enable=0 时才可以置位 Reset。

  • Reset 将清空所有 FIFO。

  • Enable 对任何具有 FIFO 接口的硬件特定算子都有影响。

  • Reset 和 Enable 对算子的参数没有影响。

  • Reset 和 Enable 对 GPIO 端口没有影响。

  • 对于 IP 核的任何 ImgIn 和 ImgOut 接口,都有输出端口 ResetO 和 EnableO。这些输出连接到使用该接口的进程的相应 Reset 和 Enable 信号。因此,连接到相关接口的任何逻辑都能够在重置和禁用状态期间执行适当的操作。

  • 取消置位 Enable 后,设计需要在再次启用之前进行重置。设置 Enable = 0 随后设置 Enable = 1 而不置位 Reset 可能会导致某些 VisualApplets 设计出现不可预测的行为。

进程的推荐 START(启动)步骤:

  1. 发送 Reset。

  2. 置位 Enable。

推荐_process的 STOP 步骤:

  1. 取消激活 Enable。

  2. 发送 Reset。

对任何平台特定算子的 FIFO 的任何读写访问均由相关 process 的 Enable 信号启用(由于流控,会产生一些与设计相关的延迟)。此外,process 的 Reset 信号连接到与该 process 相关联的任何 I/O FIFO 的复位端口。