Bonjour,
Élève ingénieur à ESIEE, je réalise actuellement un casse brique en VHDL qui sera programmé sur une Altera DE2.
Tout va bien mais un petit problème se pose. Je m'explique :
Nous avons créer une brique qui se casse après avoir été touchée 3 fois par une balle. Nous avons donc utilisé un compteur simple comme tous les autres compteurs de notre programme.
Sauf qu'un soucis se pose : Le compteur compte 2 par 2 (Au lieu de s'incrémenter de 1 lors du contact avec la brique, il s'incrémente 2 fois très rapidement) ... Ce qui est assez embêtant car la brique se casse en 2 fois au lieu de 3 et nous ne pouvons l'expliquer.
Voici la partie du code concerné :
brique_on et mbrique_on servent à activer ou désactiver la brique lorsque le compt_brique est à 3Code:brique_on_0 <= '0' when raza='1' else m_brique_on_0 when rising_edge(clkraquette); m_brique_on_0 <= '1' when mstart='0' else '0' when (unsigned(compt_brique_0) = 3) else brique_on_0 ; -- Gestion d'activation/desactivation de la brique. mcompt_brique_0 <= (others => '0') when unsigned (balle_haut) > (limite_bas + 300) else std_logic_vector(unsigned(compt_brique_0)+1) when "CONDITIONS POUR CASSER LA BRIQUE" else compt_brique_0; compt_brique_0 <= (others=>'0') when raza='1' else mcompt_brique_0 when rising_edge(clkraquette);
Cette condition : (balle_haut) > (limite_bas + 300) correspond à la perte de la balle.
La ligne "Conditions pour casser la brique" n'est pas précisée car longue mais ces conditions fonctionnent très bien dans d'autres parties du code.
La clkraquette est une horloge dont la période est 250 000 fois plus petite que celle de l'horloge processeur à 50Mhz.
Si vous avez une idée d'où peut provenir le problème, toute aide est la bienvenue
Merci d'avance, Tristan
-----