Forum: FPGA, VHDL & Co. Simple 3D-GPU in FPGA nachbauen möglich ?


von Ernst (Gast)


Lesenswert?

Die Suchmaschine spuckt nur ihren nach Klickanzahl sortierten, 
Werbung-gesponserten, Zielgruppen-relevanten Algorithmen-Dreck aus ...

Soviel ich weiss muss eine 3D-GPU aus Koordinaten Linien zwischen 
Punkten zeichnen können und diese mit Flächen füllen, vielleicht Textur 
draufmachen je nach Lichtwinkel beleuchtet usw.

Wie funktioniert das überhaupt ? Läuft da Microcode drin ? Es müsste 
wohl recht viel und schnell berechnet werden ...

von 2⁵ (Gast)


Lesenswert?

Natürlich geht das. Eine "einfache" 3D-GPU ist nichts anderes als ein 
Mikroprozessor, der eine Grafikpipeline "emuliert". Eine Grafikpipeline 
ist relativ komplex, gugst du: 
https://de.wikipedia.org/wiki/Grafikpipeline

von Konrad (Gast)


Lesenswert?

2⁵ schrieb:
> Eine "einfache" 3D-GPU ist nichts anderes als ein
> Mikroprozessor, der eine Grafikpipeline "emuliert".

Bis vor 1-2 Jahren hattest du recht. Aktuell setzen sich allerdings 
Analogprozessoren durch, da hier eine Linie einfach durch einen 
Verstärker mit entsprechendem Steigungsfaktor generiert wird, ganz ohne 
Takt und Latenz.
Flächenfüllen ergibt sich aus einem Komparator (entweder kleiner als die 
Linie oder größer -> gefüllt oder leer).
Man kann natürlich einen FPGA nehmen, wenn einen die neuen Entwicklungen 
nicht interessieren. Bei den Fragen wird auch eher der Stand von 1990 
erreicht als der Stand von 2010, von daher sollte es ausreichen.

von Gustl B. (gustl_b)


Lesenswert?

Konrad schrieb:
> Aktuell setzen sich allerdings Analogprozessoren durch, da hier eine
> Linie einfach durch einen Verstärker mit entsprechendem Steigungsfaktor
> generiert wird, ganz ohne Takt und Latenz.

Ist das so? Und wo genau setzen sich die durch? Haben aktuelle GPUs der 
großen Hersteller solche Analogschaltungen eingebaut?

Aber ja, man kann in FPGAs auch eine GPU einbauen. Es gab sogar mal ein 
Projekt mit einer FPGA Grafikkarte:
https://en.wikipedia.org/wiki/Open_Graphics_Project

Um eine Linie zwischen zwei Punkten in n-Dimensionen zu zeichnen gibt es 
Algorithmen. Genauso für das Füllen von Flächen.
https://de.wikipedia.org/wiki/Rasterung_von_Linien

von 2⁵ (Gast)


Lesenswert?

Konrad schrieb:
> Analogprozessoren

Hm... ich versuche gerade, Analogprozessoren mit meiner Vorstellung von 
3d-Modellen die mittels eines größeren Aufwandes peu à peu in einen 
2d-Framebuffer gerastet werden zu verbinden und schaffe dies nicht. 
Könntest du hier mehr Infos geben? Zumal die Darstellung von einfarbigen 
Linien bzw. Flächen im 3d-Prozess eher weniger gebraucht wird. Mir wäre 
auch neu, dass diese Technik im Consumerbereich (Nvidia und AMD) benutzt 
wird. Hier wird, vereinfacht gesagt, nach wie vor durch eine hohe Anzahl 
von Unified-Shadern die parallel arbeiten die Aufgabe erledigt.

Zur eigentlichen Fragestellung: Die ersten brauchbaren Consumer-Chipsets 
(Voodoo 1 & Co) kamen ja erst Mitte der 90er Jahre raus, ebenso die 
PlayStation 1. Die damalige 3d-Leistung war ja noch arg limitiert. Die 
Profikarten vorher (TIGA & Co) wahren ja eher Signalprozessoren, die 
sich auf dem Framebuffer austoben durften. Trotz allem dürfte der 
Nachbau eines aus heutiger Sicht simplen 3d-Chipsatzes (Voodoo oder PS1) 
trotzdem noch eine anspruchsvolle Aufgabe sein.

von 2⁵ (Gast)


Lesenswert?

Wobei man ja auch Silicon Graphics nicht vergessen darf, die hatten ja 
schon Ende der 80er Jahre Geometrie-Coprozessoren. Evtl. findet man hier 
Informationen, wie diese aufgebaut waren.

von Nun. (Gast)


Lesenswert?

Konrad schrieb:
> Aktuell setzen sich allerdings
> Analogprozessoren durch,

Quelle?
Hab ich abseits von Forschungsprojekten noch nichts gesehen.

von Gustl B. (-gb-)


Lesenswert?

2⁵ schrieb:
> Trotz allem dürfte der
> Nachbau eines aus heutiger Sicht simplen 3d-Chipsatzes (Voodoo oder PS1)
> trotzdem noch eine anspruchsvolle Aufgabe sein.

Das stimmt, aber es ist jetzt möglich. Damit meine ich, dass es 
heutzutage günstige FPGA Boards mit groß genugem FPGA gibt um sowas als 
Projekt anzugehen. Das wäre vor 15 Jahren für Privatleute nicht 
bezahlbar gewesen wenn es überhaupt in ein damals verfügbares FPGA 
gepasst hätte.

von mh (Gast)


Lesenswert?

Gustl B. schrieb:
> Konrad schrieb:
>> Aktuell setzen sich allerdings Analogprozessoren durch, da hier eine
>> Linie einfach durch einen Verstärker mit entsprechendem Steigungsfaktor
>> generiert wird, ganz ohne Takt und Latenz.
>
> Ist das so? Und wo genau setzen sich die durch? Haben aktuelle GPUs der
> großen Hersteller solche Analogschaltungen eingebaut?

Das ist ziemlich unwahrscheinlich, da die für compute-Anwendungen 
ziemlich nutzlos wären.

Kann man solche Analogschaltungen in 7nm FinFET überhaupt umsetzen? Hat 
hier jemand genug Ahnung von dem Thema oder Quellen, um die Frage zu 
beantworten?

von Sigi (Gast)


Lesenswert?

Konrad schrieb:
> Man kann natürlich einen FPGA nehmen, wenn einen die neuen Entwicklungen
> nicht interessieren. Bei den Fragen wird auch eher der Stand von 1990
> erreicht als der Stand von 2010, von daher sollte es ausreichen.

Gustl B. schrieb:
> Das stimmt, aber es ist jetzt möglich. Damit meine ich, dass es
> heutzutage günstige FPGA Boards mit groß genugem FPGA gibt um sowas als
> Projekt anzugehen. Das wäre vor 15 Jahren für Privatleute nicht
> bezahlbar gewesen wenn es überhaupt in ein damals verfügbares FPGA
> gepasst hätte.

Vor ca. 10 Jahren hatte ich eine GPU geschrieben, zuerst nur
integerbasiert, später dann mit 24Bit-Float-Support. Eine Unit
ging locker in das kleinste CycloneII bzw. StratixI, d.h. mein
Projekt wäre auch ab 2005 möglich gewesen (frühere grosse
FPGAs hätten es auch getan, d.h. ab 2002/2003). Bei grösseren
FPGAs und mehreren Speicherkanälen wären auch 2-8 Units
möglich gewesen. Bei 150-200MHz (CylconeII) und 200-300MHz
(StratixI) wären man schon bei 2-8 mal 150-300MPixel, d.h.
deutlichst jenseits einer RivaTNT2 von 1999, etwa auch dem
Niveau einer GForce3 von 2001. Das kann man jetzt weiterrechnen
und kommt auf einer aktuellen Stratix oder Virtex auf etwa
den Stand von 2015. Das ganze allerdings ohne Shaderunits.

von Ernst (Gast)


Lesenswert?

Wie aufwändig wäre es, die einfachste Form zu realisieren ? Also nur 
einfarbig gefüllte Dreiecke zeichnen (mit Beleuchtung, Drehung zur 
Kamera usw.) ? Es würde dann so aussehen wie im Spiel "Elite" nur 
gefüllt ... vielleicht so wie in "Star Fox".

von mh (Gast)


Lesenswert?

Ernst schrieb:
> Wie aufwändig wäre es, die einfachste Form zu realisieren ? Also nur
> einfarbig gefüllte Dreiecke zeichnen (mit Beleuchtung, Drehung zur
> Kamera usw.) ? Es würde dann so aussehen wie im Spiel "Elite" nur
> gefüllt ... vielleicht so wie in "Star Fox".

Der Aufwand hängt ganz stark davon ab, wie gut du dich mit dem System 
auskennst, auf dem es laufen soll, wie gut deine Mathekenntnisse sind 
und was du genau machen willst.

Für jemanden, der sich damit auskennt, sollte eine "minimale" 
Grafikpipline in z.B. Python in ein paar Stunden umzusetzen sein. Jemand 
der bis jetzt nur LEDs zum blinken gebracht hat und keine Ahnung hat was 
ne Matrix ist, braucht für eine "Grafikengine wie in Star Fox, die auf 
einem FPGA laufen soll, vermutlich mehrere Jahre.

von Markus F. (mfro)


Lesenswert?


von chris_ (Gast)


Lesenswert?

Hier basteln die schon seit längerer Zeit an einer einfachen GPU für ein 
FPGA:

https://www.eevblog.com/forum/fpga/fpga-vga-controller-for-8-bit-computer/1775/

von Sigi (Gast)


Lesenswert?

Das hängt davon ab, wie gut du die entsprechenden
Algorithmen kennst und wie gut du sie in HDL umsetzen
kannst.

Grob teilt man das Design in folgende Teile auf:
- Register-Set zur Ansteuerung für die CPU
- Speicherinterfaces (mehrere für Vektoren,
  Texturen, Z-Buffer-Read/Write und Pixelbuffer)
- TnL-Unit zum Transformieren der Vektoren
  (per FPGA-internen MUL-Units)
- für slicebasierten Ansatz (teilt Dreiecke in
  horz. Linien auf) ein oder mehrere Slicer-Units,
  die alle 3 Linien der Dreiecke in horz. Slicepakete
  unterteilt
- Slicer zum Zeichnen der horz. Slices
- (VGA- oÄ Ansteuerung, ist aber von den anderen
  Einheiten unabhängig, da nur der Pixelbuffer ausgelesen
  werden muss)

Die letzen drei Einheiten sind eiglich relativ einfach,
schwieriger sind die vielen Speicherinterfaces, da idR
nur ein Speicher (z.B. SDRAM) zur Verfügung steht.
Die Registerbank (z.B. per Altera-Avalon) ist idR auch
sehr einfach.

Ich kannte die Raster- und Mathealgorithmen recht gut,
die Umsetzung in HDL zu der Zeit war für mich auch sehr
einfach. Der Aufwand lag so bei 3-4 Monaten in der
Freizeit, der grösste Teil davon war bei mir das Testen.

von Konrad (Gast)


Lesenswert?

Ernst schrieb:
> Wie aufwändig wäre es, die einfachste Form zu realisieren ? Also nur
> einfarbig gefüllte Dreiecke zeichnen (mit Beleuchtung, Drehung zur
> Kamera usw.) ?

Dafür brauchst du nur ein paar OP-Amps. Wer sich auskennt, baut das in 
einem Tag zusammen.

von Ernst (Gast)


Lesenswert?

Konrad schrieb:
> Dafür brauchst du nur ein paar OP-Amps. Wer sich auskennt, baut das in
> einem Tag zusammen.

Operationsverstärkern waren nie so mein Ding - wollten einfach nicht ins 
Hirn. Die sind ja auch recht komplex, ich meine das die 
Ausbildungsunterlagen dazu über sehr viele Seiten gingen.

@Sigi:

Das klingt alles andere als einfach ... es wird wohl für mich 
unerreichbar sein. Die FPGA haben wohl schon Multiplikations-Blöcke drin 
- was kommt denn als nächstes   :-)

Trotzdem danke ich euch für die Antworten ... einen Versuch war es wert.

von 2⁵ (Gast)


Lesenswert?

Konrad schrieb:
> Also nur einfarbig gefüllte Dreiecke zeichnen (mit Beleuchtung, Drehung zur 
Kamera usw.) ?
>
> Dafür brauchst du nur ein paar OP-Amps. Wer sich auskennt, baut das in
> einem Tag zusammen.

Quatsch!

von Sunny (Gast)


Lesenswert?

> Wobei man ja auch Silicon Graphics nicht vergessen darf, die hatten ja
> schon Ende der 80er Jahre Geometrie-Coprozessoren.

Die brauchten dafür aber immer noch einen dicken Beisteller
und mehrere Hosenträger um ihn anzuschliessen.

Der erste echte 3D Adapter ist der ZX Leo.
Belegt räumlich zwar auch 4 Steckplätze, steckt aber im Rechner.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Konrad schrieb:
> Aktuell setzen sich allerdings Analogprozessoren durch
Und die werden dann zusammen mit den autonomen Straßenfahrzeugen fertig. 
Oder wo kann ich solche Grafikbausteine kaufen?

Konrad schrieb:
> Ernst schrieb:
>> Wie aufwändig wäre es, die einfachste Form zu realisieren ? Also nur
>> einfarbig gefüllte Dreiecke zeichnen (mit Beleuchtung, Drehung zur
>> Kamera usw.) ?
> Dafür brauchst du nur ein paar OP-Amps. Wer sich auskennt, baut das in
> einem Tag zusammen.
Ja, sowieso tut er das.
Und wer das in einem Tag zusammenbaut, der hat dann auch die nötigen 
Fertigungsprozesse in der Hand, um diese analoge Bildverarbeitung auf 
den selben Chip zu bringen wie das digitale Interface zum Prozessor und 
dzum Display.

Nun. schrieb:
> Hab ich abseits von Forschungsprojekten noch nichts gesehen.
Da war ja die vielgepriesene und wohlverdient in der Versenkung 
verschwundene Fuzzy-Logik schon mal weiter.

Ernst schrieb:
> Operationsverstärkern waren nie so mein Ding - wollten einfach nicht ins
> Hirn. Die sind ja auch recht komplex,
Im Grunde nicht, so lange man mitten im Arbeitsbereich bleibt.
> ich meine das die
> Ausbildungsunterlagen dazu über sehr viele Seiten gingen.
Naja, die Datenblätter von FPGAs samt integrierter Module sind ja nun 
auch nicht von der schmalsten Sorte...

von Εrnst B. (ernst)


Lesenswert?

Vielleicht passend dazu:

https://heise.de/-4718929

DOOM auf FPGA ohne dabei einen CPU-Core im FPGA zu nutzen...

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.