플립플롭의 verilog HDL설계
2010, Nov 10
다음에 주어진 대로 VHDL로 설계하시오
1. JK플립플롭을 설계하고, 입출력파형이 정상임을 확인한다.
2. JK플립플롭을 부품으로하여 D플립플롭을 설계하고, 입출력파형이 정상임을 확인한다.
3. JK플립플롭을 부품으로하여 T플립플롭을 설계하고, 입출력파형이 정상임을 확인한다.
// Functional description of JK flip-flop
module JK_FF (J,K,CLK,Qjk,Qjknot);
output Qjk,Qjknot;
input J,K,CLK;
reg Qjk;
assign Qjknot = ~ Qjk ;
always @ (posedge CLK)
case ({J,K})
2'b00: Qjk = Qjk;
2'b01: Qjk = 1'b0;
2'b10: Qjk = 1'b1;
2'b11: Qjk = ~ Qjk;
endcase
endmodule
// Functional description of D flip-flop
module D_FF (D,CLK,Qd,Qdnot);
output Qd,Qdnot;
input D,CLK;
wire Dnot;
assign Dnot = ~ D ;
JK_FF D1 (D,Dnot,CLK,Qd,Qdnot);
endmodule
// Functional description of T flip-flop
module T_FF (T,CLK,Qt,Qtnot);
output Qt,Qtnot;
input T,CLK;
wire Tw;
assign Tw = T ;
JK_FF T1 (T,Tw,CLK,Qt,Qtnot);
endmodule
//*******************************************
//test 모듈
//*******************************************
`timescale 1ps / 1ps
module test;
wire Qjk,Qjknot,Qt,Qtnot,Qd,Qdnot;
reg CLK;
reg J;
reg K;
reg T;
reg D;
JK_FF jkff(J,K,CLK,Qjk,Qjknot);
T_FF tff(T,CLK,Qt,Qtnot);
D_FF dff(D,CLK,Qd,Qdnot);
initial
begin
J= 1'b0; K=1'b0; D=1'b0; T=1'b0;
#100
J= 1'b0; K=1'b0; D=1'b0; T=1'b1;
#100
J= 1'b0; K=1'b0; D=1'b1; T=1'b0;
#100
J= 1'b0; K=1'b0; D=1'b1; T=1'b1;
#100
J= 1'b0; K=1'b1; D=1'b0; T=1'b0;
#100
CLK= 1'b1; J= 1'b0; K=1'b1; D=1'b0; T=1'b1;
#100
CLK= 1'b0; J= 1'b0; K=1'b1; D=1'b1; T=1'b0;
#100
CLK= 1'b1; J= 1'b0; K=1'b1; D=1'b1; T=1'b1;
#100
CLK= 1'b0; J= 1'b1; K=1'b0; D=1'b0; T=1'b0;
#100
CLK= 1'b1; J= 1'b1; K=1'b0; D=1'b0; T=1'b1;
#100
CLK= 1'b0; J= 1'b1; K=1'b0; D=1'b1; T=1'b0;
#100
CLK= 1'b1; J= 1'b1; K=1'b0; D=1'b1; T=1'b1;
#100
CLK= 1'b0; J= 1'b1; K=1'b1; D=1'b0; T=1'b0;
#100
CLK= 1'b1; J= 1'b1; K=1'b1; D=1'b0; T=1'b1;
#100
CLK= 1'b0; J= 1'b1; K=1'b1; D=1'b1; T=1'b0;
#100
CLK= 1'b1; J= 1'b1; K=1'b1; D=1'b1; T=1'b1;
#100
$finish;
end
endmodule