library IEEE, DWARE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_arith.all;
use DWARE.DW_Foundation_arith.all;
entity DW_div_oper is
generic ( width : positive := 8);
port ( a : in std_logic_vector(width-1 downto 0);
b : in std_logic_vector(width-1 downto 0);
quotient_uns : out std_logic_vector(width-1 downto 0);
quotient_tc : out std_logic_vector(width-1 downto 0);
remainder_uns : out std_logic_vector(width-1 downto 0);
remainder_tc : out std_logic_vector(width-1 downto 0);
modulus_uns : out std_logic_vector(width-1 downto 0);
modulus_tc : out std_logic_vector(width-1 downto 0));
end DW_div_oper;
architecture oper of DW_div_oper is
begin
-- operators for unsigned/signed quotient, remainder and modulus
quotient_uns <= unsigned(a) / unsigned(b);
quotient_tc <= signed(a) / signed(b);
remainder_uns <= unsigned(a) rem unsigned(b);
remainder_tc <= signed(a) rem signed(b);
modulus_uns <= unsigned(a) mod unsigned(b);
modulus_tc <= signed(a) mod signed(b);
end oper;