UNIVERSITÀ DEGLI STUDI DI TRIESTE Facoltà di Ingegneria Dipartimento di Elettrotecnica, Elettronica ed Informatica REALIZZAZIONE DI UN SISTEMA EMBEDDED CON ACCELERAZIONE HARDWARE 2D SU FPGA Candidato: Matteo GEROMIN Relatore: Prof. Stefano MARSI Correlatore: Ing. Matteo VIT Anno Accademico 2007-2008
Sommario Stato dell’arte: Hardware e Software Progetto preesistente Frame Buffer Acceleratori Grafici Sistemi Embedded Hardware e Software Progetto preesistente Progetto realizzato Confronto fra i due sistemi Sviluppi futuri
Frame Buffer Immagine composta da tanti pixel Memorizzati in sequenza nel frame buffer Profondità colore : 1bpp, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp, 32bpp
Acceleratori grafici Meno carico al processore di sistema Accelerazione 2D e 3D Per il bidimensionale: BITblt e sprite Riempimento aree Linee e poligoni Cerchi ed archi Caratteri Uscita video VGA o DVI
Sistemi Embedded Sistemi a microprocessore dedicati Hardware: progettato ad hoc Software: dimensioni molto variabili
Obiettivi Settore: controlli industriali Realizzazione prototipo: testare vantaggi dell’accelerazione grafica 2D in sistemi Embedded
Descrizione Hardware XILINX ML403 Virtex-4 FX Evaluation Platform Virtex4-FX (XC4VFX12) PowerPC 405 64MB DDR-SDRAM 1MB ZBT SRAM VGA DAC Expansion Headers RS-232 Serial Port
FPGA e HDL 1/2 Field Programmable Gate Array Circuiti logici programmabili CLB Configurable Logic Block Interconnections I/O Blocks Memory blocks Other functions blocks (DCM, DSP, Multiplier)
FPGA e HDL 2/2 Hardware Description Language VHDL, Verilog, SystemC Similitudini con linguaggi di programmazione: If..Then..Else, For, While, Case…. Differenze con i linguaggi di programmazione: Organizzazione a moduli Interazione tramite “fili” e registri Esecuzione parallela delle istruzioni Vari livelli di astrazione: Behavioural, Structural, RTL Sintesi e simulazione
PowerPC 405 Hard IP 32 bit RISC (Reduced Instruction Set Computer) Architettura Harvard Processor Local Bus
Software utilizzato Ambiente di sviluppo e sintesi Simulazione EDK (Embedded Development Kit) ISE (Integrated Software Environment) Simulazione ModelSim-XE & ISE-simulator Debug on-chip ChipScope
Progetto Preesistente MicroBlaze: Soft-ip PLB or OPB Harvard Customizable 2D Graphic Engine Display Controller 2MB frame buffer 640x480 32 bpp Block RAM
2D Graphic Engine 1/5 Interfaccia Bus OPB: gestione comunicazioni da e verso il bus OPB gestione registri organizzazione dati e comandi
2D Graphic Engine 2/5 Decoder immagazzina e distribuisce i comandi monitorizza e comanda i moduli di accelerazione
2D Graphic Engine 3/5 Moduli funzioni accelerate illuminazione pixel disegno rettangoli disegno linee (Bresenham) visualizzazione caratteri (maschere) elaborano colore e posizione dei pixel
2D Graphic Engine 4/5 Arbiter memorizza temporaneamente i pixel elaborati invia in successione i pixel al frame buffer
2D Graphic Engine 5/5 Display Controller gestione comunicazioni con la ZBT SRAM (frame buffer) gestione accessi in memoria generazione sincronismi lettura pixel ed invio a display
Nuovo Progetto OpenCores (www.OpenCores.org) Bus Wishbone
BUS Wishbone Architettura di comunicazione dati sincrona e parallela. 8bit, 16bit, 32bit, 64 bit Point to Point Shared Bus Crossbar Swich Read, Write, RMW Accesso in burst grazie a terminazione avanzata del ciclo Protocollo di HandShake (stb, cyc, ack)
Wishbone Conmax Arbiter Gestione degli accessi: Bus 32bit 8 Master, 16 Slave Indirizzamento Slave con ultimo nibble (4bit) del bus indirizzi Fino a 4 livelli di priorità impostabili su registri Round-Robin nel caso di priorità uguale
VGA/LCD Controller Generazione sincronismi e lettura pixel da Frame Buffer Interfaccia Slave per modifica impostazioni Interfaccia Master per accesso a Frame Buffer Profondità di colore: 32bpp 24bpp 16bpp 8bpp scala di grigi 8bpp lookup table
ZBT SRAM Controller Interfaccia Slave per accesso alla memoria ZBT SRAM Accesso singolo in lettura o scrittura (non ottimizzato) Accesso in BURST indirizzi consecutivi
Modifiche per l’implementazione Modulo acceleratore: creazione master e slave supporto 16bpp (RGB 565) Indirizzamento slave tramite il terzo Nibble più significativo di indirizzo Creazione delle maschere caratteri Generazione delle frequenze: problema del clock skew
Caratteristiche dei sistemi Nuovo Preesistente Processore PowerPC405 MicroBlaze F processore 200Mhz 28.57Mhz F sistema 100Mhz Pixel Clock 25Mhz Risoluzione 640x480 Accesso diretto FB SI NO Funz. acc. Line, blit, pix, char Line, blit, pix
Analisi delle prestazioni 1/2 Definitivo Preesistente medio (us) minimo (us) massimo (us) 640x480 30026 - 48359 320x480 15012 24221 320x240 7524 12148 160x120 1881 681,84 3058 4447 100x100 979,71 357,04 1597 2321 100x50 489,75 180,29 810,98 1175 50x50 244,72 91,04 417,07 603,41 10x10 9,95 4,24 19,67 25,05
Analisi delle prestazioni 2/2
Conclusioni
Conclusioni Sviluppi futuri: Ottimizzazione accessi al Frame Buffer FPGA più performante Supporto risoluzioni e profondità colore multiple Separazione acceleratore e processore (PCI) Standardizzazione registri e funzioni Driver e sistema operativo (Linux)