Atualmente, estou "investigando" FPGAs, o que eles podem fazer, como fazem, etc.
Em mais de um local ( por exemplo, aqui ), vi projetos que implementam um microcontrolador simples com FPGA.
Então, minha pergunta:
eu gostaria de saber qual é o objetivo de fazer essas implementações? Por que usar um microcontrolador implementado no FPGA em vez de ter um micro integrado? O que são benefícios? E talvez também o que são desvantagens?
microcontroller
fpga
design
James C
fonte
fonte
Respostas:
Benefícios:
Desvantagens:
fonte
Se o seu projeto usará um FPGA para o trabalho pesado, e ele tem capacidade disponível, por que você gastaria um chip extra para implementá-lo no FPGA?
Para muitos ambientes de controle processual, pode ser consideravelmente mais fácil implementar a configuração necessária em uma linguagem como C do que tentar fazê-lo em VHDL ou Verilog. Ao adicionar o microcontrolador ao FPGA, você obtém o melhor dos dois mundos - o poder do VHDL / Verilog etc. para os sistemas lógicos e de interface e a simplicidade de uma linguagem processual para os principais sistemas de controle e gerenciamento.
fonte
Em extensão às respostas de Majenko e PkP:
Essa tendência de incorporar uma CPU ao design do FPGA levou a vários sistemas heterogêneos, como:
Há também um chip Intel Atom + Altera FPGA no mercado: http://www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html
A maioria dos microcontroladores gratuitos para FPGA sofre com um suporte inadequado à cadeia de ferramentas. As CPUs ARM incorporadas vêm com suporte a rastreamento / depuração, compiladores (cadeia de ferramentas gcc) e suporte completo ao Linux. Aqui está uma pesquisa apresentada na FPL 2014: http://dx.doi.org/10.1109/FPL.2014.6927482
Edit 1:
Também existe a classe de dispositivos PSoC (Sistema Programável em Chip) da Cypress. Esses dispositivos incluem um microcontrolador (M8C, 8051, ARM Cortex M0 ou Cortex M3) e controladores ou dispositivos de E / S integrados clássicos do SoC (I²C, SPI, Timer, CAN, DAC, ADC, OpAmp, ...) e um programável parte. Esta parte não é tão programável quanto os FPGAs clássicos, mas pode ser usada para implementar controladores de E / S adicionais ou aceleradores de hardware embutidos. O PSoC permite que você use componentes analógicos em seu design.
http://www.cypress.com/psoc/?source=CY-ENG-HEADER
Visão geral do PSoC:
fonte
Se você apenas precisasse de um microcontrolador e não tivesse um FPGA, seria incomum usar um FPGA com firmware de microcontrolador. No entanto, nem todos os projetos crescem nessa direção. Muitas tarefas têm clara necessidade de um FPGA, mas acabam encontrando uma tarefa que realmente não é adequada para uma solução VHDL. Às vezes, um problema é simplesmente melhor tratado por uma CPU de uso geral. Ou, às vezes, é o contrário: algumas tarefas simplesmente não são adequadas para uma CPU de uso geral - elas precisam de paralelismo.
Naquele momento, você tem uma escolha. Você pode adicionar um chip adicional ao seu dispositivo ou perceber que possui vários portões de reposição no FPGA que não está utilizando. Licencie um pouco de IP e você poderá ter uma CPU funcional de uso geral em pouco tempo!
Outro detalhe interessante é que você pode personalizar alguns firmwares de microcontroladores. Conheço projetos que incorporaram um Power PC, mas eliminaram todos os portões necessários para o suporte a ponto flutuante e uma boa parte da previsão de ramificação. Isso o tornou pequeno o suficiente para caber lado a lado com o firmware baseado em VHDL.
fonte
Existem vários motivos válidos para instanciar um microprocessador ou microcontrolador em um FPGA. Aqui estão três:
Você só quer aprender sobre a operação de um processador. Os FPGAs oferecem infinitas maneiras de analisar o que está acontecendo dentro do processador enquanto ele executa o código. Isto é apenas para aprender.
Você está implementando um grande sistema que requer as velocidades no nível de hardware de um FPGA (mais rápido que o software em execução em um microprocessador), mas seu design requer uma máquina de estado complexa, que é mais facilmente implementada usando software executado em um processador simples como o Xilinx PicoBlaze do que em um FSM de hardware. Observe que um PicoBlaze pode rodar tão rápido quanto 240 MHz nas mais recentes tecnologias de processo FPGA e que o processador PicoBlaze executa uma instrução a cada dois ciclos de clock, para que você obtenha uma máquina de estado rápida e consistente que seja facilmente programada em software.
Expandindo em (2), você precisa de uma máquina de estado que possa lidar com interrupções. Os processadores são realmente bons para isso, porque eles já sabem como salvar e restaurar com segurança o estado antes e depois da manutenção da interrupção.
Aqui está uma ressalva: se você deseja um processador rápido com um conjunto de instruções padrão e um grande ecossistema de desenvolvimento, deseja um processador rápido e de núcleo duro, como os dois ARM Cortex-A9s em um Xilinx Zynq SoC. A malha FPGA no Zynq SoC ainda permite instanciar mais núcleos de processador na lógica programável, mas os ARM Cortex-A9s podem executar sistemas operacionais padrão, como Linux, e IDEs padrão, como Android.
Entre o ARM Cortex-A9 e o PicoBlaze, existem muitos processadores soft que você pode implementar com lógica programável disponível em várias fontes. Algumas pessoas gostam de rodar seus próprios processadores e essa é uma ótima atividade educacional. No entanto, os microprocessadores precisam de ferramentas de desenvolvimento de software e a criação / depuração dessas ferramentas exige ordens de magnitude mais esforço do que a criação do próprio processador. Você sempre deve trocar o possível benefício de um microprocessador personalizado contra o tempo e o esforço necessários para criar / depurar o núcleo do processador e as ferramentas.
Divulgação completa: trabalho para o Xilinx, mas tenho certeza de que não afirmei que os FPGAs são sempre a solução. Se um microcontrolador de 50 centavos puder fazer o trabalho, é melhor usá-lo. FPGAs e Zynq SoCs são para projetos que exigem trabalho pesado além das habilidades dos microcontroladores.
fonte
Às vezes, você pode usar um FPGA porque possui um software que é executado em um processador físico obsoleto e indisponível há muito tempo que deseja ressuscitar. Embora não seja compatível com pinos (embora as montagens no estilo DIP tenham sido vistas), isso permite que você tenha uma precisão de ciclo. É improvável que uma emulação pura de software em um microprocessador de commodity seja. Por exemplo apple2fpga
fonte