Hi there,
We have a design that uses 3 MGTs, which we use 16 bits wide. To ensure we have byte alignment properly, we set the ALIGN_COMMA_MSB to true on the GT_CUSTOM instances. When not sending any data, we simply send comma signals over the line.
However, it would appear that something is wrong. When we start the system, the MGTs seem to be aligned only to 8 bits, so 50% of the time the data is a byte out of phase. I can see this by dumping the output of the MGT over the serial line (as past as it copes) - for each MGT it's either consistantly the comma value or consistantly the comma value rotated 8 bits.
To make things more confusing, when we send packets (as delimited by a start and end packet symbol) on the MGTs that aren't aligned will ignore/lose/drop the first packet, and then subsequently by correctly byte aligned, and all subsequent packets get through perfectly.
Does anyone have any suggestions to what might be causing this? Losing the first packet really isn't tollerable, as in our system the lines will run through a switch which will mean that the MGTs will have to clock synchronise/detect alignment on a very regular basis, and losing the first packet will cause problems.
In case it's of relevance, the component decleration of the GT_CUSTOM part species the generic parameter ALIGN_COMMA_MSB as boolean, defaulting to true, and in the instantiation this is overridden with the value true as well.
Cheers,