콘텐츠로 바로 가기

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

이 주제는 생성된 FPGA 파이프라인이 적용될 때 이미지 데이터 스트림이 어떻게 동작하는지 설명합니다. 유량 제어. 이 주제를 읽은 후에는 다음 둘 사이의 차이점을 이해하게 될 것입니다. 막을 수 있는 및 막을 수 없는 스트림, 어떻게 무한한 원천 예를 들어 카메라 조작자가 디자인에 어떻게 녹아드는지, 그리고 버퍼 조작자를 어떻게 활용하는지, 그 InfiniteSource 매개변수, 그리고 Overflow 연산자를 사용하여 연결 오류와 교착 상태를 방지합니다.

핵심 용어

중지 불가능한 스트림은 지속적으로 흐릅니다. 중지 불가능한 소스는 생성된 FPGA 설계의 흐름 제어 로직에 의해 일시 중지될 수 없습니다. 대표적인 예로, 지속적으로 픽셀을 전송하는 카메라를 들 수 있습니다. 이와 대조적으로, 중지 가능한 스트림은 다음 연산자가 준비되지 않았을 때 일시 중지될 수 있습니다. 카메라와 하류 처리 단계 사이에 버퍼를 배치하면, 중지 불가능한 스트림을 중지 가능한 스트림으로 전환하는 경우가 많습니다.

따라서 카메라 뒤에는 버퍼를 배치하십시오. 카메라의 연속 촬영 데이터를 처리하기 위해서는 DRAM 연산자를 사용하는 것이 좋습니다: LineBuffer imaFlex에서, 또는 ImageBuffer microEnable 5에서 사용 ImageFifo (FPGA 내부 메모리)는 소량의 디커플링, 예를 들어 그 전에 발생하는 짧은 지연과 같은 경우에만 사용됩니다. SYNC. 만약 ~를 사용한다면 ImageFifo 끊임없이 이어지는 흐름 속에서, 이를 다음의 내용과 결합하여 Overflow 연산자, 또는 다음을 사용하십시오 ImageFlowControl 대신. 참조: Memory 요소 튜토리얼 항목.

링크 연결에 관한 공식적인 규칙은 사용자 설명서의 ‘무한 소스 / 카메라 연결’ 항목을 참조하십시오. 오퍼레이터 형태와 모듈이 데이터 흐름을 일시 중지하거나 보류하는 방법에 대해서는 ‘오퍼레이터 유형 및 동기화’ 튜토리얼 항목을 참조하십시오.

중지 가능한 스트림과 중지 불가능한 스트림#

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

흐름 제어 기능을 통해 설계를 훼손하지 않고 흐름을 멈출 수 있는 경우, 해당 스트림은 중단 가능한 스트림입니다. 흐름 제어 기능으로 소스를 멈출 수 없는 경우, 해당 스트림은 중단 불가능한 스트림입니다. 다음 모듈이 바쁜 상태라 하더라도 소스는 계속해서 데이터를 전달합니다.

중단 불가능한 스트림은 무한 소스라고도 합니다. 이 명칭은 이미지 크기가 무제한이라는 의미가 아니라, 흐름 제어를 의미합니다. 이 스트림에는 생성된 FPGA 설계가 소스를 일시 중지할 수 있게 해주는 내부 버퍼가 없습니다.

VisualApplets 설계에서 중단 불가능한 소스#

카메라 운영자는 가장 흔한 ‘중지 불가능한’ 소스입니다. 이들은 카메라로부터 픽셀을 수신하여 출력 링크를 통해 전달합니다. 이들은 역압을 흡수할 수 있는 버퍼가 없으며, 카메라에 전송을 중지하라고 명령할 수도 없습니다.

반면, 차단 가능한 소스에는 다음과 같은 연산자가 포함됩니다. CreateBlankImage 및 CoefficientBuffer.

중단 불가능한 소스 연결하기#

모든 O형 및 P형 연산자는 중지 불가능한 소스의 하류에 위치할 수 있습니다. 무한 소스 속성은 설계 내의 이러한 연산자들을 통해 전파되며, 모듈이 해당 스트림을 제어 가능한 스트림으로 변환할 때까지 지속됩니다.

일부만 M-type 연산자는 중지 불가능한 소스를 직접 받아들입니다. 주로 다음과 같은 것들이 있습니다. 메모리 연산자 예를 들어 LineBuffer, ImageBuffer, ImageFifo및 FrameBuffer. 특정 M형 연산자가 무한 소스를 허용하는지 여부는 해당 연산자의 도움말과 Operator 레퍼런스.

무한 소스를 허용하지 않는 M형 연산자에 중지 불가능한 소스를 연결하면, 설계 규칙 검사 레벨 2에서 무한 소스 오류가 보고됩니다. 애플릿을 빌드하기 전에 이 오류를 수정하십시오.

M형, O형, P형의 동작 방식과 흐름 제어 규칙에 대해서는 ‘연산자 유형 및 동기화’ 튜토리얼 항목을 참조하십시오.

무한한 소스를 제어하는 데는 두 가지 방법이 있습니다:

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

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

정보

The Overflow 오퍼레이터( Synchronization library는 처리할 수 없는 프레임을 잘라냅니다. 이로 인해 프레임 길이가 제각각이 되며, 후단 작업자 중 일부는 이를 처리하지 못할 수 있습니다. 이 연산자를 다음 연산자와 혼동하지 마십시오. 산술 오버플로우 (더 이상 비트 폭에 맞지 않는 결과; 참조: Bit Arithmetic (튜토리얼 주제) 또는 Overflow 상태 파라미터 버퍼 연산자에 관하여 (버퍼가 꽉 찼습니다; 참조: Memory 요소 튜토리얼 항목).

The Overflow 이 연산자는 데이터를 직접 버퍼링하지 않습니다. 따라서 Basler는 다음을 사용할 것을 권장합니다. Overflow 이 연산자는 항상 버퍼 연산자와 함께 사용됩니다.

버퍼 연산자 사용하기#

버퍼 연산자는 중단할 수 없는 데이터 스트림을 제어 가능한 스트림으로 변환합니다. 이 연산자는 하류 모듈이 더 많은 데이터를 수신할 준비가 되어 있지 않은 경우에도 입력 데이터를 받아들입니다. 데이터를 내부적으로 저장해 두었다가, 하류 모듈이 준비되면 이를 전달합니다.

대표적인 디커플링 연산자에는 다음이 포함됩니다. 라인 버퍼, ImageBuffer, ImageFifo, 그리고 무한 소스를 지원하는 기타 메모리 연산자. DRAM 버퍼(LineBuffer 또는 ImageBuffer) 카메라에서 쏟아져 나오는 이미지를 처리해야 하거나, 하류 처리 단계에서 또는 DmaToPC 흐름 제어를 반드시 적용해야 합니다. 다음을 사용하십시오. ImageFifo 필요한 버퍼 크기가 작을 때에만.

정보

The ImageFifo 이 연산자는 이미지의 아주 작은 부분만 버퍼링합니다. 그 결과, FIFO 오버플로우가 발생할 위험이 상당히 높으며, 이는 내부적으로 감지되거나 처리되지 않습니다.

만약 ~를 사용하려면 ImageFifo 중단할 수 없는 스트림을 버퍼링하기 위한 연산자로, Basler는 다음을 사용할 것을 권장합니다. ImageFifo 앞에 오는 것과 함께 Overflow 연산자. 이를 통해 들어오는 데이터를 올바르게 처리하고, 통제되지 않은 오버플로 현상을 방지할 수 있습니다.

~을 결합하는 대신, Overflow 메모리 연산자와 연산자를 결합할 때는 다음을 사용할 수 있습니다. ImageFlowControl 더 안전하고 안정적인 처리를 위한 연산자입니다. 이 연산자는의 버퍼링 기능을 결합하여 ImageFifo 통합형 오버플로 처리 기능이 포함되어 있습니다.

일반적인 인수 절차는 다음과 같습니다:

카메라 → 라인 버퍼 또는 이미지 버퍼 (DRAM) → 추가 처리 → DmaToPC

단순한 디커플링만 필요한 경우에는 DRAM 버퍼 대신 ImageFifo를 사용하는 것이 좋으며, 가급적 Overflow와 함께 사용하거나 ImageFlowControl을 사용할 수 있습니다.

버퍼 연산자를 사용하여 무한 소스 제어하기

버퍼가 없으면 DmaToPC나 입력을 일시 중지하는 다른 연산자는 카메라 스트림의 전송 속도를 조절할 수 없습니다. 이러한 설계는 DRC를 통과하지 못하거나 하드웨어에서 교착 상태가 발생할 위험이 있습니다.

버퍼 연산자를 사용하여 무한 소스를 제어할 때는 반드시 InfiniteSource 버퍼 연산자의 매개변수를 ENABLED.

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

카메라 모델에서 InfiniteSource 버퍼 연산자의 매개변수가 다음과 같이 설정되어 있습니다. DISABLED, DRC 레벨 2는 실패할 것입니다:

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

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

InfiniteSource 매개변수 설정#

많은 버퍼 연산자는 해당 매개변수를 노출합니다. InfiniteSource. 다음으로 설정하세요: ENABLED 연산자 입력이 중지할 수 없는 소스에 연결될 때. 다음으로 설정하십시오. DISABLED 입력이 중지 가능한 스트림에서 오는 경우.

다음 규칙을 따르세요:

  • 설정 InfiniteSource 에서 ENABLED 모듈 입력이 실제로 차단 불가능한 전원에 연결된 경우에만.
  • 설정 InfiniteSource 에서 DISABLED 중단 가능한 스트림에서 데이터를 수신하는 버퍼 연산자에 대해.
  • 확실하지 않다면, 다음을 설정하세요. DISABLED 먼저. 실행 Design Rules Check Level 2 그리고 검사에서 문제가 발견된 모듈을 수정합니다.

모듈 속성을 변경하려면 모듈을 두 번 클릭하여 ‘모듈 속성’을 엽니다. ‘적용’을 클릭하여 매개변수 변경 사항을 적용합니다. 링크 및 모듈 속성에 대해서는 ‘매개변수 설정 자습서’ 항목을 참조하십시오.

후단 처리가 일시 중지될 수 있을 때 오버플로 연산자 사용하기#

The Overflow 이 연산자는 일시적으로 차단될 수 있는 처리 과정으로부터 중단할 수 없는 2D 입력 스트림을 분리합니다. 이 연산자 자체에는 내부 버퍼가 없으므로, Basler에서는 Overflow 연산자는 항상 버퍼 연산자와 함께 사용됩니다. 출력 데이터가 차단되어 버퍼가 가득 차면, Overflow 이 연산자는 현재 프레임을 잘라내고, 이를 손상된 것으로 표시한 뒤, 출력이 다시 데이터를 수신할 때까지 이후 프레임을 건너뛸 수 있습니다.

설정하려는 속성을 식별하려면 Overflow 소스를 중지할 수 없고, 하류 운영자가 라인 또는 프레임 버퍼가 처리할 수 있는 범위보다 더 오랜 시간 동안 데이터 흐름을 일시 중지할 수 있는 경우.

오버플로우 연산자를 이용한 무한 소스의 제어

다음과 같이 배치하면 Overflow 중지할 수 없는 소스와 다음과 같은 메모리 연산자 사이의 연산자 FrameBuffer, InfiniteSource 해당 메모리 연산자의 매개변수를 DISABLED. 해당 Overflow 오퍼레이터가 이미 중단할 수 없는 스트림의 오버플로를 처리합니다. 활성화 InfiniteSource 해당 토폴로지의 메모리 모듈에 대한 설정이 잘못되어 DRC 오류가 발생합니다.

The Overflow 이 작업기는 프레임을 절단할 때 직사각형이 아닌 프레임이 생성될 수 있습니다. 후속 작업기들이 마지막 줄이 짧아진 것을 허용하는지 확인하십시오. 작업기 설명을 참조하십시오. Overflow (Operator Reference 내용).

정보

~을 결합하는 대신, Overflow 메모리 연산자와 연산자를 결합할 때는 다음을 사용할 수 있습니다. ImageFlowControl 더 안전하고 안정적인 처리를 위한 연산자입니다. 이 연산자는의 버퍼링 기능을 결합하여 ImageFifo 통합형 오버플로 처리 기능이 포함되어 있습니다.

DRC를 사용한 디자인 검증#

소스, 버퍼 및 DMA 경로를 배선한 후 ‘분석 → 설계 규칙 검사 레벨 2’를 실행하십시오. 레벨 1은 시뮬레이션 및 빌드 전에 자동으로 실행됩니다.

DRC Level 2 확장된 규칙을 확인하고 FPGA 리소스를 추정합니다. 중지 불가능한 소스가 무한 소스를 허용하지 않는 M형 연산자에 입력되거나, 다음의 경우 무한 소스 오류를 보고합니다. InfiniteSource 설정이 실제 연결과 일치하지 않습니다.

DRC 로그를 확인하고 강조 표시된 모듈이나 링크를 수정하십시오. 전체 워크플로에 대해서는 “빈 디자인에서 실행 가능한 애플릿까지” 튜토리얼 항목을 참조하십시오.

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

버퍼를 통한 카메라에서 DMA로 전송#

  1. 카메라 조작자를 소스로 지정하세요.
  2. 삽입 LineBuffer 또는 ImageBuffer 이미지 경로에서 (또는 ImageFifo (단, 작은 디커플링에만 해당; 위 내용 참조).
  3. 설정 InfiniteSource 에서 ENABLED 버퍼에서.
  4. 처리 연산자를 연결하고 DmaToPC.
  5. DRC 레벨 1과 레벨 2를 실행한 다음, 시뮬레이션을 수행하거나 빌드하십시오.

2단계와 3단계를 거치지 않으면, DRC 레벨 2는 유효하지 않은 연결에 대해 무한 소스 오류를 보고합니다.

오버플로우 및 버퍼를 갖춘 중지 불가능한 소스#

  1. 멈출 수 없는 공급원을 다음과 연결하십시오. Overflow.
  2. 연결 Overflow 에서 ImageFifo, LineBuffer, 또는 다른 버퍼 연산자.
  3. 설정 InfiniteSource 에서 DISABLED 버퍼에 다음을 추가한 후 Overflow.
  4. 후속 처리를 연결하고 DRC 레벨 2를 실행합니다. 무한 소스나 InfiniteSource 불일치가 여전히 남아 있습니다.

오버플로우 연산자와 버퍼가 포함된 무한 소스

Overflow 출력이 차단되면 프레임이 잘리거나 건너뜁니다. 다음 버퍼는 일시 중지될 수 있는 후단 처리를 위해 데이터를 저장합니다. 이 버퍼가 없다면, Overflow 그것만으로는 중단할 수 없는 소스를 하류 모듈의 일시 중지와 분리할 수 없다.