Files
IEEE754Adder/ZeroCheck.vhd

41 lines
895 B
VHDL
Raw Normal View History

2019-08-24 14:39:01 +02:00
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity ZeroCheck is
port(
X, Y: in std_logic_vector(31 downto 0);
isZero: out std_logic
);
end ZeroCheck;
architecture ZeroCheckArch of ZeroCheck is
component EqualCheck is
generic( BITCOUNT: integer := 8 );
port(
X, Y: in std_logic_vector( (BITCOUNT-1) downto 0 );
isEqual: out std_logic
);
end component;
signal xSign: std_logic;
signal ySign: std_logic;
signal xAbs: std_logic_vector(30 downto 0);
signal yAbs: std_logic_vector(30 downto 0);
signal isSameAbsValue: std_logic;
signal isSameSign: std_logic;
begin
xSign <= X(31);
ySign <= Y(31);
xAbs <= X(30 downto 0);
yAbs <= Y(30 downto 0);
isSameSign <= xSign xnor ySign;
AbsCheck: EqualCheck
generic map ( BITCOUNT => 31 )
port map (X => xAbs, Y => yAbs, isEqual => isSameAbsValue);
isZero <= (not isSameSign) and isSameAbsValue;
end ZeroCheckArch;