SD card

SD card controllers (SPI mode, SDIO) and FAT helpers.

Core Repository Language License FPGA Used by
ZipCPU sdspi SPI-mode SD controller ★ zipcpu__sdspi Verilog GPL-3.0 (per-file headers) any 0
MiSTer sd_card.sv (Harbaum/Sorgelig) gojimmypi__z80386-ulx3s-doom SystemVerilog LGPL-3.0-or-later any 0
sd_controller (Searle/Edwards derived) SD reader lawrie__ulx3s_cpm_z80 Verilog custom permissive any 1
SDKarte SD card reader logoposeidon__ulx3sjukebox Verilog none found ECP5 0
Silice sdcard SPI controller sylefeb__silice Silice MIT (file header + LICENSE_MIT) any 0

Cores

ZipCPU sdspi SPI-mode SD controller (best)

Wishbone-B4 SPI-mode SD/MMC controller, no vendor primitives, ~60 SymbiYosys formal proofs. “Silicon proven” per the author. Maps directly onto the ULX3S sd_clk/sd_cmd/sd_d[0]/sd_d[3] pins (shared with the ESP32).

   
Repository zipcpu__sdspi: SD-Card cores
Files rtl/spi/sdspi.v, rtl/spi/llsdspi.v, rtl/spi/spicmd.v, rtl/spi/spirxdata.v, rtl/spi/spitxdata.v
Top module sdspi
Language Verilog
License GPL-3.0 (per-file headers)
FPGA / primitives any: none (portable)
Tests formal (SymbiYosys, ~60 proofs in bench/formal/); Verilator/Icarus models in bench/cpp, bench/verilog

On ULX3S: Wire o_sck->sd_clk, o_mosi->sd_cmd, i_miso<-sd_d[0], o_cs_n->sd_d[3] per ulx3s_v20.lpf; ESP32 firmware must release these pins first.

Full review: zipcpu__sdspi.

MiSTer sd_card.sv (Harbaum/Sorgelig)

The well-known MiSTer-framework SD-card core (WIDE/OCTAL parameters), vendored as part of the ao486-derived PC-SoC peripheral set; not yet wired into the ULX3S probe top in this repo (CPU-only today).

   
Repository gojimmypi__z80386-ulx3s-doom: CPU-only bring-up of the z386
Files third_party/z386_MiSTer/sys/sd_card.sv
Top module sd_card
Language SystemVerilog
License LGPL-3.0-or-later (Till Harbaum 2014 / Sorgelig 2015-2018, file header)
FPGA / primitives any: none (portable)
Tests none found

On ULX3S: Widely used and battle-tested across the MiSTer ecosystem; LGPL-3.0+ copyleft on modifications to the file itself.

sd_controller (Searle/Edwards derived) SD reader

Single-block SD read/write stream controller adapted from Steven Merrifield’s design via the Apple II emulator (Stephen Edwards) and Grant Searle’s Z80 boards; used to load CP/M disk images on the ULX3S CP/M-Z80 build.

   
Repository lawrie__ulx3s_cpm_z80: CP/M on Z80
Files src/Components/SDCARD/sd_controller.v
Top module sd_controller
Language Verilog
License custom permissive (Grant Searle acknowledgement clause: free to use, must credit, must not charge)
FPGA / primitives any: none (portable)
Tests none found

On ULX3S: License requires attribution to Grant Searle and forbids charging for the file; simple enough to read/port in an afternoon.

Used by 1 other catalogued repo (file copies or module instances found by scan_core_usage.py; heuristic):

SDKarte SD card reader

Standalone SD card reader feeding a FIFO for a ULX3S MP3/audio jukebox project (song selection via buttons); small, single-purpose block.

   
Repository logoposeidon__ulx3sjukebox: SD-card PCM jukebox / audio player for ULX3S
Files SDKartenLeser.v
Top module SDKarte
Language Verilog
License none found
FPGA / primitives ECP5: none (portable)
Tests none found

On ULX3S: No license header; treat as all-rights-reserved until clarified with the author before reuse.

Silice sdcard SPI controller

SDHC/SDXC-only SD controller written in Silice, kept in slow-transfer mode throughout; author reports it tested working at 25, 50 and 100 MHz. Part of the ULX3S-supporting Silice board framework.

   
Repository sylefeb__silice: Silice HDL language/compiler + many ULX3S projects
Files projects/common/sdcard.si
Top module sdcard
Language Silice
License MIT (file header + LICENSE_MIT)
FPGA / primitives any: none (portable)
Tests none found

On ULX3S: Requires the Silice compiler (yosys+nextpnr-ecp5 backend, GPL-3.0) rather than being usable as plain Verilog/VHDL.

Full review: sylefeb__silice.

Other catalogued projects

Catalogued repos tagged sdcard (54) are listed in the full catalogue.


Back to top

Generated from the JSON in data/ by the scripts in .claude/skills. Facts cite the upstream file at the reviewed commit; verify before reuse.

This site uses Just the Docs, a documentation theme for Jekyll.