|
利用大多数外设中已有的USB接口,可以很容易地将USB OTG控制器集成到基于不同处理器和操作系统的ASIC中。本文对USB双用(dual-role)控制器的设计进行了讨论,包括USB主控制器、USB设备控制器,以及集成了OTG HNP、模拟部分(充电泵,收发器电压电平检测)和软件驱动器的OTG模块。同时还讨论了SRP和HNP的实现。 由USB实践者论坛(USB-IF)发展起来的USB OTG规范为手持式设备和个人PC的外设之间的接口提供了一种通用、可互操作的解决方案。除了全速USB设备所具有的功能外,USB OTG还能让所有手持设备和PC外设具有一定的USB主机功能。比如,PDA或者照相机可以直接和打印机相连,或者PDA可以直接往便携式USB硬盘驱动器或CD-RW驱动器传递文件,这些都不需要PC作为中介。 普遍存在的USB USB几乎成了所有PC和与PC进行通信的外设的必备接口。现在,USB已被接受并成为公认的标准,而且对用户而言USB是必备的接口。拥有12Mbps(全速)和480Mbps(高速)模式的USB,为用户应用提供了更充足的带宽。 当前,几乎所有的PC外设,照相机、PDA、移动电话以及机顶盒都采用USB接口。利用大多数外设中已有的USB接口,USB OTG很轻松地就促使USB接口成为用户外设中真正的便携式“On-The-Go”接口标准。 双重功能 随着PDA、移动电话、数码相机等基于微处理的手持设备的爆炸式发展,对便携性以及不用依赖台式PC的需求快速增长。USB OTG为PDA、移动电话和其它手持设备之间以及它们与任何USB外设之间的随时、随地通信提供了具有成本效益的解决方法。 USB OTG产品可以将USB主机和外设控制器两种功能集成在一个芯片上。这样的产品被称为“双用(dual-role)器件”。由于具备这些性能,USB OTG芯片可以用作支持高速、全速及低速设备的USB主机,也可以作为USB外设。主机与外设之间的角色转换由主机通信协议(HNP)决定。HNP允许主机功能在两个设备之间转换,从而取消了切换电缆。利用这个特点,双用器件的制造商可以指定他们的器件支持何种外设。但是,USB OTG双用控制器设计具有挑战性,其设计主要包含三个主要模块:USB主控制器、USB设备控制器,以及集成了OTG HNP、模拟部分(充电泵,收发器电压电平检测)和软件驱动器的OTG模块。 主控制器 嵌入式主控制器(HC)IC应具有与PC主机相同的功能,能支持5级的集线器。在PC中,HC在整个PCI总线中使用总线控制协议。为便于将HC设计到在用户现有的产品中,HC不应该是总线控制,而是从属(slave-only)总线控制。这里不需要内存总线控制,微处理只需要将它的传输描述符和载荷发送给从主机,之后从主机将会处理传输描述符并且发出USB数据流。在一个灵活的设计中,此控制器可以和任何微处理器外设总线接口。 USB OTG能够减少用户的设计工作,这得益于USB OTG具有这些特性:1)从属总线协议;2)足够的内置RAM;3)软件(类似OHCI)驱动以允许软件复用;4)支持间接寻址或寄存器映射寻址的CPU接口;5)对微处理器的低速CPU中断,同时仍可提供最大的USB性能;6)可以最大化USB总线同步、中断、块传输带宽的USB传输描述符协议。 从属总线协议置需要CPU以通过并行总线或从属DMA读写HC。HC将不控制数据总线,这点很重要,因为在一个产品中USB并非是主要功能,相反它只是一个具有连接特性的增值功能。 低速中断非常关键,因为我们需要考虑要将软件驱动器移植到不同的实时操作系统中。根据整个系统需要,这些操作系统的中断服务程序运行时间从几微妙到几毫秒不等。在保持应用系统主要功能的性能的同时,低速中断可发挥USB最大性能。为不同USB传输描述符类型设计的协议可以处理多种USB数据事务处理。 设备控制器 C必须支持集成了串行接口引擎(SIE)、缓冲存储器以及收发器的高性能USB接口设备,同时还必须提供完全独立、多配置的DMA操作。HC应该能处理多达14个可编程的USB端点、两个固定控制的IN/OUT端点、2462字节的集成物理多配置存储器,以及能增加吞吐量和便于实时数据传输的双缓冲端点。 用于DC的“乒乓”缓冲RAM不受HC缓冲RAM的影响。当缓冲RAM为满时,DC将缓冲RAM中的数据传输到USB总线上。当缓冲RAM为空时,会产生一个中断以通知微处理器传送数据。微处理器和DC之间的数据传输可以在编程I/O(PIO)模式或DMA模式下进行。 此外,DC有自己独立RAM,该RAM仅在用户需要该设备并同时需要主机运行时才需要。为了从主机切换到设备以及从设备切换到主机,OTG控制器模块必须监控设备和主机中的一些状态,以实现安全切换,并符合OTG HNP协议规范。 OTG模块 OTG模块提供模拟部件、定时器以及一组状态和控制寄存器来支持对话请求协议(SRP)和HNP的软件实现。另外,OTG模块还提供电源管理电路,允许芯片进入省电模式并通过特定事件将其唤醒。集成的模拟部件包括:USB模拟收发器(ATX)、D+及D-线上的上拉和下拉电阻、内置5V充电泵、VBUS电压比较器、VBUS上的上拉和下拉电阻、ID检测器。 为实现高达12Mbps的操作,USBATX应该能够在全速及低速下传输信号数据。ATX必须支持高达480Mbps的高速传输。 VBUS电压比较器包括用于va_vbus_vld(>4.4V)、va_sess_vld(0.8to2.0V)、vb_sess_vld(2.0to4.0V)以及vb_sess_end(<0.8V)的VBUS电压检测器。VBUS上的上拉、下拉电阻分别对VBUS电压充放电,以完成VBUS对SRP的脉冲调制。 由于芯片电阻允许有较大误差(高达±27%),因此D+线上的上拉电阻采用可变的上拉电阻。当USB总线空闲时,用一个900至1575欧姆的电阻以使空闲电压维持在2.7V以上。当USB总线发送数据时,用一个1425至3090欧姆的电阻来保持信号质量(图1所示)。 内置的5V充电泵提供电池供电的手持设备中VBUS线电源,通常该电池VBAT在2.7V-4.5V之间。充电泵提供给VBUS负载的电流大小有限。建议设计允许用5V的外部电源驱动SUB>BUS,以便支持那些需要大电流的应用,例如机顶盒上的VBUS电流高达500μA。ID检测用来确定连接到mini-AB插座的是mini-A接头还是mini-B接头。如果检测是mini-A接头连接到mini-AB插座,则设备充当主机,称为A设备。如果检测是mini-B接头,则设备是外设状态,称为B设备。 对于支持mini-USB模拟车载工具套件(car kit)应用的设备而言,ID检测器需要识别ID管脚是通过电阻接地还是浮空。如果ID检测器中用到内部上拉电阻,则建议当ID短接于地且总线处于空闲时,切断该上拉电阻。这样可以保持持闲置电流尽可能低,这点在电池供电的设备尤为重要。 作者:Alan Chang,Shaun Reemeyer,Zhong Wei Wang,飞利浦半导体 |