模块化仪器系统——灵活且用户可以定制的软件和可扩展的硬件组件
设备的日趋复杂和技术的渐进融合,正驱使测试系统变得更加灵活。但成本的压力要求系统具有更长的生命周期,而测试系统更加需要考虑能够容纳设备随时间带来的各种变化。实现这些目标的唯一方式便是采用一种软件定义的模块化架构。本文将通过虚拟仪器系统引入软件定义的概念,为硬件平台和软件实现提供多种选择,并讨论模块化仪器系统是如何满足自动化测试设备(ATE)的要求。
目前有两种类型的仪器系统,虚拟仪器系统和传统仪器系统。图1描述了这两种类型仪器系统的架构。两者具有相似的硬件组件,两种架构的主要差别在于软件所在的位置以及是否可以被用户访问。
图1展示了这两种类型仪器系统的相似之处。两者都具有测量硬件、1个机箱、1个电源、1条总线、1个处理器、1个操作系统和1个用户界面。由于这两类仪器使用相同的基本组件,所以单从硬件的角度来看,两者间最明显的区别在于如何将这些组件进行封装。传统的(或分立)仪器将其所有组件放置在同一个机箱(这个机箱适用于任何分立仪器)中。通过GPIB、USB或LAN/局域网控制的手动仪器便是台式仪器的一个典型。这些仪器是作为分立器件设计的,其主要设计目的并不是集成为系统使用。虽然传统仪器数量众多,但就仪器本身而言,其软件处理和用户界面都是固定的,仅当厂商选择更新时才可以被更新,而且如何更新也取决于厂商的选择(例如通过固件的更新)。因此,用户不可能通过传统仪器进行其功能列表未囊括的测量,而且这使得根据新的标准进行测量,或者根据需求的变化调整原系统,都极具挑战性和潜在风险。
相比之下,由软件定义的虚拟仪器使得用户可以直接访问硬件上的原始数据,以便定义用户自己的测量和用户界面。通过这种软件定义的方式,用户可以进行定制的测量,根据新诞生的标准进行测量,或者根据需求变化调整系统(例如增加仪器、通道或测量)。尽管用户定义的软件也可应用于分立的专用硬件,但其最理想的搭配还是通用的模块化硬件,通过这种结合,测量软件的灵活性和性能都可以得到充分的利用。这种灵活的、用户定义的软件与可扩展的硬件组件组合,便是模块化仪器系统的核心所在。
支持系统可扩展性的模块化硬件
模块化仪器系统可以采取多种形式。在一个设计良好的模块化仪器系统中,许多组件(例如机箱和电源)为多个仪器模块所共用,而不是为每一个仪器重复配置这些组件。这些仪器模块也可以包含不同类型的硬件,例如示波器、函数发生器、数字化仪以及RF等。在某些情形下(如图2所示),测量硬件仅仅是一个安装于主机端口或插槽的外设。在此情形下,主机PC提供用以运行测量软件的处理器、电源、I/O以及机箱。
在另一些情形下,例如在PXI(面向仪器的PCI拓展系统)中,其测量硬件被安装于工业机箱内,如图3所示。
对于PXI系统,其主机可以嵌入于机箱,或者是一个分离的便携机、台式机或服务器,它通过有线接口控制测量硬件。由于PXI系统使用与PC内部总线相同的总线(PCI和PCIe)和现成可用的PC组件以实现对系统的控制,因此,无论是使用PXI系统还是PC,均可作为模块化仪器系统的硬件平台,只是PXI为模块化仪器系统提供了一些独有优点,如更高的通道数、便携性和坚固性。不论系统使用了PXI、带有内插式模块或是带有I/O外设模块的台式机,这种共享机箱和处理器的方式不仅大大地降低了成本,同时还支持用户对测量与分析软件的控制。虽然模块化仪器系统也存在多种配置选择,但该类型仪器系统与传统仪器系统的区别之处在于,其软件是开放的,以便在测试需求发生变化或传统仪器无法完成测量时,用户可以定义自己所需的测量。
值得注意的是,这种模块化方法并不意味着与将所有的功能集结在单一盒子内的传统仪器相比较,会存在仪器或通道间同步的问题。相反地,模块化仪器的设计目的在于可被集成,以供系统使用。所有的模块化仪器均通过共享的时钟和触发器提供定时和同步的能力。例如,就最高同步精度而言,基带、IF和RF仪器可以实现仪器间偏移低于100 ps的相互同步,优于同一台仪器的多个通道间的同步偏移。
模块化降低成本、减小尺寸、提高吞吐量、拓展生命周期
虽然“模块化”有时会狭隘地仅用于基于硬件封装,但模块化仪器系统所涵盖的内容远不止封装。用户应当期望模块化仪器系统带来三方面的收益:更低的成本与更小的尺寸(通过共用机箱、背板和处理器);更高的吞吐量(通过与主机处理器的高速连接);更高的灵活性与更长的生命周期(通过用户定义的软件)。
如上所述,模块化仪器系统中的所有仪器共用同1个电源、机箱和控制器。而分立仪器则为每一个仪器重复配置电源供应、机箱和(或)控制器,从而增加了成本与尺寸并降低了可靠性。事实上,不论PC使用怎样的总线,每个自动化的测试系统仅需要1个PC,所有仪器都基于模块化架构,为整个系统分担了成本。在模块化仪器系统中,GHz PC处理器分析数据并利用软件完成测量。其测量吞吐量是传统仪器(这些仪器使用内置的厂商定义的固件和专用处理器)的十倍到百倍。例如,一个典型的向量信号分析仪(VSA)每秒可以完成0.13次带内功率测量,而一个NI模块化VSA每秒可以完成4.18次带内功率测量,达到近33倍的改进。
模块化仪器需要一个高带宽、低时延的总线,实现从仪器模块到共享处理器的连接,以执行用户定义的测量。虽然USB在易用性方面提供了极好的用户体验,但PCI与PCIe(以及基于这些总线拓展而得的PXI平台)在模块化仪器系统中提供了最佳的性能。目前,PCIe提供高达4 GB/s的插槽带宽,超过高速USB的33倍,是100 Mb/s以太网的160倍,甚至是即将推出的千兆以太网的16倍(如图4所示)。外设总线(例如LAN与USB)是通过一个内部总线(例如PCIe)与PC处理器相连,因而性能不会很高。下面举一个高速总线如何影响测试与测量的范例:考虑一个模块化RF采集系统,在一个台式机或一个带有4个2 GB/s插槽的PXI系统,可以将2个通道的100 MS/s、16 位IF(中频)数据以数据流的方式直接传输到处理器供运算处理。由于LAN与USB都不能满足这些需求,所以需要提供一个嵌入式的、厂商定义的处理器,以完成测量,而这样的仪器就不再是模块化的了。
在模块化仪器中,与主机的高速连接实现了该仪器的高灵活性和更长的生命周期,因为它支持软件驻留于该主机,而不是驻留在该仪器。利用该主机上运行的软件,用户(而不是厂商)可以定义仪器的运行方式。这样的架构使用户能够:(1)进行那些不够普遍以致未能包含在典型的、厂商定义的、非模块化方法中的测量;(2)为尚未发布的标准创建测量;(3)定义用于进行特殊测量的算法。软件的用户定义也意味着,用户可以在受测设备发生变化时增加或调整测量。用户也可以利用软件直接访问跨网络监视或控制这些模块化仪器。
值得注意的是,这些硬件实现方式并没有牺牲测量性能。目前,利用模块化仪器系统搭建的仪器包括业界最高精度的数字化仪、最高带宽的任意波形发生器和最精确的7位半数字万用表。
支持灵活、定制测量的软件
软件在模块化仪器系统中的作用非常重要。软件将来自硬件的原始比特流转换为一个有用的测量值。一个设计良好的模块化仪器系统兼顾软件的多个层次,包括I/O驱动程序、应用程序开发和测试管理,如图5所示。
位于最底层的是测量与控制服务层,虽然常常被忽视,但它仍然是一个模块化仪器系统最为关键的要素之一。该层代表了I/O驱动软件和硬件配置工具。这个驱动软件非常关键,因为它提供了测试开发软件和用于测量与控制的硬件之间的连接。
仪器驱动程序提供一组面向与仪器交互的高层次的、用户可读的函数。每个仪器驱动程序都有一个特定的仪器模型,以提供访问该仪器独特功能的接口。在仪器驱动程序中,与开发环境的集成尤为重要,因为这关系着仪器的命令能否与应用开发无缝集成。系统开发人员需要专为他们所选的开发环境(如NI LabVIEW、C、C++或Microsoft .NET)而优化的仪器驱动程序接口。
同样包含在测量与控制服务层中的还有配置工具。这些配置工具包括用于I/O的配置和测试资源,以及存储扩展、校准和通道相关信息。这些工具对于仪器系统的快速构建、故障排除和维护非常重要。
应用开发环境层中的软件提供了用于开发应用所需的代码或规程的工具。虽然图形化编程并不是模块化仪器系统所必需的,但这些系统通常使用图形化工具,以保证其易用性和快速开发。图形化编程使用“图标”或符号函数,它们以图示方式表示所要执行的操作。这些符号通过“连线”相连,以传递数据并确定其执行的顺序。LabVIEW提供了业界最常用的、也是最完整的图形化开发环境。
一些应用还需要一个附加的软件管理层,用于测试执行或测试数据的可视化。这一要求在系统管理软件层得以体现。对于高度自动化的测试系统,测试管理软件提供了一个面向顺序执行、分支/循环、报告生成和数据库集成的框架。测试管理工具还必须能够紧密集成专用代码的开发环境。例如,NI TestStand提供了用于顺序执行、分支、报告生成和数据库集成的一个框架,并包含了与所有常用开发环境的连接。而其他一些工具可能对需要观察大量测试数据的应用起到帮助。这些需求包括快速访问大量散落的数据、一致的报告和数据的可视化。这些软件工具,针对采集过程中所采集的数据和(或)仿真过程中所生成的数据,为管理、分析和报告这些数据提供辅助功能。
对于模块化仪器系统,该软件架构中的每一层都应当仔细考虑。
模块化仪器系统——满足自动化测试的需要
当设备变得愈为复杂并涵盖更多迥异的技术时,测试系统必须变得更为灵活。虽然测试系统必须容纳随时间变化的设备,但成本的压力要求系统具有更长的生命周期。实现这些目标的唯一方式便是采用一种软件定义的模块化架构。通过共享组件、高速总线和开放的、用户定义的软件,模块化仪器系统最佳地满足了ATE目前的需求和未来的需要。