www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Frequenzerzeugung


Autor: Mani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo an alle,

ich hoffe ihr könnt mir einen Schubs in die richtige Richtung geben.

Ich möchte über einen BCD-Schalter, inem Codeumsetzer (momentan 
ATMEGA16) und einen Frequenzteiler Frequenzen von 50kHz - 20MHz 
einstellen können. Pegel ist eigentlich "egal" (5 Volt wäre gut).

Seither habe ich einen Referenztakt (20MHz Quarzoszillator) mit dem 
74HC40103 (8Bit Binary Down Counter) auf den gewünschten Ausgangstakt 
heruntergeteilt. Nun sollen noch mehr Frequenzen und auch die 20MHz 
direkt als Ausgangstakt realisiert werden. Leider kann man bei diesem 
Baustein aber den Takt nicht 1:1 durchleiten.
-->Also müsste ich einen höheren Ref-Takt nehmen (max_f=40 MHz) und den 
dann bis auf 50kHz runterteilen. Das geht aber mit den 8 Bit des Teilers 
nicht. Eine Kaskadierung kommt durch das min. Teilerverhältnis von 1/2 
auch nicht in Frage.

Also beschäftige ich mich seit geraumer Zeit mit anderen 
Teilern(74HC4059, 74F525...).
Da ich mit Ihnen nicht den kompletten Frequenzbereich abdecken kann, 
sind diese leider alle ungeeignet oder mittlerweile nicht mehr 
verfügbar.

Das Problem an der ganzen Sache ist, dass der erzeugte Ausgangstakt 
möglichst kleine Jitter werte haben sollte, was ich seither ziemlich gut 
realisiern konnte.

Eine andere Möglichkeit wäre ein CPLD mit einstellbarem Teilerverhälnis.
Das ganze wäre da ja mit ca. 9-10 T-FF´s und ein paar normalen 
Logikbausteinen realisierbar.
Da bekomme ich dann aber evtl. auch wieder Probleme mit dem 
50%Tastverhältnis.

Doch wie sieht es da mit dem Jitter/Phasenrauschen aus?
Ich hab ja da dann eine gewisse Taktabhängigkeit vom CPLD?
Oder sehe ich das falsch?

Hat jemand schon mal was ähnliches gemacht?
Gruß und danke

Mani

Autor: Michael Lenz (hochbett)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hast Du mal über einen DDS-Chip nachgedacht?

Gruß,
  Michael

Autor: Mani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>hast Du mal über einen DDS-Chip nachgedacht?

Ja, hab ich erlich gesagt auch schon. Aber ich glaube nicht dass ich da 
so Jitterarm bin wie mit einer Logikschaltung!?
(Da hab ich wenigstens kontinuirliche Signallaufzeiten)

Aber da lass ich mich gerne belehren :-D
(hab auch erlich gesagt noch nichts mit DDS gemacht).

Danke für die Antwort.

Gruß Mani

Autor: Wolfgang M. (womai)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein guter DDS_Chip mit sauberem Eingangstakt und korrekt dimensioniertem 
Tiefpassfilter am Ausgang kann extrem niedrigen Jitter haben. Uebrigens 
im Gegensatz zu der von Dir verwendeten 74HCxx-CMOS-Logik - die hat um 
viele Klassen mehr Jitter (wenn Du Logikbausteine mit sehr niedrigen 
Jitter willst, musst Du differentielle Gatter verwenden - Stichwort 
ECL/PECL).

Ich baue gerade ein Geraet, das den AD9912 von Analog Devices verwendet. 
Da messe ich ueber den Bereich von 40 - 330 MHz einen Jitter von unter 
1.5ps RMS (bis auf einige Spurs sogar unter 1ps RMS); das Problem ist da 
eher schon, so niedrige Jitterwerte ueberhaupt zu messen (kann man aber 
mit einer Schaltung um wenige Euro, wenn man weiss, wie :-)

Das Taksignal kommt von einem 100 MHz-Quarzoszillator. Du kannst ein 
Eval-Board fuer diesen Chip fuer US$250 von Analog bestellen - das ist 
billiger, als Du so ein Einzelstueck selber bauen kannst, und Du 
brauchst keinen 0.5mm-Pitch-Chip selber aufloeten. Der Chip hat ausser 
einem differentiellen Ausgang auch einen CMOS-Level-Ausgang (2.5 - 3.3V 
je nach Spannungsversorgung), der gegenueber dem differentiellen Ausgang 
um den Faktor 1 - ~128000 heruntergeteilt werden kann; 50 kHz Ausgang 
mit nHz (ja, nano-Hertz)-Aufloesung sind damit kein Problem. Analog hat 
auch eine ganze Serie anderer DDS-Chips im Angebot, einer passt sicher 
fuer Deine Ansprueche.

Die Eval-Boards fuer diese Chips kann man sowohl ueber USB vom PC als 
auch ueber SPI von einem Mikrocontroller ansteuern.

Wolfgang

Autor: Mani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Wolfgang,

danke für deine ausführliche Schilderung.
Das dass so genau (immer relativ) geht mit dem DDS wusste ich nicht.

250 Takken ist mir dann doch ein bischen zu viel...dachte da eher an 
eine Lösung für 2-10 Euro. Wie gesagt hab ich auch noch garnichts mit 
nem DDS gemacht (ich weis...es ist immer das erste mal).

Wie aufwendig ist denn sowas im vergleich zu einem CPLD?

Gruß Mani

Autor: Mani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Äh...ich schieß mal gleich noch ne Frage hinterher:

>und korrekt dimensioniertem Tiefpassfilter am Ausgang

Auf was für einen Frequenzbereich soll man den denn auslegen wenn man 
z.B wie bei mir einen Bereich von 50kHz - 20MHz hat?
Einfach in die Mitte und gut?

Danke.

Autor: Helmut Lenzen (helmi1)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Auf was für einen Frequenzbereich soll man den denn auslegen wenn man
>z.B wie bei mir einen Bereich von 50kHz - 20MHz hat?
>Einfach in die Mitte und gut?

Nix in der Mitte. 3dB Grenzfrequenz bei etwas ueber 20MHz je nachdem wie 
steil dein Filter ist.

Gruss Helmi

Autor: Mani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Klingt irgendwie logisch ...
War grad noch bei nem Rechtecksignal und dachte, dass ja dann die ganzen 
Oberwellen weg sind :-D

Aber kann mir noch jemand sagen wie aufwendig dass sowas mit nem DDS 
ist.
Möchte ja eigentlich nur einen Referenztakt runterteilen, alla 
Frequenzteiler.

Mit nem CPLD haben dass hier ja schon einige Leute gemacht.
Mein Problem ist es, dass ich nicht ne große Ahnung in der Auswahl der 
Komponente habe (ob jetzt Lattice, Altera, Atmel...?).
Wenn ich also jetzt einen Referenztakt von z.B. 40 MHz habe und den auf 
die Werte 20MHz,10MHz,5MHz,   2MHz,1MHz,500kHz,   200kHz,100kHz,50kHz
runterteilen möchte, dann brauche ich ja jeweils Teiler durch 2 
(einfaches T-FF) und teiler durch 10 (von z.B 20MHz --> 2MHz).
Das heißt ich bräuchte 6 Teiler durch 2 und 3 Teiler durch 10 um alle 
Frequenzen abzudecken.

Oder halt einen Zähler den ich bei Carry / Borrow zurücksetzte.

Das wären dann so grob über den Daumen gepeilt 10 Bit für den Zähler und 
ein Latch für den Ausgang?

Das heißt ein CPLD mit um die 20-30 Makrozellen müsste ausreichend sein, 
oder?
Könnt ihr mir da nochmal weiterhelfen?

Gruß Mani

Autor: Wolfgang M. (womai)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zum DDS-Filter - dessen Grenzfrequenz muss mindestens ein bisschen ueber 
der hoechsten gewuenschten Frequenz liegen, maximal aber bei der halben 
Samplerate (in der Praxis eher bei 40% oder darunter). Was auch heisst, 
fuer 40 MHz am Ausgang brauchst Du mindestens 100 MHz Samplerate (mehr 
ist besser). Viele der DDS-Chips haben aber eingebaute PLLs zur 
Frequenzvervielfachung des Referenztaktes. Wenn Du langsamere Chips 
nimmst als "meinen" AD9912 sind die Eval-Boards auch etwas billiger, 
aber fuer ein paar Euros gibt es auch die nicht.

Wenn Du wirklich nur um ganzzahlige Verhaeltnisse teilen musst, ist 
allerdings ein CPLD einfacher. Nur - diese Dinger sind dezidiert NICHT 
auf niedrigen Jitter getrimmt. Die brauchen ja bloss zuverlaessig 
innerhalb einer Bitperiode schalten, es ist aber (relativ) egal, wann 
genau. Was sind denn eignetlich Deine genauen Anforderungen an den 
Jitter? ("niedrig" heisst ganz unterschiedliche Sachen fuer 
unterschiedliche Leute bzw. Anwendungen) Ansonsten sind CPLDs recht 
einfach benuzten. Ich persoenlich mag Xilinx, aber so ziemlich jeder 
andere Anbieter geht auch. Du bekommst CPLDs mit bis zu 72 Makrozellen 
in Hobby-freundlichen MLCC-Verpackungen (die kann man noch in Sockel 
reinstecken). Z.B. den XC9572, der hat 72 Zellen und laeuft auf 5V. Fuer 
niedrigere Betriebsspannungen gibt es mehr Auswahl.

Wolfgang

Autor: Mani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Wolfgang:
>Was sind denn eignetlich Deine genauen Anforderungen an den Jitter?

Aus eigenem Ergeiz soll er "so niedrig wie möglich" sein. Wenn ich mir 
aber den Aufwand überlege den ich evtl. dafür betreiben muss, dann ist 
ein bischen Jitter mehr vielleicht auch nicht so schlimm :-D

Mache gerade was in Richtung Kammgenerator.
Und um im Spektrum etwas sauberere Signale zu bekommen wollte ich 
möglichst wenig Jitter. Aber dann sind die Spektrallinien eben etwas 
breiter.

Also dann werd ich wahrscheinlich mal in Richtung CPLD gehen.
Der XC9572 ist mir von den Dimensionen fast etwas zu groß!?
Theoretisch brauche ich ja nur 5 Portpins (4xBCD, 1xCLK) und genug 
Makrozellen um den Zähler bzw. Codeumsetzung BCD-->Frequenz 
unterzubringen.
Ich schau mal ob ich was in Richtung TQFP44 finde.
Ist meine grobe abschätzung mit 20-30 Makrozellen so richtig oder mache 
ich irgendeinen entscheidenden Denkfehler?

Gruß Mani

Autor: Wolfgang M. (womai)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich wuerde fuer den Anfang eher etwas mehr Makrozellen nehmen - aus 
Erfahrung weiss ich, man findet immer noch was, das man uebersehen hat 
oder das man gerne ergaenzen moechte :-) Der 9572 ist praktisch gleich 
teuer wie der 9536, hat aber doppelt so viel Platz. Gibt's beide in 
denselben Gehaeusevarianten (44 pins).

Wolfgang

Autor: Mani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für deine Ratschläge.
Hab ihn gerade mal gesuch und für die 5,40€ kann ich mir gleich mal ein 
paar bestellen.

Jetzt noch ne ganz dumme frage, kann ich den Systemtakt auch gleich für 
das runterteilen nehmen?

Gruß Mani

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.