Forum: FPGA, VHDL & Co. 50/50 Duty Cycle mit 100 MHz


von willi k. (Gast)


Lesenswert?

Hallo,
ich will in VHDL aus einem Grundtakt von 100 MHz einen 20 MHz Takt mit 
einem Tastverhältnis von 50% erzeugen. Gut von 100 MHz auf 20 MHz ist 
kein Problem, nur habe ich dann ein Tastverhältnis von 40/60.
Bleibt mir wahrscheinlich nur die Möglichkeit den Grundtakt auf 200 MHz 
zu erhöhen...
Für Ideen bin ich sehr dankbar.

von Fetz (Gast)


Lesenswert?

willi k. schrieb:
> Hallo,
> ich will in VHDL aus einem Grundtakt von 100 MHz einen 20 MHz Takt mit
> einem Tastverhältnis von 50% erzeugen. Gut von 100 MHz auf 20 MHz ist
> kein Problem, nur habe ich dann ein Tastverhältnis von 40/60.
> Bleibt mir wahrscheinlich nur die Möglichkeit den Grundtakt auf 200 MHz
> zu erhöhen...
> Für Ideen bin ich sehr dankbar.

Ja, dann ist doch 40MHz machen genauso "kein Problem". Mit diesem Takt, 
toggelst du ein Flipflop hin und her und hast dann 20MHz 50:50

von Fetz (Gast)


Lesenswert?

Ahso ja ... 40 ist nicht unbedingt ein Teiler von 100 :D

Naja gut ... also dann den Takt auf 80MHz absenken oder auf 120MHz 
anheben oder gleich einen Taktgenerator verwenden, der dir aus 120MHz 
saubere 20MHz mit 50:50 duty cycle erzeugt.

Kuck mal nach DCM (xilinx) oder PLL (altera) ... Da gibst du an, was 
reingeht und was rauskommen soll und mit welchen duty cycle, den Rest 
macht der Core selbst.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

willi k. schrieb:
> ich will in VHDL aus einem Grundtakt von 100 MHz einen 20 MHz Takt mit
> einem Tastverhältnis von 50% erzeugen.
In VHDL ist das ganz einfach, da brauchst du nicht mal den 100MHz 
Takt:
1
   clk20MHz <= not clk20MHz after 25 ns;
Fertig.

Ach, so meintest du das nicht?

Was meintest du denn?
Du willst das in "echt" haben?
Mit welchem Baustein willst du diesen Takt erzeugen?

von willi k. (Gast)


Lesenswert?

Danke für deine schnelle Antwort. Da bleibt mir wohl die Möglichkeit mit 
der DCM. Da die 100 MHz nicht angetastet werden dürfen.

von willi k. (Gast)


Lesenswert?

Nein es soll schon synthetisierbar sein. Der Takt ist fix und kommt aus 
einer DCM. Von diesem will ich zur Ansteuerung eines DAC ein 50/50 20 
MHz Signal erzeugen. Ich wollte eben wissen obs noch andere 
Möglichkeiten zur Taktgenerierung gibt als noch ne DCM zu verwenden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

willi k. schrieb:
> zur Ansteuerung eines DAC ein 50/50 20 MHz Signal erzeugen.
Welcher DAC?
Braucht der 50% TV?
In welchem zeitlichen Bezug zum 20 MHz Takt gibst du dann die Daten aus?

von Christian R. (supachris)


Lesenswert?

willi k. schrieb:
> kommt aus
> einer DCM. Von diesem will ich zur Ansteuerung eines DAC ein 50/50 20
> MHz Signal erzeugen

Aua. DACs und ADCs taktet man nicht mit irgendwelchen erzeugten Takten, 
sondern direkt aus einem jitterarmen Oszillator. Diesen Takt kannst du 
dann parallel an das FPGA führen um ihn intern zu verwenden. Durch den 
vom DCM erzeugten Jitter holst du dir digitales Rauschen in deine 
Signale rein. Bei 20MS/s mag das noch gehen, wenn die Auflösung nicht 
allzu hoch ist. Aber schau mal hier her: 
http://www.maximintegrated.com/design/tools/calculators/general-engineering/jitter.cfm

von Fetz (Gast)


Lesenswert?

Lothar Miller schrieb:
> willi k. schrieb:
>> zur Ansteuerung eines DAC ein 50/50 20 MHz Signal erzeugen.
> Welcher DAC?
> Braucht der 50% TV?
> In welchem zeitlichen Bezug zum 20 MHz Takt gibst du dann die Daten aus?

Hmm ... ich hatte mal mit einem DAC zu tun, der tatsächlich auf den 
duty-cycle von 50/50 angewiesen war ... Kam mir seltsam vor und erst 
hatte ich das einfach ignoriert, was zu komischen Samplewerten geführt 
hat.

von willi k. (Gast)


Lesenswert?

Sorry ADC meinte ich.
Ich verwende den AD7401.

von willi k. (Gast)


Lesenswert?

Also ist es wohl das Beste eine DCM mit einem ODDR-FF zu verwenden um 
einen jitterfreien Takt zu generieren...

von Christian R. (supachris)


Lesenswert?

Jitterfrei und DCM? Hmm...nee das passt nicht zusammen. Die 20MHz aus 
einem Oszillator direkt an den ADC führen, das wäre der richtige Weg.
Wenn das aufgrund eines Designfehlers auf der Platine nicht mehr geht, 
dann über DCM die 100MHz durch 5 teilen und per ODDR ausgeben. Dann 
musst du aber mit dem Jitter leben.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Fetz schrieb:
> ich hatte mal mit einem DAC zu tun, der tatsächlich auf den
> duty-cycle von 50/50 angewiesen war
Braucht der AD7401 bei 20MHz auch, bis 16MHZ würden 60/40 reichen:
1
Mark space ratio for clock input is 40/60 to 60/40 for fMCLKIN to 16 MHz 
2
and 48/52 to 52/48 for fMCLKIN > 16 MHz to 20 MHz.

von willi k. (Gast)


Lesenswert?

Ich werde es mit einer DCM und einem ODDR-FF versuchen. Ggf. klappst ja.

Danke für die Antworten.

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
Noch kein Account? Hier anmelden.