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

MCY7880 i układ mikroprocesorowy na polskich elementach

Atlantis86 19 Mar 2018 07:57 15942 254
Altium Designer Computer Controls
  • #1
    Atlantis86
    Level 19  
    Od paru lat uczę się programowania mikrokontrolerów w języku C. W tym czasie zrobiłem już kilka projektów na AVR-ach, PIC32 i 8051. Teraz chciałbym zejść o jedną warstwę abstrakcji niżej i nadrobić trochę braków w wiedzy, jeśli chodzi o niskopoziomowe działanie układów mikroprocesorowych, programowanie w asemblerze itp. W tym celu zacząłem składać kultowy komputerek MIK CA80, jednak cały czas chodzi mi też po głowie jeszcze coś innego.

    Mianowicie jakiś czas temu wpadł mi w ręce jedyny polski mikroprocesor - MCY7880. Mam do niego też UCY74S424 i UCY74S428. Chciałbym zbudować w miarę prosty i podstawowy układ, w miarę możliwości złożony tylko (lub przynajmniej w dużej części) z polskich elementów od CEMI. Chodzi mi o projekt na płytce uniwersalnej - na początek jakieś absolutne minimum: CPU z przyległościami, EPROM, SRAM, port równoległy (miganie diodą) i/lub port szeregowy (obsługa przez konsolę). Z możliwością ewentualnej rozbudowy o jakąś "kartę graficzną" albo pamięć masową.

    Zdaję sobie sprawę z tego, że 8080 jest dość kłopotliwy: trzy napięcia zasilania, taktowanie dwufazowym zegarem, zewnętrzny sterownik magistrali. Niemniej są to problemy, które powinno się dać obejść.

    Na razie i tak jestem na etapie zbierania informacji, stąd kilka pytań:
    1) Czy w 2018 roku jest realny zakup peryferiów (UART, porty równoległe) do takiego systemu, wyprodukowanych przez CEMI? Czy jednak trzeba będzie pójść na jakieś ustępstwa?
    2) W jaki sposób najprościej i najtaniej zrealizować kwestię programowania pamięci EPROM/EEPROM?
    3) Chciałem się też upewnić, że moje założenia są słuszne. Czy po uporaniu się z zasilaniem, taktowaniem i sterownikiem magistrali wystarczy, że połączę elementy do szyny adresowej i szyny danych, dodając jakąś logikę dekodowania adresu na bramkach, która będzie aktywowała poszczególne elementy (EPROM, RAM, porty) w zależności od miejsca w przestrzeni adresowej?

    Może ktoś już stworzył taką konstrukcję? Google niestety niczego konkretnego nie zwracają.
  • Altium Designer Computer Controls
  • #2
    ghost2000
    Level 18  
    Atlantis86 wrote:
    1) Czy w 2018 roku jest realny zakup peryferiów (UART, porty równoległe) do takiego systemu, wyprodukowanych przez CEMI? Czy jednak trzeba będzie pójść na jakieś ustępstwa?

    1) CEMI nie produkowało PIO SIO pomijając zatrzaski i bufory równoległe serii 74S4xx. W systemach 8080 używano 8255, 8251, 8253/4.
    2) Kupić używany programator, zrobić samemu, na np AVR (w archiwach Praktyczny Elektronik, Elektronika Pratyczna, Radioelektronik znajdziesz różne konstrukcje, tak samo w necie) ale programator to nie wszystko, wskazane jest posiadanie symulatora eprom.
    3) Zobacz jak to rozwiązano w CA-80

    Do taktowania 8080 był scalak, poza zegarem generował też sygnały IORD, IOWR i inne sterujące. Zacznij od zasilacza. Musi on załączać napięcia w określonej kolejności (od dołu, -5, +5, +12). Jeśli +12 pojawi się przed -5 to 8080 będzie ozdabiał choinkę (teraz koszyk z jajkami).


    PS
    Powinieneś skontaktować się z autorem Link, który ma doświadczenie w odbudowywaniu historii :-)
  • #3
    Atlantis86
    Level 19  
    ghost2000 wrote:

    Do taktowania 8080 był scalak, poza zegarem generował też sygnały HAL i inne sterujące.


    UCY74S424. Nota wspomina też, że układ także "synchronizuje sygnał reset". Scalak zajmuje się też odbiciami styków, czy przed nim powinienem dać dodatkowy układ realizujący tę funkcję.

    Quote:
    Zacznij od zasilacza. Musi on załączać napięcia w określonej kolejności (od dołu, -5, +5, +12). Jeśli +12 pojawi się przed -5 to 8080 będzie ozdabiał choinkę (teraz koszyk z jajkami).


    Wielkie dzięki za informację. Nie byłem tego świadom. Uchroniłeś mnie przed pierwszą wpadką o niszczycielskich dla sprzętu skutkach. ;)
    Timingi są tutaj ważne, czy wystarczy tylko, żeby napięcia pojawiały się w odpowiedniej kolejności? Muszę także zadbać o to, żeby napięcia znikały wedle właściwego porządku, po odłączeniu zasilania?
  • #4
    ghost2000
    Level 18  
    Atlantis86 wrote:
    Timingi są tutaj ważne, czy wystarczy tylko, żeby napięcia pojawiały się w odpowiedniej kolejności? Muszę także zadbać o to, żeby napięcia znikały wedle właściwego porządku, po odłączeniu zasilania?

    Odeślę do noty katalogowej ale zdaje się wyłączanie w kolejności od góry. Z 8080 miałem styczność ale nic na nim nie budowałem (Z-80 był dużo lepszy). Pamiętam tylko, problem konstruktorów systemów 8080 i jego zasilania. Ten sam problem był z DRAM. Jeden problem z zasilaniem rozwiązuje się sam, 5 i 12V. Gdy napięcie zasilania narasta, najpierw pojawi się 5, następnie 12V, gdy spada na odwrót.

    Pamiętaj też, że 8080 to nie Z-80 i nie tak prosto jest z przerwaniami. Na magistralę trzeba wysłać kod rozkazu, zdaje się RST x. Na szczęście to kod jedno bajtowy. Można to zrobić bramą/buforem (współcześnie np 74HC241/244) i układami kombinacyjnymi na bramkach. Tu też odsyłam do dokumentacji.

    Wybrałeś sobie trudnego przeciwnika. Łatwiejszy jest 8085, też był produkowany w kraju, więc
    Quote:

    Mianowicie jakiś czas temu wpadł mi w ręce jedyny polski mikroprocesor - MCY7880.

    nie jest prawdą. 8085 miał jedno napięcie zasilające, wbudowany układ zegara, sygnałów sterujących, przerwań. Magistrala multipleksowana jak 8051. Piszę z pamięci, więc mogłem coś pokręcić. W Radioelektroniku był artykuł o systemie na 8085.


    Gdzie stosowano MCY8080? W drukarkach D100 (Mera Błonie), centralach SPC-100, SPC-40. Z 8085 w urządzeniach rodzimej produkcji nie spotkałem się.
  • #5
    BlueDraco
    MCUs specialist
    8085 nie był produkowany w Polsce. Miał być produkowany 8035.
    UCZ74S424 to tylko kilka bramek i przerzutników. RESET jest generowany przez zewnętrzny przycisk z RC i jedynie synchronizowany z zegarem CPU przez S424.

    Też podchodzę do projektu z 8080, ale z ciut innymi założeniami. Zamiast odtwarzać archaiczny komputer, robię całkiem współczesny komputer z archaicznym procesorem. Jedyny układ potrzebny w takim rozwiązaniu dla 8080 - to 8224 (74S424). Resztę komputera, wraz z monitorem szyny (w tym możliwość ładowania programu z PC przez drag and drop), konsolą na USB (VCOM) i pamięcią masową, da się łatwo i wygodnie wyrzeźbić w oprogramowaniu uC (w FPGA też można, jeśli ktoś lubi FPGA). Mam takie maszynki z Z80 i 8085, z działającym CP/M-80.

    Podobny komputerek z 8085 z 16 KiB RAM i bez pamięci masowej da się złożyć w pół godziny na płytce stykowej. Całkowity koszt elementów - to ok. 7 USD.
  • #6
    ghost2000
    Level 18  
    BlueDraco wrote:
    8085 nie był produkowany w Polsce.

    Źródło moich informacji to Radioelektronik z lat 80. Oczywiście nie ma tego czasopisma a minęło ponad 30 lat. Mogę już nie pamiętać szczegółów, ale czy w Radioelektroniku, za PRL opisano by system zbudowany przez polskiego inżyniera, na elementach z poza RWPG?
    Faktem jest, że szukałem informacji na temat 8085 CEMI i nic nie znalazłem, tak samo jak i informacji o systemie na 8051 z Radioelektronika. Czy to oznacza, ze takiego systemu nie było?
  • Altium Designer Computer Controls
  • #7
    Atlantis86
    Level 19  
    Hmm... Nigdy nie spotkałem się z jakimikolwiek informacjami o produkowanym w kraju klonie 8085. Może i były takie plany, ale samego układu nigdy nie widziałem. A skoro nie wie o nim Internet...

    Tak swoją drogą, ktoś dysponuje dokładniejsza dokumentacją MCY7880? PDF z Elenety jest dośc ogólny i nie omawia np. wspomnianych wcześniej kwestii zasilania. Opis 8080 na Wikipedii faktycznie wspomina o konieczności podawania (i odłączania) napięć zasilania w odpowiedniej kolejności.

    Mogę liczyć na jakąś podpowiedź co do tego, jak powinien wyglądać układ zasilania realizujący taką funkcje?

    Jeśli już uporam się z zasilaniem, generatorem (UCY74S424) i sterownikiem magistrali (UCY74S428) to złożenie podstawowego układu na tym CPU będzie dużo bardziej skomplikowane od elementarnej konstrukcji np. na Z80 albo 6502? Są jeszcze jakieś inne przeszkody, których powinienem być świadomym?
  • #8
    ghost2000
    Level 18  
    Atlantis86 wrote:
    będzie dużo bardziej skomplikowane od elementarnej konstrukcji np. na Z80 albo 6502?

    Nie będzie. Z-80 to rozbudowany 8080 zawierający w swoim wnętrzu układy, które otaczały 8080 i kilka innych, np układ odświeżania DRAM). Podłączanie pamięci czy peryferii do 8080 i Z-80 jest takie same (w końcu magistrala Intel, nieudana ale popularna).

    Atlantis86 wrote:
    Mogę liczyć na jakąś podpowiedź co do tego, jak powinien wyglądać układ zasilania realizujący taką funkcje?

    Zapytaj na forum telekomunikacyjnym o dokumentację zasilacza od centrali SPC-40/100.
  • #9
    BlueDraco
    MCUs specialist
    Moim zdaniem komputerek z 8080 będzie dużo trudniejszy w uruchomieniu od 6502 czy Z80. Zasilanie - 3 napięcia, ale też sporo większy pobór mocy. Układów też znacznie więcej (przy 8080 niezbędny jest bufor szyny), i to prądożernych (popatrz na prądy UCY74Sxxx). Maszynki z 6502, 8085 czy Z80 są trywialne w konstrukcji, zwłaszcza przy takim rozwiązaniu, jak moje. Do zbudowania każdej z nich nie użyłem ani jednego dodatkowego układu - tylko mikrokontroler, kondensatory blokujące, jedna dioda i kilka rezystorów.
    W sieci można łatwo znaleźć stare opisy Intel 8080 i schematy komputerów. MCY7880 to dokładnie to samo. Problem ze wstawaniem zasilań jest powszechnie znany w przekazie ustnym, ale na opis drukowany jakoś nie trafiłem. Jedyną wskazówką jest dopuszczalna wartość napięcia różnicowego.
    W65C02S i OKI MSM80C85AH mogą oficjalnie działać na 3.3V. Z84C00 też, ale nieoficjalnie.
  • #10
    Atlantis86
    Level 19  
    BlueDraco wrote:
    Moim zdaniem komputerek z 8080 będzie dużo trudniejszy w uruchomieniu od 6502 czy Z80. Zasilanie - 3 napięcia, ale też sporo większy pobór mocy.


    Jasne, nie zasilę tego z małego zasilacza impulsowego, ale zasilacza AT od starego peceta już powinien sobie poradzić. Są wszystkie potrzebne napięcia.
    Jeśli chodzi o zasilanie, to głównym problemem do obejścia będzie właśnie konieczność sekwencyjnego załączania kolejnych napięć...

    Quote:
    Układów też znacznie więcej (przy 8080 niezbędny jest bufor szyny)


    Chodzi o UCY74S428? Do tego jeszcze UCY74S424. To dwa dodatkowe układy. Przyznaję - jest to pewna komplikacją, ale to także nie jest "znacznie więcej" układów. Chyba, że o czymś jeszcze nie wiem i potrzebna jest jeszcze jakaś dodatkowa drobnica...

    Quote:
    Maszynki z 6502, 8085 czy Z80 są trywialne w konstrukcji


    Niestety 6502 i 8085 bardzo ciężko jest w chwili obecnej kupić. Tych pierwszych w ogóle nie widzę u polskich sprzedawców. Można je co prawda w dość atrakcyjnej cenie dostać na Aliexpress, ale jestem ciekaw czy są to faktycznie te układy. Zabytkowy 8085 jest na Allegro w dość kuriozalnej cenie...
    Z80 jest chyba najbardziej oczywistym rozwiązaniem i na dobrą sprawę od niego zaczynam, składając CA80.
    Niemniej MCY7880 jest ciekawy właśnie dlatego, że jest polskim mikroprocesorem. ;)

    Quote:
    zwłaszcza przy takim rozwiązaniu, jak moje. Do zbudowania każdej z nich nie użyłem ani jednego dodatkowego układu - tylko mikrokontroler, kondensatory blokujące, jedna dioda i kilka rezystorów.


    Rozumiem takie podejście, jednak do mnie ono szczególnie nie przemawia. Może tylko jako odtwarzanie rzadkich elementów (np. ULA z ZX Spectrum) w jakimś FPGA.

    Quote:
    Problem ze wstawaniem zasilań jest powszechnie znany w przekazie ustnym, ale na opis drukowany jakoś nie trafiłem.


    Pamiętasz może jak to było w praktyce realizowane? Pewne ogólne pomysły jak można byłoby to zrobić przychodzą mi do głowy, ale znając życie nie biorą one pod uwagę jakiegoś czynnika, który mógłby doprowadzić do uszkodzenia sprzętu w pewnych okolicznościach.
  • #11
    ghost2000
    Level 18  
    Atlantis86 wrote:

    Quote:

    Problem ze wstawaniem zasilań jest powszechnie znany w przekazie ustnym, ale na opis drukowany jakoś nie trafiłem.

    Pamiętasz może jak to było w praktyce realizowane? Pewne ogólne pomysły jak można byłoby to zrobić przychodzą mi do głowy, ale znając życie nie biorą one pod uwagę jakiegoś czynnika, który mógłby doprowadzić do uszkodzenia sprzętu w pewnych okolicznościach.

    W Młodym Techniku z lat 80 było rozwiązanie dla ZX-Spectrum. Pierwsze z nich miały DRAM z trzema napięciami, późniejsze z jednym. W tych pierwszych wersjach padały ram, właśnie ze względu na nieszczęsne -5 z przetwornicy, która startowała, gdy już było +5. Problem rozwiązywał klucz na tranzystorze, włączający +12V jak -5 już było wytwarzane. Podobno podanie +5 zanim pojawiło sie -5V było dopuszczalne na krótką chwilę. Na koniec zaśpiewam "40 lat minęło". Pamięć jest zawodna, więc musisz to zweryfikować.
  • #12
    BlueDraco
    MCUs specialist
    6502, 8085 czy Z80 łatwo kupisz na Ali lub ebay. OKI 80C85AH daje się kupić za ok. 1.5 USD, Z80 NMOS czyli Z8400 (często fałszywie oznaczone jako CMOS Z84C00) za < 0.5 USD, W65C02S za ok. 3 USD.
    8080 wymaga buforów szyn, bo ma b. słabe wyjścia. To nie jest zabawka dla początkujących - roboty i układów dużo, łatwo o uszkodzenie.
  • #13
    Atlantis86
    Level 19  
    BlueDraco wrote:
    W65C02S za ok. 3 USD


    Parę dni temu zamówiłem na Aliexpress zestaw pięciu sztuk za 5$ + wysyłka. Cena wręcz podejrzanie niska, ale zobaczymy za miesiąc, gdy przesyłka przyjdzie.
    Z zakupem Z80 nie ma najmniejszego problemu. Zresztą mam już parę sztuk w podręcznym zbiorze części, w paru różnych wersjach (nowsze CMOS od Ziloga, klon U880D z NRD i chyba coś jeszcze). ZA 8085 może faktycznie też się rozejrzę...


    Quote:
    8080 wymaga buforów szyn, bo ma b. słabe wyjścia.


    Szynę danych też trzeba osobno buforować, np. przy pomocy 7407? Rozumiem, że sprawę buforowania szyny adresowej załatwia UCY74S428? A co z pozostałymi wyjściami sterującymi?


    Quote:
    To nie jest zabawka dla początkujących - roboty i układów dużo, łatwo o uszkodzenie.


    Zdaję sobie z tego sprawę. Właśnie dlatego (biorąc pod uwagę niewiele informacji w Sieci, zwłaszcza przy pierwszym googlowaniu) pytam i staram się zebrać kilka informacji. Nie jest wykluczone, że zanim się za to zabiorę zdążę złożyć coś na innym procesorze. Niemal pewne jest też, że do tego czasu odpalę CA80.
    Po prostu pomysł złożenia komputera na (przynajmniej w znacznej części) polskich częściach jest bardzo interesujący. Nie wspominając, że na dobrą sprawę od 8080 zaczęła się epoka domowych komputerów. :)
  • #14
    BlueDraco
    MCUs specialist
    Domowych to raczej od 6502 i Z80. Jeśli już się uparłeś na 8080, to jednak najpierw radzę złożyć coś z Z80 albo 8085 jako wprawkę.
  • #15
    Atlantis86
    Level 19  
    BlueDraco wrote:
    Domowych to raczej od 6502 i Z80.


    Zaczęło się od maszyn takich jak Altair 8080 albo IMSAI 8080, które (jak same nazwy wskazują) pracowały na 8080. ;)
    Urządzenia na 6502 i Z80 pojawiły się nieco później, chociaż faktycznie one zrobiły największa furorę.
  • #16
    ghost2000
    Level 18  
    Atlantis86 wrote:
    Altair 8080 albo IMSAI 8080

    A po nich ZX80, ZX81. W tym samym czasie powstawały też mikrokomputery na 680x. 6502 był tanią alternatywą 680x, było nawet wykonanie zgodne pin-pin (jak AVR zgodny z 8051).
    6502 to chyba jedyny prawdziwy procesor 8-bit. Wszystkie rejestry, łącznie z wskaźnikiem stosu są 8-bit (pomijam licznik rozkazów). Wszystkie inne (8080, 680x, Z-80, itp) maja rejestry 16 bit np HL w 8080 i Z80 czy akumulator (zdaje się B) w 680x, DPTR w 8051.
  • #17
    tszczesn
    Old radio specialist
    Nie chce mi się teraz sięgać do dokumentacji 8080, ale AFAIR HL miał służyć do obliczeń adresów, które są 16-to bitowe (ośmiobitowa przestrzeń adresowa chyba jest mało praktyczna. :) ) i de facto to są dwa ośmiobitowe rejestry H (High) i L (Low). To dopiero Z80 miał 16-to bitowe kombinacje rejestrów BC i DE. Ale z pamięci piszę, mogę się mylić.
  • #18
    maciej_333
    Level 38  
    Właśnie wykonuję taki komputer wg całkowicie mojej koncepcji. Jak dotąd na wielkiej płytce uniwersalnej mam:
    -8080 (CPU),
    -8224 (zegar),
    -8228 (sterownik systemu i bufor szyny danych)
    -dwie sztuki 8212 jako bufory trójstanowe dla szyny adresowej - buduję rozbudowany system w dodatku z układami TTL dołączonymi do szyny adresowej, zatem potrzebne jest dodatkowe buforowanie, celem zwiększenia obciążalności,
    -kolejny 8212 jako wyjście w przestrzeni adresowej I/O - aktualnie steruje on migającą diodą i daje sygnał sterujący "przełączaniem" linii adresowych A15 i A14 - chodzi o start systemu od konkretnego adresu, docelowo będę nim przełączał też banki pamięci,
    -pamięć EPROM 27C256, jednak są tylko dwa banki po 16 kB - przełączane zworką,
    -dekodery adresów dla przestrzeni I/O i RAM są zrobione typowo na TTL.

    Docelowo dodam:
    -8255 (programowalne I/O)
    -8275 (CRT)
    -8257 (DMA - potrzebne też do 8275)
    -8253 (Timer)
    -8251 (USART)
    -8279 (klawiatura)
    -8259 (sterownik przerwań)
    -8271 (sterownik dysku miękkiego - zamierzam podjąć próbę uruchomienia stacji dyskietek 5,25" / 3,5")
    -jakieś 512 kB pamięci RAM - układy współczesne.

    Aktualnie mam uruchomioną migającą diodę. Jednak im więcej układów CEMI się stosuje, tym więcej kłopotu w uruchomieniu. Nowe MCY7880, jakie mam nie chciały działać. Podobnie było z rodzimym 8228. Na 10 nowych układów 1 nie działał. W końcu na jakiejś płycie znalazłem MCY7880, który chciał działać w moim układzie. Nadmienię, że z oryginałem Intela, odpowiednikiem radzieckim, czy AMD nie było problemów. Pobór prądu jest ogromny. Tak prosty system pobiera jakieś 0,6 A ze źródła +5 V.

    Pracuję też nad symulatorem EPROM, ponieważ bez tego ciężko będzie cokolwiek zrobić. Jednak tu mam już mikrokontroler AT89C51, pamięć RAM 62256 i bufory trójstanowe 74HC245. Zamierzam też dodać dodatkową pamięć EEPROM na I2C (24C256). Stworzy to możliwość przechowywania programu w tej pamięci i jego ładownie do 62256 również bez udziału komputera przez RS232.

    Odnośnie oprogramowania, to najpierw napiszę pewnie własny system typu MONITOR. Chcę się też pobawić z odczytem i zapisem na taśmę magnetofonową. Później jednak poczynię prace nad napisaniem BIOS'u dla CPM w wersji 2.2 i jego uruchomieniem. Jednak CPM będzie na stałe w EPROM, bez bootowania z dyskietki.
  • #19
    ghost2000
    Level 18  
    maciej_333 wrote:
    -8259 (sterownik przerwań)

    Tylko nie skonfiguruj przetrwań jak w PC (zboczem) co jest wyjątkowo chorym pomysłem, tylko poziomem co umożliwi bezproblemowe podłączenie do jednej linii kilku urządzeń.

    maciej_333 wrote:
    -8253 (Timer)

    8254 ulepszona wersja 8253.

    maciej_333 wrote:
    Odnośnie oprogramowania, to najpierw napiszę pewnie własny system typu MONITOR

    Nie lepiej monitor/debuger zrobić po stronie PC? W 8080 siedziałby prosty program komunikujący się po USART z PC. Program umożliwiałby tylko zapis odczyt ram, io. Linia np DSR wywoływane byłoby przerwanie (8080 miał NMI?) które uruchomiało by komunikację.
    Program wygodnie można pisać na PC. Nie wiem czy są asm dla 8080 ale sa dla Z-80, wystarczy używać tylko rozkazów kompatybilnych z 8080. Na Z-80 jest C, pytanie czy kompilator da się zmusić do używania rozkazów zgodnych z 8080.
  • #20
    Atlantis86
    Level 19  
    maciej_333 wrote:
    Właśnie wykonuję taki komputer wg całkowicie mojej koncepcji. Jak dotąd na wielkiej płytce uniwersalnej mam


    Ja zapewne zadowoliłbym się czymś o wiele bardziej podstawowym: CPU z przyległościami, EPROM, trochę RAM-u, MCY7855 i jakiś UART. Do tego logika na TTL-ach, dzieląca przestrzeń adresową pomiędzy RAM i I/O.
    Pomysł uruchomienia na tym CP/M jest interesujący, ale zdecydowanie wykracza poza moje obecne umiejętności. Cieszyłbym się, gdyby udało mi się zmusić taką konstrukcję do pracy z jakimś BASICiem, z interfejsem tekstowym na porcie szeregowym.



    Quote:
    Aktualnie mam uruchomioną migającą diodę. Jednak im więcej układów CEMI się stosuje, tym więcej kłopotu w uruchomieniu. Nowe MCY7880, jakie mam nie chciały działać. Podobnie było z rodzimym 8228. Na 10 nowych układów 1 nie działał. W końcu na jakiejś płycie znalazłem MCY7880, który chciał działać w moim układzie. Nadmienię, że z oryginałem Intela, odpowiednikiem radzieckim, czy AMD nie było problemów. Pobór prądu jest ogromny. Tak prosty system pobiera jakieś 0,6 A ze źródła +5 V.


    Masz jakiś pomysł co do możliwej przyczyny tych problemów? Układy po prostu są niesprawne? Padły same z siebie po latach? Czy może MCY7880 nie jest 100% odpowiednikiem 8080 i potrzebuje jakichś zmian w układzie?



    Quote:
    Odnośnie oprogramowania, to najpierw napiszę pewnie własny system typu MONITOR. Chcę się też pobawić z odczytem i zapisem na taśmę magnetofonową. Później jednak poczynię prace nad napisaniem BIOS'u dla CPM w wersji 2.2 i jego uruchomieniem. Jednak CPM będzie na stałe w EPROM, bez bootowania z dyskietki.


    Zamierzasz po wszystkim przenieść projekt na PCB i upublicznić go? ;)
  • #21
    BlueDraco
    MCUs specialist
    Układy serii 82xx i UCY74S są wielkie, niewygodne w użyciu i prądożerne. Można oczywiście zabawić się w replikę maszyny sprzed 40 lat - doceniam determinację, ale roboty przy tym sporo, uruchomienie trudne a użyteczność słaba. Zamiast 8212 wygodniej użyć mniejszych, lepszych i zimniejszych 540, 573, 574 lub 245.

    Ja wpakowałem peryferia w uC i mam komputerek wielkości mydelniczki, zasilany przez USB, z "dyskietkami" w pamięci Flash uC, terminalem VCOM na USB i pełnym sterowaniem sprzętem przez drugi VCOM - ustawianie częstotliwości zegara, praca krokowa z deasemblacją instrukcji, pułapkowanie sprzętowe, edycja pamięci, ładowanie programów .HEX z PC przez drag&drop - całkiem fajne możliwości jak na zabytkowy komputerek. Ostatnio uruchomiłem piątą już wersję - z W65C816S, teraz pracuję nad pełnym MC68000, 80C51 i 8080. Emulacja dyskietki we Flash oprócz wygody i prostoty daje jeszcze szybkość.

    Projekt jest właśnie w trakcie "upubliczniania".

    MCY7880 jest dokładną kopią 8080A. Może się od niego różnić wyłącznie technologicznie, w tym wrażliwością na ładunki i starzenie struktury. UCY74S miały problemy z niezawodnością. O ile S424/8224 trudno wyeliminować z projektu, to już bez wielkiego S428/8228 można sobie łatwo poradzić - to samo łatwiej zrobi uC czy jakiś CPLD.
  • #22
    Atlantis86
    Level 19  
    BlueDraco wrote:
    przez drugi VCOM - ustawianie częstotliwości zegara, praca krokowa z deasemblacją instrukcji, pułapkowanie sprzętowe, edycja pamięci, ładowanie programów .HEX z PC przez drag&drop - całkiem fajne możliwości jak na zabytkowy komputerek.


    Mi oczywiście tych wszystkich zalet nie trzeba tłumaczyć. Po prostu to nie moja bajka - dla mnie technika retro najciekawiej wygląda w oryginalnym wydaniu. Nawet jeśli wiąże się to ze stosowaniem dużej ilości prądożernych elementów. Z tego samego powodu robiąc konstrukcję na lampach raczej nie zdecyduję się na zastosowanie przetwornicy impulsowej na scalaku w obwodzie anodowym.
    Na dobrą sprawę można by nawet pójść o jeden krok do przodu i zupełnie wyeliminować oryginalny procesor, emulując go na współczesnym mikrokontrolerze albo odtwarzając w FPGA. W Sieci jest zresztą trochę takich projektów.
  • #23
    maciej_333
    Level 38  
    ghost2000 wrote:
    maciej_333 wrote:
    -8259 (sterownik przerwań)

    Tylko nie skonfiguruj przetrwań jak w PC (zboczem) co jest wyjątkowo chorym pomysłem, tylko poziomem co umożliwi bezproblemowe podłączenie do jednej linii kilku urządzeń.

    Zobaczę jak to będzie. Mam aktualnie tylko radzieckie odpowiedniki 8259, które podobno nie są w pełni zgodne z oryginałem. Przyznam, że zbocze wydaje się odpowiedniejsze. Zresztą przerwania będą raczej kwestią wewnętrzną systemu.

    ghost2000 wrote:
    maciej_333 wrote:
    -8253 (Timer)

    8254 ulepszona wersja 8253.

    Niestety nie mam tego układu, ale do zabawy wystarczy mi zdecydowanie 8253.

    ghost2000 wrote:
    maciej_333 wrote:
    Odnośnie oprogramowania, to najpierw napiszę pewnie własny system typu MONITOR

    Nie lepiej monitor/debuger zrobić po stronie PC? W 8080 siedziałby prosty program komunikujący się po USART z PC. Program umożliwiałby tylko zapis odczyt ram, io. Linia np DSR wywoływane byłoby przerwanie (8080 miał NMI?) które uruchomiało by komunikację.
    Program wygodnie można pisać na PC. Nie wiem czy są asm dla 8080 ale sa dla Z-80, wystarczy używać tylko rozkazów kompatybilnych z 8080. Na Z-80 jest C, pytanie czy kompilator da się zmusić do używania rozkazów zgodnych z 8080.

    Zupełnie nie o taki komputer tu chodzi. Oprogramowanie oczywiście będę rozwijał po stronie PC, stąd konieczność stosowania cross assemblera i emulatora pamięci EPROM. Docelowo jednak całość ma być w pełni niezależna od PC. Stąd potrzebuję np. CPM, by próbować kiedyś uruchomić oprogramowanie jakie było wykonane na ten system. Wprawdzie CPM w wersji 2.2 nie ma obsługi banków pamięci, ale jednak łatwiej go uruchomić. Dopiero po nim przejdę do prób nad CPM 3.0. Oczywiście cała architektura pamięci będzie od razu zgodna z CPM 3.0 tzn. będzie obecny obszar RAM wspólny dla wszystkich banków. Zresztą dla 8080 też jest dostępny kompilator C dla CPM. Ktoś nawet napisał jakiś prosty cross kompilator dla PC.
    Jedyna linia INT w 8080 jest maskowalna. Można przecież jednym rozkazem wyłączyć globalnie przerwania. Niemsakowalny jest tylko RESET...


    Atlantis86 wrote:

    Quote:
    Aktualnie mam uruchomioną migającą diodę. Jednak im więcej układów CEMI się stosuje, tym więcej kłopotu w uruchomieniu. Nowe MCY7880, jakie mam nie chciały działać. Podobnie było z rodzimym 8228. Na 10 nowych układów 1 nie działał. W końcu na jakiejś płycie znalazłem MCY7880, który chciał działać w moim układzie. Nadmienię, że z oryginałem Intela, odpowiednikiem radzieckim, czy AMD nie było problemów. Pobór prądu jest ogromny. Tak prosty system pobiera jakieś 0,6 A ze źródła +5 V.

    Masz jakiś pomysł co do możliwej przyczyny tych problemów? Układy po prostu są niesprawne? Padły same z siebie po latach? Czy może MCY7880 nie jest 100% odpowiednikiem 8080 i potrzebuje jakichś zmian w układzie?

    MCY7880 jest rzeczywiście ścisłym odpowiednikiem 8080. Posiadam worek w jakim jest 50 sztuk MCY7880. Dwa układy losowo wzięte z tego worka nie działały. Myślę, że to jakiś problem technologiczny, związany ze starzeniem struktur. Nadmienię, że to układy z początku produkcji, jeszcze bez daty. Obudowa też wygląda nieco inaczej, niż w układach nowszych. Radzę Ci zrezygnować z układów CEMI, albo najpierw uruchomić system na scalakach Intel'a i później podmieniać poszczególne elementy.

    Atlantis86 wrote:

    Quote:
    Odnośnie oprogramowania, to najpierw napiszę pewnie własny system typu MONITOR. Chcę się też pobawić z odczytem i zapisem na taśmę magnetofonową. Później jednak poczynię prace nad napisaniem BIOS'u dla CPM w wersji 2.2 i jego uruchomieniem. Jednak CPM będzie na stałe w EPROM, bez bootowania z dyskietki.

    Zamierzasz po wszystkim przenieść projekt na PCB i upublicznić go? ;)

    Schemat może narysuję. Oczywiście zamierzam całość kiedyś upublicznić. Jednak płytka mogłaby powstać chyba tylko w sytuacji jeśli pojawiłby się sponsor. Zdajesz sobie sprawę jaki byłby koszt takiej ogromnej płyty ? Zresztą moim zdaniem układ na PCB będzie sporo większy niż na płytce uniwersalnej.

    BlueDraco wrote:
    Układy serii 82xx i UCY74S są wielkie, niewygodne w użyciu i prądożerne. Można oczywiście zabawić się w replikę maszyny sprzed 40 lat - doceniam determinację, ale roboty przy tym sporo, uruchomienie trudne a użyteczność słaba. Zamiast 8212 wygodniej użyć mniejszych, lepszych i zimniejszych 540, 573, 574 lub 245.

    Jest to prawdą, ale gdybym szedł tym tropem to całość byłaby pozbawiona sensu. Nie stosuję "nowoczesnych" układów. Jedyny wyjątek to pamięć EPROM i RAM.

    Kiedy już uporam się z emulatorem EPROM, zacznę wstawiać pamięć RAM. Pozwoli to choćby na tworzenie podprogramów.

    Posiadam też jakiś zdaje się, że rodzimy klon zestawu rozwojowego SDK-80 Intel'a. Schematy tej płytki stanowią dobre odniesienie dla opracowania własnej i dosyć prostej płyty z 8080. Dostępna jest cała dokumentacja SDK80. Był też jakiś Czechosłowacki zestaw dydaktyczny, jeszcze prymitywniejszy. Jednak nie mogę tego teraz znaleźć.
  • #24
    ghost2000
    Level 18  
    maciej_333 wrote:
    Przyznam, że zbocze wydaje się odpowiedniejsze.

    I do jednej linii możesz podłączyć tylko jedno źródło przerwań a i tu możesz mieć kłopoty. Np USART 16C550 (jak i większość peryferii) wystawia na linie INT poziom niski do czasu skasowania źródła przerwania. Jak będziesz miał kilka źródeł przerwań w jednym układzie (np nadawcze i odbiorcze w usart) a nawet jedno ale usrart ma fifo to możesz mieć taki przypadek:
    - następuje przerwanie nadawcze, usart wystawia L na INT, procek reaguje
    - zanim skasujesz źródło przerwania (zapiszesz rejestr nadawczy) następuje przerwanie odbiorcze
    - zapisujesz rejestr nadawczy (kasujesz źródło przerwania) INT jest cały czas niski bo jest aktywne przerwanie odbiorcze
    - wychodzisz z przerwania
    Więcej przerwań nie zobaczysz, int jest cały czas niski, nie ma więc zbocza. Jeśli reagujesz na poziom, problemu nie ma, po wyjściu z przerwania, zaraz wejdziesz w nie znowu, bo INT ma poziom niski.
    Można się oczywiście bawić, sprawdzać przed opuszczeniem przerwania czy nie ma aktywnego źródła przerwania ale po co się męczyć?

    Wyzwalanie zboczem ma swoje zastosowania ale nie do obsługi wielu układów peryferyjnych na jednej linii. To może być dobre np do timera systemowego czy odświeżającego DRAM, dla sygnału break, odbiornika IR.

    Pomysł na używanie zbocza to tylko chore wizje Intela. Wszystkie peryferia sygnalizują przerwanie poziomem niskim i jedyny sensowny sposób, to użycie przerwań wyzwalanych poziomem niskim. Tak robili wszyscy producenci, Motorolla, Zilog itp, tylko Intel "wie lepiej". Tylko intel ma reset aktywny w stanie wysokim, wszyscy inni niskim. Które rozwiązanie jest lepsze? Niski. Dlaczego?
  • #25
    maciej_333
    Level 38  
    Zgoda, że przerwanie na zbocze powinno być stosowane do np. wykrywania zboczy jakiegoś zewnętrznego sygnału prostokątnego. Wykorzystanie tu przerwań reagujących na poziom jest mało wygodne. Fakt, że z przerwaniami na zbocza można jakieś zdarzenie zgubić w danym systemie. Jednak to też kwestia przyjętego protokołu komunikacyjnego i kontroli przepływu.

    Nie jestem pewny dlaczego dla RESET lepszy jest aktywny stan niski. Myślę, że chodzi o kwestie narastania napięcia zasilania po jego załączeniu. Każdy zasilacz niezależnie od budowy da stabilne napięcie dopiero po jakimś czasie od załączenia. Jeśli napięcie zasilania będzie narastać, to i narastać będzie napięcie na RESET, zakładając prosty układ RC. W końcu napięcie zasilania będzie na tyle duże by procesor mógł pracować. Jednak nie ma tu mowy o prosty zdefiniowaniu tej wartości. Będzie to zależne od poszczególnych egzemplarzy układu. Zatem korzystnie, by resetować poziomem niskim, który jest niezależny od narastania zasilania.

    Zwróć uwagę, że inwersja RESET następuje w przerzutniku synchronizującym sygnał RESET z zegarem całego systemu. Ma to miejsce w 8224.
  • #26
    BlueDraco
    MCUs specialist
    Niski poziom jest lepszy tylko dlatego, że mamy układy z wyjściem "otwarty kolektor/dren", a nie mamy układów "otwarty emiter/źródło". Gdyby były te drugie i nie było tych pierwszych - lepszy byłby poziom wysoki.

    Natomiast wszelkie żądania czegokolwiek powinny być zgłaszane poziomem, a nie zboczem. Układ wykrywania zbocza (zdarzenia) powinien wystawiać na wyjściu poziom w celu zgłoszenia przerwania. żądanie musi "wisieć" dopóki nie zostanie skasowane - tak wskazuje zdrowy rozsądek. Dlaczego w 8259 i w PC z szyną ISA zrobiono to inaczej - nie wiem. Są z tym samem kłopoty.

    Wracając do konstrukcji retro: Podziwiam ludzi, którzy robią prawdziwe "full retro". Ja jestem zbyt leniwy i wolę komputerek, który mogę poskładać w godzinę i uruchomić w 2 dni, wrzucić do plecaka i podłączyć do PC przez USB. Nawet w prawie-full-retro warto byłoby zastąpić koszmarne i niewygodne w programowaniu stare UARTy 8251 czy 16550 układem, który dla uP byłby widoczny jako prostszy i wygodniejszy nibyUART, a po drugiej stronie miałby VCOM USB. Da się to zrobić łatwo np. z chińskim modułkiem z STM32F103 za 1.80 USD. Uzyskany w tens sposób "układ peryferyjny" może być przy okazji timerem, generatorem zegara i układem RESET dla mikroprocesora.
  • #27
    ghost2000
    Level 18  
    maciej_333 wrote:
    ie jestem pewny dlaczego dla RESET lepszy jest aktywny stan niski. Myślę, że chodzi o kwestie narastania napięcia zasilania po jego załączeniu.

    Dokładnie o to chodzi. Ale Intel wie lepiej.
  • #28
    User removed account
    User removed account  
  • #29
    Atlantis86
    Level 19  
    Hmm... Przyglądam się schematom komputera Altair 8080, dostępnym TUTAJ. Nie mogę się na nich doszukać obwodów sekwencyjnie załączających zasilanie.

    Zasilacza po prostu udostępnia poszczególne, nieco wyższe napięcia, a na karcie procesorowej znajdują się dodatkowe stabilizatory liniowe, produkujące właściwe -5V, 5V i 12V. Żadnych kluczy tranzystorowych nie mogę się doszukać.

    Ktoś może posiada jakieś źródło informacji o konieczności sekwencyjnego załączania napięć? Najlepiej w formie dokumentacji technicznej od Intela albo CEMI? Ewentualnie dokumentację techniczną jakiegoś sprzętu z 8080/MCY7880, gdzie takie rozwiązanie zostało zastosowane?
  • #30
    tmf
    Moderator of Microcontroller designs
    Atlantis86 wrote:

    Ktoś może posiada jakieś źródło informacji o konieczności sekwencyjnego załączania napięć? Najlepiej w formie dokumentacji technicznej od Intela albo CEMI? Ewentualnie dokumentację techniczną jakiegoś sprzętu z 8080/MCY7880, gdzie takie rozwiązanie zostało zastosowane?


    Ta konieczność wynika po prostu z technologii wykonania tego układu. -5V potrzebne jest do odpowiedniej polaryzacji podłoża, przy jego braku dochodzi po prostu do jednego wielkiego zwarcia w strukturze scalonej. Włączanie napięć sekwencyjne jest zalecane, od biedy jeśli napięcia pojawią się (i znikną) jednocześnie to pewnie też jakoś to ujdzie.