Submitted by james on Tue, 09/26/2017 - 11:44

Lattice iCEstick allows rapid prototyping of the iCE40 FPGA family with an easy to use USB thumb drive form factor. Lattice iCEstick interfaces directly with a PC vie USB to allow direct device programming Programming the iCEstick is accomplished with the free Lattice iCEcube2 design software for HDL development. Programming the onboard SPI flash is done with the free Lattice Diamond Programmer.

EE Time article



iCEstick in packageiCEstick block diagramiCEstick plugged into USB port

Lattice iCEstick FPGA Evaluation Kit

The one stop place for information on this kit is to learn, buy (there are other sources however – google for them), and get Windows and Linux support. I was contacted by Lattice after my order to see if I needed anything for my evaluation – and I said “support for MacOS.” After the person did research, they replied that there is no way to use the evaluation kit from MacOS/OSX. He was wrong, because there is an open source project known as “Project IceStorm” which had everything I needed online at Project IceStorm supports many operating systems including MacOS. This was the only evaluation kit for which I found an option to use directly from MacOS. I did my work for this evaluation kit from MacOS. Lattice does have free software for Windows and Linux to do the same work, but the license for their synthesis software (Lattice iCEcube2 Software) is available only if you certify that you are not an employee of Cadence Design Systems, Mentor Graphics Corporation, or Magma Design Automation but the programmer is freely available to everyone.


T-bird Signal on iCEstick

Submitted by james on Fri, 09/29/2017 - 20:32


set_io clk_in 21
set_io led_green_out 95
set_io led_red_out0 96
set_io led_red_out1 97
set_io led_red_out2 98
set_io led_red_out3 99


// Tbird Turn Signal; James Reinders
// please use freely, kindly attribute the source
// Verilog

module top (clk_in, led_green_out, led_red_out0, led_red_out1, led_red_out2, led_red_out3);
    input clk_in;
    output led_green_out;
    output led_red_out0;
    output led_red_out1;
    output led_red_out2;
    output led_red_out3;

    reg [23:0] counter;
    // placement comments for LEDs assume the iCEstick
    // is plugged into the left side of my laptop
    assign led_red_out1 = 0; // top
    assign led_red_out3 = 0; // bottom

// James T-bird
//   <<< >>>
// 0 000 000
// 1 001 100
// 2 011 110
// 3 111 111
// right turn >>>
    assign led_red_out2  = counter[23];     // left
    assign led_green_out = &counter[23:22]; // middle
    assign led_red_out0  = &counter[23:21]; // right

// left turn <<<
//    assign led_red_out2  = &counter[23:21]; // left
//    assign led_green_out = &counter[23:22]; // middle
//    assign led_red_out0  = counter[23];     // right

    always @ (posedge clk_in) begin
        counter <= counter + 1;