Jump to content
PLC Forum


Sign in to follow this  
ZioFrenk

RS485 e caricamento dati in RAM

Recommended Posts

ZioFrenk

Salve a tutti! Ho in mente di costruire un computer basato sullo Z80, ho già quasi tutti i pezzi tranne la EEPROM, che è introvabile. Allora mi è venuto in mente di utilizzare una SRAM 62256 con cella tampone e caricare i dati con la porta RS485 (che per me è più comoda dato che ho solo due fili da collegare). Per convertire i dati da RS485 a UART uso un 75176, il problema è convertire poi questi dati in parallelo, non ho idea di come farlo dato che la linea non ha clock. Mi servirebbero 8 linee dati e uno strobe collegato ai contatori 7493 per l'indirizzo, ma per me la porta parallela è scomoda, dato che non ho i connettori e nemmeno la porta stess sul PC. Qualcuno ha qualche idea?

 

Ho anche un dubbio sulle SRAM. Per scrivere abbasso /chip enable, alzo /output enable e abbasso /write enable, poi mando i dati. Però tra un indirizzo e l'altro devo fare qualcosa sul bus dei controlli o posso lasciare così, continuare ad aumentare l'indirizzo e scrivere i dati?

 

Grazie in anticipo!

Share this post


Link to post
Share on other sites

Ctec

Introvabile? Mica vero. La Atmel ne fa ancora e le trovi on line, costano anche pochino. Le trovi sia in DIL che PLCC, per cui facilmente maneggiabili.

 

Per fare quello che dici te, un loader, hai per forza bisogno che ci sia almeno un programmuccio (un bootloader, appunto) che gestisca la CPU e soprattutto la memoria e la UART durante tale operazione. Le SRAM non incrementano automaticamente l'indirizzo, per cui fare quello che vuoi te è complicato (niente è impossibile, è solo una questione di tempo e soldi), e ti consiglio di lasciar perdere,

Compra una EEPROM, un programmatore per la stessa (costano pochissimo) e poi casomai divertiti col bootloader per evitare di riprogrammare il tutto a ogni modifica.

Share this post


Link to post
Share on other sites
Livio Orsini

Io ho ancora la scheda NASCOM basata sullo Z80 con una EPROM con una specie di BIOS che gestisce tastiera, convertitore video, UART e registratore a cassette coem memoria di massa.

Share this post


Link to post
Share on other sites
Ctec

Me la vendi per il mio museino personale? Di schede anni '70 non ho nulla...

 

Share this post


Link to post
Share on other sites
ZioFrenk

Per quello pensavo a uno switch che stacca completamente la CPU e collega la ram al caricatore. Per incrementare l'indirizzo ho 4 contatori 7493 in cascata, per quello mi servirebbe il clock dalla porta seriale, oltre che per convertire i dati in parallelo con lo shift register.

 

Potrei sì ordinare le EEPROM da atmel, ma mi sa che me ne farebbero comprare mille alla volta, poi di programmatori ne ho visti solo costosi. In questo modo invece si può dire che lo costruisco da solo, quindi non serve il bootloader perché non passo dalla CPU.

 

Rimane comunque il dubbio sulla sequenza per scrivere i dati sulle RAM.

Share this post


Link to post
Share on other sites
Ctec

Su RS una EEPROM 256kb (32KB) viene meno di 8€ e te ne danno anche una. Altri cataloghi on line, più o meno uguale.

Programmatori di EPROM (E2PROM, FLASH, micro, ecc) su Ebay da 44€.

E ti concestreresti sul progetto vero, la scheda CPU.

 

Per fare quello che vuoi te dovresti: disconnettere dal resto del mondo (scheda CPU) il bus dati, indirizzi e controllo della RAM e invece connetterli al circuitone.

Poi  resettare il circuitone per essere sicuro di partire dall'indirizzo 0x0000, farti una UART tua (non puoi usare una standard, perchè non puoi scrivere nei registri interni per impostare i parametri di comunicazione), farti un deserializzatore (ci sono anche chip appositi) che dopo 8 bit di dati, supponendo che la tua UART ha tolto gli start e gli stop e ti ha detto che hai un dato valido, ti lancia anche uno strobe per mettere sul bus dati il byte e poi lanciare il WR, rileggere il dato per essere sicuro che hai scritto giusto (ti ci vuole un registro e un comparatore ad 8 bit. Se tutto ciò è andato bene, puoi incrementare l'indirizzo, dire al PC che può mandare un altro byte e così via.

Penso che con una 40ina di integrati te la dovresti cavare... Ripeto che niente è impossibile...

 

Share this post


Link to post
Share on other sites
Livio Orsini

Il problema è come caricare il programma di boot. Devi avere comunque qualche cosa che ti fa scrivere nella EPROM o EEPROM o RAM con batteria integrata il programma di partenza.

Disponendo di un programmatore scarichi il programma da PC nella EPROM-PROM-RAM.

Potresti usare un micro che dispone già del suo boot, come arduino, per copiare i dati da PC verso la RAM con batteria o in una E2 Prom con interfaccia parallela; carichi il programma di boot per lo Z80 e poi inserisci la memoria nello zoccolo.

 

Quote

Me la vendi per il mio museino personale? Di schede anni '70 non ho nulla...

 

Il Nascom e lo ZX-80 Sinclair me li tengo per ricordo. Sicuramente tra qualche anno i miei eredi pagheranno qualcuno per gettare in discarica questi dispositivi, assieme a componenti come 2716 e AC187-AC188, OC72, etc. (oltre alla mia biblioteca):(:wacko:

Share this post


Link to post
Share on other sites
gabri-z
Quote

Penso che con una 40ina di integrati te la dovresti cavare... Ripeto che niente è impossibile

Se la cava , il ZX 80 Sinclair ne aveva si meno :P .

Share this post


Link to post
Share on other sites
Ctec

Sei come me, vedo, Livio. Il museino che ho è iniziato con i miei primi computer (TI99/4A e Spectrum), poi altra roba raccattata qua e là.

Al tempo dello ZX80 e delle schede nude, non avevo abbastanza "fondi" per procurarmele...

I miei figli già mi domandano perchè non butto quella "robaccia obsoleta"...

Share this post


Link to post
Share on other sites
ZioFrenk

Ho trovato questo integrato che mi sembra interessante allo scopo: http://www.ti.com/lit/ds/symlink/sn74lv8153.pdf

Il problema è che per come sono messo già 30€ sarebbero una certa spesa. Ho sempre fatto tutto con ciò che recuperavo. Mi è venuta l'idea di quest'interfaccia perché ho tante RAM nel cassetto degli integrati e i convertitori apposta (tranne quello serie-parallelo). Per selezionare tra modalità normale e programmazione toglierò corrente alla cpu o al programmatore tramite un deviatore, senza scollegare dati e indirizzi.

Share this post


Link to post
Share on other sites
Ctec

Non puoi semplicemente disalimentare una parte. La sezione disalimentata inchioderà il bus come vuole, non penso vada automaticamente in three-state. Per quello ti dicevo che ci vuole un sistema di disconnessione.

La cosa più semplice, ma un po' farraginosa, è che tu ti realizzi una NOVRAM (una SRAM con la batteria, cioè una NOnVolatile RAM, si trovano anche degli schemi, Elektor li fece sicuramente negli '80...). La estrai dallo zoccolo della tua scheda (che ti consiglio fare con uno ZIF), la metti in un programmatore esterno, fatto anche da te magari con quel deserializzatore che hai indicato, e poi la rimetti nella tua scheda Z80 e ridai tensione.

Quel deserializzatore prevede un protocollo ben definito, che dovrai trasmettere sul filo seriale. Poi dovrai fare il sistema di gestione degli indirizzi (autoincremento) e tutto il ciarpame per gestire la sincronizzazione dei segnali. Però non saprai mai se la programmazione è andata a buon fine.

Comunque costa solo un paio di €

Share this post


Link to post
Share on other sites
Ctec

Nota: le SRAM consumano molto meno se il CSneg (Chip Select negato) non è attivo (quindi alto). Inoltre, se questo è inattivo, non si corre il rischio di alterare il contenuto delle celle al momento della sconnessione.

Pertanto è buona regola per farla estraibile, che casomai prima di sconnetterla si possa scollegare il CS dal circuito primario, magari mediante un jumper, e avere l'accortezza di portare al Vcc di batteria il pin CS con una adeguata resistenza (100k vanno bene generalmente). Quando la si reinserirà, si rimetterà al suo posto il jumper (altrimenti la SRAM rimane a "dormire"...

Share this post


Link to post
Share on other sites
ZioFrenk

Ottimo. Per scrivere invece la sequenza sarebbe abbasso /CS, alzo /OE, abbasso /WE poi mando i dati incrementando l'indirizzo ogni volta?

Share this post


Link to post
Share on other sites
bumbi

parecchi anni fa avevo costruito una scheda cpu z80 con ram annessa, ma senza eprom,

per caricare il programma nella stessa utilizzavo il vecchio Z80 di Nuova elettronica , che ho ancora funzionante..  ve lo ricordate ??  mitico !

avevo dotato la scheda di selettore che mandava in halt la cpu , andava in three-state e riuscivo cosi a programmare la ram tramite apposito connettore

Share this post


Link to post
Share on other sites
Ctec

No, /OE alto, metti l'indirizzo, abbassi /CS, metti i dati, abbassi /WR, lo mantieni per il tempo da datasheet, rialzi /WR e /CS, incrementi l'indirizzo e ricominci

Che modello di SRAM userai?

Share this post


Link to post
Share on other sites
ZioFrenk

Grazie, è da tanto che cercavo di capire come scrivere più dati in serie.

Ho una 62256 che utilizzerò per il programma e altre quattro da 8kB che utilizzerò come memorie dati.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...