Skip to content

d-latch

Opis

Bloczek d-latch działa jak przełącznik bistabilny sterowany zdarzeniem wejściowym. Każde zwykłe zdarzenie spełniające warunek z parametru input_edge przełącza stan wyjścia pomiędzy true i false.

Bloczek ma jedno wejście główne i jedno wyjście. Nie korzysta z wejść oznaczanych bloczkiem tag.

Oprócz zwykłego przełączania bloczek obsługuje także komendy wysyłane z bloczka command:

  • set: ustawia stan wyjścia na true
  • reset: ustawia stan wyjścia na false

Parametry konfiguracyjne

Nazwa parametru Wartość
Zbocze wyzwalające (input_edge) Parametr obowiązkowy określający, jakie zdarzenie na wejściu ma przełączać stan bloczka. Obsługiwane są wartości: rising, falling, both, true, false, null, none.
Przywróć stan po zaniku zasilania (persistent_state) Parametr opcjonalny o wartości logicznej true albo false. Gdy ustawione jest true, bloczek po ponownym uruchomieniu próbuje przywrócić ostatni utrwalony stan wyjścia. Zapis trwały nie następuje od razu, tylko około 10 minut po ostatniej zmianie. Jeśli restart lub zanik zasilania nastąpi wcześniej, może zostać przywrócony wcześniejszy stan. Gdy ustawione jest false, stan nie jest przywracany po restarcie.

Znaczenie parametru input_edge:

  • rising: przełączenie po zmianie interpretowanej jako false -> true
  • falling: przełączenie po zmianie interpretowanej jako true -> false
  • both: przełączenie przy każdej zmianie stanu logicznego
  • true: przełączenie po każdym zdarzeniu wejściowym, którego nowa wartość daje się zinterpretować jako logiczne true
  • false: przełączenie po każdym zdarzeniu wejściowym, którego nowa wartość daje się zinterpretować jako logiczne false
  • null: przełączenie tylko po odebraniu wartości null
  • none: wyłączenie reakcji na zwykłe zdarzenia wejściowe

Obsługa wejścia

Bloczek wymaga co najmniej jednego połączenia wejściowego. Jeśli nie ma żadnego połączenia, przechodzi w stan rozłączenia i nie reaguje na zdarzenia.

Szczegółowe zasady działania:

  • komenda set z bloczka command ustawia stan wyjścia na true
  • komenda reset z bloczka command ustawia stan wyjścia na false
  • zwykłe zdarzenie wejściowe spełniające warunek z input_edge przełącza stan bloczka na przeciwny niż aktualny
  • dla wartości rising, falling, both, true i false wejście musi dać się zinterpretować logicznie; pozostałe wartości są ignorowane
  • dla wartości null bloczek reaguje tylko wtedy, gdy nowa wartość wejściowa jest null
  • dla wartości none wszystkie zwykłe zdarzenia wejściowe są ignorowane, ale komendy set i reset nadal działają

Przykłady wartości, które mogą zostać zinterpretowane logicznie, to między innymi wartości boolowskie oraz liczby 0 i różne od 0.

Wyjścia bloczka

Bloczek posiada jedno wyjście.

Na wyjściu pojawia się aktualny stan pamięci bloczka jako wartość logiczna:

  • true po ustawieniu komendą set
  • false po ustawieniu komendą reset
  • wartość przeciwna do poprzedniej po każdym poprawnym zdarzeniu przełączającym

Jeśli włączono persistent_state i wcześniej udało się utrwalić stan bloczka, to po uruchomieniu projektu bloczek odtworzy ten stan i wyśle go ponownie na wyjście.

Opis statusu bloczka

Opis widoczny pod bloczkiem pokazuje jego bieżący stan albo problem:

  • true gdy aktualny stan bloczka jest włączony
  • false gdy aktualny stan bloczka jest wyłączony
  • Input disconnected. gdy bloczek nie ma żadnego połączenia wejściowego
  • Invalid input_edge configuration. gdy parametr input_edge jest niepoprawny albo nie został podany

Błędy widoczne dla użytkownika

Bloczek może pokazywać następujące komunikaty błędów:

Kod błędu Opis błędu
Invalid input_edge configuration. Parametr input_edge jest niepoprawny albo nie został podany.
Input disconnected. Do wejścia bloczka nie podłączono żadnego innego bloczka.

Przykłady działania

  • Jeśli input_edge = rising, to pierwsza zmiana wejścia z false na true przełączy wyjście na true, a kolejne zbocze narastające przełączy je z powrotem na false.
  • Jeśli input_edge = true, to każda nowa wartość wejściowa interpretowana jako true przełączy stan bloczka, nawet jeśli poprzednia wartość także była interpretowana jako true.
  • Jeśli bloczek command wyśle komendę set, wyjście zostanie ustawione na true niezależnie od parametru input_edge.
  • Jeśli input_edge = none, zwykłe zdarzenia wejściowe nie zmienią stanu bloczka, ale komenda reset nadal ustawi wyjście na false.