Advertisement
Guest User

Untitled

a guest
Oct 17th, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 1.39 KB | None | 0 0
  1. LIBRARY IEEE;
  2. USE ieee.std_logic_1164.ALL;
  3. USE ieee.numeric_std.ALL;
  4. use ieee.std_logic_signed.all;  
  5.  
  6. ENTITY Lab5 is
  7.     Port ( A    :   in   STD_LOGIC_VECTOR(3 downto 0);      --A input
  8.            B    :   in   STD_LOGIC_VECTOR(3 downto 0);      --B input
  9.            Op   :   in   STD_LOGIC_VECTOR(1 downto 0);                                  
  10.            R    :   out  STD_LOGIC_VECTOR(7 downto 0));                                      
  11.     END ENTITY;
  12.      
  13.      
  14. ARCHITECTURE test OF Lab5 IS
  15.  
  16. SIGNAL A_times_B        : STD_LOGIC_VECTOR(7 downto 0);
  17. SIGNAL A_minus_B        : STD_LOGIC_VECTOR(7 downto 0);
  18. SIGNAL A_plus_B         : STD_LOGIC_VECTOR(7 downto 0);
  19. SIGNAL A_divides_B  : SIGNED(7 downto 0);
  20. SIGNAL SA, SB, SigR  : STD_LOGIC_VECTOR(7 DOWNTO 0);
  21.  
  22. BEGIN
  23.  
  24. SA <=  A(3) & A(3) & A(3) & A(3) & A;
  25. SB <=  B(3) & B(3) & B(3) & B(3) & B;
  26. R <= SigR;
  27.  
  28.     A_plus_B    <= SA + SB;
  29.     A_minus_B   <= SA + (NOT (SB) + '1');
  30.     A_times_B   <= A * B;
  31.     A_divides_B <= (SIGNED(SA)) / (SIGNED(SB));
  32.    
  33.  
  34.  
  35. operation_select: PROCESS(Op, A_plus_B, A_minus_B, A_times_B, A_divides_B)
  36.     BEGIN
  37.    
  38.         CASE Op IS
  39.             WHEN "00"   => SigR <= A_plus_B;
  40.             WHEN "01"   => SigR <= A_minus_B;
  41.             WHEN "10"   => SigR <= A_times_B;
  42.             WHEN OTHERS => SigR <= STD_LOGIC_VECTOR(A_divides_B);
  43.         END CASE;
  44.     END PROCESS;
  45.      
  46. END ARCHITECTURE;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement