top of page
fpga.jpg

FPGA

  1. Desenvolvimento de projetos utilizando FPGA

O processo de projeto com FPGA envolve várias etapas que geralmente são
automatizadas. Atualmente, a utilização de ferramentas de software EDA tem
simplificado e acelerado todo o ciclo de projeto. Um sistema típico de desenvolvimento
de projetos, com ferramentas de softwares EDA, consiste em vários programas
interconectados. Esse processo envolve as seguintes etapas:

  1. Especificação e entrada do projeto

  2. Síntese e mapeamento da tecnologia

  3. Posicionamento e roteamento

  4. Verificação e teste

  5. Programação do FPGA

  1. Especificação e entrada de projetos

A entrada de projetos pode ser realizada de duas formas: um diagrama lógico, desenvolvido a partir de um editor gráfico, no qual é possível utilizar portas lógicas e macroinstruções, ou por meio de um editor de texto que utilize uma linguagem de descrição de hardware HDL (Hardware Description Language). A especificação do projeto é apresentada em termos abstratos ou em métodos formais, seguida pela análise da viabilidade da implementação por meio de simulação de alto nível. Nessa fase é importante que a linguagem utilizada seja o mais próximo possível da linguagem humana.

As ferramentas de captura de diagramas lógicos ou editores gráficos permitem que o projetista especifique o circuito como um diagrama lógico em 2D (duas dimensões), conectando componentes lógicos com recursos de roteamento. O software utilizado para a edição de projetos utilizando FPGAs da Altera Corp. e o Quartus®II.

Os componentes lógicos estão contidos em uma biblioteca de macroinstruções fornecidas pelo software ou que podem ser definidas pelo próprio usuário. Geralmente, as bibliotecas contém portas lógicas, pinos de entrada e saída, buffers, multiplexadores, flip-flops, latches, decodificadores, registradores, contadores, comparadores, memórias, funções aritméticas e outras funções especiais.

À medida que os projetos ficam mais complexos, as descrições em nível de
esquemas lógicos tornam-se inviáveis, fazendo-se necessário descrever esses projetos
em modos mais abstratos. As linguagens de descrição de hardware, também conhecidas
como HDLs, foram desenvolvidas para auxiliar os projetistas a documentar projetos e
simular grandes sistemas, principalmente em projetos de dispositivos ASICs.

Existem diversas linguagens de descrição de hardware disponíveis, sendo as mais comumente utilizadas: ABEL (Advanced Boolean Equation Language), VHDL (Very High Speed Integrated Circuit Hardware Description Language) e Verilog.

A linguagem ABEL foi a primeira linguagem HDL a ser desenvolvida. Criada pela empresa americana Data I/O Corp. para programar dispositivos SPLD, é uma linguagem mais simples que a lingaguem VHDL

Já as linguagens VHDL e Verilog são capazes de programar sistemas de maior complexidade como, por exemplo, os dispositivos FPGA. As linguagens de descrição de hardware HDL são utilizadas para descrever o
comportamento de um sistema digital de variadas formas, inclusive equações lógicas, tabelas verdade e diagramas de formas de onda, que utilizam declaração de constante, estados, configurações, bibliotecas, módulos, etc.

Aqui será trabalhado apenas o desenvolvimento de projetos a partir de um editor gráfico.

  1. Síntese Lógica e mapeamento da tecnologia

A síntese lógica consiste em duas fases distintas: otimização lógica para minimizar equações booleanas e mapeamento da tecnologia para converter equações em células da biblioteca da tecnologia-alvo.

Como a lógica inicial não está otimizada, algoritmos de síntese são utilizados para simplificar as equações booleanas geradas. A síntese permite, na prática, a redução de área a ser ocupada no circuito integrado, como também reduz o atraso da propagação (delay) dos sinais envolvidos.

A fase de mapeamento da tecnologia seleciona um conjunto de portas lógicas de uma dada biblioteca para implementar as representações abstratas, enquanto melhora a área, o atraso ou a combinação de ambos, levando em considerações as restrições arquiteturais da tecnologia-alvo, nesse caso, os FPGAs.

  1. Posicionamento e Roteamento

Após a minimização lógica e o mapeamento da tecnologia, o projeto consiste em uma representação textual de componentes lógicos a serem designados componentes físicos de uma arquitetura FPGA.

O posicionamento e roteamento são dois processos mutuamente dependentes. O posicionamento é a atribuição de componentes particulares do circuito integrado aos componentes lógicos de projeto. O roteamento é a atribuição de trilhas e elementos programáveis, consumindo os recursos disponíveis de interconexão para a comunicação entre os componentes.

O software de roteamento aloca os recursos de roteamento do FPGA para interconectar as células posicionadas. As ferramentas de roteamento devem assegurar que 100% das conexões requeridas sejam realizadas e devem procurar maximizar a velocidade das conexões críticas, porém essa meta nem sempre é alcançada.

  1. Verificação e Teste

A simulação é o tipo mais comum de verificação utilizada em projetos com FPGAs. Ela é realizada geralmente em fase inicial, para verificação funcional, podendo ser realizada em nível comportamental ou em nível de portas lógicas. A simulação também é realizada antes da configuração do FPGA, para verificar restrições e temporização. Vários simuladores para a tecnologia FPGA estão disponíveis comercialmente como, por exemplo, os softwares EDA:

  1. Viewsim®: desenvolvido pela empresa Mentor Graphics.

  2. Synopsys®: desenvolvido pela empresa Synopsys.

  3. Quartus®: desenvolvido pela empresa Altera Corp.

  1. Programação do FPGA

Após a verificação e teste a implementação do projeto é completada, mas ainda
resta um passo final que é a programação do FPGA. Nesse ponto é gerado um arquivo de
configuração, que deve ser carregado no dispositivo-alvo. Um FPGA pode ser programado de diversos modos. Um dos modos recomendados é a interface JTAG (por um cabo de impressora padrão),

pois o arquivo de configuração pode ser transferido, pela porta de comunicação paralela do computador
para o dispositivo FPGA.

(c) FMK 2023 - 2024.  Updated Sep 2024.

bottom of page