Professional Documents
Culture Documents
No: 13MVD0096
Dt: 08-08-2014
Submitted to
Arunachalam V
AP SG, SENSE, VIT University
Submitted by
K Jayaprasada Rao
13MVD0096
M.Tech VLSI Design
Page: 1
R.No: 13MVD0096
Dt: 08-08-2014
1. Serial Adder
//shift register to store the two inputs a and b to be added
module shift(y,d,clk);
input [7:0] d;
input clk;
output [7:0] y;
reg [7:0] y;
initial begin
assign y=d;
end
always @(posedge clk)
begin
assign y=y>>1;
end
endmodule
//serial in parallel out register to store the 8 bit sum
module sipo(y,s,clk);
input s;
input clk;
output [7:0] y;
reg [7:0] y;
always @(posedge clk)
begin
assign y={s,y[7:1]};
end
endmodule
//1 bit full adder
module fa(s,cout,a,b,cin);
input a,b,cin;
output s,cout;
assign {cout,s}=a+b+cin;
endmodule
//d flipflop to store the cout of each stage
module dff(q,d,clk);
input d,clk;
output q;
reg q;
initial begin
q=1'b0;
end
always @(posedge clk)
begin
q=d;
VLSI DSP Assignment-1
Page: 2
R.No: 13MVD0096
Dt: 08-08-2014
end
endmodule
//main module serial adder//
module serialadder(sum,cout,a,b,clk);
input [7:0] a,b;
input clk;
wire [7:0] x,z;
output [7:0] sum;
output cout;
wire s,cin;
//input cin;
//initial begin
//cin=cinp;
//end
fa k(s,cout,x[0],z[0],cin);
//1 bit full adder
dff q(cin,cout,clk);
//d flipflop to store
the cout value after each 1 bit full adder operation
sipo m(sum,s,clk);
//serial sum(s)
converted to parallel output(8 bit sum)///
shift g(x,a,clk);
//shifts the input a
shift h(z,b,clk);
//shifts the input b
endmodule
Testbench :
module serial_tst();
reg [7:0] a,b;
reg clk;
wire [7:0] sum;
wire cout;
serialadder a1(sum,cout,a,b,clk);
initial
begin
clk=1'b0;
#2a=8'b11001100;
b=8'b11000000;
#200$stop;
end
always #5 clk=~clk;
initial
$monitor ($time,"a=%b,b=%b,sum=%b,cout=%b",a,b,sum,cout);
endmodule
Page: 3
R.No: 13MVD0096
Dt: 08-08-2014
Output result:
#
#
#
#
#
#
#
#
#
#
#
0a=xxxxxxxx,b=xxxxxxxx,sum=xxxxxxxx,cout=x
2a=11001100,b=11000000,sum=xxxxxxxx,cout=0
5a=11001100,b=11000000,sum=0xxxxxxx,cout=0
15a=11001100,b=11000000,sum=100xxxxx,cout=0
25a=11001100,b=11000000,sum=1100xxxx,cout=0
35a=11001100,b=11000000,sum=011100xx,cout=0
45a=11001100,b=11000000,sum=0011100x,cout=0
55a=11001100,b=11000000,sum=00011100,cout=1
65a=11001100,b=11000000,sum=10000111,cout=1
75a=11001100,b=11000000,sum=11000011,cout=0
85a=11001100,b=11000000,sum=01110000,cout=0
95a=11001100,b=11000000,sum=00111000,cout=0
Page: 4
R.No: 13MVD0096
Dt: 08-08-2014
Power:
Page: 5
R.No: 13MVD0096
Dt: 08-08-2014
endmodule
Testbench :
module carryriple_tst();
reg [7:0] a;
reg [7:0] b;
reg cin;
wire [7:0]sum;
wire cout;
carryriple q1(a,b,cin,sum,cout);
initial
begin
#2 a=8'b01111001;
b=8'b11111011;
cin=1'b1;
#6 a=8'b01100001;
b=8'b10011011;
cin=1'b0;
#50 $stop;
end
initial
$monitor ("a=%b,b=%b,cin=%b,sum=%b,cout=%b",a,b,cin,sum,cout);
endmodule
Output result:
# a=xxxxxxxx,b=xxxxxxxx,cin=x,sum=xxxxxxxx,cout=x
# a=01111001,b=11111011,cin=1,sum=01110101,cout=1
# a=01100001,b=10011011,cin=0,sum=11111100,cout=0
# a=01100111,b=10000011,cin=1,sum=11101011,cout=0
# a=11100001,b=10011001,cin=0,sum=01111010,cout=1
Page: 6
R.No: 13MVD0096
Dt: 08-08-2014
Power :
Page: 7
R.No: 13MVD0096
Dt: 08-08-2014
output[7:0]sum;
output cout;
wire[7:0]sum;
input[7:0]a,b;
wire c1,c2,c3,c4,c5,c6,c7; //carry wires
wire [7:0]p;
halfadd ha0(p[0],c1,a[0],b[0]);
halfadd ha1(p[1],c2,a[1],b[1]);
halfadd ha2 (p[2],c3,a[2],b[2]);
halfadd ha3(p[3],c4,a[3],b[3]);
halfadd ha4(p[4],c5,a[4],b[4]);
halfadd ha5(p[5],c6,a[5],b[5]);
halfadd ha6(p[6],c7,a[6],b[6]);
halfadd ha7(p[7],cout,a[7],b[7]);
assign sum[0]=p[0];
assign sum[1]=p[1]+c1;
assign sum[2]= p[2]+c2;
assign sum[3]=p[3]+c3;
assign sum[4]=p[4]+c4;
assign sum[5]=p[5]+c5;
assign sum[6]=p[6]+c6;
assign sum[7]=p[7]+c7;
endmodule
Testbench :
module carrysaveadd_tst();
reg [7:0]a,b;
wire [7:0]sum;
wire cout ;
carrysaveadd csa1(sum,cout,a,b);
initial
begin
a= 8'd10;b=8'd5;
#2a=8'd12;b=8'd1;
#2a= 8'd7;b=8'd6;
#2a=8'd9;b=8'd2;
end
initial #20 $stop;
initial
$monitor($time,"a=%d,b=%d,sum=%d,cout=%d",a,b,sum,cout);
endmodule
Page: 8
R.No: 13MVD0096
Dt: 08-08-2014
Output result:
#
#
#
#
Page: 9
R.No: 13MVD0096
Dt: 08-08-2014
Power:
MULTIPLIERS:
1. Modified Booth Multiplier:
Verilog code :
module boothencoder(y,en,x,Xsel,T,twoXsel,a0,a1,NEG,P);
input [9:0]y;
input [9:0]x;
input en;
output [3:0]T;
reg [3:0]T;
output [8:1]P;
wire [8:1]P;
output a0,a1;
wire a0,a1;
output reg [3:0] Xsel,twoXsel,NEG;
reg [3:0] W1,W2;reg [8:0] W3,W4,W5;
reg[0:8]PP[0:3];
wire [20:0]S;
wire [28:0]C;
wire w,w1,w2,w3,w4,w5,w6;
integer i,j;
always@(en)
VLSI DSP Assignment-1
Page:
10
R.No: 13MVD0096
Dt: 08-08-2014
begin
for(i=0;i<=3;i=i+1)
begin
for(j=0;j<=8;j=j+1)
begin
Xsel[i]=(y[2*i] ^ y[(2*i)+1]);
W1[i]=y[2*i] & y[(2*i)+1];
W2[i]=~(y[2*i] | y[(2*i)+1]);
twoXsel[i]=(~(y[(2*i)+2])*W1[i])|((y[(2*i)+2])*W2[i]);
NEG[i]=y[(2*i)+2];
W3[j]=x[j+1]&Xsel[i];
W4[j]=x[j]&twoXsel[i];
W5[j]=W3[j]|W4[j];
PP[i][j]=(W5[j]^NEG[i]);
T[i]=Xsel[i]|twoXsel[i];
$display("PP[%0d][%0d]=%b",i,j,PP[i][j],$time);
end
end
end
approxcarrygen q1(.T(T),.a0(a0),.a1(a1));
fulladder
f1(.a(PP[0][6]),.b(PP[1][4]),.c(PP[2][2]),.s(S[0]),.cout(C[0]));
fulladder f2(.a(S[0]),.b(a0),.c(PP[3][0]),.s(S[1]),.cout(C[1]));
halfadder f3(.a(S[1]),.b(a1),.s(S[12]),.c(C[12]));
halfadder h1(.a(PP[0][7]),.b(PP[1][5]),.s(S[2]),.c(C[2]));
fulladder
f4(.a(S[2]),.b(C[0]),.c(PP[2][3]),.s(S[3]),.cout(C[3]));
fulladder
f5(.a(S[3]),.b(C[1]),.c(PP[3][1]),.s(S[13]),.cout(C[13]));
halfadder h2(.a(PP[0][8]),.b(PP[1][6]),.s(S[4]),.c(C[4]));
fulladder
f6(.a(S[4]),.b(C[2]),.c(PP[2][4]),.s(S[5]),.cout(C[5]));
fulladder
f7(.a(S[5]),.b(C[3]),.c(PP[3][2]),.s(S[14]),.cout(C[14]));
assign w=~PP[0][8];
assign w1=(~PP[1][7]);
assign w2=(~PP[1][8]);
assign w3=(~PP[2][7]);
assign w4=(~PP[2][8]);
assign w5=(~PP[3][7]);
assign w6=(~PP[3][8]);
halfadder h3(.a(w),.b(w1),.s(S[6]),.c(C[6]));
fulladder
f8(.a(S[6]),.b(C[4]),.c(PP[2][5]),.s(S[7]),.cout(C[7]));
fulladder
f9(.a(S[7]),.b(C[5]),.c(PP[3][3]),.s(S[15]),.cout(C[15]));
VLSI DSP Assignment-1
Page:
11
R.No: 13MVD0096
Dt: 08-08-2014
halfadder h4(.a(w2),.b(PP[1][7]),.s(S[8]),.c(C[8]));
fulladder
f10(.a(S[8]),.b(C[6]),.c(PP[2][6]),.s(S[9]),.cout(C[9]));
fulladder
f11(.a(S[9]),.b(C[7]),.c(PP[3][4]),.s(S[16]),.cout(C[16]));
halfadder h5(.a(w3),.b(C[8]),.s(S[10]),.c(C[10]));
fulladder
f12(.a(S[10]),.b(C[9]),.c(PP[3][5]),.s(S[17]),.cout(C[17]));
halfadder h6(.a(w4),.b(PP[2][7]),.s(S[11]),.c(C[11]));
fulladder
f13(.a(S[11]),.b(C[10]),.c(PP[3][6]),.s(S[18]),.cout(C[18]));
halfadder h7(.a(w5),.b(C[11]),.s(S[19]),.c(C[19]));
halfadder h8(.a(w6),.b(PP[3][7]),.s(S[20]),.c(C[20]));
halfadder h9(.a(S[20]),.b(C[19]),.s(P[8]),.c(C[21]));
halfadder h10(.a(S[19]),.b(C[18]),.s(P[7]),.c(C[22]));
halfadder h11(.a(S[18]),.b(C[17]),.s(P[6]),.c(C[23]));
halfadder h12(.a(S[17]),.b(C[16]),.s(P[5]),.c(C[24]));
halfadder h13(.a(S[16]),.b(C[15]),.s(P[4]),.c(C[25]));
halfadder h14(.a(S[15]),.b(C[14]),.s(P[3]),.c(C[26]));
halfadder h15(.a(S[14]),.b(C[13]),.s(P[2]),.c(C[27]));
halfadder h16(.a(S[13]),.b(C[12]),.s(P[1]),.c(C[28]));
endmodule
//approximate carry
module approxcarrygen(T,a0,a1);
input [3:0]T;
output a0,a1;
wire w;
assign w=T[3]^T[2]^T[1];
assign a0=(T[3]*T[2])|(T[2]*T[1])|(T[3]*T[1]);
assign a1=(w*T[0])|w|T[0];
endmodule
//full adder
module fulladder (a,b,c,s,cout);
input a,b,c ;
output s,cout;
assign s = (a ^ b ^c) ;
assign cout = ((a^b)&c)| (a & b);
endmodule
//half adder
module halfadder(a,b,s,c);
input a,b ;
output s,c ;
assign s = a ^ b;
assign c = a & b ;
endmodule
VLSI DSP Assignment-1
Page:
12
R.No: 13MVD0096
Dt: 08-08-2014
Testbench :
module boothtest();
reg [9:0]y;
reg [9:0]x;
reg en;
wire [3:0]Xsel,twoXsel,NEG;
wire a0,a1;
wire [3:0]T;
wire [8:1]P;
boothencoder
p1(.T(T),.a0(a0),.a1(a1),.y(y),.x(x),.en(en),.Xsel(Xsel),.twoXse
l(twoXsel),.NEG(NEG),.P(P));
initial
begin
en=1'b0;
y=10'b0001011010;
x=10'b0001011010;
#10 en=1'b1;
y=10'b0011011010;
x=10'b0001011010;
#10 en=1'b1;
y=10'b0001011010;
x=10'b0001111010;
#100 $stop;
end
initial
begin
$monitor($time,"Xsel=%b,twoXsel=%b,NEG=%b,P=%b,x=%d,x=%d",Xsel,t
woXsel,NEG,P,x,y);
end
endmodule
Page:
13
R.No: 13MVD0096
Dt: 08-08-2014
Output result:
# PP[0][0]=1
# PP[0][1]=0
# PP[0][2]=1
# PP[0][3]=1
# PP[0][4]=0
# PP[0][5]=1
# PP[0][6]=0
# PP[0][7]=0
# PP[0][8]=0
# PP[1][0]=0
# PP[1][1]=1
# PP[1][2]=0
# PP[1][3]=0
# PP[1][4]=1
# PP[1][5]=0
# PP[1][6]=1
# PP[1][7]=1
# PP[1][8]=1
# PP[2][0]=0
# PP[2][1]=1
# PP[2][2]=0
# PP[2][3]=0
# PP[2][4]=1
# PP[2][5]=0
# PP[2][6]=1
# PP[2][7]=1
# PP[2][8]=1
# PP[3][0]=1
# PP[3][1]=0
# PP[3][2]=1
# PP[3][3]=1
# PP[3][4]=0
# PP[3][5]=1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
Page:
14
R.No: 13MVD0096
Dt: 08-08-2014
# PP[3][6]=0
0
# PP[3][7]=0
0
# PP[3][8]=0
0
#
0Xsel=1111,twoXsel=0000,NEG=0110,P=11001110,x= 90,x= 90
# PP[0][0]=1
10
# PP[0][1]=0
10
# PP[0][2]=1
10
# PP[0][3]=1
10
# PP[0][4]=0
10
# PP[0][5]=1
10
# PP[0][6]=0
10
# PP[0][7]=0
10
# PP[0][8]=0
10
# PP[1][0]=0
10
# PP[1][1]=1
10
# PP[1][2]=0
10
# PP[1][3]=0
10
# PP[1][4]=1
10
# PP[1][5]=0
10
# PP[1][6]=1
10
# PP[1][7]=1
10
# PP[1][8]=1
10
# PP[2][0]=0
10
# PP[2][1]=1
10
# PP[2][2]=0
10
# PP[2][3]=0
10
# PP[2][4]=1
10
# PP[2][5]=0
10
# PP[2][6]=1
10
# PP[2][7]=1
10
# PP[2][8]=1
10
# PP[3][0]=0
10
# PP[3][1]=1
10
# PP[3][2]=0
10
# PP[3][3]=1
10
# PP[3][4]=1
10
# PP[3][5]=0
10
# PP[3][6]=1
10
# PP[3][7]=0
10
# PP[3][8]=0
10
#
10Xsel=0111,twoXsel=1000,NEG=0110,P=10010110,x= 90,x= 218
#
20Xsel=0111,twoXsel=1000,NEG=0110,P=10010110,x= 122,x= 90
Page:
15
R.No: 13MVD0096
Dt: 08-08-2014
power:
============================================================
Generated by:
Encounter(R) RTL Compiler RC12.10 - v12.10p006_1
Generated on:
Aug 07 2014 06:42:12 pm
Module:
boothencoder
Technology library:
slow 1.1
Operating conditions:
slow (balanced_tree)
Wireload mode:
enclosed
Area mode:
timing library
============================================================
Leakage
Dynamic
Total
Instance
Cells Power(nW) Power(nW) Power(nW)
------------------------------------------------boothencoder
134 2708.556 10090.260 12798.815
timing:
Timing slack :
858ps
Start-point : y[4]
End-point
: P[2]
Page:
16
R.No: 13MVD0096
Dt: 08-08-2014
2. Baugh-Wooley:
Verilog code :
module baughwooley8(p,a,x);
output[15:0] p;//p sum output
input [7:0]a;
input [7:0]x;
wire [54:0]carry1;
wire [43:2]sum;
assign p[0]=a[0]&x[0];
assign d=1'b0;
FA FA1(p[1],carry1[0],(a[0]&x[1]),(a[1]&x[0]),d);
FA FA2(sum[2],carry1[1],(a[1]&x[1]),(a[2]&x[0]),d);
FA FA3(sum[3],carry1[2],(a[2]&x[1]),(a[3]&x[0]),d);
FA FA4(sum[4],carry1[3],(a[3]&x[1]),(a[4]&x[0]),d);
FA FA5(sum[5],carry1[4],(a[4]&x[1]),(a[5]&x[0]),d);
FA FA6(sum[6],carry1[5],(a[5]&x[1]),(a[6]&x[0]),d);
FA FA7(sum[7],carry1[6],(a[6]&x[1]),(a[7]&x[0]),d);
FA FA8(sum[8],carry1[7],(a[7]&x[1]),a[6]&x[2],carry1[6]);
FA FA9(sum[9],carry1[8],(a[5]&x[2]),sum[7],carry1[5]);
FA FA10(sum[10],carry1[9],(a[4]&x[2]),sum[6],carry1[4]);
FA FA11(sum[11],carry1[10],(a[3]&x[2]),sum[5],carry1[3]);
FA FA12(sum[12],carry1[11],(a[2]&x[2]),sum[4],carry1[2]);
FA FA13(sum[13],carry1[12],(a[1]&x[2]),sum[3],carry1[1]);
FA FA14(p[2],carry1[13],(a[0]&x[2]),sum[2],carry1[0]);
FA FA15(p[3],carry1[14],(a[0]&x[3]),sum[13],carry1[13]);
FA FA16(sum[14],carry1[15],(a[1]&x[3]),sum[12],carry1[12]);
FA FA17(sum[15],carry1[16],(a[2]&x[3]),sum[11],carry1[11]);
FA FA18(sum[16],carry1[17],(a[3]&x[3]),sum[10],carry1[10]);
FA FA19(sum[17],carry1[18],(a[4]&x[3]),sum[9],carry1[9]);
FA FA20(sum[18],carry1[19],(a[5]&x[3]),sum[8],carry1[8]);
FA FA21(sum[19],carry1[20],(a[6]&x[3]),a[7]&x[2],carry1[7]);
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA
FA22(sum[20],carry1[21],(a[6]&x[4]),(a[7]&x[3]),carry1[20]);
FA23(sum[21],carry1[22],(a[5]&x[4]),sum[19],carry1[19]);
FA24(sum[22],carry1[23],(a[4]&x[4]),sum[18],carry1[18]);
FA25(sum[23],carry1[24],(a[3]&x[4]),sum[17],carry1[17]);
FA26(sum[24],carry1[25],(a[2]&x[4]),sum[16],carry1[16]);
FA27(sum[25],carry1[26],(a[1]&x[4]),sum[15],carry1[15]);
FA28(p[4],carry1[27],(a[0]&x[4]),sum[14],carry1[14]);
FA29(p[5],carry1[28],(a[0]&x[5]),sum[25],carry1[27]);
FA30(sum[26],carry1[29],(a[1]&x[5]),sum[24],carry1[26]);
FA31(sum[27],carry1[30],(a[2]&x[5]),sum[23],carry1[25]);
FA32(sum[28],carry1[31],(a[3]&x[5]),sum[22],carry1[24]);
FA33(sum[29],carry1[32],(a[4]&x[5]),sum[21],carry1[23]);
Page:
17
R.No: 13MVD0096
Dt: 08-08-2014
FA FA34(sum[30],carry1[33],(a[5]&x[5]),sum[20],carry1[22]);
FA FA35(sum[31],carry1[34],(a[6]&x[5]),a[7]&x[4],carry1[21]);
FA FA36(sum[32],carry1[35],(a[6]&x[6]),a[7]&x[5],carry1[34]);
FA FA37(sum[33],carry1[36],(a[5]&x[6]),sum[31],carry1[33]);
FA FA38(sum[34],carry1[37],(a[4]&x[6]),sum[30],carry1[32]);
FA FA39(sum[35],carry1[38],(a[3]&x[6]),sum[29],carry1[31]);
FA FA40(sum[36],carry1[39],(a[2]&x[6]),sum[28],carry1[30]);
FA FA41(sum[37],carry1[40],(a[1]&x[6]),sum[27],carry1[29]);
FA FA42(p[6],carry1[41],(a[0]&x[6]),sum[26],carry1[28]);
FA FA43(p[7],carry1[42],(a[0]&x[7]),sum[37],carry1[41]);
FA FA44(sum[38],carry1[43],(a[1]&x[7]),sum[36],carry1[40]);
FA FA45(sum[39],carry1[44],(a[2]&x[7]),sum[35],carry1[39]);
FA FA46(sum[40],carry1[45],(a[3]&x[7]),sum[34],carry1[38]);
FA FA47(sum[41],carry1[46],(a[4]&x[7]),sum[33],carry1[37]);
FA FA48(sum[42],carry1[47],(a[5]&x[7]),sum[32],carry1[36]);
FA
FA49(sum[43],carry1[48],(a[6]&x[7]),a[7]&x[6],carry1[35]);
FA FA50(p[8],carry1[49],(a[7]&x[7]),carry1[48],d);
FA FA51(p[9],carry1[50],carry1[49],carry1[47],sum[43]);
FA FA52(p[10],carry1[51],carry1[46],carry1[50],sum[42]);
FA FA53(p[11],carry1[52],carry1[45],carry1[51],sum[41]);
FA FA54(p[12],carry1[53],carry1[44],carry1[52],sum[40]);
FA FA55(p[13],carry1[54],carry1[43],carry1[53],sum[39]);
FA FA56(p[14],p[15],carry1[54],carry1[42],sum[38]);
endmodule
//////////// full adder//////////////////
module FA(s,co,q,y,ci);
output s,co;
wire s,co;
input q,y,ci;
assign s=q^y^ci;
assign co=(q & y)|(y & ci)|(ci & q);
endmodule
Testbench :
module baughwooley8_tst();
wire[15:0] p;//p sum output
reg[7:0]a;
reg[7:0]x;
baughwooley8 bb1(p,a,x);
initial
begin
a= 8'd10;x=8'd5;
VLSI DSP Assignment-1
Page:
18
R.No: 13MVD0096
Dt: 08-08-2014
#2a=8'd12;x=8'd1;
#2a= 8'd7;x=8'd6;
#2a=8'd9;x=8'd2;
end
initial #20 $stop;
initial $monitor($time,"a=%d,x=%d,p=%d",a,p,x);
endmodule
Output result:
#
#
#
#
0a= 10,x=
2a= 12,x=
4a= 7,x=
6a= 9,x=
50,p= 5
12,p= 1
42,p= 6
18,p= 2
Page:
19
R.No: 13MVD0096
Dt: 08-08-2014
l1(a0,b0,cin,s0,c0);
l2(a1,b1,c0,s1,c1);
l3(a2,b2,c1,s2,c2);
l4(a3,b3,c2,s3,cout);
Page:
20
R.No: 13MVD0096
Dt: 08-08-2014
endmodule
module mux2_1(a,b,s,y);
input a,b,s;
output y;
reg y;
always@(a,b,s)
begin
if(s)
y<=b;
else
y<=a;
end
endmodule
module csa(a,b,m);
input [15:0]a,b;
output [31:0]m;
wire [31:0]m;
wire [255:0]p;
wire [83:0]s;
wire [211:0]c;
wire [28:0]d;
wire [14:0]cout;
wire [4:31]m1,m2;
wire [1:6]h;
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
p[0]=a[0]&b[0];
p[1]=a[1]&b[0];
p[2]=a[2]&b[0];
p[3]=a[3]&b[0];
p[4]=a[4]&b[0];
p[5]=a[5]&b[0];
p[6]=a[6]&b[0];
p[7]=a[7]&b[0];
p[8]=a[8]&b[0];
p[9]=a[9]&b[0];
p[10]=a[10]&b[0];
p[11]=a[11]&b[0];
p[12]=a[12]&b[0];
p[13]=a[13]&b[0];
p[14]=a[14]&b[0];
p[15]=a[15]&b[0];
p[16]=a[0]&b[1];
p[17]=a[1]&b[1];
Page:
21
R.No: 13MVD0096
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
Dt: 08-08-2014
p[18]=a[2]&b[1];
p[19]=a[3]&b[1];
p[20]=a[4]&b[1];
p[21]=a[5]&b[1];
p[22]=a[6]&b[1];
p[23]=a[7]&b[1];
p[24]=a[8]&b[1];
p[25]=a[9]&b[1];
p[26]=a[10]&b[1];
p[27]=a[11]&b[1];
p[28]=a[12]&b[1];
p[29]=a[13]&b[1];
p[30]=a[14]&b[1];
p[31]=a[15]&b[1];
p[32]=a[0]&b[2];
p[33]=a[1]&b[2];
p[34]=a[2]&b[2];
p[35]=a[3]&b[2];
p[36]=a[4]&b[2];
p[37]=a[5]&b[2];
p[38]=a[6]&b[2];
p[39]=a[7]&b[2];
p[40]=a[8]&b[2];
p[41]=a[9]&b[2];
p[42]=a[10]&b[2];
p[43]=a[11]&b[2];
p[44]=a[12]&b[2];
p[45]=a[13]&b[2];
p[46]=a[14]&b[2];
p[47]=a[15]&b[2];
p[48]=a[0]&b[3];
p[49]=a[1]&b[3];
p[50]=a[2]&b[3];
p[51]=a[3]&b[3];
p[52]=a[4]&b[3];
p[53]=a[5]&b[3];
p[54]=a[6]&b[3];
p[55]=a[7]&b[3];
p[56]=a[8]&b[3];
p[57]=a[9]&b[3];
p[58]=a[10]&b[3];
p[59]=a[11]&b[3];
p[60]=a[12]&b[3];
p[61]=a[13]&b[3];
p[62]=a[14]&b[3];
p[63]=a[15]&b[3];
Page:
22
R.No: 13MVD0096
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
Dt: 08-08-2014
p[64]=a[0]&b[4];
p[65]=a[1]&b[4];
p[66]=a[2]&b[4];
p[67]=a[3]&b[4];
p[68]=a[4]&b[4];
p[69]=a[5]&b[4];
p[70]=a[6]&b[4];
p[71]=a[7]&b[4];
p[72]=a[8]&b[4];
p[73]=a[9]&b[4];
p[74]=a[10]&b[4];
p[75]=a[11]&b[4];
p[76]=a[12]&b[4];
p[77]=a[13]&b[4];
p[78]=a[14]&b[4];
p[79]=a[15]&b[4];
p[80]=a[0]&b[5];
p[81]=a[1]&b[5];
p[82]=a[2]&b[5];
p[83]=a[3]&b[5];
p[84]=a[4]&b[5];
p[85]=a[5]&b[5];
p[86]=a[6]&b[5];
p[87]=a[7]&b[5];
p[88]=a[8]&b[5];
p[89]=a[9]&b[5];
p[90]=a[10]&b[5];
p[91]=a[11]&b[5];
p[92]=a[12]&b[5];
p[93]=a[13]&b[5];
p[94]=a[14]&b[5];
p[95]=a[15]&b[5];
p[96]=a[0]&b[6];
p[97]=a[1]&b[6];
p[98]=a[2]&b[6];
p[99]=a[3]&b[6];
p[100]=a[4]&b[6];
p[101]=a[5]&b[6];
p[102]=a[6]&b[6];
p[103]=a[7]&b[6];
p[104]=a[8]&b[6];
p[105]=a[9]&b[6];
p[106]=a[10]&b[6];
p[107]=a[11]&b[6];
p[108]=a[12]&b[6];
p[109]=a[13]&b[6];
Page:
23
R.No: 13MVD0096
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
Dt: 08-08-2014
p[110]=a[14]&b[6];
p[111]=a[15]&b[6];
p[112]=a[0]&b[7];
p[113]=a[1]&b[7];
p[114]=a[2]&b[7];
p[115]=a[3]&b[7];
p[116]=a[4]&b[7];
p[117]=a[5]&b[7];
p[118]=a[6]&b[7];
p[119]=a[7]&b[7];
p[120]=a[8]&b[7];
p[121]=a[9]&b[7];
p[122]=a[10]&b[7];
p[123]=a[11]&b[7];
p[124]=a[12]&b[7];
p[125]=a[13]&b[7];
p[126]=a[14]&b[7];
p[127]=a[15]&b[7];
p[128]=a[0]&b[8];
p[129]=a[1]&b[8];
p[130]=a[2]&b[8];
p[131]=a[3]&b[8];
p[132]=a[4]&b[8];
p[133]=a[5]&b[8];
p[134]=a[6]&b[8];
p[135]=a[7]&b[8];
p[136]=a[8]&b[8];
p[137]=a[9]&b[8];
p[138]=a[10]&b[8];
p[139]=a[11]&b[8];
p[140]=a[12]&b[8];
p[141]=a[13]&b[8];
p[142]=a[14]&b[8];
p[143]=a[15]&b[8];
p[144]=a[0]&b[9];
p[145]=a[1]&b[9];
p[146]=a[2]&b[9];
p[147]=a[3]&b[9];
p[148]=a[4]&b[9];
p[149]=a[5]&b[9];
p[150]=a[6]&b[9];
p[151]=a[7]&b[9];
p[152]=a[8]&b[9];
p[153]=a[9]&b[9];
p[154]=a[10]&b[9];
p[155]=a[11]&b[9];
Page:
24
R.No: 13MVD0096
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
Dt: 08-08-2014
p[156]=a[12]&b[9];
p[157]=a[13]&b[9];
p[158]=a[14]&b[9];
p[159]=a[15]&b[9];
p[160]=a[0]&b[10];
p[161]=a[1]&b[10];
p[162]=a[2]&b[10];
p[163]=a[3]&b[10];
p[164]=a[4]&b[10];
p[165]=a[5]&b[10];
p[166]=a[6]&b[10];
p[167]=a[7]&b[10];
p[168]=a[8]&b[10];
p[169]=a[9]&b[10];
p[170]=a[10]&b[10];
p[171]=a[11]&b[10];
p[172]=a[12]&b[10];
p[173]=a[13]&b[10];
p[174]=a[14]&b[10];
p[175]=a[15]&b[10];
p[176]=a[0]&b[11];
p[177]=a[1]&b[11];
p[178]=a[2]&b[11];
p[179]=a[3]&b[11];
p[180]=a[4]&b[11];
p[181]=a[5]&b[11];
p[182]=a[6]&b[11];
p[183]=a[7]&b[11];
p[184]=a[8]&b[11];
p[185]=a[9]&b[11];
p[186]=a[10]&b[11];
p[187]=a[11]&b[11];
p[188]=a[12]&b[11];
p[189]=a[13]&b[11];
p[190]=a[14]&b[11];
p[191]=a[15]&b[11];
p[192]=a[0]&b[12];
p[193]=a[1]&b[12];
p[194]=a[2]&b[12];
p[195]=a[3]&b[12];
p[196]=a[4]&b[12];
p[197]=a[5]&b[12];
p[198]=a[6]&b[12];
p[199]=a[7]&b[12];
p[200]=a[8]&b[12];
p[201]=a[9]&b[12];
Page:
25
R.No: 13MVD0096
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
assign
Dt: 08-08-2014
p[202]=a[10]&b[12];
p[203]=a[11]&b[12];
p[204]=a[12]&b[12];
p[205]=a[13]&b[12];
p[206]=a[14]&b[12];
p[207]=a[15]&b[12];
p[208]=a[0]&b[13];
p[209]=a[1]&b[13];
p[210]=a[2]&b[13];
p[211]=a[3]&b[13];
p[212]=a[4]&b[13];
p[213]=a[5]&b[13];
p[214]=a[6]&b[13];
p[215]=a[7]&b[13];
p[216]=a[8]&b[13];
p[217]=a[9]&b[13];
p[218]=a[10]&b[13];
p[219]=a[11]&b[13];
p[220]=a[12]&b[13];
p[221]=a[13]&b[13];
p[222]=a[14]&b[13];
p[223]=a[15]&b[13];
p[224]=a[0]&b[14];
p[225]=a[1]&b[14];
p[226]=a[2]&b[14];
p[227]=a[3]&b[14];
p[228]=a[4]&b[14];
p[229]=a[5]&b[14];
p[230]=a[6]&b[14];
p[231]=a[7]&b[14];
p[232]=a[8]&b[14];
p[233]=a[9]&b[14];
p[234]=a[10]&b[14];
p[235]=a[11]&b[14];
p[236]=a[12]&b[14];
p[237]=a[13]&b[14];
p[238]=a[14]&b[14];
p[239]=a[15]&b[14];
p[240]=a[0]&b[15];
p[241]=a[1]&b[15];
p[242]=a[2]&b[15];
p[243]=a[3]&b[15];
p[244]=a[4]&b[15];
p[245]=a[5]&b[15];
p[246]=a[6]&b[15];
p[247]=a[7]&b[15];
Page:
26
R.No: 13MVD0096
assign
assign
assign
assign
assign
assign
assign
assign
Dt: 08-08-2014
p[248]=a[8]&b[15];
p[249]=a[9]&b[15];
p[250]=a[10]&b[15];
p[251]=a[11]&b[15];
p[252]=a[12]&b[15];
p[253]=a[13]&b[15];
p[254]=a[14]&b[15];
p[255]=a[15]&b[15];
composer_3_2 q5(p[2],p[17],1'b0,d[1],c[1]);
composer_4_2 q6(p[3],p[18],p[33],c[1],d[2],c[2],c[3]);
composer_4_2 q7(p[4],p[19],c[2],c[3],s[0],c[4],c[5]);
composer_3_2 q8(p[34],p[49],s[0],d[3],c[6]);
composer_5_2 q9(p[5],p[20],c[4],c[5],c[6],s[1],c[7],c[8]);
composer_4_2 q10(p[35],p[50],p[65],s[1],d[4],c[9],c[10]);
composer_4_2 q11(c[7],c[8],c[9],c[10],s[2],c[11],c[12]);
composer_4_2 q12(p[6],p[21],p[36],s[2],s[3],c[13],c[14]);
composer_4_2 q13(p[51],p[66],p[81],s[3],d[5],c[15],c[16]);
composer_5_2
q14(c[12],c[13],c[14],c[15],c[16],s[4],c[17],c[18]);
composer_5_2
q15(p[7],p[22],p[37],s[4],c[11],s[5],c[19],c[20]);
composer_5_2
q16(p[52],p[67],p[82],p[97],s[5],d[6],c[21],c[22]);
composer_5_2
q17(c[18],c[19],c[20],c[21],c[22],s[6],c[23],c[24]);
composer_5_2
q18(p[8],p[23],p[38],s[6],c[17],s[7],c[25],c[26]);
composer_4_2 q19(p[53],p[68],p[83],s[7],s[8],c[27],c[28]);
composer_3_2 q20(p[98],p[113],s[8],d[7],c[29]);
composer_5_2
q21(c[25],c[26],c[27],c[28],c[29],s[9],c[30],c[31]);
composer_5_2
q22(p[9],p[24],s[9],c[23],c[24],s[10],c[32],c[33]);
composer_5_2
q23(p[39],p[54],p[69],p[84],s[10],s[11],c[34],c[35]);
composer_4_2 q24(p[99],p[114],p[129],s[11],d[8],c[36],c[37]);
Page:
27
R.No: 13MVD0096
Dt: 08-08-2014
composer_5_2
q25(c[33],c[34],c[35],c[36],c[37],s[12],c[38],c[39]);
composer_5_2
q26(p[10],s[12],c[30],c[31],c[32],s[13],c[40],c[41]);
composer_5_2
q27(p[25],p[40],p[55],p[70],s[13],s[14],c[42],c[43]);
composer_4_2 q28(p[85],p[100],p[115],s[14],s[15],c[44],c[45]);
composer_3_2 q29(p[130],p[145],s[15],d[9],c[46]);
composer_5_2
q30(c[42],c[43],c[44],c[45],c[46],s[16],c[47],c[48]);
composer_5_2
q31(c[38],c[39],c[40],c[41],s[16],s[17],c[49],c[50]);
composer_5_2
q32(p[11],p[26],p[41],p[56],s[17],s[18],c[51],c[52]);
composer_5_2
q33(p[71],p[86],p[101],p[116],s[18],s[19],c[53],c[54]);
composer_4_2
q34(p[131],p[146],p[161],s[19],d[10],c[55],c[56]);
composer_5_2
q35(c[47],c[48],c[49],c[50],c[51],s[20],c[57],c[58]);
composer_5_2
q36(c[52],c[53],c[54],c[55],s[20],s[21],c[59],c[60]);
composer_5_2
q37(p[12],p[27],p[42],c[56],s[21],s[22],c[61],c[62]);
composer_5_2
q38(p[57],p[72],p[87],p[102],s[22],s[23],c[63],c[64]);
composer_4_2
q39(p[117],p[132],p[147],s[23],s[24],c[65],c[66]);
composer_3_2 q40(p[162],p[177],s[24],d[11],c[67]);
composer_5_2
q41(c[57],c[58],c[59],c[60],c[61],s[25],c[68],c[69]);
composer_5_2
q42(c[62],c[63],c[64],c[65],s[25],s[26],c[70],c[71]);
composer_5_2
q43(p[13],p[28],c[66],c[67],s[26],s[27],c[72],c[73]);
composer_5_2
q44(p[43],p[58],p[73],p[88],s[27],s[28],c[74],c[75]);
composer_5_2
q45(p[103],p[118],p[133],p[148],s[28],s[29],c[76],c[77]);
composer_4_2
q46(p[163],p[178],p[193],s[29],d[12],c[78],c[79]);
Page:
28
R.No: 13MVD0096
Dt: 08-08-2014
composer_5_2
q47(c[68],c[69],c[70],c[71],c[72],s[30],c[80],c[81]);
composer_5_2
q48(c[73],c[74],c[75],c[76],s[30],s[31],c[82],c[83]);
composer_5_2
q49(p[14],c[77],c[78],c[79],s[31],s[32],c[84],c[85]);
composer_5_2
q50(p[29],p[44],p[59],p[74],s[32],s[33],c[86],c[87]);
composer_5_2
q51(p[89],p[104],p[119],p[134],s[33],s[34],c[88],c[89]);
composer_4_2
q52(p[149],p[164],p[179],s[34],s[35],c[90],c[91]);
composer_3_2 q53(p[194],p[209],s[35],d[13],c[92]);
composer_5_2
q54(c[80],c[81],c[82],c[83],c[84],s[36],c[93],c[94]);
composer_5_2
q55(c[85],c[86],c[87],c[88],s[36],s[37],c[95],c[96]);
composer_5_2
q56(c[89],c[90],c[91],c[92],s[37],s[38],c[97],c[98]);
composer_5_2
q57(p[15],p[30],p[45],p[60],s[38],s[39],c[99],c[100]);
composer_5_2
q58(p[75],p[90],p[105],p[120],s[39],s[40],c[101],c[102]);
composer_5_2
q59(p[135],p[150],p[165],p[180],s[40],s[41],c[103],c[104]);
composer_4_2
q60(p[195],p[210],p[225],s[41],d[14],c[105],c[106]);
composer_5_2
q61(c[93],c[94],c[95],c[96],c[97],s[42],c[107],c[108]);
composer_5_2
q62(c[98],c[99],c[100],c[101],s[42],s[43],c[109],c[110]);
composer_5_2
q63(c[102],c[103],c[104],c[105],s[43],s[44],c[111],c[112]);
composer_5_2
q64(p[31],p[46],p[61],c[106],s[44],s[45],c[113],c[114]);
composer_5_2
q65(p[76],p[91],p[106],p[121],s[45],s[46],c[115],c[116]);
composer_5_2
q66(p[136],p[151],p[166],p[181],s[46],s[47],c[117],c[118]);
composer_4_2
q67(p[196],p[211],p[226],s[47],d[15],c[119],c[120]);
composer_5_2
q68(c[107],c[108],c[109],c[110],c[111],s[48],c[121],c[122]);
VLSI DSP Assignment-1
Page:
29
R.No: 13MVD0096
Dt: 08-08-2014
composer_5_2
q69(c[112],c[113],c[114],c[115],s[48],s[49],c[123],c[124]);
composer_5_2
q70(c[116],c[117],c[118],c[119],s[49],s[50],c[125],c[126]);
composer_5_2
q71(p[47],p[62],p[77],c[120],s[50],s[51],c[127],c[128]);
composer_5_2
q72(p[92],p[107],p[122],p[137],s[51],s[52],c[129],c[130]);
composer_5_2
q73(p[152],p[167],p[182],p[197],s[52],s[53],c[131],c[132]);
composer_3_2 q74(p[212],p[227],s[53],d[16],c[133]);
composer_5_2
q75(c[121],c[122],c[123],c[124],c[125],s[54],c[134],c[135]);
composer_5_2
q76(c[126],c[127],c[128],c[129],s[54],s[55],c[136],c[137]);
composer_5_2
q77(c[130],c[131],c[132],c[133],s[55],s[56],c[138],c[139]);
composer_5_2
q78(p[63],p[78],p[93],p[108],s[56],s[57],c[140],c[141]);
composer_5_2
q79(p[123],p[138],p[153],p[168],s[57],s[58],c[142],c[143]);
composer_5_2
q80(p[183],p[198],p[213],p[228],s[58],d[17],c[144],c[145]);
composer_5_2
q81(c[134],c[135],c[136],c[137],c[138],s[59],c[146],c[147]);
composer_5_2
q82(c[139],c[140],c[141],c[142],s[59],s[60],c[148],c[149]);
composer_5_2
q83(p[79],c[143],c[144],c[145],s[60],s[61],c[150],c[151]);
composer_5_2
q84(p[94],p[109],p[124],p[139],s[61],s[62],c[152],c[153]);
composer_5_2
q85(p[154],p[169],p[184],p[199],s[62],s[63],c[154],c[155]);
composer_3_2 q86(p[214],p[229],s[63],d[18],c[156]);
composer_5_2
q87(c[146],c[147],c[148],c[149],c[150],s[64],c[157],c[158]);
composer_5_2
q88(c[151],c[152],c[153],c[154],s[64],s[65],c[159],c[160]);
composer_5_2
q89(p[95],p[110],c[155],c[156],s[65],s[66],c[161],c[162]);
composer_5_2
q90(p[125],p[140],p[155],p[170],s[66],s[67],c[163],c[164]);
Page:
30
R.No: 13MVD0096
Dt: 08-08-2014
composer_5_2
q91(p[185],p[200],p[215],p[230],s[67],d[19],c[165],c[166]);
composer_5_2
q92(c[157],c[158],c[159],c[160],c[161],s[68],c[167],c[168]);
composer_5_2
q93(c[162],c[163],c[164],c[165],s[68],s[69],c[169],c[170]);
composer_5_2
q94(p[111],p[126],p[141],c[166],s[69],s[70],c[171],c[172]);
composer_5_2
q95(p[156],p[171],p[186],p[201],s[70],s[71],c[173],c[174]);
composer_3_2 q96(p[216],p[231],s[71],d[20],c[175]);
composer_5_2
q97(c[167],c[168],c[169],c[170],c[171],s[72],c[176],c[177]);
composer_5_2
q98(c[172],c[173],c[174],c[175],s[72],s[73],c[178],c[179]);
composer_5_2
q99(p[127],p[142],p[157],p[172],s[73],s[74],c[180],c[181]);
composer_5_2
q100(p[187],p[202],p[217],p[232],s[74],d[21],c[182],c[183]);
composer_5_2
q101(c[176],c[177],c[178],c[179],c[180],s[75],c[184],c[185]);
composer_5_2
q102(c[181],c[182],c[183],p[143],s[75],s[76],c[186],c[187]);
composer_5_2
q103(p[158],p[173],p[188],p[203],s[76],s[77],c[188],c[189]);
composer_3_2 q104(p[218],p[233],s[77],d[22],c[190]);
composer_5_2
q105(c[184],c[185],c[186],c[187],c[188],s[78],c[191],c[192]);
composer_5_2
q106(c[189],c[190],p[159],p[174],s[78],s[79],c[193],c[194]);
composer_5_2
q107(p[189],p[204],p[219],p[234],s[79],d[23],c[195],c[196]);
composer_5_2
q108(c[191],c[192],c[193],c[194],c[195],s[80],c[197],c[198]);
composer_5_2
q109(c[196],p[175],p[190],p[205],s[80],s[81],c[199],c[200]);
composer_3_2 q110(p[220],p[235],s[81],d[24],c[201]);
composer_5_2
q111(c[197],c[198],c[199],c[200],c[201],s[82],c[202],c[203]);
composer_5_2
q112(p[191],p[206],p[221],p[236],s[82],d[25],c[204],c[205]);
Page:
31
R.No: 13MVD0096
Dt: 08-08-2014
composer_5_2
q113(c[202],c[203],c[204],c[205],p[207],s[83],c[206],c[207]);
composer_3_2 q114(p[222],p[237],s[83],d[26],c[208]);
composer_5_2
q115(c[206],c[207],c[208],p[223],p[238],d[27],c[209],c[210]);
composer_3_2 q116(p[239],c[209],c[210],d[28],c[211]);
four_bit_adder
q117(p[0],p[1],p[32],p[48],1'b0,p[16],d[1],d[2],1'b0,m[0],m[1],m
[2],m[3],cout[0]);
four_bit_adder
q118(p[64],p[80],p[96],p[112],d[3],d[4],d[5],d[6],1'b0,m1[4],m1[
5],m1[6],m1[7],cout[1]);
four_bit_adder
q119(p[64],p[80],p[96],p[112],d[3],d[4],d[5],d[6],1'b1,m2[4],m2[
5],m2[6],m2[7],cout[2]);
mux2_1
mux2_1
mux2_1
mux2_1
mux2_1
q132(m1[4],m2[4],cout[0],m[4]);
q133(m1[5],m2[5],cout[0],m[5]);
q134(m1[6],m2[6],cout[0],m[6]);
q135(m1[7],m2[7],cout[0],m[7]);
q160(cout[1],cout[2],cout[0],h[1]);
four_bit_adder
q120(p[128],p[144],p[160],p[176],d[7],d[8],d[9],d[10],1'b0,m1[8]
,m1[9],m1[10],m1[11],cout[3]);
four_bit_adder
q121(p[128],p[144],p[160],p[176],d[7],d[8],d[9],d[10],1'b1,m2[8]
,m2[9],m2[10],m2[11],cout[4]);
mux2_1
mux2_1
mux2_1
mux2_1
mux2_1
q136(m1[8],m2[8],h[1],m[8]);
q137(m1[9],m2[9],h[1],m[9]);
q138(m1[10],m2[10],h[1],m[10]);
q139(m1[11],m2[11],h[1],m[11]);
q161(cout[3],cout[4],h[1],h[2]);
four_bit_adder
q122(p[192],p[208],p[224],p[240],d[11],d[12],d[13],d[14],1'b0,m1
[12],m1[13],m1[14],m1[15],cout[5]);
four_bit_adder
q123(p[192],p[208],p[224],p[240],d[11],d[12],d[13],d[14],1'b1,m2
[12],m2[13],m2[14],m2[15],cout[6]);
Page:
32
R.No: 13MVD0096
mux2_1
mux2_1
mux2_1
mux2_1
mux2_1
Dt: 08-08-2014
q140(m1[12],m2[12],h[2],m[12]);
q141(m1[13],m2[13],h[2],m[13]);
q142(m1[14],m2[14],h[2],m[14]);
q143(m1[15],m2[15],h[2],m[15]);
q162(cout[5],cout[6],h[2],h[3]);
four_bit_adder
q124(p[241],p[242],p[243],p[244],d[15],d[16],d[17],d[18],1'b0,m1
[16],m1[17],m1[18],m1[19],cout[7]);
four_bit_adder
q125(p[241],p[242],p[243],p[244],d[15],d[16],d[17],d[18],1'b1,m2
[16],m2[17],m2[18],m2[19],cout[8]);
mux2_1
mux2_1
mux2_1
mux2_1
mux2_1
q144(m1[16],m2[16],h[3],m[16]);
q145(m1[17],m2[17],h[3],m[17]);
q146(m1[18],m2[18],h[3],m[18]);
q147(m1[19],m2[19],h[3],m[19]);
q163(cout[7],cout[8],h[3],h[4]);
four_bit_adder
q126(p[245],p[246],p[247],p[248],d[19],d[20],d[21],d[22],1'b0,m1
[20],m1[21],m1[22],m1[23],cout[9]);
four_bit_adder
q127(p[245],p[246],p[247],p[248],d[19],d[20],d[21],d[22],1'b1,m2
[20],m2[21],m2[22],m2[23],cout[10]);
mux2_1
mux2_1
mux2_1
mux2_1
mux2_1
q148(m1[20],m2[20],h[4],m[20]);
q149(m1[21],m2[21],h[4],m[21]);
q150(m1[22],m2[22],h[4],m[22]);
q151(m1[23],m2[23],h[4],m[23]);
q164(cout[9],cout[10],h[4],h[5]);
four_bit_adder
q128(p[249],p[250],p[251],p[252],d[23],d[24],d[25],d[26],1'b0,m1
[24],m1[25],m1[26],m1[27],cout[11]);
four_bit_adder
q129(p[249],p[250],p[251],p[252],d[23],d[24],d[25],d[26],1'b1,m2
[24],m2[25],m2[26],m2[27],cout[12]);
mux2_1
mux2_1
mux2_1
mux2_1
mux2_1
q152(m1[24],m2[24],h[5],m[24]);
q153(m1[25],m2[25],h[5],m[25]);
q154(m1[26],m2[26],h[5],m[26]);
q155(m1[27],m2[27],h[5],m[27]);
q165(cout[11],cout[12],h[5],h[6]);
Page:
33
R.No: 13MVD0096
Dt: 08-08-2014
four_bit_adder
q130(p[253],p[254],p[255],1'b0,d[27],d[28],c[211],1'b0,1'b0,m1[2
8],m1[29],m1[30],m1[31],cout[13]);
four_bit_adder
q131(p[253],p[254],p[255],1'b0,d[27],d[28],c[211],1'b0,1'b1,m2[2
8],m2[29],m2[30],m2[31],cout[14]);
mux2_1 q156(m1[28],m2[28],h[6],m[28]);
mux2_1 q157(m1[29],m2[29],h[6],m[29]);
mux2_1 q158(m1[30],m2[30],h[6],m[30]);
mux2_1 q159(m1[31],m2[31],h[6],m[31]);
endmodule
TEST BENCH:
module csa_test( );
reg [15:0]a,b;
wire [31:0]m;
csa q160(a,b,m);
initial
begin
$dumpfile("csa.vcd");
$dumpvars;
end
initial
begin
a=16'b0111_1111_1111_1111;b=16'b0111_1111_1111_1111;
#50 $stop;
end
initial
$monitor ("a=%d,b=%d,m=%d",a,b,m);
endmodule
Output result:
# a=32767,b=32767,m=1073676289
Page:
34
R.No: 13MVD0096
Dt: 08-08-2014
Power:
For 8-bits power reduced to nearly half proportionally:
Page:
35
R.No: 13MVD0096
Dt: 08-08-2014
Page:
36
R.No: 13MVD0096
Dt: 08-08-2014
Page:
37
R.No: 13MVD0096
Dt: 08-08-2014
Page:
38
R.No: 13MVD0096
Dt: 08-08-2014
module HA(a,b,sum,carry);
inputa,b ;
outputsum,carry ;
assign sum = a ^ b;
assign carry = a & b ;
endmodule
Test bench:
module mulcr_tst();
reg [7:0] x,y;
regclk;
wire [15:0] product;
mulcr m1(product,x,y,clk);
initial
begin
$dumpfile("mulcr.vcd");
$dumpvars;
end
initial
begin
clk=1'b0;
x=8'b0;
y=8'b0;
end
always #5 clk= ~clk;
initial
begin
#12; x=8'b10001000; y=8'b00010001;
#10; x=8'b01101100; y=8'b10100100;
#10;
$stop;
end
$monitor(x=%d,y=%d,product=%d,x,y,product);
endmodule
Output result:
Page:
39
R.No: 13MVD0096
#
#
#
#
#
#
Dt: 08-08-2014
Power:
Page:
40
R.No: 13MVD0096
Dt: 08-08-2014
Page:
41