S5935如何实现DMA传输的设计与研究

S5935如何实现DMA传输的设计与研究,第1张

  摘要:文中介绍了具有PCI总线主控功能的专用接口芯片——S5935的基本结构,阐述了它如何实现DMA控制器的功能,并给出了用于实现DMA传输的WDM驱动程序。

  1前言

  计算机与外设之间有三种传输方式:程序方式、中断方式、DMA(DirectMemoryAccess)方式。其中,前两种方式都是CPU通过执行指令来实现主机与外设间的数据传输,传输速度较低;后一种方式是由DMA控制器直接实现外设和存储器之间的数据传输,它不通过CPU,传输速度较高。因此在高速数据传输系统中,常常利用DMA方式来实现计算机与外设间的数据传输。

  由于个人计算机中的PCI总线具有总线主设备支持的特点(总线主设备支持的特点就是全面支持PCI总线主设备,允许同级PCI总线访问和通过PCI—PCI与扩展总线桥访问主存储器和扩展总线设备,并且,PCI主设备能够访问驻留于总线级别较低的另一个PCI总线上的目标)。所以,可以有两种途径来实现DMA传输,其一是利用计算机内部的DMA控制器;其二是利用具有总线主控功能的PCI接口芯片。由于后一种途径不占用计算机系统的DMA通道,节省了计算机的资源,因此,使用较多。

  具有总线主控功能的PCI接口芯片主要有两种类型:一是可嵌入IP核的可编程逻辑器件,如Xilinx公司的Sparten系列等;二是专用的PCI桥接芯片,如PLX公司的PCI9054、AMCC公司的S5935等产品。前者设计较为灵活,但是要求开发者对PCI规范有较深入的理解,开发周期较长;后者设计较为简单,开发者只要正确配置接口芯片的配置空间,注意引脚的电气连接规范,就可以正确使用,开发周期较短。本文以专用PCI接口芯片——S5935为例,介绍其作为PCI总线主设备时如何实现DMA传输。

  2AMCCS5935芯片

  S5935是AMCC公司S59XX系列接口芯片中的一种,该芯片功能强大,可用于高速数据采集卡、视频加速卡、多媒体通信等。它既可作PCI总线主设备,也可作PCI总线从设备,应用较为广泛。它有三种工作方式:MAILBOX(邮箱)工作方式、PASS-THRU(直通)工作方式、FIFO(先进先出)工作方式。其中前两种工作方式只能是S5935作为PCI总线从设备时的工作方式,FIFO工作方式可以是S5935作为PCI总线主设备时的工作方式,也可以是S5935作为PCI总线从设备时的工作方式。

  S5935的结构如图1所示,它有三个接口:PCI总线接口、本地端接口和非易失性存储

  S5935如何实现DMA传输的设计与研究,S5935如何实现DMA传输,第2张

  图1S5935结构框图

  器接口。PCI接口用来实现计算机与S5935间的数据、地址、命令等的传输。本地端接口用来实现S5935与外部存储器间的数据传输以及与外部控制逻辑电路间的地址、命令等的传输。非易失性存储器接口有两种类型,它既可以与串行nvRAM相连,也可以与字节nvRAM相连,实现S5935头部空间的配置。

  3S5935的DMA控制器特性

  S5935的FIFO工作方式可以工作在总线主控模式下,此时S5935相当于一个带有数据缓冲区的DMA控制器,可以在不占用计算机系统的DMA通道的情况下,进行DMA传输。其内部结构如图2所示,它有两个单向FIFO:一个FIFO的数据传输方向是从PCI总线到本地总线,另一个用于本地总线到PCI总线的数据传输,每个FIFO的大小为8×32bit;还有两个地址寄存器和两个数据寄存器,分别用于存储DMA传输的首地址和传输所需的字节数。S5935的DMA传输可以设置为由本地总线发起,也可以由PCI总线发起的,它是在初始化时,通过设置nvRAM的45h单元的bit7实现的。下面以由PCI总线发起的DMA传输为例,介绍S5935的DMA控制器特性:

  当需要进行DMA传输时,驱动程序通过设置MCSR寄存器的bit14或bit10,向S5935发出DMA请求信号(前者用于计算机内部存储器读,后者用于内部存储器写),S5935根据FIFO管理方案,如满足条件,使能REQ#信号,申请总线控制权。

  当总线仲裁器收到总线控制请求信号后,如果允许,则使能GNT#信号,从而将总线的控制权传递给S5935。

  S5935得到总线控制权以后,将存储在MWAR(或MRAR)内的地址信号发送到PCI地址总线上,并且每传送一个字节,MWAR(或MRAR)内的地址就会自动更新,以指向下一个要传送的字节。

  S5935通过C/BE[3:0]#发送读/写控制信号,例如:发送的是0110,则为内部存储器读,发送的是0111,就为内部存储器写。

  为了决定所传送的字节数,并且判断DMA传送是否结束,S5935利用MWTC(或MRTC)存储需要传输的字节数,每传送1个字节,字节计数器的值便自动减1,减为0时,则DMA过程结束。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/dianzi/2492118.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-04
下一篇 2022-08-04

发表评论

登录后才能评论

评论列表(0条)

保存