Forum: FPGA, VHDL & Co. USB Switch mit FPGA


von markus (Gast)


Lesenswert?

Hallo,
ich bräuchte mal eure Einschätzung. Wäre es möglich mit einem FPGA oder 
CPLD einen USB 2.0 switch zu realisieren für 24 USB Ports also 24:1? Wo 
seht Ihr Probleme?
Grüße

von Jens (Gast)


Lesenswert?

Warum nicht einen 24 Port-Hub nehmen oder bauen. Das dürfte vermutlich 
einfacher sein. Zum Thema Switch fallen mir schon ein paar Probleme ein. 
Viele Geräte müssen vorm Entfernen / Abschalten im Windows abgemeldet 
werden, vorher darf der Switch die Verbindung nicht trennen. Wie willst 
du das realisieren? Ist es für die Anwendung überhaupt nötig? USB 2.0 
ist eine bidirektionale und differenzielle Verbindung mit immerhin 480 
MBit. Schafft das dein FPGA / CPLD? Wie verhinderst du, dass während 
einer laufenden Übertragung der Port umgeschalten wird? Das dürften nur 
ein paar wenige Probleme sein. Ich sage mal, es wird sehr schwierig, so 
etwas zu realisieren...

von markus (Gast)


Lesenswert?

Vllt noch zur Info es soll nur Keyboard oder Maus umgeschalten werden. 
Von außen durch eine Schnittstelle soll ausgewählt werden an welchen der 
24Prozessoren die M oder K durchgeschaltet werden soll.
            -- Prozessor 1
         /  -- Prozessor 2
Keyb____/   -- Prozessor 3
            -- Prozessor 4
            -- Prozessor 5
            .      .
            .      .
            .      .

von ich (Gast)


Lesenswert?

Das nennt sich dann Multiplexer und nicht switch.
Wenn überhaupt möglich, dann mit Relais. Ich hätte sonst Bedenken wie 
sich die 5V verhalten wenn 24 Quellen parallel geschaltet werden. 
Vorallem wenn eine aus ist...
Du solltest auch bedenken dass die Versorgungsspannung möglicherweise 
früher verbunden werden muss als die Signalleitungen.
Du wirst sehr spezielle Relais brauchen um die geforderte Impedanz zu 
halten (90 Ohm glaub ich).
Einfach wird es nicht.

von Kan a. (Firma: Basta) (kanasta)


Lesenswert?

Maus/Tastatur sind Low Speed USB Devices und arbeiten soweit ich weiß 
mit 1,5 MBit/sek. Wozu dann Usb 2.0?

Auch ist es bei Maus & Tastatur unwichtig, ob die Geräte vor dem 
Umschalten abgemeldet werden.

Es reicht allerdings nicht aus, nur D+/D- umzuschalten. Schließlich muss 
man der Tastatur/Maus signalisieren, dass sie sich beim (anderen) 
Rechner neu anzumelden hat.

Ich denke das lässt sich einfacher mit Analog Switches oder Multiplexern 
lösen anstatt mit FPGAs.

von Kai S. (zigzeg)


Lesenswert?

Jens schrieb:
> Warum nicht einen 24 Port-Hub nehmen oder bauen. Das dürfte vermutlich
> einfacher sein.

Weil man mit einem Hub zwar 24 Peripherien (z.B. Maeuse) an einen 
Rechner anschliessen kann, er will aber das umgekehrte.

> Viele Geräte müssen vorm Entfernen / Abschalten im Windows abgemeldet
> werden, vorher darf der Switch die Verbindung nicht trennen. Wie willst
> du das realisieren?

Abmelden ist eigentlich vor allem bei Massenspeichern noetig. Bei 
Maeusen, Tastaturen, Druckern, Scanner nicht notwendig (entspricht dem 
ziehen des USB Steckers).

> Ist es für die Anwendung überhaupt nötig? USB 2.0
> ist eine bidirektionale und differenzielle Verbindung mit immerhin 480
> MBit. Schafft das dein FPGA / CPLD? Wie verhinderst du, dass während
> einer laufenden Übertragung der Port umgeschalten wird?

Wie wird verhindert, das waerend einer laufenden Uebertragung der 
Benutzer den USB Stecker zieht ? Gar nicht, scheint aber auch kein 
Problem zu sein.

Entscheiden ist das die Maus/Tastatur mitbekommt, dass sie neu verbunden 
wurde, damit sie die Initializierungs-Sequenz neu startet. Also muss 
vermutlich die Spannungsversorgung kurz unterbrochen werden.

von Εrnst B. (ernst)


Lesenswert?

markus schrieb:
> Vllt noch zur Info es soll nur Keyboard oder Maus umgeschalten werden.

d.H. du brauchst gar kein High-Speed oder Full-Speed.
Mit FPGA/CPLD wirds trotzdem schwer, da die Datenleitungen bidirektional 
genutzt werden, und du die Richtungsumschaltung durch Protokoll-Sniffing 
mitkriegen müsstest.
Evtl. mit externen PHYs zu umgehen...

Preislich und Aufwandsmäßig evtl. in ähnlicher Region, leichter 
erweiterbar, aber für die PCs "angenehmer":

Nimm 24 billigst-µCs, die grad so für USB-HID Device reichen. Die an die 
Rechner verbinden. Einen (größeren) µC als USB-Host für Tastatur und 
Maus.
Das ganze über einen Bus verbinden. (I²C würde reichen).
Fertig.
Rechner-Umschaltung würde dann auch problemlos per Tasten-Kombination 
möglich sein, die Rechner kriegen nicht die ganze Zeit 
USB-Connects/Disconnects, und sogar ein "Broadcast" Modus zum Senden der 
Tasten-Drücke an mehrere angeschlossenen Rechner gleichzeitig wäre 
möglich.
Galvanische Trennung der einzelnen Rechner voneinander ginge dann auch 
einfach auf I²C-Ebene.

von markus (Gast)


Lesenswert?

ok das Signalisieren findet ja dann wieder neu statt wenn ich kurz die 
Spannung für M/K abschalte dann umschalte und Spannung wieder zuschalte. 
Sehe ich das richtig?

von markus (Gast)


Lesenswert?

Mein Beitrag mit Signalisieren gerade hat wohl Kai S. schon beantwortet.
@Ernst
Ja die Bidirektionalität wird wohl schwierig mit FPGA. Habe ich noch 
garnicht drüber nachgedacht :-(

von BorisM (Gast)


Lesenswert?

Warum willst du eigentlich auf 24 Rechner mit einer Maus/Keyboard 
zugreifen? Und wie bekommst du ein Bild vom jeweiligen Desktop? Brauchst 
du es privat oder kommerziell? Ich würde mir einfach einen guten KVM 
Switch kaufen und nicht Wochenlang rumbasteln. Hier mal ein Link (soll 
keine Werbung sein) aber vielleicht kennst du KVM Switchs ja noch 
nicht...
http://www.alternate.de/html/product/ATEN/KN4124v/868870/?

von Jens (Gast)


Lesenswert?

Kai S. schrieb:
> Datum: 10.01.2012 10:26
> Jens schrieb:
>> Warum nicht einen 24 Port-Hub nehmen oder bauen. Das dürfte vermutlich
>> einfacher sein.
>
> Weil man mit einem Hub zwar 24 Peripherien (z.B. Maeuse) an einen
> Rechner anschliessen kann, er will aber das umgekehrte.

Das war aus dem ursprünglichen Post so nicht erkennbar.

>> Viele Geräte müssen vorm Entfernen / Abschalten im Windows abgemeldet
>> werden, vorher darf der Switch die Verbindung nicht trennen. Wie willst
>> du das realisieren?
>
> Abmelden ist eigentlich vor allem bei Massenspeichern noetig. Bei
> Maeusen, Tastaturen, Druckern, Scanner nicht notwendig (entspricht dem
> ziehen des USB Steckers).

Siehe oben. Im ursprünglichen Post fehlten wichtige Infos. Bei 
Tastaturen und Mäusen würde ich nur USB 1.1 nehmen. Dort habe ich nur 
max. 12 MBit und würde das ganze mit Reedrelais realisieren. Damit ist 
auch gewährleistet, dass die T / M beim neu verbinden kurz von der 
Spannungsversorgung getrennt wird und sich am neuen Gerät neu anmeldet. 
Eine entsprechende Logik müsste jedoch sicherstellen, das nur ein PC auf 
die T / M geschaltet ist.

von Duke Scarring (Gast)


Lesenswert?

markus schrieb:
> Vllt noch zur Info es soll nur Keyboard oder Maus umgeschalten werden.
> Von außen durch eine Schnittstelle soll ausgewählt werden an welchen der
> 24Prozessoren die M oder K durchgeschaltet werden soll.
Warum arbeitest Du nicht per Ethernet remote auf den Maschinen?

Duke

von markus (Gast)


Lesenswert?

@Boris- Vielen Dank für den Link aber es ist ne Spezielle Anwendung KVM 
Switchen haben wir hier auch.
@Jens- Sorry wegen der Infos
@Duke - Ja das wird auch gemacht aber wir brauchen trotzdem diese 
USB-Sache


Was haltet ihr von USB Multiplexer von TI 1:2. Davon würde ich 12 nehmen 
und die von einem uC umschalten bzw Enableln oder Disableln.

http://www.ti.com/lit/ds/symlink/ts3usb221.pdf

von markus (Gast)


Lesenswert?

ups es gibt ja auch 8:1 für USB :-)

http://datasheets.maxim-ic.com/en/ds/MAX4999.pdf

von BorisM (Gast)


Lesenswert?

The MAX4999 features an enable input that allows two
MAX4999s to be connected, allowing multiplexing
between 16 USB channels.

von markus (Gast)


Lesenswert?

@Boris - Hört sich ja schon mal gut an

von BorisM (Gast)


Lesenswert?

Externer Multiplexer, 3x MAX4999 und nen uC zum steuern - fertig. Aber 
vergesse nicht die USB Leitungen zu schützen. Wir verwenden manchmal 
USBLC6-4
http://www.st.com/internet/analog/product/90761.jsp

Musst du ein SIL-Level erreichen oder sonst irgendwelche 
Sicherheitskriterien beachten?

von markus (Gast)


Lesenswert?

@Boris
Ist für Klimaschränke, Hauptsache die Schaltungen halten die vielen 
Tempzüglen aus..ansonsten kenne ich jetzt keine Kriterien.
Danke für den Link. Kann ich gut gebrauchen.

von Mathi (Gast)


Lesenswert?

Wenn Du sowas fertig haben willst, schaue mal bei einem der "guten" KVM 
Hersteller vorbei.
Z.B. der Tradeswitch von www.gdsys.de kann zumindest bis zu 
8xMaus/Tastatur umschalten.
Vielleicht findest Du das auch für 24. Oder kannst Dir ne Spezialversion 
bauen lassen :)

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.