scarica la versione completa

Transcript

scarica la versione completa
UNIVERSITA’ degli STUDI di TRENTO
Facoltà di Ingegneria
Corso di Laurea in
Ingegneria delle Telecomunicazioni
Tesi Di Laurea
----------Studio e realizzazione
di un’interfaccia USB 2.0
per la gestione di una microcamera
RELATORE: Dr. Andrea Boni
CORRELATORE: Dr. Pietro Chiesa
LAUREANDO: Garofalo Davide
ANNO ACCADEMICO 2002 – 2003
Alla mia famiglia,
alla mia ragazza,
a tutti gli amici.
Ringraziamenti
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Desidero innanzitutto ringraziare i miei genitori, che in tutti questi anni mi hanno sempre
incoraggiato e sostenuto, soprattutto nei momenti più difficili. A loro dedico la mia tesi.
Ringrazio la mia ragazza Debby per i numerosi consigli e per la pazienza, mio fratello Marco
tutti gli amici e compagni di facoltà per avermi fatto passare momenti felici distraendomi di
tanto in tanto dalla stesura di questa tesi per godere di qualche attimo di relax. Sono molto
grato a Neuricam s.p.a. per avermi dato la possibilità di vivere quest’esperienza mettendomi a
disposizione tutto il materiale e le attrezzature necessarie allo svolgimento del tirocinio.
Ringrazio infine il mio relatore, dott. Andrea Boni, per la disponibilità e per i suggerimenti che
mi ha dato, utili alla realizzazione di questa tesi.
INDICE
Indice
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Indice delle figure ……………………………………………………………….6
Indice delle tabelle ………………………………………………………………8
Introduzione …………………………………………………………………….9
Capitolo 1 : Porta USB 2.0 ……………………………………………………11
1.1.1
Introduzione all’USB ………………………………………………………..11
1.1.2
Connettori …………………………………………………………………...12
1.1.3
Periferiche …………………………………………………………………..13
1.1.4
Alimentazione ……………………………………………………………….14
1.1.5
Trasmissione dati …………………………………………………………….14
Capitolo 2 : Descrizione Architettura ………………………………………..15
2.1 Introduzione al componente Cypress Ez-USB FX2 ……………………………..15
2.1.1 Architettura interna dell’FX2 ………………………………………….16
2.1.2 Endpoint ……………………………………………………………….17
2.1.2.1 Endpoint zero ………………………………………………...18
____________________________________________________________________________________________
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
4
INDICE
2.1.3 Trasmissione dati in High-Speed e Full-Speed ………………………..18
2.1.3.1 Trasmissione isocrona ……………………………………….19
2.1.3.2 Trasmissione interrupt ……………………………………….19
2.1.3.3 Trasmissione bulk ……………………………………………20
2.1.4 Modalità sincrona e asincrona …………………………………………20
2.2 Descrizione generale della microcamera VISoc ………………………………...21
2.2.1 Dedicated parallel port ………………………………………………...23
2.3 Descrizione di un FPGA ……………………………………………………...…24
2.3.1 Tecnologia antifuse ……………………………………………………26
2.3.2 Tecnologia SRAM ……………………………………………………..27
2.3.3 Architettura di una cella logica ………………………………………...28
2.4 Introduzione al linguaggio VHDL ………………………………………………28
2.4.1 La simulazione logica ………………………………………………….29
2.4.2 Concetti base sulla sintesi ……………………………………………...31
2.4.3 Le macchine a stati …………………………………………………….33
2.4.4 Gerarchia di progetto …………………………………………………..34
Capitolo 3 : Progettazione, Test e Sviluppo Dell’ Interfaccia ………………35
3.1 Configurazione dell’FX2 ………………………………………………………...36
3.1.1 Slave Fifo ………………………………………………………………36
3.1.2 Lettura asincrona ………………………………………………………38
3.1.3 Scrittura asincrona ……………………………………………………..39
3.1.4 Configurazione degli endpoint ………………………………………...40
3.1.5 Firmware FX2 …………………………………………………………41
3.2 Configurazione del VISoc ……………………………………………………….43
3.2.1 Comunicazione col VISoc attraverso l’ add/ctrl register ……………...44
3.2.2 Lettura di un indirizzo del VISoc ……………………………………...45
3.2.3 Scrittura di un indirizzo del VISoc …………………………………….47
3.2.4 Tempi teorici di trasmissione dati ……………………………………..48
3.3 Programmazione dello Xilix Spartan II …………………………………………49
3.4 Protocollo di comunicazione …………………………………………………….52
3.5 Funzioni di lettura e scrittura dell’FX2 tramite USB 2.0 ………………………..53
3.6 Realizzazione in ‘C’ di un’interfaccia grafica …………………………………...55
3.7 Calcolo dei tempi di trasmissione dati …………………………………………...58
____________________________________________________________________________________________
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
5
INDICE
Capitolo 4 : Conclusioni e Sviluppi Futuri …………………………………..59
Riferimenti Bibliografici ………………………………………………………60
Appendice ……………………………………………………………………...61
Indice delle figure
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Fig. 1.1
- Connettore USB da collegare al PC ……………………………………………...12
Fig. 1.2
- Connettore USB da collegare ad una periferica ………………………………….12
Fig. 1.3
- Connettore USB per cablaggi ISDN ……………………………………………..12
Fig. 1.4
- Configurazione a stella tramite l’utilizzo di HUB ……………………………….13
Fig. 2.1
- FX2, Diagramma a blocchi semplificato ………………………………………...16
Fig. 2.2
- Modelli Sincroni e Asincroni …………………………………………………….20
Fig. 2.3
- Connesioni del VISoc …………………………………………………………….22
Fig. 2.4
- Struttura interna del VISoc ……………………………………………………….22
Fig. 2.5
- Schema di una FPGA …………………………………………………………….25
Fig. 2.6
- Tecnologia Antifuse ……………………………………………………………...26
Fig. 2.7
- An Array of ViaLink Elements …………………………………………………..27
Fig. 2.8
- Schema Generale della simulazione ……………………………………………...29
Fig. 2.9
- Analisi Ed Elaborazione ………………………………………………………….32
Fig. 2.10 - Design Analyzer ………………………………………………………………….32
Fig. 2.11 - Schema Logico di una Macchina a Stati …………………………………………34
Fig. 3.1
- Architettura di VistaII-USB ……………………………………………………...35
____________________________________________________________________________________________
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
6
INDICE
Fig. 3.2
- Architettura Slave FIFOs ………………………………………………………...36
Fig. 3.3
- Lettura Asincrona ………………………………………………………………...38
Fig. 3.4
- Lettura Asincrona, forme d’onda ………………………………………………...38
Fig. 3.5
- Scrittura Asincrona ……………………………………………………………….39
Fig. 3.6
- Scrittura Asincrona, forme d’onda ……………………………………………….39
Fig. 3.7
- Configurazione degli endpoint …………………………………………………...40
Fig. 3.8
- Keil µVision ……………………………………………………………………...41
Fig. 3.9
- EZ-USB Control Panel …………………………………………………………...42
Fig. 3.10 - EZ-USB Control Panel …………………………………………………………...43
Fig. 3.11 - Esempio di lettura in memoria …………………………………………………...46
Fig. 3.12 - Esempio di lettura in memoria non permesso ……………………………………46
Fig. 3.13 - Esempio di scrittura in memoria …………………………………………………48
Fig. 3.14 - Esempio di scrittura in memoria non permessa ………………………………….48
Fig. 3.15 - Architettura interna della fpga ……………………………………………………49
Fig. 3.16 - Active-HDL Esempio di Simulazione …………………………………………...51
Fig. 3.17 - Xilinx Project Navigator …………………………………………………………51
Fig. 3.18 - Interfaccia Grafica 1 ……………………………………………………………...55
Fig. 3.19 - Interfaccia Grafica 2 ……………………………………………………………...56
Fig. 3.20 - Interfaccia Grafica 3 ……………………………………………………………...57
____________________________________________________________________________________________
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
7
INDICE
Indice delle tabelle
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Tab. 2.1 - Maximum Packet Sizes for USB 1.1 and 2.0 ……………………………………18
Tab. 2.2 - Dedicated parallel port – segnali ………………………………………………...24
Tab. 3.1 - FIFO selection via FIFOADR[1:0] ……………………………………………...37
Tab. 3.2 - Address/Control Register bits …………………………………………………...44
Tab. 3.3 - Mode bits del Address/Control Register ………………………………………...44
____________________________________________________________________________________________
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
8
INTRODUZIONE
Introduzione
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
L’evoluzione tecnologica nel campo elettronico – informatico ha portato alla nascita nel 1995
dell’architettura USB.
Tramite l’interfaccia USB è possibile connettere facilmente ad un’unica unità di elaborazione
un elevato numero di dispositivi e di avere a disposizione un canale con un’ampia banda di
trasmissione.
Aziende che si occupano di ricerca e progettazione di nuovi dispositivi elettronici, tra le
quali NEURICAM, per aumentare la propria competitività sul mercato, hanno dotato i propri
prodotti di un’interfaccia semplice e veloce quale l’USB.
Lo scopo del tirocinio, sul quale si basa questa tesi, è stato lo sviluppo di un’interfaccia USB
per il VISoc, una microcamera inizialmente nata con la sola interfaccia parallela.
La prima parte del tirocinio è stata dedicata allo studio del materiale riguardante l’USB,
di cui nel CAPITOLO 1 è presente una panoramica riguardante le caratteristiche principali. Si
rimanda alla lettura delle specifiche dell’USB 2.0 per un’analisi più approfondita [1].
Il passo successivo è stato quello di analizzare in maniera dettagliata il componente
CYPRESS FX2 capace di implementare il protocollo USB per il PC e di interfacciarsi ai
dispositivi esterni (come il VISoc) in tre modalità differenti.
____________________________________________________________________________________________
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
9
INTRODUZIONE
Due di queste modalità sono state precedentemente sviluppate da NEURICAM ma si sono
rivelate poco efficienti a causa delle basse prestazioni della CPU integrata nell’FX2.
La terza modalità, denominata SLAVE FIFOs che ho sviluppato in questi tre mesi di tirocinio,
si è rivelata molto veloce in quanto è stato possibile realizzare il progetto escludendo la lenta
CPU interna, ma è stato necessario interconnettere tra FX2 e VISoc una logica programmabile
(FPGA) che realizzasse velocemente il protocollo di comunicazione con il VISoc. Di seguito è
riportato uno schema generale dell’architettura del progetto :
HOST_PC
USB 2.0
FX2
(FIFO)
FPGA
VISoc
L’FX2 viene quindi visto dall’HOST_PC e dalla logica programmabile FPGA come una
semplice fifo.
Nel CAPITOLO 2 è riportato tutto lo studio relativo al componente FX2, alla microcamera
VISoc, alle logiche programmabili ed al linguaggio VHDL, quest’ultimo utile alla
programmazione delle FPGA.
Nel CAPITOLO 3 sono illustrate le problematiche, le soluzioni trovate nella realizzazione e
le spiegazioni delle prove fatte. Tali prove sono solo a scopo didattico utili a vareficare la
possibilità di realizzare una comunicazione tra PC e VISoc utilizzando un’architettura sopra
descritta.
Nel CAPITOLO 4, in aggiunta alle conclusioni e gli sviluppi futuri, vengono riportati i
calcoli relativi ai tempi impiegati per la trasmissione di un frame da VISoc a HOST e alle
prestazioni massime raggiungibili utilizzando il componente FX2 come interfaccia USB.
Infine, nell’Appendice – Termini Ed Abbreviazioni, sono contenute le principali definizioni
riguardanti l’USB, il componente FX2 e la microcamera VISoc.
Al termine del tirocinio sono state effettuate delle prove pratiche avvenute con successo in
cui era possibile vedere sullo schermo del pc le immagini acquisite dalla microcamera, e con
immensa soddisfazione mi è stato riferito da NEURICAM che presto verrà prodotto un
prototipo del nuovo VISoc USB 2.0.
____________________________________________________________________________________________ 10
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 1
PORTA USB 2.0
Capitolo 1 : Descrizione Generale porta USB 2.0
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
1.1
INTRODUZIONE
Come riportato nel titolo, USB sta per Universal Serial Bus, cioè porta seriale di tipo
bidirezionale ad alta velocità in grado di garantire il passaggio di dati, audio, alimentazione
ecc.. L’USB nasce dalla volontà di numerosi ed importanti costruttori di hardware, di trovare e
sviluppare nuove tecnologie in grado di rendere più agevole ed efficace la connessione delle
varie periferiche con il nostro PC. L’USB interessa quindi dispositivi di input come tastiere,
mouse, scanner ecc.. oppure di output come stampanti, unità di backup, dischi fissi esterni ecc..
che come ben sappiamo, comportano l’inevitabile configurazione del PC per renderne ottimale
l’utilizzo, nonché la necessità di dover ogni installare schede controller interne su bus ISA o
PCI, oppure porte seriali e parallele aggiuntive. Con l’USB e’ possibile installare con un unico
cavo, che consente come detto sia il passaggio di dati che della tensione di alimentazione, fino
a 127 periferiche per ogni singola porta presente sul nostro PC. La velocità massima di
trasmissione, condizionata dalla tipologia del cavo utilizzato e della periferica installata, può
arrivare fino 12 Mbit/s per la versione USB 1.1 e fino a 480 Mbit/s per la versione USB 2.0
(1,5 Mbyte/s e 60 Mbyte/s rispettivamente).
____________________________________________________________________________________________ 11
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 1
PORTA USB 2.0
1.2
CONNETTORI
I connettori USB hanno attacchi di ugual tipologia e quindi non si differenziano tra loro come
per le porte seriali e parallele, e questo rende decisamente più agevole l'installazione delle
periferiche, vi è poi il pieno supporto delle funzioni Plug & Play e risulta possibile effettuare la
cosiddetta installazione a "caldo", cioè senza spegnere il PC per poi riavviarlo; un esempio di
questa importante caratteristica l'ho avuto con il modem Leonardo USB di Digicom, da me
installato a PC acceso e subito riconosciuto dal controller USB.
Fig. 1.1 Connettore USB da collegare al PC
Fig. 1.2 Connettore USB da collegare ad una periferica
Fig. 1.3 Connettore USB per cablaggi ISDN
____________________________________________________________________________________________ 12
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 1
PORTA USB 2.0
1.3
PERIFERICHE
Per quanto concerne la possibilità di installare un numero elevato di periferiche fino alle
teoriche 127 è ovvio che bisogna ricorrere a particolari dispositivi denominati HUB USB, che
in analogia con quelli presenti nelle tradizionali reti informatiche, offrono un numero variabile
di uscite USB, a seconda del modello ovviamente, e quindi danno origine ad una vera e propria
diramazione denominata a stella.
Fig. 1.4 Configurazione a stella tramite l’utilizzo di HUB
Questi HUB possono essere di due differenti tipologie:
a) ricevono alimentazione dal PC al quale sono connessi e la ridistribuiscono alle varie
periferiche;
b) sono loro stessi a generare l'alimentazione necessaria per il funzionamento delle periferiche;
Si parlerà rispettivamente di HUB passivi e attivi.
La lunghezza massima di ogni cavo, dipendente anche dalla qualità dello stesso, è in media sui
5 m e la velocità del trasferimento dati potrà essere di pochi Kbps per tastiere, mouse, joystick
fino ad arrivare ai 12 Mbps per dischi fissi esterni, video camere digitali ecc... Sullo stesso
canale USB possono coesistere senza problemi periferiche di differente velocità e tipologia
senza i classici limiti che porte come la seriale erano in grado di instaurare; basti ricordare la
non trasparenza di uno scanner con connessa una stampante ed il limite sul numero massimo di
periferiche gestibili per il noto problema di condivisione di risorse quali IRQ, indirizzi di
memoria ecc.... La porta USB usa un unico IRQ ed indirizzo di memoria a prescindere dal
____________________________________________________________________________________________ 13
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 1
PORTA USB 2.0
numero di periferiche ad essa connesse; questo rende effettivo il Plug & Play liberandoci dalle
difficoltà di dover risolvere conflitti generati da Sistemi Operativi che tanto decantano questa
caratteristica, ma che spesso e volentieri non riescono, a conti fatti, a garantirla.
1.4
ALIMENTAZIONE
La porta USB eroga 500 mA con 5 Volt di tensione ed è quindi in grado di alimentare tutti i
classici dispositivi esterni che sono in genere connessi ad un PC. E' importante sottolineare che
gli HUB passivi, assorbendo circa 100 mA, possono poi rendere disponibile su ogni uscita solo
100 mA, a differenza degli HUB attivi che garantiranno i 500 mA su ogni attacco.
I dispositivi che potranno essere connessi ad una porta USB sono molteplici e abbracceranno i
più svariati campi; vedi ad esempio masterizzatori, DVD, CD ROM, macchine fotografiche,
dispositivi a nastri, floppy, dispositivi di connessione per reti informatiche ecc... e sempre più
numerosi lo saranno in futuro grazie allo sviluppo dell'adeguato supporto software.
1.5
TRASMISSIONE DATI
L’USB può arrivare a 1.5 Mbit per secondo (low-speed USB) per dispositivi lenti (tastiera,
mouse, stilo, joystick e affini, monitor configurabili a distanza e dispositivi di realtà virtuale),
raggiunge i 12 Mbps (full-speed USB) per dispositivi di velocità media (apparati audio,
interfacce ISDN, telefoni e centralini) fino ad arrivare a velocità pari a 460 Mbps (high-speed
USB 2.0) in dispositivi quali hard-disk o monitor digitali.
Periferiche lente e veloci possono coesistere sulla stesa catena.
____________________________________________________________________________________________ 14
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
Capitolo 2 : Descrizione Architettura
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
2.1
INTRODUZIONE AL COMPONENTE CYPRESS EX-USB FX2
Cypress Semiconductor EZ-USB FX2 è un’interfaccia USB in grado di sfruttare la banda
offerta dall’USB 2.0 high speed mode. Le principali caratteristiche dell’FX2 sono :
• L’integrazione di una CPU ad alte prestazioni basata sullo standard industriale del
processore 8051;
• Un’architettura basata sull’utilizzo di RAM in grado di permettere una serie illimitata di
configurazioni;
• Pieno rendimento delle prestazioni USB. I dispositivi che utilizzano il chip EZ-USB non
sono limitati in numero di endpoint, dimensione dei buffer, o velocità di trasmissione.
Le caratteristiche principali dell’FX2 sono:
• Livello fisico USB 2.0 realizzato on-chip;
• Double, triple, quad-buffered endpoint FIFOs in grado di supportare la tipica data-rate
dell’USB 2.0 pari a 480 Mbps;
____________________________________________________________________________________________ 15
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
• CPU integrata;
• Endpoint zero che permette di caricare il firmware per il dispositivo direttamente via USB
senza l’utilizzo di ulteriori FLASH o EEPROM;
• Interfaccia programmabile GPIF;
2.1.1
ARCHITETTURA INTERNA DELL’ FX2
FIG. 2.1 FX2 – Diagramma a blocchi semplificato
L’FX2 racchiude tutta l’intelligenza richiesta da una periferica USB in un unico circuito
integrato.
Come mostrato in figura l’USB Transceiver e’ connesso ai pin D+ e D- del bus USB.
La Serial Interface Engine (SIE) effettua operazioni di codifica e decodifica dei dati seriali,
implementa protocolli di correzione di errore e i segnali di task richiesti dall’USB.
Il SIE può operare in entrambe le modalità full-speed ed high-speed.
Per poter sfruttare al meglio l’ampia larghezza di banda dell’USB 2.0, gli endpoint di tipo
FIFO e lo slave FIFO (interfaccia per logiche esterne o processori) sono stati uniti in un unico
blocco per poter ridurre i ritardi interni di trasmissione dati.
La CPU è un’evoluzione dell’8051 con tempi di esecuzione molto più brevi a con una serie di
nuove caratteristiche.
Il ruolo della CPU e’ quello di configurare la periferica e di occuparsi della risposta alle
richieste dell’host tramite il controllo dell’endpoint zero.
____________________________________________________________________________________________ 16
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
E’ sconsigliato l’utilizzo della CPU nei trasferimenti tra gli endpoint FIFO ed una logica
esterne, in quanto essendo la data rates dell’USB 2.0 molto elevata non riesce a gestire
direttamente i dati.
La CPU e’ dotata di 5 porte I/O, di due USARTs, tre contatori/timer e di un sistema interrupt.
Ha una frequenza massima pari a 48 MHz, una tensione di funzionamento di 3.3 V (può essere
tranquillamente alimentata dall’USB stessa in quanto quest’ultima è in grado di erogare una
tensione pari a 5V ed una corrente massima di 500 mA).
L’FX2 può essere utilizzato principalmente in tre modi differenti settando in maniera
opportuna il registro IFCONFIG : il primo e’ lo Slave FIFOs. In questo caso il componente si
comporta come un semplice canale di comunicazione tra l’host ed una logica esterna, dove
quest’ultima si occupa della gestione dell’interfaccia FIFO trami il controllo di alcuni degnali
di handshake, read e write strobes, output enable, ecc..
Un secondo metodo e’ quello di utilizzare la CPU permettendole di gestire completamente il
trasferimento dei dati attraverso l’accesso diretto agli endpoint.
Il terzo ed ultimo metodo consiste nell’utilizzare la General Programmable Interface (GPIF)
come controllo delle FIFO. GPIF e’ una macchina a stati, programmabile tramite un software
fornito dalla casa costruttrice.
In questa tesi viene trattato in maniera sufficientemente dettagliata il caso dello Slave FIFO in
quanto la realizzazione del mio progetto è completamente basata sull’utilizzo dell’FX2 in
questa modalità. Prima di descrivere lo Slave FIFOs mode e’ necessario chiarire il concetto di
endpoint.
2.1.2
ENDPOINT
I dati USB entrano ed escono dall’ FX2 attraverso i cosiddetti endpoint buffers.
Gli endpoint dell’ FX2 si dividono in due gruppi principali, ‘small’ e ‘large’.
Gli endpoint EP0 e EP1 fanno parte del gruppo small, hanno una dimensione fissa di 64 byte e
sono accessibili solo tramite la CPU interna, non si possono quindi connettere direttamente ad
una logica esterna.
Gli endpoint EP2, EP4, EP6, EP8 appartengono invece al gruppo large la loro dimensione può
variare da 512 byte x 2 buffer, fino ad un massimo di 1024 x 4 buffer, a seconda delle esigenze
____________________________________________________________________________________________ 17
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
della comunicazione USB. Tali dimensioni sono disponibili solo se si e’ interfacciati ad una
porta USB 2.0. Inoltre, gli endpoint di tipo large possono essere direttamente connessi ad una
logica esterna escludendo completamente l’intervento della CPU e garantendo quindi la
massima velocità (480 megabit/secondo) supportata dall’USB 2.0.
2.1.2.1
ENDPOINT ZERO
L’endpoint zero (EP0) ha un ruolo importante in un sistema USB, esso viene anche
denominato come controll endpoint ed è presente in tutti i dispositivi USB. Non appena un
dispositivo viene connesso all’USB, comincia una comunicazione di SETUP tra host e device
attraverso appunto l’endpoint zero. Tale comunicazione serve all’host per capire con che tipo
di dispositivo è interfacciato e quindi per caricare i driver opportuni.
2.1.3
TRASMISSIONE DATI IN ‘HIGH-SPEED’ E ‘FULL-SPEED’
L’FX2 può operare in entrambi i modi e la sua architettura è ottimizzata per la modalità high
speed.
Tra le due modalità, oltre a cambiare la velocità di trasferimento, cambiano anche le
dimensioni degli endpoint buffers, come mostrato nella figura che segue :
Tab. 2.1 Maximum Packet Sizes for USB 1.1 and 2.0
Quando l’FX2 lavora in modalità high speed, l’utente può scrivere un firmware che configuri
la dimensione il tipo e la bufferizzazione degli endpoint di tipo large.
____________________________________________________________________________________________ 18
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
Quando l’FX2 opera in modalità full speed, il tipo e la bufferizzazione degli endpoint è
configurabile, ma la dimensione massima è di 64 byte, a parte nel caso isocrono che è di 1023
byte.
2.1.3.1
TRASFERIMENTO ISOCRONO
In un sistema non-USB il trasferimento isocrono ha come specifica generale una costant-rate
ed una tolleranza agli errori di trasmissione.
In uno sviluppo USB in cui viene richiesto un trasferimento isocrono, si richieste all’utente le
seguenti specifiche :
• accesso alla banda dell’USB con una determinata latenza;
• una data-rate costante attraverso le pipe fino a che i dati vengono ad essa forniti;
• in caso di errore nei dati trasmessi, non esiste la possibilità che il pacchetto ricevuto venga
nuovamente trasmesso.
Mentre il trasferimento isocrono dell’USB è congegnato per supportare sorgenti e destinazioni
isocrone, non e’ richiesto che il software che gestisce il trasferimento sia isocrono.
L’USB non impone che i dati trasferiti abbiano una particolare struttura. Una pipe isocrona
permette il flusso dei dati in un’unica direzione.
Una descrizione dell’endpoint specifica il tipo di trasferimento attraverso la pipe e la direzione
del flusso dati. Se un dispositivo richiede un trasferimento isocrono bidirezionale è necessario
utilizzare due pipe distinte, una in ingresso ed una in uscita.
2.1.3.2
TRASFERIMENTO INTERRUPT
Il trasferimento interrupt è congegnato per supportare quei dispositivi che necessitano di
spedire e ricevere dati in maniera non frequente e con durata di trasferimento ben specificata.
In un trasferimento isocrono è garantito all’utente :
• La massima larghezza di banda disponibile dalla pipe e dall’USB per tutto il tempo
necessario al trasferimento dati ;
____________________________________________________________________________________________ 19
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
• In caso di errore è possibile richiedere che il pacchetto venga ritrasmesso.
Come ne trasferimento isocrono anche nel trasferimento interrupt non e’ richiesto che i
pacchetti di dati abbiano una specifica struttura, e ogni singola pipe può essere configurata in
ingresso o in uscita dal dispositivo.
2.1.3.3
TRASFERIMENTO BULK
Il trasferimento bulk viene adottato quando ci si trova a dover trasferire una grande quantità di
dati con una frequenza elevata utilizzando tutta la larghezza di banda disponibile.
In un trasferimento bulk è garantito all’utente :
• Accesso all’USB sfruttando tutta la banda disponibile;
• In caso di errore è possibile richiedere che il pacchetto venga ritrasmesso;
Per un sistema USB 2.0, quindi a banda larga, i trasferimento bulk risulta notevolmente
efficiente grazie alla stabilità ed alla velocità. In un sistema USB 1.1, invece, il trasferimento
bulk rimane comunque affidabile ma relativamente lento.
2.1.4
MODALITA’ SINCRONA E ASINCRONA
Come precedentemente accennato L’FX2 e’ in grado di lavorare in due modi : in modalità
sincrona e in modalità asincrona, a seconda di come viene settato il bit IFCONFIG.3
Fig. 2.2 Modelli Sincroni e Asincroni
____________________________________________________________________________________________ 20
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
La trasmissione asincrona deriva dalla necessità di trasmettere e ricevere dati ad intervalli di
tempo casuali.
La trasmissione sincrona, invece, garantisce un flusso continuo di bit sincronizzato su di un
segnale di clock uguale sia per il sistema di trasmissione dati che per il sistema di ricezione
dati.
Nel progetto è stata adottata la tecnica di trasmissione asincrona dato che il tempo impiegato
dalla microcamera nel fornire sul bus d’uscita i dati corretti non è sempre lo stesso. E’ stato
quindi necessario utilizzare una serie di segnali di handshake per effettuare una trasmissione
corretta e robusta dal punto di vista dell’errore.
Nel capitolo 3 verrà spiegato come operare per effettuare una lettura o una scrittura delle FIFO
in modalità asincrona.
2.2
DESCRIZIONE GENERALE DELLA MICROCAMERA VISoc
VISoc è un sistema di visione su chip (SoC) che consiste di :
1.
Un processore RISC a 32 bit ;
2.
Un co-processore parallelo a 32 nodi adatto per applicazioni neurali ;
3.
Una camera digitale dotata di 320 x 256 pixel ;
4.
Due interfacce di I/O per la comunicazione con l’host (computer).
La figura 2.3 mostra una tipica connessione del VISoc con blocchi esterni. Può essere connesso
ad un microcomputer o ad un microcontrollore tramite l’interfaccia SPI, o tramite l’interfaccia
parallela dedicata. VISoc e’ provvisto di due semplici pin di flag (OUT_PORT0 E
OUT_PORT1) che sono accessibili dall’esterno. Il chip è pienamente funzionale, necessita solo
di una memoria statica sincrona (SSRAM) e di una memoria FLASH.
____________________________________________________________________________________________ 21
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
Fig. 2.3 Connesioni del VISoc
Per realizzare il chip e’ stata utilizza una tecnologia di tipo CMOS. La camera digitale
comprende un amplificatore video, un convertitore analogico-digitale ed un bus di interfaccia
accessibile dal processore RISC e dal coprocessore neurale TOTEM.
Fig. 2.4 Struttura interna del VISoc
La figura mostra la struttura interna del chip VISoc, I principali componenti sono :
1.
Un blocco Power on Reset (POR) ;
2.
Un Program Loader ;
3.
Una camera digitale 320 x 256 ;
____________________________________________________________________________________________ 22
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
4.
Una canale DMA per il download dei frames ;
5.
Due controllori RAM per la comunicazione sincrona ed asincrona ;
6.
Un Processore parallelo (TOTEM) ;
7.
Due LUTs interpolatori ed un LUT lineare ;
8.
Un processore RISC ;
9.
Un interfaccia SPI ;
10.
Un interfaccia parallela dedicata ;
Il sistema è inizializzato attraverso un Power On Reset interno quando viene connesso per la
prima volta all’alimentazione oppure attraverso il reset esterno WDG_N. Nello stato di
RESET
tutti i registri interni vengono caricati con i valori di default. Quando il POR (o un reset
esterno) è rilasciato inizia il trasferimento delle istruzioni del programma tra la FLASH e la
SRAM esterna. Durante l’operazione di caricamento, il processore e gli altri controllori sono
nello stato di HALTED.
L’acquisizione digitale è ottenuta attraverso un trasferimento di tipo DMA direttamente tra
dispositivo di acquisizione e SRAM.
Attraverso la Debug Parallel Port si può accedere a tutti i registri interni del processore RISC
e a tutte le locazioni di memoria esterne mappate. Essa inoltre può essere utilizzata per
scaricare o riconfigurare il programma contenuto nella FLASH.
2.2.1
DEDICATED PARALLEL PORT
VISoc è dotato di un interfaccia parallela bidirezionale di tipo PS/2. Tale porta consente le
seguenti operazioni :
•
Lettura e scrittura dei core-registers del processore RISC ;
•
Lettura e scrittura dei registri ausiliari del processore RISC ;
•
Lettura e scrittura delle memorie esterne e dei registri dei dispositivi interni ;
Tutte le funzioni sono effettuate trasmettendo parole di indirizzo da 32 bit seguite da 32 bit di
dati ricevuti o da trasmettere. I 32 bit vengono trasmessi ad un byte alla volta, cominciando
dagli 8 bit meno significativi.
____________________________________________________________________________________________ 23
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
Nella tabella 2.2 vengono mostrati i pin della portata parallela utili ad effettuare operazioni di
lettura e scrittura :
Tab. 2.2 Dedicated parallel port – segnali
2.3
DESCRIZIONE DI UN FPGA
La sigla FPGA rappresenta l'acronimo di Field Programmable Gate Array. L'architettura di un
fpga e' rappresentata da un insieme di celle logiche che comunicano con i segnali di ingresso
uscita mediante un insieme di collegamenti programmabili disposti orizzontalmente e
verticalmente. La struttura delle celle logiche e l'architettura dell'insieme di collegamenti
differiscono da costruttore a costruttore. In generale le celle logiche risultano più semplici
rispetto alla combinazione termini prodotto e macrocelle di I/O presente in un CPLD. Funzioni
logiche complesse possono essere ottenute combinando più celle logiche.
____________________________________________________________________________________________ 24
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
Fig. 2.5 Schema di una FPGA
Attualmente sono disponibili due tecnologie con cui realizzare fpga : SRAM (Static RAM) e
antifuse. Ognuna di queste permette di realizzare fpga che soddisfano a particolari esigenze di
mercato. La tecnologia SRAM e'attualmente utilizzata da Altera, Lucent Tecnologies, Atmel,
Xilinx, ed altri. La tecnologia antifuse e'utilizzata da Actel, Cypress, QuickLogic e Xilinx. La
scelta di una tecnologia influenza pesantemente le caratteristiche della matrice di
interconnessioni. L'architettura di tale insieme di interconnessioni si ripercuote sulla struttura
delle celle logiche.
____________________________________________________________________________________________ 25
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
2.3.1
TECNOLOGIA ANTIFUSE
Le dimensioni fisiche di un elemento di interconnessione programmabile realizzato in SRAM
risultano di un ordine di grandezza più grandi rispetto a quelle di un elemento realizzato in
antifuse. Un elemento antifuse può essere posizionato nello spazio tra due strati metallici. In
questi fpga due strati metallici sono separati da silicio amorfo il quale si comporta da isolante
elettrico. Se si applica un impulso di programmazione tra 10 e 12 Volt di durata necessaria tra
gli strati metallici, questi penetrano nel silicio amorfo creando un percorso conduttivo
bidirezionale (contatto) con una resistenza dell'ordine dei 50 ohms.
Fig. 2.6 Tecnologia Antifuse
A causa delle ridotte dimensioni di un elemento di interconnessione programmabile il limite di
densità nell'impaccare tali elementi e'in realtà dovuto alle dimensioni delle line metalliche che
costituiscono i percorsi conduttivi. Una volta programmato un elemento antifuse non può
essere cancellato e riprogrammato.
____________________________________________________________________________________________ 26
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
Fig. 2.7 An Array of ViaLink Elements
2.3.2 TECNOLOGIA SRAM
Un elemento di memoria di tipo RAM statica e' utilizzato per controllare un transistor (mos) il
quale stabilisce un contatto elettrico tra connessioni orizzontali e verticali della matrice di
interconnessioni. Ogni cella SRAM e' costituita da cinque transistor. Le celle RAM sono
riprogrammabili diversamente dagli elementi antifuse i quali subiscono una alterazione
permanente durante la programmazione. Poiché le celle RAM sono volatili, quando
l'alimentazione viene a mancare si ha la perdita della configurazione dell' FPGA. A causa di
ciò gli FPGA basati su questo tipo di celle devono essere riconfigurati ogni volta che vengono
alimentati. Ciò e' ottenuto utilizzando una eprom ad accesso seriale connessa all'FPGA.
A causa delle notevoli dimensioni fisiche di una cella SRAM non si riescono ad ottenere le
densità di "impaccamento" tipiche degli elementi antifuse e non e' possibile inserire elementi
programmabili ad ogni intersezione tra connessioni orizzontali e verticali. Gli elementi
programmabili vengono inseriti in posizioni strategiche scelte in modo tale da ottenere un buon
compromesso tra densità, prestazioni e connettivita' (routability).
____________________________________________________________________________________________ 27
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
2.3.3
ARCHITETTURA DI UNA CELLA LOGICA
L'architettura di una cella logica e' fortemente influenzata dalle caratteristiche delle risorse di
interconnessione. Gli FPGA che hanno una struttura di interconnessioni caratterizzata da molti
"fili" (wires) e molti elementi di connessione programmabili tendono ad avere celle logiche di
dimensioni minori con un maggior numero di ingressi ed uscite in relazione al numero di porte
presenti nella cella. Tali FPGA sono tipicamente realizzati in tecnologia
antifuse.
FPGA che presentano strutture di interconnessione con un minor numero di "fili" (wires) e di
interconnessioni programmabili tendono ad avere celle logiche più grandi con un minore
numero di ingressi ed uscite in relazione al numero di porte che costituiscono la cella. Tali
FPGA sono tipicamente realizzati in tecnologia SRAM.
2.4
INTRODUZIONE AL LINGUAGGIO VHDL
Il VHDL (VHSIC Hardware Description Language) è un linguaggio di descrizione
dell’hardware che consente la progettazione di circuiti integrati. È un derivato del programma
Very High Speed Integrated Circuit (VHSIC) ideato dal Dipartimento della Difesa Statunitense
tra la fine degli anni 70 e l’inizio degli anni 80.
L’obiettivo di questo programma era la produzione della successiva generazione di circuiti
integrati. I partecipanti al programma erano esortati a portare al limite questa tecnologia allo
studio in ogni fase progettuale. I risultati stabilirono che i tool usati per la progettazione gate
level erano inadeguati per la creazione di progetti di centinaia di migliaia di gate e occorreva
un cambio di metodologia.
Questo cambio avvenne nel 1981 con il VHDL. Gli obiettivi di questo linguaggio erano
duplici:
stabilire uno standard di interfacciamento tra i vari progettisti; avere un linguaggio con
istruzioni orientate alla descrizione circuitale che, senza successo, si era cercato di fare con il
programma VHSIC. Nel 1986 il VHDL fu proposto come standard IEEE.
Una completa conoscenza del VHDL può risultare difficoltosa per chi si avvicina da profano al
linguaggio. Tuttavia, un subset delle sue istruzioni consente la creazione di qualsiasi tipo di
progetto.
L’insieme delle istruzioni che descrivono un progetto producono una modellizzazione della
realtà a cui il progettista fa riferimento. La simulazione è la barriera oltre la quale non è
possibile andare con un linguaggio di descrizione dell’hardware. Per avere dei gate reali
____________________________________________________________________________________________ 28
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
occorre tradurre queste istruzioni in logica combinatoria e logica sequenziale. Questo processo
è affidato ai sintetizzatori di
logica che, a partire dai livelli di astrazione tipici del linguaggio, producono una netlist
composta da elementi della libreria tecnologica target. Poiché il VHDL non è stato ideato come
linguaggio sintetizzabile, alcuni costrutti non sono processati dai tool di sintesi. In fase di
progettazione andrà quindi posta attenzione al tipo di istruzioni usate.
Demandando la sintesi a tool automatici, si ha la possibilità di creare progetti sempre più
complicati e grandi nelle dimensioni in un tempo molto più contenuto di quanto avveniva nella
progettazione gate level. Il rischio che si corre è quello di produrre una funzionalità logica con
un’area maggiore del necessario e questo, per una logica programmabile, produce uno spreco
di risorse preziose. Per tal motivo, un corretto uso del linguaggio e una buona conoscenza
dell’architettura che ospiterà la
logica garantiranno buoni risultati in termini di occupazione delle risorse e prestazioni timing.
Questo si riflette in una ottimizzazione dei costi del silicio e in una riduzione dei tempi di
sviluppo che, a sua volta, produce un abbattimento dei costi di sviluppo.
2.4.1
LA SIMULAZIONE LOGICA
Una volta descritto in un linguaggio formale, un sistema digitale può essere simulato mediante
un opportuno programma; come si è già accennato, la simulazione costituisce la forma più
diffusa di verifica del progetto, sia essa in termini logici o coinvolga anche gli aspetti
temporali. La simulazione di un sistema digitale può essere ricondotta allo schema generale
della figura seguente :
Fig. 2.8 Schema Generale della simulazione
____________________________________________________________________________________________ 29
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
La simulazione spesso sostituisce la realizzazione di un prototipo hardware del circuito
(prototipo che tradizionalmente veniva realizzato nel corso del progetto) mediante un prototipo
software, più facilmente realizzabile e modificabile. Nel caso di un circuito integrato, la
tradizionale prototipazione - che, per motivi di costo, è inevitabilmente effettuata con “logica
sparsa” o comunque con tecnologie differenti da quella finale - fornisce in realtà informazioni
meno precise di quelle che si possono ottenere mediante una simulazione, a patto che il
modello interno dei componenti (in particolare, per quanto riguarda ritardi, comportamento
elettrico ecc.) sia sufficientemente fedele.
La verifica di un progetto basata su simulazione consente inoltre di:
• controllare condizioni di errore;
•
variare i ritardi in modo da controllare condizioni “di caso pessimo”;
• verificare i valori attesi secondo le specifiche dell'utente;
• inizializzare il circuito simulato in uno stato arbitrario;
• controllare in modo preciso la temporizzazione di eventi asincroni (es.: interrupt);
• fornire un ambiente per la successiva verifica dei guasti (testing) del circuito simulato.
Vale la pena di notare che non tutte queste operazioni potrebbero, in genere, essere compiute
sul sistema fisico (o comunque non potrebbero essere compiute in modo economicamente
accettabile); quindi la simulazione è indispensabile per identificare il comportamento del
sistema anche in tali situazioni.
Quando si vuole operare una verifica del progetto basata su simulazione, si presentano
tre problemi correlati:
• come generare gli stimoli d'ingresso;
• come verificare che i risultati ottenuti siano corretti;
• come garantire (o in quale misura) che gli stimoli applicati forniscano una
verifica“completa”.
Gli stimoli d'ingresso sono abitualmente organizzati in una sequenza di casi di prova (test),
ognuno dei quali deve verificare un certo aspetto del comportamento del modello. I risultati
sono considerati corretti quando corrispondono a quelli previsti nelle specifiche. È importante
rilevare la differenza fra generazione dei test per la verifica del progetto (lo scopo è
l'identificazione degli errori di progetto) e generazione dei test per l'identificazione dei guasti
____________________________________________________________________________________________ 30
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
fisici in un sistema prodotto (lo scopo è verificare l’integrità fisica del prodotto). Molto spesso,
in ambedue i casi si opera a livello logico; infatti, la maggior parte dei guasti fisici possono
essere modellati mediante guasti logici, il cui effetto sul comportamento del sistema è ben
definito. Si può basare il test per un certo guasto sulla differenza di comportamento fra il
sistema in cui il guasto è presente e il sistema sano.
Mentre in genere i modelli di guasto logico rendono i guasti numerabili, e la qualità del test
(cioè dell’insieme di stimoli adottati per il collaudo) può essere valutata come rapporto fra
numero di guasti rilevati dal test e numero totale di guasti nel modello (copertura di guasto), al
contrario lo spazio degli errori di progetto non è ben definito, e l'insieme degli errori di
progetto non è numerabile: è quindi impossibile sviluppare algoritmi di generazione dei test per
la verifica del progetto o definire misure rigorose della qualità per i test stessi. La verifica del
progetto mediante simulazione ha gravi limiti. la produzione degli stimoli d'ingresso è una
procedura euristica, basata sull'intuito e l'esperienza del progettista; se un sistema “passa” la
verifica, si è dimostrato solo che il
progetto è corretto rispetto ai casi di test applicati - cioè si dimostra una correttezza parziale (e
non è in genere possibile dimostrare la completezza del test). Nonostante questi limiti, la
simulazione è uno strumento molto utile ed efficace per il collaudo di un progetto.
2.4.2
CONCETTI BASE SULLA SINTESI
La sintesi produce una netlist a partire da un codice e da una libreria. Questa, contenente
modelli circuitali parametrici denominati DesignWare, può essere composta di due sezioni: una
che il vendor di logica programmabile compila per il tool di sintesi (Synopsys DesignWare),
un’altra a cui il tool di sintesi può fare riferimento per prelevare moduli caratteristici delle
famiglie di componenti (Synthetic Library contenente Vendor DesignWare). L’utilizzo di
questa seconda libreria non produce tipicamente buoni risultati in termini di area e di velocità.
Solo una verifica caso per caso, in funzione della libreria scelta e del componente selezionato,
può smentire questa affermazione.
Si parla di Inference quando il tool di sintesi, in base alle istruzioni presenti nel codice VHDL,
si propone di trovare un appropriato modello gate level all’interno delle DesignWare messe a
sua disposizione. A partire dagli operatori VHDL presenti nel codice (+, -, +1, <, >, =, ...) il
comando di elaborate, incluso nella procedura di sintesi, compie la trasformazione di questi
elementi in operatori sintetici (ADD, SUB, INC, ...).
____________________________________________________________________________________________ 31
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
Fig. 2.9 Analisi Ed Elaborazione
Il successivo comando di compilazione trasforma questi operatori sintetici nei moduli messi a
disposizione dalle DesignWare, scegliendone il più appropriato, tra un certo numero di modelli
di differenti prestazioni ma stesse caratteristiche. Un operatore sintetico ad esempio, in base ai
vincoli di sintesi, timing o area, può essere trasformato in una architettura cla (carry lookahead) o in una rpl (ripple).
Fig. 2.10 Design Analyzer
Si parla di Instantiation quando nel codice è espressamente dichiarato il modello circuitale che
si vuole utilizzare presente in libreria. L’Inference, che non è molto efficiente per operatori
complessi (x, +1, -1), ha il vantaggio di essere indipendente dalla tecnologia e di facile uso.
Infatti non occorre
scrivere un codice, avendo presente i vari componenti che la libreria mette a disposizione.
L’Instantiation, per contro, non è portabile perché è dipendente dalla tecnologia ed è una
____________________________________________________________________________________________ 32
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
modalità di progettazione molto noiosa se usata in maniera diffusa. I codici risultanti, inoltre,
non sono di facile leggibilità. Il vantaggio si vede soprattutto nell’utilizzo degli operatori
complessi.
Al fine di produrre un codice efficiente e comprensibile, l’uso dell’Instantiation viene riservato
a elementi di libreria non riconosciuti dal sintetizzatore come memorie, blocchi di startup,
buffer di tipo globale, oppure a moduli in cui l’obiettivo, in termini di area o velocità, non è
raggiungibile con una procedura di Inference. I tool di sintesi sono programmi dotati di enormi
potenzialità, ma possono anche ingenerare confusione. Avendo a disposizione un vasto
scenario di strategie di sintesi e diversi modelli dello stesso operatore, è possibile ottenere un
numero imprecisato di varianti sintetizzate dello stesso codice. Onde evitare divagazioni,
occorre tenere ben presente i risultati che si vogliono raggiungere e i mezzi necessari ad
ottenerli. La procedura di default di sintesi è un buon punto di partenza. Nel caso non si
rispettino le specifiche, è possibile agire sulla sintesi, sul codice o su entrambi. Lo sforzo
compiuto nel creare un codice, in cui sia quasi tutto istanziato, deve essere giustificato da reali
necessità. Allo stesso modo il costo di una sintesi, in termini di calcolo, deve essere calibrato
alle reali difficoltà.
2.4.3
LE MACCHINE A STATI
Di seguito verrà illustrato in maniera semplificata il significato e la modalità di progettazione
di una macchina a stati in linguaggio VHDL.
Una macchina a stati è un dispositivo digitale che evolve attraverso una determinata sequenza
di stati. Viene comunemente usata in applicazioni di tipo monitoraggio di eventi, risoluzioni di
contese, generazione di segnali di controllo, test di eventi multipli. È realizzata in due sezioni
di cui una implementa logica combinatoria e l’altra logica sequenziale costituita, a sua volta, da
registri di stato ed eventualmente da registri di uscita. Lo stato in cui la macchina a stati può
trovarsi è identificato dai valori memorizzati nei registri di stato e, in certi casi, anche nei
registri di uscita.
La sezione combinatoria può essere a sua volta distinta in due blocchi funzionali denominati
rispettivamente decodificatore dello stato successivo e decodificatore di uscita. Il primo blocco,
denominato anche transition function, determina il successivo stato in cui deve evolvere la
macchina a stati. Il secondo, noto anche come function, genera le uscite opportune.
____________________________________________________________________________________________ 33
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 2
DESCRIZIONE ARCHITETTURA
Fig. 2.11 Schema Logico di una Macchina a Stati
Queste due operazioni si basano sul valore degli ingressi (operazione definita anche branching)
e dello stato presente. La transizione da uno stato all’altro è invece chiamata sequenza di
controllo. L’uso o meno dei segnali di ingresso nella produzione dei segnali di uscita classifica
le macchine a stati in due categorie. Se le uscite sono funzioni del solo stato presente si parla di
macchina di Moore. Se le uscite sono realizzate anche con il contributo degli ingressi si parla
di macchina di Mealy.
2.4.3
GERARCHIA DI PROGETTO
Un progetto compiuto in VHDL può essere sintetizzato sia mantenendo integra la gerarchia dei
blocchi scelta dal progettista, sia compiendo una sintesi con direttiva flatten. Una corretta
suddivisione in blocchi consente una maggiore velocità di simulazione e una più facile
ripartizione del lavoro sia tra team di progettisti che in termini di funzionalità implementate.
Creando blocchi di dimensioni non superiori ai 500 elementi logici, interfacce sincronizzate da
un segnale di clock che, auspicabilmente, dovrebbe essere unico per ogni blocco e,
raccogliendo la logica combinatoria di un percorso tutta in un singolo blocco, si riesce ad avere
ragionevoli tempi di sintesi e buoni livelli di ottimizzazione rispetto quella flatten. Ulteriori
cure vanno poste nella strategia di sintesi dei blocchi critici che vanno compilati entro confini
ben precisi e con un costo di sintesi non giustificabile per il resto del progetto.
____________________________________________________________________________________________ 34
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
Capitolo 3 : Implementazione e Test Dell’Architettura
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Di seguito verranno elencati tutti i passi necessari allo sviluppo del VistaII-USB (questo e’ il
nome provvisorio del progetto) :
• Realizzazione del firmware di configurazione dell’FX2 ;
• Realizzazione del codice VHDL per lo Xilinx utilizzato come interfaccia tra FX2 e VISoc ;
• Realizzazione in linguaggio C di un’interfaccia grafica per gestire la telecamera
direttamente dal personal computer.
Di seguito, figura 3.1, è raffigurata l’architettura ad alto livello di VistaII-USB :
Fig. 3.1 Architettura di VistaII-USB
____________________________________________________________________________________________ 35
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
L’host computer dispone di un’interfaccia realizzata in C per gestire la comunicazione con
Cypress FX2 tramite USB 2.0. Le comunicazioni tra Cypress FX2 e Xilinx Spartan II, e tra
Xilinx Spartan II e microcamera VISoc avvengono utilizzando il classico protocollo di
handshake.
3.1
CONFIGURAZIONE FX2
Per poter sfruttare tutta la banda concessa dall’FX2, è necessario settare tale componente in
modalità slave fifo. In questo modo il componente viene visto come una semplice FIFO, la
CPU dell’FX2 viene esclusa e la trasmissione dati tra FX2 e USB 2.0 avviene a 480 Mbit/s. La
CPU del componente, infatti, in fase di sperimentazione è risultata molto lenta soprattutto per
commutare gli stati della MSF programmata utilizzando l’FX2 in modalità GPIF. Proprio per
tale motivo è stato necessario interconnettere tra microcamera e FX2 una logica
programmabile (FPGA) ad alta velocità quale lo Xilinx Spartan II.
3.1.1
SLAVE FIFOs
In modalità Slave FIFOs i dati USB circolano dall’ host alla logica esterna attraverso gli
endpoint FIFO dell’FX2, generalmente senza l’intervento della CPU. L’FX2 si interfaccia alla
logica esterna tramite una serie di linee tra cui i segnali di handshake (full, empty,
programmable level), strobe di lettura e scrittura, output enable, ecc.
La figura seguente mostra l’architettura hardware utile a realizzare una configurazione slave.
Fig. 3.2 Architettura Slave FIFOs
____________________________________________________________________________________________ 36
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
Le linee di interfaccia con la logica esterna si possono dividere in tre gruppi principali : dati,
controllo, indirizzamento.
Linee di dato :
FD -> E’ il bus dati a 16 bit connesso alle FIFO dell’FX2 ed alla logica esterna;
Linee di indirizzamento :
fifoadr -> E’ un bus a due bit, in base al valore dei bit fifoadr.0 e fifoadr.1 il bus dati
FD è connesso ad una determinata FIFO;
Tab. 3.1 FIFO selection via FIFOADR[1:0]
Linee di controllo :
sloe -> Questo pin se è a livello basso abilita il bus dati FD in uscita dall’FX2, quindi in
ingresso per la logica esterna, se è a livello alto il bus dati invece diventa un ingresso per l’FX2
e quindi un’uscita per la logica programmabile;
slrd -> In modalità sincrona, il puntatore alla FIFO è incrementato nel caso in cui ad
un fronte di salita del clock corrisponde un livello basso del pin slrd. In modalità asincrona, il
puntatore alla FIFO invece è incrementato ad ogni fronte di salita del pin slrd
indipendentemente dallo stato del clock;
slwr -> In modalità sincrona, il dato presente sul bus FD è scritto nella FIFO nel caso
in cui ad un fronte di salita del clock corrisponde un livello basso del pin slwr;
pktend -> Questo pin è attivo basso. La logica esterna attiva questa linea dopo che è
stato spedito un pacchetto;
flaga, flagb, flagc, flagd -> Sono flag programmabili che cambiano il loro livello
logico a seconda dello stato delle FIFO;
Wordwide è un bit del registro EPXFIFOCFG che se settato a 1 imposta il bus dati FD a 16 bit,
altrimenti
se
settato
a
0
il
bus
dati
è
configurato
a
8
bit.
L’FX2 può lavorare con un clock interno, la cui frequenza può essere di 30 o 48 MHz, o con
____________________________________________________________________________________________ 37
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
un clock esterno la cui frequenza deve essere compresa tra i 5 e i 48 MHz. In entrambi i casi il
pin sul quale viene applicato il segnale di clock è l’IFCLK.
3.1.2 LETTURA ASINCRONA
Fig. 3.3 Lettura Asincrona
IDLE : Quando si desidera leggere passare allo STATO 1;
STATO 1 : Tramite il bus FIFOADR, puntare ad una FIFO configurata OUT, e passare allo
STATO 2;
STATO 2 : Portare a livello basso il pin SLOE, se la FIFO non e’ vuota (EMPTY è false)
allora passare allo STATO 3, altrimenti rimanere nello STATO 2;
STATO 3 : Portare a livello basso SLOE e SLRD, memorizzare il dato presente sul bus dati
FD, riportare a livello alto SLRD (incremento del puntatore) e SLOE, passare allo STATO 4;
STATO 4 : Se ci sono ulteriori dati da leggere passare allo STATO 2 altrimenti tornare in
IDLE.
Fig. 3.4 Lettura Asincrona, forme d’onda
____________________________________________________________________________________________ 38
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
3.1.3
SCRITTURA ASINCRONA
Fig. 3.5 Scrittura Asincrona
IDLE : Quando si desidera scrivere passare allo STATO 1;
STATO 1 : Tramite il bus FIFOADR, puntare ad una FIFO configurata IN, e passare allo
STATO 2;
STATO 2 : Se la FIFO non e’ piena (FULL è false) allora passare allo STATO 3, altrimenti
rimanere nello STATO 2;
STATO 3 : Caricare il dato sul bus dati FD, portare a livello basso e successivamente riportare
a livello alto il pin SLWR , passare allo STATO 4;
STATO 4 : Se ci sono ulteriori dati da scrivere passare allo STATO 2 altrimenti tornare in
IDLE.
Fig. 3.6 Scrittura Asincrona, forme d’onda
____________________________________________________________________________________________ 39
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
3.1.4 CONFIGURAZIONE DEGLI ENDPOINT
Fig. 3.7 Configurazione degli endpoint
Le due strutture evidenziate sono quelle scelte per la realizzazione del progetto, in particolare
EP2 è configurato in OUT 512 * 4 buffer ed EP6 è configurato in IN 512 * 4 buffer.
Gli EP0 e EP1 sono gli stessi per ogni tipo di configurazione. L’EP0 come visto
precedentemente è l’endpoint di controllo, mentre invece l’EP1 può essere di tipo BULK o
INTERRUPT.
A sinistra della linea verticale l’utente può scegliere tra differenti configurazioni per EP2&4 e
EP6&8, in base alla combinazione dei buffer da 512 byte. Un esempio di configurazione degli
endpoint potrebbe essere EP2 = 1024 byte x 2 buffer e EP6 = 512 byte x 4 buffer.
Alla destra della linea verticale tutti i buffer sono spartiti tra l’EP2 e l’EP8, quindi l’utente può
scegliere una sola intera colonna.
Questo tipo di configurazione è possibile solo se l’FX2 lavoro in modalità High Speed (USB
2.0).
____________________________________________________________________________________________ 40
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
3.1.5 FIRMWARE FX2
Il firmware per l’FX2 è stato scritto utilizzando Keil µVision, fornito dalla Cypress, il quale
oltre ad includere le librerie tipiche del c, dispone di un set di istruzioni per programmare nel
modo più semplice i registri dell’FX2. In figura 3.8 è mostrata l’interfaccia grafica di lavoro.
Fig. 3.8 Keil µVision
Keil µVision permette naturalmente di compilare il codice realizzato e di creare il relativo file
esadecimale (*.hex) che verrà successivamente caricato, tramite il programma EZ-USB
Control Panel fornito anche questo da Cypress, nella EEPROM dell’FX2, vedi figura 3.9
pagina seguente.
____________________________________________________________________________________________ 41
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
L’interfaccia EZ-USB Control Panel offre numerose funzioni, tra cui la possibilità di effettuare
la trasmissione/ricezione isocrono o bulk di pacchetti di diverse dimensioni.
Fig. 3.9 EZ-USB Control Panel
In questa tesi verranno trattate solo le funzioni che sono risultate utili alla realizzazione di
VistaII-USB.
Il pulsante :
-
Download, permettere di caricare il file .hex nella memoria dell’FX2 ;
-
Get Pipes, mostra a monitor la configurazione delle pipe dell’FX2 ;
-
Bulk Trans, effettua una trasmissione o una ricezione di un pacchetto di dati di dimensione
definita nel riquadro length. Nel caso si tratti di una trasmissione è possibile definire byte a
byte i dati che si vogliono trasmettere.
____________________________________________________________________________________________ 42
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
La figura 3.10 mostra un esempio in cui l’FX2 è in modalità slave fifo’s con l’EP6 configurato
in OUT dimensione 512 byte, e l’EP2 configurato in IN dimensione 512 byte.
Fig. 3.10 EZ-USB Control Panel
3.2 CONFIGURAZIONE DEL VISoc
La microcamera VISoc attraverso il settaggio di alcuni registri (vedi data-sheet relativi) è stata
impostata per fornire in uscita il valore di 3 pixel (una locazione di memoria contiene il valore
di tre pixels) ogni qual volta venga effettuata una lettura di un singolo indirizzo di memoria.
La memoria interna del VISoc può essere vista, in maniera molto semplificata, come un unico
vettore composto di (320*256)/3 = 27307 locazioni. La dimensione dell’immagine acquisita
dal sensore ottico è proprio di 320*256 pixels.
____________________________________________________________________________________________ 43
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
3.2.1 COMUNICAZIONE COL VISoc ATTRAVERSO L’ADD/CTRL REGISTER
Tutti i trasferimenti che avvengo tramite la debug parallel port devono cominciare caricando il
valore dell’indirizzo di memoria in questo registro. Pc_cnt e pc_ss0 sono le flag per questo
registro:
Tab. 3.2 Address/Control Register bits
Come mostrato in figura 3.3, l’address register consiste di 24 bit di indirizzo, di due bit
modalità. Nei 24 bit viene caricato il valore vero e proprio dell’indirizzo di memoria a cui si
vuole accedere.
I bit di mode sono usati per definire che tipo di accesso in memoria è richiesto, si veda tabella
3T.2:
Tab. 3.3 Mode bits del Address/Control Register
L’address register viene caricato nel seguente modo :
1. L’host controlla che il pc_busy sia a livello basso (debug parallel port è libera) ;
2. L’host porta a livello basso pc_cnt e pc_ss0 ;
3. L’host carica il primo byte di indirizzo (7 down to 0) sul bus dati (pc_d) e setta a livello
basso pc_str ;
4. L’host controlla che pc_busy sia a livello alto dopo il fronte di discesa di pc_str;
5. L’host setta pc_str a livello alto (sul fronte di salita di pc_str VISoc legge il dato presente
sul bus dati) ;
6. L’host carica sul bus dati il secondo byte di indirizzo (15 down to 8) e genera un impulso di
pc_str sul livello basso ;
7. L’host carica sul bus dati il secondo byte di indirizzo (23 down to 16) e genera un impulso
di pc_str sul livello basso ;
____________________________________________________________________________________________ 44
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
8. L’host carica sul bus dati il secondo byte di indirizzo (31 down to 24) e genera un impulso
di pc_str sul livello basso ;
9. L’host controlla che la linea pc_busy torni a livello basso ;
10. Infine l’host riporta a livello alto pc_cnt e pc_ss0.
Da questo momento in poi può avvenire una lettura del registro o una scrittura nel registro a
seconda di come vengono settati pc_cnt e pc_ss0.
3.2.2
LETTURA DI UN INDIRIZZO DEL VISoc
Come mostrato nella figura 3.4, la fase di lettura comincia caricando nel registro degli indirizzi
il valore dell’indirizzo di memoria a cui si vuole accedere. Successivamente la fase di lettura
del dato (4 byte) comincia con Pc_cnt e Pc_ss0 entrambi a 1. Dopo che la fase di caricamento
dell’indirizzo è terminata, il dato viene letto come segue :
a. L’host attende che pc_busy vada basso (debug parallel port è libera) ;
b. L’host porta a livello alto pc_cnt e pc_ss0 ;
c. L’host porta a livello basso pc_str e comincia la lettura ;
d. L’host controlla che pc_busy sia a livello alto ;
e. Una volta che è avvenuto il caricamento dell’indirizzo ed il dato è pronto, VISoc carica il
primo byte del dato sul data bus e setta pc_ack = 0. Se è avvenuto un accesso non permesso
alla memoria pc_op è settato alto, e rimane a livello alto fintato che non avviene una nuova
fase di lettura ;
f. In questo momento l’host legge il dato che è stato trasmesso dal VISoc e pone a livello alto
pc_Str per confermare che il dato è stato ricevuto ;
g. VISoc carica il secondo byte sul bus dati e la trasmissione dei rimanenti tre byte avviene
come spiegato nel punto precedente ;
h. Terminata la trasmissione dei quattro byte di dato VISoc si preoccupa di portare la linea
pc_busy a livello basso e la linea pc_ack a livello alto.
L’esempio mostrato in figura 3.11 mostra la lettura in memoria dell’indirizzo 0x008004. Il dato
(word) è 0x679ffe3e. L’esempio in figura 3.12 mostra invece una lettura non permessa di un
registro del RISC. Notare che pc_op rimane a livello alto. Esso viene resettato nel momento in
cui avviene una lettura valida.
____________________________________________________________________________________________ 45
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
Fig. 3.11 Esempio di lettura in memoria
Fig. 3.12 Esempio di lettura in memoria non permesso
____________________________________________________________________________________________ 46
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
3.2.3
SRITTURA DI UN INDIRIZZO
Similarmente al caso precedente, la fase di scrittura comincia caricando nell’address register il
valore del registro a cui si vuole accedere, successivamente comincia la fase di scrittura vera e
propria con il caricamento dei quattro byte di dato con pc_cnt = 1 e pc_ss0 = 0. Tutto avviene
nel modo in cui segue :
a. L’host controlla che il segnale pc_busy sia a livello basso (debug parallel port è libera) ;
b. L’host setta a livello basso pc_ss0 e lascia a livello alto pc_cnt ;
c. L’host porta a livello basso pc_str e controlla che pc_busy sia a livello alto ;
d. L’host carica i bit 7:0 del dato sul bus dati ;
e. L’host porta a livello alto pc_str, sul fronte di salita dello strofe VISoc legge il dato sul bus;
f. L’host genera un impulso sul livello basso di pc_str e carica sul bus dati i bit 15:8 del dato;
g. L’host genera un impulso sul livello basso di pc_str e carica sul bus dati i bit 23:16 del
dato;
h. L’host genera un impulso sul livello basso di pc_str e carica sul bus dati i bit 31:24 del
dato;
i. Dopo la trasmissione dell’ultimo byte il processo di scrittura si conclude. L’host deve
attendere che pc_busy torni a livello basso ;
j. L’host controlla lo stato di pc_op per verificare che non vi siano stati errori ;
k. L’host setta a livello alto pc_ss0.
In figura 3.13 è mostrata la scrittura del dato 0x28001280 alla locazione di memoria
0x00008000. L’esempio in figura 3.14 mostra la scrittura non permessa del dato 0x12345678
in un registro del RISC.
____________________________________________________________________________________________ 47
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
Fig. 3.13 Esempio di scrittura in memoria
Fig. 3.14 Esempio di scrittura in memoria non permessa
3.2.4 TEMPI TEORICI DI TRASMISSIONE DATI DEL VISoc
La frequenza massima del segnale di strobe è pari a 6MHz. Considerando che un frame è
costituito da 320 * 256 = 81920 pixel e che ogni otto cicli di strobe viene letto un indirizzo di
memoria cioè un pixel, per leggere un intero frame sono necessari circa 655360 cicli di strobe.
Vieni quindi impiegato un tempo totale pari a 655360 * (1/ 6MHz) = 0,109 secondi, cioè una
frame rate pari a circa 9 frame/sec.
____________________________________________________________________________________________ 48
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
E’ possibile compattare il numero di pixel da leggere, cioè si può fare in modo, settando
opportunamente alcuni registri del VISoc, di includere in ogni locazione di memoria letta tre
pixel. Si ricorda che una locazione di memoria è composta da 32 bit e che ogni pixel è
quantizzato su 10 bit, in questo modo si otterrebbe una frame rate pari a circa 9 * 3 = 27 frame
/ sec.
C’è da dire che tali valori sono puramente teorici, bisogna prendere in considerazione i tempi
necessari all’elaborazione dei dati e alla visualizzazione a monitor delle immagini ricevute, il
tempo necessario allo spacchettamento dei dati ricevuti, soprattutto se in ogni parola vengono
inclusi tre pixel, ecc…
3.3 PROGRAMMAZIONE DELLO XILINX SPARTAN II
Nel progetto è stato utilizzato xc2s50, un fpga della Xilinx con 50000 gates, 176 linee di I/O ed
n blocco di memoria totale di 32k bits.
In figura 3.15 è rappresentata l’architettura interna dell’fpga. Sono presenti due blocchi (FX2
Interface e VISoc Interface) interconnessi tra loro tramite delle linee di handshake i quali si
occupano uno della comunicazione con le Fifo dell’FX2 e l’altro della comunicazione con la
microcamera VISoc.
____________________________________________________________________________________________ 49
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
Fig. 3.15 Architettura interna dell’fpga
Le linee di interfacciamento con FX2 e VISoc sono già state descritte nei capitoli precedenti,
mentre le linee di interconnessione tra i due blocchi sono composte da tre bus a otto bit e 6
linee di controllo. In particolare :
-
Address bus, è un bus a otto bit che trasferisce al blocco VISoc Interface il valore
dell’indirizzo di memoria della microcamera a cui si desidera accedere ;
-
Data bus, è un bus a otto bit che trasferisce al blocco VISoc Interface il valore del dato che si
desidera scrivere in un particolare indirizzo di memoria della microcamera (questo bus è
utilizzato solo in caso di scrittura sul VISTA) ;
-
Data_Y bus, è un bus a otto bit che trasferisce al blocco FX2 Interface il valore del dato
presente in una particolare locazione di memoria della microcamera (questo bus è utilizzato
solo in caso di lettura sul VISTA) ;
-
rst è attivo basso, quando questa linea è a zero significa che si vuole effettua un reset sulla
microcamera ;
-
wr/rd quando questa linea è a 1 significa che si stà per effettuare un processo di scrittura sul
VISoc, e viceversa quando è a 0 significa che si desidera effettuare una lettura sul VISoc ;
-
wr_dato quando questa linea è a 0 significa che il byte di dato è pronto sul bus Data ;
-
wr_add quando questa linea è a 0 significa che il byte di indirizzo è pronto sul bus Address
-
wr_fifo è una linea che indica al blocco FX2 Interface che si sta per effettuare una scrittura
nelle Fifo, in questo modo il blocco di interfacciamento con l’FX2 ha il tempo necessario per
preparare le condizioni necessarie affinché la scrittura avvenga in maniera corretta ;
-
pronto, quando questa linea è a zero significa che un byte di dato è presente sul bus Data_Y
____________________________________________________________________________________________ 50
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
Il VHDL di programmazione per lo Xilinx è stato realizzato utilizzando il software ActiveHDL, ed in figura 3.16 è riportato un esempio di simulazione in cui viene simulato un processo
di scrittura del dato 0x3CFE1FF8 all’indirizzo 0x9AE29AE2 .
Fig. 3.16 Active-HDL Esempio di Simulazione
Il processo di sintesi e di implementazione del file per la programmazione dello Xilinx è stato
realizzato con il programma Xilinx-Project Navigator di cui di seguito viene riportata
un’immagine.
Fig. 3.17 Xilinx Project Navigator
____________________________________________________________________________________________ 51
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
3.4 PROTOCOLLO DI COMUNICAZIONE
La comunicazione tra Host (in questo caso un pc) e microcamera avviene rispettando il
seguente protocollo :
Reset
11111111
= 0xFF viene spedito questo byte per effettuare il reset del VISoc;
Scrivi Dato
11110000
N
Address 1
Data 1
……… Address N
Data N
0xF0 (un byte) indica che si desidera effettuare la scrittura di uno o più dati nella memoria
della microcamera. N (un byte) indica il numero delle locazioni di memoria a cui si desidera
accedere, successivamente vengono spediti gli N indirizzi di memoria e i relativi N dati. Ogni
indirizzo di memoria, come ogni dato, occupa 4 byte. Quindi N deve essere minore uguale di
127, poiché la dimensione della fifo in uscita è pari a 1024 byte ( N = (1024-2) / 8 = 127,75 ).
Leggi Dato
11110001
N
Address 1
Address 2
Address 3 ……. Address N
0xF1 (un byte) indica che si desidera effettuare la lettura di uno o più dati dalla memoria della
microcamera. N (un byte) indica il numero delle locazioni di memoria che si desidera leggere,
successivamente vengono spediti gli N indirizzi di memoria. Gli N indirizzi di memoria
occupano 4 byte, quindi N massimo risulta essere 255 ( N = (1024-2) / 4 = 255,5).
____________________________________________________________________________________________ 52
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
Leggi Frame
11110010
Address Start
Address Stop
0xF2 indica che si desidera effettuare la lettura di più locazioni di memoria contigue che
costituiscono un frame dell’immagine. Address Start e Address Stop indicano rispettivamente
la locazione di memoria dalla quale si desidera cominciare a leggere e la locazione di memoria
a cui ci si vuole fermare.
3.5 FUNZIONI DI LETTURA E SCRITTURA DELL’FX2 TRAMITE USB 2.0
Per permettere di comunicare in maniera semplice e veloce con la microcamera, è stato
realizzato un software in C che sfrutta la libreria fornita dalla Cypress (ezusb.sys) ed è quindi
in grado di spedire e ricevere pacchetti di dati attraverso la porta USB 2.0.
Di tale libreria in particolare vengono utilizzate le funzioni :
• IOCTL_EZUSB_BULK_WRITE ;
• IOCTL_EZUSB_BULK_READ :
La prima funzione implementa il processo di scrittura dell’FX2 con trasferimento dati in
modalità bulk, un esempio di scrittura è il seguente :
bulkControl.pipeNum=0;
//settaggio pipe OUT
//invio pacchetto dati
bResult = DeviceIoControl (DeviceHandle,
IOCTL_EZUSB_BULK_WRITE,
&bulkControl,
sizeof(BULK_TRANSFER_CONTROL),
pvBuffer,
length,
(unsigned long *)&nBytes,
NULL);
____________________________________________________________________________________________ 53
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
Nel pvBuffer è presente il pacchetto che si vuole trasmettere ad esempio F1 01 00 80 00 00
che rappresenta l’operazione di lettura del VISoc dell’indirizzo 00 80 00 00. Una volta inviato
il pacchetto, il programma attende che la periferica renda disponibili i bytes contenenti i pixel.
Quando questo avviene li acquisisce attraverso la funzione ioctl_ezusb_bulk_read. . Il tutto è
implementato attraverso i driver generici. I dati acquisiti vengono salvati di volta in volta per
essere poi elaborati.
Nel segmento di codice di seguito riportato, è mostrata la procedura di acquisizione e la
modalità di salvataggio dei dati:
nBytes = 0;
bulkControl.pipeNum=1;
//settaggio pipe IN
//acquisizione pacchetto dati
bResult = DeviceIoControl (DeviceHandle,
IOCTL_EZUSB_BULK_READ,
&bulkControl,
sizeof(BULK_TRANSFER_CONTROL),
buffer,
length,
(unsigned long *)&nBytes,
NULL);
//salvataggio dayi
save=(unsigned int*)buffer;
for (int j=0;j<512;j++)
{
vettore=(save[j]); //dati salvati in vettore di cui ogni
}
//elemento corrispone a un byte
I dati ricevuti dall’USB tramite la funzione ioctl_ezusb_bulk_read si trovano nel vettore buffer.
E’ molto importante ricordarsi che il valore di length rappresenta il numero di byte che si
vogliono leggere o scrivere nella periferica USB, se il valore inserito non fosse corretto
potrebbero avvenire degli errori di sistema ed in tal caso sarebbe necessario disconnettere il
dispositivo o addirittura riavviare il PC.
____________________________________________________________________________________________ 54
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
3.6 REALIZZAZZIONE IN ‘C’ DI UN INTERFACCIA GRAFICA
L’interfaccia grafica è stata realizza con Borland 5.0, un programma che oltre ad essere un
compilatore C permette in maniera semplice e veloce di creare dei pulsanti a cui si può
attribuire la funzione che si desidera.
Fig. 3.18 Interfaccia Grafica 1
Il pulsante pipe information, fornisce le informazioni riguardanti gli endpoint utilizzati in
modo particolare il tipo di endpoint, la direzione e la dimensione.
Il pulsante device descriptor, invece, fornisce le informazioni riguardanti il dispositivo
connesso all’USB 2.0 come ad esempio l’ID del fornitore, del prodotto, la dimensione massima
dei pacchetti che si possono trasmettere ecc…
____________________________________________________________________________________________ 55
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
La figura successiva (FIG 3.19) mostra invece le funzioni di reset, scrittura e lettura del VISoc.
Fig. 3.19 Interfaccia Grafica 2
Il pulsante save array of address/data serve per creare un vettore di N locazioni, in ognuna
delle quali è presente un valore di indirizzo di memoria ( casella Address) e nel caso di
scrittura su VISoc un valore del dato (casella Data). Premendo successivamente il pulsante
Write to Vista oppure il pulsante Read From Vista si effettua rispettivamente la scrittura e la
lettura delle N locazioni di memoria precedentemente salvate. La casella Data Received
mostra in sequenza i dati ricevuti dalla microcamera.
Sono presenti inoltre una serie di pulsanti di test utili ad accendere e spegnere dei led presenti
sulla scheda di sviluppo del VISoc.
____________________________________________________________________________________________ 56
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
Infine l’ultima schermata dell’interfaccia (Fig. 3.20) permette di leggere dei frame interi dalla
microcamera.
Fig. 3.20 Interfaccia Grafica 3
Il pulsante Read frame from bulk channel permette di leggere un intero frame, mentre invece
il pulsante Halt Vista setta VISoc in uno stato di stop in modo tale da poter leggere l’intero
frame senza che il microprocessore RISC sovrascriva il frame che si sta trasferendo con un
nuovo frame.
Nella caselle di testo viene riportato il tempo impiegato per leggere un singolo frame.
____________________________________________________________________________________________ 57
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
Cap. 3
IMPLEMENTAZIONE E TEST DELL’ARCHITETTURA
3.7 CALCOLO DEI TEMPI DI TRASMISSIONE DATI
Come si può notare dalla figura precedente, per leggere un intero frame è stato impiegato un
tempo totale pari a circa 0.067 secondi.
Considerando che :
•
ogni frame è costituito da 320*256 pixel per un totale di 81920 pixel ;
•
ogni parola trasmessa (32 bit) racchiude l’informazione relativa a 3 pixel dato che ognuno
di questi è quantizzato su 10 bit;
Tutto ciò significa che ogni volta che viene premuto il pulsante Read frame from bulk
channel vengo lette 81920 / 3 = 27306,67 in pratica 27307 locazioni di memoria, cioè 27307 *
4 = 109228 byte.
Vengono quindi trasmessi 109228 * 8 = 873824 bit in 0,067 secondi, cioè il sistema ha una bit
rate pari a 873824/0,097 circa 9 Mbit/sec. ed una frame rate di circa 1 / 0,067 = 15 frame /
sec.
Tale valore è molto minore rispetto ai 27 frame/sec teorici calcolati nel paragrafo 3.2.4 proprio
a causa dei tempi necessari all’elaborazione dei dati.
____________________________________________________________________________________________ 58
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
CONCLUSIONI E SVILUPPI FUTURI
Capitolo 4 : Conclusioni E Sviluppi Futuri
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
In conclusione si può affermare che, utilizzando il componente Cypress Ez-USB FX2 in
modalità Slave Fifo’s affiancato da un logica programmabile, è possibile realizzare un’ottima
interfaccia USB 2.0 veloce ed assolutamente affidabile.
Infatti, utilizzando l’USB 2.0 per la gestione del VISoc, il “collo di bottiglia” del canale non è
più il protocollo di comunicazione Host – VISoc che in precedenza veniva implementato
attraverso la parallela del PC, ma il VISoc stesso, poiché lo strobe al suo ingresso deve avere
una frequenza massima di circa 6 MHz. L’intero sistema, invece, potrebbe supportare
microcamere o qualsiasi altro dispositivo che abbia un segnale di strobe di frequenza fino a
circa 24 MHz.
Tale limite è dovuto al fatto che l’FX2 può lavorare con una frequenza massima di 48 MHz, e
per il teorema del campionamento i segnali da campionare devono avere una frequenza
massima minore o uguale a 24 MHz ( f[FX2] / 2 , 48MHZ / 2) .
Concluso il tirocinio, sulla base del lavoro che ho compiuto, Neuricam produrrà un prototipo
della nuova microcamera VISoc USB 2.0 .
____________________________________________________________________________________________ 59
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
CONCLUSIONI E SVILUPPI FUTURI
Come sviluppo futuro, sarebbe possibile progettare una nuova interfaccia che anziché
trasmettere i dati attraverso l’USB in modalità bulk, li trasmetta in modalità isocrona.
Questo tipo di modalià permette una maggiore velocità per quanto riguarda la trasmissione
dati, ma in caso di presenza di un errore nel pacchetto ricevuto non esiste la possibilità che tale
pecchetto venga rispedito. Se si utilizza una trasmissione isocrona è quindi necessario
implementare un algoritmo di rivelazione e correzione automatica degli errori.
____________________________________________________________________________________________ 60
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
RIFERIMENTI BIBLIOGRAFICI
Riferimenti Bibliografici
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
[1]
Universal Serial Bus Specification
[2]
http://www.usb.org
[3]
EZ-USB FX2 Technical Reference Manual– Cypress Semiconductor
[4]
VISoc Datasheet – NEURICAM
[5]
DS001-1,Spartan II : Introduction and Ordering Information (module 1) - Xilinx
[6]
DS001-2,Spartan II : Functional Description (module 2) - Xilinx
[7]
DS001-3,Spartan II : DC and Switching Characteristics (module 3) - Xilinx
[8]
DS001-1,Spartan II : Pinout Tables (module 4) - Xilinx
[9]
Anchor EZ- USB Firmware Library – Anchor Chips
[10] Anchor EZ-USB Frameworks – Anchor Chips
[11] EZ-USB General Purpose Driver Specification - Cypress Semiconductor
____________________________________________________________________________________________ 61
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
APPENDICE – TERMINI ED ABBREVIAZIONI
Appendice – Termini Ed Abbreviazioni
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Di seguito sono elencati i principali termini e le abbreviazioni utilizzate in questa tesi.
Le definizioni sono tratte dal
CAPITOLO
2 di “Universal Serial Bus Specification - Compaq,
Hewlett-Packard, Intel, Lucent, Microsoft, NEC, Philips - Revision 2.0 April 27, 2000 –“
ACK
Handshake packet indicating a positive acknowledgment.
Active Device
A device that is powered and is not in the Suspend state.
Asynchronous
Data
Data transferred at irregular intervals with relaxed latency requirements.
Asynchronous
RA
The incoming data rate, Fsi, and the outgoing data rate, Fso, of the RA process are
independent (i.e., there is no shared master clock). See also rate adaptation.
Asynchronous
SRC
The incoming sample rate, Fsi, and outgoing sample rate, Fso, of the SRC process are
independent (i.e., there is no shared master clock). See also sample rate conversion.
Audio Device
A device that sources or sinks sampled analog data.
AWG#
The measurement of a wire’s cross section, as defined by the American Wire Gauge
standard.
b/s
Transmission rate expressed in bits per second
B/s
Transmission rate expressed in bytes per second.
Babble
Unexpected bus activity that persists beyond a specified point in a (micro)frame.
____________________________________________________________________________________________ 62
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
APPENDICE – TERMINI ED ABBREVIAZIONI
Bandwidth
The amount of data transmitted per unit of time, typically bits per second (b/s) or bytes
per second (B/s).
Big Endian
A method of storing data that places the most significant byte of multiple-byte values at
a lower storage address. For example, a 16-bit integer stored in big endian format places
the least significant byte at the higher address and the most significant byte at the lower
address. See also little endian.
Bit
A unit of information used by digital computers. Represents the smallest piece of
addressable memory within a computer. A bit expresses the choice between two
possibilities and is typically represented by a logical one (1) or zero (0).
Bit Stuffing
Insertion of a “0” bit into a data stream to cause an electrical transition on the data wires,
allowing a PLL to remain locked.
Buffer
Storage used to compensate for a difference in data rates or time of occurrence of events,
when transmitting data from one device to another.
Bulk Transfer
One of the four USB transfer types. Bulk transfers are non-periodic, large bursty
communication typically used for a transfer that can use any available bandwidth and
can also be delayed until bandwidth is available. See also transfer type
Bus Enumeration
Detecting and identifying USB devices.
Byte
A data element that is eight bits in size.
Capabilities
Those attributes of a USB device that are administrated by the host.
Characteristics
Those qualities of a USB device that are unchangeable; for example, the device class is a
device characteristic.
Client
Software resident on the host that interacts with the USB System Software to arrange
data transfer between a function and the host. The client is often the data provider and
consumer for transferred data.
Configuring
Software
Software resident on the host software that is responsible for configuring a USB device.
This may be a system configurator or software specific to the device.
Control Endpoint
A pair of device endpoints with the same endpoint number that are used by a control
pipe. Control endpoints transfer data in both directions and, therefore, use both endpoint
directions of a device address and endpoint number combination. Thus, each control
endpoint consumes two endpoint addresses.
Control Pipe
Same as a message pipe.
Control Transfer
One of the four USB transfer types. Control transfers support
configuration/command/status type communications between client and function. See
also transfer type.
CRC
See Cyclic Redundancy Check.
CTI
Computer Telephony Integration.
Cyclic
Redundancy
Check
(CRC)
A check performed on data to see if an error has occurred in transmitting, reading, or
writing the data. The result of a CRC is typically stored or transmitted with the checked
data. The stored or transmitted result is compared to a CRC calculated for the data to
determine if an error has occurred.
Default Address
An address defined by the USB Specification and used by a USB device when it is first
powered or reset. The default address is 00H.
Default Pipe
The message pipe created by the USB System Software to pass control and status
information between the host and a USB device’s endpoint zero.
Device
A logical or physical entity that performs a function. The actual entity described depends
on the context of the reference. At the lowest level, device may refer to a single
hardware component, as in a memory device. At a higher level, it may refer to a
____________________________________________________________________________________________ 63
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
APPENDICE – TERMINI ED ABBREVIAZIONI
collection of hardware components that perform a particular function, such as a USB
interface device. At an even higher level, device may refer to the function performed by
an entity attached to the USB; for example, a data/FAX modem device. Devices may be
physical, electrical, addressable, and logical. When used as a non-specific reference, a
USB device is either a hub or a function.
Device Address
A seven-bit value representing the address of a device on the USB. The device address is
the default address (00H) when the USB device is first powered or the device is reset.
Devices are assigned a unique device address by the USB System Software.
Device Endpoint
A uniquely addressable portion of a USB device that is the source or sink of information
in a communication flow between the host and device. See also endpoint address.
Device Resources
Resources provided by USB devices, such as buffer space and endpoints. See also Host
Resources and Universal Serial Bus Resources.
Device Software
Software that is responsible for using a USB device. This software may or may not also
be responsible for configuring the device for use.
The direction of data flow from the host or away from the host. A downstream port is the
port on a hub electrically farthest from the host that generates downstream data traffic
from the hub. Downstream ports receive upstream data traffic.
Downstream
Driver
When referring to hardware, an I/O pad that drives an external load. When referring to
software, a program responsible for interfacing to a hardware device, that is, a device
driver.
DWORD
Double word. A data element that is two words (i.e., four bytes or 32 bits) in size.
Dynamic
Insertion
Removal
The ability to attach and remove devices while the host is in operation.
and
E2PROM
See Electrically Erasable Programmable Read Only Memory.
EEPROM
See Electrically Erasable Programmable Read Only Memory.
Electrically
Erasable
Programmable
Read
Only
Memory
(EEPROM)
Non-volatile rewritable memory storage technology.
End User
The user of a host.
Endpoint
See device endpoint.
Endpoint Address
The combination of an endpoint number and an endpoint direction on a USBdevice.
Each endpoint address supports data transfer in one direction.
Endpoint
Direction
The direction of data transfer on the USB. The direction can be either IN or OUT. IN
refers to transfers to the host; OUT refers to transfers from the host.
Endpoint
Number
A four-bit value between 0H and FH, inclusive, associated with an endpoint on a USB
device.
Envelope detector
An electronic circuit inside a USB device that monitors the USB data lines and detects
certain voltage related signal characteristics.
EOF
End-of-(micro)Frame.
EOP
End-of-Packet.
External Port
See port.
Eye pattern
A representation of USB signaling that provides minimum and maximum voltage levels
____________________________________________________________________________________________ 64
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
APPENDICE – TERMINI ED ABBREVIAZIONI
as well as signal jitter.
False EOP
A spurious, usually noise-induced event that is interpreted by a packet receiver as an
EOP.
Frame
A 1 millisecond time base established on full-/low-speed buses.
Frame Pattern
A sequence of frames that exhibit a repeating pattern in the number of samples
transmitted per frame. For a 44.1 kHz audio transfer, the frame pattern could be nine
frames containing 44 samples followed by one frame containing 45 samples.
Fs
See sample rate.
Full-duplex
Computer data transmission occurring in both directions simultaneously.
Full-speed
USB operation at 12 Mb/s. See also low-speed and high-speed.
Function
A USB device that provides a capability to the host, such as an ISDN connection, a
digital microphone, or speakers.
Handshake
Packet
A packet that acknowledges or rejects a specific condition. For examples, see ACK and
NAK.
High-bandwidth
endpoint
A high-speed device endpoint that transfers more than 1024 bytes and less than 3073
bytes per microframe.
High-speed
USB operation at 480 Mb/s. See also low-speed and full-speed.
Host
The host computer system where the USB Host Controller is installed. This includes the
host hardware platform (CPU, bus, etc.) and the operating system in use.
Host Controller
The host’s USB interface.
Host Controller
Driver (HCD)
The USB software layer that abstracts the Host Controller hardware. The Host Controller
Driver provides an SPI for interaction with a Host Controller. The Host Controller
Driver hides the specifics of the Host Controller hardware implementation.
Host Resources
Resources provided by the host, such as buffer space and interrupts. See also Device
Resources and Universal Serial Bus Resources.
Hub
A USB device that provides additional connections to the USB.
Hub Tier
One plus the number of USB links in a communication path between the host and a
function
I/O
Packet
Request
An identifiable request by a software client to move data between itself (on the host) and
an endpoint of a device in an appropriate direction.
Interrupt Request
(IRQ)
A hardware signal that allows a device to request attention from a host. The host
typically invokes an interrupt service routine to handle the condition that caused the
request.
Interrupt
Transfer
One of the four USB transfer types. Interrupt transfer characteristics are small data, nonperiodic, low-frequency, and bounded-latency. Interrupt transfers are typically used to
handle service needs. See also transfer type.
IRP
See I/O Request Packet.
IRQ
See Interrupt Request.
Isochronous Data
A stream of data whose timing is implied by its delivery rate.
Isochronous
Device
An entity with isochronous endpoints, as defined in the USB Specification, that sources
or sinks sampled analog streams or synchronous data streams.
Isochronous Sink
Endpoint
An endpoint that is capable of consuming an isochronous data stream that is sent by the
host.
Isochronous
An endpoint that is capable of producing an isochronous data stream and sending it to
____________________________________________________________________________________________ 65
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
APPENDICE – TERMINI ED ABBREVIAZIONI
Source Endpoint
the host.
Isochronous
Transfer
One of the four USB transfer types. Isochronous transfers are used when working with
isochronous data. Isochronous transfers provide periodic, continuous communication
between host and device. See also transfer type.
Jitter
A tendency toward lack of synchronization caused by mechanical or electrical changes.
More specifically, the phase shift of digital pulses over a transmission medium.
kb/s
Transmission rate expressed in kilobits per second.
kB/s
Transmission rate expressed in kilobytes per second.
Little Endian
Method of storing data that places the least significant byte of multiple-byte values at
lower storage addresses. For example, a 16-bit integer stored in little endian format
places the least significant byte at the lower address and themost significant byte at the
next address. See also big endian.
LOA
Loss of bus activity characterized by an SOP without a corresponding EOP.
Low-speed
USB operation at 1.5 Mb/s. See also full-speed and high-speed.
LSb
Least significant bit.
LSB
Least significant byte.
Mb/s
Transmission rate expressed in megabits per second.
MB/s
Transmission rate expressed in megabytes per second.
Message Pipe
A bi-directional pipe that transfers data using a request/data/status paradigm. The data
has an imposed structure that allows requests to be reliably identified and communicated.
Microframe
A 125 microsecond time base established on high-speed buses.
MSb
Most significant bit.
MSB
Most significant byte.
NAK
Handshake packet indicating a negative acknowledgment.
Non Return to
Zero
Invert
(NRZI)
A method of encoding serial data in which ones and zeroes are represented by opposite
and alternating high and low voltages where there is no return to zero (reference) voltage
between encoded bits. Eliminates the need for clock pulses.
NRZI
See Non Return to Zero Invert.
Object
Host software or data structure representing a USB entity.
Packet
A bundle of data organized in a group for transmission. Packets typically contain three
elements: control information (e.g., source, destination, and length), the data to be
transferred, and error detection and correction bits.
Packet Buffer
The logical buffer used by a USB device for sending or receiving a single packet. This
determines the maximum packet size the device can send or receive.
Packet ID (PID)
A field in a USB packet that indicates the type of packet, and by inference, the format of
the packet and the type of error detection applied to the packet.
Phase
A token, data, or handshake packet. A transaction has three phases.
Phase Locked
Loop (PLL)
A circuit that acts as a phase detector to keep an oscillator in phase with an incoming
frequency.
Physical Device
A device that has a physical implementation; e.g., speakers, microphones, and CD
players.
____________________________________________________________________________________________ 66
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
APPENDICE – TERMINI ED ABBREVIAZIONI
PID
Pipe
See Packet ID.
A logical abstraction representing the association between an endpoint on a device and
software on the host. A pipe has several attributes; for example, a pipe may transfer data
as streams (stream pipe) or messages (message pipe).See also stream pipe and message
pipe.
PLL
See Phase Locked Loop.
Polling
Asking multiple devices, one at a time, if they have any data to transmit.
POR
See Power On Reset.
Port
Point of access to or from a system or circuit. For the USB, the point where a USB
device is attached.
Power On Reset
(POR)
Restoring a storage device, register, or memory to a predetermined state when power is
applied.
Programmable
Data Rate
Either a fixed data rate (single-frequency endpoints), a limited number of data rates (32
kHz, 44.1 kHz, 48 kHz, …), or a continuously programmable data rate. The exact
programming capabilities of an endpoint must be reported in the appropriate classspecific endpoint descriptors.
Protocol
A specific set of rules, procedures, or conventions relating to format and timing of data
transmission between two devices.
RA
See rate adaptation.
Rate Adaptation
The process by which an incoming data stream, sampled at Fsi, is converted to an
outgoing data stream, sampled at Fso,with a certain loss of quality, determined by the rate
adaptation algorithm. Error control mechanisms are required for the process. F si and Fso
can be different and asynchronous. Fsi is the input data rate of the RA; Fso is the output
data rate of the RA.
Request
A request made to a USB device contained within the data portion of a SETUP packet.
Retire
The action of completing service for a transfer and notifying the appropriate software
client of the completion.
Root Hub
A USB hub directly attached to the Host Controller. This hub (tier 1) is attached to the
host.
Root Port
The downstream port on a Root Hub.
Sample
The smallest unit of data on which an endpoint operates; a property of an endpoint.
Sample Rate (Fs)
The number of samples per second, expressed in Hertz (Hz).
Sample
Rate
Conversion
(SRC)
A dedicated implementation of the RA process for use on sampled analog data streams.
The error control mechanism is replaced by interpolating techniques.
Service
A procedure provided by a System Programming Interface (SPI).
Service Interval
The period between consecutive requests to a USB endpoint to send or receive data.
Service Jitter
The deviation of service delivery from its scheduled delivery time.
Service Rate
The number of services to a given endpoint per unit time.
SOF
See Start-of-Frame.
SOP
Start-of-Packet.
SPI
See System Programming Interface.
Split transaction
A transaction type supported by host controllers and hubs. This transaction type allows
____________________________________________________________________________________________ 67
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
APPENDICE – TERMINI ED ABBREVIAZIONI
full- and low-speed devices to be attached to hubs operating at high-speed.
SRC
See Sample Rate Conversion.
Stage
One part of the sequence composing a control transfer; stages include the Setup stage,
the Data stage, and the Status stage.
Start-of-Frame
(SOF)
The first transaction in each (micro)frame. An SOF allows endpoints to identify the start
of the (micro)frame and synchronize internal endpoint clocks to the host.
Stream Pipe
A pipe that transfers data as a stream of samples with no defined USB structure.
Synchronization
Type
A classification that characterizes an isochronous endpoint’s capability to connect to
other isochronous endpoints.
Synchronous RA
The incoming data rate, Fsi, and the outgoing data rate, Fso, of the RA process are
derived from the same master clock. There is a fixed relation between Fsi and Fso.
Synchronous
SRC
The incoming sample rate, Fsi, and outgoing sample rate, Fso, of the SRC process are
derived from the same master clock. There is a fixed relationbetween Fsi and Fso.
System
Programming
Interface (SPI)
A defined interface to services provided by system software.
TDM
See Time Division Multiplexing.
TDR
See Time Domain Reflectometer.
Termination
Passive components attached at the end of cables to prevent signals from being reflected
or echoed.
Time Division
A method of transmitting multiple signals (data, voice, and/or video) simultaneously
over one communications medium by interleaving a piece of each signal one after
another.
Multiplexing
(TDM)
Time
Domain
Reflectometer
(TDR)
An instrument capable of measuring impedance characteristics of the USB signal lines.
Timeout
The detection of a lack of bus activity for some predetermined interval.
Token Packet
A type of packet that identifies what transaction is to be performed on the bus.
Transaction
The delivery of service to an endpoint; consists of a token packet, optional data packet,
and optional handshake packet. Specific packets are allowed/required based on the
transaction type.
Transaction
translator
A functional component of a USB hub. The Transaction Translator responds to special
high-speed transactions and translates them to full/low-speed transactions with full/lowspeed devices attached on downstream facing ports.
Transfer
One or more bus transactions to move information between a software client and its
function.
Transfer Type
Determines the characteristics of the data flow between a software client and its
function. Four standard transfer types are defined: control, interrupt, bulk, and
isochronous.
Turn-around
Time
The time a device needs to wait to begin transmitting a packet after a packet has been
received to prevent collisions on the USB. This time is based on the length and
propagation delay characteristics of the cable and the location of the transmitting device
in relation to other devices on the USB.
____________________________________________________________________________________________ 68
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni
APPENDICE – TERMINI ED ABBREVIAZIONI
Universal Serial
Bus
Driver
(USBD)
The host resident software entity responsible for providing common services to clients
that are manipulating one or more functions on one or more Host Controllers.
Universal Serial
Bus Resources
Resources provided by the USB, such as bandwidth and power. See also Device
Resources and Host Resources.
Upstream
The direction of data flow towards the host. An upstream port is the port on a device
electrically closest to the host that generates upstream data traffic from the hub.
Upstream ports receive downstream data traffic.
USBD
See Universal Serial Bus Driver.
USB-IF
USB Implementers Forum, Inc. is a nonprofit corporation formed to facilitate the
development of USB compliant products and promote the technology.
Virtual Device
A device that is represented by a software interface layer. An example of a virtual device
is a hard disk with its associated device driver and client software that makes it able to
reproduce an audio .WAV file.
Word
A data element that is two bytes (16 bits) in size
____________________________________________________________________________________________ 69
Università degli Studi di Trento – Dipartimento di Informatica e Telecomunicazioni