预办理阶段
测试方法形态;向DMA控制器的方法地址存放器中送入方法号,并启动方法;向主存地址计数器中送入欲替换数据的主存起始地址;向字计数器中送入欲替换的数据个数 。
外部方法筹备好发送的数据(输入)或上次接管的数据已办理完结(输出)时,将通知DMA控制器发出DMA乞求,申请主存总线。
数据传送
输入收配
①.首先从外部方法读入一个字(设每字16位)到DMA数据缓冲存放器IODR中(假如方法是面向字节的,一次读入一个字节,须要将两个字节拆配成一个字)。
②.外部方法发选通脉冲,使DMA控制器中的DMA乞求标识表记标帜触发器置“1”。
③.DMA控制器向CPU发出总线乞求信号(HOLD)。
④.CPU正在完成为了现止呆板周期后,即响应DMA乞求,发出总线允许信号(HLDA),并由DMA控制器发出DMA响应信号,使DMA乞求符号触发器复位。此时,由DMA控制器接支系统总线。
⑤.将DMA控制器中主存地址存放器中的主存地址送地址总线,
⑥.将DMA数据缓冲存放器中的内容送数据总线。
⑦.正在读/写控制信号线上发出写号令。
⑧.将DMA地址存放器的内容加1,从而获得下一个地址,字计数器减1。
⑨.判断字计数器的值能否为“0”。若不为“0”,注明数据块没有传送完结,返回⑤,传送下一个数据;若为“0”,注明数据块曾经传送完结,则向CPU申请中断办理。
输出收配
①.当DMA数据缓冲存放器已将输出数据送至I/O方法后,默示数据缓冲存放器为“空”;
②.外部方法发选通脉冲,使DMA控制器中的DMA乞求标识表记标帜触发器置“1”;
③.DMA控制器向CPU发出总线乞求信号(HOLD);
④.CPU正在完成为了现止呆板周期后,即响应DMA乞求,发出总线允许信号(HLDA),并由DMA控制器发出DMA响应信号,使DMA乞求符号触发器复位。此时,由DMA控制器接支系统总线;
⑤.将DMA控制器中主存地址存放器中的主存地址送地址总线,正在读/写控制信号线上发出读号令;
⑥.主存将相应地址单元的内容通过数据总线读入到DMA数据缓冲存放器中;
⑦.将DMA数据缓冲存放器的内容送到输出方法;
⑧.将DMA地址存放器的内容加1,从而获得下一个地址,字计数器减1;
⑨.判断字计数器的值能否为“0”。若不为“0”,注明数据块没有传送完结,返回到⑤,传送下一个数据;若为“0”,注明数据块曾经传送完结,则向CPU申请中断办理。
传送后办理
校验送入主存的数据能否准确。
决议能否继续用DMA传送其余数据块。
测试正在传送历程中能否发作舛错。
原回覆被网友采用