①I/O设备准备好后,向DMA控制器(DMAC)发出DMA请求信号DMARQ。
②DMAC向CPU发出总线请求信号BUSRQ。
③按照预定的DMAC占用总线方式,CPU响应BUSRQ,向DMAC发出总线确认信号BUSAK。从这时起,CPU总线控制权交由DMAC接管,开始进入DMA有效周期,如图1中阴影部分所示。
④DMAC接管总线后,先向I/O设备发出DMA请求的响应信号DACK,表示允许外设进行DMA传送。然后按事先设置的初始地址和需传送的字节数,依次发送地址和读写命令,使RAM和I/O设备直接交换数据,直至全部数据交换完毕。
⑤DMA传送结束后,自动撤消向CPU的总线请求信号BUSRQ,从而使BUSAK和DACK相继变为无效,CPU又重新控制总线,恢复正常工作。
3 DSP与DMA控制器8237-5的接口电路
通过上述分析可以知道,DSP与8237-5的接口关键是要解决DSP的/HOLD、/HOLDA信号与8237-5的总线保持请求输出信号HRQ(即BUSRQ)、总线保持响应输入信号HLDA(即BUSAK)之间的联系问题。图2给出DSP与8237-5的接口电路。
(1)数据线、地址线可以直接相连,8237-5仅使用8根数据线和地址线。
(2)由于8237-5要向DSP申请对外部总线的控制,所以DSP的/HOLD信号决定于HRQ,而二者的有效电平正好是反相关系;另一方面,当DSP在合适程序代码的协助下使/HOLDA有效,从而对/HOLD有效作出响应时,它就应该通知DMAC可以获得总线控制权,那么可以将/HOLDA反相后发给8237-5的HLDA,从而使得该信号变高成为有效,8237-5得以接管总线。因此HLDA、/HOLD信号线的译码逻辑关系如下:
HLDA=/HOLDA
/HOLD=HRQ
一次DMA操作的时序关系如图3所示。