这次小编在这里给大家整理了PCI-8361BN数据采集卡在光纤电容液滴分析系统中的应用(共含10篇),供大家阅读参考。同时,但愿您也能像本文投稿人“xxxigdragon”一样,积极向本站投稿分享好文章。
PCI-8361BN数据采集卡在光纤电容液滴分析系统中的应用
结合光纤电容液滴分析系统的开发,阐述了数据采集卡PCI-8361BN在实际应用中的功能及有关硬件的`设置,给出了在VC环境下利用PCI-8361BN进行数据采集的基本流程和关键函数,并利用该方法实现了光纤电容液滴分析系统的实时数据采集.
作 者:张春松 宋晴 作者单位:北京邮电大学自动化学院,北京,100876 刊 名:工业控制计算机 英文刊名:INDUSTRIAL CONTROL COMPUTER 年,卷(期): 23(8) 分类号: 关键词:光纤电容液滴分析系统 PCI-8361BN 数据采集ADS7844在低功耗数据采集系统中的应用
摘要:详细介绍了12位串行模数转换器ADS7844的结构及工作原理,给出了一个实用的低功耗数据采集系统的设计方案,同时给出了相关的`硬件电路和软件程序。关键词:串行模数转换器;数据采集系统;低功耗;ADS7844
在野外以及一些没有市电或者不适宜使用市电的应用场合,自动化仪表通常要采用电池供电,这就要求仪表中的电子元器件的功耗要低,A/D转换器作为自动化仪表的重要组成部份更不例外。笔者采用ADS7844和PIC16C64构成的数据采集系统便具有功耗极低、结构简单等优点,完全可以适应电池供电系统的要求。
1 ADS7844的结构及工作原理
ADS7844是Burr-Brown公司推出的一种高性能、宽电压、低功耗的12-bit串行模数转换器。它有8个模拟输入端,可用软件编程为8通道单端输入A/D转换器或4通道差分输入A/D转换器,其转换率高达200kHz,而线性误差和差分误差最大仅为±1LSB。ADS7844在电源电压为2.7V~5V之间均能正常工作,最大工作电流为1mA,进入低功耗状态后的耗电仅3μA。ADS7844通过6线串行接口与CPU进行通信,而且接口简单方便。
1.1 ADS7844的引脚功能
ADS7844的引脚排列如图1所示。它有20个引脚,各引脚的功能如下:
CH0~CH7:模拟输入端,当器件被设置为单端输入时,这些引脚可分别与信号地COM构成8通道单端输入A/D转换器;当器件被设置为差分输入时,利用CH0~CH1、CH2~CH3、CH4~CH5和CH6~CH7可构成4通道差分输入A/D转换器?
COM:信号地?
VREF:参考电压输入端,最大值为电源电压?
CS:片选端,低电平有效,该脚为高电平时,其它数字接口线呈三态?
DCLK:外部时钟输入端,在时钟作用下,CPU将控制字写入ADS7844,并将转换结果从中读出?
DIN:串行数据输入端,在片选有效时,控制字在DCLK上升沿被逐位锁入ADS7844?
DOUT:串行数据输出端,在片选有效时,转换结果在DCLK的下降沿开始被逐位从ADS7844移出?
BUSY:“忙”信号输出端,在接收到控制字的第一位数据后变低,只有在转换结束且片选有效时,该脚才输出一个高脉冲?
SHDN:电源关闭端,低电平有效。当SHDN为低电平时,ADS7844进入低功耗状态?
VCC,GND:分别为电源端和数字地。
1.2 ADS7844的控制字及转换时序
ADS7844的
[1] [2] [3] [4]
虚拟仪器在汽车数据采集系统中的应用
汽车试验设备是汽车性能测试的硬件基础,传统的`汽车试验设备由于存在价格昂贵、功能单一、安装不便、功能扩展和升级困难、对温度、工况等要求严格,导致试验成本提高、试验数据不精确等问题.虚拟仪器(Virtual instrument,简称VI)设计思想的提出,恰恰可以很好地解决这些问题,用户可以根据自身需求设计自己的仪器系统,充分利用计算机技术来实现和扩展传统仪器的功能.本文重点介绍了基于虚拟仪器的数据采集系统的软件设计思想和方法.
作 者:张亚萍 马明星 ZHANG Ya-ping MA Ming-xing 作者单位:张亚萍,ZHANG Ya-ping(扬州大学,江苏,扬州,225009;泰州职业技术学院,江苏,泰州,225300)马明星,MA Ming-xing(扬州大学,江苏,扬州,225009)
刊 名:成组技术与生产现代化 英文刊名:GROUP TECHNOLOGY & PRODUCTION MODERNIZATION 年,卷(期): 26(3) 分类号:U463.07 关键词:试验设备 性能测试 虚拟仪器 软件设计 方法摘要:详细介绍了12位串行模数转换器ADS7844的结构及工作原理,给出了一个实用的低功耗数据采集系统的设计方案,同时给出了相关的硬件电路和软件程序。
关键词:串行模数转换器;数据采集系统;低功耗;ADS7844
在野外以及一些没有市电或者不适宜使用市电的应用场合,自动化仪表通常要采用电池供电,这就要求仪表中的电子元器件的功耗要低,A/D转换器作为自动化仪表的重要组成部份更不例外。笔者采用ADS7844和PIC16C64构成的数据采集系统便具有功耗极低、结构简单等优点,完全可以适应电池供电系统的要求。
1ADS7844的.结构及工作原理
ADS7844是Burr-Brown公司推出的一种高性能、宽电压、低功耗的12-bit串行模数转换器。它有8个模拟输入端,可用软件编程为8通道单端输入A/D转换器或4通道差分输入A/D转换器,其转换率高达200kHz,而线性误差和差分误差最大仅为±1LSB。ADS7844在电源电压为2.7V~5V之间均能正常工作,最大工作电流为1mA,进入低功耗状态后的耗电仅3μA。ADS7844通过6线串行接口与CPU进行通信,而且接口简单方便。
1.1ADS7844的引脚功能
ADS7844的引脚排列如图1所示。它有20个引脚,各引脚的功能如下:
CH0~CH7:模拟输入端,当器件被设置为单端输入时,这些引脚可分别与信号地COM构成8通道单端输入A/D转换器;当器件被设置为差分输入时,利用CH0~CH1、CH2~CH3、CH4~CH5和CH6~CH7可构成4通道差分输入A/D转换器?
COM:信号地?
VREF:参考电压输入端,最大值为电源电压?
CS:片选端,低电平有效,该脚为高电平时,其它数字接口线呈三态?
DCLK:外部时钟输入端,在时钟作用下,CPU将控制字写入ADS7844,并将转换结果从中读出?
DIN:串行数据输入端,在片选有效时,控制字在DCLK上升沿被逐位锁入ADS7844?
DOUT:串行数据输出端,在片选有效时,转换结果在DCLK的下降沿开始被逐位从ADS7844移出?
BUSY:“忙”信号输出端,在接收到控制字的第一位数据后变低,只有在转换结束且片选有效时,该脚才输出一个高脉冲?
SHDN:电源关闭端,低电平有效。当SHDN为低电平时,ADS7844进入低功耗状态?
VCC,GND:分别为电源端和数字地。
1.2ADS7844的控制字及转换时序
ADS7844的控制字如表1所列。
表1ADS7844的控制字含义
Bit7(MSB)Bit6Bit5Bit4Bit3Bit2Bit1Bit0(LSB)SA2A1A0-SGL/DIFPD1PD0
ADS7844的控制字共有8位,其中S是起始位?控制字的起始位总为“1”。A2~A0是通道选择位,在单端输入时分别对应8个通道,而对于差分输入,000~011分别对应CH0~CH1、CH2~CH3、CH4~CH5、CH6~CH7,而100~111则分别对应CH0~CH1、CH1~CH0、CH3~CH2、CH5~CH4、CH7~CH6。Bit3没有定义。SGL/DIF是模式控制位,该位为“1”时是单端输入模式,为“0”时是差分输入模式。PD1和PD0是电源关闭模式控制位,若为“00”,则表示ADS7844在不进行数据转换时自动进入电源关闭模式,若为“11”,芯片则始终处于电源开启模式。
ADS7844有多种转换时序,其基本转换时序如图2所示。从图中可见,一个转换周期需要24个时钟周期,其中8个用于输入控制字,16个用于读取转换结果。控制字的所有位在时钟上升沿被锁入芯片,转换结果在时钟的下降沿被逐位移出。所有移入和移出的数据都是高位在前、低位在后。需要说明的是,ADS7844是12位A/D转换器,其转换结果只有12位,故在移出12位结果后,还需送入4个时钟来完成整个转换过程,这4个多余的时钟移出的数据为“0”,使用时不应作为转换结果处理。
要设计一个低功耗数据采集系统,只有A/D转换器是低功耗器件还不够。PIC16C64是美国MI-CROCHIP公司生产的高性能单片机,它有许多优点:宽电压?2.7V~5V?,其工作电流只有1mA?3.3V@32kHz时?,进入休眠状态后只有几微安且可以用中断将其从休眠状态唤醒等。低功耗数据采集系统的硬件电路如图3所示,其中CS、DCLK、DIN和DOUT必须与CPU连接,而BUSY则可以不用,在转换时稍加延时等待即可。控制AD7844进入低功耗状态有两种方式:一是直接控制SHDN端;二是将SHDN接在电源上,它们均可在控制字中设置。为了节省口线,可采用第二种方式。采样控制可以使用外部中断,如外部中断INT0、串行口中断和PB口电平变化引起的中断等,也可以使用内部定时中断。
3软件程序
下面给出该系统的主程序部分流程图和汇编程序。该设计假设用外部中断INT0唤醒CPU来进行数据采集,且A/D转换程序就是中断服务子程序。
ORG000H
GOTOMAIN
ORG004H
GOTOINTPRO
ORG010H
MAINMOVLW10H?关闭总中断控制位,
但开放INT0
MOVWFINTCON
BSFSTATUS?RP0?初始化A口
MOVLW0F8H
MOVWFTRISA?A口D0-D2为输
出,D3为输入
BCFSTATUS,RP0
BSFPORTA,1?使片选无效
...
BSFINTCON,GIE?开放总中断控制位
LOOPSLEEP?等待中断
NOP
...?数据采集完成后进行其他处理
GOTOLOOP
INT_PROBCFPORTA,0?时钟置低电平
BCFPORTA,2?数据输入置低
MOVLW08H?置送控制字所需时钟数
MOVWFNUM
MOVLW8CH?控制字,假设转换CH0,
单端输入,?自动进入低功耗状态
BCFPORTA,1?片选有效
...?送控制字
LCALLDELAY?调用延时子程序
MOVLW10H?置读转换结果所需
时钟数
MOVWFNUM
...?读转换结果
BSFPORTA,1?结束转换并返回
RETFIE
4结束语
由于PIC16C64和ADS7844都是低功耗器件,且都有低功耗状态,因而用其设计的数据采集系统功耗是很低的。经实测,当电源电压为3.3V、时钟为32.76kHz时,该电路的正常工作电流为2mA,而进入低功耗状态后的系统消耗电流最大为4μA,因而完全适合于电池供电。另外,PIC16C64和ADS7844都是宽电压器件,并且PIC16C64还有许多功能可以开发利用。如果在本系统基础上做必要的功能扩展,便可用于其它工业控制系统的现场控制等领域。
无线数据采集在环境监控系统中应用
随着嵌入式技术、网络技术和监控技术的发展,基于嵌入式技术的.远程环境监控系统在安防领域将得到越来越广泛的应用.该文介绍了基于嵌入式技术的远程环境监控系统前端无线数据采集系统中PT2262/PT2272工作原理.
作 者:陈飞 CHEN Fei 作者单位:安徽广播影视职业技术学院,安徽,合肥,230022 刊 名:电脑知识与技术 英文刊名:COMPUTER KNOWLEDGE AND TECHNOLOGY 年,卷(期): 4(35) 分类号:X830 关键词:环境监控 PT2262/PT2272高性能数据采集系统芯片LM12H458及其应用
摘要:LM12H458是美国NS公司生产的8通道数据采集系统芯片,它精度高、转换迅速、数据传输快、集成度高、单电源供电、外围接口简单。LM12H458内含可用来存储转换结果的32字的FIFO和存储指令的8字RAM。文中介绍了LM12H458的工作原理、引脚功能和具体应用电路。关键词:A/D转换;数据采集系统(DAS);LM12H458
1概述
LM12H458是高集成度的数据采集系统?DAS?芯片,它将采样保持、A/D转换集成在一块芯片内,从而大大减少了外围电路的设计。其8路模拟信号输入既可作为单端输入,又可两两组成差分输入。器件内部提供的一个2.5V参考电压、8×48bit指令RAM和32×16bit的FIFO大大减小了微处理器的负担。LM12H458的工作电压为3~5.5V,功耗小于34mW,待命模式下的功耗只有50μW。此外,LM12H458还有如下主要性能:
●有三种工作模式:分别为带符号的13位模式、带符号的9位模式和看门狗模式;
●有8个模拟信号输入通道,模拟信号可单端输入,也可差分输入;
●内置采样保持和2.5V参考电压;
●内含32×16bit的FIFO;
●采样时间和转换速率可编程;
●具有自校准和诊断模式;
●带有8位或16位数据总线。
2引脚功能和功能说明
LM12H458的引脚功能如表1所列。图1为其内部功能框图。LM12H458是一个多功能数据采集系统,其内部的电荷重分配ADC采用电容梯形网络代替普通的电阻梯形网络,并使用逐步逼近寄存器的DAC使VREF-和VREF+之间产生一个中间电压,该电压与输入的采样电压相比较可产生数字输出的每一位,中间电压的个数和比较的次数对应于ADC的分辨率,通过校准ADC中的电容网络可校准数字输出的每一位精度。LM12H458有两种不同的校准模式:一种是补偿偏移电压或零误差,在该模式下只测量一次偏移误差,并依此建立修正系数;另一种为修正偏移误差和ADC线性误差,称为全校准。将该模式下的偏移误差测量八次,并取平均值即可建立修正系数。上述两种模式的修正系数被存贮在内部的偏移修正寄存器中。LM12H458的线性修正是通过修正内部DAC的失配电容获得的,在LM12H458内部ROM中存有校准算法,可对每一个电容校准8次并取平均值,从而产生线性修正系数。一旦校准后,内部算术逻辑单元(ALU)即可使用偏移误差修正系数和线性修正系数来修正每一次的转换结果。看门狗模式用于监控单端输入或差分输入信号的幅值。每个采样信号都有上下两个门限,输入信号高于或低于某一门限值都会产生中断。
表1LM12H458的脚符号及功能
引脚号符号功能1,12VA+,VD+模拟电源和数字电源2~11,13~18D0~D15双向数据总线,总线宽度由BW决定。BW=1,总线宽度为8bit,BW=0,总线宽度16bit19RD读信号输入20WR写信号输入21CS片选输入22WR地址锁存,用于总线复用的系统中23ALE外部时钟输入,频率范围为0.05MHz~10MHz24~28A0~A4地址线29SYNC同步输入/输出,当配置寄存器的“I/O选择”位清零时,SYNC为输入;而当“I/O选择”位置为1时,SYNC为输出。30BW总线宽度设定位,BW=1时,总线宽度为8bit,BW=0时,总线宽度为16bit31INT中断输出,低电平有效32DMARQDMA请求输出,高电平有效33GND接地34~41IN0~IN7模拟信号输入通道42VREF-负参考电压输入,电压范围为0~VREF-43VREF+正参考电压输入,电压范围0~VA+44VREFOUT内部2.5V参考电压输出
LM12H458是一个多功能数据采集系统,内部有28个16bit的寄存器,各个寄存器的功能如下:
配置寄存器是DAS的控制中心,可用于控制序列器的启动和停止、复位RAM指针和标志、设置待命状态、校准偏移和线性误差、选择RAM区等。
指令RAM分为三个区:指令区、门限1区、门限2区。每一条指令(48bit=3X16bit)分散在三个16比特字宽的RAM区中,三个区的选择可由配置寄存器2bit的RAM指针来控制。指令区可设置通道的选择、工作模式、采样时间和循环位。其它两个区用于设置上下门限值。DAS可从指令0连续执行所有设置的指令,执行的最后一条指令的循环位为1时,再返回到指令0。指令执行期间,微处理器不能访问指令RAM,只有处理器终止指令循环后才可访问。
FIFO为只读寄存器,可用于存储转换结果。
中断使能寄存器可使用户激活8个中断源,该寄存器的高字节与中断1、2有关。
图2LM12H458与80C51的接口电路
中断状态寄存器和门限状态寄存器用于指示DAS中断源和输入信号是否超过上门限或下门限。
定时寄存器用于设置指令执行前的等待时间。而指令寄存器的bit9可使能或禁止插入等待时间。
LM12H458有8个中断源,各中断具有同等的优先级别,中断使能寄存器可使能或禁止相应的中断,当发生中断时,中断状态寄存器相应的位置1。各个中断对应的`功能如下:
●INT0:模拟输入信号在规定的门限值以外产生中断。
●INT1:序列发生器执行到某条指令时,该指令地址等于中断使能寄存器中bit8~bit10设定的值时,产生中断。
●INT2:A/D转换的结果保存在FIFO,当FIFO中转换结果的个数等于中断使能寄存器比特11~15中设定的值时,产生中断。
●INT3:完成单次采样自动校准后产生中断。
●INT4:完成一次完整的自校准后产生中断。
●INT5:执行时,指令暂停位为1时产生中断。
●INT6:电源指示中断,当芯片供电电压小于4V时,产生中断。
●INT7:在从等待模式返回10ms后产生中断。
图3编程流程图
3应用
3.1硬件电路设计
LM12H458灵活的总线接口简化了与多种微处理器的接口,它既可与8位处理器相连,又可方便地与16位微处理器相连。图2为AT89C51与DAS的接口电路图。该电路采用全地址译码方式来产生DAS的片选信号CS,其DAS映射的地址空间为0000-001F,数据总线宽度为8bit。图中的74HC373用于锁存低8位地址,而8bit幅度比较器则可用来对高8位地址进行译码,通过比较地址与地址范围所选择的输入逻辑可产生U5(74HC138)的选通信号,74HC138的Y0可作为DAS的片选信号。DAS的INT端口用于驱动AT80C51的中断INT0,同时它还允许DAS请求中断服务。
3.2软件编程
LM12H458虽然应用灵活、广泛,但基本的工作流程不变,图3为其典型的编程流程。在处理器初始化后,应向DAS写入合适的指令以初始化DAS,以便设置采样时间、工作模式、通道选择等。完成一次全校准需要4944个时钟周期,若设置中断使能,校准后应产生中断以通知微处理器。全校准会影响DAS的内部标志和指针,从而影响指令的执行。因此校准后必须复位。将配置寄存器的bit0设置为1可启动序列器。流程图中的p表示用户定义的不同工作模式。图3(a)为DAS的初始化和序列器的启动流程,图3(b)为中断服务例程。当进入中断服务后,配置寄存器的bit0应清零以停止A/D转换,然后处理中断事务。
4结论
LM12H458数据采集系统芯片功能强大、应用灵活,可广泛用于数据记录、测量仪器、惯性制导、过程控制、能源消耗管理等方面。由于篇幅所限,本文仅作简单介绍,有关LM12H458的详细技术资料可在NationalSemiconductor的网站上获得。笔者已将LM12H458用于PI网络石英晶体元件的测试系统中。使用证明:LM12H458的转换精度很高,而且工作稳定可靠。
VXI数据采集系统的建立及其应用
在液氧/煤油发动机试验中,需要根据测量精度、被测参数的'类型、采样速率等技术指标进行数据采集系统的选型、配套,完成对温度、压力、流量转速、推力、真空压力等众多参数的测量.主要介绍了利用VXI数据采集系统完成各参数的测量任务,包括系统的建立,解决系统调试中出现的问题,同时介绍了VXI数据采集系统在发动机故障诊断紧急关机系统中的应用.
作 者:雷震 唐云龙 Lei Zhen Tang Yunlong 作者单位:西安航天动力试验技术研究所,陕西,西安,710100 刊 名:火箭推进 英文刊名:JOURNAL OF ROCKET PROPULSION 年,卷(期): 34(5) 分类号:V434.3 关键词:液体火箭发动机 数据采集 参数测量CPLD在远程多路数据采集系统中的应用
摘要:采用VHDL语言和图形输入设计方法,给出了用CPLD在远程多路数据采集系统中实现地址译码、串口扩展、模块测试、模数转换以及高位数据处理等功能的具体方法,同时简要介绍了远程多路数据采集系统的工作原理及软、硬件框架。关键词:CPLD;单片机;译码;RS-232;VHDL; EPM7256SQC208
CPLD(Complex Programmable Logic Device?复杂可编程逻辑器件)是在传统的PAL、GAL基础上发展起来的。目前,CPLD已在通讯、DSP及微机系统中有着非常广泛的应用,它不仅可使设计的产品小型化、集成化和稳定可靠,而且还具有在系统或在芯片直接编程的能力,从而使电子系统的设计、开发、更新与维护变得更为方便,更便于装配和批量生产。因此,利用CPLD可大大缩短设计周期,减少设计费用,降低设计风险。远程多路数据采集系统,不但需要较多的片选信号,而且模块测试所占用的I/O口资源也较多,用一般的芯片较难实现,而用CPLD/FPGA则不但可以较好地实现其功能,而且还可大大提高设计能力和设计效率。
1 系统组成思路
本远程多路数据采集系统以Altera公司7000S系列CPLD产品中的EPM7256SQC208-10为控制核心,并由A/D(模拟量采集)模块、DI(数字量采集)模块、D/A(模拟量输出)模块、DO(数字量输出)模块、MCU模块、电源模块及I/O接口模块组成,其系统组成原理图如图1所示。
图中,MCU模块主要由CAN总线模块、RS-485模块、RS-232模块、时钟和复位模块、CPLD模块等组成,MCU模块的电路原理图如图2所示。该远程多路数据采集系统的I/O接口板共有14个插槽,其中12个插槽可实现A/D模块、D/A模块、DI模块、DO模块等四种模块的任意配置。因此,单个数据采集系统最大可采集192路模拟量或192路数字量,也可以提供最大96路模拟量输出或192路数字量输出。多个数据采集系统也可以根据实际和现场需要通过CAN总线、RS-485总线或RS-232总线进行连接,从而实现上百个或上千个采集频率不高的远程数据采集。该远程多路数据采集系统可采集0~5V的电压信号和4~20mA的电流信号,数字量输出电平为12V,可直接控制12V的继电器。(本网网收集整理)
显而易见,传统的设计思路不但要使用大量的外围芯片,而且需要主处理器直接控制各种采集模块和控制模块,并完成各模块和通道的自检。因此,这种解决方案需要占用主处理器大量的I/O资源和处理时间。然而,一般处理器的 I/O资源极其有限,而且又要求大量的汇编软件配合,这就使设计移植变得比较困难;此外,由于I/O的频繁操作也不利于系统调度软件的设计和其他软件模块的实时执行,因而在现场更难以组成分布式控制管理系统(FCS)。可见,如果采用传统的设计方法,不但使系统设计较为庞大,而且开发成本高、设计周期长、设计效率低。所以,传统的设计思路在远程多路数据采集系统中是不可取的,而使用CPLD或FPGA器件则可以较好地解决上述问题。
2 CPLD设计
2.1 顶层软件设计
上述功能可在MAX+PLUSII 9.5环境下设计完成。该系统的软件设计采用“自顶向下”、“软硬兼施”的设计方法,主要设计了五大功能模块,分别是DECODE?地址译码?模块、AD?模拟量输入数据处理?模块。DATA?数据处理?模块、TEST?模块自动识别?模块、UART?串口扩展?模块,其设计原理图如图3所示。其中译码模块用于完成处理器对CPLD片内和片外模块的寻址和译码,这是一种简单的`译码逻辑和触发电路,共产生34个片选信号。AD模块用于完成对10位A/D 转换芯片TLV1578高位D8、D9的处理以及实现D9/A1、D8/A0的分时复用,是一般组合逻辑电路和数据缓冲及锁存电路。TEST模块用于完成对各种模块的自动识别,包括识别某一插槽有无模块以及具体是何种模块,该模块共需处理36个测试信号。DATA模块用于简单处理各种数据,包括数据的缓冲、锁存以及驱动放大等。由于该系统中单片机的串口被RS-485占用,因此,UART模块一般用于实现RS-232串口扩展。
2.2 底层软件设计
底层软件设计是基于顶层软件中五大功能模块而设计的,其中UART模块设计采用VHDL语言描述完成,而DECODE模块、TEST模块、DATA模块和AD模块由于原理和时序相对简单,则采用图形输入设计方法,并通过编译、综合、仿真后生成底层设计文件(即生成相应的设计符号*.sym),以供顶层设计调用。
为了突出重点,这里只简单介绍UART模块的底层设计。UART模块是一个8位全双工异步接收发送器模块,该模块主要由四个子模块构成,即并入串出模块、串入并出模块、接口模块、时钟产生模块。该UART模块的主要功能是:从计算机接收8位并行数据并发送到串口输出;二是从串口读入外部串行数据并将其转换为8位并行数据送到计算机。
并入串出操作由输入信号的高电平触发的,串行输出结束后,结束信号变为‘0’。而串入并出操作则由串行输入的下降沿触发,且串行输入要保持低电平持续半个周期以上。此半周期时钟同时可作为输入移位时钟,8位数据输入结束后,结束信号变为‘0’并维持到下次数据输入。数据口是8位双向三态I/O口。
时钟产生模块产生的时钟用于并入串出模块和串入并出模块。在串入并出操作中,工作时钟只有高于移位时钟,才能检测是否开始一次新的输入过程,因此,工作时钟是移位时钟的4倍。其时钟产生模块的VHDL源程序如下:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;?
ENTITY clkgen IS
PORT (iclk,oclk:BUFFER STD_LOGIC);?
END clkgen;
ARCHITECTURE clk OF clkgen IS
SIGNAL iclk_lag,oclk_lag:TIME:=0 ns;
SIGNAL temp_iclk,temp_oclk:STD_LOGIC;
BEGIN
PROCESS(temp_iclk,temp_oclk)
BEGIN
temp_iclk<=NOT temp_iclk AFTER iclk_lag/4;
temp_oclk<=NOT temp_oclk AFTER oclk_ lag;
END PROCESS;
iclk<=temp_iclk;
oclk<=temp_oclk;
END clk;
限于篇幅,UART模块的其它底层模块设计这里不作一一介绍。
图3
3 系统仿真和验证
软件设计完成后,可根据Protel99SE中的电路原理图进行引脚锁定,然后启动编译程序来编译项目。编译器将进行错误检查、网表提取、逻辑综合和器件适配,然后进行行为仿真、功能仿真和时序仿真。最后采用并口下载电缆ByteBlaster并通过JTAG编程方式将top.pof文件下载到EPM7256SQC208-10芯片中,从而生成硬件电路。4 结束语
为了将该远程多路数据采集系统应用到污水处理自动控制系统中,笔者设计了以计算机为核心的分布式控制管理系统(FCS),从而高性价比地实现了污水处理设备的自动化控制和信息化管理,稳定可靠地发挥了污水处理设备的作用,实现了现场数据信息传递的完全数字化,同时保证了数据采集的准确性和控制功能的可靠性。
借助先进的MAX+PLUSII EDA设计软件和高可靠性的CPLD/FPGA芯片开发的这种分布式控制管理系统,不但可大大节省电路开发费用,而且能提高设计效率,同时还可有效实现电路的数字化与微型化。
基于DSP的 USB 口数据采集分析系统
摘要:介绍了一种基于DSP的USB口振动、噪声信号采集分析系统构造方案,并对其各模块进行了分析,该方案完全实现了在系统编程和配置。针对USB模块详细介绍了CYPRESS公司的EZUSB芯片,说明了其固件(Firmware)和驱动程序框架。关键词:DSP USB FPGA CPLD Firmware 驱动程序
随着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)
EndpointTypeAlternate Setting012MaxPacket Size(bytes)0CTL064641ININT016642INBULK064642OUTBULK064644INBULK064644OUTBULK064646INBULK064646OUTBULK064648INISO0162568OUTISO016169INISO016169OUTISO0161610INISO0161610OUTISO01616计算机与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设备的作用。
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算法,使其具有信号分析、模态分析、声学分析、环境测试、长时间记录等功能