Operator LineBuffer (imaFlex)

Operator Library: Memory

LineBuffer 오퍼레이터는 이미지 데이터 스트림을 FPGA 내부가 아닌 프레임 그래버의 메모리인 프레임 그래버 RAM(DRAM)에 버퍼링합니다. LineBuffer 오퍼레이터는 mE5 하드웨어 플랫폼에 사용되며 동일한 기능을 제공하는 ImageBuffer 오퍼레이터를 대체합니다. imaFlex CXP-12 Quad 및 imaFlex CXP-12 Penta는 ImageBuffer 오퍼레이터를 지원하지 않으므로, mE5 하드웨어 플랫폼의 디자인을 imaFlex CXP-12 Quad 또는 imaFlex CXP-12 Penta 플랫폼으로 변환하면 ImageBuffer 인스턴스가 LineBuffer 인스턴스로 자동 대체됩니다.

유형이 RAM인 VisualApplets 리소스 1개가 필요합니다. 자세한 내용은 'Allocation of Device Resources'를 참조하십시오. 유형이 RAM인 여러 리소스는 공유 메모리 개념에 따라 동일한 물리적 RAM을 사용합니다. 공유 메모리 사용 방법에 대한 설명서는 ' Shared Memory Concept ' 섹션에서 확인할 수 있습니다. 또한 LineBuffer 오퍼레이터는 관심 영역(ROI)을 지원합니다. 총 비트 수(비트 폭과 Parallelism의 곱)는 해당 프레임 그래버의 메모리 제한을 초과해서는 안 됩니다.

이 오퍼레이터는 최소 1라인의 지연(latency)을 발생시킵니다. 라인이 버퍼에 완전히 기록되는 즉시 해당 라인 읽기가 시작됩니다. 출력이 차단되면 오퍼레이터가 입력 데이터를 버퍼링합니다.

이 오퍼레이터는 FIFO처럼 작동합니다. 버퍼가 이미지 라인 단위로 작동하므로 메모리 지연 시간이 매우 짧습니다. 선택한 관심 영역 내에 있고 후속 모듈이 데이터를 충분히 빠르게 처리할 수 있는 한, 완료된 입력 데이터 라인은 즉시 출력으로 전달됩니다. 결과적으로 현재 프레임 전송이 진행되는 동안에도 카메라의 프레임 데이터를 PC로 전달할 수 있습니다. 버퍼에 더 많은 라인이 채워지면 입력 데이터와 출력 데이터 간의 지연 시간이 증가합니다. 이는 출력이 일정 시간 동안 차단될 때, 특히 후속 모듈이 입력 대역폭과 동일한 속도로 데이터를 처리할 수 없을 때 발생합니다. 따라서 메모리는 오퍼레이터가 입력에서 제공하는 데이터와 동일한 속도로 데이터를 출력할 수 없는 경우에만 채워집니다. 이 오퍼레이터는 주로 최고 입력 대역폭을 보상하는 데 사용됩니다.

XOffset, XLength, YOffset, YLength 파라미터를 사용하여 관심 영역을 정의할 수 있습니다. 입력 이미지 너비가 XOffset과 XLength의 합보다 작더라도 LineBuffer 오퍼레이터는 매개변수화된 XLength를 계속 읽습니다. 이 경우 오퍼레이터는 추가 픽셀에 대해 정의되지 않은 메모리 콘텐츠를 출력합니다. 입력 이미지 높이가 요청된 출력 이미지 높이보다 작으면 오퍼레이터는 사용 가능한 라인만 출력합니다. 입력 이미지 높이가 YOffset보다 낮으면 출력에 더미 값만 포함된 단일 라인이 생성됩니다.

Line1D 응용 프로그램 모드에서는 YOffset 및 YLength 설정이 적용되지 않습니다.

버퍼의 채워진 수준을 측정하기 위해 오퍼레이터는 FillLevel, LineCount, Overflow 파라미터를 제공합니다. FillLevel은 RAM의 채워진 수준을 백분율로 보여줍니다. LineCount은 버퍼에 저장된 현재 라인 수를 제공합니다. FillLevel이 100%에 가깝거나 도달하고 버퍼에 저장될 다음 이미지가 RAM 용량을 초과할 때 FillLevel 파라미터가 Overflow로 설정되어 1이 됩니다. 오버플로가 발생하면 입력 데이터가 폐기되고 입력 이미지 높이가 줄어듭니다.

InfiniteSource 파라미터는 오퍼레이터가 중지할 수 없는 데이터 스트림(예: 카메라의 버퍼링되지 않은 스트림)을 수신하는지 여부를 지정합니다. 무한 소스에 대한 자세한 내용은 'Infinite Sources / Connecting Cameras'를 참조하십시오. 오버플로는 데이터 소스를 중지할 수 없는 경우, 즉 InfiniteSource가 ENABLED로 설정된 경우에만 발생할 수 있습니다. 결과적으로 Overflow 및 OverflowClearMode 파라미터는 InfiniteSource 파라미터가 ENABLED로 설정된 경우에만 사용할 수 있습니다. 오버플로가 발생하면 불완전한 이미지가 메모리에 저장될 수 있습니다. 이러한 불완전한 이미지는 자동으로 완료되며, 다음 라인에 충분한 버퍼 공간이 확보될 때까지 들어오는 데이터는 폐기됩니다.

오퍼레이터 제한 사항

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

[참고] 사용 가능한 메모리 공간

오퍼레이터는 RAM에 들어갈 수 있는 최대 라인 수(XLength로 정의됨)를 보고하는 읽기 전용 파라미터 MaxLineCount를 제공합니다. 이 숫자는 현재 디자인의 다른 메모리 오퍼레이터 존재 여부 및 데이터 Bit Width에 따라 추가로 달라집니다.

하드웨어 플랫폼별 지원 여부
imaFlex CXP-12 Penta
imaFlex CXP-12 Quad

대역폭 최적화

ImageBuffer 오퍼레이터와 달리 LineBuffer 오퍼레이터는 최적의 성능을 달성하기 위해 메모리 데이터 폭에 최대한 가깝게 픽셀의 자동 집계를 수행합니다.

ParallelismConverter 파라미터에 의해 활성화된 경우, 출력 parallelism을 입력 parallelism과 다른 값으로 조정할 수 있습니다. 이를 통해 오퍼레이터의 입력과 출력 간에 비대칭적 피크 데이터 처리량을 정의할 수 있습니다. 후속 데이터 처리 파이프라인이 다른 parallelism으로 작동해야 할 때 이 기능을 사용하여 PARALLELdn 또는 PARALLELup 오퍼레이터의 추가 인스턴스를 방지할 수 있습니다.

RAM의 사용 가능한 최대 대역폭을 초과하는 긴 쓰기 데이터 버스트를 오퍼레이터가 처리할 수 있도록 하려면 WritePriority 파라미터를 활성화하십시오. 이는 카메라(InfiniteSource = ENABLED)와 같은 무한 데이터 소스에서 권장됩니다. 쓰기 버스트로 인해 RAM의 사용 가능한 대역폭이 초과되면 읽기가 금지됩니다. 이를 통해 RAM에 대한 일시적인 빈번한 쓰기 액세스가 허용됩니다. 카메라가 쓰기 데이터 버스트를 전달하는 경우, 해당 버스트 뒤에 쓰기 데이터의 공백이 올 것으로 예상되며(그렇지 않으면 사용 가능한 RAM 대역폭이 초과됨), 이 공백을 사용하여 읽기 대역폭을 일시적으로 높일 수 있습니다.

I/O Properties

Property Value
Operator Type M
입력 링크 I, 이미지 데이터 입력
출력 링크 O, 이미지 데이터 출력

지원되는 Link Format

Link Parameter Input Link I Output Link O
Bit Width [1, 64]12 as I
Arithmetic {unsigned, signed} as I
Parallelism any2 as I 2
Kernel Columns 1 as I
Kernel Rows 1 as I
Img Protocol {VALT_IMAGE2D, VALT_LINE1D} as I
Color Format any as I
Color Flavor any as I
Max. Img Width 2^31-13 as I
Max. Img Height 2^31-1 as I

1

입력 Bit Width의 범위는 다음과 같습니다:

  • 부호 없는(unsigned) 입력의 경우: [1, 64]

  • 부호 있는(signed) 입력의 경우: [2, 64]

  • 부호 없는(unsigned) 컬러 입력의 경우: [3, 63]

  • 부호 있는(signed) 컬러 입력의 경우: [6, 63]

2

Bit Width와 parallelism의 곱은 네이티브 RAM 데이터 폭인 RamDataWidth를 초과해서는 안 됩니다.

3

LineBuffer 오퍼레이터가 parallelism을 변환하는 경우(ParallelismConverter = Yes), 출력에서의 최대 이미지 너비를 O.Parallelism의 다음 배수로 자동 반올림합니다. O.Parallelism이 I.Parallelism보다 큰 경우, 출력의 반올림된 최대 이미지 너비가 2^31-1을 초과하지 않도록 I.MaxImgWidth는 2^31-1-O.Parallelism보다 커서는 안 됩니다.

Parameters

RamDataWidth
Type 정적 쓰기 파라미터
Default N/A
Range 정수

이 파라미터는 사용할 수 있는 데이터 비트 수를 제공합니다.

XOffset
Type 동적/정적 쓰기 파라미터
Default 0
Range [0, Max.Img Width - XLength]

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

스텝 크기는 입력 parallelism입니다.

XLength
Type 동적/정적 쓰기 파라미터
Default 1024
Range [input parallelism, min(Max.Img Width, (2^RAM address width - 1) * internal RAM parallelism) - XOffset]

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

스텝 크기는 입력 parallelism입니다.

YOffset
Type 동적/정적 쓰기 파라미터
Default 0
Range [0, 최대 이미지 높이 - YLength]

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

YLength
Type 동적/정적 쓰기 파라미터
Default 1024
Range [1, 최대 이미지 높이 - YOffset]

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

ParallelismConverter
Type 정적 쓰기 파라미터
Default 아니요
Range {Yes, No}

이 파라미터는 LineBuffer 오퍼레이터가 parallelism 변환기를 구현하는지 여부를 정의합니다.

  • No: 오퍼레이터가 parallelism 변환을 수행하지 않습니다. 입력 및 출력 parallelism은 항상 동일합니다. 입력 parallelism이 변경되면 출력 parallelism이 새 입력 parallelism 값으로 자동 변경됩니다. 출력 parallelism은 편집할 수 없습니다.

  • Yes: 오퍼레이터가 parallelism 변환을 수행합니다. 출력 parallelism은 입력 parallelism과 완전히 독립적이며 자유롭게 편집할 수 있습니다.

InfiniteSource
Type 정적 쓰기 파라미터
Default DISABLED
Range {ENABLED, DISABLED}

LineBuffer 오퍼레이터는 카메라 오퍼레이터 바로 뒤에 삽입할 수 있습니다. 이 경우 InfiniteSource 파라미터를 ENABLED로 설정해야 합니다. 그러면 오퍼레이터가 활성 오버플로 관리를 수행하고 오퍼레이터가 오버플로로부터 적절히 복구될 수 있도록 합니다. 오버플로는 오퍼레이터 뒤의 데이터 싱크가 전송을 중지 또는 일시 중지하고 버퍼 채워짐 수준이 최대에 도달하거나, 입력 대역폭이 너무 높아 쓰기 데이터를 외부 RAM으로 전송할 수 없을 때 발생할 수 있습니다. InfiniteSource가 DISABLED로 설정된 경우, 버퍼 채워짐 수준이나 입력 대역폭이 너무 높아지면 후속 오퍼레이터가 데이터 전송을 중지하도록 하는 억제(inhibit) 신호가 생성됩니다.

쓰기 우선순위 지정은 InfiniteSource 파라미터가 ENABLED로 설정된 상태로 사용되는 모든 오퍼레이터에 권장됩니다. 따라서 InfiniteSource 파라미터가 ENABLED로 설정된 경우 WritePriority 파라미터를 ENABLED로 설정하는 것이 권장됩니다.

자세한 내용은 'Infinite Sources / Connecting Cameras'를 참조하십시오.

WritePriority
Type 정적 쓰기 파라미터
Default DISABLED
Range {ENABLED, DISABLED}

공유 메모리 개념(' Shared Memory Concept ')은 일반적으로 연결된 모든 메모리 연산자(즉, RAM 리소스를 사용하는 모든 연산자) 간에 대역폭을 균등하게 분배합니다. WritePriority가 DISABLED로 설정된 경우, LineBuffer 연산자는 읽기와 쓰기에 동일한 우선순위를 할당합니다. WritePriority를 ENABLED로 설정하면 LineBuffer 연산자는 읽기보다 쓰기에 우선순위를 부여하지만, 이는 임시 메모리 데이터 레이트가 가용 대역폭보다 높은 동안에만 적용됩니다. 쓰기 데이터의 일시적인 우선순위 지정은 읽기 프로세스의 일시적인 저속화를 초래합니다. 결과적으로 평균 대역폭은 LineBuffer 연산자의 가용 대역폭을 초과해서는 안 됩니다. InfiniteSource 파라미터가 ENABLED로 설정된 상태로 사용되는 모든 연산자에는 쓰기 우선순위 지정을 권장합니다. 중지 가능한 소스에서 쓰기 우선순위를 사용할 때는 쓰기 대역폭이 지속적으로 높지 않도록 하십시오. 그렇지 않으면 버퍼가 가득 찰 때까지 LineBuffer에서의 읽기가 중지됩니다. 쓰기 우선순위 지정은 개별 연산자에 대한 설정이므로, 디자인에 메모리 연산자가 추가될수록 쓰기 우선순위 지정의 효과는 감소합니다.

FillLevel
Type dynamic read parameter
Default 0
Range [0%, 100%]

이 파라미터는 DRAM의 채워진 수준(Fill level)을 백분율로 제공합니다.

MaxLineCount
Type dynamic read parameter
Default 2^RAM address width / (XLength / internal RAM Parallelism + 1)
Range [1, 2^RAM address width / 2]

이 파라미터는 현재 메모리에 들어갈 수 있는 최대 라인 수를 제공합니다. 메모리에 들어갈 수 있는 최대 라인 수는 인스턴스화된 RAM 연산자의 수에 따라 달라지는 RAM address width에 따라 결정됩니다.

LineCount
Type dynamic read parameter
Default 0
Range [0, MaxLineCount]

이 파라미터는 메모리의 현재 라인 수를 제공합니다.

Overflow
Type dynamic read parameter
Default 0
Range [0, 3]

이 파라미터는 버퍼 오버플로를 나타냅니다. 이는 2비트 비트맵이며, 각 비트는 서로 다른 유형의 오버플로를 나타냅니다. 비트 0은 Fill 수준 오버플로를 나타내고 비트 1은 쓰기 대역폭 오버플로를 나타냅니다. Overflow 파라미터가 오버플로를 표시하는 시간은 OverflowClearMode에 따라 다릅니다.

Overflow 파라미터는 InfiniteSource 파라미터가 ENABLED로 설정된 경우에만 활성화됩니다.

OverflowClearMode
Type dynamic write 파라미터
Default AutoClear
Range {AutoClear, ManualClear, ClearAfterRead, ClearWithProcessReset}

OverflowClearMode는 연산자가 오버플로에서 복구되었을 때 Overflow 파라미터가 지워지는 방식을 결정합니다. 연산자가 더 이상 오버플로 상태가 아닌 경우에만 이 파라미터로 오버플로 상태를 재설정할 수 있습니다.

지우기 모드:

  • AutoClear: 연산자가 오버플로에서 복구되면 Overflow 파라미터가 자동으로 재설정됩니다.

  • ManualClear: 연산자가 오버플로에서 복구된 후에도 OverflowClearMode 파라미터에 ManualClear를 작성하여 수동으로 재설정할 때까지 Overflow 파라미터는 계속 오버플로를 표시합니다. 이 모드에서는 프로세스 재설정(예: Acquisition Stop)으로 Overflow 파라미터가 지워지지 않으므로, 획득이 중지된 후에도 오버플로가 계속 표시됩니다.

  • ClearAfterRead: 연산자가 오버플로에서 복구된 후에도 Overflow 파라미터를 읽거나 프로세스 재설정(예: 획득이 중지될 때)이 발생할 때까지 Overflow 파라미터는 계속 오버플로를 표시합니다.

  • ClearWithProcessReset: 연산자가 오버플로에서 복구된 후에도 재설정(예: 획득이 중지될 때)이 발생할 때까지 Overflow 파라미터는 계속 오버플로를 표시합니다.

OverflowClearMode 파라미터는 InfiniteSource 파라미터가 ENABLED로 설정된 경우에만 활성화됩니다.