This is work in progress!
The iCE40 family of FPGAs by Lattice Semiconductor is quite interesting for beginners:
- Relatively cheap dev boards are available.
 - 1k-8k LUTs is enough to do some some interesting things, even run a soft CPU like the Zylin ZPU or small RISC-V implementations.
 - Lattice's "iCEcube2" design software is freely available.
 - There's an opensource toolchain! Clifford Wolf managed to reverse engineer the bitstream and build up the toolchain. See http://www.clifford.at/icestorm/.
 
References:
The physical constraint file for the iCE40HX8K Breakout board: ice40hx8k.pcf
| Board | FPGA | Package | IO | PLL | Clock | Price | 
|---|---|---|---|---|---|---|
| Nandland Go | iCE40HX-1K | VQ100 | 0 | 30MHz | 60$ | |
| iCEstick | iCE40HX-1K | TQ144 | 1 | 12MHz | 26$ | |
| Olimex iCE40HX1K-EVB | iCE40HX-1K | VQ100 | 1 | 100MHz | 26$ | |
| myStorm board | iCE40HX-4K | 30$ | ||||
| icoBoard | iCE40HX-8K | 130$ | ||||
| Olimex iCE40HX8K-EVB | iCE40HX-8K | CT256 | >80 | 2 | 50$ | |
| iCE40HX8K breakout | iCE40HX-8K | CT256 | ~40 | 2 | 12MHz | 50$ | 
A (incomplete) list is mainatained by Lattice.
Notes:
- The icoBoard is designed as a FPGA based IO board for RaspberryPi. Most notably it has 8MBit of SRAM.
 - The Zylin ZPU requires at about 2.5k logic cells/500 logic tiles so the iCE40HX-1K boards won't suffice for that.
 
Also interesting
- Dipsy sub-5$ UL1K breakout board.
 - UPDuino Lattice iCE40-UP5K UltraPlus FPGA, 5.3k LUTs, 34 GPIO, 8$. (Within the iCE40 family the UP devices stand out because they have DSP blocks, hard SPI/I2C blocks, internal oscillators and 1MBit SRAM. Project Icestorm has experimental support.)
 
The images are taken from [1].
Channel B of the FT2232H has a UART interface that is connectected to bank 0 of the iCE40:
| UART (FTDI Channel B) | Pin | 
|---|---|
RS232_Rx_TTL | 
B12 | 
RS232_Tx_TTL | 
B10 | 
RTSn | 
B13 | 
CTSn | 
A15 | 
DTRn | 
A16 | 
DSRn | 
B14 | 
DCDn | 
B15 | 
Note that RX and TX are from the point of view of the FT2232H.
The board has 16 testpoints.
| TP# | Description | 
|---|---|
| TP1 | 3V3 | 
| TP2 | 1V2 | 
| TP3 | GND | 
| TP4 | VCCIO0 | 
| TP5 | VCCIO0 after pullup | 
| TP6 | PLLVCC0 | 
| TP7 | PLLVCC0 after pullup | 
| TP8 | VCCIO1 | 
| TP9 | VCCIO1 after pullup | 
| TP10 | VCCIO2 | 
| TP11 | VCCIO2 after pullup | 
| TP12 | PLLVCC2 | 
| TP13 | PLLVCC2 after pullup | 
| TP14 | VCCIO3 | 
| TP15 | VCCIO3 after pullup | 
| TP16 | CRESET_B | 
| Component | Datasheet | Description | Package | Price | 
|---|---|---|---|---|
| LatticeSemi iCE40HX-8K CT256 | FPGA, 7'680 logic cells, 128kbit RAM, 206 I/O | 256-LFBGA | 12.78 | |
| FTDI 2232HL | High Speed USB | 64-LQFP | 3.70 | |
| Micron N25Q032A13ESC40 | 32Mb, 3V, Multiple I/O Serial Flash Memory | SO8 | 0.50 | |
| Microchip 93LC56 | 2k 2.5V Microwire Serial EEPROM | SO8 | 0.24 | |
| Linear Technology LT3030 | Dual Linear Regulator | 20-TSSOP | 6.98 | 
TOTAL: $24.20
@todo
See the folder rotary_enc/.
See the folder infrared/.
See the iCE40 sysCLOCK PLL Design and Usage Guide [8].
See the folder uart/.
See the folder dac/.
See the folder adc/.
@TODO
- Atom editor for Mac OS X.
- The linter-verilog Atom plugin uses Icarus Verilog.
 - The language-verilog plugin adds syntax highlighting and snippets to Verilog files.
 
 - Visual Studio Code is catching up but not quite there, yet (Dec 2017). E.g. there's no Icarus Verilog integration in any of the Verilog addins, yet.
 
Icarus Verilog is a Verilog simulation and synthesis tool. It can parse Verilog 2005 (IEEE 1364-2005). Start here: http://iverilog.wikia.com/wiki/. On Mac OS X install with Homebrew:
brew install icarus-verilog"GTKWave is a fully featured GTK+ based wave viewer for Unix, Win32, and Mac OSX which reads LXT, LXT2, VZT, FST, and GHW files as well as standard Verilog VCD/EVCD files and allows their viewing."
On Mac OS X install with Homebrew:
brew install homebrew/gui/gtkwave- [1] iCE40-HX8K Breakout Board User's Guide - pdf
 - [2] iCE40 LP/HX Family Data Sheet - pdf
 - [3] FTDI FT2232H Dual High Speed USB to Multipurpose UART/FIFO IC - page, pdf
 - [4] Micron N25Q032A13ESC40 32Mb, 3V, Multiple I/O Serial Flash Memory - page, pdf
 - [5] Microchip 93LC56 2k 2.5V Microwire Serial EEPROM - , page, pdf
 - [6] Linear Technology LT3030 Dual 750mA/250mA Low Dropout, Low Noise, Micropower Linear Regulator - page, pdf
 - [7] Lattice iCE40 LP/HX/LM products page
 - [8] iCE40 Development kits and boards page
 - [9] iCE40 sysCLOCK PLL Design and Usage Guide pdf
 - [10] iCEcube2 Design Software page
 - [11] iCEcube2 2016-02 Tutorial pdf
 


