REALIZZAZIONE DI UN'INFRASTRUTTURA PER EDITING VIDEO IN TEMPO REALE
su Xilinx MultiMedia Board
con un tutorial introduttivo all'utilizzo dello Xilinx Embedded Development Kit
Piattaforma di sviluppo: Xilinx MultiMedia Board
Software
utilizzato: Xilinx EDK 6.1i, Xilinx ISE 6.1i
Obiettivi:
apprendimento del funzionamento di base dello Xilinx EDK e del suo utilizzo
per la programmazione della Xilinx MultiMedia Board; realizzazione di progetti
di complessità crescente fino alla progettazione di un'infrastruttura
per editing video in tempo reale.
La MicroBlaze and Multimedia Demo Board é una piattaforma orientata allo sviluppo di applicazioni multimediali prodotta dalla Xilinx. Il suo nucleo é costituito da un FPGA Virtex2 interfacciabile con un gran numero di periferiche, integrate direttamente sulla board, quali ingressi e uscite video PAL o NTSC, ingressi e uscite audio, porta ethernet, true color VGA, interfacce PS2 e RS232, cinque blocchi di RAM esterna di tipo ZBT da 512 kilobytes l’uno, due led. Sono presenti inoltre degli switch e dei tasti che possono essere configurati per interagire con il sistema. Il controller SystemACE permette infine di caricare direttamente il sistema da una memoria di tipo CompactFlash.
Il software utilizzato per lavorare con la MultiMedia Board é l’Embedded
Development Kit 6.1i; per funzionare correttamente esso necessita della presenza
dell’Integrated System Environment 6.1i, di cui utilizza le funzioni di
sintetizzazione e implementazione dell’hardware. Entrambi i programmi
necessitano dei rispettivi Service Packs per operare correttamente. L'Embedded
Development Kit é un ambiente di sviluppo prodotto dalla Xilinx che permette
di integrare il design di hardware e software nello stesso progetto. Esso é
orientato alla progettazione di sistemi che incoroporano al loro interno un
soft processor chiamato MicroBlaze, che può essere poi programmato in
assembler, in C o in C++, utilizzando eventualmente le librerie fornite dal
produttore.
Nel presente tutorial (2021 KB) vengono illustrate
a fondo le principali funzioni dell'EDK tramite la spiegazione passo dopo passo
della realizzazione di quattro diversi progetti descritti.
Si consiglia di fare riferimento allo stesso per l'utilizzo del bitstream da
scaricare sull'FPGA..
HELLO WORLD!
Il primo progetto consiste nel programmare l’FPGA in modo da inviare dei
caratteri ASCII alla porta seriale di un calcolatore sul quale sia stata abilitata
un’interfaccia di tipo terminale (ad esempio HyperTerminal di Windows);
si tratta in pratica del classico “Hello world!” che si prende spesso
come primo esempio di programmazione per imparare un nuovo linguaggio.
Utilizzo: effettuare il download del bitstream sull'FPGA con iMPACT; connettere la porta RS232 della board a quella del calcolatore; configurare le impostazioni del terminale remoto con bps: 9600, bit di dati:8, parità: nessuno, bit di stop: 1, controllo di flusso: nessuno. Sul terminale del calcolatore compare la scritta "Hello World! I am your new MicroBlaze".
INTERFACCIARE SWITCH E LED
Il secondo progetto riprende gran parte dell’hardware del primo. La variazione
consiste nell’aggiunta del controllo dei due led della MultiMedia Board
tramite due switch. Lo switch0 é connesso al led0 tramite il MicroBlaze;
i valori di questi due dispositivi possono essere quindi letti (o scritti) da
un programma eseguito dal MicroBlaze.
Lo switch1, invece, é connesso direttamente con il led1, lo stato del
secondo corrisponde sempre e comunque a quello del primo e il MicroBlaze non
può né leggere né scrivere su alcuno dei due,
Utilizzo: effettuare il download del bitstream sull'FPGA con iMPACT; connettere la porta RS232 della board a quella del calcolatore; configurare le impostazioni del terminale remoto a bps: 9600, bit di dati:8, parità: nessuno, bit di stop: 1, controllo di flusso: nessuno. Cambiando lo stato degli switch si interviene sullo stato dei led. Sul terminale del calcolatore viene visualizzato lo stato corrente dello switch0 (Up o Down).
UTILIZZO DELLA ZBT RAM
La MultiMedia Board é dotata di 5 banchi di ZBT RAM da 512 kilobytes
ciascuno. In questo esempio viene creato un sistema in cui far eseguire un programma
dalla RAM esterna e memorizzare dati su di essa. Nella sezione del tutorial
relativa a questo progetto viene inoltre spiegato come importare un core scritto
in VHDL o Verilog nell'EDK e come eseguire il debugging del software.
Non viene fornito il file conentente il solo bitstream perché, essendo esso destinato al debugging, non sortisce alcun effetto immediato ma viene utilizzato per interfacciare la board al software di programmazione e debugging XMD. Si veda quindi il tutorial completo per l'utilizzo di questo esempio.
REALIZZAZIONE DI UN'INFRASTRUTTURA PER EDITING VIDEO IN TEMPO REALE
Il progetto finale consiste in un sistema per l'elaborazione di un segnale PAL
proveniente dall'ingresso video composito della MultiMedia Board (connettendo
ad esempio una telecamera) e la visualizzazone del risultato su un dispositivo
(televisore o monitor PAL) connesso all'uscita video composito della board.
Il segnale analogico in ingresso viene converito in un flusso di 10 bit in cui
sono multiplexati i dati video utili e i codici di controllo per la sincronizzazione
che indicano la fine di ogni frame: separati i dati video dalle informazioni
di controllo, le componenti del segnale possono essere elaborate individualmente
tramite una periferica hardware, le cui impostazioni sono fornite dal MicroBlaze,
interfacciato agli otto tasti di colore giallo presenti sulla board.
A questo punto le componenti, eventualmente modificate, sono nuovamente multiplexate
e vengono reinserite nel flusso di bit le informazioni per la sincronizzazione.
Il segnale complessivo viene inviato quindi all’encoder video che lo converte
da digitale in analogico e lo invia all’uscita video composito.
Il decoder e l’encoder devono essere configurati secondo il protocollo
I2C (Inter-Integrated Circuit) in maniera opportuna da poter trattare un segnale
video di tipo PAL.
Utilizzo: effettuare il download del bitstream sull'FPGA con iMPACT; connettere
la porta RS232 della board a quella del calcolatore; configurare le impostazioni
del terminale remoto a bps: 9600, bit di dati:8, parità: nessuno, bit
di stop: 1, controllo di flusso: nessuno. Connettere una sorgente video di tipo
PAL all'ingresso video composito della board e un televisore PAL sull'uscita
video composito.
Sul terminale del calcolatore vengono visualizzate le impostazioni per la modifica
delle componenti.
Con il programma videoelab vengono modificate le componenti del segnale
video secondo le impostazioni dei tasti sulla board.
Con il programma demo le componenti scelte tramite i tasti sulla board
vengono modificate automaticamente dal programma in un loop che incrementa di
volta in volta il valore da aggiungere.
Si veda il tutorial completo per informazioni
più dettagliate.
ALTRI FILES
cfboot.zip (120 KB): bitstream di videoelab e demo da copiare in una memoria di tipo Compact Flash tramite cui configurare l'FPGA
tutorial_complete.zip (15271 KB): contiene tutti i files dei vari progetti:
LINKS UTILI
Dal sito della Xilinx:
Altre risorse: