Operator LineMemory

Operator Library: Memory

LineMemory 오퍼레이터는 임의 쓰기 액세스를 사용하여 들어오는 이미지 라인을 저장하는 메모리 블록입니다. 쓰기 주소는 입력 링크 열 주소인 ColA로 지정됩니다. 따라서 각 입력 픽셀 값에 대해 열 주소를 지정해야 합니다.

라인이 메모리에 완전히 기록되면 링크 O를 사용하여 읽고 출력됩니다. 출력 이미지 너비는 파라미터로 정의되며 입력 이미지 너비와 무관합니다. 메모리는 0 값으로 미리 초기화됩니다.

연산자 지연 시간에 대한 정보는 '표 46: Library Memory의 연산자별 지연 시간'을 참조하십시오.

메모리 크기는 FrameWidth 파라미터로 정의됩니다.

오퍼레이터는 두 가지 변형으로 구현할 수 있습니다. 즉, 싱글 버퍼 구현과 더블 버퍼 구현입니다. 첫 번째 구현은 RAM을 절약하지만 읽기와 쓰기의 시간적 중첩을 허용하지 않습니다. 따라서 읽기 상태 동안에는 입력 링크 I가 중지됩니다. 후자의 구현은 RAM을 두 배로 늘리고 입력 링크 I에서 다음 라인을 수용하는 동시에 이미지 라인을 출력할 수 있게 해줍니다.

오퍼레이터에는 두 가지 상태가 있습니다.

  1. 쓰기 상태: 링크 I의 값은 ColA로 지정된 주소에 저장됩니다. 이는 링크 WriteI가 1인 경우에만 수행됩니다. 링크 WriteI가 0이면 현재 픽셀은 건너뜁니다. 유효한 주소 범위 내의 모든 주소에 쓸 수 있습니다. 모든 메모리 셀에 쓸 필요는 없습니다.

  2. 읽기 상태: 메모리를 순차적으로 읽어 파라미터화된 너비의 라인을 생성합니다. XOffset 및 XLength 파라미터를 사용하여 읽기 주소 범위, 즉 ROI를 정의할 수 있습니다. 메모리를 읽으면 읽은 주소의 콘텐츠가 0으로 재설정됩니다. 따라서 이전에 쓰여지지 않은 메모리 셀을 읽으면 0이 출력됩니다.

이 두 상태 사이의 전환은 입력 링크 I의 라인 끝(end-of-line)에 의해 트리거됩니다. 출력 링크의 라인 너비는 XOffset 및 XLength 파라미터로 정의된 크기로 고정되며 입력 링크의 라인 너비와 무관하다는 점에 유의하십시오.

이 오퍼레이터는 미러링 또는 센서 보정에 유용할 수 있습니다.

이 오퍼레이터는 FPGA 내부 블록 RAM 또는 UltraRAM 메모리를 사용합니다(URAM은 imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼에서만 사용할 수 있습니다). 따라서 RAM 유형의 VisualApplets 프레임 그래버 리소스는 사용되지 않습니다. FPGA 내부 블록 RAM은 제한되어 있습니다. 전체 해상도 프레임이 FPGA 내부 블록 RAM에 맞지 않을 수 있습니다. 대신 FrameBufferRandomRead 오퍼레이터 사용을 고려하십시오.

Operator 제한 사항

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

    라인 길이가 다른 이미지는 지원되지 않습니다.

I/O Properties

Property Value
Operator Type M
Input Links I, 이미지 데이터 입력
WriteI, 쓰기 허가 입력
ColA, I에서의 픽셀용 쓰기 열 주소
Output Link O, data output

동기 및 비동기 입력

  • 모든 입력은 서로 동기화되어 있습니다. 즉, O 타입 오퍼레이터의 임의 네트워크를 통해 동일한 M 타입 오퍼레이터로부터 소스를 공급받아야 합니다.

Supported Link Format

Link Parameter Input Link I 입력 링크 WriteI 입력 링크 ColA Output Link O
Bit Width [1, 64]1 1 auto2 as I
Arithmetic {unsigned, signed} unsigned unsigned as I
Parallelism 1 as I as I as I
Kernel Columns any 1 1 as I
Kernel Rows any 1 1 as I
Img Protocol {VALT_IMAGE2D, VALT_LINE1D} as I as I as I
Color Format any VAF_GRAY VAF_GRAY as I
Color Flavor any FL_NONE FL_NONE as I
Max. Img Width any as I as I 파라미터 FrameWidth
Max. Img Height any as I as I as I

1

부호 없는 입력의 경우 입력 Bit Width 범위는 [1, 64]입니다. 부호 있는 입력의 경우 범위는 [2, 64]입니다. 부호 없는 컬러 입력의 경우 범위는 [3, 63]이며, 부호 있는 컬러의 경우 범위는 [6, 63]입니다.

2

열 주소의 Bit Width는 다음과 같습니다:

Parameters

ImplementationType (imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼)
Type static write parameter
Default AUTO
Range (AUTO, BRAM, URAM)

ImplementationType 파라미터는 연산자의 구현 전략, 즉 연산자를 구현하는 데 어떤 Memory 요소가 사용되는지에 영향을 미칩니다.

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

AUTO: 연결된 링크의 파라미터 설정을 바탕으로 최적의 구현 전략이 자동으로 선택됩니다.

BRAM: 연산자가 FPGA의 Block RAM을 사용합니다.

URAM: 연산자가 FPGA의 UltraRAM을 사용합니다.

[참고] URAM 가용성

ImplementationType 파라미터와 이에 따른 URAM 사용 옵션은 imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼에서만 사용할 수 있습니다.

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

일반적으로 이 파라미터는 AUTO로 설정해야 합니다. 특수한 경우, 즉 디자인에서 특정 종류의 FPGA 리소스가 부족한 경우 BRAM 또는 URAM 값을 사용하여 FPGA 리소스 관리에 수동으로 영향을 줄 수 있습니다.

구현
Type static parameter
Default SingleBuffer
Range {SingleBuffer, DoubleBuffer}

이 파라미터는 LineMemory의 구현 방식을 선택합니다(위 참조).

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

이 파라미터는 픽셀 단위로 출력 링크의 이미지 너비를 선택합니다.

XOffset
Type 동적/정적 읽기/쓰기 파라미터
Default 0
Range [0, FrameWidth - XLength]

이 파라미터는 ROI의 왼쪽 상단 모서리의 x 좌표를 정의합니다.

XLength
Type 동적/정적 읽기/쓰기 파라미터
Default 1024
Range [1, FrameWidth - XOffset]

이 파라미터는 ROI의 너비를 정의합니다.

사용 예제

LineMemory 오퍼레이터의 사용법은 다음 예시에 나와 있습니다: