Using the DPA block without a train pattern may cause problems in some cases, I think.
- During DPA calibration time (when rx_dpll_hold[] is deasserted), the input stream must be assured to have edges for bit phase alignment.
- Depending on the initial phase, DPA calibration may shift the word alignment by one bit, possibly different for multiple channels.
So I think, the receiver should be operated either with DPA enabled and word realignment (CDA) utilizing a train pattern or with fixed phase. If other users see a meaningful application for DPA without CDA and a train pattern, I'm interested to learn about.
An application with fixed clock to data skew (e.g. onboard wiring) should be basically able to work without DPA and CDA. If you are already using an external PLL, you should be able to adjust slow and fast clock phases empirically to achieve correct alignment.
Shifting both clocks by the same amount is identical to modifying INCLOCK_DATA_ALIGNMENT of an LVDS internal PLL. The available increment is 1/8 of bit duration. You can evaluate at which phase the alignment is advancing one bit and then shift the clocks 180° to center alignment. Then the slow clock can be shifted by full bit clock intervalls to achieve the correct word alignment. A negative shift is also possible.
A special point is, that CDA must not allowed to shift across a word boundary in multiple channel transmission. This may happen, if the initial phase (after CDA reset) is near to correct alignment and a negative shift would be needed for some channels.