Timing of SlowROM-to-RAM DMA: How is 372 ns divided?
Posted: Fri Feb 17, 2017 9:27 am
While trying to compose a reply to Proper way to emulate DMA transfers. I thought of something:
The Super NES master clock is a 945/44 = 21.47 MHz crystal oscillator, making each cycle 1000/(945/44) = 46.56 ns long. A DMA copy takes 8 master clocks (372.5 ns) per byte, putting separate addresses on the A and B address bus but sending the read value over one data bus and holding it there while the other device accepts the write. Cartridge ROM is on the A bus, and WRAM in the Control Deck can be accessed through either bus (but not both simultaneously). But WRAM is slow memory, and cartridge memory is also potentially slow (200 ns nominal). So how can DMA from slow ROM to slow WRAM work? Wouldn't the 200 ns response time of cartridge ROM plus the 200 ns hold time of WRAM exceed the 372 ns DMA cycle?
The Super NES master clock is a 945/44 = 21.47 MHz crystal oscillator, making each cycle 1000/(945/44) = 46.56 ns long. A DMA copy takes 8 master clocks (372.5 ns) per byte, putting separate addresses on the A and B address bus but sending the read value over one data bus and holding it there while the other device accepts the write. Cartridge ROM is on the A bus, and WRAM in the Control Deck can be accessed through either bus (but not both simultaneously). But WRAM is slow memory, and cartridge memory is also potentially slow (200 ns nominal). So how can DMA from slow ROM to slow WRAM work? Wouldn't the 200 ns response time of cartridge ROM plus the 200 ns hold time of WRAM exceed the 372 ns DMA cycle?