My device I am developing is an SD Card storage add-on to a retro computer.
San Disk Ultra II 1.0GB SD Card in SD Card socket
(no idea if brand is significant, just happens to be what I have).
SD Card is the only device on the SPI bus.
Level shifter ensures card is fed signals at 3.3V.
MISO feeds via bus-switch to 3.3V FPGA.
The FPGA implements a clocked shift register mechanism, which clocks 8 times, shifting out output data to MOSI and capturing input data from MISO.

Many devices attached to many computers work fine.

I use SPI mode. I initalise the card, speed up to 4MHz, and send the read single block command.

I observe that first data byte returned occasionally has a 1 bit corruption. Typically bit 0 is set when shouldn't be, but have also seen bit 1 set when shouldn't be.
All other bytes are perfectly correct, always.

Multiple devices tested attaching to multiple host computers.
Problem only seen with one device attaching to one computer.
Device or computer works fine with other computers or devices.

I suspected timing errors in my driver code, but I am sure I have done the 8 clock cycles (sending 0xFF, reading first data byte) before I read it.


I'm wondering, could this be related to voltage or current levels, which might be subtly different depending on device or computer.
I'm wondering, does an SD Card suddenly need to draw extra current, just as it starts to output data?


Ideas?