Forum: Mikrocontroller und Digitale Elektronik High Speed 64 Bit Seriell to Parrallel Wandler


von Matthias (Gast)


Lesenswert?

Hi,

ich möchte gerne einen sehr schnellen Seriell zu Parallel Wandler 
entwerfen und habe dazu Fragen, wie ich die Sache am Besten angehen 
sollte.

Auf paralleler Seite möchte ich 64 Ausgänge (beinahe) gleichzeitig mit 
einer Ausgangsfrequenz von 500 KHz schalten.

Nun würde ich daraus folgern, dass die serielle Taktfrequenz nun 
mindestens das 64-fache der Ausgangsfrequenz betragen muss, also 
mindestens 32 MHz.

Ideal für mich wäre eine serielle Datenübertragung z.B. über SPI mit 
einer Taktfrequenz von z.B. 80 MHz. Das müsste mit einem ARM9 machbar 
sein.

Nun bräuche ich am Besten einen schnellen Wandler IC, idealerweise 
schafft dieser pro Output auch noch einen Ausgangsstrom von 500 mA pro 
Output.
Jedoch wird es so einen IC wahrscheinlich nicht geben.

Wie könnte man 64 Pins mit einer 500 Khz Frequenz mit jeweils 500 mA 
Ausgangsstrom noch schalten?

Vielleicht habt ihr ja nette Ideen.

von Falk B. (falk)


Lesenswert?

@  Matthias (Gast)

>ich möchte gerne einen sehr schnellen Seriell zu Parallel Wandler
>entwerfen

Das wollen hier viele.

>Auf paralleler Seite möchte ich 64 Ausgänge (beinahe) gleichzeitig mit
>einer Ausgangsfrequenz von 500 KHz schalten.

Das nennst du SCHNELL?

>Nun würde ich daraus folgern, dass die serielle Taktfrequenz nun
>mindestens das 64-fache der Ausgangsfrequenz betragen muss, also
>mindestens 32 MHz.

Sieht so aus. Mathe Leistungskurs?

>Ideal für mich wäre eine serielle Datenübertragung z.B. über SPI mit
>einer Taktfrequenz von z.B. 80 MHz. Das müsste mit einem ARM9 machbar
>sein.

Was denn nun schon wieder mit SPI?

>Nun bräuche ich am Besten einen schnellen Wandler IC, idealerweise
>schafft dieser pro Output auch noch einen Ausgangsstrom von 500 mA pro
>Output.

Lass mich raten, für LEDs?

>Jedoch wird es so einen IC wahrscheinlich nicht geben.

Richtig geraten!

>Wie könnte man 64 Pins mit einer 500 Khz Frequenz mit jeweils 500 mA
>Ausgangsstrom noch schalten?

Mit einem CPLD + nachgeschaltetem Treiber.

>Vielleicht habt ihr ja nette Ideen.

1001. Ist aber egal. Sag uns was du WIRKLICH machen willst und man kann 
dir vielleicht sinnvolle Tips geben. Siehe Netiquette.

MfG
Falk

von Matthias (Gast)


Lesenswert?

Wie immer in diesem Forum,

 - schnelle Antwort in Fetzen
 - über die Freundlichkeit kann man streiten

Hast doch schon super getippt, da muss ich meine Applikation doch gar 
nicht mehr erklären, also LEDs ansteuern 64 an der Zahl und das bitte 
sehr schnelle.

Da ich noch nie mit einem CPLD gearbeitet habe:
Könntest du noch ein bisschen genauer werden?
Noch kann ich mir nicht viel darunter vorstellen.

von thomas (Gast)


Lesenswert?

Falk Brunner schrieb:
> Siehe Netiquette.

Haha der war gut. Schau doch mal selber rein ;)

von Peter D. (peda)


Lesenswert?

Wozu diese Umstände?
Wärs nicht einfacher, gleich nen MC mit >64 Ausgängen zu nehmen?
Z.B. ATmega640.

SPI mit 80MHz ist keine einfache Sache mehr ab >10cm Leitungslänge.


Peter

von U.R. Schmitt (Gast)


Lesenswert?

Hmm, wofür musst Du die LEDs mit 500kHz ansteuern?
Willst Du 64 optische Übertragungskanäle mit je 500kHz Bandbreite 
realisieren?

von Andreas K. (derandi)


Lesenswert?

Und warum muss man aus einem Pin 64 machen?
Reichen nicht 4x 16 Pins nicht auch?
Würde die Verschiebe-Taktfrequenz auf freundliche 8 MHz senken.

von Matthias (Gast)


Lesenswert?

>>Wärs nicht einfacher, gleich nen MC mit >64 Ausgängen zu nehmen?
>>Z.B. ATmega640.

Wäre mir auch am Liebsten und einfachsten zu programmieren, jedoch kann 
man doch die uC nur mit maximal 32 MHz betreiben.

Ich weiss jetzt nicht genau wieviele Clocks der benötigt um den nächsten 
PIN zu halten, so 4 => 125 ns, bei 64 Ausgängen kann ich dann die Pins 
in 8 us alle high schalten.

Bei dem CPLD schaffe ich das laut DB in 7,5 ns => 64 Ausgänge in 480 ns.

von Andreas K. (derandi)


Lesenswert?

Matthias schrieb:
> Wäre mir auch am Liebsten und einfachsten zu programmieren, jedoch kann
> man doch die uC nur mit maximal 32 MHz betreiben.

Die 32 MHz brauchst du doch wohl nur für die Übertragung durch das 
Serielle Interface, oder nicht?

von thomas (Gast)


Lesenswert?

Matthias schrieb:
> Ich weiss jetzt nicht genau wieviele Clocks der benötigt um den nächsten
> PIN zu halten, so 4 => 125 ns, bei 64 Ausgängen kann ich dann die Pins
> in 8 us alle high schalten.

Du kannst den ganzen Port (8bit) auf einmal setzen. Somit brauchst du 
bei 64 LEDS nur 8 Instruktion. Damit lassen sich deine 500khz bestimmt 
erreichen. Wenn du aber ohnehin immer alle ein und ausschalten willst, 
geht das auch einfacher...

von thomas (Gast)


Lesenswert?

Aja vielleicht magst noch genauer beschreiben um was bei deinem Projekt 
geht. Zb Dimmen von LEDS geht viel viel einfacher.

von Matthias (Gast)


Lesenswert?

Nein ich möchte diese LEDs einzeln ansteuern, dazu muss ich einerseits 
das Muster generieren und andererseits das eben raustakten und da möchte 
ich gerne eine Taktfrequenz oder man könnte auch Frame Rate von 500 Khz 
erreichen, was ich als duchaus sportlich ansehe.

von thomas (Gast)


Lesenswert?

Ja du kannst bei den ATMEGAs trotzdem 8 LEDs mit einem Befehl schalten.

Aber jetzt spucks mal aus. Wie sieht die Anwendung genau aus...

von Falk B. (falk)


Lesenswert?

@  Matthias (Gast)

>Wäre mir auch am Liebsten und einfachsten zu programmieren, jedoch kann
>man doch die uC nur mit maximal 32 MHz betreiben.

DIE uC. Aha! Es gibt ja nur einen auf dieser Welt . . .

>Ich weiss jetzt nicht genau wieviele Clocks der benötigt um den nächsten
>PIN zu halten, so 4 => 125 ns, bei 64 Ausgängen kann ich dann die Pins
>in 8 us alle high schalten.

Bitklappern per CPU ist nicht unbedingt der Weisheit letzter Schluss.

>Bei dem CPLD schaffe ich das laut DB in 7,5 ns => 64 Ausgänge in 480 ns.

Vergiss die Rechung, die ist Unsinn^3.

>Nein ich möchte diese LEDs einzeln ansteuern, dazu muss ich einerseits
>das Muster generieren und andererseits das eben raustakten und da möchte
>ich gerne eine Taktfrequenz oder man könnte auch Frame Rate von 500 Khz
>erreichen, was ich als duchaus sportlich ansehe.

Also du willst einen 64 Bit Generator mit 500 kHz bauen. Wozu auch 
immer.
Naja.

500kHz = 2us. Bei 32 MHz CPU Takt sind das 64 Takte, geht so.
Also klemmt man z.B. acht 8-Bit Register an einen Port des uC und takte 
dort die Daten 8 Bit breit raus. Oder 16 Bit. Dahinter kommt eine zweite 
Reihe Register, die übernimmt von dem ersten Registersatz die Daten 
parallel mit 64 Bit. Fertig ist das "Schieberegister". Deine CPU muss 
dann nur die 8 Bytes raustakten sowie einen gemeinsamen Übernahmetakt 
für das 2. Register generieren. Das kann man mit TTL ICs ala 74HC373 
aufbauen oder mit einem CPLD, der braucht dann aber min. 128 
Makrozellen. Oder man nimmt gleich ein kleines FPGA, damit wird das 
spielend einfach. Als Treiber für die 500mA nimmt man eine Handvoll 
Logic Level MOSFETs, wie z.B. IRF7301.

MfG
Falk

von Falk B. (falk)


Lesenswert?

@  thomas (Gast)

>Aber jetzt spucks mal aus. Wie sieht die Anwendung genau aus...

Ich tippe mal auf eine Monster Propeller Clock ;-)

von Matthias (Gast)


Lesenswert?

Hier, das zu Falks kurzer Antwort:
http://www.altera.com/literature/an/an286.pdf

von thomas (Gast)


Lesenswert?

Soda ich klink mich hier aus. Solange du dein Vorhaben nicht genauer 
spezifizieren willst/kannst, musst du mit wenig hilfreichen Antworten 
leben.

Viel Glück!

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.