티스토리 뷰

FPGA Interface C API 소개


NI reconfigurable I/O (RIO) hardware(NI CompactRIO, NI Single-Board RIO, NI FlexRIO, NI R Series multifunction RIO, NI MXI-Express RIO)는 리얼 타임(Real-Time) OS를 기반으로 FPGA 기능을 사용할 수 있습니다. NI-RIO 하드웨어를 사용하면 기존의 FGPA 구현에 필요한 VHDL, HDL 코드 구현에 대한 이해와 경험이 없이도 LabVIEW와 FPGA 모듈을 통해서 개발이 가능합니다. 이는 사용자 입장에서의 개발 코스트를 줄여주는 역할을 함으로써, 업체에 개발 이득을 얻게 해주는 중요한 포인트가 됩니다. 


내쇼날 인스트루먼트(National Instruments,이하 NI)의 임베디드 시스템을 사용하면 개발자들은 다양한 프로그래밍 언어 툴을 이용하여 사용자가 원하는 어플리케이션 혹은 시스템을 구축 할 수 있습니다. 


일반적으로 NI 제품을 통한 FPGA 관련 기술 개발은 LabVIEW, Real Time 모듈, FPGA 모듈을 통해서 개발이 됩니다. 하지만 사용자는 FPGA 모듈을 통해서 개발된 비트 파일을 이용항여 C언어 혹은 C++언어에서도 개발을 할 수가 있습니다.


이럴 때 사용되는 것이 바로, 


FPGA Interface C API


입니다.


이 API는 C에 대한 충분한 경험이 있는 엔지니어 혹은 개발자들에게 NI 하드웨어와 FPGA 기술을 사용할 수 있게끔 도와주는 역할을 하고 있습니다. 아래의 그림은 특정 언어와 LabVIEW FPGA을 통한 개발 방법을 나타내고 있습니다. C/C++를 통한 개발은 GCC 컴파일러 뿐만 아니라, Visual Studio, NI LabWindows/CVI, Eclipse등을 통해서 개발이 가능합니다. 





C/C++의 각 개발 환경을 통해서 개발이 가능한 제품군들을 살펴보면 아래와 같습니다. 

NI CompactRIO / sbRIO 제품군은 cRIO-9068을 기점으로 Linux RTOS 혹은 VxWorks RTOS를 사용하고 있습니다. 앞으로 나오는 제품군들은 멀티 언어를 통한 Host 프로그램 개발이 가능하도록 하기 위해서 NI측은 Linux RTOS를 중점적으로 적용할 예정입니다. 



FPGA Interface C API는 랩뷰의 Host Interface에 존재하는 동일한 모든 함수를 지원합니다. FPGA의 컨트롤, 인디게이터의 접근은 물론, FIFO 메모리에 대한 쓰기/읽기 기능(DMA 스트리밍), IRQ 요청/응답도 지원을 하고 있습니다. 상세한 내용은 FPGA Interface C API Help 파일을 참조하시기 바랍니다. 


FPGA Interface C API 사용 방법


FPGA Interface C API를 사용하기 위해서는 먼저 LabVIEW FPGA를 통해서 개발된 비트파일이 필요합니다. 개발 과정은 아래와 같습니다.

  1. LabVIEW FPGA를 통해서 FPGA 코드를 개발한뒤, 컴파일 한다.
  2. 프로젝트 탐색기에서 FPGA Interface C API Generator를 실행하여 컴파일을 통해서 생성된 비트파일에 대한 헤더와 C코드를 생성한다.
  3. IDE에서 생성된 헤더와 C파일을 추가하고, 코드상에서 헤더파일을 Include 한다.
  4. IDE를 통해서 프로그램을 개발한다. 

위의 과정을 거치기 위해서는 사용자의 개발환경에는 아래와 같은 개발 프로그램/모듈이 필요합니다.



댓글