Das Timing an S88-Bus
Ausgangssituation
-
Leider gibt es keine offizielle Spezifikation für den S88-Bus,
daher versuche ich 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. (Quelle: 4014-Datenblatt von Philips)
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 11ns/m.
Das Steuertiming aller bekannten Zentralen (IB, HSI88, M*) 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 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 - offenbar wissen sie es einfach selbst nicht genau. - 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.
- Mischung von verschiedenen S88-Bausteinen:
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 soll hierzu eine Einstellmöglichkeit bieten. - Reset:
Dieser erfolgt asynchron und übersteuert LOAD oder CLOCK.
Die Daten werden bei S88 mit steigender Flanke übernommen. Nach der Verzögerungszeit t(pd) des Moduls werden die übernommenen Daten am Ausgang sichtbar.
Kombiniert man nun eine sehr schnelle Quelle (welche ihren Ausgang ganz kurz nach der Clock-Flanke ändert) mit einem langsamen Empfänger, welcher eine große t(hold) braucht, dann kann es Timingfehler geben.
Um dies sicher zu verhindern, werden bei s88-N Werte für tsetup, thold und tpd vorgegeben, damit die folgenden zwei Bedingungen für eine einwandfreie Übertragung sicher eingehalten werden:
1. tpd > thold
2. tpd + tsetup < tcycle
Die Bedingung 1 kann man z.B. dadurch sicherstellen, dass man den Ausgang erst mit der negativen Flanke schaltet.
Timing: