www.mikrocontroller.net

Forum: FPGA, VHDL & Co. DCM verzögerung kompensieren


Autor: Ajo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

ich hab nach langem wieder mal mit VHDl zutun.
Die aufgabe lautet hier einen PCI104 bridge aufzubauen mit einem Takt 
von 33MHz. Ich darf hier max. 2ns von Device zu Device verzögerung 
haben.
Nun dachte ich mir, dass ich hier ein DCM einsetzen, der die Verzögerung 
etwas kompensieren kann.
Das Werkzeug(DCM-WIZARD) ist ganz schön aufwendig zu verstehen, sobald 
man mehr macht als nur zu teilen oder zu Multiplizieren.

Hat jemand hier damit etwas Erfahrungen?

Danke,
Ajo

Autor: Ajo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

kann mir hier wirklich niemand helfen --:)

Gruss,
Ajo

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Hat jemand hier damit etwas Erfahrungen?
Mit was denn?
Dem DCM?
Dem DCM-Wizzard?
Dem PCI-Bus?
Einer PCI-Bridge?

Lies mal die Appnotes zur DCM.
Der Clock-Manager macht letztlich nichts anderes, als einen Ausgang auf 
einen Eingang zu beziehen und deren Frequenz und Phase zueinander 
auszuregeln.

Ich nehme nicht den Wizzard, sondern verdrahte den DCM von Hand, dann 
weiß ich was ich habe ;-)

Autor: Ajo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Endlich jemand!
Danke Lothar.

ich hab mir das code durch DCM erzugt und in mein VHDL-code eingebunden.
am besten zeige ich dir das code und vielleicht fehlt dir was ein, was 
ich falsch gemacht habe:

-------------------------------begin 
DCM--------------------------------------------------

  GND_BIT <= '0';
   CLK0_OUT <= CLKFB_IN;
   CLKDV_BUFG_INST : BUFG
      port map (I=>CLKDV_BUF,
                O=>CLKDV_OUT);

   CLKFX_BUFG_INST : BUFG
      port map (I=>CLKFX_BUF,
                O=>CLKFX_OUT);

   CLK0_BUFG_INST : BUFG
      port map (I=>CLK0_BUF,
                O=>CLKFB_IN);

   DCM_SP_INST : DCM_SP
   generic map( CLK_FEEDBACK => "1X",
           CLKDV_DIVIDE => 10.00,--2.0,
           CLKFX_DIVIDE => 4,
           CLKFX_MULTIPLY => 2,
           CLKIN_DIVIDE_BY_2 => FALSE,
           CLKIN_PERIOD => 30.30,
           CLKOUT_PHASE_SHIFT => "NONE",
           DESKEW_ADJUST => "SOURCE_SYNCHRONOUS",
           DFS_FREQUENCY_MODE => "HIGH",
           DLL_FREQUENCY_MODE => "LOW", --"LOW",
           DUTY_CYCLE_CORRECTION => FALSE, -- TRUE,
           FACTORY_JF => x"C080",
           PHASE_SHIFT => 10,
            STARTUP_WAIT => FALSE)
      port map (CLKFB=>CLKFB_IN,
                CLKIN=>CLOCK,  --übergabe 33MHz an DCM CLK input
                DSSEN=>GND_BIT,
                PSCLK=>GND_BIT,
                PSEN=>GND_BIT,
                PSINCDEC=>GND_BIT,
                RST=>NotReset, --RST_IN,
                CLKDV=>CLKDV_BUF,
                --CLKFX=>CLKFX_BUF,
    CLKFX=>CLK0,
                CLKFX180=>open,
                CLK0=>CLK0_BUF,
                CLK2X=>open,
                CLK2X180=>open,
                CLK90=>open,
                CLK180=>open,
                CLK270=>open,
                LOCKED=>LOCKED_OUT,
                PSDONE=>open,
                STATUS=>open);
-------------------------------end 
DCM--------------------------------------------------------

Danke!

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie wäre es, wenn du den Abschnitt mit dem DCM im Datenblatt genau lesen 
würdest? Ich finde, da steht alles genauestens und recht verständlich 
erklärt drin. Ich arbeite immer mit dem Wizzard, hat immer gut geklappt.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> was ich falsch gemacht habe:
Das kommt darauf an, was du willst...
Was soll der jetzt machen, und was tut er nicht? Was tust du mit Teilern 
herum, wenn du "nur" eine Phasenverschiebung korrigieren willst?

Autor: Ajo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> was ich falsch gemacht habe:
Das kommt darauf an, was du willst...

>>ich würde gerne den Takt eingang CLK0, der nach aussen geht
möglichst ohne verzögerung(z.b. FPGA Pin zu Pin verzögerung) weiter 
geben.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich würde gerne den Takt eingang CLK0, der nach aussen geht ...
???
Du möchtest den PCI-Takt, der z.B. am Pin 1 herienkommt, auf einem 
anderen z.B. Pin 2 möglichst ohne Verzögerungen reproduzieren?

Autor: Ajo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du möchtest den PCI-Takt, der z.B. am Pin 1 herienkommt, auf einem
anderen z.B. Pin 2 möglichst ohne Verzögerungen reproduzieren?

Ganz genau Lothar.
Das will ich erreichen.
Kannst du mir da paar tips geben?
Grüsse

PS: Schöne Ostern

Autor: Christian R. (supachris)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, dazu müsstest du wissen, wieviel Gesamt-Durchlauf-Verzögerung du 
in dem FPGA hat, da kannst du den DCM so einstellen, dass er die gerade 
ausgleicht, also mit dem Phase Shift, evtl. im Kombination mit dem 270° 
Ausgang. Dann stellst du die Phase so ein, dass du insgesamt 360° 
erreichst.

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.