Fibre Channel Interface Manual, Rev. D 13
5.0 Data encoding (FC-1)
Fibre Channel devices don’t transmit 8-bit bytes. If this were to occur, the receiving node would not understand
the transmitter’s intentions. To fix this situation, the data is encoded prior to transmission. Encoding allows the
creation of special transmission code characters with unique bit patterns for data management and word align-
ment so the receiving node will know what to do with the bytes. Encoding also improves the transmission char-
acteristics across a fibre and increases the likelihood of detecting errors.
5.1 Encoding and decoding
An unencoded data byte is represented in FC-1 as HGFEDCBA where H is the most significant bit. The hex to
FC-1 decimal value translation is accomplished as shown below:
Figure 4. Decimal value translation
A decimal value is assigned to each bit combination with the range of 0 to 31 for xx and 0 to 7 for y. This means
the range of valid data characters using the FC-1 naming convention is D00.0 through D31.7.
FC serial transmission delivers 10-bit characters which represent encoded data. Of the 1,024 characters possi-
ble with the 10-bit space, 256 8-bit byte data characters are mapped, along with 1 control character. This map-
ping process is called 8B/10B encoding. This encoding method involves selecting encoded 10-bit characters to
maintain a run-length-limited serial stream of bits. To prevent too many ones or zeros on the serial interface
from causing a DC electrical shift of the serial media, the encoder monitors the number of ones in the encoded
character and selects the option of the 10-bit encode character that will shift to balance the total number of
zeros and ones. This balancing is called running disparity.
A 10-bit character is actually made up of 6- and 4-bit sub-blocks. The 6-bit sub-block shifts out first followed by
the 4-bit sub-block. Running disparity is set positive at the end of the sub-block as follows:
• If the number of ones in a sub-block is greater that the number of zeros, the 6-bit sub-block is 000111b, or
the 4-bit sub-block is 0011b. Running disparity is set positive at the end of the sub-block.
• If the number of zeros in a sub-block is greater than the number of ones, the 6-bit sub-block is 111000b, or
the 4-bit sub-block is 1100b. Running disparity is set negative at the end of the sub-block.
Kxx.y
K28.5
y = the decimal value of the most significant 3 bits (HGF)
xx = the decimal value of the least significant 5 bits (EDCBA)
y xx
Example: BCh = 10111100 (binary) = 101 11100 (binary grouped)
5 28 (decimal values)
=
=