FPGA 대 MCU: 어떤 프로세서를 사용해야 할까요?

작성 날짜: 유월 18, 2020
업데이트 날짜: 칠월 1, 2024
fpgavcmu 넓은 화면

최근에 고객을 위해 고전력 전압 변환기를 조립했는데, 설계하는 동안 MCU의 사용을 피하려고 했습니다. 고객이 보드에 디밍 기능을 추가하길 원하면서, 100,000 사이클 EEPROM이 있는 작은 부품을 추가해야만 했습니다. 저에게 이것은 큰 문제가 아니었으며, 보드당 $0.33을 추가로 지출하여 이 기능을 추가하고 시스템을 나중에 재구성할 수 있게 하는 것은 간단한 일이었습니다. 이것은 저에게 흥미로운 질문을 떠올리게 했습니다: FPGA와 MCU 중 언제 FPGA를 선택해야 할까요?

저와 함께 일하는 디자이너들은 주로 Arm, STM, TI, Nordic MCU 모듈/SoC를 사용하며, 이는 주로 제조업체의 SDK를 통한 지원 덕분입니다. 그렇다면 FPGA는 어떨까요? 같은 수준의 지원을 기대할 수 있을까요, 그리고 내장형 구성요소로 FPGA를 사용해야 할까요? 이러한 유형의 질문에 대한 답은 항상 간단하지 않습니다. FPGA와 MCU를 선택할 때 고려해야 할 사항과 보드에 새로운 구성요소를 찾을 수 있는 곳은 다음과 같습니다.

FPGA 대 MCU 기능

전자 설계 분야에서 진지하게 일하기 시작했을 때, 다양한 구성요소에 대한 약어들을 읽으며 처음에는 일부 디지털 프로세서 간의 차이점을 파악하기 어려웠습니다. 하지만 각 구성요소가 다른 애플리케이션에 대해 가지는 한계를 이해하는 것은 저에게 매우 유익했습니다. 이러한 프로세서에 프로그래밍할 수 있는 한계도 각 유형의 구성요소를 선택할 때 이해하는 데 중요했습니다.

이러한 측면에 대해 곧 다루겠지만, 때때로 젊은 디자이너로부터 여전히 가끔 질문을 받습니다: FPGA와 MCU는 무엇인가요? 둘 다 컴퓨팅 파워를 제공하므로, 완벽한 대체재가 되어야 하지 않나요? 필요한 애플리케이션에 따라 다릅니다.

FPGA와 MCU 구성요소 간의 차이점을 이해하려면 ASIC과 비교하는 것이 도움이 됩니다. ASIC의 "A"는 구성요소가 더 큰 시스템 내 특정 애플리케이션을 위해 설계되었음을 알려줍니다. 예시로는:

여기서부터 목록은 계속됩니다. 모든 ASIC은 좁은 범위의 작업을 위해 매우 특정하고 때로는 프로그래밍 가능한 기능을 제공합니다. ASIC의 통합 수준도 칩마다 다릅니다. 마이크로컨트롤러도 어느 정도 프로그래밍이 가능하며, 수행할 수 있는 작업은 ASIC의 펌웨어에 내장된 것보다 더 넓습니다. MCU는 제조업체의 SDK로 장치에 프로그래밍할 수 있는 모든 작업을 수행할 수 있도록 적응성이 뛰어나게 설계되었습니다.

FPGA의 재미와 복잡함이 있습니다. 저는 FPGA를 맞춤형 ASIC으로 생각하는 것을 좋아합니다. 이 모순이 거슬린다면, ASIC을 설계할 때 프로토타이핑의 일부로 FPGA를 사용할 수 있다는 것을 알아두세요. FPGA의 모든 로직 블록은 구성 가능합니다(기본적으로 SRAM 셀입니다). 펌웨어를 처음부터 구축하고, 하드웨어 수준에서 장치에서 작업이 어떻게 실행되는지 정의할 수 있습니다. 이것은 MCU나 ASIC으로는 할 수 없는 일입니다.

FPGA와 MCU 구성요소 비교

FPGA vs. MCU vs. ASICs: 특정 대 일반 스펙트럼.

SoCs/SiPs/SoMs는 어떤가요?

SoCs에 대해 재미있는 점은 그것들이 계산 능력 측면에서 특정에서 일반에 이르기까지 어디에나 있을 수 있다는 것입니다. 구성요소 제조업체들은 다양한 작업을 수행하는 새로운 집적 회로에 “SoC”, “SoM”, “SiP”라는 용어를 붙입니다. 이러한 작업이 이전에는 여러 개의 분리된 집적 회로를 필요로 했던 한이라도 말이죠. 이러한 구성요소들은 고도로 통합되어 있으며, 특정 대 일반 스펙트럼 어디에나 속할 수 있습니다.

MPUs: 더욱 일반적

위 그래픽에서 FPGA의 오른쪽 어딘가에는 MPU가 있을 것입니다. 이 장치들은 운영 체제를 실행하고, 여러 주변 장치와 인터페이스하며, 일반 목적 컴퓨팅의 일꾼입니다. 일부는 MCU와 FPGA가 일반성 측면에서 자리를 바꿔야 한다고 주장할 수도 있습니다(아래에서 이유를 보세요), 하지만 FPGA나 MCU는 MPU와 같은 일반 컴퓨팅을 위해 설계되지 않았습니다.

FPGA 대 MCU 선택

아래 표는 MCU와 FPGA의 가장 중요한 몇 가지 측면을 간략하게 비교한 것입니다. 각 구성요소 유형마다 장점이 있으며, 설계자가 자신의 시스템에 가장 적합한 것을 결정해야 합니다. 개인적으로 저는 C 언어로 일부 작업 경험이 있고 HDL을 배운 적이 없기 때문에 MCU를 선호합니다. 그러나, 코딩 방법을 알고 있다면, FPGA를 특수 ASIC과 같은 일부 기능을 수행하도록 프로그래밍할 수 있습니다.

| | FPGA | MCU | | ---------- | ---------- | ---------- | | 재프로그래밍| 하드웨어 수준에서 완전히 재프로그래밍 가능 | 다양함: 내장 운영 체제에 의존, 동적 | | 프로그래밍 시간 | 더 길다: 모든 것을 기계 코드로 다시 코딩하고 재컴파일해야 함 | 더 짧다: 제조업체 SDK 및 라이브러리에 의해 지원됨 | | 프로그래밍 용이성 | 학습 곡선이 가파르다고 여겨짐 | 쉬움: 일반적인 언어에 익숙한 사람이라면 누구나 코딩 가능 | | 전력 소비 | 더 높음 | 더 낮음 | | 병렬 처리 | 프로그래밍 중에 구성 가능 | 하드웨어 아키텍처에 의해 제한됨 | | 고정 대 부동 소수점 | 고정 소수점으로 구성되지만, 프로그래밍 중에 부동 소수점 구현 가능 | 둘 다 접근 가능 | | 언어 | 하드웨어 설명 언어 (HDL) | C/어셈블리 언어, RTOS에서 지원하는 경우 기타 언어(예: Python) |

초보 개발자들 사이에서 FPGA가 프로그래밍하기 어렵다고 여겨지는 경우가 많기 때문에, MCU는 일반적으로 임베디드 장치에 가장 적합한 프로세서로 간주됩니다. 이는 대부분 오픈 소스 커뮤니티에 의해 지원되었으며, 일부 오픈 소스 프로젝트는 새로운 제품의 기본 아키텍처나 개념 증명으로 사용될 수 있습니다. 여기에 제조업체의 지원이 더해지면, MCU 프로그래밍을 위한 다양한 도구를 충분히 활용할 수 있습니다.

FPGA 프로그래밍의 학습 곡선에도 불구하고, 펌웨어 아키텍처 측면에서 훨씬 더 구성 가능합니다. 사용 가능한 LUT와 ALU의 수에 따라 장치에 병렬 처리를 프로그래밍할 수 있습니다. 이는 펌웨어가 매우 특정한 응용 프로그램을 위해 설계되어야 할 때 FPGA를 훌륭한 선택으로 만듭니다. 예를 들어 AI에서의 추론, 이미지 처리, 하드웨어 제어 알고리즘 및 반복적(또는 병렬) 계산이 필요한 기타 작업이 있습니다.

적절한 구성 요소 없이는 다음 임베디드 시스템이 어디로도 나아갈 수 없으며, Octopart와 같은 전자 부품 검색 엔진을 사용하면 필요한 구성 요소를 찾을 수 있습니다. 고급 필터링 기능은 필요한 구성 요소를 좁혀주고 다음 시스템에 FPGA 대 MCU 중 무엇을 선택할지 빠르게 결정하는 데 도움을 줍니다. FPGAMCU를 Octopart에서 찾을 수 있습니다.

저희의 최신 기사를 계속해서 업데이트하려면 저희 뉴스레터에 가입하세요.

관련 자료

홈으로 돌아가기
Thank you, you are now subscribed to updates.