Add AXI SD Card controller
In the old version, we used a simple SPI controller which was only 1 step removed from bit-banging the whole thing.
We have a few options for this:
- Use the Efinix SD Card IP. This would be easy since it is already AXI, but we don't want to use proprietery cores. As mentioned in their terms of service:
No right is granted hereunder to use the Licensed Software to program or develop designs for non-Efinix Devices.
- Use a core from OpenCores, such as https://opencores.org/projects/sdcard_mass_storage_controller. This has the advantage of being already written, but as with most cores on OpenCores it uses the wishbone bus instead of AXI. We would have to either modify it or add a wishbone to AXI adapter.
- Write our own controller, perhaps using the above and others as inspiration
I do want to have a wishbone to AXI converter at some point to use some of the more exotic cores that I don't want to write myself, but for something this essential to the system I want to write it myself. I had one earlier but it did not seem to work correctly with my SD card, perhaps with more knowledge I can figure out why.