LIBRARY IEEE;
USE IEEE.std_logic_1164.all;
USE IEEE.std_logic_signed.all;
USE IEEE.std_logic_arith.all;
ENTITY fibo IS
	
	port(	clk,raz,en : in std_logic;
		n: in std_logic_vector (7 downto 0); 
		qc : out std_logic_vector (15 downto 0);
		ovf : out std_logic
		);
	
END fibo;
ARCHITECTURE behavioral OF fibo IS
   -- signal  Previous    : natural:=1;
   -- signal  Current     : natural:=1;
    --signal  Next_Fib    : natural;			
BEGIN
--Next_Fib<=Current+Previous ;
PROCESS (clk)
    variable  Previous    : integer:=1;
    variable  Current     : integer:=1;
    variable  Next_Fib    : integer:=2;		
    VARIABLE 	cnt 		: integer:=0;	
BEGIN
	IF(clk'event AND clk='1') then 
	
		IF raz = '1' THEN 
		
            			Previous := 1;
            			Current  := 1;
            			cnt:=0;
		
		ELSIF en='1' THEN
				
            			Previous := Current;
            			Current  := Next_Fib;
            			Next_Fib :=Current+Previous ;
            			
            			cnt:=cnt+1;
            			
            			IF(cnt>24) then
           				ovf<='1';
            			else 
            				ovf<='0';
            			END IF;
            			
            			IF(cnt = n) THEN
            			
            			Previous := 1;
            			Current  := 1;
            			cnt:=0;
            			
            			END IF;	
		END IF;
		
		qc <= CONV_STD_LOGIC_VECTOR(Previous,16);
	END IF;	
	
	
END PROCESS;
END behavioral;
			
			
									
						
										
						vhdl
Modérateur : Modérateur