티스토리 뷰

Real-Time과 FPGA 그리고 LabVIEW


1. Real-Time? RT Module의 역할?



정확한 타이밍(루프 사이클 등)으로 제어 및 측정을 해야 할 때가 있습니다. 일반 PC에서 사용되는 OS인 윈도우의 경우 최소 처리 시간이 1ms 단위입니다. 이는 일반적인 소프트웨어 처리에는 문제가 없지만, 고속으로 무엇인가를 처리해야하는 특정 분야의 프로그램의 경우 소프트웨어 타이밍을 이용하기 때문에 타이밍의 정확성을 보장할 수 없다는 단점을 지니게 됩니다.


이러한 문제점을 해결하기 위해서 사람들은 RTOS(Real-Time Operating System, 이하 RTOS)을 사용합니다. RTOS는 실시간으로 어떠한 프로세스를 처리하는것이 아니고, 정확한 프로세시를 처리하게 해줍니다. 물론 1ms 이하의 단위 처리도 가능합니다.  특정 환경의 어플리케이션이의 요구사항이 타이밍의 정확성을 원한다면 그때 바로 RTOS를 사용하는 것입니다.


RTOS에 대한 위키의 정보를 찾아보면 다음과 같습니다.

실시간 운영 체제(문화어: 실시간조작체계) 또는 RTOS(←Real Time Operating System) 는 실시간 응용 프로그램을 위해 개발된 운영 체제이다. 운영 체제의 기능 중 CPU 시간 관리 부분에 초점을 맞추어 설계되었다. 실시간 운영 체제는 프로그래머가 프로세스 우선 순위에 더 많은 제어를 할 수 있게 한다. 응용 프로그램의 우선 순위가 시스템 프로그램의 우선 순위를 넘어설 수도 있다. 시스템 코드의 임계 구역을 최소화하였으며, 이를 통하여 응용 프로그램의 처리 요청을 정해진 시간 안에 처리해 줄 수 있다.


실시간 운영 체제의 핵심은 응용 프로그램의 테스크를 처리에 걸리는 시간을 일관되게 유지할 수 있는 정도에 있다. 처리 시간의 변동폭은 지터(jitter)라 부른다. 경성(hard) 실시간 운영 체제와 연성(soft) 실시간 운영 체제로 구분할 수 있으며, 전자가 후자에 비해 지터가 적다.


NI에서 제공하는 리얼타임 개발 환경이 RT Module입니다. RT Module을 사용해야지만이 RTOS를 사용하는 cRIO, PXI 제품군의 RT 기능을 사용할 수 있습니다. RT 모듈은  리얼타임 시스템에서 사용할 수 있는 각종 함수 및 라이브러리를 제공하고 있습니다. RT로 개발하여 배포된 시스템은 StandAlone으로 동작이 가능합니다. 

 

3. FPGA ? FPGA Module의 역할?




Field Programmable Gate Array의 약자로서 프로그래밍 가능한 게이트의 집합입니다. 하드웨어적인 로직의 구성을 브레드보드나 납땝을 통하여 개발하는 것이 아니라 VHDL이나 FPGA 모듈을 이용하여 프로그래밍 하는 것입니다. ASIC 칩은 개발 종료후 기능을 바꿀 수 없지만, FGPA는 개발할 때 마다 구현된 기능을 변경할 수 있다는 장점을 가지고 있습니다.  결과적으로 볼 때 언어를 통해서 개발한 내용이 하드웨어적으로 동작하기 때문에 보다 빠른 퍼포먼스를 보장합니다. 예를 들자면 NI 제품군중 RIO 제품군은 FPGA를 40MHz 기반으로 처리할 수 있습니다. 


위키피디아에서 말하는 FPGA는 다음과 같습니다.

FPGA(field programmable gate array, 현장 프로그래머블 게이트 어레이)은 프로그래머블 논리 요소와 프로그래밍가능 내부선이 포함된 반도체 소자이다. 프로그래머블 논리 요소는 AND, OR, XOR, NOT, 더 복잡한 디코더나 계산기능의 조합 기능같은 기본적인 논리 게이트의 기능을 복제하여 프로그래밍할 수 있다. 대부분의 FPGA는 프로그래밍가능 논리 요소 (FPGA 식으로는 논리 블록이라고도 함)에 간단한 플립플롭이나 더 완벽한 메모리 블록으로 된 메모리 요소를 포함하고 있다.


프로그램이 가능한 내부선 계층구조는 FPGA의 논리블록을 시스템 설계자가 요구하는 대로 단일 칩 프로그래밍가능 빵판처럼 내부연결을 할 수 있다. 이 논리블록과 내부선은 제조공정 이후에 소비자/설계자가 프로그램할 수 있으므로 요구되는 어떠한 논리기능도 수행할 수 있다.(그러한 이유로 "현장 프로그래머블")


FPGA는 일반적으로 주문형 반도체(ASIC) 대용품보다 느리고, 복잡한 설계에 적용할 수 없으며, 소비전력이 크다. 그러나 개발시간이 짧고, 오류를 현장에서 재수정할 수 있고, 초기 개발비가 저렴하다는 장점이 있다. 제조사는 설계 이후에 수정할 수 없도록 할당된 덜 유연한 FPGA 버전으로 싸게 팔 수 있다. 이런 설계개발은 일반적인 FPGA에서 만들었고 좀 더 ASIC와 비슷한 고정된 버전으로 변경되었다. 복합 프로그래머블 논리 소자 (CPLD)는 비슷한 역할을 할 수 있는 소자이다.


장점

  • 하드웨어로의 개발 대비 유지보수가 편리
  • 하드웨어적으로 동작하기 때문에 빠른 속도(40MHz)로 동작 가능
  • 병렬 루프 처리 가능 '


단점

  • 게이트, 플립플롭 등의 개수에 제약이 있으므로 이를 고려하여 프로그래밍 하여야 함
  • 프로그래밍이 어려움

NI 제품군을 통해서 FPGA 프로그래밍할 수 있도록 하는 것이 FPGA Module입니다. FPGA Module은 RT Module과 동일하게 기본적으로 LabVIEW 개발환경이 필요합니다. LabVIEW와 FPGA Module을 이용하면 기존의 VHDL과 같은 텍스트 기반 개발환경과 달리 그래픽 기반의 개발환경을 이용할 수 있습니다.


LabVIEW로 프로그램 작성 후 컴파일을 하게되면 VHDL로 변환되어 컴파일이 실행되고, 이를 PC나 RTOS 기반의 하드웨어에서 사용할 수 있습니다. 



따라서 RTOS의 장점과 FPGA 장점을 동시에 사용하고자 하면 RT 모듈과 FPGA 모듈 모두가 필요하게 되는것입니다. 


이 글이 도움이 되셨나요,

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



댓글