[zxspectrum] Re: Nuovo progetto ZX Spectrum 48K in VHDL

  • From: Alessandro Dorigatti <adorigatti@xxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Sat, 19 Feb 2011 14:49:56 +0100

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


Other related posts: