Forum: FPGA, VHDL & Co. variable Taktfrequenz beim FPGA


von FPGA-lernender (Gast)


Lesenswert?

Hallo

Mein FPGA arbeitet intern mit 12MHz Taktfrequenz. Aus diesem Signal 
möchte ich eine variable Taktfrequenz von 1Hz bis 11.90 MHz erzeugen, 
die im Programmablauf geändert werden kann (z.B. zum Generieren einer 
Wobbelfunktion). Ein Phase Lock loop könnte hier vielleicht die Lösung 
sein.

Fallen Euch aber noch andere Lösungsmöglichkeiten ein - vielleicht mit 
etwas FpGA-Logik"?

Viele Dank

von Falk B. (falk)


Lesenswert?

@ FPGA-lernender (Gast)

>Mein FPGA arbeitet intern mit 12MHz Taktfrequenz. Aus diesem Signal
>möchte ich eine variable Taktfrequenz von 1Hz bis 11.90 MHz erzeugen,

Sind ja bescheidene Wünsche.

>die im Programmablauf geändert werden kann (z.B. zum Generieren einer
>Wobbelfunktion). Ein Phase Lock loop könnte hier vielleicht die Lösung
>sein.

Sowas könnte man mit einem DDS-IC machen, ausserhalb des FPGAs.

MfG
Falk

von Rick Dangerus (Gast)


Lesenswert?

Die PLL sollte sich auch mit FPGA-Logik abbilden lassen.

Rick

von Mike (Gast)


Lesenswert?

Falls du nur Recheck brauchst, dann können die Berechnungen auch im FPGA 
erledigt werden. Ein DDS-IC wäre hier etwas Overkill.

Du kannst ja mal nach:

numerically controlled oscillator (NCO)
direct digital synthesis (DDS)

googlen bzw. hier im Forum suchen.

von FPGA-lernender (Gast)


Lesenswert?

Hallo

Vielen Dank für eure Anregungen und die richtigen Stickworte!

Ich benötige eigentlich "nur" ein variables Rechtecksignal, welches im 
FPGA als Taktsignal zur Verfügung steht. Der FPGA berechnet die 
Sollfrequenz mit der ein Teil seiner codierten Logik getaktet werden 
soll. Falls man so eine Logik auch im FPGA abbilden kann, dann wäre das 
ja toll.

Freundliche Grüsse

FPGA-lerndender

von Falk B. (falk)


Lesenswert?

@ Rick Dangerus (Gast)

>Die PLL sollte sich auch mit FPGA-Logik abbilden lassen.

Jaja. Schon mal die Zahlen angeschaut?

"1Hz bis 11.90 MHz"

Für einen dermassen breitbandigen Oszillator muss man schon tief in 
die Trickkiste greifen. Und wenn nur 12 MHz Takt am FPGA anliegen kann 
man das komplett vergessen.

@ Mike (Gast)

>Falls du nur Recheck brauchst, dann können die Berechnungen auch im FPGA
>erledigt werden. Ein DDS-IC wäre hier etwas Overkill.

Ja? Na dann zeig mal wie du das machst.

MfG
Falk

von FPGA-lernender (Gast)


Lesenswert?

Hallo

Bzgl. Taktfrequenz wäre ich noch etwas flexibel. Diese könnte man noch 
vervierfachen.

Es dürfte auch ein externes Bauteil sein, welches dann z.B. über eine 
SPI-Schnittstelle vom FPGA die Sollfrequenz erhält und der Taktausgang 
wieder in den FPGA zurückgeführt wird.

Beste Grüsse

FPGA-Lernender

von Falk B. (falk)


Lesenswert?

@  FPGA-lernender (Gast)

>Bzgl. Taktfrequenz wäre ich noch etwas flexibel. Diese könnte man noch
>vervierfachen.

Du meinst 48 statt 12 MHz einspeisen? Hmm.
Sag aber mal lieber was das alles werden soll.

MFG
Falk

von FPGA-lernender (Gast)


Lesenswert?

Hallo Falk

Ja, ich meine eine Taktfrequenz von 48MHz oder vielleicht 50MHz, für 
meinen Fall nicht so wichtig.

>>Sag aber mal lieber was das alles werden soll.
:):):)
..ich weiss schon, das Ganz hört sich etwas dubios an:)

Etwas mehr Hintergrundinformation:
Die FPGA-Logik berechnet nach einer Rechenvorschrift eine 
Ausgangsfrequenz. An dieser Rechenvorschrift möchte ich nichts ändern 
(Black Box). Das Verhalten der Ausgangsfrequenz zur Taktfrequenz ist 
nicht linear.

Der FPGA erhält weiter über eine serielle Schnittselle vom PC einen 
Faktor. Dieser Faktor berücksichtigt die Inlinearität der 
Ausgangsfunktion und ermögliche die die Ausgangsfrequenz variabel 
einzustellen.

Ist dieser Ansatz für einen FPGA vielleicht ein vollkommener Blödsinn?

Freundliche Grüsse

FPGA-Lernender

von Bernd G. (Gast)


Lesenswert?

Lösungsvorschlag: Xilinx Spartan-3, Taktfrequenz 12 MHz kann bleiben,
mit dem DCM (Digital Clock Manager) werden daraus z.B, 100 MHz erzeugt,
DDS benutzen.
DCM und DDS sind im Core Generator.

Dann externen DAC z.B. DAC 902 von TI mit LC-Tiefpaß und Komparator 
anschließen. Damit lassen sich dann wirklich alle Frequenzen zwischen 
Null und ca 20 MHz erzeugen.

von Schaber (Gast)


Lesenswert?

Kann man das zur Laufzeit ändern ? Ich denke mal, nicht !

Wie genau muss diese Freuqnez denn laufen ?
Solange sie granular genug ist, um vom FPGA getaktet zu werden, also 
z.B. Ganzzahlige von 1/200 MHz, kann das FPGA intern damit arbeiten, in 
dem man es als enable nutzt. Als Clock dürfte kaum gehen, wegen der 
niedrigen Frequenz.

von Falk B. (falk)


Lesenswert?

@ FPGA-lernender (Gast)

>..ich weiss schon, das Ganz hört sich etwas dubios an:)

Indeed, my dear.

>Etwas mehr Hintergrundinformation:
>Die FPGA-Logik berechnet nach einer Rechenvorschrift eine
>Ausgangsfrequenz. An dieser Rechenvorschrift möchte ich nichts ändern
>(Black Box). Das Verhalten der Ausgangsfrequenz zur Taktfrequenz ist
>nicht linear.

>Der FPGA erhält weiter über eine serielle Schnittselle vom PC einen
>Faktor. Dieser Faktor berücksichtigt die Inlinearität der
>Ausgangsfunktion und ermögliche die die Ausgangsfrequenz variabel
>einzustellen.

Ja und? Das BERECHNEN einer Freqeunz ist das Eine, das ERZEUGEN das 
Andere. Ausserdm hast du immer noch nicht gesagt WAS es werden soll. Im 
Gesamtzusammenhang. Ein Funktionsgenerator?

>Ist dieser Ansatz für einen FPGA vielleicht ein vollkommener Blödsinn?

Ist so nicht zu sagen. Ich weiss überhaupt nicht was dass alles werden 
soll.

@ Bernd Gansert (berndg)

>Lösungsvorschlag: Xilinx Spartan-3, Taktfrequenz 12 MHz kann bleiben,
>mit dem DCM (Digital Clock Manager) werden daraus z.B, 100 MHz erzeugt,

Was schon mal nur bei Spartan3E oder so geht, die kommen AFAIK bis 5 MHz 
Eingangsfrequenz runter. Alle anderen brauchen mind. 24 MHz.

>Dann externen DAC z.B. DAC 902 von TI mit LC-Tiefpaß und Komparator
>anschließen. Damit lassen sich dann wirklich alle Frequenzen zwischen
>Null und ca 20 MHz erzeugen.

Das alles geht dreimal einfacher mit einem externen, komplett 
integrierten DDS-IC.

MfG
Falk

von Bernd G. (Gast)


Lesenswert?

@falk
stimmt, ab 5 MHz für -3A und -3E, ab 18 MHz für Spartan 3 (Angabe nach 
UG331 von Xilinx).

der externe DAC hat natürlich nur einen Sinn, wenn sowieso noch genug 
Platz im FPGA ist, dann wird es nämlich billiger - ca. 50% (spielt aber 
beim Einzelstück wohl eher keine Rolle).
Bei einer kompletten DDS hat man aber wegen der vielen Register bzw. des
seriellen Ladens zusätzlichen Steuerungsaufwand im FPGA (wenn man es 
denn nicht vom Controller aus machen kann).

Es ist immer vertrackt, eine Empfehlung zu geben, wenn man nicht alle 
Anforderungen kennt.

von Studierter Gast (Gast)


Lesenswert?

Cyclone laufen ab 11MHz. Das ist aber egal, weil man das FPGA sowieso so 
schnell, wie möglich laufen lassen muss, um fein genug zu werden.

von FPGA-lernender (Gast)


Lesenswert?

Hallo

Entschuldigt bitte die späte Rückmeldung. Ich war die letzten Tag nicht 
online erreichbar.

Ber FPGA berechnet nach vorgegeben Parameter und Rechenvorschrift in 
Echtzeit ein 32-Bit breites digitales Ausgangssignal zur Ansteuerung 
einer weiteren digitalen Logik. Ich meine, man kann das Gerät evtl. 
Bitmustergenerator nenen. Das Ausgangssignal ist nicht periodisch. Nun 
möchte ich diese Logik zur Simulation mit variabler Geschwindigkeit 
ablaufen lassen. Die Parameter für die Rechenvorschrift werden in ein 
FIFO gespeichert. Wollte man die Geschwindigkeit änderen, dann müsste 
man alle Parameter in Echtzeit neu berechnen, das möchte ich aus 
Performance-Gründen hier nicht machen.

Deshalb soll ein steuerbarer Oszillator "einfach" die Taktfrequenz für 
die Logik ändern:)

Beste Grüsse

FPGA-Lernender

von Falk B. (falk)


Lesenswert?

@ FPGA-lernender (Gast)

>möchte ich diese Logik zur Simulation mit variabler Geschwindigkeit
>ablaufen lassen. Die Parameter für die Rechenvorschrift werden in ein

Simulieren kannst du alles mögliche, einfach eine beliebige 
Taktfrequeunz in der Testbench erzeugen lassen.

Für einen realen Test braucht man logischerweise was anderes.

>Deshalb soll ein steuerbarer Oszillator "einfach" die Taktfrequenz für
>die Logik ändern:)

Ja, das klingt schon anders. Die Frage ist, wie fein willst du die 
Taktfreqeunz verändern? Reicht ein einfacher durch N Teiler, um 1, 1/2, 
1/3 etc. zu erzeugen? Oder muss es doch sehr fein aufgelöst werden? Dann 
nimm einen Freuenzgenerator oder DDS IC.

MfG
Falk

von FPGA-lernender (Gast)


Lesenswert?

Hallo Falk

Mit Simulation habe ich mich unklar ausgedrückt. Ich meinte Simulation 
am realen System:) - ja, ich weiss, etwas widersprüchlich. Ich werde nun 
mal mit einem einfachen Teiler, welcher im FPGA abgebildet wird testen.

Eurem Tipp mit dem DDS finde ich nachgegangen. Für alle die es 
interessiert: Auf meiner Suche habe ich den AD9951 gefunden.

Master fclk  400MHz
Resolution (Bits) 14bit
Tuning Word Width (bits) 32bit
Pwr Supply (V) 1.8 & 3.3 or 1.8
25 Mbit/Sec Serial I/O Port
Preis ca. 20 Euro

Weitere Infos zu DDS z.B. von Analog Devices findet man unter: 
http://www.analog.com/en/subCat/0,2879,770%255F843%255F0%255F%255F0%255F,00.html

Der Preis ergibt sich u.a. aus der relativ hohen Auflösung von 14bit. 
Wenn man den Chip z.B. mit 12MHz laufen lässt (sofern man das darf), 
dann erhält man eine Auflösung von etwa 732Hz. Feiner wird es dann s.w. 
schon wieder schwieriger.

Vielen Dank

FPGA-Lernender

von Falk B. (falk)


Lesenswert?

@ FPGA-lernender (Gast)

>Mit Simulation habe ich mich unklar ausgedrückt. Ich meinte Simulation
>am realen System:) - ja, ich weiss, etwas widersprüchlich.

Das heisst dann Test oder Emulation.

>Der Preis ergibt sich u.a. aus der relativ hohen Auflösung von 14bit.

Das ist die Amplitude, sprich die Auflösung des DAC.

>Wenn man den Chip z.B. mit 12MHz laufen lässt (sofern man das darf),

Kann man max. 6 MHz erzeugen. Und das mit einem IC, der 400 MHz schafft? 
Nicht  sinnvoll.

>dann erhält man eine Auflösung von etwa 732Hz. Feiner wird es dann s.w.

Kaum. Die Frequenzauflösung ist F_system / 2^32. Macht bei 12 MHz 
0,00279 Hz. Bei 400 MHz sind es immerhin noch 0,093 Hz.

MfG
Falk

von FPGA-lernender (Gast)


Lesenswert?

Hallo Falk

Uiii, vielen Dank für die Klarstellung, da habe ich wohl einiges 
verdreht! Das sieht ja viel besser aus! In diesem Fall, komme ich auch 
ohne dieses Flaggschiff aus. Es gibt "kleinere", günstige Teile, die 
Auflösung der Signalamplitude ist bei mir ja nich relvant.

Beste Grüsse und vielen Dank für die Belehrung!

FPGA-Lernender

von Rick Dangerus (Gast)


Lesenswert?

@ FPGA-lernender:
Andererseits scheint Dir ja auch fast ein ClockEnable auszureichen:

Taktung FPGA/CPLD

Rick

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
Noch kein Account? Hier anmelden.