Répondre à la discussion
Affichage des résultats 1 à 12 sur 12

Tape taupe en vhdl



  1. #1
    guetarac23

    Tape taupe en vhdl


    ------

    Bonjour à tous;

    Je suis en 1ère année d'ingénieur et j'ai comme mini-projet un tape taupe à faire en vhdl sur une carte FPGA Xilinx Spartan-3 ( 8 interrupteurs, 8 leds, 4 boutons poussoirs, quartz de 50MHz ...).
    Pour démarrer le jeu j'active un interrupteur puis une led (parmi 8) va s'allumer pendant 3 secondes puis elle s'éteint pendant 2 secondes.
    A partir de cet instant c'est le début du jeu, des leds vont s'allumer aléatoirement et il faudra appuyer sur les boutons poussoirs correspondant pour les éteindre.

    Ma question : Comment faire pour allumer et éteindre une led pendant un certain temps sans utliser de bouton poussoir ou interrupteur?

    -----

  2. Publicité
  3. #2
    nhenri

    Re : Tape taupe en vhdl

    si je comprend bien ta question, tu veux savoir comment faire un delais en VHDL. C'est tres simple en fait, prend ton CLOCK IN de ton FPGA et divise le (exemple en comptant un int) pour cree ton delais

    -Nik-

  4. #3
    indri

    Re : Tape taupe en vhdl

    Une piste:

    clk:50Mhz
    clk2:1Hz si je me suis pas gourrer

    Code:
    signal clk2:std_logic;
    
    begin
    
    process(clk)
    variable compt:std_logic_vector(23 downto 0);
    begin
    	if clk'event and clk='1' then
    		if reset='1' then
    			compt:=std_logic_vector(to_unsigned(0,24));
    		else
    			if compt=std_logic_vector(to_unsigned(25000000,24)) then
    				clk2<=not(clk2);
    				compt:=std_logic_vector(to_unsigned(0,24));
    			else
    				compt:=compt+1;
    			end if;
    		end if;
    	end if;
    	
    end process;
    
    process(clk)
    	variable compt:std_logic_vector(3 downto 0);
    	variable oldclk:std_logic;
    begin
    	if clk'event and clk='1' then
    		if reset='1' then
    			--
    		else
    			if oldclk='0' and clk2='1' then
    					compt:=compt+1;
    					case compt is
    						when "0000" =>  led1<='1';led2<='0'; --etc
    						when "0001" => --etc
    						--etc
    					end case
    			end if;
    			oldclk:=clk2;
    		end if;
    	end if;
    end process;
    Là où va le vent...

  5. #4
    nhenri

    Re : Tape taupe en vhdl

    experience perso utilise rising_edge(clk) ou leiu de if clk'event and clk='1' then
    pour info voir http://vhdlguru.blogspot.com/2010/04...geclk-and.html

    aussi tu peu utiliser des int au lieu de des vector (signal etat : integer range 0 to 1023 ; ou signal nom : integer )

  6. #5
    indri

    Re : Tape taupe en vhdl

    Citation Envoyé par nhenri Voir le message

    aussi tu peu utiliser des int au lieu de des vector (signal etat : integer range 0 to 1023 ; ou signal nom : integer )
    Pour le rising edge, connaissais même pas la commande ^^
    Pour l'integer je répèterais ce qu'on ma dit: vaut mieux utiliser un std_logic_vector car on va assigner le nombre de bit qu'on a besoin , pas plus, tandis q'un integer ce sera d'office 16 ou 32 bits (c'est ca non?) et donc gaspillage des ressources du fpga. Pour des petits projets, ca passe...mais...
    Enfin bref...
    Là où va le vent...

  7. A voir en vidéo sur Futura
  8. #6
    nhenri

    Re : Tape taupe en vhdl

    "Pour le rising edge, connaissais même pas la commande " ouais bin moi non plus vla pas si longtemp!! mais jai eu un probleme du genre 'sa marche dans modelsim mais pas sur le carte' pi se sa qui a tout changer ...

    "donc gaspillage des ressources du fpga" mais mais mais non mon ami tu lit trop vite :

    signal etat : integer range 0 to 1023 , pour 1024 etat

    signal etat : integer range 0 to 11 si tu veu juste 12 etat

    -Nik-

  9. Publicité
  10. #7
    indri

    Re : Tape taupe en vhdl

    Ok merci pour l'info. Encore beaucoup de chose que j'ignore.

    Mais je ne pense pas que je vais changer mes habitudes de programmation pour autant ^^

    Bref pour revenir au problème ici: une fois que t'as t'a clock de 1Hz, tu fais un peu ce que tu veux...
    Là où va le vent...

  11. #8
    guetarac23

    Re : Tape taupe en vhdl

    Merci pour vos réponses mais je ne comprends pas l'utilité de la clock secondaire de 1Hz et pourquoi 1 Hz?

  12. #9
    nhenri

    Re : Tape taupe en vhdl

    hz = hertz = nombre de fois par seconde
    donc un process sur 1hz s execute a tout les secondes magic !

  13. #10
    guetarac23

    Re : Tape taupe en vhdl

    Je retire ma question précedente

  14. #11
    guetarac23

    Re : Tape taupe en vhdl

    Je ne comprends pas entièrement le code en fait. Le premier process fournit le signal périodique de la clk je pense mais je ne comprends pas ce que fait cette instruction:
    " if compt=std_logic_vector(to_unsi gned(25000000,24)) " ?

    Et dans le deuxième process que représente la variable oldclk?

    Merci

  15. #12
    nhenri

    Re : Tape taupe en vhdl

    ba c parce que c de la veille ecole, tu peux utiliser des 'int' comme en C au leiu de des vecteur

    de memoire if compt=std_logic_vector(to_unsi gned(25000000,24)) " ? veut dire 'est-ce que compt convertie en nombre non signer sur 24 bits est egual a 25000000'

    avec un int c genre

    signal count: integer range 0 to 50;

    begin
    process(reset,clk)
    begin
    if (reset='0') then
    count<=0;
    clk_out<='0';
    elsif rising_edge(clk) then
    if (count=24) then
    clk_out<=NOT(clk_out);
    count<=0;
    else
    count<=count+1;
    end if;
    end if;
    end process;
    end divisore_body


    source : http://www.velocityreviews.com/forum...y-divider.html

    -Nik-

  16. Publicité

Sur le même thème :

Discussions similaires

  1. Réussir sa taupe ... en couple !
    Par Romain-des-Bois dans le forum Orientation après le BAC
    Réponses: 15
    Dernier message: 02/10/2010, 23h13
  2. Rejet d'une taupe
    Par treb dans le forum Archéologie
    Réponses: 2
    Dernier message: 20/10/2009, 07h49
  3. Une grenouille se tape l'incruste ...
    Par Chuck66 dans le forum Identification des espèces animales ou végétales
    Réponses: 2
    Dernier message: 08/05/2009, 12h13
  4. Point flottant en VHDL et vhdl-200x
    Par grel08128103 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 02/09/2008, 20h47
  5. taupe
    Par carbone14 dans le forum Biologie
    Réponses: 4
    Dernier message: 02/08/2005, 19h28
Découvrez nos comparatifs produits sur l'informatique et les technologies.