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
@ 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
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.
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
@ 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
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
@ 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
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
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.
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.
@ 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
@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.
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
@ FPGA-lernender (Gast)
>möchte ich diese Logik zur Simulation mit variabler Geschwindigkeit>ablaufen lassen. Die Parameter für die Rechenvorschrift werden in einSimulieren 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
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
@ 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
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