Progetto RAM

Myttex Forum ha chiuso definitivamente. Non è più possibile inviare messaggi, ma il contenuto è ancora consultabile in questo archivio.

Nicolò

2011-06-01 11:32

Ragazzi, causa incombenza scolastica, mi è stato chiesto di costruire un modello analogico di RAM.

Concettualmente essa è formata da un transistor accoppiato ad un condensatore.

Avrei ipotizzato un circuito analogico formato da 3 temporizzatori astabili, uno che ogni tot manda l'informazione (durata più o meno lunga del segnale elettrico) uno che ogni tot effettua un refresh della memoria (come nei pc) e uno che ogni tot legge l'informazione.

Ci sarebbe poi il condensatore per conservare l'informazione e un transistor accoppiato ad esso. Inoltre sarebbe presente un LED per rendere visibile l'informazione.

Pensavo di utilizzare degli NE555 come temporizzatori, ovviamente ci sarebbero poi da calcolare i valori di resistenze e condensatori.

Bisogna poi fare in modo che il circuito che da l'informazione e quello che cortocircuita il condensatore per il refresh vadano in sincrono.

Il ciclo da me ipotizzato sarebbe:

Informazione ===> Pausa ===> Refresh ===> Lettura ===> Pausa ===> Informazione ===> Pausa ===> Refresh ===> Lettura..e così via.

Potrebbe funzonare?

override

2011-06-01 13:02

Non capisco però il concetto del refresh di cui parli: nella RAM il bit di informazione on/off (o alto/basso, 0/1, ecc) viene mantenuto tale a tempo indeterminato, ovvero: 1. se il bit è settato a 1, resta 1 finché a) non viene settato a 0 oppure b) non viene tolta la corrente. 2. se il bit è settato a 0, resta 0 finché non viene settato a 1 Ora, questo in linea teorica, la RAM mantiene le informazioni anche per alcuni minuti dopo che viene tolta corrente, ma questo è un altro discorso. Non sarebbe più giusto nel tuo caso pensare ad un circuito bistabile, utilizzando dei 555 come timer in configurazione astabile per mandare segnali set/reset su un circuito tipo mutivibratore bistabile (http://www.falstad.com/circuit/e-multivib-bi.html) che costituisce la memoria vera e propria? Potresti connettere un led sull'uscita output H del simulatore... Magari è un'idea sbagliata perché non simula il concetto di refresh della RAM, ma il risultato è giusto... Non sono un elettronico, sono un informatico con l'hobby dell'elettronica, quindi perdonami eventuali cappellate :-p

Nicolò

2011-06-01 13:06

L'informazione non potrà mai essere mantenuta a tempo indeterminato. Infatti come condensatori vengono usati i semiconduttori costituenti la RAM, i quali in quanto non ideali, sono soggetti a perdite :-) Siccome mi era stato chiesto di farla il più verosimile possibile, avrei bisogno anche del refresh.

override

2011-06-01 13:15

Mhm non ho capito. Refresh = reset? Se cortocircuiti il condensatore l'output va a 0 "Bisogna poi fare in modo che il circuito che da l'informazione e quello che cortocircuita il condensatore per il refresh vadano in sincrono." Come intendi farlo? Mandando l'output di un NE555 sul reset dell'altro NE555?

Nicolò

2011-06-01 13:17

Qui dobbiamo parlare in termini analogici, non digitali, come scritto all'inizio.. Forse è meglio disegni il circuito per rendere meglio l'idea :-) PS: per refresh intendo cortocircuito condensatore + rinvio informazione

arkypita

2011-06-01 13:19

override ha scritto:

Mhm non ho capito. Refresh = reset? Se cortocircuiti il condensatore l'output va a 0

"Bisogna poi fare in modo che il circuito che da l'informazione e quello che cortocircuita il condensatore per il refresh vadano in sincrono." Come intendi farlo? Mandando l'output di un NE555 sul reset dell'altro NE555?

Refresh vuol dire questo: http://www.howstuffworks.com/ram.htm

ale93

2011-06-01 13:23

ma guarda che si è già presentato asd

Nicolò

2011-06-01 13:25

Pardon, non avevo visto..

override

2011-06-01 13:47

Non sono ancora stato molto attivo nel forum, in chimica ho ancora troppo da imparare prima di poter proferire verbo :-D Figata, è un bel problema di elettronica analogica... appena torno a casa ci penso e metto Eagle all'opera Se intanto vuoi postare uno schema della tua idea ben venga :p

Nicolò

2011-06-01 15:48

Allora ci darò dentro anche io con spice...asd Certo il refresh effettuato da questa sarebbe senza misura delle perdite come in una RAM vera, per fare ciò bisognerebbe utilizzare un controller programmabile, si potrebbe fare, ma poi ci sarebbe da scrivere il programma e progettare tutta la circuteria annessa al controller..e poi passaremmo all'elettronica digitale

override

2011-06-01 17:04

Ho pensato questo: l'astabile del refresh, realizzato con un 555, in output va sulla base di un NPN. Al collettore di questo NPN è collegata l'uscita logica del 555 che "manda l'informazione" ovvero quello che stocca l'informazione vera e propria. Se l'output del "555 refresh" è alto, la base viene attivata e l'emettitore alimenta la base di un PNP che è collegato con il collettore al condensatore del "555 informazione" e con l'emettitore a terra. Così, quando il "555 informazione" ha output alto, viene scaricato dal "555 refresh" (che avrà frequenza cmq maggiore).

A questo punto, un condensatore e un NPN (sempre collegati all'emettitore dell'NPN del "555 refresh";-) si coccuperanno di ricaricare il condensatore del "555 informazione". Il problema è che, scaricando il condensatore, l'output del 555 informazione diventa 0 fintanto che il condensatore non viene ricaricato.

Se invece si potesse pensare di sincronizzare i 555 in modo che il refresh mandi sempre la quantità di corrente a giusti intervalli per caricare il condensatore del "555 informazione" qaunto basta per tenere aperto il transistor se è già aperto e lasciarlo chiuso se è chiuso?

Nicolò

2011-06-01 17:06

E' simile a quello che avevo pensato, un circuito potrebbe essere questo Uploaded with ImageShack.us U2 manda l'informazione U1 cortocircuita il condensatore (prima parte refresh) U4 rimanda informazione (seconda parte refresh) U3 legge l'informazione

override

2011-06-01 17:06

E' estremamente complesso dal punto di vista pratico. Dovresti avere in ogni caso una corrente di alimentazione del circuito veramente costante. E componenti con tolleranze zero... Si, teoricamente secondo me è corretto... Prevedo immense difficoltà dal punto di vista pratico, soprattutto se vuoi operare con frequenze molto alte. Il 555 già di suo non è il massimo della precisione. Però in analogico dubito si possa fare di meglio. Ma facendo come ti suggerivo si potrebbe evitare di usare U1 e U4 e far fare il refresh a un solo 555; in ogni caso lo stato è incoerente fino al completamento del refresh...

Nicolò

2011-06-01 17:16

La realizzazione non è assolutamente difficile, alla fine sono 3 temporizzatori (grossi come un 'unghia) con attaccato qualche componente, ne ho già fatti di circuiti simili. Il problema sarebbe il funzionamento vero e proprio, bisognerebbe avere componenti con tollerenza molto bassa (0,05% per le resistenze) visto che dopo un po' di cicli inizierebbe a sfasarsi, ma tanto non deve stare acceso tutta la giornata, basta una semplice dimostrazione ;-) Per quanto riguarda le frequenze, sarebbero molto basse, conta che vorrei avere una lettura dell' "informazione" ogni 3 secondi, e in quei 3 secondi bisogna organizzare la trasmissione dell'informazione iniziale, il refresh e la lettura. Anche se in effetti ho un negozio di minuteria elettronica dietro casa, chiederò a loro PS: teoricamente non sarebbe perfetto, ma concettualmente renderebbe l'idea PPS: prova a disegnare il circuito che hai detto, capisco meglio asd

override

2011-06-01 17:52

Prendilo MOLTO con le pinze, non sono sul mio pc e non ho strumenti per simulare etc... ci saranno svariati errori e fa un po' pietà visto così :-D Ovviamente è solo info + refresh, manca la lettura

Immagine.png
Immagine.png

arkypita

2011-06-01 19:56

Nicolò ha scritto:

Il problema sarebbe il funzionamento vero e proprio, bisognerebbe avere componenti con tollerenza molto bassa (0,05% per le resistenze) visto che dopo un po' di cicli inizierebbe a sfasarsi, ma tanto non deve stare acceso tutta la giornata, basta una semplice dimostrazione ;-)

Forse non ho capito il problema, ma se devi generare tre (o più) impulsi sequenziali quello che ti serve è un solo 555 ed un divisore decimale!

override

2011-06-01 19:58

Divisore decimale = digitale! Quindi non può usarlo

Nicolò

2011-06-01 20:08

Avevo pensato a quello, ma essendo digitale devo chiedere lumi....vabbè, dirò che, per semplificare il tutto, forse un aiuto "non analogico" potrebbe starci..asd Intanto provo a fare uno schizzo di circuito

arkypita

2011-06-01 20:11

override ha scritto:

Divisore decimale = digitale! Quindi non può usarlo

Dal mio punto di vista allora non dovrebbe nemmeno usare il 555, ma non mi sembra il caso di star qui a parlare del sesso degli angeli. Anche usare il transistor come interruttore on-off vuol dire digitale.

Cmq se sai costruirti un flip-flop con i transistor un divisore te lo puoi anche fare con componenti discreti. Alla fine bastano solo 3 stadi no?


Nicolò ha scritto:

Essendo digitale devo chiedere lumi,....vabbè, dirò che, per semplificare il tutto, forse un aiuto "non analogico" potrebbe starci..asd

Ah arky, non è che mi potresti fare uno schizzo di circuito con il divisore decimale? grazie :-D

(intanto vedo di cavarci anche io qualcosa)

E' molto semplice, capisci tutto dal datasheet. Il divisore decimale ha un ingresso di trigger su cui mandi un onda quadra, 10 pin da output-0 a output-9 e un pin "reset".

Ad ogni impulso sul trigger lui spegne l'uscita precedente e accende quella successiva, fino a output-9, poi ricomincia da capo. Se vuoi fermarti prima basta che colleghi la ennesima uscita al reset.

un esempio di uso lo trovi qui: http://www.doctronics.co.uk/4017.htm

override

2011-06-01 20:18

Eheh... E' vero! Anche il led che fa on-off è digitale da questo punto di vista :-D

arkypita

2011-06-01 20:18

Non so se è quello che ti serve come temporizzazione, così comunque da un'onda quadra di partenza ottieni 3 fronti sequenziali e sincronizzati.

Nicolò

2011-06-01 20:19

Ottimo, ti amo arky asd (adesso chiamo..mi han detto di chiamare a qualsiasi ora..)

arkypita

2011-06-01 20:23

Nicolò ha scritto:

Ottimo, ti amo arky asd

Grazie, molto onorato.

Con questo sistema se vuoi mantenere dei tempi morti "di stacco" tra una fase e l'altra ti basta usare p.e. le uscite da 0 a 5 e fare

0) Informazione

1) Pausa

2) Refresh

3) Pausa

4) Lettura

5) Pausa

etc etc...

se vuoi spaziature maggiori, per esempio una pausa più lunga, ti basta giocare con la posizione dei pin che usi.

P.S. non so se ti conviene chiamare a quest'ora se si tratta di un progetto scolastico!

Nicolò

2011-06-01 20:26

è scolastico si, ma basta sentirsi tra alunni..al prof si spiegherà..ha detto che gli va bene, basta simuli una RAM..era partito con il dire "completamente analogica" per poi arrivare a "basta simuli" asd

override

2011-06-01 20:27

Io in ogni caso sarei curioso di sapere come sarebbe la sua soluzione "completamente analogica". Davvero, solo per sapere se è effettivamente possibile... La puoi postare se ve la dimostra?

arkypita

2011-06-01 20:28

Nicolò ha scritto:

è scolastico si, ma basta sentirsi tra alunni..al prof si spiegherà..ha detto che gli va bene, basta simuli una RAM..era partito con il dire "completamente analogica" per poi arrivare a "basta simuli" asd

Ma è giusto quello che stai facendo, non stai barando!

La tua RAM è la cella condensatore-transistor. Quello che ci sta attorno è il circuito di temporizzazione. Anche nei computer le ram non sono altro che array di celle transistor-condensatore, poi la temporizzazione arriva dall'esterno.

Nicolò

2011-06-01 20:34

override ha scritto:

Io in ogni caso sarei curioso di sapere come sarebbe la sua soluzione "completamente analogica". Davvero, solo per sapere se è effettivamente possibile... La puoi postare se ve la dimostra?

Se lo farà si, anche se presumo alla fine usi più o meno un circuito simile a quello da noi postato prima


arkypita ha scritto:

Anche nei computer le ram non sono altro che array di celle transistor-condensatore, poi la temporizzazione arriva dall'esterno.

E' comunque interessante vedere il funzionamento sia teorico (grazie al prof) che pratico (smanettando pc con altri 3 amici) delle varie parti di un pc, riconducibili poi a circuiti semplici. E' bello soprattutto perchè il prof che mi (ci) ha chiesto questa cosa, non c'entra niente con il corso tradizionale di liceo scientifico, ma ha preso me e altre 4 persone sotto la sua ala (dopo aver visto la nostra passione) spiegandoci la parte puramente teorica :-)

Nicolò

2011-06-01 21:16

Ok, questo dovrebbe funzionare, che ne dici arky? Uploaded with ImageShack.us

arkypita

2011-06-01 22:13

Non so dirti se va bene o non va bene. Più che altro non capisco come fai a settare il dato... così mi sembra che setti sempre 1, o sbaglio? Poi out-0 e out-2 sono cortocircuitati. Ciò significa che quando out0 è alta in realtà viene cortocircuitata su out2 che è bassa (e viceversa), a meno che l'integrato non abbia le uscite in "alta impedenza" quando basse (spero che tu sappia cosa vuol dire).

Hai già provato a simularlo con qualche software?

Nicolò

2011-06-01 22:16

Pensavo variando il duty cicle dell'astabile che manda l'impulso sul clock del 4017. Cosicchè vari la durata dell'impulso in uscita dai pin del 4017, in modo da simulare una diversa informazione. Di conseguenza varieranno tutti i tempi di refresh e lettura. Infatti ci sarebbero da calcolare i valori di tutti i componenti. PS: non sono riuscito a simularlo dato che l'integrato non sembra esistere nella libreria del programma CAD che uso (cosa molto strana, da qualche parte sarà) e quindi ho dovuto disegnarlo da me. E' vero, non me ne ero accorto. Si potrebbe risolvere il tutto con un bel diodo

arkypita

2011-06-01 22:21

Nicolò ha scritto:

Pensavo variando il duty cicle dell'astabile che manda l'impulso sul clock del 4017. Cosicchè vari la durata dell'impulso in uscita dai pin del 4017, in modo da simulare una diversa informazione. Di conseguenza varieranno tutti i tempi di refresh e lettura.

Infatti ci sarebbero da calcolare i valori di tutti i componenti.

PS: non sono riuscito a simularlo dato che l'integrato non sembra esistere nella libreria del programma CAD che uso (cosa molto strana, da qualche parte sarà) e quindi ho dovuto disegnarlo da me.

Io invece ti suggerirei di mettere in AND logico il dato che vuoi settare con il clock di set (lo fai con un semplice transistor).

Cerca bene perchè il 4017 è molto comune, dovrebbe esserci.

P.S. ho modificato la risposta precedente. Verifica il corto out0-out2

Nicolò

2011-06-01 22:25

Ho postato una piccola modifica per il corto, pensavo di inserire un diodo per risolvere il problema del cortocircuito.

arkypita

2011-06-01 22:29

Nicolò ha scritto:

Ho postato una piccola modifica per il corto, pensavo di inserire un diodo per risolvere il problema del cortocircuito.

Allora ce ne va uno anche in out0

ad ogni modo se l'uscita è ad alta impedenza (credo che lo sia, essendo tecnologia CMOS, ma non prenderlo come una garanzia) puoi anche non mettere nulla.


'notte

Nicolò

2011-06-01 22:33

arkypita ha scritto:

Allora ce ne va uno anche in out0 ad ogni modo se l'uscita è ad alta impedenza (credo che lo sia, essendo tecnologia CMOS, ma non prenderlo come una garanzia) puoi anche non mettere nulla.
'notte

Esattamente..mi cadono gli occhi e non ragiono più..è tardi.. Adesso riguardo meglio il datasheet, mi pareva però di aver visto che fosse a bassa impedenza. Per l'and..ci penserò domani mattina. Grazie per l'aiuto Uploaded with ImageShack.us

Nicolò

2011-06-02 20:55

Sono riuscito a trovare il componente specifico, solo che non riesco a capire quale dei 3 (che dovrebbero essere 4!) pin sia il Reset, quale il clock quale l'enable e quale il VDD. Presumo però che l'enable sia già compreso, il reset sia la R e il clock la C...adesso vedo meglio Uploaded with ImageShack.us Ah, che convenienza c'è nel mettere l'input in AND?


Comunque, se tutto è come ho pensato, dovrebbe essere più o meno così: Ora ci manca solo il compito di calcolare resistenze e condensatori, ma per questo esistono programmini appositi. Uploaded with ImageShack.us

al-ham-bic

2011-06-02 22:34

Ti allego la pagina più significativa del datasheet del 4017, con la quale si può ragionare molto meglio.

Non mi convincono alcune cose: Q1 (?), il clock inhibit va basso e non alto, l'entrata sulla base di Q2 da OUT 0... il resto non ho guardato, è tardi... -_-

Il LED deve comunque vedersi lampeggiare, quindi il clock sarà basso e adeguato. Si può magari sfruttare anche il carry out... c'è da guardare bene il timing diagram.

Il dimensionamento sul 555 è facile, non serve un programma!

4017.jpg
4017.jpg

Nicolò

2011-06-03 10:55

Grazie al! Per programmino intendevo un semplice calcolatore, era "tardi" e non avevo voglia di fare calcoli...Blush Q1 non l'ho capito neanche io, arky mi aveva suggerito di metterlo (a meno che non abbia capito dove posizionarlo correttamente)..aspetto delucidazioni..il tutto potrebbe funzionare senza esso Per quanto riguarda O0, guardando il datasheet, avevo confuso il segnale di O0 con quello di O1, rettifico subito


detto ciò, così dovrebbe essere corretto: Uploaded with ImageShack.us Forse per avere il ciclo più lungo e più "visibile" conviene usare O1-O3-O5-O7 e non 1,2,3,4

arkypita

2011-06-03 12:07

Nicolò ha scritto:

Q1 non l'ho capito neanche io, arky mi aveva suggerito di metterlo (a meno che non abbia capito dove posizionarlo correttamente)..aspetto delucidazioni..il tutto potrebbe funzionare senza esso

Ciao Nicolò

non so cosa hai interpretato, quello che intendevo dire era che nel tuo schema non capisco come viene settato il dato nella tua "RAM", cioè non capisco come fai a settare il tuo condensatore a 0 piuttosto che a 1.

Mi aspetterei un pin proveniente da una linea esterna che viene letto quando arriva il ciclo di clock di lettura e quindi memorizzato e rinfrescato poi in continuo, ma forse ho mal interpretato io quello che è il tuo progetto.

Ad ogni modo non prendere per oro colato quello che dico perché è un po' troppo tempo che sono fermo con l'elettronica!

Nicolò

2011-06-03 12:14

Asd No, il dato verrebbe "impostato" variando il duty cicle, cosicchè poi tutte le operazioni (lettura, refresh etc etc) siano in funzione del duty cicle Teoricamente dovrebbe funzionare

al-ham-bic

2011-06-03 20:05

Nicolò ha scritto:

...cosicchè poi tutte le operazioni (lettura, refresh etc etc) siano in funzione del duty cicle...

Può darsi che mi sfugga qualcosa ma questo non lo capisco.

Perchè mai il funzionamento del 4017 dovrebbe essere funzione del d.c.?

Che il segnale di ingresso sia largo o stretto, la commutazione avviene sul fronte di salita del clock.

Inoltre, per capirci meglio, sostituisci nel disegno la piedinatura effettiva del 4017 (ck pin 14, R pin 15, CI pin 13, ecc.).

Mi associo a quello che dice Arky (mi associo anche per l'ultima riga: anch'io sono in st-by da troppo tempo *Fischietta* ).

Peccato non ci sia più nel forum il bravo Rusty, che avrebbe fornito un buon apporto di discussione.

(Ultima cosa, ma non tenerne conto... Non vorrei che qualcuno a scuola commentasse: -tutto questo ambaradan per fare un lampeggiatore? Ma fai finta che non l'abbia detto asd ).

Nicolò

2011-06-03 20:42

al-ham-bic ha scritto:

non vorrei che a scuola commentassero - tutto questo ambaradan per fare un lampeggiatore? - Ma fai finta che non l'abbia detto asd ).

Oh...ci sono abituato...anche se ci rimango male in fondo :-/ Per quanto riguarda la commutazione, mi ero confuso io, dimenticandomi però che variare il duty cicle, non comporterebbe nessun cambiamento, dato che la durata del segnale alto in uscita dal pin = livello alto + livello basso.... Fantasticherie di un giovane fissato con l'elettronica Rolleyes Detto ciò, potremmo tenere "fissa" l'informazione. L'importante è che simuli..anche se ridotto all'osso.

al-ham-bic

2011-06-03 20:55

Per fare questi montaggi sperimentali andrebbero bene quelle piastrine bianche con mille fori di passo unificato (non mi ricordo più il nome) dove inserisci i componenti e puoi variare il circuito in un attimo senza fare saldature.

Una volta io usavo una cosa del genere autocostruita ed era insostituibile!

Poi sarebbe ancora più insostituibile un oscilloscopio, che ti risolve in tre secondi quello che ti porterebbe via tre ore (temo che tu non ce l'abbia, giusto? :-D ).

arkypita

2011-06-03 21:17

al-ham-bic ha scritto:

Per fare questi montaggi sperimentali andrebbero bene quelle piastrine bianche con mille fori di passo unificato (non mi ricordo più il nome) dove inserisci i componenti e puoi variare il circuito in un attimo senza fare saldature.

La mitica bread-board!

Negli anni d'oro costruivo circuiti che si spandevano su 4 basette XD adesso posto qualche foto di mie realizzazioni.

Secondo me dell'oscilloscopio non se ne fa nulla. Con quelle frequenze e un circuito così semplice gli basta un voltmetro.

al-ham-bic

2011-06-03 21:34

Bread-board, proprio quella!

Sull'utilità dell'oscilloscopio indipendentemente dalla frequenza (utilità, non indispensabilità) non concordo.

In un attimo vedi tutti i test point che vuoi in funzione del clock... irrinunciabile! (Ma se non c'è, non c'è azz! e di quello che manca si fa a meno).

Nicolò

2011-06-03 21:40

Oh bhe..io sto andando avanti a breadboard, tester, uno scrauso alimentatore di mio nonno e dei cavetti monofilari per le connessioni...fin'ora mi è andata bene....e qualcosa mi è sempre venuto fuori.. Rolleyes