diff --git a/IEEE754Adder.xise b/IEEE754Adder.xise index 890df49..5c73487 100644 --- a/IEEE754Adder.xise +++ b/IEEE754Adder.xise @@ -81,11 +81,11 @@ - + - + @@ -95,7 +95,11 @@ - + + + + + @@ -152,7 +156,7 @@ - + @@ -187,9 +191,9 @@ - - - + + + @@ -217,16 +221,16 @@ - - - + + + - + @@ -288,11 +292,11 @@ - + - + @@ -303,15 +307,15 @@ - - - - + + + + - + @@ -331,7 +335,7 @@ - + @@ -355,8 +359,8 @@ - - + + @@ -366,7 +370,7 @@ - + @@ -375,7 +379,7 @@ - + diff --git a/ShiftRight.vhd b/ShiftRight.vhd new file mode 100644 index 0000000..1e7f9e0 --- /dev/null +++ b/ShiftRight.vhd @@ -0,0 +1,75 @@ +library IEEE; +use IEEE.STD_LOGIC_1164.ALL; + + +entity ShiftRight48 is + + port( + N : in std_logic_vector(47 downto 0); + PLACES : in std_logic_vector(5 downto 0); + RESULT : out std_logic_vector(47 downto 0) + ); + +end ShiftRight48; + + +architecture ShiftRightArch of ShiftRight48 is + +begin + + asdf: process (N, PLACES) + begin + case PLACES is + when "000000" => RESULT <= N( 47 downto 0 ); + when "000001" => RESULT <= "0" & N( 47 downto 1 ); + when "000010" => RESULT <= "00" & N( 47 downto 2 ); + when "000011" => RESULT <= "000" & N( 47 downto 3 ); + when "000100" => RESULT <= "0000" & N( 47 downto 4 ); + when "000101" => RESULT <= "00000" & N( 47 downto 5 ); + when "000110" => RESULT <= "000000" & N( 47 downto 6 ); + when "000111" => RESULT <= "0000000" & N( 47 downto 7 ); + when "001000" => RESULT <= "00000000" & N( 47 downto 8 ); + when "001001" => RESULT <= "000000000" & N( 47 downto 9 ); + when "001010" => RESULT <= "0000000000" & N( 47 downto 10 ); + when "001011" => RESULT <= "00000000000" & N( 47 downto 11 ); + when "001100" => RESULT <= "000000000000" & N( 47 downto 12 ); + when "001101" => RESULT <= "0000000000000" & N( 47 downto 13 ); + when "001110" => RESULT <= "00000000000000" & N( 47 downto 14 ); + when "001111" => RESULT <= "000000000000000" & N( 47 downto 15 ); + when "010000" => RESULT <= "0000000000000000" & N( 47 downto 16 ); + when "010001" => RESULT <= "00000000000000000" & N( 47 downto 17 ); + when "010010" => RESULT <= "000000000000000000" & N( 47 downto 18 ); + when "010011" => RESULT <= "0000000000000000000" & N( 47 downto 19 ); + when "010100" => RESULT <= "00000000000000000000" & N( 47 downto 20 ); + when "010101" => RESULT <= "000000000000000000000" & N( 47 downto 21 ); + when "010110" => RESULT <= "0000000000000000000000" & N( 47 downto 22 ); + when "010111" => RESULT <= "00000000000000000000000" & N( 47 downto 23 ); + when "011000" => RESULT <= "000000000000000000000000" & N( 47 downto 24 ); + when "011001" => RESULT <= "0000000000000000000000000" & N( 47 downto 25 ); + when "011010" => RESULT <= "00000000000000000000000000" & N( 47 downto 26 ); + when "011011" => RESULT <= "000000000000000000000000000" & N( 47 downto 27 ); + when "011100" => RESULT <= "0000000000000000000000000000" & N( 47 downto 28 ); + when "011101" => RESULT <= "00000000000000000000000000000" & N( 47 downto 29 ); + when "011110" => RESULT <= "000000000000000000000000000000" & N( 47 downto 30 ); + when "011111" => RESULT <= "0000000000000000000000000000000" & N( 47 downto 31 ); + when "100000" => RESULT <= "00000000000000000000000000000000" & N( 47 downto 32 ); + when "100001" => RESULT <= "000000000000000000000000000000000" & N( 47 downto 33 ); + when "100010" => RESULT <= "0000000000000000000000000000000000" & N( 47 downto 34 ); + when "100011" => RESULT <= "00000000000000000000000000000000000" & N( 47 downto 35 ); + when "100100" => RESULT <= "000000000000000000000000000000000000" & N( 47 downto 36 ); + when "100101" => RESULT <= "0000000000000000000000000000000000000" & N( 47 downto 37 ); + when "100110" => RESULT <= "00000000000000000000000000000000000000" & N( 47 downto 38 ); + when "100111" => RESULT <= "000000000000000000000000000000000000000" & N( 47 downto 39 ); + when "101000" => RESULT <= "0000000000000000000000000000000000000000" & N( 47 downto 40 ); + when "101001" => RESULT <= "00000000000000000000000000000000000000000" & N( 47 downto 41 ); + when "101010" => RESULT <= "000000000000000000000000000000000000000000" & N( 47 downto 42 ); + when "101011" => RESULT <= "0000000000000000000000000000000000000000000" & N( 47 downto 43 ); + when "101100" => RESULT <= "00000000000000000000000000000000000000000000" & N( 47 downto 44 ); + when "101101" => RESULT <= "000000000000000000000000000000000000000000000" & N( 47 downto 45 ); + when "101110" => RESULT <= "0000000000000000000000000000000000000000000000" & N( 47 downto 46 ); + when others => RESULT <= "000000000000000000000000000000000000000000000000"; + end case; + end process; + + +end ShiftRightArch;