Ciao a tutti! Un breve aggiornamento sul mio progetto; l'intervento di Alessandro (Poppi) sul timing del T80 (il simulatore di Z80 che sto utilizzando per il mio progetto) mi ha messo la pulce all'orecchio: Alessandro diceva che il timing del T80 è tutt'altro che fedele all'originale. Mi sono quindi messo a spulciare il codice VHDL che implementa la CPU e ho rilevato che il timing di alcuni segnali (in particolare l'IORQ_n) non è corretto; per farla breve questo fatto può creare molti problemi al mio core (che cerca di emulare in modo fedele la logica dell'ULA reale). Un esempio: come penso molti di noi sapranno l'accoppiata IORQ_n e A(0) è utilizzata dall'ULA per ipotizzare quando sarà richiesto un accesso ad una porta gestita dall'ULA stessa (porta con indirizzo pari => A(0) = '0'); quando si verifica questa condizione in concomitanza alla lettura di dati necessari al ritracciamento del video, l'ULA deve bloccare lo Z80 mantenendo "alto" il clock; questo approccio richiede che la variazione del segnale IORQ_n (da '1' a '0') avvenga in seguito ad un fronte positivo del clock della CPU; in tal modo la condizione viene elaborata e il clock viene MANTENUTO in stato "alto". Nel caso del T80 ho verificato che il segnale IORQ_n passa da '1' a '0' in concomitanza ad un fronte negativo del clock della CPU! Questo di conseguenza annulla la validità dell'algoritmo di contention implementato dall'ULA originale. Ho riportato queste mie considerazioni a MikeJ del sito FPGA Arcade (co-autore del T80), il quale mi ha risposto che gli sembrano corrette. Link al sito (per chi fosse interessato): http://www.fpgaarcade.com/ Ora sto facendo un po' di debugging del T80 per verificare la correttezza degli altri segnali (es. MREQ_n, RD_n, WR_n). Vi terrò aggiornati sul procedere dell'analisi. Per chi fosse interessato al documento di Alessandro Poppi che descrive con esempi il comportamento dell'ULA riporto il link al post che fornisce le URL per lo scaricamento del file: //www.freelists.org/post/zxspectrum/The-Sinclair-ZX-Spectrum-ULA-Book,5 A presto! Alessandro