Clique nas imagens para ampliar
Projetos em FPGA
FPGA, ou Field Programmable Gate Array (Matriz de Portas Programáveis em Campo), é um dispositivo programável em nível de portas lógicas que serve para a implementação de circuitos digitais.
Projetos em FPGA são realizados tanto com a intenção de se obter um produto final, quanto como suporte para prototipagem rápida de projetos de circuitos integrados digitais.
Em contraposição ao ASIC, que tem função definida por construção, uma FPGA pode ser programada pelo usuário final após a fabricação do dispositivo (daí o “Programável em Campo”). Portanto, projetos em FPGA podem ser realizados para a implementação de uma infinidade de circuitos, abrangendo desde pequenos blocos de lógica de apoio (“glue logic”), até complexos sistemas com microcontroladores embarcados.
E diferentemente de um microcontrolador (ou microprocessador) que executa software de forma serial, a programação de uma FPGA consiste na reconfiguração do seu hardware, através do roteamento de sinais entre os diversos elementos lógicos de que ela é composta. Isso permite o processamento serial e/ou paralelo dos sinais.
Internamente, uma FPGA é composta por três tipos de elementos:
- IOB (Input/Output Block), ou bloco de entrada/saída. São circuitos responsáveis pelo interfaceamento entre os blocos internos da FPGA e os seus pinos externos.
- CLB (Configurable Logic Block), ou bloco de lógica configurável. São blocos compostos por elementos combinacionais (look-up tables – LUTs – usadas para implementar a função de portas lógicas) e flip-flops que podem ser configurados por programação.
- Switch Matrix (Matriz de chaveamento ou de interconexões). São chaves dispostas em linhas e colunas e responsáveis por conectar os diversos CLBs entre si e com as entradas e saídas da FPGA.
Projetos em FPGA consistem na definição do conteúdo dessa matriz de interconexão, ou seja, na definição do roteamento dos diversos elementos constitutivos da FPGA. O conteúdo dessa matriz deve ser armazenado de forma não-volátil em alguma memória que pode ser interna ou externa à própria FPGA. No segundo caso, é preciso haver algum procedimento de boot, utilizando-se por exemplo um microcontrolador externo, que carregue o valor da memória para a FPGA no momento da sua inicialização.
Em sistemas complexos envolvendo microcontroladores e PFGAs, é possível a reconfiguração da FPGA durante o funcionamento do sistema, adicionando-se assim um grau extra de flexibilidade ao projeto sem ter que incluir hardware adicional.
No outro extremo, projetos em FPGA podem incluir um microcontrolador implementado a partir dos elementos da própria FPGA e com isso obter, em um único circuito integrado (a FPGA), vários blocos lógicos, mais ou menos complexos, e a capacidade de executar software.
Projetos em FPGA são realizados segundo um fluxo que inclui:
Descrição do circuito em RTL (Register Transfer Level) em uma linguagem para descrição de hardware (Hardware Description Language), sendo as mais utilizadas o Verilog e o VHDL.
Síntese lógica. Etapa que gera o netlist e informações de atrasos dos sinais, ambos necessários para as simulações.
Simulações comportamentais e elétricas para verificação do funcionamento do circuito.
Placement and routing. Etapa de mapeamento do circuito sintetizado para os elementos físicos da FPGA.
Power e Time analysis. Para verificar se o circuito gerado não apresenta corridas críticas entre os sinais e se as especificações de tempo e potência estão sendo atendidas.
Programação da FPGA.
Se os projetos em FPGA ainda incorporarem um microcontrolador, será necessário a escrita do software / firmware que será executado no mesmo.
A equipe de projetos do LSI-TEC emprega regularmente FPGAs como elemento de suporte no projeto de circuitos integrados. Nesse contexto, projetos em FPGA são realizados para testes e caracterizações das partes digitais dos circuitos integrados. Isso permite validar o seu funcionamento e ainda realizar testes com elementos externos do sistema de forma mais rápida, antecipando os resultados que seriam conseguidos apenas após uma fabricação de prototipagem, bem mais demorada e cara.
Além de implementar partes digitais dos circuitos, projetos em FPGA também são realizados para a geração de sinais de controle, elementos de interface e outros recursos de testbenches. Nesse caso, a FPGA é utilizada para a realização dos testes em elementos do sistema, incluindo circuitos integrados, em vez de ser ela mesma uma implementação alternativa de partes do chip.
Finalmente, em alguns casos, projetos antigos já desenvolvidos em FPGA precisam ser portados para um formato ASIC devido à possibilidade de obsolescência do componente no mercado. Esse serviço também é prestado pelo LSI-TEC aos seus clientes.
A Design House do LSI-TEC conta com equipe experiente em Projetos em FPGA e na programação de software / firmware embarcado e está apta para ajudá-lo a definir a melhor solução tecnológica para o seu produto.
Entre em contato: walter.santana@lsitec.org.br | hugo.puertas@lsitec.org.br