Operator CoFCamera

Operator Library: Hardware Platform

이 연산자는 파이버 레인당 25 Gbit/s로 작동하는 CXP over Fiber (CoF) 카메라와 VisualApplets 간의 이미지 데이터 인터페이스를 나타냅니다. 이 연산자는 쿼드 채널 CoF 구성, 즉 100 Gbit/s에서 사용할 수 있습니다. 인터페이스 토폴로지는 FiberConnection 파라미터로 선택하며, 이를 통해 연산자가 QSFP28 포트 [0] 또는 QSFP28 포트 [1]에 연결되도록 할 수 있습니다. 연산자는 카메라가 전달하는 포맷에 관계없이 원본 이미지 데이터를 출력합니다. 그 후 카메라에서 전송된 포맷으로 이 이미지 데이터를 변환해야 합니다. 이미지 데이터를 변환하려면 원본 바이트 값을 픽셀 값으로 집계하고 캐스팅하는 적절한 연산자를 사용하십시오. 작동 중 특정 상황은 아래 설명된 대로 이벤트 시스템을 통해 전달될 수 있습니다. 또한 이 연산자에는 카메라와의 연결 상태를 나타내는 다양한 파라미터가 있습니다.

Hardware Platform에서 사용 가능
imaFlex 2 Dual 100

VisualApplets에서의 인스턴스화

연산자는 출력 O에 이미지 데이터를 제공합니다. 이 출력은 항상 존재합니다. 이 표준 출력 포트 외에도 CXP 헤더 메타데이터를 위한 선택적 MetaDataO 출력을 구성할 수 있습니다. 연산자를 인스턴스화하는 동안 다음 팝업 대화상자가 나타납니다.

여기서 선택적 메타데이터 포트를 지정할 수 있습니다. 포트 가용성을 "0"(기본값)으로 설정하면 연산자에 포트가 표시되지 않습니다. 포트 가용성을 1로 설정하면 연산자 인터페이스에서 메타데이터 포트를 사용할 수 있습니다.

선택적 MetaDataO 포트

MetaDataO는 10개의 24비트 컴포넌트로 구성된 10x1 커널 링크로 조직됩니다. 출력 포맷은 다음 그림에 나와 있습니다.

각 CXP 프레임은 해당 이미지 헤더를 제공합니다. 압축된 이미지 헤더는 10개의 서로 다른 값으로 구성됩니다. 값은 8~24비트 사이입니다. 연산자는 이 10가지 값을 패딩된 커널 값(10x1)으로 제공하며, 각 컴포넌트는 24비트로 패딩됩니다.

이미지 헤더 필드 커널 인덱스 Bit Width [bit] 설명
StreamId 0 8 CXP 스트림의 ID
Tag 1 16 소스 이미지 인덱스. 이 인덱스는 전송된 이미지마다 1씩 증가하며, 0xFFFF에서 0으로 래프어라운드됩니다. 동일한 이미지와 관련된 데이터를 포함하는 각 스트림에는 동일한 번호를 사용해야 합니다(멀티탭 스트림의 경우).
XSize 2 24 이 값은 픽셀 단위의 이미지 너비를 나타냅니다.
XOff 3 24 이 값은 전체 디바이스 이미지의 가장 왼쪽 픽셀을 기준으로 한 이미지의 픽셀 단위 수평 오프셋을 나타냅니다.
YSize 4 24 이 값은 픽셀 단위의 이미지 높이를 나타냅니다. 라인 스캔 이미지의 경우 이 값은 0으로 설정됩니다.
YOff 5 24 이 값은 전체 디바이스 이미지의 맨 위 라인을 기준으로 한 이미지의 픽셀 단위 수직 오프셋을 나타냅니다. 라인 스캔 이미지의 경우 이 값은 0으로 설정됩니다.
DSizeL 6 24 이 값은 이미지 라인당 32비트 데이터 워드 수를 나타냅니다.
PixelF 7 16 이 값은 Pixel Format을 나타냅니다.
TapG 8 16 이 값은 탭 지오메트리를 나타냅니다.
Flags 9 8 이미지 플래그입니다.

Device Resource Usage

이 오퍼레이터는 파라미터 FiberConnection의 설정에 따라 Port[0] CoF Lane의 리소스 4개 또는 Port[1] CoF Lane의 리소스 4개를 사용합니다. 이 리소스는 포트 [0] 또는 포트 [1]에 있는 QSFP28 커넥터 내의 물리적 파이버 레인을 나타냅니다. 할당된 레인은 CoF 프로토콜 전용으로 사용됩니다. 다른 오퍼레이터(데이터 포워딩)를 사용하는 다른 프로토콜도 QSFP28 커넥터를 사용할 수 있습니다. 그러나 프로토콜 선택은 전체 QSFP28 포트, 즉 내부의 4개 레인 모두에 적용됩니다. 프로토콜은 AppletProperties 오퍼레이터의 FiberProtocol0 및 FiberProtocol1 파라미터에서 정의합니다. 이벤트 시스템의 경우 EventPort 유형의 설정 가능한 리소스가 사용됩니다. 또한, 런타임 소프트웨어에서 이벤트 채널 식별 및 등록을 위해 사용하는 읽기 전용 리소스 EventID가 할당됩니다.

Port[n]은 QSFP28[n] 커넥터를 의미합니다. 리소스 인덱스는 선택한 커넥터 내의 파이버 레인입니다.

[참고] Resources Are Read-Only

EventPort를 제외한 모든 리소스는 읽기 전용입니다. 이들의 값은 포트(커넥터) 및 레인(커넥터 내의 파이버 연결)에 매핑된 FiberConnection 파라미터 값을 반영합니다.

[중요] 이미지 너비 및 높이 수정

출력 링크의 최대 이미지 너비 및 높이 Property를 통해 카메라별 설정에 맞게 너비와 높이를 조정할 수 있습니다. 단, 오퍼레이터 포트 O의 최대 이미지 너비는 포트 O의 Parallelism로 나누어 떨어져야 합니다. 따라서 최대 이미지 너비가 포트 O의 Parallelism로 나누어 떨어지는지 확인하십시오!

Error Handling 및 이벤트 시스템

수신된 재구성된 프레임이 CXP 이미지 헤더에서 카메라가 알린 내용보다 크거나 작다는 것을 오퍼레이터가 감지하면, 해당 Error Counter 파라미터 중 하나가 증가합니다.

  • 수신된 프레임의 크기가 이미지 헤더에 지정된 것보다 작은 경우, FrameCorruptedCount가 증가합니다.

  • 수신된 프레임의 크기가 이미지 헤더에 지정된 것보다 큰 경우, FrameOversizedCount가 증가합니다.

For a set of very critical errors, the operator will forward asynchronous events to the host runtime software (Framegrabber SDK). Events can be caused by corrupted frames or CRC errors. The event name in the Framegrabber API is <hierarchical operator name>\CxpStreamStatus, e.g. Device1\Process0\Camera\CxpStreamStatus. The event payload is provided as four 16-bit data words. The event format is defined as follows:

  • word [0]:

    • Bits [0:15]: 이벤트가 발생한 CXP 이미지 태그입니다.

  • word [1]:

    • Bits [0:7]: 예약되어 있으며 정의된 기능이 없습니다. 이 값은 무시해도 됩니다.

    • Bits [8:15]: 이벤트가 발생한 스트림 ID입니다.

  • word [2]:

    • Bit [0]: CRC 에러가 발생했습니다.

    • Bits [1:15]: 예약되어 있으며 정의된 기능이 없습니다. 이 값은 무시해도 됩니다.

  • word [3]:

    • Bit [0]: 예비 비번이며 정의된 기능이 없습니다. 이 값은 무시해도 됩니다.

    • Bit [1]: 이벤트 손실이 발생했습니다. 이는 이전 이벤트가 손실되었음을 의미합니다. 런타임 소프트웨어가 이벤트에 반응하지 못하고 내부 이벤트 큐가 오버플로될 때 발생합니다.

    • Bit [2:15]: 예비 비트이며 정의된 기능이 없습니다. 이 값들은 무시해도 됩니다.

각 오류 이벤트는 런타임 소프트웨어에서 인터럽트를 트리거합니다. 인터럽트 횟수를 줄이기 위해 동일한 프레임 태그를 가진 여러 이벤트가 병합될 수 있습니다. 이벤트가 병합되면 해당 오류 플래그가 결합됩니다.

이벤트가 손실된 경우, 직전 이벤트에 누락된 이벤트에 대한 정보가 포함됩니다. 이 직전 이벤트는 동일한 프레임 태그를 공유하는 다른 이벤트와 병합될 수 없습니다.

CRC 오류로 인해 발생한 이벤트에는 프레임 태그가 포함되지만, 이 태그가 CRC 오류가 발생한 정확한 프레임과 항상 일치하지 않을 수도 있습니다. 경우에 따라 태그가 이전 프레임이나 다음 프레임을 가리킬 수 있습니다.

이러한 상황은 카메라가 두 개 이상의 프레임 간 전환에 걸쳐 있는 CXP 패킷을 전송할 때 발생할 수 있습니다. 스트림 데이터가 실시간으로 재구성되는 동안 패킷 끝에서 CRC 계산이 완료됩니다. 그 결과, 오퍼레이터가 이미 이전 프레임을 보낸 후에 CRC 오류가 감지될 수 있습니다.

카메라 패킷에 한 프레임의 끝과 다음 프레임의 시작이 모두 포함되지 않는 일반적인 조건에서는 CRC 오류 중에 보고된 프레임 태그가 항상 정확합니다.

다른 경우로, 전체 프레임 스트림 데이터가 최대 패킷 크기보다 작으면 단일 패킷 내에 한 프레임이 겹칠 수 있습니다. 이러한 경우 소프트웨어 애플리케이션은 이전 프레임(프레임 태그 – 1)과 다음 프레임(프레임 태그 + 1)도 잠재적으로 손상된 것으로 처리해야 합니다.

I/O Properties

Property Value
Operator Type M
Output Links O, 이미지 데이터 출력
MetaDataO, 선택적 메타데이터 출력

Supported Link Format

Link Parameter Output Link O Output Link MetaDataO
Bit Width 8 24
Arithmetic unsigned unsigned
Parallelism 48 1
Kernel Columns 1 10
Kernel Rows 1 1
Img Protocol {VALT_IMAGE2D, VALT_LINE1D} (default: VALT_IMAGE2D) {VALT_IMAGE2D, VALT_LINE1D, VALT_PIXEL0D} (default: VALT_IMAGE2D)
Color Format VAF_GRAY VAF_GRAY
Color Flavor FL_NONE FL_NONE
Max. Img Width 임의 (기본값: 1056) 1
Max. Img Height 임의 (기본값: 1056) 1

Parameters

FiberConnection
Type Static Write 파라미터
Default port_0_lane_0_1_2_3
Range {port_0_lane_0_1_2_3, port_1_lane_0_1_2_3}

FiberConnection 파라미터는 카메라가 연결된 QSFP28 포트와 카메라 오퍼레이터가 사용 중인 해당 포트의 레인을 정의합니다.

현재는 포트 0과 포트 1에서 4개의 레인을 사용하는 카메라 구성만 지원됩니다. 선택한 QSFP28 포트는 해당 포트의 AppletProperties 오퍼레이터에 있는 FiberProtocol 파라미터가 DataForwarding이 아니라 CoF로 설정된 경우에만 사용할 수 있습니다.

FiberProtocol 파라미터가 DataForwarding으로 설정되어 있고 CoFCamera 오퍼레이터가 해당 파이버 포트에 매핑을 시도하면 DRC(Design Rule Check)에서 오류 메시지가 생성됩니다. 이 경우 FiberConnection 파라미터는 충돌 상태(빨간색)로 표시되며, 마우스 커서를 올리면 충돌을 설명하는 퀵팁 도움말 메시지가 표시됩니다.

단일 CoFCamera 오퍼레이터만 동일한 레인에서 동일한 하드웨어 QSFP28 포트를 사용할 수 있습니다. 여러 오퍼레이터 간의 매핑은 전체 디자인에서 고유해야 합니다.

MaxPacketSize
Type Static Write 파라미터
Default _16384
Range {_16384, _8192}

MaxPacketSize 파라미터는 CXP 표준에 지정된 대로 연결된 카메라의 최대 스트림 패킷 크기를 바이트 단위로 정의합니다. 카메라는 이 제한과 같거나 작은 스트림 패킷을 보냅니다.

이 파라미터는 Block RAM FPGA 리소스 사용량에 영향을 줍니다. 값이 작을수록 사용되는 Block RAM 리소스가 적습니다. 예시(4개 레인): _16384 값은 64개의 Block RAM 리소스를 사용하고, _8192 값은 32개의 Block RAM 리소스를 사용합니다.

InjectError
Type 동적 쓰기 파라미터
Default PacketTagError
Range {PacketTagError, ImageTagError, CorrectedError, PacketBufferOverflow, CrcError, FrameCorrupted, FrameOversized, UnexpectedStartupData}

파라미터 InjectError는 테스트 목적으로 에러를 주입하는 데 사용됩니다. 주입된 에러는 해당하는 에러 Counter 파라미터를 증가시킵니다.

에러 유형에 따라 에러 주입은 소프트웨어 인터럽트 이벤트로 이어질 수도 있습니다. 에러 시맨틱스에 대한 자세한 내용은 관련 파라미터 설명을 참조하십시오.

UsedConnections
Type Dynamic Read 파라미터
Default 4
Range [1 : 4]

이 파라미터는 현재 사용되지 않습니다. 향후 기능을 위해 포함되어 있습니다.

PacketTagErrorCount
Type Dynamic Read 파라미터
Default 0
Range [0 : 4095]

파라미터 PacketTagErrorCount는 CXP 표준에 따라 예상되는 태그를 준수하지 않는 태그를 가진 수신된 패킷 수를 계산합니다. 이 값은 후속 스트림 패킷 태그 열거에서 간격이 관찰되는 상황을 카운트합니다. 이는 12비트 Counter입니다:

  • Bits [10:0]은 실제 Counter 값을 나타냅니다.

  • Bit [11]은 Counter 오버플로우를 나타냅니다.

오버플로우 비트가 설정된 경우 Counter 값은 상관없음(don't care)으로 처리해야 합니다. 즉, 2047개를 초과하는 에러 상황이 발생했습니다.

ImageTagErrorCount
Type Dynamic Read 파라미터
Default 0
Range [0 : 4095]

이 파라미터는 이미지 헤더 태그, CXP 표준에 따른 예상 태그, 그리고 수신된 태그 간에 불일치가 발생하는 횟수를 카운트합니다. 이는 12비트 Counter입니다:

  • Bits [10:0]은 실제 카운트 값을 나타냅니다.

  • Bit [11]은 오버플로우를 나타냅니다.

오버플로우 비트가 설정된 경우 Counter 값은 유효하지 않으므로 무시해야 합니다. 즉, 2047개를 초과하는 에러 상황이 발생했습니다.

CorrectedErrorCount
Type Dynamic Read 파라미터
Default 0
Range [0 : 4095]

이 파라미터는 성공적으로 수정된 이미지 헤더 또는 라인 마커에서 감지된 에러 수를 보여줍니다. 이는 12비트 Counter입니다:

  • Bits [10:0]은 실제 카운트 값을 나타냅니다.

  • Bit [11]은 오버플로우를 나타냅니다.

오버플로우 비트가 설정된 경우 Counter 값은 유효하지 않으므로 무시해야 합니다. 즉, 2047개를 초과하는 에러 상황이 발생했습니다.

PacketBufferOverflowCount
Type Dynamic Read 파라미터
Default 0
Range [0 : 4095]

이 파라미터는 채널 본딩 패킷 버퍼의 오버플로우 상황을 모니터링합니다. 오버플로우는 CXP 프로토콜로 인해 둘 이상의 광섬유 레인을 사용하는 구성에서만 발생할 수 있습니다. 이는 12비트 Counter입니다:

  • Bits [10:0]은 실제 카운트 값을 나타냅니다.

  • Bit [11]은 오버플로우를 나타냅니다.

오버플로우 비트가 설정된 경우 Counter 값은 유효하지 않으므로 무시해야 합니다. 즉, 2047개를 초과하는 에러 상황이 발생했습니다.

PacketBufferOverflowSource
Type Dynamic Read 파라미터
Default 0
Range [0x0 : 0xF]

이 파라미터는 4개의 CXP 채널(즉, 광섬유 레인) 중 어느 채널에서 패킷 버퍼 오버플로우가 발생했는지 조회하기 위한 비트 마스크를 구현합니다. 순서:

  • LSB = 운영자가 할당한 가장 낮은 CXP 채널 번호.

  • MSB = 운영자가 할당한 가장 높은 CXP 채널 번호.

CameraScanMode
Type Dynamic Read 파라미터
Default 면적
Range {area, line}

수신된 이미지 헤더는 스트림이 area scan용인지 line scan용인지 나타냅니다. 이 Parameter는 가장 최근에 수신된 스트림 이미지 헤더 정보를 보여줍니다.

UnexpectedStartupDataCount
Type Dynamic Read 파라미터
Default 0
Range [0 : 4095]

이 Parameter는 사전에 이미지 헤더가 수신되지 않아 Operator 리셋 직후의 첫 번째 데이터 값이 예상치 못한 값인 오류 조건을 감지합니다. 처리 시작 시의 예상치 못한 바이트 수를 보고합니다. 이는 12비트 Counter입니다.

  • Bits [10:0]은 실제 카운트 값을 나타냅니다.

  • Bit [11]은 오버플로우를 나타냅니다.

오버플로우 비트가 설정된 경우 Counter 값은 유효하지 않으므로 무시해야 합니다. 즉, 2047개를 초과하는 에러 상황이 발생했습니다.

예상치 못한 시작 데이터는 카메라 구현 오류, 프레임 그래버 펌웨어 오류, 또는 검색 절차의 잘못된 소프트웨어 제어로 인해 발생할 수 있습니다. 또한 카메라, 광 모듈 또는 광케이블의 하드웨어 결함으로 인해 이러한 상황이 발생할 수도 있습니다.

FrameCorruptedCount
Type Dynamic Read 파라미터
Default 0
Range [0 : 4095]

이 Parameter는 취득 중 손상된 프레임을 카운트합니다. 손상된 프레임에는 VisualApplets 파이프라인으로 전송된 오류 있는 픽셀이 포함되어 있습니다. 이는 12비트 Counter입니다.

  • Bits [10:0]은 실제 카운트 값을 나타냅니다.

  • Bit [11]은 오버플로우를 나타냅니다.

오버플로우 비트가 설정된 경우 Counter 값은 유효하지 않으므로 무시해야 합니다. 즉, 2047개를 초과하는 에러 상황이 발생했습니다.

FrameOversizedCount
Type Dynamic Read 파라미터
Default 0
Range [0 : 4095]

이 Parameter는 취득 중에 감지된 규격 초과 프레임의 수를 카운트합니다. 규격 초과 프레임은 이미지 헤더에 지정된 것보다 더 많은 라인이나 픽셀을 포함하는 프레임입니다. 이러한 오류는 하드웨어 결함으로 인한 전송 문제나 카메라의 펌웨어 버그로 인해 발생할 수 있습니다. 이는 12비트 Counter입니다.

  • Bits [10:0]은 실제 카운트 값을 나타냅니다.

  • Bit [11]은 오버플로우를 나타냅니다.

오버플로우 비트가 설정된 경우 Counter 값은 유효하지 않으므로 무시해야 합니다. 즉, 2047개를 초과하는 에러 상황이 발생했습니다.

CrcErrorCount
Type Dynamic Read 파라미터
Default 0
Range [0 : 4095]

이 Parameter는 CXP 스트림 패킷에서 발생한 CRC 오류의 횟수를 카운트합니다. 이는 12비트 Counter입니다.

  • Bits [10:0]은 실제 카운트 값을 나타냅니다.

  • Bit [11]은 오버플로우를 나타냅니다.

오버플로우 비트가 설정된 경우 Counter 값은 유효하지 않으므로 무시해야 합니다. 즉, 2047개를 초과하는 에러 상황이 발생했습니다.