VHDL implementation of a polyphase filter bank with polyphase filter and 5ndft
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- 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;
|