Hardware-kompatible Messdatenkomprimierung für LabVIEW FPGA Benjamin Steinwender, MSc KAI Kompetenzzentrum Automobilund Industrie-Elektronik GmbH, 9500 Villach
Agenda Leistungshalbleiter & Stresstest Systeme @ KAI Herausforderungen bei der Datenaufzeichnung Lösungsmethode & Implementierung Ergebnisse
Leistungshalbleiter in Automotive Halbleiter anstelle von Relais, Sicherungen Gewicht / Platzbedarf Wachsende Leistungsdichte durch Miniaturisierung Steigende Verlustleistung im Fehlerfall (Kurzschluss) Zuverlässigkeit & Robustheit in Automobilumgebung gefordert (-40 C.. 150 C) BMW light modules
Stresstest Systeme @ KAI ACUTE - Kurzschlusstestsystem Entwickelt 2005 @ IFX KAI 2006 256 parallele Test Kanäle 60V / 500A (geschützt) 4x NI PXI-7813R (160 DIOs) Test Standard AEC Q100-012 (2006) Redesign (Digital) @ KAI 2009 10 Systeme @ IFX (VIH & MUC) & KAI SMART device on test circuit board Climate chamber with Devices set up for testing ACUTE short circuit control & driver unit
Messdaten Regulärer Testpuls (nach AEC) Kurzschlussdauer 10 300 ms Wiederholrate ~ 10 s Ausfallereignis DMOS fällt mit Kurzschluss aus Treiberschalter erkennt Kurzschluss und schaltet ab Datenerfassung 32x SPI AD-Wandler (V & I) 14 bit @ 250 ks/s Overtemperature Shutdown - Restart Drain Current Drain-Source Voltage (Load is shorted!)
occurences in a typical waveform Datenaufzeichnung Limitierte Ressourcen am FPGA Messwerte via SPI Block RAM 4 x 12 288 x 2 (V & I) x 16 bit Wortbreite (14 bit Daten) 12,5% unbenutzter Speicherplatz Sukzessive Abtastwerte typisch geringe Differenz 10000 1000 100 10 1 0 100 200 300 400 500 abs(difference)
Kompressionsverfahren verlustfreie Kompression Wörterbuchkompression Entropiekodierung Huffman / Arithmetische Kodierung Universelle Kodierung
Kompressionsverfahren verlustfreie Kompression Ersetzen wiederkehrender Muster durch kürzere Symbole (Index) Wörterbuch am FPGA Wörterbuchkompression Entropiekodierung Unterschiedlich lange Bitfolgen für jedes Symbol Verringerung der Gesamtanzahl an Bits Huffman / Arithmetische Kodierung Universelle Kodierung
Kompressionsverfahren verlustfreie Kompression Wörterbuchkompression Entropiekodierung Monotone Wahrscheinlichkeitsverteilung der Eingabewerte wird angenommen kleine Zahlen werden mit weniger Bits kodiert benötigen bekannte Wahrscheinlichkeitsverteilung der Eingabe Huffman / Arithmetische Kodierung Universelle Kodierung
Lösungsmethode Fibonacci-Kodierung Universeller Zahlencode Effiziente & einfache Hardware-implementierung (FPGA) Zeckendorf-Theorem Jede natürliche Zahl kann in eine Summe von nicht aufeinanderfolgenden Fibonacci- Zahlen zerlegt werden. Kein Datenwort hat eine 11 Sequenz Anfügen des Stopp-bits für variable Wortlänge Fibonacci-Reihe 1 2 3 5 8 1 1 0 0 0 0 2 0 1 0 0 0 3 0 0 1 0 0 4 1 0 1 0 0 5 0 0 0 1 0 6 1 0 0 1 0 7 0 1 0 1 0 8 0 0 0 0 1 9 1 0 0 0 1 10 0 1 0 0 1 11 0 0 1 0 1 12 1 0 1 0 1
Lösungsmethode Implementierung im LV FPGA 1. Differenzbildung & Wandeln in positive Integer 2. Kodierung nach Fibonacci 3. Packen in den 32 bit Speicher
Implementierung (1) Differenzen (signed Integer) Abbildung auf positive Integer Differenz (+1 bit) Abbilden von (0, 1, -1, 2, -2, ) (1, 2, 3, 4, 5, ) Wertebereich: -16 383.. +16 383
Implementierung (2) Fibonacci-Kodierung Zerlegung des Datenwortes in Fibonacci-Zahlen 1 bei Verwendung der Zahl 0 Fibonacci Zahl wird nicht verwendet + 1 Stoppbit 0 1 1 2 3 5 8 13 21 34 55 89 - F(0) F(1) F(2) F(3) F(4) F(5) F(6) F(7) F(8) F(9) F(10) F(11) additional 109 - - 0 1 0 1 0 1 0 0 0 1 1 109 (dec) = 01010100011 (fibonacci) Größtes vorkommendes Datenwort: 32767 22 Fibonacci-Zahlen max. 23 bit
Implementierung (2) 109 00000000000000000000000 89 11000000000000000000000 55 01100000000000000000000 34 00110000000000000000000 21 00011000000000000000000 13 10001100000000000000000 8 01000110000000000000000 5 10100011000000000000000 3 01010001100000000000000 2 10101000110000000000000 1 00000000000001010100011 Länge: 11 Register Endwert Stoppbit
Implementierung (3) Einfügen in den 32 bit Speicher Vergleichen des neuen Datenwortes mit dem verfügbaren Platz Aufteilen, falls nicht ausreichend Platz im Register Ausgabe des vollen 32 bit Wortes
Dekodieren Suchen nach den Stoppbits Aufteilen des Datenstroms Umkehren des Kompressionsvorganges Dekodieren der Fibonacci Datenwörter Zuweisung der positiven Integer in Differenzen Berechnen der Absolutwerte
Ergebnisse Strom- & Spannungskurvenformen werden kodiert 4 12 Bit Wörter überwiegen (7.82 Bit Durchschnitt) erreichte Kompression 24.5%
Zusammenfassung Lebensdauertests erzeugen rasch sehr viele Messdaten Kodierungsverfahren für den Einsatz am FPGA vorgestellt Echtzeitfähig Effizienteres Speichern von Messdaten Schnelleres Übertragen der Messdaten Erzielte Kompression 24,5%
Danke für die Aufmerksamkeit