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.
    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

    S88 Timing
    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:
  • 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.