Politecnico di Milano Realizzazione di un componente per un sistema dedicato: integrazione del componente RC6 a 128 bit in EDK Relatore: Prof. Fabrizio Ferrandi Correlatore: Ing. Marco Domenico Santambrogio Davide Murrai Matricola n. 654356 A.A. 2003/2004 Sommario • Obiettivi; • Introduzione: strumenti, dispositivi, algoritmo; • Architettura: • Struttura del sistema; • Estensione al DMA. • Integrazione del componente rc6_encoder: • Piattaforma hardware: implementazione del componente; • Piattaforma software: l’uso del driver. • Test Effettuati; • Conclusioni. Davide Murrai 2 Obiettivi • Creazione di un IP Core che implementi l’algoritmo di crittazione RC6; • Partizionamento della specifica iniziale in HW e SW; • Interfacciamento tra HW e SW all’interno dell’IP Core; • Integrazione del componente in un sistema dedicato; • Test HW e SW. Davide Murrai 3 Introduzione – strumenti e dispositivi • EDK (Embedded Development Kit) permette la realizzazione di architetture per sistemi dedicati a partire da una descrizione HW dei vari componenti. • Utilizza XPS (Xilinx Platform Studio). Architettura Componenti Xilinx Componenti creati dall’utente • Dispositivo riprogrammabile FPGA (Field Programmable Gate Array). Davide Murrai 4 Introduzione – algoritmo RC6 • Blocchi da 128 bit, suddivisi in 4 registri da 32 bit; • Chiave di crittazione variabile (in genere 128 bit); • Composto da due sottoalgoritmi: • Key Schedule; • Crypt. • Parametrico rispetto a: • w Dimensione registri della parola da crittare (fissata a 32 bit); • r Numero cicli di crittazione da eseguire; • b Dimensione chiave di crittazione. Davide Murrai 5 Architettura uartlite ILMB MB DLMB BRAM BRAM Controller mdm OPB BRAM Controller gpio rc6_encoder Davide Murrai 6 Estensione al DMA (Direct Memory Access) • Scopo: crittazione di grandi moli di dati in sequenza senza coinvolgere il processore. • Attuazione: utilizzo del componente opb_central_dma. • Problemi riscontrati: • mancato trasferimento dei dati tra la memoria e l’rc6_encoder; • anche in caso di corretto funzionamento dell’opb_centarl_dma non si otterrebbe comunque un incremento delle prestazioni; • possibile miglioramento delle prestazioni tramite l’uso delle net di interrupt dell’opb_central_dma, che però sono ancora completamente in fase di sviluppo. Davide Murrai 7 Piattaforma HW: struttura del componente rc6_encoder_core Operazioni algoritmo RC6 rc6_encoder PSelect Interfaccia con il BUS BUS OPB Davide Murrai 8 Piattaforma HW: utilizzo dei registri Chiave di crittazione (dimensione variabile) Key Schedule Parola da crittare (in 4 registri da 32 bit) Crypt Registri di comando del componente Davide Murrai 9 Piattaforma SW: definizione del driver Software Applicazione utente: system.c rc6_encoder.c DRIVER rc6_encoder.h Makefile Hardware Davide Murrai Componente: rc6_encoder 10 Piattaforma SW: funzioni del driver • write_regs Scrive la parola da crittare all’interno del componente Invio valori al componente • userkey Scrive la chiave di crittazione all’interno del componente • risultati Ottiene i valori finali della crittazione dal componente Prelievo valori dal componente • start Invia il comando di avvio crittazione al componente (al termine della quale è sollevato un interrupt) Controllo • fine Riporta basso il segnale di interrupt per una nuova crittazione Davide Murrai 11 Implementazione IP Core Piattaforma SW Invio parola e chiave Piattaforma HW 1 2 Avvio algoritmo 3 Interrupt Risultati Key Schedule Avvio crittazione Crypt 4 Davide Murrai 12 Test effettuati • Test sul componente: • controllo funzionamento dell’rc6_encoder; • controllo funzioni del driver. • Impiego della console di debug: • particolare caso di test; • visualizzazione degli effetti dopo l’esecuzione di ogni singola istruzione. Davide Murrai 13 Test sul componente Test all’interno del codice C uartlite 2F 19 4E 52 Utilizzo funzioni del driver 52 4E 19 2F Davide Murrai 14 Impiego della console di debug Run XMD Run Debugger 1 Comando: mbconnect mdm 3 5 Target Selection 4 GDB 2 6 Modulo di debug HW 7. Avvio software Strumenti di XPS Davide Murrai 15 Conclusioni e sviluppi futuri • Conclusioni: • corretto funzionamento del componente; • corretta integrazione all’interno dell’architettura; • temporizzazioni: • minimo periodo: 20.7 ns (massima frequenza: 48 MHz); • tempo impiegato per una crittazione con chiave da 128 bit circa 23 microsecondi. • Occupazione del componente: 58% della FPGA. • Sviluppo futuro: • miglioramento delle prestazioni tramite l’uso del DMA. Davide Murrai 16 Fine presentazione Davide Murrai 17