DEPARTMENT OF ARTIFCIAL INTELLIGENCE AND DATA
SCIENCE
DIGITAL DESIGN AND COMPUTER ORGANIZATION
                 (BCS302)
            LABORATORY MANUAL
                          FOR
                        3RD SEM
          ARTIFICIAL INTELLIGENCE AND DATA
                        SCIENCE
     Prepared by:
     Prof. SAFRA                   MAMTHAZ BHANU
     Assistant Professor            Lab instructor
     Department of AI&DS         Department of AI&DS
DEPARTMENT OF AI&DS
        DCO Lab                                                         BCS302
Sl.NO                                 Experiments
  1     Write Verilog description for all basic and universal gates using dataflow
        style.
  2     Given a 4- variable logic expression, simplify it using appropriate technique
        and simulate the same using basic gates.
  3     Design adders and subtractors, simulate the same using gates.
  4     Design Verilog module to implement simple circuit using behavioral and
        structural model.
  5     Design Verilog program for implementing various types of flip-flops such as
        SR, JK, D and T.
  6     Design Verilog program for implement different types of multiplexer like 2:1,
        4:1 and 8:1.
  7     Design Verilog program to implement types of De-Multiplexer.
  8     Design Verilog program to implement decimal adder.
        2023-24                                                              Page 1
DCO Lab   BCS302
                   2|Page
 DCO Lab                                                          BCS302
 PROGRAM-1:
Write Verilog description for all basic and universal gates using dataflow style.
module pgm1(a,b,c,d,e,f,g,h,i);
input a,b;
output c,d,e,f,g,h,i;
assign c=~a;
assign d=a&b;
assign e=a|b;
assign f=~(a&b);
assign g=~(a|b);
assign h=a^b;
assign i=~(a^b);
endmodule
OUTPUT:
                                                                                    3|Page
 DCO Lab                                                         BCS302
PROGRAM-2:
Given a 4- variable logic expression, simplify it using appropriate technique and
simulate the same using basic gates.
module kmap(w,x,y,z,f);
input w, x, y, z;
output f;
assign f=w|(~x &~y)|(~x & z);
endmodule
OUTPUT:
                                                                                4|Page
 DCO Lab                                                        BCS302
PROGRAM-3:
Design adders and subtractors, simulate the same using gates.
3.a. Half-adder
module pgm3(a,b,sum, carry);
input a,b;
output sum,carry;
assign sum=a|b;
assign carry=a&b;
endmodule
OUTPUT:
                                                                         5|Page
 DCO Lab                          BCS302
3.b Full adder
module pgm3(a,b,c,sum, carry);
input a,b,c;
output sum,carry;
assign sum=a^b^c;
assign carry=(a&b)|(a&c)|(b&c);
endmodule
OUTPUT:
                                           6|Page
 DCO Lab                         BCS302
3.c. Half-subtractor
module pgm3(a,b,diff, borrow);
input a,b;
output diff, borrow;
assign sum=a^b;
assign carry=~a&b;
endmodule
OUTPUT:
                                          7|Page
 DCO Lab                            BCS302
3.d. Full subtractor
module pgm2d(a,b,c,diff, borrow);
input a,b,c;
output diff, borrow;
assign sum=a^b^c;
assign carry=(~a&b)|(~a&c)|(b&c);
endmodule
OUTPUT:
                                             8|Page
DCO Lab                                                       BCS302
PROGRAM-4
Design Verilog module to implement simple circuit using behavioural and structural
model.
4.a. Behavioural Model
module bcd_e3(B,E);
input [3:0]B;
output[3:0]E;
reg[3:0]E;
always@(B)
begin
case(B)
 4'b000:E =4'b0011;
 4'b001:E =4'b0100;
 4'b010:E =4'b0101;
 4'b011:E =4'b0110;
 4'b100:E =4'b0111;
 4'b101:E =4'b1000;
 4'b000:E =4'b0011;
 4'b0110:E =4'b1001;
 4'b0111:E =4'b1010;
4'b1000:E =4'b1011;
 4'b1001:E =4'b1100;
 default;
 endcase
end
 endmodule
OUTPUT:
                                                                            9|Page
 DCO Lab                            BCS302
4.b. Structural model
module fullllll(a,b,c,sum,carry);
input a,b,c;
output sum, carry;
wire s1,s2,s3,s4,s5;
xor x1(s1,a,b);
xor x2(sum,s1,c);
and a1(s2,a,b);
and a2(s3,b,c);
and a3(s4,a,c);
or o1(s5,s2,s3);
or o2(carry,s5,s4);
endmodule
OUTPUT:
                                             10 | P a g e
    DCO Lab                                                           BCS302
    PROGRAM-5:
   Design Verilog program for implementing various types of flip-flops such as SR, JK, D
   and T.
   5.a. SR flip-flop:
   module srff(clk,sr,q,qb);
   input clk;
   input[1:0]sr;
   output q,qb;
   reg q,qb;
   initial q=1'b0;
   always@(posedge(clk))
   begin
   case(sr)
   2'b00:q=q;
   2'b01:q=1'b0;
   2'b10:q=1'b1;
   2'b11:q=1'bz;
   default;
   endcase
   qb=~q;
   end
   endmodule
OUTPUT:
                                                                                    11 | P a g e
 DCO Lab                    BCS302
5.b. JK flip-flop:
module jkff(clk,jk,q,qb);
input clk;
input[1:0]jk;
output q,qb;
reg q,qb;
initial q=1'b0;
always@(negedge(clk))
begin
case(jk)
2'b00:q=q;
2'b01:q=1'b0;
2'b10:q=1'b1;
2'b11:q=~q;
default;
endcase
qb=~q;
end
endmodule
OUTPUT:
                                     12 | P a g e
 DCO Lab                  BCS302
5. c. D flip-flop:
module dff(clk,d,q,qb);
input clk;
input d;
output q,qb;
reg q,qb;
initial q=1'b0;
always@(posedge(clk))
begin
case(d)
1'b0:q=0;
1'b1:q=1;
default;
endcase
qb=~q;
end
endmodule
OUTPUT:
                                   13 | P a g e
 DCO Lab                  BCS302
5.d. T flip-flop:
module tff(clk,t,q,qb);
input clk;
input t;
output q,qb;
reg q,qb;
initial q=1'b0;
always@(negedge(clk))
begin
case(t)
1'b0:q=q;
1'b1:q=~q;
default;
endcase
qb=~q;
end
endmodule
OUTPUT:
                                   14 | P a g e
 DCO Lab                                                        BCS302
PROGRAM-6:
Design Verilog program for implement different types of multiplexer like 2:1,
4:1 and 8:1.
6. a. 2:1 MUX
module dmxxx(En,S,I,y);
input En, S;
input[1:0]I;
output y;
reg y;
always@(En,S)
begin
if(En ==1'b0)
y<=1'b0;
else
case(S)
1'b0:y =I[0];
1'b1:y =I[1];
default;
endcase
end
endmodule
OUTPUT:
                                                                                15 | P a g e
 DCO Lab                  BCS302
6.b 4:1 MUX:
module muxxx(En,S,I,y);
input En;
input[1:0]S;
input[3:0]I;
output y;
reg y;
always@(En,S)
begin
if(En ==1'b0)
y<=1'b0;
else
case(S)
2'b00:y =I[0];
2'b01:y =I[1];
2'b10:y =I[2];
2'b11:y =I[3];
default;
endcase
end
endmodule
OUTPUT:
                                   16 | P a g e
 DCO Lab                 BCS302
6.c. 8:1 MUX:
module muxx(En,S,I,y);
input En;
input[2:0]S;
input[7:0]I;
output y;
reg y;
always@(En,S)
begin
if(En ==1'b0)
y<=1'b0;
else
case(S)
3'b000:y =I[0];
3'b001:y =I[1];
3'b010:y =I[2];
3'b011:y =I[3];
3'b100:y =I[4];
3'b101:y =I[5];
3'b110:y =I[6];
3'b111:y =I[7];
default;
endcase
end
endmodule
OUTPUT:
                                  17 | P a g e
     DCO Lab                                                       BCS302
    PROGRAM-7:
    Design Verilog program to implement types of De-Multiplexer.
    module dmm(En,S,A,y);
    input En,A;
    input[2:0]S;
    output[7:0]y;
    reg[7:0]y;
    always@(En,S)
    begin
    if(En ==1'b0)
    y<=8'b00000000;
    else
    case(S)
    3'b000:y[0]=A;
    3'b001:y[1]=A;
    3'b010:y[2]=A;
    3'b011:y[3]=A;
    3'b100:y[4]=A;
    3'b101:y[5]=A;
    3'b110:y[6]=A;
    3'b111:y[7]=A;
    default;
    endcase
    end
    endmodule
OUTPUT:
                                                                            18 | P a g e
     DCO Lab                                            BCS302
    PROGRAM-8:
    Design Verilog program to implement decimal adder
    module decimaladder (A,B,cin,sum,cout);
    input[3:0]A,B;
    input cin;
    output[3:0]sum;
    output cout;
    assign{cout,sum} =A+B+4'b0000;
    endmodule
OUTPUT:
                                                                 19 | P a g e