Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15536393
  • 博文数量: 2005
  • 博客积分: 11986
  • 博客等级: 上将
  • 技术积分: 22535
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-17 13:56
文章分类

全部博文(2005)

文章存档

2014年(2)

2013年(2)

2012年(16)

2011年(66)

2010年(368)

2009年(743)

2008年(491)

2007年(317)

分类:

2009-09-26 15:34:16

  1、DMA 传送的工作过程
  ● 首先由外部设备发出DMA传送请求信号,或通过程序将DMA通道请求触发器置1;
  ● 如果有2个以上DMA通道请求信号有效,8237A的优先权编码器和裁决器裁决出优先级最高的DMA通道;
  ● DMA通过HOLD信号向CPU发出总线请求;
  ● CPU完成当前总线周期以后,回送HLDA信号,同时让出总线权;
  ● DMA获取总线,驱动DACK信号有效,该信号通常用做I/O通道的片选择信号,DMA的控制信号MEMR#和I/OW#,或IOR#和MEMW#成对有 效,控制存储器和I/O通道之间的数据传送。如果是存储器到存储器之间的传送,一般需要占用2个DMA通道。
  ● DMA传送完毕以后,送出EOP信号,使DACK信号无效,HRQ信号无效,DMA释放总线。
 2、DMA传送的条件
  ●l 外设DREQ信号有效,在字节传送方式和请求传送方式下,每个字节传送之前,DREQ必须有效,或DMA通道请求触发器为1状态;
  ● 8237A的DMA允许位置位;
  ● CPU应答信号HLDA为有效状态;
  ● 外部EOP无效
  ● 请求通道优先级最,请求通道无屏蔽
 3、DMA 编程
  ● 使用清除F/L命令使F/L触发器为0;
  ● 禁止DMA的通道请求;
  ● 编程地址寄存器的低8位,然后是高8位;
  ● 编程计数寄存器的低8位,然后是高8位;
  ● 编程控制整个8237A的命令寄存器;
  ● 设置每个通道的模式寄存器;
  ● 送DMA允许命令,准备开始DAM传送;
  ● 若软件请求,写请求触发器。
阅读(5630) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~