DE112020006288T5 - Verlustfreie Komprimierung der Datenübertragung - Google Patents

Verlustfreie Komprimierung der Datenübertragung Download PDF

Info

Publication number
DE112020006288T5
DE112020006288T5 DE112020006288.0T DE112020006288T DE112020006288T5 DE 112020006288 T5 DE112020006288 T5 DE 112020006288T5 DE 112020006288 T DE112020006288 T DE 112020006288T DE 112020006288 T5 DE112020006288 T5 DE 112020006288T5
Authority
DE
Germany
Prior art keywords
data
sample
procedure
bit
electronic device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE112020006288.0T
Other languages
English (en)
Inventor
Philipp Dunst
Joachim LECHNER
Herbert Lenhard
Bernhard Greimel-Rechling
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ams Osram AG
Original Assignee
Ams AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Ams AG filed Critical Ams AG
Publication of DE112020006288T5 publication Critical patent/DE112020006288T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/60General implementation details not specific to a particular type of compression
    • H03M7/6005Decoder aspects
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3059Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
    • H03M7/3062Compressive sampling or sensing
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01JMEASUREMENT OF INTENSITY, VELOCITY, SPECTRAL CONTENT, POLARISATION, PHASE OR PULSE CHARACTERISTICS OF INFRARED, VISIBLE OR ULTRAVIOLET LIGHT; COLORIMETRY; RADIATION PYROMETRY
    • G01J1/00Photometry, e.g. photographic exposure meter
    • G01J1/42Photometry, e.g. photographic exposure meter using electric radiation detectors
    • G01J1/4204Photometry, e.g. photographic exposure meter using electric radiation detectors with determination of ambient light

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

Wir offenbaren hier ein Verfahren zur Komprimierung von Daten für die Datenübertragung in einem elektronischen Gerät. Das Verfahren umfasst: Empfangen einer Vielzahl von Datenproben, die von einem Element der elektronischen Vorrichtung erzeugt werden, an einem ersten Verarbeitungselement der elektronischen Vorrichtung, wobei die Datenproben numerische Bits umfassen; Umstrukturieren der Vielzahl von Datenproben in eine Vielzahl von Datenpaketen durch das erste Verarbeitungselement; Kennzeichnen jedes Datenpakets mit einem Probenindikatorbit, um eine Vielzahl von Gruppen über die Vielzahl von Datenpaketen hinweg anzuzeigen; Übertragen eines Bitstroms, der mindestens einige der mehreren Datenpakete umfasst, über eine Schnittstelle der elektronischen Vorrichtung an ein Empfangselement der elektronischen Vorrichtung; und Dekodieren des Bitstroms durch ein zweites Verarbeitungselement der elektronischen Vorrichtung, um mindestens einige der mehreren Datenproben zu erhalten, wobei die Dekodierung mindestens teilweise auf den Probenindikatorbits basiert.

Description

  • HINTERGRUND
  • Die vorliegende Offenlegung bezieht sich auf Datenkompressionstechniken.
  • Elektronische Geräte, wie z. B. Mobilgeräte, verfügen in der Regel über Bildschirme mit einstellbarer Helligkeit. Die automatische Einstellung der Bildschirmhelligkeit kann durch die Verwendung eines Umgebungslichtsensors (ALS) erleichtert werden. Ein ALS hat die Aufgabe, die Helligkeit des Bildschirms an die Umgebungsbeleuchtung anzupassen, um das Display scharf und gut lesbar zu machen und gleichzeitig den Gesamtenergieverbrauch des Displays zu senken.
  • Die Datenübertragung in elektronischen Geräten für von ALS-Sensoren gewonnene Daten erfolgt normalerweise über eine I2C-Schnittstelle. Im Zuge der Entwicklung elektronischer Geräte wurden die Abtastraten von ALS-Sensoren erhöht, um z. B. Änderungen der Lichtverhältnisse schnell erkennen zu können.
  • Eine erhöhte Abtastrate erhöht die Menge der ALS-Daten, die über die I2C übertragen werden müssen. Mit zunehmender Datenmenge steigt die Wahrscheinlichkeit, dass die Busschnittstelle I2C mit Daten überlastet wird. Dieser Effekt kann daher die Abtastrate eines ALS-Sensors einschränken, damit er die I2C nicht mit Sensordaten überlastet. Eine Erhöhung der Datenmenge oder der Effizienz, mit der Daten über die I2C-Schnittstelle übertragen werden können, würde eine Erhöhung der Abtastrate eines ALS-Sensors in einem elektronischen Gerät ermöglichen.
  • Zum Stand der Technik gehört die US 2019/101442 , „METHOD OF AMBIENT LUMINOSITY LEVEL DETECTION, AND CORRESPONDING SENSOR“, die sich auf das Zurücksetzen und Auslösen eines Zählers jedes Mal bezieht, wenn eine von einer Umgebungslichtstrahlung beleuchtete Fotodiode einen Entladeschwellenwert erreicht.
  • ZUSAMMENFASSUNG
  • Zusätzlich zur verlustfreien Datenkomprimierung bieten Ausführungsformen der vorliegenden Offenlegung einen Algorithmus mit einer unkomplizierten Implementierung. Dies ist vorteilhaft, weil der Algorithmus in Ausführungsformen in der Hardware eines elektronischen Geräts implementiert ist und schnell genug ausgeführt werden kann, um die Anforderungen der Abtastrate eines Messsensors zu erfüllen. Mit anderen Worten: Zusätzlich zu einer verbesserten Datenkompression kann der Kompressionsalgorithmus selbst effizient ausgeführt werden, um einen hohen Datendurchsatz zu komprimieren, der den Anforderungen des Sensors entspricht. Auf diese Weise können die vorhandene Hardware und die Schnittstellen elektronischer Geräte beibehalten bzw. wiederverwendet werden, wobei z. B. verbesserte Sensoren mit höheren Abtastraten eingesetzt werden können.
  • Gemäß einem Aspekt der vorliegenden Offenbarung wird ein Verfahren zur Komprimierung von Daten für die Datenübertragung in einer elektronischen Vorrichtung, wobei das Verfahren Folgendes umfasst:
    • Empfangen einer Vielzahl von Datenproben, die von einem Element der elektronischen Vorrichtung erzeugt werden, an einem ersten Verarbeitungselement der elektronischen Vorrichtung, wobei die Datenproben numerische Bits umfassen;
    • Umstrukturierung der Vielzahl von Datenproben durch das erste Verarbeitungselement in eine Vielzahl von Datenpaketen;
    • Kennzeichnung jedes Datenpakets mit einem Probenindikatorbit, um eine Vielzahl von Gruppen über die Vielzahl von Datenpaketen hinweg anzuzeigen;
    • Übertragen eines Bitstroms, der zumindest einige der mehreren Datenpakete umfasst, über eine Schnittstelle der elektronischen Vorrichtung an ein Empfangselement der elektronischen Vorrichtung;
    • Dekodieren des Bitstroms durch ein zweites Verarbeitungselement der elektronischen Vorrichtung, um zumindest einige der mehreren Datenproben zu erhalten, wobei die Dekodierung zumindest teilweise auf den Probenindikatorbits basiert.
  • Die Indikatorbits können so gewählt werden, dass jede Gruppe von Datenpaketen (wobei jede Gruppe zur gleichen Datenprobe gehören kann) das gleiche/passende Indikatorbit enthält. Die festgelegte Größe des Datenpakets kann für jedes Paket gleich sein, oder die festgelegte Größe kann dynamisch entsprechend dem Verlauf der Datenprobengrößen geändert werden. Alternativ kann die definierte Paketgröße so vorgegeben werden, dass sie sich regelmäßig gemäß einer vordefinierten Sequenz ändert. Es wird deutlich, dass der Probenindikator nicht unbedingt 1 Bit entspricht.
  • Die Umstrukturierung der Datenproben in Datenpakete kann in einer Reihenfolge erfolgen, die der Reihenfolge entspricht, in der die Datenproben empfangen wurden. Auf diese Weise wird die gleiche Reihenfolge der Samples und der Bits innerhalb der Samples während der gesamten Übertragung beibehalten, so dass der Empfänger die ursprüngliche Reihenfolge der Datensamples wiederherstellen kann.
  • Dieser Aspekt der Datenkomprimierung reduziert somit die über die Schnittstelle/den Bus übertragene Datenmenge. Dies hat den Vorteil, dass die Schnittstelle, bei der es sich um eine serielle oder parallele Schnittstelle (z. B. I2C) handeln kann, in der Architektur der bestehenden Geräte beibehalten werden kann. Das bedeutet, dass zum Beispiel keine zusätzlichen Pins oder andere Änderungen an der bestehenden Gerätearchitektur erforderlich sind. Mit anderen Worten, es ist keine Änderung der Hardware erforderlich, um die Durchsatzkapazität der Schnittstelle zu erhöhen; stattdessen wird die Effizienz, mit der die Informationen selbst übertragen werden, verbessert. Ein überraschendes Ergebnis der vorliegenden Offenlegung ist, dass ein Algorithmus mit einem unkomplizierten Implementierungsverfahren (insbesondere im Vergleich zu bekannten Kompressionsverfahren) Kompressionsraten von mehr als dem Faktor zwei erzielen kann.
  • Darüber hinaus wird durch die oben beschriebene Komprimierungsmethode die Anzahl der Bits reduziert, so dass die Übertragung von Informationen zwangsläufig zu einer Verringerung des Stromverbrauchs des Busses führt.
  • Jede Gruppe aus der Vielzahl der Gruppen kann jeweils einer anderen Datenprobe entsprechen.
  • Die Dekodierung kann Folgendes umfassen:
    • Identifizierung, basierend auf den Probenindikatorbits, der Vielzahl von Gruppen von Datenpaketen, die die verschiedenen jeweiligen Datenproben darstellen;
    • Entfernen des Probenindikatorbits aus jedem Datenpaket, um die Vielzahl der ursprünglich von dem Element empfangenen Datenproben zu erhalten.
  • Die Indikatoren ermöglichen es dem Empfänger, den Bitstrom in Datenpakete umzuorganisieren, die Datenpakete den richtigen Datenproben zuzuordnen, aus denen die Datenpakete stammen, und die Indikatorbits zu entfernen, um die Datenproben zu erhalten. Alternativ kann der Empfänger den Bitstrom auch nicht in Pakete aufteilen. Der Empfänger kann den Bitstrom einfach direkt in die Gruppen einteilen, die die Datenproben darstellen, und anschließend das Probenindikatorbit entfernen.
  • Das Verfahren kann ferner umfassen:
    • vor der Umstrukturierung die Berechnung der numerischen Unterschiede zwischen jedem Paar benachbarter Datenproben, um eine Vielzahl von Differenzwerten zu erhalten;
    • Umstrukturierung durch das erste Verarbeitungselement der Vielzahl von Differenzwerten anstelle der Datenproben, um die Vielzahl von Datenpaketen zu erhalten.
  • Vorteilhafterweise kann die Berechnung der Differenz vor der Strukturierung der Proben in Pakete und deren Übertragung alle Datenproben mit höheren Werten ausgleichen (die eine größere Anzahl von Bits erfordern, um sie vollständig darzustellen). Daher kann die Berechnung der Differenz zwischen benachbarten Datenproben überraschend große Effizienzgewinne bringen, z. B. wenn eine Folge von aufeinanderfolgenden Datenproben sehr ähnliche Werte aufweist. So können die relativen Unterschiede zwischen jedem Paar benachbarter Werte durch eine viel kleinere Zahl dargestellt werden als der Wert der ursprünglichen Datenprobe.
  • Außerdem kann jeder negative Differenzwert in Zweierkomplementdarstellung dargestellt werden. Vorteilhafterweise ist die Zweierkomplement-Darstellung eine inhärent effiziente Methode zur Speicherung und Übertragung negativer Zahlen, da die Zweierkomplement-Darstellung kein spezielles „Vorzeichen“-Bit enthält. Stattdessen wird das erste Bit einer Zweierkomplement-Darstellung verwendet, um sowohl das Vorzeichen als auch einen Teil des Wertes der dargestellten Zahl zu kennzeichnen (d. h. das „höchstwertige Bit“).
  • Die Umstrukturierung kann für jede Datenprobe Folgendes beinhalten: Aufteilung der numerischen Bits der Datenprobe in die geringstmögliche Anzahl von Datenpaketen, die erforderlich sind, um die in der Datenprobe enthaltenen Informationen darzustellen.
  • Auf diese Weise können alle „Null“-Bits, die dem höchstwertigen Bit in der Datenprobennummer vorausgehen, entfernt werden und werden nicht als Teil des Bitstroms übertragen. Mit anderen Worten: Vorteilhaft ist jedoch, dass alle Bits, die Informationen über den Wert der Datenprobe enthalten, übertragen werden; die Komprimierungsmethode ist also verlustfrei. Beispielsweise kann ein Satz von Datenproben komplett in einem 8-Bit-Format am ersten Verarbeitungselement empfangen werden. Der Satz von Datenproben kann jedoch jeweils Werte von weniger als 63 repräsentieren und benötigt daher höchstens 6 Bits zur Darstellung der Zahl. Daher kann eine definierte Paketgröße von 6 verwendet werden.
  • Jedes Datenpaket aus der Vielzahl der Datenpakete kann eine bestimmte Größe haben.
  • Das Verfahren kann ferner umfassen:
    • Überwachung der Umstrukturierung von Datenproben in Datenpakete durch das erste Verarbeitungselement, das zweite Verarbeitungselement oder das Empfangselement der elektronischen Vorrichtung, um eine durchschnittliche Anzahl von Datenpaketen pro Datenprobe zu erhalten;
    • dynamisches Einstellen der definierten Größe der Vielzahl von Datenpaketen auf der Grundlage der durchschnittlichen Anzahl von Datenpaketen pro Datenprobe.
  • Auf diese Weise kann der Empfänger oder der Sender (d. h. das erste Verarbeitungselement) den Verlauf der Empfängerdatenproben überwachen, um die durchschnittlich benötigte Anzahl der verwendeten Datenpakete zu ermitteln. Daher kann die festgelegte Größe der Datenpakete dynamisch geändert werden, um die Informationen innerhalb der Datenproben effizient zu übertragen. Vorteilhafterweise können, wie bereits erwähnt, alle unnötigen „Null“-Bits, die dem höchstwertigen Bit in der Datenprobennummer vorausgehen und keine Informationen enthalten, aus den Datenpaketen entfernt werden.
  • Die Datenproben können für Signale repräsentativ sein, die von einem Sensorelement des elektronischen Geräts gemessen werden.
  • Das Sensorelement ist ein Umgebungslichtsensor.
  • Der obige Algorithmus liefert vorteilhafte Ergebnisse für Daten, die von einem Umgebungslichtsensor (ALS) gewonnen werden, insbesondere von einem ALS-Sensor, der zur Überwachung des Flimmerns einer Umgebungslichtquelle verwendet wird.
  • Das Element des elektronischen Geräts kann eine Reihe von Datenkanälen umfassen, die jeweils ein kanalspezifisches Datenmuster erzeugen.
  • Das Verfahren kann ferner umfassen: Empfangen der Vielzahl von Datenproben, die von dem Satz von Datenkanälen des Elements erzeugt werden; Umstrukturieren der Vielzahl von Datenproben durch das erste Verarbeitungselement, um die Vielzahl von Datenpaketen zu erhalten, wobei die Umstrukturierung für jede Datenprobe umfasst: Umstrukturieren der Datenprobe in mindestens ein Datenpaket, wobei das mindestens eine Datenpaket eine definierte Größe hat, die einem Datenkanal des Satzes von Datenkanälen entspricht, der die Datenprobe erzeugt hat.
  • Um die Verschwendung von „Null“-Bits, die keine Informationen enthalten, zu minimieren, kann für jeden Kanal eine andere Paketgröße festgelegt werden. So können beispielsweise verschiedene Kanäle Daten (z. B. Umgebungslichtdaten) mit unterschiedlichem Genauigkeitsgrad erfassen. Daher wären unterschiedliche Paketgrößen am besten geeignet, um die Datenproben für jeden Kanal möglichst effizient zu übertragen.
  • Die Indikatorbits können so gewählt werden, dass ein erstes Datenpaket jeder Gruppe von Datenpaketen ein erstes Indikatorbit (z. B. eine Eins) hat und alle anderen Datenpakete ein zweites, anderes Indikatorbit (z. B. eine Null).
  • Der Probenindikator kann an einer bestimmten Stelle des Datenpakets eingefügt werden.
  • Die Kennzeichnung kann ferner beinhalten, dass der Probenindikator in jedes Datenpaket an einer vordefinierten Stelle eingefügt wird, wobei die vordefinierte Stelle entsprechend einer vordefinierten Abfolge von Stellen wechselt.
  • Vorteilhafterweise wird es durch das Einfügen des Indikatorbits an verschiedenen Stellen/Bitpositionen innerhalb des Datenpakets immer schwieriger, den Bitstrom ohne vorherige Kenntnis der definierten Sequenz zu interpretieren oder zurückzuentwickeln. Darüber hinaus kann ein gewisser Grad an Verschlüsselung in die Daten eingefügt werden, um die im Bitstrom enthaltenen Informationen zu schützen.
  • Die Schnittstelle des elektronischen Geräts kann eine serielle Peripherieschnittstelle sein.
  • Die Schnittstelle des elektronischen Geräts kann eine I2C-Schnittstelle sein.
  • Vorteilhafterweise kann bestehende Technik mit vorhandenen seriellen Peripherie- oder I2C-Schnittstellen in unveränderter Form genutzt werden, um Informationen aufgrund der durch Beispiele des beschriebenen Kompressionsverfahrens erzielbaren Kompression mit höherer Effizienz zu übertragen.
  • Jede Datenprobe kann in binärer Form dargestellt werden.
  • Jede Datenprobe mit einem negativen Wert kann in Zweierkomplement-Binärform dargestellt werden.
  • Das erste Verarbeitungselement kann ein Hardware-Element sein, das eine dauerhafte Konfiguration aufweist, die es dem Hardware-Element ermöglicht, die Umstrukturierung und Kennzeichnung durchzuführen.
  • Ein nichtflüchtiger Datenträger, der einen Prozessorsteuerungscode enthält, der bei Ausführung die oben beschriebene Dekodierung implementiert.
  • Gemäß einem weiteren Aspekt der vorliegenden Offenbarung wird eine Vorrichtung bereitgestellt, die Folgendes umfasst: ein Element, das so konfiguriert ist, dass es Datenproben erzeugt; ein erstes Verarbeitungselement, das so konfiguriert ist, dass es eine Vielzahl von Datenproben empfängt, die von einem Element der elektronischen Vorrichtung erzeugt werden, wobei die Datenproben numerische Bits umfassen. Die Vorrichtung umfasst auch eine Schnittstelle, die mit dem ersten Verarbeitungselement und einem Empfangselement verbunden ist. Das erste Verarbeitungselement ist ferner konfiguriert, um: die Vielzahl von Datenproben in eine Vielzahl von Datenpaketen umzustrukturieren; jedes Datenpaket mit einem Probenindikatorbit zu kennzeichnen, um eine Vielzahl von Gruppen über die Vielzahl von Datenpaketen hinweg anzuzeigen; einen Bitstrom, der zumindest einige der Vielzahl von Datenpaketen umfasst, über die Schnittstelle an das Empfangselement zu übertragen; ein zweites Verarbeitungselement, das konfiguriert ist, um den Bitstrom zu dekodieren, um zumindest einige der Vielzahl von Datenproben zu erhalten, wobei die Dekodierung zumindest teilweise auf den Probenindikatorbits basiert.
  • Figurenliste
  • Ausführungsformen der vorliegenden Offenbarung sind in den folgenden Figuren dargestellt, in denen:
    • zeigt ein Beispiel für ein Verfahren zur Datenkompression und - Übertragung;
    • zeigt ein weiteres Beispiel für Datenkompression und -übertragung, bei dem das Delta benachbarter Datenwerte übertragen wird;
    • zeigt ein Beispiel für die gemäß verarbeiteten Daten, wie in Tabelle 3 dargestellt;
    • zeigt ein Beispiel für ein Verfahren zur Datenkompression für Daten, die von mehreren Datenkanälen mit unterschiedlichen Paketgrößen empfangen werden;
    • zeigt ein Diagramm, das ein allgemeines elektronisches Gerät darstellt, das so konfiguriert oder programmiert ist, dass es das Verfahren der bis ausführt; und
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die vorliegende Offenlegung bezieht sich insbesondere auf die verlustfreie Datenkompression für die effiziente Übertragung von Daten, die von Umgebungslichtsensoren (ALS = Ambient Light Sensor) in elektronischen Geräten gewonnen werden.
  • Es ist bekannt, dass ein ALS empfindlich auf das Flimmern künstlicher Lichtquellen reagiert, die von einer Wechselstromquelle gespeist werden. Die Abtastrate eines ALS beeinflusst die Empfindlichkeit des ALS gegenüber Flimmern. Beispielsweise kann ein ALS nicht in der Lage sein, mit einer ausreichend hohen Rate abzutasten, um das Flimmern einer künstlichen Lichtquelle zu berücksichtigen, was zu einer fehlerhaften Bestimmung der Umgebungslichtpegel führen kann.
  • Daher können geeignete elektronische Geräte so ausgestattet werden, dass sie Flimmern in Umgebungslichtquellen erkennen und abschwächen können. Beispielsweise kann ein ALS mit einer höheren Abtastrate eingesetzt werden, was es anderen Algorithmen innerhalb des elektronischen Geräts ermöglichen würde, Flimmern genauer abzuschwächen und einen genauen Durchschnittswert für die Umgebungslichtbedingungen zu ermitteln. Die Konfiguration eines ALS in einem Gerät kann auch eine Abhängigkeit von der Abtastrate schaffen, die für eine genaue Bestimmung der Umgebungslichtbedingungen erforderlich ist. So erfordert beispielsweise ein ALS-Sensor, der hinter einem Bildschirm eines elektronischen Geräts angeordnet ist, eine höhere Abtastrate.
  • Die Abtastrate für ein ALS ist jedoch proportional zur Menge des Datenverkehrs, der über den Übertragungsbus des elektronischen Geräts übertragen wird, bei dem es sich um einen seriellen Bus handeln kann, z. B. einen I2C-Bus. Dies kann zu Engpässen bei der Datenübertragung auf dem Bus führen.
  • Zu den bekannten Kompressionsalgorithmen gehören Lempel-Ziv-Welch (LZW) und adaptive Huffman. Diese Algorithmen erfordern jedoch eine komplexe Implementierung, was sie im Allgemeinen für die Verwendung bei der ALS-Flackerdatenübertragung ungeeignet macht. Daher ist es in der Technik nicht bekannt, ein Verfahren zur verlustfreien Datenkompression in Verbindung mit der ALS-Flackererkennung bereitzustellen.
  • Die vorliegende Offenlegung stellt ein Verfahren vor, mit dem der Datenverkehr im Vergleich zu bekannten Implementierungen um etwa einen Faktor 2 oder sogar mehr reduziert werden kann. Dennoch sind die Ausführungsformen der vorliegenden Offenbarung nicht auf die Übertragung von Daten beschränkt, die von einem ALS-Sensor gewonnen werden, oder auf Daten in Bezug auf eine erhöhte Abtastrate, um eine Flimmererkennung zu ermöglichen. Es wird daher deutlich, dass das vorliegende Verfahren nicht auf die Flimmererkennung beschränkt ist und in verschiedenen Szenarien verwendet werden kann, in denen Daten über einen seriellen oder parallelen Bus übertragen werden müssen.
  • Die ALS-Flackerdaten können ohne Komprimierung in einem 8-Bit- oder 16-Bit-Modus über I2C übertragen werden. Die Bitgröße variiert auch in Abhängigkeit von der Messzeit. Zur Unterstützung einer höheren Flimmerfrequenz wird die Abtastrate und/oder der Dynamikbereich erhöht, was zu einem höheren I2C-Verkehr führt. Beispielsweise erzeugt eine Abtastrate von 4 kHz bei einer Auflösung von 10 Bit, die über 100 ms (10-Hz-Bin-Abstand) abgetastet wird, 3,2k Bits, die über I2C übertragen werden. Bei Verwendung der gegenwärtig existierenden 8- oder 16-Bit-orientierten FIFO-Architektur (first-in, first-out) wären 400 Byte für 8-Bit- und 800 Byte für 16-Bit-Datenübertragung erforderlich.
  • Algorithmen gemäß den Ausführungsformen dieser Offenbarung können den I2C-Verkehr so reduzieren, dass die übertragenen Bytes im Bereich von 350 Bytes liegen, verglichen mit 800 Bytes, ohne dass Informationen verloren gehen. Vorteilhafterweise ermöglicht die verringerte Schnittstellenbelastung die Übertragung von mehr Daten mit der bestehenden Bustopologie in aktuellen elektronischen Geräten. Daher muss nur eine Änderung der Software-Implementierung in einem elektronischen Gerät vorgenommen werden, ohne dass die Architektur der elektronischen Geräte neu gestaltet werden muss.
  • Der Kompressionsalgorithmus kann in der Hardware oder Software des elektronischen Geräts implementiert werden. Beispielsweise kann der Algorithmus im elektronischen Gerät auf einem Chip wie einem FPGA (Field Programmable Gate Array) oder ASIC (Application Specific Integrated Circuit) fest kodiert sein. Hardware-implementierte Algorithmen können am effizientesten laufen, was von Vorteil ist, wenn sie schnell genug ausgeführt werden, um die Anforderungen der Abtastrate eines Sensors zu erfüllen. Hardware-ausführbarer Code kann auch ein Maß an Parallelisierung bieten, das bei einem software-implementierten Algorithmus nicht möglich ist.
  • Beispiel 1: Komprimierung
  • zeigt ein Flussdiagramm, das eine Reihe von Schritten des Komprimierungsalgorithmus darstellt, der sich in Ausführungsformen auf Daten beziehen kann, die zur Flimmererkennung eines ALS-Sensors verwendet werden. Das Datenkompressionsverfahren ist jedoch so allgemein, dass es für die Komprimierung und Übertragung verschiedener Datentypen anwendbar ist und sich nicht unbedingt auf Sensordaten bezieht. Außerdem ist der Algorithmus so allgemein, dass er für die Übertragung über jeden geeigneten seriellen oder parallelen Bus angewendet werden kann. Lediglich als Beispiel und der Einfachheit halber wird in Bezug auf Sensordaten beschrieben.
  • S100 - Empfang von RAW-Daten mit Datenwörtern, die gemessene Sensorwerte darstellen. Gemäß Schritt S100 werden Rohdaten von einem Sensor in einem elektronischen Gerät empfangen. Die Daten können die Form einer Folge von Zahlen haben. Die Zahlen können z. B. eine Einheit oder Angabe der Umgebungslichtintensität oder eine beliebige Anzahl von Größen darstellen, die von einem Sensor gemessen werden können. Jede Zahl wird als ein Datenwort bezeichnet. Das Datenwort kann als Binärzahl dargestellt werden, die zugrunde liegende Software oder Hardware kann jedoch jedes beliebige numerische Basissystem verwenden.
  • S102 - Umstrukturierung der Datenwörter in Pakete mit einer festen Größe von n - 1 Bit. In Schritt S102 wird jedes Datenwort in einzelne Pakete aufgeteilt bzw. umstrukturiert. Die Größe der Pakete wird vorzugsweise in Bits gemessen. Die Paketgröße kann vorgegeben sein und beispielsweise n - 1 Bits enthalten. Lediglich als Beispiel können Paketgrößen von n - 1 Bit verwendet werden, z. B. mit n = 6. Ein Datenwort, das aus 10 Bits besteht, wird also in 2 Pakete aufgeteilt. Ein anderes Datenwort, das aus 11 Bits besteht, würde in 3 Pakete aufgeteilt.
  • Alternativ kann die Paketgröße auch dynamisch in Abhängigkeit von der Größe der vom Sensor empfangenen Datenwörter gewählt werden. Wenn beispielsweise häufig Datenwörter mit 11 oder 12 Bits vom Sensor empfangen werden, kann der Algorithmus feststellen, dass es effizienter wäre, die Datenwörter in zwei Pakete mit einer Größe von 6 Bits zu unterteilen/umzustrukturieren, als in drei Pakete mit einer Größe von 5 Bits. Auf diese Weise werden weniger Nullen (die keine nützlichen Informationen vom Sensor darstellen) übertragen, und es kann ein höherer Komprimierungsgrad erzielt werden.
  • S104 - Einfügen eines Indikatorbits in jedes Paket an einer festen Position, um Pakete der Größe n Bits zu erhalten, wobei das Indikatorbit verschiedene Datenwörter identifiziert. Genauer gesagt, wird in Schritt S104 ein Indikatorbit an einer vorbestimmten Position innerhalb des Pakets eingefügt. Das Indikatorbit wird verwendet, um verschiedene Datenwörter zu identifizieren. Mit anderen Worten, das Indikatorbit wird verwendet, um den Beginn eines neuen Datenworts zu markieren. Ein Indikatorbit kann eine Null oder eine Eins sein, in alternativen Ausführungsformen, in denen Pakete nicht binär dargestellt werden, kann es jedoch eine beliebige Zahl sein. Anders ausgedrückt, das Abtastindikatorbit wechselt mit den übertragenen Datenwörtern. Die Datenwortlänge ist flexibel und nicht festgelegt und hängt von der Größe der vom Sensor empfangenen Zahlen ab. Alle Pakete in einem Datenwort haben die gleiche Position des Abtastindikatorbits. Das Indikatorbit (z. B. eine Null oder eine Eins) kann beispielsweise als Präfix in die Pakete eingefügt oder als Suffix angehängt werden. Die Paketgröße beträgt nun n Bits.
  • Die nachstehende Tabelle 1 zeigt ein Beispiel mit einer definierten Paketgröße von n = 6, nachdem das Indikatorbit hinzugefügt wurde.
    Bespiel-Paketgröße 6
    Beispielindikator Bit4 Bit3 Bit2 Bit1 Bit0
    5 4 3 2 1 0
    Bit
  • Die nachstehende Tabelle 2 zeigt ein Beispiel mit einer definierten Paketgröße von n = 7, nachdem das Indikatorbit hinzugefügt wurde.
    Bespiel-Paketgröße 6 7
    Beispielindikator Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
    6 5 4 3 2 1 0
    Bit
  • Mit diesem Mechanismus kann der Empfänger nach der Übertragung des Bitstroms den Anfang/Ende jedes Datenworts identifizieren. Durch Entfernen des einzelnen Bits, das das Indikatorbit darstellt, und Zusammenführen der Bits bis zum nächsten Indikatorwechsel wird das übertragene Datenwort rekonstruiert.
  • S106 - Übertragung der Pakete als Bitstrom von Daten an einen Empfänger. In Schritt S106 werden die Datenpakete als Bitstrom übertragen, der z. B. ein kontinuierlicher (ununterbrochener) Bitstrom sein kann.
  • S108 - Zerlegen des Bitstroms in einzelne Pakete. In Schritt S108 wird der Bitstrom in Pakete der vorbestimmten Länge, z. B. 6, aufgeteilt oder partitioniert. Wenn der Empfänger die vorgegebene Paketgröße kennt, wird der Bitstrom daher für jedes n-te Bit in ein neues Paket umstrukturiert/unterteilt.
  • S110 - Zuweisung der Pakete zu ihren jeweiligen Datenwörtern auf der Grundlage des Indikatorbits. In Schritt S110 bestimmt der Empfänger, welche Pakete zum selben Datenwort gehören, indem er das Indikatorbit an der vorbestimmten Position innerhalb der Pakete liest. Das Indikatorbit kann zum Beispiel das erste Bit in jedem Paket sein, und ein Indikatorbit von „1“ kann den Beginn des neuen Datenworts darstellen. So kann ein Indikatorbit von „0“ einen mittleren oder Endabschnitt eines Datenworts darstellen. Die Pakete werden dann in ihre jeweiligen Datenwörter eingeordnet. Die Reihenfolge der Datenwörter und Pakete wird in den Schritten S100 bis S110 beibehalten, so dass keine Sortierung oder Neuordnung der Pakete erforderlich ist.
  • S112 - Entfernen der Indikatorbits aus den Paketen, um die ursprünglichen RAW-Daten zu erhalten. In Schritt S112 werden nach der Zuordnung der Pakete zu ihren jeweiligen Datenwörtern die Indikatorbits aus den einzelnen Paketen entfernt. So erhält der Empfänger die ursprünglich vom Sensor empfangenen Rohdaten.
  • Die Schritte des beschriebenen Algorithmus und der sind in Tabelle 3 weiter unten beschrieben.
    S100 - Empfangen von Datenwörtern Dezimaler Wert
    Datenwort 1 00101 11011 11001 10100 192308
    Datenwort 2 00000 00000 00110 00110 -58 (Zweierkomplement)
    Datenwort x 00000 00000 00000 00000 0
    S102 - Unterteilung der Datenwörter in Pakete der Größe n - 1 (n = 6)
    Datenwort 1 00101 11011 11001 10100
    Datenwort 2 00110 00110
    Datenwort x 00000
    S104 - Einfügen des Indikatorbits als erstes Bit in jedes Paket
    Datenwort 1 100101 011011 011001 010100
    Datenwort 2 100110 000110
    Datenwort x 100000
    S106 - Übertragungspuffer (FIFO) Bitstrom
    1 00101 0 11011 0 11001 0 10100 1 00110 0 00110 1 00000
    S108 - Empfangen und Zerlegen des Bitstroms in Pakete der Größe n
    100101 011011 011001 010100 100110 000110 100000
    S110 - Zuordnung der Pakete zu den jeweiligen Datenwörtern mittels Indikatorbit
    Datenwort 1 100101 011011 011001 010100
    Datenwort 2 100110 000110
    Datenwort x 100000
    S112 - Entfernen des Probenindikators aus den Paketen
    Datenwort 1 00101 11011 11001 10100 192308
    Datenwort 2 00110 00110 58 (Zweierkomplement)
    Datenwort x 00000 0
  • Die unterstrichenen Ziffern in der obigen Tabelle 3 stellen die Indikatorbits dar.
  • Zusätzlich zu den oben beschriebenen Ausführungsformen können weitere optionale Elemente in den Algorithmus aufgenommen werden, um einen weiteren Komprimierungsgrad zu erreichen. So kann der Algorithmus beispielsweise vorsehen, dass nur positive Datenmuster übertragen werden. Dies hat den Vorteil, dass kein „Vorzeichenbit“ übertragen werden muss und somit die Anzahl der übertragenen Bits reduziert wird.
  • Alternativ können sowohl positive als auch negative Datenproben in Zweierkomplement-Darstellung übertragen werden. Auf diese Weise wird die Gesamtzahl der übertragenen Bits reduziert, da die Zweierkomplement-Darstellung eine speichereffizientere Art der Darstellung von Binärzahlen sein kann. Wird die Zweierkomplement-Darstellung zur Darstellung sowohl negativer als auch positiver Zahlen verwendet, ist die Differenz das Vorzeichenbit (0 im Falle positiver Zahlen, 1 im Falle negativer Zahlen), und bei der Übertragung von Differenzen wird im Allgemeinen diese Darstellung verwendet.
  • In einem weiteren alternativen Beispiel kann der Empfänger und/oder Sender die durchschnittlich benötigte Anzahl von Paketen für einzelne Datenwörter überwachen und die Paketgröße automatisch/dynamisch an ein Optimum anpassen. Wie bereits erwähnt, kann die dynamische Paketgröße so gewählt werden, dass die Anzahl der Nullen, die als erste Ziffernfolge von Binärzahlen verwendet werden (und die daher keine Informationen über die Größe der Probe enthalten), minimiert wird.
  • Beispiel 2: Delta-Kompression
  • In anderen Ausführungsbeispielen kann statt der RAW-Daten die Differenz (oder das Delta) zwischen benachbarten Werten übertragen werden. Nach dem Empfang kann der ursprüngliche Wertesatz auf der Grundlage der Differenzen und des Werts des ersten Datenworts berechnet werden. Auf diese Weise kann die Menge der übertragenen Daten in Abhängigkeit von den relativen Werten der Datenwörter vorteilhafterweise erheblich reduziert werden. Wenn die Datenwörter beispielsweise große Zahlen darstellen und eine Reihe von aufeinanderfolgenden Datenwörtern denselben Wert haben, ist die Differenz dieser aufeinanderfolgenden Datenwörter gleich Null und kann daher mit nur einem Bit dargestellt werden. Dies hat den Vorteil, dass es sich um eine verlustfreie Datenkomprimierungsmethode handelt. Negative Zahlen können in diesem Algorithmus in Zweierkomplement-Darstellung dargestellt werden. Mit dem Delta-Ansatz kann eine weitere Verbesserung des Komprimierungsverhältnisses für Daten im Zusammenhang mit ALS-Flackererkennungsdaten erreicht werden.
  • zeigt ein beispielhaftes Flussdiagramm, das eine Reihe von Schritten des Komprimierungsalgorithmus darstellt, der die Sensordaten so weiterverarbeitet, dass nur die Unterschiede zwischen aufeinanderfolgenden benachbarten Datenwörtern übertragen werden. Die Schritte in werden im Folgenden beschrieben. S100 - Empfang von RAW-Daten, die aus Datenwörtern bestehen, die gemessene Sensorwerte darstellen;
    • S101 - Berechnung der Differenz zwischen jeder aufeinander folgenden Zahl (Datenwort) und Speicherung der Differenz anstelle des ursprünglichen Datenworts in binärer Form, optional in binärer Zweierkomplementdarstellung;
    • S102 - Umstrukturierung der Datenwörter in Pakete mit einer festen Größe von n - 1 Bits;
    • S104 - Einfügen eines Indikatorbits in jedes Paket an einer festen Position, um Pakete der Größe n Bits zu erhalten, wobei das Indikatorbit verschiedene Datenwörter identifiziert;
    • S106 - Übertragung der Pakete als Bitstrom von Daten an einen Empfänger;
    • S108 - Zerlegung des Bitstroms in einzelne Pakete;
    • S110 - Zuordnung der Pakete zu ihren jeweiligen Datenwörtern auf der Grundlage des Indikatorbits;
    • S111 - Entfernen des Indikatorbits aus den Paketen, um die berechneten Differenzen in binärer Darstellung zu erhalten;
    • S113 - Addition der Differenzen zum ersten Datenwort, nacheinander für jedes Datenwort, um die ursprünglichen RAW-Daten zu erhalten;
  • Zusätzlich zu den in gezeigten Schritten veranschaulicht Schritt S101, bei dem die Differenzen oder Deltas zwischen aufeinanderfolgenden Zahlen berechnet werden. Jedes ursprüngliche Datenwort wird dann durch die berechnete Differenz zwischen diesem Datenwort und dem unmittelbar vorangehenden Datenwort ersetzt. Auf diese Weise bleibt das erste Datenwort in der Folge erhalten, so dass der gesamte Satz von Datenwörtern neu berechnet werden kann, sobald die Deltas übertragen worden sind. Optional können zur weiteren Effizienzsteigerung die negativen Zahlen (und optional die positiven Zahlen) in binärer Zweierkomplementdarstellung dargestellt werden.
  • Der Delta-Kompressionsalgorithmus umfasst den weiteren Schritt S111 des Entfernens des Indikatorbits aus den Deltazahlen. Anschließend müssen in Schritt S113 die Differenzwerte sukzessive zum ersten Datenwort addiert werden, um die ursprünglichen Werte des vom Sensor gemessenen Datenworts zu erhalten. Tabelle 4 zeigt ein Beispiel für eine Reihe von Datenwörtern, auf die vor der Übertragung der Delta-Kompressionsalgorithmus angewendet wurde. Die Paketgröße beträgt zum Beispiel 6.
    N-tes Datenwort Datenwort Delta Indikator-Bit Binäre Darstellung (Zweierkomplement) Paket 1 Paket 0
    0 - - - - - -
    1 338 338 0 0 101010010 0 0 1010 010010
    2 346 8 1 00000 0 1000 1 0 1000
    3 340 -6 0 11111 1 1010 0 1 1010
    4 337 -3 1 11111 1 1101 1 1 1101
    5 330 -7 0 11111 1 1001 0 1 1001
    6 325 -5 1 11111 1 1011 1 1 1011
    7 328 3 0 00000 0 0011 0 0 0011
    8 332 4 1 00000 0 0100 1 0 0100
    9 339 7 0 00000 0 0111 0 0 0111
    10 345 6 1 00000 0 0110 1 0 0110
    11 250 -95 0 1 110100001 0 1 1101 0 0 0001
    12 250 0 1 00000 0 0000 1 0 0000
    13 250 0 0 00000 0 0000 0 0 0000
    14 350 100 1 00011 0 0100 1 0 0011 100100
    15 350 0 0 00000 0 0000 0 0 0000
    16 350 0 1 00000 0 0000 1 0 0000
    17 10 -340 0 1 010101100 0 1 0101 001100
    18 10 0 1 00000 0 0000 1 0 0000
    19 10 0 0 00000 0 0000 0 0 0000
    20 10 0 1 00000 0 0000 1 0 0000
  • Die unterstrichenen Ziffern in der obigen Tabelle 4 stellen die Indikatorbits dar. Die fett und kursiv gedruckten Ziffern stellen das Vorzeichenbit der Zweierkomplementzahlen dar.
  • zeigt ein Diagramm 200 der ursprünglichen Datenwortwerte. Dargestellt sind die Deltas zwischen verschiedenen benachbarten Datenwörtern. Zum Beispiel ergibt das Delta 202 zwischen dem nullten Datenwort n0 = 0 und dem zweiten Datenwort n1 = 338 ein Delta von D0.1 = 338. Das Delta 204 zwischen n10 = 345 und n11 = 250 ergibt ein Delta von D10,11 = n11 - n10 = -95. Die Achsen stellen die Datenwortnummer 206x und den numerischen Wert des Datenworts (in Dezimalzahlen) 206y dar.
  • Die Zweierkomplement-Darstellung ist vorteilhaft, weil sie eine speichereffizientere Art der Darstellung negativer Zahlen im Binärformat ist und somit zu einer effizienteren Datenübertragung führt. Es wird jedoch deutlich, dass das obige Verfahren nicht auf eine binäre Zweierkomplement-Darstellung beschränkt ist und jede geeignete Darstellung des Delta-Werts verwendet werden kann.
  • Es wird deutlich, dass der Bereich der darstellbaren Differenzen beim Zweierkomplement „halbiert“ wird. Wenn zum Beispiel für jeden Wert maximal 10 Bits dargestellt werden können, reicht der darstellbare Bereich für Zahlen ohne Vorzeichen von 0-1023. Bei einer Zweierkomplement-Darstellung mit 10 Bits reicht der Bereich von -512 bis 511 (jede Bitposition hat ein Gewicht von 2^Position, außer dem Vorzeichenbit mit einem Wert von -2^Position, z. B. (-2^9, ..., 2^3, 2^2, 2^1, 2^0) = -512, ..., 8, 4, 2, 1). Wenn es zwei aufeinander folgende Werte von 1000 und 20 gibt und man die Differenz übertragen möchte, wäre das Ergebnis -980. Für die Darstellung dieser Differenz im Zweierkomplement würden 11 Bits benötigt. In einem Szenario, in dem maximal 10 Bits zur Verfügung stehen, ist es möglich, die Art der Bereichsumschaltung auf folgende Weise zu nutzen. Man würde das Wrapping über 10 Bits verwenden. Das heißt mod(1000+k,2^10)=20 dann k=23+20=44, oder anders geschrieben 20-1000+2^10=-980+1024=44. Anstatt also -980 (11Bit im Zweierkomplement b10000101100 = -1024 + 32 +8 + 4 = -980) zu übertragen, kann man auch 44 (7Bit im Zweierkomplement b0101100 = 44 = 32+8+4) übertragen. Um den richtigen Wert wiederherzustellen, muss man einfach mod(1000+44, 2^10) = 20 berechnen. Im Allgemeinen gilt das Gleiche in umgekehrter Richtung, z. B. von 12 auf 900 => Die Differenz ist +888, was sich nicht mit einem 10-Bit-Zweierkomplementwert darstellen lässt. Beim Rechnen gilt 900-12 - 2^10 = 888-1024 = -136.
  • Bei darstellbaren Werten ist die Modulo-Operation ebenfalls nützlich, z. B. resultiert ein Übergang von 500 auf 100 in -400 => mod(500-400,2^10)=100. Daher kann die Modulo-Operation bei der Dekodierung angewandt werden. Diese Methode kann entsprechend angepasst werden, wenn der Gesamtdarstellungsbereich nicht 10 Bits, sondern eine beliebige andere Anzahl von Bits beträgt. Der Fachmann wird verstehen, dass die obigen Beispiele auf das erfinderische Konzept der vorliegenden Offenbarung anwendbar sind.
  • Nach dem obigen konkreten Beispiel in Tabelle 4 würde bei der Übertragung der Daten der folgende Kompressionsfaktor erreicht werden:
    • Konventionelle Datenübertragung:
      • 16 Bit FIFO-Modus→ 20 x2 Byte = 40 Byte insgesamt.
    • Datenübertragung für das Beispiel Tabelle 4 mit Delta-Komprimierung:
      • Datenkompression mit Zweierkomplement und definierter Paketgröße (6 Bit) → 24 ×6 Bit /8 = 18 Byte insgesamt
    • Erreichtes Verdichtungsverhältnis:
      • 40 Byte: 18 Byte→ Verhältnis 2,22 : 1.
  • Daher wird durch die Übertragung der Zweierkomplement-Darstellung der Differenz zwischen benachbarten Datenwortwerten ein Kompressionsfaktor von über 2 erreicht. Außerdem werden bei der obigen Implementierung die genauen Eingabedaten beibehalten, so dass die Kompression verlustfrei ist. Ähnlich wie im ersten Beispiel kann auch eine dynamische Paketgröße implementiert werden, z. B. auf der Grundlage des Paketverlaufs. Auf diese Weise kann die Paketgröße so gewählt werden, dass „verschwendete“ Nullen, die den Paketwerten vorausgehen, minimiert werden, so dass möglichst viele Ziffern jedes Pakets Informationen über den zugrunde liegenden Datenwortwert vermitteln. Es dürfte klar sein, dass beim Zweierkomplement auch 1'en verschwendet werden können.
  • Beispiel 3: Komprimierung mit mehreren Kanälen
  • Wie bereits erwähnt, können Datenwörter von Kanälen mit einer bestimmten Bitbreite empfangen werden. Es kann vorteilhaft sein, die Bitbreite des empfangenen Datenworts im Paket beizubehalten, oder es kann alternativ effizienter sein, die Breite der Pakete dynamisch zu verändern, um die in den Datenwörtern enthaltenen Informationen möglichst effizient zu übertragen.
  • In alternativen Beispielen kann ein Sensor mehrere Kanäle enthalten, die z. B. jeweils eine unterschiedliche Empfindlichkeit haben oder jeweils einen bestimmten Bereich innerhalb des Spektrums des Umgebungslichts messen können. Daher können Sätze von Datenwörtern vom Sensor gemessen werden, wobei jedes Datenwort innerhalb eines Satzes eine andere Bitbreite hat. In einem solchen Szenario verwendet der Kompressionsalgorithmus Indikatorbits, um zwischen aufeinanderfolgenden Daten unterschiedlicher Breite umzuschalten.
  • So kann ein Sensor beispielsweise Datenwörter in drei Kanälen mit folgenden Bitbreiten liefern: Tabelle 5
    Kanäle Tabelle der Bitbreite
    Kanal 1 4
    Kanal 2 9
    Kanal 3 6
  • Die folgenden Datenwörter können beispielsweise vom Sensor empfangen werden, die anhand einer Bitbreitentabelle der Kanäle in Pakete aufgeteilt werden. Auf diese Weise wird die Bitbreite jedes Kanals im Voraus festgelegt, und die Paketgrößen sind fix. Tabelle 6
    Kanäle Datenwort Paket 2 Paket 1 Paket 0
    Kanal 1 110 - 1110
    Kanal 2 110011100110 100001100 011100110
    Kanal 3 1100110011 111001 010011
  • Auch hier stellen die unterstrichenen Ziffern die Indikatorbits dar. Die Bitstromübertragung, z. B. unter Verwendung des FIFO-Protokolls, ist eine Verkettung der oben genannten Pakete mit zusätzlichen Indikatorbits: 1 _ 11001 0 _ 10011 1 _ 00001100 0 _ 11100110 1 _ 110
    Figure DE112020006288T5_0001
  • Die Indikatorbits zeigen den Beginn eines neuen Datenwortes in der gleichen Weise an, wie zuvor beschrieben. Darüber hinaus zeigen die Indikatorbits auch an, dass eine neue Paketbreite verwendet werden soll. Der Empfänger, der den gesendeten Bitstrom empfängt, ist im Besitz der Informationen über die verschiedenen Kanäle und ihre jeweiligen Bitbreiten. Der Empfänger kennt auch die Reihenfolge der jeweiligen Kanäle.
  • Der Empfänger kann jedoch nur Nullen und Einsen lesen und ein Indikatorbit nicht sofort von einem Informationsbit unterscheiden. Der Empfänger identifiziert stattdessen anhand einer vordefinierten Position des Indikatorbits innerhalb jedes Pakets, welches Bit das Indikatorbit ist.
  • In dem Beispiel mit mehreren Kanälen ist der Empfänger daher so programmiert, dass er jedes n-te Bit als Indikatorbit liest, wobei n auch so programmiert ist, dass es sich jedes Mal ändert, wenn ein neues Datenwort gefunden wird, entsprechend der Reihenfolge der drei Kanäle. Dies wird im Folgenden näher erläutert: 110001 n = 6 010011 n = 6 1 00001100 n = 9 011100110 n = 9 1110 n = 4
    Figure DE112020006288T5_0002
  • Der Empfänger kann zum Beispiel so programmiert werden, dass er den Datenstrom in Einheiten von sechs Bits liest. Das zweite Sechser-Paket im obigen Datenstrom beginnt mit einer Null. Diese Null wird daher als Indikatorbit gelesen, das anzeigt, i) dass die folgenden Bits Teil desselben Datenworts wie das vorhergehende Paket sind und ii) dass das vorliegende Paket eine Bitbreite von sechs hat. Der Anfang des nächsten Pakets, das als Indikatorbit gelesen wird, beginnt mit einer 1, was auf eine Änderung der Bitbreite des nächsten Pakets hinweist. Die Tabelle zeigt an, dass sich die Paketbreite von 6→ 9 geändert hat. Von diesem Zeitpunkt an wird der Bitstrom in Einheiten von neun Bits gelesen, bis ein Indikatorbit gelesen wird, das eine „1“ ist. Die nächste „1“ zeigt an, dass die Bitbreite erneut geändert werden sollte (die letzten vier Stellen des obigen Bitstroms), von einer Bitbreite von 9→ 4. Wenn das nächste Datenwort erkannt wird, schaltet der Empfänger wieder auf die Bitbreite des ersten Kanals zurück.
  • Abbildung 3 zeigt ein Beispiel für den obigen Algorithmus.
  • S300 - Bestimmung einer vordefinierten Anzahl von Kanälen {C1,C2.... Cm} entsprechend den Kanälen auf einem entsprechenden Sensor, wobei jeder Kanal eine definierte Bitgröße (n1. n2, ... nm} hat:
  • Schritt S300 veranschaulicht die vorgegebene Beschaffenheit der Sensorkanäle und ihrer entsprechenden Bitbreiten. Es versteht sich, dass der Schritt des „Bestimmens“ vor dem Betrieb einer elektronischen Vorrichtung durchgeführt werden kann, z. B. können die Kanäle und ihre entsprechenden Bitbreiten in der elektronischen Vorrichtung vorprogrammiert werden. Dennoch werden die Anzahl der Kanäle und die Bitbreite jedes einzelnen Kanals in einem Speicher des elektronischen Geräts bestimmt und festgelegt.
  • S302 - Empfang von Sätzen von Datenwörtern, wobei jeder Satz ein entsprechendes Datenwort enthält, eines für jeden Kanal:
  • In Schritt S302 werden die Datenwörter vom Sensor empfangen, d. h. als ein Satz von Datenwörtern, wie oben in Tabelle 5 dargestellt.
  • S304 - Umstrukturierung von Datenwörtern in Paketgrößen entsprechend der für jeden Kanal festgelegten Bitgröße:
  • Die Datenwörter werden dann in S304 entsprechend dem Kanal, zu dem sie gehören, in Pakete mit der festgelegten Bitgröße umstrukturiert/aufgeteilt.
  • S306 - Einfügen eines Indikatorbits im Paket an einer festen Position, wobei eine „1“ den Beginn eines neuen Datenworts und eine „0“ die Fortsetzung eines Datenworts kennzeichnet:
  • Dann wird ein Indikatorbit (entweder eine Null oder eine Eins) an einer bestimmten Stelle jedes Pakets eingefügt. Das Indikatorbit kennzeichnet, dass ein Paket entweder der Beginn eines neuen Datenworts (d. h. eine „1“) oder die Fortsetzung eines Datenworts (d. h. eine „0“) ist.
  • S308 - Übertragung der Pakete als Bitstrom von Daten an einen Empfänger und Aufspalten der Pakete nach der Übertragung:
  • Die Datenpakete werden zu einem kontinuierlichen Bitstrom zusammengeführt und in Schritt S308 als Bitstrom über einen Bus/Schnittstelle an einen Empfänger übertragen, der sie empfängt. Der Empfänger dekodiert dann den Bitstrom unter Verwendung der definierten Sequenz von Bitbreiten für die mehreren Kanäle.
  • Darüber hinaus kann das Indikatorbit an einer beliebigen Stelle in den oben genannten Datenstrom eingefügt werden. Zum Beispiel kann das Indikatorbit an das Ende jedes Pakets angehängt oder als zweites Bit in jedes Paket eingefügt werden. In einem weiteren Beispiel kann das Indikatorbit zusätzlich oder alternativ zu den obigen Ausführungen invertiert werden, so dass die Bitbreite durch eine 0 statt einer 1 geändert wird (wobei der Rest der Probenindikatoren Einsen sind).
  • Alternativ kann die Position des Indikatorbits auch so vorbestimmt werden, dass es in jedem Paket gemäß einer vorbestimmten Reihenfolge seine Position ändert. Mit anderen Worten, die Position des Indikatorbits ändert sich auf der Grundlage einer vordefinierten Reihenfolge. Sowohl der Sender als auch der Empfänger teilen sich diese Reihenfolge der Indikatorbitpositionen. Dies hat den zusätzlichen Vorteil, dass ein Reverse Engineering des Paketstroms oder der Kompressionsmethode sehr schwierig ist. Darüber hinaus werden die Daten selbst gegenüber den ursprünglichen Datenwörtern weiter verändert; so kann vorteilhafterweise ein gewisser Grad an Verschlüsselung erreicht werden, indem die Position des Indikatorbits gemäß einer vordefinierten Sequenz verändert wird.
  • Der oben beschriebene Algorithmus zur Komprimierung mehrerer Kanäle kann auf eine beliebige Anzahl von Übertragungsszenarien für die Datenübertragung über eine serielle oder parallele Schnittstelle angewendet werden. Darüber hinaus müssen die Daten nicht von einem Sensor stammen, und es versteht sich, dass der Komprimierungsalgorithmus auf alle Daten anwendbar ist, einschließlich Daten, die aus einer beliebigen Anzahl von Quellen stammen.
  • zeigt ein Beispiel für ein allgemeines elektronisches Gerätesystem 400, das so konfiguriert ist, dass es einen Komprimierungsalgorithmus implementiert, beispielsweise wie in den bis dargestellt. Das elektronische Gerät umfasst eine Benutzerschnittstelle 412, einen Mehrzweckprozessor 414 und einen allgemeinen Speicher 416, der z. B. eine beständige Festplatte, Flash- oder Festkörperspeichermedien oder einen flüchtigen/nicht beständigen RAM-Speicher umfassen kann. Die elektronische Vorrichtung umfasst auch einen Arbeitsspeicher, der einen flüchtigen Speicher umfassen kann, z. B. mit Anweisungen für die weitere Verarbeitung der empfangenen Sensormessdaten.
  • Das elektronische Gerät umfasst auch einen Sensor 402, bei dem es sich z. B. um einen ALS-Sensor handeln kann. Der Sensor ist mit Hardware und/oder einem weiteren Prozessor 404 gekoppelt, der den Kompressionsalgorithmus ausführt. Das Element 404 kann beispielsweise ein Chip wie ein FPGA oder ASIC sein, auf dem der Kompressionsalgorithmus fest kodiert ist. Das Codeelement 404 ist mit einer Schnittstelle gekoppelt, die den komprimierten Code überträgt, z. B. unter Verwendung des oben beschriebenen FIFO. Bei der Schnittstelle kann es sich um jeden geeigneten seriellen oder parallelen Bus handeln, z. B. eine I2C oder I3C Schnittstelle. Die Schnittstelle ist dann mit einem Empfänger 408 gekoppelt, der die komprimierten Daten empfängt. Der Empfänger kann auch einen Rekonstruktionscode oder ein geeignetes Hardwareelement enthalten, das zur Implementierung eines Rekonstruktionscodes konfiguriert ist, so dass der komprimierte Code in die ursprünglich empfangenen Sensordaten rekonstruiert werden kann. Alternativ dazu kann der Empfänger die komprimierten Daten einfach an den allgemeinen Prozessor 414 zur Verarbeitung der komprimierten Daten weiterleiten. Der Fachmann wird zweifellos erkennen, dass der Sensor 402 kein ALS-Sensor sein muss, sondern eine beliebige Anzahl von externen Elementen sein kann, die eine Beobachtung erfassen und quantifizieren können, die dann als Daten übertragen werden kann.
  • Dem Fachmann werden zweifellos viele andere wirksame Alternativen einfallen. Es versteht sich, dass die Erfindung nicht auf die beschriebenen Ausführungsformen beschränkt ist und Modifikationen umfasst, die für den Fachmann offensichtlich sind und in den Anwendungsbereich der beigefügten Ansprüche fallen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 2019101442 [0005]

Claims (21)

  1. Verfahren zur Komprimierung von Daten für die Datenübertragung in einer elektronischen Vorrichtung, wobei das Verfahren Folgendes umfasst: Empfangen einer Vielzahl von Datenproben, die von einem Element der elektronischen Vorrichtung erzeugt werden, an einem ersten Verarbeitungselement der elektronischen Vorrichtung, wobei die Datenproben numerische Bits umfassen; Umstrukturierung der Vielzahl von Datenproben durch das erste Verarbeitungselement in eine Vielzahl von Datenpaketen; Kennzeichnung jedes Datenpakets mit einem Probenindikatorbit, um eine Vielzahl von Gruppen über die Vielzahl von Datenpaketen hinweg anzuzeigen; Übertragen eines Bitstroms, der zumindest einige der mehreren Datenpakete umfasst, über eine Schnittstelle der elektronischen Vorrichtung an ein Empfangselement der elektronischen Vorrichtung; Dekodieren des Bitstroms durch ein zweites Verarbeitungselement der elektronischen Vorrichtung, um zumindest einige der mehreren Datenproben zu erhalten, wobei die Dekodierung zumindest teilweise auf den Probenindikatorbits basiert.
  2. Verfahren nach Anspruch 1, wobei jede Gruppe der Vielzahl von Gruppen jeweils einer anderen jeweiligen Datenprobe entspricht.
  3. Verfahren nach Anspruch 2, wobei die Dekodierung umfasst: Identifizierung, basierend auf den Probenindikatorbits, der Vielzahl von Gruppen von Datenpaketen, die die verschiedenen jeweiligen Datenproben darstellen; Entfernen des Probenindikatorbits aus jedem Datenpaket, um die Vielzahl der ursprünglich von dem Element empfangenen Datenproben zu erhalten.
  4. Das Verfahren nach Anspruch 1 umfasst ferner: vor der Umstrukturierung die Berechnung der numerischen Unterschiede zwischen jedem Paar benachbarter Datenproben, um eine Vielzahl von Differenzwerten zu erhalten; Umstrukturierung durch das erste Verarbeitungselement der Vielzahl von Differenzwerten anstelle der Datenproben, um die Vielzahl von Datenpaketen zu erhalten.
  5. Verfahren nach Anspruch 1, wobei die Umstrukturierung für jede Datenprobe Folgendes umfasst: Aufteilung der numerischen Bits der Datenprobe in die geringste Anzahl von Datenpaketen, die erforderlich sind, um die in der Datenprobe enthaltene Information darzustellen.
  6. Verfahren nach Anspruch 1, wobei jedes Datenpaket der Vielzahl von Datenpaketen eine bestimmte Größe hat.
  7. Verfahren nach Anspruch 6, ferner umfassend: Überwachung der Umstrukturierung von Datenproben in Datenpakete durch das erste Verarbeitungselement, das zweite Verarbeitungselement oder das Empfangselement der elektronischen Vorrichtung, um eine durchschnittliche Anzahl von Datenpaketen pro Datenprobe zu erhalten; dynamisches Einstellen der definierten Größe der Vielzahl von Datenpaketen auf der Grundlage der durchschnittlichen Anzahl von Datenpaketen pro Datenprobe.
  8. Verfahren nach Anspruch 1, wobei die Datenproben repräsentativ für Signale sind, die von einem Sensorelement des elektronischen Geräts gemessen werden.
  9. Verfahren nach Anspruch 8, wobei das Sensorelement ein Umgebungslichtsensor ist.
  10. Verfahren nach Anspruch 1, wobei das Element der elektronischen Vorrichtung einen Satz von Datenkanälen umfasst, die jeweils eine kanalspezifische Datenprobe erzeugen.
  11. Verfahren nach Anspruch 10, wobei das Verfahren ferner umfasst: Empfangen der Vielzahl von Datenproben, die von dem Satz von Datenkanälen des Elements erzeugt werden; Umstrukturierung der Vielzahl von Datenproben durch das erste Verarbeitungselement, um die Vielzahl von Datenpaketen zu erhalten, wobei die Umstrukturierung für jede Datenprobe umfasst: Umstrukturierung der Datenprobe in mindestens ein Datenpaket, wobei das mindestens eine Datenpaket eine definierte Größe hat, die einem Datenkanal des Satzes von Datenkanälen entspricht, der die Datenprobe erzeugt hat.
  12. Verfahren nach Anspruch 1, wobei der Probenindikator an einer bestimmten Stelle in das Datenpaket eingefügt wird.
  13. Verfahren nach Anspruch 1, wobei die Kennzeichnung ferner umfasst: Einfügen des Probenindikators in jedes Datenpaket an einer vordefinierten Stelle, wobei sich die vordefinierte Stelle entsprechend einer vordefinierten Folge von Stellen ändert.
  14. Verfahren nach Anspruch 1, wobei die Schnittstelle des elektronischen Geräts eine serielle periphere Schnittstelle ist.
  15. Verfahren nach Anspruch 1, wobei die Schnittstelle des elektronischen Geräts eine I2C-Schnittstelle ist.
  16. Verfahren nach Anspruch 1, wobei jede Datenprobe binär dargestellt wird.
  17. Verfahren nach Anspruch 1, wobei jede Datenprobe mit einem negativen Wert in binärer Zweierkomplementform dargestellt wird.
  18. Verfahren nach Anspruch 1, wobei das erste Verarbeitungselement ein Hardwareelement ist, das eine dauerhafte Konfiguration aufweist, die es dem Hardwareelement ermöglicht, die Umstrukturierung und Kennzeichnung durchzuführen.
  19. Verfahren nach Anspruch 1, wobei das Abtastindikatorbit nicht 1 Bit entspricht.
  20. Nichtflüchtiger Datenträger, der einen Prozessorsteuerungscode trägt, um bei Ausführung die Dekodierung nach Anspruch 1 zu implementieren.
  21. Eine Vorrichtung, die Folgendes umfasst: ein Element, das zur Erzeugung von Datenproben konfiguriert ist; ein erstes Verarbeitungselement, das so konfiguriert ist, dass es eine Vielzahl von Datenproben empfängt, die von einem Element der elektronischen Vorrichtung erzeugt werden, wobei die Datenproben numerische Bits umfassen; eine Schnittstelle, die mit dem ersten Verarbeitungselement und einem Empfangselement gekoppelt ist, wobei das erste Verarbeitungselement ferner so konfiguriert ist, dass es umfasst: Umstrukturierung der Vielzahl von Datenproben in eine Vielzahl von Datenpaketen; Kennzeichnung jedes Datenpakets mit einem Probenindikatorbit, um eine Vielzahl von Gruppen über die Vielzahl von Datenpaketen hinweg anzuzeigen; Übertragung eines Bitstroms, der zumindest einige der mehreren Datenpakete umfasst, über die Schnittstelle an das empfangende Mitglied; ein zweites Verarbeitungselement, das so konfiguriert ist, dass es den Bitstrom dekodiert, um zumindest einige der mehreren Datenproben zu erhalten, wobei die Dekodierung zumindest teilweise auf den Probenindikatorbits basiert.
DE112020006288.0T 2019-12-23 2020-12-16 Verlustfreie Komprimierung der Datenübertragung Pending DE112020006288T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962953092P 2019-12-23 2019-12-23
US62/953,092 2019-12-23
PCT/EP2020/086530 WO2021130086A1 (en) 2019-12-23 2020-12-16 Lossless data transfer compression

Publications (1)

Publication Number Publication Date
DE112020006288T5 true DE112020006288T5 (de) 2022-10-27

Family

ID=74095833

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112020006288.0T Pending DE112020006288T5 (de) 2019-12-23 2020-12-16 Verlustfreie Komprimierung der Datenübertragung

Country Status (4)

Country Link
US (1) US20230074041A1 (de)
CN (1) CN115004558A (de)
DE (1) DE112020006288T5 (de)
WO (1) WO2021130086A1 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190101442A1 (en) 2017-10-04 2019-04-04 Stmicroelectronics (Grenoble 2) Sas Method of Ambient Luminosity Level Detection, and Corresponding Sensor

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6862278B1 (en) * 1998-06-18 2005-03-01 Microsoft Corporation System and method using a packetized encoded bitstream for parallel compression and decompression
US8151022B2 (en) * 2008-11-26 2012-04-03 Simplify Systems, Inc. Compression and storage of projection data in a rotatable part of a computed tomography system
US10069511B2 (en) * 2016-12-12 2018-09-04 Texas Instruments Incorporated Lossless data compression

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20190101442A1 (en) 2017-10-04 2019-04-04 Stmicroelectronics (Grenoble 2) Sas Method of Ambient Luminosity Level Detection, and Corresponding Sensor

Also Published As

Publication number Publication date
CN115004558A (zh) 2022-09-02
US20230074041A1 (en) 2023-03-09
WO2021130086A1 (en) 2021-07-01

Similar Documents

Publication Publication Date Title
EP0260748B1 (de) Verfahren und Schaltungsanordung zur Bitratenreduktion
DE69925774T2 (de) Arithmetisches Kodierung- Dekodierung- sowie Warscheinlichkeitsschätzungsverfahren
DE102015114973B4 (de) Datenkomprimierung
EP0194477B1 (de) Röntgenscanner
DE3525898C2 (de)
DE10048814B4 (de) Computertomographiegerät mit einem Datenerfassungssystem und Verfahren für solch ein Computertomographiegerät
DE2264090A1 (de) Datenverdichtungssystem
DE69934939T2 (de) Kompression von Grenzen zwischen Bildern
DE60015448T2 (de) Teilband-Audiokodiersystem
DE102015114978A1 (de) Datenkomprimierung
DE602004006716T2 (de) Verarbeitung von bildern unter verwendung einer begrenzten anzahl von bits
DE102012208711B4 (de) Vorrichtung zum Erzeugen einer Prüfsumme
DE112012005557T5 (de) Erzeugen eines Code-Alphabets von Symbolen zum Erzeugen von Codewörtern für Wörter, die mit einem Programm verwendet werden
EP2290612A2 (de) Verfahren und Anordnung zur arithmetischen Enkodierung und Dekodierung von binären Zuständen sowie ein entsprechendes Computerprogramm und ein entsprechendes computerlesbares Speichermedium
DE60009502T2 (de) Lzw datenkomprimierung/dekomprimierungsgerät und - verfahren mit eingebetteter lauflängenkodierung/dekodierung
EP3624456A1 (de) Verfahren zur kompression und dekompression von bilddaten
DE69820148T2 (de) Verfahren zur Kompression/Dekompression von Bilddaten
DE112021000112T5 (de) Rechenverarbeitungssystem und verfahren zur faltungsberechnung
DE112016007146B4 (de) Störungsidentifizierungsvorrichtung und Störungsidentifizierungsverfahren
EP2790408A1 (de) Verfahren zur komprimierten Speicherung von grafischen Daten
DE112020006288T5 (de) Verlustfreie Komprimierung der Datenübertragung
DE2421796A1 (de) Verfahren und einrichtung zur berechnung des hoehenmesser-einstelldruckes aus dem oertlichen barometrischen druck
DE60319557T2 (de) Verfahren zur Verminderung der Anzahl der Bits pro Softbit
DE19531036C2 (de) Analog/Digital-Wandler
DE3836789A1 (de) Vorrichtung zur erzeugung von helligkeitsstufen auf einem anzeigeschirm

Legal Events

Date Code Title Description
R012 Request for examination validly filed