Professional Documents
Culture Documents
Dsdlab Experiment 3.
Dsdlab Experiment 3.
EXPERIMENT: 3(a)
AIM: Implement full adder using data flow and structural modeling
SOFTWARE: Xilinx
Full adder using data flow modelling
Code:
`timescale 1ns / 1ps
module fulladder(
input a,
input b,
input cin,
output sum,
output carry );
endmodule
RTL:
SIMULATION:
`timescale 1ns / 1ps
module full_adders();
reg a,b,cin;
wire s,carry;
fulladder uut(a,b,cin,s,carry);
initial
begin
a = 0; b = 0;cin=0;
#20 a = 0; b = 0;cin=1;
#20 a = 0; b = 1;cin=0;
#20 a = 0; b = 1;cin=1;
#20 a = 1; b = 0;cin=0;
#20 a = 1; b = 0;cin=1;
#20 a = 1; b = 1;cin=0;
#20 a = 1; b = 1;cin=1;
#20 $finish;
end
endmodule
WAVEFORM:
module fulladder(
input a,b,cin,
output sum,carry);
wire w,x,y,z;
xor(sum ,a,b,cin);
and( w,a,b);
and(x,b,cin);
and(y,cin,a);
or(z,w,x);
or(carry,z,y);
endmodule
module full_adders();
reg a,b,cin;
wire s,carry;
fulladder uut(a,b,cin,s,carry);
initial
begin
a = 0; b = 0;cin=0;
#20 a = 0; b = 0;cin=1;
#20 a = 0; b = 1;cin=0;
#20 a = 0; b = 1;cin=1;
#20 a = 1; b = 0;cin=0;
#20 a = 1; b = 0;cin=1;
#20 a = 1; b = 1;cin=0;
#20 a = 1; b = 1;cin=1;
#20 $finish;
end
endmodule
RTL:
WAVEFORM:
EXPERIMENT: 3(b)
AIM: Implement full adder using two half adder
Full adder using two half adder
Code:
`timescale 1ns / 1ps
module half_adder_(
input a,b,
output sum,carry
);
xor(sum,a,b);
and(carry,a,b);
endmodule
module full_adder(
input a,b,cin,
output sum,carry);
wire c,c1,s;
half_adder_ ha0(a,b,s,c);
half_adder_ ha1(cin,s,sum,c1);
or(carry,c,c1);
endmodule
simulation
code:
`timescale 1ns / 1ps
module full_adders();
reg a,b,cin;
wire s,carry;
full_adder uut(a,b,cin,s,carry);
initial
begin
a = 0; b = 0;cin=0;
#20 a = 0; b = 0;cin=1;
#20 a = 0; b = 1;cin=0;
#20 a = 0; b = 1;cin=1;
#20 a = 1; b = 0;cin=0;
#20 a = 1; b = 0;cin=1;
#20 a = 1; b = 1;cin=0;
#20 a = 1; b = 1;cin=1;
#20 $finish;
end
endmodule
RTL
Waveform: