ÍNDICE DE CONTEÚDO
Segundo pesquisa feita pela UBM com desenvolvedores de sistemas embarcados, a tendência em projetos de FPGA utilizando processadores é muito grande. Com certeza Altera e Xilinx constataram o mesmo em suas pesquisas de mercado e ambas reconheceram como melhorar e muito seus produtos.
Quem já trabalhou com processadores softcores como por exemplo o NIOS2 da Altera e o MicroBlaze da Xilinx sabe que o desempenho deles não chega nem perto de um ARM Cortex série A , além de consumirem uma área de FPGA enorme para interfaces e memória. Eles, com certeza, têm a sua aplicação e não deixarão o mercado. Um core ARM, no entanto, abre novas possibilidades bem interessantes para o mundo de FPGA.
Conforme mencionado no artigo sobre arquitetura de FPGA, agora dentro do FPGA, além de DSP, blocos de memória e LUTS, também temos um processador ARM. A Altera está introduzindo o ARM nas famílias Cyclone e Arria e a Xilinx já possui no mercado o Zynq.
A ideia é que o fluxo de projeto de software e hardware seja distinto, ou seja, para o desenvolvedor de hardware as ferramentas permanecerão as mesmas. Ele apenas irá “instanciar um ARM” no seu projeto e realizar as conexões e configurações. Para o desenvolvedor de software as ferramentas também permanecerão as mesmas, é possível usar todo o vasto ecossistema de desenvolvimento ARM.
Vamos pegar como caso de uso a Cyclone V da Altera. O Cyclone V é um SoC (System-on-Chip) da Altera que integra um HPS (Hard Processor System) ao fabric da FPGA. O HPS consiste de um processador ARM e seus periféricos e interfaces de memória.
O HPS possui:
- Processador dual-core ARM® Cortex™-A9 MPCore™ rodando a 925 MHz;
- Cada core do processador inclui:
- 32 KB de cache de instrução L1, 32 KB de cache de dados L1;
- Unidade de ponto flutuante de precisão simples e dupla com tecnologia NEONTM;
- CoreSightTM debug;
- 512 KB de cache L2 compartilhada;
- 64 KB de RAM;
- Controladores SDRAM com suporte para DDR2, DDR3, and LPDDR2;
- Controlador DMA de oito canais;
- Controlador QSPI flash;
- Controlador NAND flash com DMA;
- Controlador SD/SDIO/MMC com DMA;
- 2x 10/100/1000 Ethernet media access control (MAC) com DMA;
- 2x USB On-The-Go (OTG) com DMA;
- 4x Controlador I2C ;
- 2x UART;
- 2x mestres SPI, 2x escravos SPI;
- Até 134 I/O (GPIO) de propósito geral;
- 7x timers de propósito geral;
- 4x watchdog timers.
Esta combinação permite diminuir o espaço da placa por não ser necessário ter um processador de alto desempenho externo ao FPGA. Também permite ao ARM suportar qualquer padrão de interface, visto que a mesma pode ser implementada em VHDL e então conectada ao ARM.
Existe a possibilidade de utilizar tudo que já existe para o mundo ARM junto com um FPGA de forma simples. Periféricos, linux embarcado e até mesmo Android podem rodar facilmente em conjunto com o seu circuito.
Barramento de alta velocidade HPS-To-FPGA
Apesar do HPS e o FPGA operarem de forma independente, eles estão interligados por uma interconexão de alta velocidade utilizando barramento ARM AMBA® AXITM .
Os mestres do barramento do HPS tem acesso aos slaves do FPGA e o contrário também é verdadeiro. Desta forma é possível que o FPGA acesse a lógica interna do ARM e os periféricos a ele conectados e vice-versa. É possível, por exemplo, pelo FPGA acessar um I/O que está fisicamente conectado ao ARM. Ou ainda debugar o ARM via hardware com o FPGA.
Até seis mestre do barramento FPGA podem compartilhar a memória RAM do HPS.
-
HPS-to-FPGA: configurável 32, 64, ou 128 bit AMBA AXI interface
-
FPGA-to-HPS: configurável 32, 64, ou 128 bit AMBA AXI interface
-
FPGA-to-HPS SDRAM controller: até seis mestre (portas de comando), 4x 64 bit portas de leitura e 4x 64 bit portas de escrita
A taxa de transferência entre eles é de 128 Gbps (giga bits por segundo).
Configuração do FPGA e boot do processador
O fabric do FPGA e o HPS são energizados de forma independente, é possível reduzir a frequência de clock individualmente, ou desligar o ARM ou o fabric do FPGA completamente para reduzir o consumo do sistema. É possível configurar o fabric FPGA e inicializar o HPS de forma independente, em qualquer ordem. Por exemplo:
-
Primeiro realizar o processo de boot do HPS e com o HPS rodando configurar o fabric do FPGA totalmente ou parcialmente por software;
-
Primeiro configurar o FPGA e bootar o HPS a partir de uma memória controlada pelo fabric do FPGA.
Futuro
Muito se questiona se hoje ainda podemos chamar o FPGA de FPGA, tamanha a evolução desde que o dispositivo era apenas uma matriz de elementos lógicos. Por enquanto o nome adotado é FPGA SoC. Existe um excelente artigo sobre isto em inglês neste link.
A Altera já tem no roadmap a nova geração da Stratix (família de maior desempenho) com um ARM quad-core de 64 bits integrado ao fabric do FPGA, Cortex A-53.
Referência: https://www.altera.com/literature/hb/cyclone-v/cv_51001.pdf
Muito boa a matéria.