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.
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.
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 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
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
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.