콘텐츠로 바로 가기

중지 가능 및 중지 불가능 데이터 스트림#

이 항목에서는 생성된 FPGA 파이프라인이 적용될 때 이미지 데이터 스트림이 어떻게 작동하는지 설명합니다. 흐름 제어. 이 항목을 읽고 나면 다음의 차이점을 이해할 수 있습니다. 중단 가능 및 중단 불가능한 스트림, 그리고 무한 소스 (예: 카메라 오퍼레이터)가 디자인에 통합되는 방식과 버퍼 오퍼레이터 사용 방법, InfiniteSource 파라미터 및 Overflow 오퍼레이터를 사용하여 연결 오류 및 교착 상태를 방지하는 방법입니다.

핵심 용어

중단 불가능한 스트림은 지속적으로 실행됩니다. 중단 불가능한 소스는 생성된 FPGA 디자인의 흐름 제어 로직에 의해 일시 중지될 수 없습니다. 대표적인 예는 픽셀을 계속 전송하는 카메라입니다. 이와 대조적으로 중단 가능 스트림은 다음 오퍼레이터가 준비되지 않은 경우 일시 중지할 수 있습니다. 카메라와 다운스트림 처리 사이의 버퍼는 종종 중단 불가능한 스트림을 중단 가능한 스트림으로 변환합니다.

따라서 카메라 뒤에는 버퍼를 배치해야 합니다. 카메라 버스트를 흡수하려면 DRAM 오퍼레이터를 사용하는 것이 좋습니다. LineBuffer imaFlex 또는 ImageBuffer microEnable 5에서. 사용 ImageFifo (FPGA 내부 메모리)는 예를 들어 짧은 지연 시간과 같은 작은 디커플링 용도로만 사용해야 합니다. SYNC. 사용하시는 경우 ImageFifo 중단할 수 없는 스트림에서 다음 연산자와 결합하거나 Overflow 연산자를 사용하고, ImageFlowControl 대신 다음을 사용하십시오. 참조: Memory 요소 튜토리얼 항목.

링크 연결의 공식적인 규칙에 대해서는 사용자 매뉴얼의 Infinite Sources / Connecting Cameras를 참조하십시오. 연산자 모양 및 모듈이 데이터 흐름을 일시 중지하거나 보류하는 방법에 대해서는 Operator Types and Synchronization 튜토리얼 주제를 참조하십시오.

중단 가능 및 중단 불가능한 스트림#

생성된 FPGA 파이프라인은 모듈 간의 데이터 흐름을 제어합니다. 연산자는 더 이상 데이터를 수락할 준비가 되지 않았을 때 입력을 일시 중지할 수 있습니다. 따라서 다운스트림 연산자는 제한된 시간 동안 스트림 속도를 늦출 수 있습니다. VisualApplets은 편집기에서 해당 흐름 제어를 적용하지 않으며, FPGA에 빌드된 앱릿이 이를 수행합니다.

흐름 제어가 설계를 손상시키지 않고 스트림을 보류할 수 있는 경우 스트림은 stoppable합니다. 흐름 제어로 소스를 중단할 수 없는 경우 스트림은 non-stoppable합니다. 다음 모듈이 바쁘더라도 소스는 계속해서 데이터를 전달합니다.

중단할 수 없는 스트림을 infinite sources라고도 합니다. 이 이름은 무제한 이미지 크기가 아니라 흐름 제어를 나타냅니다. 스트림에는 생성된 FPGA 디자인이 소스를 일시 중지할 수 있게 해주는 내부 버퍼가 없습니다.

VisualApplets 디자인의 중단 불가능한 소스#

Camera operators는 가장 일반적인 중단 불가 소스입니다. 카메라로부터 픽셀을 수신하여 출력 링크로 전달합니다. 역압을 흡수할 수 있는 버퍼가 없으며 카메라에 전송 중지를 명령할 수 없습니다.

대조적으로, stoppable 소스에는 다음과 같은 연산자가 포함됩니다. CreateBlankImage 및 CoefficientBuffer.

중단 불가능한 소스 연결#

모든 O-type 및 P-type 연산자는 중단 불가 소스의 다운스트림에 위치할 수 있습니다. 무한 소스 속성은 모듈이 스트림을 제어 가능(controllable) 스트림으로 변환할 때까지 디자인 내의 이러한 연산자를 통해 전파됩니다.

일부만 M-type 연산자는 중단 불가 소스를 직접 수용합니다. 이들은 주로 memory operators 예를 들어 LineBuffer, ImageBuffer, ImageFifo및 FrameBuffer. 특정 M-type 연산자가 무한 소스를 수용하는지 여부는 연산자 도움말 및 다음 문서에 설명되어 있습니다. Operator 레퍼런스.

무한 소스를 수용하지 않는 M-type 연산자에 중단 불가 소스를 연결하면 Design Rules Check Level 2에서 infinite source 오류를 보고합니다. 앱릿을 빌드하기 전에 이 오류를 수정하십시오.

M-type, O-type, P-type 동작 및 흐름 제어 규칙에 대해서는 Operator Types and Synchronization 튜토리얼 주제를 참조하십시오.

무한 소스를 제어하는 두 가지 옵션이 있습니다:

  • 다음과 같은 버퍼 연산자와 함께 사용: LineBuffer, ImageBuffer, 또는 ImageFifo
  • 을(를) 통해 Overflow (으)로 줄어듭니다.

카메라 경로의 경우 Basler는 기본값으로 DRAM 버퍼(LineBuffer 또는 ImageBuffer)를 권장합니다. 다음을 사용하십시오 ImageFifo 소규모 디커플링 작업에만 해당합니다. 이 주제 시작 부분의 주요 용어(Key Terms) 상자 및 다음을 참조하십시오. Memory 요소 튜토리얼 항목.

정보

The Overflow 오퍼레이터( Synchronization 라이브러리는 처리할 수 없는 프레임을 잘라냅니다. 이로 인해 프레임 길이가 달라지며, 일부 다운스트림 연산자는 이를 처리하지 못할 수 있습니다. 이 연산자를 다음 항목과 혼동하지 마십시오. 산술 오버플로우 (Bit Width에 더 이상 맞지 않는 결과; 참조: Bit Arithmetic Tutorial topic) 또는 다음 항목과 함께 Overflow 상태 파라미터 버퍼 오퍼레이터에서 (버퍼가 가득 찬 경우; 참조: Memory 요소 튜토리얼 항목).

The Overflow 오퍼레이터는 자체적으로 데이터를 버퍼링하지 않습니다. 따라서 Basler에서는 Overflow 오퍼레이터를 항상 버퍼 오퍼레이터와 함께 사용할 것을 권장합니다.

버퍼 오퍼레이터 사용#

버퍼 오퍼레이터는 중단할 수 없는 스트림을 제어 가능한 스트림으로 변환합니다. 다운스트림 모듈이 더 많은 데이터를 받을 준비가 되지 않은 경우에도 입력에서 데이터를 수용합니다. 데이터를 내부에 저장하고 다운스트림 모듈이 준비되면 전달합니다.

일반적인 디커플링 오퍼레이터에는 다음이 포함됩니다. LineBuffer, ImageBuffer, ImageFifo및 무한 소스를 지원하는 기타 메모리 오퍼레이터. 카메라 버스트를 흡수해야 하거나 다운스트림 처리가 필요할 때 DRAM 버퍼(LineBuffer 또는 ImageBuffer)를 중단할 수 없는 소스 바로 뒤에 배치하고 DmaToPC 에서 흐름 제어를 적용해야 합니다. 사용 ImageFifo 필요한 버퍼가 작은 경우에만.

정보

The ImageFifo 오퍼레이터는 이미지의 일부분만 버퍼링합니다. 결과적으로 내부적으로 감지되거나 처리되지 않는 FIFO 오버플로의 위험이 큽니다.

만약 당신이 ImageFifo 오퍼레이터를 사용하여 중단할 수 없는 스트림을 버퍼링하려는 경우, Basler에서는 ImageFifo 선행 Overflow 오퍼레이터와 조합하여 사용할 것을 권장합니다. 이를 통해 들어오는 데이터를 적절하게 처리하고 제어할 수 없는 오버플로 상태를 방지할 수 있습니다.

조합하는 것의 대안으로 Overflow 오퍼레이터를 메모리 오퍼레이터와 함께 사용하는 경우, 다음을 사용할 수 있습니다. ImageFlowControl 더 안전하고 강력한 처리를 위한 오퍼레이터. 이것은 버퍼링 기능을 결합합니다. ImageFifo 통합 오버플로 처리가 포함되어 있습니다.

일반적인 수집 경로는 다음과 같습니다.

Camera → LineBuffer 또는 ImageBuffer (DRAM) → 추가 처리 → DmaToPC

소규모 디커플링의 경우에만 DRAM 버퍼 대신 ImageFifo를 사용할 수 있으며, 가급적 Overflow와 함께 사용하거나 ImageFlowControl을 사용하십시오.

버퍼 오퍼레이터로 무한 소스 제어하기

버퍼가 없으면 DmaToPC 또는 입력을 일시 중지하는 다른 오퍼레이터가 카메라 스트림을 조절할 수 없습니다. 이 설계는 DRC에 실패하거나 하드웨어에서 교착 상태(deadlock)의 위험이 있습니다.

무한 소스를 제어하기 위해 버퍼 오퍼레이터를 사용할 때는 다음을 설정해야 합니다. InfiniteSource 버퍼 오퍼레이터의 파라미터를 다음으로 설정: ENABLED.

InfiniteSource가 ENABLED로 설정된 버퍼 오퍼레이터

카메라 모델에서 InfiniteSource 버퍼 오퍼레이터의 파라미터가 다음으로 설정된 경우: DISABLED, DRC Level 2가 실패합니다:

InfiniteSource가 DISABLED로 설정된 버퍼 오퍼레이터

버퍼 크기 지정, FillLevel및 RAM 사용량에 대해서는 다음을 참조하십시오. Memory 요소 튜토리얼 항목.

InfiniteSource 파라미터 설정#

많은 버퍼 오퍼레이터에는 다음 파라미터가 있습니다. InfiniteSource. 다음으로 설정: ENABLED 오퍼레이터 입력이 중지할 수 없는 소스에 연결된 경우. 다음으로 설정: DISABLED 입력이 중지 가능한 스트림에서 오는 경우.

다음 규칙을 따르십시오:

  • 설정 InfiniteSource 에서 ENABLED 모듈 입력이 실제로 중지할 수 없는 소스에 연결된 경우에만 해당됩니다.
  • 설정 InfiniteSource 에서 DISABLED 중지 가능한 스트림에서 데이터를 수신하는 버퍼 오퍼레이터의 경우.
  • 확실하지 않은 경우, 먼저 DISABLED (을)를 설정하십시오. 실행 Design Rules Check Level 2 및 검사에서 플래그가 지정된 모듈을 조정합니다.

모듈 속성을 변경하려면 모듈을 더블 클릭하여 Module Properties을(를) 엽니다. Apply(으)로 파라미터 변경 사항을 적용합니다. 링크 및 모듈 속성은 Parameterization 튜토리얼 항목을 참조하십시오.

다운스트림 처리가 일시 중지될 수 있을 때 Overflow 오퍼레이터 사용#

The Overflow 오퍼레이터는 일시적으로 차단될 수 있는 처리 과정에서 중지할 수 없는 수신 2D 스트림을 분리합니다. 자체 내부 버퍼가 없으므로 Basler에서는 Overflow 오퍼레이터를 항상 버퍼 오퍼레이터와 함께 사용할 것을 권장합니다. 출력 데이터 차단으로 인해 버퍼가 Fill될 때, Overflow 오퍼레이터는 현재 프레임을 자르고 손상된 것으로 표시하며, 출력이 다시 데이터를 수락할 때까지 추가 프레임을 건너뛸 수 있습니다.

설정하려는 속성을 식별하려면 Overflow 소스를 중지할 수 없고 다운스트림 오퍼레이터가 라인 또는 프레임 버퍼가 커버할 수 있는 것보다 더 오래 데이터 흐름을 일시 중지할 수 있는 경우.

Overflow 오퍼레이터로 무한 소스 제어하기

배치할 때 Overflow 중단할 수 없는 소스와 다음과 같은 Memory operator 사이의 operator FrameBuffer, InfiniteSource 해당 Memory operator의 파라미터 DISABLED. 해당 Overflow 오퍼레이터가 이미 중단할 수 없는 스트림의 오버플로를 처리합니다. 활성화 InfiniteSource 해당 토폴로지의 메모리 모듈 설정이 잘못되어 DRC 오류가 발생합니다.

The Overflow operator는 프레임을 자를 때 직사각형이 아닌 프레임을 생성할 수 있습니다. 후속 operator가 짧아진 마지막 라인을 허용하는지 확인하십시오. operator 설명을 참조하십시오. Overflow (Operator Reference 내용).

정보

조합하는 것의 대안으로 Overflow 오퍼레이터를 메모리 오퍼레이터와 함께 사용하는 경우, 다음을 사용할 수 있습니다. ImageFlowControl 더 안전하고 강력한 처리를 위한 오퍼레이터. 이것은 버퍼링 기능을 결합합니다. ImageFifo 통합 오버플로 처리가 포함되어 있습니다.

DRC를 사용한 디자인 검증#

소스, 버퍼, DMA 경로를 연결한 후 Analysis → Design Rules Check Level 2를 실행합니다. Level 1은 시뮬레이션 및 빌드 전에도 자동으로 실행됩니다.

DRC Level 2 확장된 규칙을 검사하고 FPGA 리소스를 추정합니다. 중단할 수 없는 소스가 무한 소스를 허용하지 않는 M 타입 operator에 공급되거나, 다음의 경우 무한 소스 오류를 보고합니다. InfiniteSource 설정이 실제 연결과 일치하지 않습니다.

DRC log를 읽고 강조 표시된 모듈이나 링크를 수정합니다. 전체 워크플로는 From Empty Design to Running Applet 튜토리얼 항목을 참조하십시오.

일반적인 파이프라인 예시#

버퍼를 통한 카메라에서 DMA로의 연결#

  1. camera operator를 소스로 배치합니다.
  2. 삽입 LineBuffer 또는 ImageBuffer 이미지 경로 상의 (또는 ImageFifo 소규모 디커플링용으로만 사용, 위 참조).
  3. 설정 InfiniteSource 에서 ENABLED 버퍼 상의.
  4. 프로세싱 operator 연결 및 DmaToPC.
  5. DRC Level 1 및 Level 2를 실행한 다음 시뮬레이션 또는 빌드합니다.

2단계와 3단계가 없으면 DRC Level 2는 잘못된 연결에 대해 무한 소스 오류를 보고합니다.

Overflow 및 버퍼가 있는 중단 불가능한 소스#

  1. 중단할 수 없는 소스를 연결합니다. Overflow.
  2. 연결 Overflow 에서 ImageFifo, LineBuffer, 또는 다른 버퍼 operator.
  3. 설정 InfiniteSource 에서 DISABLED 다음에 버퍼상의 Overflow.
  4. 추가 처리를 연결하고 DRC Level 2를 실행합니다. 무한 소스 또는 InfiniteSource 불일치가 남아있지 않은지 확인합니다.

오버플로우 operator 및 버퍼가 있는 무한 소스

Overflow 출력이 중단되면 프레임을 자르거나 건너뜁니다. 다음 버퍼는 일시 중지될 수 있는 후속 처리를 위해 데이터를 저장합니다. 해당 버퍼가 없으면, Overflow 단독으로는 중단할 수 없는 소스가 후속 모듈의 일시 중지와 분리될 수 없습니다.