Hi! Hab mal über die Anfänge von den FPGAs gelesen und drüber nachgedacht. Im Grunde sind ja FPGAs mit ihren Innereien nix anderes als programmierbare logikbausteine, die auch Statusmaschinen sein können, meistens auch Rückkopplungen, Eingänge und Ausgänge haben. Am einfachsten wäre das ja mit einem RAM Baustein lösbar in dem die Adressenleitungen die Eingänge bedeuten, und die Datenpins die Ausgänge. Jeder Zustand ist darin frei einprogrammierbar, und man kann jede beliebige komplizierte Funktion verwirklichen, vor allem, wenn auch die Ausgänge rückgekoppelt zu den Eingängen kommen. Vor langer Zeit ist das daran gescheitert, daß man dafür riesige RAMs gebraucht hätte, die man nicht hatte. Aber heute? Heute ist RAM fast kostenlos. Was kann man eigentlich in einen 16GByte DRAM Riegel unterbringen? Welcher FPGA-größe würde das entsprechen? Wie war das nochmal mit der Adressierung der DRAMs?
Dieser Vergleich hinkt gewaltig auf allen Beinen. In einem RAM kann man allerhöchstens eine Logik Ebene unterbringen, was anderes ist eind LUT im FPGA ja auch nicht. Aber schon Rückkopplung und FlipFlops gehen da nicht, von allen anderen FPGA Features wie Clock Manager, Transceiver usw mal ganz abgesehen. Die komplexe Ansteuerung eines DRAM verhindert sowas sowieso.
16GB/64 = 256MB = 28 Adressleitungen Nehmen wir mal an wir benötigen 12 davon für Rückführungen, dann bleiben gerade mal noch 16 Eingnänge übrig. Umd das RAM ansteuern benötigen wir allerdings einen zusätzlichen Baustein(FPGA), weil man heutige RAMs mit Kommandos und Daten füttern muss damit die überhaupt etwas tun. Fazit: Ein Mega-Aufwand für gerade mal 16 Eingänge und nur simple logische Funktionen und simple Zustandsautomaten. Im Hintergrund benötigen wir dann auch noch 16GB Flash-Memory zum laden. .
@ Martin G. (Firma: http://www.gyurma.de) (martin_g) >Am einfachsten wäre das ja mit einem RAM Baustein lösbar Nö, einem EEPROM oder FLash. Das wurde vor 20 Jahren als Workaround in Bastlerkreisen gemacht. >in dem die >Adressenleitungen die Eingänge bedeuten, und die Datenpins die Ausgänge. >Jeder Zustand ist darin frei einprogrammierbar, und man kann jede >beliebige komplizierte Funktion verwirklichen, vor allem, wenn auch die >Ausgänge rückgekoppelt zu den Eingängen kommen. Stimmt, aber diese Lösung wird immer ineffizineter, je größer die Breite es Eingangsvektors wird. Es hat schon seinen Grund, warum man es nicht so macht. Da haben viele kluge Leute lange überlegt und nachgerechnet. >gebraucht hätte, die man nicht hatte. Aber heute? Heute ist RAM fast >kostenlos. Sehr billig, weshalb er auch von Softwerkern gern verschwendet wird 8-0 >Was kann man eigentlich in einen 16GByte DRAM Riegel unterbringen? >Welcher FPGA-größe würde das entsprechen? Du wärst SEHR enttäuscht. Selbst das kleinste FPGA von heute kann deutlich mehr Logik unterbringen als ein 16 GB RAM. >Wie war das nochmal mit der Adressierung der DRAMs? Das ist das nächste Problem. Moderner SDRAM ala DDR3, DDR4 ist nicht mehr mit dem guten, alten SRAM von vor 20 Jahren vergleichbar, eine direkte Rückkopplung der Ausgänge auf die Adressen ist nicht möglich, denn die Ansteuerung dieser RAMs ist komplex und vor allem mit viel Pipelining/Burstmode verbunden.
Ein einfacherer Vergleich wäre zunächst mal FPGA<=>SRAM: Beim SRAM wird immer nur ein Datenwort (z.B. 16/32 oder bei paralleler Schaltung >=64 Bits) zu einem Zeitpunkt gelesen oder geschrieben, beim FPGA dagegen im Extremfall ALLE, Du hast also "absolute Parallelität" gegen "totale Serialität". Oder etwas mathematischer ausgedrückt: Du hättest beim SRAM eine extrem magere Topologie, beim FPGA eine extrem "dichte" Topologie. Einzige Einschränkung ist immer die Anzahl Pins. Deim DRAM kommt noch hinzu, dass es einen Refresh-Mechanismus hat, d.h. noch unflexibler wird.
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.