Differences between revisions 12 and 14 (spanning 2 versions)
Revision 12 as of 2007-02-28 08:21:00
Size: 7265
Editor: gnome
Comment:
Revision 14 as of 2008-03-05 07:37:35
Size: 294
Editor: pomme
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
L'objectif du projet est de réaliser un "économiseur d'écran multi-écrans". Le travail sera réparti entre 2 binomes. Le premier binome étant en charge de la gestion des écrans, le deuxième binome étant en charge de la communication entre les écrans.
Line 4: Line 3:
Le système final à réaliser sera le suivant : deux écrans vidéo seront pilotés par deux maquettes Xilinx nommées "MMaster" et "MSlave". Un triangle se déplacera lentement sur l'espace constitué des deux écrans considérés. En mode test, une mire pourra être utilisée pour vérifier le fonctionnement de la génération des signaux graphiques.




 . Le circuit FPGA de chacune des maquettes contiendra les modules suivants :
 * MMaster
  * '''vga_gen''' : Module de génération de signaux de synchronisation pour un écran en mode VESA 800x600 (600 lignes de 800 pixels) avec fréquence pixel de 50Mhz.
  * '''mire''' : Génération d'une mire (cadrillage de lignes espacées régulièrement sur l'écran) permettant de vérifier le bon fonctionnement de vga_gen. La sélection ddu mode mire se fera via un bouton de la carte FPGA.
  * '''triangle_gen''' : Module de génération des sommets d'un triangle se déplaçant lentement dans un espace 1600x600 (600 lignes de 1600 pixels) correspondant aux deux écrans considérés. Les sommets du triangle rebondirons sur les bords de l'espace considéré (lois de descartes). Les sommets du triangle évoluerons "lentement" (par exemple tous les 1/10eme de seconde)
  * '''inside_triangle''' : Module de test permettant de savoir si les coordonnées courantes d"un point de l'écran sont à l'intérieur ou à l'extérieur du triangle courant. Le résultat obtenu (O/1) commandera directement l'affichage (blanc ou noir de l'écran).
  * '''send_coord''': Module de ''transmission'' permettant d'envoyer les coordonnées courantes du triangle à la carte MSlave. Le protocole de transmission est un protocole série pour minimiser les fils nécessaires.
 * MSlave
  * '''vga_gen''' : Module identique au précédent
  * '''mire : '''module identique au précédent
  * '''inside_triangle''' : Module identique au précédent
  * '''recv_coord''' : Module de ''réception'' permettant de recevoir les coordonnées du triangle en provenance de la carte MMaster.
Dans une première étape,

 * le binome 1 est en charge des modules ('''vga_gen et mire''') et devra démonter le bon fonctionnement de la génération vidéo.
 * le binome 2 est en charge des modules '''send_coord''' et '''recv_coord''' et devra démontrer que ces deux modules, rebouclés sur une même maquette sont à même de transmettre les données voulues.
Dans une deuxième étape,

 * Les binomes se répartirons le travail entre "'''triangle_gen'''" et "'''inside_triangle'''"...

Les différents modules devront respecter les interfaces et protocoles suivants:
 * '''Tous les modules''' seront réalisés en '''logique synchrone''' (pas de bloc combinatoire) de manière à bien sépararer les tâches.
 * '''Toutes les sorties''' des modules seront constituées de registres ('''bacules D''') fonctionnant avec l'horloge 50Mhz (clk_50) des cartes FPGA
 * '''vga_gen'''
 ||'''Nom''' ||'''Type''' ||'''Bits''' ||'''Fonction''' ||
 ||clk_50 ||entrée ||1 ||horloge 50 Mhz active sur front montant ||
 ||rst_n ||entrée ||1 || réinitialisation active sur état bas ||
 ||rgb_in[2:0] ||entrée ||3 || Couleur entrante ||
 ||hsync ||sortie ||1 || Synchro horizontale respectant les timings VESA 800x600 72Hz||
 ||vsync ||sortie ||1 || Synchro verticale respec||
 ||rgb_out[2:0] || sortie || 3 || Couleur sortante (=couleur entrante + blanking)||
 ||xcmpt[15:0] ||sortie ||16 || Compteur définissant la position horizontale du pixel courant, doit valoir 0 pour le premier pixel affichable et doit valoir 799 pour le dernier. On utilisera une représentation '''signée''' (le compteur sera négatif avant la zone affichable)||
 ||ycmpt[15:0] || sortie || 16|| Compteur définissant la position verticale du pixel courant, doit valoir 0 pour la première ligne affichable et 599 pour la dernière. On utilisera une représentation '''signée''' (le compteur sera négatif avant la zone affichable) ||


Quelques Liens sur l'affichage VGA:(la version choisie est Vesa 800x600 @ 72Hz)
Quelques Liens sur l'affichage VGA:
Line 47: Line 6:

 * '''mire'''
 ||'''Nom''' ||'''Type''' ||'''Bits''' ||'''Fonction''' ||
 ||clk_50 ||entrée ||1 ||horloge 50 Mhz active sur front montant ||
 ||rst_n ||entrée ||1 || réinitialisation active sur état bas ||
 ||xcmpt[15:0] ||entrée ||16 || Compteur définissant la position horizontale du pixel courant, doit valoir 0 pour le premier pixel affichable et doit valoir 799 pour le dernier. On utilisera une représentation '''signée''' (le compteur sera négatif avant la zone affichable)||
 ||ycmpt[15:0] || entrée || 16|| Compteur définissant la position verticale du pixel courant, doit valoir 0 pour la première ligne affichable et 599 pour la dernière. On utilisera une représentation '''signée''' (le compteur sera négatif avant la zone affichable) ||
 ||rgb_out[2:0] ||sortie ||3 || Couleur sortante ||
 
 * '''triangle_gen'''
 ||'''Nom''' ||'''Type''' ||'''Bits''' ||'''Fonction''' ||
 ||clk_50 ||entrée ||1 ||horloge 50 Mhz active sur front montant ||
 ||rst_n ||entrée ||1 || réinitialisation active sur état bas ||
 ||x0[15:0] ||sortie ||16 || abcisse courante du sommet 0 (doit rester comprise entre 0 et 1599) (nombre signé)||
 ||y0[15:0] ||sortie ||16 || ordonnée courante du sommet 0 (doit rester comprise entre 0 et 1599) (nombre signé)||
 ||x1[15:0] ||sortie ||16 || abcisse courante du sommet 1 (doit rester comprise entre 0 et 1599) (nombre signé)||
 ||y1[15:0] ||sortie ||16 || ordonnée courante du sommet 1 (doit rester comprise entre 0 et 1599) (nombre signé)||
 ||x2[15:0] ||sortie ||16 || abcisse courante du sommet 2 (doit rester comprise entre 0 et 1599) (nombre signé)||
 ||y2[15:0] ||sortie ||16 || ordonnée courante du sommet 2 (doit rester comprise entre 0 et 1599) (nombre signé)||
 
 * '''inside_triangle'''
 
 ||'''Nom''' ||'''Type''' ||'''Bits''' ||'''Fonction''' ||
 ||clk_50 ||entrée ||1 ||horloge 50 Mhz active sur front montant ||
 ||rst_n ||entrée ||1 || réinitialisation active sur état bas ||
 ||x0[15:0] ||sortie ||16 || abcisse courante du sommet 0 (doit rester comprise entre 0 et 1599) (nombre signé)||
 ||y0[15:0] ||sortie ||16 || ordonnée courante du sommet 0 (doit rester comprise entre 0 et 1599) (nombre signé)||
 ||x1[15:0] ||sortie ||16 || abcisse courante du sommet 1 (doit rester comprise entre 0 et 1599) (nombre signé)||
 ||y1[15:0] ||sortie ||16 || ordonnée courante du sommet 1 (doit rester comprise entre 0 et 1599) (nombre signé)||
 ||x2[15:0] ||sortie ||16 || abcisse courante du sommet 2 (doit rester comprise entre 0 et 1599) (nombre signé)||
 ||y2[15:0] ||sortie ||16 || ordonnée courante du sommet 2 (doit rester comprise entre 0 et 1599) (nombre signé)||

Quelques Liens sur l'affichage VGA:

ComElec: GroupeSen/EnSeignement/BaseConnaissancesindispensables/SemaineBloquée/ProjetVga (last edited 2008-03-05 07:37:35 by pomme)