Das Timing des s88-Bus
Ausgangssituation
Leider gibt es keine offizielle Spezifikation für den S88-Bus, daher versuchen wir hier, anhand der bisher gebräuchlichen Chips und der Verdrahtungssituation eine sinnvolle Spezifikation zu geben. Ziel ist eine weitgehende Kompatibilität der Module zu erreichen. Leider sträuben sich manche Firmen (wie z.B. ESU) Details bekannt zu geben, man ist also auf Messungen an Einzelexemplaren angewiesen.
Analyse:
Im Orginalinterface sind HEF4014 verbaut, diese haben (bei 5V) eine tsetup bis zu 35ns und eine thold bis 30ns. Die Durchlaufzeit tpd beträgt 260ns.
Es sind Leitungen angeschlossen, diese bringen sowohl Laufzeit als auch Kapazitätsbelag mit: übliche Kabel haben ca. tpd von 6,6ns/m, was bei einer angenommenen Maximallänge von 30m in Summe 200ns ergibt. Der Kapazitätbelag wirkt zusammen mit einem Ausgangswiderstand als Tiefpass, z.B. verursachen 44pF/m bei einem Quellwiderstand von 250 Ohm eine trc von 1ns/m.
Das Steuertiming aller bekannten Zentralen (IB, HSI88, MC, 6050, etc.) arbeitet mit extrem langsamer Bitsteuerung per Software, die jeweiligen Signalwechsel werden nach einigen 10µs vorgenommen.
Clockraten bisheriger Interfaces | |||
---|---|---|---|
Zentrale | t(high_min) | t(low_min) | Comment |
Tams | 100µs | 100µs | wenig Jitter, Scan alle 4,9ms |
Littfinski HSI88 | 150µs | 150µs | wenig Jitter |
Intellibox | 30µs | 25µs | starker Jitter, im Mittel etwa 70µs |
Nano-X-s88 | 50µs | 50µs | Jitter nur bei t-low |
OpenDCC | 20µs | 20µs | Jitter, Timing per CV einstellbar |
ECoS | 25µs | 25µs | inoffzielle, nicht kontrollierte Angabe. ESU hat eine entsprechende Auskunft mit 'kopierschutzrechtlichen Gründen' (hört, hört) verweigert |
Darauf haben sich auch einige Implemenierungen eingestellt - der S88 wird oft über einen Microcontroller realisiert und je nach Anbieter sind die entsprechenden Routinen unterschiedlich schnell. (Blücher scheint mind. 140µs Zykluszeit zu fordern, railway-lauf.de mind. 200µs).
Problemfälle:
- Mischung von verschiedenen S88-Bausteinen:
Kombiniert man aktuelle, schnelle Bausteine mit langsamen 4014 Chips, so kann es zu Verletzungen der thold kommen. - Impedanzfehler:
Die S88-Leitungen laufen *ziemlich* fehlangepasst, es kann zu Reflexionen und in Folge zu Doppeltaktungen bzw. falsch gelesenen Daten kommen.
Normiertes Timing:
- Am Eingang eines Moduls:
tsetup < 50ns, thold < 50ns, jeweils bezogen auf die steigende Clockflanke; durch das langsame Timing bleibt noch Margin für eventuelle Dämpfungsglieder in der Clock und Datenleitung. - Am Ausgang eines Moduls:
tpd > 1µs, damit das nächste Modul sicher ohne Setup/Holdverletzungen schalten kann. Zusätzlich muß tpd < 14µs (bezogen auf die negative Clockflanke) gelten. Das ergibt zusammen mit der u.g. Zykluszeit für tlow ein rechtzeitiges Schalten vor dem Einlesen in die Zentrale. Damit ergibt sich ein maximaler Lesetakt von ca. 30kHz, was bei weitem reichen dürfte. Es wird empfohlen, den Modulausgang jeweils erst mit der negativen Clockflanke zu schalten. - Clock:
Hier empfiehlt sich eine Beschränkung der Flankensteilheit, um Reflexionen zu vermeiden. trise > 300ns.
tcycle > 30µs und thigh> 15µs und tlow > 15µs; Für S88-N Kompatibilität wird dieses Timing gefordert. Damit sollten sich auch per Mikrocontroller implementierte Module realisieren lassen.
Ältere Module brauchen fallweise ein langsameres Timing. Die Zentrale sollte hierzu eine Einstellmöglichkeit bieten.