数据采集卡.docx
《数据采集卡.docx》由会员分享,可在线阅读,更多相关《数据采集卡.docx(10页珍藏版)》请在冰豆网上搜索。
数据采集卡
多功能数据采集卡是一种应用极为广泛的模拟量测量设备,其基本任务是将信号送入计算机或相应的信号处理系统,然后根据不同的需要进行相应的计算。
它在将模拟量采集、转换成数字量后,再经计算机处理得出所需的数据。
同时,还可以用计算机将得到的数据进行存储、显示或打印,以实现对某些物理量的监视,其中一部分数据还可以被用做生产过程中的反馈控制量。
多功能数据采集卡性能的好坏,主要取决于它的精度和速度。
数据采集越及时,工作效率就越高。
在保证精度的条件下,应用尽可能高的采样速度,以满足实时采集、实时处理和实时控制对速度的要求。
1接口通信协议
从微型计算机的诞生到现在,微机总线技术也在不断发展,而且随着应用技术发展的需要,不断有新的总线技术研制出来,同时在竞争的市场中,不同总线还会拥有自己特定的应用领域。
目前除了大家熟悉的,较为流行的PCI、AGP、IEEE1394、USB等总线外,又出现了EV6总线、PCI-X局部总线、NGIO总线等。
其常用的总线结构有如下几种类型:
ISA总线、MCA总线、EISA总线、VL局部总线、PCI局部总线等。
(1)ISA总线(AT总线):
ISA(IndustryStandardArchitecture)总线是IBM公司八十年代为IBM-PC/AT机设计的,又称AT总线,用于AT机主板和各接口电路板的连接。
ISA总线是16位数据线、24位地址线,工作频率为8MHz,数据传输率为8MB/S,允许多个CPU共享系统资源,从而大大改善了CPU处理性能。
由于其兼容性好,它在上个世纪80年代成为最广泛采用的系统总线,不过由于ISA标准的限制,使得对系统总线上的I/0、存储器的访问没有大的改进,所以它的弱点也是显而易见的,比如传输速率过低、CPU占用率高、占用硬件中断资源等,从而在强大的CPU处理能力与低性能的系统总线间形成了一个瓶颈。
(2)MCA总线:
MCA(MicroChannelArchitecture即微通道总线结构)总线是IBM公司专为其PS\2系统(使用各种Intel处理器芯片的个人计算机系统)开发的总线结构,该总线的总线宽度是32位,最高总线频率为10MHz。
虽然MCA总线的速度比ISA和EISA快,但是IBM对MCA总线执行的是使用许可证制度,因此MCA总线没有像ISA总线那样得到有效推广,而且其缺乏与现有硬件的兼容性。
(3)EISA总线:
EISA(ExtendedIndustryStandardArchitecture即扩展工业标准结构总线)是为32位中央处理器(386、486、586等等)设计的总线扩展工业标准,EISA总线除包括ISA总线的所有性能外,并把总线宽度从16位扩展到32位,是ISA总线的扩展。
(4)VESA(VL)局部总线:
VESA(VideoElectronicsStandardsAssociation即视频电子标准协会)总线是VESA组织(1992年由IBM、Compaq等发起,有120多家公司参加)按局部总线(LocalBus)标准设计的一种开放性总线,简称为VL总线。
VESA总线的总线宽度是32位,最高总线频率为66MHz。
但是由于VL总线是直接挂在CPU上,对CPU芯片依赖大,CPU一有变动,就会使VL总线不再适应。
(5)PCI局部总线:
PCI(PeripheralComponentInterconnect即连接外部设备的计算机内部总线)总线是一种高性能的32位/64位地址数据复用的高速外围设备接口局部总线。
其总线标准最早由Intel公司的电脑结构实验室在1991年底提出,1992年6月Intel公司又联合IBM、Compaq、DEC等公司组成PCISIG(PCISpecialInterestGroup),其致力于PCI标准的推广,并公布了V1.0标准;在1993年4月升级到V2.0,并扩展到64位,将总线带宽扩展到264MB/S;1995年1月又升级到了V2.1,总线时钟扩展到了66MHz,将总线带宽扩展到了528MB/S。
(6)AGP总线:
AGP(AcceleratedGraphicsPort)即高速图形接口,专用于连接主板上的控制芯片和AGP显示适配卡,是为提高视频带宽而设计的总线规范,目前大多数主板均有提供。
(7)USB总线:
USB(UniversalSerialBus即通用串行总线)是一种简单实用的计算机外部设备接口标准,目前大多数主板均有提供。
(8)AlphaEV6总线:
为消除现有总线的瓶颈,AMD(AmericanMicroDevices即美国微设备公司)的Athlon(是AMD公司在1999年末推出的新一代64位处理器系统)系统要求总线结构在设计上力求为新一代x86平台提供前所未有的数据传输带宽,以确保运行于多路处理器服务的企业级商业应用软件可以更顺畅地运行。
为此,AMD公司在其最先推出的一款Athlon处理器上使用了一个200MB/S的系统总线,即AlphaEV6总线,其带宽较目前IntelP6总线结构大1倍。
如果使用更高时钟频率的AMDAthlon处理器,这个系统总线的频率还可以相应提高,以支持更大的数据带宽,满足更大、更强劲的系统配置的需要。
(9)PCI-X局部总线:
为解决Intel架构服务器中PCI总线的瓶颈问题,Compaq、IBM和HP公司决定加快加宽PCI芯片组的时钟速率和数据传输速率,使其分别达到133MHz和1GB/S。
利用对等PCI技术和Intel公司的快速芯片作为智能I/O电路的协处理器来构建系统,这种新的总线称为PCI-X。
PCI-X技术能通过增加计算机中央处理器与网卡、打印机、硬盘存储器等各种外围设备之间的数据流量来提高服务器的性能。
与PCI相比,PCI-X拥有更宽的通道、更优良的通道性能以及更好的安全性能。
预计在未来的几年中,PCI-X能与目前的设备兼容,并具有良好的扩展性,发展前景乐观。
下面的表2-1对常用的各种总线进行了性能比较。
表2–1各种通用总线性能比较图
1.1PCI局部总线的特点
相对于其它常用的总线而言,PCI总线有以下主要特点:
(1)独立于处理器,为PCI局部总线设计的器件是针对PCI,而不是针对处理器的,因此设备的设计独立于处理器的升级。
(2)每个PCI局部总线支持约80个PCI功能,一个典型的PCI支持约10个电气负载,每一个设备对于总线来说就是一个负载,因此,每一个设备可以包括8个PCI功能。
(3)低功耗,PCI技术规范的主要设计目标就是实现电流尽可能小的系统设计。
(4)在读写传送中可实现突发(burst)传送,32位33MHz的PCI局部总线在读写传送中可支持132MB/S的峰值传送速率,对于64位33MHz的PCI传送支持264MB/S的峰值传送速率,对于64位66MHz的PCI局部总线,其传送速率可达到528MB/S。
(5)支持多达256个PCI局部总线,技术规范提供了对256个PCI局部总线的支持。
(6)总线速度:
2.0版规范支持的PCI局部总线速度达到33MHz,2.1以上的版本增加了对66MHz总线操作的支持。
(7)64位总线扩展支持。
(8)访问时间快,当停靠在PCI局部总线上的主设备写PCI目标时,在33MHz总线速度下,访问时间只需要60ns。
(9)并行总线操作,桥支持完全总线并行操作,与处理器总线、PCI局部总线和扩展总线同步使用。
(10)总线主设备支持:
全面支持PCI局部总线主设备,允许同级PCI局部总线访问和通过PCI—PCI桥与扩展总线桥访问主存储器和扩展总线设备。
(11)隐式总线仲裁:
PCI局部总线仲裁能够在另一个总线主设备正在PCI局部总线上执行传送时发生。
(12)引脚数少,一个功能的PCI从设备只需要47个引脚,而主设备只需要49个引脚。
(13)交易完整性校验,在地址、命令、数据周期上进行奇偶校验。
(14)3类地址空间,即指存储器、I/O和配置空间。
(15)自动配置。
(16)插入卡,规范包括PCI连接器和插入卡的定义。
1.2PCI局部总线信号定义
在一个PCI应用系统中,如果某设备取得总线控制权,就称为主设备,被主设备选中用来进行通信的设备称为从设备或目标设备。
对于相应的接口信号线,通常分为必备的和可选的两大类。
如果只作为目标设备,至少需要47条接口信号线,作为主设备则需要49条。
利用这些信号线可处理数据和地址、实现接口控制、仲裁以及系统功能。
下面按功能分组对信号进行说明。
1.2.1系统信号
CLK:
对于所有的PCI设备都是输入信号。
其频率范围为0~33MHz或0~66MHz,这一频率称为PCI的工作频率,对于PCI信号,除RST#、INTA#、INTB#、INTC#、INTD#之外,其余信号都是在CLK的上升沿进行采样的。
RST#:
复位信号。
用来使PCI专用的特性寄存器、配置寄存器等恢复到规定的初始状态。
至于复位后如何变化不属于PCI规范的范围。
复位时,PCI的全部输出一般都驱动到第三态。
REQ#和GNT#必须同时驱动到第三态,不能在复位期间为高或为低。
为防止AD、C/BE#、PAR在复位期间浮动,可由中央资源将它们驱动到逻辑低,但不能驱动到高电平。
RST#和CLK可以不同步,但是要保证其在撤消边沿不会有反弹。
1.2.2地址和数据信号
AD[31﹕0]:
地址/数据多路复用的输入/输出信号。
在FRAME#有效时,是地址期。
在IRDY#和TRDY#同时有效时,是数据期。
在FRAME#有效的第一个时钟周期是地址周期,AD[31﹕0]线上含有一个32位的物理地址。
对于I/O操作,它是一个字节地址,对于存储器或配置操作,它则是一个双字地址。
数据期,AD[7﹕0]为最低字节,AD[31﹕24]为最高字节,在数据传输期间内IRDY#和TRDY#应该同时有效。
C/BE[3﹕0]:
总线命令和字节使能多路复用信号。
在地址期中,传输的是总线命令。
在数据期内传输的是字节使能信号。
1.2.3接口控制信号
FRAME#:
帧周期信号。
由当前主设备驱动,表示当前主设备一次交易的开始和持续时间。
IRDY#:
主设备准备好信号。
由当前主设备(交易的启动方)驱动,信号的有效表明发起本次传输的设备能够完成交易的当前数据期。
TRDY#:
目标设备准备好信号。
由当前被寻址的目标驱动,信号有效表示目标设备已经做好了完成当前数据传输的准备工作。
STOP#:
停止数据传送信号。
信号有效时,表示目标设备要求主设备终止当前的数据传输。
LOCK#:
锁定信号。
信号有效时,表示一个对桥的原始操作可能需要多个传输才能完成。
IDSEL:
设备选择信号。
信号有效时,表示驱动它的设备成为当前交易的目标设备。
1.2.4仲裁信号
REQ#:
总线占用请求信号。
信号一旦有效表明驱动它的设备向仲裁器要求使用总线,是一个点到点的信号线。
GNT#:
总线占用允许信号。
用来向申请占用总线的设备表示其请求已经获得批准,也是一个点到点的信号线。
1.2.5错误报告信号
PERR#:
数据奇偶校验错误报告信号。
只报告除特殊周期之外的所有PCI交易期间的数据奇偶错误。
其中数据奇偶错误的产生对于在AD总线上驱动地址和数据信息的所有PCI设备都是强制性的。
SERR#:
系统错误报告信号。
是报告地址奇偶、特殊周期命令的数据奇偶错误以及其它可能引起灾难性后果的系统错误。
1.2.6中断信号
PCI局部总线中共有四条中断线,分别为INTA#、INTB#、INTC#、INTD#,其作用是用以请求一个中断。
1.2.7附加信号
PRSNT[1﹕2]#:
卡存在信号。
由插件板提供的信号,用来指出PCI插卡上是否存在一个插件板,如果存在就为它提供电流。
CLKRUN#:
时钟运行信号。
可选信号,作为设备的输入信号,用来确定CLK的状态。
1.2.864位总线扩展信号
AD[64﹕32]:
扩展的32位地址和数据多路复用线。
在地址周期,如果使用了DAC命令且REQ64#有效时,这32条线上含有64位地址的高32位,否则是保留信号;在数据周期,当REQ64#和ACK64#同时有效时,这32条线上含有高32位数据。
C/BE[7﹕4]:
扩展总线命令和字节使能多路复用信号线。
REQ64#:
64位传输请求信号,由当前主设备驱动,表示本设备要求采用64位通路传输数据。
ACK64#:
64位传输认可。
表明从设备将用64位进行传输。
PAR64#:
奇偶双字节校验。
1.2.9JTAG/边界扫描信号
TCK:
测试时钟信号。
TDI:
测试数据输入信号。
TDO:
测试数据输出信号。
TMS:
测试模式选择信号。
TRST:
测试复位信号。
1.3PCI局部总线命令简介
总线命令是用来规定主从设备之间的传输类型的,它出现于地址周期的C/BE[3﹕0]线上。
当一个主设备获得总线的拥有权时,它就可以启动表2–2中的任何一种交易类型。
在一个交易的地址周期,命令/字节使能总线C/BE[3﹕0]用于表明交易命令和类型。
表2–2:
PCI总线命令编码
PCI总线传输操作
PCI总线的数据传输采用突发(burst)方式,每次传输由一个地址周期和一个或多个数据周期组成。
PCI总线传输包含读、写和中止三个内容。
(1)读传输:
当FRAME#有效时,读传送开始,在AD[31﹕0]上保持有效地址信号,同时C/BE上保持一个总线命令。
如果总线命令为0110B(存储器读命令),同时AD[31﹕0]的地址又在目标设备的地址范围内,该目标设备将置DEVSEL#信号有效(低电平),然后主设备停止驱动地址总线AD[31﹕0],置IRDY#为低,表明主设备准备好接收数据。
第一个数据节拍产生于第三个时钟周期(第二个时钟为转换周期)。
在这个数据周期内,C/BE[3﹕0]信号是字节允许,以表示数据总线的哪些字节有效。
这设备在接下来的每个时钟周期的上升沿检查TRDY#信号,若TRDY#为高电平(无效),表示从设备没有准备好,主设备自动插入等待周期,反之,将传送数据,从而完成一个数据节拍。
当主设备使FRAME#从有效变为无效,表示当前是最后一个数据节拍。
图中的DEVSEL#信号和TRDY#信号是由被地址期内所发地址选中的从设备提供的,但要保证TRDY#在DEVSEL#之后出现,而IRDY#信号是发起读操作的设备(主设备)根据总线的占用情况自动发出的,数据的真正传输是在IRDY#和TRDY#同时有效的时钟前沿进行的,这两个信号的其中之一无效时,就表示需插入等待周期,此时并不进行数据传输,这说明一个数据期可以包含一次数据传输和若干个等待周期。
(2)写传输:
在写传输中,由于地址和数据都是主设备提供,不存在AD[31﹕0]的切换驱动的问题,所以没有转换周期。
除此之外,写传输和读传输类似,数据节拍完成的工作是相同的。
(3)交易的终止过程
无论是主设备还是从设备都可以提出终止PCI局部总线交易的要求,但是双方都没权单方面的实施交易终止的工作,需要相互配合,传输的最终停止控制要由主设备完成,这是因为交易的结束必须满足系统的要求并且应该是有秩序的,而这只有主设备才能做到。
同时交易的结束标志是FRAME#信号和IRDY#信号均已撤消而进入总线空闲状态。
1.由主设备发起的终止
主设备是通过撤消FRAME#信号并建立IRDY#信号来提出终止请求的。
这样做的目的是为了告诉目标设备,现在已经进入最后数据周期了,此后IRDY#一直保持有效,直到TRDY#信号出现,即开始完成最后一次数据传送,传输结束后将进入总线空闲状态。
主设备提出的终止传输的情况:
(1)完成:
这是最常见的情况,是指主设备已经完成了要做的事了。
(2)超时:
当主设备的GNT#信号无效并且其内部的延时计数器已满,从而不得不终止传输的情况。
(3)主设备废止:
在2.2版规范中,允许主设备在没有目标设备响应的情况下终止交易的情况。
2.由目标设备发起的终止
在大多数情况下,目标设备能够发出或者接收主设备请求的数据直到主设备终止交易。
但是,当目标设备不能完成请求时,它可以用STOP#信号发起交易终止。
目标设备用STOP#信号和其它信号的不同组合来向主设备表明导致终止的情况。
(1)重试:
指由于目标设备忙,暂时不能进行交易而在任何数据被传输前请求的终止。
在一个交易的初始数据期,目标设备通过使STOP#有效而TRDY#无效来表示重试。
当目标设备重试时是没有数据传输的。
(2)断开:
指目标设备在一定时间内不能做出响应并且不能继续突发时,在初始数据周期的数据传输的同时或完成之后请求的终止。
这可能是因为突发穿越资源边界或资源冲突造成的,目标设备通过同时使TRDY#和STOP#有效,在断开操作的数据期中,数据传输可有可无。
(3)目标设备废止:
指因目标设备检测到一个致命错误或目标设备不能完成请求而产生的不正常终止。
一旦目标设备利用有效的DEVSEL#声明了一个访问,它可在任何后续时钟上产生目标设备废止。
目标设备通过撤消DEVSEL#并使STOP#有效来标识目标设备废止。
总之,在所有PCI交易中,FRAME#和IRDY#应遵守以下规则:
(1)FRAME#和它相对应的IRDY#定义了总线的空闲状态和忙状态,当二者之一有效时,总线处于忙状态;当二者都无效时,总线处于空闲状态。
(2)一旦FRAME#被撤消,那么在同一个交易期内不能重新有效。
(3)除非IRDY#有效,否则,不能撤消FRAME#(IRDY#必须在撤消FRAME#的第一个时钟边沿有效)。
(4)一旦主设备建立了IRDY#,在当前数据期完成之前,它不能改变IRDY#或FRAME#。
(5)最后一个数据期完成后,主设备必须撤消IRDY#信号。
2PCI接口的实现方案介绍
PCI总线是一个地址/数据、命令/字节选择信号复用的总线。
它采用主从信号双向握手的方式来控制数据的传输,其接口电路设计和传统总线接口电路设计有较大的差别,所以必须严格遵守PCI总线规范所规定的技术规范。
一般说来,一个PCI接口电路应当完成以下几种主要功能:
1.地址译码及命令译码
由于PCI总线可以采用正向方式和负向方式进行译码,因此用户应视实际情况选择适当的译码方式。
一般选择正向译码方式,为防止地址冲突,最好采用全地址译码,命令信号线C/BE[3﹕0]必须参加译码。
2.地址产生电路
PCI的突发传输方式包括一个地址周期和若干个数据周期,因此在PCI接口电路中必须包含地址产生部件,用于向后级应用电路提供连续的地址。
3.控制信号的产生
PCI总线的数据传输基本上由FRAME#、IRDY#、TRDY#和DEVSEL#这4根信号线控制,因此必须根据主从设备的忙闲情况相应产生这些控制信号。
目前用于实现PCI总线控制器的有效方案有两种:
采用可编程逻辑器件和采用专用接口芯片实现。
下面我们将分别讨论这两种实现方案的可行性。
2.1采用可编程逻辑器件PLD
这种方法是用符合PCI总线规范的PLD芯片如CPLD或FPGA来做,例如Altera公司提供的CPLD器件FLEX8000系列和Xilinx公司提供的FPGA器件XC3100A系列等。
这样做也有两种选择:
一个是购买IP核,几乎所有的可编程器件生产厂商都提供经过严格测试的PCI接口功能模块,由用户进行简单的组合设计即可,如Xilinx公司的Logicore和Altera公司的AMPP(AlteraMegafunctionPartnersProgram)等等。
用户可以根据应用的需要来裁剪IP核并与相关应用电路一起烧入CPLD或FPGA中。
另一种是采用类似于QuickLogic公司的一次性可编程芯片来处理,它在可编程芯片内部内嵌PCI接口电路,可与上面一样,其也可根据需要来裁剪,但只能烧写一次。
采用CPLD或FPGA等可编程逻辑器件实现PCI接口最大的优点在于其灵活的可编程性,对于一个典型PCI设计来说,并非一定要实现PCI规范中的所有功能,只需实现其中的一个子集即可,其调试方便,易于修改,不受插卡功能限制,当系统升级时,只需对可编程器件重新进行逻辑设计,而无需更新PCB版图。
但是,要实现PCI规定的功能如完成逻辑校验、地址译码、实现配置等所需的各类寄存器,大致需要10000个门电路,并且可编程器件生产厂商提供的经过严格测试的PCI接口功能模块价格昂贵,同时要求对PCI总线的操作时序非常了解,使得设计PCI控制接口难度较大,对于产品不大而又有时限的工程项目来说,成本过大。
这样,在小规模的应用中,就限制了利用可编程逻辑器件来实现PCI接口。
2.2采用专用接口芯片
采用PCI总线专用接口芯片,如PLX公司的PCI9054和PCI9052,AMCC公司的S5933和S5920等,设计者不需花大量的精力去了解PCI总线的详细工作机理,也不用考虑PCI接口芯片的具体构造,而只需要把精力集中于整个硬件系统的设计上,完成PCI芯片和微处理器的硬件接口设计即可,从而可以将复杂的PCI总线接口转换为相对简单的接口设计,使设计者可以将整个的精力放在系统设计上,从而大大缩短设计周期,这种芯片也具有较低的成本和通用性。
2.3接口方案选择
通过对这两种接口实现方案进行比较后可知,采用CPLD或FPGA等可编程逻辑器件实现PCI接口优点在于其灵活的可编程性,但是技术上和经济上要求比较高,而且为了达到PCI规范的严格要求,需要作大量的逻辑验证、时序分析和程序调试,对于小范围的使用是完全没有必要的。
而采用专用的PCI接口芯片无论从技术上还是从成本上来说都是比较理想的选择。
3数据采集卡的功能模块介绍
基于PCI总线的数据采集卡主要由PCI接口模块,数据存储模块,AD转换模块以及CPLD逻辑控制模块等组成,其基本工作原理是通过高速A/D将外部模拟信道的信号进行采样,先将采样数据存储在FIFO中,当FIFO半满时,会产生一个半满信号HF通知CPLD使其产生控制信号用来控制PCI9054执行DMA传送,将数据读入到电脑内存中,这样就可以在电脑中对数据进行分析处理。
数据采集的过程如下:
传感器出来的小电压、小电流信号经过信号条理,送到A/D转换模块,从而将模拟信号转换为数字信号后,送到FIFO中缓存起来,实现一级缓存,这些缓存的数据再通过PCI总线接口芯片PCI9054以主控的DMA方式送到计算机内存中。
数据采集的控制逻辑是由一片Altera公司的PLD芯片EPM3064构成的控制模块来完成的。
控制模块的主要功能有两部分:
一是产生分频信号,由于对采样频率要求不同,所以通过控制模块分频产生采样信号;二是根据FIFO模块的状态信号(FIFO半满、FIFO空)和接口模块的一些状态、命令信号,产生对A/D转换模块和FIFO模块的控制信号和对接口模块命令响应的状态信号。
3.1PCI接口模块
PCI9054是32位、33MHz的通用PCI总线控制器专用芯片。
该芯片符合PCI总线规范2.2版,突发传输速率达到132MB/S。
Local总线支持复用/非复用的32位地址/数