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 资源。
该算子有两个状态:
-
写入状态:输入图像存储在缓冲区中。算子的工作方式类似于 FIFO。如果有足够的可用内存,则可以在缓冲区中存储多幅图像。
-
读取状态:图像完全存储在内存中后,使用在输入端 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 以获取有关您各个平台的详细信息。 |
| Property | 值 |
|---|---|
| Operator Type | M |
| 输入链路 | I,图像数据输入 RColA,I 处像素的读取列地址 RRowA,I 处像素的读取行地址 |
| Output Link | O,数据输入 |
同步和异步输入
- 同步组:RColA 和 RRowA
- 输入 I 与该组异步。
|
输入 bit width 的范围是:
输入位宽不得超过本机 ram 数据宽度。有关更多信息,请参阅 Device Resources。 |
|
|
列地址的位宽为: ![]() |
|
|
行地址的位宽为: ![]() |
|
|
为了以高效的方式使用算子,地址端口上的 Parallelism 必须设置为 2。 |
|
|
I.BitWidth x I.Kernel Columns x I.Kernel Rows <= RamDataWidth. |
|
|
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 的使用:
-
“Color Plane Separation Option 5 - Sequential Output with Advances Processing”
颜色平面分离示例。 RGB 输入被拆分为其分量,并通过一个 DMA 通道进行顺序输出。 通过并行字收集相同分量并使用 FrameBufferRandomRead 读取来执行拆分。
-
'使用 FrameBufferRandomRead 进行几何变换'
示例 - 使用 FrameBufferRandomRead 进行几何变换
-
“Geometric Transformation and Distortion Correction”
示例 - 使用 PixelReplicator 进行 Geometric Transformation and Distortion Correction
-
示例 - Distortion Correction
-
示例 - Scaling 线扫描图像
-
示例 - Scaling 线扫描图像
-
示例 - ExposureFusion

![[注意]](../common/images/admon/note.png)








上一页

