------------------------------------------------------------------------------- -- Title : carre par addition de la suite des nombres impairs -- Project : ------------------------------------------------------------------------------- -- File : carre_gen.vhd -- Author : NOUEL Patrice -- Company : -- Last update : 2002/01/08 -- Platform : ------------------------------------------------------------------------------- -- Description : algorithme en n iterations si n est la valeur d'entree -- ------------------------------------------------------------------------------- -- Modification history : -- 2002/01/08 : created ------------------------------------------------------------------------------- LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL; ENTITY carre_gen IS GENERIC ( nb_bits : natural := 8); -- nombre de bits de l'entree PORT ( init : IN std_ulogic; h : IN std_ulogic; nombre : IN std_logic_vector(nb_bits -1 DOWNTO 0); carre : OUT std_logic_vector(2*nb_bits -1 DOWNTO 0); fin_calcul : OUT std_ulogic); END carre_gen; ARCHITECTURE iteratif OF carre_gen IS BEGIN -- exam un : PROCESS VARIABLE a : natural ; -- entree VARIABLE b : natural ; -- resultat VARIABLE impair : natural ; -- suite des nombres impairs BEGIN -- PROCESS un WAIT UNTIL rising_edge(h); IF init = '1' THEN a := TO_integer(unsigned(nombre)); b := 0; impair := 1; ELSIF a = 0 THEN fin_calcul <= '1'; carre <= std_logic_vector(TO_unsigned(b, carre'length)); ELSE fin_calcul <= '0'; a := a -1 ; b := b + impair; impair := impair + 2; END IF; END PROCESS un; END iteratif;