verilog를 이용해서 JK플립플롭과 4bit counter를 구현했는데,
컴파일까지는 문제없이 잘 되나 테스트벤치로 시뮬레이팅을 하면 값이 안나옵니다
어디서부터 잘못된걸까요?
-----------------------------------
cs003.v (JK-FF의 구현)
module JK_FF (Q,J,K,Clk);
output Q;
input J,K,Clk;
reg Q;
always @ (posedge Clk)
case({J,K})
2'b00: Q=Q;
2'b01: Q=1'b0;
2'b10: Q=1'b1;
2'b11: Q= ~Q;
endcase
endmodule
-----------------------------------
cs0031.v (JK_FF 모듈을 이용한 4bit-counter의 구현)
module counter (E,Clk,A0,A1,A2,A3);
output A0,A1,A2,A3;
input E,Clk;
wire w1,w2;
JK_FF ff1(A3,E,E,Clk);
JK_FF ff2(A2,A3,A3,Clk);
and (w1,A3,A2);
JK_FF ff3(A1,w1,w1,Clk);
and (w2,w1,A1);
JK_FF ff4(A0,w2,w2,Clk);
endmodule
-----------------------------------
cs0032.v (테스트벤치)
module cs0032;
wire A0,A1,A2,A3;
reg E,Clk;
counter c1(E,Clk,A0,A1,A2,A3);
initial
begin
Clk=1'b1; E=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
#10 Clk=1'b1;
#10 Clk=1'b0;
end
initial #500 $finish;
endmodule
-----------------------------------
시뮬레이션 결과
소인이 감히 도움을 구하옵니다 어느부분이 잘못되었는지 지적좀 해주십시오
각 JK_FF의 Q가 초기화가 제대로 안 된 것 같은데...
FF 같은거 구현할 때는 reset 신호를 받아서 clk에 상관없이 0으로 만드는 부분을 추가하는 걸 추천합니다.