一般usb的专用芯片种类大致可分为:主机控制器(host controllers)、根集线器(hub solutions)、接口芯片(interface chips)以及具有usb接口的微控制器(mlcrocontr°llers with usb interface)。若要针对某种特殊的功能又可再细分:hid、 usbb→par-allel port芯片、usb→rs232芯片、声音解决方案(audio solutions)、影像解决方案(video/camera solutions)等 设各。种类确实繁多,功能也截然殊异。但其中,也有一些共同之处,即是它们之所以称为usb专用芯片的原因。 usb是连接pc与外围设各的接口。前一章介绍了usb设备列举的工作。但这些繁琐的工作若单纯地由一般的微控制器来加以实现,不仅无法达到预期的工作成效,也严重地拖累原先正在执行的固件程序代码。 当然,最重要的是,一般的微控制器并不具各有模拟差动电路,无法产生或接收d+与d一的信号q更别说要执行nrzi的编码与译码、 填塞与反填塞的工作。 因此,一定要有个硬件组件(单元)或电路能够帮用户解决这个问题。当然,这也就是usb微控制器与一般微控制器的差异之处。 如图1与2显示了在usb的系统中,所具备的最基本的硬件单元以及功能。图2是图1的逻辑电路的简化图。图1 usb芯片中的基本硬件单元sie图2 usb芯片中的基本硬件单元sie的简化图 usb接口连接主机与外围设各,而其中,串行接口引擎(serial interface engine,sie)则是usb最重要的功能单元。在串行 接口引擎中,详细地掌握了在usb总线上的接收与传送的个别位。这就如同uart对于异步串行通信的处理一样。在此,对sib做个归纳 与整理。也就是,sie执行了下列的各项工作: ●封包辨识,数据交换的持续产生; ●sop、e0p、reset、resume信号检测/产生; ●时钟/数据的分离; ●nrzi数据译码/编码以及位填塞; ●crc的产生与检查、令牌(token)封包(使用crc5)与数据(data)封包(使用crc16); ●封包id(pid)的产生以及检/译码· ●串行并行/并行串行的转换; ●usb地址与端点译码; ●端点层流程控制; ●作为usb数据缓冲器; ●维持data toggle位的状态; ●提供至后端区域设备控制器(function controller)或专用控制器(asic或fpga)的接口。 图1与图2中的设各控制器负责了usb数据/缓冲区的管理、起始地址/端点值,以及维护usb管线协议。此外,它还存储usb配置/控制 空间、主机时钟同步或采样率控制,以及连至实际设各所应用的接口。 该设各控制器能够使用缓冲器与sie的微控制器(如8051)或专用的asic或fpga连接。此外,介于设各控制器与sie之间的缓冲器, 用户可以使用标准的fifo、双端口的ram或连至单端口ram的dma。 端点流程控制能够通过sie送至设备控制器的信号来达成,而设备控制器可单独决定个别的端点响应。从图3中可以了解到usb收发器 用来接收与传送d+与d—的数据差动信号。图3 usb收发器用来接收与传送d+与d-差动数据信号图 有了usb芯片的基本概念后,以下就依此架构来延伸出各类型的usb芯片。当然,在此不再深人探讨有关usb芯片的细部功能,因为这 已超过本章或本书的范围了。 目前usb芯片大致分为5大类型: ●pc端或主机端的usb控制器; ●集线器芯片; ●特定的接口转芯片,如usb转rs232或usb转ata/atapi等芯片; ●单独运作的usb接口芯片; ●内含usb单元的微处理器(mpu)。 由于前两种是属于pc主机板与单片机制造商所开发的领域,较不适合用户来开发usb外围设备。因此,对于一般usb接口的开发者而 言,可以经过后面的两种途径加以切人与学习。以下,将分别介绍这两种usb芯片的基本特性以及应用。