Ich eröffne mal ein neuen Fred, damit die Überschrift auch zum Thema passt, abgeleitet aus meinem vorherigen Fred: Beitrag "BCD zu Binär Konverter 74er Reihe?" Die Frage ist folgende: Ich möchte mit einem MaxV CPLD von Altera ein einstellbaren Impulsgenerator bauen. 3 BCD Codierschalter habe ich, welche eine Frequenz vom 100Hz (entspricht die einer Stelle) bis 99900Hz einstellbar machen soll. (Impulsfrequenz ist 100x höher als eingestellter Zahlenwert) Das Funktioniert auch zwar, aber bei den höheren Frequenzen ist es, wegen der Rundungsfehler, ungenau. Ich nehme ein 20Mhz Oszillator. 100000 teile ich durch den eingestellten Wert. Mit dem Ergebnis lade ich ein Zähler und zähle rückwärts auf 0. Dann toggele ich ein FlipFlop, damit Impuls und Pausenzeit gleich lang werden, daher die 20Mhz Taktfrequenz beim Zähler und keine 10Mhz. Nun reicht, wie ich rechne, die Auflösung von 10Mhz nicht aus, um einen unterschied ersichtlich zu machen, z.B wenn ich 901,902,903,904 einstelle, ist das Ergebis jedesmal gleich und gibt immer 90900Hz aus. Wo liegt mein Denkfehler? Oder muss ich Faktor 10 höher gehen mit meiner Taktfrequenz (100MHz)? Klar dass man sowas einfacher mit ein Mikroprozessor machen kann, aber der CPLD ist gerade in der Schaltung enthalten und noch genug Platz im CPLD frei.
Google mal nach DDS (Direct Digital Synthesis).
Die DDS hat er ja faktisch schon, wenn er Takte teilt und Rechtecke absendet. Genauer geht es so eben nicht. Die Phasensprünge, die er jetzt hat, sind dieselben, die man mit einem Phasen-Akku erhalten würde, nur anders verteilt: http://www.96khz.org/oldpages/limitsofdds.htm Die so erzeugte Welle springt in der Frequenz statistisch um das eigentliche Ziel herum, trifft es aber nicht. Das merkt man sogar bei Audio-Synthese, da dort nur mit 192kHz abgetastet wird. Faktor 10 reicht da einfach nicht. Was man hier braucht, ist eine zweistufige DDS, die einen ersten Takt mit den typischen Phasensprüngen erzeugt, der dann nochmal (analogtechnisch) gefiltert wird und später auf die benötigte Frequenz hochmultipliziert wird: Beitrag "Re: Universell programmierbarer DDS-Funktionsgenerator" Die dort gepostete Schaltung sollte für die hiesige Anwendung dahingehend modifiziert werden, dass stärker gefiltert wird. Die 20MHz, 2MHz z.B. auf 5MHz herabsetzen, dafür den zweiten weglassen. Gfs auch den zweiten DAC weglassen.
:
Bearbeitet durch User
Der Takt von 20 MHz bestimmt halt das Raster in dem die Frequenzen erzeugt werden können. Um 90000 Hz (90.0 kHz) sind folgende Frequenzen möglich:
1 | 20MHz / 111 / 2 = 90.1 kHz |
2 | 20MHz / 110 / 2 = 90.9 kHz |
Willst du jetzt z.B 90.5 kHz einstellen, so wird die DDS abwechselnd eine Periode mit 90.1 und eine mit 90.9 kHz erzeugen, im Mittel ist das 90.5 kHz. Bei 90.3 werden 3 Perioden mit 90.1 und eine mit 90.9 erzeugt. Die DDS macht das automatisch indem der Fehler zur richtigen Frequenz aufsummiert wird, und wenn der Fehler zu gross wird eine um 1 Takt kürzere Periode erzeugt wird. Mit DDS wird die Frequenz, bei nicht ganzzahligem Teiler, also leicht um die exakte Frequenz herumeiern, aber im Mittel stimmt's ziemlich genau. Je nach Anwendung ist das akzeptable, oder auch nicht.
Nun ja, das stimmt, aber wenn ich an einem Gerät einen Takt digital, also mit numerischen Werten ausdrücklich vorgeben kann, hätte ich die Erwartungshaltung, dass der Generator die dann auch so bringt und nicht drum herum hampelt :-) Weil, dann brauche ich das auch nicht digital bauen, sondern nehme einen analogen Schwingkreis und stelle ihn ein. Dann braucht es nur ein Chip mit zwei Monoflops für a) die Wiederholrate und b) die Dauer des Impulses.
Ich frage mich nur wie die Hersteller von Frequenzgeneratoren das machen. Da kann man von mHz bis mehrere MHz alles einstellen auch z.B 30.000.001Hz genau.
Die verwenden hochgenaue Oszillatoren, z.T. mit Chips, die bis zu 500MHz exakt einstellen können. Diese werden mit PLLs betrieben, um den Takt zu stabiliseren.
Sowas wie den AD9833? Der kann bis 50MHz, liefert etwa 10MHz per DDS. Gibt es bei EBAY zu 3,95 die komplette Baugruppe mit DAC und Quarz.
Die oben erwähnten AD-Chips arbeiten auch nicht anders. Vektor und Tabelle mit Phasensprüngen der DDS. Die Glättung erfolgt teilweise intern, muss aber extern weiter betrieben werden. Will man das phasenrein haben muss man auch dann zweistufig arbeiten. Das hat auch ein FAE von AD schon eingesehen ;.)
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.