mikrocontroller.net

Forum: FPGA, VHDL & Co. Geteilten Takt als Takt verwenden


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.
Autor: Martin O. (ossi-2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein FPGA-design erzeugt per PLL ein 100MHz Signal.
Dies möchte ich duch 4 teilen und als 25MHz Takt verwenden.
Ich möchte den 25MHz Takt auch im SDC File angeben, damit
ich das Timing verifizieren kann.

Wenn ich so programmiere:
// clk_100: 100MHz Takt von PLL erzeugt
// Counter1: Binärzähler

parameter cntrWidth = 40 ;
wire [ cntrWidth-1:0] cntr100 ;
Counter1 #( .WIDTH( cntrWidth ) ) CounterA ( clk_100, cntr100 ) ;

wire clk_25 ;
assign clk_25=cntr100[1] ;   // clk_25 ist 25MHz  Takt

always @(posedge clk_25) begin
  .....
  end

erhalte ich die Warnung:

Warning (332060): Node: Counter1:CounterA|cntr_o[1] was determined to be 
a clock but was found without an associated clock assignment.

Daraufhin habe ich dem SDC File hinzugefügt:

create_generated_clock -name myClk1 -period 40.0 [get_nets 
Counter1:CounterA|cntr_o[1]]

Das hat aber anscheinend keine Wirkung, die Warnung bleibt bestehen.
Auch die Zeile

create_clock -name clk_25 -period 40.0 [get_pins clk_25]

Führt nicht zum Ziel. Was mache ich falsch? Wie spezifiziere ich
einen Takt der intern erzeugt wird?

: Bearbeitet durch User
Autor: Tobias B. (Firma: www.elpra.de) (ttobsen) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du solltest die 25 MHz ebenfalls via PLL generieren. In der Regel 
brauchst du dann nicht mal die 25 MHz als Constraint zu spezifizieren, 
die meisten Tools (zumindest der großen Hersteller) leiten das direkt 
ab.

Ich weiß zwar nicht welchen FPGA du hier verwenden willst, jedoch kenne 
ich jetzt spontan keinen bei dem man einfach Logik auf ein Clock Netz 
routen darf.

Autor: Klakx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klar, das kann man beispielsweise bei xilinx. Trotzdem vermeide ich es. 
Bei 25 MHz geht das sicher, jedoch wie bereits gesagt, ist es aus der 
pll üblicher

Autor: Lukas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder du verwendest den 100 MHz Takt und erzeugt alle 4 Takte ein 
ClockEnable Signal

Autor: Markus F. (mfro)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Martin O. schrieb:
> create_generated_clock -name myClk1 -period 40.0 [get_nets
> Counter1:CounterA|cntr_o[1]]

probier' mal:
create_generated_clock -source clk_100 -divide_by 4 -master clk_100 Counter1:CounterA|cntr_o\[1\]

So funzt das (analog) bei mir. Dass "händisch" erzeugte Taktsignale 
nicht unbedingt toll sind, hat man dir ja schon erklärt.

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.