Forum: FPGA, VHDL & Co. FPGA reprogrammiert sich selbst


von Jonathan S. (psihodelia)


Lesenswert?

Hallo,

ich überlege mir folgenes Design:
Ein FPGA ständig reprogrammiert sich selbst.
Natürlich hat solche FPGA auch solche Gebiete die man nicht 
reprogrammieren darf, z.B. ein UART und Logic mit Funktionen für das 
Brennen.

Meine Frage ist: ist es möglich nur ein kleines Teil des FPGAs zu 
reprogrammieren? Mich interessiert insbesonders Xilinx Spartan 3.

Danke in Voraus.

von guest (Gast)


Lesenswert?

ich glaube das geht nur mit den virtex. spartan geht nicht.

von Falk B. (falk)


Lesenswert?

@ Jonathan Swift (psihodelia)

>ich überlege mir folgenes Design:
>Ein FPGA ständig reprogrammiert sich selbst.

Und wozu?

>Natürlich hat solche FPGA auch solche Gebiete die man nicht
>reprogrammieren darf, z.B. ein UART und Logic mit Funktionen für das
>Brennen.

>Meine Frage ist: ist es möglich nur ein kleines Teil des FPGAs zu
>reprogrammieren? Mich interessiert insbesonders Xilinx Spartan 3.

Ja, nennt sich Partial Reconfiguration und ist nicht ganz trivial.

MFG
Falk

von Johannes T. (johnsn)


Lesenswert?

Klingt aber ziemlich interessant. Wär toll, wenn ein paar Infos in 
diesem Thread aufkommen würden.

von Cheffe (Gast)


Lesenswert?

Ich halte die Reprogramierbarkeit für ein rein akademisches Thema. Mir 
ist kein industrielles Umfeld bekannt, wo das gemacht wird. Technisch 
ist das zwar kein Problem, aber wie sieht es mit den Themen Validierung 
aus? Welche Systeme eignen sich schon dafür, dynamisch programmiert zu 
werden ?

Die großen Massenbrachen Medizintechnik und Automitve scheiden komplett 
aus. Die haben sowieo ein Problem mit allem "Soften". Kann mir auch kaum 
vorstellen, daß man für ein MedProdukt, daß sich im Betrieb 
umconfiguriert, eine Zulassung (von der FDA) bekommt. Wer will das 
Risiko tragen? Schon jetzt wird alles statisch gemacht und gesichert, um 
ja keine Risiken zu kriegen -koste es auch etwas Speicherplatz im FPGA.

Rekonfigurierende Systeme sind Elfenbein!

von Jonathan S. (psihodelia)


Lesenswert?

> Rekonfigurierende Systeme sind Elfenbein!

Rekonfigurierbare Systeme eignen sich zum Fault-Tolerant Design, z.B. 
fuer ein Mars-Roboter. Es ist oft auch erwuenscht dass ein Roboter 
adaptiert sich zu seiner Umgebung, wo auch verschiedene 
Evolutionsalgorithmen sich lohnen.

von Marcel (Gast)


Lesenswert?

Die Evolutionärfunktionen lassen sich auch mit statischen 
Rechen-Funktionen und autodaptiver Software realisieren, die besser 
simulier- und testbar sind. Gerade für solche Satelitenprojekte muss 
alles haarklein vorgedacht und vorgetestet werden.

Meist sind dei reprogrammierbaren Systeme immer ein Argument, Hardware 
besser auszunutzen. Aber dort, wo es möglich wäre (Astro, Einzel- und 
Sonderanfertigungen) ist die STückzahl so gering, daß FPGA-Kosten kein 
Thema sind. Da zählt Entwicklungsgeschwindigkeit.

von Valerij M. (fpga-dev)


Lesenswert?

Zitat: "Ich halte die Reprogramierbarkeit für ein rein akademisches 
Thema."

Ich muss hier Cheffe zu 100% zustimmen. Dieses Thema wurde äußerst gerne 
dazu benutzt, um eine (internationale) Veröffentlichung zu "generieren". 
Es gab in der Vergangenheit immer wieder Forschungsthemen, die keine 
einzige praktische Anwendung hervorgebracht haben, jedoch immer gut 
genug waren um die Unwissenden zu begeistern.

Die Idee ist an sich selbst von verlockender Schönheit, aber sobald man 
versucht etwas "praxistaugliches" zu implementieren, ist von der 
Schönheit nichts mehr zu erkennen:

- Die Rekonfiguration ist langsam,
- Der zu rekonfigurierende Bereich muss vorher festgelegt werden und ist 
dann genau so groß wie der größte austauschbare Schaltungsteil. Es kommt 
aufgrund der Herstellervorgben wie der Bereich auszusehen hat, zu 
schlechter Ausnutzung der FPGA-Fläche. Die letzte (deutschsprachige) 
Veröffentlichung, die mir bekannt ist, hat den treffenden Titel "Eine 
Studie zur dynamischen Rekonfiguration von Hardware: "Pain oder Gain"" 
von Philipp Reinkemeier & Co. Ist für jeden der sich für das Thema 
interessiert wirklich lesenswert!
- Den Schmerz der Designverifikation sollte man sich wirklich ersparen, 
indem einfach mehrere komplette Bitstreams für unterschiedliche 
Anwendungsfälle erzeugt werden und der FPGA jedesmal komplett 
rekonfiguriert wird. Bei Spartan 3 sind die Bitstream sehr einfach zu 
managen. Da kann der FPGA selbst entscheiden, wann er und mit welchem 
Bitstream konfiguriert wird.
-Mangelhafte Unterstützung seitens der FPGA-Hersteller.

Mein Fazit: lasst in der Praxis die Hände weg davon oder nutzt das Thema 
um zu promovieren ;)

Gruß,

fpga-dev

von T.M. (Gast)


Lesenswert?

> - Die Rekonfiguration ist langsam
koennte sich loesen lassen, indem der FPGA eine zweite Ebene an 
Konfigurationsspeicher besitzt, der im Bedarf parallel geladen werden 
kann.

> Der zu rekonfigurierende Bereich muss vorher festgelegt werden und ist
> dann genau so groß wie der größte austauschbare Schaltungsteil. Es kommt
> aufgrund der Herstellervorgben wie der Bereich auszusehen hat, zu
> schlechter Ausnutzung der FPGA-Fläche.
Da hat sich einiges getan, beim V4 kann man Bereiche bis auf die Groesse 
von wenigen Slices dyn rekonfigurieren, man koennte also das Design 
feingranularer partitionieren und rekonfiguerieren. Dummerweise steigt 
dadurch dann wieder der Rek.aufwand, weil man oefter rek. muss

Ich stimme aber zu, dass sich das Ganze fuer ein Projekt ausserhalb des 
akad. Rahmens kaum eignet wegen der Kosten und Entwicklungszeit. Dafuer 
eignen sich andere dy. rek. Strukturen besser, wie zB. XPP von Pact.

von Jonathan S. (psihodelia)


Lesenswert?


von Valerij M. (fpga-dev)


Lesenswert?

T.M. wrote:
>> - Die Rekonfiguration ist langsam
> koennte sich loesen lassen, indem der FPGA eine zweite Ebene an
> Konfigurationsspeicher besitzt, der im Bedarf parallel geladen werden
> kann.

Und wie soll das technisch realisiert werden? Auf dem FPGA-Die? Das
führt dann automatisch zur größeren Flächenbedarf und zwangsläufig zu
höheren Kosten. Dann kann man ja gleich einen größeren FPGA nehmen und
sich die Rokonfiguration sparen. Die Hersteller werden niemals
Strukturen auf dem FPGA integrieren, die nur möglicherweise und dann in
wenigen Designs sinnvoll sind. Das heutzutage (fast) jeder FPGA einen
RAM-Block hat, kommt daher, daß diese im fast jedem Design benötigt
werden.

von T.M. (Gast)


Lesenswert?

> Und wie soll das technisch realisiert werden?

Ich hab nicht gesagt, dass es unbedingt sinnvoll waere sowas zu tun... 
Es waere nur eine Moeglichkeit, um die Realisierung solcher Systeme zu 
vereinfachen. Aber wie gesagt, dafuer eignen sich andere Architekturen 
bei weitem besser...

von FPGA-Guru (Gast)


Lesenswert?

Für die Rekonfigurationsfähigkeit benötit man nicht zwangsweise eigene 
Chipstrukturen. Eine an das Problem sich selbst adaptierende Schaltung 
(Umsetzen von Signalpfaden, Änderung von Parametern und 
Ablaufstrukturen) ist allein durch Multiplexerpfade und Schaltlogik 
möglich. Dies wird auch bereits in diversen Schaltungen realsiert - nur 
kommt kaum einer auf die Idee, hier von einer selbstkonfigurierenden 
Schaltung zu sprechen.

Den Austausch ganzer Schaltungsteile halte ich kaum für zweckmäßig, den 
jede erdenkliche Funktion, die eine Schaltung annehmen kann, muss 
strukturell und funktionell untersucht und validiert werden. Wie will 
man dies leisten ?

von Schlumpf (Gast)


Lesenswert?

Mir ist nicht ganz klar, was exakt du vor hast, und was du unter 
Rekonfiguration verstehst.
Wenn du während der Laufzeit einzelne Bereiche des FPGA 
"umprogrammieren" willst, ohne einen neunen Bootvorgang anzustossen, 
dann dürfte das Extrem kompliziert werden.

Willst du aber z.B. über einen im FPGA implementierten UART ein neues 
Konfigfile in das FPGA spielen, dann geht das recht einfach.
Der UART ist ja während der FPGA läuft, im den RAM-Zellen des FPGA. 
Somit kannst du ihn nutzen um das Boot-Device (Flash) im Hintergrund zu 
programmieren.
Wenn das Bootdevice fertig programmiert ist, dann Reset ausführen und 
das umkonfigurierte System läuft wieder.

von ralf (Gast)


Lesenswert?

Ich habe eine Anwendung im industrielles Umfeld die bisher aus aus zwei 
Spartan3-FPGA's besteht. Das erste hat einen festen Inhalt und 
realisiert eine Netzwerkverbindung. Das zweite ist viel größer und wird 
je nach Anwendung über das Netzwerk konfiguriert. Ist es möglich das mit 
nur einem Spartan3-FPGA zu lösen?

von Falk B. (falk)


Lesenswert?

@ ralf (Gast)

>je nach Anwendung über das Netzwerk konfiguriert. Ist es möglich das mit
>nur einem Spartan3-FPGA zu lösen?

Schwierig. Und gerade im industriellen Umfeld würde ich die Finger davon 
lassen. Und wesentlich billiger wird es dadurch auch nicht. Du brauchst 
ein FPGA das beide Inhalte (Netzwerkanbindung + variablen Teil) 
gleichzeitig fassen kann. Und grosse FPGAs sind ab einem bestimmten 
Punkt überproportional teuer (weil die Ausbeute bei grossen ICs stark 
sinkt). Lass es wie es ist.

MFG
Falk

von Schlumpf (Gast)


Lesenswert?

@ralf:

Sollte problemlos möglich sein.
Ein einfacher MAC-Controller nimmt nicht viel Platz im FPGA weg. Würde 
wahrscheinlich in deinem großen FPGA kaum in´s Gewicht fallen.

Ich hab genau sowas bei mir angedacht und bis jetzt spricht gar nix 
dagegen. Allerdings geh ich auf Lattice XP-Bausteine, die haben das 
Flash bereits on Chip und unterstützen explizit das Programmieren im 
"Hintergrund" via JTAG, Serial oder Parallel.

@Falk:
Warum würdest du gerade im industriellen Umfeld die Finger davon lassen?
wegen erweiterter Temp-bereich? EMV? Verfügbarkeit?????

von Falk B. (falk)


Lesenswert?

@ Schlumpf (Gast)

>Sollte problemlos möglich sein.

Wenn das mal kein Irrtum ist.

>Ein einfacher MAC-Controller nimmt nicht viel Platz im FPGA weg. Würde
>wahrscheinlich in deinem großen FPGA kaum in´s Gewicht fallen.

Sicher, aber . . .

>Warum würdest du gerade im industriellen Umfeld die Finger davon lassen?
>wegen erweiterter Temp-bereich? EMV? Verfügbarkeit?????

EMV und Temperatur sind nicht meine Bedenken, wohl aber

a) Designflow für partielle Rekonfiguration ist AFAIK im Moment noch 
reichlich problematisch/unausgereift
b) Ausfallsicherheit/Verfügbarkeit/Verifikation der partiellen 
Konfigurationen.

MfG
Falk

von Schlumpf (Gast)


Lesenswert?

> Wenn das mal kein Irrtum ist.

ist es nicht!

> Sicher, aber . . .
?

> a) Designflow für partielle Rekonfiguration...

Hat ralf was von partieller Konfiguration gesagt??? NATÜRLICH ist nebst 
dem  veränderten Desing der gute alte MAC-Controller im neuen Desing 
wieder vorhanden.
z.B. altes Design: MAC + Funktion A
neues Design: MAC + Funktion B

wird jeweils natürlich komplett neu geschrieben und Neustart über Reset.

(ich erspar mir an dieser Stelle den Kommentar, der mir auf der Zunge 
liegt)

von Falk B. (falk)


Lesenswert?

@ Schlumpf (Gast)

>> Wenn das mal kein Irrtum ist.

>ist es nicht!

Na wenn DU das sagst.

>Hat ralf was von partieller Konfiguration gesagt??? NATÜRLICH ist nebst
>dem  veränderten Desing der gute alte MAC-Controller im neuen Desing
>wieder vorhanden.
>z.B. altes Design: MAC + Funktion A
>neues Design: MAC + Funktion B

Wenn diese Münchhausenstrategie mal nicht daneben geht. Was machst du, 
wenn das Konfigurieren des neuen Bitstroms fehlschlägt?

MFG
Falk

von Schlumpf (Gast)


Lesenswert?

@Falk: genauuu das sag ich: Das funzt!

Im Gegensatz von Münchhausen muss ich mich nicht selber am Schopf aus 
der Sch... ziehen, sondern nur nen FPGA neu beschreiben, was deutlich 
einfacher ist.

Und wegen dem Fehlschlagen während der Konfiguration gibt es eine 
mindestens genauso simple Lösung. Man muss ja nicht on-the-fly 
schreiben, wenn die Daten über´s Ethernet reinknallen, sondern kann sie 
auf dem Prozessor zwischenspeichern... Na, dämmert´s?

von Falk B. (falk)


Lesenswert?

@ Schlumpf (Gast)

>Und wegen dem Fehlschlagen während der Konfiguration gibt es eine
>mindestens genauso simple Lösung. Man muss ja nicht on-the-fly
>schreiben, wenn die Daten über´s Ethernet reinknallen, sondern kann sie
>auf dem Prozessor zwischenspeichern... Na, dämmert´s?

Auf welchem Prozessor? Davon war bisher keine Rede.

MFG
Falk

P.S. Mir ist schon klar, dass man eine Failsafe Konfiguration irgendwo 
bereithalten kann. Das benötigt dann aber mehr oder weniger 
Zusatzhardware (Flash/Watchdog/kleiner uC), die prüft, ob das FPGA den 
neuen Datenstrom fehlerfrei schluckt und ggf. handelt.

von FPGA-Guru (Gast)


Lesenswert?

>... über einen im FPGA implementierten UART ein neues Konfigfile in das
> FPGA spielen ... ihn nutzen, um das Boot-Device (Flash) im Hintergrund
> zu programmieren.

Wo ist denn da der grundsätzliche Unterschied zu einer Flash-Config oder 
einer AS zu einem Proz? Das FPGA das FLash bespielt, hat nichts zu 
dagen!

>Wenn das Bootdevice fertig programmiert ist, dann Reset ausführen

Eben! Komplett neuer Systemstart!

Unter Reconfiguration verstehe ich, daß der FPGA anhand der aktuellen 
Situation des Prozesses, seine Schaltungsteile anpasst, um benötigte 
Funktionen zu laden, um Spciecher zu sparen, oder seine Teile 
anzupassen.

von FPGA-Guru (Gast)


Lesenswert?

... und dabei ununterbrochen und sicher weiterlaeuft, muss noch 
hinzugefügt werden.

von Falk B. (falk)


Lesenswert?

Meine Rede.

von FPGA-Guru (Gast)


Lesenswert?

Noch ein Punkt: Lasse ich vergangene Projekte Revue passieren, so fallen 
überhaupt nur 20% der Zeit auf die eigentliche Entwicklung. Vieles davon 
ist Test und Sicherheitsuntersuchung. Diese für ein reprogrammable 
System zu leisten, dürfte einen erheblichen Mehraufwand bedeuten, als 
für ein "normales" gleicher Funktion. An "Selbstlern-Elektronik" wage 
ich garnicht zu denken.

Schon heute ist es ja doch so, daß man als Entwickler im FPGA-Bereich 
(und auch embedded) kaum das Machbare ins System bekommt, weil es kaum 
testbar ist und es einfach nicht abgesegnet wird. Z.T.kriegt man ja 
nicht mal überhaupt ein FPGA ins System, weil der Kunde oder die Branche 
es nicht akzeptiert.

von Jonathan S. (psihodelia)


Lesenswert?

Die schlechte Qualität von heutige FPGA-Design Software Tools ist eine 
gerade Konsequenz von ihre proprietare Natur. Man braucht Open Source 
VHDL Compilers und Synthesis Tools um eine neue technologische 
Paradigmshift zu erreichen.

von Berater (Gast)


Lesenswert?

Selbst mit verbesserten Tools umgeht man nicht das Problem, daß der 
Kunde es nicht will, weil er es nicht für sicher hält. Wenn, dann müsste 
man schon eine enorme Reihe an Dauertestversuchen mit etlichen 
Reprogrammierungen laufen lassen- gfs auch in einem künstlich 
beschleunigten System, um eine gesicherte Riskioberwertung durchführen 
zu können.

Solange ein FPGA-Update eine Softwareänderung / wesentliche 
Hardwareänderung darstellt und wichtige Funktionen betroffen sind, 
müssen bei mediznischen Geräten z.T. neue klinische Studien anberaumt 
werden. Da die keiner bezahlen kann, bleibt es bei rudimentären 
Sparfunktionen.

Innovation ist nicht.

von Falk B. (falk)


Lesenswert?

@ Jonathan Swift (psihodelia)

>Die schlechte Qualität von heutige FPGA-Design Software Tools ist eine
>gerade Konsequenz von ihre proprietare Natur. Man braucht Open Source
>VHDL Compilers und Synthesis Tools um eine neue technologische
>Paradigmshift zu erreichen.

BINGO! Du bist Laberconsultant of the week!

von Schlumpf (Gast)


Lesenswert?

Dass es zwei Arten der Reconfiguration gibt, das hab ich viel weiter 
oben erwähnt.
Die eine, von der ihr ausgegangen seid, hab ich oben auch als sehr 
fragwürdig dargestellt. Sprich: Die Partielle Konfiguration zur Laufzeit 
halte ich auch für kaum umsetzbar.
Die zweite, bei der das gesamte FPGA umkonfiguriert wird, stellt 
allerdings kein Problem dar.

Ich hab lediglich erwähnt, dass es dabei nicht zwingend notwendig ist, 
dass für die Zeit des Umprogrammierens das gesamte FPGA "stillgelegt" 
werden muss.
Das heisst, dass das die modifizierten Daten in´s Flash geladen werden, 
während das FPGA weiterläuft. Daher ist es auch möglich, dass das FPGA 
Aufgaben erfüllen kann, die für den Programmiervorgang AN SICH notwendig 
sind. (z.B. ein JTAG Interface emulieren)
Nach erfolgreicher Programmierung erfolgt der Reset. (der nicht zwingend 
für das gesamte System ausgeführt werden muss)

Da Ralf schrieb, dass "je nach Anwendung" über´s Netz neu konfiguriert 
wird, daher sollte ein Reset des FPGAs nach einem Wechsel der Anwendung 
ja kein Problem sein. (Wenn Zeit ist, ne andere ANWENDUNG über´s Netz zu 
übertragen, dann ist meines Erachtens auch Zeit, den FPGA neu zu laden, 
da diese Zeit ja wohl kaum in´s Gewicht fällt)

Nen uC hab ich mal vorausgesetzt, da sicher in den meisten industriellen 
Anwendungen nicht einfach ein FPGA stand-alone alles macht.
Ganz unabhäng davon wäre das Verfahren prinzipiell aber auch ohne uC 
möglich. Allerding mit der Einschränkung, dass, wenn dann beim 
Programmieren was schief geht, das Teil ein Fall für den Service ist. 
(wie Falk richtig erkannte)

von ralf (Gast)


Lesenswert?

Danke für die Antworten. In dem System ist nur ein kleiner µC mit 
32kByte internem Speicher. Ein zusätzlicher Zwischenspeicher und die 
kurzzeitige Netzwerkunterbrechung heben den Vorteil leider auf. Der 
Vorteil bleibt nur wenn ein einfacher Designflow für partielle 
Rekonfiguration möglich ist.

Gruß,

Ralf

von Silvan (Gast)


Lesenswert?

>wenn ein einfacher Designflow für partielle
>Rekonfiguration möglich ist.

Den möchte ich jetzt endlich mal dargestellt sehen.

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.