From d91880a40f4d94f8f53bfa39ae796fb44ff53a21 Mon Sep 17 00:00:00 2001 From: Lilian RM Date: Wed, 29 Jul 2020 08:44:29 +0100 Subject: [PATCH] =?UTF-8?q?Transf=C3=A9rer=20les=20fichiers=20vers=20'util?= =?UTF-8?q?s'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit utils (including functions used, please also use used_functions.vhd in your architecture for a synthesis) --- utils/simu_pkg.vhd | 13 +++++ utils/used_functions_pkg.vhd | 95 ++++++++++++++++++++++++++++++++++++ utils/utils.vhd | 33 +++++++++++++ 3 files changed, 141 insertions(+) create mode 100644 utils/simu_pkg.vhd create mode 100644 utils/used_functions_pkg.vhd create mode 100644 utils/utils.vhd diff --git a/utils/simu_pkg.vhd b/utils/simu_pkg.vhd new file mode 100644 index 0000000..b2210ea --- /dev/null +++ b/utils/simu_pkg.vhd @@ -0,0 +1,13 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.numeric_std.ALL; +USE work.PFB_PKG.ALL; + +PACKAGE simu_pkg IS + + + TYPE donnee_sortie IS ARRAY (0 TO 2*cst_nb_parallel_firs_dfts_pfb-1) OF integer; + CONSTANT w_x_simu : natural := 4; + + +END; diff --git a/utils/used_functions_pkg.vhd b/utils/used_functions_pkg.vhd new file mode 100644 index 0000000..97f841c --- /dev/null +++ b/utils/used_functions_pkg.vhd @@ -0,0 +1,95 @@ +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; +USE ieee.std_logic_signed.ALL; +USE ieee.numeric_std.ALL; + +PACKAGE used_functions_pkg IS + + FUNCTION log2_sup_integer (number : natural) RETURN natural; + FUNCTION log2_inf_integer (number : natural) RETURN natural; + + +END PACKAGE; + +PACKAGE BODY used_functions_pkg IS + + --functions + FUNCTION log2_sup_integer (number : natural) RETURN natural IS + VARIABLE result : natural; + BEGIN + + IF(number <= 1) THEN + result := 0; + ELSIF(number = 2) THEN + result := 1; + ELSIF(number > 2 AND number <= 4) THEN + result := 2; + ELSIF(number > 4 AND number <= 8) THEN + result := 3; + ELSIF(number > 8 AND number <= 16) THEN + result := 4; + ELSIF(number > 16 AND number <= 32) THEN + result := 5; + ELSIF(number > 32 AND number <= 64) THEN + result := 6; + ELSIF(number > 64 AND number <= 128) THEN + result := 7; + ELSIF(number > 128 AND number <= 256) THEN + result := 8; + ELSIF(number > 256 AND number <= 512) THEN + result := 9; + ELSIF(number > 512 AND number <= 1024) THEN + result := 10; + ELSIF(number > 1024 AND number <= 2048) THEN + result := 11; + ELSIF(number > 2048 AND number <= 4096) THEN + result := 12; + ELSIF(number > 4096 AND number <= 8192) THEN + result := 13; + ELSIF(number > 8192 AND number <= 16384) THEN + result := 14; + ELSIF(number > 16384 AND number <= 32768) THEN + result := 15; + END IF; + RETURN result; + END FUNCTION; + + FUNCTION log2_inf_integer (number : natural) RETURN natural IS + VARIABLE result : natural; + BEGIN + + IF(number < 2) THEN + result := 0; + ELSIF(number >= 2 AND number < 4) THEN + result := 1; + ELSIF(number >= 4 AND number < 8) THEN + result := 2; + ELSIF(number >= 8 AND number < 16) THEN + result := 3; + ELSIF(number >= 16 AND number < 32) THEN + result := 4; + ELSIF(number >= 32 AND number < 64) THEN + result := 5; + ELSIF(number >= 64 AND number < 128) THEN + result := 6; + ELSIF(number >= 128 AND number < 256) THEN + result := 7; + ELSIF(number >= 256 AND number < 512) THEN + result := 8; + ELSIF(number >= 512 AND number < 1024) THEN + result := 9; + ELSIF(number >= 1024 AND number < 2048) THEN + result := 10; + ELSIF(number >= 2048 AND number < 4096) THEN + Result := 11; + ELSIF(Number >= 4096 AND number < 8192) THEN + result := 12; + ELSIF(number >= 8192 AND number < 16384) THEN + result := 13; + ELSIF(number >= 16384 AND number < 32768) THEN + result := 14; + END IF; + RETURN result; + END FUNCTION; + +END PACKAGE BODY used_functions_pkg; diff --git a/utils/utils.vhd b/utils/utils.vhd new file mode 100644 index 0000000..304a425 --- /dev/null +++ b/utils/utils.vhd @@ -0,0 +1,33 @@ +-- *********************** Divers fonction utiles *************************** + + +LIBRARY ieee; +USE ieee.std_logic_1164.ALL; + + +PACKAGE utils IS + PROCEDURE horloge ( SIGNAL h: OUT std_logic; th, tb : time); + PROCEDURE horloge_retard ( SIGNAL h : OUT std_logic; periode : time ; + retard : time); +END utils; +--------------------------------------------------- +PACKAGE BODY utils IS + PROCEDURE horloge ( SIGNAL h : OUT std_logic; th, tb : time) IS + BEGIN + LOOP + h <= '0', '1' AFTER tb; + WAIT FOR tb + th ; + END LOOP; + END; + + PROCEDURE horloge_retard ( SIGNAL h : OUT std_logic; periode : time ; + retard : time) IS + BEGIN + h <= '0'; + WAIT FOR retard; + LOOP + h <= '1' , '0' AFTER periode/2 ; + WAIT FOR periode; + END LOOP; + END; +END utils;