Aurora implementation

Here is my potential setup:

  1. N-boxes connected to a single box (Spoke to Hub config) via RocketIO running the simplex Aurora protocol.
  2. Each channel would consist of four 3.125Gb/s lanes bonded together.
  3. Time aligned samples are transmitted from each spoke to the hub.

Here are my assumptions, please correct me if I am wrong:

  1. If my data throughput is less than the max throughput of the link, the Link Layer will add filler data during the idle periods that will be stripped out on the receiver side.
  2. The elastic buffers on the TX and RX sides are filled and emptied, respectively, by me.
  3. If data were continuously fed into the TX buffer, sent, and correctly received by the receiver, the RX buffer would not reach an empty state.
  4. I do not have to send alignment characters after the channel has been successfully initialized.

I am concerned that if a sample took a bit hit, which caused the sample to be incorrectly interpreted as a idle or alignment character, the sample would basically be thrown away. This results in my data no longer being time aligned, which is catastrophic for this application. Any insight or suggestions? Is it possible to pass all data transmitted, user data and special characters to the buffers?

Given the number of channels, the length of operation, and the rate of transmission, I believe bit errors will be unavoidable. Incorrect data is relatively acceptable, but skewed data is not.

Thanks!

Reply to
vt2001cpe
Loading thread data ...

vt2001cpe,

It seems that if bit errors are not acceptable, as you say, they WILL happen (if not because of marginal signal integrity of cables, connectors, etc. then because of EMI/RFI ... in efect "**it happens").

Given a bit error is unavoidable, then that says you MUST use FEC, or a acknowledge, negative acknowledge (resend) protocol.

A bit error causing the link to loose frame synchronization, or channel synchronization is something I have not studied for the Aurora core, and you could email a webcase to ask them exactly that question: "how does aurora deal with a bit error that may cause frame, or channel synchronization? Can that even happen?" It may not be possible to corrupt a 8b/10b character such that you lose sync...after all, it is a well tried and well thought out old coding (by IBM), and they were always good at making channel coding such that loss of link sync was not possible, even at very high error rates...

For example to lose frame sync on a T1 or E1 link requires an error rate of ~ 1E-3 or worse. Systems are usually designed such that single isolated bit errors don't cause problems (except to data).

Aust> Here is my potential setup:

Reply to
Austin Lesea

Yes.

Yes.

Well, of course, if you cannot empty the RX buffer faster than it is being filled, it will eventually overrun.

One other thing on the TX side; it will normally pause very briefly once every number of clocks to insert an alignment sequence (the number is in the Aurora docs somewhere).

You don't send alignment characters, unless you mean something specific to your data. The Aurora core handles the link alignment transparently for you.

Reply to
Duane Clark

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.