Forum: FPGA, VHDL & Co. Alternative zum DCM


von Andreas B. (loopy83)


Lesenswert?

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

von Christian R. (supachris)


Lesenswert?

Das geht auch. Laut Xilinx User Guide aber die schlechtere Variante. Da 
wird der Inverter auf dem IOB benutzt. Je nach Chip ist das aber relativ 
egal. Beim Spartan 3 kommt man dann nich so hoch in der Frequenz, beim 
Virtex 4 stellt es offenbar kein Problem dar, die IDDR da haben sowieso 
nur einen CLK Eingang.

Normalerweise verbessert der DCM das Timing, versaut es nicht. Steht 
auch in den Datenblättern. Ohne DCM liegt die maximal erreichbare 
Frequenz etwas niedriger.

von Andreas B. (loopy83)


Lesenswert?

Naja wie gesagt, ich habe folgende Beobachtungen gemacht, für alle vier 
constraints:

DCM - system_synchron - Slack = -3.227 bis -3.223 ns
DCM - source_synchron - Slack = -1.427 bis -1.423 ns
ohne DCM mit Not(clk) - Slack = 0.11 bis 0.116 ns

Erst einmal gemessen am 3.125ns Offset_IN, obwohl mir dieser ja nicht 
wirklich ausreicht für ein 160MHz DDR Signal.
Ich könnte also minimal ein Offset_IN von ca. 3.01 ns erreichen.

MfG Andi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.