Há algum tempo atrás foi noticiado aqui no embarcados a nova geração de FPGAs contendo os novos System-on-Chip (SoCs) da Altera e Xilinx. Esta nova geração de FPGAs contém em um único encapsulamento uma parte de lógica programável e um ou mais núcleos dedicados com processador ARM.
As duas líderes do mercado de dispositivos programáveis, Xilinx e Altera, têm lançando suas novas plataformas de desenvolvimento, integrando as placas com os softwares (SDK). Neste artigo irei introduzir um pouco mais sobre a Zybo board da Digilent com o Zynq 7000, SoC da Xilinx que une o melhor de duas plataformas para desenvolvimento embarcado: um ARM-cortex A9 dual core e parte de lógica programável correspondente a 4,400 logic slices.
Zybo board: características gerais
A Zybo board é mais uma placa de desenvolvimento resultado da parceria da Digilent com Xilinx. A placa possui os principais conectores e padrões de conexão para desenvolvimento embarcado. Como introduzido anteriormente, o grande diferencial da placa, do Zynq 7000, é a composição de ARM com FPGA.
O SoC Zynq 7000 caracteriza a placa com:
- 650 MHz dual-core ARM Cortex-A9 processor;
- Memória DDR3;
- Peripheral controllers: SPI, UART, CAN, I2C;
- Lógica programável equivalente a FPGA Artix-7;
- GPIO: 6 pushbuttons, 4 switches, 5 LEDs e 30 I/Os de uso geral (PMOD ports);
- Conversor A/D de 12-bits com 1MSPS;
- Conexão VGA, HDMI, ethernet e USB OTG;
- Slot para cartão micro-SD.
Além de sua poderosa configuração de hardware, outro grande diferencial da placa é a integração com o novo software de desenvolvimento da Xilinx, o Vivado Design Suite, que substitui o ISE, usado nas plataformas de FPGA anteriores. O software Vivado fornece uma grande variedade de IPs para a placa, além de ferramenta para o seu desenvolvimento próprio de módulos.
Vale ressaltar que apesar de placa ser uma plataforma inicial para desenvolvimento com o SoC Zynq 7000, torna-se necessário o projetista possuir vasta experiência com FPGA (desenvolvimento com Verilog/VHDL) e integração de plataformas. Como tendência da área de FPGAs, o desenvolvimento em System Verilog poderá ser um diferencial para o uso da placa.
Como de costume da maioria das placas de desenvolvimento baseadas em FPGA, o tamanho da placa é um pouco grande. A Figura 2 mostra um pequeno comparativo do tamanho da placa quando comparada ao Raspberry Pi 3.
Programando a Zybo board: lógica programável e ARM
Para o desenvolvimento com a Zybo board algumas possibilidades estão disponíveis. O grande diferencial da placa é o uso em conjunto da parte de lógica programável com o ARM, realizando a integração pelo barramento AMBA. Apesar disso, as opções de programar apenas a parte de lógica programável ou o ARM estão disponíveis.
A programação para o ARM está disponível em C, alguns tutoriais na internet estão disponíveis. Vale ressaltar que devido a complexidade da placa e seu poder de processamento, todo codigo por mais simples que seja pode se tornar complicado para implementar devido ao um sistema um pouco complexo.
Para a correspondente programação da parte de lógica programável, o uso de Verilog e System Verilog parecem ser uma boa pedida. Particularmente, minha experiência com placa resume-se a programação da parte de lógica programável até o momento. Estou estudando um pouco sobre a integração com o ARM através do barramento AMBA. Para os interessados sobre a placa existe um ebook free sobre a Zybo, já mencionado aqui no site.
Aplicações e projetos com a Zybo/Zynq 7000
Pesquisando na internet você poderá encontrar os mais diversos com a placa. Fora os tradicionais projetos envolvendo alguma linguagem de descrição de hardware, a placa possibilita a execução de distribuições de Linux e até Ubuntu quando usada com um cartão micro-SD.
Os projetos que pude trabalhar até o momento com a Zybo além dos testes básicos, foram referentes a área processamento de sinais usando Verilog/SV (aplicações de filtros FIR). A característica das conexões GPIO da placa são para possibilitar o encaixe de PMODs, um tipo de adaptador padrão da Digilent. A figura 3 mostra o PMOD DA2 contendo conversor digital analogico (DAC).
Outros projetos que achei na internet que exploram mais características da placa são listados abaixo:
- Rodando distribuição de Linux na Zybo board;
- Criando osciloscópio com a Zybo;
- Meu primeiro projeto em VHDL na Zybo;
- Processamento de imagem/vídeo com a Zybo
A depender da resposta deste artigo e usuários que possam se interessar em como fazer um projeto em HDL no Vivado, um próximo post poderá ser um tutorial em como fazer o primeiro projeto usando Verilog na Zybo ou em qualquer outra FPGA que use o Vivado SDK.
Segue um vídeo com algumas primeiras impressões da placa e uma visão geral.
Vale a pena comprar a Zybo board?
Após uma breve introdução sobre a placa Zybo e o Zynq 7000 a pergunta natural a se fazer é: vale a pena comprar a placa?
Como parte da resposta deve-se salientar qual nível de experiência você tem com ferramentas de desenvolvimento baseadas em FPGA. Para aquelas que possuem conhecimento intermediário/avançado em desenvolvimento com placas FPGAs da Xilinx ou até mesmo Altera, a Zybo board será o próximo passo em desenvolvimento devido a sua integração com o ARM (placas baseadas em SoC). Eu pessoalmente me incluo nesta categoria, tenho aprendido sobre a placa e ferramenta Vivado.
De uma maneira diferente, se você começou a programar em VHDL ou Verilog recentemente e deseja comprar uma placa para brincar a Zybo não será o modelo mais adequado. A placa contém documentação aberta, como o Zynq book e tutoriais, porém possui conceitos um pouco mais complexos e exige certa experiência.
Assim, o veredicto final a respeito da Zybo é que ela se destina a projetistas acostumados a programar em HDL e para projetos que exijam paralelismo, poder de processamento e uma possível integração entre FPGA e microcontrolador. Algumas alternativas para a Zybo, aos que desejam explorar as possibilidades do Zynq 7000 é a Pynq, plataforma baseada no Zynq que suporta Python como linguagem de programação.
Infelizmente não temos nenhum revendedor no Brasil da placa, porém a mesma pode ser comprada no site da Digilent e estudantes podem obter preço educacional.
Estou a disposição de toda comunidade do Embarcados para dúvidas sobre a Zybo board e o Vivado. Espero que o próximo post seja um breve tutorial da programação da lógica programável neste novo SDK!
Olá Eron, existe alguma placa de desenvolvimento de baixo custo para iniciantes n desenvolvimento com FPGAs?
A Altera tem alguma produto equivalente ao Zynq 7000?
Sim Bruno! A Altera recentemente atualizou alguma de suas placas de desenvolvimento FPGA para a linha baseada em SoCs. Um exemplo fica por conta da placa DE2.
https://www.terasic.com.tw/cgi-bin/page/archive.pl?No=30