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
Hallo zusammen, kann mir hier wirklich niemand helfen --:) Gruss, Ajo
> 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 ;-)
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!
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.
> 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?
> 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.
> 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?
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.