Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial Internet of Things >> Integrado

Recursos de Hardware FPGA para Sistemas Embarcados de Alta Performance

Recursos de Hardware FPGA para Sistemas Embarcados de Alta PerformanceNota do Editor: À medida que algoritmos avançados continuam a emergir para designs de produtos inteligentes, desenvolvedores frequentemente se veem lutando para implementar sistemas embarcados que possam atender às demandas de processamento associadas. FPGAs podem entregar a performance requerida, mas projetar com FPGAs longamente foi considerado domínio de especialistas em programação FPGA. Hoje, porém, a disponibilidade de FPGAs mais poderosos e ambientes de desenvolvimento mais eficazes tornou o desenvolvimento FPGA amplamente acessível. Neste trecho do Capítulo 4 de Architecting High‑Performance Embedded Systems, o autor oferece uma revisão abrangente de dispositivos FPGA, linguagens de implementação e o processo de desenvolvimento, além de um walkthrough detalhado de como começar a implementar FPGAs em seu próprio design.
1: Recursos de hardware (este artigo)
2: Linguagens de implementação
3: Processo de desenvolvimento
4: Construindo um projeto
5: Implementação

Adaptado de Architecting High-Performance Embedded Systems, por Jim Ledin.


Desenvolvendo Seu Primeiro Programa FPGA

Este capítulo começa com uma discussão sobre o uso efetivo de dispositivos FPGA em sistemas embarcados real-time e continua com uma descrição dos elementos funcionais contidos em FPGAs padrão. Introduz a gama de linguagens de design FPGA — incluindo Hardware Description Languages (HDLs), métodos de diagrama de blocos, e linguagens de programação de software populares como C e C++ — e fornece uma visão geral do processo de desenvolvimento FPGA. O capítulo conclui com um exemplo completo de um ciclo de desenvolvimento FPGA, da declaração de requisitos do sistema a um sistema totalmente funcional implementado em uma placa de desenvolvimento FPGA de baixo custo.

Após completar este capítulo, você entenderá como FPGAs podem ser aplicados em arquiteturas de sistemas embarcados real-time, os componentes-chave de um FPGA IC, as linguagens de programação usadas para projetar algoritmos FPGA, e a sequência passo a passo para desenvolver uma aplicação baseada em FPGA. Você também percorrerá um exemplo completo de desenvolvimento FPGA em uma placa de baixo custo usando ferramentas de software FPGA gratuitas.

Cobriremos os seguintes tópicos:

Requisitos Técnicos

Os arquivos para este capítulo estão disponíveis em https://github.com/PacktPublishing/Architecting-High-Performance-Embedded-Systems.

Usando FPGAs em designs de sistemas embarcados real-time

Conforme delineado na seção Elements of FPGAs do Capítulo 1, um dispositivo FPGA típico contém grande número de lookup tables, flip-flops, elementos de block RAM, DSP slices e outros componentes. Embora seja útil entender as capacidades detalhadas de cada componente, a consideração mais crítica é que um número de parte FPGA específico contém um número finito de cada recurso, e um design não pode exceder esses limites quando alvo aquele modelo particular.

É mais produtivo ver o processo de desenvolvimento da perspectiva da declaração de requisitos do sistema embarcado. Você pode começar almejando um modelo que atenda confortavelmente a esses requisitos. Conforme o design progride, você pode encontrar um limite de recurso ou descobrir que um recurso requerido está faltando. Nesse ponto, selecionar um alvo mais capaz e continuar desenvolvimento é direto. Inversamente, se você descobrir que o FPGA escolhido contém recursos em excesso, mover para uma parte menor pode reduzir custo, contagem de pinos, tamanho de package e consumo de potência.

Trocar o FPGA alvo dentro da mesma família é tipicamente seamless, com artefatos de design totalmente reutilizáveis. Trocar famílias ou vendors pode requerer esforço adicional. A lição chave é que o modelo específico não precisa ser escolhido no início; foque primeiro em validar o FPGA como solução viável, então selecione um vendor e família de dispositivo adequados.

Projetos de exemplo neste livro usam a família de ferramentas Vivado da Xilinx. Embora uma licença Vivado seja requerida para algumas famílias Xilinx, os dispositivos Artix‑7 usados aqui são suportados gratuitamente. O Artix‑7 combina alta performance, baixa potência e custo de sistema reduzido. Famílias similares e suites de ferramentas estão disponíveis de outros vendors.

Desenvolvimento FPGA é um processo envolvido que requer uma gama de dados de análise e design. Para manter a discussão concreta, usaremos Vivado ao longo deste livro. Uma vez que você domine essas técnicas, pode aplicá-las a ferramentas de outros vendors.

As seções a seguir discutem features diferenciadoras chave de famílias e modelos FPGA, incluindo capacidade de block RAM, tipos de sinal I/O, recursos especializados on-chip, e a presença de núcleos de processador embarcados.

Block RAM e Distributed RAM

Block RAM implementa regiões de memória dedicadas dentro de um FPGA. Uma região de memória é especificada por sua largura de bit (tipicamente 8 ou 16 bits) e profundidade (número de localizações de armazenamento). Total de block RAM é usualmente expresso em kilobits (Kb) e varia entre famílias e modelos.

Muitos FPGAs também fornecem distributed RAM, construída a partir de lógica de lookup-table para formar segmentos pequenos de 16 bits. Estes podem ser combinados em blocos maiores quando necessário. Distributed RAM é ideal para armazenamento temporário de resultados intermediários, enquanto block RAM é usado para caches ou buffers de I/O.

Block RAM pode ser single-port ou dual-port. Dual-port RAM, com duas portas de leitura/escrita, é especialmente útil para conectar subsistemas que operam em velocidades de clock diferentes, permitindo transferência de dados sem interferência.

Block RAM pode operar em modo FIFO, fornecendo sinais para full, empty, almost full e almost empty. Controle cuidadoso de operações de escrita e leitura previne perda ou corrupção de dados.

Pinos I/O de FPGA e Features Associadas

Pinos I/O de FPGA suportam uma variedade de padrões de alta velocidade. Durante o design, desenvolvedores atribuem funções a pinos específicos e configuram o padrão de interface de cada pino. Sinais são single-ended ou diferenciais.

Sinais single-ended referenciam terra e historicamente usavam faixas TTL/CMOS. FPGAs modernos suportam faixas de voltagem mais baixas — LVTTL (0–3,3 V) e variantes LVCMOS (1,2, 1,5, 1,8, 2,5, 3,3 V) — reduzindo consumo de potência e melhorando velocidade. Padrões single-ended de alta velocidade incluem HSTL e SSTL.

Sinalização diferencial, que usa um par de pinos, é preferida para links de alta taxa de dados porque ruído de modo comum é amplamente cancelado. Padrões diferenciais incluem HSTL, SSTL e LVDS. LVDS, introduzido em 1994, entrega corrente constante de 3,5 mA e muda direção para representar bits de dados. Casar impedância da linha de transmissão (100 Ω para LVDS) com impedância de terminação é essencial para evitar reflexões.

Recursos de Hardware Especializados

FPGAs frequentemente incluem hardware dedicado para funções que beneficiam de implementação fixa e eficiente:

Hardware dedicado como unidades MAC entrega performance muito além do que pode ser alcançado com lógica sintetizada.

Núcleos de Processador

Algumas famílias FPGA integram hard processor cores — por exemplo, Xilinx Zynq‑7000 combina um ARM Cortex‑A9 com tecido FPGA. Quando um design não requer um hard core, um soft processor pode ser instanciado a partir de recursos FPGA. Soft processors são altamente configuráveis mas tipicamente não igualam a performance de hard cores.

A próxima seção introduzirá as linguagens de programação primárias e métodos de entrada de dados usados para desenvolver algoritmos FPGA.

Reproduzido com permissão da Packt Publishing. Copyright © 2021 Packt Publishing


Recursos de Hardware FPGA para Sistemas Embarcados de Alta PerformanceJim Ledin é CEO da Ledin Engineering, Inc. Jim é especialista em design, desenvolvimento e teste de software e hardware embarcados. Também é expert em avaliação de cibersegurança e penetration testing de sistemas embarcados. Possui B.S. em engenharia aeroespacial pela Iowa State University e M.S. em engenharia elétrica e de computação pelo Georgia Institute of Technology. Jim é engenheiro elétrico profissional registrado na Califórnia, CISSP, CEH e CPT.

Conteúdo Relacionado:

Para mais Embedded, assine a newsletter semanal do Embedded.


Integrado

  1. Evite Surpresas Custosas no Design de Hardware Conectado: Estratégias Comprovadas
  2. Design de Sistemas Embarcados: Passos, Princípios e Aplicações Reais
  3. Eclipse IoT: Pacote Open-Source Unificado para Desenvolvimento Rápido de IoT
  4. Construindo Máquinas de Estado com Desenvolvimento Orientado a Testes em C Embarcado
  5. Aproveitando IA Embarcada para Converter Big Data em Insights Inteligentes Acionáveis
  6. Cypress Melhora IoT Development com ModusToolbox Full Device-to-Cloud Support
  7. FPGA MachXO3D da Lattice Fortalece Segurança de Hardware com Recursos Root-of-Trust
  8. MAXREFDES220# – Monitoramento de Pressão Arterial sem Manguito com Sensores Ópticos
  9. Java 9: Try-With-Resources Aprimorado para Código Mais Limpo
  10. Maximizando Produção com Software Avançado de Manufatura Aditiva