Memory Library

Memory 库包含用于缓冲数据、重新排序数据以及对数据进行随机访问的 operator。 存在许多不同的 operator。 它们各自实现了其专属的内存访问机制。

有关内存元素和延迟的实用指导,请参阅 Memory Elements 教程主题 以及 Latency 教程主题。

这些 operator 使用的是 采集卡 RAM (DRAM)、FPGA 内部块 RAM (BRAM 或 URAM) 还是 FPGA 分布式 RAM (LUT RAM)。 下表概述了各个 operator 所使用的内存类型。

名称 内存类型
CoefficientBuffer 采集卡 RAM (DRAM)
CoefficientBufferMultiRoi 采集卡 RAM (DRAM)
FrameBufferMultiRoi 采集卡 RAM (DRAM)
FrameBufferMultiRoiDyn 采集卡 RAM (DRAM)
FrameBufferRandomRead 采集卡 RAM (DRAM)
FrameMemory FPGA 内部块 RAM
FrameMemoryRandomRd FPGA 内部块 RAM
ImageBuffer 采集卡 RAM (DRAM)
ImageBufferMultiRoI 采集卡 RAM (DRAM)
ImageBufferMultiRoIDyn 采集卡 RAM (DRAM)
ImageBufferSC 采集卡 RAM (DRAM)
ImageBufferSpatial 采集卡 RAM (DRAM)
ImageFifo FPGA 内部 RAM
ImageSequence 采集卡 RAM (DRAM)
KneeLUT FPGA 内部块 RAM
LineBuffer 采集卡 RAM (DRAM)
LineMemory FPGA 内部 RAM
LineMemoryRandomRd FPGA 内部块 RAM
查找表 (LUT) FPGA 内部块 RAM
RamLUT 采集卡 RAM (DRAM)
ROM FPGA 内部块 RAM

表 45. Library Memory 中 operator 的内存类型


即使 operator 使用的是 采集卡 RAM (DRAM),也可能需要额外的 FPGA 内部 RAM 来进行缓冲。

内存 operator 的延迟(即 Latency)取决于 operator 的实现。 某些 operator 只有较短的像素延迟,而其他 operator 则具有行延迟或帧延迟。 下表列出了各个内存 operator 的延迟。

名称 延迟
CoefficientBuffer 无:如果输出未受阻,则将始终输出数据。
CoefficientBufferMultiRoi 无:如果输出未受阻,则将始终输出数据。
FrameBufferMultiRoi 最少 1 帧:在帧已完全写入缓冲区后开始读取。如果输出受阻,operator 会对 输入数据进行缓冲。
FrameBufferMultiRoiDyn 最少 1 帧:在使用坐标输入进行读取时,会在帧已完全写入缓冲区后开始。如果输出受阻, operator 会对输入数据进行缓冲。
FrameBufferRandomRead 最少 1 帧:一旦帧完全写入,便会使用地址输入开始读取。如果输出受阻,operator 会对 输入数据进行缓冲。延迟还取决于是否存在读取地址数据。
FrameMemory 1 帧:在帧已完全写入缓冲区后开始读取。
FrameMemoryRandomRd 1 帧:只有当帧完全写入缓冲区后才能开始读取。延迟取决于读取地址是否存在数据。
ImageBuffer 最少 1 行:当某一行完全写入缓冲区后,输出端立即开始读取该行。如果输出受阻,算子会缓冲输入数据。
ImageBufferMultiRoI 最少 1 帧:在帧已完全写入缓冲区后开始读取。如果输出受阻,operator 会对 输入数据进行缓冲。
ImageBufferMultiRoIDyn 最少 1 帧:在使用坐标输入进行读取时,会在帧已完全写入缓冲区后开始。如果输出受阻, operator 会对输入数据进行缓冲。
ImageBufferSC 最少 1 行:当某一行完全写入缓冲区后,输出端立即开始读取该行。如果输出受阻,算子会缓冲输入数据。
ImageBufferSpatial 最少 1 行:当某一行完全写入缓冲区后,输出端立即开始读取该行。如果输出受阻,算子会缓冲输入数据。
ImageFifo 无延迟。只有在输出受阻时,算子才会缓冲并延迟输入数据。
ImageSequence 最少 SequenceLength 帧:在序列的所有帧都完全写入缓冲区后开始读取。如果输出受阻,算子会缓冲输入数据。
KneeLUT 无延迟
LineBuffer 1 行:当行完全写入缓冲区后开始读取。
LineMemory 1 行:当行完全写入缓冲区后开始读取。
LineMemoryRandomRd 1 行:当行完全写入缓冲区后即可开始读取。延迟取决于读取地址数据的存在情况。
查找表 (LUT) 无延迟
RamLUT 仅有几个时钟周期的延迟。具体取决于地址。
ROM 无延迟

表 46. Library Memory 中各算子的延迟


以下列表总结了 Library Memory 的所有算子

算子名称 简要说明 可用版本
CoefficientBuffer

允许将图像文件从 PC 上传到采集卡,并将其用作图像源。

版本 1.1
CoefficientBufferMultiRoi (imaFlex)

该算子在 采集卡 RAM (DRAM) 中实现了一个缓冲区,可通过其参数使用多个并行图像进行初始化,并读出多个感兴趣区 (ROI)。

Version 3.6
FrameBufferMultiRoi (imaFlex)

在 采集卡 RAM (DRAM) 中缓冲输入图像,并为每个缓冲的图像输出任意数量的 ROI。

版本 3.6
FrameBufferMultiRoiDyn

在 采集卡 RAM (DRAM) 中缓冲输入图像,并为每个缓冲的图像读出多个动态感兴趣区 (ROI)。

版本 3.5
FrameBufferRandomRead

FrameBufferRandomRead 是一个具有随机读访问权限的内存缓冲区。

版本 1.3
FrameBufferRandomRead (imaFlex)

FrameBufferRandomRead (imaFlex) 是用于 imaFlex CXP-12 Quad 和 imaFlex CXP-12 Penta 平台的、具有随机读取访问权限的内存缓冲区。

版本 3.3
FrameMemory

FrameMemory 是一个具有随机写入访问权限的小型内存块。

版本 1.1
FrameMemoryRandomRd

FrameMemoryRandomRd 是一个具有随机读取访问权限的小型内存块。

版本 1.3
ImageBuffer

在带 ROI 选择的 Frame Grabber RAM (DRAM) 中缓冲图像。

版本 1.1
ImageBufferMultiRoI

在 Frame Grabber RAM (DRAM) 中缓冲输入图像流,并从每幅输入图像中输出任意数量的 ROI。

版本 1.1
ImageBufferMultiRoIDyn

在 Frame Grabber RAM (DRAM) 中缓冲输入图像,并将每幅图像中的任意数量的动态 ROI 传输出来。

版本 1.1
ImageBufferSC

在带有传感器校正和 ROI 选择的 Frame Grabber RAM (DRAM) 中缓冲图像。

版本 1.1
ImageFifo

在 FPGA 内部 RAM 中缓冲有限数量的像素。

版本 1.1
KneeLUT

通过一系列节点来实现查找表的近似值。

版本 1.1
LineBuffer (imaFlex)

在支持感兴趣区域 (ROI) 的 Frame Grabber RAM (DRAM) 中逐行缓冲图像数据。此 Operator 仅适用于 imaFlex CXP-12 Quad 和 imaFlex CXP-12 Penta 平台。

版本 3.3
LineMemory

LineMemory 是一个具有随机写入访问权限的小型内存块。

版本 1.1
LineMemoryRandomRd

LineMemoryRandomRd 是一个具有随机读取访问权限的小型内存块。

版本 1.3
查找表 (LUT)

实现动态内容的查找表。

版本 1.1
RamLUT

基于 FPGA 外部 RAM(即 Frame Grabber RAM (DRAM))实现动态内容的大型查找表。

版本 1.3
RamLUT (imaFlex)

基于 FPGA 外部 RAM 实现动态内容的大型查找表。

版本 3.3
ROM

实现动态内容的查找表。

版本 1.1

表 47. Library Memory 的 Operator