빈 디자인에서 실행 중인 Applet까지#
핵심 용어
프레임 그래버 하드웨어가 책상 위에 없어도 이 학습 경로를 따를 수 있습니다. PC의 VisualApplets에서 디자인, 파라미터 설정, 디자인 규칙 검사(DRC) 및 시뮬레이션을 실행합니다. 빌드(Build) 과정에는 PC의 FPGA 툴체인(주로 Xilinx Vivado)이 필요하지만 보드 자체는 필요하지 않습니다. 플래시/로드(Flash/load) 및 런타임(runtime) 검증에는 프레임 그래버와 Basler Framegrabber SDK 같은 런타임 소프트웨어가 필요합니다. 전체 통합 테스트를 수행하려면 프레임 그래버와 카메라 또는 다른 이미지 소스도 필요합니다.
동일한 작업 흐름에 대한 단계별 안내는 사용자 매뉴얼의 하드웨어 앱릿: 아이디어에서 애플리케이션까지를 참조하십시오.
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 제품군 플랫폼의 경우 보드에 applet을 플래시합니다. microEnable 6 / imaFlex 보드의 경우 하드웨어에 applet을 로드합니다.
- microDisplay X, Framegrabber SDK 또는 pylon을 사용하여 하드웨어에서 applet을 사용합니다.
이 튜토리얼은 주로 다음 내용을 다룹니다. microEnable 5 (mE5) 및 imaFlex 프레임 그래버(CXP-12 Quad/Penta, microEnable 6 제품군). 연산자 라이브러리는 플랫폼에 따라 다릅니다. 예를 들어 mE5 디자인은 다음을 사용합니다. ImageBuffer DRAM 라인 버퍼링에 사용하는 반면, imaFlex 디자인은 LineBuffer.
핵심 용어
하드웨어 앱릿(hardware applet)은 빌드 과정에서 생성되며 프레임 그래버에서 실행되는 *.hap 파일입니다. 디자인 타임(Design time)은 PC의 VisualApplets에서 *.vad 프로젝트를 편집하는 시점입니다. 런타임(Runtime)은 호스트 소프트웨어가 앱릿을 프레임 그래버 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 작성자 및 버전과 같은 디자인의 일반적인 속성을 설정하는 데 사용되며, AppletProperties 특정 하드웨어 플랫폼의 인터페이스 속성에 대한 액세스도 제공합니다. BoardStatus 은 런타임 시 PCIe 인터페이스 상태 및 온도 등의 속성을 제공하는 데 사용됩니다. Project Info 탭에는 현재 프로젝트 이름, 하드웨어 타겟 및 플랫폼 정보가 요약되어 표시됩니다.
연산자, 모듈, 링크 및 파이프라인#
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 튜토리얼 주제를 참조하십시오.
Operator 속성은 static이거나 dynamic입니다. 정적 파라미터는 디자인 타임 동안 VisualApplets에서만 변경할 수 있습니다. 동적 파라미터는 VisualApplets에서 기본값으로 설정할 수 있으며, 애플릿이 프레임 그래버에서 실행되는 동안 호스트 소프트웨어에서 나중에 변경할 수 있습니다.
설계 규칙 검사(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는 추가 검사를 실행하고 estimates FPGA resource 사용량을 추정합니다. 이 추정치는 정확한 예측이 아니라 지침으로 취급해야 합니다. 일부 연산자의 경우 빌드 중의 후속 로직 최적화로 인해 최종 리소스 사용량이 변경될 수 있으므로, 경우에 따라 100%를 초과하는 추정치도 성공적인 빌드로 이어질 수 있습니다. 리소스가 100%를 훨씬 초과하는 경우 디자인을 단순화하고, Parallelism 또는 이미지 치수를 줄이거나, 다른 연산자를 선택한 다음 검사를 다시 실행하십시오.
아래 그림은 오류가 없는 Design Rules Check Level 1 및 2 이후의 일반적인 DRC log를 보여줍니다. 여기에는 형식적 상태와 함께 LUT, 플립플롭, 블록 RAM 및 Arithmetic 리소스의 예상 사용량이 포함됩니다.

어떤 모듈이 얼마나 많은 리소스를 사용하는지 확인하려면 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-type 네트워크 규칙과 같은 분기 간의 위반 사항입니다. 하드웨어에 애플릿을 배포하기 전에 빨간색 오류와 보라색 동기화 위반을 수정해야 합니다. 신호 처리(즉, 다음을 사용하는 링크) 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의 정수 배가 아니거나 이미지가 링크에 설정된 최대 이미지 치수를 초과하는 경우 simulation이 실패합니다. 이러한 문제를 해결하려면 simulation 이미지 크기를 해당 제약 조건에 맞추거나 링크 속성을 조정하십시오.
다음 이미지는 error in DRC Level 1을 보여줍니다.

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

관련 항목#
- VisualApplets Fundamentals 튜토리얼 주제 — 설계, 빌드 및 하드웨어 앱들
- Parameterization 튜토리얼 주제 — 디자인 타임의 링크 속성 및 모듈 매개변수
- Pipeline Concept 튜토리얼 주제 — 모듈, 링크 및 파이프라인 구조
- Operator Types and Synchronization 튜토리얼 주제 — 연산자 유형 및 링크 색상
- 사용 설명서의 Design Rules Check — DRC Level 1 및 Level 2
- 사용자 매뉴얼의 Simulation — simulation sources, probes, and modes
- 사용자 매뉴얼의 빌드 — 하드웨어 어플릿 생성
- VisualApplets 설치 — Xilinx 툴체인 버전