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

Zybo-board-01
Figura 1 – uma visão geral da  Zybo board

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:

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.

Zybo-board-02
Figura 2 – comparação do tamanho da placa com o 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).

Zybo-board-03
Figura 3 – Zybo board com PMOD para conversor D/A

Outros projetos que achei na internet que exploram mais características da placa são listados abaixo:

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!