I'm working on designing a 68K computer. While reading the 16-bit READ cycle, it goes something like this:
Code:
Bus Master:
1) Set R/W to READ
2) Place function code on FC2-FC0
3) Place address on A23-A1
4) Assert address strobe (/AS)
5) Assert upper data strobe (/UDS) and lower data strobe (/LDS)
Slave (RAM/MMU):
1) Decode address
2) Place data on D15-D0
3) Assert data transfer acknowledge (/DTACK)
....
There's more to it but you get the idea.
So, if designing an MMU with a CPLD (such as the ATF1508), I was wondering how to assert the /DTACK pin. The SRAM will take X number of ns between steps 1 and 2 of the RAM section. Once it's done (let's assume 15ns later), the CPLD needs to assert /DTACK.
But if my CPLD runs at 7.5ns, then I need a way of delaying for a bit.
If I were writing this in code, I might use something like:
Code:
while ram_not_ready do
loop
assert_dtack
My gut feeling is that since the 68K takes 8 states (cycles), that I simply wait one or two of them and assume the SRAM was ready. It would be really awesome if SRAM could work async-like and let master devices know when they are done.
Thanks for any input.