FLIR - 열 이미징 FPGA의 개발 시간 단축

과제

FPGA 하드웨어에서 고급 열 화상 필터 및 알고리즘의 구현을 가속

솔루션

MATLAB을 이용하여 알고리즘 개발, 시뮬레이션 및 평가를 수행하고 HDL Coder를 사용하여 최적의 알고리즘을 FPGA에서 구현

결과

  • 개념에서 현장 테스트가 가능한 프로토타입까지의 개발 시간을 60% 단축
  • 수 주가 아닌 수 시간 만에 개선 사항 완료
  • 코드 재사용률이 0%에서 30%로 증가

“MATLAB과 HDL Coder를 통해 시장의 수요에 더욱 빠르게 대응할 수 있게 되었습니다. 이제 단 몇 주 만에 새로운 아이 디어를 실시간 하드웨어 프로토타입으로 개발할 수 있기 때문에 변화에 적극적일 수 있습니다. 엔지니어링이 더욱 즐거워져서 고객 만족도뿐 아니라 직원 만족도도 향상되었습니다.”

Nicholas Hogasten, FLIR Systems
원시 이미지(위) 및 HDL Coder로 개발한 필터를 적용한 후의 이미지(아래)입니다.

열 화상 적외선 카메라는 보안, 소방, 가스 누출 감지, 계측 및 측정을 포함한 여러 가지 상업적인 용도로 널리 활용됩니다. 카메라 내 FPGA는 센서와 감지기에서 생성된 신호를 필터링하고 처리합니다. 새로운 신호 처리 개념을 양산형 카메라에서 실시간으로 실행되는 알고리즘으로 바꾸려면 오랜 시간의 작업이 필요합니다. 이는 설계 엔지니어가 개발한 알고리즘을 하드웨어 엔지니어가 알고리즘에 대한 정확한 이해 없이 HDL로 변환해야 하기 때문입니다.

FLIR Systems사에서는 엔지니어들이 MATLAB®을 이용하여 고급 알고리즘을 개발 및 시뮬레이션하고 이를 HDL Coder™를 사용하여 FPGA 상에서 신속하게 구현합니다. “과거에는 아이디어를 제품으로 실현하는 데 오랜 시간이 걸리기 때문에 고객에게 시뮬레이션을 보여주는 경우가 드물었습니다.” 라고 FLIR의 이미지 처리 기술 담당자인 Nicholas Hogasten이 말합니다. “최근에 한 주요 고객에게 그동안 우리가 개발한 가장 복잡한 필터인 새로운 열화상 필터의 시뮬레이션 일부를 보여주었습니다. 고객들은 몇 개월 후 HDL Coder를 사용하여 생성된 새로운 필터를 사용한 최초의 실제 카메라를 보여주자 환호했고 카메라는 MATLAB 시뮬레이션과 완전히 똑같이 동작했습니다.”

과제

초기 개발 프로세스에서 FLIR사의 어려움은 새로운 아이디어와 알고리즘을 개발한 알고리즘 엔지니어와 알고리즘을 FPGA에서 구현한 하드웨어 엔지니어 사이의 단절에서 비롯된 것이었습니다. 알고리즘 엔지니어가 잡음 제거나 광범위 압축(DCR)을 위한 새로운 기술을 평가하고 사양을 적어 하드웨어 엔지니어에게 전달하지만 하드웨어 엔지니어는 이 알고리즘을 완벽히 이해하지 못할 수 있습니다.

“FPGA 구현이 시뮬레이션과 다르고 그것이 구현상의 문제인지 알고리즘 문제인지 알 수 없는 경우가 있습니다.” 라고 Hogasten이 말합니다. “또한 하드웨어 엔지니어가 알고리즘을 심층적으로 이해하지 못하기 때문에 그것을 최적화하기 위해 어떤 가정이 안전한 것인지 알 수 없었습니다. 나중에 알고리즘을 약간만 개선해도 HDL 대부분을 다시 작성해야 했습니다.”

솔루션

FLIR사는 MATLAB 및 HDL Coder를 사용하여 FPGA 기반 열 화상 알고리즘을 위한 새로운 워크플로를 확립했습니다.

알고리즘 엔지니어는 MATLAB과 Image Processing Toolbox™를 사용하여 모폴로지 기능과 다차원 이미지 필터링을 기반으로 새로운 알고리즘을 탐색합니다.

이러한 엔지니어는 구현할 알고리즘을 선택하고 타겟 FPGA 하드웨어에 매핑되는 알고리즘 구성 요소를 파악합니다. 이러한 파티셔닝 과정에서 설계팀은 Image Processing Toolbox의 고수준 함수들을 코드 생성을 지원하는 MATLAB 코드로 대체합니다. Image Processing Toolbox 알고리즘은 골든 레퍼런스를 제공하여 FLIR사의 MATLAB 코드의 검증을 완화합니다.

엔지니어는 bit-true 시뮬레이션 및 분석을 지원하기 위해 HDL Coder의 통합된 부동 소수점-고정 소수점 워크플로를 사용하여 부동 소수점 MATLAB 알고리즘을 고정 소수점 MATLAB 코드로 자동 변환하며 Fixed-Point Designer™를 통해 산술 연산 및 자료형을 통합합니다.

팀은 FLIR사에서 사용되는 다른 테스트 환경을 지원하기 위해 MATLAB Coder™를 사용하여 생성된 고정 소수점 MATLAB 코드로부터 C 코드 및 MEX 파일을 생성했습니다.

그런 다음 HDL Coder를 사용하여 MATLAB 알고리즘으로부터 합성 가능한 HDL 코드를 생성합니다. 그런 다음 HDL 코드를 FPGA에서 구현 및 테스트하고 그 결과를 고정 소수점 MATLAB 알고리즘의 결과에 대해 검증합니다.

관련 프로젝트에서 엔지니어들은 MATLAB Compiler™ 및 Image Acquisition Toolbox™를 사용하여 카메라와 프레임 그래버(frame grabber)로부터 이미지를 수집하고 이를 다양한 알고리즘을 사용하여 처리하며 그 결과를 표시하는 응용 프로그램을 만들었습니다. 이 응용 프로그램은 다른 FLIR사 엔지니어들이 MATLAB이 설치되지 않은 경우에도 입력 범위에 대한 알고리즘을 평가할 수 있게 했습니다.

결과

  • 개념에서 현장 테스트가 가능한 프로토타입까지의 개발 시간을 60% 단축. “MATLAB과 HDL Coder를 통해 초기 알고리즘을 직접 HDL로 작성하는 단계를 제거할 수 있었습니다.” 라고 Hogasten이 말합니다. “이제 알고리즘 개발자가 직접 FPGA 프로토타입을 만들 수 있기 때문에 프로토타이핑 시간이 60%까지 단축되었습니다.”

  • 수 주가 아닌 수 시간 만에 개선 사항 완료. “최근에 한 엔지니어에게 코어 필터에 대한 중요한 알고리즘 변경을 부탁했습니다.” 라고 Hogasten이 얘기합니다. “그는 3시간 만에 MATLAB에서 변경을 마치고 HDL Coder를 이용하여 FPGA에 알고리즘을 다시 배포했습니다. 예전이라면 이러한 작업에 6주가 걸렸을 것입니다.”

  • 코드 재사용률이 0%에서 30%로 증가. “이제 HDL 코드 생성을 위해 검증된 알고리즘, 단순 구성 요소 및 MATLAB 코드의 공통 저장소를 갖게 되었습니다.”라고 Hogasten이 말합니다. “이전에는 사실상 코드 재사용이 전혀 없었지만 이제는 MATLAB 코드의 30%를 사용하여 다른 프로젝트를 위한 HDL을 생성합니다.”