Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Suggested fixes #4

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 2 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,28 +48,23 @@ Check ECP5 family datasheet for more information.
* 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](https://github.com/mattvenn/basic-ecp5-pcb/issues/3) for SPI peripheral comms with Pi. See the test-spi-clk-in branch for a workaround.

## RPi connection info

See [test/mv_ecp.lpf](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
* I2C: pins 2 and 3.
* 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](https://github.com/im-tomu/fomu-flash/issues/8). 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:

Expand Down
1 change: 1 addition & 0 deletions hardware/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
*net
sym-lib-table
auto-fab/
*-rescue*
211 changes: 105 additions & 106 deletions hardware/basic-ecp5-pcb-cache.lib
Original file line number Diff line number Diff line change
Expand Up @@ -382,11 +382,110 @@ X R4.2 5 0 150 50 D 50 50 4 1 P
ENDDRAW
ENDDEF
#
# Lattice_ECP_FPGA_ECP5U_45_CABGA256
# Mechanical_MountingHole_Pad
#
DEF Mechanical_MountingHole_Pad H 0 40 N N 1 F N
F0 "H" 0 250 50 H V C CNN
F1 "Mechanical_MountingHole_Pad" 0 175 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
MountingHole*Pad*
$ENDFPLIST
DRAW
C 0 50 50 0 1 50 N
X 1 1 0 -100 100 U 50 50 1 1 I
ENDDRAW
ENDDEF
#
# Memory_Flash_W25Q128JVS
#
DEF Memory_Flash_W25Q128JVS U 0 20 Y Y 1 F N
F0 "U" -350 350 50 H V C CNN
F1 "Memory_Flash_W25Q128JVS" 300 350 50 H V C CNN
F2 "Package_SO:SOIC-8_5.23x5.23mm_P1.27mm" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
ALIAS W25Q128JVS
$FPLIST
SOIC*5.23x5.23mm*P1.27mm*
$ENDFPLIST
DRAW
S -400 300 400 -300 0 1 10 f
X ~CS 1 -500 100 100 R 50 50 1 1 I
X DO(IO1) 2 500 100 100 L 50 50 1 1 B
X IO2 3 500 -100 100 L 50 50 1 1 B
X GND 4 0 -400 100 U 50 50 1 1 W
X DI(IO0) 5 500 200 100 L 50 50 1 1 B
X CLK 6 -500 -100 100 R 50 50 1 1 I
X IO3 7 500 -200 100 L 50 50 1 1 B
X VCC 8 0 400 100 D 50 50 1 1 W
ENDDRAW
ENDDEF
#
# Regulator_Linear_TLV73333PDBV
#
DEF Regulator_Linear_TLV73333PDBV U 0 10 Y Y 1 F N
F0 "U" -150 225 50 H V C CNN
F1 "Regulator_Linear_TLV73333PDBV" 0 225 50 H V L CNN
F2 "Package_TO_SOT_SMD:SOT-23-5" 0 325 50 H I C CIN
F3 "" 0 0 50 H I C CNN
ALIAS LD39015M10R LD39015M12R LD39015M125R LD39015M15R LD39015M18R LD39015M25R LD39015M33R TLV73310PDBV TLV73311PDBV TLV73312PDBV TLV73315PDBV TLV73318PDBV TLV73325PDBV TLV733285PDBV TLV73328PDBV TLV73330PDBV TLV73333PDBV
$FPLIST
SOT?23*
$ENDFPLIST
DRAW
S -200 175 200 -200 0 1 10 f
X IN 1 -300 100 100 R 50 50 1 1 W
X GND 2 0 -300 100 U 50 50 1 1 W
X EN 3 -300 0 100 R 50 50 1 1 I
X NC 4 200 0 100 L 50 50 1 1 N N
X OUT 5 300 100 100 L 50 50 1 1 w
ENDDRAW
ENDDEF
#
# Regulator_Switching_TLV62568DBV
#
DEF Regulator_Switching_TLV62568DBV U 0 20 Y Y 1 F N
F0 "U" -200 250 50 H V L CNN
F1 "Regulator_Switching_TLV62568DBV" 0 250 50 H V L CNN
F2 "Package_TO_SOT_SMD:SOT-23-5" 50 -250 50 H I L CIN
F3 "" -250 450 50 H I C CNN
ALIAS NCP1529A TLV62569DBV
$FPLIST
SOT?23*
$ENDFPLIST
DRAW
S -200 200 200 -200 0 1 10 f
X EN 1 -300 0 100 R 50 50 1 1 I
X GND 2 0 -300 100 U 50 50 1 1 W
X SW 3 300 100 100 L 50 50 1 1 w
X VIN 4 -300 100 100 R 50 50 1 1 W
X FB 5 300 0 100 L 50 50 1 1 I
ENDDRAW
ENDDEF
#
# Switch_SW_Push
#
DEF Switch_SW_Push SW 0 40 N N 1 F N
F0 "SW" 50 100 50 H V L CNN
F1 "Switch_SW_Push" 0 -60 50 H V C CNN
F2 "" 0 200 50 H I C CNN
F3 "" 0 200 50 H I C CNN
DRAW
C -80 0 20 0 1 0 N
C 80 0 20 0 1 0 N
P 2 0 1 0 0 50 0 120 N
P 2 0 1 0 100 50 -100 50 N
X 1 1 -200 0 100 R 50 50 0 1 P
X 2 2 200 0 100 L 50 50 0 1 P
ENDDRAW
ENDDEF
#
# basic-ecp5-pcb-rescue_ECP5U_45_CABGA256-Lattice_ECP_FPGA
#
DEF Lattice_ECP_FPGA_ECP5U_45_CABGA256 U 0 40 Y Y 9 L N
DEF basic-ecp5-pcb-rescue_ECP5U_45_CABGA256-Lattice_ECP_FPGA U 0 40 Y Y 9 L N
F0 "U" 150 250 60 H V R CNN
F1 "Lattice_ECP_FPGA_ECP5U_45_CABGA256" 150 150 60 H V R CNN
F1 "basic-ecp5-pcb-rescue_ECP5U_45_CABGA256-Lattice_ECP_FPGA" 150 150 60 H V R CNN
F2 "" 150 50 60 H I R CNN
F3 "" 150 -150 60 H I R CNN
F4 "ECP5U_45" 150 -50 60 H I R CNN "manf#"
Expand Down Expand Up @@ -659,113 +758,13 @@ X TMS T11 0 -300 200 R 50 50 9 1 B
ENDDRAW
ENDDEF
#
# Mechanical_MountingHole_Pad
#
DEF Mechanical_MountingHole_Pad H 0 40 N N 1 F N
F0 "H" 0 250 50 H V C CNN
F1 "Mechanical_MountingHole_Pad" 0 175 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
MountingHole*Pad*
$ENDFPLIST
DRAW
C 0 50 50 0 1 50 N
X 1 1 0 -100 100 U 50 50 1 1 I
ENDDRAW
ENDDEF
#
# Memory_Flash_W25Q128JVS
#
DEF Memory_Flash_W25Q128JVS U 0 20 Y Y 1 F N
F0 "U" -350 350 50 H V C CNN
F1 "Memory_Flash_W25Q128JVS" 300 350 50 H V C CNN
F2 "Package_SO:SOIC-8_5.23x5.23mm_P1.27mm" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
ALIAS W25Q128JVS
$FPLIST
SOIC*5.23x5.23mm*P1.27mm*
$ENDFPLIST
DRAW
S -400 300 400 -300 0 1 10 f
X ~CS 1 -500 100 100 R 50 50 1 1 I
X DO(IO1) 2 500 100 100 L 50 50 1 1 B
X IO2 3 500 -100 100 L 50 50 1 1 B
X GND 4 0 -400 100 U 50 50 1 1 W
X DI(IO0) 5 500 200 100 L 50 50 1 1 B
X CLK 6 -500 -100 100 R 50 50 1 1 I
X IO3 7 500 -200 100 L 50 50 1 1 B
X VCC 8 0 400 100 D 50 50 1 1 W
ENDDRAW
ENDDEF
#
# Regulator_Linear_TLV73333PDBV
#
DEF Regulator_Linear_TLV73333PDBV U 0 10 Y Y 1 F N
F0 "U" -150 225 50 H V C CNN
F1 "Regulator_Linear_TLV73333PDBV" 0 225 50 H V L CNN
F2 "Package_TO_SOT_SMD:SOT-23-5" 0 325 50 H I C CIN
F3 "" 0 0 50 H I C CNN
ALIAS LD39015M10R LD39015M12R LD39015M125R LD39015M15R LD39015M18R LD39015M25R LD39015M33R TLV73310PDBV TLV73311PDBV TLV73312PDBV TLV73315PDBV TLV73318PDBV TLV73325PDBV TLV733285PDBV TLV73328PDBV TLV73330PDBV TLV73333PDBV
$FPLIST
SOT?23*
$ENDFPLIST
DRAW
S -200 175 200 -200 0 1 10 f
X IN 1 -300 100 100 R 50 50 1 1 W
X GND 2 0 -300 100 U 50 50 1 1 W
X EN 3 -300 0 100 R 50 50 1 1 I
X NC 4 200 0 100 L 50 50 1 1 N N
X OUT 5 300 100 100 L 50 50 1 1 w
ENDDRAW
ENDDEF
#
# Regulator_Switching_TLV62568DBV
#
DEF Regulator_Switching_TLV62568DBV U 0 20 Y Y 1 F N
F0 "U" -200 250 50 H V L CNN
F1 "Regulator_Switching_TLV62568DBV" 0 250 50 H V L CNN
F2 "Package_TO_SOT_SMD:SOT-23-5" 50 -250 50 H I L CIN
F3 "" -250 450 50 H I C CNN
ALIAS NCP1529A TLV62569DBV
$FPLIST
SOT?23*
$ENDFPLIST
DRAW
S -200 200 200 -200 0 1 10 f
X EN 1 -300 0 100 R 50 50 1 1 I
X GND 2 0 -300 100 U 50 50 1 1 W
X SW 3 300 100 100 L 50 50 1 1 w
X VIN 4 -300 100 100 R 50 50 1 1 W
X FB 5 300 0 100 L 50 50 1 1 I
ENDDRAW
ENDDEF
#
# Switch_SW_Push
#
DEF Switch_SW_Push SW 0 40 N N 1 F N
F0 "SW" 50 100 50 H V L CNN
F1 "Switch_SW_Push" 0 -60 50 H V C CNN
F2 "" 0 200 50 H I C CNN
F3 "" 0 200 50 H I C CNN
DRAW
C -80 0 20 0 1 0 N
C 80 0 20 0 1 0 N
P 2 0 1 0 0 50 0 120 N
P 2 0 1 0 100 50 -100 50 N
X 1 1 -200 0 100 R 50 50 0 1 P
X 2 2 200 0 100 L 50 50 0 1 P
ENDDRAW
ENDDEF
#
# clock_SiT2001B
# basic-ecp5-pcb-rescue_SiT2001B-clock
#
DEF clock_SiT2001B X 0 10 Y Y 1 F N
DEF basic-ecp5-pcb-rescue_SiT2001B-clock X 0 10 Y Y 1 F N
F0 "X" -200 250 50 H V L CNN
F1 "clock_SiT2001B" 50 -250 50 H V L CNN
F1 "basic-ecp5-pcb-rescue_SiT2001B-clock" 50 -250 50 H V L CNN
F2 "Oscillator:Oscillator_SMD_SeikoEpson_SG210-4Pin_2.5x2.0mm" 200 -650 50 H I C CNN
F3 "" -100 0 50 H I C CNN
ALIAS SG-211
$FPLIST
Oscillator*SMD*SeikoEpson*SG210*2.5x2.0mm*
$ENDFPLIST
Expand Down
Loading