Analizzatore logico 101

In fase di sviluppo Stesura preliminare In fase di sviluppo

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.

Attività 1

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:

Schermata

Alcune domande a cui rispondere usando i ruler oppure contando i quadretti:

E stesse domande a cui rispondere usando il menu Mesuraments:

Attività 1 bis

Modificare il codice presente nell'attività 1 per generare i seguenti segnali, da visualizzare collegando una seconda sonda all'oscilloscopio:

Sgnali generati da Arduino

Attività 1 ter

Modificare il codice presente nell'attività 1 per generare i seguenti segnali, da visualizzare collegando una seconda sonda all'oscilloscopio:

Segnali generati da Arduino

Attività 2

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.

Arduino e porta logica

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:

Analizzatore di stati logici e Arduino

Occorre attivare i canali digitali agendo sull'icona di seguito evidenziata:

Nella schermata mostrata occorre:

Canali da visualizzare 

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:

Attività 3

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:

Misura del tempo di discesa

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.

Attività 4

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?

Attività 5

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?

Attività 6

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.

Problemi

A volte alcuni circuiti presentano problemi, spesso intermittenti e di non facile interpretazione o soluzione. Di seguito un esempio:

la.p1

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:

Note

  1. LED e resistori non sono richiesti
  2. Non è quella disegnata nello schema...
  3. Un comando da USARE CON CAUTELA se non si hanno chiari i suoi limiti, dall'effetto apparentemente simile al time per division: la rotella del mouse permette uno sorta di zoom del segnale in senso orizzontale. Questo metodo fa perdere dettagli del segnale e quindi va usato con attenzione, soprattutto per elevati fattori di ingrandimento
  4. Il pulsante rosso di STOP, da USARE CON CAUTELA permette di bloccare l'immagine, con una funzione apparentemente analoga al trigger. Ovviamente una volta che il segnale è "congelato", ogni cambiamento della realtà non viene più visualizzato, a differenza di quello che permette l'uso del trigger
  5. Spesso il valore misurato è diverso, anche di molto, dalla misura precedente a causa della diversa impostazione delle sonde utilizzate
  6. Si noti l'assenza di ritardi nel codice
  7. I canali di sinistra D8 → D15 sono disattivati
  8. L'istante di trigger può essere anticipato o ritardato agendo sul pre-trigger, di default pari al 50%


Pagina creata nell'ottobre 2020
Ultima modifica: 13 marzo 2023


Licenza "Creative Commons" - Attribuzione-Condividi allo stesso modo 3.0 Unported


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima