使用数字隔离器对USB实现隔离的方法
2010-11-03 来源:电子发烧友
早期的个人电脑以串行和并行端口作为与外部世界连接的标准接口。这些标准是从最早的大型计算机继承而来的。另一个可用的通讯标准RS-232接口,虽然速度慢,但因为可简单地实现所需要的鲁棒隔离,很适合医疗和工业环境。由于得到广泛使用并有良好的支持,人们容忍了其速度低和点对点的缺点。
USB接口已取代RS-232,成为个人电脑及其外设的标准端口,其特性几乎在所有方面都远远优于较老的串行端口。然而,对于要求隔离的医疗和工业应用,由于实现隔离的难度大且成本高,USB一直主要用作诊断端口和临时连接。
本文讨论了对USB实现隔离的各种方法。值得特别介绍的是,ADI公司现提供了一个新的可选方案——ADuM41601 USB隔离器。这一突破性产品可简单廉价地实现外设隔离(特别是D+和D-线的隔离),提高了USB在医疗和工业应用中的使用价值。
关于通用串行总线
USB是个人电脑的首选串行接口。该接口得到所有常用的商业操作系统的支持,且允许硬件和驱动器热插拔。一台主机可以集中星型方式连接多达127个设备。许多数据传输模式可处理存储设备的大批量数据传输、流媒体的同步传输以及时间关键型数据的中断驱动型传输(如鼠标移动)等各类传输。USB以三种数据传输速率运行:低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)。该规范创建后强化了消费应用,这些应用要求连接必须简单且具有鲁棒性,由控制器和物理层信令来解决复杂性的问题。
USB物理层只包含4条线:两条向外设提供5V电源和地,另外两条(D+和D-)构成可传递差分数据的双绞线对(图1)。这些线也可传递单端数据以及用无源电阻实现的空闲状态。当设备连接到总线上时,无源电阻结构中的电流对传输速度进行协商,并建立无驱动的空闲状态。数据被组织成数据帧或数据包,每帧可以包含时钟同步位、数据类型标识符、设备地址、数据有效载荷及包尾序列。
图1. USB的标准组成。
串行接口引擎(SIE)在电缆的两端对这个复杂的数据结构进行控制,这个专用控制器(或作为更大控制器的一部分)实现USB协议,通常内置USB收发器硬件。当某个外设首次连接到电缆上时,SIE在 枚举,2 期间向宿主计算机提供外设的配置信息和功率要求。在运行期间,SIE把所有数据按照要求的传输类型格式化,并提供错误检查和自动故障处理。SIE处理总线上的所有控制流,并按需要使能和禁用线驱动器和接收器。主机启动所有的处理业务,然后按明确规定的数据序列在主机和外设之间交换数据,包括数据损坏和出现其它故障的情况。SIE可以内建在微处理器中,因此它可能只有D+和D-线与外设相连。实现这个总线的隔离面临几个挑战:
隔离器几乎总是单向器件,而D+和D-线是双向的。
SIE不提供确定数据传输方向的外部方式。
隔离器必须与无源电阻的上拉和下拉功能兼容,即与隔离阻障两侧的电路匹配。
隔离USB的典型方法主要是设法回避上述挑战。
第一种方法: 使USB接口与需要隔离的设备完全分离(图2)。许多设备可把其它通用的串行总线与USB连接;图2中显示了RS-232与USB的连接接口。SIE提供普通的串行接口功能;隔离是在低速串行线中实现的。但这种方法并不能利用USB的优势,所实现的是一个可热插拔的串行端口。接口芯片可通过改变固件来实现定制,以识别外设,从而允许创建定制的驱动程序;但每个外设可能都需要一个定制的适配器。除非该适配器是永久连在这个外设上,否则这将是维修人员的噩梦。此外,接口的速度将被限制在标准RS-232的速度,甚至远低于低速USB的吞吐量。
图2. 通过RS-232隔离。
第二种方法:使用带有易隔离接口的独立SIE(图3)。市场上有几种产品(如SPI)使用快速单向接口把SIE连接到微处理器。数字隔离器(如ADuM1401C 四通道数字隔离器)可对SPI总线实现完全隔离。由于SIE包含可通过SPI总线填充的缓冲存储器,SPI的运行速度在很大程度上可不依赖于USB的速度。SIE将与USB主机协商其可能的最高连接速度,并以协商得出的总线速度分发数据,直到把缓冲中的数据传递完。此时,SIE会通知主机如果有更多的数据需要传送则重试,并留出时间使SPI接口可为下一个传输循环重新填充缓存。虽然非常有效,这种方案通常要求修改外设驱动程序,并忽视内置在外设的微处理器中的USB电路。该方案在元件和电路板尺寸方面的成本较高。
图3. 通过SPI接口隔离SIE。