Datasheet

2007-2016 Microchip Technology Inc. DS00002260A-page 15
LAN8700/LAN8700i
4.2.3 SCRAMBLING
Repeated data patterns (especially the IDLE code-group) can have power spectral densities with large narrow-band
peaks. Scrambling the data helps eliminate these peaks and spread the signal power more uniformly over the entire
channel bandwidth. This uniform spectral density is required by FCC regulations to prevent excessive EMI from being
radiated by the physical wiring.
The seed for the scrambler is generated from the PHY address, PHYAD[4:0], ensuring that in multiple-PHY applications,
such as repeaters or switches, each PHY will have its own scrambler sequence.
The scrambler also performs the Parallel In Serial Out conversion (PISO) of the data.
TABLE 4-1: 4B/5B CODE TABLE
Code Group SYM Receiver Interpretation Transmitter Interpretation
11110 0 0 0000 DATA 0 0000 DATA
01001 1 1 0001 1 0001
10100 2 2 0010 2 0010
10101 3 3 0011 3 0011
01010 4 4 0100 4 0100
01011 5 5 0101 5 0101
01110 6 6 0110 6 0110
01111 7 7 0111 7 0111
10010 8 8 1000 8 1000
10011 9 9 1001 9 1001
10110 A A 1010 A 1010
10111 B B 1011 B 1011
11010 C C 1100 C 1100
11011 D D 1101 D 1101
11100 E E 1110 E 1110
11101 F F 1111 F 1111
11111 I IDLE Sent after /T/R until TX_EN
11000 J First nibble of SSD, translated to “0101”
following IDLE, else RX_ER
Sent for rising TX_EN
10001 K Second nibble of SSD, translated to
“0101” following J, else RX_ER
Sent for rising TX_EN
01101 T First nibble of ESD, causes de-assertion
of CRS if followed by /R/, else assertion of
RX_ER
Sent for falling TX_EN
00111 R Second nibble of ESD, causes
deassertion of CRS if following /T/, else
assertion of RX_ER
Sent for falling TX_EN
00100 H Transmit Error Symbol Sent for rising TX_ER
00110 V INVALID, RX_ER if during RX_DV INVALID
11001 V INVALID, RX_ER if during RX_DV INVALID
00000 V INVALID, RX_ER if during RX_DV INVALID
00001 V INVALID, RX_ER if during RX_DV INVALID
00010 V INVALID, RX_ER if during RX_DV INVALID
00011 V INVALID, RX_ER if during RX_DV INVALID
00101 V INVALID, RX_ER if during RX_DV INVALID
01000 V INVALID, RX_ER if during RX_DV INVALID
01100 V INVALID, RX_ER if during RX_DV INVALID
10000 V INVALID, RX_ER if during RX_DV INVALID