Ośmiobitowy monitor szyny danych, część 1
W pracowni hobbysty zainteresowanego elektroniką muszą się znaleźć odpowiednie przyrządy pomiarowe oraz diagnostyczne. Trudno sobie wyobrazić pracę, przykładowo bez multimetru, gdyż to obecnie standardowe wyposażenie. Oprócz fabrycznych przyrządów można konstruować własne.
Pokłosiem kilku artykułów dotyczących różnych typów pamięci może być tytułowy monitor szyny danych. Niekoniecznie należy go kojarzyć jedynie z mikroprocesorami, choć tu byłby najbardziej przydatny. W ogólnym przypadku może on znaleźć zastosowanie w diagnostyce jakiegokolwiek urządzenia, gdzie istnieje potrzeba podglądu jednocześnie kilku stanów logicznych.
Potrzeba posiadania wskaźnika stanów
Każdy, kto uruchamiał trochę bardziej złożoną konstrukcję, bazującą na układach logicznych/cyfrowych (niekoniecznie zawierającą w sobie jakikolwiek mikrokontroler), na jakimś etapie potrzebuje wsparcia. Nie mam tu na myśli zaproszenia do siebie kolegi lub koleżanki w celu wspólnego rozwiązywania napotkanych problemów. Za wsparcie w tym momencie uważam odpowiednie wyposażenie warsztatowe w przydatne przyrządy, które w jakimś stopniu pozwolą postawić diagnozę, dlaczego to jeszcze nie działa (w sytuacji, gdy budujemy nowe) lub dlaczego to przestało działać (w sytuacji, gdy dokonywana jest naprawa istniejącego). Każdy hobbysta ma do swej dyspozycji elementarne przyrządy, jak choćby woltomierz. To bardzo uniwersalny przyrząd, jednak w przypadku układów cyfrowych jego możliwości czasami są daleko niewystarczające. Jako przykład niech posłuży mikrokontroler, który zapisuje do jakiegoś portu dane. Może to być również klasyczny układ cyfrowy, oparty na rejestrach, licznikach i bramkach. Pracując nad urządzeniem często musimy odpowiedzieć na proste pytanie: co znajduje się w rejestrze czy porcie? Pierwsza nasuwająca się myśl, to zmierzyć woltomierzem. W końcu określone stany logiczne są reprezentowane odpowiednimi wartościami napięcia. Jednak rozpatrując informację kilkubitową, pomiar stanu wszystkich bitów zajmuje czas. Gdy założymy, że stan rejestru zmienia się co jedną sekundę, taki pomiar staje się niewykonalny (przynajmniej mi nie udało się zmierzyć napięć na wyjściu ośmiobitowego rejestru, mając do dyspozycji jedną sekundę). Kolejna sugestia, jaka może się nasunąć, to zrobić jakiś wskaźnik wykorzystujący diody LED. To już jakiś postęp w stosunku do użycia woltomierza. Użycie takiego wskaźnika daje jedynie informację w kodzie binarnym, czyli można dostrzec jedynie ciąg zer i jedynek. Wiadomo, że ciąg bitów może reprezentować liczbę i pojawi się pytanie: jakie to ma znaczenie, ile to jest dziesiętnie lub w kodzie U2 (kod U2 to liczby ze znakiem – ujemne/dodatnie). W takiej sytuacji, już niezbędne są odpowiednie przeliczenia i użycie kalkulatora (a czas ucieka). Aby sprostać tym wszystkim wymaganiom, zaproponuję budowę prostego urządzenia diagnostycznego, które „wczyta” kilkubitową liczbę binarną, „dokona konwersji” do odpowiedniego formatu i zaprezentuje ją na wyświetlaczu w wymaganej formie. Napisałem „wczyta”, ale ono nie czyta, jak również „dokona konwersji”, chociaż nie realizuje żadnych operacji arytmetycznych. Jeżeli drogi Czytelniku spodziewasz się kolejnej konstrukcji bazującej na mikrokontrolerze, to mam dla Ciebie niespodziankę: w tym urządzeniu diagnostycznym nie ma żadnego mikrokontrolera. Można uznać, że tytułowy monitor zawiera w sobie odpowiedź na każde możliwe pytanie.
Podstawowym zadaniem realizowanym przez budowany przyrząd pomiarowy jest konwersja danych do postaci czytelnej i wyświetlenie jej na 8-cyfrowym, 7-segmentowym wyświetlaczu LED w zadanym formacie. Dostępne są cztery warianty formatu zapisu prezentowanych liczb:
• liczba w kodzie naturalnym binarnym, wyświetlona w notacji dwójkowej,
• liczba w kodzie naturalnym binarnym, wyświetlana w notacji liczby szesnastkowej,
• liczba w kodzie naturalnym binarnym, wyświetlona w notacji dziesiętnej,
• liczba w kodzie U2, wyświetlona w notacji dziesiętnej.
Koncepcja rozwiązania
Nie trudno jest się domyśleć, że zachodzi tu odpowiednia konwersja danych, dokonywane są operacje pozwalające na zamianę jednego kodu (danych wejściowych jako informacji kilkubitowej) na inny (konwersja do postaci znakowej, połączona z ewentualnym wydzieleniem cyfry setek, dziesiątek oraz jedności). Koncepcyjnie zagadnienie nie jest skomplikowane i możliwa jest jego realizacja na typowych bramkach logicznych i rejestrach, jednak wymaga to zastosowania dużej liczby funktorów logicznych (liczonej z pewnością w setkach lub tysiącach). Ta ogromna sieć bramek może zostać zastąpiona właśnie pamięcią stałą. Jej użycie (przykładowo EPROM) sprowadza zespół przetwarzający kod do jednego układu scalonego. Rozwiązanie jest proste, w pamięci stałej zawarte są wszystkie możliwe przypadki jak ma być wyświetlana informacja na wyświetlaczu. Pozostaje jedynie utworzyć układ, którego zadaniem jest odczyt danych z określonych komórek pamięci EPROM i wyświetlenie ich na 8-cyfrowym wyświetlaczu. W jego skład będzie wchodził interfejs wejściowy, generator informacji sterującej wyświetlaczem, konfigurator, który będzie określał tryb wyświetlanej informacji, sam wyświetlacz i rzecz jasna zasilacz, jak pokazuje rysunek 1.
Schemat układu wejściowego (styk monitora z diagnozowanym układem) przedstawia rysunek 2.
(…)
——– ciach! ——–
To jest tylko fragment artykułu, którego pełna wersja ukazała się w lutowym numerze czasopisma Zrozumieć Elektronikę (ZE 2/2026). Pełną wersję czasopisma znajdziesz pod tym linkiem. Natomiast niepełna, okrojona wersja, pozwalająca zapoznać się z zawartością numeru ZE 2/2026 znajduje się tutaj.
Andrzej Pawluczuk
apawluczuk@vp.pl
Uwaga! Wskazówki, jak nabyć pełne wersje dowolnych numerów ZE znajdują się na stronie:
https://piotr-gorecki.pl/n11.

