使用工具:Xilinx ISE 14.7
用邏輯表達式實現4位的超前進位加法器,目的是爲了減少輸出延遲,提高運算速度。在4位行波進位加法器中,計算過程中包含輸出信號S[i]與C[i]作爲中間變量,用他們作爲下一級的輸入,並將多個1位全加器串聯起來造成了每一級的延遲累加,最終導致輸出延遲過大。爲了減小延遲,可以將每一級的運算結果先存儲起來,再展開邏輯表達式進行復合運算,從而減少數據流從輸入端到輸入端間經過的邏輯門個數。將串行運算改爲並行運算,代碼如下:
module Design_Code(
input [3:0] num_1,
input [3:0] num_2,
output reg [3:0] s,
output reg CF
);
reg [3:0] P;
reg [3:0] G;
integer i;
always @ (*)
begin
for(i=0; i<4; i=i+1)
begin
G[i] = num_1[i]&num_2[i];
P[i] = num_1[i]^num_2[i];
end
s[0] = P[0];
s[1] = P[1]^G[0];
s[2] = P[2]^(G[1]|P[1]&G[0]);
s[3] = P[3]^(G[2]|(P[2]&G[1])|(P[2]&P[1]&G[0]));
CF = G[3]|(P[3]&G[2])|(P[3]&P[2]&G[1])|(P[3]&P[2]&P[1]&G[0]);
end
endmodule
測試文件:
initial begin
// Initialize Inputs
num_1 = 0; num_2 = 1; #100;
num_1 = 2; num_2 = 3; #100;
num_1 = 4; num_2 = 5; #100;
num_1 = 8; num_2 = 9; #100;
num_1 = 14; num_2 = 15; #100;
// Add stimulus here
end
仿真結果: