I'm debugging a design that uses four TLK1501s to receive four channels of custom 8B10B data at 660 Mbps/channel. The transmitter in the system is a custom IC which is capable of generating several different test patterns to transmit via the 8B10B channels. The format of the 8B10B data is a repeating pattern of this following line:
[3 IDLEs (K28.5/D5.6)] [~2000 data symbols with test pattern data] [3 IDLES]
The design works well with certain test patterns but we see receive errors with others. The errors occur just after the receive of the IDLE and the first couple of data symbols. At this point, the output data from the 1501 shows a shift and the normal test pattern data is replaced with (generally predictable) erroneous data. When the 1501 sees the trailing IDLE characters it appear to resync and the data then looks good again. There appears to be a random chance that the 1501 will produce the erroneous data on each repeat of the line, that is we may see several good lines, then one bad line, then several more good. When the 1501 outputs erroneous data, it does so for the entire line except for the first two characters after the idle, which are the same for every line output by the device.
The errors only occur with some test patterns, not all. For example, if I select a ramp test pattern the data is received reliably without error, but if I select certain test patterns that output constant data across the line, these show errors. Not all constant value test patterns fail, however: it appears to depend on the data being received.
I've attempted to trigger on erroneous data using a serial data analyzer, but have not seen erroneous data on the transmission line. Data eyes look reasonable and don't appear to change from oen pattern to another.
The transmitters are unused in this system: I have the TXD pins pulled down to ground via a 1K resistor, the TX_EN and TX_ER inputs are floating (pulled down internally per the datasheet), and the DOUTTXx pins are floating.
Does the apparent pattern dependence suggest a possible cause for this problem?