14
Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert

Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert

Embed Size (px)

Citation preview

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