b) USB interface
USB is a serial interface which connects up to 127 peripheral devices to a host computer, and transmits data at a high-
speed rate of 12Mbps. Hot plugging, in which connecting/disconnecting devices while the host or the printer is in use, is
supported. Each device is connected to a hub's port, where each port's detection/disconnection status is returned to the
The data transfer in USB is executed in terms of the transfer unit called a frame, a time frame of approximately 1ms, into
which the data is divided. Data is transferred by piling up these frames.
All packets begin with a SYNC (synchronizing) field to synchronize with the local clock, and are separated with an
EOP (End of Packet) field.
Frame lines begin with an SOF (Start of Frame) packet. An SOF is composed of a PID (Packet Identification Field) that
represents the type of the packet and the direction, frame number, and a CRC (Cyclic Redundancy Check) used for
Inside a frame is a packet line containing a token packet, data packet and a handshake packet, which indicates the status
of the flow control.
A token packet is composed of a PID, an address field which can specify up to 128 addresses, an ENDP (endpoint) field,
and a CRC.
Inside a data packet are a PID, data field, CRC, and EOP.
Only a PID is present inside the handshake packet.
Encoding/Decoding the Data
In USB, data transfer lines are ultimately encoded with NRZI (Non Return to Zero Invert) method. When the original
data bit is 0, sent data bits are inverted; when the original data bit is 1, the value is retained.
However, if the level of the transferred data remain unchanged for a certain period of time, the receiving side may not be
able to synchronize with the data sample position, which will result in data bits being out of phase. This is prevented by
a method called bit stuffing; when data bit 1 is repeated 6 times, one 0 bit is added to the original data before encoded
1Frame (approx. 1ms)
PID ADDR ENDP CRC
USB Data Transfer
CRC EOP SYNC PID EOP