FPGA를 배웁시다 ① - FPGA의 용도와 활용은? | 반도체네트워크

죄송합니다. 더 이상 지원되지 않는 웹 브라우저입니다.

반도체네트워크의 다양한 최신 기능을 사용하려면 이를 완전히 지원하는 최신 브라우저로 업그레이드 하셔야 합니다.
아래의 링크에서 브라우저를 업그레이드 하시기 바랍니다.

Internet Explorer 다운로드 | Chrome 다운로드

FPGA를 배웁시다 ① - FPGA의 용도와 활용은?


PDF 다운로드



글/Clive, “Max” Maxfield, Digi-Key 제공

최적의 처리 솔루션은 종종 RISC, CISC, 그래픽 프로세서 및 FPGA의 조합, FPGA 자체 또는 패브릭의 일부로 하드 프로세서 코어를 자랑하는 FPGA에 의해 제공된다. 하지만 많은 설계자들은 FPGA의 기능에 익숙하지 않고 그 진화 과정과 사용 방법을 잘 모른다. 이 기사에서는 FPGA를 활용할 수 있는 설계 시나리오를 간략하게 설명한다. 그런 다음 기본적인 작동 방법을 살펴보고 몇 가지 흥미 있는 FPGA 솔루션 및 개발 키트를 소개한다.
설계자는 모든 응용 분야 요구 사항을 충족하는 최적의 컴퓨팅 솔루션을 제공하는 시스템을 설계하기 위한 방법을 지속적으로 찾고 있다. 대개 최적의 솔루션은 현장 프로그래밍 가능 게이트 어레이(FPGA)를 사용해야 하지만 많은 설계자가 이러한 디바이스의 기능과 통합 방법에 익숙하지 않다.


FPGA의 용도는?

기성 마이크로 프로세서(MPU) 및 마이크로 컨트롤러(MCU), 기성 그래픽 처리 디바이스(GPU), FPGA, 맞춤형 시스템온칩(SoC) 디바이스를 비롯하여 각각 다른 방법으로 제공되는 광범위한 컴퓨팅 응용 제품이 있다. 따라서 사용 제품을 결정할 때 응용 제품의 요구 사항과 고려 사항을 자세히 살펴보아야 한다.
예를 들어 5G 기술 지원과 같은 첨단 기술로 작업할 경우 설계자는 기본 표준과 프로토콜이 계속해서 발전하고 있는지를 고려해야 한다. 즉, 설계자는 통제할 수 없는 사양 변화에 빠르고 효과적으로 대응할 수 있어야 한다.
마찬가지로 시스템을 현장에 배포한 이후에 발생할 미래의 표준 및 프로토콜 변화에 유연하게 대응해야 한다. 또한 시스템 기능의 예기치 못한 버그 또는 시스템 보안 허점에 대응하거나, 기존 기능을 수정하거나, 시스템 수명을 연장하기 위해 새로운 기능을 추가할 수 있어야 한다.
일반적으로 SoC를 통해 가장 우수한 성능이 제공되지만 이 방법은 비용과 시간이 많이 소요된다. 뿐만 아니라 칩 패브릭에서 구현되는 알고리즘은 기본적으로 ‘실리콘으로 고정’된다. 위에 요약된 내용을 고려할 때 이러한 고유의 불가변성은 문제가 된다. 최적 성능과 유연성의 스윗 스팟을 찾기 위해서는 대체 경로가 필요하다. FPGA, 마이크로 프로세서/마이크로 컨트롤러와 FPGA의 조합 또는 하드 프로세서 코어를 패브릭의 일부로 자랑하는 FPGA에 의해 종종 대체 경로가 제공된다.

FPGA 유형


FPGA는 사람마다 제각각이므로 이는 까다로운 질문이다. 또한 각각의 다양한 기능으로 조합된 많은 유형의 FPGA가 있다.
FPGA의 핵심은 (‘FPGA-dom’의 원래 정의로 볼 때) 프로그래밍이 가능한 논리 블록의 어레이로 표기되는 프로그래밍 가능 패브릭이라는 것이다(그림 1a). 이러한 각 논리 블록에는 대조표(LUT), 멀티플렉서, 레지스터를 비롯한 소자 모음이 포함되어 있으며, 모두 필요에 따라 작동하도록 구성(프로그래밍)될 수 있다(그림 2).
대부분의 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 게이트)에 해당하는 수십억 개의 트랜지스터를 포함할 수 있다.

SR(Digikey1)-1.jpg

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

SR(Digikey1)-2.jpg

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

대체 구성 기술


논리 블록의 기능과 상호 연결 경로는 구성 셀을 사용하여 결정되며, 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).
이제 시스템 작성자가 더 가볍고, 경제적이면서 적은 전력을 소비하는 최신 카메라 센서 및 디스플레이 디바이스로 업그레이드하려 한다고 가정한다. 한 가지 문제는 이 새로운 디바이스 중 하나 또는 모두가 원래 응용 프로세서(AP)에서 지원되지 않는 최신 인터페이스 표준을 사용할 수 있다는 것이다. 또한 MIPI와 같은 완전히 다른 통신 프로토콜을 지원할 수 있다. 이 경우 여러 I/O 표준을 지원할 수 있는 FPGA를 일부 소프트 MIPI IP 코어와 함께 사용하면 빠르고 경제적이며 위험 없는 업그레이드 경로를 제공한다(그림 3b).

SR(Digikey1)-3.jpg

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

다른 응용 분야의 예에서는 레이더 시스템을 구현하는 데 필요한 신호 처리 수행, 통신 기지국의 빔형성과 같은 일부 컴퓨팅 집약적인 작업을 고려한다. 폰 노이만 또는 하버드 아키텍처형 기존 프로세서는 특정 작업에 적합하지만 동일한 연산 시퀀스를 반복적으로 수행해야 하는 작업에는 적합하지 않다. 단일 스레드를 실행하는 단일 프로세서에서 명령어를 한 번에 하나만 실행할 수 있기 때문이다(그림 4a).
그에 비해 FPGA의 여러 기능에서는 동시에 실행하여 일련의 작업을 파이프라인으로 연결할 수 있다. 따라서 처리량이 크게 향상된다. 마찬가지로 프로세서에서 1,000쌍의 데이터 값에 대해 동일한 작업을 1,000회 수행하는 대신 프로그래밍 가능 패브릭에 1,000개의 누산기를 인스턴스화하여 FPGA의 단일 클록 주기에 동일한 계산을 대규모 병렬 방식으로 수행할 수 있다(그림 4b).

SR(Digikey1)-4.jpg

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

누가 FPGA를 만듭니까?


이는 계속해서 진화하는 환경이다. 용량과 성능이 가장 뛰어난 하이엔드 디바이스를 생산하는 두 제조업체는 Intel(Altera 인수)과 Xilinx이다.
Intel과 Xilinx는 로우엔드 FPGA부터 하이엔드 SoC FPGA까지 다양한 제품을 제공한다. FPGA에 전력을 다하는 다른 벤더로는 로우레인지 및 미드레인지 응용 분야를 대상으로 하는 Lattice Semiconductor가 있다. 마지막으로 Microchip Technology(Actel, Atmel 및 Microsemi 인수)는 여러 중소 규모 FPGA 제품군과 로우엔드 SoC FPGA 종류를 시장에 출시하고 있다.
각각 제공하는 리소스, 성능, 용량 및 패키지 스타일이 서로 다른 많은 제품군이 있으므로 작업에 가장 적합한 디바이스를 선택하는 것이 어려울 수 있다.

FPGA를 통한 설계 방법


FPGA를 설계하는 기존 방식에서는 엔지니어가 Verilog, VHDL과 같은 하드웨어 설명 언어를 사용하여 설계 의도를 파악한다. 먼저 이러한 설명을 시뮬레이션하여 FPGA를 구성(프로그래밍)하는 데 사용되는 구성 파일을 생성하는 합성 도구에 전달된 후 필요에 따라 설명이 수행되는지 확인할 수 있다.
각 FPGA 벤더는 내부적으로 개발한 고유한 도구 체인이 있거나 특수 벤더의 맞춤형 도구를 제공한다. 어느 경우든 FPGA 벤더의 웹 사이트에서 도구에 액세스할 수 있다. 또한 완성형 도구 제품군의 무료 또는 저비용 버전이 존재할 수 있다.
FPGA를 소프트웨어 개발자가 쉽게 액세스할 수 있도록 이제 일부 FPGA 벤더에서 고급 합성(HLS) 도구를 제공한다. 이러한 도구는 C, C++ 또는 OpenCL로 작성된 상위 레벨 추상화에서 캡처한 원하는 동작에 대한 알고리즘 설명을 해석하고 하위 레벨 합성 엔진에 공급할 입력을 생성한다.
시작하려는 설계자를 위해 서로 다른 기능을 제공하는 많은 개발 및 평가 기판이 제공된다. 세 가지 예를 들면 DFRobot의 DFR0600 개발 키트는 Xilinx의 Zynq-7000 SoC FPGA를 제공하고, Terasic Inc의 DE10 Nano는 Intel의 Cyclone V SoC FPGA를 제공하고, ICE40HX1K-STICK-EVN 평가 기판은 Lattice Semiconductor의 저전력 iCE40 FPGA를 제공한다.
FPGA 기반 PCIe 도터 카드를 사용하여 X86 마더보드에서 실행 중인 응용 제품을 가속화하려는 설계자는 Xilinx의 Alveo PCIe 도터 카드 중 하나를 살펴볼 수 있다.


결론


FPGA, 마이크로 프로세서와 FPGA의 조합 또는 하드 프로세서 코어를 패브릭의 일부로 자랑하는 FPGA에 의해 종종 최적의 설계 솔루션이 제공된다. FPGA는 몇 년 동안 빠르게 발전하여 유연성, 처리 속도 및 전력의 측면에서 많은 설계 요구 사항을 해결할 수 있으므로 광범위한 응용 분야에 유용한다.

leekh@seminet.co.kr
(끝)
<저작권자(c) 반도체네트워크, 무단 전재-재배포 금지>

X


PDF 다운로드

개인정보보호법 제15조에 의한 수집/이용 동의 규정과 관련하여 아래와 같이 PDF 다운로드를 위한 개인정보 수집 및 이용에 동의하십니까? 동의를 거부할 수 있으며, 동의 거부 시 다운로드 하실 수 없습니다.

이메일을 입력하면,
(1) 신규참여자 : 성명/전화번호/회사명/분야를 입력할 수 있는 입력란이 나타납니다.
(2) 기참여자 : 이메일 입력만으로 다운로드가 가능합니다.

×

회원 정보 수정