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
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.Bitstream
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.ne_final.pl
Ergebnis der Skriptes Sämtlich Zahlenwerte finden sich der Übersicht halber in folgender Datei: Bitfiles.xls Bitfiles.xls Die Diagramme mit den Ergebnissen finden sich auf den nächsten Seiten
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.vhddecoder.vhd