(萌新的数电学习)用VHDL语言设计4位先行进位加法器

实验背景:
行波进位加法器需要一级一级的进位,进位延迟很大。先行进位加法器(也叫超前进位加法器)可以有效的减少进位延迟。
设二进制加法器的第 i 位输入为 Xi、Yi, 输出为 Si, 进位输入为 Ci,进位输出为 Ci+1
则有
Si = Xi⊕Yi⊕Ci
Ci+1 = Xi·Yi + Xi·Ci + Yi·Ci = Xi·Yi + (Xi + Yi)·Ci
令 Gi = Xi·Yi, Pi = Xi+Yi
则 Ci+1 = Gi + Pi·Ci
当 Xi 和 Yi 都为 1 时,Gi = 1,产生进位 Ci+1 = 1
当 Xi 和 Yi 有一个为 1 时,Pi = 1,传递进位 Ci+1 = Ci
因此 Gi 定义为进位产生信号,Pi 定义为进位传递信号。Gi 的优先级比 Pi高,也就是说:当 Gi = 1 时(当然此时也有 Pi = 1 ),无条件产生进位,而不管Ci 是多少;当 Gi=0 而 Pi=1 时,进位输出为 Ci, 跟 Ci 之前的逻辑有关。

下面推导 4 位超前进位加法器。设 4 位加数和被加数为 A 和 B,进位输入为 Cin, 进位输出为 Cout, 对于第 i 位的进位产生 Gi = Ai·Bi , 进位传递 Pi=Ai+Bi , i=0,1,2,3
这各级进位输出,递归的展开 Ci ,有:
C0 = Cin
C1=G0 + P0·C0
C2=G1 + P1·C1 = G1 + P1·(G0 + P0·C0)=G1 + P1·G0 + P1·P0·C0
C3=G2 + P2·C2 = G2 + P2·G1 + P2·P1·G0 + P2·P1·P0·C0
C4=G3 + P3·C3 = G3 + P3·G2 + P3·P2·G1 + P3·P2·P1·G0 +P3·P2·P1·P0·C0
Cout=C4
由此可以看出,各级的进位彼此独立产生,只与输入数据和 Cin 有关,将各级间的进位级联传播给去掉了,因此减小了进位产生的延迟。每个等式与只有三级延迟的电路对应,第一级延迟对应进位产生信号和进位传递信号,后两级延迟对应上面的积之和,这可从 RTL 视图中看到。
同时由真值表可以简单地得出第 i 位的和为:
Si = Xi⊕Yi⊕Ci = (Xi·Yi)⊕(Xi+Yi)⊕Ci = Gi⊕Pi⊕Ci

VHDL语言

Library IEEE;
USE IEEE.std_logic_1164.all;

ENTITY siweixianxing IS
 PORT(X:IN std_logic_vector(3 downto 0);
      Y:IN std_logic_vector(3 downto 0);
      c:IN std_logic;
      c11:OUT std_logic;
      Z:out std_logic_vector(3 downto 0));
END siweixianxing;

ARCHITECTURE one of siweixianxing is
 SIGNAL G0,G1,G2,G3,P0,P1,P2,P3,C0,C1,C2,C3:std_logic;
 BEGIN
   G0<=X(0) and Y(0);
   G1<=X(1) and Y(1);
   G2<=X(2) and Y(2);
   G3<=X(3) and Y(3);
   P0<=X(0) xor Y(0);
   P1<=X(1) xor Y(1);
   P2<=X(2) xor Y(2);
   P3<=X(3) xor Y(3);
   
   C0<=G0 or (P0 and c);
   C1<=G1 or (P1 and G0) or (P1 and P0 and c);
   C2<=G2 or (P2 and G1) or (P2 and P1 and G0) or (P2 and P1 and P0 and c);
   C3<=G3 or (P3 and G2) or (P3 and P2 and G1)or (P3 and P2 and P1 and G0) or (P3 and P2 and P1 and P0 and c);
   
   Z(0)<=X(0) xor Y(0) xor c;
   Z(1)<=X(1) xor Y(1) xor C0;
   Z(2)<=X(2) xor Y(2) xor C1;
   Z(3)<=X(3) xor Y(3) xor C2;
   c11<=C3;
END ARCHITECTURE one;

RTL视图
在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值