FPGA 기본 사항: FPGA란 무엇이고 왜 필요한가?

작성자: Clive "Max" Maxfield

DigiKey 북미 편집자 제공

최적의 처리 솔루션은 종종 RISC, CISC, 그래픽 프로세서 및 FPGA의 조합, FPGA 자체 또는 패브릭의 일부로 하드 프로세서 코어를 자랑하는 FPGA에 의해 제공됩니다. 하지만 많은 설계자가 FPGA 기능에 익숙하지 않으며 그 진화 과정과 사용 방법을 잘 모릅니다. 이 기사(5부로 구성된 이 시리즈의 1부)에서는 FPGA의 기본 사항을 설명하고 주요 제공업체의 예시 솔루션을 소개합니다. 2부, 3부, 4부5부에서는 Lattice Semiconductor, Microchip, AlteraXilinx에서 제공하는 FPGA 장치 제품군 및 설계 도구와 관련된 설명에 중점을 둡니다.

설계자는 모든 응용 분야 요구 사항을 충족하는 최적의 컴퓨팅 솔루션을 제공하는 시스템을 설계하기 위한 방법을 지속적으로 찾고 있습니다. 대개 최적의 솔루션은 현장 프로그래밍 가능 게이트 어레이(FPGA)를 사용해야 하지만 많은 설계자가 이러한 장치의 기능과 통합 방법에 익숙하지 않습니다.

이 기사에서는 FPGA를 활용할 수 있는 설계 시나리오를 간략하게 설명합니다. 그런 다음 기본적인 작동 방법을 살펴보고 몇 가지 흥미 있는 FPGA 솔루션 및 개발 키트를 소개합니다.

FPGA를 사용하는 이유는?

기성 마이크로 프로세서(MPU) 및 마이크로 컨트롤러(MCU), 기성 그래픽 처리 장치(GPU), FPGA, 맞춤형 시스템온칩(SoC) 장치를 비롯하여 각각 다른 방법으로 제공되는 광범위한 컴퓨팅 응용 제품이 있습니다. 따라서 사용 제품을 결정할 때 응용 제품의 요구 사항과 고려 사항을 자세히 살펴보아야 합니다.

예를 들어 5G 기술 지원과 같은 첨단 기술로 작업할 경우 설계자는 기본 표준과 프로토콜이 계속해서 발전하고 있는지를 고려해야 합니다. 즉, 설계자는 통제할 수 없는 사양 변화에 빠르고 효과적으로 대응할 수 있어야 합니다.

마찬가지로 시스템을 현장에 배포한 이후에 발생할 미래의 표준 및 프로토콜 변화에 유연하게 대응해야 합니다. 또한 시스템 기능의 예기치 못한 버그 또는 시스템 보안 허점에 대응하거나, 기존 기능을 수정하거나, 시스템 수명을 연장하기 위해 새로운 기능을 추가할 수 있어야 합니다.

일반적으로 SoC를 통해 가장 우수한 성능이 제공되지만 이 방법은 비용과 시간이 많이 소요됩니다. 뿐만 아니라 칩 패브릭에서 구현되는 알고리즘은 기본적으로 “실리콘으로 고정”됩니다. 위에 요약된 내용을 고려할 때 이러한 고유의 불가변성은 문제가 됩니다. 최적 성능과 유연성이라는 두 가지 사항을 모두 만족시키려면 다른 방법이 필요하며, 그 다른 방법은 종종 FPGA, 마이크로 프로세서/마이크로 컨트롤러와 FPGA의 조합 또는 하드 프로세서 코어를 패브릭의 일부로 자랑하는 FPGA에 의해 제공됩니다.

FPGA란?

FPGA는 사람마다 제각각이므로 이는 까다로운 질문입니다. 또한 각각의 다양한 기능으로 조합된 많은 유형의 FPGA가 있습니다.

FPGA의 핵심은 (“FPGA-dom”의 원래 정의로 볼 때) 프로그래밍이 가능한 논리 블록의 어레이로 표기되는 프로그래밍 가능 패브릭이라는 것입니다(그림 1a). 이러한 각 논리 블록에는 대조표(LUT), 멀티플렉서, 레지스터를 비롯한 소자 모음이 포함되어 있으며, 모두 필요에 따라 작동하도록 구성(프로그래밍)될 수 있습니다(그림 2).

프로그래밍 가능 패브릭과 구성 가능한 GPIOS만 포함된 가장 간단한 FPGA 구성도그림 1: 가장 간단한 FPGA에는 프로그래밍 가능 패브릭과 구성 가능한 GPIOS만 포함되어 있고(a), 다른 아키텍처는 SRAM 블록, PLL 및 클록 관리자(b), DSP 블록 및 SERDES 인터페이스(c), 하드 프로세서 코어 및 주변 장치(d)로 이 기본 패브릭을 강화합니다. (이미지 출처: Max Maxfield)

프로그래밍 가능 논리 블록의 구성도그림 2: 각 프로그래밍 가능 논리 블록에는 대조표, 멀티플렉서, 레지스터를 비롯한 소자 모음이 포함되어 있으며, 모두 필요에 따라 작동하도록 구성(프로그래밍)될 수 있습니다. (이미지 출처: Max Maxfield)

대부분의 FPGA는 4입력 논리 함수를 구현하도록 구성 가능한 4입력 LUT를 사용합니다. 일부 응용 분야에 채택된 폭넓은 데이터 경로를 효율적으로 지원하기 위해 일부 FPGA는 6, 7 또는 8입력 LUT를 제공합니다. LUT의 출력은 논리 블록 출력 중 하나와 멀티플렉서 입력 중 하나에 직접 연결됩니다. 멀티플렉서에 대한 다른 입력은 논리 블록 입력(e)에 직접 연결됩니다. 이러한 입력 중 하나를 선택하도록 멀티플렉서를 구성할 수 있습니다.

멀티플렉서 출력은 레지스터 입력을 공급합니다. 각 레지스터를 에지 트리거 플립플롭 또는 레벨 감지 래치로 작동하도록 구성할 수 있습니다. 그렇긴 해도 FPGA 내부에서 비동기 논리를 사용하는 것은 권장하지 않습니다. 각 레지스터의 클록을 High 활성 또는 Low 활성으로 구성(활성화)할 수 있습니다. 마찬가지로 설정/초기화 입력의 활성 레벨을 구성할 수도 있습니다.

이러한 논리 블록을 "프로그래밍 가능 상호 연결의 바다"에 떠 있는 "프로그래밍 가능 논리의 섬"으로 간주할 수 있습니다. 논리 블록의 출력을 다른 논리 블록의 입력에 연결하도록 상호 연결을 구성할 수 있습니다. 마찬가지로 FPGA에 대한 기본 입력을 논리 블록의 입력에 연결하고, 논리 블록의 출력을 사용하여 장치의 기본 출력을 구동할 수 있습니다.

기본 범용 입/출력(GPIO)의 경우 뱅크(그룹)에 제공됩니다. LVCMOS, LVDS, LVTTL, HSTL, SSTL과 같은 다른 인터페이스 표준을 지원하도록 각 뱅크를 구성할 수 있습니다. 또한 입력 임피던스를 출력의 슬루율로 구성할 수 있습니다.

다음 승압 FPGA 패브릭은 블록 RAM(BRAM)이라는 SRAM 블록과 위상 고정 루프(PLL), 클록 관리자 등을 포함합니다(그림 1b). 디지털 신호 처리(DSP) 블록(DSP 슬라이스)을 추가할 수도 있습니다. 여기에는 증식 누산기(MAC) 연산을 수행할 수 있는 구성 가능 배율기와 구성 가능 가산기가 포함됩니다(그림 1c).

다른 일반적인 FPGA 기능인 고속 SERDES 블록은 기가비트 직렬 인터페이스를 지원할 수 있습니다. 모든 FPGA가 앞서 언급한 모든 기능을 지원하는 것은 아닙니다. FPGA마다 다른 시장 및 응용 분야를 대상으로 하는 다른 기능 모음을 제공합니다.

FPGA의 프로그래밍 가능 패브릭을 사용하여 프로세서 코어 또는 멀티 코어까지 원하는 논리 함수 또는 함수 그룹을 구현할 수 있습니다. 이러한 코어가 프로그래밍 가능 패브릭에서 구현되는 경우 “소프트 코어”라고 합니다. 그에 비해 일반적으로 SoC FPGA라고 하는 일부 FPGA에는 실리콘에서 직접 구현되는 하나 이상의 “하드 코어” 프로세서가 포함되어 있습니다(그림 1d). 이러한 하드 프로세서 코어는 부동 소수점 처리 장치(FPU)와 L1/L2 캐시를 포함할 수 있습니다.

마찬가지로 프로그래밍 가능 패브릭에서 CAN, I2C, SPI, UART, USB와 같은 주변 장치 인터페이스 기능을 구현할 수 있지만, 대부분의 FPGA에서는 해당 기능이 실리콘에 하드 코어로 포함되어 있습니다. 프로세서 코어, 인터페이스 기능, 프로그래밍 가능 패브릭 간의 통신은 일반적으로 고속 버스(예: AMBA 및 AXI)를 사용하여 실현됩니다.

Xilinx가 1985년에 출시한 첫 번째 FPGA에는 프로그래밍 가능 논리 블록의 8 x 8 어레이만 포함되어 있고 RAM 블록, DSP 블록 등은 없습니다. 그에 비해 오늘날의 하이엔드 FPGA는 수십만 개의 논리 블록, 수천 개의 DSP 블록, 메가비트 RAM을 포함할 수 있습니다. 전체적으로 수천만 개의 등가 게이트(예: 2입력 NAND 게이트)에 해당하는 수십억 개의 트랜지스터를 포함할 수 있습니다.

대체 구성 기술

논리 블록의 기능과 상호 연결 경로는 구성 셀을 사용하여 결정되며, 0/1(꺼짐/켜짐) 스위치로 시각화될 수 있습니다. 이러한 셀은 GPIO 인터페이스 표준, 입력 임피던스, 출력 슬루율 등을 구성하는 데에도 사용됩니다. FPGA에 따라 다음 세 기술 중 하나를 사용하여 이러한 구성 셀을 구현할 수 있습니다.

  • 안티퓨즈: 이 구성 셀은 일회성 프로그래밍 가능(OTP) 셀입니다. 즉, 장치를 구성한 이후에는 되돌릴 수 없습니다. 이러한 장치는 우주 및 강력한 보안 응용 분야로 제한되는 경향이 있습니다. 또한 소량으로 판매되므로 가격대가 높은 확장 설계 옵션입니다.
  • 플래시: 안티퓨즈 기반 구성 셀과 마찬가지로 플래시 기반 셀은 비휘발성입니다. 안티퓨즈 셀과 달리 플래시 셀은 필요에 따라 다시 프로그래밍할 수 있습니다. 플래시 구성 셀은 방사선에 대한 내성이 있으므로 우주 응용 분야에 적합합니다(상단 금속 피복 계층 및 패키지 수정 있음).
  • SRAM: 이 경우 FPGA를 켤 때마다 로드되거나 동적 구성 시나리오에 권장되는 외장형 메모리에 구성 데이터가 저장됩니다.

구성 셀이 안티퓨즈 또는 플래시 기반인 FPGA는 “즉시 켜지고” 전력 소비가 적다는 이점이 있습니다. 이러한 기술의 한 가지 단점은 나머지 칩을 생성하는 데 사용되는 기본 CMOS 공정 외에 추가 처리 단계가 필요하다는 것입니다.

구성 셀이 SRAM을 기반으로 하는 FPGA는 나머지 칩과 동일한 CMOS 공정을 사용하여 제조되고, 안티퓨즈 및 플래시 기술보다 1세대 또는 2세대 앞서 있으므로 우수한 성능을 제공한다는 이점이 있습니다. 주요 단점은 SRAM 구성 셀은 동일한 기술 노드에서 안티퓨즈 및 플래시 장치보다 많은 전력을 소비하고, 방사선에 의해 발생되는 SEU(Single Event Upset)의 영향을 받게 된다는 점입니다.

오랫동안 이 후자의 내용으로 인해 SRAM 기반 FPGA가 항공 우주 및 우주 응용 분야에 적합하지 않은 것으로 간주되었습니다. 최근에는 특수 완화 전략이 채택되어 SRAM 기반 FPGA가 화성 탐사선 Curiosity와 같은 시스템에서 플래시 기반 장치와 함께 발견되고 있습니다.

FPGA를 사용하여 유연성 제공

FPGA는 다양한 응용 분야에서 사용됩니다. FPGA는 지능형 인터페이스 기능, 모터 제어기, 알고리즘 가속화 및 고성능 컴퓨팅(HPC), 이미지 및 동영상 처리, 머신 비전, 인공 지능(AI), 머신 러닝(ML), 딥 러닝(DL), 레이더, 빔형성, 기지국 및 통신을 구현하는 데 특히 유용합니다.

간단히 예를 들면, 다른 인터페이스 표준 또는 통신 프로토콜을 사용하는 다른 장치 간에 지능형 인터페이스를 제공합니다. 레거시 인터페이스를 사용하여 카메라 센서 및 디스플레이 장치에 연결하는 응용 프로세서가 포함된 기존의 시스템을 고려해 보세요(그림 3a).

지능형 인터페이스를 제공하는 데 사용할 수 있는 FPGA 구성도그림 3: FPGA를 사용하면 다른 인터페이스 표준 또는 통신 프로토콜을 사용하는 다른 장치 간에 지능형 인터페이스를 제공함으로써 레거시 장치에 기반한 기존 설계의 수명을 연장할 수 있습니다. (이미지 출처: Max Maxfield)

이제 시스템 작성자가 더 가볍고, 경제적이면서 적은 전력을 소비하는 최신 카메라 센서 및 디스플레이 장치로 업그레이드하려 한다고 가정합니다. 한 가지 문제는 이 새로운 장치 중 하나 또는 모두가 원래 응용 프로세서(AP)에서 지원되지 않는 최신 인터페이스 표준을 사용할 수 있다는 것입니다. 또한 MIPI(Mobile Industry Processor Interface)와 같은 완전히 다른 통신 프로토콜을 지원할 수 있습니다. 이 경우 여러 I/O 표준을 지원할 수 있는 FPGA를 일부 소프트 MIPI IP 코어와 함께 사용하면 빠르고 경제적이며 위험 없는 업그레이드 경로를 제공합니다(그림 3b).

또 다른 응용 분야의 예로는 레이더 시스템을 구현하는 데 필요한 신호 처리 수행, 통신 기지국의 빔 형성과 같은 일부 컴퓨팅 집약적인 작업 등이 있습니다. 폰 노이만 또는 하버드 아키텍처형 기존 프로세서는 특정 작업에 적합하지만 동일한 연산 시퀀스를 반복적으로 수행해야 하는 작업에는 적합하지 않습니다. 단일 스레드를 실행하는 단일 프로세서에서 명령어를 한 번에 하나만 실행할 수 있기 때문입니다(그림 4a).

동시에 실행 가능한 FPGA의 여러 기능 블록 구성도그림 4: 한 번에 하나의 명령어만 (순차적으로) 실행할 수 있는 마이크로 프로세서와 달리 FPGA의 여러 기능 블록에서는 동시에 실행할 수 있습니다. 또한 FPGA는 적절한 알고리즘을 대규모 병렬 방식으로 구현할 수 있습니다. (이미지 출처: Max Maxfield)

그에 비해 FPGA에서는 여러 기능이 동시에 실행되어 일련의 작업을 파이프라인으로 연결하므로 처리량이 크게 향상됩니다. 마찬가지로 프로세서에서 1,000쌍의 데이터 값에 대해 동일한 작업을 1,000회 수행하는 대신 프로그래밍 가능 패브릭에 1,000개의 누산기를 인스턴스화하여 FPGA의 단일 클록 주기에 동일한 계산을 대규모 병렬 방식으로 수행할 수 있습니다(그림 4b).

누가 FPGA를 만듭니까?

이는 계속해서 진화하는 환경입니다. 용량과 성능이 가장 뛰어난 하이엔드 장치를 생산하는 두 제조업체는 Intel(Altera 인수)과 Xilinx입니다.

Intel과 Xilinx는 로우엔드 FPGA부터 하이엔드 SoC FPGA까지 다양한 제품을 제공합니다. FPGA에 전력을 다하는 다른 벤더로는 로우레인지 및 미드레인지 응용 분야를 대상으로 하는 Lattice Semiconductor가 있습니다. 마지막으로 Microchip Technology(Actel, Atmel 및 Microsemi 인수)는 여러 중소 규모 FPGA 제품군과 로우엔드 SoC FPGA 종류를 현장에 배치하고 있습니다.

각각 제공하는 리소스, 성능, 용량 및 포장 스타일이 서로 다른 많은 제품군이 있으므로 작업에 가장 적합한 장치를 선택하는 것이 어려울 수 있습니다. 사례: Intel 장치, Lattice Semiconductor 장치, Xilinx 장치

FPGA를 통한 설계 방법

FPGA를 설계하는 기존 방식에서는 엔지니어가 Verilog, VHDL과 같은 하드웨어 설명 언어를 사용하여 설계 의도를 파악합니다. 먼저 이러한 설명을 시뮬레이션하여 FPGA를 구성(프로그래밍)하는 데 사용되는 구성 파일을 생성하는 합성 도구에 전달된 후 필요에 따라 설명이 수행되는지 확인할 수 있습니다.

각 FPGA 벤더는 내부적으로 개발한 고유한 도구 체인이 있거나 특수 벤더의 맞춤형 도구를 제공합니다. 어느 경우든 FPGA 벤더의 웹 사이트에서 도구에 액세스할 수 있습니다. 또한 완성형 도구 제품군의 무료 또는 저비용 버전이 존재할 수 있습니다.

FPGA를 소프트웨어 개발자가 쉽게 액세스할 수 있도록 이제 일부 FPGA 벤더에서 고급 합성(HLS) 도구를 제공합니다. 이러한 도구는 C, C++ 또는 OpenCL로 작성된 상위 레벨 추상화에서 캡처한 원하는 동작에 대한 알고리즘 설명을 해석하고 하위 레벨 합성 엔진에 공급할 입력을 생성합니다.

시작하려는 설계자를 위해 서로 다른 기능을 제공하는 많은 개발 및 평가 기판이 제공됩니다. 세 가지 예를 들면 DFRobotDFR0600 개발 키트는 Xilinx의 Zynq-7000 SoC FPGA를 제공하고, Terasic IncDE10 Nano는 Intel의 Cyclone V SoC FPGA를 제공하며, ICE40HX1K-STICK-EVN 평가 기판은 Lattice Semiconductor의 저전력 iCE40 FPGA를 제공합니다.

FPGA 기반 PCIe 도터 카드를 사용하여 X86 마더보드에서 실행 중인 응용 제품을 가속화하려는 설계자는 Xilinx의 Alveo PCIe 도터 카드 중 하나를 살펴볼 수 있습니다.

결론

FPGA, 마이크로 프로세서와 FPGA의 조합 또는 하드 프로세서 코어를 패브릭의 일부로 자랑하는 FPGA에 의해 종종 최적의 설계 솔루션이 제공됩니다.

FPGA는 몇 년 동안 빠르게 발전하여 유연성, 처리 속도 및 전력의 측면에서 많은 설계 요구 사항을 해결할 수 있으므로 광범위한 응용 분야에 유용합니다.

DigiKey logo

면책 조항: 이 웹 사이트에서 여러 작성자 및/또는 포럼 참가자가 명시한 의견, 생각 및 견해는 DigiKey의 의견, 생각 및 견해 또는 DigiKey의 공식 정책과 관련이 없습니다.

작성자 정보

Image of Max Maxfield

Clive "Max" Maxfield

Clive "Max" Maxfield는 1980년 영국 Sheffield Hallam University에서 제어 공학 학사 학위를 받았으며 이후 중앙 컴퓨터용 중앙 처리 장치(CPU) 설계자로 일하기 시작했습니다. 수년에 걸쳐 Max는 실리콘 칩에서 회로 기판, 뇌파 증폭기에서 스팀펑크 예언 엔진(steampunk Prognostication Engines)에 이르는 다양한 제품을 설계했습니다. 또한 30년 이상 전자 설계 자동화(EDA) 부문을 이끌어 왔습니다.

Max는 Designus Maximus Unleashed(앨라배마에서는 금서임), Bebop to the Boolean Boogie(전자 제품 관련 색다른 안내서), EDA: Where Electronics Begins, FPGA: Instant Access 및 How Computers Do Math 등 다양한 도서의 저자/공동저자입니다. Max가 운영 중인 “Max’s Cool Beans” 블로그에 방문해 보세요.

게시자 정보

DigiKey 북미 편집자