Operator Library: Memory
LineMemoryRandomRd(行内存随机读)算子是一个带有随机读取访问权限的小型内存块。可以通过将地址传输到端口 RColA(读列地址)来执行数据的随机读取。算子将使用这些地址根据给定的坐标读取行数据。生成的输出帧将具有与地址输入相同的图像宽度。
有关算子延迟的信息, 请参阅 表 46“Library Memory 中各算子的延迟”。
LineMemoryRandomRd 算子存储传入的图像行并允许随机读取访问。行数据通过链接 I 传输到算子中。
所需的内存大小由输入帧的图像宽度(Max. Img Width)定义。
该算子可以以两种变体实现,即单缓冲区实现和双缓冲区实现。第一种实现节省了 RAM,但不允许写入和读取的时间重叠。因此,地址输入链接 RColA 和 RRowA 在写入状态期间会停止。后一种实现将 RAM 加倍,允许在接收输入链接 I 上的下一帧的同时随机读取上一帧。
该算子有两个状态:
-
写入状态:链接 I 的像素线性存储在缓冲区中,即像素的坐标在缓冲区中构成地址。
-
读取状态:使用输入 RColA 处给定的地址读出内存。地址的数量和地址链接图像宽度定义了图像输出宽度。例如,如果在地址输入端输入仅由一个像素组成的行,则输出帧宽度将仅由一个像素组成。输入行的其他像素将被丢弃。
图像数据输入和地址输入彼此异步。它们可能具有不同的图像尺寸。
请注意输入链接的时序。在没有缓冲的情况下,地址输入不得由与数据链接输入 I 相同的算子提供源。这是因为在将图像数据写入算子时,无法接受用于读取当前帧的地址。只有当帧完全存储在缓冲区中时,才能接受地址。在许多应用中,算子 用于为地址生成图像。
时序显示在下图。

该算子使用 FPGA 内部块 RAM 内存。因此,使用了类型为 RAM 的非 VisualApplets 图像采集卡资源。FPGA 内部块 RAM 是有限的。完整分辨率的帧可能无法放入 FPGA 内部块 RAM 中。请考虑改用算子 FrameBufferRandomRead。
算子限制
-
不支持空帧。
-
不支持具有不同行长的图像。
LineMemoryRandomRd 仿真
有两种方法可以运行 VisualApplets 仿真:基于图像的仿真(在系统设置中:激活 )以及逐行仿真(在系统设置中:激活 )。有关仿真的一般更多信息,请参见 'Simulation'。
-
逐行仿真
在逐行仿真中,逐个处理行。输出行的数量取决于输入链接 I 和 RColA 上的输入行数,以及输入 I 的图像协议。
-
I.Img Protocol = VALT_IMAGE2D:
只有当地址输入 RColA 上有足够的行来处理输入 I 上的整个数据图像时,才会处理输入图像。在此仿真中,地址输入 RColA 上的图像协议将被忽略。如果没有足够的可用地址行,则不处理相应的输入图像,并且不生成输出图像,以避免仿真中出现不完整的帧。此仿真行为与硬件中实际的 LineMemoryRandomRd 行为不同。如上图所示,硬件中的算子逐行处理传入数据。因此,硬件中的任何传入行都会尽快处理,而不管是否有足够的可用地址行来处理整个输入图像。
-
I.Img Protocol = VALT_LINE1D:
输入 I 上的任何传入数据行都会在输入 RColA 上的相应地址行可用时立即处理。在此仿真中,地址输入 RColA 上的图像协议将被忽略。
-
-
基于图像的仿真
输入 I 上的传入数据图像的高度和输入 RColA 上的传入地址图像的高度必须相同。在此仿真中,图像协议被忽略,因为一维链接上的行序列被处理为二维图像。
| Property | 值 |
|---|---|
| Operator Type | M |
| 输入链路 | I,图像数据输入 RColA,I 处像素的读列地址 |
| Output Link | O,数据输入 |
同步和异步输入
- 所有输入彼此异步。
| 实现 | |
|---|---|
| 键入 | static 参数 |
| 默认 | SingleBuffer |
| 范围 | {SingleBuffer, DoubleBuffer} |
|
此参数选择 FrameMemoryRandomRd 的实现(参见上文)。 |
|
以下示例展示了 LineMemoryRandomRd 算子的使用:
-
示例 - Logic Analyzer:一种便捷的类似示波器的信号测量与分析方法。
-
'Functional Example for Specific Operators of Library Memory and Library Signal'
示例 - 演示如何使用该算子




上一页

