dino-85
płytka procesora
    Płyta procesora to główny element komputerka dino-85, jej schemat ideowy przedstawia rysunek poniżej.

Centralnym elementem jest oczywiście procesor Intel 8085 (U1) taktowany sygnałem zegarowym generowanym przez kwarc o częstotliwości 6.144MHz (Q1). Separację szyny danych i młodszej częsci szyny adresowej zapewnia ośmiobitowy rejestr latch typu 74LS573 (U2) sterowany doprowadzonym z procesora sygnałem ALE (Address Latch Enable). Mapą pamięci oraz przestrzenią I/O procesora zarządza dekoder adresowy (U5) zbudowany na programowalnym układzie GAL16V8. Dekoder nie jest jakoś szczególnie wyrafinowany - ot, dzieli przestrzeń adresową pamięci na pół i generuje sześć sygnałów wyboru dla portów I/O. Niemniej jednak zbudowanie tego z użyciem układów małej skali integracji to niepotrzebna komplikacja i tak już pokręconej płytki drukowanej i dlatego jest GAL. W dino-85 pracują dwa rodzaje pamięci: (E)EPROM o pojemności 8kB /27C64 lub 28C64/ (U3) z oprogramowaniem systemowym oraz statyczna pamięć RAM (U4) o pojemnoci 32kB (62256) na aplikacje i dane użytkowe. Zamiast zwykłej pamięci statycznej można włożyć w podstawkę pamięć typu NV-RAM (Non Volatile RAM, z bateryjką na plecach), to zapewni odporność wgranego oprogramowania na zaniki zasilania. Sprzętowa mapa pamięci komputerka dino-85 wygląda następująco:

 typ   zakres adresów   pojemność 
 ROM  0000h...1FFFh 
 2000h...3FFFh (niepełne dekodowanie!) 
 4000h...3FFFh
 6000h...7FFFh

 8kB 
 RAM   8000h...FFFFh   32kB 

Sprzętowa mapa przestrzeni I/O wygląda tak:

 selektor   adres bazowy   zakres adresów   pojemność 
 /CS1  00h   00h...0Fh 
 10h...1Fh (niepełne dekodowanie!) 
 16 portów wejściowych 
 16 portów wyjściowych 
 /CS2  20h   20h...2Fh 
 30h...3Fh (niepełne dekodowanie!) 
 16 portów wejściowych 
 16 portów wyjściowych 
 /CS3  40h   40h...4Fh 
 50h...5Fh (niepełne dekodowanie!) 
 16 portów wejściowych 
 16 portów wyjściowych 
 /CS4  60h   60h...6Fh 
 70h...7Fh (niepełne dekodowanie!) 
 16 portów wejściowych 
 16 portów wyjściowych 
 /CS5  80h   80h...8Fh 
 90h...9Fh (niepełne dekodowanie!) 
 16 portów wejściowych 
 16 portów wyjściowych 
 /CS6  A0h   A0h...AFh 
 B0h...BFh (niepełne dekodowanie!) 
 16 portów wejściowych 
 16 portów wyjściowych 

Dekoder adresowy generuje sygnały /CSx tylko na podstawie linii IO/M oraz trzech najstarszych bitów adresowych A15...A13. Sygnały /WR i /RD pomimo że fizycznie dostępne na wejściach dekodera nie są brane pod uwagę, stąd tak duża dowolność w gospodarowaniu przestrzenią I/O. Czy dany port ma być wejściem czy wyjściem - decydujemy podczas budowy modułu rozszerzającego (karty) odpowiednio projektując lokalny dla naszego modułu dekoder adresowy. Pewnego wyjaśnienia wymaga wykorzystanie linii A15...A13 w dekodowaniu I/O. Adres I/O jest przecież ośmiobitowy, skąd więc nagle starsze bity adresowe? Ano stąd, że podczas wykonywania rozkazów out port_addr oraz in port_addr procesor 8085 wystawia na starszej części szyny adresowej (A15...A8) dokładnie to samo co na młodszej (A7...A0) [*]. Więc z punktu widzenia dekodera adresowego nie ma znaczenia czy do wyliczeń weżmiemy przykładowo sygnał A14 czy A6. Wartość tego bitu w cyklu maszynonym IOW lub IOR będzie dla danego ośmiobitowego adresu taka sama, to taka sztuczka, ale jakże przydatna.
Druga sprawa to obecność zworek J1 i J2 w okolicach dekodera...No cóż, zostały mi wolne wejścia i troszkę szkoda było tak je na stałe zewrzeć do masy czy VCC. Postanowiłam więc wstawić tam zworki umożliwiające łatwe wymuszenie stanu H luub L na dwóch wejściach GAL-a. Teraz te sygnały (nazwane na cześć jumperków J1 i J2) nie są wykorzystywane, ale łatwo można sobie wyobrazić taki sprzetowo rekonfigurowalny dekoder, który zmieni mapę I/O zależnie od ustawień jumperków. Ot, bajer taki na przyszłość...

* - nie wszyscy to wiedzą, ale podobną przypadłość ma kultowy procesor Z80, który wykluł się z i8080/8085. Podczas wykonywania instrukcji out (port_addr),A lub in A,(port_addr) na starszych bitach szyny adresowej (A15...A8) pojawia się zawartość...akumulatora (rejestr A).
(rdo "Z80 Family CPU User Manual")

 pin   nazwa  funkcja  pin   nazwa  funkcja
 1  VCC  plus zasilania 5V  2  VCC  plus zasilania 5V
 3  GND  masa  4  GND  masa
 5  CLK_OUT  zegar z CPU, 3.072MHz  6  IO/M  wybór I/O lub pamięci
 7  RESET_OUT  wyjście sygnału zerowania  8  /RD  sygnał strobujący odczyt I/O lub pamięci
 9  SOD  Serial Out Data, wyjście szeregowe z CPU  10  /WR  sygnał strobujący zapis I/O lub pamięci
 11  SID  Serial In Data, wejcie szeregowe z CPU  12  RST5.5  maskowalne przerwanie sprzętowe RST5.5
 13  TRAP  niemaskowalne przerwanie sprzętowe  14  RST6.5  maskowalne przerwanie sprzętowe RST6.5
 15  RST7.5  maskowalne przerwanie sprzętowe RST7.5  16  D0  linia D0 szyny danych
 17  D1  linia D1 szyny danych  18  D2  linia D2 szyny danych
 19  D3  linia D3 szyny danych  20  D4  linia D4 szyny danych
 21  D5  linia D5 szyny danych  22  D6  linia D6 szyny danych
 23  D7  linia D7 szyny danych  24  A0  linia A0 szyny adresowej
 25  A1  linia A1 szyny adresowej  26  A2  linia A2 szyny adresowej
 27  A3  linia A3 szyny adresowej  28  /CS1  strob dostępu do I/O, adres xxh
 29  /CS2  strob dostępu do I/O, adres xxh  30  /CS3  strob dostępu do I/O, adres xxh
 31  /CS4  strob dostępu do I/O, adres xxh  32  /CS5  strob dostępu do I/O, adres xxh
 33  /CS6  strob dostępu do I/O, adres xxh  34  /RESET_IN  wejście zerujące CPU


Budowa komputerka

Opisany powyżej i w sumie dość spory układ został zrealizowany na jednostronnej płytce drukowanej. Małe wymiary modułu oznaczają, że mozajka ścieżek jest dość mocno upakowana (rysunek niżej), nie zmiania to faktu że wykonanie takiej płytki metodą termotransferu jest w amatorkich warunkach możliwe...


A oto zdjęcie gotowej pytki - wytrawiona mozajka ścieżek widziana pod światło.



Oczywiście, nie obyło się bez dodatkowych atrakcji w postaci wyskrzybywania igłą resztek miedzi oraz sztukowania dwóch bodajże ścieżek - fotografie niżej pokazują fragment mozajki z przykładowo zaznaczonymi miejscami wymagajcymi interwencji zaraz po wytrawieniu pytki.
(zwarcia) (przerwa)
Dla mnie osobiście najbardziej stresujące było zdejmowanie opuszkami palców resztek rozmiękającego papieru kredowego. Po prostu bałam się zadrasnąć paznokciem i tak cieniutkich ścieżek, konsekwencja tego - to widoczne powyżej minizwarcia (nie było ich dużo, ale jednak). Przerwa w ścieżce - to prawdopodobnie niedogrzane miejsce podczas wprasowywania toneru. Płytka o satysfakcjonującej mnie jakości powstała dopiero za trzecim podejściem, dwie pierwsze próby wypadły kiepsko, ale też pierwszy raz wykonywałam płytke o takim dużym upakowaniu ścieżek w dodatku pod presją czasu. No i jak to się mawia - do trzech razy sztuka...

Po wytrawieniu, zwracam szczególną uwagę na dokładne sprawdzenie płytki pod kątem minizwarć oraz przerw przed rozpoczęciem montażu. Ewentualna naprawa (szczególnie usunięcie zwarć) gdy pola lutownicze będą już pokryte cyną będzie bardzo trudna, a niezauważone błędy w druku zemszczą się okrutnie podczas uruchamiania czy nawet użytkowania komputerka. Sprawdzenia płytki dokonujemy testerem ciągłości obwodu (typowa funkcja współczesnych multimetrów) lub podręczynym zestawem typu płaska bateria + żarówka. Sprawdzamy ciągłość wszystkich linii danych, adresowych i sterujących pomiedzy poszczególnymi układami do których te sygnay są doprowadzone - pracowicie pin po pinie, nie ma zlituj. Następnie sprawdzamy czy pomiędzy pinami (szczególnie tam gdzie przeplatają się ścieżki magistral adresowych i danych) nie ma zwarć.
Ze szczególną uwagą sprawdzamy czy jakaś ścieżka nie zwarła się z linią prowadzącą napięcie zasilania. Zwarcie jakiejkolwiek linii sygnałowej do VCC może być kończące dla pracujących w systemie kostek. Zwarcie sygnałów do masy spowoduje co najwyżej błędne działanie i zbyt duży pobór prądu - ale w takiej sytuacji o uruchomieniu jakiejkolwiek aplikacji na dino należy zapomnieć...


Montaż i uruchomienie

Montaż komputerka nie jest jakąś specjalną filozofią, najpierw zakładamy krosy po stronie elementów, następnie lutujemy resztę elementów biernych, potem podstawki i złącza, na koniec diodę impulsową D2 i LED-a D1. Następne rysunki pokazuja miejsca, gdzie należy założyć krosy oraz rozmieszczenie elementów na płytce.





Dla odmiany, uruchomienie komputerka może już stać się głębszą filozofią, szczególnie jeżeli na płytce pozostało zwarcie lub któraś ze ścieżek jest przerwana...Dlatego też uruchamiamy komputerek etapami, na spokojnie ale z głową pracującą na dość wysokich obrotach. Przyda się też jakiś dobry (wiarygodny) próbnik stanów logicznych (lub dostęp do oscyloskpu), multimetr wszystkiego nam nie pokaże. A postępujemy tak:

1. wszystkie układy scalone mają być wyjęte z podstawek;

2. omomierzem sprawdzamy czy nie ma zwarcia pomiedzy GND i VCC (złącze Z1);

3. podłączamy zasilanie pytki i sprawdzamy woltomierzem, czy napięcie +5V jest obecne na wszytkich pinach zasilających układy scalone, dioda LED - D1 ma się optymistycznie świecić;

4. naciskamy przycisk "reset" (SW1) - wyprowadzenie 36 układu U1 powinno przyjąć niski stan logiczny, zwolnienie przycisku spowoduje że w/w pin wróci do stanu H

5. zapinamy wszystkie zworki J1...J7;

6. do podstawki wkładamy mikroprocesor i włączamy zasilanie - układ scalony może być co najwyżej letni, dla wersji CMOS procesora ma być zupełnie zimny!

7. próbnikiem stanów logicznych sprawdzamy obecność sygnału zegarowego na wyprowadzeniu 37 układu U1 (CLK_OUT), obecność przebiegu świadczy i tym, że zewnętrzne elementy generatora zegarowego (C1,C2,Q1) są w porządku, na CLK_OUT ma być przebieg prostokątny o częstotliwości o połowę mniejszej niż ma kwarc Q1 - u mnie: 3.072MHz;

8. sprawdzamy stan logiczny na wyprowadzeniu 3 układu U1 (RESET_OUT) - ma być L, gdy naciśniemy przycisk "reset" końcówka ta wejdzie w stan H na czas naciśnięcia przycisku;

9. sprawdzmay obecność impulsów sterujących latchem adresowym czyli badamy co jest na wyprowadzniu 11 układu U2, obecność imulsów oznacza, że układ demultipleksujący dane i adresy z procesora pracuje poprawnie;

10. do podstawek wkładamy układy U4 (pamięć RAM), U5 (GAL) oraz U3 - E/EPROM z programem testowym.

11. po podłączeniu zasilania i zresetowania komputerka sprawdzamy obecność impulsów na liniach:

a) IO/M (pin 34 ukadu U1)
b) /RD (pin 32 ukadu U1)
c) /WR (pin 31 ukadu U1)
d) /ROM (pin 19 ukadu U5)
e) /RAM (pin 18 ukadu U5)
f) /CS1.../CS6 (piny 12...17 układu U5)

Program testowy jest napisanmy tak, aby "dotykać" wymienionych wyżej sygnałów poprzez generowanie cykli zapisu/odczytu pamięci oraz portów I/O. Obecność impulsów na wspomnianych wyjściach świadczy o tym, że komputerek dino-85 jest w miarę uruchomiony i raczej nie wywynie nam żadnego psikusa w dalszym użytkowaniu.

Opcjonalnie:

12. Jeżeli mamy chęć potestować dalej - budujemy układ jak opisałam w Programy testowe - to prosty port wyjściowy sterujący ośmioma diodami LED. Jeżeli wejście /CS_IN będziemy przyłączać kolejno do wyjść /CS1.../CS6 dekodera U5 to na diodkach będzie zapalać się coraz to inny wzorek.

A jeżeli coś dalej nie działa...

No cóż, etatową wróżką nie jestem, a przyczyn wadliwego działania systemu może być bardzo dużo. Obecność impulsów zegarowych na CLK_OUT, poprawne propagowanie syygnału zerującego (RESET_OUT) świadczy o tym, że procesor działa. Jeżeli tak nie jest - proszę oscyloskopem sprawdzić co dzieje się na pinach 1,2 U1 czyli X1, X2. Czasem zdarza się, że mamy wadliwy kwarc lub jest problem z doborem pojemności C1,C2. Wartość 22pF jest w miarę ok, ale można też spróbować nieco innych wartości gdy oscylator uparcie nie chce wystartować. Inna sprawa to sama częstotliwość kwarca. Mój procesor to wersja "A", teoretycznie dostosowana do max. 5MHz, ale przy kwarcu 6.144MHz jeszcze pracuje stabilnie. Jeżeli mamy zwykły, klasyczny Intel 8085 to jest duże prawdopodobieństwo, że procesor nie daje rady z tak szybkim zegarem i należy zastosować inny kwarc, o mniejszej częstotliwości. A tak w ogóle, to dobrze mieć drugi, zapasowy procesor podobnie jak GAL-a czy kości pamięci. Szanse, że wstawimy felerny układ są małe - ale jednak są...
Sprawny i poprawnie zaprogramowany dekoder U5 powinien przy pomocy programu testowego generować wszystkie oczekiwane impulsy. Jeżeli obecne są tylko niektóre z nich - sprawdzamy jeszcze raz płytkę na okazję zwarć/przerw w ścieżkach, w ostateczności wymieniamy GAL-a. Parametry czasowe GAL-a są do pominięcia, można wstawić nawet powolną kostkę, łatwo natomiast nabrać się na "brak impulsów" na jego wyjściach. Sygnały /CS1.../CS6 to bardzo krótkie ujemne impulsy na tle wysokiego stałego stanu logicznego i nie każda sonda logiczna jest w stanie to wyłapać, jeżeli mamy wątpliwości - testujemy oscyloskopem.
Odnośnie kostek pamięci - jeżeli korzystamy z nowych, kupnych układów - problemu z ich parametrami czasowymi pradwopodobnie nie będzie. Współczesne kości są dość szybkie, a w dino-85 będzie pracowała każda pamięć o czasie dostępu poniżej 250ns. Jeżeli jednak mamy układy z odzysku, zupełnie staroświeckie - proszę upewnić się w ich notach katalogowych jaki jest czas dostpu (parametr Tacc /access time/). Kostki z Tacc w okolicach 300...350ns mają prawo nie działać w ogóle lub działać nieprzewidywalnie.

Na koniec - pinologia wykorzystanych w dino-85 kostek. Dobrze mieć taki rysunek pod ręką, szczególnie gdy tropimy jakiś szczególny sygnał w gąszczu innych...



Odmaczanie papieru kredowego. Widać, że troszkę już zeszło...

Płytka zaraz przed wrzuceniem do wytrawiacza.

W trakcie trawienia...

Miedź zaczyna pomału znikać.

Zaraz po wytrawieniu, toner już starty pumeksem, płytka wymyta.

Malowanie roztworem kalafonii w spirytusie (tzw. nalewka babuni, na grypę też pomaga).

No, ja bym osobiście nie uwierzyła, że to zostało zrobione termotransferem...

Moduł polutowany, ale jeszcze bez kostek w podstawkach.

Płytka od spodu.

Staroświecka dioda świecąca CQYP40 (CEMI), wprawdzie dodaje klimatu ale jakoś ledwo świeci.

Hmm, no to jest płyta z elektroniką, widać przecież. Chyba resztki jakiegoś starego sterownika przemysłowego, czyli Wolumen of course. I ja nie lubię określenia - złomiara.

Na płycie - skarby. Tu widać oryginalny Intel 8085A oraz układ combo typu 8155 (rzadkość niebywała) w wydaniu Toshiby. Tych 8155 jest dwie sztuki...

Poza tym inne cuda: UART typu 8251A, stare pamięci statyczne RAM typu 2016 (2kB!).

Wydłubany z płyty procesor. Najpierw odsysacz, potem metodami siłowymi. Zacięłam się na tego cholernego Intela nieziemsko!

Nieco z bliska.

Widać, jak się z nim siłowałam...

Ot i Intel 8085A już całkowicie wyjęty ze złomu. Na nóżkach jeszcze resztki ścieżek, ale to do oczyszczenia lutownicą. Mój co on! Mój!

Niestety, widać ślady przemocy na spodzie obudowy. No trudno - wojna to wojna i ofiary muszą być. A panom z Intela chwała za tak odporny mechanicznie układ.

O, a tu widok od przodu - wymyty spirytusem, odnóża wyprostowane płaskimi szczypcami. Po prostu nówka sztuka (prawie) jak z fabryki.

Oryginalny Intel 8085A z lat '80 i jego nieco bardziej współczesna wersja firmy OKI. Nowoczesnym podróbkom (w technologii CMOS) mówimy stanowczo - nie.

Nocna fotka - testowy programik i jego świecące LED-y, emulator też świeci na niebiesko, no po prostu czarodziejsko.

Koniec galerii - czyli gotowy dino-85 z oryginalnym Intelem.
I o to dokadnie chodziło.
Natasza Biecek 2004-2017/~, e-mail