티스토리 뷰

이번 글에서는 FPGA Interface C API를 통해서 LabVIEW FPGA를 통해서 생성이 된 FPGA bit 파일을 활용하여 C언어에서 직접적으로 사용할 수 있는 방법을 설명드리도록 하겠습니다. FPGA Interface C API에 대한 소개 글을 읽지 못하신 분은 아래의 링크를 참조해 주시기 바랍니다. 



이전 글에서도 설명드렸다 싶이, FPGA Interface C API를 사용하기 위해서는 아래의 소프트웨어들이 필요합니다.


 소프트웨어 이름 

 설명

 LabVIEW Full 버전 이상 +

LabVIEW FPGA 모듈

FPGA에 넣을 알고리즘을 LabVIEW를 통해서 개발할 때 반드시 필요한 소프트웨어 입니다. 이 소프트웨어들을 이용하여 알고리즘을 구현한뒤 비트 파일을 생성할 수 있습니다.

 RIO 드라이버

사용자의 PC에서 Embedded RIO 장비를 인식할 수 있게끔 도와주는 역할을 하는 디바이스 드라이버 입니다.

IDE( + Real-Time 모듈) 

C/C++을 통해서 개발하는 IDE 입니다.  


그럼 FPGA Interface C API를 사용해 볼까요?


1) FPGA 으로 프로그래밍 하기

위의 소프트웨어들이 모두 준비가 되었으면, 가장 먼저 FPGA 코딩을 시작합니다. 자신이 보유한 RIO 제품을 이용하여 프로그래밍을 한 뒤에 컴파일을 하면 비트파일이 생성이 됩니다. 프로그래밍 및 컴파일에 대해서 잘 모르시겠다면, 아래의 링크를 참조하세요. 




2) FPGA Interface C API Generator를 통해서 헤더와 코드 생성하기


특정 FPGA 코드를 구현한뒤, 컴파일이 완료가 되었으면 아래의 그림처럼 FPGA 코드 위에서 마우스 오른쪽 버튼을 클릭하여 Launch C API Generator를 실행합니다.


Genertator 창이 뜨면, 생성된 BitFile에 대한 헤더 파일과 코드 파일이 생성될 위치를 지정해 줍니다. 



위치 지정후 Generate 버튼을 클릭하면 생성이 성공이 되었다고 뜹니다.

참고 사항 : FPGA Interface C API는 Fixed Point와 Double 형에 대한 컨트롤과 인디게이터, FIFO, Memory등을 지원하지 않습니다. 따라서 FPGA 코드상에서 이러한 내용이 존재하면 Generation Succeeded과 아닌 에러창을 볼 수 있습니다.


에러 창이 뜨는 이유는 지원하지 않는 항목이 FPGA 코드상에 존재하는 것이니 그 부분을 수정하시고 Generate 과정을 거치시면 됩니다. 

물론 Fixed Point, Double 형이 코드 내부에서 처리되는것은 지원합니다. 컨트롤, 인디게이터, FIFO등의 타입만 아니면 됩니다. 



생성에 대한 성공창을 보고나서, 지정한 위치로 가면 관련 파일들이 생성된것을 확인 할 수 있습니다. 



생성된 파일의 구성은 아래와 같습니다.


 이름

설명 

 NiFpga.c

 FPGA 라이브러리와 관련된 함수를 제공

 NiFpga.h

 NiFpga.c에 대한 헤더 파일 

 NiFpga_(FPGA파일이름).h

 BitFile과 FPGA 연동에 필요한 컨트롤, 인디게이터, FIFO에 대한 Enum 정보 제공 

 NiFpga_(FPGA파일이름).lvbitx 

 LabVIEW로 구현한 FPGA 코드에 대한 비트파일


위에서 생성된 4개의 파일을 이용하여 IDE에서 개발을 할 수 있습니다. 사용자는 Main 함수를 가지고 있는 C 파일 및 관련 헤더에 NiFpga.h와 NiFpga_(FPGA파일이름).h를 Include하여 개발을 시작하면 됩니다. 개발에 필요한 준비가 모두 마쳐진 상태입니다. 개발에 대한 상세 내용은 다음 글에서 알려드리도록 하겠습니다.


도움이 되셨나요,

도움이 되었다면 아래의 그림을 클릭해주세요.



댓글