280 likes | 442 Vues
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.
E N D
UNIVERSITÀ DEGLI STUDI DI TRIESTEFacoltà di IngegneriaDipartimento 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: • 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 • EDK (Embedded Development Kit) • ISE (Integrated Software Environment) • Simulazione • ModelSim-XE & ISE-simulator • Debug on-chip • ChipScope
Progetto Preesistente Block RAM • MicroBlaze: • Soft-ip • PLB or OPB • Harvard • Customizable • 2D Graphic Engine • Display Controller • 2MB frame buffer • 640x480 • 32 bpp
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
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)