USB features an "A" connector and socket/receptacle. The PC's host controllers have the "A" receptacle that is flat and narrow. The external devices feature a "B" receptacle that is more square. A USB cable from host controller to external device then has an "A" connector on one end and a "B" connector on the other. This is done because the cable has four wires: 1. +5VDC power (red), 2. -Data (white), 3. +Data (green), and 4. Ground (black). A fifth wire is sometimes encountered and is attached to the shield surrounding the 4 inner wires. If you plugged a straight through cable from one PC to another you would be connecting +5VDC to Ground in both directions, short circuiting both PCs which would result in rising columns of smoke from both of them! This is why the ends of the cables have different connectors, making sure that you will not inadvertantly try such a thing.
USB devices may only pull 100mA of current through the USB cable from the controller source at start up. They may request increases in 100mA increments up to a maximum of 500mA. Devices attached to a USB hub may only request 400mA. This may cause some devices to malfunction when attached to hubs that work fine when plugged directly into the host controller's port.
Standard USB Connector ends of an external USB cable: "A" Male on the left and "B" Male on the right
|
USB Connector ends of an internal USB Motherboard Expansion Slot Adapter: Two 4-pin IDC with ninth key pin (yellow connector) on the left and "A" Female on the right (the other connectors are 4-pin FireWire -small and black- and 6-pin FireWire)
|
Standard USB Connector ends of an external USB cable: "A" Male on the left and 5-pin "mini-B" Male on the right
|
Standard USB Connector ends of an external USB cable: "A" Male on the right and 4-pin "mini-B" Male on the left
|
Standard USB Connector ends of a 5-in-1 cable adapter USB cable: Of particular interest is the "mini-A" in the center and the "A" Female on the right
|
Powered USB, based on the USB PlusPower speification addendum to the USB 2.0 Specification allows devices to use up to 6A at either 5VDC, 12VDC, or 24VDC. This is a lot of wattage. Most standard USB cables would not be recommended and the devices may not function due to a standard USB host controller's inability to recognize their high powered requests. This technology is seen most frequently in modern Point-Of-Sale hardware such as check out line laser bar code readers.
Host controller's themselves come in three forms: OHCI - Open Host Controller Interface developed jointly by Compaq, National Seminconductor and Microsoft. UHCI - Universal Host Controller Interface developed by Intel and EHCI - Enhanced Host Controller Interface which is the single backwards compatible USB 2.0 capable host controller. All USB devices are required to work with OHCI and UHCI devices. USB 2.0 capable devices are required to work with all three. All modern drivers can recognize and work with any of the three but older drivers may not work with certain host controllers.
The USB host controller usually claims IRQ 11 and very high I/O addresses above FF00h. But this is not etched in stone because it was invented after the release of PCI and is a true Plug-n-Play device made for the PCI bus. As such it can function using any resource and the drivers will support this behavior. USB support was added to Microsoft operating systems starting with Windows 95 OSR2, though Windows 98 has better USB support. But even Windows 98 has problems recognizing the subsequent attachment of some USB devices that have already been attached and had their device drivers loaded. Windows ME and Windows 2000 finally resolved these issues and work well with USB devices.
Signaling in USB uses a coding called NRZI - No Return to Zero Inverted. The physical signal integrity is maintained by sending the zeros and ones in opposite voltage polarity on two separate wires (-Data and +Data). The transceivers actually read the voltage differential between the two wires as signals. This allows for much lower voltages to be used and helps defeat signal attenuation over long distances. This method of signaling is refered to as balanced or voltage differential signaling, a technique that has been used by SCSI since its earliest architectures.
NRZI is a faster and more reliable method of transmitting serial data than most others and it allows the transmitting and receiving devices to synchronize their clock cycles as part of the transmission; a feature not shared by most other data transmission methods. In reality, the voltage changes in the transmitted data stream supply the clock cycle to the receiving device. For NRZI:
- A binary "0" will be represented by a voltage change during the clock cycle
- A binary "1" will not involve a voltage change during the clock cycle.
- If six binary 1's occur in succession, a voltage change bit will be "stuffed" into the transmission so that the receiving device can stay in synchronization with the transmitting device.
The byte, 01110001, will look like the following illustration assuming that the signal wire was at a high voltage state prior to the first "0":
The first "0" causes the voltage to fall (change), the next bit is a "1" which causes no change, the next bit is another "1" which causes no change, the fourth bit is another "1" - no change, the fifth bit is a "0" which causes a change (to high), the sixth bit is a "0" which causes a change (to low), the seventh bit is a "0" which causes a change (to high), and the eighth bit is a "1" which causes no change (stays high) as the transmission proceeds off the edge of the bits that we have monitored.
FireWire is a defined external serial interface technology based on the IEEE 1394 specification. This is a technology that has been borrowed from Apple Computers where it was first developed in an effort to make a fast, easily configured alternative to SCSI. Incidentally, FireWire has been redefined as a form of Serial SCSI and actually falls under the latest SCSI specifications. It might have been more welcome into the PC market if the PC market had not already spent so much money and effort on USB which incidentally was as much a reaction to FireWire as it was to the slow and unfriendly (read: non-Plug-n-Play) external peripheral ports that had been available.
FireWire is also a high speed serial technology, but that is where the similarity ends. FireWire supports up to 63 devices (uses 64 IDs, one is used to broadcast). The topology is a daisy chain indicating a bus in which the end devices autoterminate. There is no fixed host controller, so there can be none, one, or many. Individual devices may intiate communication at any time with any other device, unlike USB devices that must only communicate when told to so by the host controller of which one and only one must exist on each USB bus or nothing will work. FireWire currently supports speeds up to 200Mbps/400Mbps/800Mpbs with plans for up to 2Gbps and beyond.
FireWire recommends no more than 4.5Meters between devices. USB maximum cable lengths are 5M. Both technologies fully support Plug-n-Play and hot swapping of devices. USB appears to be the PC standard and is well supported logistically and monetarily by the PC's largest companies so PC users should stay with USB since it is well established and supported by the PC market and is built into and standard on most modern south bridges of the motherboard chipsets meaning that all USB devices will work on all modern PC's. This is not necessarily the case with FireWire.