[zxspectrum] Re: V6Z80p Pentagon 128K core

  • From: Alessandro Dorigatti <adorigatti@xxxxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Thu, 1 Nov 2012 19:20:26 +0100

Ciao Mario!
Cercherò di essere il più possibile chiaro, anche se il mio suggerimento è
quello di leggere il libro di Chris Smith per avere la visione completa di
tutta la ULA (non è pubblicità.. è solo che realmente quel libro è pura
"masturbazione mentale" per noi amanti dello Spectrum :-)).

Date un'occhiata al documento seguente:
https://docs.google.com/open?id=0B4O6cuivPtLFcEJFaWQ4TkJEVFk

(spero sia scaricabile da tutti senza problemi... è il mio primo
esperimento di condivisione di un file su Google...).

Cosa si vede nel diagramma?

1) Il system clock a 14MHz (riferimento per l'ULA del mio core)
2) Il clock a 7MHz derivato dal system clock
3) Sempre nella riga Clk7, si vede un contatore (i 4 bit meno significativi
di esso, in realtà) che scandisce il ridisegno delle linee orizzontali
4) Come il CPU Clock si "incastra" con il Clk7 (supposto che non venga
bloccato a causa di contesa)

Pausa... un ciclo di ridisegno di 16 pixel, essendo il dot-cock 7MHz, porta
via appunto 16 cicli, e nel diagramma li vedi schematizzati come C0...C15.
Detto questo, l'accesso alla VRAM avviene, come visibile nel diagramma tra
C8...C15.

5) Video address (VAddress) rappresenta che indirizzo viene impostato
sull'address bus per accedere alla VRAM. Come si vede dal diagramma in
pratica vengono letti in sequenza Display1, Attribute1, Display2,
Attribute2.
6) DataLatch_n e AttributeLatch_n sono i due segnali che copiano il dato
ritornato dalla VRAM (all'indirizzo impostato VAddress) in due latch
"temporanei" che successivamente verranno ricopiati nei due latch "finali"
che generano pixel e colore.

Qui sta il punto cruciale: se ci troviamo a disegnare la "PAPER" (ovvero
NON BORDER), come colore di sfondo viene messo nell'AttributeLatch il byte
prelevato dalla memoria; se ci troviamo invece a disegnare il "BORDER",
allora il valore dello sfondo (che in questo caso corrisponde con il
BORDER) viene prelevato dal registro che salva la porta 0xFE. Quindi... la
CPU in qualunque momento può settare il valore del border nel registro
della porta 0xFE, ma il valore del registro della porta viene preso in
considerazione dalla ULA solo quando AttributeLatch_n è "attivo basso".

Non è finita qui, in quanto come dicevo DataLatch e AttributeLatch sono due
latch "temporanei". Quando essi diventano pixel o colore effettivi?

7) OutputLatches_n rappresenta (nell'istante del suo "rising edge") il
momento in cui DataLatch e AttributeLatch vengono utilizzati per disegnare
un nuovo ottetto di pixel (quindi nel diagramma in C13 e C5).

8) Nell'ultima riga PixelOut, infatti, viene schematizzato che pixel di un
ottetto viene buttato fuori a video... come si vede per C13 e C5 la cella
ha sfondo giallo e il pixel è lo 0.

Quindi riassumendo, ci sono 2 latch temporanei (DataLatch e AttributeLatch)
e 2 registri per l'output definitivo; inoltre c'è il registro della porta
0xFE.

Giusto per completezza, nella riga "VCS_n" è schematizzato cosa viene
fornito alla CPU come valore del floating-bus (in caso di lettura di porte
dispari "non gestite"); il segnale VCS_n è il "chip-select" per la VRAM.

Ehm.. non so quanto confuso sono stato nell'esposizione... ma in poche
righe non so fare di meglio :-)

Ciao,
Alessandro

Il giorno 01 novembre 2012 18:42, Mario <ilovez80@xxxxxxx> ha scritto:

>
> Io una domanda te la faccio...
> parlavi del bordo modificabile a qualunque T-state,  nello spectrum
> originale puo' essere modificato solo ogni 4 t-states, cioe' 8 pixel video,
> se sbagli correggimi :)
> come hai implementato il funzionamento originale dello spectrum sulla
> V6Z80? immagino che i tre bit del bordo siano scritti dallo z80 in un
> registro e poi copiati ogni 4 t-states nel multiplexer di uscita del
> video.. ma in quale fase?
> sul chrome a causa del poco spazio nel cpld non ho mai implementato il
> funzionamento esatto ma mi ha sempre incuriosito perche' di questo aspetto
> della ula se ne parla poco..
>
> grazie
> ciaooo
>
>
>

Other related posts: