Advertisement
Guest User

add_sub.vhdl

a guest
Oct 18th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 0.97 KB | None | 0 0
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3. use ieee.numeric_std.all;
  4.  
  5. entity add_sub is
  6.     port(
  7.         a        : in  std_logic_vector(31 downto 0);
  8.         b        : in  std_logic_vector(31 downto 0);
  9.         sub_mode : in  std_logic;
  10.         carry    : out std_logic;
  11.         zero     : out std_logic;
  12.         r        : out std_logic_vector(31 downto 0)
  13.     );
  14. end add_sub;
  15.  
  16. architecture synth of add_sub is
  17.     signal b_result: std_logic_vector(32 downto 0);
  18.     signal r_result: std_logic_vector(32 downto 0);
  19. begin
  20.  
  21.     b_result<= ('0' & b) xor (32 downto 0 => sub_mode);
  22.  
  23.     r_result<= std_logic_vector(signed(b_result)+signed('0'&a)); -- leading bits extension ?
  24.  
  25.     carry<=r_result(32);
  26.  
  27.     assign_r: process(r_result)
  28.         begin
  29.             r<=r_result(31 downto 0);
  30.         end process assign_r;
  31.  
  32.     check_zero: process(r_result)
  33.     begin
  34.         if(r_result = (r_result'range => '0')) then
  35.             zero<='1';
  36.         else
  37.             zero<='0';
  38.         end if;
  39.     end process check_zero;
  40.  
  41. end synth;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement