基于PCI 总线的多通道DMA传输_第1页
基于PCI 总线的多通道DMA传输_第2页
基于PCI 总线的多通道DMA传输_第3页
基于PCI 总线的多通道DMA传输_第4页
基于PCI 总线的多通道DMA传输_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、基于PCI 总线的多通道DMA传输刘海华 时间:2008年09月22日 字 体: 大 中 小关键词:? 摘? 要:? 关键词: PCI总线? DMA控制器? 突发传输? 数据采集? PCI/cPCI总线是一种独立于CPU的局部总线,由于支持突发传输操作,其总线传输吞吐量为132MB/s(33bit,33MHz),已经被广泛应用于个人计算机。但是,在x86结构CPU的个人计算机下,由主CPU发起读操作访问PCI目标设备时,不能进行突发读操作。这是由于个人计算机启动时BIOS将PCI设备映射到非Cache存储器中,会出现读操作阻塞。对于突发写操作,也存在同样的问题。也就是说在PC环境下开发基于PC

2、I的产品,PC机不支持突发传输。为了获得高的数据传输量,就必须使用PCI主桥设计PC卡,并在DMA模式下操作。高传输性能的PCI总线主设备有很多,如PLX公司的PCI9054。本文以多通道高速数据系统的设计为例,说明PCI9054实现多通道DMA传输的应用。?1 PCI总线控制器的DMA传输? PCI9054集成了两个互相独立的DMA通道,每个通道都支持Block DMA和Scatter/Gather DMA。其中通道0还支持请求(Demand)DMA传输方式。由于PCI9054的两个DMA通道都是由DMA控制器和专用的双向FIFO组成,当每个通道进行DMA传输时,它对于PCI总线和本地总线都

3、是主设备。即DMA控制器将发起对本地总线和PCI总线操作,其过程如图1所示。? 如果要求从本地空间传输数据到PCI空间,PCI9054首先对本地总线执行读操作。在本地总线上可能有其它设备访问本地总线,因此PCI9054需申请获得本地总线访问权。当PCI9054获得访问权后,将本地数据读入PCI9054的FIFO中。与此同时,PCI9054将向PCI总线仲裁器申请PCI总线访问权,将数据从FIFO写到PCI总线空间。一旦DMA传输完成,PCI9054设定DMA“传输结束位”结束传输。如果设置中断允许,PCI9054将根据设置向PCI总线或本地输出中断。同样可将数据从PCI传输到本地总线空间。?2

4、 基于块传输模式的多通道数据采集系统设计? 块传输是一种相对简单的DMA传输模式。其操作是将本地总线存储器中的数据传输到HOST内存中,或将HOST内存中的数据传输到本地总线上的存储空间。在传输之前,HOST处理器设置DMA寄存器中本地和PCI空间起始地址、传输字节数、传输方向,然后HOST处理器设置DMA开始位,启动DMA并按配置的信息传输。? 输入通道的存储空间映射到DMA本地访问空间是基于DMA访问的。当DMA控制器访问本地空间时,访问的地址对4个通道而言是一样的,必须给出对不同本地空间的访问策略。访问策略可有多种选择,如优先访问、排队访问、循环访问等。图4给出循环访问策略,并在CPLD

5、中实现。其状态变化为:? STATE0STATE1STATE2STATE3STATE0? STATEx表示对本地空间x的操作状态。当输入通道FIFOx的请求传输信号FLAGx有效,状态机将停留在STATEx状态,等待DMA控制器的访问。当计算机启动DMA通道时,产生通道选择信号CSx,访问本地空间FIFOx。当DMA传输结束后,信号CSx无效,状态转为下一个状态。如果在下一个状态没有检测到请求信号,状态将转移到该状态的下一个状态,直到检测到请求信号FLAGx有效时,状态机才停留在STATEx状态,等待DMA控制器访问。? DMA控制器访问依赖于数据采集通道的请求传输信号FLAGx。如果数据采集

6、通道启动,将向相应通道的FIFO中输入数据,一旦FIFO中的数据达到某种程度,设置请求传输信号。该信号将从本地中断信号LINT#输入并路由到PCI总线上,计算机将接收并响应中断。其中断响应程序流程如图5所示。计算机读PCI9054内部中断状态寄存器,检测为本地中断,从CPLD中设置的状态寄存器读取通道状态。然后启动DMA控制器。当数据传输结束后,PCI9054同样产生PCI中断,读PCI9054内部中断状态寄存器,检测为DMA传输结束,这时查询通道状态寄存器的值,决定传输数据的通道,并对数据作相应的处理,其处理方式依赖于不同的应用需要。? 如果应用中需要有选择性地传输输入通道数据,假设选择通道

7、0、1、3,这时只须对CPLD中设置的屏蔽寄存器写数据初始化,即可屏蔽输入通道2。? 在该设计中存在一个问题:对于一次DMA传输,计算机需要响应两次中断,这将增加计算机的处理事务。为此,可以采用PCI9054的DMA通道的请求传输方式。利用输入通道的请求传输标示信号产生DMA请求信号DREQ0#,从而启动DMA传输,并产生DACK0#响应信号。当数据传输结束后,计算机响应中断,读输入通道状态寄存器,判断传输到计算机中数据的输入通道。?3 基于Scatter/Gather传输模式的多通道数据采集系统设计? Scatter/Gather(或S/G)DMA传输模式是PCI9054的另外一种传输模式。

8、其基本方法是将本地总线上或PCI总线上分散的数据块一次性地通过DMA传输方式传输到PCI存储空间或本地存储空间,不需要多次启动DMA控制器。数据采集系统结构如图2所示,空间映射如图3。PCI9054的S/G传输模式其实是利用PCI9054内部的DMA传输通道,建立了一个虚拟的DMA传输,并使用描述模块建立一个传输链,将不同位置上的数据块传输连接起来。该描述模块包括PCI和Local的起始地址、传输字节数、传输方向和下一个描述模块的地址。该模块由HOST处理器在HOST存储器中建立。然后HOST或本地处理器设置S/G模式;在PCI9054描述指针寄存器中建立开始描述块地址。? 当本地总线请求传输

9、信号有效时,产生PCI中断INTA#,PC响应中断,设置DMA控制器控制位启动传输,其传输过程如图6所示。PCI9054根据开始描述块地址装载第一个描述块并传输该空间的数据。当第一块数据传输结束后,检测描述链结束位。如果没有设置,表明不是最后的块传输,指定下一个描述模块的位置,并继续装载描述块和传输数据,如此重复直至检测到描述链结束位被设置。当检测到链结束状态位时,表明PCI9054没有下一个数据块传输,设置DMA传输结束状态位,表明数据传输结束。? 对于多通道数据采集应用,假设每个输入通道数据采集的速率一样,那么输入到每个通道中FIFO的数据是一样的速率。当 FIFO中的数据达到一定程度时,

10、产生中断请求传输,计算机响应中断,进行上述操作。由此可见每次启动DMA传输,将4个数据采集通道的数据一次传输到计算机内存的不同空间中。当然,如果只需传输4个通道中的几个,如只传输通道1、2、4的数据,那么只用修改块传输描述块中的参数,重新建立块传输链,只传输输入通道1、2、4的数据,从而屏蔽了输入通道3。? 该传输方式相对块传输模式而言,不用进行4次DMA启动,减少访问的开销,同时不需要设计复杂的接口电路。由于S/G模式对多块数据传输是统一进行的,要求输入通道的数据输入速率一致,或有相对稳定的关系,使每个块传输的大小相对稳定。当然每个通道的采样速率可能不一致,并随时需要调整,这样就需要相应地修改描述块的参数,使S/G模式操作变得较复杂。块传输模式可以根据每个通道各自请求的传输状态进行传输,表现出应用的灵活性。? 该设计虽然只是针对多通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论