André Castelan
"Em teoria não há diferença entre a pratica e a teoria, já na pratica..."

domingo, 9 de junho de 2013

O que é um FPGA?

Vou tentar seguir uma postura meio "evolutiva" no blog antes de falar sobre assuntos mais complicados/interessantes, então começando pelo básico...

FPGA ou field-programmable gate array ou ainda matriz de portas programáveis é um dispositivo lógico programável que suporta a implementação de circuitos digitais. A estrutura geral de uma FPGA está ilustrada na Figura 1 onde os três componentes básicos de um FPGA se fazem presentes os retângulos representam blocos de entrada e saída, os quadrados brancos blocos lógicos e os azuis Switches.

Hoje já são comuns blocos de memória, DSP e até mesmo um processador ARM na arquitetura de FPGAs.


Os blocos lógicos são arranjados em uma matriz bidimensional, e os fios de interconexão
são organizados como canais de roteamento horizontais e verticais entre as linhas e colunas do
bloco lógico. Os canais de roteamento contém fios e switches programáveis que permitem que os
blocos lógicos se conectem de várias formas diferentes.

Cada bloco lógico em FPGA tipicamente tem um pequeno número de entradas e saídas, um dos blocos lógicos normalmente se chama LookUp Table(LUT) que contém células de armazenamento que são usadas para implementar uma pequena função lógica. Cada célula é capaz de guardar um valor lógico, 0 ou 1. O valor guardado é produzido como saída da célula de armazenamento. LUTs de vários tamanhos podem ser criadas, aonde o tamanho é definido pelo número de entradas.

Resumidamente são diversas funções lógicas, memória, DSP, blocos de E/S que podem se conectar de diversas formas diferentes para representar um hardware descrito em uma linguagem de descrição de hardware (HDL) ou em um diagrama de blocos.

O arquivo de entrada, seja ele HDL ou diagrama de blocos é sintetizado por uma ferramenta normalmente fornecida pelo fabricante do FPGA e é gerado um arquivo binário com a configuração de hardware que aquele FPGA deve adotar.

Onde se utiliza FPGA?

FPGA é utilizado em diversos setores da industria, está presente em setores onde desempenho, paralelismo e tempo real são cruciais. Por se tratar de hardware é possível realizar uma instrução por ciclo de clock! Você pode ter, por exemplo, N cálculos rodando em paralelo e entregando o resultado no mesmo pulso de clock. Algo completamente impossível para um software realizar.

Para citar alguns mercados em que FPGA é forte:
  • Setor elétrico para processamento digital de sinal em tempo real;
  • Setor de telecom em switches e roteadores de alto desempenho;
  • Setor de multimédia para processamento de imagens em tempo real e alto desempenho;
  • Setor militar;
  • Setor automotivo dentre outros.
Basicamente sempre que alto processamento, paralelismo e tempo real forem necessários a utilização de um FPGA deve ser considerada. Segundo a pesquisa realizada pela UMB 31% dos projetos dos seus leitores que participaram da pesquisa utilizam FPGA em seu produto.

Quais são os principais fabricante de FPGA?

Hoje as duas principais empresas fabricantes de FPGA são a Altera e a Xilinx, segundo a mesma pesquisa da UMB 64% dos projetos utilizam Xilinx enquanto 42% utilizam Altera. A terceira colocada é a Lattice com 10% de uso em projetos dos que realizaram a pesquisa. 
Lembrando que o resultado pode passar de 100% pois alguém que participa da pesquisa pode trabalhar em projetos diferentes com vendedores de FPGA diferentes ou até mesmo diferentes FPGA em um mesmo projeto.

4 comentários:

  1. Muito bom mesmo, estou impressionado com a sua grande capacidade!
    Parabéns!!

    ResponderExcluir
  2. Ótimo trabalho para difundir os FPGAs...
    que venha os próximos posts.
    parabéns!!!

    ResponderExcluir