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

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

나는 ASIC 장치를 논리적 및 전기적 구성 요소를 사용하여 수행하도록 특별히 구성된 회로라고 생각합니다. 다른 작업이나 추가 하드웨어가 포함되지 않은 단일 작업입니다.

FPGA 장치는 ASIC 장치 (낮은 수준의 장치) + 사용하지 않는 많은 것들이 남아 있습니다. 특정 진리표를 구현합니다.

이름에도 불구하고 FGPA는 새롭고 다른 작업을 수행하기 위해 다시 연결되어야하므로 매우 “애플리케이션에 따라”느낌이납니다. 이로 인해 ASIC과 혼동이 발생합니다. 비록 FPGA를 재배 선하는 경우 필요한 모든 하드웨어가 있어야합니다. 또한 FPGA는 프로그래밍 가능하도록되어 있지만 “마이크로 컨트롤러의 의미가 아닙니까?

위에서 언급 한 게시물에는 제가 익숙한 HDL도 언급되어 있습니다. HDL을 ASIC 및 FPGA 모두에 사용할 수 없으며 프록시로 전체 마이크로 컨트롤러를 설계 할 수 없습니까?

설명

  • 그것 ‘ 질문이 무엇인지 명확하지 않습니다. FPGA와 ASIC에 대한 관련 질문을 읽었습니까? HDL은 실제로 ASIC 및 FPGA 구현을 설계하는 데 사용되며 HDL에서 마이크로 컨트롤러를 설계 할 수 있습니다.
  • Altera는 FPGA, ASIC 및 마이크로 컨트롤러의 차이점을 잘 설명하는 입문자 용 FPGA 라는 무료 eBook을 제공합니다.
  • @kkrambo 당신은 ‘ 를 더미라고 부르나요? 🙂 죄송합니다. ‘ 저항 할 수 없습니다 … 확인하겠습니다.
  • ‘ 유사점 ‘라는 단어를 질문 제목에 추가했습니다. 세 가지 다른 장치가 어떻게 관련되어 있는지를 혼동 할 수있는 미세한 기술적 전문 용어가 있습니다. 예를 들어 한 장치에 다른 두 장치 중 하나가 포함될 수 있습니다. 또는 유사한 구성 요소를 많이 포함 할 수 있지만 중요한 측면에서 다릅니다. 이것은 이미 기존 답변 중 일부에 의해 다루어졌습니다. 감사합니다.

답변

ASIC vs FPGA

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

FPGA 대 마이크로 컨트롤러

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

예를 들어, 일반적으로 FPGA에서 의사 코드 “let C be A XOR B”를 작성하면 “레고 브릭이 포함 된 XOR 게이트 구축 (조회 테이블 및 래치)”으로 변환됩니다. A / B를 입력으로, C를 출력으로 연결합니다. “는 C의 사용 여부에 관계없이 매 클럭주기마다 업데이트됩니다. “읽기 명령어”로 변환되는 마이크로 컨트롤러에서는 주소 A와 RAM의 주소 B에있는 변수의 XOR이되는 반면, 결과는 주소 C에 저장됩니다. 산술 논리 장치 레지스터를로드 한 다음 ALU에 XOR을 수행하도록 요청합니다. 그런 다음 RAM의 주소 C에 출력 레지스터를 복사합니다. “하지만 사용자 측에서는 두 명령 모두 코드 한 줄이었습니다.이 작업을 수행하려면 HDL에서 병렬 코드와 별도로 시퀀스를 인위적으로 수행하는 프로세스를 정의해야합니다. 마이크로 컨트롤러에서는 할 일이 없습니다. 반면에, 마이크로 컨트롤러에서 “병렬화”(실제로 조정)를 얻으려면 사소하지 않은 스레드로 저글링해야합니다. 다양한 작업 방식과 용도.

요약 :

ASIC vs FPGA : 고정, 소량 제품의 경우 더 비싸지 만 (대량의 경우 더 저렴), 더 최적화 됨.

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

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

병렬 작업의 속도가 문제가 될 때마다 FPGA를 사용하여 설계를 발전시키고 마지막으로 ASIC로 만듭니다. “장기적으로는 비용이 저렴합니다 (대량 생산). 순차 작업이 괜찮다면 마이크로 컨트롤러를 사용하십시오. 장기적으로도 비용이 저렴하다면 여기에서 더 많은 애플리케이션 별 IC를 수행 할 수있을 것 같습니다. . 가장 좋은 해결책은 아마도 둘 다일 것입니다.

이 내용을 작성한 후 빠른 검색 결과 : 이미지 입력 여기에 설명 여기에 이미지 설명 입력

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

답변

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

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

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


FPGA와 MCU의 차이는 더 모호합니다. 기본적으로 하드웨어 수준에서 FPGA는 다수의 소형 SRAM 셀이며 모두 고밀도 매트릭스 멀티플렉서에 연결되어 있습니다. 기본적으로 FPGA는 멀티플렉서와 SRAM 셀을 재 프로그래밍하여 전자적으로 “재배 선”할 수있는 ** 단순히 개별 로직의 전체 더미입니다.

그러므로 MCU는 로직 셀의 특정 구성 일 뿐이므로 실제로 FPGA 내에서 MCU를 구현합니다. 사실 FPGA는 MCU의 설계 프로세스에서 매우 일반적으로 사용됩니다.

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


FPGAs MCU가 할 수없는 방식으로 논리 구조를 구현할 수 있기 때문에 특정 애플리케이션에서 유용합니다. 예를 들어 X1 + Y1, X2 + Y2, X3 + Y3 및 X4 + Y4를 추가해야하는 경우 MCU는 각 작업을 순서대로 수행해야합니다. *. FPGA는 단순히 4 개의 개별 ALU를 동시에 가질 수 있습니다. div id = “036e33f4ef”>

, 따라서 1/4 시간 내에 동일한 작업을 수행 할 수 있습니다 (두 장치가 동일한 속도로 클럭된다고 가정).

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

* (참고 : 여기서는 SIMD와 같은 일부를 무시합니다.)

댓글

  • ‘ FPGA / ASIC 구분이 모호하다고 생각하지 않습니다. FPGA에서 ” 배선 “을 변경할 수있는 회로는 동시에 독립적으로 작동합니다. MCU에는 배선을 변경할 수없는 많은 회로가 있으며, 그 동작은 프로그래밍 가능한 메모리 어레이에서 단편적으로 액세스되는 정보를 통해 제어됩니다. 어느 시점에서든 CPU는 일반적으로 수천에서 수십억 개의 선택 목록에서 하나의 작업 만 수행 할 수 있지만 MCU는 이러한 작업을 순서대로 조합하여 수행 할 수 있도록 설계됩니다. 유용한 작업입니다.
  • 감사합니다. 10 개월이 지났지 만 거의 답이 될 것입니다. +1하려면 ammends를 만드십시오.

답변

좋은 질문입니다.

기본적으로 마이크로 컨트롤러와 ASIC에는 고정 된 하드웨어 (종종 실리콘이라고 함)가 있으며 변경할 수 없습니다. FPGA는 구성 다양한 종류의 하드웨어 (마이크로 컨트롤러를 포함 할 수 있음)를 나타냅니다.

마이크로 컨트롤러가 여러 가지 작업을 수행하도록 만들 수 있다고 생각할 수 있지만 이는 모두 다른 프로그램 (기술적으로 소프트웨어)을 실행하여 수행됩니다. 그러나 때로는 펌웨어라고도합니다. 하드웨어 자체는 “기본적으로 변경되지 않고 동일한 작업을 수행하지만 입력이 다른 순서로 수행됩니다.

FPGA는 일반적으로 ASIC에 적용되는 설계를 생성하는 데 사용됩니다. 차이점은 FPGA의 내부 작업을 업데이트하거나 기능 블록을 추가 / 제거하려는 경우 펌웨어를 업데이트하는 것뿐입니다. ASIC에서 내부 작업을 수행 할 수 없습니다. 킹스는 실리콘에 전념해 왔으며 재구성 할 수 없습니다. 간단히 말해서 마이크로 프로세서를 사용하면 동일한 하드웨어를 사용하여 다른 프로그램을 실행하고 FPGA를 사용하면 하드웨어를 재구성하여 다른 기능을 수행하고 ASIC는 하드웨어가 될 수 없다는 점에서 마이크로 컨트롤러와 같습니다. 변경되었지만 일반적으로 단일 기능을 매우 효율적으로 수행하도록 설계되었습니다.

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

여전히 헷갈 리시면 무엇이 불분명한지 알려 주시면 최선을 다해 답을 드리겠습니다.

집시

답변

글쎄, 특정 게이트 컬렉션처럼 동작하는 경우 FPGA는 전기 신호로 프로그래밍되지 않으며 일부 FPGA에는 플래시가 포함됩니다. 이 구성을 저장하기위한 메모리, 일부는 전원을 재설정 할 때마다 다시 프로그래밍하지 않으며 다시 프로그래밍해야합니다.

ASIC는 이미 생산 라인에서 나옵니다.

FPGA 버그는 펌웨어 업그레이드로 수정할 수 있지만 ASIC 버그는 경제적으로 복구 할 수 없습니다.

답변

이름에도 불구하고 FGPA는 새롭고 다른 작업을 수행하기 위해 다시 연결되어야하기 때문에 매우”어플리케이션에 따라 “느낌이납니다.

이것은 “애플리케이션 별”이 의미하는 것과 반대입니다. 두 개 이상의 어플리케이션에 FPGA를 재배 선하여 사용할 수 있습니다. ASIC는 변경할 수 없으므로 하나의 작업에만 적용 할 수 있습니다 (해당 작업은 마이크로 컨트롤러를 구현할 수 있음).

하지만 FPGA를 재배 선하려면 필요한 모든 하드웨어가 있어야합니다.

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

FPGA “s 프로그래밍이 가능하지만 “마이크로 컨트롤러의 의미가 아닙니까?

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

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다