Bonjour à tous,
Dans le cadre de mes études, nous devons réaliser un projet tout en étant autonome. Nous connaissons pas le langage, donc nous devons lire des livres, pdfs, ....
J'ai compris que les process démarrent lorsqu'il y a une sensibilité sur ceux-ci. Je suis bien d'accord.
Cependant, lorsque je teste : Au premier démarrage du FPGA (cyclone III), il me met à jour une valeur (en l'occurence un afficheur 7 segments DEC3 sur la valeur 4....).
Comme vous pouvez le voir, il me met DEC3 à 4, puis sur le falling edge, rising edge, il fait bien ce que je lui demande.Code:Library ieee; Use ieee.std_logic_1164.all; Use ieee.numeric_std.all; Use ieee.std_logic_unsigned.all; Use ieee.std_logic_arith.all; -- ------------------------------------------- -- Initialisation des I/O -------------------- entity Vhdl1 is port( clock_50 : in std_logic; SW : in std_logic_vector(9 downto 0); HEX0_D : out std_logic_vector(6 downto 0); HEX1_D : out std_logic_vector(6 downto 0); HEX2_D : out std_logic_vector(6 downto 0); HEX3_D : out std_logic_vector(6 downto 0); LEDG : inout std_logic_vector(9 downto 0); BUTTON : in std_logic_vector(2 downto 0) ); end Vhdl1; ----------------------------------------------- architecture SEGMENT of Vhdl1 is signal DEC0, DEC1, DEC2, DEC3 : integer:=0; begin RESET : process(button(0)) variable compteur : integer:=0; begin DEC0 <= 4; -- CETTE VALEUR EST MISE A JOUR, cependant je n'ai pas encore appuyé sur button(0) if(rising_edge(button(0))) then if(button(0) ='0') then DEC2 <= 1; else DEC2 <= 2; end if; end if; if(falling_edge(button(0))) then -- quand on a pressÈ (logique inverse) if(button(0)='1') then DEC3 <= 1; else DEC3 <= 4; end if; end if; end process; -- gestion des 7 segments HEX0_D <= "1000000" when DEC0 = 0 else "1111001" when DEC0 = 1 else "0100100" when DEC0 = 2 else "0110000" when DEC0 = 3 else "0011001" when DEC0 = 4 else "0010010" when DEC0 = 5 else "0000010" when DEC0 = 6 else "1111000" when DEC0 = 7 else "0000000" when DEC0 = 8 else "0010000" when DEC0 = 9 else "-------"; HEX1_D <= "1000000" when DEC1 = 0 else "1111001" when DEC1 = 1 else "0100100" when DEC1 = 2 else "0110000" when DEC1 = 3 else "0011001" when DEC1 = 4 else "0010010" when DEC1 = 5 else "0000010" when DEC1 = 6 else "1111000" when DEC1 = 7 else "0000000" when DEC1 = 8 else "0010000" when DEC1 = 9 else "-------"; HEX2_D <= "1000000" when DEC2 = 0 else "1111001" when DEC2 = 1 else "0100100" when DEC2 = 2 else "0110000" when DEC2 = 3 else "0011001" when DEC2 = 4 else "0010010" when DEC2 = 5 else "0000010" when DEC2 = 6 else "1111000" when DEC2 = 7 else "0000000" when DEC2 = 8 else "0010000" when DEC2 = 9 else "-------"; HEX3_D <= "1000000" when DEC3 = 0 else "1111001" when DEC3 = 1 else "0100100" when DEC3 = 2 else "0110000" when DEC3 = 3 else "0011001" when DEC3 = 4 else "0010010" when DEC3 = 5 else "0000010" when DEC3 = 6 else "1111000" when DEC3 = 7 else "0000000" when DEC3 = 8 else "0010000" when DEC3 = 9 else "-------"; end SEGMENT;
Pourquoi, le process n'attend il pas que j'appuie, mais teste une fois le process au démarrage ?
Un très grand merci
-----