Qual é o preço dos FPGAs? Eu sei que eles são mais caros do que os microprocessadores de capacidade comparável, mas me pergunto se existem FPGAs que poderiam conter um núcleo leve Microblaze executando Linux, deixando portas disponíveis para implementar a funcionalidade DSP (codecs de mídia, por exemplo) a um custo competitivo com digamos, um Cortex A8 (US $ 20-30 em quantidade ~ 100).
(Desculpe se minha terminologia não é idiomática, isto é, incorreta. Por favor, comente com correções ou edite diretamente.)
Respostas:
Recentemente, participei de uma conferência on-line sobre FPGAs com a palestra "O seu próximo processador deve ser um FPGA".
O FPGA basicamente faz sentido em qualquer aplicativo que exija fluxos de trabalho altamente paralelizáveis, um exemplo sendo usado foi a análise de imagens em Full HD para encontrar pedestres, por exemplo.
O que você deve se lembrar é que você precisa inicializar seu FPGA toda vez que ele liga, acho que o Xilinx do FPGA vem (que tem um núcleo ARM no chip) é uma boa opção, mas provavelmente é caro. Olhar para os da Actel com flash no chip também pode ser útil.
Quanto ao desempenho, a empresa BDTI fez uma referência em cálculos altamente paralelos, onde observou um ganho de desempenho de cerca de 40x ao mudar para um FPGA. O interessante é que eles compararam chips com custos semelhantes (23 $ vs 28 $, eu acredito).
Aqui estão os links que podem lhe interessar:
Guia de bolso para seleção de processador
Arquivos da conferência FPGA (registro gratuito, mas disponível apenas por cerca de 6 meses após esta resposta)
Você realmente não pode comparar o desempenho de sistemas baseados em FPGA com base nas estatísticas MIPS ou Mhz. A maneira como um FPGA é usado para processar determinadas tarefas é simplesmente muito diferente de um microcontrolador. O design do firmware de um FPGA é algo que você deve fazer usando o VHDL, por exemplo, semelhante ao Assembly. Um nível de transferência de registro (RTL) da abstração. Alguns ambientes estão sendo produzidos para fornecer mais abstração, mas ainda são frequentemente específicos do fornecedor. A Wikipedia possui uma visão geral decente dos idiomas disponíveis para programar o código FPGA:
Wikipedia: Programação FPGA
Wikipedia: Projeto de circuitos digitais
Se você tem dinheiro para gastar, pode usar os sistemas LabView para criar sistemas de medição em tempo real baseados em FPGA, por exemplo. Esses dispositivos necessários para isso estão em uma faixa completamente diferente (US $ 1.500 ou mais), mas abrem o design do FPGA para um público muito mais amplo com programação gráfica.
Cada vez mais fornecedores estão fornecendo placas que combinam microcontroladores, como um chip ARM e um FPGA, para fornecer recursos adicionais específicos e poder de processamento paralelo. Um exemplo desses produtos pode ser encontrado aqui: EmbeddedARM: FPGA series
fonte
Qual é o preço dos FPGAs? Segundo Newark, os FPGAs mais baratos custam cerca de US $ 10 (o Altera Cyclone mais baixo e o Xilinx Spartan mais baixo). Eles podem ter capacidade suficiente para executar uma CPU de 8 bits simples.
Como seria de esperar, mesmo as CPUs simples de 32 bits (ou seja, sem uma MMU) requerem cerca de 4 vezes os recursos FPGA de uma CPU de 8 bits. FPGAs com recursos insuficientes para executar uma CPU tão simples de 32 bits custam cerca de US $ 14. Meu entendimento é que o uCLinux foi portado para algumas dessas CPUs programáveis por FPGA (como o NIOS II / e) - você pode achar que o uClinux é adequado para seus propósitos.
O Linux completo requer uma CPU com uma MMU (como o NIOS II / f). Uma CPU de 32 bits com uma MMU requer cerca de 4 vezes os recursos FPGA de uma CPU de 32 bits sem uma MMU - as razões para isso não são tão óbvias.
Até onde eu sei, na página Xilinx Microblaze , a CPU suave Microblaze é executada apenas em FPGAs Xilinx.
O Linux já foi portado para várias outras CPUs flexíveis. Se você deseja executar o Linux em FPGAs de outras empresas, consulte as portas Linux listadas em "Soft CPU Cores for FPGA" .
Várias dessas CPUs flexíveis - incluindo uma MMU - caberão no Xilinx Spartan XC3S400A (US $ 17 da Avnet).
Ouvi dizer que algumas CPUs macias de 32 bits - incluindo uma MMU - são muito fáceis de configurar como "dual core" em um chip FPGA de US $ 20. Aqueles que seguem "Jan's Razor" podem tentar espremer uma dúzia de CPUs de 8 bits no mesmo chip.
fonte
Geralmente, o FPGA custa muito mais do que o mesmo dispositivo implementado em silício, porque há muita sobrecarga devido à reconfigurabilidade. Portanto, não, você não encontrará um FPGA por US $ 20-30 que tenha o mesmo poder que um CPU ARM que seja US $ 20-30. Agora, você pode encontrar um FPGA por US $ 20-30 que pode executar tarefas específicas muito mais rapidamente do que o US $ 20-30 ARM, mas não poderá vencê-lo em tarefas gerais de computação.
É por isso que é comum ver pessoas colocando um microcontrolador e um FPGA na mesma placa. ARM e PPC são os dois mais comumente combinados com um FPGA.
fonte
Ao comprar um FPGA, não se esqueça de levar em consideração o custo da memória Flash que mantém o programa FPGA. Isso é fácil de esquecer.
Como projetista de PCBs, os FPGAs são um milhão de vezes mais fáceis de organizar, porque você pode reorganizar a pinagem da maneira que desejar, mesmo após a montagem da placa. Há uma economia de custos potencial associada ao menor número de camadas necessárias para rotear um FPGA.
Para os outros que cocô no desempenho do FPGA vs. CPU, eu concordo até certo ponto. Um processador real será mais rápido em executar tarefas do processador real do que um FPGA programado para agir como um processador.
Isso não é realmente justo para um FPGA, no entanto. CPUs são "limitadas no tempo"; se você quiser trabalhar mais, precisará de mais tempo ou de um processador mais rápido. FPGAs geralmente são "limitados à área"; se você quiser trabalhar mais, precisará de um FPGA maior.
Por exemplo, digamos que você faça um analisador espectral que lide com um sinal de áudio mono. Digamos que leva 70% do tempo da CPU e você já é o mais rápido possível. Você não pode adicionar suporte estéreo, porque a CPU não é rápida o suficiente para executar o segundo canal antes de precisar manipular o primeiro canal novamente. Mas se você estiver usando 70% do FPGA, poderá comprar um FPGA maior e inserir o segundo canal. Ele não precisa ir mais rápido.
Agora, se você portou o problema no domínio do Design Digital, usando Máquinas de Estado Finito e Datapaths em vez de uma CPU, eu apostaria dólares em pesos que o FPGA esmagaria a CPU, às custas da complexidade crescente no design.
fonte
A Xilinx recentemente fez um acordo com o ARM, o que lhes permitirá colocar núcleos de ARM nos FPGAs. Infelizmente, eles estarão disponíveis apenas para os dispositivos Virtex de primeira linha.
fonte
Os preços do FPGA são ímpares - quando você conversa com uma empresa franqueada, descobre que os preços cotados na Digikey, Mouser etc. podem ser várias vezes mais altos do que o que eles podem obter. O mais barato que eu conheço é o Lattice EC1 no QFP100 por um pouco menos de GBP3 em qtd de bandeja. Adicione GBP0,40 ou mais para uma memória flash SPI.
A colocação de CPUs na malha FPGA geralmente não é um bom valor em termos de custo de silício, mas outros fatores como acoplamento rígido entre CPU e FPGA e número reduzido de pacotes podem alterar a troca ideal contra o uso de uma CPU separada.
fonte
Meu melhor palpite até agora é algo como um Xilinx XC3S400A, que custa cerca de US $ 16, mas não tenho certeza de que ele possa lidar com um MicroBlaze.
fonte
Depende muito da sua aplicação. A aplicação ideal aqui consistiria em uma pequena parte de controle (que se encaixa em um microblaze / NIOS), mas uma parte computacional que pode se beneficiar do enorme paralelismo do hardware personalizado. Nesses casos, mesmo um FPGA de tamanho modesto (espartano ou equivalente) pode facilmente superar qualquer CPU de uso geral. Mas esse é o melhor caso (embora muito viável em muitos aplicativos do mundo real), se seu aplicativo tiver uma parte significativa de controle ou não for facilmente mapeado para o hardware, gastar seu dinheiro em hardware fixo (por exemplo, um ARM) é provavelmente melhor.
fonte
Se você precisa de uma placa em vez de apenas o chip, aqui estão duas opções recentes de 2013:
fonte
Como muitos CPLDs atuais da Altera são FPGAs com memória de configuração integrada, você pode obtê-los em http://www.altera.com/products/devices/cpld/max2/mx2-index.jsp
fonte
Antes de tudo, você deseja executar o Linux em um núcleo. Que tal executá-lo em um ARM, como algumas outras sugestões neste tópico. O MCU é bom em executar o sistema operacional, mas é um desperdício de recursos do FPGA criando um MCU. As MCUs podem caber em uma área de silício muito menor quando projetadas para isso e, portanto, podem ser produzidas com menor custo. Depois, há outras explicações sobre os FPGAs serem realmente bons no processamento paralelo - tipo verdade, embora as operações lógicas não pareçam exatamente processar. Como você aponta, os poderosos FPGAs ficam caros e com muita fome de energia. Portanto, uma plataforma de baixo custo que pode rodar linux e DSP, necessitando dos benefícios do paralelismo para E / S rápidas, etc. Dê uma olhada no processador paralelo XMOS
fonte