Skip to the content
PCBKitNew board
4 layers165 × 107 mmSpla board, the printed circuit board in 3D

SNES PPU Logic Analyzer

Size
165 × 107 mm
Copper layers
4
Thickness
1.6 mm
Parts
290
Nets
451
Pads
1,590
Tracks, vias
3,885, 710
Pours
7
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
2 Apr 2020
Updated
10 Oct 2020

Overview

Spla board is an open-source printed circuit board by khaydarian, from the khaydarian/spla repository on GitHub. It is a 4-layer board of 165 × 107 mm with 290 parts on 451 nets, routed with 3,885 tracks and 710 vias.

It is built around the 74LVC1G17Z, LMH6611MK and ST1S10PHR, with the 74LVC8T245PW, 93LC66B/P and FT2232HL among its other parts. Its parts include 100 capacitors, 88 resistors, 37 ICs, 12 connectors and 10 diodes. It belongs with the sensors and measurement and retro computing and games boards and the FPGA and CPLD boards of this library.

Main components

12

README

README.md

SPLA: Super Nintendo PPU Logic Analyzer

The 1990-era Super Nintendo Entertainment System is a venerable gaming console, and although its hardware is aging and hard to come by, it has long had well-establish software emulators, preserving gaming history for generations to come.

However, while most of the SNES hardware has been effectively reverse-engineered by writing test programs for the CPU (sometimes taking advantage of undocumented behavior to figure out details), one remaining component of the console has resisted complete analysis: the "Picture Processing Unit" chips, PPU-1 and PPU-2.

The PPU chips are together responsible for managing the sprites, backgrounds, and palettes for each frame of a game's video output, and produce the analog scanline signal in realtime, which then appears on the player's TV. However, the output video signals (and video ram bus) are entirely inaccessible to SNES CPU, thus making analysis of the exact timing details of these chips difficult or impossible.

A very few games for the SNES (particularly Air Strike Patrol) use the SNES video hardware in unexpected ways, which depend on the detailed timing of the PPU chips during scanline rendering. This makes accurately emulating these games' graphics difficult -- emulator developers have to manually compare emulator output with what the game actually shows on the screen, and try to guess how the PPU evaluates these unusual configurations. Without complete understanding of the chips operation, this process degenerates into a frustruating game of whack-a-mole.

To be confident that we have faithfully reproduced the entire SNES, we need to characterize all the PPU outputs at the level of individual clock cycles, and rigorously compare the behavior of a software emulator to that of the actual, physical chips.

This project is intended to design a breakout circuit board, integrating the SNES PPU chips from a real vintage SNES console, combined with surrounding modern hardware, to effectively form a >100-pin-wide digital logic analyzer, combined with single-frame analog video capture system. With this board built, and sufficient supporting software written, it should be possible to experimentally characterize the entire operation of the PPU chips, thus producing a completely cycle-accurate emulation of the SNES video hardware.

Current Status

  • Design complete.
  • Schematic complete.
  • PCB layout complete.
  • Schematic and PCB review complete (enough).
  • Lab setup essentially complete.
  • Bringup started.
    • Power bringup complete.
    • USB / FTDI bringup complete.
    • FPGA bringup complete.
    • Level shifter bringup complete.
    • SNES bringup complete.
    • Analog bringup pending.
  • Software development in progress.
    • Early bringup and testing software complete.
  • RTL development in progress.
    • All bringup images complete.
    • Low-speed driver image in progress.
    • High-speed driver image pending.

Design components

  • The USB interface to a host PC is based on an FTDI FT2232H chip, which can drive up to 60MBps (USB 2.0 "Full Speed" maximum throughput).
  • A Lattice ECP5 FPGA, which forms the central brains of the board.
  • Both SNES PPU chips, and their corresponding video SRAM chips (which are standard 32KiB 8-bit SRAM chips, but are old enough that they're hard to source).
  • A whole bunch of 3.3V / 5V level shifter chips (74LVC8T245), as the SNES chips are 5V TTL, but almost everything modern is 3.3V at most.
  • Three ADC1173 high-speed 8-bit analog-to-digital converter chips, to capture the analog RGB signal output and convert it back to digital for analysis. This also requires a handful (5) of LMH6611 opamps to drive the ADC inputs and establish reliable references.

References

Parts

290
QtyValueFootprintReferences
380.1uFCapacitor_SMD:C_0603_1608MetricC10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C107, C151, C152, C207, C251, C252 +22
270Resistor_SMD:R_0603_1608MetricR101, R102, R103, R108, R109, R111, R201, R202, R203, R208, R209, R211, R301, R302, R303, R308 +11
2110kResistor_SMD:R_0603_1608MetricR30, R31, R32, R33, R34, R35, R36, R37, R38, R39, R40, R50, R51, R52, R53, R54 +5
16JumperSPLA:BoMBOM10, BOM11, BOM12, BOM13, BOM14, BOM15, BOM16, BOM17, BOM18, BOM19, BOM20, BOM21, BOM22, BOM23, BOM24, BOM25
150.01uFCapacitor_SMD:C_0402_1005MetricC20, C21, C22, C23, C24, C25, C26, C27, C28, C29, C30, C31, C32, C33, C34
1574LVC8T245Package_SO:TSSOP-24_4.4x7.8mm_P0.65mmU20, U21, U22, U23, U24, U25, U26, U27, U28, U29, U30, U31, U32, U33, U34
14NOSTUFFCapacitor_SMD:C_0603_1608MetricC1, C2, C101, C102, C109, C111, C201, C202, C209, C211, C301, C302, C309, C311
1110uFCapacitor_SMD:C_0603_1608MetricC108, C153, C154, C208, C253, C254, C308, C353, C354, C408, C508
10LEDLED_SMD:LED_0805_2012MetricD1, D2, D3, D4, D5, D6, D7, D8, D9, D10
9330Resistor_SMD:R_0603_1608MetricR20, R21, R22, R23, R24, R25, R26, R27, R28
6NOSTUFFResistor_SMD:R_0603_1608MetricR1, R2, R3, R104, R204, R304
54.7uFCapacitor_SMD:C_0603_1608MetricC51, C52, C53, C83, C93
5LMH6611Package_TO_SOT_SMD:TSOT-23-6U61, U62, U63, U74, U75
41.65k, 1%Resistor_SMD:R_0603_1608MetricR121, R221, R321, R601
4100pFCapacitor_SMD:C_0603_1608MetricC401, C402, C501, C502
410uFCapacitor_SMD:C_0805_2012MetricC78, C79, C81, C91
41uFCapacitor_SMD:C_0603_1608MetricC71, C72, C73, C74
433kResistor_SMD:R_0603_1608MetricR401, R402, R501, R502
4Hex Standoff FemaleSPLA:BoMBOM6, BOM7, BOM8, BOM9
4Hex Standoff MaleSPLA:BoMBOM2, BOM3, BOM4, BOM5
4MountingHole_PadMountingHole:MountingHole_3.2mm_M3_PadH1, H2, H3, H4
31k, 1%Resistor_SMD:R_0603_1608MetricR82, R92, R603
3301, 1%Resistor_SMD:R_0603_1608MetricR122, R222, R322
3649, 1%Resistor_SMD:R_0603_1608MetricR123, R223, R323
3ADC1173Package_SO:TSSOP-24_4.4x7.8mm_P0.65mmU51, U52, U53
222uFCapacitor_SMD:C_0805_2012MetricC82, C92
23.3uHInductor_SMD:L_Vishay_IHLP-2020L1, L2
24.7nFCapacitor_SMD:C_0805_2012MetricC84, C94
274LVC1G17Package_TO_SOT_SMD:SOT-353_SC-70-5U4, U5
2ST1S10PHRSPLA:ST_PowerSO-8EP_4x5mm_P1.27mm_EP3.5x2.6mmU8, U9
1100Resistor_SMD:R_0603_1608MetricR5
112k, 1%Resistor_SMD:R_0603_1608MetricR8
12.2kResistor_SMD:R_0603_1608MetricR4
13.09k, 1%Resistor_SMD:R_0603_1608MetricR91
13.48k, 1%Resistor_SMD:R_0603_1608MetricR602
14.7kResistor_SMD:R_0402_1005MetricR6
15.23k, 1%Resistor_SMD:R_0603_1608MetricR81
156pFCapacitor_SMD:C_0603_1608MetricC49
1750Resistor_SMD:R_0603_1608MetricR7
193LC66BPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU3
1Barrel_JackConnector_BarrelJack:BarrelJack_CUI_PJ-036AH-SMT_HorizontalJ1
1FT2232HPackage_QFP:LQFP-64_10x10mm_P0.5mmU2
1FT5HNBPK12.0-T1Crystal:Crystal_SMD_5032-4Pin_5.0x3.2mmX1
1JS202011SCQNSPLA:JS202011SCQNSW2
1J_ANALOGConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ12
1J_AREFConnector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_VerticalJ10
1J_AREF_AMPConnector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_VerticalJ11
1J_BODGEConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ6
1J_DPULLConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ9
1J_EXTRAConnector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ5
1J_JTAGConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ4
1J_POWERConnector_PinHeader_2.54mm:PinHeader_2x08_P2.54mm_VerticalJ2
1J_PPURESETConnector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ8
1J_SAMPLEConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ7
1LFE5U-45F-BG256Package_BGA:BGA-256_14.0x14.0mm_Layout16x16_P0.8mm_Ball0.45mm_Pad0.32mm_NSMDU1
1PTS645SPLA:PTS645-SMTR92SW1
1SNES_PPU1SPLA:QFP-100_14x20mm_P0.65mmU10
1SNES_PPU2SPLA:QFP-100_14x20mm_P0.65mmU11
1TLV73311PDBVPackage_TO_SOT_SMD:SOT-23-5U7
1TLV73325PDBVPackage_TO_SOT_SMD:SOT-23-5U6
1TLV73333PDBVPackage_TO_SOT_SMD:SOT-23-5U80
1TP_12MHZTestPoint:TestPoint_Pad_D1.0mmTP6
1TP_12VTestPoint:TestPoint_Pad_D2.0mmTP3
1TP_1V8TestPoint:TestPoint_Pad_D1.0mmTP5
1TP_AREF_HITestPoint:TestPoint_Pad_D1.0mmTP7
1TP_AREF_LOTestPoint:TestPoint_Pad_D1.0mmTP8
1TP_AVCCTestPoint:TestPoint_Pad_D1.0mmTP9
1TP_FPGA_XINTestPoint:TestPoint_Pad_D1.0mmTP1
1TP_GNDTestPoint:TestPoint_Pad_D2.0mmTP4
1TP_TAP_XINTestPoint:TestPoint_Pad_D1.0mmTP2
1USB CableSPLA:BoMBOM1
1USB_B_MicroConnector_USB:USB_Micro-B_Wuerth_629105150521J3
1VRAM_ASPLA:SOP-28_17x8mm_P1.27mmU12
1VRAM_BSPLA:SOP-28_17x8mm_P1.27mmU13

Questions

How big is the Spla board PCB?

It measures 165 × 107 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Spla board use?

290 parts, built around the 74LVC1G17Z, LMH6611MK, ST1S10PHR and 74LVC8T245PW. 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 Spla board KiCad files?

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

Can I use the Spla board design in my own project?

Its repository states no licence, so its author keeps all rights: ask khaydarian before reusing the design.

Similar boards

  • 6 layers125 × 125 mmLibreboard broken, the printed circuit board in 3D

    Libreboard broken

    256foundation/libreboard

    Open Source Bitcoin Mining Control Board

    193 parts21CERN-OHL-S-2.0
  • 6 layers42.2 × 61.4 mmDap proto board full, the printed circuit board in 3D

    Dap proto board full

    tsar-boomba/dap-proto-board-full

    The culmination of all of my learning during the Spring '26 semester. All the way from making a simple dev board for the TAD5212 DAC, to making a RP2350 board, and now this. Everything combined on one 6-layer board.

    102 parts1
  • 4 layers180 × 160 mmPCE colorlight carrier, the printed circuit board in 3D

    PCE colorlight carrier

    supermomo31/PCE_colorlight_carrier

    console PCE depuis un FPGA format SODIMM : colorlight i5

    258 parts
  • 2 layers51.4 × 61 mmGB MBCTEST, the printed circuit board in 3D

    GB MBCTEST

    Gekkio/gb-hardware

    Game Boy -related custom hardware by gekkio

    36 parts379CC-BY-4.0
  • 4 layers80 × 100 mmIce40 breakout, the printed circuit board in 3D

    Ice40 breakout

    RubenVoell/iceduino

    The basic idea behind this project is to create a simple breakout of an ICE40 FPGA with some LEDs and Buttons to interact with the FPGA and enough resources to run a simple softcore, like a small RISC-V core.

    248 parts3
  • 2 layers54.4 × 22.9 mmCurrent, the printed circuit board in 3D

    Current

    ataradov/current

    Current profiler

    55 parts1
  • 2 layers45 × 63.5 mmMotor driver, the printed circuit board in 3D

    Motor driver

    CK20000/Isolated-Half-Bridge-Driver

    An isolated half-bridge motor driver board featuring 6N137 galvanic protection, an IR2101 bootstrap topology, and precise AD8418 bidirectional current sensing.

    50 parts1MIT