2–106
Altera Corporation
Stratix II GX Device Handbook, Volume 2
October 2007
Receiver Modules
f
Refer to the
Specifications & Additional Information
chapter in volume 2 of
the
Stratix II GX Device Handbook
for information on the disparity
calculation.
If negative disparity is calculated for the last 10-bit code, a neutral or
positive disparity 10-bit code is expected. If the 8B/10B decoder does not
receive a neutral or positive disparity 10-bit code, the
rx_disperr
signal
goes high, indicating that the code received had a disparity error.
If a positive disparity is calculated, a neutral or negative disparity 10-bit
code is expected. The
rx_disperr
signal goes high if the code received
is not as expected.
1
When
rx_disperr
is high,
rx_errdetect
also goes high.
The detection of the disparity error might be delayed, depending on the
data that follows the actual disparity error. The 8B/10B control codes
terminate propagation of the disparity error. Any disparity errors
propagated stop at the control code, terminating that disparity error.
In GIGE and XAUI modes, the code that contains a disparity error is
replaced by a /K30.7/ code (8'hFE on
rx_dataout
+
rx_ctrldetect
).
In all other modes, the code with incorrect disparity should be treated as
an invalid code and ignored.
Figure 2–83
shows a case where the disparity is violated. A K28.5 code
has an 8-bit value of 8’hbc and a 10-bit value that depends on the
disparity calculation at the point of the generation of the K28.5 code. The
10-bit value is 10’b0011111010 (10’h17c) for RD- or 10’b1100000101
(10’h283) for RD+. If the running disparity at time
n
- 1 is negative, the
expected code at time
n
must be from the RD- column. A K28.5 does not
have a balanced 10-bit code (equal number of 1s and 0s), so the expected
RD code must toggle back and forth between RD- and RD+. At time
n
+ 3, the 8B/10B decoder received a RD+ K28.5 code (10'h283), which
makes the current running disparity negative. At time
n
+ 4, because the
current disparity is negative, a K28.5 from the RD- column is expected,
but a K28.5 code from the RD+ is received instead. This prompts
rx_disperr
to go high during time
n
+ 4 to indicate that this particular
K28.5 code had a disparity error. The current running disparity at the end
of time
n
+ 4 is negative because a K28.5 from the RD+ column was
received. Based on the current running disparity at the end of time
n
+ 5,
a positive disparity K28.5 code (from the RD-) column is expected at time
n
+ 5.