Differences between revisions 7 and 12 (spanning 5 versions)
Revision 7 as of 2007-02-27 17:24:59
Size: 3743
Editor: gnome
Comment:
Revision 12 as of 2007-02-28 08:21:00
Size: 7265
Editor: gnome
Comment:
Deletions are marked like this. Additions are marked like this.
Line 6: Line 6:


Line 8: Line 11:
  * '''v''''''ga_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)
  * '''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)
Line 14: Line 17:
  * '''v''''''ga_gen''' : Module identique au précédent   * '''vga_gen''' : Module identique au précédent
Line 25: Line 28:
Line 26: Line 30:
 * '''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) ||
Line 27: Line 43:
 * '''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 ||
 ||vsync ||sortie ||1|| Synchro verticale ||
Line 35: Line 44:
   Quelques Liens sur l'affichage VGA: Quelques Liens sur l'affichage VGA:(la version choisie est Vesa 800x600 @ 72Hz)
 * Les timings des standards VGA :http://www.epanorama.net/documents/pc/vga_timing.html
 * Un calculateur de paramètres VGA :http://www.tkk.fi/Misc/Electronics/faq/vga2rgb/calc.html
Line 38: Line 48:
Les timings des standards VGA :http://www.epanorama.net/documents/pc/vga_timing.html

Un calculateur de paramètres VGA :http://www.tkk.fi/Misc/Electronics/faq/vga2rgb/calc.html

La doc de la mémoire statique 32Kx8 : attachment:cy7c199.pdf

[:GroupeSen/EnSeignement/BaseConnaissancesindispensables/SemaineBloquée/ProjetVga/MemosProjet2006T1:Memos du projet 2006 T1]
 * '''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é)||

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.

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)

  • Les timings des standards VGA :http://www.epanorama.net/documents/pc/vga_timing.html

  • Un calculateur de paramètres VGA :http://www.tkk.fi/Misc/Electronics/faq/vga2rgb/calc.html

  • 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é)

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