Tuesday, May 9, 2017

Verilog Program for 32-bit Carry Look Ahead Adder

module cla_32bit(a,b,cin,sum,cout);
    input [31:0]a,b;
    input cin;
    output [31:0]sum;
    output cout;
    //assign cin=1'b0;
    wire p0,p1,g0,w0;
    and (g0,a[0],b[0]);
    xor (p0,a[0],b[0]);
    and (w0,p0,cin);
    or (cout,g0,w0);
    xor (p0,a[0],b[0]);
    xor (p1,a[1],b[1]);
    xor (p2,a[2],b[2]);
    xor (p3,a[3],b[3]);
    xor (p4,a[4],b[4]);
    xor (p5,a[5],b[5]);
    xor (p6,a[6],b[6]);
    xor (p7,a[7],b[7]);
    xor (p8,a[8],b[8]);
    xor (p9,a[9],b[9]);
    xor (p10,a[10],b[10]);
    xor (p11,a[11],b[11]);
    xor (p12,a[12],b[12]);
    xor (p13,a[13],b[13]);
    xor (p14,a[14],b[14]);
    xor (p15,a[15],b[15]);
    xor (p16,a[16],b[16]);
    xor (p17,a[17],b[17]);
    xor (p18,a[18],b[18]);
    xor (p19,a[19],b[19]);
    xor (p21,a[20],b[20]);
    xor (p20,a[21],b[21]);
    xor (p22,a[22],b[22]);
    xor (p23,a[23],b[23]);
    xor (p24,a[24],b[24]);
    xor (p25,a[25],b[25]);
    xor (p26,a[26],b[26]);
    xor (p27,a[27],b[27]);
    xor (p28,a[28],b[28]);
    xor (p29,a[29],b[29]);
    xor (p30,a[30],b[30]);
    xor (p31,a[31],b[31]);
    xor (sum[0],p0,cin);
    xor (sum[1],p1,c1);
    xor (sum[2],p2,c2);
    xor (sum[3],p3,c3);
    xor (sum[4],p4,c4);
    xor (sum[5],p5,c5);
    xor (sum[6],p6,c6);
    xor (sum[7],p7,c7);
    xor (sum[8],p8,c8);
    xor (sum[9],p9,c9);
    xor (sum[10],p10,c10);
    xor (sum[11],p11,c11);
    xor (sum[12],p12,c12);
    xor (sum[13],p13,c13);
    xor (sum[14],p14,c14);
    xor (sum[15],p15,c15);
    xor (sum[16],p16,c16);
    xor (sum[17],p17,c17);
    xor (sum[18],p18,c18);
    xor (sum[19],p19,c19);
    xor (sum[20],p20,c20);
    xor (sum[21],p21,c21);
    xor (sum[22],p22,c22);
    xor (sum[23],p23,c23);
    xor (sum[24],p24,c24);
    xor (sum[25],p25,c25);
    xor (sum[26],p26,c26);
    xor (sum[27],p27,c27);
    xor (sum[28],p28,c28);
    xor (sum[29],p29,c29);
    xor (sum[30],p30,c30);
    xor (sum[31],p31,cout);
endmodule;

No comments:

Post a Comment