INTRODUZIONE ALLA RIPARAZIONE DELLE PCB ARCADE - Lezione 1

Area speciale dedicata alle Pandora box e Pcb
Avatar utente
saturnshadow
Level Start
Level Start
Messaggi: 21
Iscritto il: 27/02/2021, 20:38
Reputation: 8
Località: Bologna/Pesaro, Italy

INTRODUZIONE ALLA RIPARAZIONE DELLE PCB ARCADE - Lezione 1

Messaggio da saturnshadow »

Attenzione: quanto segue è la traduzione autorizzata della guida di Brian Brzezicki sull'introduzione alla riparazione delle PCB. Per informazioni o maggiori delucidazioni si prega di voler fare riferimento direttamente all'autore stesso.
Copyright 2013 Paladin Group, LLC - Author: Brian Brzezicki http://www.arcade-cabinets.com

Per modifiche alla traduzione stessa o per segnalare errori o refusi, fate riferimento al thread

Introduzione alla riparazione delle PCB dei giochi arcade.
Nota: questa introduzione è di natura generica. Negli esempi proposti è stata utilizzata una PCB Atari Centipede.
Lezione 1: Nozioni di base sul segnale della CPU
Introduzione
Riparare una PCB arcade sembra un'abilità magica e arcana, invece è semplicemente una serie di tentativi per risolvere problemi base. Capire come funziona un sistema, scomporlo in tanti piccoli sottosistemi distinti e testare razionalmente i vari sottosistemi. Se si dispone di una sonda logica (o di un oscilloscopio) o di un Fluke 9010a con il giusto CPU pod, c’è un approccio molto semplice alla risoluzione dei guasti che può portare a risolvere probabilmente il 90% di tutti i problemi.

PCB arcade: un computer molto semplice
Una PCB arcade è un "computer a con un singolo compito" molto semplice. Affinché il gioco arcade funzioni e sia utilizzabile, sono necessari i seguenti componenti:
1. Una CPU funzionante;
2. ROM funzionante (codice del gioco) e relativi circuiti di supporto;
3. RAM funzionante e relativi circuiti di supporto;
4. Circuito video funzionante;
5. Circuiti di input funzionanti.
Diamo un'occhiata all'elemento numero 1, una CPU funzionante. Ovviamente il gioco non funzionerà senza una CPU efficiente. Se la CPU è difettosa è possibile che si potrà vedere comunque qualcosa a video, ma probabilmente sarà spazzatura, questo perché il circuito del display video è per la maggior parte separato dalla CPU. L'unità video legge periodicamente un certo blocco di memoria e in base a ciò che è lì presente visualizzerà qualcosa sullo schermo. Se la CPU non è attiva, la memoria sarà comunque in funzione ma piena di dati inutili e non inizializzata.
IMG01.png

IMG.01

Quindi come possiamo controllare la CPU?
Ci sono alcuni passaggi che devono essere eseguiti ancor prima di verificare la CPU:
1) È necessaria una buona alimentazione di corrente continua (CC o DC power), in particolare i +5V presenti sulla maggior parte delle CPU arcade;
2) È necessario avere un segnale di reset quando la CPU si attiva;
3) È necessario un valido segnale di clock (a meno che la CPU non abbia clock interno).

Controllo dell'alimentazione:

Senza una buona alimentazione non ci sono possibilità che la CPU e il gioco stesso funzionino. E ribadisco nessuna. L’alimentazione elettrica è la base di qualsiasi sistema elettronico. Come verificare l’alimentazione allora?
Controllo alimentazione +5V
- Prendiamo un multimetro e impostiamo la lettura della potenza su CC/DC Power (corrente continua);
- Cerchiamo un chip della serie 74LSxxx sulla scheda (dovrebbero essercene molti);
- Prendiamo il bordo del chip 74LSxxx con la "tacca" come inizio;
IMG02.jpg
IMG.02

- Troviamo il pin GROUND/GND sul 74LSxxx (solitamente il pin in basso a destra del chip);
- E infine troviamo il pin dei +5V (VCC) (di solito il pin in alto a sinistra).
Misuriamo la potenza tra questi due punti. Se il valore ottenuto non è compreso tra +5V e +5,15V, cerchiamo di regolare l'alimentazione fino a quando non rientrerà in tale intervallo. Se l’alimentatore non riesce ad erogare la corretta tensione, potrebbe essere danneggiato o guasto oppure la scheda potrebbe avere qualche tipo di cortocircuito. Purtroppo gli inconvenienti da cortocircuito non sono facilmente risolvibili.
Se l'alimentazione invece è corretta, possiamo passare alla fase successiva.

Segnale di ripristino/reset:
Quando un computer si avvia, la CPU e la memoria sono in uno stato indeterminato (principalmente RANDOM) e il sistema effettivamente non è in funzione. I sistemi informatici genericamente possiedono un circuito di supervisione e ripristino, detto più comunemente Watchdog, che è responsabile dell'invio di un segnale di ripristino rapido alla CPU. Quando la CPU riceve questo segnale, salterà ad un indirizzo di memoria hard-coded (o codifica fissa) e inizierà ad eseguire il codice. Questo codice di boot inizializza la memoria e di solito effettua una verifica del sistema, quindi avvia il programma.
Se si desidera testare la CPU per verificare che riceva un segnale di ripristino, ciò che serve è una sonda logica (preferibilmente con uscita audio). Se la sonda ha la possibilità di settare delle impostazioni, assicurarsi che il tipo di verifica logica sia impostato su TTL e pulse (al contrario di memory e CMOS).

Utilizzo di una sonda logica per testare il segnale di ripristino.
Prendiamo la sonda logica, colleghiamo i cavi rosso al +5V e il nero al Ground e troviamo il pin reset sulla CPU. Tocchiamo con i puntali della sonda logica il pin di ripristino e accendendo il sistema, assistiamo cosa accade.
Su un Atari Centipede, con processore 6502 il pin RESET è il pin 40 (in alto a destra). Quando il pin è in "low/basso" la CPU riceve il segnale di reset (si chiama NON reset, ovvero che RESET è abilitato su LOW). Quando il sistema si accende, il segnale dovrebbe passare in "high/alto", seguito da una rapida transizione (che sentiremo) a low, quindi tornerà per rimanere in high.
Se siamo in possesso di un oscilloscopio potremo utilizzarlo in luogo di una sonda logica. Tuttavia sarà necessario consultare il manuale per imparare a impostare i vari trigger per rilevare i cambiamenti di stato low/high.

Utilizzo di un oscilloscopio per controllare il segnale di ripristino.
(nota bene: gli oscilloscopi sono dispositivi assai complessi e ogni modello ha controlli dedicati e diversi per gestire le impostazioni. Questo vuole essere un esempio generico).
- Collegare la sonda dell'oscilloscopio al canale 1 dell'oscilloscopio e il cavo di massa/terra della sonda al ground sulla scheda (nel caso oggetto di esempio: Centipede).
- Configurare l'oscilloscopio per eseguire il trigger sull’evento falling edge e impostarlo in modalità trigger singolo;
- Configurare il trigger in modo che sia tra i valori +5V e Ground (+2.5V è ottimo);
- Configurare le griglie orizzontali da impostare a 1 milionesimo di secondo (1µs)
- Collegare la sonda dell'oscilloscopio al pin 40 del 6502 sulla scheda Centipede.
- Senza sollevare la sonda dell'oscilloscopio dal pin di test, accendiamo il gioco.
- Dovremmo vedere un segnale alto, un breve calo a massa, quindi di nuovo alto come nell'immagine qui sotto.
IMG03.png
IMG.03

Suggerimenti per la risoluzione dei problemi di RESET:
- Se non è presente alcun segnale di RESET ciò rappresenta un inconveniente importante ed è necessario prima risolvere i problemi del circuito di reset.
- Se il segnale di reset è sempre alto e non scende mai, premere, se presente, il pulsante di ripristino e verificare se il valore scende su basso. In caso contrario, controllare il circuito dall'interruttore di reset al pin dedicato sulla CPU. Bisogna notare che è molto difficile catturare il reset all'avvio, quindi se non vediamo la transizione a valore basso, ma lo verifichiamo quando viene premuto il pulsante di reset, possiamo evitare questo passaggio.
- Se il segnale di reset è sempre basso, qualcosa nel circuito non funziona a dovere, pertanto dovremo verificare i componenti nel circuito, dall'interruttore fino al pin RESET.
Molto probabilmente su un gioco non funzionante con circuiti RESET e WATCHDOG correttamente operativi, scopriremo che il segnale di reset invia impulsi costantemente come mostrato nell'immagine qui in basso. Questo di solito è causato dal circuito watchdog che rileva come il sistema non funzioni correttamente e cerca costantemente di ripristinarlo. Se verifichiamo invece che la scheda sta effettivamente ricevendo correttamente il segnale di RESET iniziale, il sistema torna a uno stato stabile di non reset, pertanto molto probabilmente il gioco funziona correttamente a meno che il circuito di watchdog non sia danneggiato.
Se stiamo ricevendo segnali che ci si aspetta da un gioco funzionante, ma non abbiamo segnale video, potremo saltare tutte le sezioni seguenti e passare al la risoluzione dei problemi video.
IMG04.png
IMG.04


Cos'è il WATCHDOG?
La maggior parte dei sistemi elettronici possiede un circuito WATCHDOG. Su questi sistemi il codice principale scrive periodicamente i dati su un certo indirizzo di memoria per indicare che tutto funziona correttamente. Il circuito WATCHDOG controlla questo indirizzo di memoria. Se non riscontra i dati che specificano che il tutto è corretto, invierà un segnale di RESET alla CPU per riavviare i sistemi nel tentativo di ripristinarli.



Il segnale di clock
La maggior parte dei giochi meno recenti ha CPU con clock esterno; c'è un oscillatore al cristallo che oscilla ad una certa frequenza e alcuni chip tributati allo "step-down frequency" che generano il segnale di clock sulla CPU. Questo circuito di clock fornirà una transizione costante da basso ad alto che dovremmo essere in grado di percepire. Senza questo segnale stabile di clock la CPU non funzionerà.

Utilizzo di una sonda logica per controllare il segnale di clock.
Per testare questo segnale, colleghiamo i cavi delle sonde logiche su GROUND e + 5V sui punti di test (test point) appropriati della scheda e tocchiamo con la punta della sonda il pin del clock sulla CPU (su un chip 6502 è il pin 37). Con un funzionamento normale, il pin emetterà un segnale acustico durante la transizione dallo stato alto a quello basso.
Risoluzione dei problemi del segnale di clock con una sonda logica:
- Se il pin del clock è mancante, bloccato su alto, basso o se emette segnali acustici con uno schema non uniforme, il circuito del clock non funziona e quindi il gioco non funzionerà. Dovremo controllare lo stato del circuito dal cristallo al pin del clock.
- Spesso nei giochi l’oscillatore al cristallo manca completamente o è danneggiato. Se sono questi i casi, procederemo alla sostituzione. A volte il cristallo può sembrare in buono stato ma effettivamente non lo è. Il modo per testare questo componente è verificare negli schemi il primo pin di uscita del primo chip TTL dopo l’oscillatore al cristallo.
Poiché questi è ad alta frequenza, la sonda logica probabilmente riceverà un segnale anomalo che potremmo considerare come sintomo di malfunzionamento, oppure potremmo riscontrare un segnale di corretto funzionamento, ma sarebbe un falso positivo perché la frequenza è troppo alta per essere verificata dalla sonda logica. La verifica importante da effettuare è riscontrare se il valore in uscita è bloccato su alto o basso.

Test del segnale di clock con un Fluke 9010A
Il Fluke 9010A con il POD appropriato per i test non funzionerà senza un segnale di clock valido, quindi sarà possibile utilizzarlo per testare la bontà del segnale di clock.
Prima di testare il segnale di clock, dovremo imparare a far funzionare correttamente il Fluke (se non è stato già fatto, consultate le istruzioni alla fine del capitolo per testare il Fluke 9010a con il POD associato).
- Spegnere la scheda del gioco (ed accendere sempre prima il Fluke)
- Spegnere il Fluke
- Inserire il POD nella CPU (nella direzione corretta del chip)
- Accendere il Fluke
- Impostare il Fluke su " ignore active line force" oppure “active line force: NO”
- Accendere la scheda gioco
- Premere "bus test" sul Fluke. Se il risultato sarà "BUS TEST OK" il clock va bene. Se il responso sarà "POD timeout" o "BAD POWER SUPPLY" allora molto probabilmente non c’è una buona tensione al CPU POD o il clock non è corretto.
-Spegnere la scheda del gioco (non accendere mai la pcb e spegnere il Fluke)
- Spegnere il Fluke
Se riscontriamo che il segnale di clock non è quello previsto, è necessario risolvere i problemi del circuito di clock. Se invece abbiamo monitorato una transizione costante, procediamo alla lezione successiva.

Utilizzo di un oscilloscopio per testare il segnale di clock
(nota bene: gli oscilloscopi sono dispositivi assai complessi e ogni modello ha controlli dedicati e diversi per gestire le impostazioni. Questo vuole essere un esempio generico).
- Collegare la sonda dell'oscilloscopio al canale 1 dell'oscilloscopio e il cavo di massa/terra della sonda al ground sulla scheda (nel caso oggetto di esempio: Centipede).
- Configurare l'oscilloscopio per eseguire il trigger sull’evento falling edge e impostarlo in modalità trigger singolo;
- Configurare il trigger in modo che sia tra i valori +5V e Ground (+2.5V è ottimo);
- Configurare le griglie orizzontali da impostare a 1 microsecondo (1µs)
- Accendere la scheda gioco
- Collegare la sonda dell'oscilloscopio al pin 37 del chip 6502 su Centipede.
- Dovremmo vedere un segnale simile all'immagine qui sotto. Se l’ oscilloscopio dispone dell'opzione di misurazione della frequenza, dovremmo poter verificare che la frequenza del canale 1 è di circa 1,5 Mhz (la velocità di clock su Centipede). Se non si dispone di un'opzione relativa alla frequenza, è possibile allineare ad un bordo del segnale su o giù a una linea della griglia, quindi vedere quante linee della griglia (o frazioni di essa) sono necessarie per eseguire un ciclo completo. Se riusciremo a capire quanto è lungo ogni ciclo rispetto alle linee della griglia, potremo fare il calcolo per ottenere l’esatta frequenza (ad esempio, se le linee della griglia sono impostate su 1us - 1 milionesimo di secondo - e ci sono 3 cicli completi in 2 linee della griglia - 2 milionesimi di secondo -, la frequenza è 3 cicli / 2 milionesimi di secondo = 1,5 Mhz).
IMG05.png
IMG.05
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.


Avatar utente
saturnshadow
Level Start
Level Start
Messaggi: 21
Iscritto il: 27/02/2021, 20:38
Reputation: 8
Località: Bologna/Pesaro, Italy

INTRODUZIONE ALLA RIPARAZIONE DELLE PCB ARCADE - Lezione 2

Messaggio da saturnshadow »

Lezione 2: Leggere gli schemi
IMG_2.01.png
IMG_2.01


Visualizziamo lo schema allegato dell'Atari Centipede (IMG_2.01). Troviamo il grande rettangolo con la P verde indicato sugli schemi che è etichettato come "C2 6502A": questo indica che sulla PCB di Centipede, nella posizione C2, c'è un chip 6502A, che è la CPU.
Notiamo sullo schema, sul lato destro del chip, delle etichette all'interno e all'esterno. Le etichette all'interno indicano qual è la funzione del chip (come generalmente indicato nella scheda tecnica), mentre il numero esterno è il numero effettivo del pin sul chip. Ad esempio, A14 è il pin 24 sul chip 6502.
Notiamo anche che ci sono 16 linee di indirizzi (da A0 ad A15). Quando la CPU è alimentata su ciascuna linea di indirizzo, trasporterà un segnale che potrà essere GROUND (rappresenta lo 0 del codice binario) o +5V (che rappresentano il 1 binario).
Poiché sono presenti 16 diverse linee di indirizzo e ogni linea può avere due stati diversi, ci sono 65’536 diverse combinazioni possibili di 0 e 1 (ovvero 164), quindi ci sono 65’536 posizioni di memoria che la CPU può indirizzare.
Gli indirizzi sono generalmente referenziati in formato esadecimale, ad esempio come 0x041A, tuttavia il computer rappresenterà tutto in termini di 0 o 1 (codice binario) in modo che possa trasformarlo in livelli di tensione elettronica. Fortunatamente il codice esadecimale può essere facilmente convertito in codice binario, così ogni singola cifra esadecimale può essere tradotta direttamente in 4 bit binari utilizzando la tabella seguente.
IMG_2.02.png
IMG.02

Quindi, ad esempio, prendendo l'indirizzo sopra menzionato 0x041A, può essere convertito facilmente sostituendo ogni cifra esadecimale con le sue 4 cifre binarie corrispondenti.
IMG_2.03.png
IMG.03
Pertanto la rappresentazione binaria di 0x041A corrisponde a 0000 0100 0001 1010
Quando la CPU desidera comunicare con questa posizione di memoria, applicherà le tensioni appropriate alle linee di indirizzo appropriate. (Nota bene: i bit degli indirizzi sono numerati da destra a sinistra)
IMG_2.04.png

IMG.04

Ora immaginando che la CPU accede a questo indirizzo di memoria, possiamo procedere a trascrivere i valori appropriati su ciascuna riga di indirizzo sullo schema.

Seguendo le righe di indirizzo a destra si nota come diventino tutte l'ingresso per i chip etichettati in verde A e B. Questi chip, B1 e C1, sono identificati come LS244. Questa è l'abbreviazione di 74LS244 e ne definisce il tipo di chip. Il prossimo passo sarà cercare la scheda tecnica per questo tipo di chip (possiamo cercare su Google, o altri motori di ricerca, “74LS244”). È molto importante leggere le schede tecniche dei chip così da avere un'idea generale di cosa dovrebbero fare. Chiaramente non è necessario leggere tutti i dati tecnici sulle varie operazioni dei chip; generalmente sono sufficienti la prima o le prime due pagine di descrizione. La maggior parte dei chip avrà inoltre anche una "tabella di stato" che ne descrive tutti gli input e quali saranno gli output associati, e questo è un aspetto estremamente importante. Nel caso preso in esame, il chip 74LS244 è un buffer. Lo scopo di questo circuito è semplicemente quello di leggere il segnale in arrivo e riprodurre il medesimo segnale sul pin di uscita. Poiché questo tipo di chip ha un compito semplice, alcuni datasheet non conterranno la tabella di stato. Il motivo per cui un buffer è in questa posizione è perché nel momento in cui la CPU emette lo stato richiesto per ciascuna riga di indirizzo, essa non genera né fornisce la corrente necessaria per gli input validi al resto degli altri chip della serie 74LSxxx. Pertanto il nostro chip 74LS244 farà le veci di un amplificatore e/o un ripetitore, fornendo la corrente necessaria sugli output.
Ora prendiamo ad esempio gli input per il chip C1: in base alle nostre conoscenze degli input, quali saranno gli output per i pin ad esso associati? A titolo di esercizio, potremmo provare a compilare la seguente tabella:
IMG_2.05.png

IMG.05

Si può notare che i pin 1 e 19 si abilitano solo se il chip sta emettendo un valore. Sono cablati a massa, il che rende questo chip permanentemente ON o abilitato e fornisce un output su ciascun pin corrispondente all'ingresso. Spesso potremo vedere chip 74LS244 usati in altri modi. Oppure talvolta potranno essere presenti più potenziali chip di input su un bus condiviso (ad esempio chip RAM o ROM). Poiché solo un dispositivo alla volta può comunicare sul bus senza causare problemi, i chip 74LS244 vengono spesso inseriti alle estremità di un dispositivo di archiviazione e la isolano dal bus. Quando quel dispositivo di memorizzazione comunica col bus, il chip buffer si abiliterà ed emetterà valori. In tutte le altre condizioni il chip buffer riceverà un segnale in ingresso che comunicherà al chip stesso di impostarsi in modalità OFF (chiamata alta impedenza), funzione che rimuove efficacemente il chip dal bus e che consente ad un altro dispositivo di comunicare col bus. Questo processo lo potremo notare in più punti soprattutto nelle RAM, nelle ROM e nei circuiti di INPUT.

Esercizio: ricognizione degli indirizzi di bus utilizzando un Fluke 9010A e una sonda logica:
1. Spegnere la PCB Atari Centipede;
2. Spegnere il Fluke 9010A;
3. Rimuovere la CPU 6502 dalla PCB Centipede;
4. Collegare il Fluke 9010A con il pod del 6502 nello slot lasciato libero dopo la rimozione del chip sulla PCB;
5. Collegare la sonda logica sui punti di test sulla PCB di Centipede (sulla sonda logica +5V sul cavo rosso e il GROUND sul cavo nero);
6. Accendere il Fluke 9010°;
7. Accendere la PCB di Centipede;
8. Accedere alla configurazione Fluke Self, utilizzare il pulsante "MORE" per passare alla selezione "Active Line Force" e selezionare "NO" per disattivarla;
9. Premere il pulsante "Bus Test". Il Fluke dovrebbe rispondere con un messaggio "BUS TEST OK";
10. Selezionare "READ" quando richiede un indirizzo di tipo FF;
11. Selezionare "LOOP";
12. Mettere in contatto la punta della sonda logica con il pin 17 del 74LS244 in posizione C1 (indirizzo di bus su linea 7, input). Si dovrebbe riscontrare un segnale high/alto*;
13. Mettere in contatto la parte superiore della sonda logica con il pin 3 del chip 74LS244 nella posizione C1 (indirizzo di bus su linea 3). Si dovrebbe riscontrare un segnale high/alto*. Ciò significa che la linea 7 dell'indirizzo è "attiva" (il che ha senso perché l'indirizzo 0xFFFF è binario 1111 1111 1111 1111, quindi tutte le linee saranno alte con +5V);
14. Premere il pulsante "READ" sul Fluke quando richiederà un indirizzo di tipo 0000. Ora il Fluke dovrebbe restituire un messaggio 0 per tutti i bit sulla riga dell'indirizzo GROUND;
15. Premere il pulsante "LOOP";
16. Mettere in contatto la punta della sonda logica con il pin 17 del 74LS244 nella posizione C1 (indirizzo bus linea 7, input). Dovremmo poter vedere che il segnale transita da high/alto a low/basso* (non dovrebbe rimanere fisso su low/basso però);
17. Mettere in contatto la parte superiore della sonda logica con il pin 3 sul 74LS244 in posizione C1 (indirizzo bus linea 3). Si vedrà il segnale transitare da high/alto a low/basso* (non resterà in stato low/basso);
Nota importante: è molto semplice leggere male un segnale con la sonda logica. Ad esempio se il pin non è pulito si possono ottenere risultati errati, specialmente quando i pin passano da uno stato all’altro in frazioni di secondo. Oppure durante la lettura delle righe dell'indirizzo impostate su 0, potremmo riscontare che i pin degli indirizzi rimangono in stato high/alto, fenomeno che può accadere frequentemente!
18. Potremo sperimentare provando a scrivere su indirizzi diversi con il Fluke (non dimenticando di selezionare la funzione "LOOP") e verificare se il valore binario sull’indirizzo oggetto di monitoraggio sia quello atteso.
Quando saranno terminate le verifiche, non dimentichiamo mai di spegnere correttamente il Fluke.
1. Spegnere l'alimentazione alla PCB di Centipede;
2. Spegnere l'alimentazione del Fluke 9010A;
3. Rimuovere il POD dallo zoccolo della CPU e rimetterlo nello zoccolo ZIF sul POD.
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.
Avatar utente
saturnshadow
Level Start
Level Start
Messaggi: 21
Iscritto il: 27/02/2021, 20:38
Reputation: 8
Località: Bologna/Pesaro, Italy

INTRODUZIONE ALLA RIPARAZIONE DELLE PCB ARCADE - Lezione 3

Messaggio da saturnshadow »

Lezione 3: Decodifica bus e indirizzi

I Bus:
Nella lezione precedente abbiamo accennato agli indirizzi di bus. A questo punto si porrà la domanda "cos'è esattamente un bus?". Un bus è semplicemente un gruppo di uno o più collegamenti sui quali vengono trasmessi segnali elettrici. I bus solitamente hanno più collegamenti, nel caso della PCB Atari Centipede e della CPU 6502, ci sono 16 collegamenti che compongono gli indirizzi di bus. Ogni collegamento trasporta il proprio segnale (0V o +5V) e la combinazione di tutti i collegamenti rappresentano le informazioni che devono essere trasmesse. Un'altra caratteristica di un bus è che più dispositivi diversi sono collegati a un bus. In qualsiasi momento uno o più dispositivi possono leggere i dati presenti sul bus. Tuttavia solo un dispositivo alla volta può scrivere dati sul bus in un dato momento. Se più dispositivi tentano di scrivere dati sul bus, i segnali si corromperanno vicendevolmente e i dati dunque non saranno validi. Coloro che hanno familiarità con le vecchie reti Ethernet che utilizzavano hub, sapranno esattamente cosa accadeva quando si verificava una collisione. Le vecchie reti basate su hub sono una tipologia di bus a tutti gli effetti dove tutti gli host possono leggere i dati presenti sulla rete, ma solo uno solo alla volta può comunicare con l’hub senza causare problemi.

Bus e periferiche a tre stati (tri-state devices):
Prestando attenzione si potrebbero notare alcuni punti contrastanti.
1. I chip TTL forniscono/inviano segnali spingendo gli output su GROUND o su +5V.
2. I bus hanno spesso più di un dispositivo/chip collegato.
Pertanto si porrebbe la domanda "se più dispositivi emettono +5V o GROUND, ed entrambi sono segnali, quando non tutti i dispositivi comunicano, causano problemi?" La risposta è sì! Se tutto ciò che un dispositivo può fare è emettere un segnale di +5V o GROUND, che sono entrambi segnali validi, significa che ogni dispositivo sta cercando di alterare lo stato del bus e questo causerà inconvenienti. Tuttavia esiste una soluzione a questo problema.

Dispositivi a tre stati:
Per risolvere il problema sopra descritto, molti dispositivi TTL sono in realtà dispositivi a tre stati. Piuttosto che essere in grado di emettere solo 2 stati, questi dispositivi hanno la possibilità di emettere un segnale in 3 stati:
1- Chip abilitato e output high/alto (+5V);
2- Chip abilitato e output low/basso (GROUND);
3- Chip disabilitato e output ad ALTA IMPEDENZA (spesso riportata come Z).
Quando il chip è abilitato emette uno degli stati logici TTL validi (+5V o GROUND). Ma il chip può anche essere disabilitato. Quando è in questo stato entra in una modalità ad alta impedenza che lo rimuove efficacemente dal bus. È importante capire che l'alta impedenza non è 0V (GROUND) né è +5 V: concretamente è NESSUNO stato. Infatti, dal punto di vista del resto dei circuiti, quando un chip è nello stato di alta impedenza (Z), è come se il chip non facesse nemmeno parte del circuito stesso.
Dispositivo a tre stati:
Un dispositivo che ha 3 stati, i normali stati logici di HIGH e LOW e un terzo stato chiamato Alta Impedenza (Z) che disabilita efficacemente il chip e lo fa sembrare assente nel circuito o sul bus.


Il circuito di decodifica degli indirizzi:
Poiché ora conosciamo i dispositivi a tre stati, questo risolve il problema di più dispositivi collegati allo stesso bus. Tutto quello che dobbiamo fare è assicurarci che i vari dispositivi siano sempre in uno stato disabilitato (alta impedenza) e abilitare solo il chip da cui desideriamo ricevere informazioni.
Ora abbiamo solo bisogno di un modo (un circuito) per determinare quale chip dovrà essere acceso o abilitato. Questo circuito ha bisogno di leggere un qualche tipo di informazione (il bus degli indirizzi) e quindi potrà abilitare il chip responsabile di quell'indirizzo di memoria. Questo circuito è chiamato circuito di decodifica degli indirizzi e si trova nell'immagine dello schema della PCB di Centipede identificato dal rettangolo blu.
Esplorazione del circuito del decodificatore degli indirizzi:
È fondamentale che il circuito di decodifica dell'indirizzo funzioni, altrimenti il sistema non lavorerà correttamente.
La maggior parte dei sistemi dispone di modalità di autotest che controllano RAM e ROM per determinare se funzionano regolarmente. Tuttavia, se il circuito di decodifica dell'indirizzo non funziona, RAM e ROM, pur operando correttamente, non saranno accessibili al momento giusto e il test automatico fornirà risultati non accurati (ad esempio potrebbe segnalare che RAM o ROM non funzionano). Pertanto, prima di testare RAM o ROM indicata come difettosa dall’autodiagnostica, è necessario verificare il funzionamento del circuito di decodifica degli indirizzi. Spesso se viene indicata come difettosa una RAM o una ROM, in realtà il sistema ha verificato solo la prima RAM o ROM della catena, il che ci fa ipotizzare che il circuito di decodifica dell'indirizzo sia difettoso.
Esploriamo il circuito di decodifica degli indirizzi. Guardiamo lo schema della PCB. Il chip contrassegnato con una D è il circuito di decodifica dell'indirizzo. Si può notare che questo chip è identificato come "J2 LS139". Ciò significa che il chip alla quale si fa riferimento, è il chip sulla scheda in posizione J2 ed è di tipo 74LS139. Ora è il momento di cercare la relativa scheda tecnica del chip 74LS139.
IMG_3.01.png

IMG_3.01
Questo chip è un demultiplatore (demultiplexer o demux) a 2-4 linee, ed effettivamente il chip 74LS139 è un demux a 2, 2-4 linee e la porzione del decodificatore di indirizzi mostrata in D utilizza solo uno di questi due demux. Ma in sintesi cos'è un demux? Ebbene, la chiave per capirlo è guardare la tabella di stato (o tabella delle funzioni) che definisce ciò che il chip produrrà in base ai diversi input possibili. Di seguito sono riportate le tabelle di stato:
IMG_3.02.png

IMG_3.02
Se osserviamo le colonne "INPUT" ci sono 3 diversi pin di input. Il pin 15 di J2 è la linea di abilitazione e corrisponde all'ingresso G della tabella degli stati. Il pin 14 corrisponde ad A e il pin 13 a B. Le colonne di OUTPUT della tabella mostrano tutte le diverse uscite possibili (Y0-Y3) a seconda dei diversi ingressi di A, B e G. Osservando la tabella si nota che se il pin di abilitazione (G o pin 15 @ J2) è sullo stato logico high/alto (H) (disabilitato) allora TUTTE le uscite sono sullo stato logico high/alto (H) indipendentemente dagli ingressi di A e B. Perciò quando questo chip è disabilitato tutte le sue uscite sono su high/alto.
Invece quando il chip è abilitato (G è low/basso), il chip emetterà un segnale low/basso su una linea di uscita, mentre tutte le altre linee emetteranno un segnale high/alto. L’output che sarà low/basso sarà determinato dall'ingresso di A e B. Questo chip quindi legge efficacemente gli input, che alla fine verranno ricondotti a determinate linee sugli indirizzi di bus, e in base a quali linee sono attive, si attiverà di conseguenza (invio segnale low/basso) su una delle linee di output o su nessuna. La funzione di questo chip è quella di accendere 1 delle 4 ROM sulla PCB di Centipede o assicurarsi che tutte le ROM siano effettivamente spente, se il chip è disabilitato.
Guardiamo nuovamente lo schema, ed osserviamo che gli output (il lato destro del chip) sono etichettati come ROM0, ROM1, ROM2, ROM3 (ciascuno con una linea sopra di esse). Questi sono i chip di selezione della ROM che vengono eseguiti sull'ingresso "selezione/abilitazione del chip" della ROM. La linea sopra ROM0, ROM1, ROM2, ROM3 specifica una condizione invertita, ovvero che la ROM è abilitata quando la linea è a livello logico low/basso anziché a livello high/alto.
Quindi mettendo insieme i concetti sopraelencati osserveremo che se il 74LS139 su J2 è disabilitato nessuna ROM sarà abilitata. Se J2 è abilitato dipenderà dall'input in G (pin 15); in realtà sarebbe l'output anche di altri chip, ma ai fini di questo esercizio, tutto ciò che dobbiamo sapere è che J2 sarà abilitato solo se la CPU sta provando a leggere i dati e la linea 13 degli indirizzi del bus è nello stato logico high/alto (valore di codice binario: 1).
Quando J2 è abilitato una delle ROM sarà abilitata in base agli ingressi A (pin 14) e B (pin 13). Il pin A va direttamente alla linea 11 dell’indirizzo di bus e il pin B trasmette lunga la linea 12. Pertanto, scoprire quale chip ROM è abilitato dipenderà dalla combinazione delle linee 11 e 12.
Possiamo sfruttare questa conoscenza per cercare di capire quando ogni chip ROM verrà attivato. Sappiamo che quando qualsiasi ROM dovrà essere attiva, l'indirizzo bus 13 deve avere valore 1, quindi il chip ROM attivato sarà basato sulle linee 12 e 11.
A questo punto possiamo creare un grafico per elencare le diverse combinazioni di A e B dove G è high/alto e mapparli sulle rispettive linee di indirizzo. Ignoreremo AB15 e AB14 poiché sulla PCB di Centipede quelle linee non vengono utilizzate.
IMG_3.03.png

IMG_3.03
Iniziamo ora ad avere un quadro generale su quali indirizzi si attiva ciascuna ROM. In questo caso verranno riportate le sole 3 linee di indirizzo necessarie per selezionare una ROM e sono rispettivamente AB13, AB12, AB11. Questi indirizzi da soli determineranno la ROM selezionata, mentre le altre linee di indirizzo potranno essere 0 o 1 per qualsiasi posizione. Da ciò, tuttavia, possiamo capire a quali intervalli di memoria ha risposto ciascuna ROM. Ad esempio, affinché la ROM 0 sia attiva, AB13 deve essere = 1, AB12 deve essere = 0 e AB11 deve essere = 0, mentre tutte le altre linee di indirizzo saranno irrilevanti. Quindi l'indirizzo minore a cui risponderebbe la ROM 0, sono gli indirizzi in cui tutte le linee AB0 - AB10 sono uguali a 0.
IMG_3.04.png

IMG_3.04
Se lo convertiamo in codifica esadecimale, vediamo che corrisponde all'indirizzo 0x2000. L'indirizzo maggiore a cui risponderà la ROM è dove tutti gli altri bit di indirizzo sono con valore 1.
IMG_3.05.png

IMG_3.05
Questo numero convertito in valore esadecimale è 0x27FF. Quindi l'intervallo di indirizzi a cui risponde ROM0 è compreso tra 0x2000 e 0x27FF.
Possiamo ripetere il processo per ogni ROM.
Indirizzo di partenza per ROM1:
IMG_3.06.png

IMG_3.06
Indirizzo di partenza per ROM1 in valore esadecimale: _____________________________________________

Indirizzo finale per ROM1:
IMG_3.07.png

IMG_3.07
Indirizzo finale per ROM1 in valore esadecimale: _______________________________________

Indirizzo di partenza per ROM2:
IMG_3.08.png

IMG_3.08
Indirizzo di partenza per ROM2 in valore esadecimale: _____________________________________________

Indirizzo finale per ROM2:
IMG_3.09.png

IMG_3.09
Indirizzo finale per ROM2 in valore esadecimale: _______________________________________

Indirizzo di partenza per ROM3:
IMG_3.10.png

IMG_3.10
Indirizzo di partenza per ROM3 in valore esadecimale: _____________________________________________

Indirizzo finale per ROM3:
IMG_3.11.png

IMG_3.11
Indirizzo finale per ROM3 in valore esadecimale: _______________________________________
Pertanto otterremo che le seguenti ROM rispondono (o sono mappate) nei seguenti indirizzi:
IMG_3.12.png

IMG_3.12

Esercizio: utilizzo del Fluke 9010A e della sonda logica per verificare il funzionamento del circuito di decodifica degli indirizzi
1. Impostare correttamente il Fluke e la sonda logica (ricordarsi sempre di accendere il Fluke prima dell’accensione delle PCB);
2. Nel Fluke selezionare il "SSETUP", scegliere "OTHER" fino all’opzione "Active Line Force", quindi scegliere "No";
3. Selezionare "Bus Test" per assicurarsi che il tutto funzioni correttamente;
4. Sul Fluke selezionare "READ", scegliere l'indirizzo 0x0000 quindi "LOOP". Da quello abbiamo precedentemente illustrato NESSUNA ROM sarà presente in questo intervallo, quindi NESSUNA delle selezioni ROM dovrebbe essere attiva (stato low/basso), perciò dovrebbero essere tutte in stato high/alto (si potrà notare altresì che la ROM3 è in fase di transizione di stato ma possiamo ignorala al momento);
5. Mettere la punta della sonda logica su ciascuna uscita di selezione ROM di J2 (pin 9,10,11,12); si può notare che sono tutti in stato high/alto, ovvero disabilitato. Si può anche osservare sulla PCB Atari Centipede oggetto dell’esempio, ogni chip ROM ha il proprio punto di test vicino alla ROM stessa e si potrebbe procedere alle misurazioni qui anziché sui pin di J2 (se si dovessero ottenere risultati confusi dalla selezione della ROM3, per ora ignoriamola);
6. Alla richiesta dell’inserimento di un indirizzo di memoria relativo alla ROM0 sul Fluke, facciamo leggere l'indirizzo 0x2000. Non dimentichiamo di selezionare "LOOP" per rendere la lettura continua. A questo punto posizionare la punta della sonda logica sulla ROM0 selezionata (pin 12 su J2, oppure il punto di test ROM0 vicino D1);
7. Possiamo notare che il pin di selezione della ROM0 è "capovolto", questo sta ad indicare che la ROM0 è abilitata (è abilitato in stato low/basso);
8. Testare i pin di selezione della ROM per ROM1 e ROM2. Possiamo verificare che sono ancora in stato high/alto;
9. Ora, sul Fluke, come indirizzo di memoria relativo alla ROM1, facciamo leggere l'indirizzo 0x2800. Come illustrato in precedenza, selezionare "LOOP" per rendere la lettura continua. Posizionare quindi la punta della sonda logica sulla ROM1 (pin 11 su J2, oppure il punto di test ROM1 vicino E1);
10. Anche in questo caso il pin scelto della ROM1 è "capovolto" perciò la ROM1 è abilitata (in stato low/basso);
11. Testiamo infine i pin di selezione della ROM per ROM0 e ROM2. Questi saranno in stato high/alto. La ROM3 la tralasciamo per un passaggio ad essa dedicato;
12. Testare il pin di selezione della ROM per ROM3 è una casistica più interessante. Sulla PCB Atari Centipede è effettivamente codificata elettricamente per essere sempre attiva (quindi low/basso), tranne quando dovrebbe essere specificamente spenta. Infatti testando da un'altra RAM o ROM, sarà spenta (high/alto). Se utilizziamo una sonda logica, vedremo effettivamente una transizione. Tuttavia questa transizione porterà allo spegnimento nel momento in cui la RAM leggerà l’indirizzo 0x0000. Dalla prospettiva dell’analisi da una sonda logica è difficile capire la differenza di stati: si potrà verificare solo la transizione. Con l’utilizzo di un oscilloscopio invece, sarà possibile vedere le transizioni di stato della ROM3 da high/alto (spento), così come le transizioni della RAM su low/basso (abilitata);
13. Con quanto illustrato sarà ora possibile provare a verificare altri indirizzi delle ROM e prevederne i loro stati (abilitate o disabilitate).






Prova:
Con quanto è stato spiegato finora, proviamo a verificare il chip H3 (74LS42) nel circuito di decodifica degli indirizzi. Questo chip è responsabile dell'attivazione di altri componenti come la RAM relativa al playfield, il WATCHDOG e il POKEY. In base a quanto appreso, proviamo a determinare quali indirizzi esadecimali attivano il chip POKEY tramite H3. Possiamo utilizzare il Fluke e la sonda logica per verificare i risultati ottenuti.

(La soluzione a seguire)






Soluzione:
Il POKEY è abilitato tramite H3 quando i seguenti bit di indirizzo sono impostati come segue ("-" è 0 o 1)
IMG_3.13.png

IMG_3.13

O, con codifica esadecimale, da 0x1000 (quando indirizzo AB0 - AB9 = 0) a 0x10FF (quando i bit di indirizzo AB0-AB9 = 1).
IMG_3.10.png
Non hai i permessi necessari per visualizzare i file allegati in questo messaggio.