연산자 LineMemory

운영자 Library: Memory

LineMemory 연산자는 무작위 쓰기 액세스를 사용하여 입력되는 이미지 라인을 저장하는 메모리 블록입니다. 쓰기 주소는 입력 링크의 열 주소 ColA로 지정됩니다. 따라서 각 입력 픽셀 값에 대해 열 주소를 지정해야 합니다.

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

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

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

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

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

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

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

이 두 상태 간의 전환은 입력 링크 I에서 줄 끝이 감지되면 트리거됩니다. 단, 출력 링크의 줄 너비는 XOffset 및 XLength 매개변수로 정의된 크기로 고정되어 있으며, 입력 링크의 줄 너비와는 무관하다는 점에 유의하십시오.

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

운영자는 FPGA 내부 블록 RAM 또는 UltraRAM 메모리 (URAM은 imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼에서만 사용 가능합니다). 따라서 RAM 유형의 VisualApplets 프레임 그래버 리소스는 사용되지 않습니다. FPGA 내부 블록 RAM의 용량은 제한적입니다. 전체 해상도의 프레임은 FPGA 내부 블록 RAM에 모두 들어가지 않을 수 있습니다. 연산자 FrameBufferRandomRead 연산자를 사용하는 것을 고려해 보십시오.

오퍼레이터 제한 사항

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

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

I/O Properties

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

동기 및 비동기 입력

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

지원되는 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

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

2

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

Parameters

구현 유형 (imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta 플랫폼)
Type 정적 쓰기 파라미터
Default AUTO
Range (AUTO, BRAM, URAM)

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

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

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

BRAM: 오퍼레이터는 FPGA의 블록 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 {단일 버퍼, 이중 버퍼}

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

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

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

XOffset
Type 동적/정적 읽기/쓰기 매개변수
Default 0
Range [0, 프레임 너비 - X길이]

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

XLength
Type 동적/정적 읽기/쓰기 매개변수
Default 1024
Range [1, 프레임 너비 - X 오프셋]

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

사용 예

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