In questo articolo vi presentiamo un metodo semplice ed economico di creare un'interfaccia VGA per Xula FPGA Board; in realtà vedremo che tale metodo utilizza degli accorgimenti interessanti che possono comunque tornare utili a chi volesse dotare di interfaccia VGA altri tipi di board
Chi da tempo utilizza boards FPGA XESS, si sarà senz'altro accorto che nel nuovo modello chiamato XuLa non vi sono moduli aggiuntivi, “solo” un FPGA, SDRAM e un'interfaccia USB; pertanto, chi volesse utilizzare questa board per visualizzare messaggi o immagini a video, è costretto a ricorrere ad moduli esterni. In questo articolo vi presentiamo un metodo semplice ed economico di creare un'interfaccia VGA per Xula FPGA Board; in realtà vedremo che tale metodo utilizza degli accorgimenti interessanti che possono comunque tornare utili a chi volesse dotare di interfaccia VGA altri tipi di board (ovviamente il tutto dovrà essere riadattato in base alle caratteristiche della board di cui si dispone). Quello che si fa, è implementare un convertitore Digitale/Analogico in grado di fornire i livelli di tensione al di sotto di 0.7V e quindi adatti a pilotare ,ad esempio, un comune monitor VGA.
Dimensionamento dei DAC:
Ad una periferica VGA dovranno essere forniti 3 segnali (Red, Green, Blu), più un segnale di sincronismo orizzontale ed un segnale di sincronismo verticale. Scegliamo quindi il numero di livelli desiderato per ogni colore: supponiamo di voler ottenere 32 livelli per ogni colore (quindi l'intervallo di tensioni compreso tra 0 e 0.7V dovrà essere diviso in 32 valori quantizzati), dovremo impegare 5 bit per colore, i quali andranno in ingresso al DAC corrispondente. In totale quindi verranno impegnati 17 output di Xula FPGA Board (5 per colore + 2 di sincronismo). Ciascun pin di output della board fornirà 3.3 V, pertanto la rete resistiva costituente il DAC dovrà fare in modo che, quando i 5 input siano ciascuno a 3.3 V, in uscita vi sia una tensione di 0.7V. Per il dimensionamento della rete resistiva, inoltre, dobbiamo tener conto che all'ingresso della periferica VGA, vi è una resistenza di 75 ohm per ciascun colore. Possiamo vedere nella figura seguente un DAC già dimensionato con 5 bit per colore.
Se volessimo utilizzare lo stesso principio per implementare un'interfaccia VGA per boards che abbiano un numero inferiore di pin di output, possiamo comunque effettuare lo stesso ragionamento riducendo il numero di livelli per ciascun colore. Ad esempio se avessimo a disposizione solo 11 bit di output, potremmo utilizzarne 3 per ciascun colore primario, e 2 di sincronismo; in questo caso avremmo 2^3=8 livelli per ciascun colore. Tornando all'idea iniziale della realizzazione di un'interfaccia VGA con 5 bit per colore, un'alternativa alla costruzione del circuito DAC su breadboard, ci è offerta da questo sito in lingua inglese, il quale ci permette di scaricare un prezioso file ZIP contenente i files EAGLE5 di progetto della board VGA, ed altri files utili alla realizzazione fisica.
E’ il tipico principio di funzionamento del DAC fatto tramite partitore resistivo pesato. Ho visto per la prima volta utilizzare questa tecnica per la generazione dei segnali video nel progetto PicPong (cercando su google lo si trova facilmente, si tratta di un pic16F84 overclockato a 12MHz capace di emulare una vecchia console con sopra montato il celeberrimo (e cult) gioco di Pong. Per generare i segnali video, anche lì si partiva dal presupposto che l’impedenza di ingresso della linea video è pari a 75ohm (altrimenti la partizione non funziona) e rispetto all’interfaccia VGA, il micro in questione gestisce immagini sono in bainco e nero (per la limtata capacità di memoria e per la frequenza di clock relativamente bassa). Con le FPGA è un gioco da ragazzi gestire un’interfaccia VGA!
esattamente! nel dimensionamento della rete DAC bisogna sempre tener conto dei 75 ohm di impedenza di ingresso VGA. Ciò che è interessante di questo metodo è il fatto di poter comunque dotare i nostri progetti di una interfaccia grafica, anche quando abbiamo pochi bit da dedicare all’output grafico (ovviamente al diminuire dei bit, diminuirà il numero di colori)