a
La home page di Lorenzo
Home

FidoCAD
    Introduzione
    FidoCAD Win
    FidoCAD FAQ
    FidoCAD sources

Elettronica
    Oscilloscopio
    Misurare la potenza
    CS low-cost
    SMD for dummies
    PIC16x84
    Propic2clone
    IR-displ

Software
    EZ Tunnel
    Varie

Varie
    Segnalare lo spam

Links
Forum
Guestbook
Contattami

Ritirare le truppe italiane dall'IRAQ:

Si

No

Risultati

Schema a blocchi

Dopotutto anche un oscilloscopio digitale (almeno, quello che costruirò io) ha un'architettura piuttosto semplice:

La struttura è modulare. I blocchi contrassegnati dai numeri 1...N costituiscono i moduli degli eventuali canali dell'oscilloscopio. Ogni modulo è collegato su un bus comune supervisionato da una CPU, che si occupa anche dell'I/O da e verso il PC.
Segue una descrizione dei blocchi che costituiscono ciascun canale, con una possibile scelta dei dispositivi elettronici a disposizione per implementarli.

  • Cond (blocco di condizionamento): adatta il segnale in ingresso in modo che esso possa essere gestito dall'ADC. Svolge diverse funzioni: protezione da spikes o sovratensioni; amplificazione o attenuazione del segnale; filtraggio delle componenti del segnale che violerebbero il teorema di Nyquist. Per amplificare/attenuare un segnale acquisito a otto bit è inutile usare un costoso PGA con controllo digitale; sono sufficienti pochi operazionali ad alta velocità (come l'AD8057 della Analog Devices, 1.61 € da RS), switch analogici e resistenze di precisione. Per quanto riguarda il filtraggio, dopo qualche ricerca ho concluso che è molto difficile riuscire a implementare un filtro programmabile a basso prezzo e con componenti facilmente reperibili; per ora credo che mi limiterò a filtrare le componenti a frequenza superiore a quella massima dell'ADC, e a verificare i risultati.
  • ADC: è il convertitore analogico-digitale, il cuore dell'oscilloscopio. RS dispone di due modelli interessanti: l'ADS830 della Burr-Brown (60 MSPS, 7.32 €) e il TSA0801 della ST (40 MSPS, 5.75 €). In linea di principio ho sempre trovato i dispositivi della Burr-Brown all'altezza della situazione, e 10 MHz in più credo che valgano due euro scarsi in più. Inoltre l'ADS830 ha un package molto più semplice da gestire (un SO20) ed è pin-to-pin compatibile con il suo fratello maggiore a 80 MSPS, l'ADS831. Sono quindi orientato verso il prodotto della BB.
  • Mem: è il buffer di ciascun canale. La memoria viene utilizzata come buffer circolare e viene continuamente riempita dai nuovi campioni acquisiti dall'ADC, in modo che in ogni istante siano disponibili gli ultimi N campioni (con N dimensione della memoria). Fortunatamente le SRAM non costano più un patrimonio come una volta, così ad esempio una CY7C199-15 della Cypress (32k*8, 15 ns) costa appena 3.42 € da RS. E 32768 campioni sono più che sufficienti per i nostri scopi; anzi, probabilmente la banda messa a nostra disposizione dal bus USB ci obbligherà in certi casi a utilizzarne meno!
  • CPLD: è la logica programmabile che si occupa dei compiti "ausiliari" (come il pilotaggio del guadagno del PGA), ma la sua funzione principale è quella di regolare il riempimento della SRAM. In linea di principio questa sarebbe un'operazione piuttosto semplice; ciò che complica tutto è la gestione del trigger, che deve necessariamente essere svolta dalla CPLD (ne parlerò nel prossimo capitolo). Anche le CPLD hanno ormai dei prezzi abbastanza affrontabili; ad esempio una XC9572XL-10TQ100 (72 macrocelle, 100 MHz, apparentemente sufficiente per il nostro design) costa 7.82 € da RS.

Supponendo di utilizzare i dispositivi ipotizzati e facendo una stima per largo eccesso risulta un costo di 25 € per canale, che mi sembra molto buono.
Segue ora la descrizione dei blocchi rimanenti del sistema, che sono comuni per tutti i canali.

  • Clock: è il generatore della frequenza di campionamento di tutti i canali ADC (sarebbe stato interessante permettere la selezione della frequenza per ogni singolo canale, ma per ora ho deciso di ignorare questa possibilità).
  • CPU: il microprocessore/controllore principale. Esso sostanzialmente dovrà limitarsi a gestire la comunicazione sul bus USB e trasferire in modo abbastanza "stupido" (e lentamente, alla frequenza di aggiornamento del display) i dati dalle memorie di ciascun canale verso il PC; i compiti critici in termini di velocità sono svolti dalle CPLD, per cui non è necessario impiegare una CPU particolarmente potente. Ho scelto il PIC16F877 per una serie di vantaggi che illustrerò nel capitolo dedicato alla scheda madre.
  • USB: l'interfaccia di comunicazione USB. Con i dispositivi di FTDI tutta la gestione "complicata" del protocollo USB (endpoint, descrittori e in generale tutto il protocollo a basso livello) viene nascosta dietro a un puro e semplice buffer FIFO, una pipe bidirezionale con due flag che segnalano quando il buffer in trasmissione è vuoto e quello in ricezione è pieno. In particolare il FT8U245AM è un dispositivo con interfaccia parallela a otto bit che sembra fatto al caso nostro. Questo è uno dei pochi componenti che RS non ha, ma per fortuna esistono diversi metodi per reperirlo, ad esempio su Elettroshop o su questo shop online svedese (un sentito ringraziamento a Gabriele Bellini per entrambe le segnalazioni!).

 

Indice

(precedente) Principio di funzionamento di base di un oscilloscopio

(prossimo) Il firmware della CPLD