11-24-2020 01:24 AM
Hellow! I don't understand such a moment in the comma align mechanism: K28.5 character is
001111 1010. But let's suppose, that we receive two characters - D27.3 (110110 0011) and
D23.7 (111010 0001). Wouldn't it be erroneously treated as 0011 111010 (K28.5)??
11-24-2020 02:25 AM - edited 11-24-2020 02:28 AM
A general answer,
yes you are right,
But what happens is in "all" serial streams, there is some synchronisation that goes on before data can be decoded.
First, the clock has to be decoded, that is why the encoding algorithm ensures plenty of clock edges to synchronise a decoder to.
second, once good bits are received, then the packet boundary has to be found.
There are two general methods,
a) a unique code / sequence , that can not be miss interpreted,
b) statistics, a unique character is transmitted ever number of characters. and a state machine keeps looking for that character in the right place, till its locked to the sequence.
There are many different encoding formats,
5:3 is just the low level bit encoding,
look at the description for the protocol your using,
If your using aurora
This is all generally part of the layer approach,
and also generally the Tx and the Rx talk to each other over a back channel to speed up synchronisation, but its not essential, simplex links can work also.
11-25-2020 07:14 AM - edited 11-27-2020 08:19 AM
In addition, in transmitting the data it wouldn't be legal to send 2 negative disparity characters in a row. So your example wouldn't be legal. See the following for a good description of the process: http://www.cs.cornell.edu/courses/cs3410/2013sp/lab/lab2.html
"The disparity of any block of data is defined as the difference between the number of ones and zeros in the block. Positive and negative refer to an excess of 1s over 0s, or 0s over 1s, respectively. Each encoded symbol can be considered to be a block. The code scheme guarantees that an encoded symbol's disparity is always either 0 (five ones, five zeros), +2 (six ones four zeros) or -2 (four ones, six zeros). Some byte inputs will have more that one potential symbol encoding with the encoded symbol pattern determined by the "running disparity". Running disparity is simply a record of disparity for the aggregate of all the previously encoded symbols. For packet-based networking applications, the running disparity is typically tracked from the start of a packet. The code scheme stipulates that the running disparity at the end of any symbol (block) is always +1 or -1. To ensure that this rule is maintained, the Encoder will track the current running disparity. If the currently encoded byte produces a symbol of zero disparity, the running disparity remains unchanged. When the input byte produces a nonzero disparity symbol, the Encoder will encode the data such that the running disparity is swapped, for example, [+1 + (-2) = -1] or [-1 +(+2) = +1]. See Table 1 for an example of the two possible encoded symbol patterns for the D31.1 data symbol."