Linee di trasmissione

Misura del tempo di propagazione di un cavo RG58

In fase di sviluppo Stesura preliminare In fase di sviluppo

In questa pagina sperimenteremo l'uso di due linee di trasmissione con impulsi digitali: un doppino CAT5 ed un cavo coassiale RG58. I risultati sono analoghi a quanto descritto in questa pagina.

Cavo coassiale

Per effettuare questa prova è utile disporre di (nota 1):

Le forme d'onda mostrate in seguito sono state ottenute con un generatore di impulsi Iwatsu PG-230 (un po' vintage...) con un tempo di salita di 5 ns ed un oscilloscopio Picoscope 3405A con un tempo di salita di 3.5 ns; questi strumenti possono essere visti "in opera" nella fotografia di apertura; con essi è possibile sperimentare l'uso di linee anche di soli pochi metri di lunghezza, cioè con tempi di propagazione dell'ordine di poche decine di nanosecondi; quanto di seguito mostrato utilizza invece una matassa di ben 100 m di cavo RG58 e quindi è possibile utilizzare strumenti di fascia inferiore.

L'immagine seguente mostra un doppio impulso trasmesso dal generatore di impulsi (in blu) ed il segnale ricevuto al termine di un cavo lungo circa 100 m e correttamente terminato (in rosso); il tempo impiegato dal segnale è di poco più di 500 ns.

Linea terminata correttamente

Nel caso di linea non terminata sono presenti riflessioni. Di seguito due esempi, rispettivamente nel caso di circuito aperto;

 Linea aperta

e di cortocircuito:

Linea in cortocircuito

 

Potete anche consultare una relazione con l'esperienza che un collega che insegna nella mia scuola proponeva quasi venti anni fa alle classi seconde dell'indirizzo elettronico (www.fisicachimica.it).

Doppino CAT5

Per questa prova utilizzeremo Arduino come generatore di segnali da trasmettere lungo un doppino di qualche decina di metri di lunghezza. In alternativa è possibile utilizzare un microcontrollore PIC18 oppure un Rapsberry Pi.

Anche in questo caso è opportuno, se possibile, disporre di un oscilloscopio da 100 MHz a quattro o più canali.

Arduino

Arduino possiede al proprio interno un modulo di comunicazioni SPI in grado trasmettere o ricevere un byte fino alla frequenza di clock di 8 MHz (o anche più, in alcuni modelli). Il codice di trasmissione che utilizzeremo è piuttosto semplice:

#include <SPI.h>
void setup() {
  SPI.begin();
  SPI.beginTransaction(SPISettings (8000000, MSBFIRST, SPI_MODE0));
}
void loop() {
    SPI.transfer(0x01);
//   SPI.transfer(0xFE);
}

L'esempio mostrato trasmette continuamente alla velocità di 8 Mbps il byte 0x01 (oppure 0xFE). Rispetto al normale uso di SPI non viene gestito da questo codice né il segnale MISO trasmesso dal dispositivo slave né al segnale SS di selezione delle periferiche in quanto non rilevanti in questo contesto.

L'hardware

Come driver utilizzeremo un trasmettitore/ricevitore (transceiver) differenziale per linee RS485, adatto a funzionare alla frequenza di clock scelta, per esempio un SN65HVD08 o un MAX485. Siamo interessati al solo segnale MOSI (pin D11 di Arduino Nano); lasceremo il trasmettitore, a sinistra nello schema, sempre attivo ed il ricevitore, a destra, sempre attivo.

Line adi trasmissione differenziale - Schema

Si noti la presenza dei due resistori di terminazione R1 ed R2 agli estremi della linea.

La fotografia seguente mostra come è stato realizzato il circuito usando una breadboard:

Linea di trasmissione su breadboard

Di seguito i segnali presenti nel caso di trasmissione di un solo zero, cioè di 0xFE (nota 3), su una linea molto breve:

Dall'alto abbiamo:

La linea

La linea di trasmissione è costituita da circa 25 metri di cavo CAT5e, normalmente utilizzato per realizzare reti locali. Per il corretto funzionamento è necessario terminare ai due estremi la linea con una resistenza di 100 Ω, pari alla Z0 del cavo.

Di seguito i segnali presenti:

Dall'alto abbiamo:

I cursori mettono in evidenza un tempo di propagazione di quasi 195 ns, somma del tempo di propagazione del trasmettitore, del ricevitore (già visti poco sopra) e della linea di trasmissione.

Attività di approfondimento

  1. Verificare il comportamento della linea in assenza di terminazione (nota 4). Di seguito un esempio con, all'alto, il segnale In di ingresso in blu, il segnale differenziale A e B; il segnale Out di uscita in verde

Linea non terminata

  1. Analizzare il diagramma ad occhio (eye pattern) in ingresso ed uscita alla linea. Per ottenerlo occorre trasmettere una serie di bit casuali ed attivare la persistenza sull'oscilloscopio; di seguito un esempio:

diagramma ad occhio (eye pattern)

  1. (solo per chi ha esperienza nell'uso di SPI) Valutare come il tempo di propagazione (e quindi la lunghezza della linea) abbia impatto sulla sincronizzazione tra Clock e MISO (ma non su MOSI e Clock)

Note

  1. Se non è disponibile la strumentazione con le necessarie prestazioni è utile utilizzare linee di maggiore lunghezza e quindi tempi di propagazione maggiori
  2. In mancanza di tale specifica, il tempo di salita può essere stimato dividendo 3.5 per la banda passante dello strumento. Per esempio un oscilloscopio da 100 MHz ha un tempo di salita di circa 3.5 ns.
  3. La scelta di trasmettere un solo zero è motivata dalla necessità di mantenere, almeno nei primi test, il segnale il più semplice possibile
  4. I due transceiver utilizzati sono progettati per funzionare anche in caso di linea disadattata; in particolare sono presenti all'interno dell'integrato elementi non lineari che cercano di impedire ai segnali A e B di superare la tensione di alimentazione o scendere al di sotto della massa. Nel caso in esame, con clock a 8 MHz e 25 m di linea, pur in presenza di notevolissime distorsioni, il comportamento pare ancora accettabile


Pagina creata nel gennaio 2021
Ultima modifica: 26 gennaio 2021


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


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima