Browse Source

Transférer les fichiers vers 'utils'

utils (including functions used, please also use used_functions.vhd in your architecture for a synthesis)
testing
Lilian RM 3 years ago
parent
commit
d91880a40f
3 changed files with 141 additions and 0 deletions
  1. +13
    -0
      utils/simu_pkg.vhd
  2. +95
    -0
      utils/used_functions_pkg.vhd
  3. +33
    -0
      utils/utils.vhd

+ 13
- 0
utils/simu_pkg.vhd View File

@@ -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;

+ 95
- 0
utils/used_functions_pkg.vhd View File

@@ -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;

+ 33
- 0
utils/utils.vhd View File

@@ -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;

Loading…
Cancel
Save