⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 carry_skip_adder.v

📁 RS(204,188)译码器的设计 异步FIFO设计 伪随即序列应用设计 CORDIC数字计算机的设计 CIC的设计 除法器的设计 加罗华域的乘法器设计
💻 V
字号:
// 二进制跳跃进位加法器
module carry_skip_adder(x_in, y_in, c_in, sum, c_out);
	parameter	DSIZE = 12;
	parameter	S = 4;
	input				c_in;
	input  [DSIZE-1:0] 	x_in, y_in;
	output [DSIZE-1:0]	sum;
	reg    [DSIZE-1:0] sum;
	output				c_out;
	reg		c_out;
	integer i, j;	
	
	reg [DSIZE:0] q;
	always @(x_in or y_in or c_in)begin
		q[0] = c_in;
		begin
			carry_skip_add_cell(x_in[S-1:0], y_in[S-1:0],
								q[0], q[S:1]);
			for(j=0; j<=S-1; j=j+1)
				sum[j] = x_in[j] ^ y_in[j] ^ q[j];

			carry_skip_add_cell(x_in[2*S-1:S], y_in[2*S-1:S],
								q[S], q[2*S:S+1]);
			for(j=0; j<=S-1; j=j+1)
				sum[S+j] = x_in[S+j] ^ y_in[S+j] ^ q[S+j];
				
			carry_skip_add_cell(x_in[3*S-1:2*S], y_in[3*S-1:2*S],
								q[2*S], q[3*S:2*S+1]);
			for(j=0; j<=S-1; j=j+1)
				sum[2*S+j] = x_in[2*S+j] ^ y_in[2*S+j] ^ q[2*S+j];
				
		end
		c_out = q[DSIZE];
	end
	
	// S比特分组进位链
	task carry_skip_add_cell;
		input  [S-1:0] x, y;
		input cin;
		output [S:1] cout;
		reg		q[S:0], p[S-1:0], g[S-1:0], accumulator, generalized_p;
		integer i;
		begin
			q[0] = cin;
			for(i=0; i<=S-1; i=i+1)begin
				p[i] = x[i]^y[i];
				g[i] = y[i];
				q[i+1] = (p[i])?q[i]:g[i];
			end
			accumulator = p[0];
			for(i=1; i<=S-1; i=i+1)
				accumulator = accumulator & p[i];

			generalized_p = accumulator;
			cout[S] = (generalized_p) ? c_in : q[S];
			for(i=1; i<=S-1; i=i+1)
				cout[i] = q[i];
		end
	endtask
endmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -