[802.3ae] 64/66b Encoding phenomena
Group,
One of the Engineers here brought to my attention an interesting
problem with the 64/66b encoder. The issue is that the data stream out
of the PCS could be very different depending upon where it is aligned
with respect to the 64 bit boundary.
Take this case:
Example stream:
DDDD DDDT IIIE EIII SDDD DDDD
Where :
S - Start
D - Data
T - Terminate
I - Idle
E - Error
This data stream can be interpreted two different ways depending on
where the 64 bit boundary falls.
1. DDDD_DDDT, IIIE_EIII, SDDD_DDDD with block type fields of FF, 1E,
and 78 respectively. (T C S)
2. DDDT IIIE, EIII SDDD corresponding to block type fields of B4 and 33
respectively, these are T_BLOCK_TYPES of T and S.
If you look on page 379 of the 10GBASE-R spec(D5.0) under T_BLOCK_TYPE
and Value C: pt a) it says a C vector is one with 8 valid control
characters other than /O/, /S/, /T/ and /E/.
The way I read this is that if you have 7 idles and 1 error come in
together in one 64 bit block, then the entire block is an E block.
Resulting in 1. becoming /T/ /E/ /S/
while 2. would remain /S/ /T/
Additionally, if the entire block is /E/ then the /S/ that follows will
also be transformed into an /E/ as well according to the TX
statemachine, this seems rather unfair to corrupt the whole next packet
just be cause it did not fall on a certain boundary.
Please let me know what you think.
Justin
--
Justin Gaither Phone: 512-306-7292 x529
Xilinx, Communications Technology Div. Fax: 512-306-7293
500 N. Capital of TX Hwy.
Bldg 3 email: justin.gaither@xilinx.com
Austin, TX 78746 WWW: www.rocketchips.com
www.xilinx.com