Parameterization#
핵심 용어
링크(link)는 두 모듈 간의 연결입니다. Link properties는 픽셀당 비트 수 또는 최대 이미지 크기 등 해당 연결의 데이터 포맷을 정의합니다. 이러한 속성은 디자인 타임에 VisualApplets에서만 설정할 수 있습니다. Module parameters는 임계값이나 카메라 형식 등 연산자 자체의 설정입니다. 입력한 값이 적용되지 않는 경우, 링크 속성이 모듈이 수용할 수 있는 범위를 제한하고 있기 때문인 경우가 많습니다.
정적(Static) 매개변수는 PC의 VisualApplets에서 만 변경할 수 있습니다(디자인 타임). 동적(Dynamic) 매개변수는 호스트 소프트웨어가 프레임 그래버의 애플릿과 통신할 때 런타임에도 변경할 수 있습니다. VisualApplets에서 동적 매개변수에 설정한 값은 런타임의 기본값이 됩니다. VisualApplets에서의 시뮬레이션은 런타임이 아닙니다.
링크 속성 및 모듈 매개변수#
VisualApplets는 두 가지 종류의 설정을 사용합니다.
Link properties는 links에 설정되며 최대 이미지 너비 및 높이, Bit Width, Parallelism, 이미지 프로토콜, Color Format, 커널 크기 등을 정의합니다. 링크 속성은 링크에 연결된 연산자를 제한합니다. 모듈 매개변수가 링크 속성과 충돌하는 경우, VisualApplets는 값을 직접 조정하거나 오류를 보고합니다. 링크 속성은 항상 정적입니다. 즉, 디자인 단계의 VisualApplets에서만 변경할 수 있습니다. 링크 속성은 파이프라인을 통해 전파되며, 연산자에 의해 변경될 때까지 후속의 모든 연산자에 영향을 미칩니다.
Module parameters는 작동 모드, 이미지 위치, 관심 영역(ROI) 크기 등 operator behavior를 정의합니다. 이 매개변수는 정적일 수도 있고 동적일 수도 있습니다. 정적 매개변수는 디자인 타임에만 변경할 수 있습니다. 동적 매개변수는 호스트 소프트웨어에서 런타임에 변경할 수도 있습니다. 일반적으로 정적 매개변수는 동적 매개변수보다 적은 FPGA 리소스를 사용합니다. 동적 매개변수는 애플릿이 실행되는 동안 카메라 형식이나 처리 설정을 전환해야 할 때 유용합니다. 모듈 매개변수는 종종 링크 속성에 의해 제한됩니다. 값을 설정할 수 없고 VisualApplets가 이를 자동으로 보정하는 경우, 연결된 링크의 링크 속성을 확인하십시오. 또한 많은 연산자가 출력에 링크 속성을 정의하므로, 디자인의 한쪽 변경 사항이 반대쪽으로 전파될 수 있습니다.
다음에 대한 모듈 속성 및 링크 속성 CxpCamera 연산자:

링크에 적용되는 공식적인 규칙은 사용자 매뉴얼의 Rules of Links를 참조하십시오. VisualApplets GUI의 편집 워크플로는 사용자 매뉴얼의 Parameterization을 참조하십시오.
Link Properties#
모듈 간의 각 링크는 링크 속성에 의해 정의됩니다. 모든 링크는 동일한 속성 세트를 가집니다. 링크 속성은 항상 정적입니다. 즉, 디자인 단계의 VisualApplets에서만 변경할 수 있습니다. 링크를 더블 클릭하거나 링크를 마우스 우클릭하고 Properties를 선택하여 링크 속성을 엽니다.
다음 링크 속성은 연결을 통해 이미지 데이터가 전송되는 방식을 정의합니다.
-
BitWidth: 링크상의 픽셀당 비트 수입니다. 컬러 링크의 경우 Bit Width는 모든 색상 성분을 합한 것을 의미합니다. 카메라 연산자는 종종 초기 Bit Width를 설정합니다. 다음 항목이 있는 링크의 경우ImageProtocol=VALT_SIGNAL, Bit Width는 항상 1비트입니다.- 일부 연산자에서는 출력을 설정할 수 있습니다.
BitWidth예를 들어 링크에 직접 적용됩니다.CastBitWidth,CONST, 또는ModuloCount. 다른 항목은 출력값을 도출합니다.BitWidth입력 링크 속성 또는 모듈 파라미터에서 자동으로 도출됩니다. 예를 들어,ShiftLeft파라미터의 값을 추가합니다.Shift입력 Bit Width에 더하며,MULT입력 Bit Width의 합계를 사용합니다. 다음과 같은 오퍼레이터는Coordinate_X및Coordinate_Y출력을 계산합니다BitWidthfromMaxImageWidth및MaxImageHeight. 출력이 자동인 오퍼레이터의 경우BitWidth, Operator 레퍼런스 표시됩니다 auto (으)로 설정합니다. 지원되는 Link Format 표이며, 일반적으로 링크에서 값을 편집할 수 없습니다. 오퍼레이터가 출력을 변경할 때BitWidth, VisualApplets은 다른 오퍼레이터가 이를 다시 변경할 때까지 다운스트림 링크로 새로운 값을 전파합니다.
- 일부 연산자에서는 출력을 설정할 수 있습니다.
-
Arithmetic: 링크에 사용되는 Arithmetic을 정의합니다. Arithmetic은 다음과 같을 수 있습니다.Signed또는Unsigned.- 다음으로 설정된 경우
Signed, 2의 보수 Arithmetic이 사용됩니다. 부호 비트는 구성된 Bit Width에 포함됩니다. - 이미지 프로토콜의 경우
VALT_SIGNAL, 구성된 Bit Width에 관계없이 Arithmetic은 항상Unsigned입니다.
- 다음으로 설정된 경우
-
Parallelism: 하나의 Base Design Clock 주기 내에 두 모듈 간에 병렬로 전송되는 픽셀 수입니다. 자세한 내용은 다음을 참조하십시오. Parallelism 튜토리얼 항목. -
KernelColumns및KernelRows: 필터 오퍼레이터에 필요한 클록 주기당 인접 픽셀 수입니다. 이미지 프로토콜의 경우VALT_SIGNAL, 두 값 모두 항상 1입니다. 자세한 내용은 다음을 참조하십시오. Kernel 작업 튜토리얼 항목. -
ImageProtocol: 링크에서 데이터 스트림의 구조를 정의합니다. 다음과 같은 이미지 프로토콜을 사용할 수 있습니다.VALT_IMAGE2D: 예를 들어 Area Scan 카메라의 2차원 이미지(행 끝 및 프레임 끝 마커 포함).VALT_LINE1D: 예를 들어 Line Scan 카메라의 1차원 라인 데이터.VALT_PIXEL0D: 이미지 치수 정보가 없는 연속적인 픽셀 스트림.VALT_SIGNAL: 트리거 로직 등에서 모든 클럭 사이클마다 유효한 단일 비트 신호입니다.
디자인 내에서 이미지 프로토콜이 변경될 수 있습니다. 예를 들어,
SplitImage은(는) 1D 이미지 스트림을 지정된 높이의 2D 이미지로 자를 수 있습니다. 자세한 내용은 다음을 참조하세요. 이미지 프로토콜, 이미지 크기 및 데이터 구조 사용 설명서 참조. -
ColorFormat및ColorFlavor: 이 속성은 픽셀 데이터가 표현되는 방식(예: 그레이 또는 RGB)을 설명합니다. 일부 오퍼레이터는 특정 Color Format만 지원합니다. 일부 플랫폼에서는 CoaXPress 카메라 오퍼레이터가 그레이 형식만 허용합니다. 컬러 출력을 생성하려면 다음과 같은 오퍼레이터를 사용하십시오.MergeComponents. 다음과 같은 오퍼레이터는MergeComponents,ParallelUp및CastBitWidth색상 관련 링크 속성을 변경할 수 있습니다. -
MaxImageWidth및MaxImageHeight: 링크가 수용할 수 있는 최대 이미지 크기입니다. 링크의 이미지는 이 값을 초과할 수 없지만, 이보다 작을 수는 있습니다. 이러한 속성은 다음과 같이 라인 또는 전체 이미지를 버퍼링하는 오퍼레이터와 관련이 있습니다.ImageFifo,LineBuffer, 또는ColMax. 처리 경로에서 가장 큰 이미지 이상으로 설정해야 합니다. 값이 너무 작으면 Design Rules Check (DRC) 오류가 발생합니다. 값이 클수록 더 많은 FPGA 리소스가 사용됩니다. 카메라 오퍼레이터 또는 다음과 같은 오퍼레이터는SetDimension종종 이러한 속성을 설정합니다.MaxImageHeight은(는) 다음 경우에 아무런 효과가 없습니다.ImageProtocol이 다음으로 설정된 경우VALT_LINE1D,VALT_PIXEL0D, 또는VALT_SIGNAL.
정보
선택한 최대 이미지 크기와 Parallelism이 클수록 디자인이 더 많은 FPGA 리소스를 소모합니다. Basler는 애플리케이션에 필요한 수준으로만 이러한 값을 설정할 것을 권장합니다.
각 오퍼레이터는 허용하는 출력 링크 속성과 고정된 값을 정의합니다. 업스트림 오퍼레이터가 편집을 허용하지 않기 때문에 링크의 일부 속성이 비활성화될 수 있습니다. Operator Reference에는 각 오퍼레이터에 허용되는 링크 형식이 설명되어 있습니다.
링크 속성 전파#
링크 속성은 오퍼레이터에 의해 정의됩니다. 오퍼레이터의 출력 링크에서 일부 속성을 직접 변경할 수 있습니다. 다른 속성은 고정되어 있거나 모듈 파라미터 또는 입력 링크 속성에서 파생됩니다. 링크 속성을 변경하면 VisualApplets는 후속 모듈과 링크를 통해 변경 사항을 전파합니다.
값을 변경한 후 속성 대화 상자에서 Apply를 클릭합니다. 변경 사항이 수락되면 디자인창에서 영향을 받는 링크가 녹색으로 바뀝니다. 녹색은 VisualApplets가 업데이트된 링크 속성을 전파하고 유효성을 검사했음을 의미합니다. 전체 디자인에 대한 신호등의 "모두 유효함" 표시가 아닙니다.

링크 속성은 오퍼레이터가 변경할 때까지 모듈을 통해 전파됩니다. 다운스트림 링크에서 속성 편집을 허용하지 않는 경우, 해당 속성을 변경할 수 있는 업스트림 오퍼레이터나 중간 오퍼레이터에서 설정해야 합니다. 예를 들어, ImageBuffer 오퍼레이터는 링크 Bit Width를 변경하지 않습니다. 카메라 출력 링크에서 Bit Width를 설정하거나 다음과 같은 오퍼레이터를 삽입해야 합니다. ConvertPixelFormat 또는 ShiftLeft Bit Width를 변경합니다.
링크 속성 변경은 모듈 파라미터와 충돌할 수도 있습니다. 이 경우 VisualApplets는 모듈과 영향을 받는 파라미터를 빨간색으로 표시합니다.

실행 Design Rules Check Level 1 그리고 DRC 로그를 읽어 오류 위치를 파악하세요. 일반적인 원인으로는 다음을 초과하는 Region of Interest, MaxImageWidth 또는 MaxImageHeight또는 링크 Bit Width에서 허용하는 범위를 벗어난 파라미터 값이 있습니다.

모듈 매개변수#
모듈 매개변수는 연산자마다 다릅니다. 이 매개변수는 연산자가 데이터를 처리하는 방식을 제어합니다. 모듈 매개변수는 정적 또는 동적일 수 있습니다. 정적 매개변수는 설계 시점에 ‘ VisualApplets ’에서만 설정할 수 있습니다. 동적 매개변수는 실행 시점에 호스트 소프트웨어에서 ‘ microDisplay X ’, ‘ Framegrabber SDK ’ 또는 pylon을 통해 변경할 수도 있습니다. ‘Module Properties’ 대화 상자의 ‘Parameter Type’ 열에는 매개변수가 정적인지 동적인지 표시됩니다:

매개변수를 편집한 후에는 ‘모듈 속성’ 대화 상자에서 ‘적용’을 클릭하십시오. ‘ VisualApplets ’은 허용된 범위 밖인 새 값을 무시합니다. 일부 매개변수는 비활성화되어 있어 편집할 수 없습니다. 매개변수가 활성화되었는지 여부는 다른 매개변수 설정이나 입력/출력 링크 형식에 따라 달라집니다. 특정 연산자의 모듈 속성에 대한 자세한 내용은 사용 중인 연산자에 대한 ‘연산자 참조’를 확인하십시오.
샘플 설계에서 링크 및 모듈 매개변수를 설정하는 단계별 안내는 사용자 설명서의 “하드웨어 애플릿: 아이디어에서 애플리케이션까지”를 참조하십시오.
차원 매개변수#
다음과 같은 많은 사업자들, 예를 들어 LineBuffer, FrameBufferMultiRoi및 SelectROI, 매개변수를 통해 관심 영역(ROI)을 정의합니다. XLength, YLength, XOffset및 YOffset. 관심 영역은 연결된 링크의 최대 이미지 크기에 맞아야 합니다. 만약 XLength + XOffset ~을 초과한다 MaxImageWidth, 또는 YLength + YOffset ~을 초과한다 MaxImageHeight, DRC에서 오류가 보고되고 매개변수가 빨간색으로 표시됩니다.
다음 스크린샷에서, SelectROI 연산자는 다음을 통해 ROI를 정의합니다. XLength 및 YLength 매개변수:

Infinite Sources 및 InfiniteSource 매개변수#
카메라 모듈과 같은 연산자는 흐름 제어에 의해 중지될 수 없습니다. 이러한 연산자는 무한 소스로 동작하며, 무한 소스를 허용하는 M형 연산자나, 무한 소스 특성을 하류로 전파하는 O형 및 P형 연산자에만 연결되어야 합니다.
버퍼 연산자는 무한한 데이터 스트림을 제어 가능하고 중지 가능한 스트림으로 변환합니다. 버퍼가 중지할 수 없는 소스에서 데이터를 수신할 때는 해당 버퍼의 InfiniteSource 파라메터 ENABLED. 입력이 이미 중지 가능한 스트림인 경우, 다음을 설정합니다. InfiniteSource 에서 DISABLED.
다음과 같은 설계 규칙 검사 InfiniteSource 설정: DISABLED 『무한한 근원』 이후:

다음과 같은 설계 규칙 검사 InfiniteSource 설정: ENABLED 『무한한 근원』 이후:

무한 소스에 대한 자세한 내용은 ‘중지 가능한 데이터 스트림과 중지 불가능한 데이터 스트림’ 튜토리얼 항목을 참조하십시오.
Overflow 연산자#
The Overflow 오퍼레이터( Synchronization 이 라이브러리는 다운스트림 처리가 차단된 상태에서도 중지할 수 없는 소스가 계속해서 이미지 데이터를 전송할 때 발생하는 오버플로 상황을 처리합니다. 이 라이브러리는 자체적으로 데이터를 버퍼링하지 않습니다. Basler에서는 이 라이브러리를 버퍼 연산자와 함께 사용할 것을 권장합니다. 이 연산자는 다음과는 다릅니다. 산술 오버플로우 (참조: Bit Arithmetic 튜토리얼 항목) 또는 Overflow 상태 파라미터 (버퍼 오퍼레이터의 경우, 참조: Memory 요소 튜토리얼 항목).
배치할 때 Overflow 무한 소스(infinite source)와 다음과 같은 메모리 오퍼레이터 사이에 LineBuffer, 다음을 설정합니다. InfiniteSource 메모리 오퍼레이터에서 DISABLED. 해당 Overflow 오퍼레이터가 이미 중단할 수 없는 스트림의 오버플로를 처리합니다. 활성화 InfiniteSource 이 토폴로지의 메모리 모듈에서 이를 수행하는 것은 올바르지 않으며 DRC 오류를 유발합니다.

DRC를 사용한 디자인 검증#
이미지 크기, Bit Width 또는 관심 영역(ROI)에 영향을 미치는 링크 속성 또는 모듈 파라미터를 변경한 후 Analysis → Design Rules Check Level 1을 실행합니다. Level 1은 DRC 로그에 형식 오류를 보고하고 영향을 받는 모듈과 링크를 강조 표시합니다.
Design Rules Check Level 2 는 확장된 검사를 실행하고 FPGA 리소스를 추정합니다. 빌드하기 전에 모든 Level 1 오류를 수정하십시오. Level 2는 또한 무한 소스 연결 및 InfiniteSource 설정을 확인합니다.
강조 표시된 모듈 및 링크와 함께 DRC log를 읽어보세요. 전체 워크플로에 대해서는 From Empty Design to Running Applet 튜토리얼 항목을 참조하십시오.

링크 및 매개변수 충돌 문제 해결#
모듈 파라미터와 링크 속성은 독립적인 설정이 아닙니다. 이들은 서로 직접 의존하며 허용되는 값 범위를 상호 제한합니다. 입력 및 출력 연결의 링크 속성은 오퍼레이터가 작업해야 하는 데이터 형식을 정의합니다. 모듈 파라미터는 오퍼레이터가 해당 형식 내에서 데이터를 처리하는 방법을 정의합니다. 링크 속성을 변경하면 VisualApplets은 연속된 모듈과 링크를 통해 변경 사항을 전파합니다. 모듈 파라미터가 업데이트된 링크 속성에 더 이상 맞지 않으면 VisualApplets은 해당 모듈 또는 파라미터를 빨간색으로 표시합니다. 반대 방향에서도 마찬가지입니다. 모듈 파라미터가 출력 링크 속성을 정의하거나 변경할 수 있으므로, 링크 변경 전에는 유효했던 값이 링크 변경 후에는 유효하지 않게 될 수 있습니다. 따라서 파라미터의 활성화, 비활성화 또는 특정 범위로의 제한 여부는 링크 속성, 다른 모듈 파라미터 또는 둘 다에 따라 달라집니다. 각 오퍼레이터에 대해 Operator Reference는 이러한 종속성을 문서화하고 있습니다. 링크 변경의 전파 동작 및 세 가지 가능한 결과에 대해서는 사용자 매뉴얼의 Propagation and Dependencies of Operator Parameters and Link Properties를 참조하십시오.
링크 변경 후 파라미터 값이 유지되지 않거나 모듈이 빨간색으로 바뀔 때 다음 순서로 충돌을 해결하십시오. 모듈 파라미터보다 링크 속성을 먼저 확인하세요. 링크 속성은 모듈 파라미터의 허용 값 범위를 정의합니다. 모듈 파라미터는 해당 범위 내에 맞아야 합니다. 많은 오퍼레이터가 출력 링크 속성을 정의하거나 변경하기도 하므로 디자인의 한쪽 변경이 다른쪽에 영향을 미칠 수 있습니다. DRC 로그를 읽고, 오류 메시지를 클릭하여 영향을 받는 모듈 또는 링크를 강조 표시한 후, 허용되는 링크 형식 및 파라미터 종속성에 대해 Operator Reference를 참조하십시오. 링크나 Module Properties 대화 상자의 빨간색 강조 표시는 시뮬레이션이나 빌드 전에 반드시 수정해야 하는 형식 오류를 나타냅니다.
전형적인 충돌은 다음과 같은 경우에 발생합니다: Value 파라미터 설정 시 CONST 오퍼레이터의 값을 예를 들어 500으로 설정하려고 하지만 VisualApplets이 입력을 자동 수정합니다. 나가는(outgoing) 링크는 Bit Width 8비트의 경우 0에서 255 사이의 값만 허용됩니다. 충돌을 해결하려면 링크를 늘리십시오. Bit Width 나가는 링크에서 모듈 파라미터를 다시 설정합니다:

유사한 종속성이 다른 오퍼레이터에서도 나타납니다. SelectBitField, 유효 범위는 BitOffset 파라미터는 입력 및 출력 링크에 따라 다릅니다. Bit Widths. 그레이 이미지의 경우, BitOffset 0에서 입력 범위 내에 있어야 합니다. BitWidth 에서 출력값을 뺀 값입니다. BitWidth:

다음에서: ModuloCount 오퍼레이터의 경우, Divisor 파라미터는 출력 링크에 의해 제한됩니다. Bit Width 1부터 2^n까지의 값으로 설정되며, 여기서 n은 출력입니다. Bit Width:

다음과 같은 관심 영역(ROI) 파라미터는 XLength 및 YLength 안에 맞아야 합니다. MaxImageWidth 및 MaxImageHeight 연결된 링크에 있습니다. 충돌은 Parallelism, Color Format, 이미지 프로토콜과도 관련될 수 있습니다. 예를 들어, XLength 항상 Parallelism의 배수여야 하며, 이는 Module Properties 대화상자에서 다음과 같이 표시됩니다. Step Size:

핵심 용어
Basler는 파라미터 작업 시 다음 사항을 권장합니다.
- 임계값 등 런타임 유연성이 필요한 경우 동적 파라미터를 사용하십시오. 런타임이란 VisualApplets에서의 시뮬레이션이 아니라 프레임 그래버의 앱들과 통신하는 호스트 소프트웨어를 의미합니다.
- 링크 속성이나 모듈 파라미터를 변경할 때마다 하류(downstream) 링크에서 전파된 링크 속성을 확인하십시오.
- DMA 전에 12비트 카메라 데이터를 픽셀당 16비트로 확장하는 등 하류 소프트웨어를 위한 비트 폭 조정 계획을 세우십시오.
- 값을 설정할 수 없는 경우, 모듈 파라미터를 변경하기 전에 연결된 링크의 링크 속성을 확인하십시오.
- 링크와 모듈 간의 충돌을 조기에 감지하려면 DRC를 정기적으로 실행하십시오.
관련 항목#
- 사용자 설명서의 Parameterization — GUI에서 링크 속성 및 모듈 파라미터 편집
- 사용자 설명서의 Example: Applet Parameterization in Basics and Examples — 실습형 파라미터화 예제
- 사용 설명서의 링크 규칙 — 형식적 링크 규칙
- Parallelism 튜토리얼 항목 —
Parallelismlink property - Kernel 작업 튜토리얼 항목 —
KernelColumns및KernelRows - Bit Arithmetic 튜토리얼 항목 —
BitWidth및 Arithmetic 오버플로 - 중지 가능 및 중지 불가능 데이터 스트림 튜토리얼 항목 —
InfiniteSource - 연산자 유형 및 동기화 튜토리얼 주제 — 연산자 유형 및 링크 형식
- 빈 디자인에서 실행 중인 Applet까지 튜토리얼 주제 — 디자인 타임에 파라미터 설정