新建
上传
首页
助手
最?/div>
资料?/div>
工具

//

进位链加法器

 

modulecarry_chain_adder(x, y, cin, sum, cout); 

 

parameterN = 16; 

 

//N-bits 

 

input 

cin; 

 

input 

 

[N-1:0] 

 

x, y; 

 

output [N-1:0] sum; 

 

output 

 

 

 

cout; 

 

reg 

cout, q[N:0], p[N-1:0], g[N-1:0]; 

 

reg [N-1:0] 

sum; 

 

always @(x or y or cin)begin  

 

 

//:ADDER 

 

 

integeri; 

 

 

q[0] = cin; 

 

 

for(i=0; i<N; i=i+1)begin 

 

 

 

p[i] = x[i]^y[i]; 

 

 

 

g[i] = y[i]; 

 

 

 

q[i+1] = (p[i])?q[i]:g[i]; 

 

 

 

sum[i] = p[i]^q[i]; 

 

 

end 

 

 

cout = q[N]; 

 

end 

endmodule 

 

// 

(并行)二进制行波进位加法器

 

module ripple_carry_adder(x, y, cin, sum, cout); 

 

parameterN = 16; 

 

input 

 

 

cin; 

 

input 

 

[N-1:0] 

 

x, y; 

 

output [N-1:0] sum; 

 

output 

 

 

cout; 

 

 

reg 

cout; 

 

reg [N-1:0] 

sum; 

 

reg 

 

q[N:0]; 

 

always @(x or y or cin)begin 

 

 

 

 

 

 

 

//:ADDER 

 

 

integeri; 

 

 

q[0] = cin; 

 

 

for(i=0; i<=N-1; i=i+1)begin 

 

 

 

q[i+1] = (x[i]&y[i]) | (x[i]&q[i]) | (y[i]&q[i]); 

 

 

 

sum[i] = x[i] ^ y[i] ^ q[i]; 

 

 

end 

 

 

cout = q[N]; 

 

end 

endmodule 

 

// 

二进制跳跃进位加法器(超级进位)

 

modulecarry_skip_adder(x_in, y_in, c_in, sum, c_out); 

 

parameterN = 16; 

 

parameterS = 4; 

 

input 

 

 

 

c_in; 

 

input 

 

[N-1:0] 

 

x_in, y_in; 

 

output [N-1:0] sum; 

 

reg 

 

 

 

[N-1:0] sum; 

 

output 

 

 

 

c_out; 

Ͼλ
新建
上传
首页
助手
最?/div>
资料?/div>
工具

//

进位链加法器

 

modulecarry_chain_adder(x, y, cin, sum, cout); 

 

parameterN = 16; 

 

//N-bits 

 

input 

cin; 

 

input 

 

[N-1:0] 

 

x, y; 

 

output [N-1:0] sum; 

 

output 

 

 

 

cout; 

 

reg 

cout, q[N:0], p[N-1:0], g[N-1:0]; 

 

reg [N-1:0] 

sum; 

 

always @(x or y or cin)begin  

 

 

//:ADDER 

 

 

integeri; 

 

 

q[0] = cin; 

 

 

for(i=0; i<N; i=i+1)begin 

 

 

 

p[i] = x[i]^y[i]; 

 

 

 

g[i] = y[i]; 

 

 

 

q[i+1] = (p[i])?q[i]:g[i]; 

 

 

 

sum[i] = p[i]^q[i]; 

 

 

end 

 

 

cout = q[N]; 

 

end 

endmodule 

 

// 

(并行)二进制行波进位加法器

 

module ripple_carry_adder(x, y, cin, sum, cout); 

 

parameterN = 16; 

 

input 

 

 

cin; 

 

input 

 

[N-1:0] 

 

x, y; 

 

output [N-1:0] sum; 

 

output 

 

 

cout; 

 

 

reg 

cout; 

 

reg [N-1:0] 

sum; 

 

reg 

 

q[N:0]; 

 

always @(x or y or cin)begin 

 

 

 

 

 

 

 

//:ADDER 

 

 

integeri; 

 

 

q[0] = cin; 

 

 

for(i=0; i<=N-1; i=i+1)begin 

 

 

 

q[i+1] = (x[i]&y[i]) | (x[i]&q[i]) | (y[i]&q[i]); 

 

 

 

sum[i] = x[i] ^ y[i] ^ q[i]; 

 

 

end 

 

 

cout = q[N]; 

 

end 

endmodule 

 

// 

二进制跳跃进位加法器(超级进位)

 

modulecarry_skip_adder(x_in, y_in, c_in, sum, c_out); 

 

parameterN = 16; 

 

parameterS = 4; 

 

input 

 

 

 

c_in; 

 

input 

 

[N-1:0] 

 

x_in, y_in; 

 

output [N-1:0] sum; 

 

reg 

 

 

 

[N-1:0] sum; 

 

output 

 

 

 

c_out; 

">
新建
上传
首页
助手
最?/div>
资料?/div>
工具

//

进位链加法器

 

modulecarry_chain_adder(x, y, cin, sum, cout); 

 

parameterN = 16; 

 

//N-bits 

 

input 

cin; 

 

input 

 

[N-1:0] 

 

x, y; 

 

output [N-1:0] sum; 

 

output 

 

 

 

cout; 

 

reg 

cout, q[N:0], p[N-1:0], g[N-1:0]; 

 

reg [N-1:0] 

sum; 

 

always @(x or y or cin)begin  

 

 

//:ADDER 

 

 

integeri; 

 

 

q[0] = cin; 

 

 

for(i=0; i<N; i=i+1)begin 

 

 

 

p[i] = x[i]^y[i]; 

 

 

 

g[i] = y[i]; 

 

 

 

q[i+1] = (p[i])?q[i]:g[i]; 

 

 

 

sum[i] = p[i]^q[i]; 

 

 

end 

 

 

cout = q[N]; 

 

end 

endmodule 

 

// 

(并行)二进制行波进位加法器

 

module ripple_carry_adder(x, y, cin, sum, cout); 

 

parameterN = 16; 

 

input 

 

 

cin; 

 

input 

 

[N-1:0] 

 

x, y; 

 

output [N-1:0] sum; 

 

output 

 

 

cout; 

 

 

reg 

cout; 

 

reg [N-1:0] 

sum; 

 

reg 

 

q[N:0]; 

 

always @(x or y or cin)begin 

 

 

 

 

 

 

 

//:ADDER 

 

 

integeri; 

 

 

q[0] = cin; 

 

 

for(i=0; i<=N-1; i=i+1)begin 

 

 

 

q[i+1] = (x[i]&y[i]) | (x[i]&q[i]) | (y[i]&q[i]); 

 

 

 

sum[i] = x[i] ^ y[i] ^ q[i]; 

 

 

end 

 

 

cout = q[N]; 

 

end 

endmodule 

 

// 

二进制跳跃进位加法器(超级进位)

 

modulecarry_skip_adder(x_in, y_in, c_in, sum, c_out); 

 

parameterN = 16; 

 

parameterS = 4; 

 

input 

 

 

 

c_in; 

 

input 

 

[N-1:0] 

 

x_in, y_in; 

 

output [N-1:0] sum; 

 

reg 

 

 

 

[N-1:0] sum; 

 

output 

 

 

 

c_out; 

Ͼλ">
Ͼλ
Ŀ

三种16位加法器(串行、并行、超前进?adder - 百度文库
新建
上传
首页
助手
最?/div>
资料?/div>
工具

//

进位链加法器

 

modulecarry_chain_adder(x, y, cin, sum, cout); 

 

parameterN = 16; 

 

//N-bits 

 

input 

cin; 

 

input 

 

[N-1:0] 

 

x, y; 

 

output [N-1:0] sum; 

 

output 

 

 

 

cout; 

 

reg 

cout, q[N:0], p[N-1:0], g[N-1:0]; 

 

reg [N-1:0] 

sum; 

 

always @(x or y or cin)begin  

 

 

//:ADDER 

 

 

integeri; 

 

 

q[0] = cin; 

 

 

for(i=0; i<N; i=i+1)begin 

 

 

 

p[i] = x[i]^y[i]; 

 

 

 

g[i] = y[i]; 

 

 

 

q[i+1] = (p[i])?q[i]:g[i]; 

 

 

 

sum[i] = p[i]^q[i]; 

 

 

end 

 

 

cout = q[N]; 

 

end 

endmodule 

 

// 

(并行)二进制行波进位加法器

 

module ripple_carry_adder(x, y, cin, sum, cout); 

 

parameterN = 16; 

 

input 

 

 

cin; 

 

input 

 

[N-1:0] 

 

x, y; 

 

output [N-1:0] sum; 

 

output 

 

 

cout; 

 

 

reg 

cout; 

 

reg [N-1:0] 

sum; 

 

reg 

 

q[N:0]; 

 

always @(x or y or cin)begin 

 

 

 

 

 

 

 

//:ADDER 

 

 

integeri; 

 

 

q[0] = cin; 

 

 

for(i=0; i<=N-1; i=i+1)begin 

 

 

 

q[i+1] = (x[i]&y[i]) | (x[i]&q[i]) | (y[i]&q[i]); 

 

 

 

sum[i] = x[i] ^ y[i] ^ q[i]; 

 

 

end 

 

 

cout = q[N]; 

 

end 

endmodule 

 

// 

二进制跳跃进位加法器(超级进位)

 

modulecarry_skip_adder(x_in, y_in, c_in, sum, c_out); 

 

parameterN = 16; 

 

parameterS = 4; 

 

input 

 

 

 

c_in; 

 

input 

 

[N-1:0] 

 

x_in, y_in; 

 

output [N-1:0] sum; 

 

reg 

 

 

 

[N-1:0] sum; 

 

output 

 

 

 

c_out; 



ļ׺.doc޸Ϊ.docĶ

  • óҵָ
  • 2018йůҵгչǰĿ¼
  • ̻ʵü
  • ķϵ 9-199-26͸ѹķϻ
  • ҵпԷ
  • ΪԼĴָ600
  • 2017ҵλ챨
  • ǶСѧʦѧ-ýѧ-ѧ-ָѧ-׫д
  • -ϻӷͺ͵ƤӵĹо
  • ϲƾѧгɹ취

վ

԰ Ͼλ
ϵͷ779662525#qq.com(#滻Ϊ@)