天天看點

數字電路設計之加法器的實作

         今天在看部落格的時候看到有一種新穎的加法器寫法,這和之前的超前進位加法器,二進制加法器不同,這個加法器應用了循環。我覺得應該會綜合出來一個很差的東西,然後我試了一下:

代碼:

module adder(
	x,y,cin,sum,cout
    );
	parameter   N = 32;
	input wire        cin;
	input wire [N-1:0]x,y;
	output reg [N-1:0]sum;
	output reg        cout;
	
	reg        [N:0]  temp;
	
	integer i;
	[email protected](*) begin
		temp[0] = cin;		
		for(i = 0;i < N;i = i + 1) begin
			temp[i+1] = (x[i]&y[i])||(x[i]&temp[i])||(y[i]&temp[i]);
			sum[i]    = x[i]^y[i]^temp[i];
		end
		cout = temp[N];
	end
	
endmodule
           

從上面代碼看來,關鍵路徑應該很長,然後綜合了一下:

一個加法器,不能點開看裡面的邏輯,這就是Xilinx的加法器,這個效果和a+b是一樣的。這說明以後還是用自己寫的加法器吧!可能會比Xilinx的加法更快!

數字電路設計之加法器的實作