Eine Kommunikationsfrage mit sichtbarem Licht bezüglich einer Präambelsequenz

Ich habe eine Frage zu Präambel und Präambelbrecher.

Ich implementiere eine einfache sichtbare Lichtkommunikation mit Arduino. Ich habe ein Manchester-Codierungsschema verwendet. Obwohl ich verstanden habe, dass eine Präambel erforderlich ist, um eine Synchronisation auf Wort-/Paketebene zu haben, da die Manchester-Codierung nur auf Bitebene und nicht auf Wort- oder Paketebene hilfreich ist, bin ich mir nicht sicher, welche Eigenschaften die Präambel haben sollte .

An diesem Punkt habe ich versucht, eine einfache Nachricht wie "Hallo Welt" unter Verwendung einer Präambel von 10101010 zu senden. Ich habe dies ohne viel Verständnis einer geeigneten Sequenz zur Verwendung als Präambel gesendet. Ich habe zwei solche Präambeln gesendet, einen "Präambelbrecher" und ein Start-of-Frame-Byte vor der Übertragung der eigentlichen Daten, das den gesamten Frame mit dem ETX (End of Frame) beendet.

Kurz vor dem Senden des STX (Beginn des Frames) habe ich für den Präambelbrecher 00101010 ausgewählt, wobei sich nur das letzte Bit unterscheidet.

Könnte mir bitte jemand die Wahl einer geeigneten Präambel erklären und auch, ob ein solcher Präambelbrecher notwendig ist, weil es bereits ein Start of Frame-Byte (in meinem Fall 0x02) gibt, bevor die eigentlichen Daten übertragen werden?

Danke schön.

Die zwei zusätzlichen Bits in der Präambel bearbeitet, um daraus ein Byte zu machen.

Antworten (2)

Die Präambel wird für die Synchronisation auf Byte-Ebene in der Ethernet-Schicht verwendet, die im Grunde ein byte-orientiertes Protokoll ist, im Gegensatz zu HDLC , einem bit-orientierten Protokoll, das mit Frames/Paketen mit Byte-Größe arbeitet.

In allen entwickelten Protokollen bleibt die Synchronisation der Bits, Bytes und Pakete ein Thema, mit dem man sich befassen muss, und es wurden verschiedene Algorithmen für eine effiziente Overhead-Erzeugung entwickelt. In bitorientierten Protokollen werden Flags verwendet, die als 01111110- Bitfolge dargestellt werden, was hilft, den Beginn des Frames zu identifizieren, wenn diese Folge in der Nutzlast identifiziert wurde, wurde sie vom Empfänger ersetzt. Weitere Informationen finden Sie unter Bitstuffing .

Im Fall von Byte-Stuffing-Protokollen, bei denen die Ethernet-Präambel zum Synchronisieren der Bytes verwendet wird, kann das gleiche Problem beim Byte-Stuffing auftreten, auch wenn Daten als Präambelmuster innerhalb der Nutzlast erscheinen können, um dies zu vermeiden, werden verschiedene Arten von Algorithmen verwendet als angegeben , und spezielle ESC-Bytes werden dazwischen gestopft, wenn Flags oder zusätzliche ESCs in Daten vorkommen.

In Anbetracht Ihres Falls hängt es davon ab, welche Art von Kompatibilität Ihr System wünscht. Sie können eine variable Präambel entwerfen, aber die Hauptidee besteht darin, ihr Auftreten zu begrenzen, dh ein weniger wahrscheinliches Muster zu verwenden, das die Zeiten verringert, in denen Ihr Empfänger auf Daten stößt, die denen Ihrer Präambel entsprechen .

Es ist ein rein systemabhängiger Aufruf, Sie können Ihr Design vereinfachen, wenn Ihre Daten auf alphabetischen und numerischen Kontext beschränkt sind, dann kann jedes Sonderzeichen im erweiterten ASCII als Präambel verwendet werden, aber wenn es sich um komplexe Datentypen und Formate handelt, dann natürlich Sie Sie müssen einen Präambelcode mit Bedacht generieren, außerdem wird eher empfohlen, sich an die IEEE-Standards zu halten.

NEC hat ein Infrarot-Übertragungsprotokoll für seine TV-Fernbedienungen entwickelt. Hier ist ihr Paketformat:

  • ein 9 ms führender Impulsburst (das 16-fache der Impulsburstlänge, die für ein logisches Datenbit verwendet wird)
  • ein 4,5-ms-Raum
  • die 8-Bit-Adresse für das empfangende Gerät
  • das logische 8-Bit-Inverse der Adresse
  • der 8-Bit-Befehl
  • die logische 8-Bit-Inverse des Befehls
  • ein abschließender Impulsstoß von 562,5 µs, um das Ende der Nachrichtenübertragung anzuzeigen.Geben Sie hier die Bildbeschreibung ein

Es ist schwer zu sagen, was genau Sie brauchen, ohne alle Faktoren in Ihrem System zu verstehen. Ich hoffe das hilft.