Hallo zusammen, ich habe folgendes Problem: Ich möchte mit DCM aus 50 Mhz Eingangstakt einen Takt von 40.68 Mhz erzeugen. Vorgegangen bin ich nach ise 9.1 In-Depth Tutorial "Creating a DCM Module" ab Seite 39. Dort wird eine Stopuhr beschrieben. Soweit sogut. Nun habe ich eine Datei namens Frequenzteiler.xaw erzeugt. Mir ist die weitere Vorgehensweise aber nicht klar. Aus dem Tutorail werde ich nicht schlau. Wie muss die .xaw Datei ins Projekt eingebunden werden um das ganze lauffähig zu machen? Vorab besten Dank!
Die Dateiendung xaw habe ich noch nie gesehen. Ich kenne das Tutorial nicht, aber normalerweise nimmt man zum erzeugen einer dcm den core generator (Neue Datei -> IP Coregen). Der erstellt dann a) eine .xco, die man in das Projekt einbindet, b) eine .vho die die Komponenteninstanziierung beschreibt und c) jede Menge andere eher unwichtige Dateien. Wenn man spaeter weiss, wie eine DCM auszusehen hat, kann man sich auch den Umweg ueber coregen sparen und direkt die Komponente instanziieren.
Hallo Jan, ich benutze das Programm ISE 9.1 von Xilinx, aber die von dir beschriebenen files werden nicht erzeugt. Kannst du ein fertiges dcm.vhd file posten?
Ich habe es gerade mal ausprobiert, da kommt tatsaechlich ein xaw-file raus. Einfach in das Projekt einfuegen, die Datei markieren, dann auf "View HDL Instantiation Template". Da hast du dann die component und die Instanziierung vorgegeben, die du einfach nur noch in deinen Code kopieren musst.
Erzeug einfach mal eine DCMClock wie folgt: 1. Create New Source (Name: z.B. DCMClock) Typ IPCore,.. siehe z.B. ISE Tutorial für die Core Parameter 2. Es wird im Source-Fenster ein DCMClock.xaw angezeigt 3. auf DCMClock.xax clicken, dann im Process-Fenster "View HDL Instance.." anclicken 4. Der Instance- und der Definition-Code wird angezeigt. 5. Instance und Definition im eigenen Code einsetzen 6. Clock verwenden ... Der gesamte Vorgang wird aber glaube ich im ISE-Tutorial ausführlich beschrieben. Viel Glück Jörg
Genau so wirds gemacht, bei mir sieht das dann so aus.
1 | architecture Behavioral of main is |
2 | signal reset: STD_logic; |
3 | signal clock: STD_logic; --Global Clock |
4 | signal CLK_FX: STD_logic; |
5 | signal CLK180: STD_logic; |
6 | signal CLK270: STD_logic; |
7 | signal clk90: STD_Logic; |
8 | signal GND: STD_logic; |
9 | signal unused1, unused2: STD_Logic; |
10 | |
11 | |
12 | |
13 | component DCM1 Port ( |
14 | CLKIN_IN: in STD_LOGIC; |
15 | RST_IN: in STD_LOGIC; |
16 | CLKFX_OUT: out STD_LOGIC; |
17 | CLK270_OUT: out STD_LOgic; |
18 | CLK90_OUT: out STD_LOGIC; |
19 | CLKIN_IBUFG_OUT: out STD_LOGIC; |
20 | CLK0_OUT: out STD_LOGIC; |
21 | LOCKED_OUT: out STD_LOGIC); |
22 | end component; |
23 | |
24 | |
25 | begin
|
26 | |
27 | |
28 | |
29 | |
30 | DCM_CLK: DCM1 Port map( |
31 | CLKIN_IN => clk, |
32 | RST_IN => gnd, |
33 | CLK0_OUT => clock, |
34 | CLK270_OUT => clk270, |
35 | CLK90_OUT => clk90, |
36 | CLKFX_OUT => clk_FX, |
37 | CLKIN_IBUFG_OUT => unused1, |
38 | LOCKED_OUT => unused2); |
39 | end Behavioral; |
Frank & Jörg, danke für euere Antwort! Habe es vor zwei Tagen hinbekommen :) Wenn man den Dreh raus hat ist es einfach zu händeln. Bin halt ein newie auf dem Gebiet! mfg
Ich habe auch noch eine Frage bezüglich DCM-Modul. Das Erzeugen des .xaw Files habe ich hinbekommen, nun habe ich allerdings das Problem, dass ich beim klicken auf "View HDL Instance.." die Fehlermeldung bekomme, dass kein Code vorhanden ist. ERROR:HDLCompilers:175 - Source file dcm1.v does not exist Kann mir da jemand weiterhelfen? Besten Dank Gruss ricoz
Also ich erzeuge den DCM-VHDL-Code indem ich ein neues Projekt für den Spartan3AN (hat 8 interne DCM) erstelle und dann in dieses eine "New Source..." einfüge. Dann auf IP(Coregen & Architecture Wizard) und FPGA Feautres --> Clocking --> Spartan 3E / 3A --> Single DCM und dann unter Eingang z.B: 50 MHz und unter Ausgang z.B: 200 MHz eingebe. Jetzt sollte ein VHDL Code entstehen. Welchen Baustein verwendest du? Verfügt dieser über einen DCM? mfg
Kleiner Nachtrag. Bei CLKFX (in dem General Setup oberhalb von CLKFX180) sollte das Häckchen gesetzt werden. Dies ist der Ausgang an welchem die gewünschte Frequenz zur verfügung steht. mfg
Genau so mache ich es auch, doch ich habe keinen VHDL oder Verilog File. Muss ich irgendetwas noch zusätzlich einstellen damit so ein File erzeugt wird? mfg ricoz
Markier mal das xaw-File in deinem Projekt und waehle dann Regenerate Core aus. Falls da ein Fehler auftritt, sollte er eigentlich unten in der Konsole stehen...
Hallo Dies kann ich nicht anwählen. Ich habe noch ein .xco-File und dort geht alles einwandfrei. Ich habe jetzt bei einem anderen PC das gleiche ausprobiert und dort ist alles perfekt gegangen. Das Verilog-File habe ich auf den anderen Rechner generiert und hierher kopiert, so funktioniert wieder alles. Wenn ich allerdings wieder alles lösche kann ich den Core immer noch nicht generieren. Wenn ihr eine Lösung habt wäre ich dennoch dankbar, es ist aber nicht so dringend. Wenn ich rauskriege woran es liegt, werde ich es hier posten. Gruss ricoz
Seltsam, aber das klingt nach irgendeinem Problem beim Schreiben der Dateien... Sind Leerzeichen oder Umlaute im Pfad enthalten?
Ja genau, dort liegt der hacken. Nein, ich habe keine umlaute im Pfad nur "_" und diese sollten eigentlich problemlos sein. Das Symbol sieht auch komisch aus. Er sieht nicht gleich aus wie ein anderer Core-File.
Jetzt funktioniertes wieder. Ich habe die Software neu installiert und das ganze läuft wieder. Eine sehr komische Geschichte!!! Danke für eure freundliche und prompte Hilfe.
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.