aboutsummaryrefslogtreecommitdiffstats
path: root/testsuite/gna/issue301/packages/pkg_helper.vhd
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/gna/issue301/packages/pkg_helper.vhd')
-rw-r--r--testsuite/gna/issue301/packages/pkg_helper.vhd58
1 files changed, 58 insertions, 0 deletions
diff --git a/testsuite/gna/issue301/packages/pkg_helper.vhd b/testsuite/gna/issue301/packages/pkg_helper.vhd
new file mode 100644
index 000000000..8fe59743a
--- /dev/null
+++ b/testsuite/gna/issue301/packages/pkg_helper.vhd
@@ -0,0 +1,58 @@
+--!
+--! Copyright (C) 2011 - 2014 Creonic GmbH
+--!
+--! This file is part of the Creonic Viterbi Decoder, which is distributed
+--! under the terms of the GNU General Public License version 2.
+--!
+--! @file
+--! @brief Helper package with useful functions
+--! @author Markus Fehrenz
+--! @date 2011/12/02
+--!
+
+library ieee;
+use ieee.std_logic_1164.all;
+use ieee.numeric_std.all;
+
+
+package pkg_helper is
+
+ --!
+ --! Return the log_2 of an natural value, i.e. the number of bits required
+ --! to represent this unsigned value.
+ --!
+ function no_bits_natural(value_in : natural) return natural;
+
+ --! Return maximum of two input values
+ function max(value_in_a, value_in_b : natural) return natural;
+
+end pkg_helper;
+
+
+package body pkg_helper is
+
+ function no_bits_natural(value_in: natural) return natural is
+ variable v_n_bit : unsigned(31 downto 0);
+ begin
+ if value_in = 0 then
+ return 0;
+ end if;
+ v_n_bit := to_unsigned(value_in, 32);
+ for i in 31 downto 0 loop
+ if v_n_bit(i) = '1' then
+ return i + 1;
+ end if;
+ end loop;
+ return 1;
+ end no_bits_natural;
+
+ function max(value_in_a, value_in_b : natural) return natural is
+ begin
+ if value_in_a > value_in_b then
+ return value_in_a;
+ else
+ return value_in_b;
+ end if;
+ end function;
+
+end pkg_helper;