01-16-2019 12:09 PM
I am using Vivado 2015.3. I am a student trying to send 4b5b encoded data at 10Gbs. I am using a custom flag in the data to find alignment. The problem i am having is that the received data is most of the time being corrupted. Below is what i expect the output to look like, which i seldom get.
What i am seeing most often is a consistent but incorrect data like below.
Other times i get a kind of rolling corruption where the data is correct for a while then becomes corrupt and repeats like below.
I am not sure what i am doing wrong or if i missed a setting or variable somewhere. I attached a few of the files from the design. Any help would be greatly appreciated.
01-22-2019 08:03 AM
01-23-2019 02:32 PM
This is on a Kintex 7 board. I am using the example design for the transceiver, but with the data to transmit changed to 4b5b data. When I used the default data for the example design the transmitted and received data matched but not when i switched to 4b5b data. When i do rxslide pulses the data that is received is after each pulse is still incorrect like in the second image but different. So is there a reason that the transceiver should work for simple data but fail for encoded data?
01-25-2019 01:07 PM - edited 01-25-2019 01:19 PM
Looking at the second picture, the rx_data is repeating the same pattern, your bits_shifted is fixed at 11 (so it was able to find a matching flag at position 11), but the aligned rx_data is still not matching the tx_data pattern after the 11 bit shift. Can you check the raw bits in the alignment module and see why the shifted data did not match as expected? Check if you have inverted polarity somewhere.
I tried to look at the raw bits for your txdata and comparing with the received pattern (a4f08439ce...), I didn't see any bit segment matching the "flag".
In addition, try adding these additional status ports to your ILA:
RXBYTEISALIGNED, RXBYTEREALIGN, RXCHARISCOMMA, RXCHARISK, RXDISPERR, RXNOTINTABLE