Home

Awesome

manila iCE

manila iCE is a credit card sized Lattice iCE40 development board.

Quick links:

PCB

Features:

Bootloader

The board has a bootloader which supports loading of FPGA bitstreams over UART. Four slots for bitstreams are supported. The first is reserved for the bootloader itself, and the other three can hold user images.

The FPGA is configured with the bootloader on powerup, and then automatically boots into the first bitstream after a timeout. Alternate bitstreams can be selected using the buttons, or by UART command.

Example applications

The following applications are provided to demonstrate functionality of the PCB:

Programming Application

To support uploading user applications, a Linux software utility is provided to update any of the bitstream slots.

To install the software checkout this repository, and run the following commands:

  1. cd sw/scripts
  2. make
  3. make install

You will now have an executable called manila in your path.

To program the FPGA:

  1. Plug in the board with USB
  2. Press either of the switches to pause the boot process (optional if you're quick!)
  3. manila prog [path to bitstream]

To discover the optional arguments run manila prog without any arguments.

SPI Flash

The SPI flash memory is laid out as follows:

Flash Layout

The bootloader partition is protected to prevent accidental erasure.

Bootloader Upgrades

In order to allow for firmware upgrades the protection is volatile. When the firmware is configured with the bootloader, before UART commands are accpeted it sends commands to the SPI flash to write protect the bootloader region, and then locks out that configuration until the SPI flash is power cycled.

TODO: document process for upgrading bootloader

PCB Errata