Operator LineMemoryRandomRd

Operator Library: Memory

LineMemoryRandomRd(行内存随机读)算子是一个带有随机读取访问权限的小型内存块。可以通过将地址传输到端口 RColA(读列地址)来执行数据的随机读取。算子将使用这些地址根据给定的坐标读取行数据。生成的输出帧将具有与地址输入相同的图像宽度。

有关算子延迟的信息, 请参阅 表 46“Library Memory 中各算子的延迟”。

LineMemoryRandomRd 算子存储传入的图像行并允许随机读取访问。行数据通过链接 I 传输到算子中。

所需的内存大小由输入帧的图像宽度(Max. Img Width)定义。

该算子可以以两种变体实现,即单缓冲区实现和双缓冲区实现。第一种实现节省了 RAM,但不允许写入和读取的时间重叠。因此,地址输入链接 RColA 和 RRowA 在写入状态期间会停止。后一种实现将 RAM 加倍,允许在接收输入链接 I 上的下一帧的同时随机读取上一帧。

该算子有两个状态:

  1. 写入状态:链接 I 的像素线性存储在缓冲区中,即像素的坐标在缓冲区中构成地址。

  2. 读取状态:使用输入 RColA 处给定的地址读出内存。地址的数量和地址链接图像宽度定义了图像输出宽度。例如,如果在地址输入端输入仅由一个像素组成的行,则输出帧宽度将仅由一个像素组成。输入行的其他像素将被丢弃。

图像数据输入和地址输入彼此异步。它们可能具有不同的图像尺寸。

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

时序显示在下图。

该算子使用 FPGA 内部块 RAM 内存。因此,使用了类型为 RAM 的非 VisualApplets 图像采集卡资源。FPGA 内部块 RAM 是有限的。完整分辨率的帧可能无法放入 FPGA 内部块 RAM 中。请考虑改用算子 FrameBufferRandomRead。

算子限制

  • 不支持空帧。

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

LineMemoryRandomRd 仿真

有两种方法可以运行 VisualApplets 仿真:基于图像的仿真(在系统设置中:激活 Simulate data flow synchronization)以及逐行仿真(在系统设置中:激活 Simulate 1D line by line)。有关仿真的一般更多信息,请参见 'Simulation'。

  • 逐行仿真

    在逐行仿真中,逐个处理行。输出行的数量取决于输入链接 I 和 RColA 上的输入行数,以及输入 I 的图像协议。

    • I.Img Protocol = VALT_IMAGE2D:

      只有当地址输入 RColA 上有足够的行来处理输入 I 上的整个数据图像时,才会处理输入图像。在此仿真中,地址输入 RColA 上的图像协议将被忽略。如果没有足够的可用地址行,则不处理相应的输入图像,并且不生成输出图像,以避免仿真中出现不完整的帧。此仿真行为与硬件中实际的 LineMemoryRandomRd 行为不同。如上图所示,硬件中的算子逐行处理传入数据。因此,硬件中的任何传入行都会尽快处理,而不管是否有足够的可用地址行来处理整个输入图像。

    • I.Img Protocol = VALT_LINE1D:

      输入 I 上的任何传入数据行都会在输入 RColA 上的相应地址行可用时立即处理。在此仿真中,地址输入 RColA 上的图像协议将被忽略。

  • 基于图像的仿真

    输入 I 上的传入数据图像的高度和输入 RColA 上的传入地址图像的高度必须相同。在此仿真中,图像协议被忽略,因为一维链接上的行序列被处理为二维图像。

I/O Property

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

同步和异步输入

  • 所有输入彼此异步。

Supported Link Format

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

1

对于无符号输入,输入 bit width 的范围是 [1, 64]。对于有符号输入,范围是 [2, 64]。对于无符号彩色输入,范围是 [3, 63],对于有符号彩色输入,范围是 [6, 63]。

2

行地址的位宽为:

参数

实现
键入 static 参数
默认 SingleBuffer
范围 {SingleBuffer, DoubleBuffer}

此参数选择 FrameMemoryRandomRd 的实现(参见上文)。

使用示例

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