UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Visitor ben.marshall
Visitor
248 Views
Registered: ‎02-26-2013

8b10b Transmission Error, Ultrascale to Zynq 7 Series

Hi All,

I'm having trouble trying to set up a unidirectional comms link between a Kintex Ultrascale (KCU105) and a Zynq 7030 (DAVe Bora) using Gigabit Transeivers configured for Aurora.

I have the two ends configured with mostly default Aurora settings, 16 bit user side data path, comma detection and alignment enabled. The only non-standard feature I have set is bypassing of both the Tx and Rx Elastic Buffers. I have the bypass set for reasons I can't go into here.

Both sides of the link come up, PLLs lock etc and the reset state machines complete. My ultrascale part has everything integrated into the core and I have folowed the example design to drive the user design. The Zynq part uses supporting components taken from the example design.

The user side of the design is a very simple state machine at each end which are capable of transmitting (or receiving on the other end) a handful of bytes packed as a message. A message is marked with a header word for which i use an 8b10b k symbol. In idle the transmit state machine sends a comma symbol (x00BC). On the receive side of the link I can see this comma symbol coming out of the userdata bus and the core reports that is has correctly aligned. 

When i transmit a message from the Tx side I see the corresponding k symbol 'header' come out on the Rx user data bus correctly, which i follwed by the correct number of bytes (packed into 16 bit words) as i expect and then the a return to the idle comma.

The data words received however are a mix of correct and uncorrect bytes. Certain bytes that are transmitted are received incorrectly. I.e. if i transmit x7774 I receive something like x776a. However not all bytes show this error, I can transmit x8888 or x0000 or x0040 correctly for example. This error is completely repeatable, i.e. If i retransmit the same message again and again I get the same error. If i repower or re-program the devices and transmit the same message, I get the same error.

The receive side of the link does not show any disparity or 'not in table' errors.

I have tried a looback test where I implment the Rx side of my link ont he Ultrscale device and phycially loop back the connections - in this test i receive all the data correctly every time.

Does anyone have any idea what's going on? Are there subtle differences between certain options in the 7 series and Ultrascale Transceivers wizards i am not aware of? Are there know differences in how the encoding/decoding works?

Thanks in advance, Ben.

0 Kudos