Podstawy układów cyfrowych – układy sekwencyjne, część 3
W poprzedniej części został zrealizowany generator liczb pseudolosowych bazujący na rejestrach przesuwających. W konfrontacji z „marzeniami” dotyczącymi jego funkcjonalności jest to rozwiązanie dalece niedoskonałe. Można to jednak ulepszyć przez dodanie odpowiedniego układu sterującego.
Koncepcja rozwiązania bazująca na rejestrach przesuwających 74xx194 zaprezentowana w poprzedniej części cyklu ma wszelkie cechy wymagane do stworzenia rozwiązania wręcz idealnego. W to wchodzi możliwość wpisu do zestawu rejestrów wartości startowej, gdzie na przełącznikach można ustawić sobie dowolną liczbę i dokonać wpisu do zestawu rejestrów. Ręczne „dzierganie” tych wszystkich ustawień i realizacja wpisu są trochę kłopotliwe. Pamiętając, że generowany ciąg pseudolosowy jest mocno uzależniony od pierwszego stanu zapisanego w rejestrach, fajnie by było, gdyby ta wartość również była losowa. Czy to znaczy, że potrzebujemy generatora losowego by zbudować generator losowy? I tak (gdyż uzyskany wynik jest losowy) i nie (nie będzie to powielenie istniejącego rozwiązania oraz uzyskuje się jedynie jedną liczbę losową – tyle jest potrzebne). Jest to kwestia interpretacji.
Generator losowy dla wartości początkowej
Literalnie rzecz biorąc, do wygenerowania początkowego stanu w rejestrach przesuwających jest potrzebny generator losowy. Naturalnym jest, że rodzi się pytanie: jak to zrobić? Tu naszą uwagę zapewne przykuje wykorzystanie pewnych zjawisk fizycznych, związanych przykładowo z temperaturą. Ja zaproponuję rozwiązanie najprostsze z możliwych: wykorzystujące pewne cechy ludzkie. Wyobraźmy sobie 16-bitowy licznik zliczający impulsy o częstotliwości przykładowo 1 MHz. Stan tego licznika zostanie wpisany do rejestrów przesuwających jednym krótkim impulsem w wyniku reakcji na naciśnięcie przez człowieka jakiegoś przycisku. Moment „ingerencji” człowieka jest w pełni losowy. Ograniczając się obecnie do operacji wpisu wartości początkowej do rejestrów przesuwających (oraz nie rozpatrując szczegółów rozwiązania układu reagującego na naciśnięcie przycisku), koncepcję pokazuje rysunek 1.
Przy proponowanej częstotliwości generatora (1 MHz), cały licznik „przekręci się” po około 0,06 s. Praktycznie nie istnieją szanse, by komukolwiek udało się „wygenerować” dokładnie tę samą liczbę naciskając przycisk Start i generując pojedynczy impuls wpisu danych z licznika 16-bitowego do rejestru przesuwającego.
Co byśmy jeszcze chcieli
Jest to dobry moment na to, by określić inne swoje zachcianki. Przykładowo moje wymagania co do funkcjonalności całego generatora były następujące:
1. Po włączeniu zasilania, generator „stoi” a na wyjściu na wszystkich bitach panuje zero logiczne.
2. Chcąc uruchomić generowanie liczb losowych należy nacisnąć przycisk startowy.
3. Chcąc zatrzymać generowanie należy nacisnąć przycisk zatrzymujący i przechodzimy do punku 1.
Z tych oczekiwanych funkcji całego układu wyłania się sekwencja pewnych czynności do wykonania. Należy ją „przetłumaczyć” na działania w świecie układów logicznych, co można zapisać następująco (by uniknąć zjawisk hazardowych należy zadbać, by włączenie zasilania było dla rejestru automatu równoznaczne z przejściem do punktu 1):
1. Wygenerować impuls zerujący dla rejestrów przesuwających oraz włączyć blokadę impulsów taktujących pracą rejestru przesuwającego i przejść do punktu 2.
2. Sprawdzić, czy został aktywowany sygnał startu, jeżeli tak, to przejść do punktu 3, w przeciwnym razie przejść do punktu 2 (pozostać w tym stanie).
3. Jeżeli wartość startowa binarnie nie odpowiada liczbie 0, to przejść do stanu 4, w przeciwnym wypadku pozostać w tym stanie.
4. Wygenerować impuls wpisu wartości startowej do rejestrów przesuwających i przejść do punktu 5.
5. Wyłączyć blokadę impulsów taktujących rejestr przesuwający i przejść do punktu 6.
6. Sprawdzić, czy został aktywowany sygnał stop, jeżeli tak, to przejść do punktu 1, w przeciwnym razie przejść do punktu 6 (czyli pozostać w tym stanie).
(…)
——– ciach! ——–
To jest tylko fragment artykułu, którego pełna wersja ukazała się w numerze grudniowym czasopisma Zrozumieć Elektronikę (ZE 12/2023). Pełna wersja czasopisma umieszczona jest pod tym linkiem. Natomiast niepełna, okrojona wersja, pozwalająca zapoznać się z zawartością numeru ZE 12/2023 znajduje się tutaj.
Andrzej Pawluczuk
apawluczuk@vp.pl
Uwaga! Osoby, które nie są (jeszcze) stałymi Patronami ZE, mogą nabyć PDF-y z pełną wersję tego numeru oraz wszystkich innych numerów czasopisma wydanych od stycznia 2023, „stawiając kawę” (Cappuccino = 10 złotych za jeden numer czasopisma w postaci pliku PDF).
W tym celu należy kliknąć link (https://buycoffee.to/piotr-gorecki), lub poniższy obrazek
Następnie wybrać:
– jeśli jeden numer ZE – CAPPUCINO (10 zł),
– jeśli kilka numerów ZE – WSPIERAM ZA. I tu wpisać kwotę zależną od liczby zamawianych numerów – wydań (N x 10zł),
Wpisać imię nazwisko.
Podać adres e-mail.
Koniecznie zaznaczyć: „Chcę dołączyć wiht=”215” />