兩個二進位制數之間的算術運算,無論是加減乘除,目前在數字計算機(數字系統)中都是化作若干次加法運算進行的。因此,加法器是構成算術運算器的基本單元。
如果不考慮有來自低位的進製輸入,將兩個一位二進位制相加,稱為半加。實現半加的電路為半加器。
半加器的真值表
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來讀取更多的輸入狀態。編碼器大致有兩種分類,一種是普通編碼器,一種是優先編碼器。在普通編碼器中,任何時刻只允許...