Skip to the content
4 layers173 × 134 mmCha, the printed circuit board in 3D

SD to AES project

Size
173 × 134 mm
Copper layers
4
Thickness
1.6 mm
Parts
117
Nets
258
Pads
998
Tracks, vias
3,119, 787
Pours
13
Routed
Yes
KiCad
KiCad 7 (file 20221018)
Created
13 Oct 2026
Updated
22 Oct 2026

Overview

Cha is an open-source printed circuit board by DocteurPCB, from the DocteurPCB/SDAES repository on GitHub. It is a 4-layer board of 173 × 134 mm with 117 parts on 258 nets, routed with 3,119 tracks and 787 vias.

It is built around the ICE40HX4K-TQ144, 74LVC16244ADL and 74AHCT125D, with the 74AHCT16244DGG, 74AHCT244D and 74LVC1G07 among its other parts. Its parts include 73 capacitors, 15 ICs, 12 resistors, 4 connectors and 2 crystals. It belongs with the FPGA and CPLD boards of this library.

Main components

10

README

README.md

SDAES — cartouche SD pour Neo Geo AES

Cartouche ouverte pour Neo Geo AES qui charge les jeux depuis une carte microSD, dans l'esprit de la NeoSD : un menu s'affiche sur la console, on choisit un fichier .neo, la cartouche le charge en mémoire et la console redémarre dessus. Tous les composants se soudent au fer : aucun BGA ni QFN.

État : conception + logiciel vérifiés en simulation, pas encore de prototype matériel. Le code FPGA, le menu, le firmware et les outils sont écrits et testés automatiquement (voir plus bas) ; les circuits imprimés restent à dessiner. Le brochage AES est relevé sur le wiki neogeodev (hardware/aes_connector.csv) ; son orientation reste à confirmer sur une vraie cartouche (docs/07-validation-et-feuille-de-route.md).

Principe

  • 4 FPGA Lattice iCE40 en TQFP-144 (un par bus de la console : programme 68000, son ADPCM, sprites, couche fixe + Z80) répondent en temps réel et remplacent les ROM et les puces de cartouche (NEO-273, NEO-ZMC2, NEO-PCM2, banques P et Z80). Chaîne de développement libre (Yosys, nextpnr).
  • 3 SDRAM + 1 SRAM en TSOP contiennent le jeu (jusqu'à 24 Mo de P, 32 Mo de V, 64 Mo de C : tous les jeux commerciaux standards).
  • Un Raspberry Pi Pico 2 (RP2350, ~5 €) lit la carte SD et charge les jeux (~9 Mo/s). Un Raspberry Pi « Linux » ne convient pas pour le bus lui-même (trop peu de GPIO, latence) : voir docs/01-architecture.md.
  • Coût matière estimé : ≈ 70-95 € par cartouche en petite série, montage à la main.

Organisation du dépôt

DossierContenu
docs/architecture, signaux, timings, liaison, menu/firmware, nomenclature, validation
hdl/Verilog des 4 FPGA (prog/ : P et V, cha/ : C et SM, common/) + bancs de test (sim/)
menu/menu Neo Geo : programme 68000 (68k/) et pilote Z80 (z80/)
firmware/rp2350/firmware du Pico 2 (SDK Pico + FatFs SDIO) et test sur PC
protocol/protocole menu ↔ RP2350, partagé
tools/neotool.py (.neo, police, BRAM, code de sécurité, bootlegs avec mame_sets.py), tests
hardware/brochage du connecteur AES (aes_connector.csv), gabarits de contraintes FPGA (.pcf), futurs projets KiCad

Construire et tester

Dépendances (Ubuntu/Debian) : iverilog, gcc-m68k-linux-gnu, z80asm, console-setup-linux (police), Python 3 ; facultatif : yosys + nextpnr-ice40 (ou pip install yowasp-yosys yowasp-nextpnr-ice40), pip install machine68k (émulation du menu).

text
make                               # menu + fichiers d'init BRAM (hdl/build/*.hex)
make SECURITY_FROM=un_jeu.neo      # idem, avec le code de sécurité requis par le BIOS
make test                          # tous les tests (Python + simulations HDL)
make sdaes_test.neo                # ROM de test à copier sur la carte SD
make -C hdl lint pnr YOSYS=yowasp-yosys NEXTPNR=yowasp-nextpnr-ice40   # synthèse + placement-routage des 4 FPGA
python3 tools/neotool.py info jeu.neo

Résultats actuels de make test :

  • 18 tests Python : outils (dont descriptions de protections), firmware sur PC (chargement complet d'un .neo et comparaison des images mémoire), menu 68000 exécuté dans un émulateur ;
  • simulations HDL au niveau carte : tb_prog (FPGA P + V) et tb_cha (FPGA C + SM) en SUCCÈS ; lecture du programme 68000 en 79 ns (126 ns au pire cas) pour une limite estimée à ~125-150 ns ;
  • placement-routage des 4 FPGA à 101-114 MHz pour 100 MHz visés.

Documentation

  1. Architecture
  2. Signaux et niveaux 5 V
  3. Mémoires et timings
  4. Liaison RP2350 ↔ FPGA
  5. Menu et firmware
  6. Matériel et nomenclature
  7. Validation et feuille de route
  8. Cartouches protégées

Avertissements

  • Aucun BIOS, ROM ou code SNK n'est inclus. Le code de sécurité exigé par le BIOS est recopié, à la construction, depuis un jeu que vous possédez.
  • Protections : SMA (KOF 99, Garou, Metal Slug 3, KOF 2000), PVC (Metal Slug 5, SVC Chaos, KOF 2003), KOF 98, PRO-CT0 (Fatal Fury 2, Super Sidekicks), Metal Slug X (P1 corrigée au chargement), Metal Slug 5 Plus et les bootlegs de Metal Slug 5, SVC Chaos et KOF 2003 sont pris en charge (neotool mame fabrique leurs .neo) (détails) ; les tables SMA s'extraient du source de MAME avec neotool.py sma-from-mame. Banques de couche fixe NEO-CMC : KOF 2000, SVC, KOF 2003, Metal Slug 3/4 ; approchées pour Garou.

Parts

117
QtyValueFootprintReferences
57100nCapacitor_SMD:C_0603_1608MetricC2, C10, C11, C12, C13, C14, C15, C16, C17, C18, C19, C20, C21, C22, C23, C24 +41
1210uCapacitor_SMD:C_0805_2012MetricC1, C7, C27, C37, C38, C40, C50, C55, C65, C66, C68, C73
9Entretoise M3MountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4, H5, H6, H7, H8, H9
4100Resistor_SMD:R_0603_1608MetricR5, R6, R10, R11
410kResistor_SMD:R_0603_1608MetricR3, R4, R7, R12
474LVC16244APackage_SO:TSSOP-48_6.1x12.5mm_P0.5mmU3, U4, U5, U6
322uCapacitor_SMD:C_1206_3216MetricC3, C5, C6
20Resistor_SMD:R_0603_1608MetricR1, R2
225 MHz 3,3 VOscillator:Oscillator_SMD_Abracon_ASE-4Pin_3.2x2.5mm_HandSolderingX1, X2
2iCE40HX4K-TQ144Package_QFP:TQFP-144_20x20mm_P0.5mmU12, U14
11uCapacitor_SMD:C_0603_1608MetricC8
133Resistor_SMD:R_0603_1608MetricR8
14,7 µH 3 AInductor_SMD:L_Bourns_SRP5030TL1
1470Resistor_SMD:R_0603_1608MetricR9
174AHCT125Package_SO:TSSOP-14_4.4x5mm_P0.65mmU8
174AHCT16244Package_SO:TSSOP-48_6.1x12.5mm_P0.5mmU7
174AHCT1G32Package_TO_SOT_SMD:SOT-23-5U10
174AHCT244Package_SO:TSSOP-20_4.4x6.5mm_P0.65mmU9
174LVC1G07Package_TO_SOT_SMD:SOT-23-5U11
1AES_CHASDAES:AES_Edge_2x50_P2.54mmJ1
1AP2112K-1.2Package_TO_SOT_SMD:SOT-23-5U2
1AP63203WUPackage_TO_SOT_SMD:TSOT-23-6U1
1AS4C32M16SB-6TINPackage_SO:TSOP-II-54_22.2x10.16mm_P0.8mmU13
1CONF CConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ2
1CONF SMConnector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_VerticalJ3
1Câble PROG-CHAConnector_PinHeader_2.54mm:PinHeader_2x07_P2.54mm_VerticalJ4
1IS61WV10248EDBLL-10TLIPackage_SO:TSOP-II-44_10.16x18.41mm_P0.8mmU15
1LEDLED_SMD:LED_0603_1608MetricD1

More from DocteurPCB/SDAES

1
  • 4 layers174 × 134 mmProg, the printed circuit board in 3D

    Prog

    DocteurPCB/SDAES

    SD to AES project

    147 parts

Similar boards

  • 2 layers104.1 × 71.1 mmMinifp, the printed circuit board in 3D

    Minifp

    eigenco/frankenpi

    This is an experimental project to connect Raspberry Pi with the help of cheap Cyclone IV FPGA board to 8-bit ISA bus to act as multiple different devices.

    69 parts139
  • 6 layers304.8 × 243.8 mmAmigaPCI MainBoard, the printed circuit board in 3D

    AmigaPCI MainBoard

    AmigaPCI/AmigaPCI-MainBoard

    Amiga with Native PCI Bus

    748 parts135
  • 4 layers181.5 × 182.3 mmStencil, the printed circuit board in 3D

    Stencil

    jerry-kerenzikov/ytterbium

    Project files for Ytterbium modular CPU platform and Yprog programming tool

    421 partsCERN-OHL-S-2.0
  • 4 layers70 × 78 mm2067-Z8S180, the printed circuit board in 3D

    2067-Z8S180

    johnwinans/2067-Z8S180

    Z8S180 Breakout Board

    13 parts7
  • 4 layers85.3 × 78 mm2067-Z8S180, the printed circuit board in 3D

    2067-Z8S180

    dennowiggle/Z8S180-WTM

    Repository for sharing Z8S180-WTM design changes only. A private repository.

    53 parts1LGPL-2.1
  • 2 layers100 × 100 mmRamRomBoard, the printed circuit board in 3D

    RamRomBoard

    roberto314/Unicomp3

    A modular 8-bit Computer able to recreate (nearly) every Retro computer of the late 70s to mid 80s.

    97 partsBSD-2-Clause
  • 4 layers92 × 99.5 mmGranit, the printed circuit board in 3D

    Granit

    laenzlinger/granit

    Custom carrier board for Raspberry Pi CM4/CM5 — minimal offsite backup appliance with JMS578 USB-to-SATA bridge

    120 parts2CERN-OHL-P-2.0
  • 2 layers81.9 × 99.4 mmZ80badgev2 BACKUP, the printed circuit board in 3D

    Z80badgev2 BACKUP

    12zcab/Z80BadgeV2

    Z80 Badge V2 for GadgetMarket@ HackClub!

    29 parts1

Questions

How big is the Cha PCB?

It measures 173 × 134 mm and has 4 copper layers, 1.6 mm thick.

What parts does the Cha use?

117 parts, built around the ICE40HX4K-TQ144, 74LVC16244ADL, 74AHCT125D and 74AHCT16244DGG. 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 Cha KiCad files?

From the DocteurPCB/SDAES repository on GitHub, at the commit this page was made from: the board is hardware/kicad/cha/cha.kicad_pcb and its schematic hardware/kicad/cha/buffers.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Cha design in my own project?

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