Size: 3371
Comment:
|
Size: 6031
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 6: | Line 6: |
Le circuit FPGA de chacune des maquettes contiendra les modules suivants : |
. Le circuit FPGA de chacune des maquettes contiendra les modules suivants : |
Line 9: | Line 8: |
* '''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 15: | Line 14: |
* '''v''''''ga_gen''' : Module identique au précédent | * '''vga_gen''' : Module identique au précédent |
Line 20: | Line 19: |
Line 23: | Line 23: |
Line 24: | Line 25: |
Line 25: | Line 27: |
Quelques Liens sur l'affichage VGA: | |
Line 27: | Line 28: |
Les timings des standards VGA :http://www.epanorama.net/documents/pc/vga_timing.html | * '''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 29: | Line 39: |
Un calculateur de paramètres VGA :http://www.tkk.fi/Misc/Electronics/faq/vga2rgb/calc.html | |
Line 31: | Line 40: |
La doc de la mémoire statique 32Kx8 : attachment:cy7c199.pdf | 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 33: | Line 44: |
[: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é)|| |
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:
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é)