1簡介

英語名稱:full-adder
全加器
用門電路實現兩個二進位數相加並求出和的組合線路,稱為一位全加器。一位全加器可以處理低位進位,並輸出本位加法進位。多個一位全加器進行級聯可以得到多位全加器。

2應用舉例

描述
一位全加器的表達式如下:
Si=Ai⊕Bi⊕Ci-1
C_i=A_iB_i+C_{i-1}\left(A_i+B_i\right)
第二個表達式也可用一個異或門來代替或門對其中兩個輸入信號進行求和:
C_i=A_iB_i+C_{i-1}(A_i\oplus B_i)
硬體描述語言Verilog 對一位全加器的三種建模方法:
數據流描述方式
`timescale 1ns/100ps
module FA_flow(A,B,Cin,Sum,Count)
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 & B;
assign #2 T1 = A & Cin;
assign #2 T2 = B & Cin ;
endmodule
注意在各assign 語句之間,是并行執行的,即各語句的執行與語句之間的順序無關。如上,當A有個變化時,S1、T3、T1 將同時變化,S1的變化又會造成Sum的變化。
3.)行為描述方式:
module 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 & Cin;
T2 = B & Cin ;
T3 = A & B;
Cout = (T1| T2) | T3;
end
endmodule
全加器的VHDL描述
libriry ieee;
use ieee.std_logic.1164.all;
Entity full_add is
port(a:in std_logic;
b:in std_logic;
cin:in std_logic;
sum:out std_logic;
count:out std_logic
);
architecture rtl of full_add is
begin
process(a,b,cin)
begin
if(a='0' and b'=0' and c= '0') then
sum ='0';count = '0';
elsif(a='1' and b'=0' and c= '0') then
sum ='1';count ='0';
elsif(a='0' and b'=1' and c= '0') then
sum ='1';count ='0';
elsif(a='1' and b'=1' and c= '0') then
sum ='0';count ='1';
elsif(a='0' and b'=0' and c= '1') then
sum ='1';count ='0';
elsif(a='1' and b'=0' and c= '1') then
sum ='0';count ='1';
elsif(a='0' and b'=1' and c= '1') then
sum ='1';count ='0';
else
sum ='1';count='1';
end if;
end process;
end rtl;
上一篇[逐位進位加法器]    下一篇 [進位]

相關評論

同義詞:暫無同義詞