나는 현재 FPGA, 그들이 할 수있는 것, 어떻게 하는지를 조사하고있다.
두 곳 이상 ( 예 : 여기 )에서 FPGA로 간단한 마이크로 컨트롤러를 구현하는 프로젝트를 보았습니다.
그래서 내 질문 :
알고 싶습니다. 이러한 구현을 수행하는 목적은 무엇입니까? 마이크로 온보드 대신 FPGA로 구현 된 마이크로 컨트롤러를 사용해야하는 이유는 무엇입니까? 장점은 무엇입니까? 그리고 아마도 단점은 무엇입니까?
나는 현재 FPGA, 그들이 할 수있는 것, 어떻게 하는지를 조사하고있다.
두 곳 이상 ( 예 : 여기 )에서 FPGA로 간단한 마이크로 컨트롤러를 구현하는 프로젝트를 보았습니다.
그래서 내 질문 :
알고 싶습니다. 이러한 구현을 수행하는 목적은 무엇입니까? 마이크로 온보드 대신 FPGA로 구현 된 마이크로 컨트롤러를 사용해야하는 이유는 무엇입니까? 장점은 무엇입니까? 그리고 아마도 단점은 무엇입니까?
답변:
혜택:
단점 :
프로젝트가 툴툴 작업을 위해 FPGA를 사용하는 것입니다, 그것은 여분의 용량을 가지고 있다면 왜 것입니다 당신이 여분의 칩의 비용에 갈 때 당신은 단지 FPGA에 구현 할 수 있습니까?
많은 절차 적 제어 환경에서 VHDL 또는 Verilog에서 수행하는 것보다 C와 같은 언어로 필요한 설정을 구현하는 것이 훨씬 쉽습니다. 마이크로 컨트롤러를 FPGA에 추가하면 로직 및 인터페이싱 시스템을위한 VHDL / Verilog 등의 강력한 기능과 핵심 제어 및 관리 시스템을위한 절차 적 언어의 단순성 모두에서 최고의 이점을 얻을 수 있습니다.
Majenko와 PkP의 답변에 추가하여 :
CPU를 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 개요 :
마이크로 컨트롤러가 필요하고 FPGA가없는 경우 마이크로 컨트롤러 펌웨어와 함께 FPGA를 사용하는 것은 드문 일입니다. 그러나 모든 프로젝트가 그러한 방향으로 성장하는 것은 아닙니다. 많은 작업에는 FPGA가 필요하지만 결국 VHDL 솔루션에 적합하지 않은 작업이 발생합니다. 때때로 문제는 범용 CPU에 의해 가장 잘 처리됩니다. 또는 때로는 반대의 경우도 있습니다. 일부 작업은 범용 CPU에는 적합하지 않습니다. 병렬 처리가 필요합니다.
그때는 선택권이 있습니다. 디바이스에 추가 칩을 추가하거나 사용하지 않는 FPGA에 여분의 스페어 게이트가 있음을 알 수 있습니다. 약간의 IP 라이센스를 부여하면 즉시 범용 CPU를 사용할 수 있습니다!
또 다른 흥미로운 세부 사항은 일부 마이크로 컨트롤러 펌웨어를 사용자 정의 할 수 있다는 것입니다. Power PC를 내장 한 프로젝트를 알고 있지만 부동 소수점 지원에 필요한 모든 게이트와 분기 예측에 필요한 모든 게이트를 제거했습니다. 따라서 VHDL 기반 펌웨어와 나란히 맞출 수있을 정도로 작았습니다.
FPGA에서 마이크로 프로세서 또는 마이크로 컨트롤러를 인스턴스화해야하는 몇 가지 유효한 이유가 있습니다. 다음은 세 가지입니다.
프로세서 작동에 대해 배우고 싶을뿐입니다. FPGA는 코드를 실행할 때 프로세서 내부에서 발생하는 일을 조사 할 수있는 무한한 방법을 제공합니다. 이것은 단지 학습을위한 것입니다.
FPGA의 하드웨어 수준 속도 (마이크로 프로세서에서 실행되는 소프트웨어보다 빠름)가 필요한 큰 시스템을 구현하고 있지만 설계에는 복잡한 상태 머신이 필요합니다. Xilinx PicoBlaze와 같은 간단한 프로세서에서 실행되는 소프트웨어를 사용하여보다 쉽게 구현할 수 있습니다. 하드웨어 FSM보다. PicoBlaze는 최신 FPGA 프로세스 기술에서 최대 240MHz로 실행할 수 있으며 PicoBlaze 프로세서는 2 클럭주기마다 명령을 실행하므로 소프트웨어로 쉽게 프로그래밍 할 수있는 빠르고 일관된 상태 머신을 얻을 수 있습니다.
(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는 마이크로 컨트롤러의 능력을 뛰어 넘는 강력한 리프팅이 필요한 프로젝트를위한 것입니다.
오래 쓸모없고 사용할 수없는 물리적 프로세서에서 실행하려는 소프트웨어가 있기 때문에 FPGA를 사용하는 경우가 있습니다. 핀 호환되지는 않지만 (DIP 스타일 마운트가 보임에도 불구하고) 사이클을 정확하게 할 수 있습니다. 상용 마이크로 프로세서의 순수한 소프트웨어 에뮬레이션은 그렇지 않을 것입니다. 예를 들어 apple2fpga