… lub powrót do dalekiej przeszłości
CA80 or return to a deep past
Mikrokomputer CA80 (bo na swoje czasy na 100% był „mikro”), to pełnowartościowy system procesorowy pracujący pierwotnie pod kontrolą 8-mio bitowego procesora U880 (klon Z80A firmy Zilog), którego głównym przeznaczeniem była nauka programowania mikrokomputerów, ale także elektroniki cyfrowej w ogóle. Został on wymyślony na początku lat 90-tych przez polskiego inżyniera Stanisława Gardynika. Sprzedawany w zestawach do samodzielnego montażu i wspomagany obszerną literaturą autorstwa jego twórcy, która zgromadzona była w kilkunastu dosyć obszernych zeszytach o nazwie „MIK”. Zeszyty te opisywały zarówno podstawy elektroniki, jak i sposób montażu komputerka, jego uruchomienie oraz oprogramowanie. W miarę rozwoju przedsięwzięcia fani doczekali się kilku, może nawet kilkunastu programów użytkowych wraz z adekwatną adaptacją hardware’u.
Krótki opis wersji
Architektura systemu zawiera prócz mikroprocesora również pamięci RAM i ROM (przewidziano możliwość zastosowania wielu rodzajów pamięci równoległych skupionych w 4 bankach). Są tam także dwa układy portów równoległych 8255 (przeznaczone m.in. do obsługi podstawowych peryferiów, jak klawiatura i wyświetlacz) oraz timer programowalny Z80CTC. Mikrokomputer obsługuje również pamięć masową w postaci magnetofonu kasetowego (obecnie raczej jest to ciekawostka, choć zapis i odczyt można zrealizować w formacie MP3).
Historycznie powstały dwie oryginalne wersje mikrokomputera i co za tym idzie i dwie wersje kompatybilnych płytek PCB. Druga z nich to wersja profesjonalna, posiada płytkę o druku dwustronnym oznaczoną jako MIK290 (rys.1.). Wersja ta przystosowana jest do pracy w zamkniętej obudowie pochodzącej od produkowanych wówczas kalkulatorów biurowych Elwro, co wraz z zewnętrznym zasilaczem stanowiło to dosyć zwartą i estetyczną konstrukcję.
Jeśli chodzi o tzw. interfejs komunikacji z użytkownikiem, w pierwszej wersji przewidziano klawiaturę o układzie kilkunastu klawiszy, były to cyfry w kodzie szesnastkowym od „0” do „F” oraz kilka podstawowych przycisków funkcyjnych. W drugiej natomiast wersji dołożono kolejne przyciski funkcyjne („F1” do „F4”), tak aby layout zgadzał się z używanym we wspomnianych już kalkulatorach Elwro.
Mikrokomputer w wersji defaultowej posiada wyświetlacz lampowy o 8-miu polach 7-mio segmentowych (tzw. ósemki) z segmentem punktu dziesiętnego (DP).
Ponieważ coraz bardziej atrakcyjne w tamtym czasie zaczęły być wyświetlacze LEDowe, począwszy od wersji drugiej PCB (MIK290) można było podłączyć do systemu LEDowe zamienniki lamp aż dwóch wersjach: ze wspólną anodą oraz wspólną katodą. Niestety one również mogły mieć jedynie 8 pól, każde po 7 segmentów, tak samo jak ich lampowi protoplaści.
Ten ficzer wymagał jeszcze dołożenia jednej z płytek MIK295 lub MIK296, w zależności od wersji posiadanego wyświetlacza: ze wspólną katodą lub wspólną anodą.
Przystępujemy do działania.
Na znanym portalu aukcyjnym można bez przeszkód w chwili obecnej nabyć zestaw układów scalonych oraz płytkę PCB w wersji MIK290. Wśród układów znajduje się zaprogramowana już pamięć EPROM z rozszerzoną wersją oprogramowania dla komputerka oraz „wypasiona” pamięć statyczna RAM 32kB i naturalnie wszystkie pozostałe układy scalone.
Opisy zawarte w książeczkach MIK ściągamy przy wydatnej pomocy wujka Google np. z Elektrody lub jednej z kilku dedykowanych dla CA80 stron www. Tam też znajduje się jeszcze wiele ciekawych materiałów, mogących być przydatnymi podczas prac montażowo-rozruchowych.
Zeszyty MIK.
W czasie kiedy trwa dostawa zamówionej płytki oraz części mikrokomputera i po wykonaniu dogłębnego researchingu w temacie oraz ściągnięciu rozlicznych materiałów, jest czas na „przestudiowanie” oryginalnej dokumentacji w postaci legendarnych już zeszytów MIK.
Tutaj byłoby wszystko oczywiste, gdyby nie fakt, że mając już jakieś podstawy (a nawet „trochę” więcej niż podstawy) w zakresie wiedzy z dziedziny elektroniki cyfrowej i ogólnej wiedzy o funkcjonowaniu systemów mikroprocesorowych, także opartych na procesorach sprzed 30 z hakiem lat, nie ma najmniejszego sensu zagłębiać się w 8 początkowych zeszytów, gdyż po prostu niewiele jest tam ciekawostek i jakiejś nowej wiedzy. Na uwagę jednak zasługuje zeszyt MIK-09, który jest „core of the cores” wiedzy niezbędnej do poskładania komputerowego ustrojstwa na bazie płyty MIK290.
Niestety trzeba przyznać panu autorowi, że większego chaosu w podawaniu informacji technicznych chyba nie ma nigdzie. Wiedza bardzo podstawowa miesza się w Zeszytach z opisami korzystania z oprogramowania (a my nie mamy jeszcze nawet wstępnie poskładanej płytki), do tego wiele odnośników do wcześniejszych Zeszytów oraz garść powtrącanych przypadkowo zupełnie nieistotnych, z punktu widzenia montażu systemu, informacji.
Jeśli przebrniemy już przez te wszystkie meandry i dotrwamy do właściwego opisu montażu PCB, dodatkowym utrudnieniem jest zawarcie wszelkich rysunków i tabel a przede wszystkim schematów ideowych na końcu zeszytu przy czym opis, do których się one odnoszą jest porozrzucany dosyć dowolnie po całym tomie. Utrudnienie to jest tym większe, jeśli korzysta się z wersji Zeszytu w formacie PDF a nie tradycyjnego wydruku papierowego.
Ważna rada:
Wydrukować przeto należy co ważniejsze schematy i jeszcze ważniejsze tabele i pasujące do nich opisy, to znacznie ułatwia pracę i minimalizuje powstanie kardynalnych błędów, których i ja się nie ustrzegłem.
Rusza „od strzału” ?
W MIK-09, jak i w rozlicznych materiałach reklamowych z epoki, czytamy dosyć wyeksponowane stwierdzenie: „W większości przypadków, po zmontowaniu układów na płytce, urządzenie zgłasza się poprawnie komunikatem 'CA80′ „. Jest to znamienne twierdzenie i cokolwiek wątpliwa jest jego prawdziwość, szczególnie w zestawieniu z pomocami naukowymi jakie serwuje nam dokumentacja.
Tak czy siak należy się wielki szacunek tym, zapewne niezbyt licznym zapaleńcom, którym udało się od „pierwszej kopy” odpalić to ustrojstwo.
Trzeba również mimo wszystko oddać hołd autorowi inżynierowi Gardynikowi, gdyż w tamtych zamierzchłych czasach był on pionierem w dziedzinie kitów do samodzielnego montażu i generalnie, w dziedzinie edukacji cyfrowej młodych polskich chłonnych wiedzy głów. Do tego, pewnie cykl wydawniczy zeszytów MIK wymuszał podówczas ich zawartość a trzeba wiedzieć, że powstawały one na przestrzeni kilku lat i „rozwijały” się niejako razem z doświadczeniami ich autora i wraz z tworzeniem kolejnych wersji hardware’u i softu.
Przed przystąpieniem do montażu skompletowanych starannie elementów należy zdecydować, która wersja i jakie ficzery będzie miał nasz systemik. Ja tego niestety nie zrobiłem, wypuszczając się na szeroko pojęty żywioł (wszak zielony przecież całkiem nie jestem a zaprawionym w bojach i owszem), co jednak skończyło się, tak jak się skończyło, czyli śpiesznym wylutowywaniem niepotrzebnie zamontowanych elementów oraz podmianą układów na inne (na szczęście były w podstawkach).
Montaż
Składany przeze mnie system miał zaistnieć pierwotnie w wersji podstawowej, tzn. posiadać miał zakupioną pamięć EPROM i RAM, klawiaturę, wyświetlacz LED oraz zasilanie zewnętrzne (tylko +5V).
Ochoczo zabrałem się więc do lutowania podstawek, a później całej masy drobnych elementów biernych i czynnych na płycie.
Zdziwieniem moim był prawie brak kondensatorów elektrolitycznych odsprzęgających zasilanie i dosyć duża dowolność w rozmieszczaniu kondensatorów blokujących 100nF. Zaskakująca, jak na dzisiejsze czasy, jest również ilość elementów biernych w ogóle, ale w sumie da się przeżyć, zwłaszcza mając dostęp do obszernego magazynu tychże.
Płytka w fazie początkowej montażu jest pokazana poniżej (rys.3).
Wyświetlacz LED
Jak już wspomniałem wyżej, mój system CA80 posiada wyświetlacz LED (ze wspólną katodą). Zeszyt MIK09 zaleca w przypadku takiego wyświetlacza zaopatrzenie się w osobną płytkę MIK295, która obecnie nie jest w zasadzie do zdobycia. Nic to, wyświetlacz został zmontowany na płytce uniwersalnej i skrosowany do listwy ZW płyty głównej (MIK290). Plusem w tym przypadku była możliwość użycia czteropolowych wyświetlaczy LED, co zaoszczędziło trochę żmudnego krosowania. W moim wykonaniu użyłem dwóch wyświetlaczy o wspólnej katodzie, typu TDCG1060M produkcji znanej firmy VISHAY.
Należy zauważyć, że współczesne wyświetlacze LED podczas normalnej pracy pobierają raczej mniejszy prąd niż ten, który konsumowałyby oryginały sprzed 30 lat. Dlatego przy doborze wartości rezystorów Rc i Rb należy zastosować raczej górne z sugerowanych wartości. U mnie były to Rc=120 Ohm, Rb=4,7kOhm.
Ważne:
Modyfikacje płytki MIK290 związane z implementacją wyświetlania LED należy wykonać tak, jak to sugeruje MIK09 z tym, że w podstawki układów U23, U24, a także i U25, należy włożyć układy buforów prostych (bez negacji) typu SN74LS07 (lub 74LS17 albo 7407 lub 7417). Taki myk odciąży prądowo i zabezpieczy przed ewentualną pomyłką i zwarciem port równoległy 8255.
W podstawkę U20 wkładamy 74145, w miejsce R39 można zastosować dowolną diodę prostowniczą najlepiej na 2A. Na MIK290 nie lutujemy też rezystorów R40 do R47 oraz R50 do R57, o czym to przeczytałem dopiero kiedy płytka MIK290 była już przeze mnie w nie wyposażona.
Po zmontowaniu należy wyświetlacz sprawdzić pobudzając jego segmenty poprzez podanie odpowiednich kombinacji logicznych na wyjścia portu U7 (Uwaga: na ten czas układ U7 8255 należy usunąć z podstawki).
Jeśli w poprawnie działającym systemie na wyświetlaczu zamiast napisu powitalnego „CA80” widzimy na większości jego pól pełne „ósemki”, warto sprawdzić czy podstawki U20, U23, U24 oraz U25 obsadzone są prawidłowymi dla danego typu wyświetlacza układami.
Zmontowany i działający poprawnie wyświetlacz pokazano na rys.5.
Pamięci
Z pamięciami jest niestety ogrom zamieszania. Jest tak z powodu możliwości zastosowania mnogości ich rodzajów o zróżnicowanej wielkości. W zależności od wielkości zastosowanej pamięci należy odpowiednio skrosować punkty oznaczone jako A,B,C,D,E,F oraz czasami G,H,I, ważna jest również zworka J4. Prawidłowe krosy oraz ustawienie J4 opisuje wyczerpująco, acz niezwykle pokrętnie MIK09 w tabeli na str.53 i na schemacie str.56.
Przed przystąpieniem do uruchamiania systemu należy rozpisać sobie jakie pamięci i w które podstawki zostaną zainstalowane i jakich wymaga to modyfikacji na płycie. Ułatwia to wydatnie ogarnięcie pamięciowego chaosu i ustrzeżenia się przed kardynalnymi błędami.
Uwaga:
Jeśli z dokumentacji w MIK09 wynika, że należy wykonać jakiś kros, na przykład A-D i B-E (jak to ma miejsce podczas obsadzenia podstawki U12 pamięcią 32kB RAM) należy zawsze pamiętać, czy nie koliduje to z krosem defaultowym wykonanym już na PCB. W podanym przypadku należy przeciąć ścieżki tworzące połączenie defaultowe, w tym przypadku pomiędzy punktami A-F oraz B-C. W przeciwnym wypadku dojdzie do zwarcia na szynie adresowej, a to w niesprzyjających okolicznościach może zakończyć się nawet uszkodzeniem cennego procesora.
Z dokumentacji MIK09 nie wynika też wprost, że gdy np. obsadzamy podstawkę U9 pamięcią EPROM 27256 należy jej nogę 27 odizolować od napięcia zasilania +5V i podłączyć do masy. Nie przewidziano najprawdopodobniej zastosowania pamięci o takiej wielkości, jako pamięć ROM.
Ważne:
Kluczem do sukcesu jest aby w podstawce U9 znajdowała się zawsze pamięć ROM z procedurą startową systemu, ponieważ procesor zaczyna wykonywanie programu zawsze od adresu 0x0000, zaś w podstawce oznaczonej jako U12 musi znajdować się pamięć RAM.
Klawiatura
Oryginalna klawiatura od kalkulatora Elwro jest obecnie coraz mniej dostępna. Postanowiłem więc wykonać własną klawiaturę z popularnych przycisków monostabilnych lutowanych wprost do uniwersalnej płytki drukowanej, która następnie została skrosowana na wzór oryginalnej klawiatury według schematu ze str.57 zeszytu MIK09. Układ klawiatury pokazany jest dla utrudnienia na str.19 tegoż zeszytu.
Rysunek 6 (poniżej) przedstawia layout klawiatury w fazie tworzenia.
W praktyce tak wykonana klawiatura będzie, jak mniemam, raczej niewygodna w użytkowaniu dlatego na dłuższą metę zostanie zastąpiona interfejsem klawiatury komputerowej PS/2. Interfejs taki zostanie przeze mnie wykonany jako pierwsze rozszerzenie hardwre’u mikrokomputera. Przynajmniej takie są plany :).
Zasilanie
Jako, że budowa dedykowanego zasilacza z tzw. „prawdziwego zdarzenia” nie zawsze ma sens, mój system CA80 korzysta z zasilacza zewnętrznego +5V 2A. Mogłem tak zrobić, ponieważ nie potrzebuję napięcia +30V dla wyświetlacza lampowego a napięcie -5V potrzebne w interfejsie magnetofonowym, przewiduję wytworzyć za pomocą miniaturowej przetwornicy izolowanej 5VDC/5VDC 1W np. firmy Aimtec, która to przetwornica spokojnie mieści się na dodatkowym polu montażowym płytki MIK290.
Warto wspomnieć, że nie wykorzystując zasilacza dedykowanego dla CA80, warto wejście zasilania na złączu ZA zabezpieczyć diodą mocy (zabezpieczenie przed odwróceniem zasilania) oraz diodą zenera lub transilem (zabezpieczenie przed podaniem zbyt wysokiego napięcia zasilania). Zamiast transila można też pokusić się o zbudowanie prostego układu z tyrystorem i diodą zenera na jego bramce, którego zadaniem będzie zwarcie do masy zasilania +5V w przypadku przekroczenia granicznej wartości 5,2V.
Uwagi końcowe
Moim zdaniem warto jeszcze wyprowadzić z płytki MIK290 wygodny sygnał RESET, tj. kabelek zakończony przyciskiem monostabilnym. Warto podłączyć go pomiędzy rezystor R9 a masę (zadziwiające, że autor tak mało uwagi poświęca temu sygnałowi, ba nie jest on nawet doprowadzany np. do układów 8255).
Następną kwestią bardzo przydatną w toku uruchamiania systemu jest montaż kołków zasilania +5V i masy, dla łatwego podłączenia miernika, sondy logicznej, czy oscyloskopu lub analizatora stanów logicznych, jeśli ktoś posiada. Najlepiej wykonać to udogodnienie w pobliżu złącza ZA.
Ja dodatkowo podlutowałem również czerwoną diodę świecącą, która ma sygnalizować wizualnie obecność napięcia zasilania +5V.
Do kondensatorów blokujących znajdujących się na płycie MIK290 (zwłaszcza tych w pobliżu złącz ZA i ZW) dobrze jest równolegle dołożyć kondensatory elektrolityczne o pojemności przynajmniej kilkudziesięciu mikrofaradów i napięciu pracy minimum 6V. Obserwacje oscyloskopem szyny zasilania pokazują bowiem dosyć wysoki poziom zakłóceń wnoszonych przez poszczególne komponenty systemu.
W mojej konstrukcji zastosowałem kwarc 16MHz, co w konsekwencji dało zegar procesora CLK=4MHz a przerwanie NMI wzbudzane jest z częstotliwością 500Hz. Jest to defaultowe rozwiązanie opisane na samej górze str.54 zeszytu MIK09. Rozwiązanie to wymaga zastosowania w miejsce U5 i U6 układów typu 4518 (w moim przypadku układy te nie wchodziły w skład zakupionego zestawu części dla CA80 i zostały zakupione osobno). Musze przyznać, że jak dotąd nie wykonałem strojenia układu zegarowego, zostawiam to w sumie na potem.
Wszystkim śmiałkom, którzy zdecydują się na budowę tego „zabytkowego” mikrokomputerka życzę sukcesu i wiele satysfakcji.
Gdyby ktoś chciał się podzielić ze mną swoimi uwagami, zadać pytanie dotyczące uruchamiania tego systemu lub po prostu pochwalić się swoimi sukcesami na tym polu, bardzo proszę o kontakt:
elserw@elserw.com lub FB: Elektronika Serwis