數字電子技術基礎(七) 加法器

2021-10-09 04:41:32 字數 1886 閱讀 6257

兩個二進位制數之間的算術運算,無論是加減乘除,目前在數字計算機(數字系統)中都是化作若干次加法運算進行的。因此,加法器是構成算術運算器的基本單元。

如果不考慮有來自低位的進製輸入,將兩個一位二進位制相加,稱為半加。實現半加的電路為半加器。

半加器的真值表

a、b為輸入,s為a、b相加的和,co為進製輸出。通過真值表,可以寫出s和co表示式:

s = a』b + ab』

co = ab

verilog **為:

// 一位半加器

module h_adder(

input a, // 被加數

input b, // 加數

output s, // 和數

output co // 進製

); assign co = a & b;

assign s = a ^ b;

endmodule

因此乙個半加器由乙個異或門和乙個與門構成

如果考慮有來自低位的進製輸入,相當於將三個一位二進位制相加,稱為全加。實現全加的電路為全加器。

一位全加器真值表

可以看到,這時候的s和co的邏輯表示式比較複雜,但是,我們可以用兩個半加器和乙個或門實現全加器。

先對兩個輸入ain、bin進行半加,進製輸出c1,和數輸出s1;再將s1與進製cin半加,得到最終的和數sum,和進製輸出c2,再將c1與c2或上得到最終的進製輸出co。

**如下:

module f_adder(

ain,

bin,

cin,

cout,

sum);input wire ain;

input wire bin;

input wire cin;

output wire cout;

output wire sum;

wire synthesized_wire_0;

wire synthesized_wire_1;

wire synthesized_wire_2;

h_adder b2v_inst(

.a(ain),

.b(bin),

.co(synthesized_wire_0),

.s(synthesized_wire_2));

h_adder b2v_inst2(

.a(synthesized_wire_2),

.b(cin),

.co(synthesized_wire_1),

.s(sum));

assign cout = synthesized_wire_0 | synthesized_wire_1;

endmodule

n位序列進製加法器是用 n個全加器級聯構成,這種電路的最大缺點是執行速度慢。

verilog**:n位序列進製全加器

這種加法器是用空間換時間的設計,這裡不作介紹

數字電子技術基礎

2.4.4具有約束的邏輯函式的化簡 1.產生原因 在實際的邏輯命題中,常常會由於外部條件的限制,輸入變數的某些取值組合根本就不會出現,即有些輸入變數的組合所對應的函式值既不是邏輯1也不是邏輯0.例如 a b c中有的某些取值組合按實際規定不會出現,這說明a b c之間有一定的制約關係,因此稱這三個變...

數字電子技術 複習筆記

數字電子技術 緒論 數字量和模擬量 數字量 該物理量的變化在時間上和數量上都是不連續的。首先它們隨時間的變化不是連續發生的,總是發生在一些離散的瞬間 其次,每次變化時數量大小的改變都是某個最小數量單位的整數倍,而小於這個最小數量單位的數值沒有任何物理意義。我們把這一類物理量叫做數字量,同時把表示數字...

數字電子技術基礎(五) 編碼器

編碼器 在數字系統中,為了區分一系列不同的事物,將其中的每個事物用乙個二值碼來表示。編碼盡量要求 將多個輸入的狀態用最少資源來表示。在嵌入式中,編碼器的乙個功能是節約io口,可以用很少的io來讀取更多的輸入狀態。編碼器大致有兩種分類,一種是普通編碼器,一種是優先編碼器。在普通編碼器中,任何時刻只允許...