Eu li esta postagem e ela não responde minha pergunta por completo:

Eu penso em um microcontrolador como qualquer coisa que tem alguma memória, registra e pode processar um conjunto de instruções como LOAD, STORE e ADD. Ele contém portas lógicas e outras coisas para cumprir sua função, mas sua principal tarefa é ser um processador universal de bits. Eu penso em um microntrolador como um sistema de designs ASIC interconectados para criar a capacidade de armazenar e processar instruções.

Eu penso em um dispositivo ASIC como um circuito que foi especificamente construído usando componentes lógicos e elétricos para funcionar uma única tarefa, sem outra tarefa em mente, nem hardware extra incluído.

Eu penso em um dispositivo FPGA como um dispositivo ASIC (um dispositivo de baixo nível) + um monte de coisas não utilizadas que sobraram, costumavam implementar uma tabela verdade específica.

Apesar do nome, um FGPA parece muito “específico do aplicativo”, pois deve ser reconfigurado para executar uma tarefa nova e diferente. Isso leva à confusão com ASIC. Embora, no caso de religação de um FPGA, todo o hardware necessário deve estar presente. Além disso, os FPGAs devem ser programáveis, mas não é para isso que um microcontrolador se destina?

A postagem acima mencionada também menciona HDL, com o qual estou familiarizado. O “t HDL pode ser usado para ASIC e FPGA, e por proxy para projetar um microcontrolador inteiro?

Comentários

  • It ‘ não está muito claro qual é a sua pergunta. Você já leu perguntas relacionadas sobre FPGA vs ASIC? O HDL é realmente usado para projetar ASICs e implementações FPGA, e você pode projetar um microcontrolador em HDL.
  • Altera oferece um e-book gratuito chamado FPGAs for Dummies , que explica bem a diferença entre FPGAs, ASICs e microcontroladores.
  • @kkrambo Você está me chamando ‘ eu de manequim? 🙂 Desculpe, não ‘ resistir … Eu irá verificar.
  • Eu adicionei a palavra ‘ similaridades ‘ ao título da pergunta, porque parece que há detalhes minuciosos de jargão técnico que podem confundir a forma como os três dispositivos diferentes se relacionam: por exemplo, um dispositivo pode conter um dos outros dois dispositivos, ou pode conter muitos componentes semelhantes, mas diferir em alguns aspectos importantes. Isso já foi abordado por algumas das respostas existentes. Obrigado.

Resposta

ASIC vs FPGA

Um Field Programmable Gate Array pode ser visto como o estágio de prototipagem de Circuitos Integrados Específicos de Aplicação: ASICs são muito caros de fabricar, e uma vez feitos lá não tem volta (já que o custo fixo mais caro são as máscaras [tipo de “estêncil” de fabricação] e seu desenvolvimento). FPGAs são reprogramáveis muitas vezes, porém devido ao fato de que uma matriz genérica de portas está conectada para cumprir seu objetivo , não é otimizado como ASICs. Além disso, FPGAs são dispositivos nativamente dinâmicos, pois se você desligá-los, perderá não apenas o estado atual, mas também sua configuração. Agora existem placas que adicionam um chip FLASH e / ou um microcontrolador ao carregue a configuração na inicialização, então este tende a ser um argumento menos importante. Ambos ASICs e FPGAs podem ser configurados com linguagens de descrição de hardware, e às vezes FPGAs são usado para o produto final. Mas geralmente os ASICs são ativados quando o design é corrigido.

FPGA vs microcontrolador

Quanto à diferença entre um microcontrolador e um FPGA, você pode considerar um microcontrolador como um ASIC que basicamente processa código em FLASH / ROM sequencialmente. Você pode fazer microcontroladores com FPGAs mesmo que não seja otimizado, mas não o contrário. FPGAs são conectados como circuitos eletrônicos, então você pode ter circuitos verdadeiramente paralelos, não como em um microcontrolador onde o processador salta de um pedaço de código para outro para simular o paralelismo bom o suficiente. No entanto, como os FPGAs foram projetados para tarefas paralelas, não é tão fácil escrever código sequencial como em um microcontrolador.

Por exemplo, normalmente se você escrever no pseudocódigo “deixe C ser A XOR B”, em um FPGA que será traduzido em “construir uma porta XOR com os blocos de lego contidos (tabelas de pesquisa e travas), e conecte A / B como entradas e C como saída “, que será atualizado a cada ciclo de clock, independentemente de C ser usado ou não. Enquanto em um microcontrolador que será traduzido em “instrução de leitura – é um XOR de variáveis no endereço A e no endereço B da RAM, o resultado será armazenado no endereço C. Carregue os registros das unidades lógicas aritméticas e, em seguida, peça à ALU para fazer um XOR, em seguida, copie o registro de saída no endereço C da RAM “. No entanto, do lado do usuário, ambas as instruções tinham 1 linha de código.Se fôssemos fazer isso, ENTÃO outra coisa, em HDL teríamos que definir o que é chamado de Processo para fazer sequências artificialmente – separado do código paralelo. Já em um microcontrolador, não há nada a fazer. Por outro lado, para obter “paralelismo” (sintonizar e desligar realmente) de um microcontrolador, você precisaria fazer malabarismos com threads, o que não é trivial. Diferentes formas de trabalho, diferentes finalidades.

Em resumo:

ASIC vs FPGA: fixo, mais caro para um pequeno número de produtos (mais barato para grandes volumes), mas mais otimizado.

ASIC vs microcontrolador: certamente, como comparar uma ferramenta com um martelo.

FPGA vs microcontrolador: não otimizado para processamento de código sequencial, mas também pode executar tarefas verdadeiramente paralelas com muita facilidade. Geralmente os FPGAs são programados em HDL, os microcontroladores em C / Assembly

Sempre que a velocidade de tarefas paralelas for um problema, pegue um FPGA, evolua seu design e, finalmente, torne-o um ASIC se ele “é mais barato para você no longo prazo (produção em massa). Se as tarefas sequenciais estiverem bem, pegue um microcontrolador. Acho que você poderia fazer um IC específico de aplicativo ainda mais a partir deste se for mais barato para você no longo prazo também . A melhor solução provavelmente será um pouco das duas.

Que pesquisa rápida depois de escrever isso me deu: inserir imagem descrição aqui insira a descrição da imagem aqui

FPGA vs Microcontroladores, neste mesmo fórum

Resposta

FPGAs podem ser “reconectados” por reprogramação. Um FPGA carrega sua configuração nas células lógicas configuráveis quando ligado . Isso significa que pode ser reprogramado sem alterações no hardware.

ASICs só podem ser reconectados modificando as máscaras fotolitográficas na fundição de silício.

Um microcontrolador é um tipo de ASIC, que executa um programa e pode fazer coisas genéricas como resultado. No entanto, se você quiser alterar o conjunto de instruções ou fazer algo semelhante, terá que modificar o layout real do CI de silício.


A diferença entre um FPGA e um MCU é mais confusa. Basicamente, o que é um FPGA, em nível de hardware, são muitas pequenas células SRAM, todas conectadas a uma densa matriz de multiplexadores. Basicamente, um FPGA é um monte de lógica discreta que pode ser eletronicamente “religada” ** simplesmente reprogramando os multiplexadores e as células SRAM.

Dessa forma, você pode realmente implementa um MCU dentro de um FPGA, já que um MCU é apenas uma determinada configuração de células lógicas. Na verdade, os FPGAs são muito comumente usados no processo de design de MCUs.

Um microcontrolador é uma implementação de uma determinada configuração lógica. A razão pela qual os temos é que, ao implementar um MCU diretamente no silício, a quantidade total de espaço do molde de silício necessária pode ser consideravelmente otimizada e certas otimizações de desempenho podem ser feitas que a “generalidade” exigida de um FPGA proíbe. Isso permite que os custos de produção de um MCU sejam drasticamente reduzidos e, como resultado, o MCU comum é muito mais barato do que um FPGA que é capaz de conter a lógica equivalente.


FPGAs são úteis em certos aplicativos, porque podem implementar estruturas lógicas de uma maneira que os MCUs não podem. Por exemplo, se você precisar adicionar X1 + Y1, X2 + Y2, X3 + Y3 e X4 + Y4, o O MCU terá que fazer cada operação em sequência *. Um FPGA pode simplesmente ter 4 separados ALUs ao mesmo tempo , para que possa fazer a mesma operação em um quarto do tempo (assumindo que os dois dispositivos tenham a mesma freqüência).

É aqui que os FPGAs ( ou ASICs projetados para a mesma tarefa) podem realmente brilhar, no fato de que você pode fazer muitas, muitas coisas simultaneamente , que um único processo só pode fazer sequencialmente.

* (observação: estou ignorando algumas coisas como SIMD aqui)

Comentários

  • Eu não ‘ Acho que a distinção FPGA / ASIC é confusa; em um FPGA, os circuitos cuja ” fiação ” podem ser alterados operam simultaneamente e independentemente. Um MCU possui uma grande quantidade de circuitos cuja fiação não pode ser alterada, cujo comportamento é controlado por meio de informações que são acessadas gradativamente a partir de um array de memória programável. A qualquer momento, uma CPU geralmente só será capaz de realizar uma operação de uma lista de alguns milhares a alguns bilhões de escolhas, mas o MCU será projetado de forma que colocar essas operações juntas em sequência tornará possível fazer trabalho útil.
  • Obrigado. MUITO perto de se tornar a resposta … embora 10 meses depois. 1 para fazer emendas.

Resposta

Esta é uma boa pergunta,

Basicamente, um microcontrolador e um ASIC tem hardware (frequentemente referido como silício) que é definido em pedra e não pode ser alterado. Um FPGA pode ser configurado para representar muitos tipos diferentes de hardware (isso pode incluir microcontroladores).

Você pode pensar que um microcontrolador pode ser feito para fazer muitas coisas diferentes, mas tudo isso é feito executando diferentes programas – tecnicamente software mas às vezes referido como firmware – o hardware em si não muda essencialmente, ele faz as mesmas operações, mas em uma ordem diferente com entradas diferentes.

FPGAs são normalmente usados para gerar os projetos que estão comprometidos com ASICs A diferença entre eles é que se você quiser atualizar o funcionamento interno de um FPGA ou adicionar / remover blocos funcionais, tudo o que você precisa fazer é atualizar o firmware, isso não pode ser feito em ASICs como o wor interno reis se comprometeram com o silício, não é reconfigurável.

Então, em resumo, com um microprocessador você usa o mesmo hardware para executar programas diferentes, com um FPGA você está reconfigurando o hardware para executar funções diferentes e os ASICs são como um microcontrolador no qual o hardware não pode ser alterados, mas geralmente são projetados para executar uma única função com extrema eficiência.

Ambos ASICs e FPGAs podem conter microcontroladores e, se contiverem, você pode escrever programas para eles como faria com um microcontrolador autônomo, um exemplo de este é o processador embarcado NIOS II da Altera.

Se ainda estiver confuso, diga-me o que não está claro e farei o possível para esclarecer minha resposta.

Gipsy

Resposta

bem, não, um FPGA é programado por sinais elétricos se se comportar como uma coleção específica de portas, alguns FPGAs incluem flash memória para armazenar esta configuração, alguns não devem e não devem ser reprogramados após cada reinicialização.

Um ASIC já sai da linha de produção c onfigurado.

Bugs FPGA podem ser corrigidos com uma atualização de firmware, bugs ASIC não podem ser economicamente reparados.

Resposta

Apesar do nome, um FGPA parece muito” específico da aplicação “, pois deve ser reconectado para realizar uma tarefa nova e diferente.

Isso é o oposto do que significa “específico do aplicativo”. Você pode usar um FPGA para mais de um aplicativo, religando-o. Você não pode alterar um ASIC, então ele só pode ser aplicado a uma tarefa (essa tarefa pode ser a implementação de um microcontrolador).

Embora, no caso de religando um FPGA, todo o hardware necessário deve estar presente.

Não tenho certeza do que isso significa. Normalmente existe uma interface de software para reprogramar um FPGA. É um ASIC que requer milhões de [unidades monetárias] s de hardware.

FPGA “s devem ser programáveis, mas não é para isso que um microcontrolador se destina?

Um microcontrolador permite que você programe software sequencial para um hardware fixo. Como um computador normal, mas muito pequeno e com recursos limitados. Um FPGA permite que você programe qualquer hardware usando um HDL.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *