@Svenska:
In der regel ist der Arbeitsspeicher RAM (wegen eben deinen genannten gründen)
Aber eine selbstbau-cpu hat nunmal keine 4GHz. Es ist nicht allzu schlimm, wenn ein speicherzugriff mal 100ms dauert. Ganz im gegenteil, das macht die Programierung erst richtig interessant
Unterschätze nicht den Aufwand, ein EEPROM brennen zu müssen. Das Timing muss dabei noch eher genau sitzen als bei "normalem" RAM. Außerdem hast du bei RAM den Vorteil, dass du - für äußerst wenig Geld - eine hohe Kapazität und genug Geschwindigkeit bekommst.
Verwechsel nicht Milli- mit Nanosekunden!! Ich habe hier einen 286er stehen mit 16 Mhz, bei dem ich per DIP-Schalter die Waitstates abschalten kann, wenn ich RAM mit einer Zugriffszeit <70ns einbaue. NANOsekunden!
Wenn du - und davon gehe ich aus - deine CPU mit mehr als ein paar Kilohertz takten möchtest (auch ein C64 hatte annähernd 1 MHz), dann wirst du auf immer und ewig auf deinen RAM warten müssen.
100 ms sind sehr viel, denn das bedeutet 10 Lesevorgänge pro Sekunde. Schreibvorgänge sind noch langsamer. Und nun überlege dir, wieviele Register in einer CPU aus diskreten Bausteinen aufgebaut werden müssten, um nicht ständig RAM-Zugriffe zu haben. Viele Registersätze sind heutzutage mehrfach vorhanden, um teure RAM-Zugriffe zu sparen.
Und eine selbstbau-cpu (im kleinen maße) wird auch nicht allzuoft auf den speicher zugreifen.
Oh doch, jeder Zugriff auf eine Variable wird auf den RAM zugreifen; jede Programmausführung läuft aus dem RAM ab, jeder Maschinencodebefehl wird von dort geholt. Allein um 10 Byte aus dem Speicher zu holen, eine Sekunde zu warten, mag angehen, wenn du jedes Byte sehen und verstehen willst. Aber um damit eine serielle Konsole zu befeuern, ist das viel zu wenig. Der UART möchte bitte recht schnell angesteuert werden, um mind. 1200 Baud zu liefern (bei bis zu 300 Bps kann ich locker mitlesen). Deine CPU muss die Daten mindestens doppelt so schnell liefern können.
Allerdings währe es evtl mal ne gute überlegung, den flash nicht einzulöten, da er in der tag nicht jahre lang durchhalten wird.
Wieso willst du Chips da einlöten?? Sowas wird grundsätzlich mit Fassung erledigt, damit du im Falle des Falles (und sei es Überspannung durch falsches Netzteil) etwas gegrilltes austauschen kannst.
@Termite:
Naja, nur weil nimand eeproms als Arbeitsspeicher nutzt, heißt es nicht, das es schlecht ist. Es ist halt nur für den industriellen einsatz ungeeignet.
Ist zwar nicht an mich gerichtet, aber EEPROMs sind dafür nicht nur ungeeignet, sondern sinnlos. Wie gesagt, du möchtest die Register nicht mehr auf dem Papier mitzeichnen können...
Aber wenn man seine CPU anderen menschen vorstellt, und die an dem Punkt weiterarbeitet, an der man sie an vortag ausgeschaltet hat, wird das die Menge schon beeindrucken
Dazu müsstest du die Register ebenfalls im EEPROM haben, damit das geht (zumindest den Program Counter).
Außerdem erledigt man soetwas eher durch batteriegepufferte SRAM-Bausteine - einfacher, billiger, schneller und besser.
Meine Idee wäre, sich einen primitiven Speicherkontroller für ganz billige 30-pin-SIMMs zu basteln. Die sind zwar dynamisch, aber wenn man eh was damit vorhat, ist es eine einfache Möglichkeit. SIMMs sind billig und haben riesige (für Selbstbau-Projekte) Mengen Bits zum Beschreiben.
Wenn nicht, dann eben DIPs, die kann man auch als SRAM konstruieren. Bei angelegter Spannung nichtflüchtig. Der Monitor (Betriebssystem) sitzt dann in einem EPROM, wie auch - je nach Bedarf - die Maschinencode-Tabelle.
Einfachste möglichkeit, daten vom PC zu übertragen:
2 Steuerleitungen der RS232 an ein Schieberegister klemmen. Zwei weitere für Bestätigungen:
Quatsch. Den PC will ich sehen, der solch ungetimte Bits korrekt empfängt. Du musst dich entweder mit einer festen Baudrate begnügen - üblich sind 1200 oder 9600 Bps - oder einen Baustein (UART) korrekt ansteuern. Das ist nicht mit simplen Registern getan.
Ich will euch ja nicht die Illusion nehmen, aber fangt erstmal klein an, bevor ihr weitermacht. Projekte gibt es genug.
Ach ja - und ehe ihr einen IDE-Controller für Festplatten (oder CompactFlash-IDE-Adapter) oder sogar einen USB-Controller baut (*rofl*), braucht ihr erstmal eine ALU, die entsprechend gesteuert werden muss.
Gruß,
Svenska