[zxspectrum] Re: V6Z80p Pentagon 128K core

  • From: Mario <ilovez80@xxxxxxx>
  • To: zxspectrum@xxxxxxxxxxxxx
  • Date: Thu, 01 Nov 2012 19:50:58 +0100

At 19:20 01/11/2012, you wrote:
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 :-)).

non hai idea da quanto tempo ho intenzione di acquistare il libro della ula, credo che sia arrivato il momento :) hai spiegato perfettamente il funzionamento, unico dubbio, la porta $fe gestisce anche il buzzer e la porta mic, anche queste sono gestite dal secondo latch (quello del border) o come penso siano attivate direttamente dopo un out dallo z80?

devo vedere se c'e' spazio per altri 3 ff nel cpld del chrome..

grazie 1000
ciaooo

Date un'occhiata al documento seguente:
<https://docs.google.com/open?id=0B4O6cuivPtLFcEJFaWQ4TkJEVFk>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 <<mailto:ilovez80@xxxxxxx>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




Nessun virus nel messaggio.
Controllato da AVG - <http://www.avg.com>www.avg.com
Versione: 10.0.1427 / Database dei virus: 2441/5367 - Data di rilascio: 01/11/2012


Other related posts: