Aggiunti moduli Swap, TwoComplement, OperationCheck
This commit is contained in:
42
PrepareForShift.vhd
Normal file
42
PrepareForShift.vhd
Normal file
@@ -0,0 +1,42 @@
|
||||
library IEEE;
|
||||
use IEEE.STD_LOGIC_1164.ALL;
|
||||
|
||||
entity PrepareForShift is
|
||||
port(
|
||||
X, Y: in std_logic_vector(31 downto 0);
|
||||
DIFF_EXP: out std_logic_vector(8 downto 0);
|
||||
SW: out std_logic
|
||||
);
|
||||
end PrepareForShift;
|
||||
|
||||
architecture PrepareForShiftArch of PrepareForShift is
|
||||
signal LT: std_logic;
|
||||
signal EQ: std_logic;
|
||||
|
||||
component Comparator is
|
||||
generic( BITCOUNT: integer := 8 );
|
||||
port(
|
||||
xT, yT: in std_logic_vector((BITCOUNT-1) downto 0);
|
||||
needSwap: out std_logic
|
||||
);
|
||||
end component;
|
||||
|
||||
begin
|
||||
C: Comparator
|
||||
port map (xT => X(22 downto 0), yT => Y(22 downto 0), needSwap => LT);
|
||||
|
||||
--istaziare sommatore la cui uscita va mappata in X(31 downto 23), Y(31 downto 23), DIFF_EXP
|
||||
|
||||
EQ <= '0';
|
||||
|
||||
O: process (DIFF_EXP)
|
||||
begin
|
||||
for i in 8 downto 0 loop
|
||||
EQ <= EQ or DIFF_EXP(i);
|
||||
end loop;
|
||||
end process;
|
||||
|
||||
SW <= DIFF_EXP(8) or (EQ and LT);
|
||||
|
||||
end PrepareForShiftArch;
|
||||
|
||||
Reference in New Issue
Block a user