.
À medida que os data centers continuam a evoluir para atender às crescentes demandas das aplicações modernas, os field-programmable gate arrays (FPGAs) surgiram como soluções populares, versáteis e eficientes para melhorar o desempenho do data center.
Neste artigo, você obterá uma compreensão básica do que é um FPGA, aprenderá sobre os diferentes tipos de FPGAs, explorará os benefícios e desafios do uso de FPGAs, obterá uma visão geral de alto nível de como programar um FPGA e descobrirá os diferentes tipos de linguagens de programação FPGA.
O que é um FPGA?
Um array de portas programáveis em campo (FPGA) é um tipo de circuito integrado (IC), ou chip, que é personalizável por meio de um array de blocos lógicos configuráveis (CLB) e que pode ser reconfigurado após a fabricação.
Componentes de um FPGA
Um CLB é a unidade lógica fundamental dos FPGAs que normalmente contém uma combinação de flip-flops e tabelas de consulta (LUTs). Os flip-flops fornecem a capacidade de armazenar e manipular dados em circuitos lógicos sequenciais, e os LUTs são usados para implementar lógica combinacional.
FPGAs podem incluir componentes adicionais, como:
- Interconexões – recursos de roteamento que conectam os vários blocos lógicos
- Blocos de entrada/saída (IO) – componentes que fornecem a interface entre o mundo externo e a lógica interna do FPGA
- Blocos de processamento de sinal digital (blocos DSP) – unidades que facilitam funções especializadas como filtragem ou multiplicação
Os fabricantes de FPGA podem implementar circuitos digitais personalizados e reconfigurar os componentes para atender às necessidades do usuário final.
FPGA x ASIC x CPLD: Qual é a diferença?
Junto com FPGAs, ASICs e CPLDs também são componentes importantes na computação moderna que são frequentemente comparados na indústria. Conhecer as diferenças entre eles – e qual escolher para determinadas aplicações – é importante tanto para profissionais de TI novatos quanto veteranos envolvidos em decisões de computação.
FPGAs e ASICs são tipos de circuitos integrados com designs de circuito semelhantes, mas diferem em finalidade e funcionalidade. Em geral, os ASICs são projetados de forma personalizada para uma aplicação específica, enquanto os FPGAs são mais multifuncionais e podem ser reformados para múltiplas aplicações. CPLDs são menos complexos que FPGAs e ASICs e são frequentemente usados para aplicações lógicas mais simples.
A tabela abaixo detalha as vantagens e desvantagens de cada tipo de circuito para ajudá-lo a decidir qual é o melhor para suas aplicações.
Quais são os tipos de FPGAs?
Existem três tipos de FPGAs: baseados em memória estática de acesso aleatório (SRAM), baseados em flash e antifusíveis.
Baseado em SRAM
FPGAs baseados em SRAM usam células SRAM voláteis para armazenar dados de configuração, que devem ser carregados sempre que um FPGA é ligado. Eles são comumente usados para prototipagem, desenvolvimento e aplicações onde são necessárias alterações e testes frequentes de design.
Baseado em Flash
Os FPGAs baseados em Flash usam células de memória flash não voláteis para armazenar dados de configuração, permitindo que o FPGA retenha sua configuração e permaneça ativo na inicialização. FPGAs baseados em Flash são mais adequados para aplicações que precisam de funcionalidade instantânea sem a necessidade de recarregar os dados de configuração a cada ciclo de energia.
Anti-fusível
Os FPGAs antifusíveis não são voláteis e permanecem ativos na inicialização, mas são programáveis uma única vez e não podem ser desfeitos ou reconfigurados. Essas características tornam os FPGAs antifusíveis ideais para aplicações que exigem segurança e não precisam de reprogramação adicional, como em defesa, aeroespacial ou outras aplicações de alta confiabilidade.
Quais são os benefícios do uso de FPGAs?
Os FPGAs oferecem muitos benefícios, incluindo, mas não se limitando a:
- Versatilidade – Os FPGAs são altamente versáteis devido à sua programabilidade e reconfigurabilidade, permitindo que sejam utilizados numa ampla gama de aplicações.
- Velocidade e Eficiência – Os FPGAs são capazes de processamento paralelo, permitindo-lhes oferecer velocidades mais rápidas, maior poder de processamento, melhores tempos de resposta e melhor desempenho geral quando comparados a outros tipos de hardware.
- Custo – Em comparação com os ASICs, os FPGAs oferecem custos iniciais mais baixos devido à sua capacidade de serem reprogramados continuamente. Isto é especialmente benéfico para volumes de produção baixos a médios, onde os custos iniciais de um longo ciclo de design e desenvolvimento de ASIC podem não ser justificáveis.
- Configurabilidade – A principal vantagem dos FPGAs é que eles são reprogramáveis. Essa qualidade permite que os FPGAs sejam modificados de forma rápida e fácil para atender às necessidades do usuário quando comparados aos ASICs, que não podem ser reconfigurados após a fabricação.
- Integração – Devido à sua natureza flexível, os FPGAs podem ser perfeitamente integrados e rapidamente atualizados em sistemas maiores com mais facilidade do que os ASICs, o que pode exigir custos adicionais de engenharia para atualização.
Quais são os desafios do uso de FPGAs?
Alguns desafios do uso de FPGAs incluem, mas não estão limitados a:
- Custo – Embora os FPGAs exijam um custo inicial mais baixo do que os ASICs devido aos tempos de desenvolvimento mais curtos, os FPGAs podem ser mais caros no longo prazo para produção em alto volume.
- Consumo de energia – A sobrecarga de reconfigurabilidade dos FPGAs leva-os a consumir mais energia do que os ASICs, que consomem menos energia porque o seu design é altamente personalizado e otimizado para tarefas específicas.
- Complexidade – Os FPGAs exigem um processo de programação complexo que envolve conhecimento especializado de projeto de hardware, HDL, síntese e ferramentas de localização e rota, especialmente para projetos grandes e complexos.
- Limitações de tempo – Os dados de configuração devem ser carregados toda vez que um FPGA é ligado, o que pode levar a um tempo de inicialização mais longo quando comparado aos ASICs.
Como você programa um FPGA?
Etapa 1: selecione um fluxo de bits FPGA
Pode ser útil primeiro familiarizar-se com termos e conceitos como portas lógicas, boleanoe circuitos lógicos e seus vários tipos.
Um bitstream FPGA é um arquivo binário que contém as informações de configuração do FPGA. O fluxo de bits do FPGA deve especificar os blocos lógicos configuráveis, interconexões e outros componentes necessários que devem funcionar juntos para o circuito digital desejado.
Passo 2: Escreva um programa HDL
Aprenda e use um HDL, como Verilog ou VHDL, para escrever código para um fluxo de design FPGA que descreva o comportamento desejado de sua lógica, incluindo interconexões entre componentes, registros, sinais de controle e caminhos de dados.
Etapa 3: verifique e compile o programa
Depure e verifique a exatidão do código HDL por meio de simulação e testes. Depois de verificado, use ferramentas de síntese para converter seu código em uma representação netlist das portas lógicas e interconexões.
Etapa 4: configurar o dispositivo FPGA
Converta a netlist sintetizada em um formato compatível com o seu dispositivo FPGA. Os arquivos de configuração definem como os recursos do FPGA devem ser interconectados com base no seu código HDL.
Etapa 5: execute o programa
Carregue o fluxo de bits gerado no dispositivo FPGA usando hardware de programação. O bitstream configurará o FPGA para implementar a lógica descrita no programa HDL.
Quais são os diferentes tipos de linguagens de programação FPGA?
Verilog e VDHL (linguagem de descrição de hardware VHSIC) são as linguagens de programação FPGA mais comumente usadas.
Verilog é uma linguagem simples, fácil de aprender, baseada em texto e amplamente aceita como padrão da indústria. Ela foi projetada para se assemelhar à linguagem de programação C, é mais comumente usada nos EUA e é caracterizada por uma sintaxe flexível.
VHDL é conhecido por sua linguagem de descrição de hardware fortemente tipada, mais adequada para sistemas digitais complexos. Possui sintaxe que lembra a linguagem de programação Ada, é mais comumente usada na Europa e é caracterizada por lógica rigorosa e prudência.
Outras linguagens de programação FPGA incluem lúcido, C e C++, python e estruturas de IA como TensorFlow e PyTorch.
Fornecedores populares de FPGA
Fornecedores populares no espaço FPGA incluem Xilinx (adquirida pela AMD em 2022), Altera (adquirida pela Intel em 2015), Semicondutor de treliça, Microchip (anteriormente Microsemi), e Corporação QuickLogic.
Perspectiva FPGA
A versatilidade e o poder de processamento únicos do FPGA fazem dele uma excelente solução para atender às crescentes demandas das necessidades de infraestrutura de data centers modernos, caracterizadas pela crescente popularidade da computação em nuvem, pela explosão da criação de dados e pelo surgimento de novos aplicativos com uso intensivo de computação, como aprendizado de máquina.
.