Hallo zusammen,
ich habe in meinem Projekt ein Timingproblem.
Wenn ich einen DCM einbinde, werden meine Timing constraints nicht
eingehalten. Siehe auch hier, aktuell letzter Beitrag von mir:
Beitrag "Timing constraints für LVDS"
Der DCM soll im Prinzip nichts anderes machen, als mein Eingangstakt aus
dem differentiellen zu wandeln und mir dazu deinen 180°
phasenverschobenen Takt generieren. Mit dem 0° und dem 180° Takt takte
ich dann ein IDDR2 Baustein.
Nun versaut mit der DCM mein Timing und ich suche nach Alternativen.
Könnte ich den DCM
1 | inst_DCM_DELAY: DCM_DELAY PORT MAP(
|
2 | CLKIN_N_IN => Tclk_N,
|
3 | CLKIN_P_IN => Tclk_P,
|
4 | RST_IN => dcm_reset,
|
5 | LOCKED_OUT => locked,
|
6 | CLKIN_IBUFGDS_OUT => open,
|
7 | CLK0_OUT => clock_in_0,
|
8 | CLK2X_OUT => open,
|
9 | CLK180_OUT => clock_in_180
|
10 | );
|
mit diesem Code ersetzen ??
1 | CLKIN_IBUFGDS_INST : IBUFGDS
|
2 | port map (I=>Tclk_P,
|
3 | IB=>Tclk_N,
|
4 | O=>Clock_in_0);
|
5 | clock_in_180 <= not(clock_in_0);
|
6 | locked <= '1';
|
Kann man das machen, oder ist das eher eine sehr unsaubere Designpraxis?
Die eingehenden Daten, die mit dem Takt eingelesen werden, kann ich in
meiner Quelle (ADC) relativ zum Takt verschieben, um händisch die
Laufzeitunterschiede auszugleichen.
Vielen Dank!
Andi