로직 시뮬레이터에서 플립 플롭을 만들 수없는 이유는 무엇입니까?
나는 몇 가지 논리 시뮬레이터를 가지고 놀았고 왜 플립 플롭이 작동하지 않는지 이해하지 못합니다. NAND 게이트로 T 플립 플롭을 구현하려고합니다.
![](https://post.nghiatu.com/assets/images/s/T0cRcm.png)
내가 시도한 모든 시뮬레이터는 동일한 결과를 제공합니다. Q 또는 Q '는 내부 업데이트의 타이밍에 따라 상승 에지에서 토글하지 않고 클럭 상태를 취합니다. 회로의 대칭성을 감안할 때 나는 그다지 놀랍지 않지만 실제로 작동하는 방식이 궁금합니다.
이것이 가능합니까, 아니면 기본 부품으로 할 수 없기 때문에 이러한 에뮬레이터가 플립 플롭 구성 요소를 제공합니까? 그렇다면 왜 그리고 무엇이 빠졌습니까?
시뮬레이터 :
- https://logic.ly/demo
- https://circuitverse.org/simulator
- https://academo.org/demos/logic-gate-simulator/
- https://simulator.io/board
제공된 T 플립 플롭 (circuitverse.org)과 비교 한 NAND 게이트 회로 :
![](https://post.nghiatu.com/assets/images/s/pCY7qm.png)
Simulator.io에서도 동일합니다 (NAND가 없으므로 AND + NOT 사용) :
![](https://post.nghiatu.com/assets/images/s/imvMgm.png)
답변
에서하기 때문에 이 페이지 클럭 펄스의 폭이 출력 단계는 반응에 대해 충분히로 조정, 아직 일에 대한 짧은 충분하지 발진하는 경우, 당신이 보여있는 스타일에만 작동합니다. 전파 시간을 모델링하지 않는 로직 시뮬레이터는 대처할 수 없습니다.
회로를 시뮬레이션하려면 전파 지연을 '이해하는'회로 시뮬레이터가 필요하거나 트랜지스터 수준에서 회로를 시뮬레이션해야합니다.
동일한 페이지는 완전 동기식 J-Kflip-flop에 대한 다음 회로를 보여줍니다 (T ff를 위해 J와 K를 함께 연결).
![](https://post.nghiatu.com/assets/images/s/TCDq1.png)
시뮬레이터에서 시도해보고 어떤 일이 발생하는지 확인하십시오.
당신이 보여주는 회로는 플립 플롭이 아닌 게이트 된 JK 래치입니다. T가 높고 클럭이 높으면 교차 결합 된 NAND 게이트가 링 오실레이터를 형성합니다. 이를 '경주-주변'문제라고도합니다. 출력은 클럭이 다시 낮아질 때까지 안정되지 않습니다.
이 회로는 클럭 플롭을 만들지 않는 방법을 보여줍니다. 그렇지 않으면 쓸모가 없습니다. 실제 토글 플롭은 반대 레벨에서 클럭 된 두 단계의 래치 쌍을 사용합니다. 이를 '에지 트리거'또는 '마스터-슬레이브'플립 플롭이라고도합니다.
더보기 : JK 플립 플롭에서 Q와 Q '는 어떻게 결정됩니까?
그리고 여기 : JK 래치, 가능한 벤 이터 오류?
게이트 지연 타이밍에 의존하지 않는 에지 트리거 T 플립 플롭을 구현하려면 최소 6 개의 Nand 게이트가 필요합니다. 아래 회로는 CircuitLab에서 잘 시뮬레이션합니다.
![](https://post.nghiatu.com/assets/images/s/lzgQy.png)
이 회로 시뮬레이션 – CircuitLab을 사용하여 생성 된 회로도
편집하다:
누군가는 회로가 클록에만 의존하고 별도의 T 및 클록 입력이 없기 때문에이 회로가 T 플립 플롭이 아니라고 언급했습니다.
그러나 내가 "T flip-flop"을 구글링 할 때 가장 먼저 떠오르는 것은 다음 과 같다.
T 또는 "토글"플립 플롭은 각 클록 에지에서 출력을 변경하여 신호 주파수의 절반 인 출력을 T 입력에 제공합니다.
이진 카운터, 주파수 분할기 및 일반 이진 가산 장치를 구성하는 데 유용합니다. 두 입력을 모두 높게 묶어 JK 플립 플롭에서 만들 수 있습니다.
그래픽이 포함되어 있습니다.
![](https://post.nghiatu.com/assets/images/s/onfma.png)
나는 이것이 반드시 T 플립 플롭이 별도의 T 및 클록 입력을 가져야한다는 주장에 대한 권위있는 반박이라고 주장하지 않습니다. (인터 웹에 플립 플롭에 대한 잘못된 정보가 많이 있습니다. 예를 들어 OPs 회로는 다른 답변에 설명 된 문제가 있음에도 불구하고 T 플립 플롭으로 표시된 곳곳에 나타납니다.) 그러나 , 나는 댓글 작성자의 관점에 대한 대안으로 위의 정보를 제공하고 있습니다.
Edit2 : 논평자가 회로에 대한 상태 다이어그램을 요청했습니다. 이 정보를 제공 할 것이지만 다이어그램으로는 제공하지 않습니다.
정상 작동시 안정 상태간에 전환되는 4 개의 안정 상태와 12 개의 상태가 있습니다.
안정 상태는 다음과 같습니다.
상태 : Vin N1 N2 N3 N4 N5 N6
S1 : 01010
S2 : 1010 1 0 1
S3 : 012 1100 1
S4 : 1 1 0 1 1 0
전환은 다음과 같이 진행됩니다.
S1에서 \$\uparrow\$N1 \$\downarrow\$N6 \$\uparrow\$N5 \$\downarrow\$ S2
S2에서 \$\downarrow\$N1 \$\uparrow\$N4 \$\downarrow\$N3 \$\uparrow\$ S3
S3 In \$\uparrow\$N2 \$\downarrow\$N5 \$\uparrow\$N6 \$\downarrow\$N4 \$\uparrow\$ S4
S4 In \$\downarrow\$N2 \$\uparrow\$N3 \$\downarrow\$ S1
당신은 또 다른 문제가 있습니다 (하지만 해야 )는로 실행은 이것이다 : 어떻게 Q 및 Q 'JK 플립 플롭에서 처음으로 결정된다? .
이것은 특히 T 플립 플롭의 경우에 해당됩니다.
2 개의 입력, T 및 클럭 만있는 T 플립 플롭의 경우 'X'를 지원하는 시뮬레이션에서 출력이 알려진 상태 가 될 수있는 방법이 없습니다 .
좋은의 시뮬레이터 값이 알려지지 않은 것을 알 모두 출력에서 'X'를 나타낸 것이다.
내 대답 에서 언급했듯이 동기식 또는 비동기식 입력을 사용하여 출력을 알려진 상태로 설정할 수 있습니다.
참고로 마스터 슬레이브 JK 플립 플롭을 사용하여 비동기 입력이있는 T 플립 플롭을 만들었습니다. 브라우저에서 시뮬레이션 할 수 있습니다.
![](https://post.nghiatu.com/assets/images/s/MCHJt.png)