Table des matières:

Conception d'un contrôleur VGA simple en VHDL et Verilog : 5 étapes
Conception d'un contrôleur VGA simple en VHDL et Verilog : 5 étapes

Vidéo: Conception d'un contrôleur VGA simple en VHDL et Verilog : 5 étapes

Vidéo: Conception d'un contrôleur VGA simple en VHDL et Verilog : 5 étapes
Vidéo: Conception d'une manette tactile en verilog/vhdl 2024, Novembre
Anonim
Conception d'un contrôleur VGA simple en VHDL et Verilog
Conception d'un contrôleur VGA simple en VHDL et Verilog

Dans ce instructable, nous allons concevoir un simple contrôleur VGA en RTL. Le contrôleur VGA est le circuit numérique conçu pour piloter les écrans VGA. Il lit à partir du tampon de trame (mémoire VGA) qui représente la trame à afficher et génère les données et les signaux de synchronisation nécessaires à des fins d'affichage.

Si vous recherchez le code Verilog/System verilog: visitez mon blog Contrôleur VGA et système vidéo dans Verilog

Étape 1: Interface d'un contrôleur VGA

Voici les principaux signaux d'interface dans un contrôleur VGA

  • Horloge Pixel ou Horloge VGA
  • Signaux HSYNC et VSYNC

Pour l'affichage VGA choisi, vous devez d'abord calculer la fréquence de Pixel Clock nécessaire pour le piloter. Cela dépend de 3 paramètres: Total des pixels horizontaux, Total des pixels verticaux, Taux de rafraîchissement de l'écran.

Typiquement, F = THP * TVP * Taux de rafraîchissement

Trouvez la documentation sur l'horloge de pixels nécessaire pour divers écrans VGA, dans le RAR ci-joint.

Les signaux HSYNC et VSYNC sont générés à partir de l'horloge Pixel. La synchronisation des signaux HSYNC et VSYNC dépend du nombre de paramètres: Porche avant horizontal et vertical, Porche arrière horizontal et vertical, Pixels d'affichage horizontaux et verticaux, Largeurs et polarités d'impulsion de synchronisation horizontale et verticale.

Ces paramètres sont standardisés pour un écran VGA choisi. Retrouvez ces documents dans le RAR ci-joint.

Ces paramètres sont des paramètres configurables dans notre IP Controller VGA.

Étape 2: Intégration du contrôleur VGA à un écran VGA

Intégration du contrôleur VGA avec un écran VGA
Intégration du contrôleur VGA avec un écran VGA

La figure montre comment intégrer le contrôleur VGA à un écran VGA. Vous avez besoin de deux autres composants pour compléter le système:

  • Frame Buffer: Mémoire qui contient le cadre à afficher.
  • DAC vidéo: DAC qui convertit les données numériques RVB et pilote l'affichage VGA avec des signaux analogiques RVB au niveau de tension approprié.

L'un des DAC vidéo les plus simples et les plus populaires est l'ADV7125. Il s'agit d'un DAC 8 bits qui convertit les mots numériques RVB en signaux analogiques 0-0,7 V et pilote l'affichage VGA.

Étape 3: Conception du tampon de trame

C'est la mémoire qui « stocke » l'image à afficher. Il s'agit généralement d'une RAM ou parfois d'une ROM. Nous verrons comment concevoir un frame buffer pour représenter une image. Frame buffer transmet ces informations numériques à un DAC vidéo sur commande du contrôleur VGA.

Nous devons d'abord décider de la profondeur de pixel nécessaire. Il décide de la qualité de l'image, de la variété de couleurs qu'un pixel peut représenter. Pour un DAC 8 bits, nous devons représenter les composantes de couleurs primaires d'un pixel: R, V et B en 8 bits chacun. Cela signifie qu'un pixel est de 24 bits.

Chaque pixel est stocké de manière contiguë dans des emplacements de mémoire Frame Buffer.

Supposons qu'une image à afficher mesure 800x600 pixels.

Par conséquent, le tampon de trame nécessaire est de 800x600 = 480000 x 24 bits de mémoire

La taille totale de la mémoire est de 800x600x24 = 1400 Ko environ.

Si image en noir et blanc, 800x600x1 = 60 ko environ.

Les RAM de bloc peuvent être utilisées pour représenter un tampon de trame dans les FPGA Xilinx.

Étape 4: Remarques

  • Des signaux supplémentaires sont nécessaires sur le contrôleur VGA en fonction du DAC choisi. J'ai utilisé ADV7125.
  • Ajoutez des délais de cycle via les bascules sur VSYNC et HSYNC avant de piloter l'affichage VGA. Cela est dû aux latences du DAC et de la mémoire. Les signaux de pixels doivent être synchronisés avec HSYNC et VSYNC. Dans mon cas, c'était un délai de 2 cycles.
  • Si Frame Buffer de taille donnée ne peut pas être conçu sur FPGA en raison de la limitation de la taille de la mémoire RAM, utilisez une mémoire plus petite pour représenter l'image et éditez simplement le code pour faire passer l'adresse sur la limite de la mémoire disponible, plutôt que sur la limite de la pleine trame. Cela reproduira la même image encore et encore sur tout l'écran. Une autre méthode est la mise à l'échelle des pixels dans laquelle chaque pixel est répliqué pour afficher l'image entière en plein écran, dans une résolution inférieure. Cela peut être fait en peaufinant la logique d'incrémentation d'adresse dans le code.
  • L'IP est entièrement portable sur tous les FPGA et sa synchronisation est vérifiée jusqu'à 100 MHz sur le FPGA Virtex-4.

Étape 5: Fichiers joints

Le RAR contient:

  • Code du contrôleur VGA
  • PDF des normes VGA.

Conseillé: