Files
IEEE754Adder/TypeCheck.vhd

62 lines
883 B
VHDL
Raw Permalink Normal View History

2019-08-17 18:45:31 +02:00
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity TypeCheck is
2019-08-29 15:12:25 +02:00
2019-08-17 18:45:31 +02:00
port(
2019-08-29 15:57:03 +02:00
N : in std_logic_vector(30 downto 0);
2019-08-29 15:12:25 +02:00
NAN, INF : out std_logic
2019-08-17 18:45:31 +02:00
);
2019-08-29 15:12:25 +02:00
2019-08-17 18:45:31 +02:00
end TypeCheck;
architecture TypeCheckArch of TypeCheck is
2019-08-29 15:12:25 +02:00
signal G_BUS : std_logic_vector(7 downto 0);
signal T_BUS : std_logic_vector(22 downto 0);
signal G : std_logic := '1';
signal T : std_logic := '0';
2019-08-17 18:45:31 +02:00
begin
2019-08-29 15:12:25 +02:00
G_BUS <= N(30 downto 23);
T_BUS <= N(22 downto 0);
2019-08-17 18:45:31 +02:00
2019-08-29 18:08:25 +02:00
G_PROCESS : process (G_BUS)
2019-08-29 15:12:25 +02:00
variable G_TMP : std_logic;
2019-08-17 18:45:31 +02:00
begin
2019-08-29 15:12:25 +02:00
G_TMP := '1';
for i in G_BUS'range loop
G_TMP := G_TMP and G_BUS(i);
2019-08-17 18:45:31 +02:00
end loop;
2019-08-29 15:12:25 +02:00
G <= G_TMP;
2019-08-17 18:45:31 +02:00
end process;
2019-08-29 18:08:25 +02:00
T_PROCESS : process (T_BUS)
2019-08-29 15:12:25 +02:00
variable T_TMP : std_logic;
2019-08-17 18:45:31 +02:00
begin
2019-08-29 15:12:25 +02:00
T_TMP := '0';
for i in T_BUS'range loop
T_TMP := T_TMP or T_BUS(i);
2019-08-17 18:45:31 +02:00
end loop;
2019-08-29 15:12:25 +02:00
T <= T_TMP;
2019-08-17 18:45:31 +02:00
end process;
2019-08-29 15:12:25 +02:00
NAN <= G and T;
2019-08-17 18:45:31 +02:00
INF <= G and (not T);
2019-08-29 15:12:25 +02:00
2019-08-17 18:45:31 +02:00
end TypeCheckArch;