Diagrammi temporali

Diagramma temporale disegnato a mano

Un diagramma temporale è un grafico che rappresenta in modo schematico come variano ingressi ed uscite di un circuito digitale in funzione del tempo:

Esempio 1

Si consideri la seguente porta logica AND a due ingressi. Vogliamo disegnare l'andamento nel tempo dell'uscita Y, noto l'andamento di A e B.

Porta AND

I due ingressi hanno il seguente andamento temporale, descritto a parole:

  1. Inizialmente A e B sono bassi
  2. All'istante T = 1 µs entrambi i segnali diventano alti
  3. All'istante T = 2 µs A diventa basso (e B non cambia)
  4. All'istante T = 3 µs entrambi gli A e B cambiano valore
  5. Infine, all'instante T = 4 µs A diventa basso

Il diagramma temporale degli ingressi è quindi il seguente, disegnato a partire dalla descrizione (nota 2):

Porta AND. Ingressi

Il grafico è stato disegnato con WaveDrom e la seguente codifica testuale:

{signal: [
 {name: 'A', wave: 'lhlhl'},
 {name: 'B', wave: 'lh.l.'},
]}

Si noti che l'informazione sulla durata di ciascun intervallo non è stata riportata nel grafico in quando sufficientemente chiara nella descrizione (ed in questo caso neppure necessaria, nota 1). Sono state disegnate linee tratteggiate verticali in corrispondenza di ciascuna transizione di uno dei segnali di ingresso.

Analogamente non è presente alcun valore numerico o unità di misura sull'asse verticale per indicare il livelli logici alti e bassi, in genere noti o sottintesi.

Possiamo ora disegnare il diagramma temporale relativo all'uscita Y, ricavato direttamente dalla tabella di verità: solo quando A e B sono contemporaneamente alti, anche Y è alto.

AND: diagramma temporale

Osservazioni:

Esercizio 2

Disegnare con WaveDrom l'uscita Y di una porta XOR quando gli ingressi A e B sono i seguenti:

Ingressi porta XOR

Esercizio 3

Trovare la tabella di verità corrispondente al seguente diagramma temporale. Disegnare inoltre il circuito corrispondente. Disegnare con WaveDrom il diagramma temporale.

Diagramma temporale ignoto

Diagrammi temporali reali

I diagrammi temporali (reali) possono essere osservati con un oscilloscopio.

Tempi di transizione

L'immagine seguente mostra un segnale periodico reale (T = 373.8 ns), con valore alto pari a circa 3 V e valore basso 0 V.

Un clock visualizzato con l'oscilloscopio 

Si possono notare i fronti non verticali. In un diagramma temporale questo aspetto viene messo in evidenza, se serve, inclinando le linee che rappresentano i fronti, come mostrato per il segnale A2:

Il grafico è stato disegnato con WaveDrom e la seguente codifica testuale:

{signal: [
 {name: 'A1', wave: 'hlhl.h.'},
 {name: 'A2', wave: '1010.1.'},
]}

L'inclinazione è definita attraverso il tempo di transizione.

Esercizio 4

Disegnare con WaveDrom il diagramma temporale dell'esercizio 3, rappresentando i tempi di transizione (con WaveDrom non è possibile impostare il valore numerico dell'inclinazione).

Raggruppare più segnali

A volte il diagramma temporale appare complesso a causa di numerose linee, rendendo non facile la lettura. Per esempio il seguente diagramma rappresenta un insieme di quattro segnali A3, A2, A1 e A0 (bus)

In questi casi potrebbe essere conveniente raggruppare i segnali, immaginando i quattro bit come un unico numero binario, dove A3 è il bit più significativo (msb) e A0 il quello meno significativo (lsb).

Nel diagramma temporale possiamo indicare la sola linea A costituita da una serie di "esagoni", come rappresentato nell'ultima riga seguente.

Come leggere il diagramma temporale ottenuto:

Il grafico è stato disegnato con WaveDrom e la seguente codifica testuale:

{signal: [
 {name: 'A0', wave: '0101010101010101'},
 {name: 'A1', wave: '0.1.0.1.0.1.0.1.'},
 {name: 'A2', wave: '0...1...0...1...'},
 {name: 'A3', wave: '0.......1.......'},
 {name: 'A', wave: '2222322222522227',
  data: ['0x0', '0x1', '0x2', '0x3', '0x4', '0x5', '0x6', '0x7', '0x8', '0x9', '1010', '1011', '1100', '13', '14', '15']},
]}

A volte per lunghi periodi di tempo, un segnale non cambia e può essere disegnato come nella seguente figura: A e A1 rappresentano lo stesso segnale

Il grafico è stato disegnato con WaveDrom e la seguente codifica testuale:

{ "signal" : [
 { "name": "A", "wave": "101......01." },
 { "name": "A1", "wave": "101|01." }
]}

Due casi particolari

Il seguente diagramma contiene due casi particolari (nota 3), riferiti la prima riga ad un segnale singolo, la seconda ad un bus:

L'intervallo evidenziato in blu indica che il valore logico "non ha importanza" (don't care oppure X). Potrebbe valere 1 oppure 0 (oppure alcuni bit a 0 ed alcuni a 1 per il bus) e questo non influenza il funzionamento del circuito. In un certo senso possiamo dire che il valore logico è sia alto che basso.

L'intervallo evidenziato in rosso indica che l'uscita di una porta si trova "ad alta impedenza" (3-state oppure High-Z), cioè né alta né bassa, ma semplicemente non collegata

{signal: [
 {name: 'A', wave: '0x..1.z..10'},
 {name: 'An', wave: '0x..2.z..22', data: ['0x5', '0x7', '0x0']},
]}

Note

  1. Non mettere le unità di misura è in genere un errore grave ed è una pratica tollerata solo in contesti in cui queste informazioni sono chiaramente deducibili da altri elementi
  2. Molti dei diagrammi temporali presenti in questa pagina sono stati disegnati con https://wavedrom.com
  3. A volte la presenza di tali casi particolari è indicata come logica a quattro valori (four-valued logic): true, false, both (true and false), and neither
  4. Se avete installato il software Picoscope potete utilizzare il file allegato per una misura "live"


Pagina creata nel febbraio 2020
Ultima modifica: 8 aprile 2023


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


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima