Study

동기 D Flip-Flop 과 비동기 D Flip-Flop

greenpresent 2013. 8. 2. 22:19

동기형 D Flip-Flop

· RSFlip-Flop의 문제점인 입력 SR에 각각 1을 못 넣게 만들어 놓은 회로이다. 데이터 전송용으로 많이 쓰인다. CPU 내에서 많이 사용된다.


   


   입력

     출력 

CLK   D 

Q(t+1) 

   1    0

   1    1

   0    0 

0

1

Q(t) 

               [진리표]


- Verilog

module dff2(Clk,D,Q,Qbar );

input Clk,D;

output Q,Qbar;

wire D_s, D_r, Q_1, Q_2, Qbar_1, Qbar_2;

reg Q,Qbar;

assign D_s = D, D_r = !D;

nand(Q_1,D_s,Clk);  //nand(output,input1,input2)

nand(Qbar_1,D_r,Clk);


nand(Q_2,Q_1,Qbar_2);  //nand(output,input1,input2)

nand(Qbar_2,Qbar_1,Q_2);

//assign Q=Q_2, Qbar=Qbar_2;


always@(posedge(Clk)) begin

Q=Q_2;Qbar=Qbar_2;

end

endmodule

----------------------------------------------------------------------------

module bench2;


// Inputs

reg Clk;

reg D;


// Outputs

wire Q;

wire Qbar;


// Instantiate the Unit Under Test (UUT)

dff2 uut (

.Clk(Clk), 

.D(D), 

.Q(Q), 

.Qbar(Qbar)

);


initial

begin

Clk = 1;

  forever #5 Clk = !Clk;   

end

initial

begin

D = 0;

  forever #3 D = !D;   

end

endmodule



- 동기식 D Flip-Flop 파형



비동기식 D Flip-Flop

- Verilog

module dff(Clk,D,Q,Qbar );

input Clk,D;

output Q,Qbar;

wire D_s, D_r, Q_1, Q_2, Qbar_1, Qbar_2;

 

assign D_s = D, D_r = !D;

 

nand(Q_1,D_s,Clk); //nand(output,input1,input2)

nand(Qbar_1,D_r,Clk);

 

nand(Q_2,Q_1,Qbar_2); //nand(output,input1,input2)

nand(Qbar_2,Qbar_1,Q_2);

 

assign Q=Q_2, Qbar=Qbar_2;

endmodule

------------------------------------------------------------------

module dff_bench;

// Inputs

reg Clk;

reg D;

// Outputs

wire Q;

wire Qbar;

// Instantiate the Unit Under Test (UUT)

dff uut (

.Clk(Clk),

.D(D),

.Q(Q),

.Qbar(Qbar)

);

initial

begin

Clk = 0;

forever #5 Clk = !Clk; //5ns 후에 5ns 마다 clk의 값을 반전 시킨다.

end

initial

begin

D = 0;

forever #3 D = !D; //5ns 후에 5ns 마다 clk의 값을 반전 시킨다.

end

endmodule


- 비동기식 D Flip-Flop 파형