Dlaczego nie mogę robić klapek w symulatorach logiki?

Jan 03 2021

Bawiłem się kilkoma symulatorami logicznymi i nie rozumiem, dlaczego klapki nie działają. Próbuję zaimplementować przerzutnik T z bramkami NAND:

Wszystkie symulatory, które wypróbowałem, dają ten sam wynik. Albo Q, albo Q 'przyjmuje stan zegara zamiast przełączać się na zboczu narastającym, w zależności od taktowania wewnętrznych aktualizacji. Biorąc pod uwagę symetrię obwodu, nie jestem aż tak zaskoczony, ale zastanawiam się, jak to ma działać w praktyce.

Czy jest to w ogóle możliwe, czy też te imulatory zapewniają komponenty przerzutnika, ponieważ nie można tego zrobić z podstawowymi częściami? Jeśli tak, dlaczego i czego brakuje?

Symulatory:

  • https://logic.ly/demo
  • https://circuitverse.org/simulator
  • https://academo.org/demos/logic-gate-simulator/
  • https://simulator.io/board

Obwód bramki NAND w porównaniu z dostarczonym przerzutnikiem T (circuitverse.org):

To samo w simulator.io (używając AND + NOT, ponieważ nie ma NAND):

Odpowiedzi

12 TimWescott Jan 03 2021 at 07:43

Ponieważ z tej strony styl, który pokazujesz działa tylko wtedy, gdy szerokość impulsu zegara jest dostrojona tak, aby była wystarczająco długa, aby stopień wyjściowy zareagowała, ale wystarczająco krótka, aby obiekt nie oscylował. Symulator logiczny, który nie modeluje czasu propagacji, może nie być w stanie sobie z tym poradzić.

Aby zasymulować obwód, potrzebny byłby symulator obwodu, który „rozumie” opóźnienie propagacji lub musiałbyś symulować obwód na poziomie tranzystora.

Ta sama strona pokazuje ten obwód dla w pełni synchronicznego flopa J-Kflip (wystarczy połączyć J & K razem dla T ff):

Możesz spróbować tego w swoim symulatorze, zobacz, co się stanie.

11 hacktastical Jan 03 2021 at 13:34

Obwód, który pokazujesz, to zamykany zatrzask JK, a nie przerzutnik. Ma wadę: przy wysokim T i wysokim taktowaniu, skrzyżowane bramki NAND tworzą oscylator pierścieniowy. Nazywa się to czasem problemem „wyścigu dookoła”. Wyjście nigdy się nie ustabilizuje, dopóki zegar nie zostanie obniżony.

Ten obwód ilustruje, jak nie zrobić flopa z zegarem. W przeciwnym razie jest to bezużyteczne. Rzeczywisty flop typu toggle używa pary zatrzasków w dwóch etapach, taktowanych na przeciwnych poziomach. Jest to czasami nazywane przerzutnikiem „wyzwalanym zboczem” lub „master-slave”.

Więcej tutaj: W jaki sposób Q i Q 'są określane po raz pierwszy w flip flopie JK?

A tu: zatrzask JK, możliwy błąd Ben Eatera?

4 MathKeepsMeBusy Jan 03 2021 at 08:11

Aby zaimplementować przerzutnik T wyzwalany zboczem, który nie opiera się na opóźnieniu bramki, wymaga, jak sądzę, co najmniej 6 bramek Nand. Poniższy obwód symuluje dobrze w CircuitLab.

zasymuluj ten obwód - schemat utworzony za pomocą CircuitLab

Edytować:

Ktoś skomentował, że ten obwód nie jest przerzutnikiem T, ponieważ obwód zależy tylko od zegara i nie ma oddzielnych wejść T i zegara.

Jednak gdy wyszukuję w Google „flip-flop T”, pierwszym trafieniem, które mi się pojawia, jest to :

Przerzutnik T lub „toggle” zmienia swoje wyjście na każdym zboczu zegara, dając sygnał wyjściowy o połowie częstotliwości sygnału na wejście T.

Przydaje się do konstruowania liczników binarnych, dzielników częstotliwości i ogólnych binarnych urządzeń dodających. Można go wykonać z przerzutnika JK, wiążąc oba jego wejścia wysokie.

i który zawiera grafikę:

Nie twierdzę, że jest to koniecznie autorytatywne obalenie twierdzenia, że ​​przerzutnik T musi mieć oddzielne wejścia T i zegarowe. (Z pewnością jest wiele błędnych informacji na temat przerzutników w interwebach. Na przykład obwód OPs pojawia się w każdym miejscu oznaczonym jako przerzutnik T, mimo że ma problemy opisane w innych odpowiedziach). , Przedstawiam powyższe informacje jako alternatywny punkt widzenia do komentarza.

Edit2: Komentator poprosił o diagram stanu dla obwodu. Podam te informacje, ale nie jako diagram.

Istnieją 4 stany stabilne i 12 stanów przejściowych między stanami stabilnymi podczas normalnej pracy.

Stany stabilne to:

Stan: Vin N1 N2 N3 N4 N5 N6

S1: 0 1 1 0 1 1 0

S2: 1 0 1 0 1 0 1

S3: 0 1 1 1 0 0 1

S4: 1 1 0 1 1 1 0

Przejścia przebiegają w następujący sposób

S1 w \$\uparrow\$N1 \$\downarrow\$N6 \$\uparrow\$N5 \$\downarrow\$ S2

S2 w \$\downarrow\$N1 \$\uparrow\$N4 \$\downarrow\$N3 \$\uparrow\$ S3

S3 w \$\uparrow\$N2 \$\downarrow\$N5 \$\uparrow\$N6 \$\downarrow\$N4 \$\uparrow\$ S4

S4 w \$\downarrow\$N2 \$\uparrow\$N3 \$\downarrow\$ S1

1 ShashankVM Jan 03 2021 at 12:30

Kolejną kwestią ty może (ale powinien ) napotkasz jest to : W jaki sposób Q i Q”ustalona po raz pierwszy w JK flip flop? .

Jest to szczególnie prawdziwe w przypadku flip-flopa w kształcie litery T.

W przypadku T Flip-Flop z tylko 2 wejściami, T i zegarem, nie ma możliwości, aby wyjście znalazło się w znanym stanie w symulacji, która obsługuje „X”.

Dobry symulator pokaże „X” na obu wyjściach, co wskazuje, że wartość nie jest znana.

Jak wspomniałem w mojej odpowiedzi , można użyć wejść synchronicznych lub asynchronicznych, aby ustawić wyjście w znany stan.

Dla porównania, zbudowałem T Flip-Flop z asynchronicznymi wejściami przy użyciu Master Slave JK Flip-Flop, który możesz symulować w przeglądarce:

zasymuluj ten obwód - Schemat utworzony przy użyciu MultisimLive