Zatrzaskiwanie wartości chwilowej
Wycięcie wartości chwilowej jest bardzo proste. Wystarczy zrobić układ, do którego
doprowadzony będzie sygnał wejściowy (np. wynik całki) oraz sygnał taktujący (np. sygnał
resetujący całkę).
Układ powinien działać w ten sposób, że gdy na wejście sygnału taktującego zostanie
doprowadzony impuls to pobierze sygnał wejściowy i poda go na swoje wyjście. Układ
będzie utrzymywał na swoim wyjściu ten sygnał do czasu nadejścia kolejnego impulsu
wyzwalającego. Wówczas pobierze nową wartość.
Opisany sposób działania jest typowy dla dobrze znanego z techniki cyfrowej
przerzutnika typu D – zatrzask. Być może w DASY Lab jest gotowy bloczek ale ja wolałem
zrobić swój własny. Poniżej moja propozycja implementacji przerzutnika D.
Najpierw ogólna budowa układu. Układ musi mieć dwa wejścia – na sygnał
wejściowy oraz na sygnał taktujący – to już wiemy. Układ musi mieć jedno wyjście.
To elementy niezbędne. Ale układ musi też mieć możliwość pamiętania. Dlatego dodajemy
mi jeszcze jedno wejście. Na to wejście podamy sygnał z wyjścia układu przez opóźnienie.
Umożliwi to zbudowanie pamięci.
Rys. 1 Widok układu
Następnie pora nadać układowi porządną funkcjonalność.
Zacznijmy od opóźnienia – jego celem jest podawać na jedno z wejść układu sygnał z jego
wyjścia. Mimo, że do tego celu używamy bloczka opóźniającego nie znaczy to wcale, że
zależy nam na opóźnieniu. Jest on konieczny by w DASY Lab zrobić sprzężenie zwrotne.
Opóźnienie ustawiamy na minimum – 1 sampl. Należy też umożliwić sprzężnie zwrotne.
motorniczy
Następnie należy tak oprogramować blok formuły (Zatrzask) aby, w momencie gdy
sygnał podawany na wejście taktujące (wejście nr 1) jest zerem, przepisywała na swoje
wyjście stan z wejścia nr 2, wejście nr 0 (sygnał wejściowy) nie ma wtedy żadnego znaczenia.
Wówczas mamy swoistą pamięć.
Wpisujemy więc: NOT(IN(1) >0)*IN(2)
Formuła NOT(IN(1) >0) będzie nam zwracać jedynkę wtedy i tylko wtedy gdy na wejściu
zegarowym ( taktującym) jest stan niski – zero. Wówczas ta jedynka pomnożona przez
wejście nr 2 da nam jego stan, który zostanie przepisany na wyjście układu. Otrzymaliśmy już układ, który przy niskim stanie wejścia zegarowego pamięta wartość wyjściową.
Co się stanie gdy do wejścia zegarowego doprowadzimy stan wysoki. Wówczas
wyrażenie NOT(IN(1) >0) zwróci zero. To zero przemnożone przez wejście nr 2 da w
rezultacie zero.
Układ więc zostanie wyzerowany w momencie podania impulsu na wejście taktujące.
Należy teraz opracować część, która będzie odpowiedzialna za pobieranie sygnału
wejściowego jeśli wejście zegarowe jest w stanie wysokim.
Formuła (IN(0) )*(IN(1) >0) będzie zwracała wartość wejścia nr 0 (wejścia
sygnałowego) wtedy i tylko wtedy gdy wejście zegarowe będzie w stanie wysokim.
Mamy zatem dwie formuły:
(1)
NOT(IN(1) >0)*IN(2)
(2)
IN(0) )*(IN(1) >0)
Pierwsza zwraca wartość różną od zera tylko wtedy gdy wejście zegarowe widzi stan niski.
Druga z nich zwraca wartość różną od zera tylko wtedy gdy na wejście zegarowe wchodzi
stan wysoki.
Aby uzyskać żądaną logikę działania układu obie te formuły wystarczy zsumować.
Wpisujemy więc: NOT(IN(1) >0)*IN(2) + (IN(0) )*(IN(1) >0)
Pierwsza część formuły odpowiada za pamięć – przepisywanie wyjścia na wejście układu gdy
wejście zegarowe jest w stanie niskim.
Druga z nich odpowiada za pobieranie sygnału wejściowego w chwili podania impulsu na
wejście zegarowe.
motorniczy
Otrzymaliśmy już przerzutnik typu D – tzw. zatrzask.
Ma on pewną wadę. Mianowicie, jeśli chcemy zatrzaskiwać wartość całki tuż przed jej
zresetowaniem to gdybyśmy przerzutnik wyzwalali tym samym sygnałem, który zeruje całkę
układ zawsze zatrzaskiwał by wartość wyzerowanej całki.
Nas interesuje wartość całki tuż przed jej wyzerowaniem. Wystarczy jeśli sygnał wchodzący
na wejście przerzutnika zostanie nieznacznie opóźniony – np. o jeden sampl.
Ostatecznie otrzymujemy układ
motorniczy
Sprawdźmy działanie układu
Oczywiście widzimy, że gdy wejście zegarowe jest w stanie wysokim przerzutnik
przesyła na wyjście sygnał wejściowy.
Nie będzie to żadnym problemem gdy impulsy wyzwalające będą bardzo krótkie np. trwające
jeden sampl.
motorniczy