하드웨어 테스트

간략한 설명

파일: \examples\Processing\DebuggingAndTest\HardwareTest\HardwareTest.va

Default Platform: mE5-MA-VCL

요약 설명

DMA, RAM, GPIO, Trigger 및 LED의 하드웨어 자체 테스트를 위한 예제입니다. 이 예제는 parameters 라이브러리의 오퍼레이터를 광범위하게 사용합니다.

Hardware Test 예제는 하드웨어 자체 테스트를 수행합니다.

이 앱릿은 다음과 같은 기능을 포함합니다:

  • DMA 성능 테스트: 다양한 메모리 크기 및 인터럽트 레이트에 따른 서로 다른 이미지 크기
  • RAM 테스트: 오류 및 처리 여부 확인
  • 카메라: 카메라 포트 이미지 취득 확인
  • 카메라 Trigger: 카메라로 트리거 신호 전송
  • GPIO: GPI 모니터링 및 GPO 설정
  • 이벤트 테스트: 소프트웨어 콜백 이벤트 생성
  • 모니터링: FPGA 온도, 전력, PoCL, ... (BoardStatus 참조)

다음 다이어그램은 앱릿의 기능 블록을 보여줍니다.

Hardware Test 앱릿의 블록 다이어그램

그림 283. Hardware Test 앱릿의 블록 다이어그램


VisualApplets 구현은 두 개의 프로세스로 나뉩니다. Process0에는 DMA 테스트, RAM 테스트 및 카메라 취득을 포함한 모든 이미지 처리 부분이 포함됩니다. 반면 Process1에는 실행 중인 취득과 독립적인 부분이 포함됩니다. DMA 오퍼레이터가 없는 프로세스는 앱릿이 로드될 때 즉시 시작되므로, 여기의 기능들은 취득과 무관하게 독립적으로 사용할 수 있습니다. 자세한 내용은 'Processes without DMAs / Trigger Processes'를 참조하세요.

다음 두 개의 스크린샷은 Process0과 Process1을 보여줍니다.

Hardware Test Process0

그림 284. Hardware Test Process0


Hardware Test Process1

그림 285. Hardware Test Process1


이 앱릿은 앱릿을 쉽게 사용할 수 있도록 parameters 라이브러리의 오퍼레이터를 집중적으로 사용하여 구현되었습니다. H-Box 구현에는 기능적 부품들이 포함됩니다. 파라미터는 분리된 뷰를 위해 H-Box Parameters의 속성에 나열됩니다. 이는 다음 스크린샷에서 볼 수 있듯이 사용하기 쉬운 파라미터만 나열되므로 예를 들어 microDisplay에서 앱릿을 사용할 때 유용합니다.

microDisplay에서 Parameter Translates 및 References를 사용하는 Applet Hardware Test

그림 286. microDisplay에서 Parameter Translates 및 References를 사용하는 Applet Hardware Test


The implementation of the applet is straight forward and can be easly understood by studying the VA file. However, we will have a closer look at some of the parmeter translations and references to understand their usage.

Implementation of Main Image Processing Part

주요 이미지 처리 파트에는 RAM 테스트, DMA 성능 테스트 및 카메라 획득이 포함됩니다. 이 앱릿은 DMA 채널에서 한 번에 하나의 모드만 출력할 수 있도록 허용합니다. 따라서 여러 개의 SourceSelector 오퍼레이터가 사용됩니다. 올바른 입력 인덱스를 지정하는 매개변수화를 방지하기 위해, 간편한 사용을 위해 EnumParamTranslator 오퍼레이터를 사용합니다.

RAM 테스트, DMA 성능 테스트 및 카메라 획득을 위한 앱릿 하드웨어 테스트 구현

그림 287. RAM 테스트, DMA 성능 테스트 및 카메라 획득을 위한 앱릿 하드웨어 테스트 구현


다음에서는 TranslateOutputSelect의 매개변수 값을 자세히 설명합니다.

먼저 열거형(enumeration) 값을 정의해야 합니다.

"DMA_Performance" = 0x001;
"Camera" = 0x002;
"RAM0_Difference" = 0x000;
"RAM0_Errors" = 0x100;
"RAM1_Difference" = 0x010;
"RAM1_Errors" = 0x110;
"RAM2_Difference" = 0x020;
"RAM2_Errors" = 0x120;
"RAM3_Difference" = 0x030;
"RAM3_Errors" = 0x130;

보시다시피 열거형 값은 16진수 값으로 정의됩니다. 이를 통해 세 개의 SourceSelector 모듈에 쉽게 분배할 수 있습니다. 하위 4비트는 모듈 TestMode.SelectSource에, 4~7비트는 RAMTest/SelectRAM.SelectSource에, 8~11비트는 RAMTest/SelectRAMOutputMode/EnableBitpattern.SelectSource에 사용됩니다. 이렇게 하면 매개변수 WriteAction 및 ReadAction의 구현이 매우 단순해집니다.

그런 다음 변환된 값을 열거형 값과 함께 사용할 수 있습니다. 값을 변경하면 SourceSelector 모듈의 매개변수 값도 자동으로 변경됩니다.

Implementation of DMA Performance Pattern Generator

H-Box GeneratorDMAPerformance에는 패턴 생성기와 출력 프레임 레이트를 제어하기 위한 이미지 밸브가 포함되어 있습니다. 패턴 생성은 빈 이미지 생성기뿐만 아니라 픽셀 및 이미지 Counter를 사용하여 대각선으로 흐르는 패턴을 매우 간단하게 생성할 수 있습니다.

밸브는 주기 생성기 오퍼레이터인 Generate에 의해 제어됩니다. 생성기의 단위는 틱(tick) 단위로 지정됩니다. 타임베이스가 있는 프레임 레이트를 지정하고자 하므로, 변환 오퍼레이터인 FloatParamTranslator를 사용합니다. 따라서 이 오퍼레이터를 사용하여 초당 프레임 수(fps)를 틱으로 변환합니다. 다음 스크린샷은 그 구현을 보여줍니다.

초당 프레임 수를 틱으로 변환하기 위한 FloatParamTranslator 사용

그림 288. 초당 프레임 수를 틱으로 변환하기 위한 FloatParamTranslator 사용


오퍼레이터 IntParamTranslator를 사용하여 HardwareTest 예제에서 너비 및 높이 설정하기

이전 섹션에서 설명한 것과 동일한 절차가 이미지 너비와 높이에 대해 수행됩니다. 이 경우 IntParamTranslator 오퍼레이터를 사용할 수 있습니다. 여기서는 값을 디자인 내의 두 모듈로 직접 전달할 수 있습니다. 매개변수 DisplayName 및 DisplayHierarchy에 지정된 값에 주의하십시오.

앱릿에서 너비와 높이를 쉽게 설정하기 위한 IntParamTranslator 사용

그림 289. 앱릿에서 너비와 높이를 쉽게 설정하기 위한 IntParamTranslator 사용