Forum: FPGA, VHDL & Co. Variabler Pulsgenerator, CPLD oder FPGA


von christian (Gast)


Lesenswert?

Hallo zusammen,

nachdem sich meine Idee einen "kohärenten" Pulsgenerator mittels µC zu 
realisieren hier --> Beitrag "20 MHz clock von 100 MHz XO" 
zerstreut hat, greife ich das Ganze jetzt in diesem Unterforum nochmal 
auf.

Mit "kohärent" ist in meinem Fall folgendes gemeint:
Es wird ein sehr präziser uns stablier 100 MHz Quarzoszillator verwendet 
um ein HF-Signal zu generieren. Dieses wird gesendet und nach dem 
Empfang mit Hilfe von weiteren Signalen die sich aus den 100 MHz 
speisen, also kohärent, auf 12,5 kHz herab gemischt. Senden und 
Empfangen erfolgt gepulst, Stichwort range-gating, mit einer 
Pulsrepititionsrate (PRR) von 100 kHz. Diese PRR die auch den ADC zur 
Abtastung meines zu messenden Signals triggert, muss natürlich wieder 
aus den 100 MHz kohärent abgeleitet werden. Phaseninformation ist für 
uns sehr wichtig.

Für die variable Pulserzeugung (pw >= 100 ns, range gating <= 5 µs) will 
ich jetzt einen CPLD oder FPGA nutzen. Beide könnten direkt von der 100 
MHz Quelle getaktet werden.

Ist es nun besser die 100 kHz PRR intern im CPLD/FPGA zu erzeugen oder 
sollte ich diese lieber durch einen externen Teiler als Trigger für die 
Pulserzeugung bereitstellen?
Intern hätte den Vorteil das sich die PRR leicht ändern lässt.

Wäre hier ein CPLD oder FPGA vorzuziehen? (Signallaufzeit, jitter...)
Das ganze soll in eine, schon vorhandene, Struktur mit Mega32 (der sich 
um den ADC und die Kommunikation via USB kümmert) via TWI so eingebettet 
werden, dass man die Pulsbreite und das rage gating einstellen kann.

Es werden vom CPLD/FPGA keine Höchstleistungen verlangt was 
Geschwindigkeit (100 MHz) und Komplexität (TWI und Pulsgenerator) 
angeht. Also, welchen nehmen?

Vielen Dank schonmal vorab für eure Hilfe


grüße
christian

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


Lesenswert?

> kohärent
kohärent = synchron?

> Phaseninformation ist für uns sehr wichtig.
Welcher maximale Jitter ist erlaubt?

> Es werden vom CPLD/FPGA keine Höchstleistungen verlangt was
> Geschwindigkeit (100 MHz) und Komplexität (TWI und Pulsgenerator)
> angeht. Also, welchen nehmen?
Jitter ist auch eine Anforderung, die bekannt sein sollte.

von Falk B. (falk)


Lesenswert?

@  christian (Gast)

>Ist es nun besser die 100 kHz PRR intern im CPLD/FPGA zu erzeugen oder
>sollte ich diese lieber durch einen externen Teiler als Trigger für die
>Pulserzeugung bereitstellen?
>Intern hätte den Vorteil das sich die PRR leicht ändern lässt.

Richig, also intern.

>Wäre hier ein CPLD oder FPGA vorzuziehen? (Signallaufzeit, jitter...)

Ist ähnlich. Ein grösseres FPGA kann ggf. etws mehr Jitter erzeugen. Wir 
reden hier aber von Pi Mal Daumen 50ps oder so.

>Das ganze soll in eine, schon vorhandene, Struktur mit Mega32 (der sich
>um den ADC und die Kommunikation via USB kümmert) via TWI so eingebettet
>werden, dass man die Pulsbreite und das rage gating einstellen kann.

Wenn das so WIRKLICH funktioniert, vor allem die ADC-Ansteuerung, dann 
reicht ein CPLD. Aber das mit dem ADC im AVR hab ich ja schon im alten 
Thread bezweifelt.

MfG
Falk

von christian (Gast)


Lesenswert?

> Wenn das so WIRKLICH funktioniert, vor allem die ADC-Ansteuerung, dann
> reicht ein CPLD. Aber das mit dem ADC im AVR hab ich ja schon im alten
> Thread bezweifelt.

Der ADC ist extern und dessen sample&hold wird vom Pulsgenerator 
getriggert. Auslesen nachdem das "conversion done flag" gesetzt ist 
schafft der Mega32 locker und das ist dann auch nicht mehr so 
zeitkritisch im Sinne von kohärent oder synchron da die Daten dann ja 
schon digitalisiert sind.

Wenn ein CPLD reicht soll mir das recht sein. Will nur vermeiden das mir 
am Ende irgendwie der Platz bzw. die Gatter ausgehn. Lässt sich ein 
TWI-Slave auch in einem CPLD aus fertigen Modulen (opencores.org) 
realisieren?

> Welcher maximale Jitter ist erlaubt?
Kann ich leider nicht sagen. Ganz flappsig formuliert: So wenig wie 
möglich und soviel wie nötig um alles noch kompakt selbt auf einem Board 
zu realisieren.

> Ein grösseres FPGA kann ggf. etws mehr Jitter erzeugen. Wir
> reden hier aber von Pi Mal Daumen 50ps oder so.
Also 50 ps sollte bei 100 KS/s zu vernachlässigen sein. Der ADC hat 
selbst 50 ps Apertur-Jitter


grüße
christian

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Ich würde nicht TWI sondern lieber SPI nehmen, das läßt sich in nem CPLD 
recht gut unterbringen. TWI hat soviele "Fälle" da brauchst du schnell 
nen größen Chip ohne überhaupt die weitere Funktionalität abgebildet zu 
haben.

von christian (Gast)


Lesenswert?

Hab halt TWI schon am laufen. Lässt sich aber noch gut ändern. Danke

von Falk B. (falk)


Lesenswert?

@  christian (Gast)

>Der ADC ist extern und dessen sample&hold wird vom Pulsgenerator
>getriggert.

Dann passt das.

> Auslesen nachdem das "conversion done flag" gesetzt ist
>schafft der Mega32 locker

Naja, 100ks/s sind für den AVR schon ziemlich viel Arbeit!

>Wenn ein CPLD reicht soll mir das recht sein. Will nur vermeiden das mir
>am Ende irgendwie der Platz bzw. die Gatter ausgehn.

Dann nimm einen grösseren. Aber für das bisschen sollten72 Macrozellen 
reichen.

> Lässt sich ein
>TWI-Slave auch in einem CPLD aus fertigen Modulen (opencores.org)
>realisieren?

Möglich. Die Frage ist, ob der platzsparend für einen CPLD gemacht ist.


>Also 50 ps sollte bei 100 KS/s zu vernachlässigen sein.

Sag das mal den Audiophilen ;-)

MfG
Falk

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

christian schrieb:
> Wenn ein CPLD reicht soll mir das recht sein. Will nur vermeiden das mir
> am Ende irgendwie der Platz bzw. die Gatter ausgehn.
Ich würde dir raten: Einfach vorher implementieren dan siehst du wieviel 
Platz du brauchst :)
Was für ein CPLD wolltest du den nehmen?

von christian (Gast)


Lesenswert?

> Was für ein CPLD wolltest du den nehmen?
Keine Ahnung. Ich werds einfach so machen wie vorgeschlagen. Erstmal 
implementieren (VHDL oder Verilog?) und dann wird sich schon zeigen was 
ich brauche. Ob das Ding dann 10 Euro oder 50 Euro kostet ist egal. Ich 
will was lernen und es muß am Ende (in 2-3 Monaten) stabil laufen.

> Naja, 100ks/s sind für den AVR schon ziemlich viel Arbeit!
Klar. Der hat aber sonst nicht viel zu tun. Bottleneck ist jedoch eher 
der USB Transfer. Schaff aber mit dem FT245R locker 400 kbyte/s.

Werd mir jetzt erstmal webpack anschaun.

gruß
christian

von Falk B. (falk)


Lesenswert?

@  christian (Gast)

>> Naja, 100ks/s sind für den AVR schon ziemlich viel Arbeit!
>Klar. Der hat aber sonst nicht viel zu tun. Bottleneck ist jedoch eher
>der USB Transfer. Schaff aber mit dem FT245R locker 400 kbyte/s.

Na wenn das so ist, kannst du gleich die ADC-Ansteurung mit in den CPLD 
packen. Dann ist das ne runde Sache.

MFg
Falk

von christian (Gast)


Lesenswert?

> Na wenn das so ist, kannst du gleich die ADC-Ansteurung mit in den CPLD
> packen. Dann ist das ne runde Sache.
Stimmt schon, aber mit µC läuft es (ADC + Stream über USB) und das war 
für mich als Anfänger schon ein Kampf. Pflicht ist erstmal der 
Pulsgenerator im CPLD/FPGA. Die Kür wäre dann alles in einen Baustein zu 
packen.

Wo gibts eigentlich mehr/bessere Code-Beispiele, VHDlL (hier und sonst?) 
oder Verilog (fpga4fun opencore)?

grüße
christian

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.