연산자 FrameMemory

운영자 Library: Memory

FrameMemory 연산자는 랜덤 쓰기 액세스를 사용하여 입력 이미지를 저장하는 메모리 블록입니다. 쓰기 주소는 입력 링크의 행 주소 RowA와 열 주소 ColA로 지정됩니다. 따라서 각 입력 픽셀 값에 대해 행 주소와 열 주소를 지정해야 합니다.

프레임이 메모리에 기록된 후, 링크 O를 통해 읽혀져 출력됩니다. 출력 이미지의 크기는 매개변수로 정의되며, 입력 이미지의 크기와는 무관합니다. 메모리는 0으로 미리 초기화되어 있습니다.

연산자의 지연 시간에 대한 정보는 표 46, ‘라이브러리 메모리 내 연산자의 개별 지연 시간’을 참조하십시오 .

메모리 크기는 FrameWidth 및 FrameHeight 매개변수로 정의됩니다.

이 연산자는 두 가지 방식으로 구현될 수 있습니다. 즉, 단일 버퍼 구현 방식과 이중 버퍼 구현 방식이 있습니다. 첫 번째 구현 방식은 RAM을 절약하지만, 쓰기와 읽기를 동시에 수행할 수 없습니다. 따라서 읽기 상태에서는 입력 링크 I의 전송이 중단됩니다. 두 번째 구현 방식은 RAM 용량을 두 배로 늘리며, 입력 링크 I에서 다음 프레임을 수신하는 동안에도 현재 프레임을 출력할 수 있게 해줍니다.

이 연산자는 두 가지 상태를 가집니다:

  1. 쓰기 상태: Link I의 값이 ColA와 RowA로 지정된 주소에 저장됩니다. 이는 Link WriteI가 1일 때만 수행됩니다. 링크 WriteI가 0인 경우, 현재 픽셀은 건너뜁니다. 유효한 주소 범위 내의 모든 주소에 쓰기가 가능합니다. 각 메모리 셀에 반드시 쓰기를 수행할 필요는 없습니다.

  2. 읽기 모드: 메모리가 순차적으로 읽혀지며, 매개변수로 지정된 너비의 한 줄이 생성됩니다. XOffset, XLength, YOffset 및 YLength 매개변수를 사용하여 읽기 주소 범위, 즉 ROI를 정의할 수 있습니다. 메모리를 읽으면 읽은 주소의 내용이 0으로 초기화됩니다. 따라서 이전에 쓰기 작업이 수행되지 않은 메모리 셀을 읽을 경우, 0이 출력됩니다.

이 두 상태 간의 전환은 입력 링크 I에서 프레임 끝이 감지됨에 따라 발생합니다. 단, 출력 링크의 프레임 너비와 높이는 XOffset, XLength, YOffset 및 YLength 매개변수로 정의된 크기로 고정되어 있으며, 입력 링크의 라인 너비 및 프레임 높이와는 무관합니다.

이 연산자는 미러링이나 센서 보정에 유용하게 사용될 수 있습니다.

이 연산자는 FPGA의 내부 블록 RAM 메모리를 사용합니다. 따라서 RAM 유형의 VisualApplets 프레임 그래버 리소스는 사용되지 않습니다. 이 FPGA 내부 블록 RAM 의 용량은 제한되어 있습니다. 전체 해상도의 프레임이 FPGA 내부 블록 RAM에 모두 들어가지 않을 수도 있습니다. 연산자 FrameBufferRandomRead 연산자를 사용하는 것을 고려해 보십시오.

오퍼레이터 제한 사항

  • 빈 프레임은 지원되지 않습니다.

    선 길이가 서로 다른 이미지는 지원되지 않습니다.

I/O Properties

Property Value
Operator Type M
Input Links I, 이미지 데이터 입력
WriteI, 쓰기 허용 입력
ColA, I 위치의 픽셀에 대한 열 주소 쓰기
RowA, I 위치의 픽셀에 대한 행 주소 쓰기
출력 링크 O, 데이터 입력

동기 및 비동기 입력

  • 모든 입력은 서로 동기화되어 있으며, 즉 동일한 M형 연산자를 통해 임의의 O형 연산자 네트워크를 거쳐 공급되어야 한다.

지원되는 Link Format

Link Parameter Input Link I 입력 링크 WriteI 입력 링크 ColA 입력 링크 RowA Output Link O
Bit Width [1, 64]1 1 auto2 auto3 as I
Arithmetic {unsigned, signed} unsigned unsigned unsigned as I
Parallelism 1 as I as I as I as I
Kernel Columns any 1 1 1 as I
Kernel Rows any 1 1 1 as I
Img Protocol VALT_IMAGE2D as I as I as I as I
Color Format any VAF_GRAY VAF_GRAY VAF_GRAY as I
Color Flavor any FL_NONE FL_NONE FL_NONE as I
Max. Img Width any as I as I as I FrameWidth 매개변수
Max. Img Height any as I as I as I FrameHeight 매개변수

1

부호 없는 입력의 경우, 입력 비트 폭의 범위는 [1, 64]입니다. 부호 있는 입력의 경우, 범위는 [2, 64]입니다. 부호 없는 색상 입력의 경우 범위는 [3, 63]이며, 부호 있는 색상의 경우 범위는 [6, 63]입니다.

2

열 주소의 비트 폭은 다음과 같습니다:

3

행 주소의 비트 폭은 다음과 같습니다:

Parameters

ImplementationType
Type 정적 쓰기 파라미터
Default AUTO
Range (AUTO, BRAM, LUTRAM, URAM)

ImplementationType 매개변수는 연산자의 구현 전략, 즉 연산자를 구현하는 데 어떤 메모리 요소가 사용되는지에 영향을 미칩니다.

다음 값 중 하나를 선택할 수 있습니다:

AUTO: 연결된 링크의 매개변수 설정에 따라 최적의 구현 전략이 자동으로 선택됩니다.

BRAM: 오퍼레이터는 FPGA의 블록 RAM을 사용합니다.

LUTRAM: 오퍼레이터는 FPGA의 LUT RAM을 사용합니다.

URAM: 운영자는 FPGA의 UltraRAM을 사용합니다.

[참고] URAM의 이용 가능 여부

ImplementationType 매개변수 및 이에 따른 URAM 사용 옵션은 imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼에서만 사용할 수 있습니다.

[참고] 일반적으로 AUTO 사용

일반적으로 이 매개변수는 AUTO로 설정해야 합니다. 특수한 경우, 즉 설계에서 특정 종류의 FPGA 리소스가 부족할 때, BRAM, LUTRAM 또는 URAM 값을 사용하여 FPGA 리소스 관리를 수동으로 조정할 수 있습니다(URAM은 imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼에서만 사용할 수 있습니다).

AUTO는 BRAM과 LUTRAM 중에서만 선택합니다.

구현
Type static parameter
Default SingleBuffer
Range {단일 버퍼, 이중 버퍼}

이 매개변수는 FrameMemory(위 참조)의 구현 방식을 선택합니다.

FrameWidth
Type static parameter
Default 1024
Range [0, 65534]

이 매개변수는 출력 링크의 이미지 너비를 픽셀 단위로 지정합니다.

프레임 높이
Type static parameter
Default 1024
Range [0, 65534]

이 매개변수는 출력 링크의 이미지 높이를 줄 단위로 지정합니다.

XOffset
Type 동적/정적 읽기/쓰기 매개변수
Default 0
Range [0, 최대 이미지 높이 - YLength]

이 매개변수는 ROI의 왼쪽 상단 모서리의 y좌표를 정의합니다.

XLength
Type 동적/정적 읽기/쓰기 매개변수
Default 1024
Range [1, 최대 이미지 너비 - X 오프셋]

이 매개변수는 ROI의 너비를 정의합니다.

YOffset
Type 동적/정적 읽기/쓰기 매개변수
Default 0
Range [0, 최대 이미지 높이 - YLength]

이 매개변수는 ROI의 왼쪽 상단 모서리의 y좌표를 정의합니다.

YLength
Type 동적/정적 읽기/쓰기 매개변수
Default 1024
Range [1, 최대 이미지 높이 - Y 오프셋]

이 매개변수는 ROI의 높이를 정의합니다.

사용 예

다음 예제에서는 FrameMemory 연산자의 사용법을 보여줍니다: