⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adder4.vhd

📁 8位加法器VHDL源程序
💻 VHD
字号:
library ieee;
use ieee.std_logic_1164.all; 
entity adder4 is
 --generic (n:integer:=3);                            
      port(a: in std_logic_vector(3 downto 0);  
          b: in std_logic_vector(3 downto 0);  
          cin :in std_logic;             
          --co  : out std_logic;                   
          led : out std_logic_vector(7 downto 0)); 
end adder4 ;

architecture hav of adder4 is
   component adder                                             
     port(a  : in std_logic;
          b  : in std_logic;
          cin: in std_logic;
          co :out std_logic;
          s  :out std_logic);
    end component;
   signal carr : std_logic_vector(3 downto 0);
   signal s    : std_logic_vector(3 downto 0);
   begin
    label1:                                        
            for i in 0 to 3 generate
    label2: if (i=0) generate  
            adderx: adder port map (a(i),b(i),cin,carr(i),s(i));
            end generate label2;
    label3: if(i=3) generate 
            adderx: adder port map(a(i),b(i),carr(i-1),carr(i),s(i));
            end generate label3;
    label4: if ((i/=0) and (i/=3)) generate
            adderx: adder port map(a(i),b(i),carr(i-1),carr(i),s(i));
            end generate  label4;
            end generate label1;
   process (carr(3),s)
   begin 
       if carr(3)='0' then
         case s is                            
         when "0000"=> led<="00000000";
         when "0001"=> led<="00000001";
         when "0010"=> led<="00000010";
         when "0011"=> led<="00000011";
         when "0100"=> led<="00000100";
         when "0101"=> led<="00000101";
         when "0110"=> led<="00000110";
         when "0111"=> led<="00000111";
         when "1000"=> led<="00001000";
         when "1001"=> led<="00001001";
         when "1010"=> led<="00010000";
         when "1011"=> led<="00010001";
         when "1100"=> led<="00010010";
         when "1101"=> led<="00010011";
         when "1110"=> led<="00010100";
         when "1111"=> led<="00010101";
         when others=> led<="11111111";
        end case;
       else
         case s is         
         when "0000"=> led<="00010110";
         when "0001"=> led<="00010111";
         when "0010"=> led<="00011000";
         when "0011"=> led<="00011001";
         when "0100"=> led<="00100000";
         when "0101"=> led<="00100001";
         when "0110"=> led<="00100010";
         when "0111"=> led<="00100011";
         when "1000"=> led<="00100100";
         when "1001"=> led<="00100101";
         when "1010"=> led<="00100110";
         when "1011"=> led<="00100111";
         when "1100"=> led<="00101000";
         when "1101"=> led<="00101001";
         when "1110"=> led<="00110000";
         when "1111"=> led<="00110001";
         when others=> led<="11111111";
        end case;
      end if;
      end process;
    end hav; 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -