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.

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:

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.
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.
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.

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.

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.
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.

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.

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.










Excelente artigo.