8237 DMA控制器的有些地址线为什么是双向的?什么时候向DMA控制器传输地址?什么时
答案:2 悬赏:10 手机版
解决时间 2021-02-12 03:01
- 提问者网友:你给我的爱
- 2021-02-11 13:52
8237 DMA控制器的有些地址线为什么是双向的?什么时候向DMA控制器传输地址?什么时
最佳答案
- 五星知识达人网友:天凉才是好个秋
- 2021-02-11 15:27
主要原因是DMA8237既作主控者又作受控者.当做主控制器时,DMA控制器向地址总线传输地址,做受控者时,CPU向DMA控制器传输地址。
全部回答
- 1楼网友:动情书生
- 2021-02-11 16:53
a/d转换设置为ch0、ch1、ch2、ch3连续转换模式,dma通道1配置给a/d转换器。每次转换结束后,a/d转换器会发出中断并引发dma请求。同时a/d转换器会提供pia(外设间接地址)给dma控制器以便和起始地址偏移量寄存器装配dpsram地址,确定相应缓冲区的地址位置。由于每个a/d通道的外设地址是不同的,因此在dpsram里每个a/d通道都有自己独立的缓冲区。形象的说:a/d转换的结果被不断丢给(scatter)dma控制器,dma控制器根据寄存器间接寻址机制,把相应a/d通道的数据收集(gather)在dpsram里各个a/d通道独立的缓冲区里。显而易见,这种方式提高了a/d转换的dma传输效率。cpu可以很方便的利用简单的寻址方式直接利用这些数据。 dma缓冲区间接地址的拼装过程根据外设的特点,这个模式可以双向工作,因此dma控制器需要作相应的配置以支持外设读或写操作。外设提供地址序列,用于访问dpsram里的数据。允许分散/集中(scatter/gather)寻址机制。比如:可以利用这个特点把收到的a/d数据投放到多个缓冲区里,归类来自不同通道的数据,大大减轻了cpu负担。外设间接寻址方式时,dma缓冲区间接地址的拼装过程。低位地址来自于外设,称为外设间接地址(pia),当外设中断产生dma请求后会把pia提供给dma地址生成逻辑,外设会使用几个最低有效位作为寻址空间(不同外设占用的位数不同),运算的时候对于超过外设空间的位全部填“0”;另一方面,dma地址寄存器会提供一个固定的基地址作为高位地址,用户在选择缓冲区基址(base address)地址偏移量的时候要注意,保证地址里有若干个(≥pia的位数)最低有效位为“0”。这些为“0”的最低有效位是为pia留出来的。最后,高位填“0”后的外设间接地址和dma起始地址寄存器进行“或”逻辑,这样就合成了有效的指向dma缓冲ram的地址。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯