Forum: FPGA, VHDL & Co. Nachbildung einer Von-Neumann-Architektur will "atmen"


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Susan R. (sunrise)


Lesenswert?

Hallo,
ich bitte vorweg um Nachsicht dafür, falls das Nachfolgende unbeholfen 
klingen mag. Doch bin ich kein gelernter Informatiker, aber dennoch sehr 
daran interessiert, was im Innersten eines Computers im Einzelnen 
geschieht. Stichwort: »Von-Neumann-Archtitektur«

Hierzug erkunde ich seit einiger Zeit eine Reihe von Simulatoren, die 
die einzelnen Prozesse teilweise höchst anschaulich abbilden und auch 
dazu anregen wollen, selbst kleine Programme zu schreiben, welche dann 
(in Maschinensprache übersetzt) in ihrer Auswirkung am Modell konkret 
beobachtet und studiert werden können. Ich bin einfach fasziniert davon.

Nun komme ich zu meinem eigentlichen Anliegen: Ich bräuchte bitte ein 
wenig Unterstützung dabei, um einen Code für einen ganz bestimmten 
Simulator zum Leben zu erwecken, sprich: executable machen zu können. 
Die Kenntnisse dazu fehlen mir leider völlig; selbst das geduldige 
Recherchieren darüber, wie man dabei vorgehen muss/müsste, verkleinerte 
nicht im Geringsten die Distanz zum Erfolg ... und so wende ich mich nun 
also an Euch Fachleute.

Hierum geht's: https://github.com/PAntoine/Little-Man-Computer

Es gibt eine Überraschung für denjenigen, der mir beim Lösen meines 
kleinen Problems behilflich ist – Ehrenwort!

von Jack V. (jackv)


Lesenswert?

Susan R. schrieb:
> Ich bräuchte bitte ein
> wenig Unterstützung dabei, um einen Code für einen ganz bestimmten
> Simulator zum Leben zu erwecken

Für welchen? Unter Xilinx’ ISE sollte es ja anschaubar sein.

: Bearbeitet durch User
von Christian M. (christian_m280)


Lesenswert?

Susan R. schrieb:
> einen Code

Wo hast Du denn den Code? Das GitHub-Projekt scheint ja nur der 
Simulator/FPGA-Projekt zu sein...

Gruss Chregu

von Susan R. (sunrise)


Lesenswert?

Hallo, danke erst einmal für Eure rasche Antwort bzw. Fragen!
Nun ja, doch wie gehe ich da im Detail vor? Ich hatte noch nie mit 
Xilinx zu tun. Ich nehme an, dass ich sämtliche im Repository (siehe 
obigen Link im Eingangsposting) befindlichen Verzeichnisse und Dateien 
zur Ausführung benötigen werde. Oder muss da bereits Grundsätzliches 
beachtet werden?

Bedenke bitte, dass ich so etwas noch nie gemacht habe. Ich hatte es ja, 
wie erwähnt, mit Nachlesen versucht, doch da sehe ich den Wald vor 
lauter Bäumen nicht.

Und zur zweiten Frage (von christian_m280): Alles, was ich schrieb, 
bezieht sich allein auf die im Repository enthaltenen Dateien. Ich nahm 
an, dass man damit in einer geeigneten Umgebung die Simulation ausführen 
könne.

von Thorsten M. (pappkamerad)


Lesenswert?

Nehm dir lieber einen AVR-Mikrocontroller her und lerne darauf Assembler 
programmieren. Dann verstehst du, wie ein Rechner funktioniert.

von Thomas W. (Gast)


Lesenswert?

Hast Du Dir den Artikel in der Wikipedia 
(https://en.wikipedia.org/wiki/Little_man_computer) angeguckt und 
gelesen?

Das gezeigte Github-Projekt ist eine kleine Fingeruebung fuer einen 
kleinen Forschungsprozessor, genauer gesagt den Little Man Computer (von 
Dr.Stuart Madnick an der ISU in 1965). Das war damals Stand der 
Forschung wie man das Steuerwerk durch einen Computer ersetzt (da kam 
auch die PDP8 auf den Markt). Ueber die PDP8 findest Du genug Literatur.

Es stellt sich allerdings die Frage was Du mit sechzig Jahre alter 
Technologie machen willst? Wenn Du mehr Theorie der Rechenwerke angucken 
willst, wuerde ich den MIX-Prozessor benutzen (siehe Knuth, TaoCP, 
Vol.1, 1968(!)) oder, wenn Du mehr Hardware sehen willst, 
Computerarchitektur (z.B. Ward/Halstaed, Computation Structures, MIT 
Press, 1986).

Gruesse

von Susan R. (sunrise)


Lesenswert?

Also ich versuche es einaml neu zu formulieren: Wie würdet ihr dabei 
vorgehen, wenn ihr obiges Projekt einmal selbst ausprobieren wolltet? 
Das heißt, wenn ihr tatsächlich im Assembler-Eingabefeld Instruktionen 
eintragen und das Programm dann durchlaufen lassen möchtet?

Der Entwickler muss ja auch irgendwie damit gearbeitet haben um es 
testen zu können. Ich hatte wirklich noch nie mit einem Projekt auf 
Github zu tun, deshalb bitte ich Euch da wirklich sehr um Verständnis, 
wenn ich so alberne Dinge frage ;)

Beitrag #7838016 wurde vom Autor gelöscht.
von Martin S. (strubi)


Lesenswert?

Fuer Lernzwecke in der Art um 'mal eben' zu spielen gibt es diverse 
Playgrounds (im Browser), aber leider muss man auch da die Designsprache 
erst mal beherrschen. Und spaetestens bei der Ausfuehrung von Code ist 
schluss.

Mein Vorgehen bei externen V*-Projekten, die kaum dokumentiert oder 
nicht fertig zum sofortigen Laufenlassen sind:
* Jupyter Notebook mit fertigem Playground (icarus, GHDL, yosys, usw.) 
aufmachen
* Jeden Schritt von Source-Checkout bis zur laufenden Testbench brav 
dokumentieren und Rekonstruierbarkeit testen

So wie ich obiges Projekt ueberflogen habe, fehlt da einiges, um es mal 
eben schnell zu bauen resp. es in einer Referenzumgebung zu testen.

TODO also vermutlich:
* Assembler compilieren
* VHDL-Simulator aussuchen (GHDL oder kommerzielles tool)
* Programm uebersetzen, in VHDL-ROM-Form bringen, Testbench nudeln 
lassen
* Signale mit GTKWave o.ae. anschauen

Wie das im Notebook grundsaetzlich laeuft, kann man hier sehen: 
https://github.com/pcornier/1pCPU.

von Hmmm (hmmm)


Lesenswert?

Thorsten M. schrieb:
> Nehm dir lieber einen AVR-Mikrocontroller her und lerne darauf Assembler
> programmieren. Dann verstehst du, wie ein Rechner funktioniert.

Als Beispiel für die Von-Neumann-Architektur sind AVRs allerdings eher 
ungeeignet, die verwenden eine (modifizierte) Harvard-Architektur.

von Cyblord -. (cyblord)


Lesenswert?

Susan R. schrieb:
> Es gibt eine Überraschung für denjenigen, der mir beim Lösen meines
> kleinen Problems behilflich ist – Ehrenwort!

Ich hasse Überraschungen...

von Thomas W. (Gast)


Lesenswert?

Susan R. schrieb:
> Also ich versuche es einaml neu zu formulieren: Wie würdet ihr dabei
> vorgehen, wenn ihr obiges Projekt einmal selbst ausprobieren wolltet?
> Das heißt, wenn ihr tatsächlich im Assembler-Eingabefeld Instruktionen
> eintragen und das Programm dann durchlaufen lassen möchtet?

Weil ich die Hardware nicht habe, wuerde ich eine Suchmaschine (z.B. 
Google.com) benutzen, um einen Simulator zu finden:

https://oinf.ch/interactive/little-man-computer/

https://peterhigginson.co.uk/lmc/

> Der Entwickler muss ja auch irgendwie damit gearbeitet haben um es
> testen zu können. Ich hatte wirklich noch nie mit einem Projekt auf
> Github zu tun, deshalb bitte ich Euch da wirklich sehr um Verständnis,
> wenn ich so alberne Dinge frage ;)

Du brauchst bei github gar nichts machen (noch nicht einmal einen 
Account): Entweder (unter linux)
1
git clone https://github.com/PAntoine/Little-Man-Computer.git
oder einen beliebigen git-Client bei Windows. Und dann muss man gucken, 
was sich der Autor so gedacht hat. Die Erguesse auf Github sind nicht 
unbedingt immer funktionsfaehig oder lauffaehig, vor allen Dingen nach 
15 Jahren.

von Thilo R. (harfner)


Lesenswert?

Entschuldigung, falls das jetzt "von oben herab" klingt. Du schreibst 
vorweg, dass Du nicht so viel Ahnung hast. Du weißt wahrscheinlich 
nicht, was ein FPGA ist. Ich vermute mal, Du suchst einfach einen 
Simulator für den Little Man Computer. Probiere die beiden Links, die 
Thomas W. (vaxman) angegeben hat.

Das, was Du unter https://github.com/PAntoine/Little-Man-Computer 
gefunden hast, ist etwas komplett anderes. Ja, man kann das in einem 
Simulator abarbeiten lassen. Aber sofern Dein erster Post Deinen 
Kenntnisstand einigermaßen zutreffend beschreibt, ist das NICHT das, was 
Du tun möchtest.

von Peter D. (peda)


Lesenswert?

Susan R. schrieb:
> Ich bräuchte bitte ein
> wenig Unterstützung dabei, um einen Code für einen ganz bestimmten
> Simulator zum Leben zu erwecken

Streiche "ein wenig". Compiler und Simulatoren selber zu bauen, braucht 
schon exzellente Programmierkenntnisse, sowie viel Wissen und Erfahrung.
Ist quasi so, Du willst sofort den Mount Everest besteigen und weißt 
nichtmal, wie Du die erste Treppenstufe von Deinem Haus hochkommst.

Nimm daher erstmal eine fertige IDE (= Editor, Compiler, Simulator, 
Programmer, Debugger) für irgend eine CPU und lerne diese damit Schritt 
für Schritt kennen. Damit kannst Du nicht nur theoretisch Programme 
ausführen, sondern sie auch in das Target laden und in Echt laufen 
lassen (z.B. eine LED blinken lassen, Taste abfragen usw.).

Susan R. schrieb:
> Wie würdet ihr dabei
> vorgehen, wenn ihr obiges Projekt einmal selbst ausprobieren wolltet?

Es sein lassen.
Das ist uralt (2011). Da würde ich mal stark bezweifeln, daß man den 
Chip und alle alten Tools dafür überhaupt noch beschaffen und fehlerfrei 
installieren kann. Und Du kannst vermutlich auch kein C und VHDL, um 
selber die Probleme zu lösen. Auch scheint es eher so, als daß er 
mittendrin aufgehört hat, d.h. es ist nichtmal komplett.

von Udo S. (urschmitt)


Lesenswert?

Warum ist es eigentlich so schwer einen aussagekräftigen Betreff zu 
formulieren?

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.