Link asincrono seriale LAS.
By Claudio Fin

Questo circuito permette di collegare tra loro due moduli a microprocessore o microcontrollore utilizzando tre fili di uscita e tre di ingresso. E' un link seriale in quanto i dati vengono trasmessi serialmente su un unico filo (TX) e letti serialmente sempre su un unico filo (RX). E' asincrono in quanto non è richiesta alcuna temporizzazione, il modulo più veloce si adatta automaticamente al più lento, e la sincronizzazione tra i due avviene tramite i segnali BR1 e BR2 (segnali di handshake busy/ready). I dati in transito vengono scritti in due shift register in serie da 8 bit (tipo CD4094) per essere poi letti dall'altro modulo. I due bit BR1 e BR2 viaggiano insieme ai dati e vengono portati fisicamente sui fili con l'impulso di STROBE. Questo segnale, assieme al CLOCK, serve per comandare gli shift register (entrambi questi segnali a riposo sono a 0). I gruppi RC sul segnale di strobe servono a limitarne la durata sui SIPO (a pochi µS) qualora un modulo lo tenesse alto troppo a lungo. Per il clock questo problema non esiste.

I due moduli devono essere uno master e l'altro slave, e si differenziano per il significato che attribuiscono ai bit di segnalazione BR1 BR2. In particolare questi bit assumono i seguenti significati:
 

Per l'unità MASTER

BR1 BR2  STATO
 0   0   Canale libero
 0   1   Dato pronto
 1   0   Canale occupato
 1   1   Reset

Per l'unità SLAVE

BR1 BR2  STATO
 0   0   Canale libero
 0   1   Canale occupato
 1   0   Dato pronto
 1   1   Reset

Canale "libero" significa che in quel momento è possibile scrivere dati negli shift register. Una volta scritti il canale diventa "occupato" e prima di scriverne altri si deve attendere che torni libero. Il ricevente rimane invece in attesa di un "dato pronto", legge i dati e libera il canale. Come si può notare le condizioni "dato pronto" e "occupato" sono invertite tra master e slave, e questo evita qualsiasi ambiguità su chi sia il mittente e chi il ricevente. Solo il master può comandare un reset e solo lo slave lo può accettare liberando il canale.

I due shift register sono collegati in serie e permettono di memorizzare 16 bit (14 per i dati e 2 per la segnalazione), in particolare i bit BR1 e BR2 sono rappresentati rispettivamente D8 e D9 dei 16 bit trasmessi:

La scelta di usare il nono e il decimo bit può sembrare strana, ma è frutto di una scelta precisa pensata per facilitare l'uso del link con un microcontrollore ST62. Siano B1 e B2 i due byte dati da trasmettere, vanno inviati prima i bit di B1 partendo dal bit più significativo (MSB), poi i bit di B2 sempre partendo dal più significativo. Al termine della trasmissione troviamo in D8 D9 i due bit alti di B2 (D8=D7 di B2 e D9=D6 di B2), e questo significa che B2 può portare solo 6 bit di dati in quanto i due bit più significativi sono usati per la segnalazione (D7=BR1 D6=BR2).

Disposizione dei bit dati negli shift register.



Dettaglio sull'uso dei segnali
 


Diagramma temporale di comando degli shift register.


I bit di segnalazione BR1 e BR2 servono per sincronizzare i due moduli. Normalmente son entrambi a zero e indicano canale libero. Quando il master scrive i 16 bit deve mettere BR1=1 e BR2=0, questo significa occupato per lui e dato pronto per lo slave. Quando è lo slave a scrivere deve mettere BR1=0 e BR2=1, questo significa occupato per lui e dato pronto per il master. Quando lo slave o il master leggono i 16 bit devono riportare BR1 e BR2 a 0 liberando il canale. Il master (e solo lui) può inoltre decidere di inviare un reset allo slave impostando entrambi i bit a 1. Ad un reset lo slave risponde liberando il canale (BR1 e BR2 a 0).
 


Diagrammi temporali per la liberazione del canale
e per l'invio del comando di reset.


Vantaggi nell'uso di questo link:


Gestione tramite porta parallela
Questo link può essere collegato e comandato facilmente con la porta parallela di un PC tramite un apposito software che può essere scritto in un qualsiasi linguaggio che consenta l'accesso alle porte del PC. Come esempio riporto un oggetto Delphi 2.0 (Tlas) per gestione link asincrono con cui ho raggiunto la velocità di  91 Kbit/sec (scrittura + lettura attraverso la stessa porta, quindi un flusso all'interno dei SIPO di circa 182 Kbit/sec).


Pagina e disegni realizzati da Claudio Fin
Ultimo aggiornamento 4-2-2001