USB - universal serial bus
  USB 1 (1.1)  and USB  2

  Capable of 127 devices per root hub.

  Multiple root hubs in PCI slots acceptable.

  Requires support of OS.

  Bigest advantage of USB is that the protocol covers all aspects.

  Device classes provide generic grouping of devices.

http://www-128.ibm.com/developerworks/power/library/pa-spec7.html?ca=dgr-mw27USB 
  
USB - universal serial cables.
  Protocol and design
    Standard and Mini.

  4 wire cable
    Pair of transmit/receive data lines

    Power/Ground for low power devices (5 volt).
      .5 - 2.5 Watts.  10 mA to 500mA. (Active hub)
      > .5, use active hub. 

USB hubs
  Requires a controller card (primary hub).
  Tree topology.

  Hubs can be used to extend distance.
    Limit of 5 hubs daisy-chained. Max of 30M.

  PC capable of multiple independent hubs.
    Special cabling allows 2 hubs or pcs to interact.

  USB-on-the-Go designed to allow peripheral devices to connect to each
    other without a root hub. (2003?)

  Additionally, there are any number of interfaces.  USB to
    parallel (printer)        serial        SCSI
    Ethernet                  TV/Video      Keyboard/mouse.


USB Actions
  New device ids itself as @0

  Root Hub then assigns an available address to it.

  Each device can have up to 16 logical data pipes or channels (each direction)
    for assigned @.

    Think single printer, fax, scanner device.

  Root hub generates a clock frame once a second +/- 0.05 msec.

  Communication between hub and devices done by frames.


USB Frames
  Frame - communication session.
    Frames consist of 1 or more packets.
    
    Initiated by controller but bi-directional during session.


Frame contains one or more packets of one or more of four packet types

  Token - from root
    SOF - start of frame.
    IN - poll packet asks device to return certain data.
    OUT - announces that data will be sent to device.
    SETUP - used for configuration.

  Data - bidirectional, up to 64 bytes at a time.
    Sync field 8-bit.
    Packet type id 8-bit.
    Data being moved.
    CRC cyclic redundency check 16-byte.

  Three types of handshaking
    ACK - previous data packet correctly received.
    NAK - error (CRC error detected).
    STALL - busy (wait).

Four general types of frames. (Task based)

  Control - configure devices, give commands, check status.

  Isochronous - used with time sensitive devices.
    Deliver on time or discard.

  Bulk - large data transfers to/from non-time sensitive devices.

  Interrupt - USB does not support device initiated interrupts. Master hub
    poles devices for attention need (50 msec) in round robin fashion. 

    One of the reasons for the length limit even with hubs.

    "Interrupt" driven devices may be poled more often than other devices.
       Response to "interrupt" is a singe unidirectional data packet (64 bytes)
       and/or appropriate hand shaking, ACK,NAK,STALL,no response.