Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Komputer jednopłytkowy oparty na 8085

wojtasXD 27 Dec 2018 21:14 7005 31
Altium Designer Computer Controls
  • Komputer jednopłytkowy oparty na 8085

    Jednopłytkowy komputer oparty na mikroprocesorze 8085
    Założeniem było zaprojektowanie i zbudowanie prostego komputera na jakimś prostym procesorze w celu nauki assemblera.

    Konstrukcja oparta jest na wcześniej wspomnianym mikroprocesorze Intel 8085. Dlaczego akurat taki? Taki akurat miałem pod ręką, poza tym jest bardzo dobrze opisany na różnych forach/stronach/filmach na yt co tylko ułatwia projektowanie. Taktowany rezonatorem kwarcowym o częstotliwości 6.144 MHz. Układ RC przy procesorze służy resetowaniu go przy włączeniu układu do zasilania.

    Przestrzeń adresowa procesora została podzielona na dwa równe obszary po 32 kB, pierwszy początkowy dla pamięci stałej EPROM (adresy 0000h - 7FFFh), drugi zaś dla pamięci RAM (adresy 8000h - FFFFh). Dodatkową funkcjonalnością jest możliwość sterowania za pomocą zwory bankami pamięci EPROM (dotyczy to tylko pamięci o pojemności 64 kB). Z komputerem współpracują pamięci stałe o rozmiarach 64, 32 i 16 kB. Próbowałem także z układami 2764, aczkolwiek nie chciały działać.

    Za komunikację ze światem zewnętrznym odpowiadają układy 8251 oraz max. 232. 8251 pracuje w trybie asynchronicznym, 8 bitów danych oraz jeden bit stopu. Odbiór znaków oparty jest na przerwaniu nie maskowalnym. Prędkość przesyły danych do 19200 baud, uzyskiwana jest poprzez podzielenie sygnału zegarowego wychodzącego z procesora (8085 dzieli częstotliwość kwarcu przez 2) przez 10 przy pomocy układu 7490, a następnie 16 w samym układzie 8251 (poprzez ustawienie odpowiedniego bitów). 19200 to maksymalna prędkość, natomiast można ustawić na niższą 4800 (uruchamiając dzielnik przez 64 w układzie 8251). Komputer jest także wyposażony w złącze, na którym znajdują się wszystkie najważniejsze sygnały procesora, umożliwia to łatwą rozbudowę, poprzez dodawanie kolejnych płytek "na kanapkę".

    Układ wzbogaciłem dodatkowo o drugą płytkę zawierającą mikro kontroler ATmega8 odpowiadający za wyświetlanie wyników na ekranie telewizora poprzez złącze RCA oraz drugą obsługującą klawiaturę PS/2. Projekt mikro kontrolera generującego sygnał wideo nie jest mój, schemat oraz kod źródłowy zaczerpnąłem ze strony Link, natomiast obsługa klawiatury to lekko zmodyfikowany kod ze strony Link, od siebie dodałem przystosowanie na atmegę8 oraz przesyłanie odebranych z klawiatury znaków przez uart.

    Komputer jednopłytkowy oparty na 8085 Komputer jednopłytkowy oparty na 8085

    Podczs uruchamiania projektu okazało się, że gdzieś jest błąd, po tygodniu wyszło, że jest to wina dekodera sygnałów sterujących zapisem i odczytem. Układ 74183 nie nadawał się, bo generowałem błędne syganały unicestwiając poprawną pracę całej płytki. W ramach poprawki wykonałem mała płytkę z układem 74157 w układzie znajdującym się w dokumentacji układu 8257. Po wstawieniu wszystko zadziałało.

    Komputer jednopłytkowy oparty na 8085

    Wszystkie płytki wykonane na laminacie jednostronnym metodą termo transferu. Płytka główna w jednym miejscu straciła toner podczas przenoszenia, poprawiona została mazakiem.

    Komputer jednopłytkowy oparty na 8085 Komputer jednopłytkowy oparty na 8085

    Podsumowując:
    -procesor 8085, taktowany zegarem 3,072 MHz
    -32 kB pamięci stałej (opcjonalnie dwa banki)
    -32 kB pamięci RAM
    -komunikacja poprzez RS232, 19200 baud
    -płytka 14,8 na 9,5 cm

    W załącznikach schemat komputera (z poprawnym dekoderem), projekt płytki drukowanej, kod źródłowy atmegi do obsługi klawiatury oraz linki do stron, z których korzystałem.

    Wyświetlanie tekstu na tv

    klawiatura PS/2 na avr

    Komputer jednopłytkowy oparty na 8085

    Cool? Ranking DIY
    About Author
    wojtasXD
    Level 8  
    Offline 
    wojtasXD wrote 22 posts with rating 37. Been with us since 2014 year.
  • Altium Designer Computer Controls
  • #2
    LChucki
    Level 31  
    Czyżbyś został zainspirowany konstrukcjami z 8080, Cobra1, CA-80?
    Widzę profesjonalne układy 64xx. Mnie się kiedyś trafiły wojskowe 54xx.
    8085 był fajny ale pojawił się za późno i "wygryzł go" Z-80.
  • #3
    trol.six
    Level 31  
    wojtasXD wrote:
    rzestrzeń adresowa procesora została podzielona na dwa równe obszary po 32kB, pierwszy początkowy dla pamięci stałej EPROM (adresy 0000h - 7FFFh), drugi zaś dla pamięci RAM (adresy 8000h - FFFFh).

    Czyli jeśli dobrze rozumiem, program uruchamiasz z pamięci stałej? A istnieje możliwość uruchomienia ich z RAM?
    .
  • Altium Designer Computer Controls
  • #4
    LChucki
    Level 31  
    trol.six wrote:
    wojtasXD wrote:
    rzestrzeń adresowa procesora została podzielona na dwa równe obszary po 32kB, pierwszy początkowy dla pamięci stałej EPROM (adresy 0000h - 7FFFh), drugi zaś dla pamięci RAM (adresy 8000h - FFFFh).

    Czyli jeśli dobrze rozumiem, program uruchamiasz z pamięci stałej? A istnieje możliwość uruchomienia ich z RAM?
    .

    8080, 8085, Z-80 nie mają rozdzielonej szyny rozkazów i danych jak np 8051 czy AVR. W 8085 bez problemu można wykonać program w RAM, jak to miało miejsce w ZX-81, ZX-Spectrum, Amstrad, wszystko na CP/M.


    PS
    W 8051 z zewnętrzną magistralą pamięci, stosując pewien trik (bramka AND) można było uruchomić program w RAM. Tak działał DSM-8051.
  • #7
    LChucki
    Level 31  
    wojtasXD wrote:
    a 2764 nie działa prawdopodobnie przez to, że na wyprowadzeniu 27 nie ma wejścia adresowego tylko jest aktywacja programowania i układ nie pozwala się odczytać

    Wymuś poziom wysoki np odginając nóżkę i dołączając rezystor podciągający do +5V.
  • #8
    drewniany81
    Level 8  
    Fajna konstrukcja!
    Jakie jest zapotrzebowanie na prąd komputerka?
    Czy planujesz rozbudowę o dodatkowe wyjścia np. na bazie 8255?
  • #9
    wojtasXD
    Level 8  
    drewniany81 wrote:
    Fajna konstrukcja!
    Jakie jest zapotrzebowanie na prąd komputerka?
    Czy planujesz rozbudowę o dodatkowe wyjścia np. na bazie 8255?

    Komputer pobiera ok. 390mA z zasilacza 12v, a co do rozbudowy to jest taka możliwość owszem, aczkolwiek nie planuję tego robić
  • #10
    Janusz_kk
    Level 36  
    W obecnych czasach nauka asemblera jest marnowaniem czasu, patrząc w kod jak w avr studio kompilator kompiluje kod jestem pełen podziwu dla twórców kompilatora
    bo sztuczki jakie czasem stosuje są niesamowite. Ale to jest tylko podglądanie, czasami robię wstawki w asemblerze ale nigdy by mi nie
    przyszło do głowy żeby teraz pisać programy w asemblerze, bo i po co?
    C czy C++ dają takie możliwości że szkoda słów, co innego 20 czy 30 lat temu, wtedy sam pisałem ale nie było innych opcji.
    8085 to też straszny staruszek, który nie daje żadnych szans rozwoju bo każda inna platforma jest daleko w przodzie.
  • #11
    MES Mariusz
    Level 36  
    Kurcze, ludzie robią takie cuda a ja się nie potrafię zabrać nawet za... wymianę interfejsu karty SD na interfejs Ethernet (klient samby) -> https://www.elektroda.pl/rtvforum/topic3534201.html

    W każdym razie podziwiam. Za chęci, za wiedzę i... czas do dyspozycji (bo nie wierzę, że powstało to w kilka czy kilkanaście dni). Fajne! (kliknięte).
  • #12
    drewniany81
    Level 8  
    Janusz_kk wrote:
    W obecnych czasach nauka asemblera jest marnowaniem czasu...

    Moim zdaniem nie jest to marnowanie czasu tylko nauka języka

    Janusz_kk wrote:
    ...czasami robię wstawki w asemblerze...

    Bez nauki asemblera ciężko byłoby robić samemu takie wstawki

    Janusz_kk wrote:
    ...nigdy by mi nie przyszło do głowy żeby teraz pisać programy w asemblerze, bo i po co?

    Przy obecnych narzędziach tu masz absolutną rację. Łatwość tworzenia w językach wysokiego poziomu daje wiele korzyści.

    Janusz_kk wrote:
    8085 to też straszny staruszek, który nie daje żadnych szans rozwoju bo każda inna platforma jest daleko w przodzie.

    Prawda. Jednak myślę, że zbudowanie układu i poczucie tego "starego cyfrowego klimatu" jest dla wielu swego rodzaju celem.

    Ot takie moje odczucia :) Na marginesie sam trzymam pudełko z TTL-ami i jakoś tak miło czasem zbudować coś na bramkach albo jakieś "peryferia TTL-owe" dla Atmegi ;)
  • #14
    fotomh-s
    Level 24  
    Myślałeś może o implementacji CP/M na swoim komputerze? Zawsze mnie zastanawiało jak to jest naskrobać własny BIOS dla CP/M i czy bym potrafił coś takiego zrobić. Niestety Z-80 nie doszedł i plany podobnego komputera nie wypaliły :-(

    Swoją droga uśmiechnąłem się jak zobaczyłem EPROM z napisem FLASH :-) Nawyki z mikrokontrolerów nie giną łatwo, jak to ktoś kiedyś śpiewał "old habits die hard", tylko że CPU były akurat przed mikrokontrolerami ;-)

    Quote:
    W obecnych czasach nauka asemblera jest marnowaniem czasu...

    W takim razie czytanie tego forum i pisanie na nim postów tak samo jest marnowaniem czasu, nie mówiąc już o takich głupotach jak np. sport ;-)

    Quote:
    ...nigdy by mi nie przyszło do głowy żeby teraz pisać programy w asemblerze, bo i po co?

    Po co łowić rybę jak można kupić i to od razu upieczoną?
    Bo może ktoś lubi sobie siedzieć nad wodą i moczyć kija przy grillu.

    Quote:
    8085 to też straszny staruszek, który nie daje żadnych szans rozwoju bo każda inna platforma jest daleko w przodzie.

    Ja osobiście bym chciał zrobić coś na Z180 w wersji full static, znacznie bardziej zaawansowany szkopuł, ale nadal w pewnym sensie klasyczny CPU. Każdy ma jakieś preferencje jeśli o to chodzi.
  • #15
    leonow32

    Level 30  
    Janusz_kk wrote:
    W obecnych czasach nauka asemblera jest marnowaniem czasu

    Nieprawda. Assembler potrafi zrobić rzeczy, których C/C++ zwyczajnie nie obsługuje, jak np. zmiana kontekstu. Polega to na tymczasowym zatrzymywaniu działania programu, całość rejestrów procesora jest kopiowana do RAM, a zaraz po tym z innego miejsca w RAM kopiowane są rejestry zapisane wcześniej. W ten sposób można wyjść z funkcji bez instrukcji return, robić coś innego, a potem wejść do niej i kontynuować operację od momentu pauzy.
  • #16
    User removed account
    Level 1  
  • #17
    yogi009
    Level 43  
    Znakomity projekt, widać użycie rozumu, zamiast gotowców z Chin. Moje gratulacje. Trzeba sporej wiedzy i chęci do wgłębienia się w tajniki tej archiwalnej maszyny. Na bazie takich układów najłatwiej nauczyć się podstaw działania kolejnych generacji sprzętu cyfrowego.
  • #19
    drewniany81
    Level 8  
    Mam jeszcze dwa szybkie pytania ;)
    1. Na schemacie nie widzę zbyt wielu kondensatorów filtrujących napięcia zasilania dla układów cyfrowych. Miałeś może jakieś nie przewidziane sytuacje, niestabilne zachowanie się komputera?
    2. Odnośnie układu video, rozwiązanie odpaliło od pierwszego uruchomienia, czy miałeś jakieś problemy z aplikacją tej części układu?

    Pytam o kondensatory, bo swego czasu miałem okazję przypatrzeć się konstrukcji płytek stosowanych w MiSter Z80 i z tego co pamiętam tam każdy TTL był bezpośrednio od strony lutowania zaopatrzony w kondensator 100nF. Na marginesie żałuję, że nie pomyślałem by ratować to co jeszcze z tych komputerów (sterowników przemysłowych) wówczas zostało...
  • #20
    wojtasXD
    Level 8  
    drewniany81 wrote:
    Mam jeszcze dwa szybkie pytania ;)
    1. Na schemacie nie widzę zbyt wielu kondensatorów filtrujących napięcia zasilania dla układów cyfrowych. Miałeś może jakieś nie przewidziane sytuacje, niestabilne zachowanie się komputera?
    2. Odnośnie układu video, rozwiązanie odpaliło od pierwszego uruchomienia, czy miałeś jakieś problemy z aplikacją tej części układu?

    Pytam o kondensatory, bo swego czasu miałem okazję przypatrzeć się konstrukcji płytek stosowanych w MiSter Z80 i z tego co pamiętam tam każdy TTL był bezpośrednio od strony lutowania zaopatrzony w kondensator 100nF. Na marginesie żałuję, że nie pomyślałem by ratować to co jeszcze z tych komputerów (sterowników przemysłowych) wówczas zostało...


    1. Co do stabilności to z nią raczej słabo i faktycznie pewnie tak jest przez brak kondensatorów filtrujących, aktualnie myślę jak je 'elegancko' wkomponować je w układ
    2. Układ wideo praktycznie zadziałał od razu, praktycznie bo trzeba było tylko załączyć zworę łączącą wyjście wideo z masą przez rezystor 75 ohm
  • #21
    drewniany81
    Level 8  
    wojtasXD wrote:
    1. Co do stabilności to z nią raczej słabo i faktycznie pewnie tak jest przez brak kondensatorów filtrujących, aktualnie myślę jak je 'elegancko' wkomponować je w układ


    Elegancko czyli jak najbliżej układów :) Przylutuj od strony druku, sprawdź stabilność, potem pomyślisz jak "schować" kondensatory w podstawkach ;)

    wojtasXD wrote:
    Bo chciałem zachować klasyczny design projektu, bez elementów smd itp.


    Wierz mi, że z kondensatorami od strony druku będzie miał jeszcze bardziej zachowany klasyczny design :)
  • #22
    jackfinch
    Level 17  
    Witam
    Ciekawy projekt zwłaszcza że dołożyłeś do tego moduł do wyświetlania na tv i klawiaturę na ps/2. Miejmy nadzieję że powstanie w przyszłości profesjonalne pcb na wzór tego zrobionego przez Sergeya Kiseleva, który wykonał podobny projekt na 8085.
    KLIK
  • #23
    fotomh-s
    Level 24  
    Zamówienie dwustronnego PCB z soldermaską to zawsze dodatkowe koszty. Zaleta jedynie taka że ładnie wygląda i że jakiś chińczyk będzie miał co włożyć do miski, no bo kolega raczej nie będzie tego na fali lutował ;-)
  • #24
    Janusz_kk
    Level 36  
    fotomh-s wrote:
    Zamówienie dwustronnego PCB z soldermaską to zawsze dodatkowe koszty. Zaleta jedynie taka że ładnie wygląda

    Zalet jest więcej niż tylko wygląd, po 1 można zrobić małą,po 2 mała szansa się pomylić, po 3 jest w ogóle do zrobienia w domu, robienie dwustronnej płytki
    w domu nie jest trywialne i szanse na pełen sukces dość małe, wiem po sobie, mi żelazkowe płytki kiepsko wychodzą i wolę zlecić żółtym braciom
    niż samemu walczyć.
  • #25
    User removed account
    Level 1  
  • #26
    Janusz_kk
    Level 36  
    W projekcie tak, zle się wyraziłem bo myślałem o czymś innym, czasami wycinam szybkie płytki nozykiem
    i tam się jest łatwo pomylić, ale to nie ma porównania do tak skomplikowanej płytki jak w tym projekcie.
  • #27
    yogi009
    Level 43  
    Janusz_kk wrote:
    robienie dwustronnej płytki
    w domu nie jest trywialne i szanse na pełen sukces dość małe


    To kwestia wyprasowania pewnej ilości płytek, potem łapiesz powtarzalność. Przy jednej sztuce jak najbardziej warto, możesz zrobić ją piorunem na miejscu, zamiast czekać 5 tygodni.
  • #28
    pan_kotek
    Level 20  
    Cześć, testowałeś może wejście i wyjście SID i SOD? jaka jest różnica w stosunku do 8251?
  • #29
    marck1
    Service technician RTV
    Czy w tym temacie jest mowa o tym 8085? Komputer jednopłytkowy oparty na 8085