Hallo zusammen
ich habe folgenden Ansatz für meinen LVDS-Receiver (Vivado 2016.2,
Kintex UltraScale):
1 | -----------------------------------------------------------------------------
|
2 | IBD : IBUFDS
|
3 | generic map (
|
4 | DQS_BIAS => "FALSE" -- (FALSE, TRUE)
|
5 | )
|
6 | port map (
|
7 | O => RxxD(i), -- 1-bit output: Buffer output
|
8 | I => LvdsRxxDI_p(i), -- 1-bit input: Diff_p buffer input (connect to top-level port)
|
9 | IB => LvdsRxxDI_n(i) -- 1-bit input: Diff_n buffer input (connect to top-level port)
|
10 | );
|
11 | -----------------------------------------------------------------------------
|
12 | ISD : ISERDESE3
|
13 | generic map (
|
14 | DATA_WIDTH => 8, -- Parallel data width (4,8)
|
15 | FIFO_ENABLE => "FALSE", -- Enables the use of the FIFO
|
16 | FIFO_SYNC_MODE => "FALSE", -- Enables the use of internal 2-stage synchronizers on the FIFO
|
17 | IS_CLK_B_INVERTED => '0', -- Optional inversion for CLK_B
|
18 | IS_CLK_INVERTED => '1', -- Optional inversion for CLK
|
19 | IS_RST_INVERTED => '0', -- Optional inversion for RST
|
20 | SIM_DEVICE => "ULTRASCALE" -- Set the device version (ULTRASCALE, ULTRASCALE_PLUS_ES1)
|
21 | )
|
22 | port map (
|
23 | FIFO_EMPTY => open, -- 1-bit output: FIFO empty flag
|
24 | Q => RxParxD((8*i)+7 downto (8*i)), -- 8-bit registered output
|
25 | CLK => RxxC, -- 1-bit input: High-speed clock
|
26 | CLK_B => RxxC, -- 1-bit input: Inversion of High-speed clock CLK
|
27 | CLKDIV => LocxC, -- 1-bit input: Divided Clock
|
28 | D => RxxD(i), -- 1-bit input: Serial Data Input
|
29 | FIFO_RD_CLK => '0', -- 1-bit input: FIFO read clock
|
30 | FIFO_RD_EN => '0', -- 1-bit input: Enables reading the FIFO when asserted
|
31 | RST => ResLvdsxR -- 1-bit input: Asynchronous Reset
|
32 | );
|
33 | ---------------------------------------------------------------------------
|
Das funktioniert soweit tipp-topp, solange mein PLL-Input-Clock zusammen
mit den Daten kommt. Nun habe ich ein anderes LVDS-Interface (ein
einzelnes Signal-Paar), welches ohne Clock daher kommt, dessen Quelle
aber von meinem FPGA geclockt wird. Das System läuft also synchron (wenn
alle PLL eingeschwungen sind) aber mit unbekannter Phase.
Zum Thema DPA (dynamic phase alignment) heisst es im Xilinx PG188 April
2016 lapidar: Unsupported feature (p.6).
Wie geht Ihr das an?
Gruss