Operator Library: Memory
FrameMemoryRandomRd(帧内存随机读取)算子可在内存中缓冲图像并支持随机读取访问。 帧数据通过链路 I 传输到算子中。 通过将地址传输到端口 RColA(读取列地址)和 RRowA(读取行地址),可以对数据进行随机读取。 算子将使用这些地址根据给定坐标读取帧数据。 生成的输出帧将具有与地址输入相同的图像尺寸。
所需的内存大小由输入帧的图像尺寸(Max. Img Width 和 Max. Img Height)决定。
有关 operator 延迟的信息,请参见 Table 46, 'Individual Latencies of the Operators in Library Memory'。
该算子可以采用两种变体来实现。 即单缓冲区实现和双缓冲区实现。 第一种实现方式可节省 RAM,但不允许写入和读取在时间上重叠。 因此,地址输入链路 RColA 和 RRowA 在写入状态下会停止。 后一种实现方式使 RAM 容量翻倍,允许在输入链路 I 接收下一帧的同时,对上一帧进行随机读取。
该算子有两个状态:
-
写入状态: 链路 I 的像素以线性方式存储在缓冲区中,即像素的坐标构成缓冲区中的地址。
-
读取状态:使用在输入端 RColA 和 RRowA 提供的地址读出内存。 地址数量和地址链路图像尺寸决定了图像输出的宽度和高度。 例如,如果在地址输入端输入仅包含一个像素的帧, 则输出帧将仅包含一个像素。输入帧的其他像素将被丢弃。
图像数据输入和地址输入彼此异步。 它们的图像尺寸可能不同。 两个地址输入 RColA 和 RRowA 必须是 O-synchronous。
请注意输入链路的时序。 如果没有进行缓冲,地址输入不得由与数据链路输入 I 相同的算子提供源。 这是因为在将图像数据写入算子时,无法接受用于读取当前帧的地址。 只有当帧完全存储到缓冲区中后,才能接受地址。 在许多情况下,算子 CreateBlankImage 用于为地址生成图像。
时序如下图所示。

该算子使用 FPGA 的内部块 RAM Memory。 因此,不使用类型为 RAM 的 VisualApplets 采集卡资源。 FPGA 内部块 RAM 是有限的。完整分辨率的帧可能无法放入 FPGA 内部块 RAM 中。 请考虑改用算子 FrameBufferRandomRead。
算子限制
-
不支持空帧。
-
不支持具有不同行长的图像。
| Property | 值 |
|---|---|
| Operator Type | M |
| 输入链路 | I,图像数据输入 RColA,I 处像素的读取列地址 RRowA,I 处像素的读取行地址 |
| Output Link | O,数据输入 |
同步和异步输入
- 同步组:RColA 和 RRowA
- 输入 I 与该组异步。
| 实现 | |
|---|---|
| 键入 | static 参数 |
| 默认 | SingleBuffer |
| 范围 | {SingleBuffer, DoubleBuffer} |
|
该参数用于选择 FrameMemoryRandomRd 的实现方式(参见上文)。 |
|
以下示例展示了 FrameMemoryRandomRd 算子的用法:
-
示例 - Histogram Equalization
-
'Functional Example for Specific Operators of Library Memory and Library Signal'
示例 - 演示如何使用该算子






上一页

