I just experimented with the delay until the audio sounded about right. I should look in the WAV file header and find the bit rate and adjust the delay accordingly.. The 100 microseconds delay gives a rate of about 10Khz, whereas the file I used was 11.025KHz so the delay ought to be a bit less. I doubt if the file read time is significant and the QSPI transfer rate is so fast that I doubt it that is significant either.
I am currently trying the SD card reading in BlackSoC and have added a fat32 example that reads the file. Porting DOSFS to BlackSoC looked like too much work, so I just wrote low-level code to interpret the FAT32 file system sufficiently to read a file. I will probably add the audio out to BlackSoC. It currently has tone output but that won't work for playing audio files.
And yes, I will add QSPI to BlackSoC. I am not sure if I want it as a master or slave, or both. It currently has an SPI master. Your verilog code would make adding a QSPI slave easy, except that I am not sure what the best C interface for an SPI/QSPI slave would be and whether it needs to use interrupts.