You are on page 1of 12

Question No.

03

module main;

reg [3:0]A;

reg[3:0]B;

wire less;

wire equal;

wire greater;

initial

begin

// $display("Hello, World");

//$finish ;

$monitor("A=%b, B=%b, less=%b, equal=%b, greater=%b",A,B, less,equal,greater);

A=0;B=0;

#100 A=0; B=1;

#100 A=1; B=0;

#100 A=1; B=1;

end

comparator g1(less,equal,greater,A,B);

endmodule
module comparator(less,equal,greater,A,B);

input [3:0] A,B;

output less,equal,greater;

reg less;

reg equal;

reg greater;

always @ (A or B) begin

if (A>B)

begin

less=0;

equal=0;

greater=1;

end

else if (A==B)

begin

less=0;

equal=1;

greater=0;

end

else if (A<B)

begin

less=1;

equal=0;

greater=0;
end

end

endmodule

Output:

Question 01
module main;

reg [3:0]a;

reg [3:0]b;

reg Cin;

wire[3:0] S;

wire C;

initial
begin

//$display("Hello, World");

//$finish ;

$monitor ("a=%b,b=%b, Cin=%b, S=%b, C=%b", a,b,Cin,S,C);

a=0;b=0;Cin=0;

#100 a=0;b=0;Cin=1;

#100 a=0;b=1;Cin=0;

#100 a=0;b=1;Cin=1;

#100 a=1;b=0;Cin=0;

#100 a=1;b=0;Cin=1;

#100 a=1;b=1;Cin=0;

#100 a=1;b=1;Cin=1;

end

bcd_adder g1(S,C,a,b,Cin);

endmodule

module bcd_adder(S,C, a,b,Cin);

input [3:0] a,b;

input Cin;

output [3:0] S;

output C;

reg [4:0] int_sum;

reg [3:0] S;
reg C;

always @ (*) begin

int_sum= a+b+Cin;

if (int_sum > 9) begin

int_sum= int_sum +6;

C=1;

end

else

begin

C=0;

S= int_sum[3:0] ;

end

end

endmodule

Output:
Question No. 02:
module tb_bcdadder;

reg [3:0] a;

reg [3:0] b;

reg carry_in,m;

wire [3:0] sum;

wire carry;

initial begin

$monitor("a=%b,b=%b,sum/difference=%b",a,b,sum);

a = 0; b = 0; carry_in = 0; m=0; #100;

a = 6; b = 9; carry_in = 0; m=0; #100;

a = 3; b = 3; carry_in = 1; m=0; #100;

a = 4; b = 5; carry_in = 0; m=1;#100;

a = 8; b = 2; carry_in = 0; m=1;#100;

a = 9; b = 5; carry_in = 1; m=1;#100;

end

bcd_adder b1(a,b,carry_in,m,sum,carry);

endmodule

module bcd_adder(a,b,carry_in,m,sum,carry);

input [3:0] a,b;

input carry_in,m;

output [3:0] sum;

output carry;
reg [4:0] sum_temp;

reg [3:0] sum;

reg carry;

always @(*)

if(m==0)

begin

sum_temp = a+b+carry_in;

if(sum_temp > 9) begin

sum_temp = sum_temp+6;.

carry = 1;

sum = sum_temp[3:0];

end

else begin

carry = 0;

sum = sum_temp[3:0];

end

end

else //take 9's complement

sum=a+(9-b);

endmodule

Output:

You might also like