1. 简单百科
  2. 全加器

全加器

全加器英语名称为full-adder,是用门电路实现两个二进制数相加并求出和的组合线路,称为一位全加器。一位全加器可以处理低位进位,并输出本位加法进位。多个一位全加器进行级联可以得到多位全加器。常用二进制四位全加器74LS283。

应用举例

真值表

一位全加器的真值表如下图,其中为被加数,为加数,相邻低位来的进位数为,输出本位和为。向相邻高位进位数为Ci

描述

一位全加器的表达式如下:

第二个表达式也可用一个异或门来代替或门对其中两个输入信号进行求和:硬件描述语言Verilog 对一位全加器的三种建模方法:

结构化描述方式

模组 FA_struct (A, B, Cin, Sum, 计数);

input A;

input B;

input Cin;

output Sum;

output Count;

wire S1, T1, T2, T3;

// -- statements -- //

xor x1 (S1, A, B);

xor x2 (Sum, S1, Cin);

and A1 (T3, A, B );

and A2 (T2, B, Cin);

and A3 (T1, A, Cin);

or O1 (计数, T1, T2, T3 );

endmodule

该实例显示了一个全加器由两个异或门、三个与门、一个或门构成。S1、T1、T2、T3则是门与门之间的连线。代码显示了用纯结构的建模方式,其中xor 、and、or 是Verilog HDL 内置的门器件。以 xor x1 (S1, A, B) 该例化语句为例:xor 表明调用一个内置的异或门,器件名称xor ,代码实例化名x1(类似原理图输入方式)。括号内的S1,A,B 表明该器件引脚的实际连结线(信号)的名称,其中 A、B是输入,S1是输出。

数据流描述方式

`timescale 1ns/100ps

模组 FA_flow(A,B,Cin,Sum,计数);

input A,B,Cin;

output Sum, Count;

wire S1,T1,T2,T3;

assign # 2 S1 = A ^ B;

assign # 2 Sum = S1 ^ Cin;

assign #2 T3 = A \u0026 B;

assign #2 T1 = A \u0026 Cin;

assign #2 T2 = B \u0026 Cin ;

assign #2 Count=T1 | T2 | T3;

endmodule

注意在各assign 语句之间,是并行执行的,即各语句的执行与语句之间的顺序无关。如上,当A有个变化时,S1、T3、T1 将同时变化,S1的变化又会造成Sum的变化。

行为描述方式

模组 FA_behav(A, B, Cin, Sum, Cout );

input A,B,Cin;

output Sum,Cout;

reg Sum, Cout;

reg T1,T2,T3;

always@ ( A or B or Cin )

begin

Sum = (A ^ B) ^ Cin ;

T1 = A \u0026 Cin;

T2 = B \u0026 Cin ;

T3 = A \u0026 B;

Cout = (T1| T2) | T3;

end

endmodule

全加器的VHDL描述

library ieee;

use ieee.std_logic_1164.all;

实体 full_add is

port(a,b,c:in std_logic;

sum,计数:out std_logic);

end entity full_add;

建筑 art of full_add is

begin

process(a,b,c) is

begin

if(a='0' and b='0' and c='0') then

sum\u003c='0';count\u003c='0';

elsif(a='1' and b ='0' and c='0') then

sum\u003c='1';计数\u003c='0';

elsif(a='0' and b='1' and c= '0') then

sum\u003c='1';count\u003c='0';

elsif(a='1' and b='1' and c= '0') then

sum\u003c='0';count\u003c='1';

elsif(a='0' and b='0' and c= '1') then

sum\u003c='1';count\u003c='0';

elsif(a='1' and b='0' and c= '1') then

sum\u003c='0';计数\u003c='1';

elsif(a='0' and b='1' and c= '1') then

sum\u003c='0';count\u003c='1';

else

sum\u003c='1';count\u003c='1';

end if;

end process;

end 建筑 art;

参考资料


Warning: Invalid argument supplied for foreach() in /www/wwwroot/newbaike.com/id.php on line 280