--- Quote Start ---
The frame line is just a 9th data line that sends a constant value. If you're doing x14 deserialization, then it sends "1111111_0000000." But it looks like x14 is not an option, so you're going to be doing x7. That means the frame data is going to alternate between "1111111" and "0000000".
If you're already using an 8-channel altlvds megafunction, just change it to 9 channel. You also need to select options so that you have the rx_channel_data_align port on the altlvds. This port allows you at ask the altlvds block to change where the word boundary is in the serial stream. Every pulse on this port moves the word boundary by one stream.
The final piece is to write a fairly simple state machine to pulse rx_channel_data_align until you see the frame channel coming out of the lvds block as "1111111" or "0000000." The bit-slip operation applies to all 9 data channels, so once you have the frame pattern aligned, your other 8 data lines are also word aligned.
In summary, the frame "clock" is really just another data line with a known word being transmitted. You can use that knowledge to find the correct word boundary in the serial stream on the other 8 data lines.
Also note, that the frame word also tells you whether you are getting the high 7-bits or low 7-bits. It is "1111111" for one and "0000000" for the other.
--- Quote End ---
Thanks for you answer, hendryjh. I'm confused about how to frame clock and bit clock, too.
I have some questions about how to set altlvds_rx ip, could you help me?
1, When I choose internal PLL for altlvds_rx, do I need to connect lvds bit clock from A/D converter to the FPGA?
2, In the following sentence, "The final piece is to write a fairly simple state machine to pulse rx_channel_data_align", what does "pulse" mean? Keep rx_channel_data_align to 1 all the time?
3, About "The frame line is just a 9th data line", I can't find it in the Altera's user guide, could you give me some references?
Thanks in advance.