BlackIce is Here!
At last – after nearly a year in development – the new myStorm BlackIce open-source FPGA board is now available in production quantities.
BlackIce is a unique combination of low cost FPGA and ARM Cortex M4 microcontroller to provide a powerful platform with which to experiment with FPGAs, and ARMs.
Leveraging off the recently announced “Project Icestorm” by Clifford Wolf – an open source tool chain which effectively reverse engineers the tools needed to program the Lattice Ice 40, BlackIce brings FPGA technology at an affordable price to the hobbyist, Maker and Educational communities.
BlackIce offers features not found in other comparably priced FPGA boards
The STM32 ARM Cortex co-processor acts as a complete support system for the FPGA – offering a convenient means of programming the FPGA
In addition the STM32 mcu adds 20off 5V tolerant analogue and digital I/O routed to Arduino style headers – including 6 analogue to digital converter inputs and 2 DAC outputs with 12 bit resolution
The STM32 can be used as a slave set of standard peripherals to the outside world – including timers, ADC, DAC, SPI, I2C and USB.
The STM32L4333 can be programmed using Arduino, STM32Duino, mBed Nucleo, MeCrisp Forth.
BlackIce includes a 256Kx16 SRAM closely coupled to the FPGA
microSD card socket on underside of pcb – which may be accessed either by the FPGA or ARM mcu
More PMODS – a total of 6 double and 2 single PMODS = 56 GPIO lines appear on PMODS including differential LVDS lines
For compatibility – further GPIOs have been routed to an Olimex expansion board header
ToolChain and Development Process
This consists of several stages that are conveniently managed by the APIO IDE which is a derivative of PlatformIO – specifically tailored to meet the needs of the Project IceStorm toolchain. APIO runs as a module within the Atom Editor Environment.
The advantage of using an IDE such as APIO, is that it works across all platforms, and provides a convenient way of managing the toolchain and the various modules (files) that make up the design project.
The design is coded in verilog, and it’s then just a case of building the project.
This invokes the YoSys “Logic Synthesiser” and the Arachne “Place and Route” tools. It then takes the p&r file and converts it into a binary “Bitfile” which is used to program the FPGA.
On BlackIce, an STM32L433 ARM M4 Cortex microcontroller is used to manage the programming of the ICE40 FPGA.
The STM32 device runs an application firmware called “Iceboot” – and this allows the binary bitfile to be loaded first into the STM32 and then into the FPGA.
This is done via the native USB device port on the STM32 microcontroller using a terminal program such as Teraterm, using it’s “Send File” option from the File menu tab. Ensure that the Binary option is checked on the file selection dialogue box. FPGA loading takes only about 2 or 3 seconds.
The STM32 is readily programmed using mbed – as it can be made to look like a Nucleo device – using a ST-Link to program it.
Alternatively it can be put into DFU (Device Firmware Upgrade) mode by removing the jumper link connected across the 7th and 8th pin of the right hand row of header pins.