DCM verzögerung kompensieren

Gast #1224707
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
Moderator (Firma: Titel) Persönliche Seite #1224832
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 ;-)
Gast #1224838
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!
Gast #1227026
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren