Hallo! Zunaechst werdet ihr euch bestimmt fragen: "Was will der? Ist doch total bekloppt." Ziel des Ganzen soll sein, einen kleinen FPGA (weniger als 50 CLBs) als Makro mit all seinen CLBs/Slices, InterConnects usw. nachzubilden und diesen mit einem self-made Bitstrom zu laden - quasi ein FPGA als IP Core. Ich habe jetzt schon eine ganze Weile im WWW gesucht, aber leider nocht nichts zu der Thematik gefunden. Mich wuerde also interessieren, ob evtl. jemand schon mal von einem aehnlichen Projekt/Vorhaben gehoert hat. Vielen Dank schonmal im Voraus Michael
Hallo Darf ich dich fragen, was das für einen Sinn ergeben soll? :-) Gruss Michael
Ich bitte darum Fragen zur Sinnigkeit bitte nicht mehr zu stellen ;-). Insgeheim hatte ich eigentlich mit Gegenfragen zur Sinnigkeit gerechnet g Forschungsprojekte sehen auf den ersten Sinn manchmal etwas fragwuerdig aus. Aber glaubt mir, es gibt einen guten Anwendungszweck. Gruss Michael
> Forschungsprojekte sehen auf den ersten Sinn manchmal etwas fragwuerdig > aus. Aber glaubt mir, es gibt einen guten Anwendungszweck. Dann verrate ihn doch :-) Ich kann dir zugegebenermassen wenig helfen, aber viele Leute hier im Forum hätten für dein Problem sicher interessante Ansätze, wenn sie nur ein bisschen mehr wüssten. Und genau sowas ist doch wichtig für ein Forschungsprojekt im Ingenieurbereich, nicht?
Hängt davon ab, was Du brauchst. Einen FPGA so nachzubilden, dass der Bitstrom geladen wird, ist schon deshalb schwierig, weil die Bedeutung der Bits des Bitstroms nicht bekannt ist und geheimgehalten wird. Weiters ist es wahrscheinlich unmöglich das FGPA mit Timing nachzubilden, sodaß es intern und außen genau das selbe Timing hat wie das gewünschte. Die Funktion eines anderen FPGA's nachzubilden ist sicher keine Schwierigkeit, eventuell mittels einer Simulation die langsamer läuft. Drittens ist es unmöglich die I/O's des internen FPGA's nachzubauen, da interne keine Tri-state Driver existieren. Die reine Funktion kann man sicher nachbauen. Klaus
Entschuldigung, ich habe erst jetzt gesehen, daß Du von einem Self-Made Bitstrom sprichst. Was willst Du? Ein existierendes FPGA nachbilden oder Dir eine FPGA-Architektur selbst definieren?
Google mal nach Jbits, das ist ein Open Source Tool zur Manipulation von Xilinx FPGA Bitfiles. Da kannst du deine eigene Logik selber zusammenstricken. MFG Falk P.S. Klingt mir alles reichlich akademisch. Schreib lieber nen Softwareemulator für das Ganze und gut. In Hardware hat das wenig Sinn. Oder schreib nen Logikinterpreter auf uC Basis ala SPS. Dann hast du auch Hardware dabei.
Hallo alle, Ich finde das ist eine durchaus sehr interessante (akademische) Frage. So wie ich das sehe steckt die meisste Entwicklungsarbeit eines FPGAs im Interconnect (Zitat Xilinx: you pay the interconnect, we throw in the logic for free). Das ist auch konsistent mit der Aussage >> 80% der Chipfläche gingen für den Interconnect drauf. Anzunehmen also, dass dieser hochgradig auf die zur Verfügung stehenden Fertigungsresourcen optimiert ist: wie viele Layer? Leitungsdurchmesser? Stärke der Treiber? (dickere leitungen == mehr Kapazitaet etc.) Stellt sich also die Frage: was ist der Plan? 1) Einen möglichst eleganten Interconnect, der eventuell gut deinen eigenen PAR-Tools entgegen kommt und gute theoretische Eigenschaften hat. 2) Einen Interconnect der tatsaechlich auf eine bestimmt Fertigungstechnik optimiert ist. 3) Einen Interconnect, der gut auf aktuelle FPGAs passt. Ob man da auch eine gute Balance finden kann mag ich nicht abschaetzen. Die Zielsetzungen koenneten sich auch deutlich wiedersprechen. Zu (3): ich denke hier muss man die Topologie sehr aehnlich der Topologie des drunterliegenden FPGAs waehlen. D.h. wenn der so-und-so viele kurzstrecken Verbindungen, so-und-so viele langstecken Verbindungen etc. hat, dann muss man sich daran orientieren und gucken ob die existierenden PAR-Tools deinen Intercon gut auf den physikalisch vorhandenen mappen. Zu (1): Dies finde ich ist eine sehr interessante Frage. Wuerde gerne mehr darueber erfahren. Unter http://www.altera.com/literature/lit-cyc2.jsp "Cyclone II Architecture" findest du eine recht genaue Beschreibung eines existierenden Interconnects. j.
@Joerg >Ich finde das ist eine durchaus sehr interessante (akademische) Frage. >So wie ich das sehe steckt die meisste Entwicklungsarbeit eines FPGAs im Mag ja sein, aber er wird kaum eine bessere Interconnect-Technologie entwickeln wenn er noch eine Ebene in die bestehende FPGAs einbaut. Da muss er schon ans Eingemanchte und auf Transisorebene runter. >1) Einen möglichst eleganten Interconnect, der eventuell gut deinen >eigenen PAR-Tools entgegen kommt und gute theoretische Eigenschaften >hat. Ein Papiertiger. Nicht mein bevorzugtes Kuscheltier. >2) Einen Interconnect der tatsaechlich auf eine bestimmt >Fertigungstechnik optimiert ist. Wie gesagt, da muss er an die Basis ran. Will er aber gar nicht. >3) Einen Interconnect, der gut auf aktuelle FPGAs passt. Den gibts schon, nämlich den, der eingebaut ist. MFG Falk
b@Falk, >> 1) Einen möglichst eleganten Interconnect, der eventuell gut deinen >> eigenen PAR-Tools entgegen kommt und gute theoretische Eigenschaften >> hat. > > Ein Papiertiger. Nicht mein bevorzugtes Kuscheltier. Gut, dass es verschiedene Interessenslagen gibt :) Ich kann mich an eine anregende Diskussion mit meinem Prof. ueber die Netzwerkstruktur grosser biologischer neuronaler Netze erinnern. Das ist wohl bis heute nicht abschliessend geklaert. Die Frage ist ob diese Topologisch, oder Skalenfrei sind. Wenn man mich jetzt nach der Struktur von typischen FPGA Designs fragt, so wuerde ich vermuten, dass diese lokal topoloisch, im grossen aber skalenfrei sind. Aber das ist nur eine ganz grobe Vermutung -- da muesste man sich mal eine Menge Netzlisten vornehmen und dessen Struktur begutachten. (oder Altera/Xilinx Leute fragen oder mal nach Papern suchen) Naja, sorry, ich schwafel. Aber ich finde das eine sehr interessante Fragestellung. Und die Art und wiese wie wir Systeme konstruieren hat offenbar grossen Einfluss auf die entstehende Topologie. Und eventuell manifestieren sich hier Unterschiede zwischen von Menschen konstruierten und evolutionaer entstandenen Systemen von denen man viel lernen kann. >>2) Einen Interconnect der tatsaechlich auf eine bestimmt >>Fertigungstechnik optimiert ist. > >Wie gesagt, da muss er an die Basis ran. Will er aber gar nicht. > >>3) Einen Interconnect, der gut auf aktuelle FPGAs passt. > >Den gibts schon, nämlich den, der eingebaut ist. Da kann ich nicht wiedersprechen. Spannend finde ich (2) und (3) trotzdem irgendwie. j.
@Joerg >b@Falk, Tippfehler oder Wink mit dem Zaunspfahl? b_ät Falk ? ;-) >Das ist wohl bis heute nicht abschliessend geklaert. Die Frage ist ob diese >Topologisch, oder Skalenfrei sind. Ähhh, was ist mit topologisch und skalenfrei gemeint? (Bin kein Informatiker) >Naja, sorry, ich schwafel. Aber ich finde das eine sehr interessante >Fragestellung. Und die Art und wiese wie wir Systeme konstruieren hat >offenbar grossen Einfluss auf die entstehende Topologie. Sicher, das sind wichtige Fragen für die Konstruktion der FPGAs. Aber der OP ziehlt AFAIK auf was anderes ab. MFG Falk
Hallo! Ersteinmal Danke an fuer all die Antworten. Hier nochmal ein paar grob gesteckte Ziele: Klaus Falser wrote: > Entschuldigung, ich habe erst jetzt gesehen, daß Du von einem Self-Made > Bitstrom sprichst. Was willst Du? Ein existierendes FPGA nachbilden oder > Dir eine FPGA-Architektur selbst definieren? @ alle - eine selbst-definierte FPGA-Architektur (im Grunde eine einfache Kopie bestehender FPGA-Architekturen, aber nur halb (wenn ueberhaupt) so kompliziert) - ein self-made Bitstrom, evtl. aufbauend darauf eine Dipl.-Arbeit ein bestehendes Synthesetool die eigene Archtitektur beizubringen, sodass man seine eigenen Bitstroeme selbst generieren kann - ein Moeglichkeit den Bistrom im laufenden Betrieb zu aendern Falk wrote: > P.S. Klingt mir alles reichlich akademisch. Schreib lieber nen > Softwareemulator für das Ganze und gut. In Hardware hat das wenig Sinn. @ Falk Nein es ist ausdruecklich so geplant. Z. Zt. ist die Zielplattform ein Xilinx FPGA, koennte in ferner Zukunft aber mal ein ASIC werden. Insofern macht das alles in Hardware auf jeden Fall einen Sinn. @ Joerg , Falk Wegen der Interconnects und des damit verbundenen Verdrahtungsaufwandes mache ich mir auch so meine Sorgen. Daher denke ich mal das Version 1) oder 2) in Betracht kommt. Aber nochmal: Das Ganze soll vieeel einfacher gestrickt sein als eine derzeit verfuegbare Architektur. Ziel meiner Anfrage sollte eigentlich erst mal nur Recherche sein, inwiefern es evtl. schon Ansätze in diese Richtung gibt. Daher erstmal vielen Dank fuer Eure Hilfe Gruesse Michael
Ich glaube alle reden jetzt von unterschiedlichen Dingen. Ein FPGA ist aus CLB/LC/Multiplexern aufgebaut. Interconnects sind halt Multiplexer, die entsprechend der Konfiguration schalten oder nicht. So komplex ist es nicht. Das habe ich schon mal in kleinem Rahmen gemacht und in die analoge Welt muss man da nun wirklich nicht abtauchen ;-) Kest
@ Kest Koenntest du mir evtl. Ergebnisse zukommen lassen oder mehr darueber erzaehlen? Waere die sehr dankbar dafuer! Gruesse Michael
>b@Falk, Tippfehler oder Wink mit dem Zaunspfahl? b_ät Falk ? ;-) ;) @super-Falk: >>Das ist wohl bis heute nicht abschliessend geklaert. Die Frage ist ob >>diese Topologisch, oder Skalenfrei sind. > >Ähhh, was ist mit topologisch und skalenfrei gemeint? (Bin kein >Informatiker) Ich auch nicht -- Physiker :) Finde ad-hoc keine gute Erklaerung im Netz. Grob gesagt geht es um die Vernetzungs-Struktur in einem Graph. Die Knoten waeren bei uns die einzelnen Logik Elemente/special Blöcke. Die Kanten wahlweise Interconnect-Verbindungen zwischen den Knoten eines konkreten Designs, oder die potentiellen Verbindungen die der Interconnect erlaubt. Je nachdem ob man die Eigenschaften des selbst erfundenen Interconnects begutachten will, oder die Struktur eines konkret gegebenen Designs. Mir scheint ein Interconnect dann gut zu sein, wenn die konkret benoetigten Verbindungen durch die potentiell vorhandenen realisiert werden koennen. Wenn das nicht passt, muss man routhe-through machen. (auf kosten von LEs und f_max) Klar ist auch, dass es teuer ist viele Kanten im Interconnect zu haben -- weil der Interconnect dann mehr Platz auf dem Chip benoetigt. Topologische Graphen zeichnen sich durch eine ausgepraegte Topologie aus -- z.B. ein n-Dimensionales Gitter (Schachbrett), bei dem jeder Knoten mit seinen Nachbarn verbunden ist. Der Raum muss aber nicht euklidisch sein -- sondern kann auch absurde verzerrungen aufweisen. Offenbar koennen wir mit unserer 2d-Chip Technik gut 2d-Topologien implementieren. Skalenfei heisst, dass der Graph genauso aussieht, wenn man "rauszoomt" und sub-graphen wieder als Knoten betrachtet. Allg. gilt, dass skalenfreie Graphen "gut" sind, wenn man zufaellige Verbindungen zwischen Knoten braucht, und wenn zufaellig Knoten ausfallen. Wenn as Projekt hier nicht allzu gross werden soll, ist vermutlich ertsmal die Frage wieviele Verbindungen man zu wie-weit entfernten Knoten zieht. Lieber viele in die unmittelbare Nachbarschaft, und wenige Weitlaufige? >>Naja, sorry, ich schwafel. Aber ich finde das eine sehr interessante >>Fragestellung. Und die Art und wiese wie wir Systeme konstruieren hat >>offenbar grossen Einfluss auf die entstehende Topologie. > >Sicher, das sind wichtige Fragen für die Konstruktion der FPGAs. Aber >der OP ziehlt AFAIK auf was anderes ab. Ich wollte nur schrieben, warum ich es fuer interessant halte sich ueber Interconnect-Strukturen Gedanken zu machen. @Michael: 1) Kennst du http://www.iti.uni-stuttgart.de/~bartscgr/signs/wiki/index.php/Main_Page ? 2) Nur eine Idee -- Ich glaube ich wuerde erstmal ganz naiv so Anfangen: Auf einem Blatt Papier ein paar LEs Schachbrettartig anordnen, und radial n Linien ziehen (aufgehend von jedem LE). Jede Linie representiert einen kleinen "Bus" mit m Leitungen. An einigen stellen wo sich Linien Treffen kommt eine kleine Switch-Box hin. Die hat dann m^2 moegliche Verbindungspunkte. Dann musst du dich entscheiden welchen Radius du betrachtes und nach welchen Regeln du Switchboxes an die Kreuzungspunkte anbringst. Dieser Interconnect waere "homogen" -- d.h. egal welche LE du betrachtest, es hat die gleichen potentielln Verbindungen zu seinen Nachbarn. Aber das war jetzt nur mal eine Idee -- ich habe ueber das Problem nicht laenger nachgedacht und habe mich auch vorher noch nie ernsthaft damit beschaeftigt. j.
@Joerg >Finde ad-hoc keine gute Erklaerung im Netz. Grob gesagt geht es um >die Vernetzungs-Struktur in einem Graph. Die Knoten waeren bei uns >die einzelnen Logik Elemente/special Blöcke. Hmm, auf Wikipedia gibts ne halbwegs brauchbare Erklärung, wobei mir der Knackpunkt nicht sonderlich klar wird. >Mir scheint ein Interconnect dann gut zu sein, wenn die konkret >benoetigten Verbindungen durch die potentiell vorhandenen realisiert >werden koennen. Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh! Nimms nicht persönlich, aber das ist so eine absolut typische Theoretiker/Physiker Aussage. Apfelmus ist Muss aus Äpfeln. Wen's nicht regnet werd ich nicht nass. Was soll man damit anfangen? >Klar ist auch, dass es teuer ist viele Kanten im Interconnect zu haben >-- weil der Interconnect dann mehr Platz auf dem Chip benoetigt. Dieser Schluss ist mir so nicht klar. >Skalenfei heisst, dass der Graph genauso aussieht, wenn man "rauszoom>t" >und sub-graphen wieder als Knoten betrachtet. Aha, also mal etwas volkstümlicher gesagt eine systematische Hierachie. MfG Falk
@Michael N. (spitzi): so richtige Ergebnisse habe ich nicht, sorry. Es war eher Experiment, um generics und VHDL besser kennenzulernen. Im Groben: - Alle LEs sind wie ein Schieberegister miteinander verbunden - jede LE hat - eine LUT, die darüber ladbar ist - Eingangsmultiplexer (ich habe einfach 4:1 gemacht -- von vier nachbar Logic Elementen) - Ausgangsmultiplexer Dann ordnest Du einfach ein einem Schachbrettmuster und das wars. Dann denkst Du Dir ein "Protokoll" aus, um alles zu laden. Ich habe damals einfach die Datenblätter von Xilinx und Altera (Cyclone) genommen und die CLB ähnlich aufgebaut. Zu der "Sythese", also wie ich aus einer Beschreibungssprache Bitfile generiere, bin ich gar nicht gekommen. Ich konnte nur einfache (übersichtliche) Sachen machen, wie Zähler, shifter und so. Anfangen würde ich bei einem Blatt Papier und viel Phantasie :-) Grüße, Kest
...nachtrag: baue einen Crossbar-Switch auf, also wo jeder Eingang auf jeden Ausgang beliebig schaltbar ist. Nimmt viel Platz im FPGA ein, ist aber sehr nützlich. Z.B. 4 auf 4, 8 auf 8 oder wie auch immer. Kest
Falk, Hallo, >>Mir scheint ein Interconnect dann gut zu sein, wenn die konkret >>benoetigten Verbindungen durch die potentiell vorhandenen realisiert >>werden koennen. > >Ahhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh! > >Nimms nicht persönlich, aber das ist so eine absolut typische >Theoretiker/Physiker Aussage. Ich nehm sowas nicht schnell persoenlich, keine Angst. Solang es nur der Erkenntnisfindung hilft... Aber bei naeherer Betrachtung ist meine Aussage sogar falsch! Weil sonst waere ein Interconnect, der jede LE mit jeder LE durch eine dedizierte Leitung verbindet das Optimum. Klar, da kann ich jedes denkbare Design reinladen. Aber das haette n*(n-1) dedizierte Verbindung -- viel zu gross und teuer. Es kommt auf das Verhaeltnis von "passt gut rein" zu "wie teuer ist der Interkonnect" an. Jaja -- zu theoretisch bla... Aber wir spielen hier potentiell mit grossen Zahlen -- ein paar Prozent mehr Effizientz kann da viel ausmachen. Wenn man das richtig machen will wuerd ich das ganze theoretisch angehen, die Randbedingungen sauber formulieren -- Zielfunktion vorgeben und gucken ob man da Optimum findet. Und dazu muss man halt auch die irgendwie offensichtlichen Sachen sauber formulieren. >>Klar ist auch, dass es teuer ist viele Kanten im Interconnect zu haben >>-- weil der Interconnect dann mehr Platz auf dem Chip benoetigt. > >Dieser Schluss ist mir so nicht klar. Ahm, nicht?? Jede Interconnect Leitung verbraucht konkret Platz auf dem Chip (resourcen im Host-FPGA). Je mehr Leitungen, um so mehr Resourcen sind weg. Find ich offensichtlich. Okey, in Wirklichkeit gibt es ein komplizierte Kostenfunktion: Lange Leitungen verbrauchen andere/mehr Resourcen als kurze. Aber Leitungen mit negativen oder Null-Kosten....?!? j.
Hallo, > baue einen Crossbar-Switch auf, also wo jeder Eingang auf jeden Ausgang > beliebig schaltbar ist. Nimmt viel Platz im FPGA ein, ist aber sehr > nützlich. Z.B. 4 auf 4, 8 auf 8 oder wie auch immer. Crossbar-Switch ist mit Sicherheit ein wichtiges Grundelement. Aber vermutlich nicht einen,der jedes CLB (ich nannte es LE) mit jedem verbindet. Dann haettest du bei n LE's n^2 Cross-Bar Punkte. Wenn man das fuer einen ASIC oder FPGA routen laesst, bekommt man vermutlich eine eindimensionale Kette aus LEs mit einem Quadrat aus Cross-Bar-Punkten darum. Das skaliert also nicht. Eventuell aber trotzdem ein Anfang um ueberhaupt irgendwas zu haben. j.
Interessante Diskussion, aber hängt das ganze nicht auch sehr stark a) von dem/den auf dem FPGA zu implementierenden Designs und b) von der zur Verfügung stehenden Halbleitertechnologie ab? Und neben der optimalen Verbindung spielt ja auch noch die Geschwindigkeit eine Rolle, deshalb der Trend zu Blockrams, dedizierten Multiplizierern, DSP-Blocks, CPU-Kernen und IO-Controllern die dann ohne geschwindigkeitsmindernde programmierbare Schaltelemente schneller arbeiten. Wenn Du als Zieltechnologie zum Simulation ein FPGA nimmst wird sich Deine Topologie je nachdem mehr oder weniger Platz- und Geschwindigkeitsoptimal abbilden lassen. Auf einem ASIC hast Du vielleicht 1 - 3 Metallisierungsebenene während es bei full-custom ICs noch ein oder zwei mehr sein können. Aber es gibt noch ein weiteres Problem, und das ist die Taktverteilung. Das fraktalartige skalieren der Bauelementestruktur wird irgendwann abbrechen und dann eben mehrere 'Superzellen' auf einem Die die dann nur durch eine für Datenpfade notwendige Anzahl von Bussen oder möglicherweise auch DP-Rams miteinander verbunden sind, jeweils mit lokalem Takt.
Hallo Ich finde es durchaus gut, welche Gedanken ihr euch alle zu der Implementierung macht. Interconnects und Taktnetze sind sicherlich ein großes Thema, wo noch viel Hirnschmalz fließen wird. NUR: Es geht mir nicht um eine mögliche Realisierung, oder wie die sich jeder einzelne vorstellt (eure Beiträge waren wirklich bisher hilfreich). Um was es mir geht und damit greife ich nochmal meinen ersten Post auf: Kennt jemand bzw. gibt es ein ähnliches Projekt mit diesen Zielen?? Quasi ein "FPGA-Makro"? Grüße Michael
Hast Du Dir schonmal Gedanken gemacht, wie das Laufen soll? Wenn Du das komplett formulierst und alles läuft, ... ... DANN WIRD ALLES VON DER SYNTHES WEGOPTIMIERT UND AUF XILINX PRIMITIVEN ZURÜCKGEFÜHRT.
> Kennt jemand bzw. gibt es ein ähnliches Projekt mit diesen Zielen??
Nein.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.