USB,是英文Universal Serial Bus(通用串行总线)的缩写,个人电脑(PC)可以使用USB通过连接电缆与外设进行通信。但是出于安全考虑,在某些应用中需要隔离USB通信或隔断接地回路。遗憾的是,由于USB连接电缆上的数据流是双向传输,所以隔离工作也非易事。这篇文章讨论的就是方便易用的USB隔离设备在实际应用中遇到的挑战,并对比了各种不同的解决方案。“透明的”理想方案是将添加隔离设备带给系统的影响降至最低限度,而这样的解决方案目前已经成为可能。
本设计实例主要针对的是以三种数据传输速率运行的USB2.0:低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)。简单起见,本文着重探讨了12Mbps的全速USB,且实例中的大部分实现原理也适用于以其他数据传输速率运行的USB设备。
关于USB
USB大受欢迎的一个原因是其简单的4线接口设计,不但可以为外设供电,还可以在外设和PC间充当串行数据链路。图1是标准的USB连接示意图。VBUS线可以为外设提供5V电力,GND为接地线,而D+和D-则用来传输数据。信号是双向半双工传输,意味着数据可以在线缆的任意方向流动,但是无论何时,最多只有一个发射器可以有效驱动该线缆。在通信过程中,USB发射器驱动差分或单端状态信号到D+和D-线。数据被组织成数据包,其中有特别的信号序列标识数据包的头部和尾部。有时,总线会处于空闲状态,也就意味着没有发射器处于活跃状态,此时与线缆两端相连的电阻在D+和D-线建立起“空闲”总线状态。空闲状态会促成两个数据包之间总线的初始化,并使主机了解外设何时连接或断开以及外设期望的通信速率(1.5Mbps、12Mbps或480Mbps)。
隔离USB主机和外设的方法
现在想象一下对主机和外设进行电气隔离的方法。如参考文献1中提到的,添加隔离阻障的方法有很多。但是无论如何都必须对信号进行隔离。信号是高速运行还是双向运行要取决于隔离阻障的具体添加位置,增加了从具体零部件中构建隔离阻障的难度。这样一来,隔离过程需要使用到更多的材料,而且也很难发现完全符合信号要求的分离组件。
图2a给出的是一种可能的隔离方法,其中虚线表示对USB线缆的概念分割。有关D+和D-线的信息可以穿过隔离阻障,但是电流不可以。在这种情况下,接地端1(上游侧接地基准)是独立于接地端2(下游侧接地基准)的一个单独节点。不幸的是,这种隔离方法使主机无法“看到”下游侧上拉电阻,且外设也无法“看到”上游侧下拉电阻。因此,正如图2b所示,这种隔离方法需要一些额外的电阻来模拟其相对物穿过隔离阻障的连接方式。在这一“透明”隔离概念中,主机与外设之间的通信与图1非隔离USB连接的运行原理类似。透明的USB隔离器组件简单地插入到某个收发器与USB线缆之间,还有一个隔离电源。最初为非隔离应用设计的主机和外设可以轻松地连接到USB隔离器上,无需重大更改即可实现标准USB信号的交互。
假如可以真正实现,这种方法还是极具吸引力的,但是真正实现起来需要面临各种挑战。举例来说,独立式光耦合器或者数字隔离器一般不支持USB兼容驱动特性,也不支持双向半双工通信。此外,很多光耦合器无法以12Mbps或更快的速度运行,且传播延迟较长并存在定时误差,这些都不符合USB2.0的定时要求。还有一些问题会在后面讲述。
现在,我们转移一下注意力,考虑一下不透明的替代选择,比如参考文献1中描述的那些。这些方案不再对USB线缆平分隔离,而是把隔离阻障放置到主机或外设的硬件中—可以放置在USB收发器与串行接口引擎(SIE)之间,或者串行接口引擎与USB控制器之间。这样就可以将单向数字逻辑信号与独立式通用隔离器分离开来。但是,这样的方案也存在一些重大缺陷。首先,USB收发器或控制器硬件必须经过定制,使其能够容纳隔离组件;还可能需要一些额外的微控制器代码或USB驱动软件方面的改动。所有这些无疑会加大系统设计师的工作负担。而由于这些方案比较复杂且需要不同的组件,也会大大增加所需的板空间。
另外一个缺陷就是,数据传送需要USB收发器和单独隔离方案的一系列组合,可能会导致整体数据吞吐量降低。此外,隔离方案可能会增加与编解码成其它串行格式如串行外设接口(SPI)相关的延迟或者与隔离组件低速或非精确定时相关的延迟。
虽然有这些不足之处,但在过去难以克服实现透明USB隔离器的挑战时,这些方案是唯一可行的选择。但是现在,透明的隔离解决方案已成为现实,本文的后半部分将具体描述一个完全符合要求的实例。
透明USB隔离器的要求
USB隔离器系统必须满足下述要求,才能实现真正的“透明”操作:
作为标准的USB收发器,USB隔离器系统必须能够以同样的方式驱动UD+、UD-、DD+和DD-,且实际上应包含两个USB兼容收发器,分别位于绝缘阻障的两端(图3)。
USB隔离器系统的收发器必须能够在适当的时间发送和接收信息,以管理USB线缆上的双向通信,且USB隔离器系统必须能够准确地复制所有驱动和空闲状态。要想准确地复制空闲状态,USB隔离器系统必须在上游侧设置一个上拉电阻器来模拟连接至下游侧外设上的上拉电阻的状态。当然,也可以在下游侧设置一些下拉电阻。此外,必须对总线进行监控,识别指示空闲总线、数据包头、数据包尾的信号,以便能够实时应对各种状况。
USB隔离器内部的信号隔离器组件必须能够穿过隔离阻障来回交流D+和D-数据。如果信号隔离器是单向的(因为一般情况下都是),USB隔离器系统需要多个隔离通道,有些负责在下游方向传送数据,有些负责在相反的上游方向传送数据。
信号隔离器必须能够快速运行且具备准确定时功能,这样才能满足USB信令速率与传播延迟和定时误差的要求。
USB隔离器的两端均应支持5V或3.3V电源。如果是5V电源,隔离器应能够衍生出适用于一侧USB收发器的3.3V稳压电源。如果是3.3V电源,隔离器能够旁路调节器,直接使用该电源为USB收发器供电。
透明USB隔离器的实现
美国ADI公司的ADuM4160 USB数字隔离器(参考文献2)符合上述所有要求,并集成在16引脚小型SOIC封装中。图3给出的是ADuM4160的框图。该器件包含一对USB收发器,5条iCoupler数字隔离通道、控制逻辑和两个“智能调节器”。此外,该器件还包括一个1.5kΩ的上游侧上拉电阻和数个15kΩ的下游侧下拉电阻。
ADuM4160的USB收发器由一个简化控制器进行控制,无需完全解码和分析数据包即可实现隔离功能。此外,它还可以监控UD+、UD-、DD+和DD-,识别指示空闲总线、数据包头、数据包尾的信号,从而在忽略数据包内容的同时正确地使能或去使能USB收发器。当在下游侧从主机向外设传输数据包时,图3中上方的两条隔离通道处于有效状态,用作上游侧USB接收器和下游侧USB发射器。数据从UD+/UD-拷贝到DD+/DD-。当数据包传输结束时,USB隔离器检测到尾部序列后就会去使能所有USB收发器,使总线进入空闲状态。如果接下来外设开始向上游侧传输数据包,USB隔离器检测到数据包头部序列后就会使能第三和第四条隔离通道以及上游侧USB发射器,并将数据从UD+/UD-拷贝到DD+/DD-,直到数据包传输结束。然后,总线再次进入空闲状态,所有发射器也被关闭,等待新的数据传输。
ADuM4160使用第五隔离通道来传递下游侧(参考文献3)控制线路的状态信息,从而激活一个集成于上游侧的上拉电阻,这使得下游端口能够控制上游端口何时连接USB总线。该引脚可以连接到外设上拉电阻、一条控制线路或VDD2引脚,具体取决于何时执行初始总线连接。将该引脚连接到外设上拉电阻可以使上游侧上拉电阻模拟其状态,同时ADuM4160的下拉电阻可以模拟连接到主机的下拉电阻的状态。所有有效与空闲状态均可从隔离阻障的一侧复制到另一侧。
隔离通道是使用芯片级变压器技术实现隔离通信的数字隔离器。每一单个通道的运行速度均超过100Mbps,可以轻松支持12Mbps的全速USB数据传输。把所有通道集成到一个单独的芯片上可以实现对时间的严密控制,从而降低定时误差,以满足USB的定时要求。此外,穿过ADuM4160的全部传播延迟相当于穿过一个标准USB集线器的延迟,且静态功耗要低于空闲总线的USB限制值。
智能调节器支持上面第5条要求中提到的电源选项,且无需明确的用户控制(参考文献4)。如要使用5V电源(例如上游侧)为USB隔离器的一侧供电,则要将该5V电源连接到合适的VBUS引脚(如VBUS1)上,且将VDD1设为断开状态。当传感器检测到电压是应用于VBUS1而非VDD1时,传感器会激活3.3V调节器,为VDD1供电。
要想使用3.3V电源(例如下游侧)为USB隔离器的一侧供电,要将3.3V电源与VBUS2和VDD2相连接。当传感器检测到两侧引脚上同时出现外加电压时,就会去使能片上调节器,直接使用外接3.3V电源。
结论
从概念上讲,“透明”USB隔离器是把USB线缆数一分为二,与原本为非隔离应用设计的USB硬件一起使用操作起来非常简单。这与在主机或外设硬件内部放置隔离组件的方案相比形成强烈的反差,因为那一方案需要进行大量的硬件改装,甚至可能会降低USB的性能。在使用现有通用隔离器等分离组件的情况下,实现透明概念的隔离具有很大的挑战性。然而,最新的集成解决方案如ADuM4160通过单个便利封装克服了上述挑战,大大简化了USB应用中添加隔离阻障的问题。
USB,是英文Universal Serial Bus(通用串行总线)的缩写,个人电脑(PC)可以使用USB通过连接电缆与外设进行通信。但是出于安全考虑,在某些应用中需要隔离USB通信或隔断接地回路。遗憾的是,由于USB连接电缆上的数据流是双向传输,所以隔离工作也非易事。这篇文章讨论的就是方便易用的USB隔离设备在实际应用中遇到的挑战,并对比了各种不同的解决方案。“透明的”理想方案是将添加隔离设备带给系统的影响降至最低限度,而这样的解决方案目前已经成为可能。
本设计实例主要针对的是以三种数据传输速率运行的USB2.0:低速(1.5Mbps)、全速(12Mbps)和高速(480Mbps)。简单起见,本文着重探讨了12Mbps的全速USB,且实例中的大部分实现原理也适用于以其他数据传输速率运行的USB设备。
关于USB
USB大受欢迎的一个原因是其简单的4线接口设计,不但可以为外设供电,还可以在外设和PC间充当串行数据链路。图1是标准的USB连接示意图。VBUS线可以为外设提供5V电力,GND为接地线,而D+和D-则用来传输数据。信号是双向半双工传输,意味着数据可以在线缆的任意方向流动,但是无论何时,最多只有一个发射器可以有效驱动该线缆。在通信过程中,USB发射器驱动差分或单端状态信号到D+和D-线。数据被组织成数据包,其中有特别的信号序列标识数据包的头部和尾部。有时,总线会处于空闲状态,也就意味着没有发射器处于活跃状态,此时与线缆两端相连的电阻在D+和D-线建立起“空闲”总线状态。空闲状态会促成两个数据包之间总线的初始化,并使主机了解外设何时连接或断开以及外设期望的通信速率(1.5Mbps、12Mbps或480Mbps)。
隔离USB主机和外设的方法
现在想象一下对主机和外设进行电气隔离的方法。如参考文献1中提到的,添加隔离阻障的方法有很多。但是无论如何都必须对信号进行隔离。信号是高速运行还是双向运行要取决于隔离阻障的具体添加位置,增加了从具体零部件中构建隔离阻障的难度。这样一来,隔离过程需要使用到更多的材料,而且也很难发现完全符合信号要求的分离组件。
图2a给出的是一种可能的隔离方法,其中虚线表示对USB线缆的概念分割。有关D+和D-线的信息可以穿过隔离阻障,但是电流不可以。在这种情况下,接地端1(上游侧接地基准)是独立于接地端2(下游侧接地基准)的一个单独节点。不幸的是,这种隔离方法使主机无法“看到”下游侧上拉电阻,且外设也无法“看到”上游侧下拉电阻。因此,正如图2b所示,这种隔离方法需要一些额外的电阻来模拟其相对物穿过隔离阻障的连接方式。在这一“透明”隔离概念中,主机与外设之间的通信与图1非隔离USB连接的运行原理类似。透明的USB隔离器组件简单地插入到某个收发器与USB线缆之间,还有一个隔离电源。最初为非隔离应用设计的主机和外设可以轻松地连接到USB隔离器上,无需重大更改即可实现标准USB信号的交互。
假如可以真正实现,这种方法还是极具吸引力的,但是真正实现起来需要面临各种挑战。举例来说,独立式光耦合器或者数字隔离器一般不支持USB兼容驱动特性,也不支持双向半双工通信。此外,很多光耦合器无法以12Mbps或更快的速度运行,且传播延迟较长并存在定时误差,这些都不符合USB2.0的定时要求。还有一些问题会在后面讲述。
现在,我们转移一下注意力,考虑一下不透明的替代选择,比如参考文献1中描述的那些。这些方案不再对USB线缆平分隔离,而是把隔离阻障放置到主机或外设的硬件中—可以放置在USB收发器与串行接口引擎(SIE)之间,或者串行接口引擎与USB控制器之间。这样就可以将单向数字逻辑信号与独立式通用隔离器分离开来。但是,这样的方案也存在一些重大缺陷。首先,USB收发器或控制器硬件必须经过定制,使其能够容纳隔离组件;还可能需要一些额外的微控制器代码或USB驱动软件方面的改动。所有这些无疑会加大系统设计师的工作负担。而由于这些方案比较复杂且需要不同的组件,也会大大增加所需的板空间。
另外一个缺陷就是,数据传送需要USB收发器和单独隔离方案的一系列组合,可能会导致整体数据吞吐量降低。此外,隔离方案可能会增加与编解码成其它串行格式如串行外设接口(SPI)相关的延迟或者与隔离组件低速或非精确定时相关的延迟。
虽然有这些不足之处,但在过去难以克服实现透明USB隔离器的挑战时,这些方案是唯一可行的选择。但是现在,透明的隔离解决方案已成为现实,本文的后半部分将具体描述一个完全符合要求的实例。
透明USB隔离器的要求
USB隔离器系统必须满足下述要求,才能实现真正的“透明”操作:
作为标准的USB收发器,USB隔离器系统必须能够以同样的方式驱动UD+、UD-、DD+和DD-,且实际上应包含两个USB兼容收发器,分别位于绝缘阻障的两端(图3)。
USB隔离器系统的收发器必须能够在适当的时间发送和接收信息,以管理USB线缆上的双向通信,且USB隔离器系统必须能够准确地复制所有驱动和空闲状态。要想准确地复制空闲状态,USB隔离器系统必须在上游侧设置一个上拉电阻器来模拟连接至下游侧外设上的上拉电阻的状态。当然,也可以在下游侧设置一些下拉电阻。此外,必须对总线进行监控,识别指示空闲总线、数据包头、数据包尾的信号,以便能够实时应对各种状况。
USB隔离器内部的信号隔离器组件必须能够穿过隔离阻障来回交流D+和D-数据。如果信号隔离器是单向的(因为一般情况下都是),USB隔离器系统需要多个隔离通道,有些负责在下游方向传送数据,有些负责在相反的上游方向传送数据。
信号隔离器必须能够快速运行且具备准确定时功能,这样才能满足USB信令速率与传播延迟和定时误差的要求。
USB隔离器的两端均应支持5V或3.3V电源。如果是5V电源,隔离器应能够衍生出适用于一侧USB收发器的3.3V稳压电源。如果是3.3V电源,隔离器能够旁路调节器,直接使用该电源为USB收发器供电。
透明USB隔离器的实现
美国ADI公司的ADuM4160 USB数字隔离器(参考文献2)符合上述所有要求,并集成在16引脚小型SOIC封装中。图3给出的是ADuM4160的框图。该器件包含一对USB收发器,5条iCoupler数字隔离通道、控制逻辑和两个“智能调节器”。此外,该器件还包括一个1.5kΩ的上游侧上拉电阻和数个15kΩ的下游侧下拉电阻。
ADuM4160的USB收发器由一个简化控制器进行控制,无需完全解码和分析数据包即可实现隔离功能。此外,它还可以监控UD+、UD-、DD+和DD-,识别指示空闲总线、数据包头、数据包尾的信号,从而在忽略数据包内容的同时正确地使能或去使能USB收发器。当在下游侧从主机向外设传输数据包时,图3中上方的两条隔离通道处于有效状态,用作上游侧USB接收器和下游侧USB发射器。数据从UD+/UD-拷贝到DD+/DD-。当数据包传输结束时,USB隔离器检测到尾部序列后就会去使能所有USB收发器,使总线进入空闲状态。如果接下来外设开始向上游侧传输数据包,USB隔离器检测到数据包头部序列后就会使能第三和第四条隔离通道以及上游侧USB发射器,并将数据从UD+/UD-拷贝到DD+/DD-,直到数据包传输结束。然后,总线再次进入空闲状态,所有发射器也被关闭,等待新的数据传输。
ADuM4160使用第五隔离通道来传递下游侧(参考文献3)控制线路的状态信息,从而激活一个集成于上游侧的上拉电阻,这使得下游端口能够控制上游端口何时连接USB总线。该引脚可以连接到外设上拉电阻、一条控制线路或VDD2引脚,具体取决于何时执行初始总线连接。将该引脚连接到外设上拉电阻可以使上游侧上拉电阻模拟其状态,同时ADuM4160的下拉电阻可以模拟连接到主机的下拉电阻的状态。所有有效与空闲状态均可从隔离阻障的一侧复制到另一侧。
隔离通道是使用芯片级变压器技术实现隔离通信的数字隔离器。每一单个通道的运行速度均超过100Mbps,可以轻松支持12Mbps的全速USB数据传输。把所有通道集成到一个单独的芯片上可以实现对时间的严密控制,从而降低定时误差,以满足USB的定时要求。此外,穿过ADuM4160的全部传播延迟相当于穿过一个标准USB集线器的延迟,且静态功耗要低于空闲总线的USB限制值。
智能调节器支持上面第5条要求中提到的电源选项,且无需明确的用户控制(参考文献4)。如要使用5V电源(例如上游侧)为USB隔离器的一侧供电,则要将该5V电源连接到合适的VBUS引脚(如VBUS1)上,且将VDD1设为断开状态。当传感器检测到电压是应用于VBUS1而非VDD1时,传感器会激活3.3V调节器,为VDD1供电。
要想使用3.3V电源(例如下游侧)为USB隔离器的一侧供电,要将3.3V电源与VBUS2和VDD2相连接。当传感器检测到两侧引脚上同时出现外加电压时,就会去使能片上调节器,直接使用外接3.3V电源。
结论
从概念上讲,“透明”USB隔离器是把USB线缆数一分为二,与原本为非隔离应用设计的USB硬件一起使用操作起来非常简单。这与在主机或外设硬件内部放置隔离组件的方案相比形成强烈的反差,因为那一方案需要进行大量的硬件改装,甚至可能会降低USB的性能。在使用现有通用隔离器等分离组件的情况下,实现透明概念的隔离具有很大的挑战性。然而,最新的集成解决方案如ADuM4160通过单个便利封装克服了上述挑战,大大简化了USB应用中添加隔离阻障的问题。
举报