Speicher für den einfachsten Computer (Pi0K)

13

Ich möchte einen möglichst einfachen Computer bauen. Geschwindigkeit und Speicher sind mir egal. Tatsächlich ist langsame Geschwindigkeit und geringe Speichergeschwindigkeit ein großer Vorteil, da ich sie aus Transistoren (im Idealfall Relais!) Zusammensetzen und für jeden Status eine LED haben möchte. Es wird über einen Himbeer-Pi programmiert, der eine Kamera hostet, sodass Sie sehen können, wie jeder Takt ausgeführt wird (ja, es wird mit Hz und nicht mit GHz ausgeführt). Es wird ein offenes Design mit der Absicht sein, dass Schulen die Teile kaufen, das Design verstehen und verbessern können. Das Gesamtbudget muss also deutlich unter 400 GBP liegen, vorzugsweise bei 100 GBP.

Ich habe dies über viele Jahre recherchiert und habe gute Ideen für die CPU (minimale Register, Mikrocode in DIP-Schaltern und bitweise serielle Logik / arithmetische Operationen zur Reduzierung der Transistoranzahl). Was ich nicht herausfinden kann, ist, wie ich den Speicher bekomme, ich möchte 1024 bis 8096 Bits.

Das Beste, was ich mir vorstellen kann, sind zwei 6-Bit-One-of-n-Decoder, die Zugriff auf ein 64 x 64-Gitter von Kondensatoren bieten. Entweder haben sie eine Anklage oder sie tun es nicht, und das Lesen würde diesen Zustand verstärken. Es würden keine LEDs an den Kondensatoren vorhanden sein, da die Aktualisierung dieses "DRAM" in der Größenordnung oder in Minuten erfolgen würde (was eine Schande ist, da dies der einzige Teil wäre, der den Zustand nicht anzeigt).

Andere Ideen sind ein Bandlaufwerk (kompakter Kassettenmechanismus: großartiger Speicher, zu komplex, kein Suchlauf), ein Trommelspeicher (Band um eine Bohnenkanne: zu hart, um die Mechanik zum Laufen zu bringen), ein mechanischer Speicher (Fahrradrad und Kugellager): zu viele Bitfehler), Kernspeicher (große Hartferritkerne: immer noch sehr schwierig, den erforderlichen Maßstab zu ermitteln), Band / Karte (können wir uns noch die Bandleser zulegen), rotierende Platte mit Lochungen in binärer Reihenfolge und etwas Magnet Speicher für die Speicherung (zu komplex zum Erstellen).

Letztendlich ist es das Ziel, ein Design zu veröffentlichen, das in einem Schuljahr erstellt werden kann, in dem alle Teile einer CPU und eines Speichers „sichtbar“ sind. Auf diese Weise können Sie sehen, wie Anweisungen abgerufen, in Mikrocode decodiert und Adressen decodiert / Registerzugriffe / Logik ausgeführt werden im Laufe der Minuten passiert.

Wenn jemand Ideen für wirklich billigen Speicher hat (<< £ 100), bei denen klar ist, wie er funktioniert, dann lass es mich bitte wissen.

Tony

PS: Aktueller Stand ist unter http://www.blinkingcomputer.org/.

Tony Robinson
quelle
Suchen Sie einfach nach Leuten, die dies und ähnliche Dinge bereits getan haben. Die Entwürfe sind da. Sie können eine Stückliste erstellen und feststellen, dass Sie wahrscheinlich etwas mehr Geld und Zeit benötigen.
PlasmaHH
Ich würde vorschlagen, dass es für ein Schulprojekt ein bisschen viel sein könnte, auf die Transistorebene zu gehen. Ich würde denken, dass die kleine und mittlere CMOS-Integration viel praktikabler und wahrscheinlich verständlicher ist (Gatter, Register, Puffer, Decoder usw.). Sie könnten etwas beifügen, das zeigt, wie Gates aus Transistoren hergestellt werden, Flip-Flops aus Gates usw.).
Tut
1
Nur eine Idee: Sie sollten den (Programm-) Speicher einfach per Hand modifizierbar machen, damit die Leute manuell mit ihren Händen "programmieren" können :-).
oyvind
Entscheiden Sie zuerst, was der Computer tun soll. Das bestimmt, wie viel Speicher Sie benötigen und wie der Befehlssatz sein sollte.
Tony Ennis
Vielen Dank an alle. PlasmaHH: Ja, es ist eine große Herausforderung, dies aus zeitlichen und finanziellen Gründen zu tun. Deshalb hat es noch niemand getan. Tut: Ich möchte wirklich jedes Signal sehen können. Die Leute werden dann sehen, wie Logikgatter aus Transistoren aufgebaut sind. oywind: Ja, es wird über einen Raspberry Pi mit einem Webinterface programmierbar sein, mit dem Sie Ihren eigenen Code schreiben und ihn mit einer Webkamera laufen lassen können. Tony Ennis: Ich möchte den einfachsten Computer bauen, der jedes Signal zeigt - dies demonstriert alle Aspekte und erfordert Nicht-Standard-Architekturen, wie eine bit-serielle ALU.
Tony Robinson

Antworten:

9

Es gibt viele Leute, die Computer aus diskreten Transistoren, ICs, Relais und sogar Vakuumröhren gebaut haben. Sie reichen von 4-Bit-Rechnern bis hin zu 32-Bit-Rechnern. Die 4-Bitters sind natürlich die einfachsten, die man bauen und machen kann. Der allererste Mikroprozessor war Intels 4-Bit- 4004 .

Ich würde damit beginnen, bei Google nach " 4-Bit-Heimcomputern " zu suchen (ohne die Anführungszeichen).

Hier ist eine Platine von einem Transistor-4-Bit-Computer:

Bildbeschreibung hier eingeben

In Bezug auf den Speicher "betrügen" einige dieser Projekte, die ansonsten diskrete Transistoren verwenden, und verwenden SRAM-Chips. Sie sind unglaublich billig für moderate Mengen an Speicher, 32 KB 3,28 US-Dollar und erfordern keine Uhren und keine Aktualisierung.

Selbst wenn der Rest Ihres Computers Relais verwendet, ist die Verwendung dieser für den Speicher unerschwinglich.

Wenn Sie mit 1K-Bits auskommen können, können Sie eine mit Transistor-Flip-Flops bauen. 2048 2N3904 kosten 3 ¢ pro Stück (insgesamt 60 US-Dollar zuzüglich der anderen Komponenten, die sogar noch billiger sind - Widerstände für einen halben Cent usw.). Sie können Leiterplatten für 10 US-Dollar pro Stück kaufen und dann ein Kind damit beauftragen.

Relais - Computer in den späten 1930er Jahren den ganzen Weg zurückgehen , und einer der ersten war der Harvard Mark I . Hierher kommt der Name Harvard-Architektur (getrennter Programmraum und Daten im Vergleich zur von Neumann-Architektur) , die beide kombiniert).

Der berühmteste selbstgebraute Relaiscomputer ist einer, der von Harry Porter gebaut wurde.

Bildbeschreibung hier eingeben

Schauen Sie sich die Videos des laufenden Computers an. Erinnert mich an eine alte elektromechanische Telefonzentrale.

Hier ist ein Teil eines anderen selbstgebrauten Relais-Computers namens Zusie :

Bildbeschreibung hier eingeben

Viele blinkende Lichter.

Und zum Schluss hier ein Link zu einem Video eines 4-Bit-Addierers, der aus 24 Relais besteht. Addierer wie dieser sind das Herzstück der ALU (Arithmetic Logic Unit) in einem Computer.

Tcrosley
quelle
Sorry, das "Ich habe das über viele Jahre recherchiert" wurde im zweiten Absatz vergraben. Ich habe den Titel des Beitrags bearbeitet, um zu verdeutlichen, dass es der Speicher ist, der mir wichtig ist. Wenn Sie mit 1K-Bits auskommen, können Sie eine mit Transistor-Flip-Flops erstellen. 2048 2N3904 kosten 3 ¢ pro Stück (insgesamt 60 US-Dollar zuzüglich der anderen Komponenten, die sogar noch billiger sind - Widerstände für einen halben Cent usw.). Sie können Leiterplatten für 10 US-Dollar pro Stück kaufen und dann ein Kind damit beauftragen.
Tony Robinson
ctd ... das ist näher als ich es mir vorgestellt hatte, aber du brauchst die Adressdecodierung und ich würde mehr Transistoren pro Speicherzelle einbauen. Möglicherweise ist eine 'DRAM'-Speicherzelle mit einem Transistor und einem Kondensator auch innerhalb des Budgets möglich.
Tony Robinson
@TonyRobinson Ich habe versucht, die Speicherverwendung zu adressieren (wie Sie eingeräumt haben), aber ich habe auch versucht, Informationen zu Ihrem Wunsch, einen Computer aus diskreten Transistoren und / oder Relais zu machen, bereitzustellen und zu veranschaulichen, dass einige davon erfolgreich waren. Viel Glück bei Ihren Bemühungen.
Tcrosley
6

Wenn Sie ein einfaches Gedächtnis haben wollen , dann schauen Sie nicht weiter als bis zu einem Flip-Flop . Mit zwei Transistoren und vier Widerständen können Sie eine ganze Menge Speicher haben. Sie können auch ein Flip-Flop mit zwei über Kreuz gekoppelten NOR-Gattern erstellen oder einfach einen IC kaufen, der bereits eine Reihe von Flip-Flops enthält.

Tatsächlich ist der sehr schnelle CPU-Cache im Grunde genommen eine Reihe von Flip-Flops, die in die CPU integriert sind.

Phil Frost
quelle
2
DRAM verbraucht mehr Strom, da er ständig aktualisiert werden muss, während SRAM im Leerlauf nur einen geringen Ruhestrom verbraucht. Der Grund für die Verwendung von Kondensatoren liegt darin, dass nur ein Transistor pro Bit erforderlich ist und daher viel höhere Speicherdichten möglich sind.
Tom Carpenter
Sie haben Recht - ich dachte an einfache RTL-Flip-Flops. Ich werde bearbeiten, um zu klären.
Phil Frost
1
ICs sind raus - sie verbergen, was wirklich passiert. Ich möchte, dass jedes Signal so weit wie möglich belichtet wird. Ich kümmere mich wirklich nicht um Energie - ich kann nicht sehen, dass Energie ein Problem ist, es wird mit einem Himbeer-Pi verdrahtet, also ist Energie verfügbar. Ein Transistor - DRAM ist vielleicht ein viel besserer Weg, als ich es in meinem Array von Kondensatoren vorgeschlagen habe - ich muss herausfinden, welche Transistoren dafür benötigt werden, um den Ladungsverlust niedrig genug zu halten (ich benötige Auffrischzeiten in der Reihenfolge der Minuten). Ansonsten sehen Flip-Flops wie die nächstbeste Idee aus.
Tony Robinson
@TonyRobinson "Es wird an einen Raspberry Pi angeschlossen, damit Strom zur Verfügung steht." - ...könnte sein. Hängt von der maximalen Leistung ab, die über einen Raspberry Pi verfügbar ist, und davon, welche Logikfamilie Sie verwenden möchten. (Ich würde allerdings erwarten, dass ein durchschnittliches
Tischnetzteil wesentlich
2

Ich stimme zu, dass es ziemlich cool wäre, ein komplettes Computersystem mit einer LED für jeden Zustand zu haben, der für das menschliche Auge sichtbar ist.

Der TIM 8- Relaiscomputer verwendet in seinem 12-Byte-RAM-Hauptspeicher (Datenspeicher) 8 Kondensatoren, 2 Dioden und ein SPDT-Relais pro Byte. (Die TIM 8 hat 16 Byte Variablenspeicher, wenn Sie Register einbinden).

Der Relaisrechner TIM 8 verwendet Lochstreifen als Programmspeicher.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Ist es möglich, diese Dioden durch LEDs zu ersetzen, sodass ein kurzer Impuls die Daten anzeigt, die in einem Byte RAM ein- oder ausgehen? Wenn das System den DRAM schnell genug auffrischt und dabei jedes RAM-Byte durchsucht, scheint an diesen LEDs jedes Statusbit sichtbar zu sein (obwohl technisch gesehen zu jedem Zeitpunkt nur ein Byte LEDs aktiviert ist). (Dies müssten Hochstrom-LEDs sein, wenn Daten von diesen Kondensatoren in relaisbasierte Register geladen und dort gespeichert werden sollen.)

Ist es möglich, einen Widerstand und eine LED an jedem Bitspeicherkondensator anzubringen, die wirklich gleichzeitig jeden Zustand anzeigen? (Dies müssten ziemlich stromsparende LEDs und physikalisch große Kondensatoren sein, wenn der Kondensator die Daten lange genug für eine angemessene Aktualisierungsrate halten soll. Einige LEDs können problemlos mit nur 1 mA Strom gesehen werden. Mit einer Aktualisierung von 1 Sekunde Zyklus- und (Schätz-) Kondensatoren werden anfänglich auf 12 V geladen, obwohl (Schätz-) eine Ladung von 7 V am Kondensator ausreicht, um die nachgeschaltete Hardware aufzuladen, dann benötigt der Kondensator einen Nennstrom von C ~ = i * t / V = ​​1 mA * 1 s / (12 V - 7 V) = 200 uF.).

Dies ist natürlich sehr viel größer und erfordert mehr Arbeitsaufwand als so ziemlich jeder auf integrierten Schaltkreisen basierende Hauptspeicher.

Davidcary
quelle
1

Warum verwenden Sie nicht einfach eine einfache 8 - Bit - CPU (z. B. 6502) und eine sehr kleine Menge an Speicher (CPU - Register, IC - RAM und eine sehr kleine Menge an externem Speicher (z. B. FD, HD oder Flash - Disk usw.) .) & erkläre dann mit Folien:

  1. Die Hardwarekomponenten, Unterkomponenten und ihre Funktionen
  2. Das Betriebssystem, die Systemprogramme und Benutzerprogramme
  3. Laden und Ausführen eines einfachen Programms, um 2 Zahlen zu addieren, speichern Sie das Ergebnis in jedem Speichertyp und zeigen Sie es auf einem Videodisplay an.

Wenn Sie das Gerät so einfach und kostengünstig wie möglich halten möchten, verwenden Sie ein Mikrocontroller-Entwicklungssystem als Basissystem, oder sogar ein Arduino ist einfach und kostengünstig genug. Keiner der Studenten wird einen einfachen Relais- oder Vakuumröhrencomputer bauen - noch sollte jemand wirklich wollen, dass sie dies tun. Sie sollten mit einem guten Buch und einem Arduino für das grundlegende Verständnis der Programmierung beginnen. Wenn sie später mit dem Lesen / Steuern externer Geräte beginnen möchten, können sie sich mit der spezifischen Programmierung oder dem Engineering befassen.

Hier ist ein gutes Projekt, das Sie für Ideen in Betracht ziehen sollten:
http://www.instructables.com/id/How-to-Build-an-8-Bit-Computer/?ALLSTEPS

Heimwerker
quelle
Obwohl wir es heutzutage " W65C02S " nennen
Ignacio Vazquez-Abrams
Danke, ich komme aus 6502 Tagen (BBC Micro, habe aber auch am ZX80 gearbeitet). Ich bin damit einverstanden, dass es auf diesem Niveau eine Menge zu lernen gibt, in der Tat habe ich gerade das BBC Microcomputer Advanced User Guide erneut gelesen . Ich möchte wirklich eine Stufe darunter sein. Sie sehen, wie ein 5-Bit-Befehl eingeht. Er springt durch einen kleinen Satz von Mikrocodes, der einige Bitregister und Busleitungen festlegt, und ruft ein Bit serielle ALU auf, damit Sie die gesamte Logik sehen können passiert Stück für Stück. Deshalb wird es das langsamste sein, das es je gab.
Tony Robinson
Ja - das wird langsamer. Haben Sie die Details unter folgender URL durchgesehen: instructables.com/id/How-to-Build-an-8-Bit-Computer/?ALLSTEPS Es ist eigentlich recht gut und ermöglicht einige einzigartige Anpassungen für Ihr System.
DIYser
0

Ich stimme zu, dass es ziemlich cool wäre, ein komplettes Computersystem mit einer LED für jeden Zustand zu haben, die für das menschliche Auge sichtbar ist, anstatt in einer mysteriösen Blackbox versteckt zu sein.

Sie könnten in Betracht ziehen, einen mehr oder weniger standardmäßigen bitparallelen Speicherbus zu verwenden - vielleicht so etwas wie den STEbus (IEEE-1000-Bus) .

Sie können eine Reihe von ICs wie 74HC273 oder 74LS373 oder 74HC564 verwenden, um die Daten zu speichern, damit der aktuelle Status der Daten im Chip immer auf LEDs sichtbar ist, die an die parallelen Ausgangspins angeschlossen sind. Verwenden Sie dann oktale Puffer mit drei Zuständen (wie 74HC241 oder 74LS245) oder Mux-Module, die ebenfalls an diese parallelen Ausgangspins angeschlossen sind, um die Daten in den Bus zu leiten. Am Ende stehen Ihnen ein paar One-of-N-Decoder-Chips und 2 Chips pro 8 Speicherbits zur Verfügung. "Auf diese Weise können Sie ... sehen, welche Daten tatsächlich in jedem Byte RAM gespeichert sind." - Pong Guy's SAP-1 Möglichst einfacher Computer mit RAM für diskrete Komponenten . Dieselbe Anordnung wird für die Register in Jaromirs Fourbit-CPU oder für die Register in Kyles 8-Bit-Spaghetti-CPU verwendet .

Die aktuellen (2016) Preise von Mouser.com liegen bei ca. 0,11 USD / Bit in Menge 10 für eine solche Anordnung (ein oktaler Speicher-Latch plus ein oktaler 3-Status-Puffer pro 8 Bits) und bei 0,05 USD / Bit für neue LEDs in Menge 500. Für 2 ^ 9 Bytes = 512 Bytes = 2 ^ 12 Bits = 4096 Bits, das ist (sehr grob)

  • 205 USD in LEDs
  • 450 US-Dollar an Speicher- und Pufferchips
  • $ ??? die 1-aus-N-Decodiererchips, um den geeigneten Speicher- oder Pufferchip auszuwählen; die Kosten für Platinen, Draht, Arbeitskräfte usw.

Möglicherweise könnten Sie 64 Bytes Datenspeicher (genauso viel Datenspeicher wie ein Atmel ATTINY13 oder ein Microchip PIC16F570) für ungefähr 90 USD aufbauen (was in Ihr Budget von 150 USD ~ = 100 GBP passen könnte).

Sie werden sehen, warum es verlockend ist, all diese Speicher- und Puffer-Chips und die meisten Decoder-Chips durch einen handelsüblichen 32Kx8-Parallel-SRAM-Chip zu ersetzen, der Ihnen viel mehr Speicherplatz für weniger als 10 US-Dollar bietet. (Alliance AS6C1008-55PCN, Cypress CY7C199CN-15PXC usw.)

Dies mag der Grund sein, warum die meisten hausgemachten CPUs, von der winzigen 4-Bit-Nibbler-CPU bis zum beeindruckenden RC-3-Relay-Computer, http://www.computerculture.org/2012/09/rc-3-relay-computer/ http: / /www.computerculture.org/projects/rc3/ , sind an einen Black-Box-SRAM-Chip für den Hauptspeicher angeschlossen.

Mit so etwas wie einem Standard-Speicherbus könnten möglicherweise mehrere verschiedene Speicherplatinen gleichzeitig an die CPU angeschlossen sein:

  • Ein paar Bytes vollständig sichtbarer variabler Speicher und ein paar Bytes vollständig sichtbarer fest verdrahteter Programm-ROM, die für einige interessante Demo-Programme ausreichen sollten.
  • Ein SRAM-Chip, der gelegentlich eingesteckt werden kann, um Programme oder Daten oder beides zu speichern, wenn noch nicht genügend vollständig sichtbarer Speicher zum Speichern vorhanden ist.
Davidcary
quelle
0

Hier ist ein weiterer Vorschlag für ein ähnliches Projekt, das sich lohnen könnte - den Bau einer Turing-Maschine. Es geht um die einfachste mögliche Rechenmaschine

Dirk Bruere
quelle