mikrocontroller.net

Forum: FPGA, VHDL & Co. Xilinx DCM Modul einbinden


Autor: Stanko T. (newie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stanko T. (newie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Stanko T. (newie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hmmm,

habe immer noch keine brauchbaren Ergebnisse.

Autor: Jörg (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Frank Stucke (Firma: Keine) (franks)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau so wirds gemacht, bei mir sieht das dann so aus.




architecture Behavioral of main is
  signal reset:               STD_logic; 
  signal clock:               STD_logic;  --Global Clock
  signal CLK_FX:              STD_logic;  
  signal CLK180:              STD_logic; 
  signal CLK270:              STD_logic; 
  signal clk90:               STD_Logic;
  signal GND:                 STD_logic;
  signal unused1, unused2:    STD_Logic;
 


component DCM1 Port (
    CLKIN_IN:         in  STD_LOGIC;
    RST_IN:           in  STD_LOGIC;
    CLKFX_OUT:        out STD_LOGIC;
    CLK270_OUT:       out STD_LOgic;
    CLK90_OUT:        out STD_LOGIC;
    CLKIN_IBUFG_OUT:  out STD_LOGIC;
    CLK0_OUT:         out STD_LOGIC;
    LOCKED_OUT:       out STD_LOGIC);
end component;


begin




   DCM_CLK: DCM1 Port map(
    CLKIN_IN         => clk,
    RST_IN           => gnd,
    CLK0_OUT         => clock,
    CLK270_OUT       => clk270,
    CLK90_OUT        => clk90,
    CLKFX_OUT        => clk_FX, 
    CLKIN_IBUFG_OUT  => unused1,
    LOCKED_OUT       => unused2);   
end Behavioral;

Autor: Stanko T. (newie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was man kann, ist immer ganz einfach.Irgendwie komisch.

Autor: Rico Zanchetti (ricoz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stanko T. (newie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Stanko T. (newie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Rico Zanchetti (ricoz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

Autor: Rico Zanchetti (ricoz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jan M. (mueschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Seltsam, aber das klingt nach irgendeinem Problem beim Schreiben der 
Dateien... Sind Leerzeichen oder Umlaute im Pfad enthalten?

Autor: Rico Zanchetti (ricoz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rico Zanchetti (ricoz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

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.