L'analizzatore di stati logici, insieme all'oscilloscopio, è lo strumento più utilizzato per esaminare il comportamento di un circuito digitale. In questa attività utilizzeremo Picoscope 2205A-MSO (Mixed Signal Oscilloscope), uno strumento molto versatile e dal costo relativamente contenuto che svolge entrambe le funzioni, perfetto per l'uso in ambito scolastico. Il software usato è la versione 6.14.23 del maggio 2020, l'ultima disponibile nel momento della prima stesura di questa pagina.
Ovviamente i concetti presentati sono generali.
La fotografia di apertura mostra un HP 1663A uno strumento di circa 40 anni fa, obsoleto, ma con il fascino degli strumenti di un tempo.
Iniziamo utilizzando il Picoscope come oscilloscopio, cioè come strumento capace di visualizzare alcuni segnali analogici, in genere 2 o 4. In questa pagina sono descritte le procedure.
Come sorgente dei segnali utilizzeremo Arduino. Il codice iniziale è il seguente:
void setup() { pinMode(2, OUTPUT);
}
void loop() { digitalWrite(2, HIGH);
digitalWrite(2, LOW);
}
Questo codice alterna velocemente (nota 6) in uscita sul pin 2 un segnale alto ed uno basso. Non serve collegare nulla ad Arduino; in particolare non è possibile cercare di osservare il segnale con un LED: il nostro occhio non è abbastanza veloce e vedremmo il LED come "acceso a metà".
Colleghiamo la sonda del canale A dell’oscilloscopio al pin 2 di Arduino. Il coccodrillo nero va connesso a massa (GND).
Avviamo il software Picoscope e cerchiamo di visualizzare sullo schermo un segnale simile al seguente:
Alcune domande a cui rispondere usando i ruler oppure contando i quadretti:
E stesse domande a cui rispondere usando il menu Mesuraments:
Modificare il codice presente nell'attività 1 per generare i seguenti segnali, da visualizzare collegando una seconda sonda all'oscilloscopio:
Modificare il codice presente nell'attività 1 per generare i seguenti segnali, da visualizzare collegando una seconda sonda all'oscilloscopio:
Colleghiamo una porta logica qualunque dotata di due ingressi ad Arduino e scriviamo il codice per generare due segnali in modo tale che, in istanti diversi, siano presenti tutte le possibili combinazioni (00, 01, 10 e 11). Può essere utilizzato uno dei codici già scritti in una delle attività precedenti.
Anche se non sono disegnate nello schema, è sempre necessario collegare GND di Arduino a GND (o VSS) del circuito integrato. Inoltre è necessario alimentare il circuito integrato: è possibile usare la stessa alimentazione di Arduino, collegando +5V a VCC (o VDD) oppure un altro alimentatore da 5 V, purché abbia il polo negativo collegato alle varie GND degli altri circuiti.
L'oscilloscopio usato possiede solo due canali analogici A e B. Per poter visualizzare anche l'uscita della porta logica useremo gli ingressi digitali D0 → D15 (per cominciare ce ne serviranno solo 3); useremo cioè il Picoscope come analizzatore di stati logici (logic analyser). Per fare ciò useremo il cavo multiplo di color giallo, visibile nella fotografia seguente.
Occorre collegare:
Occorre attivare i canali digitali agendo sull'icona di seguito evidenziata:
Nella schermata mostrata occorre:
Occorre infine impostare il trigger digitale per poter visualizzare l'immagine sullo schermo in maniera stabile, selezionando Auto, cliccando sull'icona Advanced Triggers ed infine selezionano Digital:
L'evento che fa scattare la visualizzazione è indicato come Trigger Pattern (modello per il "grilletto"); esso è costituito da una stringa di 8 simboli.
I simboli che costituiscono il pattern possono essere scelti tra i seguenti:
I simboli sono ordinati, nell'esempio da D7 a D0.
Nell'esempio mostrato (XXXXXRXX) l'evento di trigger scatta quando D2 presenta un fronte di salita (R); tutti gli altri ingressi non sono rilevanti (X). L'effetto è mostrato nella figura seguente: il fronte di salita di D2 è fermo in corrispondenza del tempo 0 al centro dello schermo (nota 8):
Ecco un esempio di cosa dobbiamo aspettarci di vedere al termine delle configurazioni; partendo dall'alto:
Il cambiamento di stato dell'uscita non è istantaneo, ma richiede un po' di tempo, più o meno lungo a seconda di quanto la porta è veloce. Tali tempi sono indicati come tempo di salita (rise time) e tempo di discesa (fall time), dall'ovvio significato; nel loro insieme sono spesso indicati come tempi di transizione.
La figura seguente mostra la misura del tempo di discesa, fatta con i cursori oppure in modo automatico:
Per la misura è necessario:
Molti oscilloscopio dispongono della misura automatica del tempo di transizione.
La misura del tempi di transizione non è possibile con un analizzatore di stati logici in quanto i fronti appaiono sempre verticali.
Il tempo di propagazione misura quanto tempo impiega l'ingresso di una posta logica per arrivare all'uscita. Spesso viene misurato tra il 50% del valore dell'ingresso ed il 50% del valore dell'uscita.
Per la misura è necessario:
Domanda: in figura quale è l'ingresso e quale è l'uscita? Perché?
La stessa misura può essere effettuata anche in modalità digitale (nota 5):
Domanda: in figura quale è l'ingresso e quale è l'uscita?
Realizzare un circuito che presenta un'alea statica e visualizzarla.
Per realizzare il circuito è possibile usare un solo circuito integrato, per esempio usando una porta NAND come inverter. Come?
Confrontare le tracce viste con l'oscilloscopio e con l'analizzatore di stati logici con quanto ottenuto simulando un circuito digitale con SIMetrix/SIMPLIS Elements e con Deeds.
A volte alcuni circuiti presentano problemi, spesso intermittenti e di non facile interpretazione o soluzione. Di seguito un esempio:
La causa principale è l'utilizzo di collegamenti lunghi senza le dovute attenzioni, argomento complesso da affrontare e che rientra nelle problematiche delle linee di trasmissione.
Per mitigare questi effetti negativi è possibile:
Pagina creata nell'ottobre 2020
Ultima modifica: 13 marzo 2023
Appunti scolastici - Versione 0.1028 - Novembre 2024
Copyright 2012-2024, Vincenzo Villa (https://www.vincenzov.net)
Creative Commons | Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)