Pseudomonaden und Aeromonaden Shahla Soltanmohammadlou und Elisabeth Kuhnert.
Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.
-
Upload
caecilie-kasser -
Category
Documents
-
view
104 -
download
0
Transcript of Projekt: Komprimierung von FPGA Bitstreams Ralph Kuhnert.
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.
Beispiel für einen Bitstream
• 0101110000101100000011000000000010100110000000000000000001010001001001101111111100000100101000101000110011111001110110101111111111111011101110111011111111111011101110111011111111111011111110111110111011101110111011111111111111111110111011111111111011111110111111101110111011101111111111101101111011101111111111101011011010111111111110111111101110111111111110111011101110111111111111111101000111111101
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.
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.
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.
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
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
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
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
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
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
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
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