Forum: Mikrocontroller und Digitale Elektronik diskrete CPU


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 cpu_builder (Gast)


Lesenswert?

Hallo,

ich würde gerne eine CPU mit einer eigenen Architektur, die möglichst 
wenige Transistoren benötigt, diskret selber bauen, um die grundlegende 
Funktionsweise besser zu verstehen.

Natürlich In-Order-Execution und nur ein diskreter Halb-Addierer neben 
AND/OR/XOR/NOT. Also eher minimal, aber dennoch nutzbar. Der Einfachheit 
halber sollen die Befehle nicht in einem RAM landen, sondern direkt aus 
dem ROM.

Da EEPROM Chips wie der 24AA16I/P mit diskreter Logik wahrscheinlich nur 
schwer anzusteuern wären, würde ich wahrscheinlich eine Matrix aus 
steckbaren Drähten als EPROM-Ersatz nutzen.

Und aufgrund des Transistorbedarfs nur 1-bit Register -> nur 
Halb-Addierer nötig. Die Befehle sind sicher länger als 1 bit, den 
Befehlszähler würde ich 3bit oder 4bit lang machen, also 8 oder 16 
Befehle max.

Wie sieht es denn mit den Zyklen aus? Warum werden nicht 
fetch->decode->execute in einem Schritt erledigt? Also im Sinne 
Befehlszähler erhöht sich->Adresse neu->neuer Befehl->Dekoder->ALU, denn 
der Dekoder müsste doch logisch arbeiten können, also mit minimaler 
Verzögerung, ohne Takt, die ALU ebenso logisch ohne Takt...

Hat jemand Schaltungstipps, wie ich die ALU u.ä. Teile mit wenig 
Transistoren realisieren kann? Oder wie grundlegend simple Architekturen 
aufgebaut sind?

Danke im Voraus
cpubuilder

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

cpu_builder schrieb:
> Hat jemand Schaltungstipps, wie ich die ALU u.ä. Teile mit wenig
> Transistoren realisieren kann? Oder wie grundlegend simple Architekturen
> aufgebaut sind?

https://de.wikipedia.org/wiki/Intel_4004

cpu_builder schrieb:
> Da EEPROM Chips wie der 24AA16I/P mit diskreter Logik wahrscheinlich nur
> schwer anzusteuern wären, würde ich wahrscheinlich eine Matrix aus
> steckbaren Drähten als EPROM-Ersatz nutzen.

Die zugehörige 4001 hat ein 2048 bit ROM.
Viel Spass mit den Drähten ;-/

: Bearbeitet durch User
von geb (Gast)


Lesenswert?

Hmmm... mit wenigen Transistoren wird das wohl nix. Ein paar 1000 wirst 
du auch für die einfachste 4 Bit CPU brauchen. Würde eher versuchen das 
mit den 74xx Logikbausteinen zu machen, das hat noch eher Aussicht auf 
Erfolg.

Grüsse

von Teo D. (teoderix)


Lesenswert?


von Täglicher Murmeltier Grüsser (Gast)


Lesenswert?

Sommerloch.

Jetzt fängt der Freitag schon Montags an.

von oszi40 (Gast)


Lesenswert?

cpu_builder schrieb:
> ich würde gerne eine CPU mit einer eigenen Architektur, die möglichst
> wenige Transistoren benötigt

Man braucht keinen Transistoren. https://de.wikipedia.org/wiki/OPREMA

von Helmut S. (helmuts)


Lesenswert?

Das mit Transistoren zu bauen ist viel zu aufwendig. Dabei lernst du 
nichts außer löten und das Projekt wird am Ende aus Zeit- und 
Kostengründen scheitern.

Mindest mit 4-bit ALU und Flashspeicher für die Statemaschine solltets 
du starten.
https://www.bigmessowires.com/nibbler/

Wenn du eh VHDL gelernt hast, dann entwickle und simuliere das in VHDL. 
Das ist eigentlich der beste Weg.

von Purzel H. (hacky)


Lesenswert?

Ich wuerd's mit einem FPGA probieren. Resp ohne FPGA. Bei den FPGA 
Herstellern kann man einen Simulator herunterladen, und das Design bis 
zur Funktionsreife durchziehen. Dann schreibst du noch einen Assembler, 
resp Compiler fuer einen CPU Simulator und hast nachher wahrscheinlich 
gar keine Lust mehr das Alles effektiv auch laufen zu lassen.

: Bearbeitet durch User
von cpu_builder (Gast)


Lesenswert?

Teo D. schrieb:
> Schau mal hier rein:
> Beitrag "Rechner aus einzelnen BC547 Transistoren"

Sieht interessant aus!

Wegstaben V. schrieb:
> cpu_builder schrieb:
> Hat jemand Schaltungstipps, wie ich die ALU u.ä. Teile mit wenig
> Transistoren realisieren kann? Oder wie grundlegend simple Architekturen
> aufgebaut sind?
>
> https://de.wikipedia.org/wiki/Intel_4004
>
Interessanter Chip...
> cpu_builder schrieb:
> Da EEPROM Chips wie der 24AA16I/P mit diskreter Logik wahrscheinlich nur
> schwer anzusteuern wären, würde ich wahrscheinlich eine Matrix aus
> steckbaren Drähten als EPROM-Ersatz nutzen.
>
> Die zugehörige 4001 hat ein 2048 bit ROM. Viel Spass mit den Drähten ;-/
... wobei das Takten über einen Taster und Eingeben des Befehls ebenso 
über Taster möglich wäre

Vielleicht kaufe ich mir den

Teo D. schrieb:
> Schau mal hier rein:
> Beitrag "Rechner aus einzelnen BC547 Transistoren"

Ich dachte da eher an eine CPU, die nicht nur addieren, sondern auch 
logische Operationen, je nach Befehl, ausführen kann. Sehe ich mir 
dennoch an.

von cpu_builder (Gast)


Lesenswert?

Ich weiß, FPGAs und CPLDs sind verlockend... aber ich würde es gerne 
erstmal bare metal mäßig machen. Einfach weil auch das Bauen spaß macht. 
Nur 1bit. Und später 4 oder 8bit im FPGA

von Stefan ⛄ F. (stefanus)


Lesenswert?

Als einfache Architektur werfe ich mal die "Turing Maschine" in den 
Raum.
https://hackaday.com/2018/03/08/mechanical-wooden-turing-machine/

Das geht bestimmt mit weniger als 100 Transistoren, wenn du den Speicher 
nicht mit zählst. Ist allerdings schwierig, darauf etwas Sinnvolles zu 
programmieren.

: Bearbeitet durch User
von Stefan ⛄ F. (stefanus)


Lesenswert?

Ein halb-mechanischer Aufbau der Grund-Variante mit Lego Mindstorms:
http://www.cs.cmu.edu/~soonhok/building-a-lego-turing-machine.html

Oder hier eine etwas anspruchsvollere Variante der Turing Maschine in 
der Theorie: http://mathworld.wolfram.com/TuringMachine.html

Noch eine Variante mit Logik IC's:
https://hackaday.com/2018/02/23/a-two-tapes-turing-machine/

: Bearbeitet durch User
von Jim M. (turboj)


Lesenswert?

Ich glaube Dir ist nicht klar wie groß das wird.

Hier hat das mal jemand für den MOS6502 gemacht, das ist ein noch recht 
einfacher Prozessor (z.B. aus dem C64): https://monster6502.com/

Das sind >3k Transistoren. Mit 4 Bits spart man da kaum was, 1-Bit wäre 
IHMO entweder nicht turing-mächtig oder spart nix gegenüber 4-Bit.

cpu_builder schrieb:
> Wie sieht es denn mit den Zyklen aus? Warum werden nicht
> fetch->decode->execute in einem Schritt erledigt?

Weil Du dann Taktraten im niedriegen kHz Bereich hättest, und keine MHz. 
Außerdem müsste man sich ernsthaft Gedanken über Glitches machen.

von Thomas V. (Gast)


Lesenswert?

aus dem Wiki:
"Zum 35. Jahrestag des 4004 wurde im November 2006 in Santa Clara die 
Ausstellung „Intel Museum“ nahe der Firmenzentrale eröffnet. Intel hat 
im Zuge dessen einen 4004 aus 2300 diskret aufgebauten Transistoren im 
Maßstab 130:1 nachgebaut.[4] Das voll funktionsfähige Modell verarbeitet 
zur Demonstration Programme aus dem Jahre 1971"

2300 Transistoren sind überschaubar....

hier gibt es Schaltbilder vom 4004:
http://www.4004.com/

von Theor (Gast)


Lesenswert?

@cpu_builder

Ich bin allerdings der Ansicht, dass Dich die praktischen Probleme beim 
Aufbau aus realen Bauelementen auf Transistorebene sehr in Anspruch 
nehmen werden.
Energie, Zeit und Nervenaufwand beim Aufbau (und glaube mir, Du wirst 
schimpfen wie ein Rohrspatz) sind (in etwa) vergleichbar mit dem Aufwand 
für das Verständnis von CPUs.
Ich würde Dir daher doch raten, so eine Schaltung lieber zu simulieren. 
Das hätte den Vorteil, dass Du Dich auf die logische Funktion 
konzentrieren kannst.

von Theor (Gast)


Lesenswert?

Wobei ... Naja ... Ich erinnere mich, dass wir damals (schon länger her) 
auch solche "Träume" hatten. :-)

von Helmut S. (helmuts)


Lesenswert?

Thomas V. schrieb:
> aus dem Wiki:
> "Zum 35. Jahrestag des 4004 wurde im November 2006 in Santa Clara die
> Ausstellung „Intel Museum“ nahe der Firmenzentrale eröffnet. Intel hat
> im Zuge dessen einen 4004 aus 2300 diskret aufgebauten Transistoren im
> Maßstab 130:1 nachgebaut.[4] Das voll funktionsfähige Modell verarbeitet
> zur Demonstration Programme aus dem Jahre 1971"
>
> 2300 Transistoren sind überschaubar....
>
> hier gibt es Schaltbilder vom 4004:
> http://www.4004.com/

Da werden reine MOS-Transistoren verwendet. Wer glaubt er könnte da 
billige VDMOS-Transistoren einsetzen der irrt, denn hier wird ein Teil 
der Transistoren als Transfergate verwendet. Dazu werden echte 
MOS-Transistoren benötigt die heutzutage fast niemand mehr einsetzt und 
entsprechend teuer wird das.

Wenn man das dann nur nachbaut hat man übrigens noch gar nichts über die 
Funktion gelernt. Die muss man erst mit "reverse engineering" aus dem 
Schaltplan herausfinden. Wer das kann der spendiert besser gleich die 
Zeit in seine eigene CPU.

: Bearbeitet durch User
von cpu_builder (Gast)


Lesenswert?

Wahrscheinlich hast du Recht. Dennoch habe ich Probleme beim Erstellen 
eines Blockschaltbildes.. Was genau benötigt eine CPU?

Taktquelle, Befehlszähler, ALU, Register inkl. Befehlsregister, 
Befehlsdekoder, etwas zum Ansteuern des Speichers...

Kann mir jemand da helfen?

von M.A. S. (mse2)


Lesenswert?

Theor schrieb:
> Wobei ... Naja ... Ich erinnere mich, dass wir damals (schon länger her)
> auch solche "Träume" hatten. :-)
Ja, ich will's nicht leugnen. :)  Gemacht habe ich's aber nicht. (Und 
das ist auch gut so!)


Zum Verständnisgewinn würde ich einen anderen Weg empfehlen:
- Bau auf Transistorebene einzelne Gatter und Flipflops auf.
- Bilde daraus kleine (nicht zu komplexe) Systeme.
- komplexere Systeme würde ich dann aus Logik-ICs zusammenbasteln,
und wenn es dann richtig komplex werden soll:
- Doch FPGAs.

Aus meiner Sicht ist das der effizienteste Weg, um Erkentnisse zu 
gewinnen.


Eine komplette CPU aus Einzeltransistoren: Ich würd's lassen (aber jedem 
das seine!).


PS: Eine CPU auf der Basis von Logik-ICs, solche Projekte gibt es/gab es 
schon. Z.B. dieses:
http://www.mycpu.eu/

(Einer Life-Vorführung davon durfte ich vor Jahren auf dem 
Bralug-Treffen an der Uni-Potsdam beiwohnen.)

: Bearbeitet durch User
von Stefan ⛄ F. (stefanus)


Lesenswert?

> Was genau benötigt eine CPU?
> Taktquelle, Befehlszähler, ALU, Register inkl. Befehlsregister,
> Befehlsdekoder, etwas zum Ansteuern des Speichers...

Damit bist du bei den bekannten Architekturen. Aber du wolltest doch 
eine komplett eigene bauen. Dann lies Dich wirklich mal zum Turing 
Automat ein, nur so als Anreiz, dass man auch völlig anders "Computen" 
kann, als es die derzeit üblichen Mikrocomputer tun.

von Michael B. (laberkopp)


Lesenswert?

cpu_builder schrieb:
> Und aufgrund des Transistorbedarfs nur 1-bit Register

cpu_builder schrieb:
> Ich weiß, FPGAs und CPLDs sind verlockend... aber ich würde es gerne
> erstmal bare metal mäßig machen. Einfach weil auch das Bauen spaß macht.
> Nur 1bit.

Ein 1 bit Prozessor, zwar ohne Detailschaltplan, aber so komplex sind 
die Elemente nicht:

http://www.brouhaha.com/~eric/retrocomputing/motorola/mc14500b/mc14500brev3.pdf

von cpu_builder (Gast)


Lesenswert?

M.A. S. schrieb:
> - Bau auf Transistorebene einzelne Gatter und Flipflops auf.
> - Bilde daraus kleine (nicht zu komplexe) Systeme.
> - komplexere Systeme würde ich dann aus Logik-ICs zusammenbasteln,
> und wenn es dann richtig komplex werden soll:
> - Doch FPGAs

So mache ich es! Zurzeit habe ich keine Elektronik zur Hand, deshalb 
denke ich gerade über eine eigene, eher exotische Architektur nach... 
Nur muss es ja am Ende funktionieren... i2c habe ich schon gebitbanged, 
aber wie man den Sendeablauf in Hardware macht...  ein Mysterium

von cpu_builder (Gast)


Lesenswert?

Sonst wird es nichts mit i2c EEPROM 24AA16 I/P

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> Wahrscheinlich hast du Recht. Dennoch habe ich Probleme beim Erstellen
> eines Blockschaltbildes.. Was genau benötigt eine CPU?
>
> Taktquelle, Befehlszähler, ALU, Register inkl. Befehlsregister,
> Befehlsdekoder, etwas zum Ansteuern des Speichers...
>
> Kann mir jemand da helfen?

Ich würde Dir raten, an dieser Stelle nicht vom Ganzen ins Einzelne zu 
gehen, sondern umgekehrt.
Und zwar weil: (Ich gehe da von meinen eigenen Lernfortschritten aus. 
Das muss für Dich nicht so sinnvoll sein.) Ich vermute mal, Du hast Dir 
solche Blockschaltbilder von CPUs schon angeschaut. Du weisst, - 
vermutlich -, an sich, wie eine Taktquelle im Detail aufgebaut ist; ein 
Zähler, ein Register. Auch eine ALU ist Dir zumindest grundsätzlich 
klar. Ich vermute weiter, Dir ist "im Prinzip" klar, wann, welche Daten 
woher und wohin transportiert werden. (Falls nicht, schreibe das bitte).

Es gibt an dieser Stelle mindestens zwei Wege auf denen Du, meiner 
Meinung nach, sinnvoll weitermachen kannst. Die ALU oder der 
Datentransport.

Der Datentransport ist deswegen interessant, weil er relativ schnell zu 
den Grundlagen der Befehlsabarbeitung (also dem Befehlsdekoder) führt.
Nimm einmal an, Du hast drei Register, einen Eingabeport, einen 
Ausgabeport und eine Taktquelle. Die Aufgabe ist, die Daten vom 
Eingabeport, zu dem ersten Register, von dort zu dem zweiten, von dort 
zu dem dritten und von dort zum Ausgabeport zu leiten.
Ich würde Dir raten, sowas in einer Simulation zu versuchen.

Dann die ALU. Beschränke Dich vielleicht zunächst auf einfache 
Operationen wie die Negation und im zweiten Schritt auf Operationen wie 
"Oder", "Und" oder "XOR".
Versuche mal, in Simulation, eine Schaltung zu bauen, die eine von Vier 
Operationen ausführt. Im Falle der Negation mit nur einem Operanden, 
sonst mit zwei Operanden.
Dann: Ausgehend von den Versuchen über den Datentransport, nimm an, Du 
hast einen zweiten und einen dritten Eingangsport, nimm an, Du müsstest 
Daten von zwei Eingangsports zu zwei Register und im zweiten Schritt von 
dort zur ALU transportieren. Gleichzeitig wird am dritten Eingangsport 
die Operation der ALU ausgewählt und in einem Register gespeichert (muss 
also von dort zur ALU weitergegeben werden).

Vielleicht fängst Du, bevor Du Simulationen aufbaust, in beiden Fällen 
mit einem Blockdiagramm an und überlegst Dir einen zeitlichen Ablauf. 
Wenn Du das hier postest, werde ich das kommentieren und Fragen dazu 
beantworten. (Je nachdem wie ich Zeit habe, allerdings).

Viel Erfolg.

von Stefan S. (chiefeinherjar)


Lesenswert?

Für solche Spielereien bietet sich das kostenlose aber mächtige Logisim 
an.
Das bietet alle erdenklichen Gatter, Tasten, Taktquellen, RAM und ROM.
Man kann auch einzelne Schaltungen zu einer Blackbox kapseln, welche 
dann wieder mit anderen verbunden werden kann.
So kann man beispielsweise erst die ALU, dann RAM, dann Statemachine und 
was noch so dazu gehört ans Laufen kriegen und separat "durchspielen".
Daraus kann man, wenn man DANN noch Lust hat, recht einfach mit 74er 
Logik auf die Platinenebene wechseln.

Es gibt auch Modelle von fast allen 74er zum Download, frag mal Google 
nach dem Link dazu - ich habe in gerade nicht parat.

von Fitzebutze (Gast)


Lesenswert?

Alle Jahre wieder...

Ich hatte beruflich viel mit auszubildenden Elektrotechnikern zu tun, 
und darunter waren auch immer einige Hypergeeks, die den Biss für solche 
Projekte und mehrere Jahre Zeit in der Reserve hatten.
Ich mach's mal kurz: Die Komplexität wird so klassischerweise zu 90% 
überschätzt, der Frustration zu 75% nachgegeben.
Optionen:

a) Du machst dir die Sache so einfach wie möglich:

- Modelliere den Kram erst mal funktional in Python/MyHDL
- Mach die Sache synthesefähig für's FPGA (Ausgabe in Verilog oder VHDL) 
und lass es auf einem Billigboard (30€) laufen

b) Mach dir das Leben schwer und beginne mit asynchronen TTL-Designs a 
la MyCPU, dabei wirst du viele schmerzhafte Lernprozesse durchmachen

Dazwischen gibt es eine Menge andere Wege, mit denen man sich gehörig 
verzetteln kann. Dementsprechend performen viele der Hyper-Geeks in der 
Industrie schlecht, weil sie sich mit ihrem ganz eigenen Schädel in 
Details verzetteln. Schadet nicht, wenn du klar weisst, wo du 
stehst/stehen willst.

Wenn du mit a) angefangen hast, und dein Konzept verifiziert hast, 
kannst du immer noch den Weg gehen, alles mit diskreter Logik aufzubauen 
- und dich dann entscheiden, ob du es als Lötübung oder als Geekprojekt 
aufziehst (a la 'because I can').
Lustig ist das schon, einem einfachen 6502-Redesign auf einem 
pizzagrossen PCB beim Blinken zuzusehen. Aber es gibt SO viele davon...

von cpu_builder (Gast)


Lesenswert?

Danke Theor!

Deine Beschreibung dessen, was ich weiß und was nicht, ist exakt 
zutreffend! Nur eine Frage bevor ich die Situationen versuche zu lösen:

[Frage 1]
Was ist der große Datenbus, mit dem fast alles in CPUs verbunden ist, in 
realen Schaltungen?

bidirektional? Viele kleine Verbindungen, deren Gesamtheit den Bus 
ergibt? Oder zapfen die vielen Teile die Informationen im Bus an, um zu 
funktionieren?

[Frage 2]
Und werden Befehl+Daten parallel oder nacheinander über den Bus 
gesendet?

[letzte Frage 3]
Was für Arten von Registern sind sinnvoll?
Also dass ich, auch wenn Addition das einzige hardwareseitig vorhandene 
außer Logik ist, Subtraktion, Multiplikation,... dennoch machen kann? 
Brauche ich Carry-Bits,...? Wieviele?

Diese Fragen habe ich mir schon lange gestellt. Antworten darauf würden 
mir sehr helfen.

Und jetzt mache ich erstmal die Hausaufgaben von Theor ;)

von cpu_builder (Gast)


Lesenswert?

Fitzebutze schrieb:
> Aber es gibt SO viele davon...

... aber keines davon steht in meiner Wohnung B-)

von cpu_builder (Gast)


Lesenswert?

Theor schrieb:
> Dir ist "im Prinzip" klar, wann, welche Daten woher und wohin
> transportiert werden. (Falls nicht, schreibe das bitte).

Im Prinzip Ja, im Detail nein...

von foobar (Gast)


Lesenswert?

Der Gigatron ist nen vollständiger Computer (inkl CPU) aus TTL-ICs 
(74er):

  https://gigatron.io/

Gibt auch einiges dazu auf YouTube (unter anderem im EEVBlog[1]).

MMn ist es nicht so sinnvoll, nen Computer ausschließlich aus diskreten 
Transistoren aufzubauen. Nach den ersten paar Logikgattern ist einem 
klar, wie sie aufgebaut sind und danach ist es nur noch mühsam. Mittels 
der 74er-Logik-ICs kann man sich mehr auf den Aufbau eines Computers 
konzentrieren als auf den der einzelnen Gatter.



[1] https://www.youtube.com/watch?v=6vbI-r5aXJI

von cpu_builder (Gast)


Angehängte Dateien:

Lesenswert?

Zum Datentransport:

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> Danke Theor!
>
> Deine Beschreibung dessen, was ich weiß und was nicht, ist exakt
> zutreffend! Nur eine Frage bevor ich die Situationen versuche zu lösen:
>

Gut. Danke für die Antwort.

> [Frage 1]
> Was ist der große Datenbus, mit dem fast alles in CPUs verbunden ist, in
> realen Schaltungen?
>
> bidirektional?
Das ist eine der Möglichkeiten. Soweit mein Überblick reicht, die 
häufigste, weil platzsparendste. Andererseits macht das eine 
Ablaufsteuerung notwendig.
> Viele kleine Verbindungen, deren Gesamtheit den Bus
> ergibt?
Nein.
> Oder zapfen die vielen Teile die Informationen im Bus an, um zu
> funktionieren?
Ja. Wer wann "anzapft" ist eine Aufgabe der Ablaufsteuerung oder in 
anderen Wort der "Befehlsdekodierung".

> [Frage 2]
> Und werden Befehl+Daten parallel oder nacheinander über den Bus
> gesendet?
Sowohl als auch. Beides kommt vor. Im AVR z.B. sind Konstanten Teil 
bestimmter Befehle. Das muss aber nicht zwingend so sein. Der 6502 z.B. 
hat das nicht.

> [letzte Frage 3]
> Was für Arten von Registern sind sinnvoll?
> Also dass ich, auch wenn Addition das einzige hardwareseitig vorhandene
> außer Logik ist, Subtraktion, Multiplikation,... dennoch machen kann?
> Brauche ich Carry-Bits,...? Wieviele?

Das ist zu summarisch gefragt um es abschliessend zu beantworten.
Im Prinzip lassen sich alle denkbaren Funktionen aus einer Kombination 
von zwei Operationen zusammensetzen. 1. Der Negation und 2. entweder 
"Und" oder "Oder" oder "Exklusiv-Oder".
Es müsste also z.B. kein Übertragsbit physisch als Flip-Flop existieren.
Sinnvoll ist allerdings, einiges in Hardware zu ermöglichen. Das geht 
einfach schneller. Nur kann man diese Absicht nicht endlos weit treiben, 
da die CPU damit immer grösser und teurer wird.
Auch Sand (oder eher Silizium) kostet Geld.

> Diese Fragen habe ich mir schon lange gestellt. Antworten darauf würden
> mir sehr helfen.
>
> Und jetzt mache ich erstmal die Hausaufgaben von Theor ;)

Gut. Da wird sich, wenn Du über Deine Ergebnisse nachdenkst, einiges von 
selbst beantworten.

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> Zum Datentransport:

Also "formal" ist die Aufgabe damit erfüllt. :-)

Allerdings zeigt das nicht, wie und wann der Transport zwischen den 
Registerstufen gesteuert wird. Das ist aber gerade das, was 
interessiert, weil es zur Befehlsausführung führt.

Nimm mal folgende Vorlage bitte:



+------+
| Takt +->-
+------+

    +----------+
-->-+ Register +->--
    +----------+

Welche Signale brauchst Du noch am Register und wie erzeugst Du sie aus 
der Taktquelle?

von Purzel H. (hacky)


Lesenswert?

Ich empfehl mal das Studium einer ALU : SN74xx181, SN74xx283, und dann 
sollte deren Funktionalitaet klar sein, auch was das Carry und Borrow 
betrifft.

von cpu_builder (Gast)


Angehängte Dateien:

Lesenswert?

Zur ALU:

von cpu_builder (Gast)


Lesenswert?

Theor schrieb:
> Allerdings zeigt das nicht, wie und wann der Transport zwischen den
> Registerstufen gesteuert wird. Das ist aber gerade das, was
> interessiert, weil es zur Befehlsausführung führt.

An sich doch nur die 3 FlipFlops im Schieberegister. Oder?

Welche weiteren Signale? Sorry, aber im Gebiet von Registern/CPUs/... 
bin ich Anfänger, keine Ahnung was da fehlt. Ich könnte die FlipFlips, 
die das Schieberegister bilden, zeichnen, aber das bringt ja kein 
weiteres Signal hervor

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> Theor schrieb:
>> Allerdings zeigt das nicht, wie und wann der Transport zwischen den
>> Registerstufen gesteuert wird. Das ist aber gerade das, was
>> interessiert, weil es zur Befehlsausführung führt.
>
> An sich doch nur die 3 FlipFlops im Schieberegister. Oder?
>
> Welche weiteren Signale? Sorry, aber im Gebiet von Registern/CPUs/...
> bin ich Anfänger, keine Ahnung was da fehlt. Ich könnte die FlipFlips,
> die das Schieberegister bilden, zeichnen, aber das bringt ja kein
> weiteres Signal hervor

Hm. Mit dem Ziel einer CPU im Auge sollte der Mechanismus universeller 
als ein Schieberegister sein. Ein Schieberegister ist eine 
spezialisierte Form bei der bei genau einem Ereignis des Taktes, die 
Daten vom Eingang in das erste FF, vom ersten FF in das zweite etc. 
übernommen werden und das gleichzeitig für alle FFs.

In einer CPU ist aber die Abfolge möglicherweise zeitlich voneinander 
getrennt. Oder es sollen nur Daten vom Eingang ins erste Register und 
zwei Sekunden später Daten vom zweiten ins dritte Register übernommen 
werden ohne das die anderen Register verändert werden.

Man muss also die Erzeugung der Steuersignale für die Register von der 
Struktur des Datenflusses trennen. Im Effekt muss es möglich sein, die 
Signale zur Datenübernahme (und später auch zur Ausgabe) getrennt 
voneinander zu steuern. Ein Schieberegister ist aber per Definition ein 
Ganzes, bei dem das nicht möglich ist.


Was Register und Flip-Flops betrifft, solltest Du Dich informieren.
Allgemein gibt es mindestens ein Signal, das bei einer Flanke oder einem 
Zustand die Eingangssignale speichert. Im Detail sind das die 
verschiedenen Flip-Flops. Also RS-FF, oder D-FF oder andere. Gehe mal 
von einem flankengesteuerten D-FF aus.

von Alex W. (Gast)


Lesenswert?

Gabs hier nicht mal ein Projekt einer eigenen CPU für en FPGA? War das 
Kurt Bindl? Hab was von Bomeranz-Projekt in Erinnerung

von LostInMusic (Gast)


Lesenswert?

>Was für Arten von Registern sind sinnvoll?
>Also dass ich, auch wenn Addition das einzige hardwareseitig vorhandene
>außer Logik ist, Subtraktion, Multiplikation,... dennoch machen kann?
>Brauche ich Carry-Bits,...? Wieviele?

Rein theoretisch braucht man sehr wenig, nämlich einen Speicher und eine 
ALU, die lediglich eine einzige Instruktion ausführen kann, etwa 
"subleq" für "SUBtract and branch if Less-than or EQual to zero" [*]. 
Wie Patterson und Hennessy zeigten ist ein solcher OISC (one instruction 
set computer) turing-vollständig und damit prinzipiell genauso mächtig 
wie Dein PC. Ein Programm, das etwas "Vernünftiges" tut, etwa Primzahlen 
berechnet, würde allerdings in einem aberwitzig großen Code resultieren.

Hier findest Du mehr Infos dazu, einschließlich einiger Beispiele für 
die Synthese höherer Instruktionen aus "subleq"s:

https://en.wikipedia.org/wiki/One_instruction_set_computer

https://esolangs.org/wiki/OISC

-------------------
[*] Subleq is a simple one instruction language. Each implied subleq 
instruction has 3 memory address operands "A, B, C". The execution of 
one instruction subtracts the value in memory address A from the value 
in memory address B, assigning the result into memory address B. If the 
subtraction result assigned into memory address B is less than or equal 
to zero, the execution jumps to the memory address C; otherwise it 
continues to the next instruction. Each value has its own address so 
each instruction is three addresses long.

(Quelle: https://esolangs.org/wiki/Subleq)

von cpu_builder (Gast)


Lesenswert?

LostInMusic schrieb:
> Subleq

Sehr interessant. Auch wenn ich das mit Turing nicht ganz verstanden 
habe. Vielleicht kann mir jemand das ja so erklären als wäre ich ein 
2jähriger? :)

Was die Aufgabe von Theor betrifft:

Ich schreibe jetzt einfach mal was ich denke (sonst kommen nur 
unlogische Resultate meiner Gedankengänge an):

Register sind FlipFlops
D-FlipFlops
Und übernehmen bei einer Taktflanke den aktuellen Wert am D-Eingang

3 davon habe ich
Jetzt brauche ich einen Multiplexer der je einen D-Eingang nach "außen" 
führt und einen zweiten Multiplexer, der den Port oder das vorherige 
Register auswählt.
Am Ende wird das Register 3 über den einen Multiplexer an Port B 
(Ausgabe) geführt.

Jetzt müssen die Multiplexer gesteuert werden. Aber ich weiß ja nicht ob 
die einfach von 1-4 durchlaufen oder ob sie eine andere Art Steuersignal 
brauchen... Die sind auch eine Art Mysterium für mich

von cpu_builder (Gast)


Lesenswert?

So sehr ich solche Rätselaufgaben auch mag, bin ich jetzt ratlos und 
benötige einen Tipp..

von cpu_builder (Gast)


Lesenswert?

Jetzt ist G. schrieb:
> Ich empfehl mal das Studium einer ALU : SN74xx181, SN74xx283, und dann
> sollte deren Funktionalitaet klar sein

Das ist jetzt mein nächster Schritt, aber die Register beschäftigen mich 
noch

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> So sehr ich solche Rätselaufgaben auch mag, bin ich jetzt ratlos und
> benötige einen Tipp..

Das mag auch an meinem didaktischen Ansatz liegen. Vielleicht passt er 
für Dich nicht.

Ich bin nämlich gerade versucht zu sagen: "Mach es nicht so 
kompliziert". Aber zuvor habe ich gesagt: "Mach es ein wenig 
komplizierter". Und das geht doch nicht! Oder doch? :-)

Naja.

Also ich habe mir das so vorgestellt.
1
    +----------+          +----------+         +----------+
2
-->-+ Register +->--  -->-+ Register +->-- -->-+ Register +->--
3
    +-----+----+          +----+-----+         +----+-----+
4
          ^                    ^                    ^
5
          +---+                |                    |
6
              |                |                    |
7
+------+   +--+----------------+--------------------+-------+
8
| Takt +->-+ z.B. Ein Zähler mit Logik                      |
9
+------+   +------------------------------------------------+

Die "Übernahme"-Signale sehen dann zeitlich so aus:
1
                     _
2
Reg 1    ___________| |_____________________________________
3
                                    _
4
Reg 2    __________________________| |______________________
5
                                                  _
6
Reg 3    ________________________________________| |________

Den Zähler mit Logik hätte ich mir vielleicht etwas detaillierter 
gewünscht, als ich ihn gezeichnet habe, aber das ist nebensächlich.

[Mod] ASCII-Zeichnungen neu formatiert.

: Bearbeitet durch Moderator
von cpu_builder (Gast)


Lesenswert?

Aus den Zeichnungen werde ich nicht ganz schlau..  was || oder ||| z.B. 
bedeutet

Aber du meinst

Eingabeport->-Register1->-Register2->-Register3->-Ausgabeport

Und Übernahmesteuerung über einen durch FlipFlops als Zähler verzögerten 
Takt

Oder?

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> Aus den Zeichnungen werde ich nicht ganz schlau..  was || oder ||| z.B.
> bedeutet

Öh. Wo kommt da "||" oder "|||" vor?
Wie auch immer. "|", "_" und "-" sind einfach Linien einer Zeichnung. 
"^" und ">" sind Pfeile. "+" sind Ecken.

> Aber du meinst
>
> Eingabeport->-Register1->-Register2->-Register3->-Ausgabeport
>
> Und Übernahmesteuerung über einen durch FlipFlops als Zähler verzögerten
> Takt
>
> Oder?

Richtig.

von Roger (Gast)


Lesenswert?

Ich will auch eine CPU bauen. Am besten einen Pentium...

Habe aber null Ahnung.  Reicht eine 9V Batterie oder bruuche ich ein 
AKW?


Oh Gott ...schmeiß Hirn!

Roger

von S. R. (svenska)


Lesenswert?

cpu_builder schrieb:
> ich würde gerne eine CPU mit einer eigenen Architektur, die möglichst
> wenige Transistoren benötigt, diskret selber bauen, um die grundlegende
> Funktionsweise besser zu verstehen

Kann man machen, ist eher doof. Ich empfehle dir stattdessen einen 
Simulator. Vor vielen Jahren gab es mal KLogic (als Teil von KDE), mit 
dem man sowas machen konnte.

Das wäre deinem Wissensstand angemessen, und wenn du in diesem Simulator 
den gesamten digitalen Kram verstanden und korrekt umgesetzt hast, 
kannst du dich in die analoge Welt mit echten Transistoren begeben. Und 
du musst dazu nichts wegschmeißen.

cpu_builder schrieb:
> Der Einfachheit halber sollen die Befehle nicht in einem RAM
> landen, sondern direkt aus dem ROM.

Das spielt aus Sicht der CPU keine Rolle. Die eigentliche Logik kippt 
eine Adresse und ein paar Steuerdaten auf den Bus und erwartet, dass die 
restliche Schaltung damit klarkommt.

Ein ROM wird genauso angesprochen wie ein SRAM.

cpu_builder schrieb:
> Da EEPROM Chips wie der 24AA16I/P

Ja, den zu benutzen wäre reichlich bescheuert.
Nimm ein paralleles EEPROM (oder EPROM), damit ist das kein Problem. Du 
kannst da sogar einen Großteil deiner Logik reinstopfen.

Das ROM (bzw. das RAM) diskret aufbauen zu wollen, ist größenwahnsinnig.

cpu_builder schrieb:
> Und aufgrund des Transistorbedarfs nur
> 1-bit Register -> nur Halb-Addierer nötig.

Damit ist das Teil nicht nur extrem aufwändig, sondern auch extrem 
ineffizient. Du brauchst nämlich viele Befehle, um deine winzigen 
Register auszugleichen.

> Die Befehle sind sicher länger als 1 bit, den Befehlszähler
> würde ich 3bit oder 4bit lang machen, also 8 oder 16
> Befehle max.

Damit ist das Teil nicht nur extrem aufwändig und extrem ineffizient, 
sondern auch extrem nutzlos. Denn du verbietest die Möglichkeit, "viele 
Befehle" auszuführen.

Daraus folgt, dass du effektiv auch keine Peripherie ansteuern kannst. 
Ohne Ein- und Ausgaben bringt der Spaß aber auch nichts...

cpu_builder schrieb:
> Wie sieht es denn mit den Zyklen aus? Warum werden nicht
> fetch->decode->execute in einem Schritt erledigt?

Das kann man schon machen. Ergibt halt eine geringere Auslastung der 
Hardwareeinheiten und eine geringe Taktfrequenz. Für dich wäre das ein 
besserer Ansatz.

cpu_builder schrieb:
> Hat jemand Schaltungstipps, wie ich die ALU u.ä. Teile mit wenig
> Transistoren realisieren kann? Oder wie grundlegend simple Architekturen
> aufgebaut sind?

Eine CPU ist ein großer Zustandsautomat.

Vorne fallen einige Dinge rein (z.B. aktuelle Instruktion, die 
Operanden, irgendwelche Flags, die derzeitigen Registerwerte, ...) und 
hinten fallen einige Dinge raus (z.B. die Adresse der nächsten 
Instruktion und die Steuersignale, die Rechenergebnisse, die nächsten 
Flags, die folgenden Registerwerte, ...)

Eine 2 Bit-CPU mit 4 simplen Befehlen und 2 Registern sollte sich in ein 
paar EPROMs implementieren lassen. Da braucht man dann keine große Logik 
für. Im Prinzip trägst du in die EPROMs alle möglichen Ein- und Ausgaben 
ein, statt irgendwas zu berechnen.

Für "mehr Bits", "mehr Register", "mehr Befehle" usw. explodiert der 
Zustandsraum aber so schnell, dass man aber lieber Logik benutzen 
möchte.

von cpu_builder (Gast)


Angehängte Dateien:

Lesenswert?

Habe gerade keinen PC zur Hand. Auf dem Smartphone sieht es seltsam aus.

Also ... Nächste Aufgabe für mich der Teil mit der ALU? Logikgatter 
kenne ich in- und auswendig. Inzwischen ist mein Ziel zu "CPU aus 
Logik-ICs und ALU-IC bauen" mutiert. Welche ALU-ICs sind denn heutzutage 
leicht zu bekommen?

Dann wird das Projekt realistischer.
Zumindest weiß man bei denen was drin ist.

Meine Ziele:

1. Theor's zweite Aufgabe lösen (undzwar diesmal richtig)

2. Architektur entwickeln (Blockschaltbild)

3. Schaltplan (mit Logikgattern) entwickeln

4. Auf Steckbrettern Teile aufbauen und auf Funktionalität prüfen

5. Zusammenbauen

Dabei benötige ich weiterhin Hilfe von euch. Danke auf jeden Fall dass 
ihr mich bis hierher gebracht habt (v.a. Theor)!

von Nop (Gast)


Lesenswert?

Und dann gibt's noch den Gigatron, ein Computer aus 74xx-TTL-Bausteinen:

https://gigatron.io/

von Stefan ⛄ F. (stefanus)


Lesenswert?

Bevor du dich beim Entwickeln deiner eigenen CPU Architektur in noch 
mehr Anfängerfragen verzettelst, empfehle ich Dir dringend, zunächst 
wenigstens eine einfache bestehende CPU zu analysieren.

Ich empfehle den 6502, Z80 oder 8051. Die sind noch gut überschaubar.

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> Habe gerade keinen PC zur Hand. Auf dem Smartphone sieht es seltsam aus.

Ach so.

> Also ... Nächste Aufgabe für mich der Teil mit der ALU? [...]

Das würde ich so nicht sehen.

Ich empfehle Dir, Dich erst mal ausführlich mit der ersten Aufgabe zu 
beschäftigen. Variiere die Struktur. Nimm z.B. an Du hättest einen Bus 
statt einer einfachen sequentiellen Struktur.

Also ein Eingang, drei Register, ein Ausgang. Was fehlt noch an 
Einheiten? Welche Steuersignale brauchst Du?

Oder einen Baum.

Dann: Was müsstest Du tun, damit Du die Datenpfade mit einem binären 
Wort steuern kannst? D.h. Du gibst einen der möglichen Datenpfade vor 
und die vom Takt getriebene Logik durchläuft die erforderlichen 
Schritte. Das nennt  übrigens einen Sequenzer. Deine Idee mit den 
Multiplexern oben lässt sich für so etwas verwenden.

Dann würde ich mir mal konkrete, einfach CPUs anschauen. Vom AVR gibts 
es glaube ich so eine Blockzeichnung und von einigen anderen CPUs auch. 
Spiel da mal gedanklich ein paar Daten-Transporte zwischen Registern 
durch.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

cpu_builder schrieb:
> Habe gerade keinen PC zur Hand. Auf dem Smartphone sieht es seltsam aus.

Das liegt daran, dass die Webseite bei Smartphones eine 
Proportionalschrift verwendet.

Aus diesem Grunde solltest Du ASCII-Zeichnungen in
1
[pre]
2
.....
3
[/pre]

einfassen. Damit werden sie mit einem Font fester Schriftbreite 
ausgegeben und auch weitestgehend nicht umbrochen.

Ich habe Deinen obigen Beitrag mal dementsprechend angepasst, s.o.

von cpu_builder (Gast)


Lesenswert?

Theor schrieb:
> Bus statt einer einfachen sequentiellen Struktur

Okay

Theor schrieb:
> Also ein Eingang, drei Register, ein Ausgang.

Wie zum Anfang

Theor schrieb:
> Was fehlt noch an Einheiten? Welche Steuersignale brauchst Du?

Also alle hängen an demselben Bus.
Dann brauche ich AND-Gatter.

Die schalte ich zwischen die Ein- und Ausgänge der FlipFlops (Register) 
und den Bus

und mit einer Control Unit / Steuerwerk sende ich entsprechend an den 
zweiten AND-Eingang "HIGH", wenn ich den dort befindlichen Eingabe-Port 
z.B. mit einem Register-Eingang verbinden möchte.

Und damit das nicht so kompliziert in Logikform gebaut werden muss, bzw. 
es updatefähig ist, gibt es den Mikrocode, oder?

Wenn das alles richtig bis hier ist, habe ich es verstanden

von Stefan ⛄ F. (stefanus)


Lesenswert?

> Dann brauche ich AND-Gatter.
> Die schalte ich zwischen die Ein- und Ausgänge der FlipFlops (Register)

Wieso das? Die D-Register übernehmen die Daten vom Bus bei einer 
Taktflanke bzw. Impuls. Und sie liefern den gespeicherten Wert ab, wenn 
der Output-Enable Pin aktiviert wird.

Sag bloß, du kennst den 74HC573 nicht? Den würde ich jedenfalls als 
Register benutzen.

von Amateur (Gast)


Lesenswert?

Vergiss es.

Schon allein Dein "Halb-Addierer" wird ein Bauteilgrab.

von Stefan ⛄ F. (stefanus)


Lesenswert?

Schau Dir die Simulation des 6502 (auf Transistorebene) an, einfacher 
kommst du nicht an Infos: http://visual6502.org/

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> Theor schrieb:
>> Bus statt einer einfachen sequentiellen Struktur
>
> Okay
>
> Theor schrieb:
>> Also ein Eingang, drei Register, ein Ausgang.
>
> Wie zum Anfang
>
> Theor schrieb:
>> Was fehlt noch an Einheiten? Welche Steuersignale brauchst Du?
>
> Also alle hängen an demselben Bus.
> Dann brauche ich AND-Gatter.
>
> Die schalte ich zwischen die Ein- und Ausgänge der FlipFlops (Register)
> und den Bus
>
> und mit einer Control Unit / Steuerwerk sende ich entsprechend an den
> zweiten AND-Eingang "HIGH", wenn ich den dort befindlichen Eingabe-Port
> z.B. mit einem Register-Eingang verbinden möchte.
>
> Und damit das nicht so kompliziert in Logikform gebaut werden muss, bzw.
> es updatefähig ist, gibt es den Mikrocode, oder?
>
> Wenn das alles richtig bis hier ist, habe ich es verstanden

Naja. Wie gesagt. Mach eine Zeichnung. Dann sieht man es ja, ob Du es 
verstanden hast.

Das mit dem Mikrocode lassen wir mal am besten aussen vor. Das ist ein 
späterer Schritt.
Du solltest um Schaltwerke realisieren zu können in boolscher Algebra 
mindestens befriedigend fähig sein.
D.h. eine Wertetabelle aufstellen können, eine boolsche Gleichung 
aufstellen oder aus der Wertetabelle gewinnen können, die disjunktive 
und konjunktive Normalform aufstellen können, sie vereinfachen  können, 
ein Karnaugh-Diagramm aufstellen und in Gleichungen umsetzen können.
Einfache Fälle bis zu drei oder vier Variablen sollten Dir irgendwann in 
wenigen Minuten von der Hand gehen. Das ist Basis-Handwerk wie das 
Schraubendrehen.

von cpu_builder (Gast)


Lesenswert?

Theor schrieb:
> Was müsstest Du tun, damit Du die Datenpfade mit einem binären Wort
> steuern kannst?

Die einzelnen Bits des Wortes mit den AND-Gattern (2. Eingang, wie eine 
Art "enable") verbinden? Bzw. bei dem zweiten verbundenen AND-Gatter, 
das low-aktiv sein soll, noch NOT davor?

Theor schrieb:
> Du gibst einen der möglichen Datenpfade vor und die vom Takt getriebene
> Logik durchläuft die erforderlichen Schritte.

Und das Steuerwerk muss noch im Programmzähler den Zyklus (fetch, 
decode, execute, store) berücksichtigen

von Jürgen S. (starblue) Benutzerseite


Lesenswert?

Ben Eater hat ein schönes Projekt, eine CPU aus Logikbausteinen:
https://eater.net/8bit/

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> Theor schrieb:
>> Was müsstest Du tun, damit Du die Datenpfade mit einem binären Wort
>> steuern kannst?
>
> Die einzelnen Bits des Wortes mit den AND-Gattern (2. Eingang, wie eine
> Art "enable") verbinden? Bzw. bei dem zweiten verbundenen AND-Gatter,
> das low-aktiv sein soll, noch NOT davor?
>
> Theor schrieb:
>> Du gibst einen der möglichen Datenpfade vor und die vom Takt getriebene
>> Logik durchläuft die erforderlichen Schritte.

Ein Bild sagt mehr als tausend Worte! :-)

Im übrigen wirst Du vermutlich mit dem AND nicht glücklich. Das siehst 
Du dann wahrscheinlich schon von selbst in der Skizze.
Verbal ist so vieles möglich, was in einer Skizze ganz offensichtlich 
nicht geht, weil dort der Gesamtzusammenhang offenbar wird. Verbal kann 
man immer nur einen Teilaspekt in den Focus rücken.
Versuche es mit der Skizze. Das sind alles Schritte, die Du machen 
solltest, denke ich.

von Axel S. (a-za-z0-9)


Lesenswert?

Jürgen S. schrieb:
> Ben Eater hat ein schönes Projekt, eine CPU aus Logikbausteinen:
> https://eater.net/8bit/

Hmm. Videos über Videos. Schaltpläne "coming soon".
Wo wird das hinführen?

von Mike B. (mike_b97) Benutzerseite


Lesenswert?

cpu_builder schrieb:

> Welche weiteren Signale? Sorry, aber im Gebiet von Registern/CPUs/...
> bin ich Anfänger, keine Ahnung was da fehlt.

> "eine CPU mit einer eigenen Architektur"

Meinst du, du bist bereit dafür?
Du versuchst einen Hürdenlauf bevor du überhaupt stehen kannst.

fang an, AND OR NOT ... "diskret selber [zu] bauen"

in einer Art "die möglichst wenige Transistoren benötigt"

dann einen HA
dann FlipFlops, SR/D/JK/T
dann Register, dann einen n*m Speicher
weiter mit Schieberegister, Zähler (Up/Down)
MUX/DeMUX

dann den ganzen Packen nochmal, diesmal aber taktgesteuert

dann klöter das peu a peu beisammen
erst n*HA->VA
dann die Register davor und dahinter, Speicher dran, Zähler dran, 
Taktgenerator dran
und dann im 0,x Hz Takt alle Varianten durchprobieren, viel GLÜCK dabei!

Und wenn du das hast, darfst du Steckbrücken als Eingabe durch ne 
Tastatur und LEDs als Ausgaben durch LCDs ersetzen, vorher 
DBC/BCD-Wandler zusammenlöten

Ich empfehle dann noch einen Blick auf
https://www.youtube.com/watch?v=z71h9XZbAWY
https://www.youtube.com/watch?v=lNa9bQRPMB8
und www.megaprocessor.com

wenn du das alles beisammen hast, hast du noch nicht mal einen 4001.

Ich wünsch Dir aber viel Erfolg und Ausdauer und eine steile Lernkurve.

von cpu_builder (Gast)


Lesenswert?

Theor schrieb:
> Ein Bild sagt mehr als tausend Worte! :-)

Ich habe heute nicht mwhr genug Zeit dafür. Morgen sende ich ein Bild 
davon, was ich gezeichnet habe.

Wieso geht AND nicht? Nicht dass ich alles umsonst zeichne...

von Stefan ⛄ F. (stefanus)


Lesenswert?

Ein AND Gatter ist eine logische Verknüpfung. Du brauchst aber eine 
Ablaufsteuerung, die getaktete Speicherzellen in der richtigen 
Reihenfolge taktet.

von (prx) A. K. (prx)


Lesenswert?

Wie wär's für den Anfang mit der diskreten Nachbildung des MC14500B mit 
Beschaltung für Speicher und Sequencer?

von cpu_builder (Gast)


Lesenswert?

Aber den Takt kann man doch über AND-Gatter an den CLK-Eingang eines 
D-FlipFlops leiten. Oder nur 1/2 Transistoren? Was würde das bringen?

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> Theor schrieb:
>> Ein Bild sagt mehr als tausend Worte! :-)
>
> Ich habe heute nicht mwhr genug Zeit dafür. Morgen sende ich ein Bild
> davon, was ich gezeichnet habe.
>
> Wieso geht AND nicht? Nicht dass ich alles umsonst zeichne...

Naja. So viel ist das ja nicht. Ausserdem sind Fehler wesentlich 
lehrreicher als auf Anhieb Funktionierendes.

Aber wenn ich Dich richtig verstehe, und Du die Bus-Version zeichnen 
willst, dann werden die Ausgänge mehrerer AND-Gatter zusammen 
geschaltet.
Falls das so ist: Was passiert, wenn ein AND-Gatter eine log. '1' und 
ein anderes eine log. '0' ausgeben will? Das gibt Aua!

von cpu_builder (Gast)


Lesenswert?

Stefanus F. schrieb:
> getaktete Speicherzellen in der richtigen Reihenfolge taktet

Also so etwas wie

1000
0100
0010
0001
1000
0100

was immer weiterläuft?

von cpuser (Gast)


Lesenswert?

Theor schrieb:

> Falls das so ist: Was passiert, wenn ein AND-Gatter eine log. '1' und
> ein anderes eine log. '0' ausgeben will? Das gibt Aua!

Aber nur wenn man einen IC als Vorlage für den diskreten Aufbau 
verwendet. Praktisch ausgeführte RTL / DTL wie sie in den 60er Jahren 
gebaut wurde kann ausgangsseitig problemlos wired -OR oder -ANDs bilden.

von cpu_builder (Gast)


Lesenswert?

Theor schrieb:
> Naja. So viel ist das ja nicht. Ausserdem sind Fehler wesentlich
> lehrreicher als auf Anhieb Funktionierendes.

Dann sieh nochmal vor 20 Uhrvorbei. Ich mache den Schaltplan noch heute. 
MIT ANDs!!

Theor schrieb:
> Aber wenn ich Dich richtig verstehe, und Du die Bus-Version zeichnen
> willst, dann werden die Ausgänge mehrerer AND-Gatter zusammen
> geschaltet.

Nein, je Ausgang+Eingang wie benötigt

von Stefan ⛄ F. (stefanus)


Lesenswert?

Ja mach das mal. Nach der Zeichnung siehst die Situation vielleicht 
schon viel besser aus. Deine Textbeiträge stimmen mich bisher eher 
hoffnungslos, ich habe nämlich nicht das Gefühl, dass du weißt, wovon du 
da schreibst. Aber das könnte auch schlicht eine sprachliche Sache sein. 
Die primäre Sprache der Elektronik ist jedenfalls der Schaltplan, darin 
kann man solche Zusammenhänge gewiss deutlicher formulieren.

Hast du schon einmal ein flankengesteuertes Flipflop aus Transistoren 
oder Relais gebaut? Also selber entwerfen, nicht einfach nur nachbauen. 
Mach das mal, könnte sehr lehrreich sein. 
https://de.wikipedia.org/wiki/Flipflop#Taktzustands-_und_taktflankengesteuerte_Flipflops

: Bearbeitet durch User
von S. R. (svenska)


Lesenswert?

cpu_builder schrieb:
> Und das Steuerwerk muss noch im Programmzähler den Zyklus (fetch,
> decode, execute, store) berücksichtigen

Vorhin schriebst du von "fetch, decode, execute" und jetzt von "fetch, 
decode, execute, store". Lege dich mal irgendwo fest.

Und nein, du brauchst überhaupt keine Zyklen machen.
Du kannst die drei Dinge auch gnadenlos hintereinanderschalten.

cpu_builder schrieb:
> Ich habe heute nicht mwhr genug Zeit dafür. Morgen sende ich ein Bild
> davon, was ich gezeichnet habe.

Du wirst noch echt viel Zeit für dein Projekt brauchen...

cpu_builder schrieb:
> Wieso geht AND nicht? Nicht dass ich alles umsonst zeichne...

...und dabei noch so dermaßen viele Fehler und falsche Zeichnungen 
machen, dass es auf ein Bild mehr oder weniger auch nicht ankommt.

Ich verweise nochmals auf Programme wie z.B. KLogic, wo man Gatter 
einfach verdrahten kann und sieht, was eigentlich passiert.

von cpu_builder (Gast)


Lesenswert?

Stefanus F. schrieb:
> Hast du schon einmal ein flankengesteuertes Flipflop aus Transistoren
> oder Relais gebaut? Also selber entwerfen, nicht einfach nur nachbauen.
> Mach das mal, könnte sehr lehrreich sein.
> 
https://de.wikipedia.org/wiki/Flipflop#Taktzustands-_und_taktflankengesteuerte_Flipflops

Leider noch nicht. Das mache ich demnächst mal.

Stefanus F. schrieb:
> Deine Textbeiträge stimmen mich bisher eher hoffnungslos, ich habe
> nämlich nicht das Gefühl, dass du weißt, wovon du da schreibst.

Ich bin auch irgendwie hoffnungslos gestimmt. Denn in der Schule hat man 
nicht mal annähernd etwas mit Elektronik gemacht, im Studium beschäftige 
ich mich nicht mit CPUs und ähnlichem,... Und woher soll ich all das mal 
schnell lernen? Ich weiß nur wie AND OR XOR NOT NAND NOR XNOR, RS JK D 
FlipFlop, Zähler,... funktionieren... Aber wie Schaltungen in "echten" 
nicht erträumten CPUs aussehen... Keine Ahnung.

von cpu_builder (Gast)


Lesenswert?

S. R. schrieb:
> Vorhin schriebst du von "fetch, decode, execute" und jetzt von "fetch,
> decode, execute, store". Lege dich mal irgendwo fest.

Woher soll ich wissen wie CPUs das machen? Ich habe beides schonmal 
gelesen

S. R. schrieb:
> Ich verweise nochmals auf Programme wie z.B. KLogic, wo man Gatter
> einfach verdrahten kann und sieht, was eigentlich passiert.

Ohne PC auf Android schwer machbar...

von cpu_builder (Gast)


Lesenswert?

S. R. schrieb:
> Vorhin schriebst du von "fetch, decode, execute" und jetzt von "fetch,
> decode, execute, store". Lege dich mal irgendwo fest.

Woher soll ich wissen wie CPUs das machen? Ich habe beides schonmal 
gelesen

S. R. schrieb:
> Ich verweise nochmals auf Programme wie z.B. KLogic, wo man Gatter
> einfach verdrahten kann und sieht, was eigentlich passiert.

Ohne PC auf Android schwer machbar... Deshalb morgen

von cpu_builder (Gast)


Lesenswert?

Kann es sein dass Prozessoren heutzutage unnötig kompliziert sind?

von S. R. (svenska)


Lesenswert?

cpu_builder schrieb:
> Woher soll ich wissen wie CPUs das machen?

Es gibt Bücher, da steht sowas drin.

cpu_builder schrieb:
> Ich habe beides schonmal gelesen

Das ist eine super Grundlage, um etwas völlig anderes selbst zu 
entwickeln...

cpu_builder schrieb:
> Ohne PC auf Android schwer machbar... Deshalb morgen

Ich fürchte, du hast mehr als ein Problem.
Allerdings würde es mich wundern, wenn es keine App für sowas gäbe. 
Andererseits habe ich nicht das Gefühl, dass es dir helfen würde, wenn 
ich jetzt nach sowas suche.

cpu_builder schrieb:
> Kann es sein dass Prozessoren heutzutage unnötig kompliziert sind?

Das hängt davon ab, was du unter "unnötig" verstehst.

: Bearbeitet durch User
von Theor (Gast)


Lesenswert?

@ cpu_builder

Bleib einfach mutig und hartnäckig.
Das Ganze ist sicher etwas schwerer als Du es Dir vorgestellt hast, aber 
das ist nichts Ungewöhnliches. Geht uns allen so.

von cpu_builder (Gast)


Lesenswert?

S. R. schrieb:
> Andererseits habe ich nicht das Gefühl, dass es dir helfen würde, wenn
> ich jetzt nach sowas suche.

Du hast Recht. Ich muss dieses Zeugs mit Ablaugsteuerung,... verstehen.

S. R. schrieb:
> Das ist eine super Grundlage, um etwas völlig anderes selbst zu
> entwickeln...

Soll das ironisch gemeint sein?

von Stefan ⛄ F. (stefanus)


Lesenswert?

> Denn in der Schule hat man nicht mal annähernd etwas mit Elektronik
> gemacht, im Studium beschäftige ich mich nicht mit CPUs und ähnlichem
> Keine Ahnung.

Was treibt Dich dann dazu, als Anfangsprojekt einen Mikrocontroller 
designen zu wollen? Ich komme doch auch nicht auf Idee, ein ganzes Haus 
bauen zu wollen, bloß weil ich eins bewohnen kann und weiß wie man Gips 
anrührt.

> Kann es sein dass Prozessoren heutzutage unnötig kompliziert sind?

Auf jeden Fall. Jeder Mikroprozessor ist universell und kann daher mehr 
als im jeweiligen Anwendungsfall nötig. Niemand würde einen 
Mikroprozessor verwenden, der gerade eben ausreicht. Denn dann müsste 
man ihn Anwendungsspezifisch designen und könnte später keine Änderungen 
vornehmen.

Es gibt anwendungsspezifische Logikschaltungen, zum Beispiel digitale 
Armbanduhren. Und es gibt programmierbare Logikschaltungen. Früher PAL 
und GAL, heute eher FPGA. Das ist eher etwas für die Entwicklungsphase. 
Wenn die Anwendung fertig ist, kann man sie immer noch in eine physische 
Schaltung (Mikrochip) übertragen.

von S. R. (svenska)


Lesenswert?

cpu_builder schrieb:
> Soll das ironisch gemeint sein?

Ja. Du wirfst mit Worten umher, die du offensichtlich selbst nicht 
verstehst. Auf Erklärungen dazu reagierst du nicht, weil du sie auch 
nicht verstehst (oder trollst).

Besorge dir ein paar gute Bücher zum Thema Digitaltechnik, 
Zustandsautomaten (denn nichts anderes ist eine CPU) und CPUs selbst. 
Die Entwicklungen der letzten 30 Jahre spielen für dein Projekt keine 
Rolle.

Beschäftige dich mit Projekten wie MyCPU oder HomebrewCPU und 
verstehe, was die gemacht haben, wie sie es gemacht haben und vor 
allem: warum sie es so gemacht haben, wie sie es gemacht haben.

Schau dir Projekte wie den Jugend+Technik-Computer ("JU+TE Computer", 
"TINY", "COMP JU+TER"), Z1013 oder andere Selbstbau-Systeme an. Da ist 
zwar eine fertige CPU drin, aber eine CPU ohne "Rest des Systems" ist 
auch wertlos. Verstehe die CPUs, die in solchen Projekten verbaut sind.

Das sollte dich ein paar Wochen beschäftigen. Komme dann wieder, zeige, 
dass du verstanden hast, und du hast eine Chance. Sonst ist das Projekt 
jetzt schon tot.

von Stefan ⛄ F. (stefanus)


Lesenswert?

Ich kann Dir nur dringend raten, dieses flankengesteuerte Flipflop 
selbst du entwerfen. Dabei lernst du einiges über Logik Schaltungen. 
Außerdem solltest du irgend einen Mikrocontroller in Assembler 
programmieren lernen, denn dabei lernt man auch eine Menge über seine 
Funktionsweise. Erst danach scheint es mir sinnvoll, sich mit 
Blockschaltbildern von CPU's zu beschäftigen.

von cpu_builder (Gast)


Lesenswert?

Theor schrieb:
> @ cpu_builder
>
> Bleib einfach mutig und hartnäckig.
> Das Ganze ist sicher etwas schwerer als Du es Dir vorgestellt hast, aber
> das ist nichts Ungewöhnliches. Geht uns allen so.

Na gut. Aber nur im Gegenzug für einen Tipp:

Soll die Taktquelle für die Aufgabe (1 Bus, 3 Register, Ein- & 
Ausgabeport) direkt an die CLK-Pins am FlipFlop? Wie ungefähr ist das 
Gerüst außenherum um diese Teile? Was genau ist eine Ablaufsteuerung?

von cpu_builder (Gast)


Lesenswert?

Stefanus F. schrieb:
> Außerdem solltest du irgend einen Mikrocontroller in Assembler
> programmieren lernen, denn dabei lernt man auch eine Menge über seine
> Funktionsweise. Erst danach scheint es mir sinnvoll, sich mit
> Blockschaltbildern von CPU's zu beschäftigen.

Genau das habe ich gemacht, mit ATtinies! Und um eben das innere 
VOLLKOMMEN zu verstehen, ohne dass ich daraus Industriegeheimnisse 
mache, möchte ich eine CPU selbst bauen

von cpu_builder (Gast)


Lesenswert?

S. R. schrieb:
> . Du wirfst mit Worten umher, die du offensichtlich selbst nicht
> verstehst. Auf Erklärungen dazu reagierst du nicht, weil du sie auch
> nicht verstehst (oder trollst).

Ich versuche, so sehr es geht, alles zu verstehen! Worauf habe ich nicht 
reagiert? Es sind seeehr viele Beiträge.

Ich habe definitiv ein ernstes Anliegen. Der Typ mit seinem Pentium ist 
ein Troll, ich keineswegs!

von Stefan ⛄ F. (stefanus)


Lesenswert?

Die Ablaufsteuerung erzeugt die Taktsignale für sämtliche 
Funktionseinheiten. Sie interpretiert den aktuellen Befehl und erzeugt 
je nach Befehl eine andere Sequenz von Taktsignalen.

Du musst Dir eine ausreichende Menge von Befehlen ausdenken.

Wenn der Befehl "ld a,b" zum Beispiel den Wert von Register a ins 
Register b übertragen würde, dann müsste die Ablaufsteuerung die 
Ausgänge von Register a auf den Bus legen (Output-Enable aktivieren) und 
dann dem Register b einen Taktimpuls senden, damit es die Daten lädt.

Wenn der Befehl lauten würde "jmp +12" bedeuten würde, dass der 
Programmzähler um 12 erhöht werden soll, dann muss die Ablaufsteuerung 
entweder 12 Taktimpulse an den Programmzähler senden oder den aktuellen 
Wert als Operand 1 in die ALU laden, dann 12 als Operand 2 in die ALU 
laden, dann die beiden Werte addieren, dann das Ergebnis zurück in den 
Programmzähler übertragen. Auch dazu sind eine Menge Taktimpulse nötig, 
die in der richtigen Reihenfolge an viele Einheiten gesendet werden 
müssen.

Bei den ersten Mikrocontrollern konnte man noch nicht beliebig viele 
Transistoren unterbringen, deswegen haben die Hersteller viel Grips 
hinein gesteckt, diese Logik zu optimieren. Dennoch kannst du im Foto 
des 6502 sehen, dass die Ablaufsteuerung gut ein drittel der ganzen CPU 
ausmacht, also einige tausend Transistoren.

Diese Logik kann man hier nicht in ein paar Zeilen Text erklären. Es 
würde mich nicht wundern, wenn die Details dieser Schaltung bei den 
allermeisten Prozessoren geheim gehalten wird.

Aber schau Dir ruhig mal diese Projekte mit den selbstgebauten CPUs an. 
Da wird sicher eins dabei sein, welches die Ablaufsteuerung im Detail 
zeigt.

Und schau Dir doch mal die oben genannten Varianten Turing Maschine an, 
die enthalten nämlich auch Ablaufsteuerungen. Die originale Turing 
Maschine enthält die einfachste denkbare Ablaufsteuerung. Davon 
ausgehend kann man sich komplexere ausdenken, was ja auch getan wurde.

von Stefan ⛄ F. (stefanus)


Lesenswert?

Zu dem Thema gibt es Bücher, zum Beispiel: 
https://books.google.de/books?isbn=3322940489

Das solltest du auch lesen, falls noch nicht getan: 
https://de.wikipedia.org/wiki/Ablaufsteuerung

von cpuser (Gast)


Angehängte Dateien:

Lesenswert?

Stefanus F. schrieb:
> Ich kann Dir nur dringend raten, dieses flankengesteuerte Flipflop
> selbst du entwerfen.

Ist ja albern, das beherrscht du selbst nicht!

von Daniel A. (daniel-a)


Lesenswert?


von cpu_builder (Gast)


Angehängte Dateien:

Lesenswert?

Vielen Dank Stefanus F.!

Das hilft mir deutlich beim Verstehen.

Hier meine Lösung mit AND-Gattern:

von cpu_builder (Gast)


Lesenswert?

Ich habe jetzt eh vor mit ICs zu arbeiten, wenn einer mit 4 Gattern oder 
programmierbarem 4-bit-Zähler genauso viel wie ein einzelner Transistor 
kostet.

Theor, kann es sein dass du Lehrer bist?

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> Vielen Dank Stefanus F.!
>
> Das hilft mir deutlich beim Verstehen.
>
> Hier meine Lösung mit AND-Gattern:

Ja. Schon nicht schlecht. Die Ablaufsteuerung kommt noch, oder?

Jedenfalls ist das Problem mit den ANDs, wie ich erwartet habe, 
vorhanden.

Du hast mir auf meinen Einwand, dass die Ausgänge mehrerer ANDs zusammen 
geschaltet werden, geantwortet, dass: "Nein, je Ausgang+Eingang wie 
benötigt".
Tatsächlich ist aber ist das dennoch der Fall. In der Skizze sehe ich, 
dass die Ausgänge aller AND Gatter auf die Busleitung gehen. Damit sind 
sie "zusammengeschaltet" und es entstehen Konflikte wenn ein AND eine 
'1' und ein anderes eine '0' ausgibt.

Siehst Du es?

von cpu_builder (Gast)


Lesenswert?

Theor schrieb:
> dass die Ausgänge aller AND Gatter auf die Busleitung gehen

Verdammt, hast Recht... Wie sonst?!

von Stefan ⛄ F. (stefanus)


Lesenswert?

> Ist ja albern, das beherrscht du selbst nicht!

Doch tue ich. Ich habe so etwas aus Transistoren und Relais selbst 
entwickelt und dabei viel gelernt.

Mache das mal ohne Kondensatoren, damit es mit annähernd beliebigen 
Taktfrequenzen funktioniert.

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> Theor schrieb:
>> dass die Ausgänge aller AND Gatter auf die Busleitung gehen
>
> Verdammt, hast Recht... Wie sonst?!

Dafür gibt es mehrere Lösungen:

Eine hast Du im Prinzip schon genannt.
Ein Multiplexer. Im Prinzip je Eingang ein AND-Gatter, - insofern hast 
Du schon in die richtige Richtung gedacht, prima -, aber dazu ein 
OR-Gatter mit mehreren Eingängen an den Ausgängen der ANDs.

Ein andere Lösung sind besondere Gatter die sich in einen Hochohmigen 
Zustand, genannt 'Z' schalten lassen. Gibts als "Bustreiber" mit einem 
Enable-Eingang. Die kann man beliebig kombinieren, solange man dafür 
sorgt, dass immer nur ein Treiber zur Zeit aktiviert ist.

Es gibt noch andere Varianten. Lasse ich aber erstmal aussen vor.

Versuch mal die Multiplexer-Lösung, wenn Du magst.

von cpu_builder (Gast)


Lesenswert?

Soll ich jetzt eine Schaltung mit MOSFETs oder bipolaren Transistoren 
zeichnen? Wie realisiere ich hier eine Ablaufsteuerung? Das bekomme ich 
ohne Hilfe nicht hin...

von cpu_builder (Gast)


Lesenswert?

Sorry, zu früh gesendet

von microprocessor (Gast)


Lesenswert?

Ein Blick auf

https://www.mikrocontroller.net/topic/2069927

(gläserner 65C02 aus Standardgattern inkl. Schaltplan, Dokumentation
 und lauffähiger Simulation) könnte für den Anfang ganz hilfreich
sein.

Gruß microprocessor

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> Soll ich jetzt eine Schaltung mit MOSFETs oder bipolaren Transistoren
> zeichnen? Wie realisiere ich hier eine Ablaufsteuerung? Das bekomme ich
> ohne Hilfe nicht hin...

Ich würde Dir raten, auch diese Frage erst einmal zu vertagen. Es geht 
zunächst mal darum die Strukturen zu verstehen. Im Prinzip ist jedes 
Gatter lediglich eine gewisse, immer gleich bleibende Kombination von 
Transistoren/MOSFETs. Die zu zeichnen heisst in gewisser Weise erstmal 
einen Wald zu zeichnen, wenn Du ein Holzhaus bauen willst.

Tut mir leid, aber wenn Du Dir vorstellst, in drei Tagen mit der CPU 
anzufangen, halte ich das für illusorisch. Setze mal, wenn ich von dem 
Tempo heute ausgehe, ein paar Wochen an, ehe Du Dich an einen ersten 
Entwurf wagen kannst, der von Anfang an einen gewissen praktischen Wert 
hat und in dem die deutlich überwiegende Zahl der Details sinnvoll ist.

von cpu_builder (Gast)


Lesenswert?

Theor schrieb:
> Versuch mal die Multiplexer-Lösung, wenn Du magst.

Nur mal eine Frage: was hast du demnächst noch mit mir vor, bis ich eine 
eigene CPU-Architektur entwerfen kann? (ich mag deine didaktische 
Methode ;-))

Ich mache die Multiplexerschaltung heute noch.

von cpu_builder (Gast)


Lesenswert?

Theor schrieb:
> Tut mir leid, aber wenn Du Dir vorstellst, in drei Tagen mit der CPU
> anzufangen, halte ich das für illusorisch

Hatte ich nicht vor (naja doch :-P )

Ich folge deiner Anleitung

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> Theor schrieb:
>> Versuch mal die Multiplexer-Lösung, wenn Du magst.
>
> Nur mal eine Frage: was hast du demnächst noch mit mir vor, bis ich eine
> eigene CPU-Architektur entwerfen kann? (ich mag deine didaktische
> Methode ;-))
>
> Ich mache die Multiplexerschaltung heute noch.

Ach, mein Lieber.
Immer schon beim Morgen und kaum im Hier-Und-Jetzt. :-) Warts ab.

So. Aber für heute mal Schluss.

War leider sowieso ein Glückstag, dass ich heute so oft Zeit hatte.

Damit Du was zu tun hast, suche mal nach Bustreiber mit 
Tri-State-Ausgang und versuche das als zweite Lösung. Auch kannst Du 
Dich mal nach einer Simulation umschauen.

von Stefan ⛄ F. (stefanus)


Lesenswert?

> Wie realisiere ich hier eine Ablaufsteuerung?
Zum Beispiel mit einer Diodenmatrix.

Ich bin erstaunt, wie schnell du die genannten Dokumente und Webseiten 
studiert hast. Es wundert mich aber gar nicht, dass davon nichts hängen 
geblieben ist so dass du die selbe Frage immer wieder wiederholst.

Das ist jetzt mein letzter Versuch, eine mögliche Ablaufsteuerung zu 
skizzieren. Bedenke, dass es auch andere Methoden gibt.

Sagen wir mal, dein Mikrocontroller hat zwei Register A und B, die man 
lesen (rd) und schreiben (wr) kann. Dann gibt es für die ALU noch die 
beiden Operanden (auch Register) X und Y. Die ALU unterstützt vier 
Operationen: add, sub, mul und div. Das Ergebnis der ALU sei Z. Der 
Datenaustausch zwischen den Komponenten findet über einen Bus statt, mit 
dem sie alle bidirektional verbunden sind. Als Register werden 74HC573 
verwendet.

Wie die Register A und B initial befüllt werden, lasse ich hier mal aus. 
Das Programm soll die Zahlen in A und B addieren und das Ergebnis in A 
speichern.

A = A + B

Die Diodenmatrix erzeugt für jeden Arbeitsschritt das nötige Signal:
1
Schritt  Mikrocode  
2
         rdA rdB wrA wrB wrX wrY rdZ add sub mul div
3
0        1   0   0   0   1   0   0   0   0   0   0   Übertrage A nach X
4
1        1   0   0   0   0   0   0   0   0   0   0   
5
2        0   1   0   0   0   1   0   0   0   0   0   Übertrage B nach Y
6
3        0   1   0   0   0   0   0   0   0   0   0   
7
4        0   0   0   0   0   0   0   1   0   0   0   Addiere
8
5        0   0   1   0   0   0   1   0   0   0   0   Übertrage Z nach A
9
6        0   0   0   0   0   0   1   0   0   0   0   
10
7        0   0   0   0   0   0   0   0   0   0   0   fertig
11
8        0   0   0   0   0   0   0   0   0   0   0
12
9        0   0   0   0   0   0   0   0   0   0   0
13
10       0   0   0   0   0   0   0   0   0   0   0
14
11       0   0   0   0   0   0   0   0   0   0   0
15
12       0   0   0   0   0   0   0   0   0   0   0
16
13       0   0   0   0   0   0   0   0   0   0   0
17
14       0   0   0   0   0   0   0   0   0   0   0
18
15       0   0   0   0   0   0   0   0   0   0   0

Die Operation ist nach 7 Schritten abgeschlossen. Der Mikrocode umfasst 
aber der Einfachheit halber 16 Schritte für jeden Befehl, deswegen 
bleiben einige Zeilen ungenutzt.

rdA: sorgt dafür, dass Register A seinen gespeicherten Wert auf den Bus 
legt, ist also negiert und dann mit dessen Output-Enable Eingang 
verbunden.

wrA: sorgt dafür, dass Register A den aktuellen Wert vom Bus einliest, 
ist also mit dessen Latch-Eingang verbunden.

Das gleiche Prinzip gilt für die Signale rdB, wrB, wrX, wrY und rdZ.

Dass add Signal befiehlt der ALU, die beiden Operanden zu addieren, und
das Ergebnis in Z zu speichern.

Irgendwo muss dieser Mikrocode gespeichert werden, also ein ROM. Das 
kann man mit einer Diodenmatrix machen, oder mit DIP Schaltern, oder wie 
auch immer.

Die unteren 4 Adressbits dieses Mikrocode ROM werden mit einem 
Binärzähler verbunden, der fortlaufend von 0 bis 15 zählt. Die oberen 6 
Adressbits werden mit dem Befehlsregister verbunden, somit kann die CPU 
bis zu 64 unterschiedliche Befehle ausführen, jeder mit bis zu 16 
Mikroschritten.

Das wäre mal eine Anregung für den Anfang - aber noch lange nicht 
vollständig und ganz sicher nicht die einzige denkbare Lösung.

[Mod] Formatierung angepasst.

: Bearbeitet durch Moderator
von Stefan ⛄ F. (stefanus)


Lesenswert?

Der 6502 macht es übrigens ganz anders, ohne Mikrocode:
http://forum.6502.org/viewtopic.php?f=1&t=2657

von cpu_builder (Gast)


Lesenswert?

Stefanus F. schrieb:
> Ich bin erstaunt, wie schnell du die genannten Dokumente und Webseiten
> studiert hast. Es wundert mich aber gar nicht, dass davon nichts hängen
> geblieben ist so dass du die selbe Frage immer wieder wiederholst.
>
> Das ist jetzt mein letzter Versuch, eine mögliche Ablaufsteuerung zu
> skizzieren.

Und er ist gelungen. Das waren echt viele Links, irgendwie zu viel für 
einen halben Tag für mich.

Stefanus F. schrieb:
> Sie interpretiert den aktuellen Befehl und erzeugt
> je nach Befehl eine andere Sequenz von Taktsignalen.

Ist dann die Ablaufsteuerung im Mikroprozessor gleich dem 
Befehlsdekoder? Denn sie interpretiert ja die Befehle...

von Stefan ⛄ F. (stefanus)


Lesenswert?

> Ist dann die Ablaufsteuerung im Mikroprozessor gleich dem Befehlsdekoder?

In diesem Fall ja.

Aber bei der MT15 CPU ist es wieder ganz anders gelöst, und sicher nicht 
uninteressant. Hier ist eine sehr detaillierte Beschreibung: 
http://6502.org/users/dieter/mt15b/mt15b_1.htm

von cpu_builder (Gast)


Lesenswert?

Stefanus F. schrieb:
> Die oberen 6
> Adressbits werden mit dem Befehlsregister verbunden, somit kann die CPU
> bis zu 64 unterschiedliche Befehle ausführen, jeder mit bis zu 16
> Mikroschritten.

Wie kommst du auf die 64?

von Stefan ⛄ F. (stefanus)


Lesenswert?

> Wie kommst du auf die 64?

Frei erfunden, unter der Annahme, dass 64 Befehle für eine sinnvolle CPU 
genügen. Man könnte auch 7 Bits für 128 Befehle verwenden, oder 8 Bits 
für 256 Befehle.

Du willst doch eine eigene CPU designen. Dann obliegt es Dir, den 
Befehlssatz festzulegen.

: Bearbeitet durch User
von cpu_builder (Gast)


Lesenswert?

Aber der Mikrocode stellt somit nur einen Teil der Funktionen zur 
Verfügung

von Stefan ⛄ F. (stefanus)


Lesenswert?

Ja. Ich habe ja geschrieben, dass das nur der Anfang ist. Ich kann Dir 
hier keine vollständige Lösung beschreiben, das ist einfach zu 
umfangreich. Außerdem haben andere darüber Bücher geschrieben. Lies die 
doch mal.

Hier ist auch noch ein interessanter minimalistischer Ansatz: 
https://bradrodriguez.com/papers/piscedu2.htm

von H.Joachim S. (crazyhorse)


Lesenswert?

Auf Papier habe ich auch mal eine CPU gebaut. Natürlich fand ich die 
sozusagen genial (war sie aber natürlich nicht, viele Sachen nicht 
beachtet). Ich wäre aber nie auf die Idee gekommen, die wirklich zu 
bauen. Wozu auch?

von microprocessor (Gast)


Lesenswert?

microprocessor schrieb:
> Ein Blick auf
>
> https://www.mikrocontroller.net/topic/2069927
>
> (gläserner 65C02 aus Standardgattern inkl. Schaltplan, Dokumentation
>  und lauffähiger Simulation) könnte für den Anfang ganz hilfreich
> sein.
>
> Gruß microprocessor

Korrektur:

Der Link scheint nicht mehr zu funktionieren.
Die Seite ist über die Suchfunktion in mikrocontroller.net oder
Google durch Eingabe von

"Visualisierbarer Schaltplan eines 65C02"

zu erreichen.

von cpu_builder (Gast)


Lesenswert?

Warte mal... Also werden durch den Maschinecode, den man z.B. nach dem 
Kompilieren eines Assembkerprogrammes sieht, der im Befehlsregister 
landet, entsprechend Mikroprogramme gestartet? Mir ist irgendwie unklar, 
wie das Befehlsregister mit dem Mikrocode verbunden wird...

Wozu dienen z.B. Zeilen 1 und 3 in deiner letzten Erklärung?

Ich merke schon, eine komplexe, komplizierte Sache... Ich lese mal das 
Buch im Link von dir dazu

von Stefan ⛄ F. (stefanus)


Lesenswert?

Ja, aber nur wenn die CPU mit Mikrocodes arbeitet. Es gibt ja auch 
welche ihne Mikrocode.

Im einfachsten Fall wird das Befehlsregister bei jedem 16. Mikroschritt 
mit dem nächsten Befehl aus dem Programmspeicher gefüllt, bzw dem Befehl 
auf den der PC zeigt.

Die Zeilen 1 und 3 halten die Ausgänge der Quell-Register länger offen. 
Beim 74HC573 muss erst das Latch-enable Signal beendet werden, erst 
danach darf man die Daten auf dem Eingang/Bus wegnehmen.

von Stefan ⛄ F. (stefanus)


Lesenswert?

Ähhh, ich sehe gerade dass ich die pre tags falsch herum eingefügt habe. 
Auf Smartphones ist der Beitrag somit unlesbar. Jetzt kann ich das nicht 
mehr korrigieren. Wäre bitte ein Moderator so nett...?

von cpu_builder (Gast)


Lesenswert?

Um kurz zusammenzufassen, was ich jetzt glaube zu wissen:

- Eine CPU besteht allgemein aus einer ALU, Control Unit und Registern
- Die CPU holt zunächst den Befehl, der an der Adresse des 
Befehlszählers/Programmzählers liegt, und legt diesen im Befehlsregister 
ab
- Danach wird durch den Befehl im Befehlsregister ein Teil des 
Mikrocodes, "Mikroprogramm", ausgewählt, das die Datenübertragung über 
den Bus koordiniert, und den Befehl somit in kleinen Schritten ausführt.
- Wenn der Befehl ausgeführt wurde, wird der Befehlszähler um 1 erhöht 
und der nächste Befehl geladen

Mache ich da irgendeinen Denkfehler?
Meine Idee wäre da, irgendwie diese Sache mit dem Mikrocode 
weitestgehend zu umgehen, da es ja scheinbar alles nur komplizierter 
macht.. Meine CPU soll nur rechnen können, nicht wie mit der branch 
prediction herumzaubern können.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Stefanus F. schrieb:
> Jetzt kann ich das nicht mehr korrigieren. Wäre bitte ein Moderator so
> nett...?

Habs angepasst.

von Stefan ⛄ F. (stefanus)


Lesenswert?

Wie gesagt gibt es auch CPUs ohne Mikrocode. Außerdem wird der 
Programmzähler bei manchen Befehlen nicht um 1 erhöht, z.b. bei 
Sprüngen.

Du siehst dass die Ablaufsteuerung der komplexeste Teil der CPU ist. 
Mein verkürztes Beispiel mit Mikrocode ist noch die einfachste Variante 
aber auch die langsamste.

von (prx) A. K. (prx)


Lesenswert?

Microcode erleichtert bzw ermöglicht komplexe Befehlssätze. Einfache 
sehr schematische Befehlsstrukturen ohne komplexe Befehlsabläufe 
benötigen das nicht.

Das beschriebene Schema trifft auf einfache CPUs zu, wie man sie heute 
nur noch in Mikrocontrollern findet. Komplexe CPUs lassen sich so nicht 
beschreiben.

von cpu_builder (Gast)


Lesenswert?

Es war sehr interessant, mehr über diese Techniken in Prozessoren zu 
erfahren. Aber ich denke dass ich erstmal keine Lust mehr habe, weitere 
Details zu erfahren. Ich würde eh nicht genug Zeit haben, mich damit in 
der Freizeit ausführlich zu beschäftigen. Mal sehen, was daraus wird.

von cpu_builder (Gast)


Lesenswert?

Sorry Stefanus F. Und Theor, aber das ist alles irgendwie zu hoch für 
mich. Ich werde dran bleiben, auch wenn ich demnächst eher wenig Zeit 
dafür finden Ihr habt mir sehr geholfen.
Danke dafür!

von bastler (Gast)


Lesenswert?

Alex W. schrieb:
> Gabs hier nicht mal ein Projekt einer eigenen CPU für en FPGA? War das
> Kurt Bindl? Hab was von Bomeranz-Projekt in Erinnerung

Meinst du das?
Beitrag "8bit-Computing mit FPGA"

von cpu_builder (Gast)


Lesenswert?

cpu_builder schrieb:
> Sorry Stefanus F. Und Theor, aber das ist alles irgendwie zu hoch für
> mich. Ich werde dran bleiben, auch wenn ich demnächst eher wenig Zeit
> dafür finden Ihr habt mir sehr geholfen.
> Danke dafür!

Ich war gestern etwas genervt von den vielen komplizierten Dingen. Aber 
heute mache ich gerne weiter.

Un die Schaltung mit dem Multiplexer zu bauen: Wie wird der MUX bei z.B. 
4:1 gesteuert? Mit 2 Steuer-Anschlüssen?

Den mit 2bit kann man ja 1 von 4 Bit adressieren

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Alex W. schrieb:
> Gabs hier nicht mal ein Projekt einer eigenen CPU für en FPGA? War
> das Kurt Bindl? Hab was von Bomeranz-Projekt in Erinnerung

Es hieß Bomerenz-Projekt. Jetzt heißt es bo8h. Und es ist nicht von Kurt 
Bindl, sondern von Josef G. (bome).

Link zum Artikel: 8bit-Computer: bo8h
Link zur Homepage: http://www.bo8h.de/

Link zu den Threads:

  Beitrag "8bit-Computing mit FPGA"
  Beitrag "Befehlssatz der bo8-CPU - was ist gut, was ist schlecht"

Ist aber nicht jedermans Sache.

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

cpu_builder schrieb:
> Un die Schaltung mit dem Multiplexer zu bauen: Wie wird der MUX bei z.B.
> 4:1 gesteuert? Mit 2 Steuer-Anschlüssen?

4:1 - vier Eingänge werden auf einen Ausgang gemultiplext.

Um einen aus vier Eingängen auszuwählen, benötigt man zwei Adressbits, 
da 2^2=4 ist

Wenn Du diese Frage stellen musst, dann solltest Du erst mal ein wenig 
Digitalelektronik auf einem Steckbrett aufbauen und dich über blinkende 
LEDs freuen - Die Realisation einer CPU ist noch gaaanz weit weg für 
Dich!

von cpu_builder (Gast)


Lesenswert?

Ich merke schin, dass es schwer ist, daran festzuhalten...
Aber Tristate ist schon interessant!

von cpu_builder (Gast)


Lesenswert?

Ich merke schin, dass es schwer ist, daran festzuhalten...
Aber Tristate ist schon interessant!

Wolfgang R. schrieb:
> Wenn Du diese Frage stellen musst, dann solltest Du erst mal ein wenig
> Digitalelektronik auf einem Steckbrett aufbauen und dich über blinkende
> LEDs freuen - Die Realisation einer CPU ist noch gaaanz weit weg für
> Dich!

Ich weiß was 2^2 ist, aber man weiß ja nie was irgendwelche Ingenieure 
für verrückte Sachen erfinden. Mit Multiplexern bin ich eben nicht so 
vertraut

von IT Archivar (Gast)


Lesenswert?

Alex W. schrieb:
> Gabs hier nicht mal ein Projekt einer eigenen CPU für en FPGA? War das
> Kurt Bindl? Hab was von Bomeranz-Projekt in Erinnerung

Nicht nur diese eine Projekt, da hats im hiesigen SVN-Depot noch das:
https://www.mikrocontroller.net/articles/PiBla

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

Interessant ist das alles - nur mit reiner Theorie kommst Du nicht 
weiter! Du musst das auch mal in Hardware aufbauen, wenn Du die Technik 
wirklich begreifen willst. Taktgenerator, Schieberegister, Zähler, 
Multiplexer... Das macht Spaß und bildet weiter.

Auch wenn Du das mit "alten" 74LSxxx Bausteinen aufbaust - grundlegend 
hat sich an der Technik bis heute nichts geändert.

von Stefan ⛄ F. (stefanus)


Lesenswert?

Digital-Elektronik ist sicher interessant zu lernen, aber dann doch 
bitte nicht anhand einer CPU! Und schon gar nicht solltest du versuchen, 
ohne Erfahrung mit den Grundlagen eine eigene CPU zu designen.

Fang doch mal mit etwas relativ einfachem an, zum Beispiel eine 
programmierbare Ampelanlage (ohne CPU, aber mit ROM).

von IT Archivar (Gast)


Lesenswert?

cpu_builder schrieb:
> Ich weiß was 2^2 ist, aber man weiß ja nie was irgendwelche Ingenieure
> für verrückte Sachen erfinden. Mit Multiplexern bin ich eben nicht so
> vertraut

Alter, um das zu wissen geht man ja in die Schule oder schaut die 
Sendung mit der Maus. Oder alte Folgen aus dem Bildungsfernsehen (check 
mal YouTube).
https://8bit-museum.de/retro-computersendungen-in-den-1980er/

Selbst als IC ist ein Muxer eine ganz alte Geschichte aus den Siebzigern 
so als 74xx137, In Relaistechnik bei der Telefonvermittlung noch älter.
https://wikivisually.com/lang-de/wiki/Datei:RSW_Frontseite_aufgeklappt_600_388.jpg

Am besten die fängst deine Grundlagenausbildung mit der 74-Familie an:
https://de.wikipedia.org/wiki/74xx

von Axel S. (a-za-z0-9)


Lesenswert?

cpu_builder schrieb:
> Es war sehr interessant, mehr über diese Techniken in Prozessoren zu
> erfahren. Aber ich denke dass ich erstmal keine Lust mehr habe, weitere
> Details zu erfahren. Ich würde eh nicht genug Zeit haben, mich damit in
> der Freizeit ausführlich zu beschäftigen. Mal sehen, was daraus wird.

War ja klar. Erst große Töne spucken und dann bei den ersten Anzeichen 
von Komplexität den Schwanz einziehen. Dabei hast du echte Komplexität 
noch gar nicht gesehen. Schau dir mal die Mikroarchitektur einer 
halbwegs aktuellen PC-CPU an, etwa eines Core-i von Intel. Mit 
out-of-order execution, branch prediction, Pipeline, mehrfach 
assoziativen Caches etc. Und das gibt es teilweise seit über 10 Jahren.

von M.A. S. (mse2)


Lesenswert?

cpu_builder schrieb:
> Und woher soll ich all das ... lernen?

Aus Büchern zum Beispiel. Ich hatte in meinem E-Technik-Studium (Ende 
der 80er Jahre) das Fach Hardwaretechnik bei den Dozenten Flick und 
Liebig. Diese beiden haben über die Jahre einige Grundlagenbücher 
veröffentlicht, die ich immer recht hilfreich fand.

Ein neueres Werk dieser Autoren:
Mikroprozessortechnik und Rechnerstrukturen,
Flick/ Liebig,
Springer Verlag
(Kenn ich nicht von innen, habe ich gerade gegoogelt.)

Und zahlreiche Bücher ähnlicher Titel, die moderner sind.


cpu_builder schrieb:
> ... mal schnell ...
Überhaupt nicht. Lass Dir Zeit, es ist Dein Hobby. Das Thema ist 
komplex, da ist man nicht in fünf Minuten drin. Waren wir damals auch 
nicht. Ich habe das erste mal (in einem Sonderheft von Franzis) gelesen, 
wie ein Mikroprozessor so ungefähr funktioniert, als ich in der 7. 
Klasse war.
Die größeren geistigen Durchbrüche kamen trotzdem erst an der Uni.

Damit will ich nicht sagen, dass das bei Dir genauso lange dauern muss. 
Aber gehe langsam vom einfachen zum kompilzierten. Dann wird das schon 
werden (in dem für Dich angemessenen Tempo).

: Bearbeitet durch User
von M.A. S. (mse2)


Lesenswert?

IT Archivar schrieb:
> Oder alte Folgen aus dem Bildungsfernsehen (check
> mal YouTube).

Das ist eine sehr gute Idee. Als ich mit Elektronik anfing 
(Experimentierkästen) war ich in der dritten Klasse und ziemlich 
lesefaul.
Lieber habe ich mir von Jean Pütz im Fernsehen (Einführung in die 
Elektronik) erklären lassen, wie ein Transistor funktioniert.
Der hatte noch weitere Sendereihen in diesem Stiel, eine davon auch zum 
Thema Digitaltechnik.
(Dazu gab's auch Begleitbücher, möglicherweise zu finden in 
Bibliotheken.)

von Stefan ⛄ F. (stefanus)


Lesenswert?

Die Elektronik Bücher von Jean Pütz kann ich nur dringend empfehlen. Es 
macht nichts, dass sie schon alt sind.

Pütz Jean, Einführung in die Digitalelektronik
Band 1 -3
https://www.booklooker.de/B%C3%BCcher/Jean-P%C3%BCtz+Einf%C3%BChrung-in-die-Digitalelektronik-B%C3%A4nde-1-3/id/A02kYLoJ01ZZn

von cpu_builder (Gast)


Lesenswert?

Axel S. schrieb:
> out-of-order execution, branch prediction, Pipeline, mehrfach
> assoziativen Caches

Das ist zwar beschleunigend, aber gefährdet ja auch die Sicherheit (5 
Arten von Spectre u.ä. & Meltdown) und ist stromverschwendend

ARM-CPUs sehen vom Design her noch deutlich "ordentlicher" aus, 
logischer, simpler, im Gegensatz zu X86 oder dem misslungenen X64

M.A. S. schrieb:
> Aber gehe langsam vom einfachen zum kompilzierten. Dann wird das schon
> werden (in dem für Dich angemessenen Tempo).

Werde ich. Dann werde ich mir mal ein paar Bücher kaufen, statt hier 
weiter Anfängerfragen zu stellen.

Außerdem: statt Youtube bevorzuge ich Webseiten wie 
dieelektronikerseite.de, die haben sich echt Mühe gegeben eine gute 
Sammlung an Infos zu bieten.

Axel S. schrieb:
> War ja klar. Erst große Töne spucken und dann bei den ersten Anzeichen
> von Komplexität den Schwanz einziehen.

Ich bin nunmal Physiker, kein Elektrotechniker. Es kann mir ja niemamd 
vorwerfen sich dafür zu interessieren, wie eine CPU arbeitet. Wenn es 
mir UNNÖTIG KOMPLIZIERT erscheint, wie fast alle Technik heute, dann 
erfinde ich eben was simpleres, was auch funktioniert. Das bekomm' ich 
wahrscheinlich auch ohne all die modernen "Weiterentwicklungen" hin

von Stefan ⛄ F. (stefanus)


Lesenswert?

Wobei Computer immer unnötig kompliziert sind, das liegt in der Natur 
der Sache.

So wie ein Glas auch stets unnötig groß ist, Urlaub immer zu kurz und 
das Gehalt immer zu gering ist.

von Cyblord -. (cyblord)


Lesenswert?

cpu_builder schrieb:
> Wenn es
> mir UNNÖTIG KOMPLIZIERT erscheint,

Wie kommst du nur immer auf dein "unnötig kompliziert"? Das wirkt 
lächerlich um dummfrech.

Es ist so kompliziert wie nötig um aktuellen Leistungsanforderungen 
gerecht zu werden. Diese komplexen Techniken haben einen Sinn, sie 
ermöglichen erst die Leistung welche CPUs heute haben. Da ist nichts 
unnötig, ausser man benötigt eben diese Leistung nicht.
Aber dann formuliere es auch so.

: Bearbeitet durch User
von Stefan ⛄ F. (stefanus)


Lesenswert?

Mein Laptop ist zu 100% unnötig, ebenso das Smartphone/Handy.
Ich konnte meine ersten 17 Jahre ohne diese Dinge überleben.

Heißt das nun, dass ich die Geräte der 90er Jahre neu erfinden möchte? 
Nein!

von cpu_builder (Gast)


Lesenswert?

Auf Transistorebene könnte man Multigatter bauen, meine eigene 
Erfindung, die AND, OR, NOT, und Kombinationen davon ermöglichen, und 
das mit deutlich weniger Transistoren als für all die vielen 
Einzelgatterkombinationen nötig ist. Die noch zu hunderten ider 
tausenden Stück kombiniert könnten die Rechenleistung drastisch erhöhen.

Und die Intel ME ist ja wohl das allerletzte

von Cyblord -. (cyblord)


Lesenswert?

cpu_builder schrieb:
> Auf Transistorebene könnte man Multigatter bauen, meine eigene
> Erfindung, die AND, OR, NOT, und Kombinationen davon ermöglichen, und
> das mit deutlich weniger Transistoren als für all die vielen
> Einzelgatterkombinationen nötig ist. Die noch zu hunderten ider
> tausenden Stück kombiniert könnten die Rechenleistung drastisch erhöhen.

Schon mal die LUTs eines FPGA angeguckt?

Deine Erfindung? Sorry entweder Troll oder Hybris jenseits aller 
Heilungschancen.

von M.A. S. (mse2)


Lesenswert?

cpu_builder schrieb:
> Werde ich. Dann werde ich mir mal ein paar Bücher kaufen, statt hier
> weiter Anfängerfragen zu stellen.

1. Bevor Du wild um-dich-kaufst: wenn möglich vorher einen Blick 
reinwerfen, um zu sehen, ob es auch für Dich geeignet ist, man gibt 
sonst schnell viel Geld aus und ist enttäuscht.
Bibliotheken sind ein guter Ausgangspunkt, da Du ja altes 
Grundlagenwissen benötigst, solche Bücher sollte es dort geben.


cpu_builder schrieb:
> Ich bin nunmal Physiker, ... Wenn es mir UNNÖTIG KOMPLIZIERT erscheint,
> wie fast alle Technik heute, dann erfinde ich eben was simpleres, was auch 
funktioniert.
:)
Dann kennst Du ja sicher Einstein und seine vielen Zitate. Bitte 
beherzige in diesem Zusammenhang besonders:   "...so einfach wie 
möglich, ABER NICHT EINFACHER!"   ;D

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

cpu_builder schrieb:
> meine eigene
> Erfindung

Sicher dat...

Willst Du nicht erst mal anfangen, die einfachsten Grundlagen zu 
erlernen - vielleicht mal eine einfache Gatterschaltung aufbauen?

von cpu_builder (Gast)


Lesenswert?

Stefanus F. schrieb:
> Mein Laptop ist zu 100% unnötig, ebenso das Smartphone/Handy.
> Ich konnte meine ersten 17 Jahre ohne diese Dinge überleben.

Die sind ja nur Werkzeuge. Auch wenn manche Leute diese Geräte als Sinn 
ihres Lebens ansehen..

Stefanus F. schrieb:
> Heißt das nun, dass ich die Geräte der 90er Jahre neu erfinden möchte?
> Nein!

Auch wenn ich da noch nicht gelebt habe, war damals nicht alles 
krankhaft übertechnisiert. Das was es an Technik gab ist greifbarer als 
die ganzen superkomplizierten Sachen heute.

Ich will nunmal ne überschaubare CPU selber bauen. Eines Tages erstelle 
ich einen neuen Thread hier und zeig euch was draus geworden ist. Jetzt 
mache ich aber erstmal ohne eure Hilfe weiter.

von M.A. S. (mse2)


Lesenswert?

cpu_builder schrieb:
> Ich will nunmal ne überschaubare CPU selber bauen. Eines Tages erstelle
> ich einen neuen Thread hier und zeig euch was draus geworden ist. Jetzt
> mache ich aber erstmal ohne eure Hilfe weiter.

Viel Glück, wir sind gespannt.

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

cpu_builder schrieb:
> Ich will nunmal ne überschaubare CPU selber bauen. Eines Tages erstelle
> ich einen neuen Thread hier und zeig euch was draus geworden ist. Jetzt
> mache ich aber erstmal ohne eure Hilfe weiter.

Blöd, wenn die Antworten nicht so sind, wie man sie gerne gehabt 
hätte...

Viel Erfolg trotzdem - Vorschläge und Hinweise hast Du ja hier zuhauf 
bekommen!

von cpu_builder (Gast)


Lesenswert?

Wolfgang R. schrieb:
> Willst Du nicht erst mal anfangen, die einfachsten Grundlagen zu
> erlernen - vielleicht mal eine einfache Gatterschaltung aufbauen?

Ich habe bereits einige Gatter aufgebaut. Und das nicht nur vor 2 Tagen, 
sondern auch schon vor 2 Jahren.

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

cpu_builder schrieb:
> Ich habe bereits einige Gatter aufgebaut. Und das nicht nur vor 2 Tagen,
> sondern auch schon vor 2 Jahren.

Deine Überraschten Antworten auf die Themen Tristate oder Multiplexer 
haben Anderes vermuten lassen...

von Cyblord -. (cyblord)


Lesenswert?

cpu_builder schrieb:
> Auch wenn ich da noch nicht gelebt habe, war damals nicht alles
> krankhaft übertechnisiert. Das was es an Technik gab ist greifbarer als
> die ganzen superkomplizierten Sachen heute.

Das denkst du nur. Schon ein C64 würde dich aktuell überfordern. Und das 
waren noch lange nicht die 90er. 90er waren 486er, Pentium usw. Die 
waren schon heftig komplex im Vergleich zu einer 4 Bit Bastel- und Lern 
CPU an der du ja schon gut zu knabbern hast.

von IT-Archivar (Gast)


Lesenswert?

Wolfgang R. schrieb:
> cpu_builder schrieb:
>> Ich habe bereits einige Gatter aufgebaut. Und das nicht nur vor 2 Tagen,
>> sondern auch schon vor 2 Jahren.
>
> Deine Überraschten Antworten auf die Themen Tristate oder Multiplexer
> haben Anderes vermuten lassen...

Vielleicht meint er ja nicht Logikgatter, sondern Ziegengatter oder 
sonst was Alltägliches aus dem ländlichen Umland.

von Stefan ⛄ F. (stefanus)


Lesenswert?

Ich habe ein 1 Gatter entwickelt. Block-Symbol:
1
         _____
2
        |     |
3
in o----|  1  |----o out
4
        |_____|

Schaltplan:
1
in o---------------o out

Funktioniert analog, digital und mit fast jeder beliebigen Spannung. 
Benötigt keine Stromversorgung.

Ich nenne es 74XX000. :-)

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

Nimm den 7407... der hat dazu gleich Open Collector Ausgänge...

von Stefan ⛄ F. (stefanus)


Lesenswert?

Ja aber der ist doch unnötig kompliziert.

von M.A. S. (mse2)


Lesenswert?

Stefanus F. schrieb:
> Ich habe ein 1 Gatter entwickelt. Block-Symbol:

Also an der Rückwirkungsfreiheit deines Erzeugnisses musst Du aber noch 
ein Bisschen arbeiten!   :D


Früher hatten wir im Digitallabor eine Liste mit lauter ulkigen 
Digitalblöcken, ich finde es im Netz leider auf die Schnelle nicht.
Da gab es so Sachen wie:

1-Bit-Perverter,
Nie-Glied,
Nie-und-nimmer-Glied,
WOM-Speicher (write-only-speicher),
etc.

PS:
Etwas in der Art
http://donaupeter.de/logik/logik.htm

: Bearbeitet durch User
von Nop (Gast)


Lesenswert?

cpu_builder schrieb:

> Das ist zwar beschleunigend, aber gefährdet ja auch die Sicherheit (5
> Arten von Spectre u.ä. & Meltdown) und ist stromverschwendend

Mit einem Raspi als Desktoprechner will man trotzdem nicht arbeiten. 
Zudem gibt's auch noch x86-CPUs ohne OOE, und die will man ebenfalls 
nicht auf dem Desktop haben - aus demselben Grund. Zu lahm.

> ARM-CPUs sehen vom Design her noch deutlich "ordentlicher" aus,
> logischer, simpler, im Gegensatz zu X86 oder dem misslungenen X64

Du verwechselst Architektur mit Befehlssatz. Heutige x86-CPUs sind 
intern keine x86-Architektur, weil sie die x86-Befehle intern in 
Micro-Ops zerlegen, die dann erst ausgeführt werden. Der Befehlssatz ist 
nur eine externe Codierung, und der Die-Anteil für den Decoder war schon 
vor 10 Jahren vernachlässigbar.

von Theor (Gast)


Lesenswert?

@ cpu_builder

> Ist dann die Ablaufsteuerung im Mikroprozessor gleich dem
> Befehlsdekoder? Denn sie interpretiert ja die Befehle...

Man könnte das so sagen. Sagen wir mal, das ist richtig. Dennoch 
versteht man im allgemeinen unter einem "Dekoder" etwas anderes als 
unter einer "Ablaufsteuerung".

Ein "Dekoder" ist eine Mimik die einem Code einen anderen Code zuordnet. 
Z.B. 'A' -> 1, 'B' -> 2, 'C' -> 3 usws. Statt 1, 2, 3 etc, könnte die 
Ergebnisse auch Steuersignale für Datenpfade sein. Und die Eingabe die 
Codes für Maschinenbefehle, also LDI, ADC usw.

Eine Ablaufsteuerung tut ungefähr das selbe (mag also auch Dekoder 
enthalten) aber zusätzlich in der zeitlichen Dimension. Sie erhält einen 
Takt und Eingangsdaten und gibt an ihren Ausgängen, eine Abfolge von 
Signalen. Diese wiederum können Steuersignale für Datenpfade sein.

Der Unterschied liegt zum Teil in der Betrachtungsweise - nicht so sehr 
in der realen Bauweise.
Man muss dazu wissen, das bei frühen CPUs die Befehlsdekodierung häufig 
als reine Kombinatorik betrachtet und gebaut wurde, die in ihrer Wirkung 
vom Takt abhängig war. Der Befehl wurde in alle notwendigen 
Steuersignale dekodiert und der Takt hat dafür gesorgt, dass sie in den 
folgenden ein, zwei oder drei Takten wirksam wurden.
Später wurde die Befehlsdekodierung zusammen mit der taktabhängigen 
Ausführung als eine Einheit betrachet - der "Ablaufsteuerung" (man nennt 
das auch Microprogrammeinheit, den Ablauf ein "Microprogramm"). Das 
hatte eher Gründe in der Übersicht, der Organisation, als darin, dass 
die beiden Varianten effektiv etwas wesentlich Unterschiedliches sind.


Aber das führt hier im Moment noch weit hinter Deinen Horizont, denke 
ich und man sollte das erst einmal verschieben. Das Verständnis ergibt 
sich aus der Betrachtung der tatsächlichen Abläufe viel besser, meine 
ich.


Also nun erst einmal der Multiplexer. Ich habe Dir oben eigentlich schon 
den Multiplexer verbal beschrieben.

Theor schrieb:
> Ein Multiplexer. Im Prinzip je Eingang ein AND-Gatter, - insofern hast
> Du schon in die richtige Richtung gedacht, prima -, aber dazu ein
> OR-Gatter mit mehreren Eingängen an den Ausgängen der ANDs.

Und zwar, damit Du die Konflikte zwischen unterschiedlichen 
Ausgangswerten der AND-Gatter auflöst. Zwei AND-Gatter mit 
zusammengeschalteten Ausgängen gehen kaputt wenn sie unterschiedliche 
Werte ausgeben. Ein ODER-Gatter aber verträgt es, wenn an seinen 
Eingängen unterschiedliche Werte liegen und es kann diese zwei 
unterschiedlichen Werte einem ganz bestimmten zuordnen, so das der 
Konflikt aufgelöst ist.

Du solltest Dich jetzt ernsthaft um ein Simulationsprogramm kümmern und 
das einfach mal versuchen.

Wichtig ist, dass Du praktische Dinge machst. Wertetabellen aufstellst 
und boolsche Gleichungen. Schaltungen zeichnest und ausprobierst. 
Entweder real oder in Simulation. Bei Schaltungen überlegst, was 
passiert, wenn Du gewisse Eingangswerte anlegst. Auch lesen. Aber das 
Gelesene auch nachvollziehen.

Ich halte es übrigens durchaus nicht für sinnlos, wenn Du jetzt schon 
"Entwürfe" für Deine Super-CPU machst, die besser als Intel oder AMD 
ist. Sammle Material und Ideen. Daraus kannst Du auch lernen.
Es ist aber äusserst wichtig, dass Du die realen, aber so kleinen, 
unwichtigen, murksigen und anstrengenden Sachen lernst und übst. Und das 
Du vorerst damit viel mehr Zeit verbringst als mit Deinen Ideen.
Schaue mal alle paar Wochen Deine Ideen an, ob Du inzwischen einen 
Kenntnisstand erreicht hast, um eine davon etwas konkreter zu machen. 
Verfeinere einen Blockschaltplan oder eine Gleichung. Zeichne eine neue, 
bessere Gatterschaltung (oder in Transistoren). So, - Schritt für 
Schritt -, näherst Du Dich Deinem Ziel.

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:

[...]
>
> Ich weiß was 2^2 ist, aber man weiß ja nie was irgendwelche Ingenieure
> für verrückte Sachen erfinden. Mit Multiplexern bin ich eben nicht so
> vertraut

Noch eine Bemerkung hierzu:

Ich verstehe das so, dass Du es vermeidest, Fehler zu machen. In diesem 
Fall, weil Du etwas noch nicht wissen könntest, was andere schon wissen.

Das ist aber nicht sinnvoll, weil Du auf diese Weise gar nichts machst. 
Du machst so zwar keine Fehler, aber auch nichts Richtiges. Aber das ist 
doch Dein Ziel: Etwas Richtiges zu machen. Oder? (Und, wie gesagt: 
Fehler sind auch wertvoll.)

Es gibt immer Leute in Deiner Umgebung, die Deine Fehler unsachlich 
kritisieren. Das Beste ist, meiner Meinung nach, sich mit diesen 
Menschen nicht auf Gespräche einzulassen. Das tut nur weh. Es bringt 
Dich nicht weiter.
Selbst wenn diese Kritik auch sachliche Aspekte hat; es gibt keinen 
guten Grund sich nach jemandem zu richten, der sachliche Kritik mit 
persönlichen Herabsetzungen verbindet.
Jemand der Dir wirklich helfen will, wird Dich auf Fehler hinweisen und 
gut. Und manche werden Dich ermutigen und auch kleine Fortschritte 
bemerken und Dich dafür loben. Halte Dich am besten an diese Leute.

Ich weiss auch nicht ob Du das packen wirst. Aber ich richte mich 
hauptsächlich danach, ob Du es wenigstens versuchst - und wenn es noch 
so murksig ist.
Erinnere Dich an Deinen ersten Versuch zum Datentransport. Wie habe ich 
darauf reagiert? Wie ging es Dir damit?

von (prx) A. K. (prx)


Lesenswert?

cpu_builder schrieb:
>> out-of-order execution, branch prediction, Pipeline, mehrfach
>> assoziativen Caches
>
> Das ist zwar beschleunigend, aber gefährdet ja auch die Sicherheit (5
> Arten von Spectre u.ä. & Meltdown) und ist stromverschwendend

Das Gerät, auf dem ich soeben tippe, hat des Stroms wegen beides. 4x 
Cortex A57, die in Komplexität mit x86-64 mithalten können und von 
Spectre&Co betroffen sind. Und 4x Cortex A53, die das kalt lässt. 
Assoziative Caches und Branch Prediction haben jedoch alle in dieser 
Klasse, geht nicht anders.

Der Kern des Problems mit Spectre&Co ist nur OOO. IMHO war bisher noch 
kein in order Design betroffen, wie Cortex A53/55 und Intels Atoms vor 
Silvermont.

> ARM-CPUs sehen vom Design her noch deutlich "ordentlicher" aus,
> logischer, simpler, im Gegensatz zu X86 oder dem misslungenen X64

Die Befehlsatzarchitektur schon. Im internen Aufbau schenken sich die 
Cortex A7x, AMDs und Intels wenig.

von michael_ (Gast)


Lesenswert?

Wenn du es ganz einfach haben möchtest, dann versuche es doch mal mit 
einem Analogrechner.
Die gab es mal und haben funktioniert.
Da muß man sich aber in die OPV reinknien.

http://www.robotrontechnik.de/index.htm?/html/computer/analogrechner_e.htm

Vielleicht wäre der APS2 mit nur acht OPV etwas für dich.

von M.A. S. (mse2)


Lesenswert?

michael_ schrieb:
> versuche es doch mal mit
> einem Analogrechner.

:)

Ja, die gab es mal.
Allerdings können solche Geräte wirklich nur rechnen und nichts anderes.
Programmierbar waren sie durch Stöpseln von Verbindungskabeln, ich 
vermute, das ist nicht das, was der TO möchte.   ;)

von Martin (Gast)


Lesenswert?

Cyblord -. schrieb:
> Schon mal die LUTs eines FPGA angeguckt?
>
> Deine Erfindung? Sorry entweder Troll oder Hybris jenseits aller
> Heilungschancen.

Es gibt immer wieder einen, der sowas "erfindet." Ich habe selber bei 
der Siemens einen Projektleiter gehabt, der ganz super stolz drauf war, 
dass er auf die Idee gekommen ist, dass man die Delays und Kombinationen 
von LUTs in FPGAs dazu verwenden könnte, Delays für seine analogen 
Leistungsverstärker zu verwenden. Hat er sogar durchgesetzt dass es 
patentiert wird.

von cpu_builder (Gast)


Lesenswert?

Ich dachte eher an digital, aber gut zu wissen dass es sowas gibt.

Jetzt beiße ich mir die Zähne am Bauen von zwei 4:1-Multiplexern in 
KLogic aus. Oder vielleicht in Logism. Mal sehen.

von S. R. (svenska)


Lesenswert?

cpu_builder schrieb:
> ARM-CPUs sehen vom Design her noch deutlich "ordentlicher" aus,
> logischer, simpler, im Gegensatz zu X86 oder dem misslungenen X64

Das glaubst aber auch nur du. Schau dir mal RISC-V an, wenn du etwas 
ordentliches-logisches-simples ohne Ballast haben willst.

Davon abgesehen sind "Befehlssatz" und "Implementation" völlig 
unterschiedliche Dinge. Intel-CPUs führen seit 20 Jahren (Pentium Pro) 
keinen x86-Code mehr aus.

> M.A. S. schrieb:
> Werde ich. Dann werde ich mir mal ein paar Bücher kaufen, statt hier
> weiter Anfängerfragen zu stellen.

Gehe lieber in die nächste Bibliothek und leihe dir ein paar Dutzend 
passende Bücher aus. Kaufen kannst du die drei Relevanten später auch 
noch.

>> War ja klar. Erst große Töne spucken und dann bei den ersten Anzeichen
>> von Komplexität den Schwanz einziehen.
>
> Ich bin nunmal Physiker, kein Elektrotechniker. Es kann mir ja niemamd
> vorwerfen sich dafür zu interessieren, wie eine CPU arbeitet.

Nö, du bist ein Quatschkopf. Wenn du Physiker wärst, also mal 
Wissenschaft gemacht hättest, dann hättest du dich erstmal informiert, 
bevor du deine absolute Unwissenheit zur Schau stellst.

> Wenn es mir UNNÖTIG KOMPLIZIERT erscheint, wie fast alle
> Technik heute, dann erfinde ich eben was simpleres,
> was auch funktioniert.

Das kannst du machen. Hab ich auch schon gemacht. Das Ergebnis kann sich 
durchaus sehen lassen, aber... naja, wenn man ein Design mit den Fähig- 
und Fertigkeiten von vor 30 Jahren aufbaut, bekommt man auch die 
Leistung von vor 30 Jahren.

> Das bekomm' ich wahrscheinlich
> auch ohne all die modernen "Weiterentwicklungen" hin

Wenn du dich intelligenter anstellst als bisher, dann ist das kein 
großes Problem. Aber darauf sinnvoll einen Webbrowser laufenzulassen 
(d.h. das Teil in dieser Welt produktiv einsetzen) wirst du nie im 
Leben.

von cpu_builder (Gast)


Lesenswert?

Da ich mich entschieden habe, in Logisim fortzufahren, bis ich 
irgendwann die simulierte Schaltung baue, erstelle ich gleich einen 
neuen Thread

von cpu_builder (Gast)


Lesenswert?

Um die Funktionsweise einer CPU besser zu verstehen, baue ich in Logisim 
nun Schritt für Schritt einige Schaltungen auf. (Teil 1: 
Beitrag "diskrete CPU")

Später werde ich die CPU mit Logikbausteinen nachbauen.

von Dussel (Gast)


Lesenswert?

Hältst du es nicht für sinnvoller, das in VHDL oder Verilog zu machen? 
Da kannst du alles genauso schrittweise aufbauen und dir die Gatter 
ansehen, aber du kannst es auch mit wenig Aufwand direkt auf einen Chip 
bringen.
Außerdem ist HDL-Erfahrung kein Nachteil

von Stefan ⛄ F. (stefanus)


Lesenswert?

Wenn du weder eine Frage noch eine coole Lösung zu präsentieren hast, 
warum hast du dann einen neuen Thread eröffnet? Lust auf 
Bullshit-Diskussionen?

von cpu_builder (Gast)


Lesenswert?

Da ich bisher öfter Logisim genutzt habe, versuche ich es erstmal in 
einer gewohnten Umgebung. Aber wenn es klappt bin ich offen für andere 
Arten.

von cpu_builder (Gast)


Lesenswert?

Stefanus F. schrieb:
> Wenn du weder eine Frage noch eine coole Lösung zu präsentieren hast,
> warum hast du dann einen neuen Thread eröffnet? Lust auf
> Bullshit-Diskussionen?

Ich habe demnächst eine Lösung. Abgesehen davon:

(a) trifft der Threadname "diskrete CPU" nicht mehr zu

(b) ist das laden der über 100 Beiträge auf dem Handy langsam

von S. R. (svenska)


Lesenswert?

Dussel schrieb:
> Hältst du es nicht für sinnvoller, das in VHDL oder Verilog zu machen?

Beim geschätzten Wissensstand des TO: Nein.

von michael_ (Gast)


Lesenswert?

M.A. S. schrieb:
> Allerdings können solche Geräte wirklich nur rechnen und nichts anderes.
> Programmierbar waren sie durch Stöpseln von Verbindungskabeln,

Bei Digitalrechnern war das damals auch nicht anders.

cpu_builder schrieb:
> Ich dachte eher an digital, aber gut zu wissen dass es sowas gibt.
>

Für digital hast du aber keine Change!
Ich lese hier schon eine Weile belustigt mit.

> Jetzt beiße ich mir die Zähne am Bauen von zwei 4:1-Multiplexern in
> KLogic aus. Oder vielleicht in Logism. Mal sehen.

Deine Zähne sind schneller raus, als wie du denkst. Was dann?
Mach das auf dem Bildschirm.

Vor paar Jahren wollte hier das auch schon mal einer machen.
Nichts mehr davon gehört.
Ich habe damals empfohlen, mit einem entsprechendem fetten Netzteil 
anzufangen.

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

cpu_builder schrieb:
> erstelle ich gleich einen
> neuen Thread

Bitte nicht...

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

Muss für dieses Rumgestöpsel jetzt noch ein zweiter Thread her? Zweimal 
null Inhalt ist halt immer noch null Inhalt.

Mach doch erst mal was Praktisches und lerne...

von Stefan ⛄ F. (stefanus)


Lesenswert?

Der Liegestuhl wurde mit einem Handtuch reserviert.

von Theor (Gast)


Lesenswert?

@ cpu_builder

Ich habe mir jetzt auch mal Logisim installiert. Ich könnte dann Deine 
Entwürfe vom Multiplexer usw. auch laden und ausprobieren, falls Du sie 
hier als Anhang postest.

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

cpu_builder schrieb:
> ich würde gerne eine CPU mit einer eigenen Architektur, die möglichst
> wenige Transistoren benötigt, diskret selber bauen, um die grundlegende
> Funktionsweise besser zu verstehen.

Noch mal zum Eingangspost - hier ist eindeutig die Rede vom bauen, nicht 
simulieren, nicht theoretisieren...

Warum ist es heutzutage so unattraktiv, einfach mal ein Steckbrett, ein 
5V-Netzteil, ein paar ICs der 74er Reihe und LEDs mit Vorwiderstand zu 
beschaffen und endlich mal die reale Welt zu erfahren?

Ich meine, geile Freundinnen, die alle Jpg mit Nachnamen heißen, sind 
auch nicht der Weisheit letzter Schluss, oder?

von Axel S. (a-za-z0-9)


Lesenswert?

Theor schrieb:
> @ cpu_builder
>
> Ich habe mir jetzt auch mal Logisim installiert. Ich könnte dann Deine
> Entwürfe vom Multiplexer usw. auch laden und ausprobieren, falls Du sie
> hier als Anhang postest.

Helfersyndrom?

von Stefan ⛄ F. (stefanus)


Lesenswert?

> Helfersyndrom?

Wenn es dich stört, bist du hier falsch. Du kannst deinen Account wieder 
löschen.

von M.A. S. (mse2)


Lesenswert?

cpu_builder schrieb:
> Da ich mich entschieden habe, in Logisim fortzufahren, bis ich
> irgendwann die simulierte Schaltung baue, erstelle ich gleich einen
> neuen Thread

Das finde ich durchaus sinnvoll.

von M.A. S. (mse2)


Lesenswert?

Axel S. schrieb:
> Theor schrieb:
>> @ cpu_builder
>>
>> Ich habe mir jetzt auch mal Logisim installiert. Ich könnte dann Deine
>> Entwürfe vom Multiplexer usw. auch laden und ausprobieren, falls Du sie
>> hier als Anhang postest.
>
> Helfersyndrom?

Dies ist ein Forum.
Leute eröffnen Threads um mit anderen Leuten über etwas zu diskutieren.
Ein Forum lebt davon, dass manche sich hier einbringen möchten. Das ist 
völlig in Ordnung.
Wenn ganz andere Leute keinen Bock auf ein bestimmtes Thema haben oder 
ihnen das Niveau zu gering ist, steht es ihnen frei, diesen Thread 
weiträumig zu umfahren.

Warum machst Du das nicht einfach und lässt diejenigen, die das anders 
sehen, in Ruhe?!

: Bearbeitet durch User
von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

M.A. S. schrieb:
> Warum machst Du das nicht einfach und lässt diejenigen, die das anders
> sehen, in Ruhe?!

Naja, ich als Helfer käme mir jetzt schon ein wenig verarscht vor.
1
TO: Ich will eine CPU bauen - nur aus Transistoren!
2
Helfer: Da hast Du aber eine Menge vor...
3
....
4
(160 Beiträge weiter)
5
TO: Puh... ist das kompliziert!
6
...
7
TO: Ich will eine CPU in Logisim simulieren!
8
....

Was ich damit sagen will: Der TO bindet eine Menge KnowHow und Arbeit 
von potentiellen Helfern. Am Ende sagt er dann: "Verarscht! Verarscht! 
Das mit den Transistoren lasse ich! Jetzt nehme ich einen neuen Thread 
und machs mit Logisim!". Nach 2 Tagen schmeisst er schon alles hin, 
bevor er überhaupt angefangen hat.

Ich kann mir schon vorstellen, wie es weiter geht:
1
TO: Ich will eine CPU in Logisim erstellen - habe aber keinen Plan!
2
Helfer: Da hast Du aber eine Menge vor...
3
....
4
(Nochmals 160 Beiträge weiter)
5
TO: Puh... ist das kompliziert!
6
...
7
TO: Ich will eine fertige CPU verwenden! Wo bekomme ich noch einen Z80?
8
....
9
(Nochmals 160 Beiträge weiter)
10
TO: Wie schließe ich den an?
11
(Nochmals 160 Beiträge weiter)
12
TO: Zu kompliziert, ich mach jetzt Urlaub!

Wie ich den TO einschätze: Er hat keinen Plan und offenbar nicht die 
Fähigkeiten oder den Willen, sich besondere Kenntnisse durch 
Selbststudim anzueignen. Stattdessen will er sich alles im Detail 
vorkauen lassen, um dann morgen fertig zu sein.

Ich schätze das ein als verlorene Liebesmüh. Hier werden einfach 
Ressourcen unnütz gebunden und auch verschwendet. Besser wäre es, wenn 
der TO sich selbst in die erforderlichen Themen einarbeiten würde. Man 
kann nur hoffen, dass irgendein späterer interessierter Leser mit den 
Infos, die hier bereitwillig gegeben wurden, mehr anfangen kann.

von Axel S. (a-za-z0-9)


Lesenswert?

M.A. S. schrieb:
> Axel S. schrieb:
>> Theor schrieb:
>>>
>>> Ich habe mir jetzt auch mal Logisim installiert. Ich könnte dann Deine
>>> Entwürfe vom Multiplexer usw. auch laden und ausprobieren, falls Du sie
>>> hier als Anhang postest.
>>
>> Helfersyndrom?
>
> Dies ist ein Forum.
> Leute eröffnen Threads um mit anderen Leuten über etwas zu diskutieren.
> Ein Forum lebt davon, dass manche sich hier einbringen möchten. Das ist
> völlig in Ordnung.

Zieh dir mal den Stock aus dem Arsch.

Es ist ein himmelweiter Unterschied, ob man diskutiert und sein 
vorhandenes Wissen weiter vermittelt. Oder ob man sich eine obskure(?) 
Software installiert, um im Falle des Falles helfen zu können. Nicht daß 
ich die Wahrscheinlichkeit dafür besonders hoch schätzen würde. Unser 
toller anonymer TE wird vermutlich auch in Logisim an Trivialitäten wie 
einem Multiplexer scheitern oder daran, daß er Logik-Ausgänge direkt 
zusammenschaltet.

Ernsthaften Willen (von Befähigung ganz zu schweigen!) zu eigenständigem 
Lernen hat er bislang jedenfalls nicht demonstriert.


Frank M. schrieb:
> Was ich damit sagen will: Der TO bindet eine Menge KnowHow und Arbeit
> von potentiellen Helfern. Am Ende sagt er dann: "Verarscht! Verarscht!

Genau so. Außer daß ich Hanlons Razor heranziehen würde. M.a.W. keine 
böse Absicht unterstellen, sondern schlicht Blödheit.

https://de.wikipedia.org/wiki/Hanlon%E2%80%99s_Razor

von Fitzebutze (Gast)


Lesenswert?

Frank M. schrieb:
> Ich schätze das ein als verlorene Liebesmüh. Hier werden einfach
> Ressourcen unnütz gebunden und auch verschwendet.

Man könnte auch auf gut Deutsch sagen: Der Thread ist - sowohl was 
Austausch wie auch Knowhow-Aspekte angeht - völlig fürn Arsch.

Liegt das an Syndrom Facebook, die ganze Welt am eigenen Laut 
Denken/Lernprozess teilhaben lassen zu müssen?
Gerade weil sich auch kaum einer die Müh macht, nach älteren bzw. 
wertvolleren Beiträgen zu dem Thema zu recherchieren, wird das Forum mit 
immer mehr Posts dieser Art zugemüllt und wird damit unlesbar.

von M.A. S. (mse2)


Lesenswert?

Frank M. schrieb:
>> sehen, in Ruhe?!
>
> Naja, ich als Helfer käme mir jetzt schon ein wenig verarscht vor.TO:
> Ich will eine CPU bauen - nur aus Transistoren!
> Helfer: Da hast Du aber eine Menge vor...
> ....
> (160 Beiträge weiter)
> TO: Puh... ist das kompliziert!
> ...
> TO: Ich will eine CPU in Logisim simulieren!
> ....
>
> Was ich damit sagen will: Der TO bindet eine Menge KnowHow und Arbeit
> von potentiellen Helfern. Am Ende sagt er dann: "Verarscht! Verarscht!
> Das mit den Transistoren lasse ich!


Axel S. schrieb:
> Es ist ein himmelweiter Unterschied, ob man diskutiert und sein
> vorhandenes Wissen weiter vermittelt. Oder ob man sich eine obskure(?)
> Software installiert, um im Falle des Falles helfen zu können. N
> ...
> Ernsthaften Willen (von Befähigung ganz zu schweigen!) zu eigenständigem
> Lernen hat er bislang jedenfalls nicht demonstriert.

Ist ja gut, ihr habe ja recht. Trotzdem:

(1)
Axel S. schrieb:
> Helfersyndrom?
Wenn es hier einen gibt, der aus welchen Gründen auch immer, Lust auf 
dieses (aus Eurer Sicht sinnlose) Unterfangen hat, dann soll er es doch 
machen.


(2)
Axel S. schrieb:
> Zieh dir mal den Stock aus dem Arsch.
Mäßijen se ma jefälligst Ihre Ausdrucksweise!

;D

von M.A. S. (mse2)


Lesenswert?

Fitzebutze schrieb:
> Liegt das an Syndrom Facebook, die ganze Welt am eigenen Laut
> Denken/Lernprozess teilhaben lassen zu müssen?
> Gerade weil sich auch kaum einer die Müh macht, nach älteren bzw.
> wertvolleren Beiträgen zu dem Thema zu recherchieren, wird das Forum mit
> immer mehr Posts dieser Art zugemüllt und wird damit unlesbar.

Ja, OK, das ist ein Punkt!

: Bearbeitet durch User
von Erich (Gast)


Lesenswert?

cpu_builder schrieb:
Beitrag "Re: diskrete CPU"
> ...
> Subtraktion, Multiplikation,... dennoch machen kann?
> Brauche ich Carry-Bits,...? Wieviele?

Zur Abrundung dieses Threads möchte ich alle künftigen Leser
auf folgende Seite von Logikfunktionen hinweisen:
http://www.brix.de/computer/logiksymbole_anders.html

Beitrag #5539305 wurde von einem Moderator gelöscht.
von cpu_builder (Gast)


Lesenswert?

2. Thread gelöscht?! kann ihn nicht mehr finden ...

egal, dennoch: meine CPU in Logisim ist fertig. u.a. mit Kenntnissen die 
ich hier erworben habe.

Danke für die Hilfe!

(auch wenn manche, im Gegensatz zu z.B. Theor, es mir eher schwer 
gemacht haben)

Multiplexer machen es kompliziert in Bezug auf Gattermenge, später es 
aus Gattern zu bauen -> 2 Eingabe- & 1 festes Ausgaberegister (ALU), + 1 
Register, an dem eine LED hängen könnte

von IT-Archivar (Gast)


Lesenswert?

cpu_builder schrieb:
> egal, dennoch: meine CPU in Logisim ist fertig. u.a. mit Kenntnissen die
> ich hier erworben habe.

Glaubt keiner, das mit fertig, zeig mal .log oder screenshot.

von cpu_builder (Gast)


Lesenswert?

IT-Archivar schrieb:
> cpu_builder schrieb:
> egal, dennoch: meine CPU in Logisim ist fertig. u.a. mit Kenntnissen die
> ich hier erworben habe.
>
> Glaubt keiner, das mit fertig, zeig mal .log oder screenshot.

Mir ist es eigentlich vollkommen egal was ihr über mich zu wissen 
glaubt. Aber ich kann es ja senden.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

cpu_builder schrieb:
> 2. Thread gelöscht?! kann ihn nicht mehr finden ...

Der wurde nicht gelöscht, sondern mit diesem Thread zusammengeführt. Du 
musst nur mal ein paar Beiträge nach oben blättern.

von Stefan ⛄ F. (stefanus)


Lesenswert?

cpu_builder schrieb:
> Aber ich kann es ja senden.

Ich würde das nicht tun. Die Stimmung hier ist inzwischen so aufgeladen, 
dass hier kaum noch gute-laune Kommentare zu erwarten sind. Vielleicht 
lässt du das Thema besser einfach ein halbes Jahr lang ruhen und 
präsentierst dein Projekt dann.

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

cpu_builder schrieb:
> meine CPU in Logisim ist fertig.

Hätte ich so schnell nicht erwartet - zeig doch bitte mal!

von Theor (Gast)


Lesenswert?

cpu_builder schrieb:
> 2. Thread gelöscht?! kann ihn nicht mehr finden ...
>
> egal, dennoch: meine CPU in Logisim ist fertig. u.a. mit Kenntnissen die
> ich hier erworben habe.
>
> Danke für die Hilfe!
> ...

Ah. Magst Du das mal posten, bitte? Das würde mich interessieren.

von cpu_builder (Gast)


Lesenswert?

Wolfgang R. schrieb:
> cpu_builder schrieb:
> meine CPU in Logisim ist fertig.
>
> Hätte ich so schnell nicht erwartet - zeig doch bitte mal!

Theor schrieb:
> Ah. Magst Du das mal posten, bitte? Das würde mich interessieren.

Stefanus F. schrieb:
> cpu_builder schrieb:
> Aber ich kann es ja senden.
>
> Ich würde das nicht tun. Die Stimmung hier ist inzwischen so aufgeladen,
> dass hier kaum noch gute-laune Kommentare zu erwarten sind. Vielleicht
> lässt du das Thema besser einfach ein halbes Jahr lang ruhen und
> präsentierst dein Projekt dann.

Da es offensichtlich Interessierte gibt, sende ich die CPU. Ich habe 
jetzt etwas spät erst nach Antworten, deshalb morgen früh.

Vielleicht hilft mir ja jemand bei der Verbesserung.

Ansonsten komme ich gerne in 1/2 Jahr wieder mit dem Thema an. Aber 
einen Versuch ist es doch Wert ;-)

von cpu_builder (Gast)


Lesenswert?

Korrektur: ich wollte schreiben dass es jetzt schon spät ist, und ich 
deswegen morgen früh die Datei vom PC hole. Ich habe leider im Moment am 
PC zu Hause keine Internetverbindung, nur am Handy

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

Ist ja jetzt schon wieder ein Tag weiter - hat die Katze den Source Code 
gefressen?

von Stefan ⛄ F. (stefanus)


Lesenswert?

Wolfgang, du kennst das doch sicher, wie es nach solchen Ankündigungen 
üblicherweise weiter geht. Ich sage nur: Pfffffft, heiße Luft.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

Also ich bin ja mal gespannt was da kommt.
Ne CPU zu bauen ist ja nunmal nicht so einfach.

Wobei wirs ja mit 32Bit MIPS auch gleich komplett übertrieben haben ;)
http://www.fritzler-avr.de/spaceage2/index.htm
(Der eingebundene Webring ist SEHR zu empfehlen!)

Aber in klein geht sowas ja auch:
http://digitarworld.uw.hu/ttlcpu.html

Der Nibbler wurde hier ja schon verlinkt.

von Fake News (Gast)


Lesenswert?

cpu_builder schrieb:
> Da es offensichtlich Interessierte gibt, sende ich die CPU. Ich habe
> jetzt etwas spät erst nach Antworten, deshalb morgen früh.

Ich warte immer noch gespannt auf die geistigen Ergüsse dieses 
"cpu_builder".
Ehrlich gesagt gehen mir die Hirnfurze dieses Typen am Arsch vorbei!

von cpuser (Gast)


Lesenswert?

Mw E. schrieb:
> Also ich bin ja mal gespannt was da kommt.
> Ne CPU zu bauen ist ja nunmal nicht so einfach.

Wobei allerdings... "logisim cpu download" in die nächste Suchmaschine 
zu tippen ist dagegen schon viel einfacher. :-)

von Einer K. (Gast)


Lesenswert?

Wenn ich eine CPU/µC nachbauen wollte, würde ich mir den F18A von 
GreenArrays zum Vorbild nehmen.

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

cpu_builder schrieb:
> dennoch: meine CPU in Logisim ist fertig. u.a. mit Kenntnissen die
> ich hier erworben habe.

Hallo cpu_builder,

gespannt warte ich immer noch auf Deine Implementierung der CPU, zumal 
ich mir nicht vorstellen kann, dass sowas innerhalb von so kurzer Zeit 
im Selbststudium möglich ist. Aber ich lasse mich gerne überraschen!

Zeig doch bitte mal Deine Ergebnisse, daran habe ich echtes Interesse!

von Wolfgang R. (Firma: www.wolfgangrobel.de) (mikemcbike)


Lesenswert?

Tja, war ja dann wohl (wie erwartet) wieder nix als heiße Luft...

Der übliche Konversationsverlauf...

"Ich hab 'ne ganz tolle Idee! Leider hab ich keine Ahnung"

"Das wird aber sehr kompliziert und Du musst erst was lernen!"

"Ihr seid alle doof."

von Stefan ⛄ F. (stefanus)


Lesenswert?

"ich bin fertig, aber ich zeige es euch nicht"

von Cyblord -. (cyblord)


Lesenswert?

Stefanus F. schrieb:
> "ich bin fertig, aber ich zeige es euch nicht"

Erinnert mich an Pierre de Fermat und seinen "wunderbaren Beweis"....

von M.A. S. (mse2)


Lesenswert?

Cyblord -. schrieb:
> Erinnert mich an Pierre de Fermat und seinen "wunderbaren Beweis"....
Hier ist wahrscheinlich auch gerade nicht genug Platz, um die 
selbsterfundene CPU abzubilden...

von Stefan ⛄ F. (stefanus)


Lesenswert?

Für das, was in so kurzer Zeit entstanden sein kann, sollte der Platz 
genügen. Ich habe allerdings Zweifel, dass dies meinem Anspruch an eine 
einfache CPU genügen wird.

Aber ich lasse mich gerne positiv überraschen. Interessant ist das 
Projekt auf jeden Fall.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.