# ULX3S PCB

This is work-in-progress place for putting
some wishes of a small (94x51 mm) FPGA board.

Instead of describing in written, 
it is better explained when drawn in kicad:

    kicad ulx3s.pro

[Schematics](/doc/schematics.pdf) is mostly complete.
PCB routing is complete, but needs improvement
mainly for the power supply.

3D preview

![TOP](/pic/ulx3st.jpg)
![BOTTOM](/pic/ulx3sb.jpg)

# Features

FPGA: Lattice ECP5 LFE5U-25F-6BG381C

USB: FTDI FT231XS (1Mbit JTAG and 3Mbit usbserial)

GPIO: All differential, PMOD-friendly

RAM: 32MB SDRAM MT48LC16M16

Flash: 8MB SPI flash S25FL164 for FPGA config

Storage: Micro-SD slot

LEDs: 10 (8 blink-LEDs, 2 USB leds)

Buttons: 6 (4 direction and 2 fire buttons)

Audio: 3.5 mm stereo jack

Video: GPDI connector with 3.3V-5V I2C bidirectional level shifter

Display: placeholder for 0.96-1.3" SPI OLED COLOR or B/W

WiFi+bluetooth: placeholder for ESP-32 (JTAG and serial over WiFi possible)

Power: 3 Switching voltage regulators: 1.2V, 2.5V, 3.3V

Low power sleep: RTC clock wakeup, quartz and battery


GPDI is General Purpose Differential Interface,
Electrically LVDS, mostly TMDS tolerant
female receptacle more-or-less compatible
with digital monitors/TVs


# Todo

Finish routing and especially improve Power
section (thicker power lines, separately routed feedback)

    [x] Silkscreen Double outline for BGA chip
    [x] Solder stop mask must go inbetween all SMD chip pads
    [ ] Do not write silkscreen over the pads
    [ ] Silkscreen BGA names on ESP32 placeholder
    [x] Silkscreen remove OLED outline
    [ ] Thinner copper, more spacing to SDRAM-FPGA
    [ ] physically sprinkle VCC blocator capacitors under BGA
    [ ] Values on silkscreen
    [ ] Dedicated antenna pin
    [ ] onboard 433 antenna (lower side, remove GND infill)
    [x] Resistors for LEDs
    [x] Move USB LEDs from bottom to top side
    [ ] Improve SDRAM routing - use VIAs for closest pins
    [x] Increase thickness of power lines (5V, 3.3V, 2.5V)
    [x] Compile a f32c bitstream using the schematics
    [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 
    [ ] Jumpers to switch 2.5V/3.3V for left IO banks
    [x] External JTAG header
    [ ] Move WiFi Disable jumper above the buttons
    [x] Sprinkle 2.2uF capacitors on power lines
    [ ] Spice simulation of power-up/shutdown network
    [x] 27ohm D+/D- to FT231XS
    [x] DIP switch (4 switches)
    [x] MAX11123 ADC SPI
    [x] I2C for RTC
    [x] main usb connector on top side 
    [ ] space screw to other parts
    [x] move battery away from screw hole
    [ ] move 32k to the right
    [x] top layer GND fill
    [x] R25 move away from oled screw hole
    [ ] board cut off nothches inisde for space saving
    [x] DIP switch to the right near RAM
    [ ] move HDMI a bit closer to OLED

