Skip to content

Commit

Permalink
loader, eeprom
Browse files Browse the repository at this point in the history
  • Loading branch information
andreamazzai authored Nov 14, 2024
1 parent 79c5fb5 commit 1b9542a
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 9 deletions.
4 changes: 2 additions & 2 deletions docs/_docs/80-loader.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Il Loader attiva tre segnali di controllo e uno di clock:
- **CLK-Start**, che disattiva temporaneamente l'astabile del modulo di clock e lo riattiva alla fine della programmazione, avviando automaticamente l'esecuzione del programma appena caricato.
- **LDR-Active**, che inibisce l'output dei segnali di clock generati dal BEAM (astabile e monostabile manuale), le due EEPROM che governano i '138 ed alcuni altri segnali di controllo. Questi ultimi - al momento - non sono gestiti dal Loader; una futura evoluzione dovrebbe permettere di effettuare dei test sui registri Flag e H.
- **Reset**, che inibisce l'incremento del RC durante la programmazione.
- **LDR-CLK**, che durante la programmazione si sostituisce al clock del computer.
- **LDR-CLK**, che si sostituisce al clock del computer per la programmazione della RAM da parte del Loader.

L'operazione di scrittura di un byte è effettuata in due fasi, ripetute per tutta la lunghezza del programma da caricare:

Expand Down Expand Up @@ -75,7 +75,7 @@ void writeRAM(byte data)
}
~~~
Alla fine del processo di scrittura, il '165 viene utilizzato per leggere il contenuto dell'ultima locazione di memoria del computer e memorizzarlo temporaneamente sul Loader, permettendo l'esecuzione di un gioco di luci sui LED che visualizzano il contenuto della RAM. Il gioco consiste nello scorrimento dei LED, che simulano l'effetto dell'iconico scanner dell'auto <a href="https://www.youtube.com/watch?v=bMVbaCiy_XE" target="_blank">KITT</a> dalla serie televisiva Supercar. Per eseguire questo effetto, si esegue il caricamento del pattern di scorrimento nella locazione citata e, per questo, è necessario ripristinarla alla fine della routine.
Alla fine del processo di scrittura, il '165 viene utilizzato per leggere il contenuto dell'ultima locazione di memoria del computer e memorizzarlo temporaneamente sul Loader, permettendo l'esecuzione di un gioco di luci sui LED che visualizzano il contenuto della RAM. Il gioco consiste nello scorrimento dei LED per simulare l'effetto dell'iconico scanner dell'auto <a href="https://www.youtube.com/watch?v=bMVbaCiy_XE" target="_blank">KITT</a> dalla serie televisiva Supercar. Per eseguire questo effetto, si esegue il caricamento del pattern di scorrimento nella locazione citata e, per questo, è necessario ripristinarla alla fine della routine.
<video src="../../assets/loader/KITT.mp4" controls title="Title" width="45%"></video>
Expand Down
41 changes: 36 additions & 5 deletions docs/_docs/90-eeprom.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,51 @@ excerpt: "EEPROM Programmer"

[![Registro di output del computer BEAM](../../assets/output/65-beam-output.png "Registro di output del computer BEAM"){:width="100%"}](../../assets/output/65-beam-output.png)

**PLACEHOLDER**
**WORK IN PROGRESS - WORK IN PROGRESS - WORK IN PROGRESS**

Tutti i progetti descritti sono basati su Arduino, ad evidenza della versatilità di questo strumento.

Il programmatore di EEPROM prende spunto dal semplice progetto sviluppato da Ben Eater per la programmazione del computer SAP e dal TommyPROM sviluppato da Tom Nisbet, che include molte più funzioni. Quest'ultimo è un programmatore che supporta una varietà di EEPROM, Flash ed EPROM e che include un software molto completo; una versione ridotta del software è stata utilizzata da Tom e pubblicata sul suo repository per assolvere semplicemente allo scopo di programmare le EEPROM dell'NQSAP.

Durante la realizzazione del SAP, avevo costruito il programmatore seguendo le istruzioni di Ben Eater. Nello sviluppo della Control Logic del BEAM e nel debug del microcode e dei vari moduli, dotato di ben 4 EEPROM e con una quantità di dato da programmare molto maggiore di quella del SAP, i tempi di programmazione diventavano noiosi (credo di ricordare intorno ai 90 secondi per ogni EEPROM); poiché le ri-programmazioni si ripetevano incessantemente per scrivere il microcode corretto per le varie istruzioni, migliorare le funzionalità e indirizzare i bug, diventavo sempre più intollerante rispetto al tempo speso guardando la fila crescente di puntini sullo schermo durante la programmazione.

Inoltre le dimensioni delle EEPROM del BEAM Erano ben diverse da quelle del sap , per il numero molto maggiore di istruzioni supportate e per il numero di microistruzioni possibili , pari a 16.

Il programmatore di Tom permette anche la programmazione a partire da un file residente sul proprio computer, che viene trasferito sull'Arduino.

Altro aspetto: la velocità. Il programmatore di Ben era funzionale, ma non sfruttava la possibilità delle EEPROM moderne di scrittura di blocchi, che permette la programmazione di una EEPROM da 32KB in pochi secondi.

28C series EEPROMS, like the X28C256, sometimes ship from the factory with Data Protection enabled. Use the UNLOCK command to disable this. See the 28C256 Notes for more information. https://tomnisbet.github.io/TommyPROM/docs/28C256-notes

Nel suo progetto, Tom inizialmente utilizzava Shift Register 74LS164, poi dava anche indicazioni per l'uso dei più diffusi 74LS595 (o meglio dire 74HC595?).

Il mio programmatore iniziale era basato sul design di Ben Eater, dunque con i '595. In una sezione della documentazione, Tom evidenziava che il suo codice non funzionava sul progetto di Ben e che necessitava di significative modifiche: Se si desideravanoi benefici del Tommy promsull'hardware di ben , probabilmente la strada più facile era quella di modificare l'hardware e renderlo uguale a quello di Tommy anziché modificare il software .

Nella mia testardaggine ho voluto fare a metà , cioè non modificare totalmente l'hardware inizialmente sviluppato seguendo il progetto di ben virgola e approfittarne per mettere il naso sul software e renderlo compatibile col minor numero di modifiche possibili da fare per rendere comunque il programmatore molto veloce.

Verificare la modifica su d 13: Questo segnale viene utilizzato percontrollare il WE, mentre CEE sempre attivo; poiché di 13 è collegato al led di Arduino virgola che al boot lampeggia , significa che si potrebbero verificare delle scritture indesiderate della eprom all'accensione dell'arduino .questo non è un problema per lo sketch di ben , perché il programmatore fa solamente delle scritture e una volta partito il programma programma completamente la promo ; mentre il programmatore Tommy promè anche in grado di effettuare solamente delle letture da una eproma e dunque effettuare delle scritture casuali potrebbe essere problematico .

Altra questione : il pin oe è controllato dagli shift register virgola che nella design del Tommy promnon funziona bene perché o è verrebbe modificato ogni volta che vengono inviati nuovi indirizzi agli shift register

Per questi motivi Tom consiglia di effettuare qualche semplice modifica hardware per adattare il design di ben a quello di Tom.

[![Schema del programmatore di EEPROM del computer SAP](../../assets/eeprom/eeprom-ben.png "Schema del programmatore di EEPROM del computer SAP"){:width="100%"}](../../assets/eeprom/eeprom-ben.png)

*Schema del programmatore di EEPROM del computer SAP.*

![Alt text](image.png)

Lorem ipsum dolor sit amet, consectetur adipisci elit, sed do eiusmod tempor incidunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrum exercitationem ullamco laboriosam, nisi ut aliquid ex ea commodi consequatur. Duis aute irure reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat cupiditat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

## Schema

[![Schema del programmatore di EEPROM](../../assets/eeprom/90-eeprom-schema.png "Schema del programmatore di EEPROM"){:width="100%"}](../../assets/eeprom/90-eeprom-schema.png)
[![Schema del programmatore di EEPROM del computer BEAM](../../assets/eeprom/90-eeprom-schema.png "Schema del programmatore di EEPROM del computer BEAM"){:width="100%"}](../../assets/eeprom/90-eeprom-schema.png)

*Schema del programmatore di EEPROM del computer BEAM.*

## Link utili

- Il video <a href="https://www.youtube.com/watch?v=K88pgWhEb1M" target="_blank">Build an Arduino EEPROM programmer</a> di Ben Eater.
- Il programmatore di EEPROM <a href="https://www.youtube.com/watch?v=K88pgWhEb1M" target="_blank">TommyProm</a> di Tom Nisbet.
- Il video <a href="https://www.youtube.com/watch?v=K88pgWhEb1M" target="_blank">Build an Arduino EEPROM programmer</a> e il repository GitHub <a href="https://github.com/beneater/eeprom-programmer" target="_blank">Arduino EEPROM programmer</a> di Ben Eater.
- Il programmatore di EEPROM <a href="https://github.com/TomNisbet/TommyPROM" target="_blank">TommyProm</a> di Tom Nisbet.

## TO DO

Expand Down
3 changes: 1 addition & 2 deletions docs/_docs/todo.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ excerpt: "Cosa c'è da fare"
- https://bread80.com/2019/09/02/adding-adc-sbc-inc-dec-operations-to-ben-eaters-alu/#easy-footnote-4-43 da leggere per capire se buono
- subito dopo il capitolo "Il registro H" capire "(da fare: in questo caso, ma anche nel caso delle istruzioni di shift / rotazione e forse anche CPX e CPY, verificare se non potessi usare D invece di H)"
- rivedere "L'ALU dell'NQSAP per dare senso al fatto che ho studiato NQSAP ma parlo della realizzazione del BEAM
- Parlare del bench di test sulla base di quanto appreso da David Courtney.
- link al mio video dell'ALU
- Parlare del bench di test sulla base di quanto appreso da David Courtney + link al mio video dell'ALU

## STACK

Expand Down
Binary file added docs/assets/eeprom/eeprom-ben.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 1b9542a

Please sign in to comment.