Synthèse d’un jeu vidéo

Slides:



Advertisements
Présentations similaires
Télévision.
Advertisements

Copyright ©: SAMSUNG & Samsung Hope for Youth. All rights reserved Tutorials Écrans : Premiers pas avec votre écran Niveau : Débutant.
Tension électrique aux bornes des prises de courant :
TRAITEMENT PROGRAMME DE L’INFORMATION
le nom du logiciel et le nom du fichier s’appelle la barre des titres
Présentation d’un design de carte vidéo
Par Clément en vacances sur la Côte dAzur Le 02 Mars Pour bien comprendre voir dabord RADIORADIO (Découverte Junior – Gérard Villemin)Découverte.
IMAGES NUMERIQUES Qu’est-ce qu’une image numérique ?
BTS SYSTEMES ELECTRONIQUES
SECTION 3 L’INGÉNIERIE ÉLECTRIQUE
L’ évolution de la télévision.
Chapitre 5 : Image couleur
Quelques définitions et précisions sur les écrans de télévision
TP 11P démodulation d’amplitude
Algorithmes sur les images dans Excel
TRANSMISSION PAR COURANT PORTEUR
Mélanie Durand – Année 2013/2014 Licence Professionnelle Assistant de Gestion Import Export IUT Paul Sabatier dAuch.
Une pédagogie de limage. situation dans l'espace: situation dans l'espace: autour autour au coin de au coin de au milieu de / au centre de au milieu.
Création d'un diaporama Création d'un diaporama
LOGICIEL PL7 MICRO PROGRAMMATION MISE AU POINT Consignes?
Électronique numérique Intervenants : Boitier V. / Perisse T.
Représentation numérique de l’information
L ’acquisition d ’images
Synthèse d’un jeu vidéo
Projet Transversal Convertisseur XY vers VGA
Carte graphique 2D sur FPGA
Ch 19 (20) Numérisation de l’information
PPE : Portail à commande par puce RFID
Matériel utilisé Montage Questions.
Cliquer ici Le but de ce module est de vous donner des notions d’affichage Ces notions devraient vous aider fortement à mieux comprendre par la suite.
Images télés Format JPEG Format MPEG
TP2 synthèse additive, synthèse soustractive
Mise au point de systèmes mixtes et évaluation de puissance : Un exemple d’application Anne-Marie TRULLEMANS- ANCKAERT FTFC’03 UCL-DICE, Place du Levant.
Utilisation de l ’oscilloscope
Chapitre E3: Utilisation d’une interface d’acquisition
SURVEILLANCE VIDEO SUR RESEAU ETHERNET
TP N° 2 : OSCILLOSCOPE NUMERIQUE
Ouvrez le menu principal
TRAITEMENT D’IMAGE SIF-1033 Segmentation des images par détection de contours et d’arêtes u Détection des contours et arêtes u Dérivée première (gradient)
INF-1019 Programmation en temps réel
INF3500 : Conception et implémentation de systèmes numériques Pierre Langlois Performance de circuits.
Structures de données avancées : LH (Hachage linéaire) D. E ZEGOUR Institut National d ’Informatique.
Stage technique Cora.
Les périphériques d’affichage
Chap 10 : Utilisation de l’oscilloscope.
TP N° 1 : OSCILLOSCOPE ANALOGIQUE
FICHE TECHNIQUE DESIGNATION : RESISTANCE SYMBOLE : CARACTERISTIQUES:
Tensions à l'Oscilloscope.
DUCKHUNT Olivier Agopian Antoine Christin Laurent Romieux Mathieu Rouyez.
DESIGN GRAPHIQUE A. DAAIF ENSET Université Hassan II
Cours 8 La transmission.
Thème 1 : Activités fondamentales
Présentation de la carte graphique
Chapitre 2 Synthèse additive et couleurs des objets.
L’image vidéo. Séquence 1 : l’image vidéo Le Pixel est un carré lumineux : => simple définition (SD), deux standards : plusieurs NTSC et PAL => haute définition.
Cours 3 21 janvier 2010 Quelques principes d’ergonomie de l’écran et du contenu de la page web Cours 3 21 janvier 2010 Quelques principes d’ergonomie de.
Formats, définition et résolution
Conception des pages Web avec
Les couleurs.
LOGICIEL PL7 MICRO PROGRAMMATION MISE AU POINT Consignes?
CHAPITRE II LA TENSION ALTERNATIVE
Photoshop 6.0 Aurélie KNOSP Ye LU.
Dreamweaver le retour Avec Les Formulaires Les Calques
Télécharger :
L’image Quelques repères sur l’image Quelques repères sur l’image.
Dreamweaver 2 Feuilles de Style CSS Formulaires Calques Comportements
Les bascules et registres
A.I.P. Malibert 2012 Gestion des Couleurs Nicolas Cuvillier.
Les vues O.Legrand G.Seront. Les vues Dans Android, une ihm est composée de vues. Ces vues.
1 Initiation à la micro-informatique Le matériel un clic pour la suite… Moniteur.
Transcription de la présentation:

Synthèse d’un jeu vidéo en VHDL Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Structure de principe d’un jeu vidéo De façon simplifiée, un jeu vidéo est constitué de : Un coeur (CORE) chargé de gérer les caractéristiques primaires des objets animés à incruster dans l’image : positions, amplitudes, etc., ceci en fonction des règles comportementales du jeu. C’est ce coeur qui reçoit les commandes externes du jeu. Une unité d’affichage (DISPLAY) : c’est elle qui va produire les signaux de contrôle (synchros horizontale et verticale) et les signaux vidéo correspondant aux objets gérés par le noyau. L’aspect de ces objets (forme, couleur, etc.) est fonction des spécifications du jeu. Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Schéma structurel d’un jeu vidéo Spécifications standard vidéo caractéristiques primaires des objets du jeu CORE Gestion des objets du jeu DISPLAY Mise en forme des objets du jeu Signaux vidéo (Synchro, RVB) Commandes externes Spécifications comportementales Spécifications d’aspect Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Un standard vidéo simple : le système VGA (nom donné à l’interface : Video Graphics Adapter) Une image VGA est formée d’une trame de 480 lignes balayées de haut en bas, à raison de 60 trames par seconde. Chaque ligne comprend 640 pixels et est balayée de gauche à droite. De façon simplifiée, un écran VGA (LCD ou cathodique) est piloté par 5 signaux : 2 signaux logiques de synchronisation : synchronisation horizontale : signale le début d’une nouvelle ligne synchronisation verticale : signale le début d’une nouvelle trame 3 signaux analogiques vidéo (rouge, vert, bleu) d’amplitude maximale 1 volt sur charge de 75 ohms. Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Le contrôleur vidéo VGA A l’aide de deux compteurs X et Y, le contrôleur vidéo VGA sert à adresser en continu un espace 525 x 800 dans lequel se trouve inclus l’espace vidéo 480 x 640 comme le montre la figure suivante : 639 640 799 X Espace vidéo 479 480 524 Blanking Y En dehors de l’espace vidéo les signaux vidéo (RVB) doivent être à 0. Le contrôleur vidéo VGA délivre un signal « blanking » destiné à bloquer les signaux RVB dans cet espace. Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Timing de la synchronisation Le contrôleur VGA délivre les signaux de synchronisation horizontale et verticale en fonction des valeurs des compteurs X et Y selon le timing suivant : Synchro horizontale (fonction de X) : 659 755 756 799 639 640 31.75 µs (31.5 KHz) Vidéo Retour (pas de vidéo) La fréquence d’adressage X sera de (800/31.75) = 25.196 MHz, soit environ 25 MHz Synchro verticale (fonction de Y) : 493 494 495 524 479 480 16.67 ms (60 Hz) Vidéo Retour (pas de vidéo) Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Structure du contrôleur VGA Le contrôleur VGA est composé de 2 compteurs X et Y dont les valeurs fournissent par décodage les signaux de synchronisation et de blanking. VSYNC Décodeur HSYNC BLANK X Y X = 799 Compteur Y % 525 E CLK (25MHz) Compteur X % 800 Sauf pour les besoins d’une simulation, une remise à zéro asynchrone des compteurs X et Y n ’est pas souhaitable en raison du décrochement momentané de la synchronisation au niveau de l’écran utilisé. Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Génération de l’image d’un objet simple Supposons que le noyau fournisse simplement les coordonneés XP et YP d’un objet qui doit être affiché sous l ’aspect d’un carré blanc de 10 pixels de côté, sur fond vert, avec le coin supérieur gauche calé sur (XP,YP). Le module DISPLAY aura la structure suivante : VSYNC HSYNC CTRL_VGA CLK (25MHz) GEN_RVB P_RVB BLANK RVB 3 GEN_CARRE P_VC VC X Y XP YP Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Process de génération de l’image d’un objet simple Process de génération du signal VC validant la zone du carré : P_VC : process (X,Y,XP,YP) begin if X>=XP and X<XP+10 and Y>=YP and Y<YP+10 then VC <= '1'; else VC <= '0'; end if; end process P_VC; Process de génération des signaux vidéo RVB : P_RVB : process (CLK) begin if CLK'event and CLK = '1' then if BLANK = '1' then RVB <= "000"; elsif VC = '1' then RVB <= "111"; else RVB <= "010"; end if; end process P_RVB; Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Génération de l’image d’un objet complexe (sprite) L’objet à afficher ne se résume plus à une forme géométrique simple. Il s’inscrit cependant dans une matrice de L lignes de K pixels. Sa position est celle du coin supérieur gauche (XS, YS). XS YS Le contenu de la matrice décrit l’objet (sprite) à afficher. On lui associe un tableau de L vecteurs de K bits pour un objet monochrome ou L vecteurs de K entiers pour un objet multicolore. Autant que possible ce tableau est implémenté à l’aide d’un bloc RAM du FPGA cible si ce dernier en dispose. Ceci est inféré automatiquement par la plupart des synthétiseurs. Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Process de description d’un sprite monochrome signal SPRITE : bit_vector (0 to 6); signal AD_SPRITE : integer range 0 to 9; ... P_SPRITE : process (AD_SPRITE) begin case AD_SPRITE is when 0 => SPRITE <= "0111110"; when 1 => SPRITE <= "1000001"; when 2 => SPRITE <= "1010101"; when 3 => SPRITE <= "1000001"; when 4 => SPRITE <= "1001001"; when 5 => SPRITE <= "1001001"; when 6 => SPRITE <= "1000001"; when 7 => SPRITE <= "1011101"; when 8 => SPRITE <= "1000001"; when 9 => SPRITE <= "0111110"; end case; end process P_SPRITE; Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Process de génération de l’image d’un sprite monochrome AD_SPRITE <= Y-YS; -- adresse de la ligne du sprite Process de génération du signal VS validant les pixels du sprite : P_VS : process (X,Y,XS,YS,SPRITE) begin if X>=XS and X<XS+7 and Y>=YS and Y<YS+10 then VS <= SPRITE(X-XS); else VS <= '0'; end if; end process P_VS; Process de génération des signaux vidéo RVB : P_RVB : process (CLK) begin if CLK'event and CLK = '1' then if BLANK = '1' then RVB <= "000"; elsif VS = '1' then RVB <= "111"; else RVB <= "010"; end if; end process P_RVB; Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Thème du TP Spécifications fonctionnelles Le jeu vidéo à réaliser est un jeu de squash à un joueur, avec une balle et une raquette virtuelles qui se déplaceront dans le champ d’un écran VGA. Le jeu consistera simplement à renvoyer la balle vers le fond du court en la touchant avec la raquette dont la position dépend du joueur. Un score affiché sur l’écran s’incrémentera à chaque balle renvoyée. Lorsque le score atteint 15, la partie en cours est gagnée et sera arrêtée jusqu’ à la relance d’une nouvelle partie. La partie s’arrête aussi lorsque le joueur a raté une balle… Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Implémentation Le jeu sera implémenté à l’aide d’une carte munie d’un FPGA Spartan3 de 200 000 portes et équipée entre autres d’un port de sortie VGA et de 4 boutons poussoirs BTN0 à BTN3. On adoptera les spécifications techniques suivantes : Ecran VGA 480 lignes de 640 pixels, 60 trames/sec, couleurs 1 bit. (On aura donc 8 couleurs possibles : noir, blanc, rouge, vert, bleu, jaune, cyan, magenta.) Court : vert, mur à gauche de l’écran, joueur à droite. Balle : carré blanc 16x16 animé selon une trajectoire à +/- 45 degrés avec rebonds sur le fond et les côtés du court. Raquette : rectangle rouge (largeur 16, hauteur 64) mobile verticalement à l’abscisse X= 512. Ses mouvements sont contrôlés par deux boutons poussoirs (BTN0 => DOWN, BTN1 => UP). Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Implémentation (suite) Affichage du score (0 à 15) en jaune, sur le haut de l’écran. Il sera fait appel à un component VHDL existant pour générer les chiffres à partir de la valeur du score. Règles comportementales : lorsque la balle rencontre la raquette il y a rebond et le score est incrémenté. Sinon la balle continue vers la droite et la partie est arrêtée (GAME_OVER) jusqu’au redémarrage d’une nouvelle partie par le bouton NEW_GAME (BTN2). Lorsque le score atteint 15, le joueur a gagné (WIN) et la partie s’arrête également. En outre : Oscillateur à quartz externe 50 MHz Réinitialisation asynchrone par BTN3 (RAZ) Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Vue externe UP HSYNC DOWN NEW_GAME SQUASH VSYNC 3 RAZ RVB QUARTZ Types : Toutes les entrées : std_logic; Sorties HSYNC, VSYNC : std_logic; Sortie RVB : std_logic_vector (0 to 2); Contrainte : ce système sera décrit de façon schématique au niveau supérieur. Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Analyse du coeur On peut procéder par objet à gérer : raquette, balle, score Raquette : compteur/décompteur (0 – 479) produisant l’ordonnée YR. Activé par les boutons UP et DOWN, il s’incrémente ou se décrémente à un rythme imposé par un temporisateur TIMER. Balle : deux compteurs/décompteurs (0 – 639 et 0 - 479) produisant les coordonnées XB et YB. Ils s’incrémentent ou se décrémentent à un rythme imposé par le même temporisateur TIMER (mais plus lentement que la raquette ! ). Ces deux compteurs auront besoin en interne de deux drapeaux SENS_X et SENS_Y à gérer sur les valeurs extrêmes de XB et YB ou sur contact avec la raquette. Score : compteur SCORE (0-15) s’incrémentant à chaque rebond de la balle sur la raquette. Chaque rebond produit une impulsion COUP. Remis à zéro à chaque départ de nouvelle partie. Un petit séquenceur gérera le départ du jeu et son arrêt. Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Schéma structurel du niveau supérieur SQUASH YR UP XB HSYNC DOWN CORE DISPLAY YB NEW_GAME VSYNC SCORE RVB CLK RAZ PREDIV QUARTZ Signaux internes : CLK : std_logic; XB : integer range 0 to 639; YR, YB : integer range 0 to 479; SCORE : integer range 0 to 15; Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Schéma structurel du component CORE CTRL_RAQ P_YR DOWN UP YR TEST_CONTACT YR XB YB CONTACT TEMPO P_TIMER TIMER CTRL_BALL P_XB P_YB XB YB SEQUENCEUR P_ETAT NEW_GAME ETAT COUP GEN_COUP XB SCORE SCORE CTRL_SCORE P_SCORE La même horloge CLK de 25 MHz est appliquée à tous les process synchrones. Le signal RAZ s’applique à tous les process synchrones. Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Séquencement de CORE CS_YB NEW_GAME = 1 1 CS_SCORE CS_XB NEW_GAME = 0 2 EN_XB EN_YB XB=639 SCORE=15 3 GAME_OVER 4 WIN NEW_GAME = 1 Les signaux WIN et GAME_OVER peuvent être utilisés de diverses façons : changement de couleurs, accélération du jeu, etc. Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Schéma structurel du component DISPLAY X,Y X GEN_RAQ P_VR VR CTRL_VGA Y HSYNC VSYNC YR BLANK GEN_BALL P_VB VB GEN_RVB P_RVB XB 3 YB RVB VS VIDEO_SCORE SCORE VIDEO_SCORE est un component générateur de caractères pour l’affichage du score. Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Développement Le projet comportera 7 fichiers dont voici l’arborescence : Niveau supérieur : SQUASH.SCH Coeur : CORE.VHD Vidéo : DISPLAY.VHD gen25MHz : PREDIV.VHD Contrôleur VGA : CTRL_VGA.VHD Affichage du score : VIDEO_SCORE.VHD Le niveau supérieur sera construit en schématique. Affichage chiffres : GEN_CHIFFRES.VHD VIDEO_SCORE est un component à importer. GEN_CHIFFRE est importé par VIDEO_SCORE. Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Étapes du développement (1) Création d’un projet SQUASH, vide. Le FPGA cible est le XC3S200, boîtier FT256, grade 5. On y ajoutera au fur et à mesure de leur création les objets qui suivent. Réalisation du component CTRL_VGA : codage et simulation. La simulation utilise le process « launch Modelsim ». Régler auparavant la résolution de la simulation à 10ns dans les propriétés de ce process : simulation properties level advanced simulation resolution : 10ns (et non 1ps, trop long) Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Étapes du développement (2) Réalisation du component PREDIV et génération de son symbole Codage des entités CORE et DISPLAY (entity avec architecture vide) et génération de leurs symboles Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Étapes du développement (3) Saisie schématique du niveau supérieur. (Menu FILE -> New , option SCHEMATIC) Symboles précédemment créés I/O marker (à renommer) Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Étapes du développement (4) Assignation des signaux aux broches du FPGA. Cette opération peut se faire dans le cadre des propriétés de chaque port du schéma (bouton droit, object properties) : on ajoute un nouvel attribut loc que l’on value par le numéro de la broche appropriée. On peut plus simplement ici importer un fichier de contraintes squash.ucf, à ajouter au projet. Il reste à ce stade à construire les architectures de CORE et DISPLAY. Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Étapes du développement (5) Test statique Architecture de CORE : initialiser les signaux transmis à DISPLAY. (XB = 320, YB = 240, YR = 240, SCORE = 0 par exemple) Architecture de DISPLAY : instancier CTRL_VGA et VIDEO_SCORE et coder les process P_VR, P_VB et P_RVB. Synthétiser et tester le système sur écran VGA. A ce stade, la balle, la raquette et le score doivent apparaître (immobiles) conformément aux spécifications. Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Étapes du développement (6) Architecture de CORE : codage et test progressifs Gestion de raquette (YR) sous contrôle de UP et DOWN avec ralentissement par TIMER. Tester. Gestion de la balle (XB,YB) avec ralentissement par TIMER. Mouvement libre avec rebonds sur les bords du champ ou sur la raquette (rebond provoqué par le signal CONTACT) . Tester. Gestion du score : production d’un signal impulsionnel COUP qui doit apparaître à chaque entrée en contact avec la raquette. Ce signal doit servir à incrémenter SCORE. Tester. Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Étapes du développement (7) Architecture de CORE : codage et test progressifs (suite) Codage du séquenceur (signal ETAT) Mise sous contrôle de la balle et du score par ETAT. Test final. Étude de la mise en forme circulaire de la balle (sprite circulaire). Groupe ESEO - TP I2 – Synthèse VHDL 2007

Groupe ESEO - TP I2 – Synthèse VHDL 2007 Conclusion Avez-vous appris un peu plus de choses ? Aller voir le fichier produit par le process  "View HDL Functional Model" Groupe ESEO - TP I2 – Synthèse VHDL 2007