memoria per il computer più semplice possibile (Pi0K)


13

Vorrei costruire il computer più semplice possibile. Non mi interessa la velocità o l'archiviazione, infatti avere una velocità lenta e uno spazio di archiviazione ridotto è un enorme vantaggio in quanto voglio costruirlo con transistor (idealmente relè!) E voglio un LED per ogni stato. Sarà programmato tramite un Raspberry Pi che ospiterà una telecamera in modo da poter vedere l'esecuzione di ogni ciclo di clock (sì, funzionerà a Hz, non a GHz). Sarà un progetto aperto con l'intenzione che le scuole possano acquistare le parti, comprenderle e migliorarle. Quindi il budget totale deve essere ben al di sotto di £ 400, preferibilmente circa £ 100.

Ho studiato questo per molti anni e ho buone idee per la CPU (registri minimi, microcodice negli interruttori DIP e operazioni logiche / aritmetiche di bit seriale per ridurre il conteggio dei transistor). Quello che non riesco a capire è come ottenere la memoria, vorrei 1024 a 8096 bit.

Il migliore che posso inventare è due decodificatori uno-di-n a 6 bit che danno accesso a una griglia di condensatori 64 x 64. O hanno una carica in loro o no, e la lettura rafforzerebbe quello stato. Non ci sarebbero LED sui condensatori poiché l'aggiornamento di questa "DRAM" sarebbe nell'ordine o nei minuti (il che è un peccato poiché questa sarebbe l'unica parte a non mostrare lo stato).

Altre idee includono una qualche forma di unità nastro (meccanismo a cassetta compatto: grande spazio di archiviazione, troppo complesso, nessuna ricerca), memoria del tamburo (nastro attorno a un contenitore di fagioli: troppo duro per far funzionare la meccanica), memoria meccanica (ruota della bici e cuscinetti a sfera: troppi errori di bit), memoria core (grandi nuclei di ferrite dura: ancora molto difficile da ottenere proprio nella scala richiesta), nastro / scheda (possiamo ancora comprare i lettori di nastri), disco rotante con fori nell'ordine binario e alcuni magnetici memoria per l'archiviazione (troppo complessa per essere costruita).

L'obiettivo finale è quello di pubblicare un progetto che può essere costruito in un anno scolastico in cui tutte le parti di una CPU e di una memoria sono "visibili" e in questo modo è possibile vedere l'istruzione recuperare, decodificare in microcodice e indirizzare la decodifica / accesso al registro / logica tutto nel corso dei minuti.

Se qualcuno ha idee per una memoria davvero economica (<< £ 100) in cui è chiaro esattamente come funziona, per favore fatemelo sapere.

Tony

Lo stato attuale di PS è disponibile all'indirizzo http://www.blinkingcomputer.org/


Basta andare su Google per le persone che hanno già fatto questo e cose simili, i disegni sono lì, puoi fare una DBA e scoprire che probabilmente hai bisogno di un po 'più di tempo e denaro.
PlasmaHH,

Vorrei suggerire che passare a livello di transistor potrebbe essere un po 'troppo per un progetto scolastico. Penserei che l'integrazione CMOS su piccola e media scala sarebbe molto più fattibile e probabilmente più comprensibile (gate, registri, buffer, decodificatori, ecc.). Potresti includere qualcosa che dimostri come sono fatti i cancelli dai transistor, le infradito sono fatti dai cancelli, ecc.).
Tut

1
Solo un'idea: dovresti rendere la memoria (programma) facilmente modificabile a mano, in modo che le persone possano "programmare" manualmente con le mani :-).
Oyvind

Decidi innanzitutto cosa vuoi che il computer sia in grado di fare. Ciò determinerà la quantità di memoria necessaria e quale dovrebbe essere l'insieme di istruzioni.
Tony Ennis,

Ringrazia tutti. PlasmaHH: Sì, è una grande sfida farlo con vincoli di tempo e denaro, ecco perché nessun altro lo ha ancora fatto. Tut: Voglio davvero essere in grado di vedere ogni segnale. Le persone vedranno quindi come sono costruite le porte logiche dai transistor. oywind: Sì, sarà programmabile tramite un Raspberry Pi con un'interfaccia web che puoi scrivere il tuo codice e vederlo in esecuzione con una web cam. Tony Ennis: Voglio costruire il computer più semplice che mostri tutti i segnali - questo dimostrerà tutti gli aspetti e richiederà architetture non standard, come una ALU bit-seriale.
Tony Robinson,

Risposte:


9

Ci sono molte persone che hanno costruito computer con transistor discreti, circuiti integrati, relè e persino tubi a vuoto. Esse vanno da macchine a 4 bit fino a 32 bit. I 4-bitter ovviamente saranno i più semplici che puoi costruire e fare qualsiasi cosa. Il primo microprocessore era il Intel 4004 a 4 bit .

Vorrei iniziare a cercare su Google " computer a 4 bit di birra fatta in casa " (senza virgolette).

Ecco una scheda da un computer a 4 bit transistorizzato:

inserisci qui la descrizione dell'immagine

Per quanto riguarda la memoria, alcuni di questi progetti che altrimenti utilizzano transistor discreti "imbrogliano" e usano chip SRAM. Sono incredibilmente economici per una moderata quantità di memoria, 32 KB è $ 3,28 e non richiede né orologi né aggiornamenti.

Anche se il resto del computer utilizza i relè, usarli per la memoria sarà proibitivamente costoso.

Se riesci a cavartela con bit 1K, potresti crearne uno con flip-flop transistorizzati; 2048 2N3904 costeranno 3 ¢ ciascuno ($ 60 complessivamente, oltre agli altri componenti che saranno ancora più economici - resistori per 1/2 centesimo ecc.). Puoi ottenere PCB fatti per $ 10 ciascuno, quindi assumere un bambino per riempirli.

Relè computer risalgono tutta la strada fino alla fine del 1930, e una delle prime è stata la Harvard Mark I . È da lì che deriva il nome dell'architettura Harvard (spazio e dati del programma separati, rispetto all'architettura von Neumann che combina i due).

Il più famoso computer di rilancio della birra fatta in casa è quello costruito da Harry Porter.

inserisci qui la descrizione dell'immagine

Guarda i video del computer in esecuzione. Mi ricorda un vecchio centralino elettromeccanico.

Ecco una parte di un altro computer relay di produzione artigianale chiamato Zusie :

inserisci qui la descrizione dell'immagine

Molte luci lampeggianti.

E infine, ecco un link a un video di un sommatore a 4 bit, composto da 24 relè. Adder come questo sono il cuore dell'ALU (unità logica aritmetica) in un computer.


Mi dispiace, il "Ho studiato questo per molti anni" è stato sepolto nel secondo paragrafo. Ho modificato il titolo del post per affermare chiaramente che è la memoria che mi interessa. Se riesci a cavartela con bit da 1K, potresti costruirne uno con le infradito transistorizzate; 2048 2N3904 costeranno 3 ¢ ciascuno ($ 60 complessivamente, oltre agli altri componenti che saranno ancora più economici - resistori per 1/2 centesimo ecc.). Puoi ottenere PCB fatti per $ 10 ciascuno, quindi assumere un bambino per riempirli.
Tony Robinson,

ctd ... questo è più vicino di quanto mi aspettassi, ma hai bisogno della decodifica dell'indirizzo e inserirò più transistor per cella di memoria. Forse una cella di memoria "DRAM" a un transistor e un condensatore è anche possibile nel budget.
Tony Robinson,

@TonyRobinson Ho provato a risolvere il problema della memoria (come hai riconosciuto) ma stavo anche cercando di fornire informazioni sul tuo desiderio di creare un computer con transistor e / o relè discreti e per illustrare che molti hanno avuto successo in questo. Buona fortuna per il tuo impegno.
Tcrosley,

6

Se vuoi una memoria semplice , non guardare oltre un flip-flop . Con due transistor e quattro resistori, puoi avere un po 'di memoria. Puoi anche fare un flip-flop con due gate NOR accoppiati o semplicemente acquistare un IC con già un mucchio di infradito.

In effetti, la cache della CPU molto veloce è fondamentalmente un mucchio di infradito, integrati nella CPU.


2
La DRAM consuma più energia in quanto deve essere costantemente aggiornata mentre SRAM utilizza solo una piccola corrente di riposo quando è inattiva. La ragione per usare i condensatori è perché richiede solo un transistor per bit, quindi consente densità di memoria molto più elevate.
Tom Carpenter,

Hai ragione - avevo in mente semplici infradito RTL. Modificherò per chiarire.
Phil Frost,

1
I circuiti integrati sono fuori - nascondono ciò che sta realmente accadendo. Voglio che ogni segnale sia esposto il più possibile. Non mi interessa davvero il potere - Non riesco a vedere il potere come un problema, verrà collegato a un Raspberry Pi quindi l'alimentazione è disponibile. Una DRAM a transistor potrebbe essere un modo molto migliore di andare rispetto alla mia gamma di idee di condensatori come suggerito dal post precedente - Dovrò capire quali transistor sono necessari per mantenere la perdita di carica abbastanza bassa (ho bisogno di tempi di aggiornamento nel ordine dei minuti). Altrimenti, sì, le infradito sembrano la prossima migliore idea.
Tony Robinson,

@TonyRobinson "Verrà collegato a un Raspberry Pi, quindi l'alimentazione è disponibile." - ...può essere. Dipende dalla potenza massima disponibile tramite un Raspberry Pi e dalla famiglia di logiche che intendi utilizzare. (Mi aspetto che un alimentatore da banco medio sia in grado di fornire un po 'più di potenza, però)
user253751

2

Concordo sul fatto che sarebbe bello avere un sistema informatico completo con un LED per ogni bit di stato, visibile all'occhio umano.

Il computer a relè TIM 8 utilizza 8 condensatori, 2 diodi e un relè SPDT per byte nei suoi 12 byte di memoria principale RAM (memoria dati). (TIM 8 ha 16 byte di memoria variabile se si includono registri).

Il computer a relè TIM 8 utilizza il nastro perforatore per la memoria del programma.

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

È possibile sostituire quei diodi con i LED, quindi c'è un breve impulso che mostra i dati che entrano o escono da un byte di RAM? Forse se il sistema DRAM si aggiorna abbastanza rapidamente, scansionando comunque ogni byte di RAM, allora ogni bit di stato sembrerebbe essere visibile a quei LED (anche se tecnicamente solo un byte di LED verrebbe attivato in ogni istante). (Dovrebbero essere LED piuttosto ad alta corrente se vogliamo CARICARE e MEMORIZZARE i dati da quei condensatori a registri basati su relè).

È possibile posizionare un resistore e un LED su ciascun condensatore di memorizzazione dei bit, mostrando contemporaneamente simultaneamente ogni bit di stato? (Dovrebbero essere LED a bassa corrente e condensatori fisicamente grandi se vogliamo che il condensatore mantenga i dati abbastanza a lungo per una frequenza di aggiornamento ragionevole. Alcuni LED possono essere facilmente visti con solo 1 mA di corrente. Con un aggiornamento di 1 secondo ciclo e condensatori (ipotesi) inizialmente caricati a 12 V anche se (ipotesi) una carica di 7 V sul condensatore è sufficiente per caricare l'hardware a valle, quindi il condensatore necessita di una classificazione di C ~ = i * t / V = ​​1 mA * 1 s / (12 V - 7 V) = 200 uF.).

Questo, ovviamente, sarà molto più grande e richiederà più lavoro umano da assemblare rispetto a qualsiasi memoria principale basata su circuiti integrati.


1

Perché non usi semplicemente una semplice CPU a 8 bit (ad es. 6502) e una quantità molto piccola di memoria (registri della CPU, RAM IC e una quantità molto piccola di memoria esterna (ad esempio: FD, HD o disco flash, ecc.) .) e poi spiega con le diapositive quanto segue:

  1. I componenti hardware, i sottocomponenti e le loro funzioni
  2. Sistema operativo, programmi di sistema e programmi utente
  3. Caricamento ed esecuzione di un semplice programma per aggiungere 2 numeri insieme, memorizzare il risultato in ciascun tipo di memoria e visualizzarlo su un display video.

Se si desidera mantenere il dispositivo il più semplice ed economico possibile, utilizzare un sistema di sviluppo di micro controller come sistema di base o anche un Arduino è abbastanza semplice ed economico. Nessuno degli studenti costruirà un semplice relè o un computer a valvole a vuoto, né qualcuno dovrebbe davvero volerlo fare. Dovrebbero iniziare con un buon libro e un Arduino per la comprensione di base della programmazione. Successivamente, se vogliono approfondire la lettura / il controllo di dispositivi esterni, possono approfondire la programmazione specifica o l'ingegneria.

Ecco un buon progetto da prendere in considerazione per le idee:
http://www.instructables.com/id/How-to-Build-an-8-Bit-Computer/?ALLSTEPS


Anche se al giorno d'oggi lo chiamiamo " W65C02S "
Ignacio Vazquez-Abrams

Grazie, vengo da 6502 giorni (micro BBC ma ho anche lavorato su ZX80). Sono d'accordo che c'è molto da imparare a quel livello, in effetti stavo solo rileggendo la Guida utente avanzata del microcomputer della BBC . Voglio davvero essere a un livello inferiore a quello, vedi entrare un'istruzione a 5 bit, salta attraverso un piccolo set di microcodice che imposta alcuni bit registri e linee di bus e chiama un po 'ALU seriale in modo da poter vedere tutta la logica succedendo poco a poco. Ecco perché sarà il più lento di sempre.
Tony Robinson,

Sì, sarà più lento. Hai esaminato i dettagli in questo url: instructables.com/id/How-to-Build-an-8-Bit-Computer/?ALLSTEPS In realtà è abbastanza buono e consente una personalizzazione unica per il tuo sistema.
DIYser

0

Concordo sul fatto che sarebbe piuttosto bello avere un sistema informatico completo con un LED per ogni bit di stato, visibile all'occhio umano, piuttosto che nascosto in una misteriosa scatola nera.

Si potrebbe prendere in considerazione l'utilizzo di un bus di memoria bit-parallel standard più o meno standard, forse qualcosa come STEbus (bus IEEE-1000) .

Si potrebbe considerare l'utilizzo di un gruppo di circuiti integrati come 74HC273 o 74LS373 o 74HC564 per memorizzare i dati in modo che lo stato corrente dei dati all'interno del chip sia sempre visibile sui LED collegati ai pin di uscita paralleli. Quindi utilizzare buffer ottali a 3 stati (come 74HC241 o 74LS245) o mux, anch'essi collegati a quei pin di uscita paralleli, per incanalare i dati nel bus. Si finisce con alcuni chip decodificatori uno-di-N e 2 chip per 8 bit di memoria. "Questo ti consente ... di visualizzare quali dati sono effettivamente memorizzati in ogni byte di RAM." - Computer SAP-1 semplice e possibile di Pong Guy con RAM a componenti discreti . La stessa disposizione viene utilizzata per i registri nella CPU Fourbit di Jaromir o per i registri nella CPU spaghetti a 8 bit di Kyle .

I prezzi attuali (2016) di Mouser.com sono circa $ 0,11 / bit nella quantità 10 per una tale disposizione (un fermo di memorizzazione ottale più un buffer a 3 stati ottali per 8 bit) e $ 0,05 / bit per i nuovi LED nella quantità 500. Per 2 ^ 9 byte = 512 byte = 2 ^ 12 bit = 4096 bit, cioè (molto approssimativamente)

  • $ 205 in LED
  • $ 450 in chip di archiviazione e buffer
  • $ ??? i chip decoder 1-of-N per selezionare il chip di memoria o buffer appropriato; il costo di schede, filo, manodopera, ecc.

Forse potresti costruire (molto approssimativamente) 64 byte di memoria dati (la stessa quantità di memoria dati di un Atmel ATTINY13 o un Microchip PIC16F570) per circa $ 90 (che può rientrare nel tuo budget $ 150 ~ = £ 100).

Puoi capire perché è allettante sostituire tutti quei chip di archiviazione e buffer e la maggior parte dei chip di decodifica con un chip SRAM parallelo 32Kx8 standard che ti offre molto più spazio di archiviazione per meno di $ 10. (Alleanza AS6C1008-55PCN, Cypress CY7C199CN-15PXC, ecc.)

Questo potrebbe essere il motivo per cui la maggior parte delle CPU fatte in casa, dalla minuscola CPU Nibbler a 4 bit all'imponente computer a relè RC-3 http://www.computerculture.org/2012/09/rc-3-relay-computer/ http: / /www.computerculture.org/projects/rc3/ , sono collegati a un chip SRAM black-box per la memoria principale.

Con qualcosa come un bus di memoria standard, forse potresti avere diverse schede di memoria collegate contemporaneamente alla CPU:

  • Alcuni byte di memoria variabile completamente visibile e alcuni byte di ROM di programma cablata completamente visibile, che dovrebbe essere sufficiente per alcuni programmi demo interessanti.
  • Un chip SRAM che può essere occasionalmente collegato per contenere programmi o dati o entrambi quando non si è ancora costruito abbastanza memoria completamente visibile per archiviarli.

0

Ecco un altro suggerimento per un progetto simile che potrebbe essere utile: costruire una Turing Machine . Si tratta della più semplice macchina informatica possibile

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.