Overflow 오퍼레이터

오퍼레이터 라이브러리: Synchronization

'오버플로우(Overflow )' 연산자는 중단할 수 없는 2D 입력 데이터 스트림을, 때때로 차단될 수 있는 후속 이미지 처리 파이프라인으로부터 분리합니다. 이 연산자는 출력 데이터가 차단되어 내부 소형 버퍼가 가득 차면 오버플로 상황을 감지합니다. 오버플로가 발생하면, 진행 중인 프레임이 줄 끝(EOL) 및 프레임 끝(EOF) 마커를 즉시 추가하여 잘립니다. 해당 프레임은 손상된 것으로 간주되며, 이에 따라 이벤트가 생성됩니다. 출력 차단 상태가 지속되는 동안 입력 I로 새로운 프레임이 유입되면, 프레임이 건너뜁니다. 그러면 프레임 손실에 대한 이벤트가 생성됩니다.

실무적인 지침은 “중지 가능한 데이터 스트림과 중지 불가능한 데이터 스트림” 튜토리얼 항목을 참조하십시오.

[주의] 오버플로우로 인해 프레임이 직사각형이 아닌 형태가 됨

오버플로우 상황으로 인해 수신 프레임이 잘릴 경우, 일반적으로 송신 프레임의 마지막 줄은 다른 줄들보다 짧아집니다. 후속 이미지 처리 파이프라인이 이를 처리할 수 있는지 확인하십시오.

손상되거나 손실된 각 프레임마다 오버플로 이벤트가 생성됩니다. 오버플로 이벤트는 프레임 번호와 오버플로 유형으로 구성된 데이터 페이로드를 전달합니다. 이벤트 페이로드는 세 개의 16비트 데이터 워드로 제공됩니다. 처음 두 워드는 프레임 번호에 대한 32비트 값을 나타내며, 이 때 최하위 비트들은 첫 번째 워드에 저장됩니다. 세 번째 16비트 단어는 오버플로 마스크를 제공하며, 마스크 비트의 정의는 다음과 같습니다:

  • [0]: 프레임 손상됨

  • [1]: 프레임 손실

  • [2]: 이전에 이벤트 손실이 발생했습니다

  • [3]: 프레임 정상

  • [4] .. [15]: 예약됨

획득이 시작되면 프레임 번호가 초기화된다는 점에 유의하십시오. 또한 첫 번째 프레임의 프레임 번호는 0이지만, DMA 전송은 프레임 번호 1부터 시작된다는 점에 유의하십시오. 프레임 번호는 32비트 값입니다. 최대값에 도달하면 다시 0부터 시작됩니다. 64비트 대상 런타임에서는, DMA 전송 번호가 64비트 값이 됩니다. '프레임 손상' 플래그가 설정된 경우, 이벤트에 명시된 프레임 번호를 가진 프레임이 손상된 것입니다. 즉, 프레임의 전체 길이가 보장되지 않으므로 후속 처리 과정에서 잘못된 결과가 산출될 수 있습니다. '프레임 손실' 플래그가 설정된 경우, 이벤트에 명시된 프레임 번호를 가진 프레임이 완전히 버려졌으므로 후속 처리 파이프라인은 해당 프레임으로부터 어떠한 데이터도 수신하지 못했습니다. 동일한 이벤트에 대해 ‘손상된 프레임’ 플래그와 ‘프레임 손실’ 플래그가 동시에 발생하는 일은 절대 없습니다. ‘이벤트 손실 발생’ 플래그는 추가적인 보안 메커니즘입니다. 이는 이벤트가 손실되었음을 의미합니다. 이는 이벤트 발생 빈도가 매우 높은 경우에만 발생할 수 있으며, 정상적인 조건에서는 발생해서는 안 됩니다.

I/O Properties

Property Value
Operator Type M
입력 링크 나, 멈출 수 없는 데이터 입력
출력 링크 O, data output

지원되는 Link Format

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

Parameters

성공적인 프레임용 이벤트
Type 동적 읽기/쓰기 매개변수
Default OFF
Range [꺼짐, 켜짐]

지나가는 모든 프레임에 대해 이벤트를 생성할지 여부를 정의합니다.

오버플로우 발생
Type dynamic read parameter
Default 0
Range [0, 1]

오버플로 이벤트가 발생했을 때 알립니다.

이 매개변수는 읽기 액세스 후 재설정되므로, 이전 읽기 액세스와 현재 읽기 액세스 사이에 오버플로 상황이 발생했는지 여부를 나타냅니다.

사용 예

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