Site icon Embarcados – Sua fonte de informações sobre Sistemas Embarcados

Dispositivos SoC da Altera – Alto desempenho para projetos embarcados

Soc da Altera

O uso de processadores embarcados em dispositivos lógicos programáveis vem crescendo muito nos últimos anos. Para atender esta demanda crescente, a Altera lançou a linha SoC de FPGAs, que são FPGAs com processador ARM Cortex-A9 dual-core e um conjunto de periféricos já implementados em hardware, que permitem atingir alto desempenho nos projetos, tanto do software rodando no processador quanto de sistemas implementados em hardware no FPGA.

Ao longo da última década, a porcentagem de projetos em FPGA (Field Programmable Gate Arrays) que usam algum tipo de processador embarcado subiu de menos de 10% dos projetos, em 2003, para mais de 50% dos projetos em 2013. A demanda por maior capacidade de processamento de software, maior número de núcleos nos processadores do sistema e redução da área de placa e do consumo do sistema para viabilizar aplicações embarcadas, levaram a Altera a desenvolver a linha SoC (System-on-a-Chip) de FPGAs. 

Esta nova família de FPGA inclui, em um mesmo dispositivo, um FPGA, com todos os recursos que hoje estão disponíveis nestes dispositivos (lógica, controladores de memória, transceivers de alta velocidade e controladores PCI Express, blocos de processamento DSP e PLLs), um sistema de processamento, chamado HPS (Hard Processor System) composto por um processador ARM Cortex-A9 e um conjunto de periféricos que disponibiliza a alta capacidade de processamento do ARM (chega a 4000 DMIPS de capacidade de processamento) e facilidade de implementação de soluções rodando sistemas operacionais completos (como o Linux) em uma plataforma integrada com um FPGA de última geração, e com um custo baixo.

Os dispositivos SoC

Os dispositivos SoC da Altera são a integração de um circuito de FPGA de ultima geração, em 28 nm, e um processador ARM Cortex-A9 e os seus periféricos, o HPS em um mesmo dispositivo, conforme a  figura 1. Há duas famílias de FPGA disponíveis com o processador ARM integrado, a família Arria V SoC, voltada para aplicações de mais alto desempenho, e a família Cyclone V SoC, ambas implementadas no processo LP (Low Power) 28 nm da TSMC.

Na família Arria V SoC (1) é possível implementar circuitos rodando até 450 MHz, para circuitos muito bem sincronizados, e entre 250 e 350 MHz para circuitos maiores. Os transceivers podem ter taxas de transferência de ate 10 Gbps por transceiver, e a densidade destes ítens varia de 350K LE (Logic Element = Lookup Table de 4 entradas + 1 Flip-Flop) até 462K LE, com quatro controladores de memória em hardware, dois controladores PCI Express e até 36 transceivers.

Na família Cyclone V SoC (2) é possível implementar circuitos rodando até 250 MHz, para circuitos muito bem sincronizados, e entre 125 e 200 MHz para circuitos maiores. Os transceivers podem ter taxas de transferência de até 6.144 Gbps por transceiver, e a densidade destes ítens varia de 25K LE até 110K LE, com até dois controladores de memória em hardware, dois controladores PCI Express e até 9 transceivers.

Uma das grandes vantagens do uso de um dispositivo que integra um processador e um FPGA é a possiblidade de customizar o sistema desenvolvido para a sua necessidade. Assim, por exemplo, se forem necessárias 10 UARTs no sistema em desenvolvimento, e o processador em hardware só tem duas, podem ser implementadas as outras 8 UARTs no circuito do FPGA. Podem, também, ser implementados no circuito do FPGA processadores adicionais mais simples para executar funções específicas, liberando o ARM para tarefas de mais alto nível. Pode-se tambem incluir periféricos criados pelo usuário, que atendam a uma necessidade específica, tais como módulos de criptografia, controladores de motores BLDC, timers com resolução maior, interfaces específicas (Sonares por Ultrassom, interfaces infravermelho (IrDA), interfaces paralelas, etc …), expandindo assim o conjunto inicial de periféricos oferecidos no HPS para atender as necessidades do projeto sendo desenvolvido. No circuito do FPGA podem ainda ser implementados algoritmos de processamento digital de sinais complexos em hardware, com desempenho superior (dependendo do dispositivo usado até 10 vezes superior) a processadores DSP de mercado de alto desempenho, fazendo uso do paralelismo permitido em um FPGA e dos MACs (multiplicadores, somadores e acumuladores) já disponíveis em hardware no circuito do FPGA.

Módulo HPS

O módulo HPS (Hard Processor System) é o mesmo, tanto na família Cyclone V SoC quanto na Arria V SoC, e é composto pelos seguintes componentes já implementados em hardware :

Circuito do FPGA

O circuito do FPGA é o mesmo usado nos demais FPGAs de última geração da Altera, que integra os seguintes componentes:

Fluxo de projeto em dispositivos SoC

O fluxo de projeto para dispositivos SoC, mostrado na figura 2pode ser divido em duas partes, o desenvolvimento do hardware, que utiliza as ferramentas de desenvolvimento para FPGA (Quartus II, ModelSim, SignalTap II, …) e o desenvolvimento do software, que utiliza ferramentas de desenvolvimento de software para as famílias de processadores da ARM, o DS-5 (ARM Development Studio da Altera), ferramentas de desenvolvimento da GNU e suporte aos sistemas operacionais (Yocto para Linux). A Altera provê também ferramentas que permitem ao software obter informação diretamente do sistema desenvolvido em hardware e já integrar, por exemplo, no software, os drivers para os periféricos utlizados no hardware e os acrescentados ao sistema implementados no circuito do FPGA, reduzindo o tempo de desenvolvimento necessário.

Desenvolvimento do circuito de hardware

O desenvolvimento do hardware para o sistema SoC e feito através de ferramentas de desenvolvimento da Altera: o Quartus II, o Qsys (ferramenta de integração de sistemas SoC, que faz a geração do código do sistema de hardware a ser gerado, composto pelo HPS configurado e pelos periféricos adicionais implementados no circuito do FPGA), o ModelSim, para fazer a simulação do sistema, e as ferramentas de gravação, que permitem configurar o FPGA com o circuito gerado.

A primeira tarefa para se gerar um circuito SoC é usar o Qsys para implementar o circuito. Esta ferramenta permite configurar o HPS (selecionando os periféricos que serão usados e os pinos usados por cada periférico), definir a forma de integração entre a FPGA e o HPS, e incluir mais periféricos ou outros processadores implementados no circuito do FPGA. É uma ferramenta gráfica de fácil utilização e muito flexível, permitindo integrar, em um mesmo projeto, periféricos com interfaces distintas, tais como Avalon Mapeado em Meméria, Avalon Stream, AXI-3 e AXI-4. Ao final da criação do módulo SoC, o Qsys gera o código HDL (VHDL ou Verilog) do mesmo, deixando este sistema pronto a ser integrado ao FPGA.

Numa segunda etapa, usa-se o Quartus II para integrar o sistema SoC gerado pelo Qsys no FPGA, permitindo acrescentar outros sistemas escritos diretamente em código HDL, definir a posição e o padrão de I/O de cada pino do sistema, compilar o projeto e gerar o arquivo de gravação no FPGA. No Quartus também podem ser incluídos recursos de depuração, tais como o SignalTap II – um analisador lógico de estados implementado no próprio FPGA e que pode ser usado para monitorar sinais do sistema durante sua operação normal.  

Desenvolvimento de software para o sistema SoC

Uma vez concluido o desenvolvimento do hardware, é possível passar a desenvolver o software que será executado no sistema gerado. O desenvolvimento do software pode ser feito para dois tipos de aplicações diferentes – bare-metal, onde será desenvolvido um programa em C puro, para rodar no processador diretamente, sem a presença de um sistema operacional,  e o desenvolvimento de software que rodará sob um sistema operacional. Há vários sistemas operacionais já portados para os dispositivos SoC da Altera, sendo alguns gratuitos e código aberto (como o Linux e o Android) e outros pagos (uC/OS-II e III, WindRiver VxWorks e Linux, QNX e Windows Embedded 7).

O diagrama do fluxo de desenvolvimento de um programa para o sistema SoC pode ser visto na figura 3. O desenvolvimento tem como ponto de partida os arquivos gerados pelo Quartus II com as informações de quais periféricos estão sendo usados e em que pinos estes periféricos estão usando no FPGA (os pinos que estão efetivamente conectados na placa), para que o software possa configurar corretamente os registradores do HPS de modo que estes pinos sejam conectados aos periféricos de forma correta, e o arquivo gerado pela ferramenta de integração de sistema, o Qsys, com a informação de quais periféricos adicionais foram incluidos ao HPS no circuito do FPGA. Para o desenvolvimento de sistemas baseados em Linux (o mais comum atualmente), o arquivo com as informações de periféricos e pinos usados é usado para gerar o pre-loader, um programa simples, que deve rodar antes do sistema operacional ser carregado, e que configura o HPS para que possa acessar o U-Boot, o boot loader, e carregar a partir deste programa a imagem do sistema operacional, e o arquivo gerado pelo Qsys é usado para gerar um novo DTB (Device Tree Blob), arquivo com a descrição dos periféricos presentes no sistema e que permite ao Linux não precisar de uma nova compilação do kernel para incluir os drivers dos dispositivos presentes no sistema.

Para tornar a vida dos desenvolvedores de sistemas baseados em Linux mais fácil, a Altera criou um layer específico para os dispositivos SoC da Altera no projeto no Yocto (3). O projeto Yocto é um sistema de código aberto que permite a criação, de forma simples, usando um conjunto de regras bem definidas (os layers), de uma distribuição de Linux configurada de acordo com as necessidades do usuário. Este conjuto de regras e as ferramentas para usar estas regras e criar uma versão customizada de Linux pode ser baixada diretamente do site da Altera (4). Todas as ferramentas para desenvolvimento de sistemas de Linux embarcado baseadas no projeto Yocto são gratuitas e de código aberto, e fáceis de serem usadas. Com o uso do DTB, é possível, inclusive, alterar e reconfigurar o conjunto de periféricos implementado no circuito do FPGA de forma dinâmica, com o processador em operação, e sem precisar fazer uma nova carga do sistema operacional, o que viabiliza o desenvolvimento de aplicações onde os sitema operacional não pode parar mas o circuito em uso no FPGA precisa ser trocado de forma dinâmica.

Os passos necessários para desenvolver um projeto de software baseado em Linux, para um sistema SoC da Altera são:

Principais aplicações

São inúmeras as aplicações para os dispositivos SoC da Altera, incluindo:

Na área médica, produtos que precisem do alto desempenho disponível nos dispositivos SoC, tais como equipamentos portáteis (Ultrassom, monitores paramétricos, bombas de infusão), sistemas de raios-X, sistemas de comunicação entre pacientes e médicos, etc…

Na área industrial, sistemas de controle menores e mais eficientes, PLCs com alto desempenho, sistemas de controle que utilizam protocolos industriais baseados em Ethernet (EtherCAT, Modbus TCP/IP, EtherNet IP, PROFIBUS DP, Ethernet PowerLink e Profinet RT/IRT), inversores para sistemas baseados em energia solar, drivers para motores (Driver-on-a-Chip) e sistemas de segurança.

Na área de telecomunicações, pode ser usado em equipamentos tais como switches, roteadores, modems e afins.

Em broadcast podem ser usados para desenvolver moduladores, retransmissores, gap fillers e links de micro-ondas. Podem ainda ser usados para implementar sistemas de processamento de imagens, tais como sistemas de conversão entre vídeos de padrões e resoluçõo diferentes, filtros de imagens, inserção de caracteres e similares.

Em aplicações comerciais, podem ser usados como o processador principal de ATM e POS, além de permitir a implementação completa de impressoras fiscais e relógio de ponto eletrônico.

Outras aplicações desenvolvidas com estes dispositivos são sonares portáteis para uso em embarcações, ultrassom portátil para aplicações industriais e sistemas de Software Defined Radio.

Conclusão

Com o lançamento dos dispositivos SoC da Altera, hoje é possível desenvolver sistemas embarcados com a alta capacidade de processamento oferecida por um processador ARM de alto desempenho (Cortex-A9 dual-core), e a flexibilidade, alto desempenho em processamento digital de sinal e configurabilidade de um FPGA em um único dispositivo, permitindo assim o desenvolvimento de produtos de baixo consumo, elevado desempenho e tamanho reduzido, abrindo novos mercados para empresas que venham a desenvolver usando esta nova tecnologia.

Referências

(1) : http://www.altera.com/devices/fpga/cyclone-v-fpgas/overview/cyv-overview.html

(2) : http://www.altera.com/devices/fpga/cyclone-v-fpgas/overview/cyv-overview.html

(3)http://www.yoctoproject.org/

(4)https://www.altera.com/download/software/soc-eds

(*) esse post foi patrocinado pela MACNICA