BAnMaT Light: creazione di un framework per il supporto alla rilocazione software dei bitstream

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "BAnMaT Light: creazione di un framework per il supporto alla rilocazione software dei bitstream"

Transcript

1 Politecnico di Milano Facoltá di Ingegneria Corso di Laurea in Ingegneria Informatica BAnMaT Light: creazione di un framework per il supporto alla rilocazione software dei bitstream Relatore: Correlatore: Prof.ssa Donatella SCIUTO Ing. Marco Domenico SANTAMBROGIO Tesi di Laurea di: Simone Corbetta Matricola n Anno Accademico

2

3 Alla mia famiglia. A tutti coloro che mi hanno sopportato in questi tre anni. Simone

4

5 Indice Introduzione 1 1 Architettura e configurazione di una FPGA Virtex II Pro Tecnologia FPGA Xilinx Virtex II Pro FPGA Configurable Logic Block Input/Output Block Risorse di interconnessione Configurazione del dispositivo Memoria di configurazione Struttura di un bitstream Registri di configurazione Conclusioni Riconfigurabilitá dinamica Introduzione Motivazioni Definizioni Flusso di sviluppo per FPGA Design entry Simulazione funzionale Sintesi Simulazione di timing Downloading i

6 INDICE 2.5 Architetture riconfigurabili dinamicamente Riconfigurazione parziale module based Riconfigurazione parziale difference based Approccio DRESD Conclusioni Strumenti software per la riconfigurabilitá PARBIT Modello di esecuzione Formato del bitstream parziale Design flow JBits JRTR JPG Conclusioni BAnMaT BAnMaT Perché BAnMaT Introduzione al tool Architettura Flusso di progettazione Verifica del software esistente Concezione delle operazioni: casi d uso Progettazione Prototipo: il modello di riferimento Progettazione della base di dati Implementazione Front End grafico Test Tecnologie utilizzate ii

7 INDICE 5 BAnMaT Light Rilocazione spaziale dinamica Architettura Modello di esecuzione Relazione con BiRF Conclusioni Risultati sperimentali BAnMaT BAnMaT Light Vettori utilizzati Risultati ottenuti Conclusioni Conclusioni e sviluppi futuri Sviluppi futuri Bibliografia 88 iii

8

9 Elenco delle figure 1 Legge di Moore Campi di utilizzo della tecnologia FPGA Architettura di una FPGA LUT a 4 bit Slice con 2 LUT Schema di un IOB Interconnessione diretta Interconnessione di tipo segmentata Disposizione dei dispositivi nella modalitá Master Serial Programmazione daisy chain Circuito di verifica JTAG Organizzazione dello spazio di indirizzamento Header di tipo 1 e di tipo Struttura della word per il Frame Address Register Strumenti software per la realizzazione di hardware riconfigurabile Codice VHDL per un semplice Flip Flop Edge Triggered Schematico di un circuito elettrico Macchina a stati finiti Simulazione funzionale con ModelSIM Suddivisione del chip in moduli fissi e riconfigurabili Implementazione fisica del Bus Macro v

10 2.8 FPGA Editor per la riconfigurabilitá dinamica parziale Utilizzo di PARBIT per la rilocazione spaziale dinamica Flusso di esecuzione di PARBIT Formato del bitstream parziale in caso di reset del dispositivo Esempio di esecuzione di PARBIT per la rilocazione Sistema JBits Flusso di JPG Flusso di esecuzione Diagramma delle classi di BAnMaT Flusso di sviluppo a spirale Modellazione UML dei casi d uso Seqeunce diagram Sequence diagram per BAnMaT Light Modello di riferimento Vincoli di integritá referenziale e modello della base di dati Rappresentazione schematica dell architettura di BAnMaT Light Diagramma a stati per BAnMaT Light Modello di esecuzione Screenshots da BAnMaT Board di sviluppo per FPGA XVP BAnMaT Light Risultati sperimentali per BiRF

11 Elenco delle tabelle 1.1 Esempio di generatore di funzioni a 4 bit Registri di configurazione di una Virtex II Pro Principali comandi di configurazione Valori del registro IDCODE API del tool JRTR Vantaggi e svantaggi Esecuzione di BAnMaT Bitstream utilizzati Risultati per BAnMaT Light vii

12

13 Introduzione Il lavoro di tesi qui proposto ha due tipi di obiettivi: obiettivi generali e obiettivi specifici. Per quanto riguarda gli obiettivi generali, lo scopo é quello di ampliare le funzionalitá di BAnMaT, un tool software per l analisi e la manipolazione dei bitstream per la riconfigurazione parziale dinamica, sviluppato all interno del contesto DRESD, progetto di ricerca sulla riconfigurabilitá dinamica con dispositivi FPGA. All interno di questo obiettivo si vuole creare una semplice interfaccia grafica per facilitare il compito dell utente, creare una base di dati contenente le informazioni circa i dispositivi utilizzati e, ultimo ma non meno importante, creare una versione per PowerPC di BAnMaT, BAnMaT Light; quest ultimo verrá utilizzato per la manipolazione on line dei bitstream nell ottica della rilocazione dinamica dei core hardware implementati sul chip. Negli ultimi decenni i circuiti integrati, conosciuti anche con il termine chip, hanno rispettato il tasso di crescita definito empiricamente dalla legge di Moore (Figura 1 fonte: La legge di Moore é di fondamentale importanza nel campo dei sistemi digitali in quanto prevede come ogni diciotto mesi il numero di transistori integrabili nei chip raddoppi. Questo periodico tasso di crescita si affianca tra l altro ad un aumento in termini di prestazioni e capacitá, ma anche in un aumento in termini di costi e dissipazione di potenza. L esponenziale crescita dei dispositivi integrabili in un unico wafer di silicio ha portato i costruttori mondiali a porre come obiettivo principale di progetto non tanto la densitá dei transistori, garantita dalla legge di Moore, quanto la capacitá di risposta alla 1

14 Introduzione Figura 1: Legge di Moore crescente domanda in termini di applicazioni: sempre piú i termini cardine negli obiettivi primari di un azienda sono l adattamento alle esigenze personali (customizzazione) e il tempo di consegna. Il primo termine indica la possibilitá, da parte del consumatore, di configurare un dispositivo in base alle proprie necessitá, senza dover interagire direttamente con il processo di fabbricazione del dispositivo; questa possibilitá permette ai dispositivi logici programmabili di avere un netto abbassamento dei costi di mascheratura (costi di NRE, Non Recurrency Engineering). Con il secondo termine indichiamo il lasso di tempo richiesto per porre un prodotto sul mercato, dal momento in cui viene progettato al momento in cui viene rilasciato. Una soluzione alla crescente richiesta di customizzazione si trova nei dispositivi logici programmabili, che rappresentano un buon compromesso tra costi e funzionalitá previste. Il rapido sviluppo dei suddetti dispositivi e il loro facile utilizzo ne fanno dei prodotti altamente integrabili in progetti di ampio raggio. Molti sono i campi interessati nell utilizzo di logiche programmabili con riferimento anche ai sistemi embedded. Sul mercato troviamo un ampio spettro da cui attingere per la scelta del dispositivo da utilizzare. In commercio esistono soluzioni quali CPLD, PAL, PLA e FPGA che si accostano alle piú classiche ASIC, che rappresentano il termine comparativo per 2

15 Introduzione i costruttori leader nel settore. I dispositivi FPGA sono costituiti da un insieme di celle logiche su cui implementare le funzionalitá desiderate. L utilizzo di questi integrati é molteplice, in quanto la loro versatilitá ne permette un uso in moltissimi campi (come mostrato di seguito in Figura 2). Le FPGA rappresentano un valido compromesso tra la versatilitá e la flessibilitá dei dispositivi di tipo general purpose e l efficienza e le alte prestazioni dei dispositivi ad applicazione specifica, come gli ASIC gate array. La caratteristica piú importante di una FPGA consiste nella loro capacitá di riconfigurazione, che puó avvenire un numero illimitato di volte; inoltre, é possibile riversare su uno stesso dispositivo differenti moduli di logica, che possono essere anche indipendenti tra loro. Figura 2: Campi di utilizzo della tecnologia FPGA Le ultime generazioni di FPGA poi consentono di riconfigurarsi a tempo di esecuzione, mentre cioé il dispositivo stesso é ancora in esecuzione. Proprio per queste caratteristiche i chip permettono la realizzazione della riconfigurazione dinamica parziale, su cui si basa l intero lavoro qui esposto. Tra i principali svantaggi derivanti dall utilizzo di FPGA troviamo l elevato tempo di preparazione nella fase di test, in quanto ogni dispositivo deve essere 3

16 Introduzione dettagliatamente configurato prima dell effettiva sintesi; in questo modo la quota parte di tempo utilizzata per il test vero e proprio risulta una piccola parte rispetto all intero processo di configurazione: infatti il tempo di programmazione di un dispositivo é direttamente proporzionale alla lunghezza (in byte) del file bitstream di configurazione. Nel primo capitolo viene presentata l architettura dei dispositivi utilizzati durante il lavoro di tesi qui presentato, la loro scomposizione in registri di configurazione, il loro modello a matrice e le interfacce verso l esterno e tra i moduli interni.. Il secondo capitolo tratta il contesto teorico della riconfigurabilitá dinamica, illustrandone i concetti principali, i pregi e le motivazioni che spingono alla sua realizzazione. Il terzo capitolo tratta gli strumenti software che oggi esistono per la riconfigurazione parziale, presentando tool quali PARBIT, JBits, JRTR e JPG. Nel quarto capitolo viene presentato BAnMaT, le sue caratteristiche principali, le sue funzionalitá e la metodologia di progettazione e realizzazione. Il quinto capitolo pone invece l attenzione sulla versione leggera di BAn- MaT, BAnMaT Light, utile per l alterazione on line dei bitstream per la rilocazione dinamica dei moduli all interno del dispositivo. L importanza di BAnMaT risiede nell approccio che fornisce alla riconfigurazione dei moduli all interno di un sistema hardware su FPGA: utilizzo della meotodologia small bit manipulation per la rilocazione di interi core hardware (o IP Core). Il sesto capitolo presenterá i risultati sperimentali ottenuti in laboratorio, dove sono stati effettuati i test su scheda, e le necessarie considerazioni riguardo agli stessi. Per finire, nel settimo capitolo vengono tratte le conclusioni circa l intero lavoro svolto e vengono presentati possibili estensioni future di BAnMaT con il linguaggio di mark up XML per la gestione dell architettura dei core hardware. 4

17 Capitolo 1 Architettura e configurazione di una FPGA Virtex II Pro In questo capitolo verrá presentata l architettura di una FPGA rifacendoci al dispositivo utilizzato in laboratorio per il presente lavoro di tesi: una Xilinx FPGA Virtex II Pro. Nella prima parte del capitolo verranno analizzate le caratteristiche di tale dispositivo, la sua architettura e la modalitá di gestione dello spazio indirizzabile mediante l utilizzo di registri di configurazione. Nella parte successiva verrá invece introdotta la metodologia di programmazione di un dispositivo FPGA. 1.1 Tecnologia FPGA FPGA é l acronimo di Field Programmable Gate Array, una tecnologia di circuiti integrati che appartiene alla classe dei dispositivi logici programmabili dall utente (PLD, Programmable Logic Devices). Come espresso nell introduzione, le FPGA rappresentano un valido strumento per la realizzazione di sistemi hardware, grazie all elevata versatilitá che le caratterizza; sono utilizzate in gran misura per la fase di prototipazione e permettono, in fase di test del dispositivo, di superare i limiti imposti dalle simulazioni effettuate con i comuni calcolatori elettronici. Un altra importante caratteristica 5

18 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro che le riguarda é la capacitá di ospitare su un singolo dispositivo differenti applicazioni. 1.2 Xilinx Virtex II Pro FPGA In questa sezione analizzremo le caratteristiche di una FPGA Virtex II Pro prodotta da Xilinx: ne verranno analizzate l architettura, i tipi di blocchi logici che la compongono e i principali elementi che ne caratterizzano la memoria. L architettura di una generica FPGA é schematizzabile tramite Figura 1.1: Architettura di una FPGA un array bidimensionale costituito da blocchi di diversa entitá (in Figura 1.1 ne vediamo una rappresentazione schematica). Questi blocchi sono di diverso tipo ed ognuno di essi mette a disposizione dell utente determinate funzionalitá e determinate risorse di interconnessione e di logica. Cosí, ad esempio, i blocchi perimetrali di input/output permettono l interfacciamento del dispositivo con l ambiente esterno e la comunicazione da e verso lo stesso. Ogni blocco logico é collegato con i blocchi adiacenti tramite risorse di interconnessione locali e con gli altri blocchi tramite risorse di interconnessione globali. 6

19 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Configurable Logic Block I blocchi logici configurabili (CLB Configurable Logic Block) rappresentano il cuore del dispositivo in quanto contengono le celle in cui caricare la logica del sistema che vogliamo implementare. Sono costituiti da piú unitá logiche di base, le celle logiche, costituite a loro volta da un circuito specifico per la generazione di funzioni, Flip Flop e circuiti ausiliari per la generazione delle somme e dei riporti. Il generatore di funzioni varia in genere, dal punto di vista implementativo, da costruttore a costruttore: per quanto riguarda la Xilinx é costuito dalla cosiddetta LUT, acronimo di Look up table. Una Figura 1.2: LUT a 4 bit LUT a N ingressi ed un uscita é sostanzialmente una tabella con 2 N righe e N +1 colonne. Inserendo i valori desiderati é possibile realizzare una qualsiasi funzione a N ingressi, indipendentemente dalla sua complessitá. In Figura 1.2 é riportato un esempio di LUT a 4 bit, mentre la Tabella 1.1 rappresenta un semplice esempio di generatore di funzioni. L utilizzo di LUT a 4 bit permette il miglior compromesso tra area occupata, potenza dissipata, numero di funzioni implementabili e complessitá in termini di sintesi logica. Le LUT sono in genere raggruppate per formare le slice; di norma il loro numero in una slice é un multiplo di 2, e nel caso specifico delle Virtex II Pro (Figura 1.3) una slice é costituita proprio da 2 LUT, 2 Flip Flop e una serie di multiplexer per la cortocircuitazione delle linee di ingresso con quelle d uscita. 7

20 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro IN[0] IN[1] IN[2] IN[3] OUT Tabella 1.1: Esempio di generatore di funzioni a 4 bit Input/Output Block I blocchi di input/output (IOB) coprono perimetralmente l intero dispositivo e permettono l interfacciamento del dispositivo con l ambiente esterno. Questi blocchi sono necessari affinché il dispositivo possa comunicare con l ambiente circostante, che puó essere costituito da un ulteriore sistema hardware. Ogni blocco di input/output puó essere configurato come gate di ingresso, di uscita oppure come porta bidirezionale su cui inviare e ricevere i dati. Di seguito viene riportato lo schema di un IOB. 8

21 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Figura 1.3: Slice con 2 LUT Risorse di interconnessione La comunicazione tra i moduli all interno di uno stesso dispositivo avviene attraverso delle linee di connessione locali (piú corte) e globali (che coprono l intera area del chip). Esistono due diversi tipi di interconnessione, diretta e segmentata. I dispsitivi Xilinx adottano la tecnica di interconnessione segmentata. Interconnessione diretta Questa tipologia prevede un set di linee di connessione disposte in gerarchia e che coprono l intera area del dispositivo. Ogni modulo (cella logi- 9

22 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Figura 1.4: Schema di un IOB ca) immette sul canale adiacente le informazioni da inviare. Il problema di questa tipologia é la presenza di linee di connessione a corto raggio per la comunicazione locale tra moduli adiacenti, il che si traduce in un aumento sfavorevole in termini di dissipazione di potenza della lunghezza totale delle connessioni. Interconnessione di tipo segmentata Per quanto concerne la tecnica di connessione segmentata, si utilizzano ancora connessioni disposte in gerarchia, ma collegate grazie a delle matrici di interruttori (chiamate switch matrix) che permettono di ridurre la lunghezza totale delle interconnessioni ed eliminano le corte linee locali tra i moduli adiacenti. Inoltre l utilizzo di connessioni globali permette l eliminazione (in parte) di sfasamenti nella distribuzione del segnale, come per esempio per quanto riguarda il clock che é il segnale a piú elevato fan out e che quindi deve essere particolarmente osservato. Esistono quattro tipologie di linee nella tecnica segmentata, che rispecchiano la struttura gerarchica del 10

23 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Figura 1.5: Interconnessione diretta Figura 1.6: Interconnessione di tipo segmentata modello: long line collegamenti a bassa capacitá, per segnali ad alta frequenza; una CLB ogni sei é collegata a questa linea; hex line collega una CLB ogni tre; double line collega una CLB ogni due; la flessibilitá aumenta rispetto alle long line; direct line connessione diretta da una CLB a quelle direttamente adiacenti. 11

24 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro 1.3 Configurazione del dispositivo La configurazione di un dispositivo FPGA avviene tramite il caricamento su dispositivo di un file binario, chiamato bitstream, che contiene tutte le informazioni necessarie per allocare la logica desiderata sul dispositivo. In questa sezione verrá analizzata la struttura di tale file e verrá presentata le modalitá di configurazione di un dispositivo e la modalitá di gestione dello spazio di memoria tramite i registri di configurazione. La configurazione di una Virtex II Pro puó avvenire in 5 differenti modalitá: Master Serial Slave Serial Mastrer SelectMAP Slave SelectMAP Boundary Scan La modalitá di programmazione Master Serial prevede la configurazione del dispositivo in modo seriale, scrivendo cioé un bit per ciclo di clock, prelevando i dati di configurazione da una memoria esterna (tipicamente una memoria programmabile, PROM ), come mostrato in Figura 1.7. Un evoluzione di questa metodologia consiste nella modalitá Slave Serial che permette la configurazione attraverso risorse esterne, quali microprocessori, oppure in modalitá daisy chaining. Quest ultima prevede l utilizzo di ulteriori dispositivi FPGA (la Virtex II Pro supporta le famiglie Spartan II, Virtex, Virtex E, Spartan IIE, Virtex II, Virtex 4 e Spartan 3) che vengono configurati in modo alternato: il sistema di configurazione é suddiviso in stadi ed ogni stadio utilizza come dati di configurazione gli output dello stadio precedente. In Figura 1.8 é riportato un esempio di configurazione in daisy chaining utilizzando un dispositivo Xilinx Virtex II Pro come Master e un dispositivo Xilinx FPGA (generico) come Slave. L interfaccia di programmazione SelectMAP é 12

25 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Figura 1.7: Disposizione dei dispositivi nella modalitá Master Serial un interfaccia bidirezionale ad 8 bit. Nel caso di Slave SelectMAP é possibile effettuare sia la configurazione che il readback dal dispositivo, utilizzando il clock di configurazione (CCLK) come input; nella modalitá Master (CCLK come output) é realizzabile solamente la configurazione. L utilizzo della modalitá di Boundary Scan, infine, prevede l adozione delle specifiche JTAG (da Join Test Action Group, gruppo responsabile nello sviluppo dello standard) per la configurazione: questo standard garantisce l integritá dei singoli componenti e delle interconnessioni a livello di scheda madre. I dispositivi che sono abilitati per la configurazione tramite Boundary Scan comprendono circuiti di logica dedicati (vedi Figura 1.9) per testare le connessioni tra i dispositivi. Il processo di configurazione avviene in 4 fasi distinte: la prima fase, preliminare, consiste nel resettare la memoria di configurazione, pulendo la logica implementata prima dell inizio del processo. In questa fase i blocchi perimetrali di input/output sono inibiti, ponendone lo stato a tri state (alta impedenza). Successivamente i pin di configurazione diventano attivi e il 13

26 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Figura 1.8: Programmazione daisy chain processo di configurazione vero e proprio puó essere avviato. La terza fase inizia con il reset del checksum per il calcolo dell integritá del bitstream; il controllo ciclico di ridondanza é automatico nelle Virtex II Pro (opzione Auto CRC) ed é processato alla fine di ogni scrittura e prima della fase di start up. L ultima fase prevede il caricamento su dispositivo del file di configurazione, e la successiva esecuzione della FPGA Memoria di configurazione La memoria di configurazione di una Virtex II Pro é rappresentata in Figura L intera area di memoria é schematizzabile con un vettore, costituito da colonne larghe un bit e alte l intera area del dispositivo, chiamate frame. I frame rappresentano la piú piccola parte di memoria che si possa leggere o scrivere e sono raggruppati a formare un insieme di colonne logiche di diverso tipo; 6 sono le tipologie di colonne che possiamo trovare: colonne per il clock globale (GCLK); colonne CLB; colonne di input/output (IOB); colonne di interconnessione dell input/output (IOI); 14

27 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Figura 1.9: Circuito di verifica JTAG colonne di memoria, suddivise a loro volta in: 1. BlockRAM Content 2. BlockRAM Interconnect Ogni singolo dispositivo ha a disposizione: un unico blocco per la distribuzione del clock globale, posto su un lato del dispositivo, 2 colonne di input/output poste ai lati sinistro e destro comprendenti principalmente blocchi logici perimetrali (IOB), un numero di colonne di memoria BRAM che é pari al numero di colonne fisiche BRAM presenti sul dispositivo (e che, quindi, variano da FPGA a FPGA), 2 colonne IOI per la configurazione dei blocchi IOB sulla parte sinistra e destra del dispositivo ed infine un insieme di colonne di tipo CLB costituite da blocchi logici configurabili e da blocchi IOB all estremitá superiore ed inferiore della colonna stessa. L indirizzamento avviene grazie ad un accesso gerarchico al contenuto: ogni colonna all interno dell area di memoria é dotata di un indirizzo univoco, il Major Address (MJA), ed ogni frame in ogni colonna é dotato di un indirizzo univoco chiamato Minor Address (MNA). 15

28 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Figura 1.10: Organizzazione dello spazio di indirizzamento Struttura di un bitstream La parte fondamentale nella comprensione della configurazione di un dispositivo risiede nella struttura del bitstream. In seguito ci rifaremo alla struttura standard dei bitstream secondo le specifiche fornite da Xilinx in [6] e riguardanti i dispositivi Virte II Pro, ma in genere la struttura di tale file é standardizzata e vale anche per altre famiglie di dispositivi Xilinx. Il file di configurazione é composto da una sequenza di parole di 32 bit. Le parole sono di due tipi: header e data. Le prime costituiscono il preambolo e comunicano alla macchina a stati interna alla FPGA quale sará il comando successivo che dovranno effettuare; le vere e proprie informazioni sono invece contenute nelle parole di tipo data. Un header puó essere di due tipologie: Figura 1.11: Header di tipo 1 e di tipo 2 Header Type 1 e Header Type 2. La prima tipologia contiene cinque campi: 16

29 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Type indica il tipo di header: 001 per il primo tipo e 010 per il secondo tipo; OP indica il tipo dell operazione da effettuare: 01 per la lettura e 10 per la scrittura; Register Address costituito da 17 bit, contiene il valore binario dell indirizzo del registro di configurazione preposto al comando; Reserved valore costante, riservato per padding; Word Count contiene il valore, in notazione binaria, del numero di parole che seguono l header. Se é impostato a 0 (decimale) significa che ci si aspetta un header di second tipo. Un header di secondo tipo é necessario quando le parole che seguono l header sono maggiori o uguali al valore 4096 (decimale) Registri di configurazione L accesso alla memoria avviene tramite dei registri, utilizzati direttamente per la configurazione del dispositivo. Esistono diversi registri, ognuno gestore di una parte della logica e della memoria del dispositivo. I registri di configurazione, i loro acronimi e gli indirizzi in binario sono presentati in Tabella 1.2. Cyclic Redundancy Check (CRC) Contiene il checksum calcolato sull intero bitstream. Il checksum é un valore intero utilizzato per la verifica dell integritá dei dati all interno del processo di configurazione della FPGA. Il controllo viene effettuato comparando il checksum calcolato tramite algoritmi ad hoc (per esempio circuiti quali CRC 16 per controlli con checksum a 16 bit) e un valore precalcolato contenuto nel registro stesso; se i due valori coincidono, allora il bitstream risulta valido e puó essere considerato corretto, altrimenti la periferica si porta in uno stato di errore. 17

30 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Registro Modalitá di accesso Indirizzo binario CRC R/W 0000b FAR R/W 0001b FDRI W 0010b FDRO R 0011b CMD R/W 0100b CTL R/W 0101b MASK R/W 0110b STAT R 0111b LOUT W 1000b COR R/W 1001b MFWR W 1010b FLR R/W 1011b KEY W 1100b CBC W 1101b IDCODE W 1110b Tabella 1.2: Registri di configurazione di una Virtex II Pro 18

31 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Frame Address Register (FAR) Si puó considerare come un puntatore al frame corrente, memorizzando i due campi che univocamente determinanto il byte all interno dell area programmabile: MJA, MNA. L impostazione del FAR avviene con la parola rappresentata in Figura 1.12, in cui sono evidenziati i campi che lo costituiscono. Per quanto riguarda il Block Type, assume il valore in base al tipo di blocco che stiamo indirzzando (CLB oppure RAM). Figura 1.12: Struttura della word per il Frame Address Register Frame Data Input Register (FDRI) É utilizzato per caricare i dati nel dispositivo. É costituito da uno registro a scorrimento in cui é caricato il dato prima di essere effettivamente salvato sulla FPGA. Frame Data Output Register (FDRO) Permette la lettura dei dati di configurazione, un processo chiamato readback. Command Register (CMD) Questo registro contiene i comandi per controllare le operazioni di configurazione, le operazioni di lettura/scrittura e alcuni segnali globali. Ogni comando ha un preciso scopo; la Tabella 1.3 riporta i comandi principali. 19

32 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Comando di configurazione WCFG MFWR RCFG START RCRC AGHIGH Descrizione Utilizzato per scrivere i dati di configurazione al registro FDRI Utilizzato per la scrittura di un frame Serve per leggere i dati contenuti nel FDRO Inizializzazione Comando per resettare il registro CRC Usato prima di una riconfigurazione, evita collisioni nella creazione dei dati Tabella 1.3: Principali comandi di configurazione Control Register (CTL) É costituito da tre bit, utili per la definizione delle impostazioni di sicurezza, per la persistenza di configurazione e per la gestione dei pin di I/O. Mask Register (MASK) Rappresenta la maschera per la scrittura di dati al registro di controllo (CTL). Status Register (STAT) In questo registro vengono memorizzate le informazioni riguardanti lo stato di configurazione del dispositivo, in particolare per quanto concerne lo stato dei Flip Flop, dei moduli RAM e lo stato del checksum (segnala errori nel CRC). 20

33 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Legacy Output Register (LOUT) Necessario quando la configurazione avviene su una piattaforma multi FPGA, collegate in daisy chaining (seriale). Configuration Option Register (COR) Viene usato per la scelta di determinate opzioni di configurazione. Multiple Frame Write Register (MFWR) Questo registro é utilizzato quando é richiesta una compressione del bitstream, cosí da ridurne la dimensione e, di conseguenza, il tempo di lettura da parte del dispositivo. Quando uno o piú frame hanno identici dati di configurazione, il registro MFWR puó essere utilizzato per la memorizzazione di questi dati; successivamente seguiranno scritture multiple in diversi indirizzi utilizzando il contenuto di questo registro come parametro di configurazione. Frame Length Register (FLR) La configurazione del dispositivo necessita di informazioni riguardanti il dispositivo stesso. Questo registro memorizza il valore della lunghezza del frame, in termini di parole da 32 bit. In questo calcolo non viene contata la parola di pad, utilizzata per la realizzazione della pipeline. Initial Key Address Register (KEY) Indica il numero di chiavi utilizzate per criptare il bitstream, utilizzando l algoritmo DES. Non esiste la possilbitá di accesso in lettura a questo registro, ma solo la modalitá in scrittura. Cipher Block Chaining Register (CBC) Immagazzina il valore delle chiavi di crittografia DES. 21

34 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Dispositivo XC2VP2 XC2VP4 XC2VP7 XC2VP20 XC2VPX20 XC2VP30 XC2VP40 XC2VP50 XC2VP70 XC2VPX70 XC2VP100 IDCODE 0x x0123E093 0x0124A093 0x x x0127E093 0x x0129E093 0x012BA093 0x018BA093 0x012D6093 Tabella 1.4: Valori del registro IDCODE Device ID Register (IDCODE) Questo registro contiene i codici identificativi per ogni dispositivo ed é utilizzato per verificare la consistenza del bitstream con il dispositivo scelto per la configurazione: il preambolo di ogni bitstream infatti contiene i codici del dispositivo target della configurazione. In Tabella 1.4 sono riportati i principali valori del registro per determinati dispositivi Xilinx Virtex II Pro. 1.4 Conclusioni In questo capitolo si é voluta presentare la tecnologia FPGA e le caratteristiche che la contraddistinguono. Il loro studio si é reso indispensabile per la comprensione delle metodologie e del flusso di progetto utilizzati con dispositivi quali le FPGA. L attenzione é stata posta prima sulla struttura fisica dei chip e conseguentemente sui registri di configurazione costituenti i dispositivi e sull organizzazione del file di configurazione del dispositivo. 22

35 Capitolo 1. Architettura e configurazione di una FPGA Virtex II Pro Questo capitolo é stato utile, quindi, nello studio preliminare dei dispositivi nell ottica dell implementazione di BAnMaT Light. 23

36

37 Capitolo 2 Riconfigurabilitá dinamica In questo capitolo vengono introdotti gli aspetti teorici che stanno alla base della riconfigurazione dinamica. Dapprima verranno presentate le nozioni di riconfigurazione parziale, totale, esterna ed interna e successivamente l attenzione verrá spostata verso gli approcci seguiti dalla Xilinx: stile basato sui moduli e stile basato sulle differenze. 2.1 Introduzione Le applicazioni su dispositivi FPGA possono prevedere un unica configurazione oppure possono essere utilizzate in modo tale da caricare sul dispositivo in momenti diversi diverse configurazioni. In questo contesto distinguiamo tra due tipologie di applicazioni: quelle riconfigurabili a tempo di compilazione (Compile Time Reconfigurable, CTR) e quelle riconfigurabili dinamicamente, a tempo di esecuzione (Run Time Reconfigurable, RTR). In questo ultimo caso si parla di riconfigurazione dinamica. 2.2 Motivazioni Un aspetto di notevole importanza nell utilizzo delle FPGA consiste nella possibilitá di utilizzarle per la prototipazione rapida di sistemi hardware: se 25

38 Capitolo 2. Riconfigurabilitá dinamica in passato era preferibile una soluzione ASIC, dettata dalla maggior densitá in termini di componenti logici, oggi si preferisce ricorrere all utilizzo di dispositivi riconfigurabili in cui é possibile allocare e deallocare determinate zone del chip, aumentando di conseguenza la flessibiltá del sistema stesso. La riconfigurazione che avviene dinamicamente, in particolare, permette di eliminare l overhead computazionale che si avrebbe nel caso in cui risultasse necessario resettare l intero sistema per caricare la nuova logica sul dispositivo. Questo si traduce in una riduzione dei costi e della tempistica di riconfigurazione, in quanto evita la necessaria riallocazione di risorse di memoria e di interconnessioni. I dispositivi per i quali é possibile effettuare la configurazione una o piú volte, appartengono al configurable computing, e si contrappongono al fixed computing, specifici per una determinata applicazione (come gli ASIC Gate Array). Nella fattispecie, ci riferiremo a questo contesto parlando appunto di sistemi riconfigurabili dinamicamente ralizzati tramite logiche programmabili (FPGA nel nostro caso). 2.3 Definizioni Esistono due approcci per l implementazione di applicazioni riconfigurabili dinamicamente: si parla di riconfigurabilitá totale quando l intera logica di un dispositivo é soggetta al cambiamento; in questo caso é molto elevato l overhead di riconfigurazione, in quanto é maggiore lo sforzo di riconfigurazione rispetto alla riconfigurazione stessa. Con il termine riconfigurabilitá parziale ci si riferisce invece alla riconfigurazione di una sola parte del dispositivo. Un ulteriore classificazione avviene in base al posizionamento dell agente che effettua la riconfigurazione: riconfigurabilitá interna se l FPGA in esame lavora sia come soggetto che come oggetto della riconfigurazione e riconfigurabilitá esterna invece se esiste un sistema esterno che svolge il lavoro sul modulo in questione. 26

39 Capitolo 2. Riconfigurabilitá dinamica 2.4 Flusso di sviluppo per FPGA La programmazione di una FPGA avviene utilizzando un linguaggio ad alto livello quale per esempio il VHDL (acronimo ricorsivo di: VHSIC Hardware Description Language, dove VHSIC sta per Very High Speed Integrated Circuit) o il Verilog. La programmazione, cosí come l intero flusso di progettazione, non esula dall aderenza ad un solido processo di sviluppo, un work flow. Nel caso di logiche programmabili quali FPGA il processo seguito deve tener conto della natura del progetto stesso: cosí, a titolo di esempio, un sistema riconfigurabile modulare dovrá essere implementato adottando una metodologia specifica, quale l approccio modulare definito da Xilinx. Il flusso di sviluppo completo é il seguente: 1. design entry 2. simulazione funzionale 3. sintesi translation partitioning place and route bitstream generation 4. simulazione di timing 5. downloading Nella seguente sezione verrá analizzato ogni singolo passo. In Figura 2.1 sono indicati i principali strumenti software utilizzati nelle varie fasi del processo di sviluppo. 27

40 Capitolo 2. Riconfigurabilitá dinamica Figura 2.1: Strumenti software per la realizzazione di hardware riconfigurabile Design entry Questa fase consiste nella descrizione del sistema utilizzando 3 possibili strumenti: i linguaggi ad alto livello, i diagrammi di stato o i cosiddetti schematici. L utilizzo di linguaggi ad alto livello (vedi Figura 2.2) prevede la descrizione dello hardware in termini algoritmici, definendo l architettura del sistema, i moduli che la costituiscono e le connessioni tra i core hardware. Questo tipo di descrizione puó avvenire a diversi livelli di astrazione: descrizione behavioural, a carattere piú algoritmico; descrizione RTL, Register Transfer Logic, in cui il sistema é visto come un flusso di dati tra registri ed infine una descrizione strutturale, costituita dalla connessione di molteplici blocchi logici di base (che in questa fase e con questo livello di dettaglio sono trattati come Black Box). La descrizione tramite diagrammi di stato, invece, permette tipicamente l utilizzo di una macchina a stati finiti che definisca il comportamento del sistema in risposta a determinati input forniti al sistema stesso. Infine, uno schematico é una foto del sistema con blocchi logici o librerie di blocchi logici (Figura 2.3) 28

41 Capitolo 2. Riconfigurabilitá dinamica Figura 2.2: Codice VHDL per un semplice Flip Flop Edge Triggered Si noti che questa fase é completamente indipendente dalla tecnologia di dispositivo su cui andrá caricato il sistema Simulazione funzionale La simulazione funzionale (ottenuta con strumenti software di simulazione quali Modelsim) ha lo scopo di valutare l aderenza comportamentale del circuito logico descritto nella fase precedente rispetto alle funzionalitá desi- Figura 2.3: Schematico di un circuito elettrico 29

42 Capitolo 2. Riconfigurabilitá dinamica Figura 2.4: Macchina a stati finiti derate. La simulazione funzionale avviene utilizzando un vettore di test che racchiuda il maggior numero possbile di scenari di esecuzione. Un esempio di simulazione funzionale é rappresentato in Figura 2.5. Figura 2.5: Simulazione funzionale con ModelSIM Sintesi Questa fase si suddivide in ulteriori sotto passi. É una fase critica in quanto effettua il binding tra la tecnologia usata e la descrizione del progetto. Il primo passo é chiamato translation, una validazione del codice (descrizione del circuito logico) a livello di pin di connessione, spazio dei nomi e dal punto di vista logico. La translation é di fondamentale importanza nella 30

43 Capitolo 2. Riconfigurabilitá dinamica validazione della descrizione del progetto. Successivamente viene effettuata una descrizione in termini di gate (partitioning): il risultato é una visione del sistema come un insieme di blocchi logici interconnessi tra loro, di cui conosciamo solamente le interfacce di ingresso e uscita. La fase di place and route prevede un arduo compito algoritmico da parte del sistema di sviluppo per mappare sul dispositivo i blocchi in cui il progetto é partizionato e per connetterli secondo le specifiche e i vincoli imposti dall utente stesso (vincoli di piedinatura e di area). Il file di configurazione ora puó essere generato con tutte le informazioni necessarie per il corretto funzionamento della logica su dispositivo (fase di bitstream generation) Simulazione di timing Questa rappresenta la simulazione e la verifica elettrica del circuito, in quanto é effettuata a valle del processo di sintesi e quindi puó effettare il test (usando lo stesso vettore di test utilizzato per la simulazione di tipo funzionale) tenendo in considerazione la tecnologia implementativa ed il suo modello elettrico e funzionale. La simulazione di timing permette la verifica delle tempistiche del circuito, come per esempio la massima frequenza di funzionamento dello stesso, andando a valutare i percorsi critici dei dati e del segnale (globale) di sincronismo Downloading Consiste nel caricamento dei dati di programmazione specifici del progetto nella FPGA. Il dispositivo é inserito in una scheda apposita che interfaccia l FPGA con un comune computer desktop o laptop. Il download puó avvenire utilizzando una delle interfacce che la scheda mette a disposizione. É possibile ricorrere all utilizzo di interfacce seriali, parallele oppure é possibile anche usufruire di connessioni Ethernet in ambito di una configurazione remota. 31

44 Capitolo 2. Riconfigurabilitá dinamica 2.5 Architetture riconfigurabili dinamicamente Vediamo ora come é possibile effettuare quanto detto precedentemente in termini pratici. Esistono due approcci per la realizzazione della riconfigurazione parziale, come espresso da Xilinx in [3]: l approccio basato sui moduli (module based) e l approccio basato sulle differenze (difference based) Riconfigurazione parziale module based Adottando la metodologia basata sui moduli per la progettazione e lo sviluppo di hardware riconfigurabile, occorre tener in considerazione alcuni precisi vincoli strutturali sui blocchi costituenti il sistema che andremo a sintetizzare su scheda. La riconfigurazione parziale basata sui moduli si basa sulla metodologia di progettazione modulare proposta da Xilinx (modular design) costituita da tre fasi progettuali: 1. fase initial: creazione del file UCF (User Constraints File) contenente i vincoli progettuali; 2. fase active: ogni singolo modulo del sistema viene implementato effetuando il Place and Route; 3. fase assemble: viene creato il design completo. Nella prima fase viene effettuata la mappatura dell area del dispositivo FPGA occupata dai moduli. I moduli devono rispettare i seguenti vincoli: la larghezza minima del modulo deve essere multipla di 4 slice (da un minimo di 4 ad un massimo pari all intera area del dispositivo); il modulo deve occupare verticalmente l intera area del dispositivo. Viene inoltre effettuata la mappatura dei blocchi di input e output (IOB) che appartengono necessariamente all area del modulo riconfigurabile che li 32

45 Capitolo 2. Riconfigurabilitá dinamica Figura 2.6: Suddivisione del chip in moduli fissi e riconfigurabili contiene. Infine viene creata una mappa della logica globale del sistema. La fase active si occupa del place and route di tutti i moduli che vengono implementati separatamente, ma nel rispetto dei vincoli imposti dal file UCF. Per ogni modulo riconfigurabile deve aver luogo una fase di questo tipo, per la generazione dei bitstream. L ultima fase permette la ricombinazione dei moduli per formare l architettura completa, partendo dal place and route dei singoli moduli precedenti, cosí da mantenerne le prestazioni prima definite. La riconfigurazione parziale realizzata secondo lo stile basato sui moduli richiede la definizione di distinte porzioni del chip, porzioni fisse e riconfigurabili (come mostrato in Figura 2.6). Le proprietá che i moduli riconfigurabili devono avere sono le seguenti: il modulo riconfigurabile deve coprire verticalmente l intera area del dispositivo; la dimensione dei moduli deve essere di un minimo di 4 slice, e deve incrementare con passi di 4 slice per volta, fino alla massima estensione dell area dell integrato; 33

46 Capitolo 2. Riconfigurabilitá dinamica tutte le risorse che appartengono alla colonna comprendono slice, buffer tri state, blocchi RAM, moltiplicatori, blocchi di input/output ed infine tutte le risorse di interconnessione tra moduli; la colonna che porta il clock globale non fa parte del modulo riconfigurabile, in quanto i segnali di sincronismo hanno bitstream separati; i blocchi di input/output che fanno parte della colonna (o delle colonne) del modulo, sono parte del modulo riconfigurabile, e possono cosí essere utilizzate per interfacciarsi con l esterno; se un modulo riconfigurabile occupa la parte sinistra (o destra) del chip, tutti i blocchi di input/output posizionati sulla parte sinistra (o destra) fanno parte del modulo stesso; il numero di moduli riconfigurabili deve essere quanto piú possibile minimizzato, per evitare problemi legati alla complessitá di progettazione; idealmente il numero di moduli riconfigurabili deve essere 1, ma in linea teorica il numero massimo é dato da: max = numero slice 4 i confini del modulo riconfigurabile vanno decisi a priori (a tempo di compilazione) e non possono essere modificati durante l esecuzione; la comunicazione tra i moduli riconfigurabili avviene grazie ad una particolare istanza di bus, il Bus Macro. Questo particolare tipo di bus é fisicamente implementato con 8 buffer tri state, con il quale le informazioni possono viaggiare sulla linea in modo bidirezionale. 34

47 Capitolo 2. Riconfigurabilitá dinamica Figura 2.7: Implementazione fisica del Bus Macro Riconfigurazione parziale difference based La riconfigurazione parziale basta sulle differenze puó avvenire a due diversi livelli: un livello chiamato front end ed uno chiamato back end. Nel primo caso le modifiche del progetto vengono effettuate a livello di codice HDL (Hardware Description Language) o di schematico; in questo caso il progetto deve essere risintetizzato e reimplementato su scheda. Nel secondo caso, invece, le modifiche vengono fatte al file NCD, contenente le informazioni di routing e della logica, utilizzando per esempio tool quali FP- GA Editor e BitGen, il quale permette la generazione dei bitstream richiesti che andranno a modificare solamente la parte di modulo richiesta. Questa operazione é molto veloce, in quanto i bitstream differenza sono generalmente sempre piú piccoli dei bitstream completi di configurazione Approccio DRESD Il presente elaborato di tesi é stato sviluppato nel Laboratorio di Microarchitetture, a valle del corso Progetto di Reti Logiche A, nel contesto di DRESD, un ambito di ricerca che svolge studi approfonditi sul problema della riconfigurazione e della riconfigurabilitá dinamica e sulla progettazione di 35

48 Capitolo 2. Riconfigurabilitá dinamica Figura 2.8: FPGA Editor per la riconfigurabilitá dinamica parziale hardware riconfigurabile. DRESD é l acronimo di Dynamic Reconfigurability (in) Embedded System Design. L approccio seguito da DRESD nell affrontare la tematica della riconfigurazione non rientra in nessuna definizione, in quanto quello che si cerca di fare é trovare i pro e i contro relativi alle differenti metodologie di porgettazione di hardware riconfigurabile: riconfigurazione parziale, dinamica, basata sulle differenze o sui moduli. Questo avviene per dimostrare la potenzialitá di ogni metodologia e per rispondere alle molteplici domande che sorgono in questo campo. L approccio seguito da DRESD, inoltre, si configura concretamente in un progetto hardware chiamato Caronte, un architettura riconfigurabile basata su dispositivi Xilinx FPGA. 2.6 Conclusioni La tematica centrale del capitolo é stata la riconfigurazione dinamica parziale. Dopo aver introdotto le definizioni di riconfigurazione dinamica, parziale e totale, sono state presentate le metodologie e gli approcci per 36

49 Capitolo 2. Riconfigurabilitá dinamica la realizzazione di tale riconfigurazione. Nella parte finale del capitolo é stato introdotto l approccio seguito da DRESD nel quale é stato sviluppato il presente lavoro di tesi. 37

50

51 Capitolo 3 Strumenti software per la riconfigurabilitá In questo capitolo verranno introdotti gli strumenti applicativi esistenti utilizzati per la realizzazione della riconfigurazione dinamica. Questi consentono la creazione e la manipolazione dei bitstream parziali. Verranno analizzati gli applicativi PARBIT, JBits, l estensione JRTR a quest ultimo ed infine JPG. Esistono sostanziali differenze tra i tool proposti, in quanto applicativi come PARBIT permettono la realizzazione diretta della riconfigurazione dei bitstream, mentre JBits e JRTR rappresentano un insieme di specifiche di interfaccia (API Application Program Interface) da utilizzare in ambienti di sviluppo quali Java per la riconfigurazione parziale. 3.1 PARBIT PARBIT é uno strumento software, interamente scritto in C, che supporta la generazione dei bitstream parziali per dispositivi Xilinx di tipo Virtex e Virtex E. PARBIT effettua l elaborazione di due bitstream completi, uno chiamato original che contiene le informazioni circa il modulo riconfigurabile e l altro (target) che contiene la logica statica. Dall elaborazione dei due file ne risulta 39

52 Capitolo 3. Strumenti software per la riconfigurabilitá un bitstream differenza, contenente i dati relativi al modulo riconfigurato. La caratteristica fondamentale del tool é la capacitá di manipolare i bitstream che poi possono essere utilizzati per la riconfigurazione parziale della FPGA. Un esempio é rappresentato in Figura 3.1, in cui si nota l utilizzo di PAR- BIT come strumento per la rilocazione dei moduli (o IP Core) all interno di dispositivi FPGA. Figura 3.1: Utilizzo di PARBIT per la rilocazione spaziale dinamica Modello di esecuzione Esistono 3 differenti modalitá di esecuzione, definite dai parametri impostati dall utente: Slice mode, in questa modalitá l utente specifica una slice contenente una o piú colonne CLB. Il file di output generato da PARBIT contiene queste colonne, nella stessa posizione in cui si trovano nel file originario; Block mode, l utente seleziona un blocco di memoria all interno del chip, imposta la nuova locazione fisica tramite i parametri MJA e MNA ed il tool provvede alla generazione del bitstream parziale contenente il core hardware selezionato; questo file verrá poi utilizzato per riconfigurare il dispositivo; BIP mode, l utente sceglie di estrarre e rilocare un intero IP Core. 40

53 Capitolo 3. Strumenti software per la riconfigurabilitá Altre opzioni disponibili sono le seguenti: arresto del chip, é possibile stabilire se il chip debba essere spento prima della riconfigurazione; porta di configurazione, l utente puó selezionare il tipo di porta da utilizzare per il caricamento del file di configurazione su dispositivo: JTAG oppure SelectMAP; modalitá side, in questo caso é possibile definire quale lato (destro o sinistro) del dispositivo riconfigurare, avendo l accortezza di definire una struttura modulare nel progetto. In Figura 3.2 é riportato il flusso di esecuzione del tool. La fase di inserimento dei parametri permette la verifica della consistenza e della correttezza della lista di opzioni inserita dall utente ed inoltre abilita una prima lettura del file originario per la verifica della coerenza con il dispositivo scelto, utilizzando le informazioni contenute nel preambolo del bitstream. Una volta verificata tale correttezza segue la fase di scrittura della testata (write header) del bitstream: viene creato il file di output inserendo l header originario a cui sono state apportate delle modifiche, come l inserimento del conteggio dei byte che compongono il bitstream stesso. Il tool effettua il calcolo del valore dell indirizzo MJA per ogni colonna CLB del file parziale. Questo valore verrá poi utilizzato per la scrittura del registro FAR. Il calcolo viene effettuato seguendo le equazioni disponibili in [4] per dispositivi Virtex e Virtex E. La fase successiva é quella della copia delle colonne CLB dal file originario a quello parziale di output: per ogni blocco PARBIT calcola il valore dell indirizzo di colonna e lo scrive nel registro FAR. Nel caso in cui l utente avesse selezionato il parametro per la modalitá blocco, il tool apre un secondo bitstream parziale (il target) dove copia le parole costituenti il blocco prescelto. Prima della scrittura del checksum per la correttezza e la consistenza degli errori, l applicazione scrive la parte finale del bitstream, la coda (write trailer), specificando la dimensione del file di configurazione. Il valore caricato nel registro CRC viene calcolato iterativamente da quando 41

54 Capitolo 3. Strumenti software per la riconfigurabilitá Figura 3.2: Flusso di esecuzione di PARBIT 42

55 Capitolo 3. Strumenti software per la riconfigurabilitá viene resettato il CRC all inizio del bitstream fino all ultima parola di dati scritta. Per quanto riguarda l opzione di esecuzione BIP, PARBIT consente di selezionare all interno del bitstream originario un IP Core, un modulo hardware, rendendo possibile la sua rilocazione all interno del dispositivo stesso oppure in FPGA differenti. La rilocazione avviene in due fasi successive: dapprima l estrazione dell IP Core avviene selezionando la logica e scrivendo la stessa su di un file di configurazione parziale; in seguito vengono modificati i valori degli indirizzi di colonna e di frame per poter dare luogo alla riconfigurazione parziale. Questo tipo di opzione é molto potente, ma presenta degli inconvenienti: occorre infatti stare bene attenti alla posizione relativa dei Bus Macro e alla dimensione della nuova area di configurazione (deve essere la stessa di quella occupata dall IP Core) Formato del bitstream parziale Il bitstream parziale generato da PARBIT ha due formati, dipendenti dalla presenza o meno della sequenza di spegnimento del dispositivo. Nel caso in cui l utente avesse selezionato l opzione di shutdown prima della configurazione, prima della vera e propria sequenza di dati di configurazione vengono inserite le parole per il reset del dispositivo: 4 parole da 32 bit dal valore (esadecimale) 0x0; in Figura 3.3 questa sequenza é evidenziata in rosso Design flow Il design flow di PARBIT dipende fortemente dai vettori di parametri inseriti dall utente. Nella modalitá slice l utente deve solamente selezionare le colonne di inizio e di fine del sistema che deve essere riconfigurato: é importante notare che in questo caso i blocchi di input/output cambiano in accordo con i vincoli di progetto. Nel caso di esecuzione blocco, occorre definire 3 variabili: dimensione dell area riconfigurabile in termini di colonne CLB; 43

56 Capitolo 3. Strumenti software per la riconfigurabilitá Figura 3.3: Formato del bitstream parziale in caso di reset del dispositivo dimensione dell area riconfigurabile in termini di righe CLB; la nuova locazione fisica dell area riconfigurabile. Con queste variabili il tool é in grado di effettuare la rilocazione del modulo in un area riconfigurabile, come su richiesta dell utilizzatore. Si veda la Figura 3.4 per una schematizzazione del problema. Il vantaggio derivante da PARBIT é la possibilitá di combinare differenti bitstream per la creazione di un file di configurazione parziale che possa essere effettivamente utilizzato per impostare il dispositivo. Uno svantaggio risiede invece nell assenza di supporto a dispositivi che non siano Xilinx Virtex o Virtex E e a colonne di tipo differente dalle CLB (IOB oppure RAM). 44

57 Capitolo 3. Strumenti software per la riconfigurabilitá Figura 3.4: Esempio di esecuzione di PARBIT per la rilocazione 3.2 JBits Un differente tool per il supporto alla riconfigurabilitá dinamica é rappresentato da JBits. A differenza di PARBIT, JBits é un insieme di interfacce di programmazione che supportano la lettura, l alterazione e la scrittura dei bitstream per dispositivi Xilinx Virtex e Xilinx XC4000. Le funzionalitá di JBits sono 4: la lettura e la scrittura dei bitstream, l interrogazione riguardo lo stato di una particolare risorsa programmabile e la possibiltá di impostare lo stato di tale risorsa. Il sistema JBits é suddiviso in livelli logici architetturali, come mostrato in Figura 3.5. Al centro del sistema si trova il programma Java (scritto dall utente) che permette l utilizzo delle funzioni delle librerie di JBits. Le chiamate a queste funzioni si tramutano nella manipolazione dei bitstream e nella scrittura di dati su LUT o Flip Flop. In realtá ogni invocazione di funzione si traduce in una o piú chiamate a livello Bit Level Interface (BLI): qui vengono letti, scritti o modificati i bit del file di input. L importanza del livello BLI risiede nella sua capacitá di astrazione dallo specifico dispositivo FPGA: l assenza di questo livello porterebbe alla necessaria allocazione di un supporto per ogni singolo dispositivo. La classe Bitstream permette un astrazione del flusso di bit che compone il file binario. Per poter gestire correttamente il processo di lettura (readback) e scrittura del dispositivo le API di JBits si interfacciano con il software XHWIF e con le librerie Core 45

58 Capitolo 3. Strumenti software per la riconfigurabilitá Figura 3.5: Sistema JBits Library che comprendono un set di componenti logici di base (macrocelle) quali sommatori, moltiplicatori, sottrattori oppure multiplexer. Questi core sono utilizzabili dall utente e rilocabili all interno del sistema FPGA. Lo svantaggio principale derivante dall utilizzo di JBits é la necessaria comprensione della struttura a basso livello del dispositivo, in quanto il modello di FPGA utilizzato ha un basso livello di astrazione. L utilizzo di JBits inoltre si rivela utile per progetti di piccole dimensioni, ma per sistemi complessi é utilizzato come interfaccia con altri componenti software. 3.3 JRTR JBits é uno strumento potente e flessibile, poiché mette a disposizione dell utente un interfaccia ben definita di chiamate a funzioni che permettono la lettura, la scrittura e la modifica dei file bitstream, ma allo stesso tempo JBits richiede una profonda conoscenza dell architettura del dispositivo e allo stesso tempo non permette la realizzazione della riconfigurazione parziale. A quest ultimo problema trova la soluzione un altro tool, JRTR. Java Run Time Reconfigurator (JRTR), integrato totalmente nel sistema JBits, permette la modifica di piccole parti della configurazione dei dispositivi Virtex senza dover interrompere l esecuzione. JRTR é costituito 46

59 Capitolo 3. Strumenti software per la riconfigurabilitá Metodo parse( ) get( ) clearpartial( ) clearfull( ) writeclbcache( ) getclbcache( ) Descrizione legge i bitstream e cerca comandi di readback e di scrittura genera bitstream parziali o totali per colonne CLB o BlockRAM sospende la riconfigurazione parziale sospende la riconfigurazione forza la scrittura restituisce un puntatore all attuale flusso di configurazione Tabella 3.1: API del tool JRTR principalmente da 6 metodi, presentati in Tabella 3.1. L integrazione di JRTR con JBits permette di utilizzare il primo per l analisi dei dati di configurazione (tenendo traccia delle modifiche effettuate) e il secondo per la lettura e la scrittura del bitstream. JRTR permette anche di effettuare il processo di readback; solitamente questo processo viene utilizzato per la lettura delle informazioni riguardanti lo stato dei Flip Flop o dei blocchi di memoria RAM. 3.4 JPG Un altro tool, usato per la generazione dei bitstream parziali, é JPG (Java Partial Generator). É un programma Java che ben si inserisce all interno del flusso di progettazione proposto da Xilinx. Per questo motivo le informazioni circa il bitstream parziale da generare vengono catturate dagli strumenti CAD esistenti forniti da Xilinx stessa. Il flusso completo di esecuzione di JPG é riportato in Figura 3.6. Il processo per la creazione dei bitstream parziali é diviso in due fasi: nella prima fase viene creato il progetto base per cui dovranno poi essere generati i bitstream 47

60 Capitolo 3. Strumenti software per la riconfigurabilitá Figura 3.6: Flusso di JPG 48

61 Capitolo 3. Strumenti software per la riconfigurabilitá parziali. Occorre cioé seguire il normale flusso di progettazione utilizzando gli strumenti forniti da Xilinx appartenenti alla classe delle Xilinx Foundation Tools (XFT). Vengono generati i moduli costituenti il sistema e viene generato il bitstream completo per il progetto di base. Successivamente, i moduli con cui é partizionato il sistema vengono analizzati e ne vengono create delle versioni che poi sono utilizzate dal tool stesso per la creazione dei bitstream differenza. In questa seconda fase viene modificato nelle funzionalitá il core desiderato riallocandolo poi nella stessa posizione in cui si trovava originariamente e procedendo poi al completamento della fase di place and route che porta alla creazione del file NCD (file binario contenente le informazioni circa le connessioni) e del file di UCF contenente i vincoli di progetto definiti dall utente. 3.5 Conclusioni Lo scopo di questo capitolo era quello di focalizzare l attenzione sullo stato dell arte per quanto riguarda i tool software per la realizzazione della riconfigurazione dinamica parziale. Nella prima parte del capitolo sono stati presentati i tool PARBIT e JBits, sostanzialmente differenti tra loro, e successivamente sono stati introdotti JRTR e JPG. Poiché l attenzione era da incentrare sulle peculiaritá di ogni tool, di seguito riportiamo una tabella riassuntiva e, successivamente, delle considerazioni a riguardo. Come si nota dalla tabella che riporta una veloce comparazione tra gli strumenti software introdotti nel capitolo, la riconfigurzione dinamica non é sempre totalmente supportata dai tool; infatti gli strumenti introdotti permettono sí una riconfigurazione del dispositivo, ma limitata a determinati e ben specifici dispositivi Xilinx Virtex oppure Virtex E. Lo scopo del presente lavoro di tesi é anche quello di realizzare un tool che permetta la riconfigurazione per differenti dispositivi FPGA e permetta la riconfigurazione in maniera piú facile e veloce, senza dover necessariamente richiedere un approfondita conoscenza dell architettura dei dispositivi che si utilizzano. BAnMaT viene 49

62 Capitolo 3. Strumenti software per la riconfigurabilitá Tool Vantaggi Svantaggi PARBIT permette rilocazione dinamica; gestione bitstream multipli; solo Virtex e Virtex E; i bitstream modificati possono solo colonne CLB; essere usati per la riconfigurazione parziale; JBits applicazioni definite dall utente; progetti di piccole dimensioni; comunicazione con l hardware; supporta solamente Virtex; classe Bitstream per la gestione no riconfigurazione del flusso di bit; dinamica parziale; JRTR supporto alla riconfigurazione eredita alcuni difetti totalmente integrato con JBits da JBits; JPG integrazione con flusso di solo dispositivi Virtex; sviluppo di Xilinx; integrato con gli strumento XFT; dell architettura del dispositivo; Tabella 3.2: Vantaggi e svantaggi presentato nel prossimo capitolo. 50

63 Capitolo 4 BAnMaT In questo capitolo viene presentata la modalitá di progettazione seguita per l estensione di BAnMaT. Nella prima parte viene introdotto il tool, indicandone le principali funzionalitá e le motivazioni che hanno spinto alla sua realizzazione; successivamente viene presentato il flusso di progettazione adottato, con particolare riferimento al modello di sviluppo del software a spirale ed infine vengono analizzate le scelte progettuali e le tecnologie utilizzate per la sua realizzazione. 4.1 BAnMaT BAnMaT é un tool di supporto alla progettazione di sistemi riconfigurabili realizzati tramite FPGA. Il presente lavoro di tesi si concentra sull estensione di alcune funzionalitá del software e sull analisi di vantaggi e svantaggi derivanti l utilizzo di un software per la riconfigurabilitá dinamica. In particolare verrá analizzato l utilizzo del tool per la rilocazione spaziale dei core hardware all interno dell area del chip Perché BAnMaT Nell ottica della gestione di un progetto complesso é utile avere a disposizione strumenti software che permettano una rapida lettura della configu- 51

64 Capitolo 4. BAnMaT razione di un dispositivo in un qualsiasi istante e che permettano una facile manipolazione del bitstream. Gli strumenti software presentati nel Capitolo 3 presentano vantaggi e svantaggi, in particolare rifacendoci ai dispositivi supportati e agli approcci adottati per la riconfigurazione. BAnMaT vuole essere un punto di riferimento per la manipolazione e contemporaneamente per la validazione dei bitstream. L utilizzo di BAnMaT e della sua versione ridotta, BAnMaT Light, permette la realizzazione di un framework completo per la riconfigurazione: dall alterazione dei file di configurazione nell ottica della rilocazione dinamica alla validazione del bitstream creato e, successivamente, alla sintesi su scheda tramite i piú comuni strumenti CAD esistenti. 4.2 Introduzione al tool BAnMaT é l acronimo di Bitstream Analysis and Manipulation Tool. La componente principale consiste nella funzione di analisi dei bitstream. L analisi consiste nella lettura dell intero bitstream di configurazione, verificandone la correttezza e la consistenza dei dati che riporta. Questo permette di localizzare eventuali errori del file che non permetterebbero una valida configurazione del chip. L esecuzione di BAnMaT nella prima versione era da linea di comando, dove l utente doveva selezionare le opzioni con le quali lanciare il programma e le operazioni desiderate. Le operazioni che si possono effettuare con il tool sono presentate nella Tabella 4.1. La funzionalitá di parser é implementata tramite una macchina a stati finiti: uno stato iniziale (RESET) prevede l inizializzazione delle variabili allocate e dei contatori; lo stato di FIRST PAD legge il preambolo del bitstream, fino a che non viene trovata la prima parola di padding (dummy word). Nel preambolo il bitstream contiene informazioni riguardanti il dispositivo che stiamo utilizzando: vendor, famiglia del dispositivo, modello dello stesso. Riconosciuta la dummy word la macchina cerca la parola di sincronizzazione (SYNC STATE) che permette la comunicazione dell avvio del processo tra 52

65 Capitolo 4. BAnMaT Parametro Descrizione -h Help -v Version: visualizza la versione del programma -b Bitstream Tool: analizza il bitstream desiderato -f Funcition calculator: calcola coordinate di frame e word nel file -k Legge un frame nel bitstream -c Legge i frame di una colonna CLB -l Legge la CLB LUT word nella posizione specificata -w Scrive la CLB LUT word nella posizione specificata Tabella 4.1: Esecuzione di BAnMaT il sistema che ha effettuato il download del file.bit e la macchina a stati interna all FPGA. Il cuore del parser é costituito da stati che riconoscono i vari registri di configurazione. Per ogni singolo registro sono definite le operazioni da compiere. Al termine, viene riconsciuta la fine del bitstream (END) e l automa si porta in uno stato finale, di accettazione. In Figura 4.1 é riportato il flusso di esecuzione. L approccio di BAnMaT é molto vasto e puó essere usato in diverse modalitá. Infatti BAnMaT permette sia la generazione e la manipolazione dei bitstream parziali, sia la modifica e la lettura della configurazione del chip dai bitstream completi Architettura L architettura di BAnMaT é costituita da un insieme di classi C++ che definiscono il supporto alle funzionalitá di lettura, modifica e scrittura dei bitstream. La classe principale é la classe bitstream file parser che implementa la funzionalitá di parser e che permette all utente di leggere i byte da un frame, indicandone le coordinate. Qualsiasi tipo di operazione é supportata dalla creazione di un file di log contenente le informazioni riguardanti i valori di output del programma; questa funzionalitá é implementata nella classe bitstream tool. BAnMaT vuole essere il piú possibile indipendente 53

66 Capitolo 4. BAnMaT Figura 4.1: Flusso di esecuzione nelle operazioni dal tipo di dispositivo utilizzato, poiché vuole supportare dispositivi Xilinx Virtex, Virtex E e Virtex II Pro. Questo é reso possibile dalla classe FPGA Info che mantiene in memoria le informazioni circa il dispositivo utilizzato. La classe bitstream finder funziona da tramite tra il parser e FPGA Info. La libreria che permette la lettura e la scrittura di LUT nel dispositivo é implementata da Bit LUT. In Figura 4.2 é riportato il diagramma delle classi appena descritte. 4.3 Flusso di progettazione Il flusso di progettazione che é stato seguito tiene conto del software giá esistente al momento dell inizio dei lavori, dei vincoli progettuali e delle finalitá del progetto stesso. Il work flow adottato ha un andamento a spirale, che permette la rivalutazione continua delle scelte effettuate e una costante revisione del lavoro svolto. Nella seguente trattazione partiremo dalla definizione delle funzionalitá di cui dovrá esser dotato il tool. 54

67 Capitolo 4. BAnMaT Figura 4.2: Diagramma delle classi di BAnMaT 55

68 Capitolo 4. BAnMaT Figura 4.3: Flusso di sviluppo a spirale Verifica del software esistente Una fase preliminare é stata la verifica del codice esistente, appoggiandosi anche sulle informazioni contenute in [8]. L analisi del codice e delle funzionalitá giá esistenti al momento dell inizio del presente lavoro di tesi ha permesso la comprensione della struttura del software, dell architettura in termini di classi (un processo chiamato reverse engineering) e la verifica (test e debug) della correttezza delle funzionalitá previste. Inoltre é stato possibile stabilire i primi vincoli di progetto Concezione delle operazioni: casi d uso La scelta di sviluppare BAnMaT porta alla definizione di un insieme di casi d uso, un insieme cioé di possibili modalitá di utilizzo del software da parte dell utente finale. I casi d uso racchiudono l esperienza dell utente e permettono di focalizzare l attenzione sulle funzionalitá che l applicativo esporta. Le funzionalitá principali sono la lettura di un bitstream, la manipolazione di un bitstream e la successiva creazione del bitstream differenza, la validazione 56

69 Capitolo 4. BAnMaT del file di configurazione originario e la validazione del file di configurazione alterato. Tutte queste funzionalitá sono di fondamentale importanza per la definizione del ruolo di BAnMaT all interno della riconfigurabilitá dinamica. In Figura 4.4 é presentato il modello UML per i casi d uso appena introdotti. Legibitstream Mo dificabitstreambanmatlight Gli attori sono di due tipi: attori fisici (l utente finale) e attori logici, che nel caso in esame sono rappresentati da moduli <include> software all interno di BAnMaT stesso. Utente Va lidabitstream < extends> Selezionadispositivo Ag iungidispositivo DBMS Figura 4.4: Modellazione UML dei casi d uso Analizziamo ora in dettaglio ogni caso d uso. la lettura di un bitstream consiste nella lettura di un file binario (.bit) di cui l utente comunica il nome al sistema. Preliminarmente l utente dovrá selezionare il dispositivo utilizzato da una lista, oppure inserirne uno nuovo: questo permette la verifica dei dati presenti nel bitstream con le richieste da parte dell utente stesso: le informazioni riguardo il dispositivo utilizzato infatti sono contenute nel preambolo del bitstream di configurazione. A lettura terminata l utente é informato dei risultati ottenuti, comunicando la presenza di errori e la configurazione del dispositivo in termini di istanza per ogni registro di configurazione; 57

70 Capitolo 4. BAnMaT la manipolazione del bitstream avviene nell ottica della rilocazione dinamica. Quello che si vuole fare é portare ad alto livello le funzionalitá del filtro BiRF ([11]), un filtro hardware che riloca la logica all interno del chip. L utente dovrá solamente selezionare il file bitstream da alterare e la nuova posizione della logica all interno del dispositivo; questa peculiaritá di BAnMaT verrá ripresa in seguito a sottolineare l innovazione introdotta dal tool; la creazione del bitstream differenza avviene in automatico in parallelo alla modifica del bitstream originario; la validazione del file di configurazione avviene in parallelo alla sua lettura Progettazione Nella fase di progettazione vengono utilizzate tutte le informazioni fino a questo punto raccolte: casi d uso, vincoli architetturali, vincoli funzionali e requisiti funzionali. In questo frangente si é progettato un set di possibili scenari di utilizzo del tool, a sottolineare e rimarcare ció che precedentemente era stato definito nei casi d uso. Ovviamente si deve tener conto del software pre esistente e delle funzionalitá in esso rilevate. La progettazione ha come scopo la definizione non ambigua del sistema. Utilizzando il modello (prototipo) di riferimento e i casi d uso UML abbiamo stabilito una visione d insieme del software, come riportato nelle figure seguenti, in cui troviamo i fondamentali sequence diagram Prototipo: il modello di riferimento Il modello di riferimento di BAnMaT é rappresentato in Figura 4.7. Il sistema é suddiviso in piú livelli di astrazione, ognuno dei quali é responsabile di determinate funzionalitá. Ogni livello corrisponde inoltre a componenti all interno del software (ralizzati con classi e paradigma di programmazio- 58

71 Capitolo 4. BAnMaT :Utente:Sistemafrontend:BAnMaTLight :Validante :Parser Figura 4.5: Seqeunce diagram scegli()modificafile() inseriscinomefile() inserisci() segnala() inseriscifar() inserisci() valida() elaborazione() segnala() segnalarisultati() segnalafine() elaborazione() Figura 4.6: Sequence diagram per BAnMaT Light 59

72 Capitolo 4. BAnMaT Figura 4.7: Modello di riferimento ne orientato agli oggetti), che cooperano per la definizione del framework e delle funzionalitá che l utente finale ha a disposizione. Ogni livello é legato funzionalmente e strutturalmente a quelli adiacenti, cosí da creare una solida struttura software. Il primo layer, quello del file system locale, rappresenta la piattaforma su cui poi andrá in esecuzione BAnMaT. É importante sottolineare che lo sviluppo di BAnMaT ha tenuto conto di fattori di interoperabilitá, utilizzando quindi codice C e C++ standard ed evitando chiamate a funzioni proprietarie del file sysytem. Il livello é quello piú basso in astrazione e sta ad indicare i collegamenti ai file presenti sulla macchina e il collegamento agli ambienti grafici, necessari per la realizzazione dell interfaccia grafica. Si noti che non é stato previsto nessun livello che faccia riferimento all hardware sottostante. Il file system permette inoltre la realizzazione di un servizio di connessione a database di tipo relazionali. Il livello DBMS (Database Management System) infatti permette a BAnMaT di collegarsi al server locale del database (MySQL) per effettuare delle semplici interrogazioni: questo permette l estensione del software con informazioni sempre piú aggiornate (dagli utenti stessi). Il framework vero e proprio effettua le connessioni logiche tra le funzionalitá a basso livello, quali l accesso ai file, la scrittura o lettura su o da file e l accesso al database, con le funzionalitá proprie di BAnMaT, quali per esempio la validazione di un file bitstream. Questo livello prevede inoltre, al 60

73 Capitolo 4. BAnMaT Figura 4.8: Vincoli di integritá referenziale e modello della base di dati suo interno, una versione leggera di BAnMaT, chiamata BAnMaT Light e presentata nel capitolo successivo, che gestisce l alterazione dei bitstream. É possibile utilizzare in maniera sinergica le due versioni di BAnMaT; in effetti é possibile effettuare le modifiche desiderate sul file di configurazione del dispositivo con la versione Light e successivamente validarlo con la version Major. Questo permette anche una forte integrazione del tool tra l analisi e la manipolazione dei file. L ultimo livello logico prevede una semplice, ma efficace interfaccia grafica verso l utilizzatore. L utente é cosí facilitato nel compito di scelta delle opzioni e nell inserimento dei parametri di esecuzione richiesti Progettazione della base di dati Come accennato, una piccola base di dati é risultata necessaria per l immissione dei dati riguardanti i dispositivi utilizzati. La progettazione della base di dati ha tenuto conto delle caratteristiche dei dispositivi, siano esse strutturali o fisiche. Infatti, come mostrato in Figura 4.8, la base di dati consta in tre tabelle: 61

74 Capitolo 4. BAnMaT la tabella devices contiene informazioni quali vendor, famiglia e codice del dispositivo; ogni device é univocamente determinato dal suo codice; features invece contiene le informazioni di tipo strutturale di ogni dispositivo: numero di colonne CLB, numero di righe CLB, numero di colonne RAM, spazio indirizzabile (in termini di colonne CLB), lunghezza dei frame (in termini di parole da 32 bit) e codice del package del chip; packages per finire contiene le proprietá fisiche dei package che compongono il chip; le informazioni riportate sono: codice, larghezza, altezza, spessore e numero di piedini per lato dell integrato. Le informazioni sono da interpretare in millimetri Implementazione La fase implementativa ha visto realizzarsi in concreto le scelte progettuali effettuate. Parallelamente a questa fase, vi é la documentazione del codice sorgente. Durante l intera implementazione, come da modello a spirale, le precedenti definizioni di funzionalitá e vincoli sono state sempre e costantemente tenute sotto osservazione Front End grafico Una modifica evidente apportata al tool é stata la creazione di un front end che permetta l utilizzo semplice di BAnMaT. L inserimento delle informazioni richieste dal tool per funzionare, prima inserite da linea di comando, ora avviene grazie a piccole aree di testo presenti sulle schermate. Esempi di screenshot presi dall esecuzione di BAnMaT sono riportati nel Capitolo 6, relativo ai test del software. 62

75 Capitolo 4. BAnMaT Test L ultima fase, prima del rilascio del software, é la fase di test. I dettagli sono presentati nel capitolo 5, che tratta interamente la tipologia di test effettuata, i vettori utilizzati per la verifica e i commenti sui risultati ottenuti Tecnologie utilizzate Sottolineiamo in questa sezione le tecnologie utilizzate per la realizzazione di BAnMaT. Innanzitutto sottolineiamo come la natura modulare del tool abbia portato alla scelta del paradigma ad oggetti. Poiché si vuole avere a disposizione funzionalitá a basso livello per la manipolazione dei bit, necessaria per l implementazione della rilocazione dinamica dei bitstream, si é scelto come linguaggio di programmazione C++: infatti accanto al supporto alla programmazione orientata agli oggetti, ci permette di avere programmi veloci, efficienti utilizzando le caratteristiche piú evidenti del puro C. La base di dati si poggia su MySQL, un sistema di gestione di basi di dati relazionali (RDBMS Relational Database Management System), interogabile con il linguaggio SQL (Standard Query Language). L interfaccia grafica prevede l utilizzo di un estensione alle librerie del C++, le librerie grafiche Qt. Sono librerie completamente object oriented e quindi ben si inquandrano nel facile utilizza previsto per BAnMaT. Per quanto riguarda BAnMaT Ligh, invece, abbiamo utilizzato il C puro, poiché il software é stato poi caricato sul processore PowerPC della scheda di sviluppo per l FPGA (vedere il Capitolo 5 relativo ai test). 63

76

77 Capitolo 5 BAnMaT Light Questo capitolo presenta BAnMaT Light, una versione ridotta di BAn- MaT. La sua funzionalitá consiste nella modifica dei bitstream nell ottica della rilocazione dinamica di moduli all interno del chip. Infatti permette la ridefinizione della locazione del modulo all interno dello spazio configurabile del dispositivo modificando solamente una piccola parte del bitstream di configurazione. 5.1 Rilocazione spaziale dinamica All interno del tema della riconfigurabilitá dinamica riveste un ruolo importante la rilocazione dinamica, che consiste nell alterazione del bitstream in modo tale da ridefinire la locazione fisica dei moduli all interno del dispositivo. Questa puó essere resa in modo dinamico andando a modificare, durante il processo di download del bitstream di configurazione su dispositivo, le informazioni (pochi bit) relative agli indirizzi MJA e MNA nel registro FAR. La rilocazione spaziale riveste un ruolo importante perché permette l utilizzo efficiente della memoria di configurazione e permette la variazione a tempo di esecuzione delle caratteristiche del dispositvo: questo cambiamento dinamico é utile e necessario in caso di un aumento delle richieste di opera- 65

78 Capitolo 5. BAnMaT Light zioni da parte di agenti esterni, siano essi sistemi hardware interfacciati con il chip in esame oppure sistemi software per la lettura dei dati. La rilocazione é cioé utilizzata nel momento in cui la definizione a tempo di compilazione della partizione dello spazio indirizzabile non é realizzabile, in quanto o non si conosce a priori il carico di lavoro richiesto durante l esecuzione oppure, addirittura, non si conoscono a priori l entitá delle operazioni richieste. I problemi legati alla realizzazione della rilocazione fisica dei moduli riguardano soprattutto i vincoli di area. Infatti l allocazione della logica all interno del chip deve tenere conto dei vincoli imposti dalla fisica dell FPGA da una parte e dei vincoli progettuali dall altra, delle interfacce che il modulo utilizza per poter comunicare con l ambiente esterno e delle interconnessioni con i moduli adiacenti; inoltre deve tener conto di vincoli legati alla massima estensione del modulo, in termini di blocchi logici configurabili (CLB) o blocchi di memoria (SelectRAM). BAnMaT Light si colloca in questo contesto come uno strumento software utile nella progettazione di hardware riconfigurabile e come uno strumento per l implementazione della riconfigurabilitá dinamica parziale. La sua validitá é duplice: puó essere utilizzato come strumento on line oppure come strumento off line. Nel primo caso si deve ricorrere all utilizzo, per esempio, su PowerPC dello strumento stesso, in modo tale da riconfigurare dinamicamente direttamente sulla board il bitstream di interesse. In questo caso e come si vedrá nel capitolo successivo di presentazione dei risultati sperimentali é apprezzabile la differenza tra l utilizzo di software e l utilizzo di hardware per la rilocazione (cioé si apprezzeranno le differenze tra BAn- MaT Light e BiRF). Utilizzato come tool off line la sua utilitá é da ricercarsi soprattutto in fase di prototipazione, di test oppure di pianificazione dello spazio configurabile della FPGA. BAnMaT Light é una sorta di particolarizzazione di BAnMaT, una sua istanza, in quanto di questo permette soltanto la manipolazione (parte Ma manipulator dell acronimo) dei file di configurazione. La validazione puó avvenire grazie all utilizzo in cascata di BAnMaT Light e BAnMaT stesso. 66

79 Capitolo 5. BAnMaT Light Figura 5.1: Rappresentazione schematica dell architettura di BAnMaT Light 5.2 Architettura BAnMaT Light é un modulo software totalmente integrato nella versione estesa di BAnMaT. Questa forte integrazione tra i due moduli é utile nell utilizzo congiunto degli stessi. BAnMaT Light é modellizzabile tramite un filtro che riceve in ingresso il bitstream da modificare (il file originario), le informazioni circa la nuova configurazione del dispositivo (i nuovi valori di indirizzo MJA e MNA) e presenta in uscita il file modificato, comunque non alterando il file originario in modo da facilitare la definizione del bitstream differenza nel contesto della riconfigurabilitá dinamica parziale. BAnMaT Light é costituito da una macchina a stati finiti, con funazionalitá di parsing, che riconosce le parole costituenti il bitstream ed agisce di conseguenza. La lettura del bitstream prevede il riconoscimento dei registri di configurazione leggendo parole da 32 bit e cercando le informazioni relative all indirizzo dello specifico registro (nell header). Per ognuno dei registri utili all implementazione della riconfigurazione esiste un operazione ben precisa. 67

80 Capitolo 5. BAnMaT Light Poiché non tutti i registri sono utili per lo scopo preposto dal tool, é utile considerare solamente le parole rilevanti per il suo funzionamento: quelle cioé relative al solo registro FAR; ogni altra parola pone la macchina a stati in configurazione di attesa (IDLE) in cui aspetta l arrivo di parole rilevanti. Lo stato di FAR é suddiviso in due parti: FAR HEADER e FAR DATA. Nel primo caso l automa legge l header del registro FAR, controllando il valore del conteggio delle parole di dati (campo word count) che seguiranno la testata (in genere, 1) e si pone nello stato di attesa per FAR DATA; in questo caso, invece, la macchina a stati effettua le modifiche desiderate dall utente al file di configurazione: nei relativi campi di indirizzo del frame e di colonna scrive i valori stabiliti dall utente. Qui avviene la vera e propria riconfigurazione del dispositivo, nel senso che avviene l alterazione del bitstream. La buona riuscita della riconfigurazione dipende dalla precisione della macchina a stati nella ricerca delle parole e nell aggiornamento dei corretti campi della parola stessa. In Figura 5.2 viene riportato il diagramma a stati, modello di BAnMaT Light Modello di esecuzione Abbiamo accennato nella parte introduttiva all utilizzo duplice di BAn- MaT Light, sottolineando la sua utilitá sia come componente real time che come tool di supporto prevalentemente off line per l alterazione. L utilizzo sinergico di BAnMaT Light con BAnMaT é utile nel caso in cui l alterazione del bitstream necessiti una simultanea validazione del processo e del file stesso. Il modello di esecuzione, riportato nella Figura 5.3, sottolinea proprio questa caratteristica di duplicitá del tool e la sua sinergia con BAnMaT. 5.3 Relazione con BiRF BAnMaT Light si configura come la versione ad alto livello del filtro hardware BiRF[11] (Bitstream Relocation Filter). La differenza piú evidente é l assenza del calcolo del checksum per la ricerca di eventuali errori nel bi- 68

81 Capitolo 5. BAnMaT Light Figura 5.2: Diagramma a stati per BAnMaT Light tstream, ma questo processo viene effettuato a valle dell alterazione del file, in quanto viene istanziata un immagine di BAnMaT per la validazione del file riconfigurato. Lo scopo dell implementazione ad alto livello di BiRF é, quindi, quella di effettuare delle considerazioni riguardo la rilocazione dinamica a livello hardware ed a livello software, cercando di capire vantaggi e svantaggi derivanti da entrambe le soluzioni e cercando di trarre delle conclusioni sull utilizzo di software per la riconfigurabilitá in generale, non solo per la rilocazione dei moduli. Nel capitolo conclusivo vengono descritti i risultati sperimentali di BAnMaT Light e vengono confrontati con l esecuzione di BiRF, per quanto espresso in [11]. 69

82 :Utente invoca() :BAnMaT:BAnMaTLight Capitolo 5. BAnMaT Light scegli_operazione()banmat_light() istanzia() richiedi_informazioni()esegui() risultato() valida() e labora_file() Figura 5.3: Modello di esecuzione 5.4 Conclusioni Tematica centrale del capitolo é stata la presentazione del tool BAn- MaT Light, con particolare attenzione al suo utilizzo come modificatore dei bitstream e generatore del bitstream per la riconfigurazione. Ció che si voleva dimostrare é il nuovo approccio di BAnMaT Light alla rilocazione dinamica dei moduli. Come espresso nei capitoli precedenti riguardo lo stato dell arte dei tool software per la riconfigurabiltiá, l alterazione del bitstream consiste nella lettura dell intero file di configurazione e nella modifica di pochi byte di informazione. La rilocazione spaziale dinamica é un esempio di riconfigurazione dinamica e permette la ridefinizione della posizione fisica su cui andranno sintetizzati i moduli hardware realizzati. L approccio seguito fin ora era rivolto al module based piuttosto che al difference based, ma comunque considerando le due modalitá indipendenti. BAnMaT Light (e, piú in generale, BAnMaT) invece prevede l utilizzo della tecnica di manipolazione di pochi bit (small bit manipulation) nell ottica della riconfigurazione basata sui moduli: infatti l alterazione delle poche informazioni (16 bit) contenute nel registro FAR indirizzo MJA di colonna ed 70

83 Capitolo 5. BAnMaT Light indirizzo MNA di frame permette la rilocazione di un modulo intero, indipendentemente dal tipo di colonna a cui ci rifacciamo ed indipendentemente dalla funzionalitá esportata dal core stesso. 71

84

85 Capitolo 6 Risultati sperimentali I test hanno coperto trasversalmente l intero processo di sviluppo del tool, in maniera tale da trattare i problemi in modo iterativo, e in modo tale da rispettare la specifica della produzione di software a spirale. In questo capitolo verranno presentati i vettori di test utilizzati, i risultati ottenuti e le necessarie conclusioni ai risultati stessi. Nell ultima parte viene presentato un confronto tra i risultati ottenuti via software (con BAnMaT Light) e quelli ottenuti via hardware (con BiRF). 6.1 BAnMaT I test effettuati su BAnMaT sono stati suddivisi in due tipologie: test di tipo funzionale e test di tipo architetturale. I test di tipo funzionale devono dimostrare l effettiva capacitá di analisi del tool. I vettori di test sono essenzialmente costituiti da possibili scenari di utilizzo del software e da possibili casi d uso, cercando di stabilire l aderenza del software alle specifiche informali e formali definite nel Capitolo 4. La seconda tipologia di test, invece, copre la parte rilevante l architettura del software e quindi l insieme delle classi (utile soprattutto in fase di debug) costituenti il software. Le funzionalitá testate dovevano effettivamente rispecchiare i requisiti di progettazione formalizzati con i modelli UML e 73

86 Capitolo 6. Risultati sperimentali Figura 6.1: Screenshots da BAnMaT dovevano rispecchiare quanto descritto in [8]. Per questo scopo sono stati utilizzati diversi bitstream con caratteristiche diverse tra loro per dimensione, dispositivo e numero di parole. Questa serie di dati ha permesso di capire il funzionamento effettivo del tool e di dimostrare l effettiva funzionalitá del software. Per quanto riguarda la seconda tipologia di test, invece, seguono degli esempi di finestre che appartengono alla versione estesa ad interfaccia grafica di BAnMaT. 74

87 Capitolo 6. Risultati sperimentali Figura 6.2: Board di sviluppo per FPGA XVP BAnMaT Light La maggior parte del processo di test é stata coperta dal tool BAnMaT Light, poiché é stato necessario dimostrare l effettiva funzionalitá del tool e la sua efficacia ed efficienza nel contesto della riconfigurabilitá dinamica a minimo overhead di computazione. Infatti i test sono stati effettuati sulla scheda di sviluppo per il dispositivo FPGA Xilinx Virtex2 Pro (rappresentata in Figura 6.2), caricando il software direttamente su PowerPC, come descritto a fondo di seguito Vettori utilizzati I vettori utilizzati per i test del funzionamento del software sono stati differenti bitstream di configurazione, caratterizzati da una particolare dimensione in termini di parole. La dimensione del bitstream, indipendentemente dal contenuto informativo dello stesso, é fondamentale per la costruzione dei risultati e delle considerazioni riguardo la riconfigurabilitá dinamica via 75

88 Capitolo 6. Risultati sperimentali Bitstream File Dimensione [Kbyte] 1 diff1 time.bit 1,450 2 led4.bit 3,140 3 diff4 time.bit 10,610 4 caronte rec.bit 65,910 5 bitstream5.bit 94,120 6 bitstream6.bit 139,680 7 bitstream7.bit 148,790 8 bitstream8.bit 189,560 9 bitstream9.bit 570, bitstream10.bit 1026,890 Tabella 6.1: Bitstream utilizzati software. Infatti i parametri di valutazione ricercati in questa fase sono la dimensione del file (che rispecchia, tra l altro, la complessitá in termini di entitá del sistema hardware), il tempo necessario per la rilocazione degli stessi (che indica al contempo il tempo di lettura del file di configurazione) e il throughput massimo ottenibile, che indica il quantitativo di lavoro sopportabile dal filtro. In Tabella 6.1 sono riportati i bitstream utilizzati per svolgere i test Risultati ottenuti In Tabella 6.2 sono riportati i risultati dei test per quanto rigurada il solo BAnMaT Light. Dalla tabella si ricava che il throughput massimo ottenibile per la rilocazione dinamica via software dei core hardware é di 2,632 Mbyte/s. Questo valore é stato ottenuto sperimentalmente nel seguente modo: thr = dimension latency dove con dimension si intende la dimensione in [Kbyte] del bitstream che viene letto e modificato, e con latency il tempo impiegato in [s] per la let- 76

89 Capitolo 6. Risultati sperimentali Dimensione del file [Kb] Latenza [ms] Throughput [Mbyte/s] 1,450 0,526 2,632 3,140 1,138 2,630 10,610 3,485 2,631 65,910 21,649 2,631 94,120 34,140 2, ,680 50,632 2, ,790 53,970 2, ,560 62,263 2, , ,739 2, , ,295 2,631 Tabella 6.2: Risultati per BAnMaT Light tura di tale file. In Figura 6.3 troviamo la rappresentazione grafica dei test sperimentali ottenuti, relativi a BAnMaT Light. 6.3 Conclusioni Valutando quanto trovato sperimentalmente per BAnMaT Light e verificando i risultati sperimentali ottenuti per il filtro BiRF (facendo riferimento a quanto espressamente riportato in [11]) si ottiene un interessante risultato. Il rapporto tra il throughput massimo ottenibile via software e il throughput massimo ottenibile impiegando un core hardware é molto minore di 1; questo ci fa capire come la rilocazione spaziale sia molto lenta rispetto alla rilocazione via hardware. Di seguito é riportato il grafico (tratto da [11]) con i risultati sperimentali di BiRF, che evidenziano un throughput massimo di 424,80 Mbyte/s. 77

90 Capitolo 6. Risultati sperimentali Figura 6.3: BAnMaT Light Figura 6.4: Risultati sperimentali per BiRF 78

Progettazione di circuiti integrati

Progettazione di circuiti integrati Architetture e Reti logiche Esercitazioni VHDL a.a. 2003/04 Progettazione di circuiti integrati Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari

Dettagli

Tecniche di Progettazione Digitale Logiche programmabili; standard cells; generazione automatica del layout: algoritmi di partitioning p.

Tecniche di Progettazione Digitale Logiche programmabili; standard cells; generazione automatica del layout: algoritmi di partitioning p. Tecniche di Progettazione Digitale Logiche programmabili; standard cells; generazione automatica del layout: algoritmi di partitioning Valentino Liberali Dipartimento di Tecnologie dell Informazione Università

Dettagli

Computer Aided Design. Matteo Montani

Computer Aided Design. Matteo Montani Computer Aided Design Matteo Montani Sommario Gestione di progetti logici complessi Metodologie di progetto (sintesi - verifica) Strategie di implementazione di circuiti digitali - Full custom (layout)

Dettagli

Progettazione di circuiti integrati

Progettazione di circuiti integrati Architetture e reti logiche Esercitazioni VHDL a.a. 2007/08 Progettazione di circuiti integrati Stefano Ferrari UNIVERSITÀ DEGLI STUDI DI MILANO DIPARTIMENTO DI TECNOLOGIE DELL INFORMAZIONE Stefano Ferrari

Dettagli

Embedded and Reconfigurable Systems M 03 Field Programmable Gate Array (FPGA)

Embedded and Reconfigurable Systems M 03 Field Programmable Gate Array (FPGA) Embedded and Reconfigurable Systems M 03 Field Programmable Gate Array (FPGA) Stefano Mattoccia, DISI - University of Bologna 1 Architettura di una FPGA Anche se in questo corso si adotterà una metodologia

Dettagli

Tecniche Analogiche e tecniche Digitali

Tecniche Analogiche e tecniche Digitali Tecniche Analogiche e tecniche Digitali Tecniche Analogiche e tecniche Digitali Da rappresentazione Analogica a Digitale Trattamento dell'informazione Esercizi riepilogativi 2 2005 Politecnico di Torino

Dettagli

Circuiti integrati semi-custom

Circuiti integrati semi-custom Circuiti integrati semi-custom g Gate array gcomponent array gstandard cell g PLD Circuiti integrati semi-custom g Gate array gcomponent array gstandard cell g PLD Introduzione Qualsiasi sistema digitale

Dettagli

METODOLOGIE PROGETTUALI CMOS

METODOLOGIE PROGETTUALI CMOS METODOLOGIE PROGETTUALI CMOS Un sistema elettronico/circuito integrato può essere descritto in tre diversi domini, comportamentale (behavior), strutturale e fisico. All interno di ciascun dominio la descrizione

Dettagli

Giancarlo Rini (rini) FPGA. 29 September 2011

Giancarlo Rini (rini) FPGA. 29 September 2011 Giancarlo Rini (rini) FPGA 29 September 2011 Con questa articolo si vuole dare una breve descrizione dell'architettura interna di una FPGA. Cercare di capire quali sono i pregi e i difetti di questo strumento

Dettagli

Cos è il VHDL. Il VHDL è un linguaggio standard per la descrizione dell hardware

Cos è il VHDL. Il VHDL è un linguaggio standard per la descrizione dell hardware Cos è il VHDL Il VHDL è un linguaggio standard per la descrizione dell hardware E stato introdotto negli anni 80 nell ambito di un progetto del dipartimento della difesa statunitense denominato VHSIC (Very

Dettagli

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13

UML Introduzione a UML Linguaggio di Modellazione Unificato. Corso di Ingegneria del Software Anno Accademico 2012/13 UML Introduzione a UML Linguaggio di Modellazione Unificato Corso di Ingegneria del Software Anno Accademico 2012/13 1 Che cosa è UML? UML (Unified Modeling Language) è un linguaggio grafico per: specificare

Dettagli

Architetture dei Dispositivi Programmabili Avanzati Altera

Architetture dei Dispositivi Programmabili Avanzati Altera Architetture dei Dispositivi Programmabili Avanzati Altera Elettronica dei Sistemi Digitali LA Cesena, 4 Febbraio 2005 Aldo Romani aromani@deis.unibo.it tel. 051 209 3811 Lab. Star-Arces, V.le Pepoli,

Dettagli

Introduzione al Flusso di Progetto di Circuiti e Sistemi Digitali

Introduzione al Flusso di Progetto di Circuiti e Sistemi Digitali Introduzione al Flusso di Progetto di Circuiti e Sistemi Digitali Cristina Silvano Università degli Studi di Milano Dipartimento di Scienze dell Informazione Via Comelico 39/41, I-20135 Milano (Italy)

Dettagli

Lezione E15. Sistemi embedded e real-time

Lezione E15. Sistemi embedded e real-time Lezione E15 Logiche Sistemi embedded e real-time 24 gennaio 2013 Dipartimento di Ingegneria Civile e Ingegneria Informatica Università degli Studi di Roma Tor Vergata SERT 13 E15.1 Di cosa parliamo in

Dettagli

Lezione M1 - DDM

Lezione M1 - DDM Elettronica per le telematica FLUSSO DI PROGETTO DIGITALE TOP - DOWN Specifiche Unità M.: Progettazione Digitale e Linguaggi di Descrizione dell Hardware Progetto e Descrizione di Alto Livello Simulazione

Dettagli

Politecnico di Milano

Politecnico di Milano Politecnico di Milano Riconfigurazione dinamica parziale di FPGA per la correzione di guasti SEU: analisi dello delle Tesi di Laurea di: Stefano Bolli Francesco Bordoni Matr.670361 stefano.bolli@dresd.org

Dettagli

Memorie Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella

Memorie Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella Memorie Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.net Tipi di memorie Possono essere classificate in base a varie caratteristiche:

Dettagli

Logiche programmabili

Logiche programmabili Appendice C Logiche programmabili C.1 Sommario Dopo aver elencato le diverse tipologie di logiche programmabili evidenziandone i principali pregi e difetti si passa ad una descrizione particolareggiata

Dettagli

IL VHDL. Perché si usa un linguaggio di descrizione dell'hardware? Permette di formalizzare il progetto di sistemi digitali complessi

IL VHDL. Perché si usa un linguaggio di descrizione dell'hardware? Permette di formalizzare il progetto di sistemi digitali complessi IL VHDL Cosa è il VHDL? NON è un linguaggio di programmazione! E' uno standard IEEE per la descrizione dell'hardware VHDL: VHSIC Hardware Description Language VHSIC: Very High Speed Integrated Circuit

Dettagli

Capitolo 1 Circuiti integrati digitali. Capitolo 2 L invertitore CMOS. Introduzione

Capitolo 1 Circuiti integrati digitali. Capitolo 2 L invertitore CMOS. Introduzione Indice Introduzione I VII Capitolo 1 Circuiti integrati digitali 1.0 Introduzione 1 1.1 Processo di integrazione CMOS 2 1.2 Caratteristiche elettriche dei materiali 11 1.2.1 Resistenza 11 1.2.1.1 Contatti

Dettagli

Cenni sull architettura del calcolatore

Cenni sull architettura del calcolatore Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Cenni sull architettura del calcolatore Pietro Di Lena - pietro.dilena@unibo.it hard-ware /h :dwe9 r / n. The part of the computer

Dettagli

INTRODUZIONE ALLE LOGICHE PROGRAMMABILI

INTRODUZIONE ALLE LOGICHE PROGRAMMABILI INTRODUZIONE ALLE LOGICHE PROGRAMMABILI TEMA: L DESCRIZIONE: Introduzione al linguaggio VHDL per la descrizione dell hardware e sintesi di un circuito logico. LUOGO: Laboratori Nazionali di Legnaro (PD)

Dettagli

Lezione 1. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata.

Lezione 1. Sistemi operativi. Marco Cesati System Programming Research Group Università degli Studi di Roma Tor Vergata. Lezione 1 Sistemi operativi 4 marzo 2014 System Programming Research Group Università degli Studi di Roma Tor Vergata SO 14 1.1 Di cosa parliamo in questa lezione? È una introduzione generale ai sistemi

Dettagli

Tecnologie dei Sistemi di Automazione

Tecnologie dei Sistemi di Automazione Facoltà di Ingegneria Tecnologie dei Sistemi di Automazione Prof. Gianmaria De Tommasi Lezione 2 Architetture dei dispositivi di controllo e Dispositivi di controllo specializzati Corso di Laurea Codice

Dettagli

Dispositivi Logici Programmabili

Dispositivi Logici Programmabili Dispositivi Logici Programmabili Introduzione ROM (Read Only Memory) PLA (Programmable Logic Array) PAL (Programmable Array Logic) PLA e PAL avanzate Logiche programmabili Sono dispositivi hardware che

Dettagli

SisElnF4 10/01/ /01/ SisElnF DDC/GP/MGG. 10/01/ SisElnF DDC/GP/MGG. Kilby 1958 Texas Instrument (1 Flip-Flop)

SisElnF4 10/01/ /01/ SisElnF DDC/GP/MGG. 10/01/ SisElnF DDC/GP/MGG. Kilby 1958 Texas Instrument (1 Flip-Flop) Ingegneria dell Informazione Obiettivi del gruppo di lezioni F Modulo SISTEMI ELETTRONICI F SISTEMI DI ELABORAZIONE DIGITALE DEI SEGNALI F4 Tecnologie e flussi di progetto» Evoluzione delle tecnologie»

Dettagli

GLOSSARIO. ABEL Advanced Boolean Expression Language. Linguaggio di progettazione per logiche programmabili.

GLOSSARIO. ABEL Advanced Boolean Expression Language. Linguaggio di progettazione per logiche programmabili. GLOSSARIO A ABEL Advanced Boolean Expression Language. Linguaggio di progettazione per logiche programmabili. AHDL Altera Hardware Description Language. Linguaggio di descrizione dell hardware sviluppato

Dettagli

interfacciamento statico e dinamico analisi di interconnessioni, driver e receiver

interfacciamento statico e dinamico analisi di interconnessioni, driver e receiver Elettronica per telecomunicazioni 1 Contenuto dell unità D Interconnessioni interfacciamento statico e dinamico Integrità di segnale analisi di interconnessioni, driver e receiver Diafonia accoppiamenti

Dettagli

Negli ultimi anni il mercato è

Negli ultimi anni il mercato è APPLICAZIONI DSP NELLE FPGA VIRTEX-4 Mariano Severi I dispositivi FPGA Xilinx della serie Virtex-4 consentono di realizzare sistemi DSP a elevate prestazioni grazie all utilizzo dei moduli hardware XtremeDSP

Dettagli

Embedded and Reconfigurable Systems M 03 Bus protocols

Embedded and Reconfigurable Systems M 03 Bus protocols Embedded and Reconfigurable Systems M 03 Bus protocols Stefano Mattoccia, DISI - University of Bologna 1 Protocolli di comunicazione standard - Protocolli per connessioni con periferiche e memorie - 3

Dettagli

Componenti principali

Componenti principali Componenti e connessioni Capitolo 3 Componenti principali n CPU (Unità Centrale di Elaborazione) n Memoria n Sistemi di I/O n Connessioni tra loro Architettura di Von Neumann n Dati e instruzioni in memoria

Dettagli

INdICe. Prefazione XIII. 3 Capitolo 1 Classificazioni e concetti base

INdICe. Prefazione XIII. 3 Capitolo 1 Classificazioni e concetti base INdICe XIII Prefazione 3 Capitolo 1 Classificazioni e concetti base 3 1.1 Sistemi - Un approccio gerarchico 4 1.2 Sistemi basati su componenti programmabili 1.2.1 Concetto di Sistema di Elaborazione, p.

Dettagli

Lezione 22 La Memoria Interna (1)

Lezione 22 La Memoria Interna (1) Lezione 22 La Memoria Interna (1) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Organizzazione della lezione Dove siamo e dove stiamo andando La gerarchia

Dettagli

Run-Time Reconfigurable FPGA

Run-Time Reconfigurable FPGA Run-Time Reconfigurable FPGA Emilio Fazzoletto KTH Royal Institute of Technology emilio.fazzoletto@gmail.com April 18, 2016 Emilio Fazzoletto (KTH) RTR FPGA April 18, 2016 1 / 22 1 Introduzione 2 Campi

Dettagli

Dispositivi per il controllo

Dispositivi per il controllo Dispositivi per il controllo ordini di comando PARTE DI COMANDO PARTE DI POTENZA Controllori monolitici Controllori con architettura a bus Controllori basati su PC informazioni di ritorno PLC (Programmable

Dettagli

Reti logiche A All. Informatici (M-Z)

Reti logiche A All. Informatici (M-Z) Reti logiche A All. Informatici (M-Z) Fabrizio Ferrandi a.a. 2003-2004 Contenuti - Progetto logico di sistemi digitali Metodologie di progetto per la realizzazione dei dispositivi di elaborazione costruire

Dettagli

Reti logiche A All. Informatici (M-Z) Fabrizio Ferrandi a.a

Reti logiche A All. Informatici (M-Z) Fabrizio Ferrandi a.a Reti logiche A All. Informatici (M-Z) Fabrizio Ferrandi a.a. 2003-2004 Contenuti - Progetto logico di sistemi digitali Metodologie di progetto per la realizzazione dei dispositivi di elaborazione costruire

Dettagli

Componenti e connessioni. Capitolo 3

Componenti e connessioni. Capitolo 3 Componenti e connessioni Capitolo 3 Componenti principali CPU (Unità Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro Architettura di Von Neumann Dati e instruzioni in memoria (lettura

Dettagli

TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE

TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE UNITA CAPITALIZZABILI PER LA FIGURA PROFESSIONALE TECNICO SUPERIORE PER L AUTOMAZIONE INDUSTRIALE ISTRUZIONE E FORMAZIONE TECNICA SUPERIORE 73 74 ISTRUZIONE E FORMAZIONE TECNICA SUPERIORE UNITÀ CAPITALIZZABILE

Dettagli

Calcolatori Elettronici

Calcolatori Elettronici Calcolatori Elettronici Cenni sulle memorie Francesco Lo Presti Rielaborate da Salvatore Tucci Clocking q Il segnale di Clock definisce quando i segnali possono essere letti e quando possono essere scritti

Dettagli

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre

Hardware, software e periferiche. Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre Hardware, software e periferiche Facoltà di Lettere e Filosofia anno accademico 2008/2009 secondo semestre Riepilogo - Concetti di base dell informatica L'informatica è quel settore scientifico disciplinare

Dettagli

Costruire memorie ancora più grandi

Costruire memorie ancora più grandi Costruire memorie ancora più grandi Assemblando blocchi di memoria potremmo ottenere memorie ancora più grandi, e così via. Vogliamo ottenere memorie di GBytes! Questo «scala»? Problemi: Numero enorme

Dettagli

Esercitazione di laboratorio n. 2

Esercitazione di laboratorio n. 2 Esercitazione di laboratorio n. 2 Argomento dell esercitazione Progetto di circuiti combinatori. L esercitazione è composta di tre esercizi: progetto di un Full Adder da 1 bit (esercizio 1), e suo riutilizzo

Dettagli

Reti logiche (2) Circuiti sequenziali

Reti logiche (2) Circuiti sequenziali Reti logiche (2) Circuiti sequenziali 1 Un ripasso Algebra booleana: operatori, postulati, identità, operatori funzionalmente completi Circuiti combinatori: tabelle di verità, porte logiche Decodificatore

Dettagli

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni

Componenti principali. Programma cablato. Architettura di Von Neumann. Programma cablato. Cos e un programma? Componenti e connessioni Componenti principali Componenti e connessioni Capitolo 3 CPU (Unita Centrale di Elaborazione) Memoria Sistemi di I/O Connessioni tra loro 1 2 Architettura di Von Neumann Dati e instruzioni in memoria

Dettagli

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX Indice Prefazione Gli Autori Ringraziamenti dell Editore La storia del C XVII XXIX XXXI XXXIII PARTE A Capitolo 1 Computer 1 1.1 Hardware e software 2 1.2 Processore 3 1.3 Memorie 5 1.4 Periferiche di

Dettagli

Reti logiche (2) Circuiti sequenziali

Reti logiche (2) Circuiti sequenziali Reti logiche (2) Circuiti sequenziali 1 Un ripasso Algebra booleana: operatori, postulati, identità, operatori funzionalmente completi Circuiti combinatori: tabelle di verità, porte logiche Decodificatore

Dettagli

Il protocollo RS Introduzione. 1.2 Lo Standard RS-232

Il protocollo RS Introduzione. 1.2 Lo Standard RS-232 1 Il protocollo RS232 1.1 Introduzione Come noto un dispositivo di interfaccia permette la comunicazione tra la struttura hardware di un calcolatore e uno o più dispositivi esterni. Uno degli obiettivi

Dettagli

Architettura dei calcolatori

Architettura dei calcolatori Cos'è un calcolatore? Architettura dei calcolatori Esecutore automatico di algoritmi Macchina universale Elementi di Informatica Docente: Giorgio Fumera Corso di Laurea in Edilizia Facoltà di Architettura

Dettagli

REALIZZAZIONE DI SISTEMI DI ELABORAZIONE NUMERICA DEI SEGNALI. E. Del Re - Fondamenti di Elaborazione Numerica dei Segnali 1

REALIZZAZIONE DI SISTEMI DI ELABORAZIONE NUMERICA DEI SEGNALI. E. Del Re - Fondamenti di Elaborazione Numerica dei Segnali 1 REALIZZAZIONE DI SISTEMI DI ELABORAZIONE NUMERICA DEI SEGNALI E. Del Re - Fondamenti di Elaborazione Numerica dei Segnali 1 CARATTERISTICHE DEGLI ALGORITMI E DEI SISTEMI DI ELABORAZIONE NUMERICA DEI SEGNALI

Dettagli

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica

Il calcolatore. È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica Il calcolatore È un sistema complesso costituito da un numero elevato di componenti. è strutturato in forma gerarchica ogni livello di descrizione è caratterizzato da una struttura rappresentante l organizzazione

Dettagli

PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE TERZA

PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE TERZA PROGRAMMAZIONE DISCIPLINARE PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE TERZA 1. Competenze: le specifiche competenze di base disciplinari previste dalla

Dettagli

DIAGRAMMI TEMPORALI relativi all'esecuzione di una istruzione e agli accessi alla memoria:

DIAGRAMMI TEMPORALI relativi all'esecuzione di una istruzione e agli accessi alla memoria: DIAGRAMMI TEMPORALI relativi all'esecuzione di una istruzione e agli accessi alla memoria: 1 Memoria centrale: è costituita da una sequenza ordinata di registri; ciascun registro è individuato da un indirizzo;

Dettagli

Le memorie Cache n-associative

Le memorie Cache n-associative Le memorie Cache n-associative Prof. Alberto Borghese Dipartimento di Scienze dell Informazione alberto.borghese@unimi.it Università degli Studi di Milano Riferimento Patterson: 5.2, 5.3 1/30 Sommario

Dettagli

Elettronica per le telecomunicazioni 21/05/2004

Elettronica per le telecomunicazioni 21/05/2004 Contenuto dell unità D Elettronica per telecomunicazioni Interconnessioni interfacciamento statico e dinamico Integrità di segnale analisi di interconnessioni, driver e receiver Diafonia accoppiamenti

Dettagli

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi Corso di Calcolatori Elettronici I A.A. 2010-2011 Architettura di un calcolatore: introduzione Lezione 18 Prof. Roberto Canonico Università degli Studi di Napoli Federico II Facoltà di Ingegneria Corso

Dettagli

Architettura di von Neumann

Architettura di von Neumann Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Architettura di von Neumann Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Introduzione Sistemi informativi 2 Introduzione Base di dati Modello dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS 4 6 2007 Politecnico di Torino 1 7 8 9 10 Sistema informatico Nei sistemi informatici,

Dettagli

Architettura hardware

Architettura hardware Architettura hardware la parte che si può prendere a calci Architettura dell elaboratore Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione

Dettagli

Calcolatori Elettronici B a.a. 2004/2005

Calcolatori Elettronici B a.a. 2004/2005 Calcolatori Elettronici B a.a. 2004/2005 RETI LOGICHE: RICHIAMI Massimiliano Giacomin 1 Unità funzionali Unità funzionali: Elementi di tipo combinatorio: - valori di uscita dipendono solo da valori in

Dettagli

UML I diagrammi implementativi

UML I diagrammi implementativi Corso di Laurea Specialistica in Ingegneria Informatica Corso di Ingegneria del Software A. A. 2008 - UML I diagrammi implementativi E. TINELLI I diagrammi implementativi In UML 2.x esistono 3 tipi di

Dettagli

Università di Pisa. Progetto di un moltiplicatore analogico CMOS

Università di Pisa. Progetto di un moltiplicatore analogico CMOS Università di Pisa Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica Tesi di Laurea Specialistica Progetto di un moltiplicatore analogico CMOS Candidato: Marco Sammartano Relatore: Prof.

Dettagli

Memorie a semiconduttore

Memorie a semiconduttore Memoria centrale a semiconduttore (Cap. 5 Stallings) Architettura degli elaboratori -1 Pagina 209 Memorie a semiconduttore RAM Accesso casuale Read/Write Volatile Memorizzazione temporanea Statica o dinamica

Dettagli

Linee di programmazione

Linee di programmazione Ministero dell Istruzione, dell Università e della Ricerca Ufficio Scolastico regionale per il Lazio Istituto Tecnico Industriale A. Pacinotti ISTITUTO TECNICO TECNOLOGICO - LICEO SCIENTIFICO DELLE SCIENZE

Dettagli

LAB2. Realizzare un sommatore ripple carry ad 8 bit con un design entry di tipo schematic

LAB2. Realizzare un sommatore ripple carry ad 8 bit con un design entry di tipo schematic LAB2 Realizzazione di sommatori tramite schematic, core generator, e componenti di libreria Creare un nuovo progetto Per creare un nuovo progetto: 1. Selezionare File -> New Project Nella finestra di dialogo

Dettagli

Corso integrato di Sistemi di Elaborazione. Modulo I. Prof. Crescenzio Gallo.

Corso integrato di Sistemi di Elaborazione. Modulo I. Prof. Crescenzio Gallo. Corso integrato di Sistemi di Elaborazione Modulo I Prof. Crescenzio Gallo crescenzio.gallo@unifg.it Basi di dati: introduzione 2 Introduzione Gestione delle informazioni Basi di dati / DBMS Modello dei

Dettagli

Introduzione al VHDL Lezione 1

Introduzione al VHDL Lezione 1 Introduzione al VHDL Lezione 1 Cristina Silvano Università degli Studi di Milano Dipartimento di Scienze dell Informazione Via Comelico 39/41, I-20135 Milano (Italy) Tel.: +39-2-5835-6306 e-mail: silvano@elet.polimi.it

Dettagli

Settimana n.2. Obiettivi Esecuzione di un programma. Tutorial su CodeBlocks e ambiente di sviluppo.

Settimana n.2. Obiettivi Esecuzione di un programma. Tutorial su CodeBlocks e ambiente di sviluppo. Settimana n.2 Obiettivi Esecuzione di un programma. Tutorial su CodeBlocks e ambiente di sviluppo. Contenuti Linguaggi di programmazione Dati e istruzioni Architettura di un elaboratore Uso del compilatore

Dettagli

Sommario. Modellizzazione Sintassi Classi di Oggetti Tipi di Dati e Operatori Package e Librerie Processi Esempi di codice VHDL VHDL Testbenches

Sommario. Modellizzazione Sintassi Classi di Oggetti Tipi di Dati e Operatori Package e Librerie Processi Esempi di codice VHDL VHDL Testbenches Fondamenti di VHDL Sommario VHDL: premessa e introduzione Modellizzazione Sintassi Classi di Oggetti Tipi di Dati e Operatori Package e Librerie Processi Esempi di codice VHDL VHDL Testbenches Premessa

Dettagli

Porte logiche di base. Cenni circuiti, reti combinatorie, reti sequenziali

Porte logiche di base. Cenni circuiti, reti combinatorie, reti sequenziali Porte logiche di base Cenni circuiti, reti combinatorie, reti sequenziali NOT AND A R A B R OR A R B Quindi NAND o NOR sono complete circuiti con solo porte NAND o solo porte NOR. Reti combinatorie Rete

Dettagli

Premessa. Input /output e gestione dei file. I file e gli stream. Il puntatore al file. 21. I FILE NEL LINGUAGGIO C Versione 1.

Premessa. Input /output e gestione dei file. I file e gli stream. Il puntatore al file. 21. I FILE NEL LINGUAGGIO C Versione 1. Input /output e gestione dei file Premessa Iniziamo la lezione dicendo subito che per INPUT/OUTPUT si intende l insieme delle operazioni di ingresso ed uscita, ossia lo scambio di informazioni tra il programma

Dettagli

Sistemi informativi D B M G. Introduzione. Introduzione alle basi di dati D B M G 2. Elena Baralis 2007 Politecnico di Torino 1

Sistemi informativi D B M G. Introduzione. Introduzione alle basi di dati D B M G 2. Elena Baralis 2007 Politecnico di Torino 1 Sistemi informativi D B M G Introduzione D B M G 2 2007 Politecnico di Torino 1 Introduzione D B M G Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi

Dettagli

Le reti sequenziali sincrone memorizzano il proprio stato in dei FF-D

Le reti sequenziali sincrone memorizzano il proprio stato in dei FF-D Reti Sincrone Le reti sequenziali sincrone memorizzano il proprio stato in dei FF-D Le variabili di stato future sono quelle all ingresso dei FF-D mentre le variabili di stato presente sono le uscite dei

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 Introduzione Basi di dati DB M BG2 Introduzione Base di dati Modello dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS DB M BG4 D B M G6 2007 Politecnico di Torino 1 D B M G7 D B M G8 D B M G9 D B

Dettagli

Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS

Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS 2007 Politecnico di Torino 1 Basi di dati DB M B G Gestione delle informazioni Base di dati Modello dei dati Indipendenza dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS DB M B G 2 2007 Politecnico

Dettagli

Introduzione a HW/SW codesign

Introduzione a HW/SW codesign Introduzione a HW/SW codesign 1 Origini: sintesi dell HW La sintesi logica risulta essere relativamente assestata a partire dagli anni 90 Flusso di progetto: algoritmo => FSM => RTL=> equazioni booleane

Dettagli

Elena Baralis 2007 Politecnico di Torino 1

Elena Baralis 2007 Politecnico di Torino 1 2007 Politecnico di Torino 1 Basi di dati Gestione delle informazioni Base di dati Modello dei dati Accesso ai dati Vantaggi e svantaggi dei DBMS DB M BG2 Gestione delle informazioni Le informazioni sono

Dettagli

Linguaggio macchina e register file

Linguaggio macchina e register file Linguaggio macchina e register file Prof. Alberto Borghese Dipartimento di Scienze dell Informazione borghese@di.unimi.it Università degli Studi di Milano Riferimento sul Patterson: capitolo 4.2, 4.4,

Dettagli

Esame di INFORMATICA ARCHITETTURA DI VON NEUMANN. Lezione 4 ARCHITETTURA DI VON NEUMANN

Esame di INFORMATICA ARCHITETTURA DI VON NEUMANN. Lezione 4 ARCHITETTURA DI VON NEUMANN Università degli Studi di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA A.A. 2008/09 Lezione 4 ARCHITETTURA DI VON NEUMANN Anni 40 i dati e i programmi che descrivono come elaborare i dati possono

Dettagli

Il computer. Il case e l'unità di elaborazione. Il computer, una macchina aggiornabile.

Il computer. Il case e l'unità di elaborazione. Il computer, una macchina aggiornabile. Materia: INFORMATICA Classe 1Q Prof.ssa Mazzi Cinzia IL COMPUTER Hardware e software. Il computer. Il case e l'unità di elaborazione. Il computer, una macchina aggiornabile. Le parti che formano un computer.

Dettagli

INDICE Capitolo I - I dispositivi elettronici. Condizioni operative statiche. 1.1) Introduzione. 1.2) Interruttori ideali e reali.

INDICE Capitolo I - I dispositivi elettronici. Condizioni operative statiche. 1.1) Introduzione. 1.2) Interruttori ideali e reali. INDICE Capitolo I - I dispositivi elettronici. Condizioni operative statiche. 1.1) Introduzione. 1 1.2) Interruttori ideali e reali. 1 1.3) Condizioni operative statiche del transistore a giunzione. 5

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

Architetture dei sistemi elettronici 14. Il microcontrollore

Architetture dei sistemi elettronici 14. Il microcontrollore Architetture dei sistemi elettronici 14. Il microcontrollore Roberto Roncella Schema a blocchi 2 Il core CPU 3 4 Architettura von Neumann Istruzioni Unità Aritmetica Unità di di Controllo Stato Dati B

Dettagli

Architettura dei sistemi di elaborazione: La memoria (parte 2)

Architettura dei sistemi di elaborazione: La memoria (parte 2) Architettura dei sistemi di elaborazione: La memoria (parte 2) La cache è una memoria veloce e di piccole dimensioni posta fra la CPU e la memoria principale. Memoria Cache La cache e la memoria principale

Dettagli

Generazione di Impulsi Digitali. Antonio Affinito

Generazione di Impulsi Digitali. Antonio Affinito Generazione di Impulsi Digitali Antonio Affinito Dove troviamo i segnali digitali? Alcuni esempi: Centralina Auto Monitor LCD Computer Cellulare etc Dove troviamo i segnali digitali? Il generico moderno

Dettagli

Milano. Gli atti dei convegni e più di contenuti su

Milano. Gli atti dei convegni e più di contenuti su Milano Gli atti dei convegni e più di 8.000 contenuti su www.verticale.net : la metodologia per valutare l interconnessione e gli ulteriori requisiti tecnici Relatori: Alessandro Ferrari 19 Aprile 2017

Dettagli

Elettronica per l informatica. Cosa c è nell unità A. Unità A: Bus di comunicazione. A.1 Architetture di interconnessione A.2 Esempi commerciali

Elettronica per l informatica. Cosa c è nell unità A. Unità A: Bus di comunicazione. A.1 Architetture di interconnessione A.2 Esempi commerciali Elettronica per l informatica 1 Cosa c è nell unità A Unità A: Bus di comunicazione A.1 Architetture di interconnessione A.2 Esempi commerciali 2 Contenuto dell unità A Architetture di interconnessione

Dettagli

Corso di Informatica

Corso di Informatica CdLS in Odontoiatria e Protesi Dentarie Corso di Informatica Prof. Crescenzio Gallo crescenzio.gallo@unifg.it Protocolli di trasmissione 2 Introduzione Un protocollo di trasmissione è un insieme di regole

Dettagli

Architettura dei computer

Architettura dei computer Architettura dei computer In un computer possiamo distinguere quattro unità funzionali: il processore la memoria principale la memoria secondaria i dispositivi di input/output 1 Fornisce la capacità di

Dettagli

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Programmi applicativi Un programma applicativo (o applicativo) è un eseguibile che può essere utilizzato dall utente e che ha funzionalità di alto livello (word processor, spreadsheet, DBMS) Univ. Milano-Bicocca

Dettagli

Un quadro della situazione. Lezione 14 Il Set di Istruzioni (2) Dove siamo nel corso. I principi di progetto visti finora. Cosa abbiamo fatto

Un quadro della situazione. Lezione 14 Il Set di Istruzioni (2) Dove siamo nel corso. I principi di progetto visti finora. Cosa abbiamo fatto Un quadro della situazione Lezione 14 Il Set di Istruzioni (2) Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Input/Output Sistema di Interconnessione Registri

Dettagli

Fondamenti di Informatica B

Fondamenti di Informatica B Fondamenti di Informatica B Lezione n.9 Alberto Broggi Gianni Conte A.A. 2005-2006 Fondamenti di Informatica B DESCRIZIONE E PROGETTO A LIVELLO RTL ESEMPIO DI SISTEMA A LIVELLO RTL: IL MOLTIPLICATORE BINARIO

Dettagli

IL PROCESSO di PROGETTAZIONE

IL PROCESSO di PROGETTAZIONE IL PROCESSO di PROGETTAZIONE In questa lezione vedremo: Ruolo della modellazione nella comunicazione tipi di modello nel progetto I modelli del prodotto Interpretazione delle informazioni del progetto

Dettagli

Università degli Studi della Calabria

Università degli Studi della Calabria Università degli Studi della Calabria Facoltà di Scienze Politiche CORSO DI FONDAMENTI DI INFORMATICA I A.A 2007/2008 Docente : Ing. Francesco Folino 1 INFORMAZIONI UTILI 2 Docente: Ing. Francesco Folino

Dettagli

Esercitazione di Elettronica Per la Telematica. Trasmettitore BPSK

Esercitazione di Elettronica Per la Telematica. Trasmettitore BPSK Esercitazione di Elettronica Per la Telematica Proff. C. Abbate, F. Iannuzzo - A.A. 2013/2014 Trasmettitore BPSK In questa esercitazione si realizzerà un trasmettitore BPSK. Il progetto da implementare

Dettagli

Progettazione dell unità di elaborazioni dati e prestazioni. Il processore: unità di elaborazione. I passi per progettare un processore

Progettazione dell unità di elaborazioni dati e prestazioni. Il processore: unità di elaborazione. I passi per progettare un processore Il processore: unità di elaborazione Architetture dei Calcolatori (lettere A-I) Progettazione dell unità di elaborazioni dati e prestazioni Le prestazioni di un calcolatore sono determinate da: Numero

Dettagli

Sistemi a microprocessore

Sistemi a microprocessore Sistemi a microprocessore Programma: Segnali analogici e digitali Uso di segnali digitali per la rappresentazione dei numeri interi La memoria e la CPU I programmi in linguaggio macchina La connessione

Dettagli