Project maintainers


Name: spimaster
Created: Apr 11, 2008
Updated: Nov 24, 2014
SVN Updated: Mar 10, 2009
SVN: Browse
Latest version: download (might take a bit to start...)
Statistics: View
Bugs: 2 reported / 0 solved
Star12you like it: star it!

Other project properties

Category:Communication controller
Development status:Stable
Additional info:Design done, FPGA proven
WishBone compliant: Yes
WishBone version: n/a
License: GPL


SD (Secure Digital) and MMC memory card controller with Wishbone slave interface. Handles all aspects of card initialization, 512 byte block read, and block write. Hides the complicated SD/MMC memory interface, and presents the user with a simple Fifo interface. Provides transfer speeds up to 24Mbps.
If combined with the fpgaConfig project: http://opencores.orgproject,fpgaconfig
then it is possible to configure an FPGA from SD memory. If the FPGA configuration includes this core (spiMaster) and a softcore processor, then the processor can copy a software image from SD memory into RAM, and then execute from RAM. Thus a complete FPGA softcore processor can be implemented with just an FPGA, DRAM, and SD card.
See fpgaConfig used in a complete project at:


- Simple interface to SD cards up to 2GB
- SD Initialization
- SD 512 byte block write
- SD 512 byte block read
- Data access up to 24Mbps
- 8-bit Wishbone slave interface
- Separate Wishbone and core logic clocks
- Simulation files
- 900 logic cells in Altera Cyclone2


Tested in FPGA.
The following mods and additions could be useful:
- Interrupt line.
- Card detect.
- Master wishbone interface would be nice, so that DMA transfers to memory could be performed.
- SD/MMC memory card simulation model needs improvement. The model does not parse the commands from the core, and does not provide any storage.
- Multiple SPI chip select support.
- Larger Fifos to allow simultaneous processor and core Fifo access.


Release 1.2 now available. New version modifies read timing which was marginal for some SD cards.