VHDL的GENERATE语句实现四位全加器

1位全加器

在这里插入图片描述  1位全加器接口如上图所示,A为被加数输入端,B为加数输入端,C为进位输入端,CO为进位输出端,S为和数输出端。1位全加器表达式如下: S = A ⨁ B ⨁ C S =A \bigoplus B\bigoplus C S=ABC C O = ( A ⋅ B ) + ( A ⋅ C ) + ( B ⋅ C ) CO =(A \cdot B)+(A \cdot C)+(B \cdot C) CO=(AB)+(AC)+(BC)
1位全加器VHDL代码:

--ADD1.vhd
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ADD1 IS
	PORT(
		A,B,C: IN STD_LOGIC;
		S: OUT STD_LOGIC;
		CO:OUT STD_LOGIC
	);
END ADD1;
ARCHITECTURE BHV OF ADD1 IS
BEGIN
	S <= A XOR B XOR C;
	CO <= (A AND C)OR(B AND C)OR(A AND B);
END BHV;

4位全加器

  4位全加器是将低位的1位全加器的CO端接高位的1位全加器的C端,最低位的1位全加器的C端作为4位全加器的进位输入端,最高位的1位全加器的CO端作为1位全加器的进位输出端,4个1位全加器的A端和B端分别作为4位被加数和4位加数的输入端。4位全加器的RTL图如下图所示:
在这里插入图片描述
4位全加器VHDL代码:

--ADD_N.vhd
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ADD_N IS
	GENERIC(N : INTEGER:=4);--改这个N的值可以实现其他位数的全加器
	PORT(
		A,B: IN STD_LOGIC_VECTOR(N-1 DOWNTO 0);
		CI: IN STD_LOGIC;
		S: OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0);
		CO: OUT STD_LOGIC
	);
END ADD_N;
ARCHITECTURE RTL OF ADD_N IS
	COMPONENT ADD1
	PORT(
		A,B,C: IN STD_LOGIC;
		S: OUT STD_LOGIC;
		CO:OUT STD_LOGIC
	);
	END COMPONENT;
	SIGNAL TEMP: STD_LOGIC_VECTOR(N DOWNTO 0);
BEGIN
	TEMP(0) <= CI;
	CO <= TEMP(N);
	G: FOR I IN 0 TO N-1 GENERATE
			U: ADD1 PORT MAP(A=>A(I),B=>B(I),C=>TEMP(I),S=>S(I),CO=>TEMP(I+1));
		END GENERATE;
END RTL;

功能仿真波形:
在这里插入图片描述

  • 7
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值