Tuesday, January 14, 2014

D Flip Flop in verilog

D Flip Flop




module d_myff(d,clk,q);
  input d,clk;
  output q;
  reg q;
  always@(posedge clk)
  begin
   q <=d;
  end
  
endmodule


Test Bench


`timescale 1ns/1ns
module tb();
  reg d1,clk1,d2,clk2;
wire q1,q2;
  d_myff U1(
            .d(d1),
            .clk(clk1),
            .q(q1));
            
  d_myff U2(
            .d(d2),
            .clk(clk2),
            .q(q2));
                      
  initial
  begin
    d1=1;
    clk1=1;
    #10;
    d1=1;
    clk1=0;
    #20;
    d1=0;
    clk1=1;
    #100;
  end
  initial
  begin
    d2=1;
    clk2=1;
    #10;
    d2=1;
    clk2=0;
    #20;
    d2=0;
    clk2=1;
    #100;
  end
  
  
  
endmodule



Sunday, January 12, 2014

MUX 2:1





Mux Code
module mymux2_1(in1,in2,sel,y);
  input in1,in2,sel;
  output y;
  reg y;

 always@(in1,in2,sel)
  case (sel)
    1'b0: y = in1;
    1'b1: y = in2;
  endcase
endmodule

Test Bench

`timescale 1ns/1ns

module tb();
reg in1,in2,sel;
wire y;
mymux2_1 U1(
             .in1(in1),
             .in2(in2),
             .sel(sel),
             .y(y));
             
             initial
  begin 
    sel=1;
    in1=0;
    in2=1;
    
    #10;
    sel=0;
    in1=0;
    in2=1;
    #10;
    sel=1;
    in1=1;
    in2=0;
    #100;
    sel=0;
    in1=1;
    in2=1;
    #100;
  //  $finish;
  end
  endmodule  

NAND Gate






module nand_gate(a,b,c);
  input a,b;
  output wire c;
  assign c=~(a & b);
endmodule

Test Bench

`timescale 1ns/1ns
module tb();
  reg a,b;
  wire c;
  nand_gate U1(
                .a(a),
                .b(b),
                .c(c));
              
  initial
  begin 
    a=0;
    b=1;
    #10;
    a=1;
    b=1;
    #20;
    b=0;
    #100;
  //  $finish;
  end

  endmodule