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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ajo (Gast)


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

von Ajo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

kann mir hier wirklich niemand helfen --:)

Gruss,
Ajo

von Lothar M. (lkmiller) (Moderator) Benutzerseite


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 ;-)

von Ajo (Gast)


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!

von Christian R. (supachris)


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.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


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?

von Ajo (Gast)


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.

von Lothar M. (lkmiller) (Moderator) Benutzerseite


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?

von Ajo (Gast)


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

von Christian R. (supachris)


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.