• Non ci sono risultati.

Progettazione di un lettore RFID UHF a basso costo e a bassa potenza mediante dispositivi COTS

N/A
N/A
Protected

Academic year: 2021

Condividi "Progettazione di un lettore RFID UHF a basso costo e a bassa potenza mediante dispositivi COTS"

Copied!
66
0
0

Testo completo

(1)

UNIVERSITÀ DI PISA

SCUOLA DI INGEGNERIA

Corso di Laurea Magistrale in Ingegneria Elettronica

Ordinamento D.M. 270

Anno Accademico 2016 – 2017

Elaborato finale

Progettazione di un lettore RFID UHF a basso costo e a bassa potenza mediante dispositivi COTS

Candidato: Pierluigi Michetti

Relatore:

Prof. Giuseppe Iannaccone Tutor aziendale:

(2)
(3)

Indice generale

Abstract...4

1 La tecnologia RFID...5

2 Lo standard EPCglobal UHF Gen2...12

3 Il microcontrollore CC430F6137...28

4 La progettazione del lettore...39

(4)

Abstract

La seguente trattazione vuole dimostrare se sia possibile o meno realizzare un lettore RFID UHF Gen2 a basso costo e a bassa potenza utilizzando dispositivi COTS. Non si è tentata l'implementazione dell'intero standard EPCglobal UHF Gen2 ma, essendo uno studio di fattibilità, si è tentata l'implementazione dei comandi necessari ad ottenere il codice identificativo dei tag interrogati. Ci si è inoltre posti nella particolare condizione in cui, essendo un lettore a bassa potenza e quindi operante su distanze di rilevazione dell'ordine della decina di centimetri, i tag vengono interrogati uno alla volta. La trattazione si suddivide in cinque capitoli. I primi due capitoli sono utili per contestualizzare il lavoro svolto, ed in particolare il primo capitolo fornisce una generica introduzione alla la tecnologia RFID, mentre il secondo capitolo descrive lo standard EPC UHF Gen2. Il terzo capitolo descrive il microcontrollore CC430F6137 utilizzato per realizzare il lettore. Il quarto capitolo descrive la progettazione del lettore e le prestazioni di quest'ultimo. Nel quinto capitolo vengono confrontate l'architettura di un lettore RFID UHF Gen2 standard con quella del lettore progettato in modo da evidenziarne le differenze e da ciò il motivo delle differenti prestazioni.

Si è riusciti a realizzare un lettore capace di inviare i comandi principali per identificare un tag e a ricevere e decodificare la risposte di quest'ultimo. Le prestazioni del lettore si sono dimostrate scarse soprattutto in ricezione. Il lettore ha mostrato un'eccessiva sensibilità rispetto alla posizione ed all'orientamento del tag. Si è osservato come il microcontrollore utilizzato come ricevitore opera in condizioni profondamente differenti rispetto a quelle per cui è stato progettato. Da ciò si è ipotizzato che il ricevitore operi vicino alla saturazione e che da ciò ne conseguano le basse prestazioni in ricezione. A supporto delle ipotesi fatte si è confrontata l'architettura del lettore progettato con quella di un lettore commerciale.

(5)

1 La tecnologia RFID

L’acronimo RFID significa Radio-Frequency Identificaton (Identificazione a Radio Frequenza). Tale tecnologia venne sviluppata negli anni immediatamente precedenti la seconda guerra mondiale; dato che la principale causa di abbattimento dei velivoli di ciascuno schieramento era il “fuoco amico”, sugli aerei veniva installato un apparato che, se interrogato da un aereo della stesso schieramento, rispondeva utilizzando un sistema di identificazione univoco. Questa tecnologia, antenata dell’RFID, si chiamava IFF (Identification Friend or Foe, cioè identificazione di un amico o di un nemico). Negli anni settanta lo sviluppo della tecnologia RFID è continuato come derivazione per scopi civili della tecnologia IFF, ma la diffusione principale è avvenuta dagli anni novanta in poi.

Fisicamente un sistema RFID è composto da un lettore, uno o più tag (identificatore), e, quando esiste, un sistema di gestione. I tag sono delle etichette che, grazie ad un codice memorizzato al loro interno, identificano in modo univoco l’oggetto a cui sono applicate. Il lettore è un dispositivo capace di leggere il codice identificativo dei tag. Il sistema di gestione è connesso in rete con il lettore e permette, a partire dai codici identificativi provenienti dai tag, di ricavare tutte le informazioni disponibili associate agli oggetti a cui essi sono applicati e di gestire tali informazioni per gli scopi dell’applicazione.

L'utilizzo della tecnologia RFID nell'ambito della catena di distribuzione delle merci ha dato una forte spinta propulsiva alla sua diffusione. A incentivarne l'utilizzo in tale ambito vi sono anche varie leggi che hanno reso obbligatoria la tracciabilità di varie tipologie di merci lungo la catena di distribuzione. Si può pensare di applicare un tag dal container utilizzato per il trasporto delle merci fino al singolo oggetto. Ad oggi la tecnologia RFID in questo ambito è già molto diffusa e molto

(6)

spesso ai contenitori di trasporto e agli imballaggi viene applicato un tag RFID. È invece ancora poco diffusa l'applicazione dei tag a livello del singolo oggetto prodotto (item level), ma è destinata a crescere con la continua riduzione del costo dei tag. La tecnologia RFID è molto pervasiva e ben presente sul mercato, ma quest’ultimo è ben lontano dall’esserne saturo ed anzi le prospettive di ulteriore diffusione sono enormi.

Una spinta alla maggiore diffusione della tecnologia RFID verrà, in un prossimo futuro, dalla sostituzione dei diffusissimi codici a barre, applicati ai singoli oggetti, con tag RFID. Questo passaggio sta divenendo sempre meno oneroso grazie all’abbattimento, nel corso degli anni, del costo del singolo tag. Quest'ultimo presenta moltissimi vantaggi rispetto ad un codice a barre. Tra i vantaggi si possono annoverare:

• La lettura a distanza e simultanea di più tag senza la necessità di contatto visivo tra lettore e tag.

• La grande quantità di dati che un tag può memorizzare (diversi Kbyte) rispetto ad un codice a barre (100 byte).

• L’insensibilità dell’operazione di lettura a fattori quali illuminazione e sporco.

• La possibilità di accedere in scrittura alla memoria dei tag, mentre i codici a barre sono di sola lettura.

• La possibilità di cifrare la comunicazione tra lettore e tag, qualora il tag lo preveda

Per quanto riguarda l’alimentazione i tag possono presentare o meno una alimentazione interna. Un tag non avente alimentazione interna è passivo. Qualora invece disponga di una batteria può essere semi-passivo oppure attivo. Un tag passivo riceve energia dall’onda continua irradiata dal lettore. Un tag semi-passivo dispone di una alimentazione propria ma attende il lettore prima di avviare una trasmissione, mentre uno attivo può esso stesso avviare una comunicazione con il lettore. Il costo di un tag attivo è compreso tra gli euro e le decine di euro, mentre quello di un tag passivo è sull'ordine dei centesimi. La distanza di rilevazione arriva alle centinaia di metri per un tag attivo ed alle decine di metri per uno passivo.

Se non specificato altrimenti, i tag a cui in seguito faremo riferimento sono di tipo passivo in quanto sono quelli con prospettive di sviluppo e diffusione maggiori. Sono dispositivi a bassissimo costo

Illustrazione 2: Applicazione dei tag RFID ai vari livelli della catena di distribuzione delle merci

(7)

unitario (pochi centesimi l’uno) e di dimensioni ridotte e le differenti tipologie esistenti sono quasi interamente coperte da standard.

Le frequenze operative dei tag spaziano dalle LF (Low Frequencies) (9KHz-150KHz) alle decine di GHz. La scelta di una certa frequenza operativa per un’applicazione RFID dipende da vari fattori quali la massima distanza di rilevazione del tag da parte del lettore, le dimensioni del tag e l’interferenza degli elementi esterni nella comunicazione tra reader e tag. Con l’incremento della frequenza operativa si può avere una riduzione delle dimensioni dei tag, essendo necessarie antenne di minori dimensioni, e al contempo un aumento della distanza massima di rilevazione.

Le più comuni bande a cui si opera in ambito RFID sono:

• La banda LF (Low Frequencies), situata tra 9 KHz e 150 KHz. Occupa la parte più bassa dello spettro RF ed è stata la prima banda di frequenze ad essere utilizzata per l’identificazione a radiofrequenza. Ancora oggi dispositivi RFID operanti a tale frequenza hanno una presenza significativa sul mercato. Le frequenze maggiormente utilizzate in questa banda sono 125,5 KHz, principalmente nel settore automotive, e 134,2 KHz nella tracciabilità animale, in quanto a tali frequenze acqua e tessuti hanno bassissima influenza sulla trasmissione. La comunicazione tra lettore e tag avviene a distanze di qualche centimetro.

• La banda HF (High Frequencies), situata a 13,56 Mhz. Vi sono molte applicazioni RFID con differenti standard operanti in questa banda. Tra questi vi è l’NFC (Near Field Communication), l’ISO 18000-3 per applicazioni quali l’identificazione lungo la catena di distribuzione ed il tagging general purpose nell’ambito manifatturiero, logistico, distribuzione, trasporti e gestione bagagli linee aeree, l’ISO 15693, che è lo standard internazionale per le vicinity cards e l’ISO 14443, che è quello per le contactless smartcard. Le distanze di rilevazione possono raggiungere i 1,5-2 metri.

• La banda UHF (Ultra High Frequencies), situata tra gli 860 Mhz ed i 960 Mhz. A causa delle differenti normative vigenti le frequenze utilizzabili possono variare da paese a paese. Ad esempio i tag UHF in Europa operano a 868 Mhz, mentre in Nord America a 920 Mhz. Le distanze di rilevazione in banda UHF possono raggiungere i 10-15 metri. A causa di questa elevata distanza di rilevazione l’RFID UHF è spesso utilizzato per eseguire un’identificazione a livello di case o di pallet nella catena di distribuzione.

• La banda UHF alta, situata attorno ai 2,4 GHz. Si colloca in una zona dello spettro molto affollata in cui sono presenti note applicazioni quali WiFi, ZigBee e Bluetooth. Come conseguenza la tecnologia RFID a tale frequenza è sottoposta ad un regolamentazione stringente. È coperta dallo standard ISO 18000-4. Tipicamente i tag operanti a tale frequenza sono attivi ma ve ne sono anche di passivi.

• La banda SHF (Super High Frequencies) è situata a 5,8 GHz ed i tag operanti a tale frequenza sono unicamente attivi. Un noto esempio di tag SHF è il Telepass, usato in Italia per l’accesso automatico alle autostrade a pagamento.

• La banda UWB (Ultra WideBand) è situata oltre la banda SHF. Le frequenze operative dei tag operanti a tale frequenza arrivano alle decine di GHz. I tag UWB sono unicamente attivi. La tecnologia RFID è potenzialmente molto pervasiva e ciò vale sopratutto per i tag passivi i quali hanno elevate potenzialità di utilizzo a fronte di un costo di pochi centesimi per tag. Un tag passivo tipicamente è adesivo, in modo da poter essere applicato all’oggetto che si vuole identificare, ed è costituito da un substrato su cui viene incollato un chip e stampata un’antenna.

(8)

Il chip contiene i dispositivi necessari ad eseguire l’elaborazione dei dati ed una o più memorie. L’antenna è utilizzata sia in ricezione che in trasmissione ed ha dimensioni molto maggiori rispetto al chip. Come conseguenza le dimensioni del tag sono principalmente influenzate dalle dimensioni della sua antenna. In base alla frequenza operativa e alla distanza che si vuole coprire sarà necessaria un’antenna di una certa forma e dimensione; inoltre a parità di condizioni un’antenna più grande cattura più energia dal campo irradiato dal lettore e con più energia il tag può pilotare una logica di controllo più complessa. È però necessario trovare un compromesso tra queste esigenze, la dimensione voluta ed il costo per singolo tag. Si tenga conto che nell’ambito di un’economia di scala, quale è quella della produzione di tag passivi, i costi rilevanti sono quelli ricorrenti e ciò comporta che un risparmio di frazioni di centesimo su un singolo dispositivo prodotto porta ad un enorme risparmio sui costi di produzione del volume totale.

Come già detto, un tag passivo in assenza di campi esterni non è alimentato e quindi è spento. Quando un lettore vuole comunicare con esso, per prima cosa genera una portante alla frequenza operativa per un opportuno periodo di tempo. Questa onda viene convertita dal tag in energia necessaria alla propria alimentazione. Ricevuta energia sufficiente, il tag si accende e si pone in attesa della ricezione di un comando da parte del lettore.

In banda LF e HF l’interazione tra lettore e tag avviene tramite accoppiamento di tipo induttivo sfruttando lo stesso principio di funzionamento del trasformatore elettrico. Ciò avviene in quanto la distanza di rilevazione è molto inferiore alla lunghezza d’onda e quindi ci troviamo nella cosiddetta zona di campo vicino in cui è presente quasi esclusivamente il campo magnetico. Infatti in banda LF si ha una lunghezza d’onda λ≥2000m ed in banda HF λ=22,1m a fronte di distanze massime di decine di centimetri. Questi tag dispongono di un induttore con le cui spire si concatena il flusso del campo magnetico irradiato dal lettore. Ai capi dell’induttore si genera una tensione indotta utilizzata per fornire energia al tag. Quest'ultimo risponde tramite la modulazione, per mezzo della logica del tag stesso, del carico d’antenna posto in parallelo all’induttore. Detto primario l'avvolgimento sul Immagine 3: Un tag RFID passivo

(9)

lato del lettore e secondario quello sul lato del tag, al variare dell’impedenza del carico d’antenna varia l’impedenza che si vede sul primario e da ciò il lettore comprende le informazioni comunicategli. Il difetto principale di questo tipo di interazione è che si hanno basse distanze di rilevazione: in banda LF si arriva alle decine di centimetri mentre in banda HF si arriva al metro. Il pregio principale di questi tipi di tag è l’elevata immunità ai materiali dielettrici, sia solidi che liquidi, quali ad esempio tessuti animali, in contatto con il tag stesso. Per questo motivo i tag utilizzanti accoppiamento induttivo sono ancora molto diffusi.

Nelle bande UHF, SHF ed UWB l’interazione tra lettore e tag avviene tramite accoppiamento di tipo elettromagnetico. Ciò avviene in quanto la distanza di rilevazione è molto maggiore della lunghezza d’onda e quindi ci troviamo nella cosiddetta zona di campo lontano. Il lettore irradia una potenza tramite un’antenna sotto forma di onda elettromagnetica che viene ricevuta dall’antenna del tag. Quest'ultimo viene alimentato dalla tensione continua in uscita dal circuito di raddrizzamento di cui dispone. Quando il lettore è in attesa di una risposta trasmette un’onda continua che viene riflessa dal tag verso il lettore. La modulazione dell’onda riflessa, che contiene l’informazione, avviene tramite la variazione del coefficiente di riflessione dell’antenna del tag da parte della logica di quest'ultimo. Rispetto all’accoppiamento induttivo si raggiungono distanze di rilevazione fino alle decine di metri, ma si ha una immunità agli effetti dei dielettrici in contatto con il tag molto più bassa.

(10)

Qualunque sia il tipo di interazione, l'onda sinusoidale in uscita, a seconda dei casi, dall’induttore o dall’antenna del tag segue due percorsi paralleli, uno per l’alimentazione ed uno per le informazioni. Nel primo la tensione alternata ricevuta viene raddrizzata ed utilizzata per caricare dei condensatori che servono ad alimentare il tag. Nel secondo il segnale in uscita dall’antenna, modulato in ampiezza, viene demodulato e convertito in digitale. I valori vengono poi elaborati dalla logica, la quale ha accesso alla memoria.

Qualunque sia il tag esso ha tra i requisiti minimi la presenza di una memoria in cui è memorizzato un codice che lo identifichi. Un noto esempio di codice identificativo è l’EPC (Elecronic Product Code), proposto da EPCglobal, ideato con il proposito di identificare in modo univoco ogni singolo oggetto che rispetti i suoi standard. Un tag può disporre di una o più memorie di sola lettura ma anche di memorie accessibili in scrittura. Ciò apre la possibilità all’utilizzo dei tag oltre la semplice finalità identificativa. Nei tag, infatti, è possibile trovare una user memory, il cui contenuto è a discrezione dell’utente.

Quando si mostrano prospettive di sviluppo per una data tecnologia, affinché essa possa affermarsi sul mercato è necessario che i produttori di dispositivi stabiliscano uno standard a cui uniformarsi affinché vi sia interoperabilità tra dispositivi di produttori diversi. Tali standard devono essere aggiornabili col progredire della tecnologia, pur mantenendo la retrocompatibilità con le precedenti versioni. Per quanto riguarda la tecnologia RFID ne sono stati elaborati vari in base alla banda ed alle condizioni operative in cui tag e lettore operano. Inoltre anche all’interno di una stessa banda possono esisterne di differenti in base alle condizioni operative. Quando si elabora uno standard, infatti, i due principali obiettivi che questo deve assicurare sono l’interoperabilità tra dispositivi di differenti produttori e la non interferenza delle operazioni con altri dispositivi. Focalizzandoci sulle comunicazioni a radio frequenza, che sono quelle utilizzate dalla tecnologia RFID, per evitare interferenze è necessario stabilire la frequenza operativa, la larghezza di banda e la potenza radio in trasmissione.

(11)

Gli standard per la tecnologia RFID vengono elaborati dagli organismi:

• EPCglobal, una associazione privata nata per raggiungere l’adozione e la standardizzazione a livello mondiale della tecnologia EPC. EPC è l’acronimo per Electronic Product Code (codice elettronico del prodotto) ed è un codice identificativo memorizzato all’interno di un tag RFID.

• ISO (ed organismi ad esso collegati), costituisce l’ente mondiale di normativa in quasi tutti i campi della tecnologia.

L’EPCglobal collabora con quest'ultima organizzazione affinché gli standard che essa elabora siano poi recepibili anche in sede ISO.

(12)

2 Lo standard EPCglobal UHF Gen2

Il protocollo EPCglobal UHF Gen2 è lo standard per le applicazioni RFID in banda UHF utilizzanti tag passivi. La prima versione venne pubblicata da EPCglobal nel 2004 e nel corso del tempo le specifiche sono state aggiornate varie volte. L’attuale versione è la 2.0.1, pubblicata in aprile 20151, ed è la versione a cui faremo riferimento. Nel 2006 il protocollo EPC UHF Gen2 è stato approvato dalla ISO come revisione dello ISO/IEC 18000-6. Lo standard ISO/IEC 18000 comprende diverse tecnologie RFID, ciascuna utilizzante un differente intervallo di frequenze. La parte 6 (indicata con la sigla 18000-6) tratta la comunicazione in banda UHF nell’intervallo 860 Mhz÷960Mhz. Si può quindi parlare di standard ISO\IEC 18000-6 UHF Gen2 che sarà quello a cui faremo implicitamente riferimento in seguito quando parleremo genericamente di standard.

La trattazione seguente si prefigge lo scopo di fornire un’idea chiara del funzionamento della comunicazione tra lettore e tag evitando di trattare parti ed aspetti che la avrebbero appesantita eccessivamente.

Elemento centrale di tutto lo standard è l’EPC (Electronic Product Code). Esso è memorizzato nel tag e tipicamente è composto da 96 bit. Questo codice è stato concepito affinché ciascun tag UHF Gen2 sia identificabile in modo univoco. L’assegnazione degli EPC avviene in modo analogo a quanto in internet avviene con gli indirizzi IP. I bit più significativi dell’EPC sono assegnati da EPCglobal, mentre l’assegnazione dei successivi bit è affidata a chi via via si trova più in basso nella gerarchia.

Ad oggi la tecnologia passiva RFID UHF è l’unica tecnologia RFID coperta da un unico standard globale. I tag operanti in banda LF e HF sono stati i primi che storicamente si sono imposti sul mercato e hanno ancora una presenza significativa, ma ci sono una serie di vantaggi per cui la tecnologia RFID UHF è ad oggi quella con maggiori previsioni di crescita. I vantaggi di un tag UHF rispetto ad una tag LF o HF sono:

• Un unico standard globale (UHF Gen2)

• Distanza coperta e velocità di trasferimento delle informazioni 20 volte maggiore rispetto ad un tag HF

• Costo di un singolo tag sull’ordine dei centesimi contro un costo di decine di centesimi per tag HF o LF2

1 La versione 2.0.1 dello standard si trova al seguente indirizzo:

http://www.gs1.org/sites/default/files/docs/epc/Gen2_Protocol_Standard.pdf

2 Sono cifre espresse con ordini di grandezza che possono variare in base alle caratteristiche del tag, quali, ad esempio, la quantità di memoria in esso presente

(13)

Le prospettive di sviluppo della tecnologia RFID UHF, dovute ad un costo dei tag mediamente di un ordine di grandezza inferiore rispetto ai tag LF ed HF ed unite alle migliori prestazioni sia per quanto riguarda le distanze coperte che la velocità hanno favorito la pubblicazione di un unico standard globale e ciò è divenuto a sua volta un incentivo alla diffusione della tecnologia RFID UHF.

Lo standard specifica sia le interazioni fisiche (livello fisico) che le procedure logiche ed i comandi tra lettore e tag.

Affinché un dispositivo sia conforme allo standard è necessario che:

• Sia conforme a tutte le clausole dello standard (eccetto quelle opzionali) • Rispetti il documento di conformità associato allo standard3

• Rispetti tutte le regolamentazioni radio locali

Per quanto riguarda il livello fisico dello standard, la comunicazioni tra lettore e tag avvengono tramite trasmissioni di bit opportunamente codificati e modulati. In particolare le comunicazioni dal lettore verso il tag avvengono codificando i bit secondo la codifica PIE (Pulse Interval Encoding) e modulando in ampiezza la portante. Tale modulazione può essere di tipo DSB-ASK, SSB-ASK o PR-ASK4. La modulazione in ampiezza ha come pregio principale la semplicità del demodulatore e, dovendo tenere il più basso possibile il costo dei singoli tag, è necessario che il circuito di demodulazione, presente su ogni singolo tag, sia il meno costoso e quindi il più semplice possibile. La codifica PIE ha il pregio di massimizzare l’energia del segnale trasmesso e quindi è adatta a questa situazione in cui il lettore, trasmettendo, alimenta i tag.

La codifica PIE è una codifica basata sulla durata degli impulsi5. L’intervallo temporale di riferimento è detto TARI (Type A Reference Interval). L’immagine seguente mostra i simboli PIE ed in particolare come viene codificata la trasmissione dello zero (data-0) e dell’uno (data-1).

3 http://www.gs1.org/docs/epc/Gen2_conformance_requirements.pdf

4 I tre tipi di modulazione sono illustrati nella sezione ANNEX H (pag 143) del documento dello standard 5 Un impulso è la trasmissione di un simbolo

(14)

PW (Pulse Width) è un intervallo temporale che deve rientrare in un intervallo di valori specificato dallo standard ed è una frazione del TARI. Nel documento dello standard6 sono descritti in dettaglio la forma e le tempistiche che l’onda modulata trasmessa dal lettore al tag deve rispettare.

Le trasmissioni dal tag verso il lettore avvengono in modo differente. Come già detto precedentemente, nella tecnologia RFID passiva i tag non dispongono di una sorgente propria di alimentazione e le comunicazioni dal tag verso il lettore avvengono tramite backscattering da parte del tag della portante non modulata trasmessa dal lettore. Lo standard UHF Gen2 riguarda la tecnologia RFID UHF passiva e dunque rientra in tale categoria. Non disponendo di una propria sorgente di alimentazione si ha che ogni comunicazione tra lettore e tag è sempre avviata dal lettore. Si è in situazione di ITF (Interrogator Talk First). Quando il lettore ha inviato un comando ed è in attesa di una risposta da parte di un tag esso, durante l’attesa, trasmette la portante non modulata. Quest'ultima ha una doppia funzione in quanto serve sia a fornire energia ai tag sia ad essere opportunamente riflessa o meno dai tag in base all’informazione, immagazzinata nella memoria dei tag, che essi vogliono trasmettere al lettore. Lo standard prevede che i dati trasmessi dal tag al lettore siano codificati tramite codifica FM0 oppure Miller. La codifica utilizzata dal tag per rispondere dipende dal valore del parametro M del comando Query7 inviato dal lettore. I dati codificati vengono utilizzati per modificare il coefficiente di riflessione dell’antenna del tag modulando in ampiezza la portante riflessa. Le codifiche FM0 e Miller, a differenza della codifica PIE, sono basate sulle transizioni ed hanno la peculiarità di minimizzare l’energia del segnale. Per il tag ciò è fondamentale in quanto esso riceve energia dal lettore ed è importante che la maggior parte dell’onda incidente sul tag venga da esso assorbita, minimizzando l’energia riflessa.

La codifica FM0 è basata sulle transizioni. Sia che si stia trasmettendo un uno od uno zero, la durata di un simbolo è sempre la medesima. Un simbolo inizia sempre con una transizione rispetto al livello precedente e se si sta trasmettendo uno zero si ha anche una transizione a metà simbolo. Alla fine di una trasmissione di simboli si ha sempre un dummy-1 (1 finto). Il dummy-1 indica la fine della trasmissione senza portare con sé alcun dato.

6 Capitolo 6 paragrafo 3 pag 27 e seguenti

7 È il primo comando che il lettore invia per avviare la comunicazione con i tag, Vedi pag 76 del documento dello standard

Illustrazione 8: Simboli codificati FM0 (a sinistra) e sequenze di simboli FM0 (a destra)

(15)

Illustrazione 9: Trasmissioni codificate FM0 terminanti con un dummy-1

La codifica Miller è anch’essa basata sulle transizioni. Questa codifica varia in funzione del parametro M. Se M vale 1 si parla di codifica Miller in banda base. Al crescere di M aumentano le transizioni per simbolo a discapito del data rate e si parla di codifica Miller modulata tramite sottoportante. Il ricevitore del lettore riceve sia l’onda continua che il trasmettitore del lettore sta trasmettendo sia l’onda riflessa dal tag. Le codifiche FM0 e Miller in banda base possono essere utilizzate solo nel caso in cui sia in funzione un solo lettore alla volta. In particolare in questo caso lo standard prevede l'utilizzo della codifica FM0. Qualora vi siano più reader in azione (dense reader mode) lo standard prevede l'utilizzo della codifica Miller modulata, dove ciascuno utilizza un valore di M differente dall'altro. Ciò permette a ogni lettore di poter filtrare la risposta del tag a valle della demodulazione in modo da poter correttamente ricevere i dati nella porzione di banda di interesse corrispondente al proprio valore di M. Inoltre le portanti generate da ciascun lettore, seppur nominalmente identiche, non sono mai alla stessa frequenza e quindi la demodulazione della portante generata da un altro lettore origina un disturbo alla frequenza differenza. A parità di data-rate, la codifica Miller modulata sposta il segnale utile più in alto ed in tal modo risulta più agevole filtrare il disturbo alla frequenza differenza senza intaccare il segnale utile.

La codifica Miller in banda base, e quindi con M pari ad uno, presenta una transizione al confine tra due simboli se si trasmettono due zeri codificati consecutivi oppure a metà simbolo quando si trasmette un uno codificato. Come nel caso della codifica FM0, anche nel caso della codifica Miller ogni trasmissione termina con un dummy-1.

Se M>1 si ha un incremento delle transizioni per simbolo al fine di traslare in frequenza la codifica rispetto alla quella Miller in banda base. Si moltiplica la trama dei simboli trasmessi, compreso il dummy-1, per un’onda quadra di frequenza M volte il symbol rate.

Illustrazione 10: Simboli codificati Miller con M=1

(16)

Lo standard UHF Gen2 prevede valori di M pari a 1,2,4 o 8. Lo standard non prevede che i tag rispondano utilizzando la codifica Miller in banda base. Se M=1 i tag rispondono utilizzando la codifica FM0, mentre se M>1 i tag rispondono utilizzando la codifica Miller opportunamente traslata in frequenza in base al valore di M.

È utile a questo punto vedere come è strutturata la memoria di un tag standard UHF Gen2. La memoria è composta da quattro differenti tipi di memorie:

• Reserved memory • EPC memory • TID memory • User memory

La reserved memory è una memoria di sola lettura. Essa contiene la kill password e la access password, composte da 32 bit ciascuna. La kill password è utilizzata dal lettore per disabilitare un tag in modo definitivo tramite comando di kill. La access password è necessaria per ottenere l'accesso completo alla memoria del tag. La EPC memory contiene l’EPC ed una o più Protocol Control word8. È accessibile in scrittura. Alcuni tag possono allocare dalla User memory ulteriori bit per l’EPC. La TID memory contiene un codice identificativo stabilito dal produttore del circuito integrato e tipicamente tale valore che non può essere modificato. La User memory è accessibile in scrittura ed è di tipo general purpose. La sua presenza è opzionale e può essere di dimensione variabile. Può arrivare a qualche kilobyte di dimensione. La dimensione della user memory influisce in modo rilevante sul costo del tag.

8 Pagina 46 e pagina 50

(17)

La condizione tipica in cui si opera in ambito RFID è quella in cui sono presenti più tag, tutti simultaneamente raggiunti dalla portante e dai comandi trasmessi dal lettore. Per questo oltre alla descrizione della struttura dei comandi emessi dal lettore e delle risposte dei tag, è necessario anche trattare i meccanismi previsti per evitare che più tag rispondano simultaneamente e, qualora ciò accada, i meccanismi di anticollisione9.

I comandi si dividono in obbligatori ed opzionali. Quelli obbligatori devono essere tutti implementati come condizione necessaria perché un dispositivo soddisfi le richieste dello standard. Si evita qua di fare una lista con descrizione di tutti i comandi e le risposte previste dalle specifiche EPC UHF Gen2 e per la quale si rimanda alle pagine 70 e seguenti del documento Gen2 Protocol Standard v 2.0.1. In questa trattazione introdurremo i comandi principali, con le relative risposte da parte dei tag, andando a trattare le varie fasi della comunicazione tra lettore e tag.

Iniziamo con l'introdurre il concetto di inventory round. Esso inizia quando il lettore invia il comando Query10, con il quale avvia l’interrogazione dei tag, e termina quando viene inviato un successivo comando Query, oppure un comando Select11, oppure un comando di Challenge12. Il comando di Query specifica le condizioni perché un tag possa partecipare all'inventory round. Durante un inventory round il lettore può accedere alla memoria dei tag che vi partecipano, seguendo le procedure specificate dallo standard.

È importante inoltre descrivere preliminarmente i concetti di preamble e frame-sync. Il TARI della codifica PIE13 può assumere valori differenti compresi tra 6,25μs e 25μs. Un tag standard deve essere capace di decodificare un segnale codificato PIE utilizzante un qualsiasi valore di TARI appartenente a questo intervallo. Se venisse direttamente trasmesso un comando codificato PIE il tag non sarebbe capace di decodificarlo. Per questo motivo prima della trasmissione del comando di Query viene trasmesso il preamble e prima della trasmissione di tutti gli altri comandi viene trasmesso il frame-sync.

9 Vedere il Q algorithm trattato in seguito 10 Pag 76

11 Pag 72 12 Pag 74

13 Descritta precedentemente nel capitolo 2 Illustrazione 12: Preamble e frame-sync

(18)

Come mostrato dall’immagine, frame-sync e preamble sono identici, tranne che quest’ultimo ha la TRcal in coda, non presente nel frame-sync. Analizziamo il preamble. Il primo elemento trasmesso è il delimiter. Il segnale va basso per un tempo pari a 12,5μs (tolleranza +/-5%). Questo riferimento temporale fisso indica al tag che è in corso la trasmissione del preamble. L’elemento successivo che viene trasmesso è il data-0, cioè lo zero codificato PIE. Esso ha una durata pari ad un TARI ed il tag ne misura la durata rilevando il fronte in salita all’inizio ed alla fine del data-0. Allo stesso modo il tag misura la durata dei successivi RTcal e TRcal. Il primo serve a calibrare la comunicazione dal lettore verso il tag ed il secondo dal tag verso il lettore. RTcal ha una durata pari alla somma di uno zero e di un uno e quindi noto data-0, il tag estrae da ciò la durata dell’uno codificato PIE. TRcal insieme ad alcuni parametri del comando di Query indica al tag il formato della risposta al comando che esso invia al lettore. Il formato della risposta del tag è lo stesso per un intero inventory round ed infatti il TRcal viene inviato solo prima dell’invio di un comando di Query. Data-0 e RTcal fanno parte dl frame-sync e quindi vengono inviati prima di ogni comando e quindi per ciascuno la durata del TARI può differire.

Nella trattazione successiva si considera implicito che prima della trasmissione di una Query venga trasmesso il preamble e prima di tutti gli altri comandi il frame-sync. Inoltre è implicito anche che dopo il preamble o il frame-sync e prima dei parametri venga trasmesso un codice che permetta al tag di comprendere quale comando stia ricevendo. Inoltre alcuni comandi terminano con l’invio del CRC di tipo CRC-5 oppure CRC-16. Viene calcolato a partire dal bit più significativo del codice del comando a quello meno significativo dell’ultimo dei parametri trasmessi. Il tag utilizza il CRC per capire se ha correttamente ricevuto ed invia la risposta solo in caso affermativo.

Un tag è una macchina a stati14 che transita da uno stato all’altro in funzione dei comandi che riceve dal lettore. Nel momento in cui un tag si accende, avendo ricevuto energia dal lettore, entra nello stato ready. In tale stato esso può partecipare ad un inventory round qualora vi sia corrispondenza tra parametri del comando Query e variabili interne, descritte di seguito, contenute nel tag. Quest'ultimo dispone di quattro sessioni denominate S0, S1, S2 ed S3. La presenza delle sessioni permette di operare con più lettori senza che questi interferiscano l’uno con l’altro a condizione che ciascuno operi su una differente sessione. Il tag dispone di due tipi variabili interne denominate rispettivemente inventoried flag e selected flag (SL). La prima può valere A o B e ve ne è una per ciascuna sessione. La seconda è condivisa tra le quattro sessioni e il suo valore può essere asserito (SL) o non asserito (~SL). In base alla sessione e al valore dell’inventoried flag e del selected flag è possibile far partecipare i tag voluti all’inventory round. Tra i parametri del comando Query sono presenti la sessione selezionata ed i valori che queste variabili devono avere affinché un tag possa parteciparvi. Il comando Select permette di manipolare il valore di queste variabili in modo da fare operazioni di unione, intersezione e negazione insiemistiche selezionando così la sottopopolazione dei tag voluta. Per farlo può essere necessario inviare più Select consecutivi.

Un comando Select15 è composto dai seguenti parametri: • Target • Action • Membank • Pointer • Lenght • Mask • Truncate

14 Vedere pag 56 per il diagramma a palle della macchina a stati

(19)

Target seleziona se il comando deve agire sugli inventoried flag o sui selected flag. Ciascun comando di Select agisce o sui primi o sui secondi. Se agisce sugli inventorioed flag specifica anche una delle quattro sessioni. Membank, pointer, lenght e truncate servono a selezionare un area di memoria del tag da confrontare con il campo mask. Action indica l’azione da eseguire sugli inventoried flag od i selected flag in base al valore di target. Action specifica quale sia l’azione da eseguire sui tag dove la porzione di memoria corrisponde a quella cercata e quale su quelli dove non corrisponde. Tramite un'opportuna sequenza di comandi di Select è possibile selezionare una sottopopolazione di tag a prescindere dai valori di partenza degli inventoried flag e selected flag di ciascun tag.

Una volta selezionata una sottopopolazione di tag, il lettore invia il comando di Query. Tra i parametri di questo comando vi sono la sessione ed il valore degli inventoried flag e selected flag della sottopopolazione di tag che prenderà parte all’inventory round. I parametri del comando di Query sono:

Illustrazione 13: Comando Select

BLF= DR

TRcal

Data rate=BLF M

Illustrazione 14: Azioni che tag compie sui propri flag in base al valore del parametro Action. La colonna Tag Matching indica l'azione compiuta quando l'area di memoria coincide con quella desiderata, altrimenti viene compiuta l'azione sotto la colonna Tag Not-Matching

(20)

• DR • M • TRext • Sel • Session • Target • Q

DR, M e TRext forniscono al tag le informazioni necessarie sul formato della risposta che esso fornisce al lettore. La frequenza delle transizioni della risposta del tag si chiama BLF (Backscatter link frequency). Essa è pari a:

BLF= DR

TRcal

DR (Divide Ratio) può assumere il valore 8 oppure 64/3. TRcal è fornito al tag dal preamble del comando di query. Il parametro M stabilisce stabilisce la codifica della risposta del tag. Se M=1 esso utilizza la codifica FM0, mentre se M vale 2,4 oppure 8 la codifica Miller utilizzante M come coefficiente moltiplicativo. Si ha che:

Data rate=BLF M

Con codifica FM0 siamo in banda base e quindi data rate e BLF coincidono. Se invece spostiamo il segnale codificato su una sottoportante, utilizzando la codifica Miller, a parità di BLF il data rate risulta scalato di un fattore M. TRext abilita o meno la forma estesa della risposta del tag e ciò vale per tutte le risposte dei tag durante tutto l’inventory round. I parametri Sel, Session e Target servono a stabilire quali tag partecipano all’inventory round. Sel stabilisce il valore del selected flag che devono avere i tag partecipanti. Si può anche scegliere di selezionare i tag ignorandone il valore. Target stabilisce il valore dell’inventoried flag di una determinata sessione stabilita dal parametro Session. Il parametro Q definisce il numero di bit del valore random che i tag caricano nel proprio Illustrazione 15: Comando Query

(21)

slot counter. Trattando in seguito i meccanismi anti-collisione dello standard, vedremo come esso permettere di ridurre la probabilità che più tag rispondano contemporaneamente ad una Query.

Vediamo come è fatta la risposta di un tag ad un comando di Query. La risposta è composta da:

• Preamble • RN16

Il preamble è una sequenza fissa di valori che varia in base alla codifica selezionata. In base al valore del TRext del comando di Query esso può presentarsi in forma estesa o meno. In caso sia selezionata la forma estesa, prima del preamble vero è proprio viene trasmesso il pilot tone.

Illustrazione 16: Preamble della risposta del tag senza pilot tone (sopra) e con pilot tone (sotto) utilizzando codifica FM0

(22)

Come si vede dalle illustrazioni, il preamble differisce nel caso sia selezionata la codifica FM0 oppure la codifica Miller. Da notare per il preamble FM0 la violazione del protocollo indicata con v. Il pilot tone è costituito, per qualsiasi tipo di codifica, dalla trasmissione di dodici zeri codificati trasmessi prima del preamble vero e proprio. Il pilot tone rende più semplice al ricevitore sincronizzarsi con il data rate del segnale da ricevere. Successivamente al preamble, il tag trasmette l'RN16 (Random Number 16), cioè un numero casuale a 16 bit. L'RN16 verrà successivamente trasmesso dal lettore al tag in modo da segnalare a quest’ultimo la corretta ricezione della risposta. Il tag che ha risposto, e dunque nello stato reply, si pone in attesa della ricezione del comando Ack da parte del lettore. Inoltre le risposte ad alcuni comandi trasmettono in coda un CRC-16 calcolato dal primo bit dopo il preamble all’ultimo prima del CRC. Tale CRC viene utilizzato dal lettore per verificare la correttezza delle risposta ricevuta. Il comando Ack ha come parametro il numero casuale a 16 bit ricevuto dal tag. Se il tag riceve l’RN16 corretto passa dallo stato reply allo stato acknowledged, altrimenti torna allo stato arbitrate.

Se il comando Ack contiene il corretto RN16, il tag trasmette una risposta avente un numero di bit che varia in base alle caratteristiche del tag e che è compreso tra i 21bit ai 33328bit. Tale numero di Illustrazione 18: Comando Ack

Illustrazione 17: Preamble della risposta del tag senza pilot tone (sopra) e con pilot tone (sotto) utilizzando codifica Miller al variare di M

(23)

bit dipende dal valore della PC (Protocol Control word16). La PC è composta da 16 bit ed è la prima informazione che il tag trasmette al lettore in risposta ad un comando di Ack corretto. I bit della Protocol Control word sono contenuti nella EPC memory nell'intervallo di indirizzi 10h–1Fh. La PC è composta dai seguenti campi17:

• L (EPC length, bit 10h-14h) viene scritto dal lettore. Specifica la lunghezza, espressa in word, dell'EPC di cui il tag esegue il backscattering.

• UMI (User-Memory Indicator, bit 15h) ha un valore che può essere fissato dal produttore oppure calcolato dal tag. Nel primo caso indica se è presente o meno fisicamente la User memory, nel secondo se è stato allocato spazio nella User memory ed essa contiene informazioni oppure no.

• XI (XPC_W1 indicator, bit 16h) è calcolato dal tag. Il suo valore dipende dal fatto che il tag implementi la XPC_W118 (eXtended Protocol Control Word 1).

• T (numbering system identifier toggle, bit 17h) viene scritto dal lettore. Se pari 0 indica che il tag è utilizzato in un'applicazione GS1 EPCglobal, altrimenti è pari ad 1.

• RFU o AFI (Reserved Future Use oppure Application Family Identifier, bit 18h-1Fh). Riservato per un utilizzo futuro e fissato a zero se tag utilizzato in un'applicazione GS1 EPCglobal. Altrimenti identifica la famiglia dell'applicazione per cui il tag è utilizzato.

La tabella 6.17 a pagina 48 indica la forme differenti che la risposta ad un comando Ack può assumere in base al valore delle variabili memorizzate all'interno del tag.

Usualmente si ha che XI=0 e T=0 e quindi la risposta è composta da:

• StoredPC

• EPC

• PacketCRC

La StoredPC è la protocol control word descritta precedentemente. L'EPC è l'Electronic Product Code. Molto spesso è composto da 96 bit. Il PacketCRC è il CRC-16 calcolato sui bit dei due campi precedenti. Una volta che il tag ha ricevuto il comando Ack con un corretto valore dell'RN16 esso 16Per lo standard una parola sono 16 bit.

17 Per una descrizione dettagliata vedere pagine 46 e seguenti

(24)

transita nello stato Acknowledged. In tale stato il tag deve ricevere entro un tempo massimo19 un comando valido altrimenti torna nello stato Arbitrate. Se riceve un Ack esegue nuovamente il backscattering della risposta al comando Ack. Se riceve un comando Req_RN20 il tag transita allo stato Secured qualora abbia password di accesso pari zero. Qualora la password di accesso sia diversa da zero, il tag, in risposta ad un comando Req_RN, transita allo stato Open. Tramite un successivo comando Access21, contenente la password di accesso, il tag transita dallo stato Open allo stato Secured. Nello stato Open il tag può eseguire solo una parte dei comandi di accesso alla memoria del tag. Nello stato Secured può eseguirli tutti22. In risposta al comando Req_RN il tag esegue il backscattering di un nuovo RN16, denominato handle, necessario affinché i successivi comandi vengano correttamente eseguiti dal tag. Un altro stato in cui quest'ultimo può transitare è lo stato Killed, nel quale esso non risponde più ad alcun comando del lettore. Un tag transita in questo stato ricevendo un comando Kill mentre si trova nello stato Open o Secured. Tale condizione è irreversibile e, anche nel caso in cui il tag venga spento, all'accensione transita immediatamente nello stato Killed.

Vediamo la lista dei principali comandi di accesso al tag:

• Req_RN23: Comando che il tag può ricevere quando si trova nello stato Acknowledged, Open oppure Secured. In tutti e tre i casi il tag risponde eseguendo il backscatter di un nuovo RN16 utilizzato dal lettore come parametro dei successivi comandi. Se il tag è nello stato Acknowledged esso transita nello stato Open oppure Secured e seconda che esso abbia una password di accesso rispettivamente uguale oppure diversa da zero. Se il tag è nello stato Open oppure Secured il tag non cambia stato in conseguenza alla ricezione di questo comando (comando obbligatorio).

• Read24: Comando utilizzato per leggere la memoria del tag. Esso specifica a quale banco di memoria accedere (Reserved, EPC, TID oppure User memory), l'indirizzo della prima word da leggere e il numero di word da leggere a partire dalla prima. Con un singolo comando di Read è possibile ottenere in risposta il contenuto di più word a condizione che esse appartengano allo stesso banco di memoria e siano contigue (comando obbligatorio).

• Write25: Comando utilizzato per scrivere nella memoria del tag. Esso specifica il banco di memoria a cui accedere (Reserved, EPC, TID oppure User memory), l'indirizzo della word in cui scrivere e il valore da scrivere nella word. Con un singolo comando di Write è possibile scrivere una sola word di memoria alla volta. (Comando obbligatorio).

19 Pagina 42 e seguenti mostrano le tempistiche che i comandi trasmessi e le risposte dei tag devono rispettare 20 Pagina 81

21 Pagina 90

22 La tabella 6.27 a pagina 69 mostra quali comandi di accesso siano permessi o meno in base allo stato in cui si trova il tag.

23 Pagina 81 24 Pagina 82 25 Pagina 84

(25)

• Kill26: Comando utilizzato per far transitare il tag dallo stato Open o Secured allo stato Killed. (comando obbligatorio).

• Lock27: Comando utilizzato per bloccare l'accesso a determinate aree di memoria del tag. Permette di bloccare l'accesso in lettura ed in scrittura alle password di accesso e di kill in modo che non possano successivamente essere lette ne modificate. Permette inoltre di bloccare l'accesso in scrittura ai vari banchi di memoria del tag: EPC memory, TID memory ed user memory (comando obbligatorio).

• Access28: Comando utilizzato per far transitare il tag dallo stato Open allo stato Secured comunicando al tag la password di accesso (comando opzionale).

• BlockWrite29: Comando utilizzato per scrivere nella memoria del tag. È simile al comando di Write, ma in più specifica il numero di parole da scrivere a partire dall'indirizzo di partenza. Con un singolo comando di BlockWrite è possibile scrivere più word a condizione che esse appartengano allo stesso banco di memoria e siano contigue (comando opzionale).

Se tutti i tag rispondessero immediatamente ad una Query si verificherebbero continuamente delle collisioni che renderebbero impossibile l'identificazione di un singolo tag. Per questo lo standard prevede l'utilizzo di un algoritmo anti-collisione denominato Q algorithm, che deriva dalla precedente versione utilizzata denominata Slotted Aloha. Il Q algorithm permette di ridurre la probabilità che si verifichino collisioni e di gestirle qualora si verifichino. Alla base dell'algoritmo sta la divisione dell'inventory dei tag in vari slot temporali. Quando inizia l'inventory round tutti i tag scelgono casualmente un valore appartenente all'intervallo [0, 2Q-1]. I tag aventi tale valore pari a zero rispondono immediatamente mentre gli altri restano in attesa. Il valore di Q viene stabilito dal lettore. Questo è il primo slot dell'inventory round. Una volta terminato lo slot il lettore invia un comando che decrementa di uno il valore casuale presente in ciascun tag avviando così il secondo slot, in cui, come nel primo, tutti i tag aventi numero casuale pari a zero rispondono. Terminato lo slot il lettore riduce nuovamente di uno il valore casuale contenuto nei tag avviando così il terzo slot. In un qualsiasi slot rispondono unicamente i tag il cui valore casuale è pari a zero e che ancora non sono stati identificati. Tale procedura procede fino a che non sono stati identificati tutti i tag partecipanti all'inventory round. La risposta del tag è costituita da un valore casuale a 16 bit denominato RN16 (Random Number 16), il quale è differente e non correlato con il numero casuale compreso tra 0 e 2Q-1. Quando il lettore riceve l'RN16 lo ritrasmette al tag e quest'ultimo transita dallo stato non identificato allo stato identificato. Durante ciascuno slot accade sempre uno e uno solo dei seguenti eventi:

• Non risponde alcun tag. Quando il lettore non riceve alcuna risposta entro un dato tempo massimo decrementa di uno il valore casuale contenuto nei tag passando così allo slot successivo.

26 Pagina 85 27 Pagina 88 28 Pagina 90 29 Pagina 92

(26)

• Risponde un solo tag. Il lettore riceve l'RN16 di un tag e lo ritrasmette. Il tag passa allo stato identificato.

• Rispondono più tag. Avviene una collisione in quanto al lettore giungono contemporaneamente gli RN16 di più tag ed esso non riesce a ricevere correttamente tali valori. I tag che hanno risposto non ricevendo la ritrasmissione del loro RN16 entro un dato tempo massimo restano nello stato non identificato e scelgono un nuovo numero casuale tra 0 e 2Q-1. In tale modo potranno essere identificati durante gli slot successivi.

Il valore di Q viene scelto in modo da minimizzare il tempo necessario ad identificare tutti i tag partecipanti all'inventory round. Il valore ottimo dipende dal numero di tag da identificare ed è scelto come compromesso tra la riduzione della probabilità che in uno stesso slot rispondano più tag, ed essa cresce al diminuire di Q, e la riduzione della probabilità che in un slot non ne risponda alcuno, che invece cresce all'aumentare di Q. Lo standard UHF Gen2 prevede la possibilità di modificare Q dinamicamente durante un inventory round. Ciò fornisce un ulteriore grado di libertà nell'ottimizzazione del tempo di identificazione dei tag.

Vediamo come viene implementato il Q algorithm a livello di standard. Tutti i tag UHF Gen2 dispongono di uno slot counter. Nel momento in cui un tag riceve un comando di Query ed esso soddisfa i requisiti per partecipare all'inventory round, esso transita nello stato arbitrate e nel suo slot counter viene caricato un numero casuale appartenente all'intervallo [0, 2Q-1]. Il valore di Q viene trasmesso ai tag come parametro del comando Query. Ogni qual volta un tag entra nello stato arbitrate, a prescindere da quale fosse il suo stato stato precedente, viene caricato un nuovo valore casuale nel suo slot counter. Quando il valore contenuto in quest'ultimo raggiunge zero il tag transita nello stato reply ed invia la risposta al comando di Query. Il valore caricato nello slot counter dei tag viene manipolato tramite due comandi:

• QueryRep30: Comando tramite cui il tag decrementa di uno il valore contenuto nello slot counter dei tag se la sessione del tag specificata dal comando stesso sta partecipando ad un inventory round (comando obbligatorio).

• QueryAdjust31: Comando tramite cui il tag può incrementare o decrementare di uno oppure lasciare inalterato il valore di Q, cioè il numero dei bit del valore caricato nello slot counter, e successivamente,in base al nuovo valore di Q, caricare in esso un nuovo numero casuale. Il comando ha effetto solo se la sessione del tag specificata dal comando stesso sta partecipando ad un inventory round (comando obbligatorio).

Tutto ciò è pensato per ridurre la probabilità che due tag rispondano contemporaneamente e si verifichi una collisione. Tale probabilità non è nulla in quanto può accadere che due o più tag si trovino contemporaneamente un valore pari a zero nello slot counter. Qualora ciò accada al lettore giunge il segnale somma degli RN16 di cui i tag hanno eseguito il backscatter.

30 Pagina 78 31 Pagina 77

(27)

Lo standard indica tre modi32 in cui la collisione può essere gestita:

1) Il lettore prova a risolvere la collisione inviando un comando Ack. Ciò accade quando esso riesce a distinguere uno degli RN16 rispetto agli altri in quanto la risposta di un tag giunge al lettore con un potenza molto maggiore delle altre. In tal caso, se l'RN16 viene ricevuto e ritrasmesso correttamente, il tag di cui è stato correttamente ricevuto l'RN16 passa allo stato Acknowledged, mentre gli altri tag, avendo ricevuto un comando Ack con l'RN16 di un altro tag, tornano allo stato Arbitrate.

2) Il lettore non risolve la collisione e una volta terminata la trasmissione delle risposte dei tag invia un comando QueryRep, QueryAdjust o Nak33. Nel caso il lettore invii uno dei primi due comandi i tag che hanno risposto non ricevono alcun comando entro il tempo massimo e tornano nello stato arbitrate. Nel caso in cui i tag che hanno risposto ricevano un comando di Nak essi tornano immediatamente allo stato arbitrate. Il comando Nak è utilizzato dal lettore per indicare ai tag in stato Reply che non è stato ricevuto l'RN16.

3) Il lettore comprende che la collisione è avvenuta prima che termini la trasmissione della risposta da parte dei tag ed invia un comando QueryRep o QueryAdjust. Così facendo si agisce sui valori contenuti negli slot counter dei tag nello stato Abitrate mentre si attende che quelli che avevano generato la collisione, trascorso il tempo massimo di attesa di un comando da parte del lettore, tornino dallo stato Reply allo stato Arbitrate.

32 Pagina 60 alla voce Multiple Tags reply 33 Pagina 80

(28)

3 Il microcontrollore CC430F6137

Il microcontrollore selezionato per realizzare il lettore è il modello CC430F613734 di Texas Instrument. Per la realizzazione del lettore RFID è stato necessario utilizzare una coppia di questi microcontrollori, uno dedicato alla ricezione ed uno alla trasmissione.

Il CC430F6137 appartiene alla famiglia dei microcontrollori CC43035. Questa famiglia ha caratteristiche affini a quelli della famiglia MSP43036 di Texas Instrument, ma in aggiunta ad essi presenta un modulo RF basato sul transceiver CC110137 di Texas Instrument.

Di seguito vengono elencate le caratteristiche principali del microcontrollore e viene descritta quella parte delle risorse utilizzata per la realizzazione del lettore RFID. Per la descrizione dettagliata del CC430F6137 si rimanda al data sheet38 ed alla user's guide39.

Le principali caratteristiche di questo dispositivo sono:

• Architettura RISC a 16 bit • 32 Kbyte di memoria Flash • 4 Kbyte di memoria RAM

• Fino a 44 pin programmabili come I/O • Tensione di alimentazione tra 3,6V e 1,8V

• Bassi consumi(160μA/Mhz in modalità attiva e 4 differenti Low power mode con consumi minimi di 1μA in LPM4 Off mode)

• Clock di sistema programmabile fino a 20 Mhz • Due contatori a 16 bit

• Supporto ai protocolli di comunicazione seriale UART, I2C e SPI • ADC a 12 bit

• Moltiplicatore hardware a 32 bit

• Modulo RF integrato all’interno del microcontrollore Le principali caratteristiche del modulo RF sono:

• Basato sulla ricetrasmittente CC1101 di Texas Instrument

• Ricetrasmittente sub-GHz operante nelle bande 300Mhz÷348Mhz, 389Mhz÷464Mhz, 779Mhz÷928Mhz

• Data rate programmabile tra 0,6Kbaud e 500Kbaud 34 http://www.ti.com/product/CC430F6137 35 http://www.ti.com/lsds/ti/microcontrollers_16-bit_32-bit/wireless_mcus/cc430/overview.page 36 http://www.ti.com/ww/it/msp430.html 37 http://www.ti.com/product/CC1101 38 http://www.ti.com/lit/ds/symlink/cc430f6137.pdf 39 http://www.ti.com/lit/ug/slau259e/slau259e.pdf

(29)

• Potenza di uscita programmabile tra -6dBm e +12dBm per tutte le frequenze supportate • Supporto alla modulazione e demodulazione 2-FSK, 2-GFSK, MSK, ASK e OOK • Supporto flessibile per sistemi orientati ai pacchetti

• TXFIFO da 64 byte • RXFIFO da 64 byte • Misurazione dello RSSI

• Valutazione se canale è libero prima di effettuare la trasmissione (CCA) • Power amplifier e LNA integrati

Per la realizzazione del lettore sono stati utilizzati: • Il modulo RF

• I pin di I\O

• L'interfaccia UART

• Il modulo UCS (Unified Clock System)

Il modulo RF è una macchina a stati40 . Il produttore fornisce una libreria denominata RF1A.h41 la quale contiene le funzioni necessarie per accedere ai registri di controllo, ai registri di stato42, alla TXFIFO od alla RXFIFO e per far transitare la macchina da un stato ad un altro. Il modulo RF dispone di un cristallo a 26 Mhz per il proprio clock.

40 Diagramma a palle a pagina 697 della user's guide 41 http://www.ti.com/lit/an/slaa460/slaa460.pdf

42 Registri di controllo e di stato descritti da pagina 712 e seguenti della user's guide Illustrazione 19: Schema a blocchi del microcontrollore CC430F6137

(30)

Sia in trasmissione che in ricezione è previsto una comunicazione basata su pacchetti aventi formato flessibile, in quanto in base alla configurazione variano sia la lunghezza dei campi del pacchetto sia quali campi siano presenti e quali no.

Il pacchetto presenta nell'ordine i seguenti campi:

• Preambolo: è un campo opzionale la cui lunghezza è stabilita da un valore contenuto nei registri di controllo. È composto da una sequenza alternata di uni e zeri (101010101010...) e può essere utile al ricevitore per stimare la qualità del pacchetto ricevuto.

• Synchronization word: è un campo opzionale e, se presente, può essere composto da 16 oppure 32 bit. Viene usato dal ricevitore come sequenza da riconoscere per indicare l'arrivo di un pacchetto.

• Length field: indica la lunghezza in byte del payload. È composto da 8 bit. Tale campo è presente se si utilizza un payload di lunghezza variabile.

• Address field: viene comparato dal ricevitore con un variabile address al suo interno. Se corrisponde il pacchetto viene ricevuto, altrimenti viene scartato. È opzionale e, se presente, è composto da 8 bit.

• Payload: è il contenuto informativo del pacchetto. In base alla configurazione la lunghezza può essere fissata da un valore scritto nei registri di configurazione, variare da un pacchetto ad un altro in base al contenuto di length field oppure avere lunghezza non nota a priori da trasmettitore o ricevitore e potenzialmente infinita.

• CRC-16: è il CRC-16 è calcolato sui bit dei campi length, address e payload. È opzionale e composto, se presente, da 16 bit.

(31)

Opzionalmente è possibile in trasmissione attivare lo whitening43 dei dati trasmessi dal length field fino al CRC-16. In ricezione è possibile attivare il de-whitening. Lo whitening ottimizza la banda occupata dal pacchetto trasmesso.

Vediamo i registri più significativi:

• IOCFG2, IOCFG1, IOCFG044: Permettono di porre rispettivamente sulle uscite GDO2, GDO1, GDO0 determinati segnali interni45, quali, ad esempio, l'uscita del demodulatore ed il carriere sense, il quale segnala se il ricevitore sente o meno la portante.

• FIFO_THR46: definisce le soglie per i byte presenti nella RXFIFO e nella TXFIFO oltrepassate le quali può essere generato un interrupt. È inoltre presente nel registro il campo CLOSE_IN_RX che permette di inserire un'attenuazione in ricezione programmabile tra 0dB e 18dB.

• PKTCTRL1, PKTCTRL047: definiscono il formato del pacchetto. È anche possibile bypassare il gestore di pacchetti e la FIFO configurando opportunamente questi registri. •

• FREQ2, FREQ1 E FREQ048: definiscono la frequenza della portante, sia in ricezione che in trasmissione.

• MDMCFG4, MDMCFG3, MDMCFG2, MDMCFG1, MDMCFG049: configurano il modulatore ed il demodulatore. Permettono di: selezionare la banda di canale, il tipo di modulazione, il data rate, la spaziatura tra i canali, abilitare la codifica\decodifica Manchester e stabilire il numero di bit corretti da ricevere della sync-word perché il pacchetto ricevuto sia considerato valido.

• MCSM2, MCSM1, MCSM050: configurano il comportamento della macchina a stati. Permettono di scegliere a quali condizioni termina la ricezione, in quale stato la macchina transita dopo la ricezione di un pacchetto e in quale stato transita dopo la trasmissione di un pacchetto. Inoltre permette di specificare durante quale passaggio di stato viene eseguita la calibrazione del sintetizzatore di frequenza.

43 Pagina 688 user's guide 44 Pagina 712 user's guide

45 Tabella 25-21 pag 712 user's guide 46 Pag 714 user's guide

47 Pag 715 user's guide 48 Pagina 716 user's guide

49 Pagina 716 e seguenti user's guide 50 Pag 719 e seguenti user's guide

(32)

• AGCCTRL2, AGCCTRL1, AGCCTRL051: configurano il controllo automatico del guadagno (AGC, Automatic Gain Control) in ricezione. Nel registro AGCCTRL0 il campo FILTER_LENGTH indica, qualora si riceva un segnale modulato in ampiezza, la minima differenza in dB tra i livelli del segnale perché il decisore lo interpreti come 0 o come 1. • FREND1, FREND052: Permettono la configurazione del front-end radio in ricezione ed in

trasmissione.

• RSSI53: Contiene il valore della potenza del segnale RF ricevuto (Received Signal Strength Indication).

• MARCSTATE54: il campo MARC_STATE contiene un valore indicante lo stato in cui si trova il modulo RF.

• PKTSTATUS55: Fornisce informazioni sullo stato del pacchetto e sui valori di GDO2, GDO1 e GDO0. Indica se l'ultimo CRC ricevuto è corretto, se la portante è presente, se il canale è libero, se la qualità del preambolo è sufficientemente elevata e se è stata trovata la sync word.

• TXBYTES56: Indica se si è verificato l'underflow della TXFIFO e il numero di bytes contenuti in essa.

• RXBYTES57: Indica se si è verificato l'overflow della RXFIFO e il numero di bytes contenuti in essa.

51 Pag 723 e seguenti user's guide 52 Pagina 726 user's guide

53 Pagina 729 user's guide. Per la corretta interpretazione del valore contenuto nel registro ed per calcolare i tempi necessari ad ottenere una misura corretta dello RSSI fare riferimento al design note DN505

http://www.ti.com/lit/an/swra114d/swra114d.pdf 54 Pagina 730 user's guide

55 Pagina 731 user's guide 56 Pagina 731 user's guide 57 Pagina 731 user's guide

(33)

Il microcontrollore CC430F6137 dispone di 64 pin di cui 44 programmabili come I\O.

Sono utilizzabili come I\O gli 8 pin delle porte 1,2,3,4 e 5 ed i 4 pin della porta J. Ciascun PIN di I\O è programmabile individualmente. La comunicazione con i PIN I\O avviene tramite opportuni registri dati e di configurazione58. Di seguito riportiamo i più significativi (x=1,2,3,4,5 o J in base alla porta a cui il registro si riferisce):

• Input registers (PxIN): per i pin della porta configurati come ingressi, ciascun bit della porta rispecchia il valore del segnale di ingresso sul corrispondente pin di I\O.

• Output registers (PxOUT): per i pin della porta configurati come uscite, ciascun bit della porta rispecchia il valore del segnale posto in uscita sul corrispondente pin di I\O. Per quelli 58 Pagina 345 e seguenti user's guide

(34)

configurati come ingressi, specifica se per il corrispondente pin si utilizza un resistore di pull-up oppure di pull-down.

• Direction Registers (PxDIR): ciascun bit specifica se il corrispondente pin di I\O della porta sia di ingresso oppure di uscita.

• Pullup or Pulldown Resistors Enable Registers (PxREN): ciascun bit specifica se per il corrispondente pin di I\O della porta è abilitato o disabilitato il resistore di pullup\pulldown. Se abilitato, PxOUT stabilisce il tipo di resistore.

• Function Select Registers (PxSEL): ciascun bit specifica se il corrispondente pin della porta è utilizzato come I\O oppure per un'altra funzione.

Il microcontrollore dispone di una interfaccia di comunicazione seriale universale denominata USCI59 (Universal Serial Communication Interface). Al suo interno sono presenti moduli di due tipi differenti denominati USCI_A ed USCI_B. Tali moduli possono essere programmati per comunicare tramite un certo tipo di protocollo di comunicazione seriale. Solamente i moduli USCI_A possono essere configurati in modalità UART, impostando a zero il valore di UCSYNC all'interno del registro UCAxCTL060.

La modalità UART dispone delle seguenti caratteristiche:

• Trasmissione e ricezione dati a 7 bit oppure ad 8 bit con supporto alla parità pari o alla parità dispari

• Shift registers separati per la trasmissione e la ricezione • Buffer separati per la ricezione e la trasmissione

• Possibilità di selezionare se ricezione e trasmissione iniziano dal MSB o dal LSB • Baud rate programmabile

La trasmissione seriale avviene inviando bit a bit tramite shift register il dato contenuto nel buffer di trasmissione, mentre la ricezione avviene caricando i bit del dato in ricezione in uno shift register e una volta ricevuto il dato esso viene trasferito in un buffer di ricezione.

È possibile programmare un pin del microcontrollore tramite cui vengono trasmessi o ricevuti serialmente i bit.

Vediamo i registri più significativi:

• UCAxCTL0, UCAxCTL161: definiscono il formato della trasmissione. Permettono di stabilire se abilitare il bit di parità, utilizzare parità pari o parità dispari, trasmettere o ricevere dati a 7 bit oppure 8 bit, trasmettere o ricevere a partire dal MSB o dal LSB, 59 Pagina 579 e seguenti user's guide

60 Pagina 600 user's guide 61 Pagina 600 e 601 user's guide

(35)

configurare il modulo USCI_A in modalità UART e selezionare la fonte del clock per il modulo USCI.

• UCAxBR0, UCAxBR162: contengono il prescaler a 16 bit del clock del generatore di baud-rate.

• UCAxSTAT63: Registro di stato contente i flag del modulo USCI_A.

• UCAxRXBUF64: è il buffer di ricezione e contiene l'ultimo dato ricevuto dallo shift register. • UCAxTXBUF65: è il buffer di trasmissione e contiene il successivo dato da trasmettere allo

shift register.

62 Pagina 602 user's guide 63 Pagina 603 user's guide 64 Pagina 604 user's guide 65 Pagina 604 user's guide

(36)

Il modulo USC66 (Unified Clock System) gestisce il clock di sistema. Esso dispone di cinque fonti di clock e genera tre clock differenti.

Le fonti di clock sono67:

• XT1CLK68: Oscillatore a bassa frequenza alimentato esternamente da un cristallo per orologi operante a 32768 Hz.

• VLOCLK69: Oscillatore interno a bassa potenza ed a bassa frequenza operante a 10 KHz. • REFOCLK70: Oscillatore interno trimmerato a bassa frequenza operante a 32768 Hz. Può

essere utilizzato come clock di riferimento per l'FLL (Frequency Looked-Loop). Quest'ultimo è un sistema di controllo elettronico che a partire dal clock di riferimento genera un clock ad una frequenza stabile rispetto alla variazione di fattori quali tensione e temperatura.

• DCOCLK71: Oscillatore interno controllato digitalmente che può che può essere stabilizzato tramite FLL.

• XT2CLK72: Oscillatore operante a 26 Mhz utilizzato dal modulo RF. Se quest'ultimo è disabilitato allora tale clock può essere utilizzato per per altri scopi.

I tre tipi differenti di clock generati sono73:

• ACLK: Auxiliary clock. Tramite software è possibile impostare come fonte per questo clock XT1CLK, REFOCLK, VLOCLK, DCOCLK, DCOCLKDIV, e quando disponibile, XT2CLK. DCOCLKDIV è DCOCLK diviso per 1, 2, 4, 8, 16, or 32 all'interno del blocco FLL. ACLK può essere divido per 1, 2, 4, 8, 16, o 32. ACLK/n è ACLK diviso per 1, 2, 4, 8, 16, or 32 e e può essere reso disponibile in uscita su un PIN. ACLK è selezionabile come clock per le singole periferiche.

• MCLK: Master clock. Tramite software è possibile impostare come fonte per questo clock XT1CLK, REFOCLK, VLOCLK, DCOCLK, DCOCLKDIV, e XT2CLK. MCLK è il clock della CPU e del sistema.

• SMCLK: Subsystem master clock. Tramite software è possibile impostare come fonte per questo clock XT1CLK, REFOCLK, VLOCLK, DCOCLK, DCOCLKDIV, e XT2CLK. SMCLK è selezionabile come clock per le singole periferiche.

66 Pagina 106 user's guide 67 Pagina 107 user's guide 68 Pagina 110 user's guide 69 Pagina 109 user's guide 70 Pagina 110 user's guide 71 Pagina 111 user's guide 72 Pagina 111 user's guide 73 Pagina 107 user's guide

(37)

Il DCO permette di generare un clock avente frequenza fino a 20 Mhz e in uscita fornisce DCOCLK e DCOCLKDIV. Tipicamente il DCO viene utilizzato con l'FLL abilitato. In tale caso si ha che:

• fDCOCLK = D × (N + 1) × (fFLLREFCLK ÷ n)

• fDCOCLKDIV = (fDCOCLK ÷ D) = (N + 1) × (fFLLREFCLK ÷ n) Illustrazione 24: Diagrammi a blocchi dell'UCS

(38)

Come clock di riferimento dell'FLL, denominato fFLLREFCLK, è possibile selezionare XT1CLK, REFOCLK o XT2CLK. All'interno dello FLL tale clock può essere diviso per un un interno n il quale può assumere il valore di 1,2,4,8,12 o 16. Tramite i registri di controllo dell'UCS è possibile impostare il valore di N e D. Vediamo di seguito i registri più significativi:

• UCSCTL174: Il campo DCORSEL all'interno di tale registro permette di specificare il range a cui appartiene la frequenza del clock generato dal DCO.

• UCSCTL275: Contiene i campi FLLD e FLLN che specificano rispettivamente il valore dei parametri D e N definiti precedentemente.

• UCSCTL376: Contiene i campi SELREF e FLLREFDIV. Il primo specifica la fonte di clock utilizzata per l'FLL ed il secondo il valore del divisore di tale fonte di clock denominato n e definito precedentemente.

• UCSCTL477: Contiene i campi SELA, SELS e SELM che specificano rispettivamente la fonte del clock per ACLK, SMCLK e MCLK.

• UCSCTL578: Contiene i campi DIVPA, DIVA, DIVS e DIVM Il primo specifica il valore n per cui dividere ACLK. ACLK/n è disponibile esternamente su un pin. Il secondo, il terzo e il quarto campo specificano rispettivamente il valore per cui viene diviso il clock fonte di ACLK, SMCLK e MCLK.

74 Pagina 122 user's guide 75 Pagina 123 user's guide 76 Pagina 124 user's guide 77 Pagina 125 user's guide 78 Pagina 126 user's guide

Riferimenti

Documenti correlati

Brufsky A, Bossermann L, Caradonna R et al (2009) Zoledronic acid effectively prevents aromatase inhibitor-associated bone loss in postmenopausal women with early breast

Un certo tipo di testo letterario (il ro- manzo e la costellazione di generi che a esso si collega: a partire dalla short story) funziona.. adeguatamente se è in atto un’istanza – ben

Given that a general duty to cooperate is an obligation under UNCLOS and that a vast majority of States is party to the convention, there are various international organisations

Five main contributions by Ka]ecki to the theory and practice of socialist planning are singled out and discussed: i) a comprehensive and coherent model of the

zione del concetto di autore (diversi protagonisti dell’opera multimediale e ruolo enfa- tizzato del lettore), evoluzione del concetto di creatività (fenomeno del sampling

In order to analyse how the COO has been used by foreign (Italian) brands in the Chinese market, we examined 45 points of sale in China to check whether Italy

They concentrate on two focal points in musical (and not only musical) education: the link between the scientific knowledge developed at university level and its

Svolgeva questa operazione esaminando vari elenchi e tabelle, fra cui le tabelle di sistema che dichiaravano quali altre macchine erano fidate per questo host, i file di