基于DSP的 USB 口数据采集分析系统

发布者:阳关三迭最新更新时间:2012-06-06 来源: 21ic 关键字:DSP  USB  数据采集 手机看文章 扫描二维码
随时随地手机看文章

随着DSP芯片功能越来越强速度越来越快,性价比的不断提高以及开发工具的日趋完善,广泛用于通信、雷达、声纳、遥感、生物医学、机器人、控制、精密机械、语音和图像处理等领域。作为计算机接口之一的USB(Universal Serial Bus)口具有势插拔、速度快(包括低、中、高模式)和外设容量大(理论上可挂接127个设备)的特性,使其成为PC机的外围设备扩展中应用日益广泛的接口标准。本文设计并实现了基于DSP的USB口数据采集分析系统,该系统的DSP负责数据的采集和运算处理,处理结果通过USB口送计算机显示分析,其结构如图1所示。

该结构图中,CPLD和FPGA实现模块接口,包括串并转换、8位和32位数据总线间的转换、SRAM等功能。采样结果经过CPLD送至DSP运算处理(FFT变换、相关分析、功率谱分析等)后,由FPGA和USB接口送至主控计算机存储和显示。计算机应用程序易于实现丰富的图形界面,具有良好的人机接口。

1 模数模块

本系统主要用于振动信号和噪声分析,要求采样精度高,采样频率不超过100kHz。根据要求选用CRYSTAL公司的CS5396。该芯片原本用于立体声采样,基于∑-Δ结构,采样精度高,24位分辨率,120dB的动态范围;采样频率32kHz、44.1kHz、48kHz、96kHz可选;内部集成采样保持器、模拟低通滤波器、数字滤波器,同时还具有时采样功能;两路同时采样,串行输出,串行数据由CPLD转换成24位并行数据;由于该芯片量程是4V,差分输入,所以模拟部分只需再加上简单量程放大电路即可。这样模拟电路十分简单,抗干扰能力强、精度高。

2 DSP处理器

选择DSP处理器时主要考虑其运算速度、总线宽度和性价比。本系统采样结构24位,最好选用32位DSP;系统要进行实时信号分析、模态分析等,要求有较高运算速度,所以选用TI公司的32位浮点DSP——TMS320VC33。该芯片采用哈佛结构,6级流水线操作,指令执行周期7ns,外设包括一个DMA控制器和一个缓冲串口。

N点复数FFT变换约做2N×Log2N次实数乘法运算和3N×Log2N实时加法运算。TMS320VC33的乘法、加法都是单周期指令,取N=1024,不计内存访问和其它时间,则一次FFT所需时间为:10×5120×17ns约0.9ms。而按96KSPS的采样频率计算,1024点的采样时间约10ms,可见该DSP速度足以满足要求。

该DSP启动模式可选,上电后执行驻留在低地址空间的BOOTLOADER;然后根据4个中断输入信号的状态判断启动模式,可以从RAM、ROM或串行口启动。本系统选择串行口方式。这样,DSP程序可以直接从PC下载送至DSP接口,做到在系统调试,具有极大的灵活性。

3 USB接口

USB协议的实现基于网络的思想,是一种共享式的总线,在总线上数据以包(Packet)的形式发送。USB的数据传送有4种模式:块传输(Bulk Transfers)、中断传输(Interrupt Transfers)、同步传输(Isochronous Transfers)、控制传输(Control Transfers)。当需要快速传输大批量的准确数据时,一般采用块传输模式;当传输实时性较强的数据时,采用中断传输模式。

当USB设备插入计算机时,计算机和USB设备之间产生一个枚举过程。计算机检测到有设备插入,自动发出查询请求;USB设备回应这个请求,送出设备的Verdor ID和Product ID;计算机根据这两个ID装载相应的设备驱动程序,完成枚举过程。

由于USB协议非常复杂,开发者不可能在底层基础上进行开发。目前,市场上对USB协议进行封装的接口芯片,如:National Semiconductor公司的USBN9602、Plilips公司的PDIUSBD12等。本系统选用CYPRESS公司的带单片机内核的EZ-USB系列的AN2131QC.该芯片遵从USB1.0规范(12Mbps),将8051单片机内核、智能USB接口引擎、USB收发模块、存储器、串行口等集成一起,从而减少芯片接口时序。其内部结构如图2(虚线内是芯片部分)。

EZ-USB的8051代码(Firmware)可以固化在ROM内;更好的方案是通过USB口从主机下载到内部RAM,这样,易于修改、调试和更新。之所以能下载代码是因为芯片一上电完全在硬件上自动完成枚举过程,不需要Firmware。完成枚举后便可作为一个USB设备(叫做缺省USB设备)与计算机通讯,此时即可进行Firmware下载。下载完后,8051内核脱离RESET状态开始执行代码。可以通过Firmware对USB设备重新配置,这个重新配置过程叫做再枚举。

在EZ-USB中,缺省USB设备的接口中包括14个Endpoints,如表1所示。

表1 缺省USB端点(Endpoint)

Endpoint Type Alternate Setting
0 1 2
MaxPacket Size(bytes)
0 CTL 0 64 64
1IN INT 0 16 64
2IN BULK 0 64 64
2OUT BULK 0 64 64
4IN BULK 0 64 64
4OUT BULK 0 64 64
6IN BULK 0 64 64
6OUT BULK 0 64 64
8IN ISO 0 16 256
8OUT ISO 0 16 16
9IN ISO 0 16 16
9OUT ISO 0 16 16
10IN ISO 0 16 16
10OUT ISO 0 16 16

计算机与USB设备的数据通信主要包括两个方面:一是读取采样数据;二是给USB设备发送控制命令。发送控制命令先发送一个命令包(消息),然后根据情况发送后续数据或从设备读取响应数据。因此,根据EZ-USB芯片的功能,直接使用缺省配置中的6个Endpoint。

Endpoit OUT2 BULK:用来发送控制命令包。

Endpoint IN2 BULK:接收从USB设备发来的DSP消息。

Endpoint IN4 BULK:用来从USB设备读取数据,如读取采样数据、配置参数等。

Endpoint OUT4 BULK:用来向USB设备发送数据,如下载8051程序、下载FPGA程序等。

Endpoint OUT6 BULK:作辅助判断用,当PC传送完大量数据至USB设备时,向该端口写任意数据以起到通知USB设备的作用。[page]

Endpoint IN1 INT:用来从USB设备读取响应信号,如下载FPGA程序是否成功的标志等。

在缺省配置基础上可以编写适合需要的代码,如果对8051编程经验丰富的话,完全可以在不需要调试工具的情况下编写Firmware。

本系统Firmware结构建立在对消息队列不断服务基础上,即构建一个消息队列,当接收到任何一方(DSP或计算机)的消息时,将其放入消息队列。消息的接收是通过中断服务程序来实现的。当处理完一个消息时,从消息队列取出下一个消息进行处理。这种软件结构非常简单,思路清晰,对调试十分有利。

    USB设备驱动程序基于WDM。WDM型驱动程序是内核程序,与标准的Win32用户态程序不同。采用了分层处理的方法。通过它,用户不需要直接与硬件打它道(在USB驱动程序中尤为明显),只需通过下层驱动程序提供的接口号访问硬件。因此,USB设备驱动程序不必具体对硬件编程,所有的USB命令、读写操作通过总线驱动程序转给USB设备。但是,USB设备驱动程序必须定义与外部设备的通讯接口和通讯的数据格式,也必须定义与应用程序的接口。

本系统的驱动程序是在Compuware Numega Driver-Works的基础上采用面向对象语言C++开发的。Driver-Works可以很快构造出驱动程序的框架。主要构造了两个类:Class USBDAC和class USBDACDevice。Class USBDAC继承了class Kdriver,负责装载驱动程序和创建功能设备对象时要做的一些操作。Class USBDACDevice继承了class KpnpDevice,是驱动程序的主要部分,负责设备启动、停止的操作以及与设备的数据通讯。API函数调用和CreateFile ()、ReadFile ()、WriteFile ()、DeviceIO-Control ()、CloseFile()等的实现也在class USBDACDevice中完成。

Class USBDAC的定义如下:

class USBDAC : public Kdriver

{

SAFE_DESTRUCTORS

public:

/*Driver Entry (),在系统引导或I/O管理器装入驱动程序时,调用这个例程。执行大量的初始化函数,包括建立到其它驱动程序的指针、查找和定位由驱动程序使用的任何硬件资源等,不过,这部分工作大多由基类Kdriver完成。*/

virtual NTSTATUS

DriverEntry(PUNICODE_STRING RegistryPath);

/*AddDevice(),创建一个Device对象。调用其构造函数对设备初始化,创建设备的名称等。*/

virtual NTSTATUS

AddDevice(PDEVICE_OBJECT Pdo);

Int m_Unit;

};

Class USBDACDevice的定义如下:

Class USBDACDevice : public KpnpDevice

{

// Constructors

public:

SAFE_DESTRUCTORS

USBDACDevice(PDEVICE_OBJECT Pdo,ULONG Unit);

~USBDACDevice ();

// Member Functions

public:

//添加自己的成员函数

NTSTATUS USBDAC_GetACK(int &);

NTSTATUS USBDAC_StartADConversion(void);

NTSTATUS USBDAC_StopADConversion(void);

NTSTATUS USBDAC_DownloadFPGA(KIrp);

NTSTATUS USBDAC_Download8051(KIrp);

NTSTATUS USBDAC_SetChannelParameter(PUCHAR,ULONG,int);

};

4 FPGA

FPGA模块主要实现单片机与DSP间的数据缓冲、8位数据线与32位数据线间的转换、单片机同步串口和DSP缓冲串口的切换。要求FPGA能实现丰富的内部RAM和准确的时钟控制。根据需要选用XILINX公司的XCV50TQ144。该器件采用SRAM 查找表结构,具有系统内可再编程(ISP)和运行间可再配置等特性。系统初始化时由USB口下载FPGA程序,通过单片机串口对其进行线配置。

本系统可广泛用于振动、噪声测试分析。可以在WINDOWS95/98/NT下开发各类动态测试与信号处理的应用程序,根据需要加载已经编制的各种DSP算法,使其具有信号分析、模态分析、声学分析、环境测试、长时间记录等功能。

关键字:DSP  USB  数据采集 引用地址:基于DSP的 USB 口数据采集分析系统

上一篇:多路读写的SDRAM接口设计
下一篇:SL11R单片机外部存储器扩展

推荐阅读最新更新时间:2024-03-16 13:01

基于Lonworks总线的智能数据采集系统
1 概述 集散控制系统(DCS)和现场总线控制系统(FCS)已经发展到相当成熟的地步,但是他们仍然存在着缺陷和不足。因此需要建立具有良好的柔性、系统重构能力、容错能力和快速反应性的网络化测控系统。分布式人工智能技术(DAI), Agent理论、现场总线与单总线的集成技术为设计和实现这种系统提供了一条切实有效的途径。 基于此点出发,本章提出一种基于总线技术的智能化数据采集系统。在该系统中,每个测控单元都被构造成具有自主性和自适应能力的Agent,通过多个Agent之间的协同工作来提高整个系统的可靠性、稳定性和工作效率。这样该现场总线测控系统就具有了信息感知、分布性、并发性、主动性和自适应性的特性。 近来,Agent技术己被认为是
[嵌入式]
基于DSP和FPGA的电视观瞄系统设计
电视观瞄系统以FPGA为处理核心,实现红外数字视频信号的实时图像处理,DSP实现了部分的图像处理算法和FPGA的控制逻辑,并响应中断,实现数据通信和存储 引言 许多光学观瞄系统都增加了电视、红外辅助(周视)观瞄系统,称之为光电观瞄系统。在该系统中,需要用电视或红外成像来精确瞄准目标,但光电系统所在的平台总是处于运动状态,成像器件产生的图像也就随之运动,通过CCD成像器件或红外成像器件得到的图像不能保证观瞄精度。因此,克服平台运动造成的成图像旋转是解决观瞄精度的关键技术之一。目前的常用方法是机械消像旋,很多要求较高的光学系统仍然采用该方案,随DSP及FPGA的广泛应用,电子消像旋也应用到了光学观瞄系统上。 这两种方案各有优缺点:
[应用]
基于S3C44B0X处理器和mClinux实现USB设备两种模式的应用设计
引言 目前,USB 设备产品的应用非常广泛,但市场上能够提供Host/Slave两种模式的USB控制芯片并不多,本系统采用CYPRESS公司的SL811HST芯片作为USB接口的控制芯片,实现Host/Slave两种工作模式。 系统介绍 本系统是以三星公司的S3C44B0X为嵌入式处理器,mClinux为操作系统的专用PDA,通过无线方式实现与上位机的通信,同时也可通过USB接口直接控制USB打印机输出。其中USB控制芯片采用CYPRESS公司的SL811HST芯片,它有两种工作模式Host/Slave。模式的改变是由该芯片M/S脚的电平值决定,其值可以通过软件设置来改变。当置M/S脚为低电平时,它是Host模式,可以直接控制
[单片机]
首款实现“墙到电池”RapidCharge™的USB PD解决方案
电子网消息,智能手机和便携式设备日益采用更大容量的电池来支持更丰富的功能、更强劲的处理器和更大的显示屏。这些高性能设备很快耗尽电池电量,不仅需要额外的充电,而且需要更多的电能来实现快速充电。Dialog凭借广泛的充电芯片产品引领 RapidCharge™快充解决方案,可实现更高的效率、更低的BOM成本,并支持几乎所有快速充电协议,包括新的USB PD规范。 消费者对快速充电和小尺寸便携式适配器的需求,意味着OEM厂商需要将更多的电力注入到尺寸更小的适配器和手机中,而且不能产生过热问题。满足这些市场需求需要具有高功率密度和超高效率的IC解决方案,并使用更少且更小的元件。 Dialog最新的解决方案是一套完整的“墙到电池”充电
[半导体设计/制造]
基于Zynq-7000高速数据采集解决方案
—米尔MYD-C7Z010/20-V2开发板 近年来,科技日新月异,随着机器视觉、人工智能的迅速发展,相关行业对数据采集系统的性能要求更加苛刻,要求能够同时采样的通道更多,采样的精度和速度要求更高。在雷达,航天,视频传输,工业控制等领域,采样率、分辨率、传输速率成为评价超高速数据采集系统的最重要技术指标,所以芯片的选择就变得尤为重要,既需要具备高精度、高采样速率等模块,又需要可以嵌入操作便捷、用户体验更友好的操作系统,实现良好的人机交互功能。 Zynq-7000是Xilinx推出的一款全可编程片上系统(All Programmable SoC)。该芯片集成了ARM Cortex A9双核与FPGA,所以ZYNQ是一款
[嵌入式]
基于Zynq-7000高速<font color='red'>数据采集</font>解决方案
基于DSP的高速数据采集系统设计方案
引言 近年来,高速数字信号处理器(DSP)已越来越广泛地用于各个领域,例如:通信、语音处理、图像处理、模式识别及工业控制等方面,并且日益显示出巨大的优越性。数字信号处理器是利用专门或通用的数字信号处理芯片、以数字计算的方法对信号进行处理,具有处理速度快、灵活、精确抗干扰能力强、体积小、可靠性高等优点,满足了对信号快速精确实时处理及控制的要求。 通用串行总线USB(Universal Serial Bus)具有连接灵活、可热插拔、一种接口适合多种设备、速度高、自动配置、无需定位及运行安装程序、可为外设提供电源、低功耗、低成本、高可靠性等优点使数据的高速传输变得非常便利。 设计一种通用数据采集与信号处理系统,采用高
[嵌入式]
基于DSP与MAX147的多路数据采集系统设计
1. 引言 由于DSP芯片具有先进的并行结构,使其在信号处理和数据采集领域得到了越来越广泛的应用TI公司的DSP芯片TMS320VC5402PGE100最高工作频率是100MHZ具有2个高速、全双工、多通道缓冲串行接口(McBSP) 其方便的数据流控制可使其与大多数同步串行外围设备接口MAXIM公司的A/D芯片MAX147具有较高的性能价格比,最高的转换频率可达130kHz,具有高采样率、低功耗、高精度等特性,非常适合于体积小、对功耗要求比较严格的移动应用设备,如便携式工业测量、医疗仪器 2. MAX147工作原理 2.1 MAX147介绍 MAX147是一种具有8个单端输入通道或4个差动输入通道的12位精度的串行数据转换器输入电
[嵌入式]
Atmel新款闪存MCU满足USB嵌入式应用需求
Atmel Corporation日前推出四款带有USB控制器的全新AVR闪存微控制器(Flash MCU)。AT90USB微控制器设计用于满足在主机和功能模式中需要USB连接的嵌入式应用的各种不同要求。 目前正在使用的USB设备数量超过10亿;在占领计算机和外围设备领域之后,USB在消费产品和工业设备领域也正在迅猛发展。数据存储、数据传输、产品配置和固件更新是推动这一趋势的关键应用。AT90USB1286和AT90USB646具有USB口,用于需要与USB主机相连的应用。AT90USB1287和AT90USB647符合USB On-The-Go(OTG)标准,在应用中作为两用设备(Dual Role Device, DRD),
[新品]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved