Raspberry Pi Pico - UART-Kommunikation mit 4 Geräten

OP #7403435
Lesenswert?

Ich bin dabei, eine Quantencomputer-Simulation mit Raspberry Pi Picos aufzubauen. Jeder Pico stellt dabei ein Quantengatter dar. Allerdings muss beim CNOT-Gatter ein Pico mit 4 anderen Picos kommunizieren (2 Eingänge, 2 Ausgänge). Ich möchte die Kommunikation möglichst mit UART vornehmen. Allerdings gibt es beim Pico nur 2 UART-Kanäle. Wäre es möglich, diese für die beiden Eingänge zu nutzen, und für die Ausgabe dann ebenfalls die 2 UART-Kanäle auf anderen GPIO-Pins zu benutzen, da die Verarbeitung sequentiell erfolgt? Oder welche andere Möglichkeit wäre empfehlenswert (auch außerhalb von UART), möglichst ohne zusätzliche Hardware?

#7403569
Lesenswert?

Wilko S. schrieb:

Allerdings gibt es beim Pico nur 2 UART-Kanäle.

Ich halte es hier nicht für sinnvoll einen ultraschnellen Controller zu verwenden und dann "zeitaufwendig" an den Schnittstellen zu pfriemeln um auf eine Erhöhung der Schnittstellenzahl zu kommen. Das macht nur Ärger und Rechenaufwand. Da die Kommunikation zwischen den einzelnen Nodes sowieso viel langsamer ist als die internen Rechenoperationen wird es sinnvoll sein einen Controller zu verwenden der von Haus aus mit der ausreichenden Anzahl an UART-Kanälen austestattet ist und wenn nötig auf ein paar MIPS zu verzichten. So gross wird der Performance- Unterschied zwischen einem (z.B.) STM32Hxxx oder STM32Fxxx zu einem Raspberry Pi Pico nicht sein. Ja ích weiss, der Pico kommt fertig au der Box, bei STM kommt man vielleicht nicht so einfach in die Gänge. Dafür wird das Gebastele an den Picos wegen der UARTs dann aufwendig.

OP #7403578
Lesenswert?

Siehe Abbildung. Die Simulation läuft von links nach rechts. Jedes der blauen Module wird durch einen Raspberry Pi Pico repräsentiert. Als Verbindung zwischen den Modulen habe ich ein Kabel mit 4 Leitungen:

VSYS

GP-PIN 1

GP-PIN 2

GROUND

Die GP-PINs der Schnittstellen (max. 4 beim CNOT-Modul) sind wie folgt verknüpft:

GP2 - In 1 Lesen (RX)

GP3 - IN 1 Senden (TX)

GP6 - Out 2: Senden (TX)

GP7 - Out 2: Lesen (RX)

GP10 - in 2 Lesen (RX)

Gp11 - in 2 Senden (TX)

GP14 - Out 2 Senden (TX)

GP15 - Out 2 Lesen (RX)

Ich schließe bisher eine Spannungsquelle über USB-Port an (ganz links - am Sample-Modul). Der Sample-Button ist hier mit dem Modul "QUBIT_1" über das Kabel verbunden, sodass

SAMPLE => QUBIT_1

VSYS => VSYS

GP6 - Out 2: Senden (TX) => GP2 - In 1 Lesen (RX)

GP7 - Out 2: Lesen (RX) => GP3 - IN 1 Senden (TX)

GROUND => GROUND

Wenn ich den Sample-Button ganz links drücke, soll eine 8-Bit-Information von SAMPLE über die Schnittstelle OUT1 an IN1 von QUBIT_1 übertragen werden. Dort wird sie dann von QUBIT_1 weiterarbeitet und nach dem gleichen Prinzip an das nächste Modul (HADAMARD_1) übergeben, usw. Ich habe die Übertragung mit PIO-UART erst einmal für 2 Module geprüft. Eine Reaktion auf Empfängerseite scheint nur zu funktionieren, wenn ich hier eine 2. Stromquelle per USB hinzufüge, obwohl die Module über VSYS und GROUND verbunden sind. Am besten, ich stelle mal ein Foto vom bisherigen Versuchsaufbau herein. Sollte ich vielleicht von VSYS auf VBUS zur Stromweiterleitung umsteigen? Oder die Pico-Module (max. 15 werden insgesamt für die komplexeste Simulation benötigt).

Angehängte Dateien:
OP #7403588
Lesenswert?

Das Foto zeigt solch eine Kette mit 4 Raspberry Pi Picos. Die Spannungsversorgung findet über USB beim linken Pico statt. Leider funktioniert die Informationsweitergabe von links nach rechts nicht, obwohl sie über VSYS, GROUND und 2 GP-Pins verbunden sind (s. o.). Ein Statuswechsel des IN-Pins beim nächsten Empfänger findet anscheinend nur dann statt, wenn dieser Pico mit einer eigenen Spannungsquelle verbunden ist, obwohl alle Picos erst einmal mit der Versorgung von der einen USB-Spannungsquelle funktionieren.

Angehängte Dateien:
OP #7403605
Lesenswert?

Vielen Dank! DAs ist wohl der Fehler bei mir: die Spannungsversorgung der einzelnen Picos (VSYS + GROUND) in Reihe zu schalten und einen davon dann per USB mit Strom zu versorgen. Hat jemand vielleicht Erfahrung mit der Spannungsversorgung von max. 15 Picos über eine Stromquelle? Ich habe ausgerechnet, dass ich dafür ein 25-W-Netzteil benötigen würde. Wenn ich ein USB-Netzteil benutze, würde ich dafür (theoretisch) ein Hub mit 15 USB-Anschlüssen benötigen, sodass die Spannungsversorgung für jeden Pico getrennt ist?

#7403756
Lesenswert?

Falk B. schrieb:

Wilko S. schrieb:

Überhaupt nicht. Es werden nur insgesamt 3 zusätzliche LEDs neben den 15 Pico-Modulen. Irgendwo hatte ich gelesen, dass man beim Pico mit 300 mA Stromaufnahme rechnen sollte.

Viel zuviel, erst Recht, wenn da nix weiter dran hängt. Im RP2040 Datenblatt gibt es eine Tabelle zur Orientierung.

Also ich messe eher um die 20mA, gelegentlich mal 50mA - das ist eher selten.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren