PCI Express接口的数据采集存储系统方案
扫描二维码
随时随地手机看文章
引言
本文提出了一种基于PCI Express总线接口的、具备可扩展性能、并可大容量存储数据的采集系统。该系统的最高采样速率可达80 MHz,利用计算机并通过PCI Express总线和采集卡、Raid磁盘阵列相连后,便可通过主机软件界面实现对硬件设备的控制。
1 系统结构
方案总体上分为三个部分:高速信号采集卡、主机、Raid磁盘阵列,他们之间可通过PCIExpress总线连接。其系统结构如图1所示。
本系统的高速信号采集卡主要由信号调制电路、数据采集模块、采集时钟控制模块、数据缓存和逻辑控制模块、PCI Express总线接口控制等部分组成。其中逻辑控制模块负责接收来自PCIExpress接口的主机控制信息以及采样时钟频率的控制信号,并向系统的其它部分发送相关的控制命令。在进行数据采集时,A/D转换芯片的输出在经过信号处理后,可在数据缓存模块的控制下存入FPGA内部FIFO中;然后再通过PCI Express总线通过主机内存转存到Raid磁盘阵列。
2 系统实现
2.1 数据采集
本系统中的数据转换芯片采用ADI公司生产的AD9430流水型转换器。它是一种单片低功耗12位高速ADC器件,采用3.3 V单一电源供电,具有最大的高速转换率(能够达到210 MSPS),并在较宽的频带范围内仍然具有较好的动态特性。另外,片内还集成了高性能的采样保持放大器、参考电压源和数据时钟输出信号。可为系统提供更加简捷的解决方案。
AD9430有两种数据输出接口模式,即3.3VCOMS输出和LVDS输出。AD9430正常工作后,每个时钟周期进行一次A/D转换,当通过内部缓冲采样保持器和编码之后,可将转换结果锁存到输出寄存器。
通常高速数据采集都是建立在高速高精度采样的基础之上,而高速采样必须得到高质量时钟信号的保障。采样时钟发生电路是高速AD采样的基础模块。本系统选用可程控时钟源SY89429AZC来产生AD9430的采样时钟,并通过对SY89429AZC芯片S_CLOCK、S_DATA、S_LOAD三个引脚信号线的控制,来程控输出40MHz~200MHz精确采样时钟。图2所示是SY89429AZC的三线控制时序图。
TTL引脚S_DATA为配置串行移位寄存器的输入端,串行寄存器可在每一个S_CLOCK信号的上升沿对S_DATA信号进行取值。另有一配置锁存器可在S_LOAD信号为高电平时锁存串行移位寄存器的内容。这样,通过设置S_DATA信号的值(即T2…T0,N1,N0,M8…M0的数值)以及三信号线的时序,便可控制SY89429AZC时钟芯片输出精确的采样时钟。[!--empirenews.page--]2.2 FPGA逻辑控制
逻辑控制模块要实现的主要功能是解析上位机控制信息并发送控制命令,同时要程控采样时钟频率,还要对采集数据流进行处理和传输。其中数据流逻辑控制模块中的功能组成直接关系到高速采集信号能否实时可靠的传输。图3所示为数据流的逻辑控制结构框图。
本设计选用Cyclone II系列芯片EP2C5Q208。此芯片为208脚PQFP封装,用户可用I/O资源高达158个,差分通道数为58个,其内部逻辑资源、M4K存储资源、内部PLL数量完全能够满足本系统设计的需要。
由于AD转换芯片AD94301的采样精度为12位,而PEX8311接口芯片可支持8位、16位、32位数据位。因此,为了更加有效的提高数据传输的效率,同时也为了使数据采集速率获得相对提升,设计中的PEX8311采用32位数据位模式进行数据传输。这样,在本方案的FPGA数据流逻辑控制中,不仅要进行数据的缓存以及数据传输逻辑的控制,还要进行数据位的变换扩展,即由12位数据扩展为32位数据。为了实现数据位由12位到32位的转换,应先把解串后的12位采样数据进行数据分流模块,以把12位数据交替存储到两个FIFO中缓存。图4所示是经数据分流模块交替产生12位数据的仿真示意图。
高速数据采集系统中的数据传输速率与A/D转换器的采集速度很难保持一致。为了协调数据采集与数据传输之间的速度差异,一般都在两者之间加入数据缓存器进行缓冲,使前端的数据采集与数据传输可以异步工作。通常的做法是在A/D转换后将数据送至外置的FIFO或双口RAM中进行缓存。但这样无疑会增加布线密度,同时降低数据传输的可靠性。EP2C5Q208 Cyclone II系列FPGA提供了多达26块的M4K RAM,而且PCI Ex-press总线的传输速率也大于数据采集速率,所以,可在FPGA内部设置FIFO空间来实现对数据的缓存。这样,从FIFO读出的两组12位数据经过符号位扩展模块后,即可扩展变换为32位数据并由FPGA并行输出到PCI Express接口模块。
2.3 PCI Express接口控制
由于数据采集速率随着芯片技术的进步而不断提高,而大量的数据必须传输至主机进行处理。这些传输都由那些将设备连接到主机内存的数据总线完成。因此,数据总线传输的速率常常成为整个数据采集系统的瓶颈,这也是许多仪器带有昂贵板载内存的主要原因之一。而PCI Ex-press的出现,可使测量设备至主机内存的数据传输速率达到一个前所未有的高度。
PCI Express又称3GIO,即第三代输入/输出接口的意思。串行数据传输可使数据传输速率达到惊人的2.5 Gbps (PCI Express 1.0规范),且采用全双工数据传输,并可扩展为×1、×4、×8、×16通道模式。
以PCI Express×1来计算,扣除数据校验冗余8 bit10 bit,有效数据传输率可以达到200 Mbyte,理论上可以提供100 MHz采样速率和双字节以内的采样精度的传输带宽。
目前,实现PCI Express总线接口控制的方法有两种:一种是采用FPGA/CPLD来实现。目前,Altera等专业FPGA公司都提供了多种PCI Express总线接口实现方案,并提供了相应的MegaCore。但是这种方案设计难度大,调试困难;另一种是采用专用接口芯片,如利用PLX公司的PEX8311来实现局部总线与PCI Express总线的连接。目前,无论从技术还是成本来看,第二种方案都是比较理想的选择。
[!--empirenews.page--]PEX8311芯片符合PCI Express 1.0基本规范,它支持主模式、从模式以及DMA三种数据传输方式。PEX8311芯片的主要特性如下:
◇集成有单通道、全双工2.5 Gbit/s传输的PCI Express端口;
◇可配置局部总线宽度,支持8位、16位和32位的总线方式;
◇支持数据总线、地址总线独立和复用总线操作模式;
◇双通道高性能的DMA数据传输可支持数据块模式、分散/集中模式、硬连线数据传输模式和命令模式;
◇支持PCI Express规范中的端点和根复合体模式;
◇芯片小型封装,适合紧凑的电路板设计。
本方案中主要使用DMA方式中的命令模式。在命令模式下,可以通过一对硬连线“DREQ”和“DACK”来控制传输,每一个DMA通道都有一对这样的信号。当FIFO在被写满或读空时,命令模式将暂停操作。而当FIFO状态改变以后,又可继续行进数据传输。
2.4 Raid磁盘阵列
从存储容量、读写速度和单位成本等方面综合考虑,可以考虑利用多个硬盘组成Raid磁盘阵列来作为长时高速采集系统的存储载体。即把多块容量、性能、品牌一致的硬盘组合起来形成一个硬盘组,从而提供比单个硬盘更高的读写速率,以解决数据存储容量的速度问题。该方式的磁盘容量可以达到惊人的T字节级别,可充分满足系统长时间高速采集的需要。本系统采用Raid磁盘阵列控制卡,最高可连接8块SATA II硬盘,本系统挂接了4块西数500GSATAⅡ硬盘。用硬盘读写速度测试软件IOmeter可以测得:在256KByte块传输模式下,磁盘写入速度可以达400MB/s以上,而这也符合系统DMA方式的数据传输模式,所以,在磁盘写入速度方面,该方式完全可以满足系统应用需求。
3 性能测试
PLX SDK是由PLX公司提供的专门针对该公司生产的PCI Express接口芯片的软件开发工具包。当安装完PLXSDK软件后,再把PEX8311开发板插入PCI Express插槽中,就可以用PLXMon对PEX8311的DMA模式下的数据传输进行设置和分析。图5所示是本系统的性能测试界面图。
4 结束语
基于PCI Express总线技术和Raid磁盘技术研制的高速大容量数据存储系统,其最高采样速率可达210MHz,存储容量为2TB。如果要扩展存储容量,只需更换Raid磁盘阵列控制卡并增加硬盘数量即可。通过实际使用表明,该系统可以在50MHz采样率下稳定、可靠、持续不间断的完成数据的采集和存储,而且操作方便,扩展性强,具有一定的工程应用价值和参考价值。