2024年2月20日发(作者:范许)
USB在实时数据采集处理系统中的应用
汪春梅;贾红涛
【摘 要】通用串行总线(USB)是一种正在迅速发展起来的高速外设总线,它具有热插拔、智能化、易于使用等特点.在以DSP为核心的数据采集系统中加入USB接口,为系统与微机之间的通讯提供了便捷的通道,作者主要介绍了USBN9602与TMS320VC33 DSP的接口设计和系统软件设计.
【期刊名称】《上海师范大学学报(自然科学版)》
【年(卷),期】2004(033)003
【总页数】5页(P53-57)
【关键词】USB;实时数据采集和处理系统;DSP
【作 者】汪春梅;贾红涛
【作者单位】上海师范大学,机械与电子信息学院,上海,201418;哈尔滨工业大学,电子与通信工程系,哈尔滨,150001
【正文语种】中 文
【中图分类】TP368.1
在研制以TMS320VC33浮点数字信号处理器为核心的实时数据采集处理系统过程中发现一个问题----实时数据采集处理系统要将采集、处理的大量数据实时传送到微机上,常用的并行接口、RS232接口都无法满足这一要求.而作为计算机接口之一的USB(Universal Serial Bus)接口,具有热插拔、速度快和可以连接多个外围
设备的特点,能够较好地满足系统要求.
USB接口有如下特点:
(1)速度快.USB1.1规范的数据传输率可达1.5~12Mb/s,比标准的串行口快得多,USB2.0可以提供向下兼容和360~480Mb/s的传输速率.可以适应各种不同类型的外设.
(2)易扩展.用USB连接的外围设备可以分为5层,外设数目最多可达127个.
(3)USB支持热插拔,可以在不关PC机的情况下安全地插上和断开USB设备.热插拔体现了USB的安全、可靠和智能.
(4)USB支持PnP(Plug and Play),也就是即插即用.当插上USB设备时,主计算机设备检测该外设并且通过加载相关的驱动程序对该设备进行配置.
(5)使用灵活.USB共有4种传输模式:控制传输(control)、同步传输(Synchronization)、中断传输(interrupt)、块传输(bulk),以适应不同设备的需要.
(6)USB在设备供电方面提供了灵活性.USB直接连接的设备可以通过USB电缆供电.USB传输线中的两条电源线可以提供5V电源供USB设备使用.
在系统设计中所要解决的有如下几个问题: USB接口芯片与VC33处理器的硬件连接,微机端USB通讯软件的设计和VC33处理器端USB通讯软件的设计.本文将逐一介绍如何解决这3个问题.
1 硬件设计
实时数据采集处理系统采用TMS320VC33作为系统核心,A/D转换芯片采用MAX1246,该芯片可以同时完成4路模拟信号采集,其采样速率为每路12KSPS,采样位数12位,USB接口芯片采用USBN9602.当采集系统所采数据不经处理直接向微机传送,每秒所要传送的数据量为12K*4*12=576K比特.
1.1 DSP处理器[2]
DSP处理器分为定点、浮点两大类,浮点型处理器适于对运算精度有较高要求的
领域,同16位定点处理器相比,32位浮点处理器的数值范围从-32768至+32767扩展到- 3.4028236×1038至3.4028234×1038,但浮点处理器的缺点价格和功耗较高.本采集和处理系统要进行实时信号分析,要求有较高的运算速度和运算精度,所以选用TI公司的32位浮点DSP-TMS320VC33作为处理器.VC33是德州仪器公司推出的C3X系列产品中性能较高、高度集成的通用数字信号处理器,具有高度灵活的可操作性和高速的处理能力.其性能特点如下:运行速度达到了75MIPS(即每秒0.75亿次);34K×32-bitSRAM;具有32位整数和40位浮点运算能力;片上有一串行接口、两个32位定时器和DMA控制器,有效的应用DMA功能,可不通过处理器直接进行数据的存取,从而极大地提高处理器运行效率,把处理器从繁重的数据采集工作中解放出来,而给信号处理留下充足的时间.
N点复数FFT变换约做2N×Log2N次实数乘法运算和3N×Log2N次实数加法运算.TMS320VC33的乘法和加法都是单周期指令,取N=1024,不计内存访问时间,则一次1024点的FFT所需时间约0.9ms.而按96KSPS的采样率计算,1024点的采样时间约10ms,可见该DSP速度足可以满足要求.
1.2 USBN9602芯片[1]
USB接口器件采用National Semiconductor公司的一种专用芯片9602支持USB1.1标准,该芯片控制方便、灵活,具有标准并行总线接口,可以方便地同处理器连接,内部具有较大的FIFO处理器,可以缓存大量数据,从而减轻处理器的工作负担.它是通用串行接口的全速功能控制器,该芯片内部集成微处理器接口、USB末端FIFO存储器、串行接口引擎(SIE)、收发器、3.3V电压转换器、通用并行接口和可编程时钟发生器,采用48MHz晶振,其内部结构如图1.芯片内部总共有7个传送/接收FIFO存储器:1个双向传送和接收FIFO存储器,3个单向传送FIFO存储器,3个单向接收FIFO存储器,一旦FIFO
存满,SIE立刻对数据进行处理,其中包括:同步模式识别、并/串转换、位填充/解填充、CRC产生与校验、地址识别、握手响应与产生、USB特殊事件检测,最后由收发器通过数据线(D+、D-)传送数据至主机.
图1 USBN9602内部结构
USBN9602通过并行接口与TMS320VC33 DSP实现连接,连接示意图如图2所示.通过对USBN9602的MODE0和MODE1的设置采用非总线复用方式,接口信号CS/,RD/,WR/,A0由CPLD控制,数据总线与VC33连接.图3是非总线复用接口方式的时序图.USBN9602操作时序是先往地址寄存器中写入地址,然后通过数据输入和数据输出寄存器读写数据,地址寄存器和数据寄存器的选择是通过A0来实现的.
图2 USBN9602与VC33硬件连接示意图
图3 非总线复用接口方式的时序图
2 系统软件设计
系统软件包括微机端USB通讯软件的设计和VC33处理器端USB通讯软件的设计.
2.1 微机端USB通讯软件的设计
在开发USB总线的过程中会发现通过USB接口进行I/O操作是一件十分繁琐的事情,即使进行一个简单的数据读写也会用到复杂的数据结构和功能调用序列,如果开发人员自行编写视窗的USB驱动程序,将面临十分繁琐的工作,而保证驱动程序正常运行也是十分艰巨的.
为了简化微机端USB通讯软件的设计,系统采用了CYPRESS公司提供的通用USB设备驱动程序,该驱动程序可以让用户很容易地实现对USB接口的控制,但应注意该驱动程序要求外围设备必须使用USB设备通用协议命令,而不能使用为某类USB设备所专用的命令.该驱动程序提供了一个面向对象程序库----,它可用来作为与USB驱动程序连接的编程接口,微机端USB通讯软件就是通过调
用库函数完成与采集系统通讯的.
当通讯软件运行时首先要进行设备识别,设备识别的过程是:主机首先通过USB接口向采集处理板发出设备请求----要求处理板返回厂商ID、设备号ID、序号等处理板信息,这是通过调用CCyUSBDevice类中的open( )函数来完成的,而诸如厂商ID、设备号ID、序号等处理板信息将由CCyUSBDevice类的成员返回,通过检查类的成员就可获知处理板的基本信息.
当程序检测到处理板之后首先向处理板分配设备地址,并进行USB端口配置,由于采集、处理系统的数据传送必须满足实时性要求,因此采用同步传输方式传输数据,同步传输有如下特性:
(1)在一定的时延条件下,保证对USB带宽的访问;
(2)只要向数据管道提供了数据,就会保证通过该管道的数据所要求的恒定数据传输率;
(3)如果传输发生错误,只会返回错误信息,而不会重发数据.
管道是指经过一个存储器缓冲区和一个设备上的端点同主机软件之间传送数据的渠道,而USBN9602为数据传送提供了16个端点,每个端点有相应的FIFO存储器.由于USBN9602的FIFO存储器深度为64字节,因此每个管道每个时间片的传输能力最大为64×8=512比特,而USB接口每个时间片的长度为1ms,而采集、处理板的数据率为576K比特,即每个时间片需要传递576比特,因此为了保证数据的实时传输至少要占用两个数据管道.在实际应用中采集数据传输占用了两个输入端点,每个端口每个时间片需要传送288比特数据,即36个字节,应用程序需要将两个端口传递的数据按照约定的顺序进行组织,从而得到所传送的数据.由于USBN9602片上的FIFO不超过64字节,当数据存入后,USBN9602自动将数据打包,由SIE自动发送数据包.程序获得数据后,需延迟至下组数据包准备好,从而保证程序与设备采集频率同步.
图4给出了USB通讯程序的流程图.
图4 微机端通讯程序主流程图
微机端程序采用Visual C++ 6.0编程,主要功能为:开启或关闭USB设备、检测USB设备、设置USB数据传输通道、设置A/D状态和数据采集端口、实时从USB接口采集数据、显示并分析数据.
2.2 VC33处理器端USB通讯软件的设计
VC33处理器端USB通讯软件采用C与汇编语言混合编写.其主要功能是控制USBN9602芯片完成USB协议的处理,这就要求在DSP上运行相应的代码以支持USB协议.如果没有USB协议处理代码,DSP将不能处理接收到的数据,这样可能导致主机锁死.
当采集、处理板作为一个USB设备插入USB总线时,主机通过总线枚举来识别处理板,之后主机为其分配一个唯一的地址,使处理板进入寻址状态,主机通过配置端点得到处理板的配置信息,得到配置信息后主机为处理板分配两个输入端点,这两个端点都以同步方式进行数据传输,而每个端口每帧传输的数据长度分别为固定的256比特和320比特,这样主机就完成处理板USB口的配置.
图5 VC33处理器端程序流程图
接下来主机向处理器发出启动信号,VC33处理器控制A/D转换器开始工作.由于A/D转换器的转换位数为12位,而采样值都是以16位为一个单位存储的,这就意味着一个采样点将包含4位冗余信息,如果不去掉这4位冗余信息将更多地占用USB总线的传输带宽.因此VC33处理器将每一毫秒接收到的48个采样值压缩为36个字,其中每路采样值占9个字,当接收到USBN9602发出的FIFO存储器空中断后,处理器将四路采样值放入端点对应的FIFO存储器中.USBN9602在收到存入FIFO存储器的数据后,会自动根据同步传输协议完成数据并串转换、组帧、加入CRC校验,在收到ACK握手信号后启动数据传输.图5给出了VC33处
理器端程序流程图.
3 结束语
USB以其即插即用的优点和灵活的数据传输方式,实现了实时数据采集处理系统、实时向微机传递数据的功能,较好地满足了系统的需要,达到了系统的设计要求.经过一段时间的使用,证明该系统工作稳定,较好地满足了数据实时采集的需要,下一步需要做的工作是利用VC33处理器的强大的处理能力,对实时采集的音频信号进行高效压缩,以减少传输数据量,满足更大采集能力的需求.
参考文献:
[1] National Semiconductor. USBN9602 (Universal Serial Bus) Full Speed
Function Controller With DMA Support [Z]. No-vember, 1998 .
[2] Texas Instruments. TMS320VC33 Digital Signal Processor[Z].2000.
[3] How to Begin Development Today With the TMS320VC33 DSP[Z].2000.
[4] 王念旭. DSP基础与应用系统设计[M].北京:北京航空航天大学出版社,2001.
[5] 周振宇,谷海颖. 基于USB总线的实时数据采集系统的设计[J].电子技术应用,2002,217-219.
[6] GREG NALDER. 用于Windows操作系统的通用USB[J]. 电子产品世界,2004(2).
2024年2月20日发(作者:范许)
USB在实时数据采集处理系统中的应用
汪春梅;贾红涛
【摘 要】通用串行总线(USB)是一种正在迅速发展起来的高速外设总线,它具有热插拔、智能化、易于使用等特点.在以DSP为核心的数据采集系统中加入USB接口,为系统与微机之间的通讯提供了便捷的通道,作者主要介绍了USBN9602与TMS320VC33 DSP的接口设计和系统软件设计.
【期刊名称】《上海师范大学学报(自然科学版)》
【年(卷),期】2004(033)003
【总页数】5页(P53-57)
【关键词】USB;实时数据采集和处理系统;DSP
【作 者】汪春梅;贾红涛
【作者单位】上海师范大学,机械与电子信息学院,上海,201418;哈尔滨工业大学,电子与通信工程系,哈尔滨,150001
【正文语种】中 文
【中图分类】TP368.1
在研制以TMS320VC33浮点数字信号处理器为核心的实时数据采集处理系统过程中发现一个问题----实时数据采集处理系统要将采集、处理的大量数据实时传送到微机上,常用的并行接口、RS232接口都无法满足这一要求.而作为计算机接口之一的USB(Universal Serial Bus)接口,具有热插拔、速度快和可以连接多个外围
设备的特点,能够较好地满足系统要求.
USB接口有如下特点:
(1)速度快.USB1.1规范的数据传输率可达1.5~12Mb/s,比标准的串行口快得多,USB2.0可以提供向下兼容和360~480Mb/s的传输速率.可以适应各种不同类型的外设.
(2)易扩展.用USB连接的外围设备可以分为5层,外设数目最多可达127个.
(3)USB支持热插拔,可以在不关PC机的情况下安全地插上和断开USB设备.热插拔体现了USB的安全、可靠和智能.
(4)USB支持PnP(Plug and Play),也就是即插即用.当插上USB设备时,主计算机设备检测该外设并且通过加载相关的驱动程序对该设备进行配置.
(5)使用灵活.USB共有4种传输模式:控制传输(control)、同步传输(Synchronization)、中断传输(interrupt)、块传输(bulk),以适应不同设备的需要.
(6)USB在设备供电方面提供了灵活性.USB直接连接的设备可以通过USB电缆供电.USB传输线中的两条电源线可以提供5V电源供USB设备使用.
在系统设计中所要解决的有如下几个问题: USB接口芯片与VC33处理器的硬件连接,微机端USB通讯软件的设计和VC33处理器端USB通讯软件的设计.本文将逐一介绍如何解决这3个问题.
1 硬件设计
实时数据采集处理系统采用TMS320VC33作为系统核心,A/D转换芯片采用MAX1246,该芯片可以同时完成4路模拟信号采集,其采样速率为每路12KSPS,采样位数12位,USB接口芯片采用USBN9602.当采集系统所采数据不经处理直接向微机传送,每秒所要传送的数据量为12K*4*12=576K比特.
1.1 DSP处理器[2]
DSP处理器分为定点、浮点两大类,浮点型处理器适于对运算精度有较高要求的
领域,同16位定点处理器相比,32位浮点处理器的数值范围从-32768至+32767扩展到- 3.4028236×1038至3.4028234×1038,但浮点处理器的缺点价格和功耗较高.本采集和处理系统要进行实时信号分析,要求有较高的运算速度和运算精度,所以选用TI公司的32位浮点DSP-TMS320VC33作为处理器.VC33是德州仪器公司推出的C3X系列产品中性能较高、高度集成的通用数字信号处理器,具有高度灵活的可操作性和高速的处理能力.其性能特点如下:运行速度达到了75MIPS(即每秒0.75亿次);34K×32-bitSRAM;具有32位整数和40位浮点运算能力;片上有一串行接口、两个32位定时器和DMA控制器,有效的应用DMA功能,可不通过处理器直接进行数据的存取,从而极大地提高处理器运行效率,把处理器从繁重的数据采集工作中解放出来,而给信号处理留下充足的时间.
N点复数FFT变换约做2N×Log2N次实数乘法运算和3N×Log2N次实数加法运算.TMS320VC33的乘法和加法都是单周期指令,取N=1024,不计内存访问时间,则一次1024点的FFT所需时间约0.9ms.而按96KSPS的采样率计算,1024点的采样时间约10ms,可见该DSP速度足可以满足要求.
1.2 USBN9602芯片[1]
USB接口器件采用National Semiconductor公司的一种专用芯片9602支持USB1.1标准,该芯片控制方便、灵活,具有标准并行总线接口,可以方便地同处理器连接,内部具有较大的FIFO处理器,可以缓存大量数据,从而减轻处理器的工作负担.它是通用串行接口的全速功能控制器,该芯片内部集成微处理器接口、USB末端FIFO存储器、串行接口引擎(SIE)、收发器、3.3V电压转换器、通用并行接口和可编程时钟发生器,采用48MHz晶振,其内部结构如图1.芯片内部总共有7个传送/接收FIFO存储器:1个双向传送和接收FIFO存储器,3个单向传送FIFO存储器,3个单向接收FIFO存储器,一旦FIFO
存满,SIE立刻对数据进行处理,其中包括:同步模式识别、并/串转换、位填充/解填充、CRC产生与校验、地址识别、握手响应与产生、USB特殊事件检测,最后由收发器通过数据线(D+、D-)传送数据至主机.
图1 USBN9602内部结构
USBN9602通过并行接口与TMS320VC33 DSP实现连接,连接示意图如图2所示.通过对USBN9602的MODE0和MODE1的设置采用非总线复用方式,接口信号CS/,RD/,WR/,A0由CPLD控制,数据总线与VC33连接.图3是非总线复用接口方式的时序图.USBN9602操作时序是先往地址寄存器中写入地址,然后通过数据输入和数据输出寄存器读写数据,地址寄存器和数据寄存器的选择是通过A0来实现的.
图2 USBN9602与VC33硬件连接示意图
图3 非总线复用接口方式的时序图
2 系统软件设计
系统软件包括微机端USB通讯软件的设计和VC33处理器端USB通讯软件的设计.
2.1 微机端USB通讯软件的设计
在开发USB总线的过程中会发现通过USB接口进行I/O操作是一件十分繁琐的事情,即使进行一个简单的数据读写也会用到复杂的数据结构和功能调用序列,如果开发人员自行编写视窗的USB驱动程序,将面临十分繁琐的工作,而保证驱动程序正常运行也是十分艰巨的.
为了简化微机端USB通讯软件的设计,系统采用了CYPRESS公司提供的通用USB设备驱动程序,该驱动程序可以让用户很容易地实现对USB接口的控制,但应注意该驱动程序要求外围设备必须使用USB设备通用协议命令,而不能使用为某类USB设备所专用的命令.该驱动程序提供了一个面向对象程序库----,它可用来作为与USB驱动程序连接的编程接口,微机端USB通讯软件就是通过调
用库函数完成与采集系统通讯的.
当通讯软件运行时首先要进行设备识别,设备识别的过程是:主机首先通过USB接口向采集处理板发出设备请求----要求处理板返回厂商ID、设备号ID、序号等处理板信息,这是通过调用CCyUSBDevice类中的open( )函数来完成的,而诸如厂商ID、设备号ID、序号等处理板信息将由CCyUSBDevice类的成员返回,通过检查类的成员就可获知处理板的基本信息.
当程序检测到处理板之后首先向处理板分配设备地址,并进行USB端口配置,由于采集、处理系统的数据传送必须满足实时性要求,因此采用同步传输方式传输数据,同步传输有如下特性:
(1)在一定的时延条件下,保证对USB带宽的访问;
(2)只要向数据管道提供了数据,就会保证通过该管道的数据所要求的恒定数据传输率;
(3)如果传输发生错误,只会返回错误信息,而不会重发数据.
管道是指经过一个存储器缓冲区和一个设备上的端点同主机软件之间传送数据的渠道,而USBN9602为数据传送提供了16个端点,每个端点有相应的FIFO存储器.由于USBN9602的FIFO存储器深度为64字节,因此每个管道每个时间片的传输能力最大为64×8=512比特,而USB接口每个时间片的长度为1ms,而采集、处理板的数据率为576K比特,即每个时间片需要传递576比特,因此为了保证数据的实时传输至少要占用两个数据管道.在实际应用中采集数据传输占用了两个输入端点,每个端口每个时间片需要传送288比特数据,即36个字节,应用程序需要将两个端口传递的数据按照约定的顺序进行组织,从而得到所传送的数据.由于USBN9602片上的FIFO不超过64字节,当数据存入后,USBN9602自动将数据打包,由SIE自动发送数据包.程序获得数据后,需延迟至下组数据包准备好,从而保证程序与设备采集频率同步.
图4给出了USB通讯程序的流程图.
图4 微机端通讯程序主流程图
微机端程序采用Visual C++ 6.0编程,主要功能为:开启或关闭USB设备、检测USB设备、设置USB数据传输通道、设置A/D状态和数据采集端口、实时从USB接口采集数据、显示并分析数据.
2.2 VC33处理器端USB通讯软件的设计
VC33处理器端USB通讯软件采用C与汇编语言混合编写.其主要功能是控制USBN9602芯片完成USB协议的处理,这就要求在DSP上运行相应的代码以支持USB协议.如果没有USB协议处理代码,DSP将不能处理接收到的数据,这样可能导致主机锁死.
当采集、处理板作为一个USB设备插入USB总线时,主机通过总线枚举来识别处理板,之后主机为其分配一个唯一的地址,使处理板进入寻址状态,主机通过配置端点得到处理板的配置信息,得到配置信息后主机为处理板分配两个输入端点,这两个端点都以同步方式进行数据传输,而每个端口每帧传输的数据长度分别为固定的256比特和320比特,这样主机就完成处理板USB口的配置.
图5 VC33处理器端程序流程图
接下来主机向处理器发出启动信号,VC33处理器控制A/D转换器开始工作.由于A/D转换器的转换位数为12位,而采样值都是以16位为一个单位存储的,这就意味着一个采样点将包含4位冗余信息,如果不去掉这4位冗余信息将更多地占用USB总线的传输带宽.因此VC33处理器将每一毫秒接收到的48个采样值压缩为36个字,其中每路采样值占9个字,当接收到USBN9602发出的FIFO存储器空中断后,处理器将四路采样值放入端点对应的FIFO存储器中.USBN9602在收到存入FIFO存储器的数据后,会自动根据同步传输协议完成数据并串转换、组帧、加入CRC校验,在收到ACK握手信号后启动数据传输.图5给出了VC33处
理器端程序流程图.
3 结束语
USB以其即插即用的优点和灵活的数据传输方式,实现了实时数据采集处理系统、实时向微机传递数据的功能,较好地满足了系统的需要,达到了系统的设计要求.经过一段时间的使用,证明该系统工作稳定,较好地满足了数据实时采集的需要,下一步需要做的工作是利用VC33处理器的强大的处理能力,对实时采集的音频信号进行高效压缩,以减少传输数据量,满足更大采集能力的需求.
参考文献:
[1] National Semiconductor. USBN9602 (Universal Serial Bus) Full Speed
Function Controller With DMA Support [Z]. No-vember, 1998 .
[2] Texas Instruments. TMS320VC33 Digital Signal Processor[Z].2000.
[3] How to Begin Development Today With the TMS320VC33 DSP[Z].2000.
[4] 王念旭. DSP基础与应用系统设计[M].北京:北京航空航天大学出版社,2001.
[5] 周振宇,谷海颖. 基于USB总线的实时数据采集系统的设计[J].电子技术应用,2002,217-219.
[6] GREG NALDER. 用于Windows操作系统的通用USB[J]. 电子产品世界,2004(2).