As FPGAs (Field Programmable Gate Array) são dispositivos semicondutores para processamento digital que tiveram sua origem a partir da evolução do conceito de PLDs e CPLDs e da indústria de memórias de leitura programáveis (PROM). Elas podem ser usadas para construção de uma vasta gama de dispositivos de hardware. Os FPGAs possuem baixo custo de prototipação e boa flexibilidade.
Para especificar o funcionamento de FPGA normalmente costuma-se utilizar algum software de designe (como Altera) que possui uma linguagem própria e uma série de ferramentas que facilitam a programação do FPGA. As estruturas de hardware destacadas na Figura 1 são selecionadas pelo software de design a partir das escolhas de um projetista. O software para design seleciona as estruturas apropriadas para atingir as metas desejadas, que podem ser o melhor desempenho possível ou usar a menor quantidade de energia.
A arquitetura de um FPGA é em sua grande maioria composta por Elementos Lógicos (Logic Elements - LE), dispostos em malhas ao longo de todo o equipamento. Os Elementos Lógicos possuem duas partes: Look-Up Tables (LUT), que podem implementar funções comuns de lógica, tais como portas AND ou OR, e registros que podem implementar lógica síncrona, como flip-flops.
Outras estruturas de hardware dedicadas, além dos LEs, estão presentes para auxiliar na implementação de funções que podem ser definidas pelo usuário e aumentar o desempenho. Estes recursos estão geralmente dispostos em colunas ao longo da FPGA. Um dos tipos de recursos dedicados são as memórias embutidas (Embedded Memory - EM) que podem ser dispostas sem série ou em paralelo com a finalidade de se obter memórias mais robustas. Multiplicadores embutidos podem ser cascateados de forma a facilitar o processamento digital de sinais (PDS), auxiliando na implementação de funções avançadas de Processamento Digital de Sinais.
Além disso, as FPGAs possuem elementos de entrada e saída (User-selectable I/O Elements), que podem ser dispostos e usados conforme o desejo do projetista. Estes elementos podem ser posicionados e configurados para comunicar o FPGA com outros dispositivos externos presentes no circuito impresso.
Os elementos de uma FPGA possuem conexões em uma planta contendo rotas reconfiguráveis e registros de configuração (Configurable Routing and Configuration Registers). Estas rotas são extremamente flexíveis, a fim de manter a compatibilidade para troca de informação com uma intensa gama de outras estruturas de hardwares.
Na Literatura podemos encontrar várias propostas de novas arquiteturas e aperfeiçoamentos nas arquiteturas modernas. Como em [Renovell et al, 2001] que propõe uma mudança na arquitetura clássica a fim de criar uma FPGA com cadeias de digitalização implícita (Implicit-Scan chain). A justificativa deste trabalho está no fato de as FPGAs comuns não conseguirem implementar circuitos digitalizados (Scanned Circuits) de forma fácil.
Já [Smith et al, 2010] propõe uma otimização arquitetural nas FPGAs modernas usando programação geométrica. Para isso, é utilizado um fremework de programação geométrica que mostra como o dimensionamento dos transistores e a seleção de parâmetros arquiteturais de alto nível podem ser resolvidos como um problema de otimização concorrente.
Principais Referências
- Malagoni, Juliana A. et al. Design Digital Utilizando FPGA. Universidade Federal de Uberlândia. Uberlândia - MG, Brasil.
- Smith, Alastair M. et al. FPGA Architeture Optimization Using Geometric Programming. IEEE Transactions on Computer-Aided Design of Integrated Circuits ans Systems. Volume 29, Nº 8. Agosto, 2010.
- Renovell, M. et al. IS-FPGA: A New Symmetric FPGA Architeture with Implict SCAN. IEEE. 2001.
