35 lines
680 B
VHDL
35 lines
680 B
VHDL
|
|
library IEEE;
|
||
|
|
use IEEE.STD_LOGIC_1164.ALL;
|
||
|
|
|
||
|
|
entity OutputSelector is
|
||
|
|
|
||
|
|
port(
|
||
|
|
IS_NAN : in std_logic;
|
||
|
|
IS_ZERO : in std_logic;
|
||
|
|
IEEE_754_SUM : in std_logic_vector(31 downto 0);
|
||
|
|
RESULT : out std_logic_vector(31 downto 0)
|
||
|
|
);
|
||
|
|
|
||
|
|
end OutputSelector;
|
||
|
|
|
||
|
|
architecture OutputSelectorArch of OutputSelector is
|
||
|
|
|
||
|
|
signal NAN_OUT : std_logic_vector(31 downto 0);
|
||
|
|
|
||
|
|
begin
|
||
|
|
|
||
|
|
NAN_OUT <= "0" & "11111111" & "10000000000000000000000";
|
||
|
|
|
||
|
|
SELECT_PROCESS : process (IS_NAN, IS_ZERO, IEEE_754_SUM, NAN_OUT)
|
||
|
|
|
||
|
|
begin
|
||
|
|
|
||
|
|
for i in 31 downto 0 loop
|
||
|
|
RESULT(i) <= (not(IS_NAN) and not(IS_ZERO) and IEEE_754_SUM(i)) or (IS_NAN and NAN_OUT(i));
|
||
|
|
end loop;
|
||
|
|
|
||
|
|
end process;
|
||
|
|
|
||
|
|
end OutputSelectorArch;
|
||
|
|
|