mercredi 22 janvier 2014

xmos startKIT, génération signal VGA

Je poursuis mes expérimentations avec le startKIT de XMOS. Après avoir expérimenter la génération d'un signal vidéo NTSC en noir et blanc, je suis passé en VGA 16 couleurs. Dans ce premier test il s'agissait simplement de générer les signaux nécessaires à la synchronisation verticale, horizontale et vidéo. La mémoire vidéo est constitué d'une seule ligne que le générateur répète 480 fois. Le maximum de pixels par ligne que j'ai pu obtenir en programmation 'C' est de 508 par ligne. Comme 1 octet du tableau video_buffer contient l'information de 2 pixels, ça donne un tableau de 254 octets.

Schématique

Schématique de l'interface entre la carte startKIT et le moniteur VGA.

image générée par le programme test

La ligne sombre est un artéfact causé par la photographie.

Code source

fichier d'entête du générateur vidéo.

générateur vidéo VGA 16 couleurs

programme test, barres de couleurs

Limitation mémoire

Pour créer un bitmap de 480 lignes de 504 pixels il faudrait 480*504/2=120960 octets. Réduisant la résolution à 240x254 on a encore besoin de 30480 octets. Pour réduire le besoin de mémoire, on peut réduire la résolution encore plus ou encore utiliser un système de tuiles. Dans le prochain article je vais expliquer ce qu'est le système de tuiles et l'utiliser dans un démo bouncing balls. Le système de tuiles était la méthode utilisée au début des années 80, lorsque la mémoire était coûteuse et rare. Mon VIC-20 avec ses 5Ko de RAM pouvait afficher des graphiques de 160×160 pixels en 16 couleurs en utilisant un système de tuiles. Pour utiliser le système de tuiles je dois modifier le générateur vidéo et je serai peut-être obligé de sacrifier des pixels horizontalement.

mise à jour 2014-01-23

La version de l'interface physique entre la carte startKIT et le moniteur VGA présenté en début cet article a l'avantage d'être simple mais l'inconvénient que les couleurs de code 9 à 14 sont délavées. J'ai donc conçue une version améliorée qui corrige ce problème.


Références:
vga sur Psoc
vga timing

Aucun commentaire:

Enregistrer un commentaire