Hallo zusammen, ich bin komplett neu auf dem Gebiet FPGA / VHDL, daher bitte ich falsches wording und unpräzise Ausdrucksweise zu entschuldigen. Danke für euer Nachsehen :-). Board: BASYS3 von Xilinx Problemstellung: - Ich möchte für eine Vibrationsuntersuchung einen hochauflösenden Frequenzsweep für eine DC Motoransteuerung erstellen. - Der Sweep soll um die 50kHz durchgeführt werden in einem Frequenzband von ca. 50 Hz. - Duty des Highsiders soll 50% betragen - (Totzeit zwischen HS und LS kommen später auch noch dazu, aktuell möchte ich aber erstmal die Sollfrequenz des Highsiders exakt treffen) Ist-Stand: - ich habe einen 32-Bit Zähler, 1 LSB = 0,00232.. Hz - aktuell liege ich mit der Frequenz von ca. 4Hz daneben - ich habe schon versucht größere Zähler zu verwenden, jedoch ohne Erfolg - Von der Genauigkeit muss ich jedes Hz sweepen Anbei ein Screenshot der aktuellen Simulation. Habt Ihr Ideen wie ich meine Genauigkeit hier erhöhen kann? Ich bin über jegliche Hilfe sehr dankbar! Viele Grüße Mike
Mike schrieb: > Habt Ihr Ideen wie ich meine Genauigkeit hier erhöhen kann? DDS, aber das erzeugt Jitter. DDS sinus gefiltert und mit Komparator dann wieder in PWM geht ohne (relevanten) Jitter.
Hallo Michael, erstmal danke für deine Antwort! Könntest du mir bitte etwas genauer skizzieren wie ich dies in VHDL umsetzten müsste? Ich wüsste jetzt leider nicht wie ich dies direkt so umsetzen kann. Danke dir!
Michael B. schrieb: > DDS, aber das erzeugt Jitter. nicht wenn man es richtig macht > DDS sinus gefiltert und mit Komparator dann wieder in PWM DDS gefiltert, dann PLL, dann wieder DDS
Hallo zusammen, könnt Ihr mir bitte ausführlicher beschreiben wie ich vorgehen muss, um das Ziel eines hochauflösenden PWM-Signals hier zu erreichen? Vielen Dank!!
Wie hoch aufgelöst soll das denn sein? Der FPGA löst auf mindestens 10ns genau auf. Wenn du die modulierst, kannst zu z.B. zwischen 50.000 und 49975 hin und herschalten. Um das zu automatisieren, wurde bereits DDS vorgeschlagen, also ein Zähler, der de facto ab und an springt und sich um die Zielfrequenz einpendelt. Da diese Umschaltung schnell passiert und der Motor träge ist, bekommst du die Zwischenstufe der PWM. http://www.96khz.org/oldpages/soundsynthesiswithdds.htm Um das zu verbessern, filtert man einen DDS-Sinus-Wert und nutzt diesen wieder als Takt für eine ganzzahlige DDS. Der Schritt vereinfacht sich durch Nutzung des MSB. Um die Filterung zu optimieren wird man den Wert verrauschen. http://www.96khz.org/oldpages/limitsofdds.htm
:
Bearbeitet durch User
Macht man sowas nicht mit 2 Quarzoszillatoren, einem Mischer und einem Teiler 2:1? Wenn sich die Nennfrequenzen um 100kHz unterscheiden kommen hinten 50kHz mit 50% raus. Den Sweep erzeugt man analog mit einer Kapazitätsdiode. Mouser hat Quarze mit 6.4 und 6.5 MHz oder 8.0, 8.1, 8.9, 9.0, 9.1 MHz.
Bauform B. schrieb: > Macht man sowas nicht mit 2 Quarzoszillatoren, einem Mischer und einem > Teiler 2:1? Wenn sich die Nennfrequenzen um 100kHz unterscheiden kommen > hinten 50kHz mit 50% raus. Den Sweep erzeugt man analog mit einer > Kapazitätsdiode. Mouser hat Quarze mit 6.4 und 6.5 MHz oder 8.0, 8.1, > 8.9, 9.0, 9.1 MHz. nein, so macht man es sicher nicht.
Weil es nicht funktioniert oder weil es sooo letztes Jahrtausend ist?
Jürgen S. schrieb: > Wie hoch aufgelöst soll das denn sein? Der FPGA löst auf mindestens 10ns > genau auf. Wenn du die modulierst, kannst zu z.B. zwischen 50.000 und > 49975 hin und herschalten. Ich müsste in dem Frequenzbereich wirklich jedes einzelne Hz im Sweep abtasten > Um das zu verbessern, filtert man einen DDS-Sinus-Wert und nutzt diesen > wieder als Takt für eine ganzzahlige DDS. Der Schritt vereinfacht sich > durch Nutzung des MSB. Um die Filterung zu optimieren wird man den Wert > verrauschen. Hier hast Du mich abgehängt. Wie komme ich von dem DDS-Sinus-Wert auf mein hochaufgelöstes PWM? In meinem VHDL code verwende ich anstatt des Sinus direkt eine Abfrage beim Phasenaccumulator: <50%: PWM signal high >50%: PWM signal low
Bauform B. schrieb: > Weil es nicht funktioniert oder weil es sooo letztes Jahrtausend ist? Theoretisch ginge es vielleicht sogar Praktisch: man macht es so nicht!
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.