Zeroplus LAP-C PRO 32256 – Un analizzatore logico professionale a 32 canali
Ho piú volte parlato degli strumenti della Zeroplus qui sul mio blog, al punto di avergli dedicato una categoria a sé stante, e, nonostante siano passati la bellezza di 15 anni dal primo articolo che scrissi, quando collaboravo come freelance col buon Luigi di Robot-Italy, e, nonostante sia passata tantissima acqua sotto ai ponti, continuo a ritenere che gli analizzatori logici di questa azienda siano eccezionali e soprattutto sempre attuali e al passo coi tempi: é indubbio che sappiano tenere il mercato come nessun altro. E lo dimostra chiaramente questo nuovo strumento che sto per presentarvi e che ha decisamente molte marce in piú.
Il dispositivo oggetto dell’articolo è stato gentilmente fornito da Zeroplus – Instrument Division. Le opinioni qui riportate sono del tutto personali e non influenzate in alcun modo dal fornitore del prodotto.
Indice dei contenuti
Cos’é un analizzatore logico
Anche se, con tutti gli articoli che gli ho dedicato e che non manco mai di tirare fuori l’analizzatore logico in tutti gli esperimenti che faccio, dovreste giá sapere cosa è un analizzatore logico… ma ne approfitto per dilungarmi un po’ perché, fortunatamente, non mancano mai nuovi arrivati e ormai questo sito é molto consultato anche dai professori degli istituti tecnici. Quindi gli esperti possono saltare tranquillamente questa parte e passare al paragrafo successivo.
Un oscilloscopio é forse lo strumento piú comune per l’analisi dei segnali. Anche oggi, con i miei figli iscritti al tecnico industriale (incredibile pensare che mia figlia aveva da poco compiuto un anno quando scrissi il primo articolo sul LAP-C 16128!) vedo che nei laboratori scolastici un oscilloscopio é sempre lo strumento piú comune e conosciuto rispetto ad un analizzatore logico, sebbene ormai esistano tanti MSO (Mixed Signal Oscilloscope) che sono sostanzialmente degli Oscilloscopi che hanno anche integrato un analizzatore logico (sebbene con dei limiti).
L’argomento è quindi quello dell’ Analisi dei segnali : ovvero capire come fanno i dispositivi elettronici a funzionare, a comunicare tra loro, ad interfacciarsi con il mondo esterno ma anche “dentro” loro stessi. Un oscilloscopio permette di mostrarci in maniera visiva, sullo schermo integrato nello strumento stesso, come si comportano questi segnali nel tempo: che valore assumono in tensione, con quale periodicitá. Possiamo apprezzare “le forme” che hanno i segnali proprio perché in qualche modo l’oscilloscopio disegna un grafico, in tempo reale, dei valori di tensione che legge man mano e cosí riusciamo a capire la differenza tra un segnale sinusoidale e un dente di sega, ad esempio o, scoprire il motivo per cui un oggetto non funziona piú perché magari in qualche punto non gli arriva piú un segnale che ci si aspettava o gli arriva in maniera diversa da quello che ci si aspetta.
Anche se si tratta di un oggetto ormai di uso comune nei laboratori di elettronica, il pensare a quello che un oscilloscopio é in grado di fare, tuttoggi per me rappresenta una sorta di magia. Un segnale sinusoidale ci appare cosí, con quella specifica forma, proprio perché la tensione varia di continuo con una periodicitá che é espressa dalla funzione trigonometrica seno. L’oscilloscopio quindi, nella fattispecie, puó essere visto come una specie di multimetro piú evoluto che, invece di mostrarti il valore sul display, te lo disegna. La lancetta della benzina nel cruscotto delle vecchie auto, il barometro a lancetta nell’orologio della nonna: sono tutti strumenti analogici: analogico é difatti un termine che deriva da “analogia” ovvero “simile a”. Un valore analogico non é mai “tutto o niente” ma é sempre qualcosa che sta nel mezzo, che rappresenta una quantitá analoga a quello che vediamo coi nostri occhi (il serbatoio della benzina é pieno a metá… é un po’ piú della metá ecc).
Fin’ora vi ho parlato di segnali analogici e dello strumento in grado di visualizzarli. Col passare degli anni é iniziata la transizione dall’elettronica analogica a quella digitale. Ovvero gli apparati hanno iniziato a comunicare non piú usando segnali che potessero assumere qualsiasi valore di tensione, ma soltanto due valori: tutto e niente / tensione presente e tensione non presente, i famosi “Uno e Zero” che vediamo scritti dappertutto e la cui simbologia sta appunto ad indicare che la tensione c’é oppure, semplicemente, non c’é. Perché? Perché permette di avere macchinari piú piccoli, che consumano meno, che hanno una maggiore efficienza e soprattutto una eccezionale immunitá ai disturbi: un disturbo è sempre (diciamo: quasi sempre) qualcosa di analogico: un valore di tensione che non è ne zero né uno. Il livello di tensione del valore analogico, nel caso in cui tutto il sistema sia appunto analogico, viene trasferito tal quale ovvero la linea di trasmissione assumerá lo stesso valore di tensione del segnale, mentre per trasferirlo attraverso un sistema digitale ci sará bisogno di convertirlo in una sequenza di livelli di tensione o assenza di tensione: é a questo punto che si capisce l’importanza di un analizzatore logico. Un segnale analogico ci appare, visivamente, come un’onda quadra: un segnale in cui ci sono solo fronti alti e bassi.
Ok, ma, anche un oscilloscopio é in grado di visualizzare un segnale digitale nella forma di un’onda quadra. Vero. Ma non permette di tirare fuori, automaticamente, quello che il sistema vuole dire con quel segnale: ci prendiamo il segnale e, magari carta e penna alla mano, facciamo le nostre considerazioni, sempre ammesso che conosciamo anche il modo con cui il sistema stia comunicando, altrimenti… c’é da faticare (un bel) un po’. Ma poi in fondo la questione non é nemmeno questa: oggigiorno i sistemi di trasmissione dati digitali non sono fatti con una sola linea di comunicazione (ok, ci sono alcune piccole eccezioni), ma ce ne sono sempre almeno due (si parla piú propriamente di bus di comunicazione) e il numero sale anche di parecchio quando si ha a che fare con bus di comunicazione dati in cui i dati vengono trasmessi in parallelo per poter essere il piú veloci possibile o semplicemente ci sia la necessitá di trasferire moltissimi dati in tempi ragionevoli. Un oscilloscopio raramente supera i 4 canali e anche quelli a 4 canali sono comunque meno diffusi di quelli a 2.
Un analizzatore logico, quindi, é un dispositivo di analisi dei segnali digitali ed oltre ad avere un certo numero di canali (quello oggetto di questo articolo ne ha 32) ha anche una certa capacitá a tirare fuori, automaticamente, delle informazioni che ci tornano utili soprattutto per capire sia come funziona un bus di comunicazione di cui non conosciamo nulla sia per fare anche del debug. Un ulteriore passo avanti é stato fatto con gli analizzatori di protocollo: si tratta sostanzialmente di analizzatori logici che sono peró in grado anche di decodificare in automatico un certo numero di protocolli di comunicazione: collego lo strumento su un bus di comunicazione, gli dico che si tratta, ad esempio, di un bus di comunicazione I2C, specifico a quali linee ho collegato i canali (SDA, SCL in questo caso specifico) e lo strumento automaticamente riconosce e decodifica tutti i pacchetti in transito sulla linea indicandomi chiaramente indirizzi, dati trasmessi e tutto il resto. Nel caso in cui invece non conosco il modo con cui comunicano, mi è comunque utile a visualizzare i dati, raggrupparli, tirare fuori valori significativi e con un po’ di esperienza capire il protocollo..
Parlerò qui di un analizzatore logico PC-Based, ovvero uno strumento che non è dotato di schermo e si collega quindi al PC tramite un suo software. Gli analizzatori logici PC-based sono generalmente molto potenti in quanto è facile aggiornare il software di controllo alle ultime versioni nelle quali vengono fatti miglioramenti e hanno sempre anche la funzione di analizzatore di protocolli (cosa che non è sempre vera, ad esempio, per gli MSO, o quantomeno è limitata a quelli più comunie): grazie all’enorme numero di canali, all’interfacciamento con il PC, alla possibilitá di avere il trigger secondo svariate condizioni che non sono normalmente possibili con altri sistemi, si può arrivare a decodificare automaticamente centinaia di protocolli di comunicazione e qui Zeroplus é ai massimi livelli: attualmente ho contato la bellezza di 128 diversi protocolli di comunicazione e, chiaramente, é un numero sicuramente suscettibile di aumenti man mano che vengono rilasciate nuove versioni del software.
Contenuto della confezione
Questo é quello che si trova nella scatola del LAP-C PRO 32256:
La scatola contiene:
- Analizzatore Logico LAP-C Pro 32256
- Cavo USB3.0 da 1.5m da tipo A (PC) a tipo B (strumento) da 1.5metri
- Pendrive USB metallica, serigrafata, contenente il software
- 4 connettori sonda ‘corti’ 2×5 da 10cm
- 4 connettori sonda ‘lunghi’ 2×5 da 25cm
- 4 cavetti sonda grigi 25cm
- 1 cavetto sonda nero 25cm
- 40 pinzette da collegare ai connettori sonda
- Certificato di calibrazione
- Certificato di garanzia
- Custodia semirigida per il trasporto
Specifiche tecniche
Le specifiche qui riportate sono relative al modello oggetto dell’articolo (il 32256) che attualmente è il top della famiglia Logic Cube PRO, per cui sui modelli più piccoli appartenenti alla stessa famiglia/marca non troverete le stesse funzionalità, e vi rimando a questa brochure: Brochure Analizzatori Zeroplus LAP-C Pro (5 download) per il confronto tra i vari modelli di questa famiglia. Anticipo che, per alcune caratteristiche, farò un approfondimento più avanti.
- Frequenza di campionamento: 2GHz (con 8 canali) – 1GHz (con 16 canali) – 500MHz (con 32 canali) (¹)
- Frequenza di campionamento massima utilizzando un clock esterno: 250MHz (campionamento sincrono)
- Quantitativo totale di memoria onboard: 8Gb (²)
- Quantitativo di memoria per canale: 1Gb (con 8 canali) – 512Mb (con 16 canali) – 256Mb (con 32 canali)
- Trasmissione dati verso il PC: USB 3.0
- Range di tensione selezionabile per il trigger: -6VDC +6VDC
- Risoluzione trigger: 10mV
- Range di tensione applicabile ai canali: -30VDC +30VDC (³)
- Generatore di pattern per I2C, SPI, UART (RS232/422/485), CAN2.0
- Impedenza ingressi: 200kΩ
- Capacitá ingressi: 7pF
- Banda passante massima: 250MHz
- Dimensioni: 126 x 95 x 25 mm
Annotazioni
(¹): Una velocità di campionamento di 2GHz vuol dire che la linea viene controllata ogni 0.5 nanosecondi (1 nano secondo = 1 miliardesimo di secondo), 1GHz ⇒ ogni nanosecondo, 500MHz ⇒ ogni 2 nanosecondi. Altre volte potrebbe essere indicata la velocità di campionamento espressa in MS/s ovvero MegaSamples per second : milioni di campioni in un secondo. Per un sistema digitale, che rileva quindi solo livello alto e livello basso all’atto del campionamento, è la stessa cosa che esprimere la frequenza di campionamento in Hertz, per cui 2GHz possono essere anche scritti come 2000 MS/s. Quando andate a fare i confronti tra i vari analizzatori logici, anche di altre marche, tenete sempre conto che la velocità indicata, qualora non fosse specificato diversamente, è sempre quella ottenibile con il minimo numero di canali in funzione contemporaneamente in quanto rappresenta la velocitá di campionamento massima raggiungibile dallo strumento.
(²): Dato che è facile cadere in confusione nel leggere le unità di misura, con Gb e Mb si indicano, rispettivamente i Gigabits e i Megabits e non i GigaBytes / MegaBytes (ricordo che per il Byte si usa la B maiuscola, per il bit la b minuscola – anche io purtroppo, lo ammetto, mi confondo sempre!). 1Gb = 1 miliardo di bits (ovvero, se vogliamo esprimerlo in bytes, sarebbero 125MB). Altre aziende invece utilizzano la sigla Mpts che sta per Million points (milioni di punti), che é lo stesso dei bits o dei samples. Per un analizzatore di stati logici è normale utilizzare le unità di misura facendo riferimento ai bits dato che i singoli campioni occupano appunto lo spazio di 1 bit (solo o e 1), quindi: fate attenzione quando andate a fare i confronti perchè c’è sempre la tendenza a considerare “meglio” un numero più grande ma ricordate che la vera differenza la fa l’unità di misura utilizzata!
Questo documento di Zeroplus fornisce una spiegazione chiara sulla scelta di quantitativo di memoria e velocità di campionamento.
(³): I ±30VDC ammessi consentono di interfacciarsi in maniera diretta con linee di trasmissione dati, come la RS232, che possono raggiungere tensioni superiori ai 5V massimi con cui potremmo essere abituati nei sistemi digitali, o al di sotto dello 0V, arrivando, nel caso specifico della RS232, anche a ±15V. Approfondisco questa questione più in basso.
Interfaccia strumento
Lo strumento ha un connettore da 25×2 pin alla distanza standard di 1/10 di pollice (2.54mm) per cui adatto ad essere utilizzato con i classici “cavetti jumper” muniti di terminali Dupont (già forniti):
Sottolineo, per chi non ci avesse fatto caso, che i canali sugli analizzatori della Zeroplus seguono lo stesso codice colore usato per le resistenze con l’esclusione del nero (usato giustamente per il segnale di GND) che fa scalare gli indici di una unità: Marrone:0, Rosso:1, Arancione:2, Giallo:3, Verde:4, Blu:5, Viola:6, Grigio:7.
Abbiamo anche il colore bianco che viene peró utilizzato per collegare una sorgente di clock esterna (CK0, CK1, CK2, CK3 – uno per ogni banco di porte). In pratica, se ricordate il codice colori delle resistenze, tenete a mente il valore che assume la prima banda delle resistenze ma escludete il nero, partendo quindi dal marrone. Troviamo quindi corrispondenza dei colori sulle porte dell’analizzatore, sui cavetti e nel software, per cui è decisamente impossibile sbagliarsi ed é sicuramente facile da ricordare.
I canali sono divisi in 4 banchi nominati A, B, C, e D e sono raggruppati in cluster 5×2 a differenza, ad esempio, della serie LAP-C Standard in cui sono invece disposti linearmente e i cavetti flat forniti sono da 8pin in linea. Raggruppando i canali in blocchi da 5×2 consente di avere, sullo stesso cavo flat, anche la linea di riferimento (GND) e l’eventuale clock esterno.
I pin nominati PG0, PG1, PG2 e PG3 sono quelli di uscita per il Pattern Generator di cui parlo piú in basso. T_O e T_I sono rispettivamente Trigger Output (per inviare un segnale di trigger verso l’esterno quando lo strumento rileva un trigger interno e fa quindi partire la misura) e Trigger Input, per avere un segnale di trigger dall’esterno. Parlo meglio di questa cosa piú avanti.
Abbiamo infine altri segnali di GND collegati tra loro e un pin di VDD sui cui é presente una tensione di 3.3V per alimentare eventualmente un dispositivo esterno da controllare.
Lateralmente è presente una porta di espansione coperta da un tappo in gomma: serve a collegare tra loro più strumenti per ottenere un sistema con più canali come spiego più in basso.
Installazione software
Il software utilizzato dalla famiglia di analizzatori Logic Cube PRO si chiama ZP-Logic. Trovate la pendrive USB con l’installazione nella confezione, precisamente nella custodia semirigida all’interno della tasca con la cerniera.
Ad ogni modo, anche se di default il software fa il controllo di nuove versioni all’avvio (a meno che non disattiviate questa funzione) vi indico come potete scaricare la versione sempre aggiornata, ma soprattutto ve lo dico perchè vorreste semplicemente dare uno sguardo al software se non avete lo strumento: potete infatti scaricarlo tranquillamente e, anche se all’avvio cerca un analizzatore logico della famiglia di appartenenza, semplicemente non lo troverà e potete avviare il programma in modalità demo premendo l’apposito tasto “demo” all’avvio del software. Questa cosa la trovo decisamente professionale da parte di Zeroplus perchè consente agli utenti di toccare con mano la bontà del prodotto aiutando ulteriormente l’utente nella decisione dell’acquisto.
Dopo aver installato il software, ad esempio, potete andare nella pagina di un accessorio Zeroplus, il simulatore di protocolli, di cui vi parlerò in un prossimo articolo, scaricare il “Decode File”, scompattarlo, ed aprire uno dei file qui contenuti con il software ZP-Logic per giocherellarci un po’.
Andete sul sito ufficiale e cliccate sulla voce Technical Support > Download
Qui selezionate Logic Analyzers e quindi LAP-C Pro Series e spuntate la checkbox Software:
Premete quindi il tasto Search. Basta scaricare il primo risultato della lista da web o dal cloud:
Anche se compaiono dei download per le diverse versioni dei LAP-C pro, il link del download, per la stessa versione, é sempre lo stesso, quindi vi basta scaricare l’ultima versione piú aggiornata. Quando farete partire l’eseguibile per l’installazione, cliccando sul tasto “Application setup” vengono installati anche i driver per cui non è necessario premere, successivamente, il tasto “Install Drivers”.
Aggiungo, per puro senso di completezza, che viene utilizzato un software diverso per ogni famiglia di analizzatori logici Zeroplus, proprio perchè sono diverse sia le interfacce di comunicazione che le funzionalità degli strumenti stessi: il nome del software per la famiglia Logic Cube (anche detta Logic Cube Standard – strumenti il cui nome inizia con “LAP-C” oppure soltanto “LAP”) è LAP-C Standard, il nome del software per la famiglia Logic Cube Pro (Strumenti il cui nome inizia con “LAP-C PRO” – ovvero questa di cui sto parlando in questo articolo) è, come abbiamo visto, ZP-Logic (ZP-Logic viene usato anche per la famiglia di analizzatori serie LAP-F, che sono strumenti a 40 e 64 canali, e per il ProCision). Il nome del software per il più piccolo analizzatore contenuto nell’Arduino starter kit with logic analyzer (nome dello strumento: “LAP Educator”) è ZP-Studio. Vorrei anche aggiungere che all’epoca del mio primo articolo sul LAP-C 16128 (ormai 15 anni fa), i protocol decoder erano dei plug-in a parte, acquistabili separatamente o in blocchi: già da molti anni non è più così e sono sempre inclusi nel software stesso.
Funzionalitá di base
Vediamo come è costituita l’interfaccia di base del software:
Nella zona A ci sono le “intestazioni di riga” dei segnali dell’analizzatore (Bus/Signal). Selezionando un’ intestazione e premendo F2 possiamo cambiargli il nome mettendo quello che piú ci aggrada (es.: SCL, SCK, DATA ecc) – questa cosa torna utile perché in pratica, se ci fate caso, questo pannello è una scheda-lavoro aperta che puó essere salvata e riaperta successivamente o possiamo tenerne aperte più contemporaneamente : provate ad esempio a premere il tasto “nuovo file”.
La colonna B é quella per settare il/i trigger con le impostazioni di base e ne parlo meglio piú in basso. La zona C é quella in cui compare la rappresentazione grafica dei segnali (le forme d’onda – che tra l’altro possiamo scegliere di visualizzare come onda quadra o onda triangolare). In D impostiamo il quantitativo di memoria da destinare all’analisi: si tratta della memoria interna allo strumento (8 Gigabit totali come dicevamo), espressa in samples/ch (o, che è lo stesso, in bits/ch), quindi 256M equivale a 256 milioni campioni per ogni singolo canale. Vedete che man mano che si sposta quel valore cambia un valore di tempo in alto a destra, che é calcolato anche in base alla frequenza di campionamento, e che indica il tempo in cui lo strumento sarà impegnato a campionare o, che è lo stesso, visualizza il quantitativo di segnale campionato espresso come tempo piuttosto che come numero di campioni. Fino a 512k samples le barre sono di colore verde, da 1M a 256M le barre assumono colorazione arancione (transizione da migliaia a milioni). Dopo i 256M comincia a diminuire il numero di canali a disposizione: vediamo che a 512M il numero di canali diventa 8 (spariscono i canali dei banchi C e D) ed impostando il quantitativo ad 1G i canali diventano 8 (sparisce anche il banco B). Piú é alto il valore di memoria, piú transizioni di segnale riusciremo a catturare, ma sará impiegato anche molto piú tempo.
Con la manopola E o con la casella di selezione al di sotto di tale manopola impostiamo la frequenza di campionamento, ovvero quante volte al secondo le linee di segnale vengono controllate per rilevarne il valore. Una regola generale consiglia di utilizzare sempre una frequenza di campionamento maggiore del doppio della frequenza del segnale che intendiamo campionare, nella pratica è sempre bene utilizzare una frequenza almeno 4 volte superiore. Ovviamente nel caso di segnali sconosciuti andremo per tentativi portandoci su valori alti ed eventualmente diminuendo se necessario. Come spiegavo nel mio paper dell’epoca, non sempre aumentare la frequenza di campionamento porta a risultati buoni: tuttalpiù non porta a nessun miglioramento ma nel frattempo mi limita, inutilmente, la memoria libera a disposizione.
La frequenza di campionamento puó essere scelta in un range compreso tra 10kHz e 2GHz quando la sorgente di timing é fornita dallo strumento stesso (condizione di default, chiamata anche nel manuale Timing Mode). Se vogliamo utilizzare frequenze di campionamento piú basse di 10kHz o se per qualsiasi altro motivo necessitiamo di utilizzare un clock esterno, basta cliccare sulle due freccette affianco al titolo al di sopra della manopola (dove c’é scritto Timing (internal)) per poter passare ad una sorgente di clock esterna (modalitá chiamata State Mode): in tal caso la frequenza del clock puó essere scelta in un range da 0.001Hz a 250MHz e quindi la linea di clock esterno dovrà essere collegata ai corrispondenti ingressi CK1, CK2, CK3, CK4 per ogni banco di porte di ingresso.
In F viene selezionata la posizione del trigger: impostando, ad esempio, tale valore al 50%, metá della memoria sará utilizzata per acquisire la parte prima del trigger e l’altra metá per la parte dopo il trigger. Questa funzione serve in pratica ad allocare un certo quantitativo di memoria alla parte pre-trigger consentendoci di vedere se per caso abbiamo mancato qualcosa di interessante sul segnale. Ad ogni modo parlo meglio del settaggio trigger più avanti.
La tastiera circolare G (Action wheel) contiene le funzioni principali a portata di mano:
Il disco esterno contiene le seguenti funzioni:
- tasto mano/freccia – (si alterna la funzione mano/freccia cliccandovi sopra). Questo cambia la funzionalitá del puntatore del mouse: se sul tasto compare la freccia vuol dire che é attiva la modalitá mano che consente di spostarsi all’interno dei segnali (possiamo, insomma, cliccare sulla forma d’onda e trascinare il segnale), se sul tasto invece compare la mano vuol dire che é attiva la modalitá freccia che invece ci permette di selezionare i segnali e mettere delle barre di controllo.
- tasti next/previous: sposta una eventuale ricerca attiva nel segnale verso destra/verso sinistra
- tasto mostra valori: serve a visualizzare i valori che assumono i segnali all’interno dei segnali stessi. Cliccando ci si alterna tra: non visualizzare alcun valore, visualizza i tempi, visualizza il numero di campioni, visualizza le frequenze. Molto utile per visualizzare, ad esempio, le durate dei fronti alti e bassi dei segnali rilevati.
Il disco centrale contiene:
- Tasto play verde: avvia l’acquisizione (la stessa funzione viene eseguita dal tasto play verde nel menù in alto e dal tasto posto sul corpo dello strumento)
- Tasto doppia freccia: avvia la cattura automatica a ripetizione, ovvero fa stoppare e ripartire l’acquisizione in base a condizioni che vengono impostate all’atto della pressione del pulsante stesso
- Tasto freccia circolare (auto-cattura): uguale ad avvia l’acquisizione ma sceglie la frequenza di campionamento autonomamente
Nella zona H compare una finestra multi-scheda con, di default, attivo il navigator, che mostra una porzione molto piú ampia e rimpicciolita di segnale all’interno della quale si puó spostare una finestra rettangolare per aggiornare la vista nel pannello superiore. Nella scheda chiamata packet list invece compariranno i pacchetti decodificati nel momento in cui abbiamo avviato un’acquisizione con un protocol decoder attivo oppure abbiamo raggruppato i canali in un bus (vi faccio un esempio più in basso quando parlo del trigger applicato sul valore di un bus).
Funzionalitá peculiari
Illustro qui, descrivendole, alcune caratteristiche potenti di questo strumento e che ritengo tra le più interessanti, funzionalitá che forse, e sottolineo forse, non troverete (quanto meno tutte insieme) in altri strumenti simili. Questo perchè sia facile per voi fare anche dei confronti e capire soprattutto quali sono le funzionalità, da imparare ad utilizzare, che rendono questo strumento un vero alleato nel nostro laboratorio di elettronica.
Modalitá di Trigger
Il settaggio del trigger é il primo step dal quale parte sempre una qualsiasi acquisizione di segnale sia esso digitale che analogico, non per niente la parola trigger in italiano viene tradotta con “grilletto” richiamando in qualche modo la figura del giudice di partenza (anche chiamato starter) che è la persona che da un colpo di pistola per segnalare agli atleti la partenza della gara.
Sappiamo bene cosa sia il trigger in un oscilloscopio e vale lo stesso per un analizzatore logico: é una particolare condizione che un determinato segnale deve rispettare perchè lo strumento parta ad avviare l’acquisizione e quindi determina anche il punto di origine del segnale visualizzato sull’asse dei tempi. Su questo strumento abbiamo la possibilitá di settare i trigger “classici” secondo le condizioni: livello alto, livello basso, transizione da alto a basso, transizione da basso ad alto e transizione qualsiasi, funzionalità che di norma si trovano anche sull’oscilloscopio. Questa impostazione del trigger é quella di base che si fa cliccando semplicemente il pulsante quadrato affianco al canale e che normalmente ha impressa una X grigio chiaro sopra (che sta ad indicare: nessun trigger):
Ad esempio, nell’immagine precedente ho detto allo strumento che il trigger deve essere fornito dal canale A0 sul fronte di salita. Cliccando ulteriormente il quadratino si cambia il tipo di trigger (fronte di discesa ecc). Altra caratteristiche da settare per il trigger é la scelta della posizione del trigger mediante lo slider posto nel pannello di controllo a destra:
Impostandolo, ad esempio, al 10% lo strumento memorizzerá un 10% (sul quantitativo di memoria impostato per l’acquisizione) del segnale precedente al trigger. Queste due impostazioni rapide appena viste sono quelle di base: condizione e posizione. Non conviene mai mettere la posizione ad un valore vicino allo zero perchè potremmo perderci parte di segnale che potrebbe essere interessante. Se mettiamo la posizione al 100% invece… prendiamo solo il segnale prima del trigger e niente dopo.
Lo strumento, per quanto riguarda il settaggio del trigger, consente di andare decisamente molto oltre. Possiamo, ad esempio, impostare il livello di tensione minimo che il segnale di trigger deve soddisfare andando in Acquisition Setup, raggiungibile dal menú Acquisition oppure cliccando sull’apposito pulsante con chiave inglese e cacciavite. Qui nella scheda sampling possiamo impostare il livello di tensione minimo per i 4 banchi di porte dell’analizzatore, addirittura separatamente:
Possiamo andare da -6V a +6V a step di 0.1V: giá questa non é una cosa da poco dato che non tutti gli strumenti offrono un settaggio del trigger così capillare, ma soprattutto il fatto di avere un livello di tensione diverso per i vari banchi. Ma andiamo avanti perché queste sono ancora funzionalitá di base. É possibile settare, sempre dalla stessa finestra (Acquisition > Acquisition Setup, scheda trigger), oppure far comparire direttamente questa scheda andando in Acquisition > Trigger setup (quick), delle situazioni ancora piú articolate definendo forme d’onda, ritardi, pattern da rispettare ecc:
Ci sarebbero tantissime altre impostazioni accessibili ancora da Acquisition > Trigger Setup (manual) – che permette di impostare vari livelli di triggering e Trigger Options per le quali vi rimando al manuale perché si tratta di cose davvero complesse. Mi soffermo invece sul Protocol Trigger che normalmente é disattivato. Per poter attivare questa voce di menú é necessario dapprima includere un protocol decoder dal menú (Acquisition > Add Protocol Decoder) e scegliere uno dei protocolli per i quale sia supportata la funzionalità di protocol trigger (attualmente sono I2C, I2S, SPI, SVID, UART, CAN2.0B), dopodiché si seleziona il bus appena aggiunto (non il canale ma il bus, che ha una sua nuova “intestazione di riga”), cliccandoci sopra, e si ritorna quindi in Acquisition, nel quale ora sará attiva la voce. Cliccando su tale voce, protocol trigger, si presenta una finestra in cui possiamo impostare il trigger secondo le caratteristiche proprie del bus scelto. Nell’immagine seguente potete vedere, ad esempio, come si presenta tale finestra nel caso in cui il bus scelto sia I2C: posso scegliere di avviare l’acquisizione solo quando un determinato device sul bus avvia la comunicazione, specificandone quindi l’indirizzo, ma potrei usare una combinazione di caratteristiche in sequenza oppure potrei scegliere di triggerare solo quando il campo dati assume un particolare valore:
Vi faccio ancora un altro esempio: stavo controllando il bus indirizzi di un vecchio Z80 su di una scheda PLC di fine anni ’90. Ho collegato gli ingressi dell’analizzatore in sequenza sugli I/O del bus dati della CPU (che è un bus a 16bit), ovvero A0 dell’analizzatore su A0 dello Z80 e, finito il banco A, ho inziato col banco B per terminare quindi con B7 sul segnale A15 dello Z80. Facendo in questo modo ho potuto raggruppare i 16 segnali in un unico bus (basta selezionarli e col tasto destro si clicca su “add to bus”) e quindi leggere direttamente, nella finestra packet list, il valore a 16 bit ottenuto in base allo stato delle linee:
A questo punto cliccando col tasto destro su un valore assunto dal bus, si puó direttamente impostare quel valore come valore di trigger:
Ovvero il trigger scatterá quando lo stato del bus (determinato dalle 16 linee dati) assumerá quel preciso valore.
Capite che queste funzionalitá sono davvero potenti e consentono di scremare parecchio la ricezione dei dati permettendoci di focalizzare l’attenzione solo su quello che ci interessa: funzionalità che hanno una potenza enorme soprattutto quando su un bus di comunicazione sono presenti decine di dispositivi che comunicano tra di loro per cui possiamo fare sicuramente un utilizzo migliore della memoria.
Prendete ad esempio uno strumento che non abbia la possibilità di avere un protocol trigger e vi trovate nella situazione di dover controllare un bus con tantissimi dispositivi collegati: sarete costretti ad acquisire tutta la comunicazione e magari arrivate al punto che la memoria sul dispositivo finisce, perchè piena di informazioni inutili, e non riuscite ad acchiappare quello che vi interessa.
Tutte queste modalitá sono viste fin’ora sono considerate trigger interni, ovvero é lo strumento che rileva delle condizioni da noi impostate e avvia l’acquisizione. In aggiunta abbiamo la possibilitá di avere un trigger esterno, da collegare all’ingresso T_I e fornire anche un segnale di trigger verso l’esterno nel momento in cui lo strumento rileva le condizioni di trigger impostate, qualsiasi esse siano, segnale che viene riportato sull’uscita T_O: funzione utile per avviare ad esempio un altro strumento.
Attivitá degli ingressi
Questa funzionalitá é davvero simpatica: possiamo visualizzare, in tempo reale, lo stato logico degli ingressi dell’analizzatore logico. Dal menú Analysis > Signal Activity > Signal Statuses viene visualizzata una finestra nella quale sono mostrati i livelli logici dei segnali applicati agli ingressi dell’analizzatore in tempo reale:
Potete anche regolare la frequenza di rilevamento per essere sicuri di non perdervi nulla. Questa é una funzione che hanno anche i PLC ad esempio, sui quali c’é sempre un led per ogni I/O che ne indica lo stato logico, qui abbiamo anche uno stato di transizione di mezzo, indicato in arancione, che indica in pratica che il livello logico non é fisso ma c’é probabilmente un segnale attivo che lo fa variare di continuo. Anziché entrare nel menú per attivare questa vista, potete anche premere il tastino (a me sembra una telecamera) con il pallino rosso affianco, nella colonna degli ingressi, in basso:
Dallo stesso sottomenú (Analysis > Signal Activity) possiamo selezionare Real-Time Frequencies che mostra le frequenze rilevate (massimo rilevato o real-time):
Anche qui potete evitare di entrare nel menú cliccando il tastino a forma di telecamera con un’onda, affianco a quello visto prima:
Queste funzionalità sono molto utili per il semplice fatto che quando andiamo a collegarci su un bus di comunicazione possiamo fare un check preliminare delle linee di comunicazione controllandole dapprima con queste funzionalità appena mostrate e poi avviare l’acquisizione oppure possiamo semplicemente avere a disposizione queste schermate per controllare l’attività real-time di un apparato durante il suo normale funzionamento.
Streaming diretto
Dal Menú Mode é possibile selezionare la voce Protocol Analyzer Setting che consente lo stream diretto dei dati verso il PC a 200MB/sec, quindi senza utilizzare la memoria interna dello strumento, con decodifica in tempo reale per alcuni protocolli. Questa modalitá é molto interessante perché é qualcosa di molto rapido, che consente di visualizzare subito i pacchetti trasmessi e, teoricamente, puó andare avanti all’infinito a seconda dello spazio disponibile sul PC e/o fino a quando non si preme lo Stop: ad ogni modo da questa prima finestra si imposta il tempo di acquisizione piuttosto che il quantitativo di memoria, dato che, appunto, non stiamo usando la memoria interna. Per sfruttare questa funzione é comunque necessario un computer abbastanza potente che abbia chiaramente una porta USB3.0.
Ne approfitto per fare una ulteriore considerazione: un analizzatore logico dotato di memoria interna, come in questo caso, consente l’analisi e il controllo di protocolli molto veloci proprio perché non c’é il collo di bottiglia causato dal collegamento al PC: i dati vengono salvati nella memoria interna dello strumento, il che consente di raggiungere velocitá elevatissime, e successivamente trasferiti al PC. Gli analizzatori logici non dotati di memoria interna possono solo fare lo streaming diretto e quindi sono limitati solo a pochi protocolli di comunicazione, che diminuiscono ulteriormente se viene usato, per il collegamento, la USB2.0
La funzionalitá in oggetto é usabile solo con i protocolli elencati (I2C, UART, SPI, I2S, CAN2.0B, CAN FD, SVID e Flexray 2.1A). Una volta premuto ok compare una sorta di foglio di lavoro in cui verranno memorizzati i dati man mano che vengono ricevuti. Prima di premere il pulsante Start per avviare l’acquisizione possiamo premere il tasto Setting per settare altre funzioni nonché scegliere a quali ingressi dello strumento collegare le linee dati.
A fine acquisizione o dopo aver premuto Stop si ottiene qualcosa del genere:
Non viene quindi visualizzato il grafico con le forme d’onda, come per una normale acquisizione. Da qui possiamo andare a cercare ció che vogliamo nella tabella: indirizzi, dati ecc
Registrazione lunga
Questa modalitá è accessibile da Mode > Long Time Record. É una modalitá simile a quella precedente appena vista, che consente quindi di eseguire registrazioni molto lunghe di segnali, anche per giorni, sfruttando la memoria del computer. In questo caso verranno visualizzati i segnali anziché la tabella, ed é una funzione che si applica ai canali, a gruppi, piuttosto che ad un bus con il suo protocollo ben definito: possiamo quindi registrare per lungo tempo piú segnali, qualsiasi essi siano e poi, selezionando le linee, possiamo eventualmente applicare un protocol decoder qualsiasi ai segnali ricevuti, per decodificarli.
Pattern Generator
Questa funzionalitá é decisamente una cosa esagerata: possiamo simulare un bus di comunicazione (I2C, UART, SPI, CAN2.0B – non saprei dirvi se é possibile farlo anche con altri protocolli). Cliccando su Mode > Pattern Generator compare questa finestra:
Cliccando Open Pattern File possiamo caricare un file excel in cui é definito il pattern da eseguire. Zeroplus mette a disposizione dei files giá pronti nella cartella di installazione del software, il percorso é normalmente C:\ZP\PC-Based Instrument_2010\ZEROPLUS\ZP-Logic\Standard\PG Files :
Dopo aver selezionato un file la finestra si aggiorna riportando le caratteristiche del bus definite nel pattern:
Possiamo selezionare il livello di tensione del bus da 1.5 a 5V e scegliere se ripeterlo una volta sola, quante volte o all’infinito (Repeat all). Una volta premuto Start la finestra rimane attiva ed eventualmente possiamo premere Stop per fermare la procedura nel caso in cui abbiamo selezionato Repeat all. I segnali saranno riportati all’esterno tramite i pin dell’analizzatore contrassegnati come PG0, PG1, PG2 e PG4, oltre ovviamente al pin di GND.
Aprendo uno di quei file Excel vediamo subito che non é poi cosí difficile da capire. Ad esempio quello per l’I2C:
Nelle colonne A e B ci sono i parametri principali del protocollo di comunicazione, segue quindi una colonna C sempre vuota per separare la zona di sinistra (di “setup”) da quella di destra con i dati, dopodiché ci sono piú righe in cui sono riportati i pacchetti da inviare cosí come normalmente lo strumento li riporta quando andiamo ad utilizzare un protocol decoder. Lo 0x a quanto pare si mette una volta sola per indicare che i dati a seguire sono espressi in esadecimale. Capite che non é difficile, a questo punto, fare un file personalizzato in cui diremo allo strumento di fare finta di essere “qualcosa” su un bus di comunicazione.
Chiaramente mentre lo strumento fa questa cosa non possiamo contemporaneamente anche fare un’analisi dei segnali (non possiamo collegare le uscite PGx agli ingressi dell’analizzatore e avviare contemporaneamente generazione di pattern e acquisizione segnali, anche perchè in una situazione reale non avrebbe alcun senso!).
Per testare questa funzionalitá ho collegato alle uscite PGx dello strumento l’altro mio analizzatore logico, il LAP-C 16128, giusto per capire meglio come funzionava questa cosa e spiegarvela qui: é chiaro che in una situazione reale questo setup non ha nessun senso e, invece, possiamo collegare i pin PG ad un Arduino, ad esempio, per simulare il funzionamento di un sensore. Ho potuto fare questo test utilizzando entrambi gli strumenti dallo stesso PC in quanto la serie LAP-C utilizza un software diverso alla serie LAP-C Pro.
Interfacciamento diretto con RS232, Rs422, RS485
Gli analizzatori logici della Zeroplus possono interfacciarsi con segnali digitali che abbiano un livello di tensione compreso nel range di ±30V. Ad esempio per la RS232 è definito, da standard, un livello basso da 3 fino a 15V e un livello alto da -3 fino a -15V (il range da -3V a +3V non é ammesso).
Tale interfaccia (così come anche RS485, RS422, RS423 che pure utilizzano valori di tensione negativa, anche al di fuori del range dei ±5V) può essere collegata direttamente sull’analizzatore Zeroplus essendo questo ±30V tolerant.
Su molti analizzatori logici presenti sul mercato, invece, non è possibile collegare un analizzatore logico direttamente su una di queste interfacce di comunicazione appena citate perchè accettano solo un range 0÷5V. Tenete conto di questo fattore in una eventuale vostra scelta se volete utilizzare il vostro strumento soprattutto in campo industriale (ma anche no, dato che il rischio di avere un picco al di fuori dei 5V c’è sempre!).
Stack di più strumenti
Gli analizzatori logici della famiglia Logic Cube / LAP-C (solo i modelli a 32 canali) e Logic Cube PRO / LAP-C PRO possono essere collegati in cascata tra loro, fino ad un numero massimo di 4.
So in anteprima che ad Aprile di questo anno dovrebbe essere rilasciata una nuova versione del software che consente un collegamento di 5 LAP-C PRO in cascata
Perchè? Per andare a formare un unico sistema dotato di più canali e/o piú memoria. Per cui se avete bisogno, ad esempio, di analizzare 63 canali, potete collegare in cascata due LAP-C PRO 32256. Il numero di canali ottenibili, in questo caso non è 64 (32+32) ma 63 in quanto un canale viene sempre “sacrificato” per ricevere un segnale di sincronismo dallo strumento precedente, quindi con 4 strumenti si arriva a (32*4 -3)=125 canali e con 5 si arriverà quindi a 156 canali. Vi sembrerà strano eppure ci sono alcune applicazioni particolari che richiedono questo numero di canali così elevato. Nella sezione Download più in basso vi ho messo un documento che illustra meglio questa che è un’altra funzionalità non da poco e che rende sicuramente tale strumento molto più longevo di tanti altri.
Collegamento con un Oscilloscopio (DSO)
Grazie al fatto che molti produttori di oscilloscopi hanno aderito ad alcuni standard di comunicazione per i loro strumenti, è possibile collegare insieme, attraverso il PC, un oscilloscopio e l’analizzatore logico per poter visualizzare nel software ZP-Logic sia i segnali catturati dall’oscilloscopio che quelli catturati dall’analizzatore logico:
Nell’immagine precedente vedete che il LAP-C Pro è utilizzato come master, ovvero il trigger viene rilevato dall’analizzatore logico e questo, mediante l’uscita Trigger Out, triggera l’oscilloscopio. E’ possibile chiaramente fare l’inverso. Non è possibile ovviamente farlo con qualsiasi oscilloscopio e per ora gli strumenti supportati sono i seguenti:
Per ogni marchio va scaricato il driver apposito dal sito del rispettivo produttore. Zeroplus ha realizzato un documento dove approfondisce questa caratteristica, che è comunque spiegata bene anche nel manuale. Dal menù Acquisition > Aquisition Setup scheda Sampling si clicca il tasto DSO Connection
Compare una finestra in cui si impostano alcuni parametri per la rappresentazione grafica dei segnali ricevuti e si clicca quindi il tasto DSO Settings:
Nella finestra che compare possiamo impostare il marchio dell’oscilloscopio collegato e altri parametri che cambieranno in base al marchio selezionato:
Decodifica immagini
Questa funzionalità mi ha lasciato a bocca aperta. Alcuni protocolli di comunicazione che possiamo decodificare con questo analizzatore sono relativi a display o sistemi di trasmissione immagini: come quelli dei display alfanumerici da 16 caratteri per 2 righe (basati sul controller HD44780 e simili), i display grafici da 128×64 basati sul controller ST7920, display a led a 7-segmenti ed altri. Oltre a decodificare i pacchetti possiamo addirittura visualizzare l’immagine come apparirirebbe sul display! Dopo aver raggruppato le linee dati nel bus apposito per la decodifica, basta selezionare il bus e cliccare su Analysis > Image Decode
Nota: tale voce di menù non è attiva se il protocollo non è supportato, se non abbiamo selezionato il bus o se il sofware è ancora in stato di decodifica segnale: condizione che si nota in basso a destra nella barra di stato del programma se compare la scritta “packet decoding” seguita da una percentuale o semplicemente “Please wait”:
In base al protocollo compaiono finestre differenti. La prima finestra in genere consente di settare delle opzioni, dopodichè in tale finestra è presente un tasto Image Display. Ad esempio per il bus LCD12864 compare una cosa del genere (ho collegato allo strumento il Protocol Simulator di cui vi parleró in un prossimo articolo, settato per generare un esempio di LCD12864):
E’ possibile mettere in loop l’immagine per fare in modo che vengano visualizzati eventuali cambiamenti nel display oppure scorrere frame per frame (chiaramente se dalla cattura sono stati acquisiti tutti i frames). Per il display LCD1602 è presente addirittura il tasto play di acquisizione che visualizza l’immagine direttamente man mano.
Questa funzionalità è attualmente presente per i seguenti protocolli: 7-segment LED, CCIR656, CCIR601, CMOS image, DM114/115, DMX512, LCD12864, LCD1602, LED Pitch Array, LG4572 (che sono tutti contenuti nella categoria Optoelectronics quando andiamo ad aggiungere un protocol decoder da Acquisition > Add Protocol Decoder).
Qui su Instagram ho pubblicato un post in cui facevo l’esempio di questa funzione applicata al mio Super Square Waves Generator.
Teardown LAP-C PRO 32256
Ho aperto lo strumento per vedere come è fatto all’interno, perchè sapete bene che sono curioso (e questo aiuta sempre a scoprire nuove tecnologie, modi di operare ecc) e mi aspetto che con tutte queste caratteristiche, e con il prezzo che ha, anche la costruzione sia eccellente. É un atto dovuto, per me, dal momento che vi sto parlando di uno strumento che ha un certo costo e voglio farlo al meglio possibile, ma voi non fatelo assolutamente perché viene invalidata la garanzia essendoci un sigillo. Così è come si presenta all’interno:
Il cuore del sistema è costituito da una FPGA della Xilinx appartenente alla famiglia ARTIX-7. Alcuni analizzatori logici sul mercato utilizzano, ad esempio, una Spartan-6 o Spartan-7, che hanno caratteristiche inferiori (non sono esperto di FPGA ma mi sono documentato direttamente sul sito della Xilinx, questo video fa un po’ di comparazioni tra le varie famiglie, anche questo sito spiega qualcosa di interessante), ovviamente tutto è comparato al costo e alle caratteristiche finali che uno strumento ha. Appartengono a categorie ancora più economiche quelli che non usano una FPGA quanto piuttosto un microcontrollore.
La memoria, che sappiamo essere dalle caratteristiche, di 8Gb è costituita fisicamente dai due chip marcati D9SHD affianco alla FPGA, questi sono in formato FBGA e prodotti dalla Micron. Dal momento che il formato della memoria non consente una marcatura estesa e che i codici di queste memorie sono abbastanza lunghi, molti produttori utilizzano degli shortcode che conoscono soltanto loro, per fortuna Micron mette a disposizione un part decoder da cui vediamo che le memorie utilizzate sono delle MT41K256M16TW-107:P
ovvero delle velocissime SDRAM di tipo DDR3 operanti a 0.993GHz aventi la capacità di 4Gb l’una (8 banchi a 16bit da 256Mb l’uno per la precisione). Insieme fanno appunto gli 8Gb dichiarati e, probabilmente, anche i 2GHz di velocità di campionamento lavorando in parallelo.
Sempre sulla parte superiore della board c’é un CYUSB3014 della Infineon che si occupa della comunicazione USB Super Speed che ci consente di avere sullo strumento una porta USB3.0 che, oltre a velocizzare tantissimo il trasferimento tra memoria interna e PC, consente come avete visto di fare lo streaming diretto con decodifica in tempo reale di alcuni protocolli di comunicazione. Un ADP5052 si occupa della regolazione e distribuzione di tensione.
Ogni canale ha un buffer di ingresso a sé stante realizzato a componenti discreti di cui purtroppo non so dirvi di piú perché il livello di miniaturizzazione é alto, ma é sicuramente grazie a questi stadi di ingresso che si possono collegare segnali in ingresso DC nel range di ±30V.
Oltre alla porta di espansione che é visibile dall’esterno, c’é un altro connettore interno da 7×2 pin, con passo direi intorno al millimetro e mezzo, nonché alcuni jumper: posso immaginare che siano tutte connessioni di programmazione/test interni di qualitá che è bene non toccare.
Nella parte inferiore dello strumento ci sono anche due LM732, che sono amplificatori operazionali ad altissime performance. Trovandosi lì nei paraggi ed essendo costituiti ognuno da 2 amplificatori, potrei supporre che pilotano le uscite del pattern generator. Sono presenti anche due EEprom della Microchip di tipo 24FC1025 su cui immagino ci sia parte del firmware dello strumento (dato che la gran parte è contenuta nella FPGA).
Conclusioni finali
Lo strumento presentato non è sicuramente un oggetto economico per molti in quanto è rivolto ad un’utenza professionale, è sicuramente quanto di meglio sia presente sul mercato attualmente per la fascia di prezzo a cui appartiene e l’assistenza è il top: Zeroplus risponde prontamente ad ogni richiesta e pubblicano spesso dei documenti (link al paragrafo succesivo) in cui vengono approfonditi alcuni temi (molto interessante, ad esempio, questo documento in cui spiegano come generare un codice per Arduino usando ChatGPT e poi eseguire il debug con l’analizzatore logico). In un prossimo articolo vi illustrerò come si svolge, passo passo, l’analisi di un bus di comunicazione andando ad utilizzare un protocol decoder, introducendovi anche un simpatico tool prettamente educativo prodotto da Zeroplus di cui vi ho giá anticipato qualcosa in questo articolo.
Commenti
Se avete domande o commenti, potete farlo su Bluesky sotto questo post: https://bsky.app/profile/me.settorezero.com/post/3lhdxbfebqs2k
Links
- Pagina ufficiale LAP-C Pro 32256
- FAQ
- Acquisto su Eleshop
- Distributori Zeroplus
- Paper rilasciati da Zeroplus con spiegazioni tecniche e applicazioni pratiche
Downloads
- Brochure Analizzatori Zeroplus LAP-C Pro (5 download)
- Guida Rapida (3 download)
- Collegamento in cascata di più analizzatori LAP-C (3 download)