目前,国内外采用USBl.1和USB2.O两种规范。USBl.1主要用于低速传输要求的场合,支持1.5Mb/s和12Mb/s两种传输速率;而USB2.O规范则提供高达480Mb/s的传输速率。尽管如此,在某些对数据传输速度要求很高的系统中,外围设备与USB接口之间在速度上仍存在着不可忽视的传输瓶颈。
Cypress公司生产的USB2.0控制器CY7C68013提供了一种独特的接口方式,即通用可编程接口(GPIF)方式。
它与传统接口方式的主要区别有两点:
①在数据传输过程中不需要CPU干涉,使得传输速率明显提高,从而可以充分利用USB2.0的传输带宽;
②由软件设置读/写控制,其控制方式类似于状态机,提高了传输稳定性。因此,本文介绍的基于USB2.0控制器CY7C68013的GPIF接口设计,就是充分利用了该芯片这一独特的数据传输接口方式,有效地解决了在传统接口方式下USB2.0设备数据传输速度的局限性,大大提高了数据的传输速率。
1 CY7C68013简介
CY7C68013是Cypress公司的EZ-USB FX2系列芯片。EZ-USB FX2是一款集成USB2.0收发器的微控制器,内部结构如图l所示。该系列芯片集成了USB2.O收发器、串行接口引擎(SIE)、带8.5KB片上RAM的增强型高速8051单片机、4KB FIFO存储器以及通用可编程接口等模块.提供了全面集成的USB解决方案,无需外加芯片即可实现高速USB传输。
FX2系列芯片最主要的特点是可以通过USB2.0的通用可编程接口为特定的应用接口编程。另外,CY7C68013的GPIF引擎具有自动传输数据结构的特性,这种特性使得以主/从端点FIFO(B/16位数据总线)为ATA、UTOPIA、EPP、PCMCIA、DSP等的外围设备,可以与主机通过CY7C68013无缝、高速地传输数据。另外,CY7C68013内部集成的USB2.O的SIF能完成大部分USB2.O协议的处理工作,从而减少了用户对繁杂的USB协议的处理。
2 硬件设计及原理
在GPIF接口方式设计中,GPIF作为CY7C68013的端点FIFO的内部控制器,在这种方式下,CPU不会干涉数据的传输。CY7C68013的GPIF接口方式如图2所示。
CY7C68013专门为GPIF提供了接口信号(包括16位数据线、输出控制信号CTL、输入控制信号RDY以及地址线ADR),这些信号负责完成USB接口芯片与外围设备或器件(如FPGA、DSP等)的数据读/写控制和传输。以下为GPIF方式下的主要端口功能。
FDO~FDl5(输入/输出):USB主机通过CY7C68013与外部设备进行数据传输的数据线,可以用8位或16位数据线。
CTLO~CTL5(输出):CY7C68013对外部设备进行控制的信号线。
RDY0~RDY5(输入):CY7C68013对外部设备的状态进行检测的信号线。
SDA(双向)、SCL(输出):E2PROM的数据及时钟信号线。
ADR0~ADR8(输出);GPIF为外部设备提供的地址线。
在本设计中,除了重点利用通用可编程接口来实现无缝、高速的传输数据外,还采用了EZ-USBFX2提供的一种独特架构,即“量子FIFO(Quantum FIFO)”处理架构。它能较好地解决带宽问题,图3为其数据传输示意图。当USB执行OUT时,EP2端点被设置为512字节四重FIFO(在USB端和外部接口端,都不知道有四重FIFO),图4为其数据传输原理图。在USB端看来,只要有1个FIFO为“半满”,那么就可以继续发送数据。
当前操作的FIFO写“满”时,FX2自动将其转换到外部接口端,排除等候读取;并将USB接口队列中下一个为“空”的FIFO转移到USB接口上,供其继续写数据。同时,在外部接口端看来,只要有1个FIFO为“半满”,就可以继续读取数据。当前操作的FIFO读“空”时,FX2自动将其转换到USB接口端,排除等候写入;并将外部接口队列中下一个为“满”的FIFO转移到外部接口上,供其继续读取数据。
3 软件设计及实现
本设计的软件设计包括:固件程序、驱动程序和应用程序设计。其中,固件程序是整个程序设计的核心,它在设备CPU中运行。GPIF就是在固件中实现的,因此,只有在该程序运行时,外设才能称之为具有给定功能的外部设备。
3.1 固件设计
在GPIF高速数据传输中,GPIF波形的描述符决定了整个数据传输过程的时序。GPIF波形描述符通常用Cypress公司的GPIF工具(GPIFTOOL)进行配置。它是一个可运行于Windows平台的应用程序,与FX2的开发包一起发布的。在GPIF方式下,所有的读/写及控制逻辑通过CY7C68013的GPIF以软件编程的方式实现,且控制逻辑的变换方便灵活(只需要改变接口的一个配置寄存器的值)。
FX2由4个GPIF波形描述符控制各个状态,它们分别是GPIF Waveform O(FIFORd)、GPIF Waveform1(FIFOWr)、GPIF Waveform 2(SnglRd)和GPIF Wave-form 3(SnglWr)。这些波形描述符可以动态地配置给任何一个端点FIFO。FX2的固件程序可以把这些描述符配置给4个FIFO中的任意一个;配置后,GPIF将依据波形描述符产生相应的控制逻辑和握手信号给外界接口,以满足向FIFO读/写数据的需要。每个波形描述符包含了7个有效状态(S0~S6)和1个空闲状态。在每个有效状态对应的时间段里,经过预先设置,GPIF可以完成以下几项工作:驱动(使高或低)或浮接CTL输出,采样或驱动FIFO 的数据总线,增加GPIF地址总线的值和指向当前FIFO指针的值,以及启动GPIFWF(GPIF波形)中断。除此之外,在每个状态下,GPIF还可以对几个信号(如RDY输入端、FIFO状态标志位、内部RDY标志位和传输计数终止标志位)中的任意两个进行采样,把其中两个信号相“与”、相“或”或者相“异或”,并根据结果跳转到其他任意一个状态或延迟1~256个时钟周期,当然也可以根据输入端的信号进行跳转或延迟。
FIFO读波形配置(FIFORd)如图5所示。在状态0时,数据总线上的数据为有效(activate),GPIF把数据读到FIFO中。在状态1时,GPIF产生一个正脉冲信号RDCLK(CTL0)给外围设备,表示已经读取了一个数据,同时判断数据是否传输结束。如果还没有,则不断循环状态O和状态l,直到读完所有数据为止;读完所有数据后,不再经过中间其他任何状态,就直接跳到状态7(Idle),表示完成本次数据传输。从图5中町以看出,在两个时钟周期内完成了一个数据(8位或16位)的读取,如果数据为双字节宽,那么传输速率可达48 Mb/s,从而充分利用了USB2.0的传输带宽,大大提高了数据传输的速率。
3.2 驱动程序设计
USB系统驱动程序由3部分组成:USB设备驱动程序、USB总线驱动程序和USB主控制器驱动程序。其中,Windows操作系统已经提供了处于驱动程序栈底的USB总线驱动程序和USB主控制器驱动程序;而USB设备驱动程序由设备开发者编写,通过向USB总线驱动程序发送包含URB(USB Request Block)的IRP(I/O RequestPaeket),以实现USB外设之间的信息交换。
开发USB设备驱动程序,可采用Numega公司的开发包Driver Works和Mierosoft公司的2000DDK,并以VC++6.O作为辅助开发环境来完成。在Cypress公司的EZ-USBFX2开发包中,提供了完整的CY7C68013驱动程序源代码、控制面板程序及固件的框架,可以大大加快用户开发的进度。用户只需对所带驱动程序稍加修改甚至无需任何修改,再经DDK编译后使用,软件开发者大量的时间主要集中在应用程序和固件的开发上。本设计所用的USB设备驱动程序就是对FX2开发包所带的驱动程序做了一些修改,主要是修改了DeviceIoControl例程,增加了控制数据传输函数、启动和停止AD、复位FIFO等。
3.3 应用程序设计
用户程序是USB系统与用户的接口,其关键是实现从USB外设读取或发送USB设备请求、命令和特定量的数据等,并对数据进行一系列处理(如存储、显示等)。在编写用户程序时,首先要建立与外设的连接,然后才能实施数据的传输。
本设计使用的是C++Builder6编译环境,在C++Builder6环境下通过API函数去调用USB驱动。基本步骤为:首先打开设备的句柄;然后进行读/写和控制操作;最后关闭设备句柄。程序中主要用到的两个API函数CreatFile()和DeviceloControl()就是通过该句柄实现数据传输的。
结语
本文详细介绍了基于USB2.O控制器CY7C68013的GFIF接口软硬件设计方案。该设计充分利用了CY7C68013芯片的通用可编程接口特性,很大程度上解决了USB2.0设备存在的传输瓶颈问题,大大提高了数据传输速率。同时,由于利用了芯片的呵编程特性,因此在具备了普通USB接口方式的诸多优点之外,还简化了外部硬件设计,提高了系统稳定性,有利于PCB板的制作和调试。
经验证,在USB2.O的高速数据采集与处理系统中,基于USB2.0微控制器CY7C68013的GPIF接口设计是一种比较好的解决传输速度问题的方案。
USB是一种灵活的高速接口技术,可以替代计算机中原来的串行口和并行口,但灵活性高也意味着更加复杂,使得USB设计调试以及设计完成后的验证都比较困难。本文首先对USB规范做一简要介绍,然后详细讨论USB产品在调试与规范验证方面的一些实用技巧。
通用串行总线(USB)是一种很流行的接口,可用于那些与个人计算机进行通信的设备。近年来,所有新PC机和Mac机都支持USB技术,这种接口有足够的灵活性,既可用于驱动器和键盘之类的普通外围设备,也可用于定制按特殊用途设计的外设。此外USB还有一些对用户和开发人员都很有吸引力的特性,如从总线向设备提供电源、易于通过集线器进行总线扩展,以及主计算机对设备能自动识别等等。
但USB的超强性能也意味着它的接口要比它所替代的老式串行和并行接口都复杂,每个USB设备必须响应总线上的一系列标准请求和各种事件。大多数总线交流需要双向通信,而且延迟必须很小,总线上的数据都经过编码,单单只用示波器或逻辑分析仪观察不是很容易。工程技术人员可以选择不同的工具与技术或采用不同设计,简化并加快USB的开发和故障排除。
USB规范
USB规范是由英特尔、微软和另外几个PC及外设公司共同提出的,在USB应用者论坛(USB-IF)的网站上提供了供开发人员使用的规范文本、相关信息及工具(详情可访问www.usb.org)。
每个总线上有一个主控制器,用来控制与总线上面设备的通信。为了给设备提供更大带宽,一台计算机可以有多个主控制器,分别控制其自己的总线。
USB支持三种总线速度:低速1.5Mbps、全速12Mbps和高速480Mbps。高速模式是2000年发布的规范2.0版本新增加的,Windows XP是支持USB 2.0的第一个Windows系统,微软公司允诺在Windows 2000和Windows ME中对USB 2.0提供更新支持,而其它操作系统以后也将逐渐支持USB 2.0。
对于嵌入式PC操作系统,Windows CE也支持 USB。大多数Windows CE计算机作为USB主机使用,Windows CE 3.0中还包括用于Cypress/ScanLogic公司SL11主/从控制器的驱动程序。有了这些驱动程序(或者用于其它控制器的类似驱动程序),一个Windows CE计算机还可以作为USB外设使用。
USB的多功能性主要归功于它的4种传输类型,每一种类型适用于不同的用途。其中控制传输模式用于传输枚举过程中的请求,也用于发送请求至设备和接收答复(可选);中断传输模式用于键盘鼠标之类由主机定期发出请求和发送数据的设备;批传输模式用在诸如打印机和扫描仪之类的设备中,这类设备要求传输速度快,但在总线忙碌时传输数据可以等待;同步传输用于实时伴音和其他应用,这类应用对时序要求很高,但允许有偶尔的错误。
在自举或者当某个设备连接到总线上时,设备集线器就向主机报告连接情况,在一个称为枚举的过程中,主机发送系列请求以了解连接的设备并与之建立通信,设备则以所谓描述符数据结构返回应答信息。Windows的设备管理器将描述符内的信息与PC内部INF文档进行比较,从中找出最佳匹配,然后指定一个设备驱动程序,这样应用程序就能够访问该设备了。
所有设备必需遵循USB对功率管理的要求,包括限制设备吸收的总线电流和检测什么时候进入低功耗挂起状态,允许的电流量取决于器件描述符中的信息。
目前市面上有很多带USB功能的设备控制器芯片可供选用,有的是带一个USB口的微控制器,有的是非CPU控制器,上面带有一个USB口和一个用于与普通微控制器通信的串口或并口。大多数具有USB功能的微控制器都有C语言编译器,如果你熟悉某个微控制器系列,那么它提供的USB功能变量将非常有用。
测试USB设备的通信功能包括几个阶段,第一个目标是成功枚举,如果设备不能枚举,那么接口什么事也做不了。其它测试包括让设备执行预定的任务(例如读出或写入文档至一个USB设备),以及验证该设备是否遵循功率管理规则。
USB通信调试可在三个位置进行,即在PC主机、设备和线缆等处,每个方案都有其自己的优点。
在主机上进行调试
在主机处,可以验证一个设备是否枚举成功并能执行预定的功能。在主机检测到问题后,要找到问题根源常常还需要检查设备本身硬件或线缆中的总线通信流量情况。
当USB设备连接到主机后,Windows的设备管理器(图1)会进行快速检查,看设备枚举是否有问题。图标列表上的惊叹号表示与该设备通信或寻找驱动程序时有问题,而图标上的X号则表示设备存在但己不起作用。
为精确地看到主机在枚举时收到什么信息,可以使用USBCheck应用软件包或者新的USB指令验证器工具,USB-IF网站上免费提供了这两种工具。USBCheck能观察描述符、发送控制请求、观察结果以及在集线器和HID(拟人接口设备)上对设备做进一步测试。
USBCheck的设备框架测试能读出描述符并发送标准请求,这些测试作为初始检查非常有用,此时Windows从设备上检索到它所想要的信息。图2显示了USBCheck从集线器接收到的设备描述码。
主机对USB设备枚举成功后,应用软件可以按预定用途对设备进行测试,Windows设备驱动程序可通过组合API函数如ReadFile()、WriteFile()或DeviceIoControl()等使应用软件访问USB设备。有些不同等级的设备还有额外支持,如应用软件能以访问其它驱动器的同样方法访问USB驱动器,应用软件不必了解驱动器是使用USB还是其它接口,因为这些细节在更低一级中进行处理。
对于许多设备来讲,USB等级规范定义了设备的预定功能及固件响应,如HID、大容量存贮器件和用于静止图像捕获的设备等。
当出现错误时,Windows返回的错误信息通常提供不了太多帮助。例如向HID类设备发送WriteFile()函数失效时,返回的错误一般是“CRC Error”,而造成传输失效的任何固件问题都会得到这个错误信息。通常排查错误要是从CRC计算着手基本上是找不到什么的,跟踪这类问题出现的原因常常需要在设备或总线上进行调试。
认证测试USB应用者论坛和微软公司可为USB设备和主机软件开发人员提供测试,通过测试的产品可以在上面使用USB标识或者Microsoft Windows标识。
为了能在多种条件下彻底测试产品,USB-IF成员可以将自己的设备在USB-IF指定的认证程序中进行登记,一年登记费用为2,500美元,其中包括程序运行费用,以及其它支持USB产品开发和在市场上推广USB活动的费用。
当某个设备符合认证程序的标准时,USB-IF将认为该设备“测量结果可以接受”,然后会把它加到认证设备总表中。在收到签署的许可协议和付款后,USB-IF将授权这一设备可以使用USB标识。
认证程序有两项评判标准,分别是检查对照表和认证测试。检查对照表包括一些与产品及其功能有关的问题,检查表可以提供给供应商,外围设备、集线器、带USB主机系统和线缆等不同供应商有不同的对照表,有些产品还需要多个检查表。
外围设备检查表覆盖了机械设计、设备状态与信号以及工作电压和功耗,每个问题都相应附有标准规范中的对应页面作为参考,可以从中找到更多信息。从USB-IF的网站上可得到这些检查表。
为帮助通过电气测试,USB-IF还提供了一个USBHSET工具,其中含有软件和测试步骤。另外也可以使用专业测试服务咨询机构VI Engineering的USB预认证测试仪,这是一个硬件单元,能执行测试文件中的所有电气测试,其中包括在LabView下运行的软件,可以观察到眼图、上升与下降次数、截面电压、浪涌电流及其它更多内容。
为帮助验证USB规范第八章中所讨论协议的响应情况,位于比利时的PIMC公司提供了一个名为Ch8ck的工具。Ch8ck执行的测试包括向并不支持的方向或者传输类型发送一个信息包ID,然后检查中断端点的响应,以及要求CRC值时的位填充情况。当认为产品能通过检查表上各项内容时,就可以准备进行认证测试了。USB-IF对一些机构提供资助,可以用不同类型的硬件测试设备,每个机构都有很多供应商和产品。你可以与主机硬件供应商一起安排专门测试,也可以参与USB-IF的“plugfests”测试,这个测试将有尽可能多的供应商把他们的设备连到一台主机上,观察所有设备是否可以相互和平共处。USB-IF也授权一些私人实验室进行认证测试。
认证测试程序文件对测试有详细描述,包括对标准请求的响应、功率的消耗和分配、信号质量和协同性等。其中协同性测试将你的产品与其它多个USB外围设备连在一个系统中并使用多种软件,以模拟用户使用情况。
设备应该工作正常,不会出现任何设备检测不到错误或者系统崩溃、死机或重新自举等错误。设备不仅要在一条只连接一个设备的总线上通过测试,而且也应该在一条连有多种集线器和其它通用外围设备的总线上通过测试。
如果设备通过认证测试,就有资格使用USB标识,为取得标识使用权,高速设备还必须在全速模式下测试所有功能。此外非USB-IF成员还须支付额外一项管理费,数额为每两年1,500美元。
对于连接在PC上的设备,微软公司鼓励采用Windows硬件质量实验室(WHQL)的测试方案,通过这些测试的设备可以使用Microsoft Windows标识,并将列入到微软公司的硬件兼容表中,同时微软公司也会将设备的驱动程序加入到Windows驱动程序库中。
微软公司提供了用于硬件和设备驱动程序的测试组件,你可以下载所需组件并对你的设备进行测试。当你相信你的设备能够通过所有测试时,就可以提交一份材料给授权的测试机构,材料中应包括设备、驱动程序和相关文档、测试记录以及相应的费用。
在www.microsoft.com/hwtest网站中可以找到有关WHQL的更多信息。
在设备上进行调试
在设备上的调试与任何嵌入式系统调试类似,提供带USB功能微控制器的供应商同时也提供了带监控程序的开发系统,监控程序可以设置断点、单步运行、跟踪模式和其它自诊断工具。
USB通信所需的固件支持数量取决于控制器芯片的结构,从芯片供应商或其它地方获得高品质固件也很重要。
MCCI公司有一个免费的USB资源编辑器,有助于将设备描述符信息翻译成C语言的数据初始化结构,并将其存在设备的程序存储器中,MCCI还提供了USB DataPump便携式固件包和安装实用程序。
用PC作为模拟的USB设备是专用开发组件的一个低成本替代方案,可对最终驻留在嵌入式设备中的代码进行初始测试。如DeVaSys公司的USBLPT-PD11板,上面带有飞利浦PDIUSBD11 USB控制器,控制器的I2C接口与PC并口进行通信,软件使用DOS版Borland Turbo C语言控制被仿真设备。
使用这一方法,你可以编写PC应用,使最终控制设备的固件执行一些功能,包括在设备枚举和响应其它任务时发送描述符。C语言编写的PC软件对设备是可移植的,不过每个控制器都有芯片专用操作,因此针对最终产品还需要作一些修改。
在线缆上进行调试
有些时候,仅仅在主机和设备上进行调试还不够。在主机上,能够观察和控制的信息要经过主机控制器及其驱动程序过滤;而在设备上,固件又看不到硬件管理的底层通信。为填补这一空白,需要观察线缆中发送的是什么。
如果用示波器或逻辑分析仪来观察USB通信,你将会发现读取位的状态并不像将电压与逻辑电平匹配那么容易。在总线上的数据是用带有位填充的不归零倒置(NRZI)代码进行编码的,这种编码能使接收器与发送器保持同步,不需要每个字节都发送时钟信号或开始与结束位等额外的工作。
NRZI不是采用电压方式定义逻辑0和逻辑1,而是用电压改变代表逻辑0,电压保持不变代表逻辑1。如图3所示,每个逻辑0都会使前面一个状态发生改变,而每一个逻辑1则不发生状态改变,数据首先发送最低有效位。
之所以要用位填充是因为接收器在切换时要同步,如果数据全部为0会有许多转变,但如果数据中有一长串1,由于缺少转变会使接收器失去同步。
例如数据有6个连续的1,发送器就在第6个1后面填充或插入一个0(用一个切换来表示),这样就保证每7个位至少有一个转换,接收器检测到每6个连续1以后的任意位都会丢弃掉。随机数据的位填充开销仅为0.8%,即每125个数据位有1个填充位。
幸运的是,每个端口的USB硬件会进行所有编码和解码工作,所以设备开发人员和编程人员不必担心这一点。观察数据的最好方法是使用协议分析仪,这种分析仪可收集数据,然后进行解码并以有用的格式显示出来。你可以看到在枚举时发生了什么,检测和检查协议及信令错误,观察任何传输中的数据,或者关注通信中你所希望的任何方面。
任何分析仪都可以执行USB通信解码和显示结果这类基本任务,只是在用户接口和显示信息的方式上有所区别,不是所有分析仪都支持高速模式。图4显示了用Catalyst的SBAE-20总线分析仪-操作仪采集的数据。控制分析仪和观察通信数据的用户界面可以是一台PC或逻辑分析仪,与PC相连的分析仪可使用USB口、并口、以太网口或ISA板上接口连接。如果你有一台通用逻辑分析仪,那么用USB分析仪与之相连会比其它方案更便宜,如Crescent Heart Software的分析仪可与Tektronix的相连,而FuturePlus的分析仪可与Agilent的相连。
测试设备与软件
除了通过应用程序访问设备外,进一步对总线通信和信令进行控制在测试和调试中也是很重要的,同样也有一些仪器可做到这一点
Computer Access Technology的通信发生器可对总线通信和事件进行精确控制,你可以在PC上运行他们的软件通过并口连接来控制通信发生器,可生成各种合法和非法信息和总线状态,而且还能控制每个位的状态和位宽度。
Transdimension的USB主机/设备操作仪和Catalyst的SBAE-20都既具有协议分析仪功能,又具有在总线上产生通信数据的主机功能,SBAE-20其它功能还包括测量涌入和挂起状态下的电流。
RPM Systems的Root 1 USB功能验证适配器能执行许多主机和根集线器功能,Root 1可枚举相连接的设备,对其它通信进行初始化并执行各种测试,包括控制总线电压。
由于有很多新供应商进入到该领域,而原来的供应商也在扩展和改进他们的产品,因此测试工具的数量和种类在过去数年已有所增加,随着USB设备日益普及,这个趋势肯定还会继续下去。对任何开发项目来讲,对少量工具进行投资并学会如何很好使用这些工具将会在长期运行中节约更多的时间和资金
通用串行总线(Universal Serial Bus, USB)是连接外部设备的一个串口总线标准,在计算机上使用广泛,但也可以用在机顶盒和游戏机上,补充标准(On-The-Go)使其能够用于在便携设备之间直接交换数据。
Intel公司开发的通用串行总线架构(USB)的目的主要基于以下三方面考虑:
(一)计算机与电话之间的连接:显然用计算机来进行计算机通信将是下一代计算机基本的应用。机器和人们的数据交互流动需要一个广泛而又便宜的连通网络。然而,由于目前产业间的相互独立发展,尚未建立统一标准,而USB则可以广泛的连接计算机和电话。
(二)易用性:众所周知,PC机的改装是极不灵活的。对用户友好的图形化接口和一些软硬件机制的结合,加上新一代总线结构使得计算机的冲突大量减少,且易于改装。但以终端用户的眼光来看,PC机的输入/输出,如串行/并行端口、键盘、鼠标、操纵杆接口等,均还没有达到即插即用的特性,USB正是在这种情况下问世的。
(三)端口扩充:外围设备的添加总是被相当有限的端口数目限制着。缺少一个双向、价廉、与外设连接的中低速的总线,限制了外围设备(诸如电话/电传/调制解调器的适配器、扫描仪、键盘、PDA)的开发。现有的连接只可对极少设备进行优化,对于PC机的新的功能部件的添加需定义一个新的接口来满足上述需要,USB就应运而生。它是快速、双向、同步、动态连接且价格低廉的串行接口,可以满足PC机发展的现在和未来的需要。
USB最初是由英特尔与微软公司倡导发起,其最大的特点是支持热插拔(Hot plug)和即插即用 (Plug&Play)。当设备插入时,主机枚举(enumerate)此设备并加载所需的驱动程序,因此使用远比PCI和ISA总线方便。
USB速度比平行埠并联总线(Parellel Bus,例如EPP、LPT)与串联埠总线(Serial Port,例如RS-232)等传统电脑用标准总线快上许多。原标准中USB 1.1 的最大传输带宽为 12Mbps,USB 2.0 的最大传输带宽为 480Mbps。
USB的设计为非对称式的,它由一个主机(host)控制器和若干通过hub设备以树形连接的设备组成。 一个控制器下最多可以有5级hub,包括Hub在内,最多可以连接127个设备,而一台计算机可以同时有多个控制器。 和SPI-SCSI等标准不同,USB hub不需要终结器。
USB可以连接的外设有鼠标、键盘、gamepad、游戏杆、扫描仪、数码相机、打印机、硬盘和网络部件。对数码相机这样的多媒体外设USB已经是缺省接口;由于大大简化了与计算机的连接,USB也逐步取代并口成为打印机的主流连接方式。2004年已经有超过1亿台USB设备;到2005年显示器和高清晰度数字视频外设是仅有的USB未能染指的外设类别,因为他们需要更高的传输速率。
USB Implementers Forum (USBIF)负责USB标准制订,其成员包括苹果电脑、惠普、NEC、Microsoft和Intel。 USBIF于2001年底公布了2.0规范,之前还有0.9、1.0、和1.1,他们都是完全向后兼容的。On-The-Go Supplement to the USB 2.0 Specification的当前版本是1.0a。
现标准中将UBS统一为USB2.0,分为:
High-speed,传输速率25Mbps~400Mbps(最大480Mbps)
Full-speed ,传输速率500Kbps~10Mbps(最大12Mbps)
Low-speed,传输速率10Kbps~100Kbps(最大1.5Mbps)
技术指标:
目前USB支持3种数据信号速率,USB设备应该在其外壳或者有时是自身上正确标明其使用的速率。USB-IF进行设备认证并为通过兼容测试并支付许可费用的设备提供基本速率(低速和全速)和高速的特殊商标许可。
Ø 1.5 Mbit/s (183 KByte/s) 的低速速率,主要用于人机接口设备(Human Interface Devices ,HID)例如键盘、鼠标、游戏杆。
Ø 12 Mbit/s (1.4 MByte/s)的全速速率, 在USB 2.0之前是曾经是最高速率,后起的更高速率的高速接口应该兼容全速速率。多个全速设备间可以按照先到先得法则划分带宽;使用多个等时设备时会超过带宽上限也并不罕见。所有的USB Hub支持全速速率。
Ø 480 Mbit/s (57 MByte/s)的高速速率。 并非所有的USB 2.0设备都是高速的。高速设备插入全速hub时应该与全速兼容。而高速hub具有所谓Transaction Translator(事务翻译器)功能,能够隔离全速、低速设备与高速之间数据流,但是不会影响供电和串联深度。
标准USB接口:
触点 功能(主机) 功能(设备)
1 VBUS (4.75-5.25 V) VBUS (4.4-5.25 V)
2 D- D-
3 D+ D+
4 接地 接地
USB信号使用分别标记为D+和D-的双绞线传输,它们各自使用半双工差分信号并协同工作,以抵消长导线的电磁干扰。
Mini USB接口:
触点 功能
1 VBUS (4.4–5.25 V)
2 D?
3 D+
4 ID
5 接地
mini USB除了第4针外,其他接口功能皆与标准USB相同。第4针成为ID,在mini-A上连接到第5针,在mini-B可以悬空亦可连接到第5针。
编码方式:
USB标准采用NRZI方式(翻转不归零制)对数据进行编码。翻转不归零制(non-return to zero,inverted),电平保持时传送逻辑1,电平翻转时传送逻辑0。
软件架构:
一个USB主机通过hub链可以连接多个设备。由于理论上一个物理设备可以承担多种功能,例如路由器同时也可以是一个SD卡读卡器,USB的术语中设备(device)指的是功能(functions)。集线器(hub)由于作用特殊,按照正式的观点并不认为是function。 直接连接到主机的hub是根(root)hub。
端点:
设备/功能(和集线器)与管道pipe (逻辑通道)联系在一起,管道把主机控制器和被称为端点endpoint的逻辑实体连接起来。 管道和比特流(例如UNIX的pipeline)有着相同的含义,而在USB词汇中术语端点经常和管道混用,甚至在正式文档中。
端点(和各自的管道)在每个方向上按照0-15编号,因此一个设备/功能最多有32个活动管道,16个进,16个出。 (出( OUT)指离开控制器,而入(IN)指进入主机控制器。) 两个方向的端点0总是留给总线管理,占用了32个端点中的2个。在管道中,数据使用不同长度的包传递,端点可以传递的包长度上限一般是<math>2^n</math>字节,所以USB包经常包含的数据量依次有8、16、32、64、128、256、512或者1024字节。
一个端点只能单向(进/出)传输数据,自然管道也是单向的。每个USB设备至少有两个端点/管道:它们分别是进出方向的,编号为0,用于控制总线上的设备。按照各自的传输类型,管道被分为4类:
Ø 控制传输——一般用于短的、简单的对设备的命令和状态反馈,例如用于总线控制的0号管道。
Ø 等时传输——按照有保障的速度(可能但不必然是尽快地)传输,可能有数据丢失,例如实时的音频、视频。
Ø 中断传输——用于必须保证尽快反应的设备(有限延迟),例如鼠标、键盘。
Ø 批量传输——使用余下的带宽大量地(但是没有对于延迟、连续性、带宽和速度的保证)传输数据,例如普通的文件传输。
一旦设备(功能)通过总线的hub附加到主机控制器,主机控制器就给它分配一个主机上唯一的7位地址。主机控制器通过投票分配流量,一般是通过轮询模式,因此没有明确向主机控制器请求之前,设备不能传输数据。
为了访问端点,必须获得一个分层的配置。连接到主机的设备有且仅有一个设备描述符(device descriptor),而设备描述符有若干配置描述符(configuration descriptors)。这些配置一般与状态相对应,例如活跃和节能模式。 。每个配置描述符有若干接口描述符(interface setting),用于描述设备的一定方面,所以可以被用于不同的用途:如一个相机可能拥有视频和音频两个接口。接口描述符有一个缺省接口设置(default interface setting)和可能多个替代接口设置(alternate interface settings),它们都拥有如上所述的端点描述符。一个端点能够在多个接口和替代接口设置之间复用。
HCD:
包含主机控制器和根HUB的硬件为程序员提供了由硬件实现定义的接口主机控制器设备 (HCD)。而实际上它在计算机是就是端口和内存映射。
1.0和1.1的标准有两个竞争的HCD实现。康柏的 开放主机控制器接口 (OHCI)和Intel的通用主机控制器接口 (UHCI) 。VIA威盛采纳了UHCI;其他主要的芯片组多使用OHCI。它们的主要区别是UHCI更加依赖软件驱动,因此对CPU要求更高,但是自身的硬件会更廉价。它们的并存导致操作系统开发和硬件厂商都必须在两个方案上开发和测试,从而导致费用上升。因此 USB-IF在USB 2.0的设计阶段坚持只能有一个实现规范,这就是扩展主机控制器接口 (EHCI)。因为EHCI只支持全速传输,所以EHCI控制器包括四个虚拟的全速或者慢速控制器。这里同样是 Intel和Via使用虚拟UHCI,其他一般使用OHCI控制器。
USB接头:
接头是由USB协会所指定,接头的设计一方面为了支持众多USB的基本需求,另一方面也避免以往许多类似串行接头所出现的问题。
电源:
USB 接头提供一组5伏特的电压,可作为相连接USB设备的电源。实际上,设备接收到的电源可能会低于5V,只略高于4V。USB规范要求在任何情形下,电压均不能超过5.25V;在最坏情形下(经由USB供电HUB所连接的LOW POWER设备)电压均不能低于4.375V,一般情形电压会接近5V。
这几年,随着大量支持USB的个人电脑的普及,USB逐步成为PC机的标准接口已经是大势所趋。在主机(host)端,最新推出的PC机几乎100%支持USB;而在外设(device)端,使用USB接口的设备也与日俱增,例如数码相机、扫描仪、游戏杆、磁带和软驱、图像设备、打印机、键盘、鼠标等等。
USB设备之所以会被大量应用,主要具有以下优点:
1、 可以热插拔,告别“并口和串口先关机,将电缆接上,再开机”的动作。
2、 系统总线供电,低功率设备无需外接电源,采用低功耗设备,并可提供5V/500mA电源。
3、 支持设备众多,支持多种设备类,例如鼠标,键盘,打印机等。
4、 扩展容易,可以连接多个设备,最多可扩127个。
5、 高速数据传输,USB1.1是12Mb/s,USB2.0高达480Mb/S。
6、 方便的设备互连,USB OTG支持点对点通信,例如数码相机和打印机直接互连,无需PC。
当然,USB设备也有其缺点:
1、 供电能力,如果外设的供电电流大于500mA时,设备必须外接电源。
2、 传输距离,USB总线的连线长度最大为5m,即便是用HUB来扩展,最远也不超过30米。
USB设备类规范:
Ø 语音设备类(Audio Device):如麦克风,音箱
Ø 通信设备类(Communications Device) :如Moden
Ø 芯片/智能卡接口设备类(Chip/Smart Card Interface Device):如USB Key,USB SmartCard
Ø 设备固件更新类(Device Fireware Upgrade):设备软件更新
Ø 影像设备(Image Device):如扫描仪,数码相机
Ø 人机交互设备(Human Interface Device):如鼠标,键盘,游戏杆
Ø IrDA设备类(IrDA Bridge Device):针对红外设备
Ø 存储设备类 (Mass Storage Device):如CD-ROM、移动硬盘
Ø 物理接口设备类 (Physical Interface Device)
Ø 电源设备类 (Power Device ):针对电源控制的设备
Ø 打印机设备类(Printer Class):针对打印机
Ø 监控设备类(Monitor Device):如显示器
现在市场上,各大公司针对不同USB协议版本开发了大量的USB设备,例CYPRESS,PHILIPS,ATMEL,STM,INTEL,ALI等。USB设备的种类非常繁多,主要可以根据以下两种方法划分:
1. USB协议:按照协议标准可分为USB1.0,USB1.1,USB2.0,主要区别是传输速度;另外就是补充协议USB OTG,其突出的特点是支持点对点通信,可分为USB HOST和USB DEVICE,尤其是USB HOST设备,作为USB主控端,可以读写各种USB设备,如U盘,鼠标。
2. USB设备功能:
功能 说明 英文 主要厂家
接口芯片 通用USB接口芯片 Usb interface chip CYPRESS,PHILIPS
USB 主控制器 USB HOST功能芯片 Usb host chip CYPRESS,PHILIPS,ALI
USB微控制器 带USB接口MCU Usb with mcu CYPRESS,CYGAL
闪盘控制器 U盘 Usb flash controller ICSI, ALI,ALCOR
并口桥 USB转并口芯片 Usb to parallel bridge
串口桥 USB转串口芯片 Usb to serial bridge
读卡器 智能卡设备类 Usb smart card ALI,ALCOR
音频控制器 音频设备类 Usb Audio Controller
HUB控制器 USB HUB USB HUB Controller ATMEL
打印机控制器 打印机设备类 USB Print Controller
HID控制器 人机接口设备类 USB Human Interface Device MOTOROLA ,CYPESS
数码相机控制器 影像设备类 USB Camera Controller
视频控制器 影像设备类 USBVedio Controller
调制解调器 USB通信设备 USB Modern
USB-USB桥 通过USB实现PC互连 USB to USB bridge
1994年诞生的USB(Universal Serial Bus,通用串行总线)接口技术,是由当时PC 界著名的Intel、Compaq、Digital、IBM、Microsoft、NEC、Northern Telecom等七家大公司联合制定的一种新的PC串行通信协议,旨在统一外部设备如打印机、外置Modem、扫描仪、鼠标等的接口,以便于安装使用,取代以往的串口、并口和PS/2接口。
计算机外部设备的丰富及消费类电子设备与计算机连接的实现,扩展了PC机的应用空间,同时外部设备的日益丰富也给用户造成了连接上的困难。连接的设备不同,接口方式也不同,需要的跳线、设置也不同,把所有这些问题都交给用户自己去琢磨、去解决,实在是勉为其难。为了给个人计算机添加外部设备,人们往往需要打开机箱、插卡、埋头于五颜六色的接线堆中,然后还要调整DIP开关、设置中断请求,重新启动机器,重新进行软件设置等等烦琐的过程。能不能设想把外部设备连接到主机上,也简单到用户只需拿起外部设备的接线,插入接口中就行了呢?USB接口的诞生就解决了这些问题。采用USB接口的设备无一例外地支持热拔插,使微软的“即插即用”构想真正得以实现。用户在开机状态时即可将设备连接到电脑主机上,免除了重新启动过程。
USB又称万能接口方式,把即插即用的功能从计算机内部移到了计算机外部,把大小不一、形状各异的各种接口作了统一的规定,能够用一种尺寸去适应所有的连接设备,最多可以连接127种不同类别的USB设备。
USB是一种支持即插即用的串行接口。也有人称之为“菊链(daisy-chaining)”,是因为在一条“线缆”上有链接127个设备的能力。但这不是一种新的总线标准,而是电脑系统接驳外围设备(如键盘、鼠标、打印机等)的输入/输出接口标准。过去计算机系统接驳外围设备的接口是无统一标准的, 如键盘的插口是圆的、连接打印机要用9针或25针的并行接口、鼠标则要用9针或25针的串行接口。 USB能把这些不同的接口统一起来,仅用一个4针插头作为标准插头。通过这个标准插头,采用菊花链形式可以把所有的外部设备连接起来,并且不会损失带宽。现在USB接口正在取代当前计算机上的串口和并口。
在1994年由USB技术标准推出后,曾经沉寂了两年。USB 标准正式颁布已经是1996年了。又过了两年,USB才迎来了它的春天——业界巨头们共同制定了USB1.1标准,使USB技术更加成熟可靠,真正发展起来。1996年USB端口就已经出现于计算机的主板上。但是,因为市场上的USB设备极少,并且缺乏支持USB技术的操作系统和相应的支持软件.用户无法利用这一技术。USB需要主机硬件、操作系统和外部设备三个方面的支持才能工作。Windows 98及以上版本的操作系统都内置了对USB接口的支持。目前主板一般都采用支持USB功能的控制芯片组,而且通常都设置了多个USB接口插槽。
由于USB1.1所规定的最大传输速率只有12Mbps,还是不能满足高速发展的信息传输的要求,所以Compaq、Hewlett Packard、Intel、Lucent、Microsoft、NEC和Philips这七家厂商又联合制定了USB2.0接口标准。USB2.0将设备之间的数据传输速度增加到了480Mbps,比USB1.1标准快40倍左右。速度的提高可以使用户得到更高效的外部设备,而且具有多种速度的外部设备都可以被连接到USB2.0的线路上。
USB2.0中定义了一个与USB1.1相兼容的架构。它可以用USB2.0的驱动程序驱动USB1.1设备,所有支持USB1.1的设备都可以直接在USB2.0的接口上使用而不必担心兼容性问题。而像USB线、插头等附件也都可以直接使用。USB2.0设备在小缓存的情况下依然能够高速率地传送数据。不过,如果外部设备并不支持如此高速度的话,系统将还原到12Mbps上来。
随着大量支持USB的个人电脑的普及,USB已经成为计算机的标准接口。现在几乎所有主板上都内置了多个USB接口,用户不需要另外购买适配器,无形中减少了一笔开支,这也是USB能够流行起来的一个重要原因。
现在支持USB2.0的扫描仪已经很普遍了,这就在扫描仪与个人电脑或其他设备之间架设了高达480Mbps的信息高速通道。
IEEE1394接口,是新一代的、数字视音频数据传输速度及高速、开放式外部串行总线技术,其数据传输速率目前一般为400Mbps。
1986 年美国Apple(苹果)电脑公司为了取代当时并不普及的SCSI接口,研究出了一种高速数据传输的接口技术,并在1987 年完成了名为Fire Wire(火线)的注册商标。后来日本Sony公司和美国Texas Instruments(德州仪器)公司,利用该项技术分别以i.Link和Lynx 名称各自进行了商标注册。实际上,这些名称都遵循着同一种技术规范,这就是1995年被IEEE批准的《IEEE1394 高性能串行总线标准》。
目前IEEE1394接口有6针和4针两种形式。六针形式的接口中有2针是供应物理层的电源,向所连设备提供1.5A、8.40V的电源。使用变压器或电容耦合隔离。四针形式的接口中4针全部用于传输数据的信号线,没有提供电源引脚,所以无法供电。目前市面上不仅有4针对4针、6针对6针的传输线缆,也有6针转4针的传输线缆。由于IEEE1394接口的传输速率很快,以致其连接线缆对屏蔽性能的要求非常高,这也是市面上见到的1394线缆不能太长的缘故。
作为一种实时快速的连续数据传输接口,其最大优点就是可以用来提供计算机部件之间以及和个人电子设备之间的大流量数据传输,这对于保证在进行数码影像记录和剪辑时候需要的无损耗的、高速度的数据流非常重要。
与USB技术不同,IEEEl394不要求计算机作为所有接入外部设备的控制器,不同的外部设备可以直接在彼此之间传递信息。在IEEE1394技术的帮助下,两台电脑可以共享使用同一个外部设备,这是USB或其他任何输入输出设备都无法实现的。
由于传输速率上的优势,1394卡被人们当作视频采集卡来使用。目前1394卡以及支持1394接口的音频、视频等设备在市场上已很常见。
由于IEEEl394目前还不是流行的计算机的标准配置,所以,普通用户要想使用它还需要在主板上插入IEEEl394扩展卡,比较麻烦。此外,一款IEEEl394接口的扫描仪要比同样的SCSI接口扫描仪贵许多。据说这主要是因为扫描仪厂商要向Apple公司支付一笔数额不菲的使用费。看来,除了尚未成为计算机的标准配置外,IEEEl394昂贵的价格也是阻碍其流行的重要原因。
由于IEEE 1394是由Apple公司的火线(Fire Ware)接口发展而来,并成为通用的国际标准,而计算机界的龙头老大Intel公司当然不愿意Apple公司指定的标准来抢占他的市场。
在成本方面,USB2. 0 较占优势。因为目前的主板芯片组中都内建了USB 主控制器,并且目前大多数外部设备都以USB 接口为标配。因此用户基本上不需要再投入其他费用,就可以享受USB 所带来的便利。而对于IEEE 1394 来说, IEEE 1394控制器的结构较复杂,要想将它集成进主板芯片组中,无论在技术上还是在成本上都有一定难度,所以目前市面上几乎很少有集成IEEE 1394 控制器的芯片组。要想实现IEEE 1394 功能,除了主板以集成附加芯片的形式提供外,我们一般只能通过插接IEEE 1394 扩展卡来实现,这样直接导致的结果就是使用成本上升了。
在易用性方面,IEEE1394则占优势。IEEE1394支持点对点的功能,今后随着技术的发展,会有越来越多的外部设备进入我们生活,为了减轻主机系统负担,我们不得不将一些数据交给外部设备处理;这时,就必须有一种总线能在两台外部设备间进行连接,这时USB就无计可施了,譬如扫描并打印一张照片,今天我们必须以PC为中心进行控制;这实在是不方便,而今后我们只需打开扫描仪与打印机就能实现,大大简化了工作。要实现这一点,我们就必须要有一种高速总线用于两者之间的互联;显而易见,必须以PC为中心的USB是无法担此重任的;而支持“点对点”协议的IEEE1394便能轻松胜任这个角色。此外,USB2.0只提供了5V的直流电压和0.5A的电流,而IEEE1394提供了8V~40V的电压及5A的电流,理论上最大可以提供200W(40×5A)的功率,远远高于USB2.0。
在传输速度方面,虽然USB2.0可以提供480Mbps,略高于IEEE1394A提供的400Mbps,那么是否意味着USB2.0更具优势呢?答案是否定的。在一般情况下,USB2.0实际传输速度只有USB1.1的2~13倍,远远达不到其理论值,而且如果几台设备共用一个USB通道,主控制芯片会对每台设备可以支配的带宽进行分配、控制,这时的传输速度就更低了。而IEEE1394A则很少存在这种情况。
总之,IEEE1394从性能、应用面来说都比USB2.0较具优势。但由于IEEE1394最先的定位是在多媒体应用方面,与USB的大众化路线不一样,所以IEEE1394的设备相对于USB设备会贵很多,加上IEEE1394还要收高额的专利费,造成了使用成本居高不下。这是IEEE1394的最大弱点。
目前,USB接口可谓春风得意,市场上每一款主板都带有多个USB接口;它吞并了并口,因为USB打印机层出不穷; 它吞并了串口,因为USB调制解调器也是新品辈出; 它吞并了PS/2接口,因为USB鼠标大行其道。此外,各种外部设备如数码相机、摄像头、扫描仪、MP3播放机、外置式大容量存储器等也无一例外都使用了USB接口,这些都表明了目前USB技术在该领域所处的统治地位。
但是,USB接口的传输速度以及它的以计算机为中心的连接系统,却为IEEE1394接口留下了发展空间。因此未来一段时间内,IEEE1394与USB2.0这二种接口标准仍将并存。
未来,对数据流量要求较高的设备将不再屈就于USB接口, 如数码摄像机、外置硬盘之类; 中间一档, USB 和IEEE1394 势必展开激烈争夺, 这些产品便是MP3 随身听、扫描仪等; 而低速率的设备将被USB全面垄断, 如PS/ 2 鼠标、键盘、打印机等。
文章评论(0条评论)
登录后参与讨论