Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Trasmissione seriale e USART
Seriale potrebbero ad esempio essere stati trasmessi da un Modem in trasmissione, e l'USART unavolta ricevuti serialmente tutti ed 8 i bits dovrà inserire l'intero byte in un buffer dove il Processore potrà prelevarne tutti i bits mediante una trasmissione parallela. Se invece è il Processore che vuole trasmettere un dato, allora scrive quest'ultimo sul Data-Out Buffer Reg, interrompe l'USART mediante la linea RxRDY per indicargli che il dato è pronto e, i bit qui dentro, verranno trasmessi uno ad uno sulla Serial Output TxD passando per lo Shift Register d'uscita, serializzando dunque il dato che il Processore ha scritto nel buffer. Da notare che sarà compito dell'USART inserire eventuali bits di start, stop e parità nel dato da trasmettere serialmente in output. Quando l'USART ha finito di trasmettere dovrà alzare la linea TxRDY per interrompere il Modem dall'altro lato in maniera tale da
indicargli che la trasmissione è finita. Ogni volta che i dati da trasmettere finiscono ed il Processore non è stato abbastanza veloce da mettere nel Buffer nuovi dati da trasmettere, allora l'USART trasmette soltanto dei bits di sincronizzazione per non perdere la sincronizzazione fra trasmettitore e ricevitore.191.1.6. Protocollo USB
L'USB (Universal Serial Bus) nacque nella metà degli anni 90' da una collaborazione tra sette aziende (Compaq, DEC, IBM, Intel, Microsoft, NEC e Nortrhern Telecom) per risolvere una volta per tutte il problema del collegamento al computer di periferiche "lente". I principali obiettivi che i progettisti dell'USB si prefiggevano erano i seguenti:
- USB è host controlled, cioè sul Bus può esserci un solo Master (chiamato host Controller, o semplicemente host) che può avviare la comunicazione. L'host deve essere responsabile di tutte le trasmissioni e deve occuparsi di
Gestire la banda.
USB supporta il Plug and Play, cioè è possibile collegare una periferica USB ed utilizzarla senza installare driver o fare alcuna configurazione, in altre parole la periferica dovrebbe fare tutto da sola senza alcun intervento umano.
USB ha una topologia a "albero" ed ha più "livelli": tutte le periferiche sono connesse ad una struttura simile ad un albero attraverso dei dispositivi chiamati hub (concentratori). È possibile collegare più hub in cascata consentendo di collegare in totale fino ad un massimo di 127 periferiche (in questo numero in realtà vanno inclusi anche gli hub e il gestore (host controller) stesso quindi in realtà il numero totale di dispositivi collegabili è sensibilmente inferiore di 127); se si vuole collegare più di 127 periferiche occorre aggiungere un altro chip host. Da notare che questa differenza di livelli di periferiche connesse ad hub differenti è
causa di differenza di velocità fra esse.
USB è un Bus Seriale Asincrono che trasmette un bit per volta utilizzando una codifica NRZI (Not Return to Zero Invert): ogni porta ha 4 fili che sono rispettivamente la massa, l'alimentazione, D+ e D-. Gli ultimi due fili codificano una differenza di potenziale la cui variazione determina una variazione di transizione (significa si sta trasmettendo un 1) oppure una transizione costante (significa si sta trasmettendo un 0).
Quando viene collegata una periferica USB, il Controller USB (host) deve sapere di che tipo di Device si tratta in quanto dovrà caricare l'opportuno driver (quest'ultimo verrà poi rimosso quando si disconnette il dispositivo), il tutto senza dover riavviare il Sistema Operativo (Hot Swap) grazie al supporto Plug and Play. Per fare ciò occorre avere la coppia PID/VID (Product ID e Vendor iD): con il VID viene indicato il nome della casa produttrice.
I connettori USB fino
al 2.0 possono essere di due tipi: Tipo A e Tipo B, i quali presentano 4 fili numerati ciascuno del quale ha un proprio colore: il primo (quello Rosso) è l'alimentazione, il secondo ed il terzo (Bianco e Verde) sono D- e D+, mentre il quarto (quello Nero) è la massa. Successivamente sono stati inventati i tipi Mini e Micro A-B; dalla versione USB 3.0 i Tipi A e Tipi B sono stati modificati ed è stato aggiunto il Tipo C.
USB è un BUS con ampiezza di banda di 1.5 Mbps/sec (Low Speed) nella versione 1.1, di 60 Mbps/sec (Full Speed) nella versione 2.0 e di 600 Mbps/sec (High Speed) nella versione 3.0. la sua velocità non è il solo motivo per cui esso oggi sta letteralmente rimpiazzando i Bus ATA o SCSI, perché si è preferito privilegiare la praticità di poter collegare e scollegare a caldo il componente rispetto alla velocità di una connessione tipo ATA. Con le attuali versioni 3.0 e 3.1 USB è arrivato ad una
velocità di 4.8 Gbps/sec (Super Speed) grazie allapresenza di fili in più che eprmettono di ricevere e trasmettere dati in contemporanea (FullDuplex).
La trasmissione USB può essere solo Half Duplex in quanto i fili D+ e D- sono utilizzaticontemporaneamente per codificare il valore logico 0 o 1, vuol dire che host e Perifericanon possono trasmettere dati contemporaneamente.
Le Periferiche USB vengono alimentate direttamente dall'host con delle differenze checlassificano esse in tre differenti tipologie: le Low Power hanno bisogno di poca potenzaper funzionare (100 mA di corrente), le High Power possono prendere dall'host fino a 500mA di corrente, mentre le Self Power consumano molta più potenza (come ad esempio gliHard Disks), per cui 100 mA li prendono dall'host mentre tutto il resto lo prendono da unafonte di alimentazione esterna.
Tutti i dispositivi USB devono supportare la Suspend Mode: si tratta di una condizione di stand by
Che si attiva quando l'host non comunica più niente lungo il Bus per più di 3 ms, in tal caso esso avrà 7 ms per spegnersi e non assorbire più della corrente di sospensione, portando ad un risparmio della batteria.
Il Protocollo USB prevede che quando l'host vuole comunicare con una Periferica deve avviare una transazione, ovvero deve inviare dei pacchetti di un certo tipo in un certo ordine. Prima di analizzare i possibili tipi di transazioni (e quindi di comunicazione) ed i vari pacchetti utilizzati dal Protocollo USB, si analizzano i principali campi utilizzati nei pacchetti:
- Campo SYNC: siccome il Bus è Asincrono e non c'è il clock, i due dispositivi della comunicazione devono sincronizzare i loro clock locali mandando questa sequenza di 8 bit nel caso Low Speed, o 32 bit nel caso Full Speed.
- Campo PID: è il Packet ID, ovvero una sequenza di 4 bit che identifica il tipo del pacchetto (OUT, IN, DATA, ACK, NAK, STALL).
Per prevenire eventuali errori di trasmissione di questi bit, in realtà i bits di questo campo sono 8, gli ultimi 4 sono un duplicato dei primi.
Campo ADDR: identifica con un intero da 0 a 126 con quale delle 127 USB devices (Periferiche oppure Hub) si vuole comunicare.
Campo Endpoint: contiene il numero di endpoint assegnato alla specifica funzione della Periferica interessata nella comunicazione.
Campo CRC: è un codice di correzione errori o ridondanza ciclica.
Campo EOP: indica la fine del pacchetto.
Vengono adesso analizzati i 4 tipi di pacchetti USB:
Token Packet: li invia l'host alla Periferica per mandare un comando ad un certo Endpoint di una specifica Periferica, in genere per dire al Device USB che esso vuole leggere dati (IN) oppure scrivere dati (OUT), oppure per iniziare una transazione di controllo (Setup). Il formato è il seguente:
Data Packet: contengono i dati da inviare dopo un comando, hanno una dimensione massima di 8 bytes nel caso Low Speed,
1023 bytes nel caso Full Speed, e 1024 nel caso High Speed. Siccome però le informazioni trasferite con USB sono maggiori di 1024 bytes, il payload informativo viene suddiviso in più data packets che vengono inviati in sequenza. Il Formato è il seguente:
Handshake Packet: possono essere degli ACK per indicare di aver ricevuto i dati correttamente, dei NAK per indicare di non poter più ricevere altri dati, oppure degli STALL per segnalare eventuali errori. Il Formato è il seguente:
Start of Frame Packet: si tratta di 11 bits inviati dall'host ogni millisecondo nel caso Low Speed oppure ogni 125 microsecondi nel caso Full Speed alla Periferica per dirle di non spegnersi. Il Formato è il seguente:
In genere nei computer ci sono tanti dispositivi USB connessi ad un host, ognuno del quale avrà un indirizzo diverso e diverse funzioni, ognuna delle quali avrà uno o più Endpoints. Ogni funzione ha dei buffer in cui scrivere e leggere.
l'indirizzo XXX alla Periferica.l'indirizzo al Buffer giusto. Gli Endpoints costituiscono l'interfaccia tra il Driver ed il Device. Il driver trasferisce i dati attraverso delle connessioni logiche chiamate pipes (quelle dei Sistemi Operativi), le quali possono essere di tipo Streams (per dispositivi streaming come le telecamere) oppure di tipo message (per dispositivi come mouse e tastiere). USB utilizza un Polling Protocol: ogni volta che l'host vuole ricevere dati da una Periferica la interroga inviandole un token:
- Se la Periferica ha dati da inviare, li invia e l'host risponde con un pacchetto di handshake.
- Altrimenti se la Periferica non ha dati da inviare, l'host emette un token verso la Periferica successiva.
- Se l'host vuole inviare dati ad una Periferica, prima invia un token appropriato e, successivamente, il pacchetto di dati. La Periferica risponde con un pacchetto di handshake.
Ci sono 4 modalità di trasferimento dati previste da USB: la prima modalità
utilizzare il processore.