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
> 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.
@ 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
> 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
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.
Hab halt TWI schon am laufen. Lässt sich aber noch gut ändern. Danke
@ 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
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?
> 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
@ 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
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.