FPGA, ASIC 및 일반 마이크로 컨트롤러의 차이점과 유사점은 무엇입니까?


25

이 게시물 을 읽었 으며 전체 질문에 대한 답변이 아닙니다.

마이크로 컨트롤러는 메모리, 레지스터가 있으며 LOAD, STORE 및 ADD와 같은 일련의 명령을 처리 할 수있는 것으로 생각합니다. 로직 게이트를 포함하여 그 역할을 수행하지만 주요 작업은 범용 비트 프로세서입니다. Microntroller는 명령어를 저장하고 처리하는 기능을 만들기 위해 상호 연결된 ASIC 설계 시스템으로 생각합니다.

ASIC 장치는 하나의 단일 작업을 수행하기 위해 논리 및 전기 구성 요소를 사용하여 특별히 구성된 회로라고 생각합니다. 다른 작업을 염두에 두거나 추가 하드웨어를 포함하지 않았습니다.

FPGA 디바이스는 ASIC 디바이스 (낮은 레벨 디바이스) + 남은 미사용 항목으로, 특정 진리표를 구현하는 데 사용됩니다.

이름에도 불구하고 FGPA는 새롭고 다른 작업을 수행하기 위해 다시 연결해야하기 때문에 "응용 프로그램에 따라"매우 느낍니다. 이것은 ASIC과의 혼동을 초래합니다. 그럼에도 불구하고, FPGA를 재배 선하는 경우 필요한 모든 하드웨어가 있어야합니다. 또한 FPGA는 프로그래밍이 가능하지만 마이크로 컨트롤러가 의도 한 것이 아닙니까?

위에서 언급 한 게시물에도 HDL이 언급되어 있습니다. HDL을 ASIC 및 FPGA와 프록시로 사용하여 전체 마이크로 컨트롤러를 설계 할 수 없습니까?


1
귀하의 질문이 무엇인지 명확하지 않습니다. FPGA와 ASIC에 대한 관련 질문을 읽었습니까? HDL은 실제로 ASIC 및 FPGA 구현을 설계하는 데 실제로 사용되며 HDL에서 마이크로 컨트롤러를 설계 할 수 있습니다.
pjc50

3
Altera는 FPGA, ASIC 및 마이크로 컨트롤러의 차이점을 잘 설명하는 FPGA for Dummies 라는 무료 전자 책을 제공합니다 .
kkrambo

@kkrambo 당신은 더미 라고 불러 ? :) 죄송합니다. 저항 할 수 없습니다 ... 확인하겠습니다.
user58446

질문 제목에 '유사성'이라는 단어를 추가했습니다. 왜냐하면 세 가지 다른 장치가 어떻게 관련되는지 혼동 할 수있는 미세한 전문 용어 세부 사항이있는 것 같습니다. 예를 들어 한 장치는 다른 두 장치 중 하나를 포함하거나 여러 장치를 포함 할 수 있습니다 유사한 구성 요소이지만 중요한 측면이 다릅니다. 이것은 기존 답변 중 일부에서 이미 다루어졌습니다. 고맙습니다.
user58446

답변:


28

ASIC 대 FPGA

필드 프로그래밍 가능 게이트 어레이는 애플리케이션 별 집적 회로의 프로토 타이핑 단계로 볼 수 있습니다. ASIC는 제조 비용이 매우 비싸고 일단 돌아 가면 되돌릴 필요가 없습니다 (가장 비싼 고정 비용이 마스크이므로 "]와 그들의 개발). FPGA는 여러 번 재 프로그래밍이 가능하지만 일반적인 게이트 배열이 목표를 달성하기 위해 연결되어 있기 때문에 ASIC처럼 최적화되지 않습니다. 또한 FPGA는 전원을 끄면 현재 상태뿐만 아니라 구성도 느슨하게한다는 점에서 기본적으로 동적 장치입니다. 시작시 구성을로드하기 위해 FLASH 칩 및 / 또는 마이크로 컨트롤러를 추가하는 보드가 현재 존재하므로 덜 중요합니다. ASIC과 FPGA는 모두 하드웨어 설명 언어로 구성 할 수 있습니다. 때로는 최종 제품에 FPGA가 사용되기도합니다. 그러나 일반적으로 디자인이 고정되면 ASIC이 시작됩니다.

FPGA와 마이크로 컨트롤러

마이크로 컨트롤러와 FPGA의 차이점은 마이크로 컨트롤러를 기본적으로 FLASH / ROM 코드를 순차적으로 처리하는 ASIC으로 간주 할 수 있습니다. 최적화되지 않았지만 그 반대는 아니지만 FPGA로 마이크로 컨트롤러를 만들 수 있습니다. FPGA는 전자 회로와 같이 연결되어 있으므로 프로세서가 코드에서 다른 코드로 점프하여 충분한 병렬 처리를 시뮬레이션하는 마이크로 컨트롤러와 달리 진정한 병렬 회로를 사용할 수 있습니다. 그러나 FPGA는 병렬 작업을 위해 설계되었으므로 마이크로 컨트롤러 에서처럼 순차 코드를 작성하는 것은 쉽지 않습니다.

예를 들어, 일반적으로 의사 코드를 "let C be A XOR B"라고 쓰면 FPGA에서 "레고 브릭이 포함 된 XOR 게이트 (룩업 테이블 및 래치)로 빌드하고 A / B를 입력으로 연결합니다. 그리고 C를 출력으로 ""C의 사용 여부에 관계없이 매 클록주기마다 업데이트됩니다. 반면 "읽기 명령어로 번역 될 마이크로 컨트롤러에서는-주소 A와 주소 B의 변수에 대한 XOR이 주소 C에 저장됩니다. 산술 논리 장치 레지스터를로드 한 다음 ALU에 XOR을 요청합니다. RAM의 주소 C에 출력 레지스터를 복사하십시오 ". 그러나 사용자 측에서는 두 명령 모두 한 줄의 코드였습니다. 이 작업을 수행하려면 HDL에서 병렬 코드와 별도로 시퀀스를 인위적으로 수행하기 위해 프로세스라고하는 것을 정의해야합니다. 마이크로 컨트롤러에서는 할 일이 없습니다. 반면에, "병렬"(실제로 튜닝 및 튜닝)을 마이크로 컨트롤러에서 가져 오려면 사소하지 않은 스레드로 저글링해야합니다. 다른 작업 방식, 다른 목적.

요약해서 말하자면:

ASIC vs FPGA : 고정 수량, 적은 수의 제품 (고용량의 저렴한 제품)에는 더 비싸지 만 최적화되어 있습니다.

ASIC vs. 마이크로 컨트롤러 : 도구와 망치를 비교하는 것과 같습니다.

FPGA vs 마이크로 컨트롤러 : 순차적 코드 처리에 최적화되지는 않았지만 병렬 작업도 매우 쉽게 수행 할 수 있습니다. 일반적으로 FPGA는 HDL, C / 어셈블리의 마이크로 컨트롤러로 프로그래밍됩니다.

병렬 작업의 속도가 문제가 될 때마다 FPGA를 가져 와서 설계를 발전시키고 장기적으로 (대량 생산) 저렴할 경우 ASIC으로 만드십시오. 순차적 작업이 정상이면 마이크로 컨트롤러를 사용하십시오. 장기적으로 더 저렴하다면 더 많은 응용 분야별 IC를 사용할 수 있다고 생각합니다. 가장 좋은 해결책은 아마도 둘 다일 것입니다.

이것을 작성한 후의 빠른 검색은 나에게 줬습니다. 여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

이 포럼에서 FPGA와 마이크로 컨트롤러


14

FPGA는 재 프로그래밍하여 "재배 선"될 수 있습니다. FPGA는 전원이 공급 될 때 구성 가능한 로직 셀에 구성을로드합니다 . 즉, 하드웨어를 변경하지 않고 다시 프로그래밍 할 수 있습니다.

ASIC은 실리콘 파운드리에서 포토 리소그래피 마스크를 수정해야만 다시 배선 할 수 있습니다.

마이크로 컨트롤러는 프로그램을 실행하고 결과적으로 일반적인 작업을 수행 할 수있는 ASIC 유형 입니다. 그러나 명령어 세트를 변경하거나 유사한 작업을 수행하려면 실제 실리콘 IC 레이아웃을 수정해야합니다.


FPGA와 MCU의 차이점은 더 모호합니다. 기본적으로 하드웨어 수준에서 FPGA는 많은 소형 SRAM 셀이며 모두 밀도가 높은 멀티플렉서에 연결됩니다. 기본적으로, FPGA는 멀티플렉서 및 SRAM 셀을 재 프로그래밍함으로써 전자적으로 "재배 선" 될 수있는 디스크리트 로직의 전체 더미입니다 .

따라서 MCU는 로직 셀의 특정 구성이므로 실제로 FPGA 내에 MCU를 구현할 수 있습니다 . 실제로, FPGA는 MCU의 설계 프로세스에서 매우 일반적으로 사용됩니다.

마이크로 컨트롤러는 특정 로직 구성을 구현 한 것입니다. 우리가 가진 이유는 실리콘에 직접 MCU를 구현함으로써 필요한 전체 실리콘 다이 공간을 상당히 최적화 할 수 있고 FPGA의 필요한 "일반성"이 금지되도록 특정 성능 최적화를 수행 할 수 있기 때문입니다. 이를 통해 MCU의 생산 비용을 대폭 절감 할 수 있으며, 결과적으로 일반 MCU는 동등한 로직을 포함 할 수있는 FPGA보다 훨씬 저렴합니다.


FPGA MCU가 할 수없는 방식으로 로직 구조를 구현할 수 있기 때문에 특정 애플리케이션에서 유용합니다. 예를 들어, X1 + Y1, X2 + Y2, X3 + Y3 및 X4 + Y4를 추가해야하는 경우 MCU는 각 작업 을 순서대로 수행해야합니다 *. FPGA는 단순히 4 개의 개별 ALU 를 동시에 가질 수 있으므로 두 장치가 동일한 속도로 클럭킹된다고 가정하면 1/4 시간 내에 동일한 동작을 수행 할 수 있습니다.

여기에서 FPGA (또는 동일한 작업을 위해 설계된 ASIC)는 실제로 많은 프로세스를 동시에 수행 할 수 있다는 사실에서 빛을 발할 수 있습니다 . 단일 프로세스는 순차적으로 만 수행 할 수 있습니다.

* (참고 : SIMD와 같은 것을 무시하고 있습니다)


FPGA / ASIC의 구별이 모호하다고 생각하지 않습니다. FPGA에서 "배선"을 변경할 수있는 회로는 동시에 독립적으로 작동합니다. MCU에는 배선을 변경할 수없는 대량의 회로가 있으며, 동작은 프로그래머블 메모리 어레이에서 단편적으로 액세스되는 정보를 통해 제어됩니다. 언제든지 CPU는 일반적으로 수 천에서 수십억 개의 선택 목록 중 하나의 작업 만 수행 할 수 있지만 MCU는 이러한 작업을 순차적으로 수행 할 수 있도록 설계됩니다. 유용한 일.
supercat

고맙습니다. 10 개월 후에도 답이되는 것에 매우 가깝습니다. 수정하려면 +1하십시오.
user58446

6

좋은 질문입니다

기본적으로 마이크로 컨트롤러와 ASIC에는 스톤으로 설정되고 변경할 수없는 하드웨어 (종종 실리콘이라고 함)가 있습니다. 여러 종류의 하드웨어를 나타내도록 FPGA를 구성 할 수 있습니다 (마이크로 컨트롤러 포함).

마이크로 컨트롤러는 많은 다른 일을 할 수 있다고 생각할 수도 있지만 이것은 기술적으로 소프트웨어이지만 때로는 펌웨어라고 불리는 다른 프로그램을 실행하여 수행됩니다. 하드웨어 자체는 본질적으로 동일한 작업을 수행하지만 다른 입력과 다른 순서.

FPGA는 일반적으로 ASIC에 전념하는 디자인을 생성하는 데 사용됩니다. 차이점은 FPGA의 내부 작동을 업데이트하거나 기능 블록을 추가 / 제거하려는 경우 펌웨어 업데이트 만 할 수 있다는 것입니다. 내부 작업이 실리콘에 전념했기 때문에 ASIC에 대해 수행해야하며 재구성 할 수 없습니다.

간단히 말해, 마이크로 프로세서에서는 동일한 하드웨어를 사용하여 다른 프로그램을 실행하고, FPGA를 사용하면 다른 기능을 수행하도록 하드웨어를 재구성하고 ASIC는 하드웨어를 변경할 수는 없지만 일반적으로 수행하도록 설계된 마이크로 컨트롤러와 같습니다 매우 효율적으로 단일 기능.

ASIC과 FPGA는 모두 마이크로 컨트롤러를 포함 할 수 있으며, 독립형 마이크로 컨트롤러처럼 프로그램을 작성할 수 있다면 Altera의 NIOS II 임베디드 프로세서가 그 예입니다.

그래도 혼동이된다면 불분명 한 점을 알려 주시면 답변을 명확하게하기 위해 최선을 다하겠습니다.

집시


3

글쎄, 특정 게이트 모음처럼 동작하는 경우 전기 신호로 FPGA를 프로그래밍하지 않으며, 일부 FPGA에는이 ​​구성을 저장하기 위해 플래시 메모리가 포함되어 있으며, 일부는 모든 전원 재설정 후 다시 프로그래밍하지 않아야합니다.

이미 구성된 생산 라인에서 ASIC이 나옵니다.

FPGA 버그는 펌웨어 업그레이드로 해결할 수 있으며 ASIC 버그는 경제적으로 수리 할 수 ​​없습니다.


2

이름에도 불구하고 FGPA는 새롭고 다른 작업을 수행하기 위해 다시 배선해야하기 때문에 매우 "응용 프로그램 별"이라고 생각합니다.

"응용 프로그램 별"의 의미와 반대입니다. FPGA를 재배치하여 둘 이상의 어플리케이션에 사용할 수 있습니다. ASIC은 변경할 수 없으므로 하나의 작업에만 적용 할 수 있습니다 (해당 작업은 마이크로 컨트롤러를 구현 중일 수 있음).

그럼에도 불구하고, FPGA를 재배 선하는 경우 필요한 모든 하드웨어가 있어야합니다.

이것이 무엇을 의미하는지 잘 모르겠습니다. 일반적으로 FPGA를 다시 프로그래밍하기위한 소프트웨어 인터페이스가 있습니다. 수백만 개의 [통화 단위] 하드웨어가 필요한 ASIC입니다.

FPGA는 프로그래밍이 가능하지만 마이크로 컨트롤러가 아닙니다.

마이크로 컨트롤러를 사용하면 고정 하드웨어 용 순차 소프트웨어를 프로그래밍 할 수 있습니다. 일반 컴퓨터와 비슷하지만 매우 작고 리소스가 제한적입니다. FPGA를 사용하면 HDL을 사용하여 원하는 하드웨어를 프로그래밍 할 수 있습니다.

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