FPGA: tudo sobre esses chips e sua programação

chip FPGA

Os FPGAs estão se tornando cada vez mais populares nos últimos tempos. Mesmo para aplicações profissionais, esses chips são frequentemente usados, mas também para DIYers e fabricantes que desejam implementar um circuito discreto dentro de um chip com todas as vantagens que isso implica. Não é barato ou fácil encontrar uma fábrica para enviar seus layouts ou padrões e ter um chip personalizado fabricado para você.

É verdade que algumas fundições permitem fazer wafers ou wafers multiprojeto para fazer chips de indivíduos ou universidades para testar com eles. Esses tipos de fábricas são, como eu disse, difíceis de encontrar, geralmente ficam no exterior e não são baratos. Depois de um tempo, as amostras de seus chips são enviadas para o endereço combinado, mas eles não são responsáveis ​​por testá-los ou verificar se funcionam. Tudo depende do seu projeto ...

Uma solução alternativa para isso é comprar um FPGA e programe tudo o que você precisa para implementar dentro do chip ...

O que é um FPGA?

Células programáveis

FPGA significa Field Programmable Gate Array. São dispositivos ou chips digitais que podem ser configurados para permitir a implementação de praticamente qualquer coisa. Em outras palavras, é um chip em branco onde você pode "escrever". Isso significa que você pode implementar uma CPU, uma memória, um controlador, qualquer lógica, etc., conseguindo um funcionamento muito rápido e com todas as vantagens de tê-lo integrado em um chip e não com elementos eletrônicos.

Ross Freeman e Bernard Vonderschmitt, co-fundadores da Xilinx, foram os que inventaram o FPGA em 1984. Eles o fizeram como uma evolução para os chips CPLD da época. Os chips programáveis ​​CPLD tinham algumas deficiências que resolveram os novos designs de FPGA e desde então eles evoluíram até o momento.

O mercado FPGA é tão frutífero que empresas como Intel, Xilinx, Altera, Quick Logic, Lattice, etc., eles investiram muito para desenvolver FPGAs melhores e também ambientes de programação embarcados ou IDEs para eles. Fornecendo, assim, plataformas muito boas para facilitar a tarefa dos desenvolvedores ou fabricantes.

Atualmente, esses fabricantes não só fornecem um chip programável, mas também incluem vários elementos auxiliares para trazer mais possibilidades aos desenvolvedores. Por exemplo, eles incluem células de memória flash, células de memória SDRAM e assim por diante.

Para que são usados?

IDE para programar FPGA

Portanto, um FPGA pode ser semelhante a um ASIC, mas que nós podemos escolher o que será. Por exemplo, poderíamos criar um código para programá-lo e transformá-lo em CPU, GPU, somador, controlador de memória ou qualquer outro circuito lógico implementado em um único chip.

As possibilidades são infinitas. Na verdade, eu recomendo que você visite o site opencores.org, un sitio dedicado a ofrecer multitud de proyectos de hardware libre. Encontrarás códigos en VHDL, Verligo, etc., para RAM, CPU, GPU, controladores, ALUs, FPUs, decodificadores e etc..

Como é programado?

Programador FPGA

Para programar um FPGA podemos fazê-lo a partir de nosso sistema operacional favorito, como GNU / Linux, Windows e MacOS, embora certamente haja mais ambientes de desenvolvimento para Windows. Geralmente, as mesmas empresas que fazem o FPGA oferecem um IDE muito completo para trabalhar e onde encontrar todas as ferramentas de que você precisa no mesmo pacote de software.

Você também precisará do Chip FPGA ou placa e o cabo ou programador necessário com o qual você pode conectar o FPGA ao seu PC para passar o código escrito ao FPGA e assim ser programado. Isso é algo semelhante ao que você faz com a placa Arduino, escrevendo o programa IDE do Arduino na memória programável do microcontrolador.

Somente no caso do FPGA o que temos é uma matriz ou array de componentes elementares como células de memória, portas AND, OR, NOT, flip-flops e outros. elementos básicos ou blocos de eletrônica digital que podemos usar. Com o programa escrito, o que vamos fazer é impor a maneira como esses blocos essenciais devem ser agrupados para formar o pequeno circuito que queremos, como uma ALU.

Ou seja, se programarmos um somador em nosso IDE, os blocos necessários para implementar este somador eles vão ligar da maneira correta dentro do FPGA para que o chip funcione como um somador. Simples, certo? Em geral, vários métodos são usados ​​para esta programação a nível físico, como memórias ou fusíveis para fazer um link permanente nesse caso.

A velocidade em que operam dependerá freqüência de relógio para o qual o FPGA adquirimos funciona. Por exemplo, os mais básicos geralmente funcionam a 50 Mhz, outros o farão em frequências muito mais altas. No caso do FPGA de 50 Mhz, isso significa que ele operará a uma taxa de 50.000.000 milhões de vezes por segundo. Se continuarmos com o somador que dei como exemplo, você será capaz de fazer essa quantidade de somas em um segundo ...

Continuando com o tema de programaçãoUma vez que sabemos que você pode escrever código como faríamos no Arduino IDE ou para desenvolver qualquer outro programa, e vendo como isso é feito no nível de hardware, direi que realmente não é uma programação como tal. Em vez disso, é uma descrição do hardware. Na verdade, são utilizadas linguagens de descrição de hardware como VHDL, Verilog, etc.

Com esse programa é descrito em um nível lógico o que o pequeno circuito que queremos implementar faz. E então vai para o FPGA. Embora seja verdade que algumas plataformas permitem a programação em linguagens de programação como C para poder implementar uma CPU no FPGA e então gerar programas para carregar na memória e serem processados ​​pelo referido processador.

Integração com Arduino

Arduino-FPGA

FPGAs geralmente são usados ​​separadamente, mas é verdade que existem muitas ferramentas e kits no mercado que irão tornar sua vida mais fácil para integrar seu FPGA com a plataforma Arduino. Um exemplo de placa para trazer FPGAs para seus projetos com Arduino é a MKR Vidor 4000, embora existam outras.

MKR Viewer 4000 é um tabuleiro com três fichas. Um deles é um FPGA, especificamente um Intel Cyclone 10. Existem também outros chips para Bluetooth LE ou conectividade de baixa potência e também compatibilidade WiFi. Um bom complemento para fornecer ao seu Arduino funcionalidades de conectividade e ser capaz de implementar o que você precisa no FPGA.

Com isso você tem um hardware personalizável, configurado por você para a finalidade que deseja. Isso oferece possibilidades infinitas.


Seja o primeiro a comentar

Deixe um comentário

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

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.