FrameBufferRandomRead 算子

Operator Library: Memory

该算子有助于对缓冲数据进行随机读取。帧数据通过链接 I 传输到算子中。可以通过将地址传输到端口 RColA(读取列地址)和 RRowA(读取行地址)来执行数据的随机读取。算子将使用这些地址根据给定坐标读取帧数据。生成的输出帧将具有地址输入端的图像尺寸。需要一个类型为 RAM 的 VisualApplets 资源。有关更多信息,请参阅 'Allocation of Device Resources'。有关算子延迟的信息,请参阅 Table 46, 'Individual Latencies of the Operators in Library Memory'。

FrameBufferRandomRead(帧缓冲区随机读取)算子将图像流缓存在 Frame Grabber RAM (DRAM) 中。需要一个类型为 RAM 的 VisualApplets 资源。

该算子有两个状态:

  1. 写入状态:输入图像存储在缓冲区中。算子的工作方式类似于 FIFO。如果有足够的可用内存,则可以在缓冲区中存储多幅图像。

  2. 读取状态:图像完全存储在内存中后,使用在输入端 RColA 和 RRowA 处给定的地址对内存进行读出。地址的数量和地址链接图像尺寸定义了图像输出的宽度和高度。

图像数据输入和地址输入彼此异步。它们可以具有不同的图像尺寸。两个地址输入 RColA 和 RRowA 必须是 O 同步的。

请注意输入链接的时序。在没有缓冲的情况下,地址输入不得由与数据链接输入 I 相同的算子提供源。这是因为在将图像数据写入算子的同时,无法接受用于读取当前帧的地址。只有当帧完全存储到缓冲区中时,才能接受地址。在许多情况下,使用 CreateBlankImage 算子来为地址生成图像。

该算子使用大型非 FPGA 内存。如果只需存储小型帧或行,请考虑使用算子 FrameMemoryRandomRd 或 LineMemoryRandomRd。

为了测量缓冲区的 FillLevel,算子提供了 2 个参数:FillLevel 和 Overflow。FillLevel 显示 RAM 的填充百分比。当 FillLevel 接近或达到 100% 并且要存储在缓冲区中的下一幅图像将超过 RAM 容量时,Overflow 参数设置为 1。如果发生溢出,输入帧将被丢弃。用户必须轮询溢出参数。由于溢出状态的持续时间可能非常短,因此它可能介于算子的轮询周期之间。

参数 InfiniteSource 用于指定算子是直接连接到相机还是与其它内存算子串联。有关更多信息,请参阅 'Infinite Sources / Connecting Cameras'。

算子限制

  • 不支持空帧。

  • 不支持具有不同行长的图像。

  • 地址端口上的 Parallelism 必须设置为 2。

  • I.MaxImgWidth * I.MaxImgHeight 不得超过可用的 RAM 大小:2^RamAddressWidth。

带宽优化

流经使用 采集卡 RAM (DRAM) 的算子的理论带宽 [bits/second] 根据以下公式计算:

然而,由于 DRAM 效率的限制,实际带宽总是小于理论带宽。

当 Bit Width 和 Parallelism 的乘积等于内部 RAM Port Width 时,通过算子的 maximum bandwidth 将达到最大值。

[注意] 平台特定值

RAM Port Width 和 System Clock 是平台相关的。 请参阅 Device Resources 以获取有关您各个平台的详细信息。

I/O Property

Property 值
Operator Type M
输入链路 I,图像数据输入
RColA,I 处像素的读取列地址
RRowA,I 处像素的读取行地址
Output Link O,数据输入

同步和异步输入

  • 同步组:RColA 和 RRowA
  • 输入 I 与该组异步。

Supported Link Format

Link Parameter Input Link I 输入链接 RColA 输入链接 RRowA Output Link O
Bit Width [1, 64]1 auto2 auto3 as I
Arithmetic {unsigned, signed} unsigned unsigned as I
Parallelism 1 {1, 2}4 与 RColA 相同 as I
Kernel Columns [1, Ram Data Width / Bit Width / Kernel Rows]5 1 1 as I
Kernel Rows [1, Ram Data Width / Bit Width / Kernel Columns]5 1 1 as I
Img Protocol VALT_IMAGE2D as I as I as I
Color Format any VAF_GRAY VAF_GRAY as I
Color Flavor any FL_NONE FL_NONE as I
Max. Img Width any6 any 与 RColA 相同 与 RColA 相同
Max. Img Height any6 any 与 RColA 相同 与 RColA 相同

1

输入 bit width 的范围是:

  • 对于无符号输入:[1, 64]

  • 对于有符号输入:[2, 64]

  • 对于无符号彩色输入:[3, 63]

  • 对于有符号彩色输入:[6, 63]。

输入位宽不得超过本机 ram 数据宽度。有关更多信息,请参阅 Device Resources。

2

列地址的位宽为:

3

行地址的位宽为:

4

为了以高效的方式使用算子,地址端口上的 Parallelism 必须设置为 2。

5

I.BitWidth x I.Kernel Columns x I.Kernel Rows <= RamDataWidth.

6

I.MaxImgWidth * I.MaxImgHeight 不得超过可用的 RAM 大小:2^RamAddressWidth。

参数

RamDataWidth
键入 静态写参数
默认 不适用
范围 整型数字

此参数提供可在 RAM 接口处使用的数据位数。它是输入和输出的最大位数。

RamAddressWidth
键入 静态写参数
默认 不适用
范围 整型数字

该参数提供了可用的地址位数。这有助于计算允许的最大图像尺寸和最大地址宽度。

FillLevel
键入 动态只读参数
默认 0
范围 [0%, 100%]

该参数提供 RAM 的 Fill 级别。

Overflow
键入 动态只读参数
默认 0
范围 [0, 1]

此参数表示发生缓冲区溢出。

InfiniteSource
键入 static 参数
默认 ENABLED
范围 {ENABLED, DISABLED}

此参数用于激活对诸如相机等无限源算子(Infinite Source)的支持。有关详细信息,请参阅 'Infinite Sources / Connecting Cameras'。

使用示例

以下示例展示了算子 FrameBufferRandomRead 的使用: