You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

251 lines
10 KiB

# ULX3S PCB
7 years ago
ULX3S = University digital Logic Learning Xtensible
7 years ago
board release 3 with SDRAM, Successor
of [ULX2S](http://github.com/emard/ulx2s).
7 years ago
7 years ago
3D preview
![TOP](/pic/ulx3st.jpg)
![BOTTOM](/pic/ulx3sb.jpg)
[Manual](/doc/MANUAL.md).
7 years ago
This is a small (94x51 mm) standalone FPGA board
7 years ago
for education, research and general purpose, with a full
featured selection of chips which I all wanted on
7 years ago
a low-cost PCB, but haven't found on the market.
It's open source and open hardware because if it is
7 years ago
good for our development of [f32c](http://github.com/f32c/f32c) SOC,
7 years ago
it should be also good to other projects.
7 years ago
ULX3S will carry all digital logic on our research, education and
7 years ago
makerspace projects in next 5 years.
7 years ago
ULX3S is standalone embeddable gadget with onboard display, buttons,
7 years ago
storage, WiFi and compatible connectors.
7 years ago
ULX3S can do things no other board can.
7 years ago
ULX3S can self-reflash with a bitstream sent
7 years ago
remotely from web interface over WiFi or from SD
card browsed by onboard OLED display and buttons.
7 years ago
ULX3S can completely power down and wakeup from
7 years ago
battery backed RTC.
7 years ago
ULX3S has rich range of chips and connectivity
7 years ago
required for many other open source projects:
SDRAM, USB, PS/2, SDCARD, HDMI, FLASH, RTC, I2C, OLED, AUDIO, ADC,
7 years ago
onboard FM/ASK antenna 88-433.92 MHz and 56 GPIO pins which
7 years ago
are all routed as differential pairs and have pinout that
is PMOD compatible.
7 years ago
ULX3S is sufficiently equipped to
emulate [Amiga](https://github.com/emard/Minimig_ECS) retro
computer and run its games, but can do much more.
7 years ago
[Schematics](/doc/schematics.pdf) and PCB are done in open source KiCAD 5 PCB editor:
7 years ago
8 years ago
kicad ulx3s.pro
8 years ago
# Features
7 years ago
FPGA: Lattice ECP5 LFE5U-85F-6BG381C (85K LUT)
8 years ago
7 years ago
USB: FTDI FT231XS (300kbit JTAG and 3Mbit USB-serial)
8 years ago
7 years ago
GPIO: 56 pins (28 differential pairs), PMOD-friendly
8 years ago
RAM: 32MB SDRAM MT48LC16M16
7 years ago
Flash: 4MB Quad-SPI Flash IS25LP032D for FPGA config
8 years ago
Storage: Micro-SD slot
7 years ago
LEDs: 11 (8 blink-LEDs, 2 USB LEDs, 1 WiFi LED)
7 years ago
Buttons: 7 (4 direction, 2 fire, 1 power button)
7 years ago
Audio: 3.5 mm jack with 4 contacts (analog stereo + digital audio or composite video)
8 years ago
Video: GPDI connector with 3.3V-5V I2C bidirectional level shifter
7 years ago
Display: placeholder for 0.96" SPI COLOR OLED
7 years ago
WiFi+bluetooth: placeholder for ESP-32 (Standalone JTAG web interface over WiFi)
7 years ago
ADC: 8 channels, 12 bit, 1 MSa/s MAX11125
7 years ago
Power: 3 Switching voltage regulators: 1.1V, 2.5V, 3.3V
8 years ago
7 years ago
Clock: 25 MHz onboard, external differential clock input
7 years ago
Low power sleep: RTC clock wakeup, power button, 32768 Hz quartz and battery
8 years ago
8 years ago
GPDI is General Purpose Differential Interface,
Electrically LVDS, mostly TMDS tolerant
female receptacle more-or-less compatible
8 years ago
with digital monitors/TVs
7 years ago
# Production
If you are going to order this project by yourself, it is important
what manufacturer to choose for PCBA (PCB and Assembly) service.
Choose PCBA manufacturer which can produce PCB of IPC CLASS 3 quality,
5/5 mil trace resolution and 0.2 mm holes.
Avoid manufacturer who claims "quality" and "satisfaction" but doesn't
really know what will be IPC CLASS rating for this project.
PCBA manufacturer prices for the parts should be approximately equal as those
7 years ago
from distributors like [Mouser](http://www.mouser.com) or [DigiKey](http://www.digikey.com).
7 years ago
Avoid any PCBA manufacturer who asks 3$ for the 1$ part or 40$ for the 30$ part.
7 years ago
Select [Mouser](http://www.mouser.com) language/location icon to PCBA manufacturer
7 years ago
country of origin and $-currency to check is PCBA manufacturer telling the truth
about prices.
7 years ago
[PCBWAY](http://www.pcbway.com) produced [ULX3S v1.7 45F](/pic/ulx3sb-v17.jpg) in
7 years ago
December 2017 at above of CLASS 3 quality, $126 per
7 years ago
board. They produced [ULX3S v1.8 85F](/pic/ulx3sb-v18.jpg) in
May 2018. Boards look like on the edge of CLASS 1 quality acceptance
7 years ago
(drill randomness and copper layer
7 years ago
misaligment, [some holes have breakout near 180°](/pic/ulx3sb-v18-breakout-c19.png)),
while they claim it is still CLASS 2 compliant.
7 years ago
They charged $134 per board but agree to return money. [PCBWAY](http://www.pcbway.com) is
7 years ago
cheap at boards and assembly but
charged $40 for FPGA 85F chip which costed about $30 on [Mouser](http://www.mouser.com) at
7 years ago
that time.
7 years ago
7 years ago
[PCBCART](http://www.pcbcart.com) would be my next choice because they
7 years ago
offer CLASS 3 quality and assembly at reasonable cost. Prices for the
7 years ago
parts are equal as from [Mouser](http://www.mouser.com) so total price per
7 years ago
board should be about the same as above.
8 years ago
7 years ago
Don't pay everything at once. Following payment phases during the
PCBA production are recommended:
1. Pay for the parts
7 years ago
2. Manufacturer orders the parts and optionally negotiates with you about part numbers.
7 years ago
Depending on market availability, some parts may come in different physical package.
3. Send updated gerbers which fit to ordered parts.
7 years ago
4. Pay for PCB
5. Manufacturer sends pictures of produced PCB for your inspection.
If anything looks suspicious, ask also for X-ray imaging.
6. Pay for the assembly and shipping.
7 years ago
Nobody wants quality issues, so it is good to ask if manufacturer has qualified personnel
7 years ago
able to follow instructions
for [ULX3S self-test](https://github.com/emard/ulx3s-bin) before shipping.
7 years ago
8 years ago
# Todo
8 years ago
7 years ago
Here is checklist what was done or should be done in the next PCB release.
8 years ago
7 years ago
[x] Silkscreen Double outline for BGA chip
7 years ago
[x] Silkscreen do not write over the solder pads
[x] Silkscreen JTAG signal names on 6-pin 2.54 mm header
[x] Silkscreen remove OLED outline
[x] Solder stop mask must go inbetween all SMD chip pads
7 years ago
[x] External differential clock input at J1_33 +/-
[x] physically sprinkle VCC blocator capacitors under BGA
7 years ago
[ ] Values on silkscreen
7 years ago
[x] Dedicated antenna pin
[x] onboard 433 antenna
7 years ago
[x] 433 remove GND and silkscreen test point
[x] Resistors for LEDs
8 years ago
[x] Move USB LEDs from bottom to top side
7 years ago
[x] Improve SDRAM routing - use VIAs for closest pins
8 years ago
[x] Increase thickness of power lines (5V, 3.3V, 2.5V)
[x] Compile a f32c bitstream using the schematics
7 years ago
[x] Compile differential GPDI output
[x] Connect more lines from ESP-32 to FPGA
[x] Connect FPGA USB D+/D- with 1.5k pullup in USB 1.1 (full speed) mode
[x] FPGA USB add 27 ohm + 3.6 V zener
[x] Symmetrically place USB connectors left-right
8 years ago
[x] External JTAG header
[x] Move JTAG 2 mm left
[x] Move WiFi Disable jumper closer to the BTN1 (angled header)
7 years ago
[x] Sprinkle 2.2uF capacitors on power lines
7 years ago
[x] Spice simulation of power-up/shutdown network
[x] 27ohm D+/D- to FT231XS
7 years ago
[x] DIP switch (4 switches)
7 years ago
[x] MAX11123 ADC SPI
[x] I2C for RTC
[x] main usb connector on top side
[x] space screw to other parts
[x] move battery away from screw hole
[x] top layer GND fill
[x] R25 move away from oled screw hole
[x] DIP switch to the right near RAM
[x] Move HDMI a bit closer to OLED
[x] 32768Hz oscillator footprint
[x] SD card footprint SCHD3A0100
[x] center the SD footprint for T&R
[x] SD connect GND (thin pins)
[x] move USB 0.5-1mm more out
[x] DIP SW footprint correct
[x] AUDIO jack footprint fits
7 years ago
[x] AUDIO jack pin 4 (ring2) connected to 4-bit DAC
[x] BTN footprint too small
7 years ago
[x] SMPS jumpers default OFF for prototype testing
7 years ago
[x] FPGA DONE to ESP-32
7 years ago
[x] Diodes manual soldering
7 years ago
[x] R56: FT231X rev A,B,C TXDEN to GND
workaround from TN140_FT231X Errata
7 years ago
[x] PCB for LFE5UM ready (some GND will change to
7 years ago
VCC for Serdes power supply, see LFE5U->LFE5UM
7 years ago
migration docs)
7 years ago
[x] Check GND/VCC for 45 and 85 packages,
for example pin T11 is NC on 25U, GND on 85U and VCC ond 85UM
7 years ago
[x] Reconnect WIFI_OFF so that jumper has priority
7 years ago
[x] 25MHz oscillator: needs clearance from LEDs, move under USB1
[x] connect SHUTDOWN to FPGA
7 years ago
[x] ESP-32: won't boot when SD connected. Don't solder it at PCB v1.7
7 years ago
It is routed differently in newer release
7 years ago
Arduino->Examples->ESP32->SD_MMC_Test
https://github.com/espressif/esp-idf/blob/master/examples/storage/sd_card/README.md
7 years ago
moved blue LED from GPIO2 to GPIO5
7 years ago
[x] I2C resistors increased 470->2.2k
7 years ago
[x] GPDI AC-coupling 100nF to each differential line.
[x] reliable shutdown (D11=RED LED, R4=4.7k)
[x] SDRAM raster back to 0.8 mm
7 years ago
[x] connect SPI Flash Quad Mode (QSPI)
[x] allow powering the board without powering FTDI chip
[ ] reverse D9 at US2 to draw power from usb instead of provide it
7 years ago
[x] micro USB extended pads for Handsoldering (already were extended)
[x] move 25MHz oscillator away from USB connector for handsoldering
7 years ago
[x] schematics gpio J..+- pins renamed to gp/gn for easier readability
7 years ago
[ ] route 16-channel ADC
7 years ago
[x] move 8 LEDs a bit down and right
[x] let SD_CLK go to FPGA clock capable pin: swap SD_CLK and SD_D2 pins
7 years ago
[x] additional 2 differential lines for US2
7 years ago
[x] additional US2 pins for pullup 1.5k
[x] additional US2 pins for pull up-down 15k
7 years ago
[x] unified US2 pullup/down: resistor-diode nework for pullup 1.5k and pulldown 15k
[x] clear silkscreen mess with Cx under FPGA
7 years ago
[x] power decoupling capacitors for ESP32 and OLED
[x] Connect switching power supply jumpers
7 years ago
[ ] every 1-2 seconds there are clicks at analog audio output
7 years ago
[x] 3.6V zener diodes must be on FPGA side
[x] can esp32 second tx/rx port make serial communication with FPGA
7 years ago
[x] Jumper to switch 2.5V/3.3V for left IO banks
[x] move usb pull from gpio bank0 to gpdi bank1
7 years ago
[x] isolate each PMOD group to each io bank
7 years ago
[ ] move GP7,GP8 from gpio bank0 to gpio bank7
7 years ago
[x] route selected voltage to VCCio0/7
[x] route selected voltage to J1 PMOD instead of 3.3V fixed
7 years ago
[x] more bank0,1,7 decoupling capacitors
7 years ago
[x] Move Jumper 2.5V/3.3V deeper inside PCB (angled header)
7 years ago
[x] 0R resistor placeholders to hardwire 2.5V/3.3V instead of the jumper
7 years ago
[x] Selected 2.5/3.3V to J1 header (instead fixed 3.3V)
7 years ago
[x] RTC battery capacitor
[x] battery + pad clearance
7 years ago
[x] PCB v1.8.1 redesigned to fit HDMI 649-10029449-111RLF (the cheapest)
7 years ago
[ ] use cheaper diodes 583-MM4148-T in SOD-80C package
[x] fix copper layer after using non-handsoldering resistor footprints
7 years ago
[x] DIP switch must be pulled up at 2.5/3.3V or 2.5V line, not 3.3V
7 years ago
[x] RTC time loss at power down fixed with 1k+22uF - see page 54 of datasheet
[x] Rotate SD card 180° for easier front loading
7 years ago