Quarze für einen FPGA

OP #5997732
Lesenswert?

Hi,
ich beschäftige mich seit kurzem mit FPGA Programmierung in Verilog. 
Nichts geschäftliches, nur als Hobby. ;)
Jetzt hab ich folgende Frage: Quartus II sagt mir das mein 
Code/Schaltung/wieauchimmer mit bis zu 203MHz laufen könnte. Auf meinem 
Bord (Max1000 von Trenz) ist aber "nur" ein 12MHz Quarz.
Was benutzt ihr so wenn ihr z.B. ein 160MHz oder 200MHz Clocksignal 
braucht? Lasst ihr euch eins von Daun oder ähnlichen Herstellern 
anfertigen? Bei R... und C... gibts in dem Bereich ja nichts mehr.
Von MEMS Oszillatoren hab ich bis jetzt nur schlechtes gehört.
Wie wird das z.B. bei einem Teensy umgesetzt? Da kann ich ja auswählen 
mit welcher Taktung er laufen soll.

ich hoffe ich denke da jetzt nicht zu naiv als Anfänger.

Gruß Tom
(Firma: Schweigstill IT) Persönliche Seite #5997737
Lesenswert?

FPGAs werden üblicherweise nicht direkt mit einem Quarz betrieben, 
sondern mit einem externen Oszillator. Im Falle des Trenz MAX1000 
handelt es sich um einen MEMS-Oszillator mit 12 MHz. Dessen 
Ausgangsfrequenz wird aber meistens nicht direkt als zentraler Takt für 
die FPGA-interne Logik verwendet, sondern es werden die FPGA-internen 
Takterzeugungsblöcke mit PLL usw. entsprechend parametrisiert.

Von Intel/Altera gibt es ein entsprechendes Handbuch, dass sich mit der 
Takterzeugung und -verteilung in einem MAX 10 befasst:

https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/max-10/ug_m10_clkpll.pdf

Und das offizielle Video dazu:

https://www.youtube.com/watch?v=fZBWphvuOrE

Ich kenne mich leider mit Quartus so gar nicht aus, aber darin wird mit 
Sicherheit auch ein entsprechender Wizard oder IP-Konfigurator enthalten 
sein, dem man die gewünschten Eingangs- und Ausgangsfrequenzen 
hinschmeißt und der daraus die entsprechende Taktkonfiguration erzeugt. 
Bei Xilinx Vivado hieße er "Clocking Wizard".

Natürlich kann man auch per VHDL/Verilog einen entsprechenden Taktblock 
instantiieren und mit den passenden Generics versorgen. Für den Einstieg 
ist es aber sicherlich sinnvoller, den Konfigurator zu verwenden und 
ggf. in die generierten HDL-Quellen zu schauen, um nachzuvollziehen, wie 
die Konfiguration in Generics usw. umgesetzt wurde.

Über die Takterzeugung und -verteilung in FPGAs und ASICs wurden schon 
unzählige Bücher, wissenschaftliche Papers und Applikationsschriften 
verfasst. Als FPGA-Entwickler muss man zwar nicht alles im Detail 
verstanden haben, aber zumindest schon einmal gelesen haben. Hierbei 
kommt es auch darauf an, den Zusammenhang zwischen Taktdomänen, 
Synchronisationsstufen, synchronen und asynchronen Resets, usw. zu 
verstehen. Microcontroller enthalten all diesen Kram natürlich auch, 
aber er ist vor dem Anwender (Firmwareentwickler) verborgen.
(Firma: Schweigstill IT) Persönliche Seite #5997749
Lesenswert?

blog schrieb:
> Genau, informiere dich darüber was PLL bedeutet dann wird's klar. Ein
> Selbstschwingender Oszillator (hat meist 4 Pins, +, -, enable, clock
> out) ist das Mittel der Wahl. 10 Mhz glatt zB

Da das FPGA-Board vorgegeben ist, sollte man schon den dort verwendeten 
Oszillator verwenden. Es ist wenig sinnvoll, ohne Not auf einen anderen 
Oszillator zu wechseln. Ich kenne das Board und das MAX 10 nicht im 
Detail, aber möglicherweise werden die dortigen 12 MHz an anderer Stelle 
für USB benötigt.

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