Elektroda.pl
Elektroda.pl
X
TermopastyTermopasty
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Komputer jednopłytkowy oparty na 8085

wojtasXD 27 Gru 2018 21:14 5904 31
  • 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

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    wojtasXD
    Poziom 7  
    Offline 
    wojtasXD napisał 15 postów o ocenie 29, pomógł 0 razy. Jest z nami od 2014 roku.
  • TermopastyTermopasty
  • #2
    LChucki
    Poziom 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.
  • TermopastyTermopasty
  • #3
    trol.six
    Poziom 31  
    wojtasXD napisał:
    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?
    .
  • #4
    LChucki
    Poziom 31  
    trol.six napisał:
    wojtasXD napisał:
    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.
  • #5
    Simon79
    Poziom 18  
    A co zawiera EPROM? Dlaczego nie chciały działać 2764? Bardzo lubię takie konstrukcję i kusi mnie żeby zrobić coś podobnego :) .
  • #6
    wojtasXD
    Poziom 7  
    EPROM zawiera aktualne prosty monitor do odczytywania zawartości poszczególnych adresów pamięci, 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ć
  • #7
    LChucki
    Poziom 31  
    wojtasXD napisał:
    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
    Poziom 6  
    Fajna konstrukcja!
    Jakie jest zapotrzebowanie na prąd komputerka?
    Czy planujesz rozbudowę o dodatkowe wyjścia np. na bazie 8255?
  • #9
    wojtasXD
    Poziom 7  
    drewniany81 napisał:
    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
    Poziom 27  
    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
    Poziom 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
    Poziom 6  
    Janusz_kk napisał:
    W obecnych czasach nauka asemblera jest marnowaniem czasu...

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

    Janusz_kk napisał:
    ...czasami robię wstawki w asemblerze...

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

    Janusz_kk napisał:
    ...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 napisał:
    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
    Poziom 21  
    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 ;-)

    Cytat:
    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 ;-)

    Cytat:
    ...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.

    Cytat:
    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

    Poziom 30  
    Janusz_kk napisał:
    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.
  • #17
    yogi009
    Poziom 42  
    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.
  • #18
    wojtasXD
    Poziom 7  
    acctr napisał:
    Dlaczego zastosowałeś interfejs RS232 w klasycznej wersji zamiast np FT232 ?


    Bo chciałem zachować klasyczny design projektu, bez elementów smd itp.
  • #19
    drewniany81
    Poziom 6  
    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
    Poziom 7  
    drewniany81 napisał:
    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
    Poziom 6  
    wojtasXD napisał:
    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 napisał:
    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
    Poziom 16  
    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
    Poziom 21  
    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
    Poziom 27  
    fotomh-s napisał:
    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ć.
  • #26
    Janusz_kk
    Poziom 27  
    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
    Poziom 42  
    Janusz_kk napisał:
    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
    Poziom 20  
    Cześć, testowałeś może wejście i wyjście SID i SOD? jaka jest różnica w stosunku do 8251?
  • #29
    marck1
    Specjalista od sprzętów RTV
    Czy w tym temacie jest mowa o tym 8085? Komputer jednopłytkowy oparty na 8085