sizing¶
Dependencies¶
None
Description¶
This package provides functions used to compute integer approximations
of logarithms. The primary use of these functions is to determine the
size of arrays using the bit_size() and encoding_size() functions. When put to
maximal use it is possible to create designs that eliminate hardcoded
ranges and automatically resize their signals and variables by changing a
few key constants or generics.
These functions can be used in most synthesizers to compute ranges for
arrays. The core functionality is provided in the ceil_log() and
floor_log() subprograms. These compute the logarithm in any integer base.
For convenenience, base-2 functions are also provided along with the array
sizing functions. See the bcd_conversion implementation
of decimal_size() for a practical
example of computing integer logs in base-10 using this package.
Example usage¶
constant MAX_COUNT : natural := 1000;
constant COUNT_SIZE : natural := bit_size(MAX_COUNT);
signal counter : unsigned(COUNT_SIZE-1 downto 0);
...
counter <= to_unsigned(MAX_COUNT, COUNT_SIZE);
-- counter will resize itself as MAX_COUNT is changed
Subprograms¶
-
sizing.floor_log(n : positive; b : positive) → natural¶ - Compute the integer result of the function floor(log(n)).
Parameters: - n (positive) – Number to take logarithm of
- b (positive) – Base for the logarithm
Returns: Approximate logarithm of n rounded down.
Example:
size := floor_log(20, 2);
-
sizing.ceil_log(n : positive; b : positive) → natural¶ - Compute the integer result of the function ceil(log(n)) where b is the base.
Parameters: - n (positive) – Number to take logarithm of
- b (positive) – Base for the logarithm
Returns: Approximate logarithm of n rounded up.
Example:
size := ceil_log(20, 2);
-
sizing.floor_log2(n : positive) → natural¶ - Compute the integer result of the function floor(log2(n)).
Parameters: - n (positive) – Number to take logarithm of
Returns: Approximate base-2 logarithm of n rounded down.
-
sizing.ceil_log2(n : positive) → natural¶ - Compute the integer result of the function ceil(log2(n)).
Parameters: - n (positive) – Number to take logarithm of
Returns: Approximate base-2 logarithm of n rounded up.
-
sizing.bit_size(n : natural) → natural¶ - Compute the total number of bits needed to represent a number in binary.
Parameters: - n (natural) – Number to compute size from
Returns: Number of bits.
-
sizing.encoding_size(n : positive) → natural¶ - Compute the number of bits needed to encode n items.
Parameters: - n (positive) – Number to compute size from
Returns: Number of bits.
-
sizing.signed_size(n : integer) → natural¶ - Compute the total number of bits to represent a 2’s complement signed integer in binary.
Parameters: - n (integer) – Number to compute size from
Returns: Number of bits.