Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

14
Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert

Transcript of Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Page 1: Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Projekt: Komprimierung von FPGA Bitstreams

Ralph Kuhnert

Page 2: Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Projektbeschreibung:

• FPGA Bitstreams bestehen aus einem großen Teil aus Strom aus "Einsen" die nur hin und wieder von einer "Null" unterbrochen werden und besitzen somit eine relativ geringe Entropie. Der Konfigurationsspeicher für die FPGAs ist im Vergleich zu den FPGA selber relativ teuer, somit bietet sich aufgrund der Entropie des Bitstreams eine Kompression des Bitstreams an um an dem teuren Konfigurationsspeicher zu sparen.

Page 3: Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Beispiel für einen Bitstream

• 0101110000101100000011000000000010100110000000000000000001010001001001101111111100000100101000101000110011111001110110101111111111111011101110111011111111111011101110111011111111111011111110111110111011101110111011111111111111111110111011111111111011111110111111101110111011101111111111101101111011101111111111101011011010111111111110111111101110111111111110111011101110111111111111111101000111111101

Page 4: Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Umfang des Projektes:

• In diesem Projekt soll eine Schaltung entwickelt werden, die einen FPGA-Bitstream mit möglichst einfacher Hardware komprimiert und dekomprimiert und den FPGA konfiguriert. Hierzu soll die Entropie von FPGA-Bitstreams bestimmt werden, geeignete Algorithmen in Perl programmiert und getestet und schließlich ein geeignetes Verfahren in VHDL für einen CPLD oder Microcontroller implementiert werden.

Page 5: Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Die Idee

• Wenn man den Bitstream betrachtet erkennt man, daß er zum größten Teil aus langen Folgen von Einsen besteht somit bietet sich eine Codierung durch das Zählen von Einsen an.

Page 6: Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Das Skript

• Mit folgendem Perlskript ne_final.pl wurden dann Bitstreams verschiedener Auslastung auf Entropie, Länge und codierte Länge (Huffmann, Einserzählen) untersucht.

Page 7: Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Ergebnis der Skriptes

• Sämtlich Zahlenwerte finden sich der Übersicht halber in folgender Datei: Bitfiles.xls

• Die Diagramme mit den Ergebnissen finden sich auf den nächsten Seiten

Page 8: Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Einser zählen Diagramm

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

1 2 3 4 5 6 7 8 9

Bits für Code

Grö

ße

in %

sempro.bit

vga.bit

12x8mult.bit

display.bit

sid.bit

linuxram.bit

Page 9: Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Huffmancodierung Diagramm

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

1 2 3 4 5 6 7 8 9

Bits für Code

Grö

ße

in

%

sempro.bit

vga.bit

12x8mult.bit

display.bit

sid.bit

linuxram.bit

Page 10: Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Arithmetische Codierung Diagramm

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

1 2 3 4 5 6 7 8

Bits für Code

Grö

ße

in

%

sempro.bit

vga.bit

12x8mult.bit

display.bit

sid.bit

linuxram.bit

Page 11: Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Histogramm 5 Bit Codierung

0

1000

2000

3000

4000

5000

6000

7000

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Codierte Einser

An

zah

l V

ork

om

mn

isse

sempro.bitvga.bit12x8mult.bitdisplay.bitsid.bitlinuxram.bit

Page 12: Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Histogramm 5 Bit Codierung in %

0,00%

5,00%

10,00%

15,00%

20,00%

25,00%

30,00%

35,00%

40,00%

45,00%

50,00%

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Codierte Einser

An

zah

l V

ork

om

mn

isse

sempro.bitvga.bit12x8mult.bitdisplay.bitsid.bitlinuxram.bit

Page 13: Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Vergleich verschiedener Verfahren für vga.bit(Breakoutspiel, 84%CLB-Auslastung)

100,00%

50,62%47,57%

41,86%

50,16%45,98%

41,02%

47,71% 47,36%

0,00%

10,00%

20,00%

30,00%

40,00%

50,00%

60,00%

70,00%

80,00%

90,00%

100,00%

vga.bit 4 Bit Länge Huffman 4 Bit Arithmet. 4 5 Bit Länge Huffman 5 Bit Arithmet. 5 Zip Arj

Verfahren

Grö

ße

in

%

vga.bit

Page 14: Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.

Die Implementierung

• Man kann sehen, daß das 4-Bit-Einser-zählverfahren trotz seiner Einfachkeit relativ effektiv ist

• Somit wurde die Dekodierung des gepackten Bitstreams versuchsweise für einen XC9536XL-CPLD implementiert

decoder.vhd