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

di Martino Jerian


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:


Martino Jerian - DEEI -Università degli Studi di Trieste - Corso di Elettronica - Prof. Stefano Marsi - Anno Accademico 2003-2004