From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

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

개요

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

내용

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

내부 아키텍처

FlexRIO용 컨트롤러는 모듈식 I/O 인터페이스, 프로세서, 2GB DDR3 DRAM이 연결된 대형 Kintex-7 FPGA와 함께 구축됩니다. FPGA는 400,000개 이상의 로직 슬라이스, 1,540개의 DSP(디지털 신호 처리) 슬라이스, 28Mb의 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 라인은 최대 400Mb/s의 단일 종단 모드 또는 66가지의 1Gb/s 차동 쌍 등 원하는 다양한 조합으로 사용 가능합니다. 범용 인터페이스는 FlexRIO 모듈 개발 키트(MDK)를 통한 맞춤형 I/O 개발을 지원하지만, NI는 많은 고속 I/O 모듈을 제공하여 최대 3GS/s의 아날로그 I/O와 최대 4.4GHz의 RF I/O, 최대 1Gb/s의 디지털 I/O를 모두 지원할 수 있습니다.

 

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

FlexRIO 모듈 개발 키트에 대해 더 자세히 알아보기

 

FPGA

사용자가 LabVIEW FPGA Module의 LabVIEW 시스템 설계 소프트웨어를 사용해 FPGA를 프로그래밍하면 LabVIEW 기반의 알고리즘 캡처 및 VHDL/Verilog 통합이 가능합니다. 기존의 LabVIEW 라이브러리를 활용하면 데이터 이동 인프라와 초광대역 빠른 푸리에 변환(FFT) 및 병렬 리샘플링 알고리즘, 호스트로의 DMA 스트리밍과 같은 고급 신호 처리 기능을 활용해 개발 속도를 높일 수 있습니다. 로컬 컴파일링 전 또는 NI 컴파일 클라우드 서비스를 통해 설계를 LabVIEW에서 시뮬레이션할 수 있습니다. LabVIEW FPGA 및 Xilinx Vivado를 사용해 FPGA 비트파일을 컴파일한 후에는, 개발 컴퓨터에 있는 LabVIEW를 통해, 컨트롤러에 탑재된 LabVIEW 또는 C/C++로 구축한 리얼타임 어플리케이션, 또는 디바이스의 플래시 장치를 통해 비트파일을 배포할 수 있습니다. 많은 FlexRIO 설계에서는 로직이 수백 메가헤르츠(MHz)로 클럭킹되는 경우가 많아 시간 제한을 맞추기가 더욱 어렵습니다. NI는 신규 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에 2GB 용량의 DDR3 DRAM을 장착되어 있습니다. DRAM 인터페이스는 데이터 폭이 512비트로 최대 166MHz의 클럭 속도에서 효율적으로 이용할 수 있어, DRAM과 FPGA 간의 이론상 최대 대역폭 10.6GB/s을 제공합니다. 임의 접근 읽기 및 쓰기는 DRAM의 처리량을 감소시키지만, NI의 벤치마크 결과 9GB/s 이상의 순차적 읽기 및 쓰기 성능을 달성했습니다. DRAM은 LabVIEW FPGA에서 LabVIEW 메모리 항목을 사용하거나 메모리 IDL(Instrument Design Library)을 사용해 FIFO를 구현하면 사용할 수 있습니다.

DRAM을 효과적으로 사용하는 방법 배우기.

 

고속 시리얼

신호 수집 및 처리 후 고대역폭 데이터 스트리밍이 필요한 어플리케이션을 위해 NI 7932R 및 NI 7935R에는 각각 최대 10.3125Gb/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용 컨트롤러는 외부 10MHz 참조 클럭 입력, 양방향 트리거 라인, 온보드 100MHz 오실레이터, 외부 참조로의 위상 고정과 같은 많은 클럭킹 옵션을 제공합니다. I/O 모듈과 FPGA 간의 동기 데이터 전송을 보장하기 위해 I/O 모듈 샘플 클럭은 FlexRIO용 컨트롤러 클럭킹 회로와 공유됩니다. FPGA에서 추가 클럭을 생성할 수도 있습니다.

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

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

프로세서

듀얼코어 ARM Cortex-A9 프로세서는 유연성과 강력한 연결 기능을 갖추고 있어 FlexRIO용 컨트롤러의 현장 배포에 유용합니다. 이를 통해 데이터를 네트워크에 제공하거나, 설정 파라미터를 조정하거나, 데이터 및 메시지를 기록하거나, 심지어 디바이스에서 실행되는 소프트웨어 및 FPGA 펌웨어를 업데이트할 수도 있습니다. 이 프로세서는 NI Linux Real-Time OS를 사용하므로 결정성 및 신뢰성이 우수하며 Linux kernel의 일반적인 장점도 갖추고 있습니다. Real-Time OS(RTOS)는 LabVIEW Real-Time Module을 사용하여 프로그래밍할 수 있으며 선호하는 통합 개발 환경(IDE)을 통한 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개의 어플리케이션 계층이 있습니다.

 

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

 

연결성

모든 연결은 하드웨어 한 쪽 면에 노출되어 디바이스를 대형 시스템에 더욱 쉽게 통합할 수 있도록 합니다. I/O는 모듈형이지만, 아날로그 어댑터 모듈 역시 FPGA에 보조 I/O 커넥터를 통해 디지털 I/O를 제공합니다. 이 컨트롤러는 9 – 30V의 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와 유사한 30g 피크 반 사인(half-sine) 충격, 5Hz – 500Hz에서 0.3grms의 진동, 0°C – 55°C의 주변 온도, 5 ~ 95%의 비응축 습도 등급을 받았습니다.

요약

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

 

다음 단계

 

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