Academic Company Events NI Developer Zone Support Solutions Products & Services Contact NI MyNI

한국이매지니어링 - NI FPGA를 이용한 SPI/I2C 센서 테스트

  Print

Author(s):
임상성 실장 - 한국이매지니어링

Industry:
Telecommunications

Products:
LabVIEW, FPGA Module

The Challenge:
기존의 SPI/I2C 센서에서는 USB 등으로 연결되는 통신 모듈을 통하여 PC에서 자동으로 데이터를 수집하였다. 그러나 연결할 수 있는 센서의 수도 많지 않았고, 고속으로 수집할 수도 없었다.

The Solution:
SPI 및 I2C 통신을 사용하는 센서를 NI FPGA 보드에 연결하여 한번에 수십 개의 센서로부터 고속으로 데이터를 수집하였다. 수집되는 데이터 종류는 설정 창을 통해 사용자가 직접 셋팅할 수 있게 하였으며, 수집된 데이터를 유저가 요구할 때 저장하였다.

"LabVIEW를 기반으로 프로그램을 구성할 수 있기 때문에 VHDL 프로그램을 구성하지 않고도 LabVIEW FPGA 모듈을 이용하여 쉽게 코딩이 가능하였다."

요약
SPI 및 I2C 통신을 사용하는 센서를 NI FPGA 보드에 연결하여 한번에 수십 개의 센서로부터 고속으로 데이터를 수집하였다. 수집되는 데이터 종류는 설정 창을 통해 사용자가 직접 셋팅할 수 있게 하였으며, 수집된 데이터를 유저가 요구할 때 저장하였다.

개발 배경
기존의 SPI/I2C 센서에서는 USB 등으로 연결되는 통신 모듈을 통하여 PC에서 자동으로 데이터를 수집하였다. 그러나 연결할 수 있는 센서의 수도 많지 않았고, 고속으로 수집할 수도 없었다. 따라서 본 프로젝트에서는 한번에 연결 가능한 센서의 수를 증가시키고, 수집 속도를 높이는데 주력하였다.

본론
하드웨어
SPI 통신은 SS(Chip Select), SCLK(Clock), MOSI(Data Output), MISO(Data Input)과 Reset으로 구성되어 있다. Master가 FPGA를 포함한 PC가 된다.



그림 1. SPI 시스템 구성


I2C는 SCL(Clock), SDA(Data Input/Output), Reset으로 구성되어 있다.



그림 2. I2C 시스템 구성

소프트웨어
소프트웨어는 크게 FPGA 프로그램과 Windows 프로그램으로 나눌 수 있다. FPGA 프로그램은 FPGA 보드의 각각의 라인 셋팅과 Clock 및 실행 알고리즘을 구현하는 부분이다. Windows 프로그램은 FPGA 내에서 구성한 API를 사용하여 FPGA 프로그램으로 입력과 출력의 데이터를 공유하는 부분이 된다. 실제 사용자는 Windows 프로그램의 화면만 볼 수 있고 Windows 프로그램의 메인 프런트패널인 사용자 인터페이스는 아래 그림 3과 같다.


그림 3. 사용자 인터페이스

위 사용자 인터페이스는 “동작”과 “저장”이라는 Top Level Menu와 메인 화면으로 구성되어있다. “동작”의 메뉴에는 각각 “통신시작”, “통신정지”, “헤더변경”, “클럭 설정”, “종료”로 나누어져 있으며, “저장” 메뉴에는 수집되는 데이터를 저장할 것인지의 여부를 결정할 수 있다. 메인 화면의 센서 선택과 데이터 선택은 각각 사용할 센서와 수집할 데이터의 사용 유무를 판단할 수 있다.

결론 및 솔루션 개발 후 얻게 된 이점
본 솔루션은 VHDL 프로그램을 모르더라도, LabVIEW 기반으로 FPGA 프로그램을 구성할 수 있다. 그리고 FPGA 보드를 사용함으로써, 한번에 통신할 수 있는 기존의 센서 사용 수를 증가시키고, 또한 통신 속도를 향상 시킬 수 있었다. 마지막으로 하나의 시스템에서 SPI 및 I2C 통신을 동시에 수행할 수 있으며, 맞춤형 통신 프로토콜도 LabVIEW FPGA 모듈을 사용하여 구현할 수 있다.

NI 솔루션을 채택한 이유
FPGA 보드는 여러 통신 규약 및 사용자 정의 통신 프로토콜을 고속 Clock과 Gate의 조합으로 구현할 수 있다. NI FPGA 보드는 최고 40MHz의 고속 Clock을 내장하고 있으며, 최대 160 Line의 많은 DIO Line과 최대 3M의 Gate를 제공한다. 특히, LabVIEW를 기반으로 프로그램을 구성할 수 있기 때문에 VHDL 프로그램을 구성하지 않고도 LabVIEW FPGA 모듈을 이용하여 쉽게 코딩이 가능하였다.

Author Information:
For more information on this Case Study, contact:
임상성 실장
한국이매지니어링

Browse All Case Studies »

  Print