2 Comentários

MiniZed – Um ARM+FPGA para IoT

A Xilinx foi a pioneira no mundo das FPGAs, tendo sido a primeira empresa a criar a tecnologia, iniciando uma tendência que segue, e aumenta, até os dias atuais. Com o advento de modernas tecnologias, as FPGAs passaram a incorporar processadores nos chips, caracterizando as FPGAs "SoC" (System-On-Chip). Todavia, ainda eram sistemas muito caros... Até agora: A Avnet, juntamente com a Xilinx e demais empresas parceiras, lançaram a MiniZed - placa que incorpora uma FPGA SoC com conectividade WiFi e Bluetooth com vistas em aplicações para Internet das Coisas, com um preço muito mais acessível que demais soluções semelhantes no mercado. Já dando um spoiler - Essa belezinha está disponível por US$ 89.00.
 
Inicialmente quero publicamente agradecer à Avnet Brasil pelo kit da MiniZed enviado a mim!
 
Se você não sabe o que são as FPGAs, recomendo que tire um pouco do seu tempo para ler e estudar a respeito, pois são uma linha de chips com uma arquitetura elegantemente magnífica, com adoção cada vez mais crescente, dadas as peculiaridades de sua estrutura. Como se não bastasse, os principais players do mercado de FPGAs - Altera e Xilinx - começaram com a adoção das chamadas FPGA SoC, que é uma linha de chips que além de possuírem uma parte FPGA, também possuem microprocessadores ARM (até o momento) embutidos.
 
 

Unboxing da Placa

A caixa da MiniZed é pequena, simples e prática, como mostrado na Figura 1. E abrindo a caixa vemos que vem a placa, cabo micro-USB e alguns panfletos sobre cuidados e segurança e detalhes sobre a placa, que eu mostro na Figura 2. Um dos documentos (Resumo do Produto) está disponível neste link caso você já queira ir dando uma olhada.

Caixa da Avnet MiniZed.
Figura 1 - Caixa da Avnet MiniZed.

A placa vem bem protegida, acobertada em saco antiestático e dormindo em berço esplêndido de duas camadas de espumas (que não aparecem na Figura 2). Ela já vem com o essencial pra funcionar (que é o cabo microUSB para comunicação e alimentação elétrica). Os demais guias orientam detalhes sobre a placa e informações de primeiros passos.

Caixa, placa, documentos e cabo microUSB da MiniZed.
Figura 2 - Caixa, placa, documentos e cabo microUSB da MiniZed.

Ela é bem pequena, medindo cerca de 7.2 cm por 7.5 cm, um formato quase quadrado mesmo, como pode ser visto na Figura 3. De cara, aos mais ambientados no mundo de Embarcados, é possível perceber a presença dos conectores padrão Arduino UNO R3, juntamente com algumas USBs e dois conectores PMOD.

O foco da MiniZed é ser uma linha de entrada para a galera entusiasta (a.k.a. Makers) no mundo das FPGAs (SoC) e IoT. Por isso o tamanho bem reduzido e a presença dos conectores Arduino UNO R3, que permitem a compatibilidade com shields e acessórios de Arduino.

Vista da parte Superior da MiniZed.
Figura 3 - Vista da parte Superior da MiniZed.

Todos os componentes da MiniZed estão presentes na face superior da placa. Na face inferior, como visto na Figura 4, estão os tradicionais pontos de solda dos conectores e terminais de seus muitos componentes, além de bases de borracha (muito bem colocadas por sinal).

Vista da parte inferior da MiniZed.
Figura 4 - Vista da parte inferior da MiniZed.

Se você achou a placa interessante, saiba que ela possui esquemáticos e BOM (Bill Of Materials - lista de materiais) aberta, com documentos disponíveis na parte de documentação da MiniZed na página ZedBoard! Dessa forma, empresas interessadas no layout e na forma como a MiniZed foi arquitetada podem fazer suas próprias versões adaptadas.

Bom, falei que ela possui conectores no padrão Arduino UNO R3. Vamos ver os dois lado a lado? Na Figura 5 coloquei uma foto das duas, e veja que a MiniZed é pouca coisa maior que um Arduino UNO (eu diria que ela é mais "larga").

Avnet MiniZed lado a lado com Arduino UNO R3
Figura 5 - Avnet MiniZed lado a lado com Arduino UNO R3

A grande diferença entre ambos é que o Arduino UNO R3 contém um humilde microcontrolador ATmega328p, enquanto que a MiniZed possui uma FPGA estado-da-arte Zynq 7Z007S.

 

Sobre a MiniZed

Agora que mostrei algumas imagens, vamos falar tecnicamente sobre a MiniZed, estrela deste artigo.

O coração da MiniZed é o Xilinx Zynq 7Z007S, uma FPGA com um processador ARM Cortex-A9 capaz de operar até 766 MHz, com uma área de FPGA equivalente à 3a maior FPGA Spartan-7 da Xilinx (cerca de 23 mil células lógicas).

Para vocês entenderem mais ou menos como é a divisão das coisas dentro do chip, a Figura 6 dá uma "noção" da coisa. Temos em "azul" (ou seria banco/cinza?) a parte do Sistema de Processamento, que possui o processador ARM, interface com controladores de Memória e com periféricos em geral. E em amarelo (certeza que é amarelo!), a parte de lógica programável que... está aberta à imaginação o que pode ser feito nessa parte 😉

Esquemático interno da Zynq série 7000
Figura 6 - Esquemático interno da Zynq série 7000. Fonte: xilinx.com

E entre os dois mundos, de lógica programável e de processamento, há interfaces de comunicação e interconexões que permitem os dois mundos falarem entre si.

Em outras palavras, isso permite você arquitetar um sistema capaz de executar um sistema operacional com área de chip dedicada a isso (no caso, a parte do processador ARM), ao mesmo tempo que tem uma "memória lógica" para projetar sistemas de controle, processamento digital de sinais, dentre outros, numa abordagem de "co-processamento" frente ao seu processador principal, por exemplo.

Essa abordagem de operação pode ser mostrada na Figura 7, onde uma entrada de dados pode ser processada por aplicações no sistema de processamento (ARM), e ter intercâmbio de dados e instruções com a parte de lógica programável.

Operação híbrida com Processador e Lógica Programável na Zynq
Figura 7 - Operação híbrida com Processador e Lógica Programável na Zynq. Fonte: http://xilinx.com

Pelo fato de o Zynq ter um processador ARM, ele pode executar um sistema operacional Linux. Agora, vamos supor que você esteja projetando uma aplicação que exigirá processamento de áudio ou de vídeo. A parte do sistema Linux, em ARM, pode cuidar de enviar/receber os dados de canais multimídia (microfone, câmera, etc) e comunicar com rede WiFi/Bluetooth, dentre outros. E a parte de processamento de sinais pode ser alocada à FPGA, que fará isso, muito provavelmente, mais rápido e melhor que a CPU ARM.

Essa abordagem de processamento híbrido/assimétrico não é fácil de ser projetada e demanda bastante esforço para acertar a operação entre as partes envolvidas, no caso, CPU ARM e FPGA. Todavia, esse esforço é recompensado pela criação de sistemas mais dinâmicos, que consomem menos energia e que usam melhor seus recursos.

Ainda na onda do "tudo-em-um", as FPGAs Xilinx Zynq série 7000 também incluem conversor analógico-digital integrado no chip, chamado de XADC, e que pode ser facilmente referenciado nos designs de lógica digital com a FPGA, como também possuem um subsistema de criptografia. Ficou interessado? A documentação toda da FPGA possui cerca de 1845 páginas e está disponível neste link.

Agora, vamos aos detalhes da MiniZed:

Conectividade onboard usando módulo Murata "Type 1DX" Wireless que provê:
   - Wi-Fi 802.11b/g/n;
   - Bluetooth 4.1 mais EDR e BLE (Bluetooth Low Energy).

Memória on-board da Micron:
   - 512 MB de memória RAM DDR3L;
   - 128 Mb de memória Flash QSPI;
   - 8 GB de memória Flash eMMC.

Suporte a conexões de periféricos:
   - Dois conectores PMOD (16 GPIOs);
   - Conectores padrão Arduino UNO R3 (22 GPIOs);
   - Interface USB Host 2.0.

Interfaces de Usuário:
   - Dois LEDs bicolores;
   - Push Button de Usuário;
   - Botão de Reset;
   - Switch de Seleção de Boot.

Fonte de alimentação integrada da Analog - Gera todas as tensões de operação on-board. Um cabo microUSB auxiliar pode ser usado para alimentar designs (ou usos) da placa que demandem mais energia.

Sensors On-board MEMs da STMicro:
   - Sensor de movimento e de temperatura LIS2DS12;
   - Microfone Digital MP34DT05;

A MiniZed já possui circuito de JTAG incorporado na placa. E a integração é tamanha que apenas um cabo microUSB é necessário para alimentar, programar, fazer emulação JTAG e debug de console serial (do Linux).

Para saber o que é cada coisa com base na placa, observe a Figura 8, onde há uma imagem da MiniZed e legendas indicando qual é qual componente (botão, memória, USB, LED, etc). Percebe-se que colocaram muita coisa em pouco espaço! Ela é realmente uma maravilha da tecnologia moderna.

Placa com destaque para componentes e suas legendas
Figura 8 - Placa com destaque para componentes e suas legendas. Fonte: http://zedboard.org

E para sanar a curiosidade mais baixo-nível da "coisa", coloquei também o esquemático de componentes, mostrado na Figura 9, que destaca informações como trilhas, barramentos e sinais envolvidos entre as interfaces dos componentes presentes na placa com a FPGA Zynq. Alguns detalhes estão mais evidentes, outros precisam daquela olhada mais atenta na documentação 😉

Esquemático de componentes da MiniZed
Figura 9 - Esquemático de componentes da MiniZed. Fonte: zedboard.org

Ok. Você viu que roda Linux, que dá pra programar a parte de lógica programável, beleza. Mas como faz? Vamos ver sobre isso adiante.

Uso e Desenvolvimento

De cara, a MiniZed vem com Linux PetaLinux gravado na memória QSPI de 128Mbit (modo nerd de dizer que é uma memória de 16 MBytes). Aí dá pra ter noção de quão enxugado o Linux em operação nessa placa pode ser.

O Linux PetaLinux é uma espécie de Linux Embarcado criado pela ferramenta PetaLinux Tools da Xilinx. Essa ferramenta só funciona em ambiente Linux (não há versão Windows). Em resumo, é a ferramenta para se aventurar em BSPs (Pacotes de Suporte pra Placa - Board Support Package) para hardwares Xilinx, pois ela é capaz de lidar com todos os componentes necessários para a operação da placa a nível de software (bootloader, Kernel, drivers, sistema de arquivos, etc).

Ah, mas e a memória de 8 GB eMMC? Para usar essa memória é preciso desempenhar alguns comandos a mais mostrados no Guia de Primeiros Passos.

Esse "Guia de Primeiros Passos" é o melhor amigo de quem está pegando a placa pela primeira vez. Mostra alguns comandos Linux, ensina a configurar rede WiFi, conexão Bluetooth, lidar com I2C e GPIO, dentre outras coisas, como também ensina a expandir o acesso à memória eMMC, como mostrado acima.

Já apresentada em figuras anteriores, você deve ter reparado que a MiniZed possui 2 conectores microUSB. Com base na foto da Figura 10, a porta microUSB ao lado da USB Host é a multifunção: fornece energia, console UART e JTAG. E a porta microUSB ao lado desta microUSB (que por sua vez é a microUSB próxima ao botão azul) é somente para energia.

Levando em conta a observação sobre o uso de 2 USBs para dar mais "energia" na placa, eu costumo usar a minha MiniZed com as duas portas USB conectadas no meu PC. Todavia, não percebi nenhum problema quando usei só a USB de UART/JTAG para alimentação.

Avnet MiniZed com 2 cabos Micro-USB para operação.
Figura 10 - Avnet MiniZed com 2 cabos Micro-USB para operação.

Bom, se você conectar uma porta USB do seu computador à porta microUSB multifunção da MiniZed, irá perceber que seu computador vai gerar uma porta serial, e essa porta serial permite comunicar com o console do sistema Linux (PetaLinux) em operação na MiniZed. Na Figura 11 eu mostro uma parte do console do PetaLinux após ter dado login como root, e disparado o comando "cat /proc/cpuinfo", que mostra informações da CPU.

Linux PetaLinux em ação na MiniZed.
Figura 11 - Linux PetaLinux em ação na MiniZed.

Para realmente desenvolver toda sorte de aplicações para a MiniZed, você irá precisar das seguintes ferramentas da Xilinx (Xilinx Tools):

Já vou adiantando que isso vai resultar em uns bons GBs a menos no seu disco rígido, rsrsrs!

Para entender como todo mundo se encaixa e fica tudo junto e misturado, veja a Figura 12, e com base nessa figura, vou explicar as seguintes partes:

  • Hardware Design - Usando o Vivado, é o que arquiteta a parte da Lógica Programável (FPGA) e as conexões e interfaces com o mundo real e/ou unidade processadora (CPU). Com Vivado você pode arquitetar elementos de lógica programável usando VHDL e Verilog.
  • Desenvolvimento de Aplicação (Application Development) - Pega as referências de interfaces e componentes geradas pelo Vivado e é capaz de compilar códigos em C/C++ para execução em ambiente Linux. Ou seja, você cria aplicações em Linux capazes de executar recursos criados em FPGA!
  • Desenvolvimento de Softwares de Sistema (System Software Development) - É a parte de arquitetar o sistema Linux, com bootloader, sistema de arquivos, device-tree referenciando drivers do núcleo ARM ou drivers personalizados com IP FPGA, dentre outros. Com a SDK, gera imagem de boot e demais arquivos que são gravados na FPGA para boot e execução do sistema!
Workflow de Desenvolvimento Xilinx
Figura 12 - Workflow de Desenvolvimento Xilinx. Fonte: http://xilinx.com

O arquivo final do workflow de desenvolvimento com Xilinx pode ser um arquivo com extensão .bin, .elf, depende do cenário que você estiver trabalhando.

Lembra que eu falei agora há pouco que toda essa "arte" pode consumir uns bons gigabytes, certo? A título de exemplo, quando fui instalar o Vivado Design Suite no meu computador, foram cerca de 30 GB!

Detalhe para "pequena" instalação do Vivado.
Figura 13 - Detalhe para "pequena" instalação do Vivado.

Por fim ao desenvolvimento, cito o SDSoC, um ambiente de desenvolvimento adicional (baseado em Eclipse também) que facilita a integração entre aplicações na unidade processadora e designs implementados na FPGA. Você pode desenvolver aplicações semelhantes usando o Vivado e Xilinx SDK, mas com a SDSoC você já recebe de bandeja várias bibliotecas e exemplos de integração, como pode ser visto neste link. O SDSoC é pago e tem um período de experimentação de 30 dias.

Suporte

O pessoal da Avnet não está medindo esforços no que tange ao suporte para a MiniZed. Dentro do portal ZedBoard.org, que reúne informações de outras placas/plataformas da família Zynq Série 7000, é possível encontrar bastante documentação de suporte e até mesmo tutoriais voltados para a MiniZed, além de um fórum de suporte ao desenvolvimento também.

Para documentação e suporte em geral, esta é a página onde você encontrará esquemáticos, guia de início rápido, guia de primeiros passos (sagrado), guia de usuário de hardware e como recuperar a imagem de fábrica, dentre outros documentos.

Para primeiros passos com desenvolvimento, há uma página que eu achei sensacional: Tutoriais de Referência para Design. Numa sequência de tutoriais, o usuário desenvolvedor de MiniZed será guiado em atividades para conhecer e extrair gradativamente o máximo da MiniZed usando as ferramentas de desenvolvimento da Xilinx. Além dos tutoriais, há guias de desenvolvimento em ambiente Linux, download de demais arquivos de desenvolvimento e referências de design. O único ponto a ser observado é que para o download dos itens nessa página é preciso estar logado na página ZedBoard.org (o cadastro é gratuito).

E na linha das FPGAs Xilinx Zynq Série 7000, há uma série de artigos chamados de "The MicroZed Chronicles" disponíveis neste link. A despeito de serem para "MicroZed", muitos dos conceitos trabalhados servem perfeitamente para a MiniZed. São mais de 150 artigos!

E pra finalizar, falo do livro "The Zynq Book", já apresentado aqui no Embarcados neste artigo do Thiago Lima.

Vídeo-Review

Pouco depois de ter recebido a placa, fiz esse vídeo-review com unboxing, comentários e detalhes sobre a placa. Veja abaixo!

 

Considerações Finais

Por US$ 89.00 a placa é uma pechincha para o que oferece de forma agregada. Acredite, outras opções semelhantes são bem mais caras. Se eu não tivesse recebido ela da Avnet, eu já estaria com o cartão de crédito na mão para comprar uma unidade, pois ela é o estado-da-arte em termos de sistemas embarcados e processamento assimétrico com processador e FPGA, além de ter aplicação em Internet das Coisas.

Todavia, não é uma plataforma para leigos em sistemas embarcados. Para usar bem a MiniZed, você precisa estar familiarizado com Linux Embarcado e FPGAs. Não entenda "dominar", mas estar familiarizado, ok? Caso contrário, ficará bem confundido com a enxurrada de termos e expressões que aparecem nos documentos de suporte e desenvolvimento. Além de que a MiniZed não tem saída para interface gráfica, assim, você usará ela em modo texto/console, então esteja também familiarizado com comandos e estruturas de um sistema Linux.

Você pode argumentar que uma Raspberry Pi custa lá seus US$ 35.00, mas espera lá, temos focos diferentes aqui. Se sua aplicação não depende ou não fará diferença frente aos recursos que uma FPGA pode oferecer, tudo bem. Mas cada vez mais aplicações demandam recursos computacionais avançados e essa área (FPGA) ganha cada vez mais destaque. A título de exemplo temos aplicações que fazem uso de recursos de visão computacional, processamento de voz, aprendizado de máquina, redes neurais, dentre outros, que podem extrair muito bem os recursos que as FPGAs oferecem. E ter uma FPGA em um mesmo chip que um processador, ocupa menos espaço e leva a uma menor complexidade no layout e projeto de sistemas embarcados.

 
 
E então, o que achou? Deixe seus comentários!
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Hardware » MiniZed - Um ARM+FPGA para IoT
Comentários:
Notificações
Notificar
guest
2 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Luiz Henrique Rocha Marinho
Luiz Henrique Rocha Marinho
29/10/2019 00:09

muito obrigado! vai me ajudar bastante no meu TCC

Helio Coragem
Helio Coragem
15/01/2018 14:33

Ótimo artigo, mostrou bem o potencial da "plaquinha". Aguardo outro artigo mostrando ela em ação.

Talvez você goste:

Séries

Menu

WEBINAR
 
Sensores e soluções para aplicações em indústria inteligente

Data: 13/08 às 15:00h - Apoio: STMicroelectronics
 
INSCREVA-SE AGORA »



 
close-link