umdkv2 icon indicating copy to clipboard operation
umdkv2 copied to clipboard

Phantom reads during bus arbitration on some MD hardware revisions

Open makestuff opened this issue 9 years ago • 0 comments

Some MD hardware revisions show intermittent duplication of Z80 (and perhaps VDP DMA) reads, which invariably causes the 68000 to crash because the word driven on the bus is the result of the duplicate Z80 read and not the 68000 read. My theory is that this is due to noise on the tri-stated /C_OE signal during handover of the bus between the Z80 and the 68000. Noise at the end of the /C_OE assert period is bad news because it can fool the UMDK memory arbitration logic into thinking there's another read from the same address afoot, and whilst this "phantom" read is in progress, the UMDK memory arbiter fails to notice the following (genuine) read.

I need to start a counter when /C_OE first goes high, and ignore any subsequent /C_OE falling edges until that counter has progressed above, say, five cycles.

makestuff avatar Dec 29 '15 18:12 makestuff