USB数据采集系统中DMA数据传输的实现(一)

引言

USB通用串行总线(UniversalSerialBus)是被PC机广泛采用的一种总线,目前已经在计算机主板上大量集成,成为一种标准配置接口。它的即插即用、真正的热插拔、可总线供电、高性能和系统造价低等一系列的优点,使得USB接口得到了广泛的应用。特别是随着USB2.0高速传输协议的出现,其数据传输速度达到了480Mb/s,使得USB接口方式的虚拟仪器系统成为今天低成本虚拟仪器系统的主流。本文设计了基于USB2.0高速传输的数据采集系统,整个数据传输过程完全采用DMA方式,达到了较高的数据传输速度。

1、系统介绍

系统总体结构如图1所示。采用Philips公司的微控制器LPC2888作为系统核心控制器。前端数据采集模块由一片CPLD实现对数据采集和触发控制的功能。当系统和计算机成功连接进入工作状态后,LPC2888从USB接口接收来自应用程序的控制命令,然后通过控制CPLD对数据传输采集模块采样通道、采样速率和触发模式进行配置后启动数据采集。CPLD控制模数转换器获取采样数据,同时配合LPC2888通用DMA控制器的接口时序将采样数据以DMA方式高速传输到LPC2888内部缓存。最后由USB高速传输设备接口将采样数据从LPC2888内部缓存高速传输到计算机,在计算机中实现数据记录、数据传输处理和波形显示等功能。

图1系统总体结构图

1.1LPC2888微控制器

LPC2888是一款基于ARM7TDMI内核的微控制器,带有8kB高速传输缓存,最高工作时钟频率60MHz。在结构上增加了多通道通用DMA控制器(GPDMA)。它支持存储器到存储器,存储器到外设,外设到存储器和外设到外设的DMA高速传输。本系统采用GPDMA控制器实现数据从前端数据采集模块到内部缓存的DMA高速传输。同时,LPC2888集成有USB高速传输设备控制器。它完全兼容USB2.0协议,支持USB高速传输,理论最高传输速度480Mb/s,其内部结构如图2所示。USB设备控制器直接挂接在LPC2888系统内部核心总线AHB上,可以方便地与ARM控制器内核及外部存储器进行数据传输。其内部包含一个DMA引擎,当USB接口运行在DMA模式时,DMA引擎作为AHB总线上的主机,在ARM内部缓存和USB设备控制器缓存之间进行数据传输,高速传输过程不需要控制器内核程序的参与,所以能够达到较高的数据传输速度。

图2USB高速传输设备控制器内部结构图

1.2 数据采集模块

数据采集模块主要由信号调理电路、模数转换电路、触发控制电路和CPLD构成。模数转换器采用美国模拟器件公司(ADI)推出的快速12位双通道模数转换器AD9238。单双通道选择和采样频率控制通过CPLD控制逻辑来实现。

2、数据传输过程DMA方式的设计与实现

系统中数据传输过程包含两个环节,一个是从CPLD到LPC2888内部缓存,另一个是从LPC2888内部缓存通过USB接口到计算机。两个环节都采用DMA方式进行数据传输,两个环节之间的协调通过GPDMA控制器产生的半满、全满中断来实现。整个数据传输过程完全采用DMA的高速传输方式,从而可以消除因微控制器固件程序执行较慢而造成的对数据传输速度的影响。

2.1从CPLD到LPC2888内部缓存的DMA高速传输

CPLD从AD9238获得两个12位的转换结果,经过位数变换后送到32位的数据传输信号线。数据传输信号线直接连接到LPC2888的P0口(32位)。由于CPLD内部没有数据传输缓存过程,所以为了保证不丢失采样点,从CPLD到LPC2888内部缓存的DMA高速传输必须保证连续性和实时性。为此,系统采取了如下解决方案:

1)在LPC2888内部RAM中开辟两块相同大小的缓存空间:buffer1和buffer2。将通用DMA控制器的通道3和通道5分别配置为从P0口到buffer1和buffer2的DMA通道。

2)配置DMA通道3和通道5为外部信号控制模式,由CPLD作为DMA数据传输过程的主机。

3)DMA通道3和通道5采用交替工作的方式,由CPLD控制逻辑实现。

CPLD与LPC2888之间的硬件连接如图3所示。其中DMAEn是DMA通道的外部使能控制信号,其上升沿启动一次DMA操作。DMAReq是DMA数据同步信号,该信号控制数据传输节拍,每次DMA操作高速传输4096个数据。IO口P2.0和P2.1分别为启动停止和采样模式选择控制信号线,实现LPC2888对CPLD的控制。系统采用VerilogHDL语言描述CPLD控制逻辑,从CPLD到LPC2888内部缓存的DMA高速传输时序如图4所示。

图3CPLD与ARM接口

图4GPDMA高速传输时序图

2.2USB高速传输设备接口的DMA高速传输

USB高速传输设备控制器支持16个物理端点,其中4个端点支持DMA方式。本设计中选用三个端点:EP0、EP2和EP3。控制端点EP0工作在控制高速传输模式,用于接收USB主机的SETUP令牌包、响应主机的标准设备请求、完成USB设备的枚举过程。EP2配置为OUT(输出)模式,用于接收来自应用程序的控制命令。EP3配置为IN(输入)模式,采用批量高速传输工作方式,负责将采样结果高速传输到PC机。从LPC2888内部缓存到计算机的DMA高速传输由USB高速传输设备控制器内部的DMA引擎和EP3批量高速传输配合完成。为了达到较高的数据传输速度,EP3批量高速传输采用自动高速传输模式。DMA引擎将LPC2888内部缓存数据传输到USB设备控制器内部FIFO缓存中,当FIFO获得的数据达到设定的大小时将自动封包由EP3高速传输到PC机。同时,当FIFO中数据为空时,控制器将自动启动DMA引擎继续进行数据传输。该环节的DMA高速传输过程完全由USB高速设备控制器硬件实现,程序中只需更改DMA源地址寄存器并设置使能控制寄存器即可启动一次DMA传输。

2.3两个DMA高速传输环节的协调

系统中利用GPDMA控制器产生的半满和全满中断信号协调两个DMA对同一个缓存空间的操作,实现了LPC2888对整个数据传输过程的协调控制。当DMA通道3工作时,采样数据从CPLD高速传输到buffer1,同时USB高速传输设备控制器对buffer2中的数据进行DMA操作;当DMA通道5工作时,采样数数据传输到buffer2,USB高速传输设备控制器对buffer1中的数据进行操作。如图5中LPC2888程序流程所示。

图5LPC2888程序流程

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();