André Castelan
"Em teoria não há diferença entre a pratica e a teoria, já na pratica..."

sábado, 15 de junho de 2013

Kits de desenvolvimento

Na minha opinião o melhor jeito de se aprender algo é botando a mão na massa! E quando se trata de FPGA não há nada mais indicado do que a compra de um Kit para iniciar a aventura!

Existem diversos kits de FPGA com muitas características diferentes como por exemplo: tipos de interface, capacidade de lógica, memória, preços e etc. Vou analisar os kits com a FPGA de entrada da Altera(Cyclone) pois possuem o melhor custo-beneficio e são as mais indicadas para iniciantes, mas não se engane, elas são bem poderosas e utilizadas em muitos produtos de alto valor agregado. Vou me limitar a analisar os que já utilizei.


BeMicro SDK (link) USD 79:


Eu possuo um destes, é comercializado pela Arrow e tem como objetivo familiarizar o usuário com a programação em C para o processador softcore NIOS2 da Altera, é um dos mais baratos e de melhores CxB possui interface ethernet, microsd, botões, leds, uma memória LPDDR de 512MB e etc.

Ele já vem de fábrica com um design em flash, este design possui um NIOS2 conectado a todos os periféricos do kit, achei chato de achar os arquivos de hardware dele como por exemplo onde estão conectados os pinos da FPGA algo básico para quem quer desenvolver em VHDL com este kit. Mas o objetivo da Arrow é mesmo abstrair o design do hardware em VHDL e entregar uma solução pronta onde o usuário só programe o NIOS2. Claro que é possível desenvolver VHDL com este kit, se alguém quiser os arquivos de hardware dele, como a pinagem por exemplo, e não conseguir achar no google me coloco a disposição! 
Uma coisa chata deste kit também é a LPDDR que ele possui, é necessário ir no site do fabricante e pedir uma licença de uso quando quiser sintetizar o VHDL dela, é um processo burocrático e chato. A FPGA é uma Cyclone IV bem atual com 22K de elementos lógicos o que é um número muito bom, é possível por exemplo colocar um NIOS2 com MMU para rodar o Linux embarcado, um Mac para utilizar a ethernet e muito mais. Aqui um link no forum da Altera do pessoal utilizando VHDL no kit.

O que tem de bom:
  • Preço;
  • Alimentado pela USB;
  • Interface Ethernet;
  • Interface micro Sd Card;
  • LPDDR de 512MB;
  • 80 pinos de GPIO.

O que tem de ruim:
  • Focado para desenvolvedores de software para o NIOS2;
  • Dificuldade de se achar material sobre o hardware da placa que é necessário para o desenvolvimento em VHDL;
  • Burocracia para se utilizar a LPDDR em designs próprios na placa.

DE0 Nano (link) USD 79:


Já ministrei um treinamento baseado neste kit, ele possui acelerômetro, dois headers para GPIOs, 32 MB de SDRAM o que é mais que o suficiente para se portar um Linux, botões, dipswitches, leds e etc. O FPGA é o mesmo da BeMicro SDK (Cyclone IV com 22k de lógica).
Minha unica reclamação quanto a este kit é a falta de uma interface ethernet (claro que nada te impede de colocar um phy + um rj45 em um dos GPIOs mas ...). 
É o de melhor custo-benefício se você quiser começar a aprender VHDL e não se importar com a falta de interface ethernet.

DE2 (link) USD 495 :


Este kit talvez seja o que mais tenho intmidade, já desenvolvi diversos projetos com ele. 
Ele possui diversas interfaces, como por exemplo: porta Ethernet (algumas versões possuem duas), Display de 7-segmentos, Audio, Microfone, VGA, SDRAM, SRAM, slot de cartão de memória e etc.
É um dos mais utilizados em universidades e tem MUITOS projetos e MUITO material de aprendizado utilizando este kit como base na internet. As unica desvantagens são: preço, FPGA um pouco velha (Cyclone II com 35k de elementos lógicos) e pouca memória SDRAM (8MB, pouco para embarcar um linux com MMU por exemplo).
Existem algumas versões deste kit com diferentes FPGAs que corrigem estas desvantagens (exceto o preço hehe), por exemplo o DE2-115 que possui uma Cyclone IV de 115k elementos lógicos e 128MB de SDRAM.

DE0 (link) USD 119:


É como se fosse uma DE2 capada, não possui muitas das interfaces que a DE2 possui mas mesmo assim conta com VGA, SDRAM de 8MB, display de 7-segmentos, leds, botões, switches, GPIOs e etc. A maior perda em relação a DE2 na minha opinião é a falta de interface ethernet. Mas possui um ótimo custo em reação a DE2. É equipado com uma FPGA Cyclone III de 15000 elementos lógicos.

Independente do kit que você comprar recomendo ler toda a documentação que vier com ele, nos kits Altera é comum um Userguide que posui as instruções básicas de como utilizar o kit bem como todos os pinos da FPGA e onde estão ligados na placa, este documento é muito útil! Também vale apenar estudar os reference designs que rodam algumas aplicações testes com algumas interfaces da placa, um exemplo de reference design é o web server que vem com a DE2, este possui toda a infraestrutura de rede conectada, com um SoC contendo o processador NIOS2 e codigo fonte para ele rodando um servidor web. Basta jogar o .sof que vem com o projeto e testar se está tudo funcionando conforme o manual J

Prototipando um produto em um KIT


Uma outra utilidade do kit, além do aprendizado, é a prototipação de um produto e teste de conceito. 
Para que perder tempo e dinheiro desenvolvendo um hardware que pode não funcionar como o esperado quando você pode comprar um pronto, soldado, testado, com diversas interfaces e a um preço convidativo? 

Normalmente os kits possuem diversos GPIOs onde você pode conectar um hardware qualquer e simular as interfaces do seu produto caso o kit não as tenha por padrão.
É normal empresas comparem Kits que possuem uma FPGA similar a que elas pretendem utilizar, assim já da para ter uma ótima noção se a FPGA tem tamanho o suficiente para o hardware proposto, se o clock que você estava imaginando vai funcionar bem no seu projeto e etc. 
Caso possua o produto pronto e testado em um kit depois é só mandar fazer a placa, se for o mesmo FPGA com as mesmas interfaces e pinagem da até para utilizar o mesmo binário!!! Não é fantástico? Você tem seu produto desenvolvido e testado a um custo muito pequeno.
O codigo em VHDL, se bem escrito, é completamente portável entre FPGAs diferentes então você não vai perder tempo de desenvolvimento por escolher um kit com um FPGA diferente do que você pretende utilizar no seu produto.

Confesso que só tenho experiencia em kits Altera, na verdade a grande maioria da minha experiencia profissional e aprendizado se deu em Altera, só comecei a trabalhar com Xilinx recentemente. Se alguém quiser contribuir com experiencias em kits Xilinx fiquem a vontade! Sei que o equivalente a linha Cyclone da Altera é a Spartan da Xilinx (atualmente estou trabalhando com um Spartan5).

5 comentários:

  1. Decidi aprender FPGA e ARM. E deu nisso: http://187.33.0.151/foswiki/bin/view/MsxArm/WebHome

    O prototipo usa uma Altera DE0 nano conectada em uma STM32F4DISCOVERY (Cortex M4F).

    ResponderExcluir
    Respostas
    1. Que interessante seu projeto Rogerio! Você desenvolveu tudo isso sozinho? O produto que estou desenvolvendo também é um ARM conectado a um FPGA (Spartan 5), como você está comunicando os dois? Aqui estamos utilizando UPP (universal parallel port).

      Vou dar uma lida com mais calma no seu projeto depois,

      Abraço

      Excluir
  2. Ateh agora desenvolvi tudo sozinho mas conforme o projeto amadurecer o meu colega popolony2k me ajudara no desenvolvimento de software. Acho que a parte mais interessante ateh o momento eh integracao do intrepretador LUA rodando no ARM ao computador de 8 bits MSX. (http://187.33.0.151/foswiki/bin/view/MsxArm/MsxArmBasicLua)
    Sobre a interface FPGA/ARM os 2 estao conectados usando o FSMC (Flexible static memory controller) do ARM

    A versao producao do produto esta sendo desenvolvida com Xilinx Spartan 6 tambem. Um preview do PCB: http://187.33.0.151/foswiki/bin/view/MsxArm/MsxArmMainBoard

    ResponderExcluir
  3. Cara, show de bola o seu post! Adorei o blog, vou acompanhar com certeza, sucesso pra vc!

    ResponderExcluir