La scheda madre
Grazie alla modularità
del DSO e al buon numero di funzioni gestite direttamente dai moduli di
acquisizione, la scheda madre deve soltanto rivestire il ruolo di arbitro e interfaccia fra le
parti e quindi è abbastanza semplice. A un certo momento
avevo pensato di demandare a ciascun modulo persino la generazione del clock,
poi - per motivi che spiegherò - sono tornato sui miei passi.
Come ho illustrato nel capitolo
dello schema a blocchi del DSO, la scheda madre è composta sostanzialmente da
tre sezioni:
- La CPU. Ho optato per
un PIC16F877 perché permette di effettuare l'in-circuit debugging a
bassissimo costo, ha un buon numero di I/O, è facilmente reperibile e ha
una potenza più che sufficiente per i nostri scopi;
- L'interfaccia USB.
C'è ben poco da aggiungere, tutte le funzioni necessarie sono assolte dal
chip (benedetto!) dell'FTDI;
- Il generatore di
clock. Paradossalmente questa è stata la sezione che mi ha dato più da
pensare: generare un clock programmabile fino a 60 MHz e in modo economico
è meno semplice di quanto si pensi! Le problematiche sono due: la
generazione del clock in sé e per sé, e la sua successiva
"trasmissione" su tutti i punti necessari del sistema. Per quanto
riguarda la tecnica di generazione, le opzioni sono sostanzialmente due:
generare un clock ad alta frequenza e poi ridurlo con un divisore
programmabile, oppure utilizzare un PLL. La seconda soluzione permette di
ottenere una maggiore flessibilità e libertà nella generazione del clock,
ma rende necessaria un'attenta progettazione e scelta dei componenti (e RS
non è che disponga di una vasta gamma di PLL e VCO...); ho optato quindi
per la soluzione col divisore programmabile, avvalendomi di una CPLD da
pochi euro che implementa un divisore a 16 bit con caricamento seriale.
Per quanto riguarda invece la trasmissione del clock sui vari moduli, si
prospettavano ancora una volta due differenti soluzioni: la generazione
"in loco" su ogni modulo, oppure la generazione centralizzata
sulla scheda madre e successiva trasmissione. La generazione in loco
è vantaggiosa in termini di flessibilità (in linea teorica si potrebbero
adottare delle basi dei tempi diverse per ciascun canale!) e di
"pulizia" del segnale, ma è più costosa e complessa da gestire.
La generazione centralizzata è più semplice e quindi economica, ma ha
l'evidente svantaggio di rendere necessaria la trasmissione di un segnale ad
alta frequenza su un percorso relativamente lungo. Probabilmente il DSO
sarà costruito "a piani", con la scheda madre e tutti i moduli
accatastati sopra e sotto e connessi a un backplane comune tramite degli
strip; fra gli strip, lo sviluppo tridimensionale e le lunghezze che
necessariamente si dovranno raggiungere, credo che rimarrebbe ben poco del
segnale di clock come noi lo conosciamo! Per questo motivo, sebbene abbia
optato per la soluzione centralizzata per evidenti motivi di semplicità, ho
deciso di trasmettere il clock tramite degli LVDS. L'acronimo sta per
Low Voltage Digital Signaling, si tratta sostanzialmente di
transceivers bilanciati che utilizzano segnali a bassa tensione, molto usati
in circostanze come queste (trasmissioni di segnali veloci fra più schede
di uno stesso sistema). Questo dovrebbe risolvere sia il problema della
"pulizia" del clock che quello degli eventuali disturbi irradiati
sul resto del circuito.
Per ora non mi soffermo
oltre nella descrizione della scheda madre; in futuro si dovrà buttare giù una
documentazione decisamente più esaustiva!
Indice
(precedente) Blocco
di acquisizione analogico
(prossimo) E
adesso?
|