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 2×6 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.

lattice family ice
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.

lattice icestick toradex
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.

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.

[wpseo_breadcrumb]
Comentários:
Notificações
Notificar
guest
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
Neuber Jose de Sousa Sousa
NEUBER JOSE DE SOUSA
21/01/2019 14:45

Excelente artigo.

Talvez você goste:

Séries

Menu
Privacy Settings saved!
Configurações de Privacidade

Entenda quais dados e informações usamos para ter melhor entrega de conteúdo personalizado para você.

These cookies are necessary for the website to function and cannot be switched off in our systems.

Para usar este site, usamos os seguintes cookies tecnicamente exigidos

  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec

Decline all Services
Accept all Services