63 lines
2.0 KiB
VHDL
63 lines
2.0 KiB
VHDL
|
|
library IEEE;
|
|
use IEEE.STD_LOGIC_1164.ALL;
|
|
use ieee.numeric_std.all;
|
|
use work.fixed_pkg.all;
|
|
|
|
package mix_pkg is
|
|
|
|
-------------------------------------------------------------
|
|
-- Constructor helpers
|
|
-- Use: variable v8u6 : ufixed_t(ufixed(8,6)'range);
|
|
function uproto (nbits : integer; nbits_frac : integer) return ufixed;
|
|
|
|
-- Use: variable v8s6 : sfixed_t(sfixed(8,6)'range);
|
|
function sproto (nbits : integer; nbits_frac : integer) return sfixed;
|
|
|
|
function to_unsigned (src : ufixed) return UNSIGNED;
|
|
function to_signed (src : sfixed) return SIGNED;
|
|
|
|
-------------------------------------------------------------------------------
|
|
end; -- package mix_cpx_pkg;
|
|
|
|
package body mix_pkg is
|
|
|
|
-------------------------------------------------------------
|
|
-- Constuctor helpers
|
|
function uproto (nbits : integer; nbits_frac : integer) return ufixed is
|
|
constant result : ufixed (nbits-nbits_frac-1 downto -nbits_frac) := (others => '0');
|
|
begin
|
|
return result(nbits-nbits_frac-1 downto -nbits_frac);
|
|
end uproto;
|
|
|
|
-------------------------------------------------------------
|
|
function sproto (nbits : integer; nbits_frac : integer) return sfixed is
|
|
constant result : sfixed (nbits-nbits_frac downto -nbits_frac+1) := (others => '0');
|
|
begin
|
|
return result(nbits-nbits_frac downto -nbits_frac+1);
|
|
end sproto;
|
|
|
|
-------------------------------------------------------------
|
|
function to_unsigned (src : ufixed) return UNSIGNED is
|
|
subtype t is UNSIGNED(src'high - src'low downto 0);
|
|
variable slv : t;
|
|
begin
|
|
slv := t(src);
|
|
return UNSIGNED(to_X01(std_logic_vector(slv)));
|
|
|
|
end function to_unsigned;
|
|
|
|
-------------------------------------------------------------
|
|
function to_signed (src : sfixed) return SIGNED is
|
|
subtype t is SIGNED(src'high - src'low downto 0);
|
|
variable slv : t;
|
|
begin
|
|
slv := t(src);
|
|
return SIGNED(to_X01(std_logic_vector(slv)));
|
|
|
|
end function to_signed;
|
|
|
|
|
|
-------------------------------------------------------------------------------
|
|
end; -- package mix_pkg;
|