REALIZZAZIONE DI UN COMPONENTE PER UN SISTEMA DEDICATO: SVILUPPO DELL ALGORITMO DI CRITTOGRAFIA RC6 A 128 BIT

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "REALIZZAZIONE DI UN COMPONENTE PER UN SISTEMA DEDICATO: SVILUPPO DELL ALGORITMO DI CRITTOGRAFIA RC6 A 128 BIT"

Transcript

1 POLITECNICO DI MILANO FACOLTÀ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA INFORMATICA REALIZZAZIONE DI UN COMPONENTE PER UN SISTEMA DEDICATO: SVILUPPO DELL ALGORITMO DI CRITTOGRAFIA RC6 A 128 BIT Relatore: Correlatore: Prof. Fabrizio FERRANDI Ing. Marco Domenico SANTAMBROGIO Tesi di Laurea di: Diego NICHETTI Matricola n Stefano ORLANDI Matricola n ANNO ACCADEMICO

2 Tesi di Laurea Diego Nichetti e Stefano Orlandi Luglio 2004

3 Alle nostre Famiglie

4 Indice Legenda 1 Introduzione 4 1 Premesse Algoritmi di crittografia RC6 (Rivest Cypher 6) FPGA (Field Programmable Gate Array) Composizione delle FPGA Struttura delle FPGA Componenti delle architetture IBM Core Connect Device Control Register (DCR) Processor Local Bus (PLB) On-Chip Peripheral Bus (OPB) Architettura Scelta del processore Componenti e interconnessioni di un architettura Micro- Blaze Introduzione allo strumento di simulazione hardware Modelsim ISE Descrizione dell algoritmo RC Codice algoritmo di key schedule per RC ii

5 Indice 2.2 Codice algoritmo di crittazione Codice algoritmo di decrittazione Metodologia di progetto Dal codice C alla descrizione VHDL Suddivisione del codice in blocchi Il problema delle variabili e dei segnali I cicli e le operazioni iterate Le procedure e le funzioni Flusso di progetto di un componente VHDL Implementazione dell IP Core Struttura dell IP Core Stesura della descrizione VHDL Descrizione dell IP Core Descrizione del componente rc6 encoder core Sintesi e Place And Route dell IP Core Riconoscimento dei componenti implementati Analisi delle temporizzazioni Occupazione della FPGA Definizione del driver software Struttura del driver Funzioni del driver Test effettuati ed analisi delle prestazioni Test presenti nella specifica RC Altri test Analisi delle prestazioni Conclusioni e lavori futuri 72 Bibliografia 76 iii

6 Elenco delle figure 1.1 Blocchi Logici Configurabili Architetture generali delle FPGA Tipi di blocchi logici delle famiglie Xilinx e Actel Scheda Virtex-II pro Evaluation Board di Avnet Struttura dei LMB L ambiente di sviluppo di ModelSim Finestra principale dell ambiente di simulazione Finestra dei segnali Finestra delle forme d onda Menù delle funzioni di Project Navigator Editor di testo di Project Navigator Codice algoritmo di Key Schedule Codice algoritmo di crittazione Codice algoritmo di decrittazione Codice che illustra l attivazione in sequenza di 3 processi Schema che illustra l attivazione in sequenza di 3 processi Doppia guida in processi differenti Utilizzo dei flip-flop Ciclo che esegue 20 somme in codice VHDL Schema del circuito risultante dalla sintesi del codice della figura precedente Flusso di progetto verso FPGA iv

7 Elenco delle figure 3.8 Fase di implementazione del progetto Struttura dell IP Core Parte generic dell IP Core Creazione dell istanza e mappatura del componente rc6 encoder core Interfaccia del componente rc6 encoder core Scrittura dei registri Lettura dei registri Struttura dei registri Descrizione del flip-flop che mantiene il valore del registro L Circuito per l algoritmo di key schedule Impiego della macchina a stati finiti per l algoritmo key schedule Descrizione della funzione log per il calcolo del logaritmo in base Circuito per l algoritmo crypt Moltiplicazioni nell algoritmo di crypt Riconoscimento dei registri per alcuni segnali Riconoscimento delle macchine a stati finiti Timing report per l IP Core RC6 encoder Report per l occupazione di area FPGA per l RC6 encoder Struttura cartelle dei file dell RC Il file MDD relativo all IP Core Aggiunta dei parametri W, R e B Andamento temporale della generazione del driver di un IP Core Scrittura dei registri Scrittura di 4 byte della chiave utente Restituzione dei dati contenuti nei registri Procedura start Procedura fine Valori dei segnali VHDL per il test numero 1 restituiti da ModelSim 68 v

8 Elenco delle tabelle 1.1 Principali algoritmi di crittografia Casi di test Tempi impiegati dall IP Core per vari valori di b vi

9 Legenda AES: Advanced Encryption Standard ASIC: Application Specific Integrated Circuit BRAM: Block RAM DES: Data Encryption Standard DLMB: Data Local Memory Bus DSA: Digital Signature Algorithm DCR: Device Control Register EDK: Embedded Development Kit EEPROM: Electrically Erasable Programmable Read Only Memory EPROM: Erasable Programmable Read Only Memory FPGA: Field Programmable Gate Arrays (array logico (ri)programmabile a campi) GPIO: General Purpose Input/Output GPR: General Purpose Register HDL: Hardware Description Language I/O: Input/Output 1

10 Legenda IDEA: International Data Encryption Algorithm ILMB: Instruction Local Memory Bus IP: Intellectual Properties IPIC: Intellectual Properties InterConnect IPIF: Intellectual Properties InterFace LB: Logic Block LMB: Local Memory Bus LUT: Look-Up Table MB: MicroBlaze MDD: Microprocessor Driver Specification file MHS: Microprocessor Hardware Specification file MPD: Microprocessor Peripheral Description file MPGA: Mask Programmable Logic Array MSS: Microprocessor Software Specification file NGD: Native Generic Database OPB: On-chip Peripheral Bus PAL: Programmable Array Logic PAO: Peripheral Analyze Order file PAR: Place And Route PLA: Programmable Logic Array PLB: Processor Local Bus 2

11 Legenda PLD: Programmable Logic Device PPC: Power PC Pselect: Peripheral select RAM: Random Access Memory RC x: famiglia di algoritmi Rivest Cypher ROM: Read Only Memory RSA: Algoritmo di di crittografia, così chiamato dai nomi dei sui creatori: Rivest, Shamir, Adelman SRAM: Static Random Access Memory VHDL: Very high speed integrated circuit Hardware Description Language 3

12 Introduzione Il lavoro che viene qui presentato consiste nella creazione di un componente realizzato dall utente da inserire in un architettura da implementare su FPGA (Field Programmable Gate Array). Il componente scelto implementa l algoritmo di crittografia RC6 a 128 bit ed è stato implementato sulla FPGA XC2VP7 della Xilinx presente sulla scheda Virtex-II Pro Evaluation Kit della Avnet. L analisi di questo lavoro comincerà con una parte introduttiva atta ad illustrare le basi del progetto sviluppato. Nel primo capitolo si inizierà con una breve introduzione alla crittografia e ai tipi di algoritmi di maggiore interesse. Verrà inoltre descritto l algoritmo RC6, soffermandosi sull importanza che questo ha nel mondo della crittografia e quindi sul perché del suo utilizzo, sulle sue caratteristiche e differenze rispetto agli algoritmi suoi predecessori. La trattazione quindi proseguirà con un introduzione alle FPGA e a tutto ciò che questi dispositivi permettono di realizzare, per poi passare ad un analisi delle architetture che si possono implementare in esse. Dopo una descrizione dei vari tipi di componenti che costituiscono dette architetture, verranno infine descritti gli strumenti software ed hardware impiegati nella realizzazione del progetto. Il secondo capitolo è dedicato ad una descrizione dettagliata dell algoritmo RC6 e dei suoi parametri. Verranno inoltre illustrati i sottoalgoritmi che lo compongono, attraverso un analisi dei listati scritti in pseudocodice C. Nel terzo capitolo avrà inizio la descrizione del progetto. Essa sarà costituita in primo luogo da una descrizione generale di come possono essere realizzati componenti che implementano algoritmi scritti in codice C. Successivamente verrà 4

13 Introduzione presentato il flusso di progetto verso architetture basate su FPGA. Nel quarto capitolo verrà applicato il flusso di progetto illustrato nel terzo capitolo al caso particolare di progettazione del componente RC6 encoder, analizzando le varie problematiche che questa progettazione ha introdotto e le modalità di soluzione delle stesse. Oltre ad una descrizione dell implementazione della parte hardware del componente verrà presentato lo sviluppo della parte software, ovvero del driver dello stesso. Nel quinto capitolo sarà presente una descrizione dei test effettuati sul componente per verificarne l esatto comportamento e verranno illustrate alcune considerazioni riguardanti le prestazioni del componente progettato. Nel sesto ed ultimo capitolo, invece, verranno tratte delle conclusioni sul lavoro svolto e proposti eventuali lavori futuri. 5

14 Capitolo 1 Premesse Questo capitolo è dedicato all introduzione dei termini e delle conoscenze utili per il progetto in questione che si colloca nel campo dei Sistemi Embedded. Con il termine sistema embedded si identificano genericamente dei sistemi elettronici a microprocessore progettati appositamente per una determinata applicazione, spesso con una piattaforma hardware ad hoc. Questi sistemi possono operare in autonomia, oppure possono essere connessi ad altri computer convenzionali, dove risiedono tipicamente le funzioni di monitoraggio e controllo. Nelle sezioni che seguono verranno introdotte alcune nozioni generali di crittografia e in particolare verrà descritto l algoritmo di crittografia realizzato nella tesi: RC6. Conclude il capitolo un introduzione alle FPGA e alle architetture e una panoramica sugli strumenti software utilizzati. 1.1 Algoritmi di crittografia La crittografia ha assunto negli ultimi anni un ruolo sempre più rilevante in conseguenza ad una crescita vertiginosa della quantità di dati informativi posseduti, o acquisiti da enti privati e pubblici, e della loro velocità di trasmissione; c è quindi sempre più attenzione alle problematiche riguardanti le metodologie e le tecnologie per la sicurezza nello scambio di informazioni. A partire dagli anni 60 l attenzione si è spostata da meccanismi di sicurezza 6

15 1.1. ALGORITMI DI CRITTOGRAFIA prettamente fisici a meccanismi di sicurezza di tipo logico. In realtà il problema dello scambio sicuro di informazioni esiste da migliaia di anni ed è stato affrontato con diverse tecniche matematiche, alle quali si ispirano diversi algoritmi di crittografia. La crittografia nasce quindi come una branca della matematica e quindi i suoi metodi di elaborazione sono stati affidati a lungo e in varie occasioni a matematici. Le tecniche di crittografia sono necessariamente sempre più raffinate e, inevitabilmente, più complesse; lo studio di tali tecniche si differenzia principalmente per l uso che se ne intende fare. Possiamo suddividere questo studio crittografico in due macro aree: crittografia a chiave simmetrica e crittografia a chiave asimmetrica. [9] Crittografia simmetrica La crittografia simmetrica è anche chiamata crittografia a chiave privata, poiché per trasformare i dati che si vogliono trasferire (o comunque proteggere) in una forma crittata vengono usate delle chiavi private; quest operazione è detta di cifratura (o encryption), mentre l operazione inversa, che serve per riportare i dati nella forma iniziale, è detta di decifratura (o decryption); solo chi conosce le chiavi utilizzate per la cifratura è in grado di decifrare i dati. L algoritmo di crittografia utilizzato è invece pubblico. Sono stati implementati diversi algoritmi di crittografia simmetrica che offrono prestazioni diverse a seconda dell ambiente applicativo in cui sono usati. In Tabella 1.1 vengono riportati i principali algoritmi di crittografia simmetrica attualmente utilizzati in applicazioni pratiche e di studio. Le più grosse limitazioni della crittografia a chiave segreta sono la necessità di creare delle chiavi diverse per tutte le possibili combinazioni di soggetti che comunicano e di dover realizzare dei canali di distribuzione sicura per tali chiavi. Per questo motivo alcuni studi di crittografia seguono altre strade come la crittografia asimmetrica. 7

16 1.1. ALGORITMI DI CRITTOGRAFIA Algoritmo chiave Blocco base DES 56 bit 64 bit 3DES 112 o 168 bit 64 bit IDEA 128 bit 64 bit RC bit 64 bit RC4 variabile bit RC bit (in genere 128 bit) bit RC bit (in genere 128 bit) 128 bit AES bit 128 bit Tabella 1.1: Principali algoritmi di crittografia. Crittografia asimmetrica La crittografia asimmetrica è anche detta crittografia a chiave pubblica, in quanto fa uso di due chiavi per ogni soggetto coinvolto nella comunicazione: una privata e una pubblica. Questa coppia di chiavi è legata indissolubilmente, poiché per cifrare i dati si usa la chiave pubblica mentre per decifrarli si usa quella privata; queste due chiavi quindi ottengono dunque un effetto opposto. Di seguito è proposto un esempio per capire meglio. Due soggetti, A e B, vogliono comunicare utilizzando un algoritmo a chiave asimmetrica; entrambi i soggetti avranno una propria chiave privata, che conosceranno solo loro e una propria chiave pubblica, che renderanno disponibile a chiunque voglia comunicare con loro, per esempio inserendola in un archivio di chiavi; Se il soggetto A vorrà comunicare con il soggetto B dovrà crittare il proprio messaggio con la chiave pubblica di B, in modo che solo B potrà decifrarlo, utilizzando la propria chiave privata, che sarà creata utilizzando un algoritmo inverso di quello utilizzato per creare la propria chiave pubblica. L uso di questa crittografia è più complesso, ma permette di gestire in modo più efficace, rispetto ad un algoritmo implementato con chiave simmetrica, la riservatezza dei dati, in quanto occorre una complessità computazionale molto elevata per poter ricavare la chiave privata a partire da quella pubblica (e comun- 8

17 1.2. RC6 (RIVEST CYPHER 6) que in generale un soggetto cambierà frequentemente la propria coppia di chiavi). Attualmente gli algoritmi a chiave asimmetrica più diffusi sono RSA e DSA; tipicamente entrambi utilizzano chiavi non inferiori a 1024 bit. Questi algoritmi hanno tempi di elaborazione molto maggiori rispetto a quelli a chiave simmetrica; vengono spesso utilizzati per il trasferimento di piccole quantità di dati, come per esempio lo scambio di chiavi o di firme digitali. A questo punto si può passare a descrivere il particolare algoritmo oggetto di questo studio (l RC6), il perché del suo utilizzo, le caratteristiche e le differenze rispetto agli algoritmi suoi predecessori, con riferimento all RC5 e alla famiglia AES. 1.2 RC6 (Rivest Cypher 6) L RC6, evoluzione dell algoritmo RC5, è stato progettato nel 1998 da Scott Contini, Ronald L. Rivest, M.J.B. Robshaw, e Yiqun Lisa Yin per rispondere ai requisiti dell AES. In base a questi requisiti un pacchetto crittografico deve manipolare blocchi di input e output da 128 bit. L RC5 è un pacchetto crittografico ad alta velocità, ed il modo più naturale per estenderlo in modo da funzionare con blocchi da 128 bit è quello di usare due registri che operano ciascuno su dati da 64 bit. Tuttavia, siccome le architetture per l AES non supportano ancora operazioni a 64 bit in modo semplice ed efficiente, l algoritmo è stato modificato dai suoi inventori in modo da utilizzare quattro registri da 32 bit anziché due da 64 bit. Ciò ha come primo vantaggio il fatto che vengono eseguite quattro rotazioni per ogni ciclo anziché due come nel caso dell RC5. Un secondo vantaggio è l utilizzo di più bit di dati per determinare l ammontare delle rotazioni in ogni ciclo. Oltre all innovazione relativa all uso dei quattro registri, nell RC6 è stata introdotta la moltiplicazione intera come operazione primaria addizionale; il suo utilizzo incrementa la propagazione dei dati per ciclo, permettendo di ottenere maggiore sicurezza con pochi cicli di crittazione ed incrementando il throughput 9

18 1.3. FPGA (FIELD PROGRAMMABLE GATE ARRAY) (carico di lavoro nell unità di tempo). Oltre alle innovazioni precedentemente illustrate, nell RC6 sono stati introdotti anche due elementi che non erano presenti nell RC5: la funzione quadratica, che serve per combinare i bit in una parola in modo più efficiente, e la rotazione fissa, usata per ostacolare la costruzione di buone approssimazioni lineari o differenziali dell algoritmo e per assicurare che i valori derivanti dalla rotazione dei dati nei registri vengano modificati il più possibile dall algoritmo stesso. Inoltre l inclusione della rotazione fissa distrugge la struttura necessaria alla formazione di alcuni tipi di dipendenza dall RC5; di conseguenza l RC6 risulta immune da qualsiasi estensione diretta dei risultati precedentemente ottenuti sull RC5. Un analisi iniziale della sicurezza dell RC6 e della sua resistenza ad alcune forme di analisi crittografica sia lineare che differenziale sono presentare nel documento [10]. Nel prossimo paragrafo saranno descritte le FPGA e il perché il progetto è orientato ad esse. Attraverso un analisi della struttura funzionale e di alcune importanti caratteristiche tecniche verrà illustrato perché le FPGA siano così importanti per la progettazione hardware. 1.3 FPGA (Field Programmable Gate Array) Per meglio comprendere l interesse dell utilizzo delle FPGA è necessario innanzitutto presentare tali dispositivi. L acronimo FPGA sta per Field Programmable Gate Array, ossia dispositivi costituiti da un array logico (ri)programmabile a campi. Si tratta dunque di una particolare classe di integrati che è possibile riprogrammare per realizzare il progetto digitale voluto. Ad una prima analisi le FPGA potrebbero sembrare simili alle ROM programmabili (PROM), in quanto offrono la possibilità di memorizzare dati e la modifica dei dati stessi attraverso la riprogrammazione, ma presentano possibilità di applicazione molto più vaste. Per spiegare i motivi del loro così largo impiego bisogna tener presente che le FPGA sono particolarmente interessanti perché rappresentano il miglior compromesso all interno della famiglia dei 10

19 1.3. FPGA (FIELD PROGRAMMABLE GATE ARRAY) dispositivi programmabili per quanto riguarda flessibilità, ossia la possibilità di riutilizzo in progetti successivi, costo e prestazione. Non va inoltre dimenticato che le FPGA rappresentano uno strumento di rapida verifica delle caratteristiche di dispositivi puramente hardware e per questo motivo sono spesso utilizzate per il design e la progettazione di circuiti integrati che andranno poi cablati e prodotti su larga scala, contribuendo alla velocizzazione dei tempi del processo di prototipazione. L uso di questi dispositivi in fase di progettazione di circuiti logici integrati è fondamentale, in quanto permette di verificare il corretto funzionamento di un progetto non solo su calcolatore, ma anche su reali dispositivi integrati, bypassando quindi i limiti dei simulatori. Dunque le FPGA rappresentano ad oggi la più significativa via di mezzo tra specializzazione e generalità in grado di supportare interi sistemi dedicati, i cosiddetti Embedded Systems, in quanto non implementano le sole sezioni hardware, ma si arricchiscono continuamente di elementi hardware che consentono la realizzazione di sezioni software, come CPU, blocchi RAM, etc. A completamento di quanto detto, va sottolineata la disponibilità di numerose famiglie di FPGA: da quelle estremamente veloci e costose a dispositivi lenti ma molto economici Composizione delle FPGA Le FPGA sono sistemi composti da migliaia di Blocchi Logici Configurabili (CLB) elementari che possono essere liberamente interconnessi tra loro. I blocchi logici sono costituiti da reti combinatorie ridefinibili ed elementi di memoria. In Figura 1.1 sono rappresentati i Blocchi Logici Configurabili e le linee di connessione, verticali e orizzontali, relative agli ingressi e alle uscite. Nel caso della tecnologia FPGA di Xilinx si parla di un logica combinatoria a 4 ingressi e 1 uscita implementata tramite LUT, una Look-Up Table costituita da una memoria SRAM di 16 locazioni da 1 bit. All uscita della LUT sono presenti due FLIP-FLOP (memorie da 1 bit) che possono memorizzare l uscita del sistema 11

20 1.3. FPGA (FIELD PROGRAMMABLE GATE ARRAY) Figura 1.1: Blocchi Logici Configurabili combinatorio. Nel complesso dunque un CLB diventa un piccolo sistema sequenziale. E poi possibile combinare più CLB adiacenti in parallelo o in cascata per estendere a piacimento queste funzionalità fino a realizzare reti arbitrariamente complesse. Sia la programmazione delle LUT sia la programmazione delle interconnessioni avviene tramite celle di memoria volatile che possono essere configurate a piacere; tipicamente questa configurazione viene caricata all accensione Struttura delle FPGA Questo paragrafo presenta una descrizione della struttura delle FPGA, indicando anche particolari aspetti delle FPGA delle maggiori case produttrici attuali ovvero Xilinx, Actel ed Altera. Le famiglie di FPGA vengono suddivise in base a 3 aspetti: l architettura generale, i tipi di blocchi logici e la tecnologia di programmazione. 12

21 1.3. FPGA (FIELD PROGRAMMABLE GATE ARRAY) Figura 1.2: Architetture generali delle FPGA L architettura generale può essere organizzata secondo array simmetrici, per riga oppure tramite PLD (Programmable Logic Device) gerarchici. Le FPGA della Xilinx sono organizzate secondo array logici, quelle della Actel per riga, mentre quelle della Altera secondo PLD gerarchici. In Figura 1.2 vengono riportati i 3 tipi di architettura precedentemente descritti. Anche i blocchi logici sono suddivisi in tre settori: quelli basati su LUT, Look-Up Table, quelli basati su multiplexer e quelli basati su PLD. I blocchi logici delle FPGA della Xilinx sono basati su LUT, quelle della Actel si basano su multiplexer, mentre quelle della Altera su PLD. In Figura 1.3 vengono riportate le strutture dei blocchi logici adottate dalla Xilinx (a) e dalla Actel (b). Le tecnologie di programmazione sono tre e sono quelle basate sull uso di celle RAM Statiche, quelle basate su EPROM ed EEPROM ed infine quelle basate sull anti-fuse. Nelle FPGA a RAM statica le connessioni programmabili sono realizzate utilizzando pass-transistor, gate a trasmissione e multiplexer comandati da celle SRAM. Questa tecnologia consente una rapida riconfigurabilità in-circuit e permette alle FPGA di questo tipo di esser programmate un numero illimitato di volte. Il principale svantaggio però sta nella dimensione del chip richiesta per l utilizzo della tecnologia RAM e nel fatto che le configurazioni del chip necessitano di esser caricate sul chip stesso da una sorgente esterna (di solito un chip di memoria non volatile esterno). La tecnologia EPROM è un metodo simile a quello utilizza- 13

22 1.3. FPGA (FIELD PROGRAMMABLE GATE ARRAY) Figura 1.3: Tipi di blocchi logici delle famiglie Xilinx e Actel to nelle memorie EPROM. Il programma viene memorizzato senza un supporto di memorizzazione esterno della configurazione. I chip programmabili basati su EPROM non possono però essere riprogrammati in-circuit ed hanno bisogno di esser cancellati tramite l esposizione ai raggi UV. La tecnologia EEPROM, è un metodo simile a quello utilizzato nelle memorie EEPROM. Anche in questo caso il programma viene memorizzato senza un supporto di memorizzazione esterno della configurazione. I chip programmabili basati sulle EEPROM possono essere cancellati elettricamente, ma generalmente non possono essere riprogrammati in-circuit. Un anti-fuse risiede in uno stato di alta impedenza e può essere programmato in uno stato di bassa impedenza o fuso. Questa tecnologia è meno costosa rispetto alla tecnologia RAM a parità di funzionalità. L unico punto debole di questo tipo di tecnologia stà nel fatto che, considerando il metodo con il quale si ricava il circuito che descrive il programma, è possibile programmare il dispositivo soltanto una volta. 14

23 1.4. COMPONENTI DELLE ARCHITETTURE Figura 1.4: Scheda Virtex-II pro Evaluation Board di Avnet Il dispositivo per il quale è stato progettato il componente di questo progetto, Xilinx XC2VP7 Virtex-II pro appartiene alla fascia più alta della sua categoria, essendo composto da oltre 300 milioni di transistor ed integrato con tecniche allo stato dell arte, 90nm 9 strati di metallizzazione in rame. In figura 1.4 è riportata la scheda della Avnet equipaggiata con il dispositivo FPGA sopra descritto. Si noti che, oltre al chip contenente la FPGA sono presenti numerosi dispositivi ad esso interfacciabili. Con questo paragrafo si conclude la trattazione delle FPGA. Nei prossimi tre paragrafi verranno descritti i tipi di componenti che è possibile inserire in un architettura da implementare su FGPA, descrivendo poi la particolare architettura CoreConnect realizzata da IBM ed infine verrà proposta una possibile architettura nella quale inserire il componente sviluppato nel progetto. 1.4 Componenti delle architetture Qualsiasi architettura può essere implementata su FPGA. Nel lavoro di tesi sono state considerate architetture costituite da vari componenti, i quali si suddividono 15

24 1.4. COMPONENTI DELLE ARCHITETTURE in tre grandi classi: i processori, le periferiche e i bus. I processori sono componenti molto particolari in quanto costituiscono la parte attiva dell architettura. Essi operano seguendo le istruzioni di un programma software memorizzato nella memoria principale e sono in grado di eseguire operazioni su numeri oppure inviare o ricevere segnali dalle periferiche di input/output presenti nell architettura nella quale sono inseriti. Le periferiche sono invece dispositivi esterni alla FPGA che però possono essere comandati dall architettura. Permettono inoltre la comunicazione vera e propria con l utente trasmettendo e ricevendo dati. In genere le periferiche possiedono una sorta di interfaccia all interno della FPGA per fare in modo che esse comunichino con gli altri componenti dell architettura. Sono esempi di periferiche dispositivi quali l interfaccia seriale, i LED o i display LCD. I bus permettono l interconnessione tra tutti i componenti che costituiscono un architettura. Esistono vari tipi di bus, selezionabili a seconda delle esigenze dell architettura stessa. Alcuni tra i più importanti tipi di bus verranno illustrati nel successivo paragrafo. Tutti i componenti fin qui descritti si possono racchiudere nella grande famiglia degli IP Core. Gli IP (Intellectual Property) Core sono in generale i componenti che risiedono all interno della FPGA. Sono blocchi di componenti logici o di dati che sono idealmente portabili, ovvero possono essere riutilizzati in diverse architetture. È quindi possibile creare architetture basandosi su IP Core già progettati in passato. Un ulteriore classificazione degli IP Core è la suddivisione nei tre tipi: hard cores, firm cores e soft cores. I primi sono i meno portabili in quanto sono a tutti gli effetti oggetti fisici collegati all architettura; un esempio di questo tipo di IP Core è il processore PPC 405 presente nella FPGA XC2VP7 della Xilinx. I firm core (chiamati anche semi-hard) sono invece simili agli hard core, ma più portabili in quanto possono essere configurati per il loro impiego in diverse applicazioni. Infine i soft core, i più flessibili dei tre, possono essere composti sia da una descrizione in codice HDL (Hardware Description Language), sia da una netlist, ovvero una lista delle porte logiche e dei collegamenti ad esse associati che compongo- 16

25 1.5. IBM CORE CONNECT no un circuito integrato; un esempio di questo tipo di componenti è il processore MicroBlaze. 1.5 IBM Core Connect CoreConnect è un particolare tipo di collegamento tramite bus sviluppato dall IBM. Esso permette la connessione tra IP Core diversi al fine di creare nuovi chip. La tecnologia CoreConnect facilita l integrazione ed il riuso di processori e periferiche al fine di ottenere migliori prestazioni. L architettura dei bus del Core- Connect comprende il PLB, Processor Local Bus, l OPB On-chip Peripheral Bus, un bridge tra i due bus sopra citati ed un ultimo bus, chiamato DCR bus o Device Control Register bus Device Control Register (DCR) Il bus DCR è stato progettato per trasferire dati dai registri di uso comune del processore GPR (General Purpose Register) ed i registri di controllo dei componenti connessi con il bus DCR stesso. Questo bus fornisce un bus indirizzi da 10 bit ed un bus dati da 32 bit Processor Local Bus (PLB) Il bus PLB è utilizzato dal processore per accedere alle periferiche di maggiore velocità. Ha una dimensione di 32 bit per gli indirizzi e di 64 bit per dati ed istruzioni On-Chip Peripheral Bus (OPB) Il processore accede alle risorse più lente attraverso il bus OPB. Quest ultimo è stato creato per limitate il traffico sul bus PLB ed è un bus sincrono che funziona indipendentemente, con un diverso livello di gerarchia rispetto al processore. Questo bus si compone di un bus da 32 bit di dati ed uno da 32 bit per indirizzamento. 17

26 1.6. ARCHITETTURA Il bus OPB ha l importante caratteristica di poter gestire più componenti master contemporaneamente collegati ad esso. Il bus OPB è stato scelto come bus al quale collegare l IP Core sviluppato in questo progetto data la sua grande stabilità ed affidabilità. 1.6 Architettura L IP Core che implementa l algoritmo RC6 è stato progettato appositamente per essere inserito in una particolare architettura (insieme di componenti e processore collegati tra loro tramite bus) che verrà poi implementata su FPGA. L architettura pensata per il progetto fa uso di un processore di tipo Micro- Blaze (MB). Questo perché il processore già presente sulla scheda Virtex II pro Evaluation Board, il PowerPC 405 o PPC, lavora alla frequenza minima di 100 Mhz e l IP Core realizzato presenta una frequenza massima di 48 Mhz. Il processore MicroBlaze opera anch esso ad una frequenza di default di 100 Mhz, ma questo valore può essere ridotto, come verrà illustrato in seguito. Per la creazione dell architettura è possibile far riferimento al documento [1]. Per approfondimenti sulla creazione di architetture con processori MB o PPC fare riferimento rispettivamente ai documenti [1] e [3] Scelta del processore La differenza fondamentale tra un processore PPC (hard macro) ed un MB (soft macro) consiste nel fatto che mentre il primo si trova già cablato all interno della FPGA, il secondo è strutturato come se fosse un componente e dunque è costituito da una struttura descritta in un sorgente HDL e viene creato all interno dell FPGA nel momento in cui vengono creati tutti i componenti dell architettura. Ovviamente l impiego di un PPC permette di sfruttare molta più area FPGA (che nel caso del MB è occupata dal processore stesso) e di utilizzare un processore molto affidabile, ma a differenza del MB non dà la possibilità di ridurre la frequenza di lavoro al di sotto dei 100 Mhz. 18

27 1.6. ARCHITETTURA La riduzione della frequenza di lavoro del processore MB avviene attraverso l impiego di un particolare modulo chiamato dcm da inserire all interno dell architettura. Esso permette di effettuare una divisione del valore della frequenza base per un fattore impostato come parametro. Il fattore di divisione deve avere un valore pari ad una potenza del numero 2. In questo caso il fattore di divisione dovrà essere impostato con un valore di 4 visto che la frequenza base del MB è di 100 Mhz. In questo modo la frequenza di lavoro del processore, e quindi dell intera architettura, verrà impostata a 25 Mhz, in quanto una frequenza di 50 Mhz risulta ancora troppo elevata per l IP Core progettato Componenti e interconnessioni di un architettura Micro- Blaze In un architettura generale con MicroBlaze, Il processore si interfaccia con 3 bus: dlmb, ilmb e mb opb. Il bus mb opb (MicroBlaze On-chip Peripheral Bus) non è altro che un bus di tipo OPB, illustrato nel paragrafo relativo al CoreConnect, applicato ad un processore MicroBlaze. In totale l architettura utilizza 5 bus: i 3 bus di cui sopra e i bus dlmb port e ilmb port. I bus dlmb (Data Local Memory Bus) e ilmb (Instruction Local Memory Bus) sono utilizzati per connettere il processore a componenti ad alta velocità per l elaborazione dei dati e delle istruzioni. In questo caso i componenti sono due BRAM Controller: dlmb cntlr e ilmb cntlr, che si interfacciano rispettivamente sui bus dlmb e dlmb port e sui bus ilmb e ilmb port. È poi presente un BRAM Block (Block RAM Block), che si interfaccia ai bus dlmb e ilmb attraverso i controller sopra descritti, rispettivamente sulle proprie porte B e A. In Figura 1.5 è mostrata la struttura delle interconnesioni dei Bus di Memoria Locale (LMB) tipica di un sistema che utilizza un processore MB. Il bus mb opb è utilizzato per interfacciare i processori MB (nel caso in esame uno, ma in generale potrebbero anche essere di più) ai componenti che si andranno a utilizzare (custom, creati dall utente, moduli di controllo, ecc). 19

28 1.7. INTRODUZIONE ALLO STRUMENTO DI SIMULAZIONE HARDWARE MODELSIM Figura 1.5: Struttura dei LMB Conclusa la panoramica sulle FPGA e sulle architetture in esse implementabili è possibile passare ad una presentazione degli strumenti software impiegati per la progettazione dei componenti definibili dall utente che andranno poi inseriti in queste architetture. I prossimi due paragrafi descrivono gli strumenti Modelsim e Ise. 1.7 Introduzione allo strumento di simulazione hardware Modelsim ModelSim è un potente strumento prodotto dalla Mentor Graphics che permette la simulazione e la verifica delle descrizioni hardware di un componente. L ambiente di sviluppo, mostrato in Figura 1.6, si presenta suddiviso in due sezioni: il workspace nella sezione di sinistra (A) e un prompt dei comandi nella sezione di destra (B). Inizialmente nel workspace si trova l elenco di tutte le librerie necessarie per effettuare una simulazione. Come si può vedere dalla figura precedente si tratta di librerie standard presenti all interno di Modelsim, e solo in un secondo 20

29 1.7. INTRODUZIONE ALLO STRUMENTO DI SIMULAZIONE HARDWARE MODELSIM Figura 1.6: L ambiente di sviluppo di ModelSim momento possono essere aggiunti ulteriori file e/o librerie necessari alla simulazione del dispositivo implementato dall utente. Il prompt può essere utilizzato per eseguire specifici comandi quali l importazione di librerie, l impostazione dei segnali e l invocazione di tutte le funzionalità presenti nei vari menù del programma stesso. Per effettuare una simulazione occorre innanzitutto creare un nuovo progetto, aggiungervi i sorgenti HDL (Hardware Description Language) che si intendono simulare e le relative librerie necessarie per il loro funzionamento. Una volta avviata la simulazione l ambiente si presenta come riportato in Figura 1.7. In esso si nota l elenco delle parti di implementazione identificate nei sorgenti HDL che costituiscono il progetto e che è possibile simulare. Una volta scelta la parte di implementazione desiderata è possibile utilizzare le finestre dei segnali e delle forme d onda (rispettivamente illustrate in Figura 1.8 e 1.9) per monitorare i cambiamenti di stato dei vari segnali durante la simulazione stessa. La differenza principale tra queste due finestre sta nel fatto che la prima visualizza lo stato di ogni singolo segnale tramite codifica binaria mentre la seconda fornisce, oltre alla codifica binaria, anche l evoluzione nel tempo di ogni segnale. Queste due finestre sono 21

30 1.7. INTRODUZIONE ALLO STRUMENTO DI SIMULAZIONE HARDWARE MODELSIM Figura 1.7: Finestra principale dell ambiente di simulazione molto utili in fase di debugging in quanto, ad ogni passo di simulazione, consentono la verifica della correttezza della descrizione dell hardware del componente presente nei sorgenti che si sta simulando. Figura 1.8: Finestra dei segnali 22

31 1.8. ISE Figura 1.9: Finestra delle forme d onda Con questi due strumenti appena descritti si conclude la presentazione delle principali funzionalità offerte da ModelSim. Si passa ora ad illustrare l utilizzo di ISE per quanto riguarda gli ulteriori test effettuati sul comportamento della descrizione hardware del componente in relazione all occupazione di spazio e memoria della FPGA ed i parametri che caratterizzano l implementazione del componente stesso all interno dell architettura di riferimento. 1.8 ISE ISE, Integrated Software Environment, è un prodotto della Xilinx che consente lo sviluppo completo del design di un componente a partire da tipi differenti di file sorgente; tra questi tipi di file si trovano i file VHDL, Verilog e altri formati utilizzati per lo sviluppo di componenti per sistemi dedicati. Per far questo si utilizza il tool di sviluppo Project Navigator che funge da interfaccia per la gestione dell intero processo di realizzazione del componente. Come mostrato in Figura 1.10, Project Navigator suddivide le sue funzionalità in settori; questi sono: Design Entry, Synthesis, Simulation, Implementation e Device Download and Program File Formatting. Queste funzionalità sono raggruppate opportunamente nel menù di Figura 1.10 e disposte secondo l andamento temporale della progettazione. 23

32 1.8. ISE Figura 1.10: Menù delle funzioni di Project Navigator Per quanto riguarda la sezione di Design Entry, Project Navigator mette a disposizione diverse tipologie di editor; tra questi si trovano editor di testo (mostrato in Figura 1.11) per la modifica dei sorgenti, editor di schemi logici per la descrizione logica del componente e editor di constraint per impostare i vincoli di progetto questo viene. Oltre a questi sono presenti tre altri strumenti: CORE Generator utile per l ottimizzazione di alcuni elementi del core (ad esempio sommatori, pile e memorie), PACE che consente la visione e la modifica delle porte di I/O e l editor StateCAD State Machine utile per la definizione, in formato grafico, degli stati, delle transizioni e le azioni svolte dal componente che si sta descrivendo. Nella sezione Synthesis è possibile selezionare lo strumento di sintesi utilizzato fra quelli supportati: XST, LeonardoSpectrum e Synplify. La parte di Simulation invece contiene lo strumento HDL Bencher utilizzato per la creazione automatica di test bench e per la definizione di test con l ausilio di un editor grafico. E possibile infine utilizzare lo strumento di simulazione ModelSim discusso nel paragrafo precedente. 24

33 1.8. ISE Figura 1.11: Editor di testo di Project Navigator Per quanto riguarda invece la sezione di Implementation sono disponibili numerosi strumenti e funzioni tra cui è possibile trovare la funzione di Map utilizzabile per la mappatura del progetto logico su FPGA e il Place and Route (PAR) il quale riceve il progetto mappato fornito dalla precedente funzione e lo organizza secondo la struttura che successivamente avrà sulla FPGA, restituendo in uscita un file che può esser passato al generatore di bitstream. Infine sono disponibili altre due funzioni: Floorplanner e FPGA Editor utili per la modifica della disposizione fisica dei vari componenti implementati su FPGA. L ultima sezione, quella di Device Download and Program File Formatting, riguarda la fase finale del ciclo di sviluppo di un componente, ossia la fase in cui si eseguono gli ultimi passi che portano all effettiva implementazione del componente su FPGA. Questi passi vengono compiuti dal programma BitGen e dal tool impact che rispettivamente ricevono il progetto fornito dal PAR producendo un bitstream per la configurazione della FPGA. Con questo paragrafo si conclude la descrizione dei concetti di base e de- 25

34 1.8. ISE gli strumenti utilizzati per il progetto. A questo punto è possibile iniziare la descrizione dell algoritmo RC6 e di come esso opera, continuando poi con la sua realizzazione come IP Core. 26

35 Capitolo 2 Descrizione dell algoritmo RC6 In questo capitolo verranno descritti in dettaglio, tramite una scrittura in pseudocodice C e un analisi dei parametri utilizzati, i sottoalgoritmi che compongono l algoritmo RC6. La prima parte che sarà presentata sarà quella di Key Schedule, che, a partire dalla chiave utente, fornisce le chiavi da utilizzare nel processo di crittazione. Segue poi l algoritmo di Crittazione, che è l effettiva logica di cifratura dei dati passati. Infine si vedrà l algoritmo di Decrittazione, che realizza la logica di decifratura, ovvero l operazione inversa della crittazione. Come premessa è da sottolineare che l algoritmo RC6 presenta tre parametri grazie ai quali è possibile ottenere da esso diversi risultati anche con la stessa parola da cifrare in ingresso. Il parametro w rappresenta la lunghezza in bit di ciascuno dei quattro registri che contengono la parola da crittare. In questo caso ha un valore fisso pari a 32, in quanto la parola da crittare avrà una lunghezza di 128 bit. Il parametro r contiene il numero di cicli di crittazione che l algoritmo dovrà eseguire. Un valore elevato del parametro r porta dunque a valori con livelli di crittografia superiori. Infine il parametro b rappresenta la lunghezza in byte della chiave di crittazione fornita dall utente. 27

36 2.1. CODICE ALGORITMO DI KEY SCHEDULE PER RC6 2.1 Codice algoritmo di key schedule per RC6 L algoritmo di key schedule dell RC6 è pressoché identico a quello dell RC5 (l unica differenza consiste nel fatto che sono ricavate più parole dalla chiave fornita dall utente). Esso permette di ricavare l array S da fornire in input all algoritmo di crittazione a partire dalla chiave di B byte fornita dall utente. L algoritmo in questione riceve in input un array L, un parametro r e due costanti P 32 e Q 32. In L è contenuta la chiave utente suddivisa in b 4 array da 32 bit ciascuno. Nel caso in cui il parametro b non sia multiplo di 4, sarà necessario riempire la chiave stessa con un numero sufficiente di zeri al fine di portare la lunghezza al successivo multiplo di 4. Il parametro r rappresenta il numero di cicli da eseguire; questo viene passato poi anche all algoritmo di crittazione. Le due costanti sopracitate, P 32 e Q 32, i cui valori esadecimali sono rispettivamente B7E15163 e 9E3779B9, sono chiamate magic numbers e sono identiche a quelle passate al key schedule dell RC5; queste sono state scelte in modo arbitrario (utilizzando un algoritmo che esula dal nostro interesse), ma possono esser scelti dei valori diversi per avere una versione personalizzata dell RC6. Con questi dati in ingresso l algoritmo di key schedule fornisce in uscita un array S che contiene le 2r+4 round keys, da w bit ciascuna, necessarie per l algoritmo. Il codice dell algoritmo key schedule è riportato in Figura

37 2.2. CODICE ALGORITMO DI CRITTAZIONE S[0] = P 32 for i=1 to 2r+3 do S[i] = S[i-1] + Q 32 A=B=i=j=0 v=3 x max {c, 2r+4} for s=1 to v do { A = S[i] = (S[i] + A + B) 3 B = L[j] = (L[j] + A + B) A + B i = (i+1) mod (2r+4) j = (j+1) mod c } Figura 2.1: Codice algoritmo di Key Schedule dove: A + B: somma intera modulo 2w; A - B: sottrazione intera modulo 2w; A B: shiftare a sinistra in modo rotazionale la parola A da w-bit del contenuto dei log(w) bits meno significativi della parola B. 2.2 Codice algoritmo di crittazione L algoritmo di crittazione costituisce il cuore vero e proprio dell RC6. Esso genera la parola crittata a partire dai dati in ingresso e dalle chiavi di crittazione generate dal key schedule. I punti di forza che lo differenziano dall RC5 sono l impiego dell operazione di moltiplicazione intera e l utilizzo della rotazione fissa. Il codice dell algoritmo di crittazione è riportato in Figura

38 2.2. CODICE ALGORITMO DI CRITTAZIONE B = B + S[0] D = D + S[1] for i=1 to r do { t = (B x (2B+1)) log(w) u = (D x (2D+1)) log(w) A = ((A t) u) + S[2i] C = ((C u) t) + S[2i+1] (A,B,C,D) = (B,C,D,A) } A = A + S[2r+2] C = C + S[2r+3] Figura 2.2: Codice algoritmo di crittazione dove: A B: or esclusivo con parole da w-bit; A x B: moltiplicazione intera modulo 2w; e il significato degli altri simboli è lo stesso illustrato per l algoritmo di key schedule. L algoritmo di crittazione riceve in input il parametro r e l array S descritti nel paragrafo relativo al key schedule (2.1), 4 array A, B, C, D, e altri due parametri b e w. L array S contiene 2r+4 round keys ricavate dalla chiave passata dall utente tramite l algoritmo di key schedule. Ciascuna di queste round key è un array da 32 bit. A, B, C, D sono dei registri di 32 bit ciascuno. Questi parametri sono utilizzati per memorizzare la parola a 128 bit in ingresso all algoritmo di crittazione (plaintext) e, successivamente, la parola, sempre a 128 bit, in uscita dallo stesso algoritmo (cyphertext). I dati vengono memorizzati all interno dei suddetti registri mettendo il primo byte della parola (plaintext o cyphertext) nel byte meno significativo di A e l ultimo byte della parola nel byte più significativo di D. 30

39 2.3. CODICE ALGORITMO DI DECRITTAZIONE Infine i due parametri b e w contengono rispettivamente la lunghezza in byte della chiave di crittazione e lunghezza in bit di ciascuno dei quattro registri che compongono la parola da crittare. Si noti che quest ultimo parametro può servire per variare la dimensione di A, B, C e D, e quindi la dimensione della stringa che si vuole crittare. Tuttavia la dimensione standard utilizzata da un algoritmo RC6 è di 128, quindi si è deciso di fissare la lunghezza dei 4 registri a 32 bit ciascuno. 2.3 Codice algoritmo di decrittazione L algoritmo di decrittazione è l algoritmo duale all algoritmo di crittazione descritto in precedenza. Esso permette di ottenere la parola di partenza a partire dai dati crittati e dalle chiavi di crittazione generate ancora una volta dall algoritmo key schedule. Come visto prima l algoritmo RC6 si colloca tra gli algoritmi di crittografia simmetrica, le chiavi di crittazione sono le stesse utilizzate nell algoritmo di cifratura. Il codice dell algoritmo di decrittazione è riportato in Figura 2.3. C = C - S[2r+3] A = A + S[2r+2] for i=r downto 1 do { (A,B,C,D) = (D,A,B,C) u = (D x (2D+1)) log(w) t = (B x (2B+1)) log(w) C = ((C - S[2i+1]) t) u A = ((A - S[2i]) u) t } D = D - S[1] B = B - S[0] Figura 2.3: Codice algoritmo di decrittazione 31

40 2.3. CODICE ALGORITMO DI DECRITTAZIONE Dove il significato dei simboli è lo stesso illustrato per l algoritmo di Key schedule. Questo algoritmo lavora in modo duale rispetto a quello di crittazione. Dunque utilizza gli stessi parametri: r ed S descritti nel paragrafo sul Codice dell algoritmo di Key Schedule, b, w e i 4 array A, B, C, D descritti nel paragrafo precedente. Chiaramente questa volta i 4 registri conterranno la parola a 128 bit da decrittare (ciphertext) in ingresso all algoritmo e, successivamente, la parola decrittata in uscita. Infine, è utile osservare che le chiavi contenute in S sono le stesse impiegate per la crittazione. Con questo capitolo si è mostrato la struttura software, i parametri che entrano in gioco, gli input e i relativi output degli algoritmi che compongono l RC6. Nel prossimo capitolo si introdurranno i metodi e le fasi di progetto seguite per portare a termine il design dell IP Core che implementa l algoritmo RC6. 32

41 Capitolo 3 Metodologia di progetto 3.1 Dal codice C alla descrizione VHDL In questo paragrafo verranno introdotte le varie modalità con le quali si è passati da un algoritmo fornito in codice C, allo stesso algoritmo implementato in VHDL (Very high speed integrated circuit Hardware Description Language). Questa operazione risulta essere alquanto delicata in quanto i due linguaggi in questione, oltre ad avere caratteristiche completamente differenti, hanno anche scopi diversi. Il C è infatti un linguaggio di programmazione software che permette ad un programmatore la scrittura di algoritmi più o meno indipendenti dalla macchina sulla quale essi vengono eseguiti. Il C viene considerato un linguaggio di alto livello in quanto si colloca molto più vicino al linguaggio umano che non a quello della macchina. Il VHDL, essendo un linguaggio di descrizione hardware, permette invece la scrittura di codice che, opportunamente interpretato, porta alla creazione di un particolare circuito composto da componenti ed interconnessioni hardware. Passare quindi dal codice C al codice VHDL significa sostanzialmente creare un circuito che abbia particolari porte di ingresso ed uscita adibite rispettivamente a ricevere i dati che costituiscono l input dell algoritmo C ed emettere i dati di output dell algoritmo stesso. Anche se è molto difficile definire una sequenza di passi generale che descriva come poter creare architetture VHDL che svolgano le stesse operazioni di un 33

42 3.1. DAL CODICE C ALLA DESCRIZIONE VHDL algoritmo espresso in codice C, è possibile affidarsi ad alcune linee guida. Lo stile di implementazione della descrizione VHDL dipende anche molto dalla destinazione che avrà il componente che si andrà ad implementare. In base a questo sarà necessario porre attenzione a due fondamentali fattori. Il primo è la velocità che il componente avrà, ovvero la lunghezza del percorso critico (il più lungo percorso combinatorio interno al componente). Percorsi critici lunghi portano ad una diminuzione della frequenza in quanto devono essere interamente attraversati in un singolo ciclo di clock. Il secondo fattore è il numero di componenti elementari che il componente progettato utilizza. Quest ultimo è controllabile solo nel momento in cui viene effettuata la sintesi della descrizione VHDL (traduzione in hardware) e per questo spesso conduce alla riprogettazione dell intero componente o di parte di esso Suddivisione del codice in blocchi Innanzitutto è consigliabile suddividere in sottoblocchi il codice C in modo da poterlo rendere più semplice e snello o addirittura far svolgere ogni singolo blocco ad una VHDL architecture distinta. Considerando invece una singola VHDL architecture è possibile creare un process per ogni blocco individuato in precedenza. Ogni process avrà nella sensitivity list, ovvero la lista di segnali che lo attivano, oltre al clock anche un particolare segnale booleano da porre a valore logico 1 per far partire il processo stesso (come illustrato in Figura 3.1). All interno del process dovrà poi essere presente un controllo sul segnale sopracitato che verificherà che esso sia stato effettivamente sollevato, altrimenti ad ogni impulso di clock il processo eseguirà tutte le operazioni in esso contenute. Nell esempio sopra riportato i processi Proc1, Proc2 e Proc3 vengono attivati in sequenza conseguentemente all impostazione dei rispettivi segnali di attivazione Activate1, Activate2, Activate3 al valore logico 1. Questa sequenza produce il diagramma di flusso illustrato in Figura

43 3.1. DAL CODICE C ALLA DESCRIZIONE VHDL Figura 3.1: Codice che illustra l attivazione in sequenza di 3 processi Figura 3.2: Schema che illustra l attivazione in sequenza di 3 processi 35

44 3.1. DAL CODICE C ALLA DESCRIZIONE VHDL Il problema delle variabili e dei segnali In generale è possibile convertire qualsiasi variabile presente nel codice C in un corrispondente segnale VHDL. Questa operazione è però piuttosto delicata e comporta spesso numerosi problemi. Per prima cosa bisogna considerare che l assegnamento dei segnali all interno di qualsiasi blocco di codice VHDL avviene in maniera concorrenziale. Per questo una sequenza di assegnamenti a segnali può avvenire in un ordine che non è lo stesso con il quale essa è stata scritta. Inoltre esiste il problema chiamato segnale con doppia guida. Esso consiste in due o più assegnamenti, che potrebbero avvenire contemporaneamente, di valori diversi allo stesso segnale. L introduzione di questo errore può risultare molto frequente nel passaggio dal codice C al codice VHDL. Seppur all apparenza semplice da evitare, questo errore spesso risulta di difficile individuazione, infatti il caso più frequente in cui si manifesta si ha quando due assegnamenti posti in due process differenti (Figura 3.3) riguardano lo stesso segnale. Figura 3.3: Doppia guida in processi differenti In conclusione è bene porsi nell ottica di considerare ogni singolo segnale come se fosse un filo di connessione fisico. Un semplice assegnamento ad un segnale, quindi, non esegue la memorizzazione del valore all interno del segnale stesso. Per poter implementare quest ultima operazione è infatti necessario introdurre dei 36

45 3.1. DAL CODICE C ALLA DESCRIZIONE VHDL registri (flip-flop). Questi sono ottenibili eseguendo assegnamenti a segnale ad ogni impulso di clock come avviene per il segnale SG1 nel codice di Figura 3.4. Figura 3.4: Utilizzo dei flip-flop Alternativamente è possibile utilizzare variabili anche in VHDL. Esse sono infatti presenti anche nei linguaggi di descrizione dell hardware. Così facendo è possibile ottenere assegnamenti non concorrenziali, ma sequenziali ed evitare il problema della doppia guida. L uso delle variabili presenta però lo svantaggio costituito dall impossibilità di dichiarare variabili con visibilità globale per lo scambio di informazioni tra i vari process. Le variabili vengono inoltre spesso utilizzate nell implementazione di piccole funzioni, come illustrato nell ultimo paragrafo di questa sezione I cicli e le operazioni iterate In ciascun blocco individuato all interno del codice C dovranno essere identificate le eventuali operazioni iterate, svolte in genere dai cicli. Ad esse va posta particolare attenzione in quanto se implementate con cicli anche in codice VHDL, porterebbero poi ad avere un numero di componenti pari a quelli impiegati per ciascun ciclo moltiplicati per il numero di iterazioni. Per esempio il codice riportato in Figura 3.5 illustra un ciclo che esegue una somma per 20 iterazioni. Ciò comporterà l impiego di ben 20 sommatori nel circuito risultante dalla sintesi del codice VHDL (Figura 3.6). 37

46 3.1. DAL CODICE C ALLA DESCRIZIONE VHDL Figura 3.5: Ciclo che esegue 20 somme in codice VHDL Figura 3.6: Schema del circuito risultante dalla sintesi del codice della figura precedente Per questo è opportuno ove possibile focalizzare l attenzione sulla possibilità di implementare in hardware i soli componenti di un singolo ciclo in modo da poterli poi riutilizzare ad ogni iterazione. Ogni iterazione dovrà poi essere eseguita ad ogni impulso di clock. Ciò porta ad un migliore sfruttamento dei componenti impiegati e ad evitare l utilizzo di un numero troppo elevato degli stessi componenti. Sarà ovviamente necessario introdurre poi un contatore che tenga memoria dello stato (numero di iterazione) al quale il ciclo è giunto. Nell ottica di aumentare la velocità del componente è possibile anche considerare la possibilità di far eseguire un operazione atomica (per esempio una somma od una moltiplicazione) ad ogni ciclo di clock. Questa modalità porta ad un aumento dei tempi di calcolo totali del componente, ma ad un notevole incremento della frequenza di lavoro. Questo è un espediente molto utile quando per esempio il componente costruito dovrà essere inserito in un architettura complessa che adotta una frequenza di lavoro fissata e non modificabile. 38

47 3.2. FLUSSO DI PROGETTO DI UN COMPONENTE VHDL Le procedure e le funzioni Dato che il VHDL è un linguaggio di descrizione hardware, esso non contiene molte delle funzioni che sono presenti nelle librerie standard del C, come ad esempio il calcolo del logaritmo o la radice quadrata di un numero intero. Il VHDL mette però a disposizione costrutti per creare proprie procedure che possono calcolare le operazioni descritte in precedenza. Bisogna però porre attenzione alla creazione di una qualsiasi procedura VHDL in quanto è molto facile definire operazioni che richiedono grandi quantità di componenti. Ove possibile è consigliabile sfruttare operazioni su numeri binari quali ad esempio lo shift. Per esempio se si volesse effettuare una moltiplicazione per il valore 4, l utilizzo dell operatore di moltiplicazione introdurrebbe un moltiplicatore hardware, mentre la stessa soluzione potrebbe essere ottenuta tramite lo shift a sinistra di 2 posizioni del numero binario, ottenendo hardware più veloce e meno complesso. 3.2 Flusso di progetto di un componente VHDL In Figura 3.7 è possibile vedere le varie fasi di progettazione, attraverso gli strumenti della Xilinx, di un particolare progetto hardware che andrà implementato su FPGA. Innanzitutto il punto di partenza è la creazione dei sorgenti, procedimento illustrato nel capitolo successivo per quanto riguarda il componente RC6 encoder. Una volta creati i sorgenti VHDL è possibile proseguire con la sintesi, che consiste nella creazione del circuito logico descritto sempre in linguaggio VHDL. La sintesi è un processo che a partire dai sorgenti VHDL crea una netlist. Una netlist è una lista di nomi, simboli o componenti e dei punti di connessione tra essi che sono collegati a ciascuna parte di un circuito. Questo processo comporta inizialmente anche la verifica della sintassi del codice VHDL e termina con la creazione di un file in formato NGC. Questo file non contiene solamente la netlist vera e propria, ma anche tutte le informazioni che costituiscono i vincoli su di essa. 39

48 3.2. FLUSSO DI PROGETTO DI UN COMPONENTE VHDL Figura 3.7: Flusso di progetto verso FPGA La simulazione comportamentale è stata eseguita, nel caso dell IP Core RC6 encoder, attraverso lo strumento ModelSim ed è illustrata in dettaglio nel Capitolo 5, relativo ai test effettuati. La parte di implementazione presente nel flusso di progetto è piuttosto complessa ed è schematizzata in Figura 3.8. Questa parte ha il suo punto di partenza dal file NGC creato dalla sintesi. Questo viene opportunamente tradotto in un successivo file NGD (Native Generic Database) che descrive il circuito generato dalla sintesi come una serie di primitive proprietarie di Xilinx. Il file NGD creato viene successivamente passato al processo di MAP. Questo genera un file NCD (Native Circuit Description) che rappresenta la descrizione fisica del circuito, generato dai sorgenti di input, come risulta una volta applicata ad uno specifico dispositivo FPGA. Il PAR (Place And Route) esegue la disposizione del circuito specificato nel file NCD sulla FPGA vera e propria. La simulazione funzionale può essere eseguita prima di eseguire l operazione di MAP. Questo processo di simulazione permette di verificare che i sorgenti sia- 40

49 3.2. FLUSSO DI PROGETTO DI UN COMPONENTE VHDL no stati correttamente sintetizzati e dà la possibilità di eseguirne un analisi ad un più basso livello di astrazione. L analisi statica delle temporizzazioni viene eseguita dopo il processo di MAP e permette la verifica delle velocità di lavoro (ovvero della frequenza raggiunta) dell intero progetto. Infine la fase di Simulazione Timing permette di verificare i ritardi tra i vari blocchi che costituiscono il progetto. Figura 3.8: Fase di implementazione del progetto Terminata la descrizione delle metodologie di progettazione di componenti da introdurre in architetture FPGA è possibile passare ad analizzare il caso concreto di progettazione del componente RC6 encoder che implementa l algoritmo RC6. 41

50 Capitolo 4 Implementazione dell IP Core In questo capitolo si presenterà la struttura interna dell IP Core sviluppato; questo è stato creato appositamente per essere inserito in un architettura da utilizzare con il programma EDK (Embedded Development Kit) sviluppato da Xilinx. Data questa caratteristica, l IP Core è suddiviso in due macro blocchi: uno di interfacciamento tra se stesso ed il bus e uno contenente la descrizione vera e propria delle operazioni che svolge. Nel primo e nel secondo paragrafo seguenti si darà una descrizione approfondita delle parti che implementano l IP Core; questo verrà fatto analizzando i vari aspetti relativi alla stesura della descrizione VHDL e commentando alcune parti significative di essa. Nel terzo paragrafo verranno illustrate le modalità di conversione della descrizione sviluppata in un circuito hardware e le varie problematiche che questa operazione comporta. Nel quarto ed ultimo paragrafo verrà descritta la creazione del driver software che permette l utilizzo vero e proprio dell IP Core, studiandone la struttura e le funzioni. 42

51 4.1. STRUTTURA DELL IP CORE 4.1 Struttura dell IP Core L IP Core è implementato tramite il linguaggio VHDL. Ad esso è stata conferita una particolare struttura al fine di permettere il suo inserimento in un architettura da implementare poi su FPGA. L IP Core verrà collegato al bus OPB (On-Chip Peripheral Bus). La struttura interna dell IP Core si compone dunque di due parti: Pselect: contiene la parte di interfacciamento tra l IP Core ed il bus OPB. rc6 encoder core: contiene la descrizione dell IP Core vera e propria. In Figura 4.1 è illustrato come queste sono collegate. Figura 4.1: Struttura dell IP Core In Figura 4.1 è mostrato anche l IPIC, Intellectual Properties InterConnect, che serve ad interfacciare l rc6 encoder core con il Pselect. Per quanto riguarda l interfacciamento dell IP Core verso il bus, è stato necessario scegliere tra il componente PSelect (Peripheral Select) ed il componente IPIF (Intellectual Property InterFace). La scelta è ricaduta sul primo, in quanto il secondo risulta troppo complesso da utilizzare ed inoltre contiene molte funzionalità poco utili ai fini del progetto in questione. 43

52 4.2. STESURA DELLA DESCRIZIONE VHDL 4.2 Stesura della descrizione VHDL In questo paragrafo verranno illustrati in dettaglio i vari passi compiuti in fase di stesura della descrizione VHDL. Tra gli argomenti trattati verrà illustrata la definizione della struttura dei registri di memorizzazione dei dati all interno dell IP Core, ovvero quali indirizzi assegnare a ciascun registro. Inoltre si presterà particolare attenzione ai metodi per convertire gli algoritmi, visti precedentemente in pseudo codice, nel linguaggio VHDL. Questa conversione introduce numerose problematiche in quanto è necessario, durante la traduzione del codice, tener conto della velocità che raggiungerà il componente progettato (in termini di massima frequenza di lavoro) e dell occupazione di area che essa avrà poi una volta implementata su FPGA. In questo paragrafo verranno inoltre riportati ritagli significativi della descrizione VHDL corredati da commenti per illustrare il metodo adottato per descrivere in VHDL la specifica dell algoritmo dell RC6. La stesura della descrizione in linguaggio VHDL del componente progettato, RC6 encoder, ha attraversato, dall inizio della progettazione, essenzialmente tre fasi. Nella prima fase, utilizzata solamente per eseguire test sulla descrizione VHDL, tutti gli algoritmi erano stati scritti in modo da essere eseguiti all interno di un singolo ciclo di clock. Questa situazione portava all occupazione di gran parte dell area dell FPGA a disposizione e ad un frequenza di funzionamento decisamente limitata, dell ordine di 0.01 Mhz. Nella seconda fase sono stati introdotti contatori delle iterazioni dei cicli di crittazione in modo da avere un possibile riuso dei componenti ad ogni iterazione, con un notevole risparmio di area ed una frequenza più elevata, dell ordine di 20 Mhz. L ultima fase, quella descritta in dettaglio nei paragrafi successivi, introduce l uso di una macchina a stati finiti che enumera le operazioni all interno di una singola iterazione del ciclo di crittazione. Questa modalità, pur non portando all occupazione di minore quantità di area, migliora le prestazioni in termini di frequenza di lavoro raggiunta dall IP Core, fino ad arrivare ad un funzionamento 44

53 4.2. STESURA DELLA DESCRIZIONE VHDL dell ordine di 50 Mhz. La spiegazione della stesura della descrizione VHDL si suddivide principalmente in due sezioni: una riguardante la descrizione dell IP Core che si occupa dell interfacciamento con l esterno ed una riguardante le funzionalità proprie dell IP Core Descrizione dell IP Core La sezione generic, Figura 4.2, della descrizione VHDL contiene i parametri dell IP Core che potranno essere opportunamente impostati dall utente, a seguito dell inserimento dell IP Core all interno di un architettura (nel caso in cui non ne venisse esplicitato il valore ogni parametro assumerà il relativo valore di default indicato). Per lo stesso motivo sono stati inseriti in questa sezione anche i parametri C BASEADDR (indirizzo iniziale della zona di memoria assegnata all IP Core) e C HIGHADDR (indirizzo che delimita superiormente la zona di memoria assegnata all IP Core). In Figura 4.2 è possibile notare che il base address è stato impostato ad un valore maggiore rispetto a quello dell high address. Questa situazione, apparentemente immotivata, è in realtà voluta in quanto un utente che utilizzerà l IP Core senza modificare questi valori otterrà alcuni warning in fase di sintesi e sarà quindi portato a configurare i due parametri in maniera corretta in base alla propria architettura. È inoltre possibile notare come l algoritmo sia stato mantenuto parametrico rispetto a r e b. Il parametro w, come mostrato in Figura 4.4 del paragrafo relativo alla specifica del componente rc6 encoder core, è invece fissato al valore 32 in quanto rappresenta la lunghezza di ciascuno dei quattro registri che insieme compongono la parola da 128 bit da crittare. Come mostrato in Figura 4.1, l IP Core è costituito da una descrizione strutturale, ovvero è composto da due componenti, ciascuno dei quali viene inserito nell IP Core includendone l interfaccia (ovvero la serie di porte di input/output che lo connettono con l esterno) e creandone un istanza collegando correttamente le porte tramite un operazione di mappatura. 45

54 4.2. STESURA DELLA DESCRIZIONE VHDL Figura 4.2: Parte generic dell IP Core Il primo dei due componenti in questione è il Pselect, che, come già accennato, si occupa dell interfacciamento con il bus OPB. Questo componente si trova nella libreria standard di Xilinx proc common b. Il secondo componente è l rc6 encoder core, che costituisce la parte centrale dell IP Core. La descrizione relativa a questa parte verrà descritta nel paragrafo seguente, Nell interfaccia del componente si trovano i parametri w, r e b che sono gli stessi relativi all algoritmo RC6. Essi vengono poi passati all rc6 encoder core e mappati tramite il port map, come mostrato in Figura 4.3. Figura 4.3: Creazione dell istanza e mappatura del componente rc6 encoder core 46

55 4.2. STESURA DELLA DESCRIZIONE VHDL Descrizione del componente rc6 encoder core Il componente rc6 encoder core ha un interfaccia (entity) ed una parte che ne descrive il comportamento (architecture). Come mostrato in Figura 4.4, l interfaccia presenta nella sezione generic i parametri relativi all algoritmo, come già esposto in precedenza all inizio del paragrafo Nella sezione port sono invece presenti le porte utilizzate per comunicare con l esterno. In particolare la porta RD NWR permette di leggere o scrivere dati nei registri del componente a seconda del proprio valore. Inoltre, è possibile scrivere un dato da 32 bit indicando il dato stesso e l indirizzo di destinazione rispettivamente attraverso le porte Write Data e Address. Infine, la porta d uscita Read Data permette di leggere il dato contenuto all indirizzo puntato da Address nel momento in cui il flag Data Valid risulta avere valore 1. In Figura 4.4 è possibile inoltre notare le porte opb clk e Interrupt. La prima verrà collegata al clock del bus OPB, il bus sincrono al quale è collegato l IP Core, mentre la seconda costituisce il segnale che assumerà valore logico 1 nel momento in cui i dati in ingresso saranno stati opportunamente crittati. Figura 4.4: Interfaccia del componente rc6 encoder core Il meccanismo tramite il quale vengono scritti i 4 registri A, B, C, D è illustrato in Figura 4.5. Nel caso in cui la porta RESET N sia impostata a 0, verranno impostati a 0 47

56 4.2. STESURA DELLA DESCRIZIONE VHDL tutti i registri del componente nel caso di scrittura, mentre verrà azzerato il contenuto di Read Data nel caso di lettura. Il processo di scrittura scrive nel particolare registro con indirizzo Address ciò che si trova in Write Data, mentre il processo di lettura scrive in Read Data il contenuto del registro puntato da Address. Figura 4.5: Scrittura dei registri 48

57 4.2. STESURA DELLA DESCRIZIONE VHDL La lettura avviene con un procedimento analogo a quello visto per la scrittura ed è illustrato in Figura 4.6. Figura 4.6: Lettura dei registri Si noti che tutti i registri hanno un indirizzo fisso, tranne la serie di registri utilizzata per memorizzare il valore L, ovvero la chiave di crittazione. Questo è dovuto al fatto che la dimensione di L è variabile ed ha dunque uno spazio riservato nella zona di memoria, che parte dall indirizzo x0000. Oltre ai registri utilizzati per la memorizzazione dei dati esistono due ulteriori registri utilizzati per inviare particolari comandi all IP Core. Il primo registro ha indirizzo x0114 e la scrittura di un qualsiasi dato all interno di esso porta all avvio dell algoritmo di crittazione. Il secondo ha invece indirizzo x0110 e la scrittura su di esso porta all abbassamento del valore del segnale di interrupt. Quest ultima caratteristica risulta utile, nel momento in cui si utilizza l IP Core, per non avere una continua emissione di valori sullo standard output a seguito dell innalzamento del segnale di interrupt causato dal termine dell algoritmo. 49

58 4.2. STESURA DELLA DESCRIZIONE VHDL La struttura dei registri è mostrata in Figura 4.7. Figura 4.7: Struttura dei registri All interno del componente rc6 encoder core è presente la codifica in VHDL dei due algoritmi key schedule e crypt, necessari per la crittazione RC6, illustrati nel Capitolo 2. Descrizione VHDL dell algoritmo di Key Schedule Il primo algoritmo, il key schedule, costituisce una sorta di inizializzazione delle chiavi di crittazione utilizzate poi all interno dell algoritmo vero e proprio. Queste chiavi sono ricavate e memorizzate nell array S a partire dalla chiave fornita dall utente (array L) e dall impiego di due costanti (chiamate anche magic numbers) variabili a seconda del numero di bit della parola da crittare. L algoritmo è strutturato in tre parti. La prima è un inizializzazione delle variabili utilizzate successivamente, la seconda è un ciclo ripetuto un numero di volte variabile a seconda del parametro r e la terza è costituita anch essa da assegnamenti a variabili. 50

59 4.2. STESURA DELLA DESCRIZIONE VHDL La parte più dispendiosa in termini di risorse hardware è sicuramente la seconda, ovvero quella riguardante il ciclo, in quanto il sintetizzatore VHDL, lo strumento che trasforma in hardware la descrizione iniziale, produce un numero di repliche pari al numero totale di iterazioni dei componenti di una singola iterazione; ad esempio un ciclo che esegue una somma, iterato per 20 volte, è sintetizzato in realtà con 20 sommatori. Una struttura come quella appena descritta porta inevitabilmente ad avere una grande occupazione di area su FPGA ed inoltre arriva ad avere velocità poco sostenute in quanto tutte le iterazioni del ciclo vengono eseguite in un solo ciclo di clock, portando ad un aumento del periodo (e quindi una diminuzione della frequenza massima) dello stesso. Alcune considerazioni sulla descrizione del componente portano però alla soluzione del problema suddetto. Ovviamente, considerando che tutte le iterazioni del ciclo sono uguali tra loro, esse utilizzeranno gli stessi tipi di componenti. Ciò offre la possibilità di far eseguire una singola iterazione per ciclo di clock (utilizzando ad ogni ciclo gli stessi componenti) e di enumerare le iterazioni attraverso un contatore. Il circuito pensato per l implementazione dell algoritmo di key schedule è quindi composto da un blocco di componenti hardware che eseguono una delle iterazioni del ciclo su ogni fronte di salita del clock. Inoltre è presente un flip-flop che mantiene il valore del registro L, contenente la chiave fornita dall utente. Quest ultimo componente agisce invece sul fronte di discesa del clock, vedi Figura 4.8, in modo da avere in un intero ciclo di clock un iterazione ed una memorizzazione. Figura 4.8: Descrizione del flip-flop che mantiene il valore del registro L 51

60 4.2. STESURA DELLA DESCRIZIONE VHDL Il circuito fin qui descritto è illustrato in Figura 4.9. È qui possibile notare anche l uscita dell algoritmo, costituita dal registro S, che andrà poi a comporre parte dell ingresso dell algoritmo di crittazione. Figura 4.9: Circuito per l algoritmo di key schedule Con l introduzione del blocco iterazione del ciclo si giunge alla soluzione del problema di elevata occupazione dell area da parte dell IP Core. Senza l utilizzo di suddetto blocco, con l impiego dei parametri standard dell algoritmo RC6 ed un valore del parametro b pari a 16, il ciclo del key schedule portava a 132 repliche di ciascun componente inserito nel blocco, in quanto le iterazioni che esso svolgeva erano, appunto, 132. Tuttavia si continua ad avere periodi di clock troppo lunghi in quanto anche le operazioni di una singola iterazione risultano impiegare un tempo troppo elevato. A questo secondo problema si può rimediare spezzando le singole operazioni di un iterazione. In questo modo ad ogni ciclo di clock si eseguirà una singola operazione. Attraverso l impiego di una macchina a stati finiti, implementabile attraverso un costrutto case-when, si memorizza di volta in volta l operazione raggiunta all interno di una singola iterazione. 52

61 4.2. STESURA DELLA DESCRIZIONE VHDL In Figura 4.10 è riportata la descrizione VHDL dell iterazione dell algoritmo di key schedule. Figura 4.10: Impiego della macchina a stati finiti per l algoritmo key schedule È possibile notare il segnale scand2 che memorizza lo stato della macchina a stati finiti raggiunto di volta in volta sempre all interno di una singola iterazione. La macchina in questione può assumere 7 stati differenti, ciascuno corrispondente ad un diverso valore assunto dal segnale scand2. L ultimo stato è contrassegnato dall etichetta others. Ciò è dovuto alla sintassi del costrutto case-when del VHDL che necessita la presenza dei rami di tutti i possibili valori assunti dalla variabile 53

62 4.2. STESURA DELLA DESCRIZIONE VHDL che comanda il costrutto. All interno dell ultimo stato, quello contrassegnato dal valore 6 del segnale scand2 si nota come la funzione REM presente nel VHDL sia stata resa attraverso l utilizzo di due costrutti if. La funzione REM permette di ottenere il resto della divisione intera tra due numeri naturali. Così come è stata creata nelle librerie del VHDL questa funzione non può essere sintetizzata, ovvero non è possibile creare un circuito hardware che la implementi, nel caso in cui il gli operandi non siano costanti oppure potenze di 2. Per questo motivo essa è stata sostituita con costrutti sintetizzabili come gli if, ai quali corrisponde un circuito hardware di tipo multiplexer. Nell algoritmo viene inoltre utilizzato un contatore, segnale denominato cont2, che scandisce le singole iterazioni del ciclo. Nel momento in cui il contatore supera il numero di iterazioni previste l algoritmo termina e porta ad uno il valore del segnale flag docrypt che permette l avvio dell algoritmo di crypt. Dalla descrizione sopra riportata si può inoltre notare l utilizzo della costante logw inizializzata appunto al valore del logaritmo in base 2 del parametro w. Per il calcolo di detto logaritmo è stata realizzata una funzione ad hoc in quanto questa operazione non è presente tra le librerie standard del VHDL. La funzione in questione, denominata log, converte innanzitutto l intero che riceve come parametro nella sua codifica binaria (che in VHDL è il tipo std logic vector). A questo punto restituisce il logaritmo come indice della posizione dell 1 più significativo di tale numero. La descrizione della funzione log è mostrata in Figura Figura 4.11: Descrizione della funzione log per il calcolo del logaritmo in base 2 54

63 4.2. STESURA DELLA DESCRIZIONE VHDL È da notare che questa funzione in questo caso non è essenziale, in quanto il parametro w è fissato e, di conseguenza, lo è anche il suo logaritmo. Si è scelto comunque di implementare la funzione per ricalcare esattamente le funzionalità dell algoritmo RC6 e per averla poi a disposizione per eventuali usi futuri dell IP Core. Descrizione VHDL dell algoritmo di Crypt L algoritmo di crypt presenta una struttura molto simile a quella del key schedule e per questo anche la descrizione VHDL dei due presenta una forma grossomodo identica. Il circuito dell algoritmo di crypt è presentato in Figura Figura 4.12: Circuito per l algoritmo crypt Si notano molte affinità con l algoritmo di key schedule, quali la presenza del blocco di iterazione e del blocco flip-flop. Anche in questo caso questi blocchi agiscono rispettivamente sul fronte di salita e di discesa del clock. Il flip-flop ha un funzionamento simile a quello per il segnale L mostrato in Figura 4.8. L unica 55

64 4.3. SINTESI E PLACE AND ROUTE DELL IP CORE differenza sta nel fatto che in questo caso esso gestisce quattro segnali anziché uno soltanto. Una differenza fondamentale tra gli algoritmi di crypt e di key schedule risiede però nel fatto che l algoritmo di crypt sfrutta l utilizzo di moltiplicatori. Questi componenti costituiscono l evoluzione dell algoritmo RC6 rispetto ai sui predecessori, ma purtroppo ne rappresentano anche il collo di bottiglia per quanto riguarda un implementazione hardware. Un moltiplicatore è infatti un componente molto complesso, caratterizzato da tempi relativamente lunghi per svolgere una singola operazione di moltiplicazione. La moltiplicazione è dunque l operazione che limita il valore massimo della frequenza di lavoro ottenibile dall IP Core. In Figura 4.13 è riportata la parte di descrizione VHDL dell algoritmo di crypt che sfrutta l uso di moltiplicatori. Figura 4.13: Moltiplicazioni nell algoritmo di crypt 4.3 Sintesi e Place And Route dell IP Core Una volta terminata l operazione di stesura della descrizione VHDL che riguarda l IP Core è possibile passare alle successive fasi di progettazione. Innanzitutto sono essenziali le prove di simulazione sulla descrizione scritta. 56

65 4.3. SINTESI E PLACE AND ROUTE DELL IP CORE Queste prove sono state realizzate con lo strumento Modelsim e sono discusse in dettaglio nel Capitolo 5, riguardante i test effettuati Riconoscimento dei componenti implementati La fase che segue la simulazione è la sintesi dei sorgenti, ovvero la conversione della descrizione VHDL in una netlist. La netlist così ottenuta potrà essere utilizzata direttamente per essere inserita in un architettura simile a quella descritta nelle premesse. Lo strumento software utilizzato per questa operazione è XST (Xilinx Synthetizer), sviluppato da Xilinx, presente all interno di ISE. Questo strumento offre una visualizzazione testuale dei vari componenti che esso identifica durante il processo di sintesi. In questo modo è possibile verificare che tutti i macro blocchi implementati siano correttamente riconosciuti. Sarà ad esempio necessario accertarsi che per ogni segnale del quale si desidera mantenere il valore durante i vari cicli di clock venga implementato un registro. In Figura 4.14 è riportato uno stralcio del file di report restituito dalla sintesi dei sorgenti VHDL. Si nota come il sintetizzatore abbia riconosciuto correttamente i registri da assegnare ai segnali S (chiavi di crittazione), L (chiave dell utente) ed ai segnali dei registri contenenti la parola da crittare. Figura 4.14: Riconoscimento dei registri per alcuni segnali Nel caso in esame è inoltre molto importante verificare l effettivo riconoscimento delle due macchine a stati finiti inserite nei due diversi algoritmi. In Figura 4.15 è possibile notare come siano state riconosciute correttamente le due macchine a stati finiti, rispettivamente per il segnale scand2 (per l algoritmo di key-schedule) e per il segnale scand (per l algoritmo di crypt). Si nota inoltre co- 57

66 4.3. SINTESI E PLACE AND ROUTE DELL IP CORE me le macchine siano sincronizzate dal segnale opb clk, che risulta essere il clock dell IP Core. Figura 4.15: Riconoscimento delle macchine a stati finiti Analisi delle temporizzazioni È possibile effettuare un analisi dei tempi e delle velocità di lavoro sempre attraverso i file di report restituiti dal programma ISE. In Figura 4.16 sono riportati i risultati dell analisi delle temporizzazioni effettuata sull IP Core RC6 encoder. Il dato più importante tra questi risultati è la massima frequenza raggiunta dall IP Core in quanto questo valore caratterizzerà poi la scelta dell architettura nella quale andare ad inserire l IP Core stesso. Come si vede in Figura 4.16 il valore della massima frequenza raggiunta dall RC6 encoder è pari a 48 MHz circa. Ciò significa che l IP Core potrà operare in un architettura con frequenza massima di lavoro inferiore od uguale a 48 MHz. 58

67 4.3. SINTESI E PLACE AND ROUTE DELL IP CORE Figura 4.16: Timing report per l IP Core RC6 encoder Occupazione della FPGA Un ulteriore dato che è possibile ottenere dall analisi dei risultati ottenuti dalla sintesi riguarda la quantità di area FPGA che l IP Core in questione occupa. In Figura 4.17 sono mostrati i risultati di occupazione d area. Figura 4.17: Report per l occupazione di area FPGA per l RC6 encoder Dalla figura emerge che risulta utilizzato il 58% delle slices ed il 45% delle LUT a 4 input. Una LUT (Look-UP Table) a 4 input è una piccola RAM a 16 flip-flop di memorizzazione. Le LUT sono utilizzate per implementare funzioni booleane a 4 input e stanno alla base delle FPGA. Un altro risultato rilevante è l occupazione di 6 MULT18X18. Questi componenti sono dei moltiplicatori che operano su ingressi da 18 bit ciascuno. Essi sono già implementati sulla FPGA e possono essere collegati in cascata per eseguire moltiplicazioni su ingressi più grandi di 18 bit. In questo caso vengono utilizzati 3 moltiplicatori 18x18 per ciascuna moltiplicazione 32x32 eseguita all interno dell algoritmo di crypt. 59

68 4.4 Definizione del driver software 4.4. DEFINIZIONE DEL DRIVER SOFTWARE Il driver software dell IP Core permette l utilizzo dell hardware che l IP Core stesso implementa. In altre parole contiene varie procedure che consentono di accedere all IP Core e modificare i valori di particolari registri. Il driver è stato scritto in codice C. Una sua opportuna compilazione in file elf ne permetterà l esecuzione, all interno dell architettura pensata per il progetto, da parte del processore MicroBlaze. Al fine di poter introdurre l IP Core in detta architettura, è necessario inserire i file che ne descrivono la parte software ed hardware in un opportuna struttura di cartelle. Questa struttura è illustrata in Figura Si noti che anche il nome della cartella principale segue lo standard per EDK, ovvero presenta il nome dell IP Core seguito dalla versione. Figura 4.18: Struttura cartelle dei file dell RC6 Nella cartella \hdl\vhdl andranno inseriti i due file VHDL contenenti la descrizione dell esterno dell IP Core e del core dello stesso. I file sorgenti del driver ed i loro file di header andranno invece inseriti nella cartella src. Il driver dovrà inoltre essere corredato di due ulteriori file di libreria, l MDD e il TCL, necessari per la compilazione e l esecuzione sul processore MicroBlaze, posizionati nella cartella data. All interno di quest ultima cartella saranno inoltre presenti i file PAO (Peripheral Analyze Order), contenente la lista di file HDL per la sintesi e l ordine con i quali essi andranno compilati, ed il file MPD (Microprocessor Peripheral Definition) che contiene le informazioni necessarie per l interfacciamento con l IP Core. 60

69 4.4. DEFINIZIONE DEL DRIVER SOFTWARE Struttura del driver Il driver dell IP Core è corredato, come già accennato, dai file mdd e tcl. Il file rc6 encoder.mdd costituisce una personalizzazione del driver. Esso contiene la lista delle librerie necessarie al funzionamento del driver e la lista dei file sorgenti che al momento della creazione delle librerie verranno copiati all interno della cartella corrispondente all IP Core RC6 encoder nella struttura delle cartelle del processore. Nel caso in esame l unica libreria utilizzata è common v1 00 a inclusa alla linea 12 di Figura 4.19, mentre i files da copiare sono inclusi alla linea 13. Dalla linea 15 alla 20 è invece descritto l interrupt associato all IP Core che viene sollevato al termine della crittazione. Figura 4.19: Il file MDD relativo all IP Core Il file rc6 encoder.tcl contiene invece il codice dello script che EDK eseguirà durante la creazione del driver. Un importante potenzialità di questo file è stata utilizzata al fine di inserire all interno del file xparameters.h, generato automaticamente dalla creazione delle librerie per l architettura, i tre parametri W, R, B relativi all IP Core, oltre ai già presenti HIGHADDR e BASEADDR, come mostrato nel codice sottostante, Figura

70 4.4. DEFINIZIONE DEL DRIVER SOFTWARE Figura 4.20: Aggiunta dei parametri W, R e B Questa operazione consentirà l utilizzo dei valori dei parametri all interno del codice C che comporrà la parte software dell architettura su FPGA. Il file rc6 encoder.c contiene l implementazione vera e propria delle funzioni che costituiscono il driver dell IP Core. Esso mette a disposizione funzioni in grado di scrivere e leggere i valori dei registri interni all IP Core, con l aggiunta di altre particolari procedure che consentono l avvio dell algoritmo di crittazione o l arresto dell emissione dei dati di output. Il file rc6 encoder.h contiene l intestazione di tutte le funzioni contenute in rc6 encoder.c. È necessario includere questo file all interno del codice generale da far eseguire al processore MB al fine di permettere ad esso l utilizzo delle funzioni finora descritte. Insieme ai file C ed H sopra citati, all interno della cartella src, è anche presente un file denominato Makefile che contiene le istruzioni di compilazione dei file C ed H. Il comando di generazione delle librerie dell architettura eseguirà quindi questo file che a sua volta si preoccuperà di compilare correttamente i file che compongono il driver. In Figura 4.21 è presente l andamento temporale della generazione del driver da parte del tool di generazione delle librerie di EDK. In detta figura si può inoltre notare che il makefile compila i file sorgenti del driver una volta che essi sono stati copiati nelle cartelle contenenti le librerie del processore. 62

71 4.4. DEFINIZIONE DEL DRIVER SOFTWARE Figura 4.21: Andamento temporale della generazione del driver di un IP Core Funzioni del driver Il file sorgente (rc6 encoder.c) contiene, come già detto, le tre funzioni che consentono l accesso vero e proprio ai registri dell IP Core. Queste funzioni sono descritte in dettaglio di seguito e mostrate nelle Figure 4.22, 4.23 e Ciascuna di esse riceve come parametro l indirizzo (o locazione) dell IP Core, ovvero il Base Address, in modo da poter accedere ai registri attraverso un valore di spiazzamento rispetto a tale indirizzo. La funzione write regs scrive i quattro valori interi che costituiscono le parti della parola da 128 bit da crittare, all interno dei registri A, B, C e D dell IP Core. Il tipo dei parametri è int in quanto questo tipo è rappresentato in memoria dal C con 32 bit, ovvero la dimensione di un singolo registro dell IP Core. Questa funzione richiede all utente di mantenere, durante il passaggio dei parametri, l ordine delle quattro parti di suddivisione della parola da crittare (in ra la prima parte, in rd l ultima). È inoltre richiesto di fornire i parametri con codifica Big Endian. Questo controllo non è necessario se si utilizzano, per l implementazione, macchine PC-compatibili. I parametri così ottenuti vengono poi inviati ai corrispondenti registri dell IP Core, come mostrato in Figura

72 4.4. DEFINIZIONE DEL DRIVER SOFTWARE Figura 4.22: Scrittura dei registri La funzione userkey, riportata in Figura 4.23, scrive 4 byte della chiave di crittazione passata dall utente nell apposito registro dell IP Core. Figura 4.23: Scrittura di 4 byte della chiave utente Essa riceve la parte della chiave come parametro intero, quindi rappresentato già con 32 bit, ed uno spiazzamento a partire dall inizio del registro contenente la chiave. Tale spiazzamento è ottenibile in questo modo: si consideri per esempio il caso in cui la chiave abbia lunghezza 16 byte; l utente dovrà perciò dividerla in 4 parti da 4 byte ciascuna; a questo punto la prima parte avrà spiazzamento 0, mentre l ultima parte avrà spiazzamento pari al numero totale chiavi-1, ovvero 3. La 64

73 4.4. DEFINIZIONE DEL DRIVER SOFTWARE chiave dell utente è una stringa di lunghezza totale b byte. Nel caso in cui b non sia un multiplo di 4 basterà scrivere gli ultimi byte della chiave all interno di un intero. Il compilatore C provvederà poi ad estendere con zeri aggiuntivi fino a raggiungere la lunghezza di un intero (4 byte), come richiesto dalle specifiche RC6. È da notare che la funzione userkey effettua inoltre un controllo per accertarsi che lo spiazzamento nel quale l utente intende posizionare la propria parte di chiave non esca dallo spazio di indirizzamento riservato per la chiave utente. Per poter effettuare questo tipo di controllo, la funzione riceve il parametro b contenente la lunghezza in byte della chiave utente. La funzione risultati, mostrata in Figura 4.24, permette di ottenere i valori finali della crittazione dall IP Core. I risultati, ovvero il contenuto dei registri A, B, C, D dell IP Core, vengono scritti all interno di quattro variabili intere passate per indirizzo. Figura 4.24: Restituzione dei dati contenuti nei registri Accanto alle tre funzioni sopra descritte ne sono state create altre due che permettono di inviare particolari comandi all IP Core. Start, visibile in Figura 4.25, invia il comando di crittazione all IP Core provocando l attivazione del processo di creazione delle chiavi di crittazione e, conseguentemente, l avvio della procedura di crittazione all interno del codice VHDL. Al termine della procedura di crittazione verrà sollevato un segnale di interrupt, in modo da consentire all utente di sapere il momento nel quale i dati letti dall IP Core saranno corretti. 65

74 4.4. DEFINIZIONE DEL DRIVER SOFTWARE Si noti che la funzione start esegue, prima di avviare l algoritmo, un controllo per accertarsi che non sia già in esecuzione un altra crittazione. Questa funzione restituisce il valore 1 nel caso essa vada a buon fine, mentre restituisce il valore 0 in caso contrario. Figura 4.25: Procedura start Infine la funzione fine, mostrata in Figura 4.26, consente di riportare a valore logico basso il segnale di interrupt di cui si è parlato in precedenza. Ciò consente di non avere una continua emissione di valori da parte del driver nel momento in cui viene sollevato il segnale di interrupt al termine della crittazione. Figura 4.26: Procedura fine Con questo paragrafo si conclude la trattazione delle funzioni svolte dal driver; nel capitolo seguente verranno illustrati i test effettuati con lo strumento Model- Sim per la verifica della correttezza comportamentale del codice che implementa il componente e si proseguirà con un analisi delle prestazioni ottenute con il componente realizzato. 66

75 Capitolo 5 Test effettuati ed analisi delle prestazioni Di seguito vengono illustrati i vari test di prova effettuati sulla descrizione VHDL dell IP Core al termine dell implementazione. I test sono principalmente suddivisi in due sezioni. La prima riguarda prove eseguite sulla descrizione VHDL impostando i parametri standard dell algoritmo RC6 riportati nella specifica dello stesso. La seconda parte invece riguarda test effettuati sulla stessa descrizione, per accertarsi che essa esegua correttamente crittazioni in sequenza. Infine è presente un analisi delle prestazioni dell IP Core in termini di tempo impiegato per una crittazione. 5.1 Test presenti nella specifica RC6 I test eseguiti sulla descrizione VHDL che compone l IP Core sono, come già accennato, gli stessi presentati nel documento ufficiale contenente le specifiche dell algoritmo RC6. Operativamente questi test consistono nel fornire in input all algoritmo particolari valori della parola da crittare e della chiave di crittazione e nel verificare che i valori restituiti in output siano corretti. I test in esame sono stati effettuati sul sorgente contenente la descrizione VHDL del componente rc6 encoder core, visto che gli algoritmi veri e propri sono con- 67

76 5.1. TEST PRESENTI NELLA SPECIFICA RC6 tenuti in questa parte. Tramite l utilizzo di ModelSim è stato possibile simulare il comportamento della descrizione VHDL, forzando i registri ai valori corrispondenti delle chiavi e della parola da crittare e guardando l evoluzione di detti valori ad ogni ciclo di clock. In pratica è stato simulato il comportamento del processore durante la scrittura dei registri dell IP Core e durante l invio del comando di partenza della crittazione. È da sottolineare che, mentre la parola da crittare ha una lunghezza fissa (128 bit), la chiave di crittazione può avere una dimensione in byte variabile (il valore della lunghezza in bit deve comunque restare un multiplo di 8). In primo luogo si è cercato di esaminare il comportamento del codice a fronte di un ingresso di soli zeri sia per la parola, sia per la chiave, con una chiave di 16 byte, ovvero della stessa lunghezza della parola da crittare: test n.1 - illustrato in Figura 5.1. Figura 5.1: Valori dei segnali VHDL per il test numero 1 restituiti da ModelSim Una volta appurato il corretto funzionamento della periferica in queste condizioni si è passati all inserimento di altri valori diversi dallo zero: (test numero 2 in Tabella 5.2). 68

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

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

Architetture dei Dispositivi Programmabili Avanzati Altera

Architetture dei Dispositivi Programmabili Avanzati Altera Architetture dei Dispositivi Programmabili Avanzati Altera Elettronica dei Sistemi Digitali LS Bologna, 21 Novembre 2003 Aldo Romani aromani@deis.unibo.it tel. 051 209 3811 Lab. Star-Arces, V.le Pepoli,

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

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

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

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).!

ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).! ARCHITETTURA DI UN ELABORATORE! Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).! MACCHINA DI VON NEUMANN! UNITÀ FUNZIONALI fondamentali! Processore

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 La memoria principale 2 Organizzazione della memoria La memoria principale è organizzata come un insieme

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

Esame di INFORMATICA Lezione 4

Esame di INFORMATICA Lezione 4 Università di L Aquila Facoltà di Biotecnologie Esame di INFORMATICA Lezione 4 MACCHINA DI VON NEUMANN Il sottosistema di memorizzazione (memoria) contiene dati + istruzioni, inseriti inizialmente tramite

Dettagli

Il modello di Von Neumann

Il modello di Von Neumann Il modello di Von Neumann Appunti di STA per le classi seconde ind. informatiche Page 1 Il modello architetturale Per modello architetturale, si intende la descrizione delle parti del sistema e la loro

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

Fondamenti di Informatica e Programmazione. P ro f. G i a n n i D A n g e l o

Fondamenti di Informatica e Programmazione. P ro f. G i a n n i D A n g e l o Fondamenti di Informatica e Programmazione CPU e Linguag gio Macchina P ro f. G i a n n i D A n g e l o Email: giadangelo@unisa.it A.A. 2018/19 Elaborazione dell Informazione L'elaborazione delle informazioni

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

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

Architettura dei computer

Architettura dei computer Architettura dei computer In un computer possiamo distinguere quattro unità funzionali: il processore la memoria principale (memoria centrale, RAM) la memoria secondaria i dispositivi di input/output La

Dettagli

Modulo: Elementi di Informatica

Modulo: Elementi di Informatica ARCHITETTURA DI VON NEUMANN Facoltà di Medicina Veterinaria Corso di laurea in Tutela e benessere animale Corso Integrato: Fisica medica e statistica Modulo: Elementi di Informatica A.A. 2009/10 Lezione

Dettagli

A.A. 2018/2019. CPU e Linguaggio Macchina FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

A.A. 2018/2019. CPU e Linguaggio Macchina FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante A.A. 2018/2019 Docente Prof. Raffaele Pizzolante FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE Architettura di Von Neumann Modello concettuale di un architettura di computer che permette di rappresentare,

Dettagli

Architettura del calcolatore (Seconda parte)

Architettura del calcolatore (Seconda parte) Architettura del calcolatore (Seconda parte) Ingegneria Meccanica e dei Materiali Università degli Studi di Brescia Prof. Massimiliano Giacomin LINGUAGGIO E ORGANIZZAZIONE DEL CALCOLATORE Linguaggio assembly

Dettagli

L ARCHITETTURA DEI CALCOLATORI. Il processore La memoria centrale La memoria di massa Le periferiche di I/O

L ARCHITETTURA DEI CALCOLATORI. Il processore La memoria centrale La memoria di massa Le periferiche di I/O L ARCHITETTURA DEI CALCOLATORI Il processore La memoria centrale La memoria di massa Le periferiche di I/O Caratteristiche dell architettura 2 Flessibilità adatta a svolgere diverse tipologie di compiti

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

Sistemi logici complessi

Sistemi logici complessi Sistemi logici complessi circuiti logici standard prevedono, per la realizzazione di un sistema complesso, i seguenti passi: definizione delle specifiche descrizione del sistema mediante interconnessione

Dettagli

Fondamenti di Informatica B

Fondamenti di Informatica B Fondamenti di Informatica B Lezione n. 8 Alberto Broggi Gianni Conte A.A. 2005-2006 Fondamenti di Informatica B DESCRIZIONE LIVELLO REGISTRO REGISTER TRANSFER LEVEL (RTL) I MODULI BASE RTL STRUTTURE DI

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

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

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

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Università degli Studi di Padova Facoltà di Scienze MM.FF.NN. Corso di Laurea in Informatica docente: Alessandro Sperduti Informazioni Generali Lucidi ed esercizi disponibili

Dettagli

Corso di Calcolatori Elettronici I

Corso di Calcolatori Elettronici I Corso di Calcolatori Elettronici I Architettura dei Calcolatori Elettronici: primi cenni introduttivi Roberto Canonico Università degli Studi di Napoli Federico II A.A. 2017-2018 Roberto Canonico Corso

Dettagli

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II)

Pag. 1. Informatica Facoltà di Medicina Veterinaria a.a. 2012/13 prof. Stefano Cagnoni. Architettura del calcolatore (parte II) 1 Università degli studi di Parma Dipartimento di Ingegneria dell Informazione Informatica a.a. 2012/13 La inserita nella architettura dell elaboratore Informatica Facoltà di Medicina Veterinaria a.a.

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

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

LABORATORIO DI INFORMATICA

LABORATORIO DI INFORMATICA LABORATORIO DI INFORMATICA Corso di laurea in Scienze della Formazione Primaria a.a.2014/2015 A cura del Prof. Sergio Miranda LEZIONE N.3 Architettura di Von Neumann PREMESSA Caratteristica fondamentale

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

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

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1 Programma del corso Informatica di

Dettagli

Architettura del Calcolatore

Architettura del Calcolatore Giuseppe Manco Lezione 3 17 Ottobre 2003 Architettura del calcolatore Il calcolatore è uno strumento programmabile per la rappresentazione, la memorizzazione e l elaborazione delle informazioni un calcolatore

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

Modulo 1: Le I.C.T. UD 1.4d: La Memoria Centrale

Modulo 1: Le I.C.T. UD 1.4d: La Memoria Centrale Modulo 1: Le I.C.T. : La Memoria Centrale Prof. Alberto Postiglione Corso di Informatica Generale (AA 07-08) Corso di Laurea in Scienze della Comunicazione Università degli Studi di Salerno LA MEMORIA

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

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

Architettura dei Calcolatori Elettronici

Architettura dei Calcolatori Elettronici Architettura dei Calcolatori Elettronici Prof. Orazio Mirabella L architettura del Calcolatore: esame delle sue caratteristiche Fondamentali Capacità di eseguire sequenze di istruzioni memorizzate Calcolatore

Dettagli

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori

Programma del corso. Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori Programma del corso Introduzione Rappresentazione delle Informazioni Calcolo proposizionale Architettura del calcolatore Reti di calcolatori Cos è un Calcolatore? Un computer (calcolatore) è una macchina

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Architetture degli elaboratori Il calcolatore Un calcolatore è sistema composto da un elevato numero di componenti Il suo funzionamento può essere descritto se lo si considera come

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

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Università degli Studi di Padova Scuola di Scienze Corso di Laurea in Informatica docente: Alessandro Sperduti Informazioni Generali Lucidi ed esercizi disponibili in formato

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

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

Il processore. Istituzionii di Informatica -- Rossano Gaeta

Il processore. Istituzionii di Informatica -- Rossano Gaeta Il processore Il processore (detto anche CPU, ovvero, Central Processing Unit) è la componente dell unità centrale che fornisce la capacità di elaborazione delle informazioni contenute nella memoria principale

Dettagli

La memoria principale

La memoria principale La memoria principale DRAM (Dynamic RAM) il contenuto viene memorizzato per pochissimo tempo per cui deve essere aggiornato centinaia di volte al secondo (FPM, EDO, SDRAM, RDRAM) SRAM (Static RAM) veloce

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

Architettura. Argomenti. Modello di Von Neumann. Corso di Laurea in Ingegneria Biomedica aa 2003/2004. Ing. Antonio Coronato. Modello di Von Neumann

Architettura. Argomenti. Modello di Von Neumann. Corso di Laurea in Ingegneria Biomedica aa 2003/2004. Ing. Antonio Coronato. Modello di Von Neumann Architettura Corso di Laurea in Ingegneria Biomedica aa 2003/2004 Ing. Antonio Coronato 1 Argomenti Modello di Von Neumann, Bus, Memoria centrale e dispositivi Data Path delle architetture di Von Neumann

Dettagli

Il Processore: l unità di controllo

Il Processore: l unità di controllo Il Processore: l unità di controllo La frequenza con cui vengono eseguiti i cicli di esecuzione è scandita da una componente detta clock Ad ogni impulso di clock la UC esegue un ciclo di esecuzione di

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

Dispositivi logici programmabili. Marco Cesati. Schema della lezione. Logiche programmabili. Dispositivi logici programmabili.

Dispositivi logici programmabili. Marco Cesati. Schema della lezione. Logiche programmabili. Dispositivi logici programmabili. Di cosa parliamo in questa lezione? Lezione E5 Logiche In questa lezione si descrivono i dispositivi logici Logiche Sistemi embedded e real-time 2 Struttura degli 24 gennaio 23 3 Dipartimento di Ingegneria

Dettagli

VERIFICA DI SISTEMI. 5 Domanda [1 punto] Calcolare la velocità di trasferimento dei seguenti hard disk:

VERIFICA DI SISTEMI. 5 Domanda [1 punto] Calcolare la velocità di trasferimento dei seguenti hard disk: VERIFICA DI SISTEMI 1 Domanda [2 punti] Illustra la funzione della CPU e degli eventuali elementi che la costituiscono, specificando quali sono i parametri che ne caratterizzano il funzionamento. Spiega

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 Architettura dei calcolatori 2 Architettura di un calcolatore Che cos è un calcolatore? Come funziona

Dettagli

Chapter 6 Selected Design Topics

Chapter 6 Selected Design Topics Logic and Computer Design Fundamentals Chapter 6 Selected Design Topics Part 4 Programmable Implementation Technologies Charles Kime & Thomas Kaminski 2008 Pearson Education, Inc. (Hyperlinks are active

Dettagli

Architettura di un calcolatore

Architettura di un calcolatore Architettura di un calcolatore Processore: CPU Componente elettronico costituito da minuscole componenti di silicio, chiamate CHIP. Esegue le istruzioni implementate nel SW, tramite una serie di operazioni

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

Corso di Fondamenti di Informatica Elementi di Architettura

Corso di Fondamenti di Informatica Elementi di Architettura di Cassino e del Lazio Meridionale Corso di Informatica Elementi di Architettura Anno Accademico 2016/2017 Francesco Tortorella Modello di von Neumann Bus di sistema CPU Memoria Centrale Interfaccia Periferica

Dettagli

Architettura di un calcolatore: primi cenni introduttivi. Calcolatore: sottosistemi

Architettura di un calcolatore: primi cenni introduttivi. Calcolatore: sottosistemi Corso di Calcolatori Elettronici I A.A. 2011-2012 Architettura di un calcolatore: primi cenni introduttivi Lezione 1 (seconda parte) Prof. Roberto Canonico Università degli Studi di Napoli Federico II

Dettagli

Cosa è? Come lo si usa? Come iniziare? Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO)

Cosa è? Come lo si usa? Come iniziare? Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) Cosa è? Come lo si usa? Come iniziare? Author: Ing. Sebastiano Giannitto (ITIS M.BARTOLO PACHINO) 1^ parte Cosa è Arduino? Arduino è una piattaforma di sviluppo open-source basata su una semplice scheda

Dettagli

Architettura del. Calcolatori (1) Calcolatori (2) L architettura di Von Neumann. CPU RAM Memoria I/O. secondaria. bus

Architettura del. Calcolatori (1) Calcolatori (2) L architettura di Von Neumann. CPU RAM Memoria I/O. secondaria. bus Architettura del calcolatore Calcolatori (1) Introdotti all'inizio degli anni 1940 Costruiti assemblano componenti elettronici elementari per memorizzare informazioni ed eseguire programmi informazioni

Dettagli

Architettura degli Elaboratori

Architettura degli Elaboratori Architettura degli Elaboratori Università degli Studi di Padova Scuola di Scienze Corso di Laurea in Informatica docenti: Silvia Crafa, Nicolò Navarin (lab), Alessandro Sperduti Docenti Silvia Crafa Nicolò

Dettagli

La macchina di Von Neumann. UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA CORSO DI "PROGRAMMAZIONE I"

La macchina di Von Neumann. UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA CORSO DI PROGRAMMAZIONE I 23/11/218 UNIVERSITÀ DEGLI STUDI DEL SANNIO Benevento DING DIPARTIMENTO DI INGEGNERIA La macchina di Von Neumann Unità periferiche Memoria Centrale CPU CORSO DI "PROGRAMMAZIONE I" Bus Dati Bus Indirizzi

Dettagli

Elementi di informatica

Elementi di informatica Elementi di informatica Architetture degli elaboratori Il calcolatore Un calcolatore è sistema composto da un elevato numero di componenti Il suo funzionamento può essere descritto se lo si considera come

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

A.S. 2017/2018 PIANO DI LAVORO PREVENTIVO CLASSE 4Be

A.S. 2017/2018 PIANO DI LAVORO PREVENTIVO CLASSE 4Be A.S. 2017/2018 PIANO DI LAVORO PREVENTIVO CLASSE 4Be Docenti Disciplina Cinzia Brunetto, Antonino Cacopardo SAE Sistemi Automatici Elettronici Competenze disciplinari di riferimento Il percorso formativo

Dettagli

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi

Architettura di un calcolatore: introduzione. Calcolatore: sottosistemi Corso di Calcolatori Elettronici I A.A. 2012-2013 Architettura di un calcolatore: introduzione Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e

Dettagli

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S Microprocessori - Microcontrollori.

Nicola Amoroso. Corso introduttivo sui microcontrollori A. S Microprocessori - Microcontrollori. Corso introduttivo sui microcontrollori A. S. 2007 2008 Microprocessori - Microcontrollori Nicola Amoroso namoroso@mrscuole.net NA L1 1 Cosa e un microcontrollore? > Un piccolo computer, contenente al

Dettagli

ARCHITETTURA DI UN ELABORATORE. Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40).

ARCHITETTURA DI UN ELABORATORE. Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40). ARCHITETTURA DI UN ELABORATORE Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40). MACCHINA DI VON NEUMANN UNITÀ FUNZIONALI fondamentali Processore (CPU)

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

21/09/2015 SISTEMI E RETI. Router Cisco. Parte 1 - Introduzione. A cura dell Ing. Claudio Traini

21/09/2015 SISTEMI E RETI. Router Cisco. Parte 1 - Introduzione. A cura dell Ing. Claudio Traini SISTEMI E RETI Router Cisco Parte 1 - Introduzione A cura dell Ing. Claudio Traini 1 router sottoreti terminali Funzioni svolte dai Router I Router consentono l interconnessione tra sottoreti diverse I

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

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

Architettura di un calcolatore: primi cenni introduttivi

Architettura di un calcolatore: primi cenni introduttivi Corso di Calcolatori Elettronici I Architettura di un calcolatore: primi cenni introduttivi ing. Alessandro Cilardo Corso di Laurea in Ingegneria Biomedica Architettura di un calcolatore Cosa significa

Dettagli

Programmazione A.A Architettura dei Calcolatori. ( Lezione V ) Componenti hardware e loro schema funzionale

Programmazione A.A Architettura dei Calcolatori. ( Lezione V ) Componenti hardware e loro schema funzionale Programmazione A.A. 2002-03 I Architettura dei Calcolatori ( Lezione V ) Componenti hardware e loro schema funzionale Prof. Giovanni Gallo Dr. Gianluca Cincotti Dipartimento di Matematica e Informatica

Dettagli

Il computer P R O F. L O R E N Z O P A R I S I

Il computer P R O F. L O R E N Z O P A R I S I Il computer P R O F. L O R E N Z O P A R I S I Un po di storia Le prime macchine per il calcolo automatico risalgono al 1940. Il calcolatore più potente di quel periodo era l ENIAC, in grado di svolgere

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

Informatica giuridica

Informatica giuridica Informatica giuridica Corso di laurea in Scienze dei Servizi giuridici Corso di laurea magistrale in Giurisprudenza A.A. 2015/16 L architettura hardware degli elaboratori La scheda madre Memoria principale

Dettagli

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine. Reti logiche

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO. Facoltà di Ingegneria Università degli Studi di Udine. Reti logiche FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Facoltà di Ingegneria Università degli Studi di Udine Reti logiche 2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1 Nota di

Dettagli

Laboratorio di Informatica I

Laboratorio di Informatica I Struttura della lezione Lezione 2: Introduzione al corso Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Classificazione degli elaboratori Alcuni concetti base: la struttura

Dettagli

Marco Tarini - Università dell'insubria A.A. 2016/17. Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate

Marco Tarini - Università dell'insubria A.A. 2016/17. Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Università degli Studi dell Insubria Dipartimento di Scienze Teoriche e Applicate Astrazione e Macchine Virtuali parte 2: in un tipico calcolatore I livelli nei moderni calcolatori 6. Livello delle applicazioni

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 3-La memoria 1 Prerequisiti Concetto di memoria Dati e istruzioni Bit e byte 2 1 Introduzione In questa Unità studiamo più in dettaglio la memoria del computer e le sue funzioni.

Dettagli

INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo

INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo Prof. Carlo Rossi DEIS - Università di Bologna Tel: 051 2093020 email: crossi@deis.unibo.it Classificazione Processori

Dettagli

Le istruzioni del linguaggio gg macchina corrispondono ad operazioni elementari di elaborazione operazioni aritmetiche

Le istruzioni del linguaggio gg macchina corrispondono ad operazioni elementari di elaborazione operazioni aritmetiche ELABORAZIONE Le istruzioni del linguaggio gg macchina corrispondono ad operazioni elementari di elaborazione operazioni aritmetiche operazioni relazionali (confronto tra dati) operazioni booleane altre

Dettagli

INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo. Classificazione. I microcontrollori

INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO Processori per sistemi di controllo. Classificazione. I microcontrollori INGEGNERIA E TECNOLOGIE DEI SISTEMI DI CONTROLLO per sistemi di controllo Prof. Carlo Rossi DEIS - Università di Bologna Tel: 051 2093020 email: crossi@deis.unibo.it Classificazione General Purpose CISC

Dettagli

Le Memorie. Classe III Telecomunicazioni Sistemi e Reti. Prof. Tullio Parcesepe

Le Memorie. Classe III Telecomunicazioni Sistemi e Reti. Prof. Tullio Parcesepe Le Memorie Classe III Telecomunicazioni Sistemi e Reti Prof. Tullio Parcesepe In questa lezione impareremo: La memorizzazione delle informazioni Tipi differenti di memorie Gli indirizzi delle celle di

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

ARCHITETTURA DEL CALCOLATORE

ARCHITETTURA DEL CALCOLATORE ARCHITETTURA DEL CALCOLATORE AVVERTENZE Questi appunti non vogliono essere degni sostituti di un buon libro di testo e hanno il solo scopo di aiutare gli studenti dei corsi di informatica che affrontano

Dettagli

ARCHITETTURA DI UN ELABORATORE

ARCHITETTURA DI UN ELABORATORE ARCHITETTURA DI UN ELABORATORE Unità funzionali Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40). La macchiana di Von Neumann: Non distingueva fra RAM

Dettagli

Laboratorio di Informatica L-A 1

Laboratorio di Informatica L-A 1 ARCHITETTURA DI UN ELABORATORE Unità funzionali Ispirata al modello della Macchina di Von Neumann (Princeton, Institute for Advanced Study, anni 40). La macchina di Von Neumann: Non distingueva fra RAM

Dettagli

CALCOLATORI ELETTRONICI. I dispositivi di memoria

CALCOLATORI ELETTRONICI. I dispositivi di memoria CALCOLATORI ELETTRONICI I dispositivi di memoria I dispositivi di memoria Linguaggi ad alto livello/ Applicazioni SW Informatica Sistema operativo Assembler ISA Architettura di un calcolatore Memoria I/O

Dettagli