Hallo liebe Community,
ich halte einen Vortrag über FPGA's und habe mich jetzt schon lange im
Internet belesen. Welche Information ich nicht finde ist: wie kann man
die CLB's untereinander verknüpfen? Hardwareseitig müssten doch alle
CLB's schon miteinandern verbunden sein und Softwaretechnisch
verschaltet man sie dann je nachdem wie man es braucht? Oder wie kann
man das verstehen? Wäre echt super wenn mir das einer erklären könnte.
Bzw wie man dann auch die I/O's auf die jeweiligen CLB's zuordnet.
Vielen Dank schonmal im Vorraus. :)
Die sind durch Transistoren voneinander getrennt, jedoch alle Netzartig
miteinander verbunden. Beim Starten werden die Transistoren je nach
Konfiguration ein- oder ausgeschaltet und damit Verbindungen innerhalb
des Netzes geschaffen.
Die englische Wikipedia erklaert das ganz gut:
https://en.wikipedia.org/wiki/Logic_block#Routing
Das Bild mit der Switch Box Topology ist genau das was blub mit den
Transistoren beschrieben hat.
Edit: Ein PDF da alles schoen zusammenfasst ist z.B. ***
Sry, musste den Link nochmal entfernen. Irgendwie sieht das Dokument
nach geklautem Buchkapitel aus. Entsprechendes PDF war Kapitel 2 aus
http://www.springer.com/978-1-4614-3593-8
Max Dietl schrieb:> Hallo liebe Community,> ich halte einen Vortrag über FPGA's und habe mich jetzt schon lange im> Internet belesen.
Mein Beileid, du bist ein Opfer der Internetverblödung geworden. Mein
Tipp,
belese Dich in einer gut gestückten Fachbibliothek. Beispielweise in dem
historischen Schinken ISBN 978-3826627125
Darin wird erklärt, das die CLBS über Multiplexer verschaltet werden,
deren select-signal über eine SRAM-Zelle gesteuert wird, die während der
Konfigurationsphase mit dem passenden bit aus dem bitstream beschrieben
wird.
Siehe auch:
https://www.rapidwright.io/docs/Xilinx_Architecture.html
wobei jeder FPGA-Hersteller seine eigene routing resources Suppe kocht.
Vielen Dank für die ganzen Antworten, das hat mir schon sehr
weitergeholfen. Nun noch eine Verständnisfrage: Können entweder
Transistoren oder Multiplexer dafür genommen werden oder sind
Transistoren immer vorhanden die mithilfe von Multiplexern angesprochen
werden?
Sorry ich bin absolut neu in diesem Gebiet und kenne mich leider Null
aus. Bitte verzeiht mir.
Max Dietl schrieb:> Können entweder> Transistoren oder Multiplexer dafür genommen werden oder sind> Transistoren immer vorhanden die mithilfe von Multiplexern angesprochen> werden?
Auch Multiplexer bestehen aus Transistoren, insofern stellt sich die
Frage ob Transistor oder Multiplexer nicht.
https://www.researchgate.net/figure/Block-diagram-of-full-rate-clock-4-1-MUX_fig2_2982109
Wobei die Vorstellung das ein IC aus Transistoren aufgebaut ist, ohnehin
eine sehr simple Vorstellung ist, da spricht man eher von
"Halbleiterstrukturen mit der Funktion eine (Logik-)gatters".
Sowie man auch nicht sagt, das eine Leiterkarte (auch PCB oder Board
genannt) aus 'Drähten' oder 'Kabel' besteht, sondern mittels
Kupferbahnen (Copper tracks) und Durchkonaktierung (vias) die
elektrische Verbindungen realisieren werden. Weil man ein Board eben
nicht auseinanderbaut und in einzelne Drähte zerlegt, genausowenig wie
man einen Integrierten Schaltkreis zerlegen und einzelne Tranistoren
ausbauen kann.
https://www.semanticscholar.org/paper/A-pure-CMOS-nonvolatile-multi-context-configuration-Tatsumura-Oda/8e91a1327679ec0b992ac23aa752dca3e538c9af
Man spricht da eher von "standard cells" aus denen der IC besteht, nicht
aus Transistoren. Und da ist ein Multiplexor genauso eine 'Zelle' wie
ein Or-Gatter
http://user.engineering.uiowa.edu/~vlsi1/notes/stdcell-fpga.pdf S.16
Allerdings ist das kein Thema des FPGA-Designs mehr, sondern der
Halbleiterfertigung.
Wie man die Leitungen verschaltet, also welche Verbindungen man
ermöglicht, ist nochmal ein Thema für sich.
Wenn man zum Beispiel eine Kreuzung aus fünf horizontalen und fünf
vertikalen Leitungen hat, hat man 25 Kreuzungen. Davon hat oft/meistens
nicht jede Kreuzung eine Verbindungsmöglichkeit, sondern nur bestimmte
davon. So spart man Platz auf Kosten der Flexibilität. Die Abwägung, wie
man das am besten macht, ist eine der Aufgaben des FPGA-Entwicklers (der
das FPGA entwickelt).
Dussel schrieb:> Die Abwägung, wie> man das am besten macht, ist eine der Aufgaben des FPGA-Entwicklers
...welche dieser meist ganz schnell an sein Synthese-Tool delegiert.
Gerd E. schrieb:> ...welche dieser meist ganz schnell an sein Synthese-Tool delegiert.
Vielleicht Vorgaben macht. Aber das Werkzeug kann meines Wissens nicht
selber entscheiden, an welchen Stellen Verbindungspunkte sinnvoll sind.
Aber das ist sowieso ASIC-Entwicklung, die etwas weiter geht als die
Entwicklung für ein FPGA.
Dussel schrieb:> Vielleicht Vorgaben macht. Aber das Werkzeug kann meines Wissens nicht> selber entscheiden, an welchen Stellen Verbindungspunkte sinnvoll sind.
Doch natürlich.
Du beschreibst in Verilog oder VHDL Deine Hardware. Also z.B. eine
Statemachine, ein Zähler, ein Schieberegister,... Das Synthesetool
übersetzt das dann grob gesagt in einzelne CLBs, Vorgaben für deren LUTs
etc. und wie diese untereinander zu verbinden sind. Dann kommt das
Place-and-Route-Modul und verteilt die über die Fläche des FPGA. Dabei
muss es natürlich als Nebenbedingungen beachten, dass manche CLBs nicht
direkt miteinander verbunden werden können und dann eine andere
Platzierung wählen.
Dass ein FPGA-Entwickler explizit einzelne, spezifische LUTs miteinander
verbindet ist eher der Ausnahmefall.
Ich schrieb über die Entwicklung eines FPGA, nicht auf einem FPGA. Die
Entwickler bei Xilinx, Intel, Microsemi und anderen Herstellern von
FPGAs.
Die müssen sich Gedanken machen, an welchen Stellen der
Verbindungsmatrix sie Verbindungsschalter vorsehen.
Das meinte ich:
https://pdfs.semanticscholar.org/a883/157ca255ada5dddd294b5468d8d8a55add8f.pdf
Abbildung 4 zum Beispiel.
Dussel schrieb:> Ich schrieb über die Entwicklung eines FPGA, nicht auf einem FPGA. Die> Entwickler bei Xilinx, Intel, Microsemi und anderen Herstellern von> FPGAs.
Sorry, da hatte ich Dich komplett falsch verstanden.
Dussel schrieb:> Wenn man zum Beispiel eine Kreuzung aus fünf horizontalen und fünf> vertikalen Leitungen hat, hat man 25 Kreuzungen. Davon hat oft/meistens> nicht jede Kreuzung eine Verbindungsmöglichkeit, sondern nur bestimmte> davon. So spart man Platz auf Kosten der Flexibilität.
Laut Xilinx sei dies das Geheimnis der FPGAs, denn die
Verschaltungstechnik sei x-mal komplizierter, als die eigentliche Logik.
Scheint mir auch plausibel. Eine LUT zu bauen, bedeutet ja nur eine
SRAM-Zelle. Das haben wird im Microelectronik-Praktikum an der Uni
gemacht.
Die Verschaltungen dürften bei den heutigen Strukturen 3D sein. Und sie
müssen gut abgewogen werden, weil sie selber eine Speicherzelle
benötigen, um gesetzt zu sein, samt der Zuleitung dazu. Dürfen
Scan-Chains sein, nehme ich an.
Das ist was für Mathematiker. Muss nicht 3d kann auch 5d oder 10d sein
;)
Der Chip selbst ist natürlich flach aber doch mit einigen
Metallisierungsebenen. Der Trend geht ja dahin dass man mehrere Chips
übereinander Stapelt, dann könnte man also von 2,5D sprechen.
Hamburger Hans schrieb:> Eine LUT zu bauen, bedeutet ja nur eine SRAM-Zelle.
Das stimmt, aber ein CLB enthält aber noch mehr und unterscheidet sich
auch deutlich zwischen den Herstellern.
Hamburger Hans schrieb:> Die Verschaltungen […] müssen gut abgewogen werden, weil sie> selber eine Speicherzelle benötigen, um gesetzt zu sein,> samt der Zuleitung dazu.
Vor Allem hat eine Kreuzung nicht nur einen Schalter, sondern (bis zu)
sechs, oder vielleicht sogar noch mehr. Die horizontale und die
vertikale Verbindung können auch noch geschaltet werden.