Wednesday, 26 December 2012

16 bit CARRY LOOKAHEAD ADDER


module lac16(s,cout,a,b,cin); //main module of 16 bit look ahead carry adder
  output [15:0]s;
  output cout;
  input [15:0]a;
  input [15:0]b;
  input cin;
  wire [15:0]p,g,c;
  assign p[15:0]=a[15:0]^b[15:0];
  assign g[15:0]=a[15:0]&b[15:0];
  assign c[0]=g[0]|(p[0]&cin);
  assign c[15:1]=g[15:1]|(p[15:1]&c[15:0]);
  assign s[0]=p[0]^cin;
  assign s[15:1]=p[15:1]^c[15:0];
  assign cout=c[15];
endmodule

1 comment: