02-14-2020 06:55 AM
If I have a serial transceiver where there is the possibility of not having data for a few periods, can I send comma symbols until data is available without disrupting communications?
02-14-2020 09:31 AM
02-14-2020 08:05 AM
It would be best for the CDR and equalization to send more variety and back to back comma's are not prefered. It has to process one comma before it gets the next. I think the ideal would be periodic commas and an 8B10B encoded PRBS data in between.
02-14-2020 08:11 AM
It depends on the protocol in question, but in general, yes they get added - but not necessarily freely as in as soon as you run out of data, e.g. transmit FIFO empty.
FibreChannel has the "IDLE ordered set", http://www.fc-av.info/putting_it_all_together.html
So not only do IDLEs got added between frames, they may get added/removed between nodes based on rate adaption logic since the TX & RX are at slightly different rates.
But you need to be careful, you probably don't want these in the middle of your frame, you may need to terminate the frame with other data (e.g. CRC, end of frame, etc.) before the K character, etc.
And the K characters likely only occur at a particular place in the alignment (e.g. most significant 8b of a 32b value, before the 8b/10b encoding).
It is usually addressed during the protocol design and not necessarily trivial with you consider alignment, running disparity, etc. So it is a bit more complicated often in practical than just adding a comma/K if that makes sense. I'd recommend looking at some of protocols like ANSI/VITA 17.1/Serial FPDP, JESD204b, etc.
02-14-2020 08:29 AM
Maybe some more details are needed. The protocol is not yet decided. This is a P2P connection, so no network layer and associated complications. Actually, what I'm asking for shouldn't be needed by design, it is just a precaution. I will have a transceiver sending a large (GB) file where data will be DMA'ed from RAM, but (probably, not decided yet) not in a single chunk, but in pieces of 64, 128 KB. I thought about sending commas in case the DMA cannot, for whatever reason, produce data. Probably it is better to have a large enough FIFO.
02-14-2020 08:39 AM
In my experience with various protocols (including custom), things can quickly get more complex than initially expected when you consider synchronization (e.g. K/comma), alignment, error detection, error handling (even with a 1E-15 error rate than can be more often than you might expect with 10+Gbps SERDES), rate adaption, etc.
Aurora is another protocol designed to be "simple" and handles much of this for you... You can find the protocol spec here:
It has been around a long time - since V2P/VIrtex-II Pro for 15+ years.
And you can find that IP used to build that might be interesting to you, e.g.
02-14-2020 09:31 AM