Skip to the content
PCBKitNew board
4 layers100 × 68 mmBasic ecp5-pcb, the printed circuit board in 3D

Reference design for Lattice ECP5 FPGA. Featuring Raspberry Pi interface and 6 PMODs

Size
100 × 68 mm
Copper layers
4
Thickness
1.6 mm
Parts
75
Nets
241
Pads
568
Tracks, vias
1,148, 130
Pours
2
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
16 Jul 2020
Updated
17 Jul 2021

Overview

Basic ecp5-pcb is an open-source printed circuit board by mattvenn, from the mattvenn/basic-ecp5-pcb repository on GitHub, published under the CC0-1.0 licence. It is a 4-layer board of 100 × 68 mm with 75 parts on 241 nets, routed with 1,148 tracks and 130 vias.

It is built around the TLV62568DBV, IS25LP016D-JBLE and TLV73325PDBV. Its parts include 19 capacitors, 13 resistors, 10 connectors, 5 ICs and 4 diodes. It belongs with the fPGA and programmable logic boards and the FPGA and CPLD boards of this library.

Main components

3

README

README.md

ECP5 FPGA dev board

  • Make an ECP5 FPGA dev board
  • Keep it super simple and cheap
  • Configured by on-board FLASH or direct with a Raspberry Pi
  • 6 PMODs, 2 buttons, 2 LEDs, FLASH for configuration bitstreams.
  • buttons are active low, LEDs are active low.

There is also an iCE40 version of this board: https://github.com/mattvenn/first-fpga-pcb

What a Lattice ecp5 FPGA needs

Check ECP5 family datasheet for more information.

  • A clock input. Has to be provided by an oscillator, it doesn't have a crystal driver. Has to go to a PCLK pad
  • 1.1v core supply for the internal logic. Should supply at least 600mA
  • 2.5v auxiliary power supply. Should supply 10mA
  • 3.3v IO supply for the IO pins. In this design, all banks of IO have the same supply. Same PSU is used for all PMODs, and is rated at 1A.
  • Get configured over SPI interface. This can be done directly by a microcontroller or a computer, or the bitstream can be programmed into some FLASH, and the FPGA will read it at boot. If FLASH isn't provided then the bitstream needs to be programmed at every power up or configuration reset. See sysconfig documentation for more info.
  • Decoupling capacitors for each IO bank.

PCB

board

BOM

  • FPGA ecp5 12k (LFE5U-12F-6BG256C) or 45k (LFE5U-45F-6BG256C) part, 14mm bga with 256 pins, 0.8mm pitch
  • 2 x TLV62568 DC/DC switchers for core (1.1v) and IO (3.3v).
  • 2.5v reg TLV73325PDBVT
  • 16MHz oscillator SIT2001BI-S2-33N-16.000000G
  • 16MB FLASH W25Q128JVSIM (same as icebreaker)

Design Review

  • core supply (1.1v) is now DC/DC for 1A using TLV62568
  • pmod and IO supply is now DC/DC for 1A using TLV62568
  • move ferrite beads to input side of psu
  • pullups on io2/3 of flash
  • pulldown on tclk of jtag
  • fix vias under bga by moving to 0.25mm drill 0.45mm annular ring
  • add more ground vias under BGA

Errata

  • Add missing qspi to the Pi to be able to program bitstream faster.
  • configuration bits for FPGA should be tied to gnd not through a 10k resistor. The voltage is about 1v, so might be a little close to the threshold of the 3.3v IOBANK supply. Replace with 0Ohm resistors? Or just tie to gnd?
  • used IS25LP016D-JBLE as flash, but it has problems with enabling QE for QSPI. Relace with the model used on icebreaker
  • ecp5 SPI clock pin can't be used as an input, so have to add a bodge wire for SPI peripheral comms with Pi. See the test-spi-clk-in branch for a workaround.

RPi connection info

See test/mv_ecp.lpf for FPGA pinning. The following are the physical pins on the raspberry pi:

  • serial: TX, RX on pins 8 and 10
  • I2C: bitbanged on pins 38 and 40. Optional pullup resistors R1 & R2. Need to set up in boot/config.txt
  • GPIOs: pins 31, 32, 33, 36.
  • SPI: SDO, SDI, CLK, CE0 on pins 19, 21, 23, 24. These are connected to the onboard FLASH for bitstream config.
  • Extra SPI CE1: pin 26

RPi Gotchas

  • fomu_flash will leave the SPI device in an unusable state. Run sudo rmmod spi_bcm2835 && sudo modprobe spi_bcm2835 to reset it.
  • connected I2C pins are just GPIOs. I have found the Pi's I2C hardware unusable, so always use the slower bitbanged version. To enable add this to /boot/config.txt: dtoverlay=i2c-gpio,i2c_gpio_sda=21,i2c_gpio_scl=20,i2c_gpio_delay_us=8,bus=3

Test:

Simple test connects buttons to LEDs and toggles all other pins every second.

Yosys and NextPNR are used to create the bitstream and then it's copied to the Raspberry Pi specified by PI_ADDR in the Makefile.

Fomu-Flash is used to flash the SPI memory. Clone the repo on the Pi and set the path in the Makefile with FOMU_FLASH.

Run make in ./test to build, copy and program the bitstream.

PicoRV32 PicoSoC

I have adapted Claire Wolf's PicoRV32 Picosoc for this board: https://github.com/mattvenn/picorv32/tree/ecp5/picosoc

Reference

Inspiration

Attribution

License

Open Source Hardware

This board is an OSHWA approved design: ES000012

Parts

75
QtyValueFootprintReferences
9100nCapacitor_SMD:C_0805_2012MetricC1, C2, C4, C5, C6, C8, C9, C10, C22
6Conn_02x06_Odd_EvenConnector_PinSocket_2.54mm:PinSocket_2x06_P2.54mm_HorizontalJ3, J4, J5, J6, J7, J8
510kResistor_SMD:R_0805_2012MetricR1, R2, R3, R10, R11
410uCapacitor_SMD:C_0805_2012MetricC7, C11, C15, C26
4200RResistor_SMD:R_0805_2012MetricR6, R9, R12, R13
4LEDLED_SMD:LED_0805_2012MetricD1, D3, D4, D5
4MountingHole_PadMountingHole:MountingHole_3.2mm_M3_PadH1, H2, H3, H4
3Ferrite_Bead_SmallInductor_SMD:L_0805_2012MetricFB1, FB2, FB3
3TestPointTestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP2, TP4, TP7
210kResistor_SMD:R_Array_Concave_4x0603RN1, RN2
21uCapacitor_SMD:C_0805_2012MetricC3, C20
22.2uHInductor_SMD:L_Taiyo-Yuden_NR-40xxL2, L3
24.7uCapacitor_SMD:C_0805_2012MetricC12, C13
2Conn_02x20_Odd_EvenConnector_PinSocket_2.54mm:PinSocket_2x20_P2.54mm_VerticalJ2, J9
2LOGOlibs:oshw-logo-smallG***, G***
2SW_PushButton_Switch_THT:SW_PUSH_6mmSW1, SW2
2TLV62568DBVPackage_TO_SOT_SMD:SOT-23-5U3, U4
11.1vTestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP6
1100kResistor_SMD:R_0805_2012MetricR4
1120kResistor_SMD:R_0805_2012MetricR5
115kResistor_SMD:R_0805_2012MetricR8
12.5vTestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP3
122uCapacitor_SMD:C_0805_2012MetricC14
13.3vTestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP1
168kResistor_SMD:R_0805_2012MetricR7
1CPCapacitor_SMD:CP_Elec_5x5.4C21
1Conn_01x02Connector_PinHeader_2.54mm:PinHeader_2x01_P2.54mm_VerticalJ1
1Conn_02x05_Odd_EvenConnector_PinHeader_1.27mm:PinHeader_2x05_P1.27mm_Vertical_SMDJ10
1ECP5U_45_CABGA256Package_BGA:BGA-256_14.0x14.0mm_Layout16x16_P0.8mm_Ball0.45mm_Pad0.32mm_NSMDU1
1IS25LP016D-JBLEPackage_SO:SOIC-8_5.23x5.23mm_P1.27mmU2
1Q_NMOS_GSDPackage_TO_SOT_SMD:SOT-23Q1
1SiT2001BPackage_TO_SOT_SMD:SOT-23-5X1
1TLV73325PDBVPackage_TO_SOT_SMD:SOT-23-5U5
1clockTestPoint:TestPoint_THTPad_D1.0mm_Drill0.5mmTP5

Questions

How big is the Basic ecp5-pcb PCB?

It measures 100 × 68 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Basic ecp5-pcb use?

75 parts, built around the TLV62568DBV, IS25LP016D-JBLE and TLV73325PDBV. 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 Basic ecp5-pcb KiCad files?

From the mattvenn/basic-ecp5-pcb repository on GitHub, at the commit this page was made from: the board is hardware/basic-ecp5-pcb.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Basic ecp5-pcb design in my own project?

Its repository publishes it under the CC0-1.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 4 layers101.8 × 83 mmSd2snes ecp5, the printed circuit board in 3D

    Sd2snes ecp5

    samlittlewood/sd2snes_ecp5

    Lattice ECP5 variant of SD2SNES

    184 parts21GPL-2.0
  • 2 layers100 × 68 mmFirst fpga pcb, the printed circuit board in 3D

    First fpga pcb

    mattvenn/first-fpga-pcb

    FPGA dev board based on Lattice iCE40 8k

    70 parts83
  • 2 layers103.9 × 43.5 mmCps2 digiav, the printed circuit board in 3D

    Cps2 digiav

    marqs85/cps2_digiav

    CPS2 digital AV interface

    146 parts49
  • 2 layers118.2 × 73 mmPCEHD, the printed circuit board in 3D

    PCEHD

    wifiber/PCEHD

    PC Engine HDMI

    165 parts7
  • 2 layers35.6 × 18.8 mmSamd51 micropython 9, the printed circuit board in 3D

    Samd51 micropython 9

    gnilsson2/YAPP_Box_KiCad_Generator

    Generate Openscad boxes from KiCad PCB files.

    22 partsMIT
  • 4 layers100 × 100 mmRPI RP2040-MINIMAL R3-S1, the printed circuit board in 3D

    RPI RP2040-MINIMAL R3-S1

    thegamer3-141/16bit_transistor_computer

    A 16-bit computer built from discrete transistors, inspired by Ben Eater's famous 8-bit breadboard computer project.

    81 parts
  • 4 layers165 × 107 mmSpla board, the printed circuit board in 3D

    Spla board

    khaydarian/spla

    SNES PPU Logic Analyzer

    290 parts32