FPGA는 언제 사용할 수 있고 마이크로 컨트롤러 / DSP는 사용할 수 없습니까?


28

고급 마이크로 컨트롤러 과정과 고급 FPGA 과정 중 하나를 선택해야합니다.

두 가지 주제 모두에 대한 입문 과정이 있었으며 현재 문제가되는 것은 이미 마이크로 컨트롤러 용 펌웨어 개발에 능숙하고 FPGA로 만들 있고 마이크로 컨트롤러 / DSP로는 할 수없는 제품 / 프로젝트를 볼 수 없다는 것 입니다.

마이크로 컨트롤러 나 DSP로는 충분하지 않은 일부 응용 프로그램 / 제품 / 프로젝트를 생각해 낼 수 있습니까?

카메라? 고속 카메라? 고속 이미지 처리?


4
주된 이유는 거의 1. 100 % 결정 론적 반응, 2. 병렬 처리의 큰 잠재력입니다. 그러나 많은 설계 가 하드웨어에 대한 것보다 프로세서에 대한 미친 논리를 프로그래밍하는 것이 훨씬 쉽기 때문에 FPGA에 정렬 코어 CPU를 통합합니다 .
Dzarda

각 장치에서 가능한 것과의 차이점은 명확하지 않습니다. 각각에는 장점이 있으며 양쪽의 문제에 대한 해결책이 있습니다. 각각에 대한 입문 과정을 밟았으므로 이것을 이해하기를 기대하므로 귀하가 무엇을 요구하는지 정확하게 궁금합니다.
Phil Frost

대부분의 경우 마이크로 컨트롤러로는 충분하지 않거나 FPGA가 확실한 선택이 될 수있는 어플리케이션을 찾고 있습니다.
Jolle

4
입문 과정에서 어느 것이 이해하기 쉬웠습니까? 그런 다음 다른 과목에서 고급 과목을 선택하십시오. 아마도 아마도 혼자서 더 쉽게 공부할 수 있기 때문입니다.
woliveirajr

답변:


21

참조 FPGA의 마이크로 컨트롤러 대를

고속 이미지 또는 비디오 처리가 좋은 예입니다. 또는 레이더 또는 레이저 기반 시스템과 같이 간단한 광학 이미지가 아닌 '이미지'를 처리합니다.

고려해야 할 핵심 사항은 처리량대기 시간 요구 사항입니다. 마이크로 컨트롤러는 마이크로 초당 한 번씩 인터럽트를 처리 할 수 ​​있습니다. 한 번에 하나의 인터럽트 만 처리 할 수 ​​있습니다. 정교한 방식으로 처리해야하는 경우 특정 시간에 서비스 할 수있는 인원이 제한됩니다.

FPGA를 사용하면 일반적으로 입력 이벤트에 즉시 응답 할 수 있습니다 (다음 클럭 사이클에서). 많은 처리 장치를 병렬로 가질 수 있습니다. 필터에 20주기가 걸린다는 것은 다른 일과 전혀 관련이 없습니다.

높은 병렬 정수 집약적 계산은 특히 복잡한 데이터 종속성이있는 경우 FPGA에서 가장 잘 작동합니다. 그러나 온보드 메모리는 많지 않습니다. 약간의 DRAM을 추가 할 수 있지만 대기 시간이 길어질 수 있습니다.

주변 장치 용으로 사용하거나 고속 디지털 버스를 말하고 싶을 수도 있습니다. 마이크로 컨트롤러 안팎으로 HDMI를 비트 뱅킹 할 수 없습니다. 주변에 PCI 카드를 구축 할 수 없습니다.


16

글쎄, 나는 FPGA에서 HD 비디오를 실시간으로 처리합니다. 내가하는 일 중 일부는 GPU 칩에서 수행 할 수 있지만 마이크로 컨트롤러 또는 DSP에서는 수행 할 수 없습니다. FPGA는 더욱 유연합니다.

많은 시스템이 FPGA와 MCU / DSP를 결합하여 두 세계를 모두 최대한 활용합니다. 내가 작업하고있는 프로젝트 중 하나는 곧 비디오 스트림의 객체 인식과 관련이 있습니다. 예비 단계 (잡음 제거, 정규화, 에지 감지 등)는 FPGA에서 가장 잘 수행되지만 인식되는 객체의 일부인 저수준 기능을 결정하는 상위 논리는 CPU에서 가장 잘 수행됩니다 ( FPGA 내부 또는 외부).

궁극적으로, 당신은 두 영역 모두에서 대화하고 싶을 것이므로, 실제로 어느 쪽을 먼저해야하는지에 대한 질문 일뿐입니다.


14

요컨대, 많은 데이터에 대해 약간의 처리를 수행해야하는 경우 FPGA가 좋고 작은 데이터에 대해 많은 처리를 수행해야하는 경우 CPU가 좋습니다.

HDMI 비디오 스트림은 많은 데이터입니다. 일반적인 비디오의 경우 CPU, GPU 또는 ASIC으로 수행 할 수 있지만 약간의 작업이 필요한 경우 (예 : 오버레이 추가) FPGA를 선택할 수 있습니다.

오디오 스트림은 많은 데이터가 아니지만 음성 인식을 수행해야 할 경우 FPGA보다 CPU를 선호합니다.

CPU에서 소프트웨어 정의 라디오를 수행 할 수 있지만 CPU보다 훨씬 더 많은 스펙트럼을 FPGA로 처리 할 수 ​​있습니다.

FPGA로 키보드 컨트롤러를 만들 수는 있지만, 마이크로 컨트롤러는 FPGA보다 저렴하고 전력 소비량이 적으며 고급 키보드 소프트웨어 (매크로, 게임 기능, 리매핑)를 쉽게 개발할 수 있습니다.

물론 트레이드 오프와 함께 어느 쪽이든 할 수 있지만 둘 다 능숙하면 트레이드 오프를 더 유능하게 평가할 수 있으며 부품 비용이나 개발 시간을 늘리는 데 드는 비용을 피할 수 있습니다. 주어진 문제에 대한 잘못된 해결책.


12

일반적으로 마이크로 컨트롤러는 작업을 수행 할 수있을 때 사용합니다. 마이크로 컨트롤러는 순차적 명령어를 실행하여 로직을 수행합니다.

FPGA는 하드웨어 게이트가 논리적으로 배선되어 있기 때문에 로직을 수행합니다. 즉, 훨씬 더 빠르게 작업을 수행 할 수 있으며 여러 가지 작업을 동시에 수행 할 수 있습니다. 일반적으로 마이크로에서와 동일한 FPGA에서 로직을 생성하고 디버깅하는 것이 더 복잡하고 어려우므로 추가 속도와 낮은 대기 시간이 필요할 때 FPGA를 사용합니다.


8

아직 언급하지 않은 응용 분야는 마이크로 전자 공학 또는 MCU / CPU / GPU / ASIC 칩 자체의 설계입니다. 이 칩들은 종종 HDL로 설계 한 후 FPGA로 구현하여 프로토 타입을 만듭니다. 따라서 HDL을 사용하기 전에 프로세서 또는 ASIC에서 실제 실리콘을 생산하는 데 필요한 레이아웃을 만들기 전에 더 쉽고 저렴하며 테스트 및 수정이 더 빠릅니다.

한 제안자는 이것을 소프트 코어 칩 형태로 언급했습니다 (오타가 있고 정렬 코어 칩이라고 함). ARM / 8051 / etc를 사용할 수 있습니다. 소프트 코어 및 필요한 모든 소프트 코어 주변 장치는 본질적으로 FPGA에 구현 된 자체 맞춤형 마이크로 컨트롤러를 설계합니다. 그런 다음 리소스가 있다고 가정하면이 컨트롤러를 자체 마이크로 컨트롤러에 넣을 수 있습니다.

이런 종류의 응용 프로그램이 관심이 있다면 OpenCores 를 살펴보고 가능한 것을 확인하십시오.


6

FPGA를 광범위하게 사용하는 레이더 기기 (주로 합성 조리개)를 제작합니다. 마이크로 컨트롤러가 엄격한 타이밍 요구 사항을 쉽게 충족시킬 수 있다고 생각하지 않습니다. 많은 LIDAR 기기들도 FPGA를 사용한다고 생각합니다.

기본적으로 타이밍 요구 사항이 나노초 내에있는 모든 것은 FPGA 또는 ASIC이 필요합니다.


5

마이크로 컨트롤러는 한 번에 한 명령 씩 순차적으로 데이터를 처리 할 수 ​​있으므로 비용이 많이 드는 작업 인 경우 계산을 병렬 처리 할 수 ​​있습니다. 오디오 / 비디오 처리가 좋은 예입니다. 이러한 요구를 충족시키기 위해 특정 작업을 병렬로 수행 할 수있는 디지털 신호 프로세서가 개발되었지만 임의의 알고리즘을 구현하기에 충분히 일반화되지 않았으므로 이러한 프로세서는 모든 작업이 아닌 많은 작업에 작동합니다. FPGA는 일반화 된 하드웨어입니다. 본질적으로 자체 하드웨어 디자인을 정의한 다음이를 FPGA로 다운로드 할 수 있기 때문에 리소스가 충분할 경우 상상할 수있는 모든 알고리즘을 구현할 수 있습니다.

구체적인 예 : Ken Perlin은 심플 렉스 노이즈 알고리즘의 하드웨어 구현을 제안합니다. 기존의 CPU 또는 마이크로 컨트롤러로 비교적 빠르게 수행 할 수 있지만 사용자 정의 하드웨어로 매우 빠르게 만들 수 있습니다. DSP가이 기능을 사용할 수 있을지 의심되기 때문에 가장 쉬운 방법은 FPGA입니다. 물론 어려운 방법은 실제 물리적 칩을 제조하는 것이므로 엄청나게 비쌉니다. http://www.csee.umbc.edu/~olano/s2002c36/ch02.pdf


5

여기에없는 한 가지 대답은 데이터 수집입니다. ADC를 사용하여 200Mhz에서 신호 (예 : RF 신호)를 샘플링하고 처리하려면 마이크로 컨트롤러가 데이터를 충분히 빠르게 처리 할 수 ​​없습니다. 일반적인 DAQ FPGA 보드는 DDC를 수신, 필터링, 수행 하고 RF 데이터를 훨씬 낮은 주파수로 CPU에 전달합니다. FPGA는 RF 스펙트럼에서 FFT 및 채널 화 작업을 수행 할 수도 있습니다.

다른 응용 프로그램은 패킷 라우팅, 예를 들어 각각 10Gb / s에서 작동 하는 하나 (또는 ​​여러 개의) XAUI 이더넷 인터페이스 를 관리하는 장치입니다 . 이 FPGA는 서로 다른 목적지에 대한 패킷 대기열을 필터링하고 예약합니다. 마이크로 컨트롤러 / 기존 CPU는 이러한 인터페이스의 대역폭을 처리 할 수 ​​없습니다.


4

마이크로 프로세서와 마이크로 컨트롤러가 비교적 적은 양의 회로로 많은 일을 할 수있는 근본적인 이유는 마이크로가 초당 1,000 회 정도 복잡한 계산을 수행해야하고 20 마이크로 초가 걸리기 때문입니다. 시간의 %), 해당 계산에 사용될 대부분의 하드웨어는 나머지 98 %의 시간 동안 다른 목적으로 사용될 수 있습니다. 따라서 마이크로 컨트롤러는 기능이 동시에 필요하지 않는 한 아주 적은 양의 하드웨어를 사용하여 매우 많은 수의 고유 기능을 수행 할 수 있습니다.

FPGA의 회로 량은 종종 마이크로 컨트롤러의 회로 량과 비슷합니다 (FPGA는 마이크로 컨트롤러와 마찬가지로 크기가 수십 배씩 다르지만 범위는 겹칩니다). 그러나 많은 비 동시 작업에 사용하기 위해 회로 요소가 연결되는 마이크로 컨트롤러와 달리 FPGA는 회로의 일부를 다양한 작업 "풀 타임"에 전용으로 설계됩니다. 마이크로 컨트롤러가 100 개의 입력 각각에서 발생하는 펄스 수를 계산하도록하려면 모든 입력이 펄스 될 수있는 경우 컨트롤러가 개별적으로 순차적으로 처리 할 수있을 정도로 느린 펄스 수로 제한됩니다. 독립적으로, 빠른 컨트롤러조차도 입력 당 초당 수천 펄스 이상을 계산하는 데 어려움을 겪을 것입니다. 대조적으로


1

FPGA는 하드웨어 로직 회로 또는 기능 블록을 구현합니다. 이론적으로 원하는 것을 구현할 수 있습니다. 그리고 이러한 블록은 기존 MCU가 한 줄씩 프로그래밍을 실행하는 것과 달리 동시에 실행됩니다. 따라서 FPGA의 성능은 MCU보다 훨씬 뛰어나지 만 구문, 스타일 및 개념 측면에서 프로그래밍 언어와 다른 HDL 또는 VHDL 언어를 알아야합니다.


내가 말했듯이, 무엇이든 구현할 수 있으므로 고성능으로 개발을 용이하게하기 위해 기능 블록이있는 MCU를 구현할 수 있다는 것은 놀라운 일이 아닙니다. 자일링스가 제공하는 기능 블록은 Microblaze라는 임베디드 MCU입니다. 따라서 FPGA에서 임베디드 시스템 프로그램을 실행할 수도 있습니다.


예를 들어, 프로그램 가능한 오디오 이퀄라이저를 구현하려고하며 FFT와 같은 가장 무거운 계산 부분은 소프트웨어 계산을 실행하는 대신 기능 블록으로 구현할 수 있습니다. 그러나 LCD, I / O 인터페이스와 같은 간단한 작업 중 일부는 MCU에서 수행 할 수 있습니다. 또한 FPGA를 통해 MCU 임베디드 시스템과 하드웨어 기능 블록을 동시에 보유 할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.