Ok, Thanks! I have something finished and everything passes. I'll try it out.
I 've attached the version I'm trying. I know it's probably hard to look at, although I have properly formatted it in notepad as a .txt file. But do you see any glaring errors?
Keep in mind that there will be a delay when you start reading (a burst of) data. The _rd_next signals indicate that the address has been copied, and that you can now change it for the next word (if you want to read more). At that time, the data isn't valid until the data_valid signal is asserted. This means for instance that you can't just hook up a CPU core to the SRAM controller and expect it to work. Depending on the current state, it could take one or more cycles, and you would have to delay the CPU by playing with the RDY input.
You are right. My experience was from using a 100 MHz CPU and 10 ns RAM. Of course, if you lower the clock rate, your time from valid address -> valid data may be less than a clock cycle, which avoids the need for the extra wait state I have.
Still, you'll need to look at what you want to do when going from a read cycle to a write cycle. If you don't have any delay in between, there's going to be a period where both devices are driving the bus. And also, when the SRAM controller is in a VGA read state, there will be a delay as well.
I think what I'm going to have to do is back off the speed and start working at 15MHz with 320x200 resolution with this board. This is the lowest frequency I was able to display on my flatscreen LCD monitor. I'm not having much luck at 70MHz. I can tell the cpu is running which is a good thing, but data integrity for the displayed video is not there.
You could also run some dedicated tests. First write to SRAM (really slowly) a known pattern, so you know what is in there. Then only focus on a simple read operation looping the addresses, and see if you get the correct data back.