빈 디자인에서 실행 중인 Applet까지#
Key Terms
책상 위에 프레임 그래퍼 하드웨어가 없어도 이 학습 경로를 진행할 수 있습니다. PC의 VisualApplets에서 디자인, 파라미터 설정, 디자인 규칙 검사, 시뮬레이션을 실행할 수 있습니다. Build 단계에서는 보드가 아니라 PC에 FPGA 툴체인(주로 Xilinx Vivado)이 필요합니다. Flash/load 및 runtime 검증에는 프레임 그래퍼와 Basler Framegrabber SDK 같은 런타임 소프트웨어가 필요합니다. 전체 통합 테스트를 수행하려면 프레임 그래퍼와 카메라 또는 기타 이미지 소스도 필요합니다.
동일한 워크플로에 대한 단계별 안내는 사용자 매뉴얼의 Hardware Applet: From Idea to Application을 참조하십시오.
microDisplay X에서 앱릿을 디자인, 빌드 및 사용하는 방법에 대한 간단한 소개는 사용자 매뉴얼의 Getting Started를 참조하십시오.
워크플로 개요#
VisualApplets 디자인부터 실행 중인 애플릿까지의 전체 워크플로는 다음과 같습니다.
PC의 VisualApplets에서 수행할 작업:
- 앱릿을 디자인합니다. 디자인 패널에 operators를 modules로 배치하고 이들 사이에 links를 추가합니다. 모듈 및 링크 속성을 설정합니다.
- 빌드하기 전에 DRC 레벨 1 및 2를 실행하여 형식적 정확성을 확인하고 FPGA 리소스를 추정합니다. DRC 레벨 1 및 2는 시뮬레이션이나 빌드를 시작할 때 자동으로 실행되기도 합니다.
- Test Images로 디자인을 시뮬레이션합니다. 시뮬레이션은 DRC Level 1에서 오류가 보고되지 않은 경우에만 시작됩니다.
- 하드웨어 앱릿을 빌드하고 *.hap 파일을 생성합니다. 빌드에는 PC의 FPGA 툴체인이 사용됩니다. 프레임 그래버가 연결되어 있을 필요는 없습니다.
프레임 그래버 및 호스트에서:
- microEnable 5 제품군 플랫폼의 경우 보드에 앱들을 플래싱하고, microEnable 6 / imaFlex 보드의 경우 하드웨어에 앱들을 로드합니다.
- microDisplay X, Framegrabber SDK 또는 pylon을 사용하여 하드웨어에서 애플릿을 사용합니다.
이 튜토리얼은 주로 다음을 다룹니다. microEnable 5 (mE5) 및 imaFlex 프레임 그래버(CXP-12 Quad/Penta, microEnable 6 제품군). 연산자 라이브러리는 플랫폼에 따라 다릅니다. 예를 들어 mE5 디자인은 다음을 사용합니다. ImageBuffer DRAM 라인 버퍼링용이며, 반면 imaFlex 디자인은 LineBuffer.
Key Terms
하드웨어 앱릿은 빌드를 통해 생성되고 프레임 그래버에서 실행되는 *.hap 파일입니다. 디자인 타임은 PC의 VisualApplets에서 *.vad 프로젝트를 편집하는 시점입니다. 런타임은 호스트 소프트웨어가 앱릿을 프레임 그래버 FPGA에 로드하고 이미지를 취득하는 시점입니다. VisualApplets에서의 시뮬레이션은 런타임이 아닙니다.
Starting a New Project#
디자인 단계는 완전히 VisualApplets에서 수행합니다. 설치 디렉토리의 bin 폴더에 있는 VisualApplets.exe, Windows 시작 메뉴 또는 바탕 화면 바로 가기(생성한 경우)에서 애플리케이션을 시작합니다.
로드된 프로젝트가 없으면 기본 창에 빈 작업 영역이 표시됩니다. 프로젝트를 시작하려면 File과 New를 클릭하거나 Ctrl + n을 누릅니다. New Project 대화 상자에서 프로젝트 이름, microEnable 5 marathon VCL과 같은 타겟 하드웨어 플랫폼, 그리고 Win 64와 같은 타겟 런타임을 설정합니다.
정보
나중에 이러한 프로젝트 설정을 변경할 수 있지만, 플랫폼에 따라 적용되는 연산자 라이브러리와 빌드 옵션이 결정되므로 플랫폼을 전환할 때 일부 모듈을 교체하거나 파라미터를 다시 설정해야 할 수 있습니다.
다음을 사용하여 확인한 후, OK, VisualApplets이 빈 디자인 창을 엽니다. 새 디자인에는 항상 다음과 같은 두 개의 고정 모듈이 포함되어 있습니다. AppletProperties 및 BoardStatus. AppletProperties 작성자 및 버전과 같은 디자인의 일반적인 Property을 설정하는 데 사용되며, AppletProperties 특정 하드웨어 플랫폼의 경우 인터페이스 Property에 대한 액세스도 제공합니다. BoardStatus 은 PCIe 인터페이스 상태 및 온도와 같은 속성을 제공하기 위해 런타임에 사용됩니다. 프로젝트 정보 탭에는 현재 프로젝트 이름, 하드웨어 타겟 및 플랫폼 정보가 요약되어 표시됩니다.
연산자, 모듈, 링크 및 파이프라인#
VisualApplets에서는 디자인 창의 Operator Library에 있는 operators를 사용하여 이미지 처리 파이프라인을 설계합니다. 연산자를 다이어그램으로 드래그하여 배치합니다. 배치된 각 인스턴스는 module입니다. 모듈은 input 및 output ports를 제공합니다. 한 모듈의 출력 포트를 다른 모듈의 입력 포트에 연결하여 link를 생성합니다. 다이어그램에서는 각 링크가 화살표로 표시됩니다. 모듈과 링크는 빌드가 FPGA에 구현하는 이미지 처리 pipeline을 함께 설명합니다. 처리 순서는 연결 순서를 따릅니다.
연산자와 링크는 모두 크기, bit width, 프로토콜, Parallelism 및 기타 설정과 같은 properties를 가집니다. Links는 연결을 따라 고유한 속성을 전달합니다. 편집할 수 있는 링크 필드는 upstream operator에 따라 다릅니다. 편집할 수 없는 링크 필드는 업스트림 연산자나 체인 내 링크의 위치에서 값을 가져옵니다. 또한 규칙에 따라 속성이 파이프라인을 통해 자동으로 전파됩니다. 예를 들어, 일부 속성은 카메라 출력 링크에서만 설정할 수 있습니다. 이 속성들은 연산자에 의해 변경될 때까지 하위로 전파됩니다. 링크나 모듈을 더블 클릭하여 속성을 열고 변경할 수 있습니다. 제품 내 도움말과 Operator Reference는 연산자별 동작을 설명합니다.

Basler에서는 디자인을 정기적으로 저장하고, 가독성을 높이기 위해 모듈 이름을 변경하며, HierarchicalBox 요소를 사용하여 더 큰 디자인을 구조화할 것을 권장합니다. 설치 디렉터리의 Examples 아래에 있는 예제 디자인부터 시작할 수 있습니다. 자세한 내용은 사용자 매뉴얼의 Processing Examples를 참조하십시오.
디자인 타임에 파라미터 설정하기#
Link 속성은 이미지 데이터가 연결을 따라 이동하는 방식을 설명합니다. 최대 이미지 크기, 이미지 프로토콜, bit width, Parallelism 등의 설정이 이에 포함됩니다. 최대 크기와 Parallelism이 높을수록 일반적으로 더 많은 FPGA 리소스를 사용하므로, Basler에서는 애플리케이션에 필요한 만큼만 이러한 값을 설정할 것을 권장합니다. 링크 속성은 런타임이 아니라 VisualApplets에서만 편집할 수 있습니다. 링크 속성에 대한 자세한 내용은 Parameterization 튜토리얼 항목을 참조하십시오.
Module 파라미터는 static 또는 dynamic입니다. static 파라미터는 디자인 타임에 VisualApplets에서만 변경할 수 있습니다. VisualApplets에서 dynamic 파라미터를 기본값으로 설정할 수 있으며, 애플릿이 프레임 그래퍼에서 실행되는 동안 호스트 소프트웨어에서 나중에 변경할 수 있습니다.
디자인 규칙 검사 (DRC)#
디자인을 생성하고 파라미터를 설정한 후, Basler에서는 Design Rules Check Level 1과 Design Rules Check Level 2를 실행할 것을 권장합니다. Analysis → Design Rules Check Level 1 또는 Design Rules Check Level 2를 선택하거나 빌드 툴바에서 해당 아이콘을 선택하십시오.
- Level 2를 시작하면 Level 1이 자동으로 먼저 실행됩니다.
- Level 1은 simulation 및 build 전에도 자동으로 실행됩니다. 자세한 내용은 사용자 매뉴얼의 Design Rules Check를 참조하십시오.
DRC Level 1은 DRC log에 형식적 디자인 문제를 보고하고 디자인 창에서 영향을 받는 위치를 강조 표시합니다. 일반적인 문제에는 링크의 일치하지 않는 bit width, ROI 또는 이미지 크기 불일치가 포함됩니다. 하드웨어 앱릿을 빌드하기 전에 Level 1 errors를 해결해야 합니다.
DRC Level 2는 추가 검사를 실행하고 FPGA 리소스 사용량을 예측합니다. 이 예측은 정확한 예측이 아니라 지침으로 처리해야 합니다. 일부 연산자의 경우 빌드 중 나중에 수행되는 로직 최적화로 인해 최종 리소스 사용량이 변경될 수 있으므로, 100%를 초과하는 예측이라도 경우에 따라 성공적인 빌드로 이어질 수 있습니다. 리소스가 100%를 훨씬 초과하는 경우 디자인을 단순화하거나, Parallelism 또는 이미지 크기를 줄이거나, 다른 연산자를 선택한 후 검사를 다시 실행하십시오.
아래 그림은 오류가 없는 Design Rules Check Level 1 및 2 이후의 일반적인 DRC log를 보여줍니다. 형식적 상태와 LUT, 플립플롭, 블록 RAM, 산술 리소스의 예상 사용량을 나타냅니다.

각 모듈이 사용하는 리소스 양을 확인하려면 Analysis → View FPGA Resources를 엽니다. FPGA Resource Estimation 대화상자에는 entire design 및 each module에 대한 예상 내역이 모두 표시됩니다. 테이블을 CSV로 내보낼 수 있습니다. 선택한 모듈의 FPGA 리소스만 보려면 해당 모듈의 컨텍스트 메뉴를 열고 FPGA Resources를 선택하십시오. 사용자 매뉴얼의 FPGA Resource Estimation도 참조하십시오.
DRC 로그에 문제가 보고되면 DRC 메시지와 강조 표시된 모듈 또는 링크를 함께 사용하여 오류를 수정하십시오. 자세한 내용은 사용자 매뉴얼의 Design Rules Check를 참조하십시오.
링크 색상#
디자인 창에서 red 링크 강조 표시는 이미지 경로의 formal design errors를 나타냅니다. Link Properties 또는 Module Properties 대화상자에서 빨간색으로 표시된 링크는 특정 오류 유형에 대한 세부 정보가 포함된 툴팁 메시지도 제공할 수 있습니다.

보라색 강조 표시가 나타내는 대상 동기화 규칙 위반 O형 네트워크 규칙과 같은 브랜치 간의 문제. 앱릿을 하드웨어에 배포하기 전에 빨간색 오류와 보라색 동기화 위반을 수정해야 합니다. 신호를 이용한 처리의 경우(즉, Image Protocol = VALT_SIGNAL), 보라색 링크가 허용됩니다.
이 색상은 전체 디자인에 대한 신호등 상태가 아닙니다. 속성 변경을 적용한 후에 표시되는 Green 링크는 VisualApplets가 업데이트된 링크 속성을 전파하고 검증했음을 의미합니다. 녹색 자체가 디자인이 빌드될 준비가 되었음을 의미하는 것은 아닙니다. Propagation of Link Properties 튜토리얼 항목을 참조하십시오.

링크 규칙에 대한 자세한 내용은 사용자 매뉴얼의 Rules of Links 및 Operator Types and Synchronization 튜토리얼 항목을 참조하십시오.
시뮬레이션 대 DRC#
DRC Level 1에서 error가 보고되면 시뮬레이션을 시작할 수 없습니다. 동기화 경고를 포함한 Warnings는 시뮬레이션을 차단하지 않습니다. Red 상태는 오류를 나타내며 시뮬레이션을 중지합니다. Purple 상태는 동기화 문제를 나타냅니다. 이 경우에도 시뮬레이션을 계속할 수 있지만 하드웨어에서 앱릿에 의존하기 전에 문제를 해결해야 합니다.
DRC Level 1과 2가 오류 없이 완료되더라도 simulation은 여전히 실패할 수 있습니다. 예를 들어, 로드된 이미지 너비가 링크 parallelism의 정수 배가 아니거나 이미지가 링크에 설정된 최대 이미지 크기를 초과하는 경우 시뮬레이션이 실패합니다. 이러한 문제를 해결하려면 시뮬레이션 이미지 크기를 해당 제약 조건에 맞추거나 링크 속성을 조정하십시오.
다음 이미지는 error in DRC Level 1을 보여줍니다.

다음 이미지는 DRC Level 2 오류를 보여줍니다.

시뮬레이션#
설계 중 simulation은 파이프라인을 통해 Test Images을 공급하고 하드웨어 없이 중간 결과를 검사할 수 있도록 합니다. 이미지를 주입하기 위해 simulation sources를 추가하고 특정 링크의 데이터를 보기 위해 simulation probes를 추가하십시오. VisualApplets은 %VASINSTALLDIR%\testimages 경로에 Test Images을 제공합니다. 또한 사용자의 이미지를 simulation sources에 로드할 수도 있습니다. TIFF는 권장 형식이나, VisualApplets은 기타 여러 일반적인 형식의 이미지 로드도 지원합니다.

Analysis → Start Simulation에서 또는 툴바 제어에서 simulation을 시작하면 VisualApplets이 자동으로 DRC Level 1을 실행합니다. Simulation 창에는 활성 소스와 프로브가 나열되며 하단 창에 DRC Level 1 결과가 표시됩니다. simulation을 수행하는 데 DRC Level 2가 필수는 아니지만, FPGA 리소스 견적을 얻기 위해 앱릿을 빌드하기 전에 DRC Level 2를 실행하는 것을 권장합니다. 기타 모든 simulation 옵션, 모드 및 창에 대해서는 사용자 Manual의 Simulation을 참조하십시오.
하나의 simulation 세션에서 여러 simulation 주기(multiple simulation cycles)를 실행할 수 있습니다. Simulation 창에서 Processing cycles를 설정하고 Start를 클릭하십시오. simulation source에 이미지가 하나만 있는 경우 VisualApplets은 모든 주기에 해당 이미지를 재사용(reuses)합니다. 소스에 여러 이미지가 있는 경우 각 새 주기는 순서대로 다음 이미지를 사용합니다. 마지막 이미지 이후에는 시퀀스가 첫 번째 이미지부터 다시 시작됩니다.
이미지 데이터 경로의 픽셀 값의 경우, simulation은 일반적으로 테스트 대상 데이터에 대한 하드웨어와 일치합니다. Simulation Probe에서 확대하여 픽셀을 자세히 검사할 수 있습니다. 이미지 히스토그램 같은 도구는 픽셀 데이터 해석에 도움이 될 수 있습니다.
시뮬레이션이 모든 하드웨어 효과를 보여주는 것은 아닙니다. 교착 상태(Deadlock), 크기가 부족한 버퍼, 공유 DRAM 대역폭 제한, 일부 오버플로 경우는 종종 프레임 그래버에서만 나타납니다. 성공적인 시뮬레이션이 하드웨어에서의 런타임 테스트를 대신할 수는 없습니다.
하드웨어 앱릿 빌드하기#
디자인을 빌드(build)하면 VisualApplets은 디자인을 FPGA 비트스트림으로 변환하고 런타임 소프트웨어 인터페이스용 콘텐츠와 함께 hardware applet이라는 파일로 패키징합니다. 빌드를 수행하려면 빌드 컴퓨터에 지원되는 AMD/Xilinx 툴체인이 설치 및 구성되어 있어야 합니다. 플랫폼 및 VisualApplets 버전에 따라 Vivado를 사용하십시오. 어떤 툴체인 버전이 어떤 프레임 그래버 플랫폼과 일치하는지에 대한 개요는 Installing VisualApplets을 참조하십시오. hardware applet 빌드에 대한 자세한 지침은 사용자 Manual의 Build를 참조하십시오.
빌드 소요 시간은 FPGA 로직 사용량, 하드웨어 타겟 플랫폼, 디자인의 복잡성에 따라 다릅니다. 간단한 예제의 경우 몇 분 만에 완료될 수 있지만, 대규모 디자인은 몇 시간이 걸릴 수 있습니다. 빌드가 성공하면 출력 *.hap 파일은 일반적으로 디자인 파일과 동일한 기본 이름을 사용합니다. 예를 들어 Sobel_Filter.vad는 Sobel_Filter.hap를 생성합니다.
플래싱, 런타임 로딩 및 호스트 소프트웨어#
microEnable 5 제품군 보드의 경우, 보드의 펌웨어 파티션에 *.hap 파일이 포함되도록 microDiagnostics를 사용하여 새 앱릿을 flash해야 합니다. microEnable 6 보드의 경우 하드웨어에 앱릿을 로드합니다. Framegrabber SDK의 microDiagnostics 도구를 사용하여 프레임 그래버에 앱릿을 플래시하거나 로드하는 방법에 대한 지침은 Managing Applets in microDiagnostics를 참조하십시오.
빌드된 hardware applet으로 작업하려면 microDisplay X에서 앱릿을 엽니다. microDisplay X의 매개변수 트리는 디자인의 모듈 이름을 반영하므로 VisualApplets에서 명확한 모듈 이름을 선택하십시오. Dynamic 매개변수가 여기에 표시됩니다. 일부 매개변수는 취득 중에 변경할 수 있지만, 다른 매개변수는 취득이 시작되기 전에 설정해야 합니다. DMA 차원이 전형적인 예입니다. 임계값 등 취득 중에 다른 매개변수를 변경할 수 있습니다.
microDisplay X 기능 및 취득 동작에 대해서는 Framegrabber SDK 문서의 microDisplay X를 참조하십시오.
또는 Framegrabber API를 사용하여 사용자 eigene 응용 프로그램에 취득 및 매개변수 제어를 통합할 수 있습니다. VisualApplets은 Build 및 Generate SDK Example을 통해 C++ 예제 프로젝트를 생성할 수 있습니다. 해당 프로젝트에는 초기화, 메모리 할당, Fg_setParameterWithType / Fg_getParameterWithType 호출, 취득 시작 및 중지, 정리 작업이 포함됩니다. SDK Example을 생성하는 방법에 대해서는 사용자 Manual의 Framegrabber SDK를 참조하십시오.
생성된 코드를 시작점으로 활용하십시오. Framegrabber SDK 문서(예: basler_fg.h 및 Framegrabber API 소개)에서 API 레퍼런스를 찾을 수 있습니다.
디자인 타임 및 런타임#
design time에 그래픽 파이프라인을 편집하고, 정적 및 동적 매개변수를 설정하고, 링크 속성을 정의하고, DRC Level 1 및 2를 실행하며, simulate합니다. simulation을 시작할 때마다 VisualApplets은 DRC Level 1을 자동으로 실행합니다. 또한 빌드 출력을 *.hap 파일로 생성합니다.
runtime에 호스트 소프트웨어가 해당 애플릿을 로드하고, dynamic 파라미터를 구성하며, 취득을 시작합니다. VisualApplets 디자인에 정의된 모듈 이름과 계층 구조는 파라미터 트리 및 API에서도 사용됩니다. 일관된 명명 규칙과 문서는 시스템 통합업체에 도움이 되며 현장 튜닝을 단순화합니다.

관련 항목#
- VisualApplets Fundamentals 튜토리얼 주제 — 디자인, 빌드 및 hardware applet
- Parameterization 튜토리얼 주제 — design time의 링크 속성 및 모듈 매개변수
- Pipeline Concept 튜토리얼 주제 — 모듈, 링크 및 파이프라인 구조
- Operator Types and Synchronization 튜토리얼 주제 — 연산자 유형 및 링크 색상
- 사용 설명서의 Design Rules Check — DRC Level 1 및 Level 2
- 사용자 Manual의 Simulation — simulation sources, probes 및 모드
- 사용자 Manual의 Build — hardware applet 생성
- Installing VisualApplets — Xilinx 툴체인 버전