Wednesday, 20 September 2017

FPGA Verilog generating a clock signal D flip flop test fixture testbench example Isim


ISIM D FLIP FLOP TEST BENCH


`timescale 1ns / 1ps


module Dff_test_fixture;
localparam T=20;
// Inputs
reg clk;
reg reset;
reg preset;
reg d;

// Outputs
wire q;
wire qnot;

// Instantiate the Unit Under Test (UUT)
d_ff_reset uut (
.clk(clk), 
.reset(reset), 
.preset(preset), 
.d(d), 
.q(q), 
.qnot(qnot)
);

//////////////////////////////////////////////

always begin
    clk = 1'b1;
#(T/2);
clk = 1'b0;
    #(T/2);
  end

//////////////////////////////////////////////


initial begin
// Initialize Inputs
clk = 0;
reset = 0;
preset = 0;
d = 0;

///////////////////////////////////////////////
      reset = 0;
preset = 0;
d = 0;
      #200 reset = 0;
preset = 0;
d = 1;
#200 reset = 1;
preset = 0;
d = 1;
#200 reset = 0;
preset = 1;
d = 1;
#200 reset = 0;
preset = 0;
d = 0;

////////////////////////////////////////////////
// Wait 100 ns for global reset to finish
#100;
        
// Add stimulus here

end
      
endmodule


---------------------------------------------------------------
D FLIP FLOP VERILOG MODULE



module d_ff_reset
   (
    input wire clk, reset,preset,
    input wire d,
    output reg q,qnot
   );

   // body
   always @(posedge clk, posedge reset,posedge preset)
      if (reset)begin
         q <= 1'b0;
qnot <= 1'b1;
      end
else if (preset)begin
         q <= 1'b1;
qnot <= 1'b0;
      end
else 
begin
         q <= d;
qnot <= ~d;
end
endmodule


// clk       D    Preset Reset   Q        Qnot
// rising    0       0     0     0         1
// rising    1       0     0     1         0
//    0      -       0     0    last Q    last Qnot
//    1      -       0     0    last Q    last Qnot
//    -      -       1     0     1         0

//    -      -       -     1     0         1







TUTORIAL ON HOW TO ADD CLOCK TIMING CONSTRAINTS IN A VERILOG MODULE


TUTORIAL TO ADD A CLOCK SIGNAL TO A FPGA BOARD 555 TIMER APPROACH



No comments:

Post a Comment