Strumenti Utente

Strumenti Sito


chippalippa

Differenze

Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.

Link a questa pagina di confronto

Entrambe le parti precedenti la revisioneRevisione precedente
Prossima revisione
Revisione precedente
chippalippa [2020/08/31 20:55] – test effettuati e note giuliofchippalippa [2022/11/06 18:30] (versione attuale) – [ChippaLippa] aggiunta foto step3 giuliof
Linea 2: Linea 2:
 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). 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).
  
 +Il ChippaLippa allo step3, attualmente l'ultima versione funzionante:
 +{{ :chippalippa:step3.jpg?400 |}}
 ===== Materiali acquistati ed a disposizione ===== ===== Materiali acquistati ed a disposizione =====
   * WDC 65C02S //(versione statica del MOS 6502)//   * WDC 65C02S //(versione statica del MOS 6502)//
Linea 13: Linea 15:
   * HEF4551 (binary to sevseg) (6pz)   * HEF4551 (binary to sevseg) (6pz)
  
-===== ToDo list ===== +===== Schede realizzate ===== 
-  * <del>Costruire un generatore di clock //"a pulsante"//</del>+  * [[http://github.com/glgprograms/urp|Über Retro Programmer]]: programmatore di EEPROM; 
-  * Aggiungere reset all'accensione+  * [[#Clocchino|Clocchino]]: clock automatico/manuale a duty cycle 50%
-  * Realizzare programmatore EEPROM/FLASH [[https://github.com/beneater/eeprom-programmer|[1]]] [[https://medium.com/@erikvanzijst/diy-eeprom-programmer-4fd11a486ea|[2]]]. :!: **Le EEPROM di recupero si cancellano a 12V**verificare anche la compatibilità pin2pin con le FLASHServono: +  * [[#Stuzzica clock|Stuzzica clock]]: estensione al clocchino per generare impulsi opportuni (si vedano le note sul clock)
-    * 2x74HC595 (shift registersOK+  * [[#Bus inspector|Bus inspector]]: semplice display a 7 segmenti per vedere cosa succede sul bus. 
-    * Zoccolo ZIF 32 pin wide; + 
-    * Fare PCB+===== Note sul clock ===== 
-  * <del>Adattare la PCB con i 7-segmenti a "ispezionatore di bus" e testarla sul 6502</del> non adattabile + 
-  * Costruire un generatore di clock frequenza regolabile+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 [[http://wilsonminesco.com/6502primer/ClkGen.html|circuito debouncer]] del "6502 primer"
 + 
 +==== Clocchino ==== 
 + 
 +Dovrebbe fare pressappoco quel che fa il clock di [[https://eater.net/8bit/clock|Ben Eater]], ma con meno chip
 + 
 +Si tratta di un clock a duplice modalità: automatico (//astabile//con frequenza regolabile (0.6-36Hz) e duty cycle fissato a 50%manuale (//monostabile//) controllabile tramite la pressione di un bottone e con larghezza di impulso minima garantita di 13ms. 
 +Le due modalità possono essere commutate "a caldo" senza la necessità di togliere l'alimentazione al circuito. 
 + 
 +{{ :chippalippa:clocchino_sch.png?500 |}} 
 + 
 +==== Stuzzica clock ==== 
 + 
 +Necessario per adattare l'output del precedente generatore di clock quando si vogliono pilotare CPU con core dinamico. 
 +Ripreso dal sito [[http://wilsonminesco.com/6502primer/ClkGen.html|6502 primer]], il circuito è un banale //rising edge pulse generator// costituito da uno stadio di edge detection seguito da un buffer invertente  realizzato con un comparatore. 
 + 
 +L'uscita è //idle high// per poter essere conforme alle specifiche del 6502, che nella sua versione non statica permette di poter prolungare piacere lo stato alto del clock. 
 +Il circuito è tarato per generare impulsi inferiori ai 5μs. 
 + 
 +{{ :chippalippa:stuzzica-clock_sch.png?500 |}} 
 + 
 + 
 +==== Bus inspector ==== 
 + 
 +TODO
  
 ===== Step 1 - NOPNOPNOP ===== ===== Step 1 - NOPNOPNOP =====
-{{ :chippalippa:step1.jpg?400|}} +{{ :chippalippa:step1.jpg?150|}} 
-  * Clock con 555, periodo 1s, bloccabile manualmente;+  * Clock con 555;
   * Bus dati bloccato a $EA (NOP);   * Bus dati bloccato a $EA (NOP);
   * Segnali accessori bloccati a default (RDY, IRQB, NMIB, BE, SOB).   * Segnali accessori bloccati a default (RDY, IRQB, NMIB, BE, SOB).
Linea 38: Linea 66:
   * ...   * ...
  
-===== Step 2 ===== +===== Step 2 - ROM + RAM =====
-...+
  
 +  * Clock con 555;
 +  * una ROM;
 +  * una RAM;
 +  * logica di indirizzamento (74HC00 NAND, eventualmente 74HC04 NOT).
  
-===== Step 3 ===== +  * Dump della memoria ROM TODO 
-...+  * Disassemblato TODO 
 +   
 +===== Step 3 - Tastiera e display =====
  
-===== Mappa della memoria =====+  * Clock con 555; 
 +  * una ROM; 
 +  * una RAM; 
 +  * logica di indirizzamento (74HC00 NAND, 74HC04 NOT, 74HC139 decoder); 
 +  * controller tastiera 4x4 (es. 74C922); 
 +  * tastiera 4x4; 
 +  * display 16x02; 
 + 
 +  * Schematico TODO 
 +  * Sw di esempio TODO 
 +  * {{ :chippalippa:wozmon-ef9b1bc.tar.gz |Wozmon tarocco}}: versione assolutamente beta del famosissimo monitor per Apple I, riadattata per le risorse del Chippalippa "Step 3". 
 + 
 +==== 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) =====
  
   +-------------+   +-------------+
Linea 73: Linea 145:
   * [[https://eater.net/8bit/]]   * [[https://eater.net/8bit/]]
   * [[https://ciernioo.wordpress.com/tag/6502/]]   * [[https://ciernioo.wordpress.com/tag/6502/]]
- 
  
chippalippa.1598900145.txt.gz · Ultima modifica: 2020/08/31 20:55 da giuliof