1
0
SEm-Labos/Libs/Common/hdl/commonLib.vhd
github-classroom[bot] d212040c30
Initial commit
2024-02-23 13:01:05 +00:00

69 lines
3.1 KiB
VHDL

--------------------------------------------------------------------------------
-- Copyright 2012 HES-SO Valais Wallis (www.hevs.ch)
--------------------------------------------------------------------------------
-- This program is free software: you can redistribute it and/or modify
-- it under the terms of the GNU General Public License as published by
-- the Free Software Foundation; either version 3 of the License, or
-- (at your option) any later version.
--
-- This program IS distributed in the hope that it will be useful,
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-- GNU General Public License for more details.
-- You should have received a copy of the GNU General Public License along with
-- this program. If not, see <http://www.gnu.org/licenses/>
-- -----------------------------------------------------------------------------
-- Common Lib
--
-- -----------------------------------------------------------------------------
-- Authors:
-- cof: [François Corthay](francois.corthay@hevs.ch)
-- guo: [Oliver A. Gubler](oliver.gubler@hevs.ch)
-- -----------------------------------------------------------------------------
-- Changelog:
-- 2016-06 : guo
-- added function sel
-- 2015-06 : guo
-- added counterBitNb
-- added documentation
-- -----------------------------------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
PACKAGE CommonLib IS
------------------------------------------------------------------------------
-- Returns the number of bits needed to represent the given val
-- Examples:
-- requiredBitNb(1) = 1 (1)
-- requiredBitNb(2) = 2 (10)
-- requiredBitNb(3) = 2 (11)
function requiredBitNb(val : integer) return integer;
------------------------------------------------------------------------------
-- Returns the number of bits needed to count val times (0 to val-1)
-- Examples:
-- counterBitNb(1) = 1 (0)
-- counterBitNb(2) = 1 (0->1)
-- counterBitNb(3) = 2 (0->1->10)
function counterBitNb(val : integer) return integer;
------------------------------------------------------------------------------
-- Functions to return one or the other input based on a boolean.
-- Can be used to build conditional constants.
-- Example:
-- constant bonjour_c : string := sel(ptpRole = master, "fpga20", "fpga02");
function sel(Cond : BOOLEAN; If_True, If_False : integer)
return integer;
function sel(Cond : BOOLEAN; If_True, If_False : string)
return string;
function sel(Cond : BOOLEAN; If_True, If_False : std_ulogic_vector)
return std_ulogic_vector;
function sel(Cond : BOOLEAN; If_True, If_False : unsigned)
return unsigned;
function sel(Cond : BOOLEAN; If_True, If_False : signed)
return signed;
END CommonLib;