// Dual Edge triggerred flip-flop // module detff (q,qb,d,clk); output q; output qb; input d; input clk; supply0 gnd; supply1 vdd; // fill this in. endmodule // Correct output from Test bench should be: // # Q value is 1, QB value is 0 // # Q value is 0, QB value is 1 // # Q value is 1, QB value is 0 // # Q value is 0, QB value is 1 // # Q value is 1, QB value is 0 // # Q value is 1, QB value is 0 module tb_detff; reg d, clk,r; wire q; wire qb; initial clk = 0; always #(40/2) clk = ~clk; detff dut (q, qb, d, clk); initial begin d = 1; #190 d = 0; $display ("Q value is %b, QB value is %b ", q, qb); #40 d = 1; $display ("Q value is %b, QB value is %b ", q, qb); #20 d = 0; $display ("Q value is %b, QB value is %b ", q, qb); #40 d = 1; $display ("Q value is %b, QB value is %b ", q, qb); #40 d = 0; #2 d = 1; $display ("Q value is %b, QB value is %b ", q, qb); #18 d = 0; #2 d = 1; $display ("Q value is %b, QB value is %b ", q, qb); end endmodule