

Dip switch
OpenFPGA ICE40UP5K
- Size
- 38 × 16 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 5
- Nets
- 10
- Pads
- 44
- Tracks, vias
- 112, 16
- Routed
- Yes
- KiCad
- KiCad 5 (file 20171130)
- Created
- 25 Apr 2020
- Updated
- 8 Aug 2020
Overview
Dip switch is an open-source printed circuit board by BitOpenFPGA, from the BitOpenFPGA/OpenICE repository on GitHub. It is a 2-layer board of 38 × 16 mm with 5 parts on 10 nets, routed with 112 tracks and 16 vias.
Its parts include 2 resistors, 1 connector and 1 switch.
README
README.mdOpeniCE
来源
开源FPGA应具备几个维度特点:

其中最难弄得就是工具链了,经过长时间查找,终于在GitHub上找到了一个FPGA的开源工具链Yosys,选择的理由如下:
Intel Quartus II (No )License
Xilinx Vivado ISE (No) License
Lattice Diamond (No) License 注册可以免费申请,但是随时可以收回(一般不会)
Yosys, nextpnr, icestorm, iverilog, symbiflow (YES) 整个工具链开源
支持的硬件:
http://www.clifford.at/icestorm/
折中选择ICE40UP5K-SG48芯片。
为什么选择ICE40系列FPGA呢?
Lattice的iCE40系列芯片在国外很受欢迎,大部分的开发环境都是开源的,不需要担心License所带来的限制,只需要将工具链进行安装之后就可以进行FPGA的开发之路,典型的基于iCE40系列的开源开发板有iCEBreaker、UPduino、BlackIce、iCEstick、TinyFPGA 等。
每个开发版对比如下: 表格来源:https://www.crowdsupply.com/1bitsquared/icebreaker-fpga
| iCEBreaker | TinyFPGA BX | Tomu FPGA | Lattice ICEstick | UPDuino v2.0 | ICE40UP5K Breakout | Alhambra II | ICE40HX8K Breakout | |
|---|---|---|---|---|---|---|---|---|
| License | OSHW | OSHW | OSHW | Closed | Closed | Closed | OSHW | Closed |
| Price | $65 | $38 | $?? | ~$25 | $13.99 | $49 | $59.90 | $49 |
| Schematics Published? | Yes | Yes | Not Yet | Yes | Yes | Yes | Yes | Yes |
| Design files Published? | Yes | Yes | Not Yet | No | Yes | No | Yes | No |
| FPGA | ||||||||
| Model | iCE40UP5K | iCE40LP8K | iCE40UP5K | iCE40HX1K | iCE40UP5K | iCE40UP5K | iCE40HX4K(8K) | iCE40HX8K |
| Logic Capacity (LUTs) | 5280 | 7680 | 5280 | 1280 | 5280 | 5280 | 3520 (7680) | 7680 |
| Internal RAM (bits) | 120k + 1024k | 128k | 120k + 1024k | 64k | 120k + 1024k | 120k + 1024k | 80k | 128k |
| Multipliers | 8 | 0 | 8 | 0 | 8 | 8 | 0 | 0 |
| Peripherals | ||||||||
| USB Interface | FTDI 2232HQ | On FPGA Bootloader | On FPGA Bootloader | FTDI 2232HL | FTDI 232HQ | FTDI 2232HL | FTDI 2232HQ | FTDI 2232HL |
| USB HS FIFO/SPI interface to the FPGA | Yes through Jumper Mod | No | No | No | No | No | No | No |
| USB Serial (UART) interface to the FPGA | Yes | No | No | Yes | No | Yes | Yes | Yes |
| GPIO inline termination resistors | Yes 33 Ohm | No | No | No | No | No | Yes 300 Ohm | No |
| User IOs | 27 + 7 | 41 + 2 | 4 + 2 | 18 | 34 | 34 + 2 | 20 | 90 + 10 |
| Pmod Connectors | 3 | 0 | 0 | 1 | 0 | 1 | 0 | 0 |
| User Buttons | 1 Tact + 3 Tact on Breakoff Pmod | 1 CRESET | 2 Capacitive | 0 | 0 | 4 DIP | 2 Tact | 0 |
| User LED | 2 + 5 on Breakoff Pmod | 1 | 0 | 5 | 1 RGB | 1 RGB | 8 | 8 |
| Indicator LED | PWR, CDONE | PWR | CDONE, FTDI-TX/RX | PWR, CDONE | PWR, CDONE, FTDI-TX/RX | PWR, CDONE | ||
| Onboard Clock | 12 MHz MEMS Shared with FTDI | 16 MHz MEMS | 12 MHz MEMS | 12 MHz MEMS? Shared with FTDI | 12 MHz MEMS? Shared with FTDI | 12 MHz MEMS? Shared with FTDI | 12 MHz MEMS Shared with FTDI | 12 MHz MEMS? Shared with FTDI |
| Flash | 128 Mbit QSPI DDR | 8 Mbit SPI | 16 Mbit SPI | 32 Mbit SPI | 32 Mbit SPI | 32 Mbit SPI | 32 Mbit SPI | 32 Mbit SPI |
| FPGA Power Delivery | ||||||||
| Dedicated GND/Power Planes | Yes | Yes | No | Yes | No | Yes | Yes | Yes |
| Dedicated FPGA Bypass Capacitors | 19 | 8 | 9 | 18 | 2 | 19 | ? | ? |
| IO GND Connections | 11 | 6 | 1 | 4 | 3 | 8 | 22 | 20 |
| Software | ||||||||
| Open Source Toolchain | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| APIO | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| icestudio | Yes | Yes | Not Yet | Yes | Yes | Yes | Yes | Yes |
| migen | Yes | Yes | No | Yes | No | Yes | No | Yes |
硬件上也可以参考:https://github.com/icebreaker-fpga/icebreaker-examples
其中icebreaker可以直接采购,但是国内买还是偏难,而且价格上也比较贵,综合考虑还是自己参考官方的DEMO和icebreaker自己做,原则上尽量减少改动。
OpenICE介绍
OpenICE 是基于Lattice iCE40UP5k设计的开源FPGA开发板,开发板以Arduino为原型进行设计,资源丰富,板载RGB LED,KEY,TYPE-C-USB, RESET,大部分IO以标准PMOD接口引出,可与标准PMOD外设进行对接,方便日常的开发使用。
板载的调试器以FT2232H为核心设计,支持官方的EDA进行下载调试,同时经过开源工具链ICEProg就可实现轻松实现烧写。FT2232H同时支持虚拟串口和FPGA进行通信。
整版的原理框图如下:

PCB截图如下:

芯片规格
iCE40UP5K-SG48
- 5280 Logic Cells (4-LUT + Carry + FF)
- 128 KBit Dual-Port Block RAM
- 1 MBit (128 KB) Single-Port RAM
- PLL, Two SPI and two I2C hard IPs
- Two internal oscillators (10 kHz and 48 MHz)
- 8 DSPs (16x16 multiply + 32 bit accumulate)
- 3x 24mA drive and 3x hard PWM IP
硬件说明
iCE40UP5K
- SPI Flash使用W25Q64(8MB)/W25Q128(16MB)
- 板载按键开关、LED和RGB LED可用于测试
- 所有IO以标准PMOD接口引出
- 板载电源指示灯V8,方便查看整版电源情况
Capable enough to host CPU softcores
开发环境搭建
推荐使用虚拟机镜像进行开发测试,简单方便。
FPGA工具链安装请参考icestorm
gcc工具链安装请参考 riscv-gnu-toolchain
FPGA教程
参考
toolchain
http://www.clifford.at/icestorm/
examples
https://github.com/damdoy/ice40_ultraplus_examples
https://github.com/icebreaker-fpga/icebreaker-examples
SpinalHDL 教程
https://spinalhdl.github.io/SpinalDoc-RTD/SpinalHDL/Getting%20Started/index.html
开源FPGA单板OpenICE介绍
https://github.com/OpenFPGA-ICE/OpenICE/blob/master/README.md
Parts
5| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 10k | pkl_dipol:R_Array_Convex_4x0402 | R1, R2 |
| 1 | PMOD | pkl_connectors:PMODHeader_2x06_P2.54mm_Horizontal | J1 |
| 1 | SW_DIP_x08 | Button_Switch_THT:SW_DIP_SPSTx08_Slide_9.78x22.5mm_W7.62mm_P2.54mm | SW1 |
The 4 most common of 5 parts.
Questions
How big is the Dip switch PCB?
It measures 38 × 16 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Dip switch use?
5 parts. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the Dip switch KiCad files?
From the BitOpenFPGA/OpenICE repository on GitHub, at the commit this page was made from: the board is Hardware/PMOD_SubCard/DIP-SWICH/v1.0a/dip-switch.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.
Can I use the Dip switch design in my own project?
Its repository states no licence, so its author keeps all rights: ask BitOpenFPGA before reusing the design.
More from BitOpenFPGA/OpenICE
1- 2 layers41 × 20.3 mm

Similar boards
- 2 layers98 × 27 mm

- 2 layers21 × 33 mm

24g2usb pico2w
joypad-ai/joypad-os
Universal controller firmware for building adapters, dongles, and custom controllers.
5 parts1.7kApache-2.0 - 2 layers53.2 × 59.6 mm

A10 OLinuXino Lime Rev B SHIELD TEMPLATE
OLIMEX/OLINUXINO
OLINUXINO is Open Source / Open Hardware, low cost from EUR 24 Linux Industrial grade Single Board Computer capable to operate -25+85C
5 parts1.5k - 2 layers30 × 11 mm

Main control board servo tester
jamro/tiny-engineer
A small desktop robot that brings an AI coding assistant to life, physically acting out when it reads files, thinks, writes code, and finishes work.
5 parts1.1k - 2 layers78.8 × 35.3 mm

KiCadTest
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
5 parts915 - 2 layers50 × 23 mm

- 2 layers43.2 × 28.5 mm

- 2 layers20.3 × 15.2 mm

L0 light sensor
Luos-io/luos_engine
Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.
5 parts546MIT