FlexRIO용 컨트롤러: 배포 가능한 계측기에 대한 심층 분석

개요

FlexRIO용 컨트롤러는 고성능 I/O 및 실시간 신호 처리가 필요한 어플리케이션을 위해 설계된 상용 솔루션으로, 단독으로 사용할 수 있는 컴팩트형 폼팩터에 담겨 제공됩니다. FlexRIO용 컨트롤러는 엔지니어가 모듈형 I/O, LabVIEW 로 프로그래밍 가능한 FPGA, 온보드 프로세서를 통해 특정 어플리케이션용 하드웨어를 완전히 재구성할 수 있도록 지원한다는 점에서 대부분의 상용 계측기와 차별화됩니다. 또한 PXI의 FlexRIO와 동일한 어댑터 모듈, FPGA, 소프트웨어 사용 방식을 공유하기 때문에 PXI 플랫폼을 기반으로 개발된 솔루션에 더욱 이상적인 배포 대상이 됩니다. FlexRIO용 컨트롤러는 PXI의 FlexRIO와 공통점이 많지만, 더 작고 가벼우며 전력 소모가 적은 솔루션이 선호되는 임베디드 어플리케이션에 보다 적합합니다.

내용

 그림 1: FlexRIO용 컨트롤러는 고성능 I/O 및 대형 Kintex-7 FPGA를 갖춘 독립형 신호 수집 및 처리 장치입니다. 

내부 아키텍처

FlexRIO용 컨트롤러는 모듈식 I/O 인터페이스, 프로세서, 2 GB DDR3 DRAM이 연결된 대형 Kintex-7 FPGA와 함께 구축됩니다. FPGA는 400,000개 이상의 로직 슬라이스, 1,540개의 DSP(디지털 신호 처리) 슬라이스, 28 Mb의 BRAM을 갖추고 있어 막대한 양의 신호를 처리할 수 있습니다. 듀얼코어 ARM 프로세서는 타 장치와의 인터페이스 연결을 위한 네트워크 및 USB 기능, 파라미터 및 데이터 로깅을 위한 온보드 스토리지 기능을 제공합니다.  

 

대형 FPGA 및 저전력 프로세서의 조합은 대부분의 알고리즘을 FPGA에서 구현할 수 있을 때 특히 유용하며, 이를 통해 듀얼 코어 ARM 프로세서의 성능을 시스템의 전원 가동 구성 및 모니터링에 집중할 수 있습니다. 고성능 FPGA는 고속 데이터를 유의미한 정보로 전환할 수 있어, 시스템의 종단에서도 유용한 정보를 얻을 수 있습니다.

 그림 2: FlexRIO용 컨트롤러는 대형 Kintex-7 FPGA를 갖춰 신호 처리 알고리즘을 실시간으로 가동해야 하는 어플리케이션에 이상적입니다. 

 

NI 7932R 및 NI 7935R 모델은 10 기가비트 이더넷 UDP, Xilinx Aurora, 또는 맞춤 프로토콜을 사용해 FPGA에서 직접 데이터 스트리밍이 가능한 2개의 고속 시리얼 포트를 갖추고 있습니다. 따라서 고대역폭 데이터를 중앙 위치에 수집할 때 적합합니다. 

 

FlexRIO 어댑터 모듈 인터페이스

NI에는 다양한 고성능 아날로그, 디지털 및 RF I/O 모듈이 있습니다.
FlexRIO의 컨트롤러에는 132개의 범용 FPGA I/O (GPIO), 파워 레일, 클럭 입력, I/O 모듈 제어 신호로 구성된 어댑터 모듈 인터페이스가 있습니다. 132개의 GPIO 라인은 최대 400 Mb/s의 싱글 엔드 모드 또는 66가지의 1 Gb/s 차동 페어 등 원하는 다양한 조합으로 사용 가능합니다. 범용 인터페이스는 FlexRIO 모듈 개발 키트(MDK)를 통한 맞춤형 I/O 개발이 가능하나, NI는 수많은 고속 I/O 모듈을 제공하므로 최대 3 GS/s의 아날로그 I/O와 최대 4.4 GHz의 RF I/O, 최대 1 Gb/s의 디지털 I/O를 모두 지원할 수 있습니다.

 

 그림 3: NI 5772는 시간 영역 및 주파수 영역 측정에 공통적으로 사용할 수 있는 2채널 고속 디지타이저 어댑터 모듈입니다. 

 

NI FlexRIO 어댑터 모듈에 대한 자세한 정보는 여기를, FlexRIO 모듈 개발 키트에 대한 자세한 정보는 여기를 클릭하십시오.

 

FPGA

LabVIEW FPGA 모듈의 LabVIEW 시스템 설계 소프트웨어를 사용해 FPGA를 프로그래밍하면 LabVIEW 기반의 알고리즘 캡처 및 VHDL/Verilog 통합이 가능합니다. 기존의 LabVIEW 라이브러리를 활용하면 데이터 이동 인프라와 초광대역 빠른 푸리에 변환(FFT) 및 병렬 리샘플링 알고리즘, 호스트로의 DMA 스트리밍과 같은 고급 신호 처리 기능을 활용해 개발 속도를 높일 수 있습니다. 로컬 컴파일링 전, 또는 NI 컴파일 클라우드 서비스를 통해 설계를 LabVIEW에서 시뮬레이션할 수 있습니다. LabVIEW FPGA 및 Xilinx Vivado를 사용해 FPGA 비트파일을 컴파일한 후에는, 개발 시스템에 있는 LabVIEW 또는 C/C++로 구축한 리얼타임 어플리케이션, 또는 장치의 플래시를 통해 비트파일을 배포할 수 있습니다. FlexRIO 설계에서는 로직이 수백 메가헤르츠(MHz)로 클럭킹되는 경우가 많아 시간제한을 맞추기가 더욱 어렵습니다. 신규 LabVIEW FPGA 개발자의 경우, 고성능 LabVIEW FPGA 개발자 가이드에서 시간 및 리소스 최적화의 우수 사례를 살펴보도록 권장합니다.

 

 그림 4: LabVIEW는 설계, 시뮬레이션, 디버깅, 배포를 위한 통합형 그래픽 개발 환경을 제공하여 FPGA 프로그래밍을 간소화합니다. 

 

엔지니어는 Xilinx Kintex-7 K325T와 대형 K410T의 2가지 FPGA 옵션 중 하나를 선택할 수 있습니다. 초기 개발의 경우 대형 FPGA를 사용하면 엄청난 장점이 있습니다. 개발 중 기능을 유연하게 추가할 수 있을 뿐만 아니라 같은 코드를 더 큰 FPGA에서 컴파일할 수 있으므로 설계 중 컴파일 및 반복 시간이 줄어듭니다. NI가 제공하는 I/O 인터페이스를 이용하면, 단일 하드웨어 타겟을 위해 작성한 LabVIEW FPGA 코드를 타 NI 하드웨어 또는 FPGA 및 I/O 기능이 다른 하드웨어로 빠르게 복사할 수 있습니다.

 

FPGA

슬라이스

LUT

플립플롭

DSP 슬라이스

블록 RAM (kb)

온보드 DRAM

Kintex-7 K410T

63,550

254,200

445,200

1,540

28,620

2 GB

Kintex-7 K325T

50,950

203,800

407,600

840

16,020

2 GB

 

 그림 5: FlexRIO용 컨트롤러에는 2가지 Xilinx FPGA가 있어 사용자의 어플리케이션에 맞는 쪽을 선택할 수 있습니다. NI는 배포 설계의 최적화를 시도하기 전에 초기 개발용으로 가장 큰 FPGA를 사용할 것을 권장합니다.

 

DRAM은 비결정 버스 전체의 다단계 신호 처리 알고리즘 및 데이터 버퍼링에 상당한 가치를 더하는 리소스입니다.  이러한 유형의 작동을 구현하기 위해 FlexRIO용 컨트롤러의 세 가지 버전 모두 FPGA에 2 GB 용량의 DDR3 DRAM을 장착했습니다. DRAM 인터페이스는 데이터 폭이 512 비트로 최대 166 MHz의 클럭 속도에서 효율적으로 이용할 수 있으므로, DRAM과 FPGA 간의 이론상 최대 대역폭은 10.6 GB/s입니다. 랜덤 액세스 읽기 및 쓰기는 DRAM의 처리량을 감소시키지만, NI는 9 GB/s 이상의 순차적 읽기 및 쓰기를 벤치마킹했습니다. LabVIEW FPGA에서 LabVIEW 메모리 항목을 사용하거나 메모리 IDL(Instrument Design Library)을 사용해 FIFO를 구현하면 DRAM 문제를 해결할 수 있습니다.

DRAM을 효과적으로 사용하는 방법을 알아보려면 여기를 클릭하십시오.

 

고속 시리얼

신호 수집 및 처리 후 고대역폭 데이터 스트리밍이 필요한 어플리케이션을 위해 NI 7932R 및 NI 7935R에는 각각 최대 10.3125 Gb/s로 데이터를 스트리밍할 수 있는 2개의 고속 시리얼 트랜시버를 장착했습니다. 이 기술은 FPGA에서 프런트패널에 있는 2개의 SFP+ 커넥터로 라우팅되는 Xilinx GTX 멀티기가비트 트랜시버(MGT)를 기반으로 합니다. NI는 10 기가비트 이더넷 UDP 및 Xilinx Aurora 프로토콜을 위한 LabVIEW FPGA 샘플 프로젝트를 제공하고 있습니다. VHDL 경험이 있는 사용자는 Serial RapidIO 또는 맞춤 프로토콜과 같은 기타 프로토콜을 구현할 수 있습니다.

 

이러한 고속 시리얼 포트를 사용하는 데이터 스트리밍 구성의 예로 Xilinx Aurora를 사용한 여러 컨트롤러 간의 데이터 공유, Aurora 또는 10 기가비트 이더넷을 사용해 PXI로 데이터 역스트리밍, 데스크탑 PC로의 데이터 스트리밍, 데이터 레코더, NAS(Network Area Storage), 10 기가비트 이더넷을 사용하는 서버 등이 있습니다. 

 

 그림 6: 고속 시리얼 포트는 고대역폭 데이터를 여러 디바이스로 스트리밍하는 데 사용됩니다. 통신 프로토콜은 LabVIEW FPGA에 정의되며, 각 트랜시버는 최대 10.3125 Gb/s로 가동합니다. 

 

광섬유를 연결하면 수 킬로미터 떨어진 장비에 데이터를 스트리밍할 수 있습니다.
고속 시리얼 연결은 구리나 광섬유 배선도 지원합니다. 단거리 스트리밍은 표준 직부착 구리 SFP+ 케이블로도 가능하지만, 멀티모드 및 싱글모드 광섬유 트랜시버를 사용하면 데이터를 수백 미터 또는 수 킬로미터 떨어진 곳까지 스트리밍할 수 있습니다.

 

NI 제품의 고속 시리얼 기술에 대한 자세한 내용은 여기를 참조하십시오.

 

클럭킹

FPGA 및 고속 I/O로 작업하는 엔지니어는 적절한 클럭킹 및 동기화 아키텍처의 구현에 상당한 시간을 할애하는 경우가 많습니다. 이러한 프로세스를 간소화하기 위해 FlexRIO용 컨트롤러는 외부 10 MHz 기준 클럭 입력, 양방향 트리거 라인, 온보드 100 MHz 오실레이터, 외부 참조로의 위상 고정과 같은 수많은 클럭킹 옵션을 제공합니다.  I/O 모듈과 FPGA 간의 동기 데이터 전송을 보장하기 위해 FlexRIO용 컨트롤러 클럭킹 회로와 I/O 모듈 샘플 클럭을 공유합니다. 추가 클럭은 FPGA에 배치할 수도 있습니다.

 그림 7: FlexRIO용 컨트롤러의 클럭킹 회로를 사용하면 여러 디바이스를 하위 샘플 정확도와 동기화할 수 있습니다. 

 

분산형 시스템 및 타임스탬프를 위해 GPS 리시버를 연결하면 10 MHz의 클럭을 기준 클럭의 입력에 공급하고 초당 1 펄스(PPS)의 입력을 트리거 SMA에 공급할 수 있습니다. 동기화 요건이 비교적 덜 엄격한 경우, NI Linux 실시간 호스트는 소프트웨어 기반의 IEEE 1588도 지원합니다. 전기적 동기화가 가능한 시스템에서는 Ettus Octoclock과 같은 10 MHz 소스를 사용하여 기준 클럭을 제공할 수도 있습니다. 여러 유닛이 공동 배치된 경우에는 PXI 플랫폼의 고급 클럭킹 및 동기화 기능을 고려하는 것도 좋습니다.

 

프로세서

듀얼코어 ARM Cortex-A9 프로세서는 유연성과 강력한 연결 기능을 갖추고 있어 FlexRIO용 컨트롤러의 현장 배포에 유용합니다. 이를 통해 데이터를 네트워크에 제공하거나, 구성 파라미터를 조정하거나, 데이터 및 메시지를 로깅하거나, 디바이스에서 실행하는 소프트웨어 및 FPGA 펌웨어를 업데이트할 수도 있습니다. 이 프로세서는 NI Linux Real-Time OS를 사용하므로 결정성 및 신뢰성이 우수하며 Linux kernel의 일반적인 장점도 갖추고 있습니다. Real-Time OS(RTOS)는 LabVIEW Real-Time Module을 사용해 프로그래밍할 수 있으며 Eclipse를 통한 C/C++ 개발도 지원합니다. 개발자는 LabVIEW에서 어플리케이션을 프로그래밍 및 구축함으로써 네트워크 통신 및 파일 I/O용 라이브러리를 사전에 구축할 수 있으므로 개발 과정이 크게 간소화됩니다.

FlexRIO에 익숙한 사용자가 PXI의 FlexRIO에서 FlexRIO용 컨트롤러로 전환할 경우, FPGA와 기존 Windows 클라이언트 간에 네트워크 통신 계층이 추가된다는 기본적 차이점을 발견하게 됩니다. Windows에서 FPGA를 직접 타겟팅하는 대신 NI Linux Real-Time용으로 개발된 코드로 FPGA를 타겟팅하므로, 시스템 모니터링 또는 구성을 위한 네트워크 통신을 사용자가 직접 프로그래밍해야 합니다. NI 7932R 및 NI 7935R 사용자는 2개의 고속 시리얼 포트를 활용해 FPGA의 데이터를 10 기가비트 이더넷 UDP 또는 Xilinx Aurora를 통해 직접 스트리밍할 수 있습니다.

 

 그림 8: 배포된 시스템에는 보통 FPGA에서 실행하는 펌웨어, Linux Real-Time 호스트에서 실행하는 LabVIEW 또는 C/C++ 코드, 원격 구성, 모니터링 또는 데이터 로깅용 클라이언트 어플리케이션에 해당하는 3개의 어플리케이션 계층이 있습니다. 

 

또한 이 프로세서는 512 MB의 플래시 스토리지와 512 MB의 RAM, 1 기가비트 이더넷 인터페이스, USB 2.0 디바이스 및 호스트 인터페이스, µSD 카드 슬롯을 갖추고 있습니다. 배포된 어플리케이션의 기본 인터페이스로는 훨씬 더 많은 대역폭을 지원하는 1 기가비트 이더넷을 사용해야 하지만, 설정, 구성 및 진단용으로 USB 디바이스 포트도 사용할 수도 있습니다.

 

연결성

모든 연결은 단일 하드웨어 페이스에 노출되어 디바이스를 대형 시스템에 더욱 쉽게 통합할 수 있도록 해줍니다. I/O는 모듈식이지만, 아날로그 어댑터 모듈 역시 보조 I/O 커넥터를 통해 디지털 I/O가 있는 FPGA를 제공합니다. 이 컨트롤러는 9 ~ 30 V의 DC 전원을 수용하므로 휴대용 시스템에서 배터리로 가동할 수 있습니다.

 그림 9: FlexRIO용 컨트롤러는 FlexRIO 어댑터 모듈이 제공하는 연결성과 별도로 데이터 스트리밍용 산업 표준 인터페이스, 클럭킹 및 동기화용 SMA 커넥터, 주변 장치와의 통신을 위한 USB 포트, 시각적 상태 표시를 위한 LED가 장착되어 있습니다. 

 

2개의 USB 포트를 제외한 모든 커넥터에는 케이블 보호용 수단이 적용되어 있습니다. USB 호스트 포트(주황색)는 보호 수준을 더욱 높였으며 USB 디바이스 포트는 기본적으로 진단 용도입니다.

 

물리적 패키지

디바이스의 알루미늄 엔클로저는 맞춤형 기계를 설계할 필요성을 없애주고 다양한 시나리오에서 일정한 아날로그 및 열 성능을 제공함으로써 통합 작업을 더욱 쉽게 만들어줍니다. 장착 키트를 사용할 경우 안전하게 패널을 장착할 수 있습니다.

 

 그림 10: FlexRIO용 컨트롤러는 크기와 무게, 출력이 제한적인 임베디드 어플리케이션용 패키지로 제공됩니다. 

 

장기적 신뢰성과 사용성을 보장하기 위해 패키지에는 여러 기능이 포함되어 있습니다. 먼저 개발자는 소프트웨어 훅에서 FPGA 및 프로세서 온도를 모니터링할 수 있습니다. FPGA 또는 프로세서 온도가 안전 한도를 초과하면 내부 구성 요소의 손상을 막기 위해 장비가 자동으로 종료됩니다. 사용자 관리형 팬으로 제공되는 능동 냉각 기능은 소프트웨어에서 모니터링하고 장비 온도에 맞춰 자동으로 조정할 수 있습니다. 40 °C의 온도에서 팬의 MTBF(mean time between failures)는 7년 이상입니다.

 

FlexRIO용 컨트롤러는 충격, 진동, 온도 또는 습도가 우려되는 상황에 대비해 PXI와 유사한 30 g 피크 반 사인 (half-sine) 충격, 5 Hz ~ 500 Hz에서 0.3 grms의 진동, 0 °C ~ 55 °C의 주변 온도, 5 ~ 95%의 비응축 습도 등급을 받았습니다.

 

요약

NI는 10여년 간 LabVIEW의 재구성 가능한 I/O (RIO) 아키텍처와 LabVIEW FPGA를 통해 실시간으로 실행되는 알고리즘을 신속하게 프로토타이핑하는 기능을 제공해왔습니다. 이 플랫폼은 생산 또는 배포 중 코드 재사용을 극대화함으로써 레이더, 스펙트럼 모니터링, 통신, 산업 기계, 초음파, 의학 영상과 같은 분야의 신기술을 프로토타이핑하는 엔지니어와 과학자의 작업 속도를 높여줍니다.

 

다음 단계

 

Linux® 등록 상표는 전 세계에 상표권을 보유하고 있는 Linus Torvalds와 독점 라이센스 계약을 맺고 있는 LMI의 2차 라이센스에 따라 사용되었습니다.