Professional Documents
Culture Documents
DLD Assignment
DLD Assignment
03
module main;
reg [3:0]A;
reg[3:0]B;
wire less;
wire equal;
wire greater;
initial
begin
// $display("Hello, World");
//$finish ;
A=0;B=0;
end
comparator g1(less,equal,greater,A,B);
endmodule
module comparator(less,equal,greater,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 ;
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
input Cin;
output [3:0] S;
output C;
reg [3:0] S;
reg C;
int_sum= a+b+Cin;
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 carry;
initial begin
$monitor("a=%b,b=%b,sum/difference=%b",a,b,sum);
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 carry_in,m;
output carry;
reg [4:0] sum_temp;
reg carry;
always @(*)
if(m==0)
begin
sum_temp = a+b+carry_in;
sum_temp = sum_temp+6;.
carry = 1;
sum = sum_temp[3:0];
end
else begin
carry = 0;
sum = sum_temp[3:0];
end
end
sum=a+(9-b);
endmodule
Output: