FPGA 101: 초보자용 안내서

여러분이 이진법 사고를 하고 있다면 1부부터 4부까지 놓치지 않은 것입니다. 다음은 제가 좋아하는 전자 장치인 현장 프로그래밍 가능 게이트 어레이(FPGA)에 대한 간단한 소개입니다. FPGA에 대해 얘기할 때 많은 사람들로부터 "어떻게 작동하는지 모르겠어요", "너무 복잡해요" 또는 "C로 프로그래밍할 수 없어요" 같은 얘기를 듣습니다. 이렇게 대단한 장치가 너무 쉽게 퇴짜 당하는 것 같아, 다음과 같이 일반적인 문제 중 일부를 다뤄 보려고 합니다.

현장 프로그래밍 가능 게이트 어레이란?

길게 말하면 다음과 같습니다. 이름에서 추론할 수 있듯이 논리 게이트의 프로그래밍 가능한 구조를 말합니다. 이는 근접하지만 정확한 답은 아닙니다. 내부 논리 어레이는 실제로 게이트와 함께 구현되지 않기 때문입니다. 대신에, 우리는 어레이의 블록을 논리 소자로 나타냅니다. 이는 대개 임의 논리 기능을 구현하는 룩업 테이블(LUT)과 멀티플렉서, 가산기, 플립 플롭과 같은 몇몇 지지 회로망으로 구성되어 있습니다. 논리 소자로 구성된 이러한 어레이를 종종 'FPGA 패브릭'이라고 합니다.

그림 1: FPGA 논리 소자 샘플. (이미지 출처: Wikimedia Commons)

간단히 말해, 저는 FPGA를 디지털 회로를 생성하기 위한 다채로운 비상표화 빌딩 블록 박스라로 생각합니다. 내 응용 제품에 맞게 원하는 대로 블록을 함께 연결할 수 있습니다. 디지털 회로가 동작하는 방식을 설명할 수 있다면, 필요한 만큼의 충분한 논리 소자를 사용하여 FPGA 내부에 생성할 수 있습니다. 25PWM 출력이 필요한가요? 전혀 문제가 되지 않습니다. 특수한 통신 프로토콜이 필요한가요? 해당 통신 프로토콜을 처리할 수 있는 일부 하드웨어를 작성해 보세요.

FPGA가 필요한 이유는?

FPGA는 디지털 시스템을 구현하는 데 사용되지만 간단한 마이크로 컨트롤러도 동일한 효과를 달성할 수 있습니다. 마이크로 컨트롤러는 가격이 저렴하고 PCB에 손쉽게 드롭다운할 수 있습니다. FPGA는 강력한 도구이지만 적합하지 않은 경우도 있습니다. 이 장치는 많은 비용이 요구될 수 있는 추가적인 전력, 레이아웃, 외부 회로 요구 사항을 가집니다. 상당히 비싸고 여러 특별한 요구 사항이 많은 FPGA를 사용한다는 것은 터무니없는 생각같이 보일 수 있습니다.

이미 여러분은 FPGA가 필요할 수 있는 첫 번째 이유를 추측했을 수 있습니다. 바로 유연성입니다. 구성 가능한 논리 블록을 갖는다는 것은 하드웨어에 얽매이지 않는다는 것을 의미합니다. 추가적인 생성이 가능한 논리 소자를 보유하고 있는 한, 타이머나 UART가 떨어지는 일이 없습니다. 이후 재구성이 가능할 경우, 기술 및 요구 사항이 변경됨에 따라 제품의 수명 주기를 확장할 수도 있습니다.

두 번째 이유는 속도입니다. 마이크로 컨트롤러는 명령을 순차적으로 한 번에 하나씩 실행합니다. FPGA 구조는 하드웨어적 특성으로 인해 내재적으로 병렬입니다. 따라서 동시적인 작동이 가능하므로, 순차적 프로세서에서는 비용이 많이 들 수 있는 FFT 또는 그래픽 처리와 같은 작업에 유용합니다. FPGA는 또한 LVDS 같은 일반적인 마이크로 컨트롤러보다 더 많은 고속 I/O 옵션과, HDMI 같은 프로토콜을 위해 10Gbps 이상을 지원할 수 있는 트랜시버를 제공합니다.

FPGA를 프로그래밍 하는 방법

FPGA는 HDL(하드웨어 기술 언어)이라는 특수 형태의 언어를 사용합니다. 여기에는 Verilog와 VHDL라는 두 가지 주요 언어가 있습니다. Quartus 또는 Vivado 같은 거의 모든 개발 제품군이 둘 모두를 지원하므로 사용자가 원하는 대로 결정하면 됩니다. 이러한 언어는 '합성'되며, 이는 마이크로 컨트롤러의 편집과 유사합니다. 이 합성 도구는 논리 소자를 연결하여 코드로 설명된 효과를 생성하는 방법을 FPGA에 전달합니다. 사용자가 처음으로 시작하는 경우, 코드가 CPU 명령이 아니라 하드웨어로 변환되고 있음을 기억해야 합니다.

개발을 좀더 쉽게 할 수 있도록 FPGA 벤더는 일반적으로 사용되며 설계에 손쉽게 드롭인할 수 있는 코드 블록 카탈로그를 제공합니다. 여기에는 배율기, RAM, 통신 블록 등이 포함되어 있습니다. 이러한 장치는 사용되는 HDL 코드를 확인할 필요 없이 설계에 구성 및 추가할 수 있으므로 개발 시간을 단축시킵니다.

그림 2: Xilinx 카탈로그 및 HLS의 IP 블록을 보여주는 부분 제품 구성도. (이미지 출처: eewiki.net)

일부 벤더들은 또한 고레벨 합성(HLS) 도구를 제공하여 C 또는 C++로 작성된 함수를 HDL 코드 블록으로 변환할 수 있도록 합니다. 이러한 도구를 사용하면 일부 저레벨 세부 정보를 추상화함으로써 소프트웨어 경력을 갖춘 개발자들의 진입을 방해하는 장벽을 크게 낮출 수 있습니다.

아직도 확신이 서지 않으십니까? FPGA 중 제가 가장 좋아하는 특징은 소프트 프로세서를 사용할 수 있다는 것입니다. 소프트 프로세서는 FPGA의 논리 소자에서 구축된 완전한 프로세서입니다. 이를 사용하면 프로세서에 맞는 맞춤형 지원 하드웨어를 구축하고 C로 응용 프로그램을 작성할 수 있습니다. 간단한 소프트 프로세서 시스템은 단 몇 분 만에 설치 및 프로그래밍이 가능합니다. 아직도 기존 프로세서를 필요로 한다면, 단일 패키지에 FPGA와 ARM 프로세서를 통합한 SoC를 살펴 보세요.

요약하자면, FPGA는 일반 마이크로 컨트롤러보다 더 비싸고 작업이 더 어렵지만 사용자가 필요로 할 경우 훨씬 더 많은 전력과 유연성을 제공할 수 있습니다. 기술이 향상되고 FPGA가 더 높은 수준의 통합력으로 가격이 저렴해짐에 따라 기존 마이크로 컨트롤러를 대체할 수도 있습니다. 이 글의 한 부분에라도 흥미를 느꼈다면 FPGA를 시작해 보세요. 시대를 앞서 갈 수 있습니다. 시작을 위해 저가형 개발 기판을 찾는 경우, Digi-Key의 FPGA 제조업체에서 제공하는 다음 기판을 확인해 보세요. DE10-Lite(Terasic), Arty(Digilent), Mobile Dev Board(Lattice) 또는 Maker Kit(Microsemi).

작성자 정보

Image of Taylor Roorda Digi-Key Electronics의 응용 프로그램 엔지니어인 Taylor Roorda는 2015년에 입사했으며, 주로 내장 시스템, 프로그래밍 가능 논리 및 신호 처리 관련 분야에 관심이 깊습니다. Taylor는 노스 다코타 주립대학교에서 전기 공학 학사 학위를 취득했으며 여가 시간에는 기타 연주와 작곡을 즐깁니다.
More posts by Taylor Roorda