왜 FPGA에서 마이크로 컨트롤러를 구현해야합니까?


16

나는 현재 FPGA, 그들이 할 수있는 것, 어떻게 하는지를 조사하고있다.

두 곳 이상 ( 예 : 여기 )에서 FPGA로 간단한 마이크로 컨트롤러를 구현하는 프로젝트를 보았습니다.

그래서 내 질문 :
알고 싶습니다. 이러한 구현을 수행하는 목적은 무엇입니까? 마이크로 온보드 대신 FPGA로 구현 된 마이크로 컨트롤러를 사용해야하는 이유는 무엇입니까? 장점은 무엇입니까? 그리고 아마도 단점은 무엇입니까?


이러한 많은 것들이 통조림 IP 코어를 사용하지만 자신의 롤링은 훌륭한 학습 경험이 될 수 있습니다.
Chris Stratton

1
@ChrisStratton-통조림 IP 코어에 대한 자세한 정보를 보거나 링크를 게시 할 수 있습니까? 네, 그것이 훌륭한 학습 경험이 될 수 있다고 확신합니다. 그러나 이것이 제가이 질문을하는 이유 중 하나입니다. 그것이 단지 학습 경험 이상의 것이 아닌지 궁금합니다.
James C

1
이를 수행하는 대부분의 사람들은 Microblaze, Picobloze, Nios II 등과 같은 것을 사용하고 있습니다. 이들은 기본적으로 프로젝트에 라이센스를 부여하고 프로젝트에 넣을 수있는 "캔"(라이브러리)의 프로세서 설계입니다. 대조는 아마도 일반적인 CS101 강의에서 제시된 블록 다이어그램에서 HDL 소스로 자신을 개발하는 것입니다. 강의 도면을 작동하는 하드웨어로 바꾸는 데있어 많은 흥미로운 실용성이 있습니다.
Chris Stratton

1
오픈 소스 CPU 코어의 많은 예는 오픈 코어 를 참조하십시오 .
RBerteig

3
예가 있습니다. 우리는 오래된 제품을 위해 마이크로 컨트롤러를 쓸모 없었습니다. 적절한 주변 장치를 갖춘 적합한 대체 마이크로 컨트롤러를 찾을 수 없었습니다. 임베디드 프로세서와 함께 FPGA를 사용하면 FPGA에서 이상적인 주변 장치 조합을 구현할 수있었습니다.
kkrambo

답변:


24

혜택:

  • 마이크로 컨트롤러와 커스텀 인터페이스 또는 I / O 로직 온칩 간의 초고속 인터페이스.
  • 맞춤형 프로세서 및 디버그 인터페이스
  • 또한 VHDL로 제어 코드를 작성하는 것보다 제어 논리가 더 쉬운 경우가 많습니다.

단점 :

  • FPGA에 커스텀 로직을 갖는 것에 비해 마이크로 컨트롤러와 커스텀 로직 모두에 맞추기 위해 아마도 더 비싼 FPGA가 필요하다
  • 별도의 칩에있는 기성품 마이크로 컨트롤러보다 메모리와 코어가 복잡한 경우 특히 구현하기가 더 어려울 수 있습니다.

3
추가 이점 : 더 단순한 설계, 하나의 적은 칩.
DoxyLover

4
추가 단점 : 더 많은 IP 라이센스
Mikhail

단점은 전력 소비는 어떻습니까?
Craig McQueen

@CraigMcQueen 이론적으로 아직 독립형 하드웨어로 생산되지 않은 FPGA에서 마이크로 컨트롤러를 생성 할 수 있습니다. 이 경우 비교할 전력 소비가 없습니다. 어쨌든, 그것은 일반적인 업사이드 / 다운 사이드가 되기에는 너무 장치마다 다릅니다.
Mast

모든 좋은 의견. 글쎄, 일반적으로 FPGA는 로직 셀룰러가 매크로 셀 내에서 100 %와 매우 거리가 멀기 때문에 전력 소비가 크다고 말할 수있다. 이것은 FPGA가 정교한 전력 최소화 기술을 사용할 수 있다는 사실에 의해 약간 상쇄됩니다. 제조 프로세스 (기술)는 FPGA와 같은 시대의 프로세서간에 매우 유사 할 수 있습니다. 프로세서에는 전용 메모리 블록과 FPGA가 있습니다. 이것들이 당신의 요구에 잘 맞는지 여부는 당신의 요구에 정확히 맞는 FPGA를 찾는 것이 얼마나 운이 좋은지에 달려 있습니다.
PkP

26

프로젝트가 툴툴 작업을 위해 FPGA를 사용하는 것입니다, 그것은 여분의 용량을 가지고 있다면 왜 것입니다 당신이 여분의 칩의 비용에 갈 때 당신은 단지 FPGA에 구현 할 수 있습니까?

많은 절차 적 제어 환경에서 VHDL 또는 Verilog에서 수행하는 것보다 C와 같은 언어로 필요한 설정을 구현하는 것이 훨씬 쉽습니다. 마이크로 컨트롤러를 FPGA에 추가하면 로직 및 인터페이싱 시스템을위한 VHDL / Verilog 등의 강력한 기능과 핵심 제어 및 관리 시스템을위한 절차 적 언어의 단순성 모두에서 최고의 이점을 얻을 수 있습니다.


10
이 답변의 첫 번째 문장이 주된 이유입니다. 이것은 보드에 여분의 용량이있는 FPGA가 이미있을 때 주로 수행됩니다. (적어도) 하나의 적은 칩과 적은 보드 복잡성. FPGA를 마이크로 컨트롤러로 구현하기 위해 보드에 FPGA를 배치하지는 않지만 이미 FPGA가있는 경우 부품 비용과 보드 복잡성을 줄일 수있는 좋은 방법입니다. 적어도 그것이 우리가하는 이유입니다.
reirab

13

Majenko와 PkP의 답변에 추가하여 :

CPU를 FPGA 디자인에 임베드하는 이러한 추세는 다음과 같은 여러 이기종 시스템으로 이어졌습니다.

  • 자일링스의 Zynq-7000 제품군
  • 알테라의 Arria / Cyclon / Stratix SoC FPGA
  • MicroSemi의 SmartFusion FPGA

시장에는 인텔 아톰 + 알테라 FPGA 칩이 있습니다 : http://www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html

FPGA를위한 대부분의 무료 마이크로 컨트롤러는 잘못된 툴 체인 지원으로 어려움을 겪고 있습니다. 임베디드 ARM CPU에는 추적 / 디버그 지원, 컴파일러 (gcc 도구 체인) 및 전체 Linux 지원이 제공됩니다. 다음은 FPL 2014에서 발표 된 설문 조사입니다 : http://dx.doi.org/10.1109/FPL.2014.6927482

편집 1 :
Cypress의 PSoC (Programmable System on Chip) 장치 클래스도 있습니다. 이러한 장치에는 마이크로 컨트롤러 (M8C, 8051, ARM Cortex M0 또는 Cortex M3) 및 클래식 SoC 통합 I / O 컨트롤러 또는 장치 (I²C, SPI, 타이머, CAN, DAC, ADC, OpAmp 등) 프로그래밍 가능 부품. 이 부분은 클래식 FPGA만큼 정밀한 프로그래밍이 가능하지는 않지만 추가 I / O 컨트롤러 또는 내장 하드웨어 가속기를 구현하는 데 사용할 수 있습니다. PSoC를 사용하면 디자인에 아날로그 구성 요소를 사용할 수 있습니다.
http://www.cypress.com/psoc/?source=CY-ENG-HEADER

PSoC 개요 : PSoC


10

마이크로 컨트롤러가 필요하고 FPGA가없는 경우 마이크로 컨트롤러 펌웨어와 함께 FPGA를 사용하는 것은 드문 일입니다. 그러나 모든 프로젝트가 그러한 방향으로 성장하는 것은 아닙니다. 많은 작업에는 FPGA가 필요하지만 결국 VHDL 솔루션에 적합하지 않은 작업이 발생합니다. 때때로 문제는 범용 CPU에 의해 가장 잘 처리됩니다. 또는 때로는 반대의 경우도 있습니다. 일부 작업은 범용 CPU에는 적합하지 않습니다. 병렬 처리가 필요합니다.

그때는 선택권이 있습니다. 디바이스에 추가 칩을 추가하거나 사용하지 않는 FPGA에 여분의 스페어 게이트가 있음을 알 수 있습니다. 약간의 IP 라이센스를 부여하면 즉시 범용 CPU를 사용할 수 있습니다!

또 다른 흥미로운 세부 사항은 일부 마이크로 컨트롤러 펌웨어를 사용자 정의 할 수 있다는 것입니다. Power PC를 내장 한 프로젝트를 알고 있지만 부동 소수점 지원에 필요한 모든 게이트와 분기 예측에 필요한 모든 게이트를 제거했습니다. 따라서 VHDL 기반 펌웨어와 나란히 맞출 수있을 정도로 작았습니다.


9

FPGA에서 마이크로 프로세서 또는 마이크로 컨트롤러를 인스턴스화해야하는 몇 가지 유효한 이유가 있습니다. 다음은 세 가지입니다.

  1. 프로세서 작동에 대해 배우고 싶을뿐입니다. FPGA는 코드를 실행할 때 프로세서 내부에서 발생하는 일을 조사 할 수있는 무한한 방법을 제공합니다. 이것은 단지 학습을위한 것입니다.

  2. FPGA의 하드웨어 수준 속도 (마이크로 프로세서에서 실행되는 소프트웨어보다 빠름)가 필요한 큰 시스템을 구현하고 있지만 설계에는 복잡한 상태 머신이 필요합니다. Xilinx PicoBlaze와 같은 간단한 프로세서에서 실행되는 소프트웨어를 사용하여보다 쉽게 ​​구현할 수 있습니다. 하드웨어 FSM보다. PicoBlaze는 최신 FPGA 프로세스 기술에서 최대 240MHz로 실행할 수 있으며 PicoBlaze 프로세서는 2 클럭주기마다 명령을 실행하므로 소프트웨어로 쉽게 프로그래밍 할 수있는 빠르고 일관된 상태 머신을 얻을 수 있습니다.

  3. (2)에서 확장하면 인터럽트를 처리 할 수있는 상태 머신이 필요합니다. 프로세서는 인터럽트를 서비스하기 전과 후에 상태를 안전하게 저장하고 복원하는 방법을 이미 알고 있기 때문에 실제로 유용합니다.

한 가지주의 사항이 있습니다. 표준 명령어 세트와 큰 개발 에코 시스템을 갖춘 빠른 ​​프로세서를 원한다면 Xilinx Zynq SoC에있는 두 개의 ARM Cortex-A9와 같은 빠른 하드 코어 프로세서가 필요합니다. Zynq SoC의 FPGA 패브릭을 사용하면 프로그래밍 가능한 논리에서 더 많은 프로세서 코어를 인스턴스화 할 수 있지만 ARM Cortex-A9는 Linux와 같은 표준 운영 체제 및 Android와 같은 표준 IDE를 실행할 수 있습니다.

ARM Cortex-A9와 PicoBlaze 사이에는 여러 소스에서 사용 가능한 프로그래밍 가능 논리로 구현할 수있는 많은 소프트 프로세서가 있습니다. 어떤 사람들은 자신의 프로세서를 굴리는 것을 좋아하며 이는 훌륭한 교육 활동입니다. 그러나 마이크로 프로세서에는 소프트웨어 개발 도구가 필요하며 이러한 도구를 작성 / 디버깅하려면 프로세서 자체를 작성하는 것보다 훨씬 많은 노력이 필요합니다. 프로세서 코어와 툴을 생성 / 디버깅하는 데 필요한 시간과 노력에 대비하여 맞춤형 마이크로 프로세서의 가능한 이점을 항상 상쇄해야합니다.

전체 공개 : 나는 Xilinx에서 일하지만 FPGA가 항상 솔루션이라고 말하지 않았다고 확신합니다. 50 센트 마이크로 컨트롤러가 작업을 수행 할 수 있다면 그것을 사용하는 것이 좋습니다. FPGA 및 Zynq SoC는 마이크로 컨트롤러의 능력을 뛰어 넘는 강력한 리프팅이 필요한 프로젝트를위한 것입니다.


따뜻한 환영, 스티븐!
PkP

1
좋은 대답이지만 누가 interupts를 처리 할 수있는 상태 시스템이 필요합니까? 외부 자극을 처리하려면 ISR을 실행하기 위해 프로세서를 단독으로 사용해야하므로 인터럽트는 페치-디코드-실행 프로세서에 필요한 악입니다. FPGA에서 외부 자극은 별도의 논리 블록에서 처리되는 반면 상태 머신도 계속 실행됩니다. 상태를 저장하고 복원 할 필요가 없습니다. 기본적으로 인터럽트는 HDL에없는 문제에 대한 불완전한 솔루션입니다.
Ben Voigt

물론 하드웨어로 구현 된 스테이트 머신에 맞습니다. "인터럽트"핀을 다른 상태 머신 입력으로 항상 연결할 수 있습니다. 그러나 많은 복잡한 상태 머신은 C를 실행하는 프로세서로 구현할 때 더 이해하기 쉽고, 일부 개발자에게는 더 이해하기 쉽습니다. 그때 인터럽트가 필요할 때입니다.
Steven Leibson

2

오래 쓸모없고 사용할 수없는 물리적 프로세서에서 실행하려는 소프트웨어가 있기 때문에 FPGA를 사용하는 경우가 있습니다. 핀 호환되지는 않지만 (DIP 스타일 마운트가 보임에도 불구하고) 사이클을 정확하게 할 수 있습니다. 상용 마이크로 프로세서의 순수한 소프트웨어 에뮬레이션은 그렇지 않을 것입니다. 예를 들어 apple2fpga

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