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 truereset: 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 jakofalse -> truefalling: przełączenie po zmianie interpretowanej jakotrue -> falseboth: przełączenie przy każdej zmianie stanu logicznegotrue: przełączenie po każdym zdarzeniu wejściowym, którego nowa wartość daje się zinterpretować jako logiczne truefalse: przełączenie po każdym zdarzeniu wejściowym, którego nowa wartość daje się zinterpretować jako logiczne falsenull: przełączenie tylko po odebraniu wartościnullnone: 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
setz bloczkacommandustawia stan wyjścia na true - komenda
resetz bloczkacommandustawia stan wyjścia na false - zwykłe zdarzenie wejściowe spełniające warunek z
input_edgeprzełącza stan bloczka na przeciwny niż aktualny - dla wartości
rising,falling,both,trueifalsewejście musi dać się zinterpretować logicznie; pozostałe wartości są ignorowane - dla wartości
nullbloczek reaguje tylko wtedy, gdy nowa wartość wejściowa jestnull - dla wartości
nonewszystkie zwykłe zdarzenia wejściowe są ignorowane, ale komendysetiresetnadal 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:
truegdy aktualny stan bloczka jest włączonyfalsegdy aktualny stan bloczka jest wyłączonyInput disconnected.gdy bloczek nie ma żadnego połączenia wejściowegoInvalid input_edge configuration.gdy parametrinput_edgejest 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
commandwyśle komendęset, wyjście zostanie ustawione na true niezależnie od parametruinput_edge. - Jeśli
input_edge = none, zwykłe zdarzenia wejściowe nie zmienią stanu bloczka, ale komendaresetnadal ustawi wyjście na false.