cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Visitor
Visitor
396 Views
Registered: ‎06-03-2015

comma align, how it occurs?

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)??

0 Kudos
Reply
3 Replies
Teacher
Teacher
376 Views
Registered: ‎07-09-2009

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
https://www.xilinx.com/support/documentation/ip_documentation/aurora_8b10b_protocol_spec_sp002.pdf


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.

 

<== If this was helpful, please feel free to give Kudos, and close if it answers your question ==>
Visitor
Visitor
359 Views
Registered: ‎06-03-2015

Thanks for your answer

0 Kudos
Reply
Moderator
Moderator
312 Views
Registered: ‎07-30-2007

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."




----------------------------------------------------------------------------
Don't forget to reply, kudo, and accept as solution
----------------------------------------------------------------------------