Hello, Guest the thread was called1.4k times and contains 13 replays

last post from JMP$FCE2 at the

CBM-Bus: Mögliche Kabellänge, Treiberleistung, Verbesserungsmöglichkeiten?

  • Hallo,


    ich hoffe das die Rubrik hier passt. In der Suche hatte ich jedenfalls auch nichts verwertbares. Zum Problem:


    Ich stosse immer wieder darauf das der CBM-Bus (also das serielle Kabel am 64er zu Floppies und Drucker) nicht gerade eine Wunderwerk der Stabilität ist.
    Eine 1541 zu betreiben ist kein Thema, aber hat man da noch ne 1581 mit dran und einen Drucker, verwendet vielleicht einen Schnelllader - Probleme über Probleme.


    Daher hier meine Frage. Was kann man tun?


    Gibt es Maßnahmen die Stabilität des Buses zu erhöhen? Eventuell durch geänderte Treiberschaltungen in den Geräten? Bestimmte, bessere Kabeltypen? Abschirmungen? Dämpfungen? Endwiderstände?
    Hat da jemand Erfahrungswerte dazu?


    Viele Grüße
    Andreas

  • Ich habe das Problem bisher immer vermieden, indem ich immer die kürzesten Leitungen verwendet habe, wenn mehrere Geräte am Bus hängen.


    Wenn man nur ein Laufwerk angeschlossen hat ist ein langes Kabel kein Problem.

  • Na ja, das Problem ist einfach, daß das ganze Buskonzept eigentlich 'Murks' ist. Daran nachträglich irgendwas zu ändern ist relativ schwierig, ohne Inkompatibilitäten zu provozieren. Die Datenleitungen sind teilweise bidirektional, Leitungstreiber direkt zwischen Bus und Portbausteinen scheiden damit aus.
    Commodore hat ja schon bei seinem 'professionellen' (parallelen) IEC-Bus gemurkst, in dem sie den Bus direkt an die Portbausteine gehängt haben, anstelle die 7516x-Bustreiber zu verwenden.
    Daß das gerade mit Schnelladern nicht stabiler wird, ist auch klar: je höher die Frequenz, um so mehr muß man sich um Reflexionen und damit einhergehenden Dingen wie Wellenwiderstand, Leitungsabschluß, etc. aktiv kümmern.
    Einfach einen Leitungsabschluß (120 Ohm) zu machen geht auch nicht, weil die Portbaustene von C64 und Peripherie keine 60 Ohm Last treiben können.



    Lösungesansätze:


    - Kabel so kurz wie möglich
    - hochwertige Kabel (zusätzliche Schirmung bedeutet auch zusätzliche kapazitive Last, kann also alles auch noch schlimmer machen)
    - Leitungstreiber (setzt Kernalanpassungen wegen der dann notwendigen Richtungsumschaltung voraus) - nicht kompatibilitätsfördernd
    - ????

  • In meinen Augen ein unlösbares Problem.


    Mehr als ein eingeschaltetes Gerät mögen manche loader nicht.


    Manche Geräte stören den Bus wenn sie ausgeschaltet sind.


    Die 1581 hat am C64 Wechselwirkungen mit dem Kassettenport.


    Muss man alles handoptimieren ;)


    Gruß per gprs aus der Wildnis.

    Zuletzt repariert:
    21.2. Logitech M570 Microschalter ausgetauscht - geplante Obsoleszenz durch Billigtaster?
    19.11. Toshiba 3,5" Floppy defekter Elko durch Kerko getauscht auf Motorplatine
    27.11. 1541B Dauerlauf, Elko im Resetschaltkreis defekt, nicht der 7406 wie zuerst verdächtigt!

  • Einfach einen Leitungsabschluß (120 Ohm) zu machen geht auch nicht, weil die Portbaustene von C64 und Peripherie keine 60 Ohm Last treiben können.


    Äh, weder im C64 noch in den Floppylaufwerken muss ein Portbaustein die Leitung direkt treiben - da sind überall Open-Collector-Inverter verbaut.


    Quote

    - Leitungstreiber (setzt Kernalanpassungen wegen der dann notwendigen Richtungsumschaltung voraus) - nicht kompatibilitätsfördernd


    Wenn du damit meinst, die Leitungen aktiv auf High treiben zu wollen müsstest du erstmal das Protokoll komplett umdefinieren - das Orginal setzt an einigen Stellen vorraus, dass mehrere Geräte am Bus eine Leitung nicht alle gleichzeitig auf den gleichen Pegel setzen müssen. Mir fällt da spontan ein Problem von vor ein paar VICE-Versionen ein - da wurde noch ein altes 1541-ROM mitgeliefert welches an einer Stelle nicht darauf gewartet hat, dass eine Leitung wieder auf High zurückgekehrt ist und deswegen mit zwei angeschlossenen Laufwerken gelegentlich ausgestiegen ist.


    Quote

    Daß das gerade mit Schnelladern nicht stabiler wird, ist auch klar: je höher die Frequenz, um so mehr muß man sich um Reflexionen und damit einhergehenden Dingen wie Wellenwiderstand, Leitungsabschluß, etc. aktiv kümmern.


    Ich habe übrigens noch keinen Fastloader gesehen, der zwischen zwei Bit(paaren) auf dem Bus weniger als 9 Mikrosekunden vergehen lässt. Das theoretische Minimum sollten 4 Mikrosekunden sein, damit wäre man maximal bei einem 125kHz-Rechtecksignal.


  • Commodore hat ja schon bei seinem 'professionellen' (parallelen) IEC-Bus gemurkst, in dem sie den Bus direkt an die Portbausteine gehängt haben, anstelle die 7516x-Bustreiber zu verwenden.


    Haben sie das? Meine Erinneung sieht anders aus, auch das was ich an Schaltplänen zum PET und so finden konnte. Ich sehe da immer noch MC3446 als Bustreiber.

  • Also ich habe jetzt nicht in die Schaltpläne geschaut. Fakt ist, das der Commodore-IEC-Bus (ich meine) auf insgesamt 3m begrenzt ist, während IEEE488 meines Wissens nach in Summe 15m kann (korrigiert mich, wenn Ihrs besser wisst).


    Ein OC-Inverter ist halt leider kein Leitungstreiber, der hat ein ähnliches Verhalten wie der Portausgang. Ein Leitungstreiber muß relativ große Stromspitzen treiben können, um der Leitungskapazität (die beim gleichen Kabeltyp proportional zur Kabellänge steigt) etwas entgegensetzen zu können, und zwar in beide Richtungen (nach High und nach Low). Und richtig, das widerspricht dem IEC-Bus-Protokoll, das ja davon lebt, daß eine Leitung im inaktiver Zustand High ist und von jedem angeschlossenen Gerät auf Low gezogen werden kann. Die eingesetzten Treiber müßten also auf jeden Fall Tri-State können. Das war auch mehr eine theoretische Betrachtung - die würde in der Praxis auf jeden Fall Kompatibilitätsprobleme bringen, weil sich mit den dann unvermeidlichen Richtungsumschaltungen auch das Timing leicht verändert (die zusätzlichen Befehle müssen ja auch abgearbeitet werden).
    Ein anderes Thema, warum mehrere Geräte Probleme machen können ist auch, daß der High-Pegel der Leitungen sich verändert, wenn mehrere Geräte, die nicht alle eingeschaltet sind, am Bus hängen. Die eigentlich als Pull-Up-Widerstände gedachten Widerstände ziehen dann den Pegel statt gegen +5V gegen Null und bilden so mit den in den eingeschalteten Geräten vorhandenen Pull-Up-Widerständen einen Spannungsteiler. Und High ist laut Definition bei TTL alles >2,4V.

  • Nun, der IEC-Bus sollte billig sein und trotzdem schnell. Letzteres fiel wegen dem Fehler im Schieberegister des 6522 erstmal unter den Tisch. Als beim Produktionsstart des C64 dann noch jemand die 'unnützen' Leiterbahnen zwischen CIA und IEC-Buchse aus dem Layout der Platine entfernte war trotz korrekt funktionierendem Schieberegister im 6526 auch nichts mehr mit 'schnell'.


    Open-Collector-Treiber mit Pullup sind nicht optimal, aber je mehr Geräte man am Bus hat, desto kleiner ist der resultierende Pullup und damit die Flanke LOW->HIGH steiler.


    Das mit den abgeschalteten Geräten ist korrekt und der Grund warum man keine abgeschalteten Geräte am Bus haben soll.

  • Quote

    Fakt ist, das der Commodore-IEC-Bus (ich meine) auf insgesamt 3m begrenzt ist


    dafür hätte ich gerne mal eine belastbare quelle - fakt ist nämlich eher das niemand auch nur eine einzige solche nennen kann wo irgendetwas zur maximalen länge des IEC bus steht :) in diversr anderer literatur (sehr oft zeitschriften) findet man alles zwischen 1.5m und 5m :)

  • Ein OC-Inverter ist halt leider kein Leitungstreiber, der hat ein ähnliches Verhalten wie der Portausgang.


    Erläutere das doch mal netterweise näher, auch unter Berücksichtigung von z.B. Datenblattangaben wie zB I_OL 16mA bei V_OL 0,4V beim 7406 (40mA bei 0,7V) im Vergleich zu I_OL 3.2mA bei V_OL 0.4V des 6526.


    Wenn der Strom nicht reicht könnte man den 7406 natürlich auch durch ein paar NTP60N06L ersetzen. ;)

  • Auch der IEEE-488-Bus hat und braucht OC-Treiber, auch wenn es da schmutzige Tricks mit aktiven Pull-Ups gibt.


    Die IEC-Kabel schaffen locker Videofrequenzen (also >5MHz) und laut irgend einem Service-Manual zu einer Floppy (IIRC) ist der Bus auf vier Floppys plus einen Drucker ausgelegt. ALso 5 Segmente a (Länge der üblichen Floppy-Kabel) was den genannten drei Metren ganz gut entspricht. Wichtiger als die Kabellänge scheint mir hier der in jeder Floppy verbaute Pull-Up (und eventuell die Reflexionen an den Steckverbindungen?) zu sein.


    Für ein Consumergerät mit Kabeln, die einen Faktor hundert billiger waren als die 'echten' IEEE-Kabel ist das durchaus kein schlechterKompromiß.


    EDIT: Alles unterhalb IGBT ist kein Leitungstreiber, sondern Papierblumenfalten.

  • Ich habe die relative Zeitdifferenz gemessen, die vom Aussenden eines Signals vom C64 zur Floppy, deren Reaktion bis zum Wiederempfang am C64 gemessen:

    Code
    1. C64=fall C64=stei C64=fall C64=stei
    2. 41=fall 41=fall 41=stei 41=stei
    3. 2,86µs 2,83µs 2,89µs 2,86µs 1541-2 1. von 1 seriellen Geräten
    4. 2,99µs 2,85µs 2,97µs 2,83µs 1541-2 1. von 5 seriellen Geräten
    5. 3,00µs 2,94µs 3,01µs 2,94µs 1541-2 5. von 5 seriellen Geräten

    Die Differenz zwischen einer einzigen Floppy zu der fünften von fünf Floppys beträgt nur 0,15µs. Dies ist im Vergleich zur 7µs-Warteschleife eines 1MHz-6502 sehr wenig. Falls dies Probleme mit einem Speeder geben sollte, dann wäre er hart am Limit programmiert.