Here is my potential setup:
- N-boxes connected to a single box (Spoke to Hub config) via RocketIO running the simplex Aurora protocol.
- Each channel would consist of four 3.125Gb/s lanes bonded together.
- Time aligned samples are transmitted from each spoke to the hub.
Here are my assumptions, please correct me if I am wrong:
- 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.
- The elastic buffers on the TX and RX sides are filled and emptied, respectively, by me.
- 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.
- 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!