O FPGA tem bons pontos, como muitos pontos de IO, mas, novamente, você precisa pensar em um nível muito baixo com chinelos e ser pioneiro em áreas onde as coisas ainda não estão maduras - por exemplo, veja esta pergunta aqui sobre ferramentas de desenvolvimento em FPGAs - este é o meu entendimento atualmente! Agora, o FPGA foi usado para criar excelente destreza em mãos robóticas como aqui . Agora, algumas pessoas comercializam FPGA para prototipagem rápida e projetos "avançados" , como aqui , não os compreendo completamente: se você não precisa de muitos pontos de IO para coisas como sensores, por que escolher o FPGA para um robô? então
Quando o FPGA deve ser escolhido para um projeto em robótica?
Respostas:
Não sei ao certo o que na pergunta vinculada sobre ferramentas de desenvolvimento faz você pensar que elas não são maduras. É verdade que a maioria deles é proprietária e não de código aberto. Mas eu pensei que as ferramentas estavam bem maduras, mesmo quando essa pergunta foi feita três anos atrás. Hoje , o Xilinx , Altera e Lattice têm ambientes de desenvolvimento disponíveis gratuitamente, que são executados no Windows e Linux com suporte de 32 e 64 bits. Se você insiste em código aberto, o Icarus Verilog pode fazer bastante. Mas eu pessoalmente me ateria às ferramentas específicas do fornecedor.
Os FPGA são mais do que apenas um monte de chinelos configuráveis. Considere o Altera NIOS II . Um processador de núcleo macio de 32 bits capaz de executar o Linux. Misture e combine comunicações e outros periféricos do OpenCores ou da Xilinx , Altera ou Lattice e você construiu um microcontrolador personalizado com tudo o que precisa e nada do que não precisa. Você pode até escrever código C para o processador NIOS II e ter certas funções implementadas diretamente no hardware FPGA, se precisar da velocidade. Esse nível alto é suficiente para você pensar?
Os FPGA têm um alto custo de investimento inicial. Mas é mais barato e fácil adicionar funcionalidades posteriormente no processo de design. Isso é o que se entende por projetos "prospectivos". Considere um projeto em que você deseja adicionar alguns motores adicionais ao seu robô, mas você ficou sem geradores PWM no seu microcontrolador. O que você faz? Adicionar outro microcontrolador? Compre chips PWM separados e conecte-os a uma interface de comunicação? E se todas as suas interfaces de comunicação estiverem em uso? Com um FPGA, isso é reduzido quase inteiramente a uma operação de copiar e colar. É muito mais fácil, mais barato e mais rápido escalar um design para incluir novas funcionalidades sem comprar tanto hardware adicional com um FPGA.
Mas provavelmente o maior motivo para usar um FPGA é a velocidade. Não estou falando de pura velocidade do relógio. Mas quando você precisa que muitas coisas aconteçam simultaneamente. Como Gossamer mencionou, o paralelismo é o que os FPGA são realmente bons. Os projetos de filtro se beneficiam especialmente desse tipo de arquitetura paralela. Se você precisar filtrar e responder a um sensor que muda rapidamente, precisará de um FPGA. Eles também são muito bons no processamento de vídeo, pois isso também se beneficia do processamento paralelo.
Tomemos, por exemplo, este robô manual de alta velocidade . Ele precisa processar o vídeo da câmera de visão de alta velocidade (1000 quadros por segundo), bem como os sensores táteis, e responder manipulando vários atuadores em apenas alguns milissegundos. Esse tipo de projeto é quando você precisa escolher FPGAs.
fonte
Eu acho que pode haver um equívoco sobre o que realmente é um FPGA e quando ele é usado em projetos. Então deixe-me tentar explicar essa parte primeiro.
FPGAs e quando alguém pode querer ter um ...
Correndo o risco de simplificar, um FPGA é pouco mais que um processador que é 'reconfigurável'.
Por que alguém iria querer um microprocessador 'reconfigurável'? Bem, porque custa muito caro fabricar um processador de silício para fazer isso por um, dois ou mesmo duzentos chips. Você precisaria executar lotes de milhares de chips para torná-lo economicamente viável.
Como nenhum projeto é livre de bugs na primeira vez, seguir a rota do silício efetivamente compromete uma empresa a pelo menos dois, se não mais testes, todos com enormes custos de fabricação.
O que significa essencialmente que pouquíssimas empresas comerciais se interessarão em projetar e trazer à fabricação algo que não seja chip com apelo comercial suficientemente amplo.
Então, se você vir para cima com um design brilhante que justifica um microprocessador personalizado, então você pode tentar trazer a sua ideia para a vida com um orçamento apertado pela implementação em um FPGA, onde o chip real é simplesmente uma coleção de portas, e um 'program' (tipicamente VHDL ou Verilog) organiza esses portões em um microprocessador real.
Mas isso é um caminho completamente diferente (projeto de microprocessador!) ...
O que me leva a sugerir que
... FPGAs não são essenciais para a robótica - pelo menos no início
O que você precisa para robótica é um processador . Um FPGA é apenas um tipo especial de processador (reconfigurável).
Você pergunta se você 'deveria'? Bem, isso depende do seu conhecimento e também de onde estão seus interesses reais - primeiro o design do microprocessador ou a robótica primeiro?
Se os microprocessadores são a sua paixão, então, por todos os meios! E a robótica é uma excelente área de aplicação para microprocessadores personalizados - talvez um córtex visual com muitas vias de decisão paralelas manipuladas diretamente no hardware, ou multiplicação especial de tensores no hardware - basicamente qualquer coisa que os processadores genéricos não possam lidar bem de prateleira.
Mas se você pretende projetar microprocessadores em FPGAs, é claro que precisará de todo esse conhecimento de baixo nível mencionado e muito mais - porque, fundamentalmente, você estará projetando seu próprio processador. O que não tem nada a ver com robótica, mesmo que seu aplicativo de destino possa ser robótico.
A maioria dos designers provavelmente pode encontrar um processador existente que fará a maior parte do que for necessário.
Então eu acho que você provavelmente não precisa de um FPGA.
Um roteiro inicial: de recursos comerciais a (talvez) um FPGA ...
O primeiro objetivo, na minha opinião, é tentar transformar todos os seus conceitos criativos em um robô funcional (um desafio bastante intenso por si só).
Se você achar que possui gargalos de processamento específicos e significativos em seu design, o próximo objetivo é otimizar a seleção / design de seus processadores, chips ainda disponíveis comercialmente. Talvez maior, mais rápido (compensação com consumo de energia, dissipação de calor). Talvez chips menores e dedicados lidem com tarefas específicas e façam interface com o cérebro principal (compensação com complicações de algoritmo / lógica).
Somente se houver recursos com os quais você não conseguirá lidar com chips comerciais, considere a possibilidade de implementar um processador especializado dentro de um FPGA, porque nesse ponto haverá vantagens muito claras que você espera obter ao criar seu próprio ', e você pode se concentrar apenas na implementação desses recursos, com as interfaces certas para o restante do seu design.
Caso contrário, é provável que você se desvie do seu objetivo principal (o que vou assumir é realmente construir um robô!)
Conclusão: os FPGAs são uma distração para o início da robótica - até que você esteja bem no caminho da robótica - e ganhou algumas boas críticas no design de eletrônicos / microprocessadores digitais em algum lugar ao longo do caminho.
fonte
Tendo trabalhado com FPGAs e microcontroladores em projetos de robótica, eu diria agora: seja qual for a pessoa que implementa a tarefa tem mais experiência. Se você conhece os dois igualmente bem, não estaria se perguntando. Se você não conhece bem, esses seriam os pontos a serem seguidos:
O que também é frequentemente usado são soluções híbridas. Com dois chips, um microcontrolador para o código do programa e um FPGA para E / S ou alguma outra tarefa. Também existem vários FPGAs que realmente possuem um microcontrolador incorporado.
Eu não seria tão duro com FPGAs como em outros posts, mas também argumentaria que, a menos que você conheça bem seu VHDL, será melhor usar microcontrolador ou ainda melhor PCs incorporados.
fonte