Files
IEEE754Adder/Comparator.vhd

35 lines
750 B
VHDL
Raw Normal View History

2019-08-27 11:50:27 +02:00
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity Comparator is
generic( BITCOUNT: integer := 8 );
port(
xT, yT: in std_logic_vector((BITCOUNT-1) downto 0);
needSwap: out std_logic
);
end Comparator;
architecture ComparatorArch of Comparator is
signal xGTy: std_logic_vector((BITCOUNT-1) downto 0);
signal yGTx: std_logic_vector((BITCOUNT-1) downto 0);
begin
xGTy <= xT and (not yT);
yGTx <= (not xT) and yT;
needSwap_compute: process (xGTy, yGTx)
variable SW: std_logic;
variable K: std_logic;
begin
SW := '0';
K := '1';
for i in (BITCOUNT-1) downto 0 loop
SW := SW or ((not(xGTy(i)) and yGTx(i)) and K);
K := K and (not(xGTy(i) and not(yGTx(i))));
end loop;
needSwap <= SW;
end process;
end ComparatorArch;