Kolibri is a USB FPGA dongle designed by Lone Dynamics Corporation.
This repo contains schematics, example firmware, gateware and documentation.
Find more information on the Kolibri product page.
Building the blinky example requires Yosys, nextpnr-ice40 and IceStorm.
Assuming they are installed, you can simply type make
to build the gateware, which will be written to output/blinky.bin. You can then connect the device to your computer and use the latest version of ldprog to write the gateware to the device.
The RP2040 firmware, FPGA SRAM and flash can be programmed over the USB connector.
Configure the FPGA SRAM:
$ ldprog -Ks blinky.bin
Program the flash:
$ ldprog -Kf blinky.bin
Kolibri ships with RP2040 firmware based on the Müsli firmware which allows it to communicate with ldprog. The firmware also provides a USB CDC bridge to a UART on the FPGA (default: 115200 8N1).
The firmware is responsible for initializing the system, configuring and outputting the system clock, and either configuring the FPGA or telling the FPGA to configure itself from flash.
The system clock (CLK_RP) is 48MHz by default.
The firmware can be updated by holding down the BOOT button, connecting the device to your computer, and then dragging and dropping a new UF2 file to the device filesystem.
The firmware can be built from source or you can use the latest kolibri.uf2
binary from the firmware directory.
Signal | RP2040 | FPGA |
---|---|---|
RP_GPIO0 | UART0 TX | UART RX |
RP_GPIO1 | UART0 RX | UART TX |
RP_GPIO2 | UART0 CTS | UART RTS |
RP_GPIO3 | UART0 RTS | UART CTS |
RP_GPIO4 | SPI0 RX | SPI TX |
RP_GPIO5 | SPI0 CS | SPI CS |
RP_GPIO6 | SPI0 SCK | SPI SCK |
RP_GPIO7 | SPI0 TX | SPI RX |
Note: SPI isn't currently used.
Zucker is an experimental RISC-V SOC that supports Kolibri.