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

📄 add1.vhd

📁 8位全加器8位全加器8位全加器8位全加器8位全加器8位全加器8位全加器8位全加器8位全加器
💻 VHD
字号:
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_ARITH.ALL;


ENTITY add1 IS
	PORT(a, b : IN STD_LOGIC_VECTOR(7 downto 0);--操作数
             ci,clk : IN STD_LOGIC;--最低位进位
             sign : IN STD_LOGIC;--有符号数无符号数标志位,0为无符号数,1为有符号数
             sign1 : IN STD_LOGIC;--加减法标志,0为加法,1为减法
	     y_out : OUT STD_LOGIC_VECTOR(7 downto 0);--运算结果
	     co_out: OUT STD_LOGIC;--最高位进位
             c : OUT STD_LOGIC ;--进位标志
             z : OUT STD_LOGIC ;--零标志
             v : OUT STD_LOGIC ;--溢出标志
	     s : OUT STD_LOGIC);--符号位标志
END add1;

ARCHITECTURE doing OF add1 IS
	
	SIGNAL co,y : STD_LOGIC_VECTOR(7 downto 0);
	SIGNAL r : STD_LOGIC_VECTOR(7 downto 0);
        SIGNAL b_cin,carryout,overflow : STD_LOGIC;
        SIGNAL b_data : STD_LOGIC_VECTOR(7 downto 0);
BEGIN

	b_cin<='1' WHEN sign1='1' ELSE
               '0';
	b_data<=NOT b WHEN sign1='1' ELSE--如为减法则减数取反
                b  ;
	y(0)<=a(0) XOR b_data(0) XOR ci XOR b_cin;
	co(0)<=(a(0) AND b_data(0)) OR (b_data(0) AND ci) OR (a(0) AND ci) OR (a(0) AND b_cin) OR (b_data(0) AND b_cin) OR (b_cin AND ci);
	GEN:--从第2位到第8位循环运算
		FOR i IN 1 TO 7 GENERATE
		
			y(i)<=a(i) XOR b_data(i) XOR co(i-1);
			co(i)<=(co(i-1) AND a(i)) OR (co(i-1) AND b_data(i)) OR (a(i) AND b_data(i));
		END GENERATE;
        PROCESS(clk)--输出结果
	BEGIN		
		IF clk'event AND clk='1' THEN
		
			r<=y(7) & y(6) & y(5) & y(4) & y(3) & y(2) & y(1) & y(0);
			carryout<=co(7);
		END IF;
	END PROCESS;
	PROCESS(sign)-- 溢出判断
	BEGIN
	     IF (sign='1' AND a(7)=b_data(7) AND r(7) = NOT a(7)) THEN
		overflow<='1';--溢出
	     ELSE
		overflow<='0';--不溢出
	     END IF;
	END PROCESS;
	
c<=carryout;  --进位标志
z<='1' WHEN r="00000000" ELSE--零标志
   '0';
v<=overflow WHEN sign='1' ELSE--溢出标志
   '0';                                                                                                                                       
s<='0' WHEN sign='0' ELSE--符号位标志
   r(7);
y_out<=r;--运算结果
co_out<=carryout;--最高位进位
END doing;

⌨️ 快捷键说明

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