Lattice iCEstick iCE40 - Um FPGA para chamar de seu

Lattice iCEstick iCE40

FPGAs são chips que há já um tempo trazem fascínio aos entusiastas de computação mais "baixo-nível", por se tratarem de componentes que permitem uma programação a nível de portas lógicas, o que por sua vez abre "portas" para a criação de toda sorte de sistemas e arquiteturas. Porém... FPGAs normalmente são chips mais caros que meros microcontroladores, e Kits de desenvolvimento facilmente ultrapassam a casa de mil reais.  Mas há alternativas mais acessíveis no mercado, e uma delas que quero apresentar agora é a Lattice iCEstick, disponível em fornecedores por cerca de US$ 21.33. 

 

FPGA Lattice iCEstick iCE40.
Figura 1 - FPGA Lattice iCEstick iCE40.

 

Inicialmente quero agradecer ao Sr. Rubens Horita, Regional Technical Director da Future Electronics do Brasil Ltda, por ter me enviado uma Lattice iCEstick para avaliação.

 

A Lattice iCEstick iCE40 já apareceu aqui no Embarcados em um artigo do André Prado, que tratou sobre usos e aplicações das FPGAs como potenciais substitutas de microcontroladores.

 

Por hora, vamos falar da placa e do que ela pode oferecer.

 

A Placa Lattice iCEstick iCE40 

 

Uma das coisas que mais chama a atenção é o tamanho. Pequena e bem compacta, com o essencial para usar e desenvolver com a FPGA iCEstick. Para os mais "antigos" de plantão, seu tamanho lembra o dos primeiros tocadores de MP3 USB.

 

Veja, por exemplo, como fica a ICEstick conectada à porta USB de um notebook:

 

Lattice iCEstick iCE40
Figura 2 - FPGA ICEstick conectada a um computador.

 

Bem pequena, não é? E mesmo sendo um "pouco" comprida, a placa se mantém rígida na conexão.

 

Fazendo um apanhado geral, vejamos as características da ICEstick:

  • Forma de pendrive USB;
  • FPGA Lattice iCE40HX-1k;
  • Conector Digilent Pmod de 2x6 pinos para conexão com outros periféricos;
  • Módulo USB FTDI 2232H, que permite a programação da FPGA e interface UART com PC via USB;
  • Transceiver IrDA Vishay TFDU4101;
  • 5 LEDs programáveis;
  • Oscilador MEMs de 12 MHz Discera;
  • Memória SPI Flash de 32 Mbit Micron N25Q32;
  • Fornecimento de energia pela porta USB;
  • 16 sinais GPIO LVCMOS/LVTTL de 3.3V em conectores com espaçamento 0.1".

 

É bastante coisa em bem pouco espaço.

 

Para dar um entendimento de onde cada um desses itens está na placa, veja a Figura 3, com destaques para cada elemento.

 

Lattice iCEstick iCE40
Figura 3 - ICEstick com legenda dos componentes. Fonte: https://www.eetimes.com

 

Itens e itens à parte, o coração da placa mesmo é a FPGA. Vamos falar sobre ela!

 

O coração da ICEstick - iCE40HX-1k

 

No coração da ICEstick está a iCE40HX-1k. Seu código (ou nome) basicamente caracteriza essa FPGA como sendo de Alta Performance (HX), com 1280 células lógicas (1k).

 

Com base no datasheet utilizado como referência para a FPGA iCE40, recortei a tabela mostrada na Figura 4 para dar uma noção dos modelos da família e suas características.

 

Figura 4 - Tabela de partnumbers e suas características da família iCE. Fonte: www.latticesemi.com

 

1280 células lógicas é a quantidade de "memória lógica" que a FPGA possui, ou seja, seu espaço de recursos para a síntese de circuitos lógicos a serem desempenhados pelo chip.

 

Pode parecer pouco, mas é uma quantidade razoável para uma boa sorte de aplicações de suporte e lógica de controle. E para quem está começando, é um prato cheio!

 

No que tenho entendido mais sobre a linha iCE40, vejo essas FPGAs como potencialmente aplicáveis no que chamamos de "glue-logic" - módulos e componentes responsáveis por fazer a interface entre partes diferentes de um sistema, por isso o nome de "lógica de cola", numa tentativa frustrada de traduzir o termo. Outras aplicações também podem ser monitoramento de fontes de alimentação e sensores, por exemplo, o que também vai na linha de uma lógica de suporte.

 

Uma vantagem das FPGAs mais modernas é a presença de recursos adicionais à parte lógica já integrados no chip, tais como PLL, bancos de memória RAM, e no caso da iCE40 até mesmo controlador SPI.

Lattice iCEstick iCE40
Figura 5 - Estrutura da FPGA Lattice ICE40. Fonte: www.latticesemi.com

 

A presença de mais recursos nativos tira o peso de ter que implementar tais funcionalidades usando parte das células lógicas disponíveis.

 

Desenvolvimento com a iCEstick

 

O desenvolvimento com a FPGA iCEstick iCE40 pode ser realizado com as ferramentas iCEcube2™ e Diamond Programmer. O iCEcube2, mostrado na Figura 6, é a ferramenta oficial da Lattice para a família iCE40. Você consegue ter um registro gratuito dessa ferramenta, bastando fazer um cadastro com um login no site da Lattice e um MAC do computador de desenvolvimento neste link.

 

Lattice iCEstick iCE40
Figura 6 - Tela da ferramenta de desenvolvimento iCEcube2.

 

O iCEcube2 não é uma ferramenta "bonita", tanto é que o editor de código nem dispõe do famoso recurso de destaque de sintaxe, que basicamente aplica cores em palavras reservadas da linguagem, dentre outras funcionalidades. O editor de código-fonte da ferramenta é bem básico, o que requer mais atenção ao código desenvolvido.

 

Fora isso, o iCEcube2 é quem sintetiza e posiciona os recursos na FPGA com base nos sinais de I/O que foram mapeados, gerando assim o bitstream a ser gravado no chip. Essa gravação, por sua vez, é feita pelo Diamond Programmer, capaz de programar a memória SPI presente na iCEstick para que a FPGA seja automaticamente carregada com a lógica toda vez que for ligada.

 

E fornecendo um mapa mais detalhado da Lattice iCEstick iCE40, segue a imagem da Figura 7, que informa inclusive os sinais da FPGA em que cada componente está conectado, o que é importante no processo de Place and Route.

 

Lattice iCEstick iCE40
Figura 7 - iCEstick iCE40 com destaque aos componentes. Fonte: http://www.pighixxx.net/portfolio-items/icestick/

 

No site da Lattice iCEstick também é possível baixar alguns projetos com códigos-fonte (em VHDL ou Verilog) disponíveis, seja para aprender, seja para começar um projeto novo a partir deles, por exemplo.

 

Lattice iCEstick iCE40
Exemplos de projetos com códigos-fonte disponíveis para iCEstick. Fonte: https://www.latticesemi.com/icestick

 

E a "cereja" do bolo com relação à iCEstick iCE40 eu deixei para o final. Veja só!

 

Ecossistema Opensource

 

Um ponto muito positivo com relação às FPGAs da Lattice da família iCE40 é que conseguiram fazer uma engenharia reversa do formato de bitstream utilizado para programação da FPGA, algo que normalmente os fabricantes de FPGA deixam como proprietário e bem guardado, forçando os desenvolvedores a usarem somente as ferramentas dos fabricantes.

 

Com essa "engenharia reversa" surgiram ferramentas opensource para gravação das FPGAs Lattice iCE40, como o caso das ferramentas fornecidas pelo Project IceStorm, que tornam possível sintetizar código Verilog para FPGA iCE40, fazer a alocação e roteamento de recursos (place and route) e a gravação, propriamente.

 

Dessa forma, você consegue compilar as ferramentas para plataformas ARM, como o exemplo abaixo que mostra uma iCEstick sendo programada por uma SBC da Toradex rodando Linux Embarcado, com tutorial disponível no AntMicro.

 

FPGA Lattice ICEstick ICE40 com placa da Toradex. Fonte: http://antmicro.com

 

Gostou da Lattice iCEstick? Há formas práticas de obter a placa no Brasil através de distribuidores, considerando por exemplo a compra de várias unidades para aproveitar o custo de frete e os impostos também. No mais, deixe aqui seus comentários! Abraço, e até mais.

 

NEWSLETTER

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

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

André Curvello
Graduado em Engenharia de Computação com ênfase em Sistemas Embarcados pela USP, campus São Carlos, possui MBA em gestão de TI pela UNIFRAN e Mestrado em Ciências pela EESC-USP. Atua como Team Leader na PST Electronics - Pósitron, sendo também professor de pós-graduação e instrutor de cursos na área de sistemas embarcados. Como hobby, gosta de programar tudo que pode ser programado, escovando bits sempre ao lado de um bom café. Gosta de compartilhar seu conhecimento por meio de palestras, e publicando artigos como colaborador dos sites Embarcados e FilipeFlop. Em 2018 foi premiado como Microsoft Most Valuable Professional em Azure IoT pela Microsoft.

1
Deixe um comentário

avatar
 
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
Neuber Jose de Sousa Sousa Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Neuber Jose de Sousa Sousa
Visitante
NEUBER JOSE DE SOUSA

Excelente artigo.