Étape 6: Sortie dans le moniteur VGA
Les valeurs R, G et B dans les fichiers .bin étaient séparés par des virgules. À la fin de chaque ligne des valeurs de pixel, il y avait un caractère de nouvelle ligne. Tout d’abord, nous avons parcouru le fichier image et remplacé chaque saut de ligne avec une virgule. Ensuite, nous avons utilisé strtok pour mettre chaque valeur unique dans le .bin dans un tableau, puisqu’ils sont maintenant séparés par seulement des virgules.
Avec les valeurs R, G et B en 3 tableaux différents, c’est maintenant simple de sortie vers le moniteur VGA.
Tout d’abord, nous prendrais une adresse à la sortie sur le canal de AXI GPIO qui est allé à l’entrée de l’adresse du générateur bloc mémoire. Nous avons individuellement définiriez ensuite R, G et de B GPIO des valeurs dans les 3 tableaux. Une fois le parcours de toutes les cellules des tableaux, l’image apparaît sur le moniteur VGA.
Nous répéter ce cycle avec chaque fichier image et mettre dans un léger retard pour le faire apparaître comme un GIF.
Il y a quelques obstacles à la sortie dans le moniteur VGA, donc nous avons dû compenser avec des modifications mineures. Tout d’abord, les adresses ne pas sortie linéairement sur le moniteur VGA. Nous avons joué jusqu'à ce que nous avons compris que les pixels ont été créés de haut en bas à partir de l’adresse 64 par incréments de 1 jusqu'à l’adresse 224. Nous avons également découvert que les pixels ont été émis de droite à gauche des adresses à partir de 11520 à environ 75000 par incréments de 256. Nous avons utilisé ces pour créer une double forloop qui a frappé tous les adresses appropriées afin qu’une image apparaîtrait correctement sur l’écran.
La méthode ci-dessus de sortie des images à l’écran, mais ils étaient inversés et renversés. Pour résoudre ce problème, nous avons implémenté un moyen pour les indices des valeurs R, G et B de sauter partout différemment, allant du haut vers le bas au lieu de droite à gauche. Ce renversé et inversé l’image s’affichent normalement.
Tous du FileIO, VGA sortie, réglage code et vous trouverez dans le fichier main_blinky.c inclus avec ce tutoriel.