•The I/O device asserts the appropriate DRQ signal for the
channel.
•The DMA controller will enable appropriate channel,
and ask the CPU to release the bus so that the DMA may use the
bus. The DMA requests the bus by asserting the HOLD signal which
goes to the CPU.
•The CPU detects the HOLD signal, and will
complete executing the current instruction. Now all of the signals normally
generated by the CPU are placed in a tri-stated condition (neither high or low)
and then the CPU asserts the HLDA signal which tells the DMA controller that it
is now in charge of the bus.
•The CPU may have to wait (hold cycles).
•DMA activates its -MEMR, -MEMW, -IOR, -IOW output signals,
and the address outputs from the DMA are set to the target address, which will be
used to direct the byte that is about to transferred to a specific memory
location.
•The DMA will then let the device that requested the DMA
transfer know that the transfer is commencing by asserting the
-DACK signal.
•The peripheral places the byte to be transferred on the
bus Data lines.
•Once the data has been transferred, The DMA will
de-assert the -DACK2 signal, so that the FDC knows it must stop placing data on
the bus.
•The DMA will now check to see if any of the other DMA
channels have any work to do. If none of the channels have their DRQ lines
asserted, the DMA controller has completed its work and will now tri-state the
-MEMR, -MEMW, -IOR, -IOW and address signals.
Finally, the DMA
will de-assert the HOLD signal. The CPU sees this, and de-asserts the HOLDA signal.
Now the CPU resumes control of the buses and address lines, and it
resumes executing instructions and accessing main memory and the peripherals
No comments:
Post a Comment
its cool