PCS-2/comp/functions.vhd
2023-12-03 19:31:49 +01:00

46 lines
1.0 KiB
VHDL

-- functions.vhd: Useful functions not present in the vanilla VHDL libraries
-- Copyright (C) 2019 FIT BUT
-- Author(s): Lukas Kekely <ikekely@fit.vutbr.cz>
--
-- SPDX-License-Identifier: BSD-3-Clause
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
package functions_package is
-- Ceil 2-logarithm of a given number N, i.e. returns smallest value X for which 2^X >= N holds.
function clog2(n : natural) return natural;
-- Ceil division of a given number N by K, i.e. returns smallest value X for which X*K >= N holds.
function cdiv(n : natural; k : natural) return natural;
end functions_package;
package body functions_package is
function clog2(n : natural) return natural is
variable x, m : natural;
begin
x := 0;
m := 1;
while m < n loop
x := x + 1;
m := m * 2;
end loop;
return x;
end function;
function cdiv(n : natural; k : natural) return natural is
begin
return (n-1) / k + 1;
end function;
end functions_package;