8位串行进位加法器

    串行进位加法器由一位全加器级联而成,结构简单,但延时很长,延时主要是进位信号级连造成的。

在最坏情况下,进位必须从最低有效全加器传到最高有效全加器。

   一位全加器的公式为: SUM=X⊕Y⊕CIN         COUT=X·Y+ X·CIN+Y·CIN

   在Verilog里可以调用门电路的原语实现。

   下面为8位串行进位加法器的Verilog代码

module add_serial(sum,cout,a,b,cin); //8位串行加法器
input cin;
input [7:0] a,b;
output cout;
output [7:0] sum;
wire cin1,cin2,cin3,cin4,cin5,cin6,cin7;
full_add1 f0(a[0],b[0],cin,sum[0],cin1);//调用1位全加器
full_add1 f1(a[1],b[1],cin1,sum[1],cin2);//端口信号顺序要与full_add1一致
full_add1 f2(a[2],b[2],cin2,sum[2],cin3);
full_add1 f3(a[3],b[3],cin3,sum[3],cin4);
full_add1 f4(a[4],b[4],cin4,sum[4],cin5);
full_add1 f5(a[5],b[5],cin5,sum[5],cin6);
full_add1 f6(a[6],b[6],cin6,sum[6],cin7);
full_add1 f7(a[7],b[7],cin7,sum[7],cout);

endmodule

module full_add1(a,b,cin,sum,cout);
input a,b,cin;
output sum,cout;
wire s1,c1,c2,c3;
xor (s1,a,b),(sum,s1,cin);//调用异或门
and (c1,a,b),(c2,a,cin),(c3,b,cin);//调用与门
or (cout,c1,c2,c3);//调用3输入或门

endmodule




原文地址:https://www.cnblogs.com/haigege/p/2194769.html