Strumenti Utente

Strumenti Sito


chippalippa

Questa è una vecchia versione del documento!


ChippaLippa

Il progetto ChippaLippa nasce nella primavera 2018 in seguito all'evento “8bit de noattri” organizzato dall'associazione Firenze Vintage Bit, dove è stato illustrato come realizzare con i componenti discreti della famiglia logica TTL un piccolo processore. Il nostro progetto vanta minor complessità e prevede la realizzazione di un micrcocomputer basato su un derivato del processore MOS 6502 (della stessa famiglia di ben più noti home computer anni '80).

Materiali acquistati ed a disposizione

  • WDC 65C02S (versione statica del MOS 6502)
  • Rockwell 6551 (ACIA - Asynchronous Communications Interface Adapter)
  • Rockwell 6522 (VIA - Versatile Interface Adapter)
  • 74HC00 (porta NAND2 quad)
  • 74HC04 (porta NOT hex)
  • 74HC139 (2-to-4 decoder/demux)
  • SRAM 8Kx8 [di recupero, da testare] IS61C64AH (1pz) e CL63C256N (4pz)
  • NE555 q.b.
  • HEF4551 (binary to sevseg) (6pz)

Schede realizzate

Note sul clock

I chip non statici (o farlocchi) permettono di mantenere il livello alto sul segnale di clock per un tempo indefinito. Per operare correttamente, il livello basso deve essere più breve di 5μs.

Fare riferimento allo “Stuzzica clock” ripreso dal circuito debouncer del “6502 primer”.

Clocchino

Dovrebbe fare qualcosa in meno del clock di Ben Eater, con meno chip.

Si tratta di un clock a duplice modalità: automatico (astabile) con frequenza regolabile (TODO) e duty cycle fissato a 50%; manuale (monostabile) controllabile tramite la pressione di un bottone e con larghezza di impulso minima garantita di TODO.

Stuzzica clock

TODO

Bus inspector

TODO

Step 1 - NOPNOPNOP

  • Clock con 555;
  • Bus dati bloccato a $EA (NOP);
  • Segnali accessori bloccati a default (RDY, IRQB, NMIB, BE, SOB).

Verifica: il bus indirizzi viene incrementato ogni due colpi di clock:

  • >=2 colpi di clock con reset;
  • 6 colpi di clock per entrare a regime (:!: 7-1)
  • A = 0xFFFC
  • A = 0xFFFD (lettura vettore reset: 0xEAEA hardcoded)
  • A = 0xEAEA
  • A = 0xEAEB (legge NOP ed esegue)

Step 2 - ROM + RAM

  • Clock con 555;
  • una ROM;
  • una RAM;
  • logica di indirizzamento (74HC00 NAND, eventualmente 74HC04 NOT).
  • Dump della memoria ROM TODO
  • Disassemblato TODO

Step 3 - Tastiera e display

  • Clock con 555;
  • una ROM;
  • una RAM;
  • logica di indirizzamento (74HC00 NAND, 74HC04 NOT, 74HC139 decoder);
  • controller tastiera 4×4 (es. 74C922);
  • tastiera 4×4;
  • display 16×02;
  • Schematico TODO
  • Sw di esempio TODO
  • Wozmon tarocco TODO

Mappa della memoria

L'indirizzamento fatto in questo modo è poco ottimizzato, ma è pratico da fare su una breadboard.

+-------------+
|             | 0
+             +
|             | 1
+   RAM 32K   +
|             | 2
+             +
|             | 3
+-------------+
| Display     | 4
+-------------+
| Keyboard    | 5
+-------------+
|             | 6
+-------------+
|  ROM 8K     | 7
+-------------+

* Display R/W command: 0x8000 (in realtà, qualsiasi indirizzo pari nel banco 0x8000-0x9FFF); * Display R/W text: 0x8001 (in realtà, qualsiasi indirizzo dispari nel banco 0x8000-0x9FFF); * Keyboard read: 0xA000 (qualsiasi indirizzo nel banco 0xA000-0xBFFF);

Mappa della memoria (nei sogni)

+-------------+
|             | 0
+  RAM 16K    +
| bank switch | 1
+-------------+
|RAM 8K shared| 2
+-------------+
|             | 3
+-------------+
|             | 4
+-------------+
|             | 5
+-------------+
|             | 6
+-------------+
|  ROM 8K     | 7
+-------------+

3-6 Input/Output (TODO)

  • VIA
  • ACIA
  • Display

Reference

chippalippa.1644268784.txt.gz · Ultima modifica: 2022/02/07 22:19 da giuliof