www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Alternative zum DCM


Autor: Andreas B. (loopy83)
Datum:

Bewertung
0 lesenswert
nicht 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
inst_DCM_DELAY: DCM_DELAY PORT MAP(
    CLKIN_N_IN => Tclk_N,
    CLKIN_P_IN => Tclk_P,
    RST_IN => dcm_reset,
    LOCKED_OUT => locked,
    CLKIN_IBUFGDS_OUT => open,
    CLK0_OUT => clock_in_0,
    CLK2X_OUT => open,
    CLK180_OUT => clock_in_180 
  );
mit diesem Code ersetzen ??
CLKIN_IBUFGDS_INST : IBUFGDS
      port map (I=>Tclk_P,
                IB=>Tclk_N,
                O=>Clock_in_0);
clock_in_180 <= not(clock_in_0);
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

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Andreas B. (loopy83)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.