1 Comentário

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.

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.

Hardware » Lattice iCEstick iCE40 - Um FPGA para chamar de seu
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

WEBINAR
 
RISC-V:
Novidades de 2020

 

Data: 26/08 às 19:30h - Apoio: Mouser Elecctronics
 
INSCREVA-SE AGORA »



 
close-link