Memory Library

Memory 라이브러리에는 데이터 버퍼링, 데이터 재정렬, 데이터 임의 접근을 위한 오퍼레이터가 포함되어 있습니다. 다양한 오퍼레이터가 존재하며, 각각 고유한 메모리 접근 방식을 구현합니다.

메모리 요소 및 레이턴시에 대한 실용적인 지침은 Memory Elements 튜토리얼 항목 and 및 Latency 튜토리얼 항목을 참조하십시오.

오퍼레이터는 frame grabber RAM (DRAM), FPGA 내부 블록 RAM(BRAM 또는 URAM) 또는 FPGA distributed RAM (LUT RAM)을 사용합니다. 다음 표는 개별 오퍼레이터가 사용하는 메모리 유형의 개요를 보여줍니다.

이름 Memory Type
CoefficientBuffer Frame grabber RAM (DRAM)
CoefficientBufferMultiRoi Frame grabber RAM (DRAM)
FrameBufferMultiRoi Frame grabber RAM (DRAM)
FrameBufferMultiRoiDyn Frame grabber RAM (DRAM)
FrameBufferRandomRead Frame grabber RAM (DRAM)
FrameMemory FPGA-internal block RAM
FrameMemoryRandomRd FPGA-internal block RAM
ImageBuffer Frame grabber RAM (DRAM)
ImageBufferMultiRoI Frame grabber RAM (DRAM)
ImageBufferMultiRoIDyn Frame grabber RAM (DRAM)
ImageBufferSC Frame grabber RAM (DRAM)
ImageBufferSpatial Frame grabber RAM (DRAM)
ImageFifo FPGA-internal RAM
ImageSequence Frame grabber RAM (DRAM)
KneeLUT FPGA-internal block RAM
LineBuffer Frame grabber RAM (DRAM)
LineMemory FPGA-internal RAM
LineMemoryRandomRd FPGA-internal block RAM
LUT FPGA-internal block RAM
RamLUT Frame grabber RAM (DRAM)
ROM FPGA-internal block RAM

표 45. Memory 라이브러리 오퍼레이터의 메모리 유형


오퍼레이터가 frame grabber RAM (DRAM)을 사용하는 경우에도 버퍼링을 위해 추가적인 FPGA 내부 RAM이 필요할 수 있습니다.

메모리 오퍼레이터의 지연 시간, 즉 레이턴시는 오퍼레이터 구현에 따라 다릅니다. 일부 오퍼레이터는 짧은 픽셀 지연만 가지지만, 다른 오퍼레이터는 라인 또는 프레임 지연을 가집니다. 다음 표에는 개별 메모리 오퍼레이터의 지연 시간이 나열되어 있습니다.

이름 Latency
CoefficientBuffer 없음: 출력이 차단되지 않은 경우 항상 데이터를 출력합니다.
CoefficientBufferMultiRoi 없음: 출력이 차단되지 않은 경우 항상 데이터를 출력합니다.
FrameBufferMultiRoi 최소 1프레임: 프레임이 버퍼에 완전히 기록된 후에 읽기가 시작됩니다. 출력이 차단된 경우 오퍼레이터는 입력 데이터를 버퍼링합니다.
FrameBufferMultiRoiDyn 최소 1프레임: 좌표 입력을 사용한 읽기는 프레임이 버퍼에 완전히 기록된 후에 시작됩니다. 출력이 차단된 경우, 오퍼레이터는 입력 데이터를 버퍼링합니다.
FrameBufferRandomRead 최소 1프레임: 프레임이 완전히 기록되는 즉시 주소 입력을 사용하여 읽기가 시작됩니다. 출력이 차단된 경우 오퍼레이터는 입력 데이터를 버퍼링합니다. 레이턴시는 읽기 주소 데이터의 존재 여부에도 따라 다릅니다.
FrameMemory 1프레임: 프레임이 버퍼에 완전히 기록된 후에 읽기가 시작됩니다.
FrameMemoryRandomRd 1프레임: 프레임이 버퍼에 완전히 기록된 후에 읽기를 시작할 수 있습니다. 레이턴시는 읽기 주소 데이터의 존재 여부에 따라 다릅니다.
ImageBuffer 최소 1라인: 라인이 버퍼에 완전히 기록되는 즉시 해당 라인의 출력을 읽기 시작합니다. 출력이 차단된 경우 오퍼레이터는 입력 데이터를 버퍼링합니다.
ImageBufferMultiRoI 최소 1프레임: 프레임이 버퍼에 완전히 기록된 후에 읽기가 시작됩니다. 출력이 차단된 경우 오퍼레이터는 입력 데이터를 버퍼링합니다.
ImageBufferMultiRoIDyn 최소 1프레임: 좌표 입력을 사용한 읽기는 프레임이 버퍼에 완전히 기록된 후에 시작됩니다. 출력이 차단된 경우, 오퍼레이터는 입력 데이터를 버퍼링합니다.
ImageBufferSC 최소 1라인: 라인이 버퍼에 완전히 기록되는 즉시 해당 라인의 출력을 읽기 시작합니다. 출력이 차단된 경우 오퍼레이터는 입력 데이터를 버퍼링합니다.
ImageBufferSpatial 최소 1라인: 라인이 버퍼에 완전히 기록되는 즉시 해당 라인의 출력을 읽기 시작합니다. 출력이 차단된 경우 오퍼레이터는 입력 데이터를 버퍼링합니다.
ImageFifo 레이턴시 없음. 출력이 차단된 경우에만 오퍼레이터가 입력 데이터를 버퍼링하고 지연시킵니다.
ImageSequence 최소 SequenceLength 프레임: 시퀀스의 모든 프레임이 버퍼에 완전히 기록된 후에 읽기가 시작됩니다. 출력이 차단된 경우 오퍼레이터는 입력 데이터를 버퍼링합니다.
KneeLUT 레이턴시 없음
LineBuffer 1라인: 라인이 버퍼에 완전히 기록된 후에 읽기가 시작됩니다.
LineMemory 1라인: 라인이 버퍼에 완전히 기록된 후에 읽기가 시작됩니다.
LineMemoryRandomRd 1라인: 라인이 버퍼에 완전히 기록된 후에 읽기를 시작할 수 있습니다. 레이턴시는 읽기 주소 데이터의 존재 여부에 따라 다릅니다.
LUT 레이턴시 없음
RamLUT 몇 클럭 사이클의 레이턴시만 발생합니다. 주소에 따라 다릅니다.
ROM 레이턴시 없음

Table 46. Individual Latencies of the Operators in Library Memory


다음 목록은 Memory 라이브러리의 모든 오퍼레이터를 요약한 것입니다.

오퍼레이터 이름 요약 설명 지원 시작 버전
CoefficientBuffer

PC에서 프레임 그래버로 이미지 파일 업로드를 허용하며, 이를 이미지 소스로 사용합니다.

버전 1.1
CoefficientBufferMultiRoi (imaFlex)

이 오퍼레이터는 매개변수를 통해 여러 병렬 이미지로 초기화할 수 있고 여러 ROI(Region of Interest)를 판독할 수 있는 Frame Grabber RAM (DRAM)에 버퍼를 구현합니다.

Version 3.6
FrameBufferMultiRoi (imaFlex)

Frame Grabber RAM (DRAM)에 입력 이미지를 버퍼링하고 각 버퍼링된 이미지에 대해 임의 개수의 ROI를 출력합니다.

Version 3.6
FrameBufferMultiRoiDyn

Frame Grabber RAM (DRAM)에 입력 이미지를 버퍼링하고 각 버퍼링된 이미지에 대해 여러 개의 동적 ROI(Region of Interest)를 판독합니다.

버전 3.5
FrameBufferRandomRead

FrameBufferRandomRead는 무작위 읽기 액세스가 가능한 메모리 버퍼입니다.

버전 1.3
FrameBufferRandomRead (imaFlex)

FrameBufferRandomRead (imaFlex)는 무작위 읽기 액세스가 가능한 imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼용 메모리 버퍼입니다.

Version 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(Region of Interest) 지원 기능과 함께 Frame Grabber RAM (DRAM)에 이미지 데이터를 라인별로 버퍼링합니다. 이 오퍼레이터는 imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼에서만 사용할 수 있습니다.

Version 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을 기반으로 하는 동적 콘텐츠의 대형 룩업 테이블을 구현합니다.

Version 3.3
ROM

동적 콘텐츠의 룩업 테이블을 구현합니다.

버전 1.1

표 47. Memory 라이브러리의 오퍼레이터