Forum: FPGA, VHDL & Co. FPGA - Codierung der Konfigurationsdaten


von Fred (Gast)


Lesenswert?

Hallo zusammen,

hat jemand schonmal irgendwelche Infos darüber gefunden, wie
Konfigurations-Bitstream codiert ist? Also welche Bits gehen in welche
LUT, welche Bits setzen die Verbindungsmatrix etc. etc.!

Ich hab mich schon mehrfach danach zu Tode gegoogelt, aber es gibt
keine Doku. Wozu ich das benötige? Ich will eine Hardware-Evolution per
Genetischem Algorithmus betreiben, so wie das z.B. A. Thompson gemacht
hat, siehe auch:

http://www.cogs.susx.ac.uk/users/adrianth/ade.html

Es gibt auch komplette Konferenzen zu dem Thema, also irgendwie müssen
die Jungens die Kodierung der FPGAs haben (mir schwebt Xilinx Spartan-3
vor).

Danke und Gruß
Fred

von Hagen (Gast)


Lesenswert?

Hm, ich würde vermuten das sie VHDL Designs durch genetische Algorithmen
optimieren. Sprich man hat ja als kleinste Bausteine sein Gatter,
Schieberegister, Latches, Buffers etc. pp. Die genetische Individuuen
stellen in ihren Genen/Alleelen/Chromosomen diese Gatterkombinationen
dar + deren Signalverküpfungen.
Vor vielen Jahren habe ich an sowas ähnlichem gearbeitet. Dabei wurden
aber Formeln optimiert. Die Individuuen bestanden also in ihrer
Erbmasse aus mathematischen Operationen wie
Addition/Subtraktion/Multiplikationen/Negierungen und zusäzlich noch
Konstanten und Variablen. Daraus setzten sich dann Formeln zusammen.
Aufgabe war es ein Set von Eingabeparametern durch eine möglichst
kompakte und effiziente Formel in ein Set von Ausgabeparamatern zu
wandeln. Im grunde also sowas ähnliches wie du es versuchen willst,
halt in deinem Falle boolsche Algebra überwiegend.

Nur stelle dir das nicht so einfach vor. Das was bei den genetische
Algorithmen bzw. Eveolutionsstraegien so schwierig ist sind die
Festlegungen der Selektionsfunktionen und der Generationenparameter,
sprich Mutationsrate, mehrgeschlechtliche oder ungechlechtiliche
Rekombinationen, Chromosomenrekombinationen ect. pp. Das gleiche
Problem im übertragenen Sinne hat man mit den Neuronalen Netzen auch.

Im besten Falle findet man eine überraschende Lösung nach wenigen
Generationen/Trainingszyklen, im schlechtesten Falle findet man
garnichts und die Generationen stagnieren zu oft und zu schnell und
adaptieren das Problem überhaupt nicht.

Auf alle Fälle keine einfache Aufgabenstellung, viel Spaß.

Achso: wenn ich nich vollständig falsch informiert bin so ist gerade
das physikalisch Routing innerhalb der CPLD/FPGA's das "Geheimnis"
der Hersteller. So musst du immer deren Software benutzen, oder hast du
schonmal sowas wie zb. Xilinx WEBPack von einem fremden
Dritt-Software-Hersteller gefunden ??

Gruß Hagen

von Fred (Gast)


Lesenswert?

Hallo Hagen,

ganz bestimmt ist Thompson nicht den Umweg über VHDL gegangen, das
findet man auch immer wieder in seinen Publikationen. Deine Bemerkungen
zu den Schwierigkeiten bei der Evolution sind berechtigt, aber da ich
das seit Jahren mache ist das unproblematisch. Die Lösungen, die man
bei Hardware-Evolution erhält sind sehr interessant und nutzen
teilweise Quanteneffekte zwischen eng liegenden Datenbahnen innerhalb
des FPGAs aus. Ich überlege im nächsten Wintersemester ein konkretes
Projekt an engangierte Studenten zu geben, wo so etwas experimentell
untersucht wird.

Thompson hat seine FPGAs während der Evolution in Kühlschränke, unter
Heissluftföns etc. begeben, um "robuste" Individuen zu bekommen, die
unter verschiedensten Bedingungen noch funktionieren (Quanteneffekte
sind nicht über den gesamten Temperaturbereich gleich).

Ich befürchte, dass es irgendwelche Deals zwischen Forschern und den
FPGA-Herstellern gibt, dass die benötigten Informationen unter
Geheimhaltungsverpflichtung für Forschungszwecke zur Verfügung gestellt
werden. Leider habe ich nicht die Kapazität um langfristig ein größeres
Projekt hierzu durchzuführen, sonst würde ich mal mit Xilinx in
Verbindung treten. Aber für ein 1-semestriges Studentenprojekt brauche
ich das sicher nicht versuchen...

Gruß
Fred

von Hagen (Gast)


Lesenswert?

Hm, ich verstehe noch nicht ganz wie du vorgehen möchtest. So wie ich es
sehe willst du binär in den FPGA's einfach die Daten, sprich Gene
evulieren. Nach meinem Erachten halte ich dies aber nicht für so clever
da dies ja auf reiner "Zufalls-Evolution" hinausläuft. In meinen
genetischen Algorithmen war die logische Gruppierung der verschiedenen
Operationen in Gene->Allele->Chromosomen sehr wichtig um ungültige
Formeln von vornherein ausschließen zu können. Erst diese logische
Gruppierung ermöglichte es das die Individuuen auch funktionstüchtige
Formeln darstellten und somit nicht bei jeder Generation 90% der
Individuuen duruch die Selektionsfunktion abgetötet wurden. Die Regeln
der Mutation wirkten nur auf die Gene als kleinste Einheit, sprich den
verschiedenen Operationen und Konstanten. Bei der geschlechtlichen
Rekombination wurde aber auf Allele/Chromosomen Ebene gearbeitet und
somit gültige Teilformeln nicht zerrissen. Die Individuuen waren also
in jedem Falle immer funktionstüchtig und wurden durch die Regeln der
Evolution nicht selber dauernd zerstört.

Andererseits wäre es bei deiner Aufgabenstellung von enormer
Wichtigkeit das du dirketen Zugriff auf die örtliche Verteilung der
Signale/Makrozellenbenutzung/Register bekommst. Ansonsten wäre es
tatsächlich nicht möglich die "gegenseitigen Quantenbasierten
Beeinflussungen" auszunutzen, auch wenn ich mir das jetzt so schwer
vorstellen kann :-) Denn wie soll deine Selektionsfunktion diese
Quantenunterschiede im Fitting zur Fitness eines Individuums umrechnen
können. Das muß ja erstmal meßbar sein. Scheint ne interesante Sache zu
sein, aber bei weitem ausserhalb meiner Reichweite.

Gruß Hagen

von Fred (Gast)


Lesenswert?

Na, wenn es Dich interessiert lies doch mal eines der Thompson-Papers -
ist sehr spannend und die Methodik wird auch sehr genau beschrieben.

Die Fitness wurde definitiv nur nach erzielter Verhaltensleistung
berechnet. Beispiel: Evolvieren eines Tongenerators, Fitness umso
höher, je genauer an der Zielfrequenz.

Die haben das binäre Gen auf den Bereich von ein paar CLBs beschränkt
und ein Signal daraus auf einen Pin gelegt, an dem gemessen wurde. Aus
der Messung allein wurde die Fitness berechnet. Auf die Quanteneffekte
hatten sie's nicht angelegt - aber die spätere Analyse eines
Individuums brachte zu Tage, dass die Schaltung eigentlich nicht
funktioniert (per Simulator z.B.) - in der Praxis tat sie's aber doch!
Genauere Analysen haben dann die Quanteneffekte entdeckt.

Wichtig ist also auf jeden Fall, dass man das Ganze nicht durch
irgendein Tool schickt, wo der Floorplan bzw. das genaue Layout unklar
ist oder sich unkontrolliert verändern kann. Man muss eben
aus dem Konfigurationsstream die Bits maskieren, die ausserhalb der
Ziel-CLBs liegen. Kann man mühsam auch reverse-engineeren... aber hatte
halt die Hoffnung, dass jemand ein Dokument dazu in der Schublade hat.

Gruß
Fred

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.