alu算术逻辑运算模块设计.txt

来自「ALU算术逻辑运算模块设计代码。内容简单。是个不错的代码」· 文本 代码 · 共 64 行

TXT
64
字号
 ALU算术逻辑运算模块设计。

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.NUMERIC_STD.ALL;
ENTITY alu IS 
PORT( R,S : IN UNSIGNED(3 DOWNTO 0);
     ALU_CTRL: IN STD_LOGIC_VECTOR(2 DOWNTO 0);
     CIN: IN STD_LOGIC;
     F:BUFFER UNSIGNED(3 DOWNTO 0);
     G_BAR,P_BAR: BUFFER STD_LOGIC;
     C4:BUFFER STD_LOGIC;
     OVR:BUFFER STD_LOGIC );
END ENTITY alu ;

ARCHITECTURE arc1 OF alu IS
   SIGNAL R1,S1,F1:UNSIGNED(4 DOWNTO 0);
BEGIN
    R1<= '0'&R;
    S1<= '0'&S;
   PROCESS(R1,S1,CIN,ALU_CTRL)
     BEGIN
        CASE ALU_CTRL  IS
            WHEN "000" =>
                  IF CIN='0' THEN
                     F1<= R1 + S1;
                  ELSE  
                     F1<= R1 + S1 + 1;
                  END IF;
             WHEN "001" =>
                  IF CIN='0' THEN
                     F1<= S1 + NOT(R1);
                  ELSE  
                     F1<= S1 + NOT(R1)+1;
                  END IF;
            WHEN "010" =>
                  IF CIN='0' THEN
                     F1<= R1 + NOT(S1);
                  ELSE  
                     F1<= R1 + NOT(S1)+1;
                  END IF;
           WHEN "011" => F1<=R1 OR S1;
           WHEN "100" => F1<=R1 AND S1;
           WHEN "101" => F1<= (NOT R1) AND S1;
           WHEN "110" => F1<=R1 XOR S1;
           WHEN "111" => F1<=NOT(R1 XOR S1);
           WHEN  OTHERS=> F1<="--";
           END CASE;
        END PROCESS;
        F<=F1(3 DOWNTO 0);
        C4<= F1(4);
        G_BAR<= NOT(
                (R(3) AND S(3)) OR 
               ((R(3)  OR  S(3)) AND (R(2) AND S(2)))  OR
               ((R(3)  OR  S(3)) AND (R(2) OR S(2))  AND (R(1) AND S(1)))  OR
               ((R(3)  OR  S(3)) AND (R(2) OR S(2))  AND (R(1) AND  S(1)) AND 
(R(0) AND S(0)))  ); 
        P_BAR<= NOT (
                (R(3)  OR  S(3)) AND (R(2) OR S(2))  AND (R(1) AND  S(1)) AND 
(R(0) AND S(0)) );
        OVR <= '1' WHEN (F1(4)/=F1(3)) ELSE '0';
        END ARCHITECTURE arc1;

⌨️ 快捷键说明

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