mikrocontroller.net

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


Autor: christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: christian (Gast)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

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.