Séance 4 : Affichage du signal acquis sur écran VGA Affichage du

publicité
Option Architecture et traitement des signaux – 2016
Séance 4 : Affichage du signal acquis sur écran VGA
L’objectif de cette séance est d’afficher sur un écran VGA les valeurs acquises du capteur
OPT101 et de déterminer la fréquence cardiaque.
Pour afficher sur un écran avec une résolution VGA (640 colonnes par 480 lignes), plusieurs
signaux de synchronisation doivent être générés. Une synchronisation colonne active – HS – à
chaque changement de ligne, c’est à dire, après avoir parcouru les 640 colonnes, et, une
synchronisation verticale – VS – active lorsque les 480 lignes sont parcourues, au changement
de chaque image. L’affichage sur un écran VGA est réalisé via le balayage d’un spot
lumineux sur l’écran.
Figure 1 : principe d'affichage d'une image sur un écran au format VGA
Les valeurs des temps de synchronisation et d’affichage sont données dans la table cidessous.
Figure 2 : Timing
Pr. Olivier ROMAIN
1
Option Architecture et traitement des signaux – 2016
Figure 3 : Table timing
Ces valeurs correspondent à un signal de synchronisation, qui a la même forme pour la
synchronisation horizontale et verticale.
Afficher une image sur l’écran nécessite de mémoriser 640*480 valeurs sur 24 bits (Rouge
sur 8 bits, Vert sur 8 bits et Bleu sur 8 bits). La capacité mémoire embarqué dans le Cyclone3
de la DE1 ne le permet pas. Deux solutions, soit utiliser une mémoire SRAM externe, soit
mémoriser uniquement une valeur par ligne. En comparant la valeur mémorisée à la position
du spot lumineux parcourant les colonnes, on peut alors allumer uniquement la colonne
correspondant à la valeur mémorisée. On obtient alors un point lumineux par ligne. En
tournant l’écran de 90° à gauche, on peut alors afficher une courbe point par point. Pour cela,
uniquement une mémoire de 480 mots suffit.
Cette mémoire sera du type DPRAM (Dual Port RAM) car le processeur Nios2 doit y
mémoriser les valeurs acquises au cours du temps, et le contrôleur VGA doit pouvoir lire la
valeur correspondant à la ligne en cours.
Le synopsis ci-dessous résume les étages de cette séance.
Figure 4. Synopsis séance 4
Pr. Olivier ROMAIN
2
Option Architecture et traitement des signaux – 2016
I. IP DPRAM – mémorisation des valeurs acquises
Les valeurs acquises par le Nios2 seront enregistrées dans une mémoire DPRAM. Cette
mémoire sera un périphérique spécifique du processeur adressable directement par rapport à
son adresse. Pour cela, la mémoire DPRAM doit être connectée au bus système du processeur,
le bus Avalon. Le processeur pourra alors accéder en écriture à la mémoire via les signaux
data, wraddress, wren, wrclock, etc.
La DPRAM est une mémoire qui permet d’être lue par un périphérique extérieur tout en étant
écrite par un second, sans conflit. Les signaux rdaddress, rden, rdlcock, etc… sont les signaux
générés par le périphérique qui souhaite accéder en lecture aux éléments de la mémoire.
Figure 5. DPRAM synopsis
Travail à réaliser
1.1 Lire le datasheet ALTERA sur la DPRAM afin de comprendre le fonctionnement de la
DPRAM.
1.2 Déterminer les signaux nécessaires à la lecture d’un élément de la mémoire par le
contrôleur VGA.
1.2.1 Quelle sera la valeur de rdclock ?
1.2.2 Comment doit être positionner rden ?
1.2.3 Comment doit être générer rdaddress ?
1.3 L’IP DPRAM vous est fournie. Télécharger le fichier olivieromain.free.fr/dpram.zip
1.4 Lancer Quartus et Qsys.
1.5 Utiliser le datasheet IP_Component.pdf afin de vous guider pour intégrer l’IP_DPRAM
à votre design Nios2.
1.6 Renommer votre IP en RAM_VGA.
Figure 6. IP_DRAM sous Qsys
1.7 Faites contrôler par l’enseignant.
1.8 Générer le design et compiler sous Quartus. Votre design sous Quartus doit ressembler à
la figure ci-dessous.
Pr. Olivier ROMAIN
3
Option Architecture et traitement des signaux – 2016
Figure 7. Nios2 avec la DPRAM intégrée
1.9 Consigner dans votre CR les différents développements.
II. Développement SW sous Qsys
La mémoire DPRAM est contrôlée par le Nios2 en écriture et par le contrôleur VGA en
lecture. Dans cette partie, vous allez écrire un programme en C permettant d’écrire les valeurs
dans la mémoire.
Travail à réaliser
1.10 Pourquoi le bus d’adresse de la mémoire est de 9 bits ?
1.10.1 Quelles sont les adresses possibles à partir de l’adresse de base de l’IP RAM_VGA ?
1.10.2 Donner les min et le max en hexadécimal.
1.10.3 Consigner dans votre rapport.
1.11 Lancer Eclipse sous Quartus et reprendre le projet de la séance 3.
1.12 Avec le clique droit de la souris, dans la fenêtre « Project Explorer », cliquer sur votre
projet_BSP, menu Nios2, Generate BSP. Votre design ayant été modifié sous Qsys vous
devez remettre à jour les drivers de votre Nios2. Ces drivers permettront d’accéder aux
périphériques comme la mémoire DPRAM.
1.13 Modifier le programme pour enregistrer après chaque acquisition la valeur dans la
mémoire.
1.14 Faites contrôler par l’enseignant.
1.15 Consigner votre programme dans le compte-rendu.
Pr. Olivier ROMAIN
4
Option Architecture et traitement des signaux – 2016
III. Contrôleur VGA : affichage de la courbe
Cette partie est consacrée au développement du contrôleur VGA en VHDL et à la vérification
de la séquence acquise et enregistrée dans la DPRAM. L’objectif est que le contrôleur VGA
puisse accéder en lecture à la mémoire, récupèrer la valeur enregistrée, la comparer à la
position du spot lumineux (ligne par ligne) et afficher en blanc le pixel correspondant (valeur
enregistrée = position du spot).
Travail à réaliser
1.16 Reprendre le contrôleur VGA que vous avez développé dans l’UE FPGA.
1.17 Ajouter deux signaux dans l’entité (voir ci-dessous). Le signal data_in est la donnée
enregistrée sur 32 bits dans la mémoire et l’adresse DPRAM correspond à l’adresse de
la case mémoire à laquelle vous voulez accéder.
• data_in : in std_logic_vector(31 downto 0);
• adresse_DPRAM : out std_logic_vector(9 downto 0) ;
1.18 Modifier le code VHDL pour gérer ces deux signaux en fonction de la position du spot
lumineux dans l’écran.
1.19 Consigner les développements VHDL dans votre CR
1.20 Faites contrôler par l’enseignant.
1.21 Compiler et programmer la carte FPGA
1.22 Sous Eclipe, avec le clique droit de la souris, dans la fenêtre « Project Explorer »,
cliquer sur votre projet_BSP, menu Nios2, Generate BSP. Votre design ayant été
modifié sous Qsys vous devez remettre à jour les drivers de votre Nios2.
1.23 Reprenez votre code afin d’afficher une droite de type y=x avec y la position de la
colonne et x le numéro de la ligne. Sur la première ligne, la colonne 1 est allumée, sur la
deuxième ligne, la colonne 2 est allumée, etc…
1.24 Consigner les développements dans votre CR.
1.25 Faites contrôler par l’enseignant.
1.26 Modifier votre code C afin d’afficher le signal cardiaque.
1.26.1 Déterminer la fréquence d’acquisition / à la fréquence d’affichage du VGA afin
d’avoir plusieurs période sur l’écran.
1.26.2 Régler la période d’échantillonnage
1.27 Consigner les développements dans votre CR
1.28 Faites vérifier par l’enseignant.
1.29 Modifier votre code C afin d’enregistrer dans un fichier les signaux cardiaques.
1.30 Consigner les développements dans le compte-rendu.
Pr. Olivier ROMAIN
5
Option Architecture et traitement des signaux – 2016
Figure 8. signal cardiaque
IV. Filtre numérique
On souhaite extraire uniquement le fondamental du signal acquis afin d’afficher sur les
afficheurs 7 segments, la fréquence cardiaque.
Figure 9. afficheur 7 segments pour la fréquence cardiaque
Travail à réaliser
1.31 Proposer un filtre numérique pour extraire le fondamental du signal acquis
1.32 Rajouter sous Qsys à votre processeur, 2 PIO en output sur 7 bits pour contrôler les deux
afficheurs 7 segments HEX0 et HEX1.
1.33 Générer le design sous Qsys
1.34 Ajouter les broches d’IO aux sorties HexO_PIO et Hex1_PIO.
Pr. Olivier ROMAIN
6
Option Architecture et traitement des signaux – 2016
Figure 10. Broches afficheurs 7 segments
1.35 Sous Eclipe, avec le clique droit de la souris, dans la fenêtre « Project Explorer »,
cliquer sur votre projet_BSP, menu Nios2, Generate BSP. Votre design ayant été
modifié sous Qsys vous devez remettre à jour les drivers de votre Nios2.
1.36 Reprenez votre code afin :
1.36.1 D’implémenter votre filtre numérique
1.36.2 D’afficher la valeur de la fréquence cardiaque sur les afficheurs 7 segments
1.36.3 Vérifier la valeur / à la période de votre signal
1.37 Consigner les développements dans votre CR.
1.38 Faites contrôler par l’enseignant.
V. Compte rendu
Consigner dans votre compte rendu, les résultats que vous avez obtenus pour cette partie.
Vous mettrez en annexe de votre compte rendu les différents programmes que vous avez
développés ainsi que la méthodologie que vous avez adopté pour développer cette IP.
Fin Séance 4
Pr. Olivier ROMAIN
7
Téléchargement