module add_ahead
(sum,cout,a,b,cin)
; output[7:
0] sum;
output cout;
input[7:
0] a,b;
input cin;
wire[7:
0] g,p;
wire[7:
0] c,sum;
assign g[0]
=a[0
]&b[0]
;//產生第 0位本位值和進製值
assign p[0]
=a[0
]|b[0]
; assign c[0]
=cin;
assign sum[0]
=g[0
]^p[0]
^c[0];
assign g[1]
=a[1
]&b[1]
;//產生第 1位本位值和進製值
assign p[1]
=a[1
]|b[1]
; assign c[1]
=g[0]|
(p[0
]&cin)
; assign sum[1]
=g[1
]^p[1]
^c[1];
assign g[2]
=a[2
]&b[2]
;//產生第 2位本位值和進製值
assign p[2]
=a[2
]|b[2]
; assign c[2]
=g[1]|
(p[1
]&c[1]
); assign sum[2]
=g[2
]^p[2]
^c[2];
assign g[3]
=a[3
]&b[3]
;//產生第 3位本位值和進製值
assign p[3]
=a[3
]|b[3]
; assign c[3]
=g[2]|
(p[2
]&c[2]
); assign sum[3]
=g[3
]^p[3]
^c[3];
assign g[4]
=a[4
]&b[4]
;//產生第 4位本位值和進製值
assign p[4]
=a[4
]|b[4]
; assign c[4]
=g[3]|
(p[3
]&c[3]
); assign sum[4]
=g[2
]^p[2]
^c[2];
assign g[5]
=a[5
]&b[5]
;//產生第 5位本位值和進製值
assign p[5]
=a[5
]|b[5]
; assign c[5]
=g[4]|
(p[4
]&c[4]
); assign sum[5]
=g[5
]^p[5]
^c[5];
assign g[6]
=a[6
]&b[6]
;//產生第 6位本位值和進製值
assign p[6]
=a[6
]|b[6]
; assign c[6]
=g[5]|
(p[5
]&c[5]
); assign sum[6]
=g[6
]^p[6]
^c[6];
assign g[7]
=a[7
]&b[7]
;//產生第 7位本位值和進製值
assign p[7]
=a[7
]|b[7]
; assign c[7]
=g[6]|
(p[6
]&c[6]
); assign sum[7]
=g[7
]^p[7]
^c[7];
assign cout=g[7]
|(p[7]
&c[7])
;//產生最高位進製輸出
endmodule
`timescale 1ns/
1ns
module add8_tp;
//**模組無埠列表
reg[7:
0] a,b;
//輸入激勵訊號定義為 reg型
reg cin;
wire[7:
0] sum;
//輸出訊號定義為wire型
wire cout;
parameter dely =
100;
add_ahead ad1(.
sum(sum),.
cout
(cout),.
a(a),.
b(b),.
cin(cin));
//呼叫測試物件
initial begin //激勵波形設定
超前進製加法器
在實時訊號處理中,常常要用到多位數字量的加法運算,但序列加法器速度較慢,超前進製加法器則能滿足要求,且結構並不複雜。現在普遍使用的並行加法器是超前進製加法器,只是在幾個全加器的基礎上增加了乙個超前進製形成邏輯,以減少由於逐步進製訊號的傳遞所造成的時延。具體的演算法為 s i x i y i c i ...
超前進製加法器實驗報告 超前進製加法器
首先畫出2位全加器的真值表與卡諾圖 根據真值表可知二進位制加法與十進位制加法一樣,進製值是逢二進一.而和值則是上級進製值跟被加數跟加數總和模二的餘數.根據卡諾圖化簡得到s與ci 1的全加器電路為 多位加法器可以用行波進製加法器實現,也就是第一位的ci為0,第二位開始,ci就連線著上一級的ci 1,這...
序列加法器 並行加法器 超前進製加法器
1.序列加法器 序列加法器即加法器執行位序列行操作,利用多個時鐘週期完成一次加法運算,即輸入運算元和輸出結果方式為隨時鐘序列輸入 輸出。位並行加法器速度高,但是占用資源多。在許多實際應用中並不需要這樣高的速度,而是希望減少硬體資源佔用率,這時就可以使用位序列加法器。在序列加法器中,只有乙個全加器,資...