摘要::结合一个实际的远程高速系统的设计,比较了目前常用的各种数据传输方式,介绍了各个公司的PCI接口芯片的特点,以及高速数据采集系统的设计思想和各种实现方案。
关键词:USB 光线(FireWire) 低压差分(LVDS) HOTLink PIC 数据采集 远程传输
数据采集是信息处理系统的最前端,对于一般的数据采集任务有通用的数据采集系统可供选用。但是由于数据源以及用户需求的多样性,通用的采集设备不可能总线满足定制要求。例如一个项目需要采集由一块高速CCD图像处理板送来的数据,数据传输速率必须稳定到10Mbytes/s,数据源为一个远端(50m左右)设备发送的连续数据流,要求所设计的数据采集系统必须能够现场采集,远程传输,并实时地存储海量数据。
本系统的核心部分为高速距离传输和数据采集两个部分。
1 数据传输方案
在数据传输部分的设计中,调研了基于USB、火线(FireWire)之类的解决方案。采用这些协议开发设备可以使数据采集部分的设计比较简单。目前,主板一般都支持USB1.1,不需要设计专门的数据采集卡。如果采用火线(FireWire)协议,TI的OHCI-lynx系列的芯片(TSB12LV23)集成了一个PCI接口和火线的协议层。但是目前USB1.1标准还达不到所需要的带宽,而USB2.0还没有得到主板的普遍支持。采用火一虽然使得数据接收端的设计相对简单。但是由于火线是一条多主的总线,每发送一帧数据都要打一个包头,由于链路层协议的复杂,包头的结构也相当的冗长,对于数据发送端链路层的大量寄存器配置,仅用CPLD实现,调试麻烦,不灵活。如果采用MCU来实现能够对上百Mbps的数据流实时地打包的数据发送系统,复杂程序太高,严重影响项目进度。
依据开发难度、成本,最后选择了两种方案来构建传输系统:低压差分(LVDS)和HOTlink。
低压差分信号传输器件一般应用于背板信号互连之类的短距离通讯中,例如交换机系统。LVDS标准定义传输距离为10m,实际工程实践中发现10Mbps的数据流在五类双绞线上使用低压差分至少可以在40m左右的传输距离稳定传输。目前国内的应用中一般在超过100m的情况下使用一个LVDS的中继板。普遍使用的LVDS器件是国家半导体的90C031,90C032,1:1发送接收模块,不带复用与解复用的功能。如果需要两根串行线传输方案,国家半导体也提供复用比可达到14:1与1:14的复用与解复用LVDS器件。LVDS器件使用比较方便,不需要内部编程与外部的逻辑控制,在PCB版图设计时注意差分信号线基本等长、匹配电阻等瓿即可正常工作。
HOTLink是CYPRESS.htm" target="_blank" title="CYPRESS货源和PDF资料">CYPRESS公司的高速长距离点对点串行通信产品系列。符合DVB-ASI、ATM、SMPTE-259M、ESCON等标准,用于构建符合这些标准的通讯产品的物理层。标准的HoTlink产品数据传输速率范围为160~400Mbps,支持同轴电缆、双绞线以及光纤接口。传输距离与传输介质有关。用双绞线以及同轴电缆可以传输100~500m,光纤传输可以达到数公里。具体工作原理是:在发送端将八位输入数据串行输出,接收端重新组合。发送端无有效数据时自动发送空数据,接收端根据流自动恢复时钟。外部逻辑可以监视恢复时钟是否失同步,一旦失同步即可控制接收端重新同步时钟,而且HOTLink产品的一大特点是可以实现数据流与指令流的分离。HOTLink的理论误码率为零,实现误码来自于内部时钟失同步以及外部环境电磁干扰。
HOTLink第二代产品可以支持1500Mbps的传输速率,支持8位1、6位、32位数据接口,性能大大提高。当然基于HOTLink设计通讯产品难度相对要大一些,应用HOTLink传输系统需要比较复杂的外部状态机的控制来保证接收端时钟正确恢复(一个演示的状态转换图见图1).而且由于系统时钟频率较高,PCB版图设计需要比较研究,要求设计者仔细考虑各种电磁干扰影响。
2 数据采集系统方案
基于计算机的数据采集系统可以依据与计算机的接口同而分类。以目前工程应用来看,基于ISA总线的系统虽然带宽足够低速采集使用,但是由于主板生产商趋向于不再支持ISA,面监被USB接口产品取代的趋势。而高速数据采集系统主要还是基于PCI总线传输数据。这主是由于PCI总线相对于其它总线有以下几个优点:
·PCI总线得到了广泛的支持;
·PCI总线目前32Bit,33MHz时钟,理论带宽133Mbytes/s,可升级到64Bit,66MHz时钟频率;
·PCI总线产品开发有丰富的硬件资源可供选择(常见产品比较见表1);
·PCI设备驱动开发在常见平台下有较好的软件包支持。例如Dos下可直接调用PCIBios函数,Windows下有非常好的开发辅助软件包,而Linux直接提供类似于PCIBios的函数可供开发者调用。
目前市场上常见的有AMCC、PLX、CYPRESS等公司的桥芯片。经过一段时间的使用与比较,各个型号的PCI接口芯片的大致特点如表1所示。
表1 各公司PCI接口芯片览表
公 司 | 主要特点 | 驱动开发 | 价格 | 技术资料 |
AMCC | FIFO接口适合于设计数据采集卡,使用单间,性能好。 | 有DOS下驱动的例子参考 | 较昂贵 | 较为全面,提供评估版版图 |
CYPRESS | 内置DPRAM,可以代替外部缓存,有效降低系统成本。 | 有VXD例子 | 便宜 | 技术文档比较全面 |
Oxford | 提供PCI与各种接口的桥接功能,如并口、ATAPI。 | 例子程序 | 便宜 | 网络文档 |
TI | 与TI的DSP的无缝连接 | 例子程序,评估程序 | 很便宜 | 网络文档,有评估模块 |
PLX | 从低档廉价的PCI接口到高端有众多型号可供选择。 | 提供了SDK,降低开发作量 | 多种选择 | 许多有价值的在RDK中出售 |
一般来说,基于PCI总线的板卡可以分成信号处理板与数据采集板。对于二者的设计思想以及相应的PCI接口芯片的选择也有所不同。数据采集系统一般为了采集数据流而设计。由于PCI总线是一个共享总线,仲裁算法一般是公平竞争,事实上132Mbytes/s的峰值速率仅仅是一个理想值。实际中要想稳定可靠地采集数据流,采集卡上必须有大小合适的缓存。数据采集系统从数据源到PC的整个体系是一个先进先出结构,核心问题是如何经济有效地设计出尽可能大的先进先出的缓存系统。最简单的实现方式是直接使用FIFO器件作为系统的缓存,当然这也是最昂贵的方案。也可以使用双口RAM来实现FIFO结构。最廉价的方案是使用SRAM与双路选择器以及地址发生器实现大FIFO阵列。付出的代价使整个系统设计的复杂程序提高。
一般的PCI总线信号处理卡(显示卡,声卡等)的总线部分设计重点在于如何将卡上的设备映射到系统的内存空间中云。常见的PCI接口芯片提供了PCI端总线与卡上局部端总线相互转换的能力。而在数据采集卡的设计中,卡上的FIFO显然只能作为一个端口访问,设计得的任务是实现一个恰当的控制逻辑,使得FIFO可以被PCI接口芯片的DMA控制器访问。在现有的PCI接口芯片里面,AMCC5933直接提供了FIFO接口,实现数据流采集的控制逻辑最为简单。PLX等公司的PCI接口芯片则没有提供特定的引脚来提供外部FIFO访问能力,需要一个专门的接口逻辑来进行逻辑转换。下面的例子是PLX9054与FIFO的接口逻辑连接图,可以帮助理解这种系统的设计。
选择PLX公司的芯片的好处是价格查对于AMCC5933便宜,型号众多,可以根据不同的需求选择适当的型号,比较灵活,而且提供了SDK帮助工发Windows下的驱动程序。但是FIFO的接口逻辑部分添加了一定的工作量,不如AMCC5933来得简便易用。设计者应该根据自己具体项目的要求来选择。
高速率的数据采集系统在采集数据流时最常见的问题是数据丢失,采集后数据流不完整。为了在系统调试中检验这个问题,在系统设计时加入一个自校正码源,使各系统自检功能。
在系统中,为了验证多大的缓存可保证数据流的连续采集,让数据源发送端发送自增长的测试码流。经过反复测试表明,在接收一个连续的数据流时,10Kbytes左右大小的FIFO缓存可以稳定不丢失地采集10Mbytes/s左右的数据流。但是为了整个计算机系统的稳定性考虑,建议在可能的情况下尽量用大的缓存。当然,对于数据的实时分析要求较高的领域,太大的缓存会引入延时的问题,这时候就要求权衡使用了。
3 主机主控软件
主控程序核心分为两个工作线程。一个线程负责管理PCI数据采集设备的驱动,调用PLX SDK函数将DMA中断采集来的数据核心态的小缓存中以乒乓方式拷贝到用户层的两个大的缓存中;一个线程则从用户支的缓存中读取数据送入SCSI硬盘。采用这种管理机制,可以效地实现海量数据的实时硬盘存取。
高速远程数据传输系统在特定的工程中有广泛的应用,如航空航天、核物理数据采集等等。这种应用领域的特殊性决定了不可能形成一个普适方案,设计者必须根据具体项目要求加以选择设计。合理地加以选择,可以在特定的应用领域中快速有效地完成系统设计。目前整个系统达到了设计的预期目标,工作稳定。