![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| 基于DSP的PCI总线高速DMA数据传输 | |||||
作者:鹿宝生 文章来源:互联网 点击数: 更新时间:2007-8-27 ![]() |
|||||
|
摘要:针对数据采集系统中的高速数据传输需求,利用TMS320DM642 DSP芯片实现了PCI总线的DMA数据传输.介绍了TMS320DM642的PCI接口特性,以DM642作为PCI主设备控制并启动DMA数据传输,并给出了主DMA模式下数据传输系统的实现结构及工作流程给出了主DMA模式下的PCI设备驱动实现.相较于其它PCI总线传输方式,该方案开发成本较低,且具有良好的PCI总线数据传输性能. 关键词:数据传输;PCI总线;TMS320DM642; DMA;主模式 引言 高速数据采集离不开计算机对数据的传输和处理,目前主要是通过计算机的I/O总线进行数据的传输,I/O总线负责外部设备与系统内存总线之间的数据传输。高速PCI总线是一种独立于CPU的局部I/O总线,由于支持突发传输操作,其总线传输吞吐量为264M B/S(32b it,66 M Hz),己经广泛应用于个人计算机。但是在x86结构CPU的个人计算机下,由PCI主机发起读操作访问PCI目标设备时,不能进行突发读操作。这是由于个人计算机启动时BIOS将PCI设备映射到非Cache存储器中,会出现读操作阻塞。对于突发写操作也存在同样的问题。为了获得高的数据传输量就必须在DMA模式下操作。 TI的多媒体处理器DSP芯片TMS320DM642,内嵌功能全面的PCI2.2协议模块,支持主/从两种模式的DMA数据传输。相较于专用芯片、IP CORE和高速FPGA等方式实现的PCI总线传输,用户无需对PCI协议、时序关系十分熟悉,且开发成本较低。本文使用TMS320DM642 DSP芯片,给出了基于DSP的PCI总线高速DMA数据传输系统的实现。 1 TMS320DM642的PCI接口特性介绍 TI的最新多媒体处理器DSP芯片DM642为32为定点处理器,主频为600 MHz,处理速度为4800 MIPS,外部寻址空间可达1024MB。DM642片内集成一个32位/66MHz,3. 3-V主/从模式的PCI接口,符合PCI2.2协议规范。通过该PCI总线能够实现DSP与PCI主机的互连。PCI接口由EDMA内部的地址产生硬件来实现。通过该DM642的PCI接口,主机可访问下突发长度最大为64 kB,从模式下可无限大。 PCI接口包括3类寄存器:PCI配置寄存器、PCI I/O寄存器和映射在DSP存储空间,作为外设的PCI寄存器。PCI I/O寄存器位于PCI主机的I/O空间,包括主机状态寄存器、主机控制寄存器和DSP页寄存器。映射在DSP外设空间的PCI寄存器用于DSP控制PCI接口。PCI接口为主机访问DSP的存储空间提供了两种方式:可预取访问,对应一个4MB的BASEO空间;不可预取的数据访问,对应一个8MB的BASE1空间。对于可预取访问,在访问之前PCI主机必须先写DSP页寄存器,以确定4MB区间在DSP存储空间中的位置。PCI接口既可向DSP发中断,也可向PCI主机发出中断(通过INTA管脚)。 2 主DMA模式下的PCI总线数据传输系统 对于基于DSP的PCI总线DMA数据传输主要有两种模式:一种是从模式传输,使用PCI主机主板的DMA控制器:另一种是主模式传输,使用PCI卡上DSP的DMA控制器。由于主板DMA控制器只有有限数目的DMA通道,在具体使用时难以找到空闲的通道。从模式的DMA传输要求一定的中断延迟时间,并且当DMA控制器达到缓冲区的末端时,需要快捷地对它重新编程使其使用另外一个缓冲区。又由于主板DMA控制器从外设分别以两次独立的操作读取一字节的数据,然后把它写到内存,因此每次传输需要多个总线周期,而且还要插入等待状态。 综合以上考虑,本数据传输系统采用DSP主模式,并将DM642的外部存储器接口EMIF的CEO空间(0x80000000)配 图1 系统数据传输 在主模式传输时,相关的控制器包括DSP主地址寄存器(DSPMA),PC I主地址寄存器(PCIMA)及PCI主模式控制寄存器。如图1所示,启动主模式写后,由DMA负责从源地址相DSP内部的写FIFO搬移所要求的数据。数据传输会持续到FIFO满为止,除非请求的数据小于FIFO的深度。一旦FIFO得到有效数据,接口模块会向外发出PCI总线请求,并将FIFO中的数据向PCI从设备(主机)传输。当DSP源地址中所有的数据都送入FIFO后,DSP内部的数据传输结束,通过使能PCIIEN寄存器中的MASTEROK位,在数据传输完毕时产生DSPINT中断,通知DSP一次主模式的DMA传输结束。 在主模式下,DSP通过DSPMA寄存器、PCIMA寄存器和PCIMC寄存器控制并启动DMA数据传输。DM642首先依据PCI主机是否有数据请求以及上一次DMA数据传输是否结束来启动PCI传输。如果PCI主机请求数据,通过向HDCR寄存器的DSPINT位写1,向DM642发出HOSTSW中断;同时在一次DMA传输完毕后将向DM642发出MASTEROK中断。DM642的中断响应程序流程如图2所示。 图2 DM642中断响应程序流程 在中断发生时,DSP首先读取PCI中断源寄存器(PCIIS),判断中断源,并清除相应的bit位。检测为HOSTSW中断,DSP将通过PCIMA寄存器读取PCI主机端的数据传输目的地址,若上一次DMA传输结束,将启动PCI总线的DMA数据传输。MASTEROK中断表明一次DMA传输的结束,此时DM642通过向RSTSRC寄存器的INTREQ位写1,在INTA管脚上产生中断信号,通知PCI主机数据可用。 3 主DMA模式下的PCI设备驱动实现 主DMA模式下数据传输的PCI设备驱动基于Linux系统开发,包括用户应用程序和PCI驱动程序,分别工作在系统的用户态和内核态,用户程序通过对设备文件进行文件操作,实现与驱动程序的通信。主DMA模式下数据传输的PCI设备驱动流程如图3所示。 主DMA模式下,DM642D SP作为PCI主设备,将数据通过PCID MA通道向PCI从设备(PCI主机)传输。在图3中,用户态应用程序通过内核态驱动程序向PCI主设备发出中断申请,并通过设置PCI主地址寄存器(PCIMA)确定DMA数据传输的PC]主机内存地址,最后使用wait event interruptibleO进入阻塞状态等待数据的传输结束,并使用copyt oseus er()完成内核态向用户态内存空间数据的拷贝。 驱动程序采用BASE基址寄存器访问映射到DSP的存储器映射寄存器空间,BASEL基址寄存器的地址与DSP寄存器的目的地址相加形成DSP访问地址,并使用writelO与readlO实现对I/0端口的32位读写。 图3 主DMA模式下PCI设备驱动流程 4 结束语 本文所述的PCI总线主DMA数据传输方案目前己应用于高速公路监控系统。在PCI主模式条件下,DSP的EMIF时钟为133 MHz时,监控数据的连续传输速度可达110 MB/S,在数据传输方面取得了良好的效果。 本文摘自鹿宝生 ,陈启美 ,丁胜军同名文章。 |
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 基于PCI总线的DSP系统可执行… 基于PCI总线的双DSP系统及WD… 基于PCI总线的双DSP系统及WD… |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|