„Starożytne” procesory
Re: „Starożytne” procesory
Ostatnio na niemieckiej stronie znanego portalu aukcyjnego pojawiło się szereg płytek drukowanych umożliwiających realizację systemów mikroprocesorowych "z myszką".
Zakupiłem płytkę mikrokomputera na MC68008 oraz - przy okazji - drugą na mikroprocesor 6502. Płytki przyszły w piątek.
MC68008 idzie pocztą z Włoch, a na razie zająłem się 6502:
Kości 6502 oraz 6821 od blisko 40 lat leżały u mnie szufladzie. Jakieś wyluty. Nie szkodzi - ruszyły bez problemu! Potem w innej szufladzie znalazłem pamięć RAM 32KB i dołożyłem.
Byłem ciekaw, jak wypadnie programowanie tego 6502 (rzecz jasna w asemblerze) w porównaniu z pisaniem na Motorolę 6800. I tu się zawiodłem. Prosty test pamięci RAM o rozmiarze 32KB wymagał ekwilibrystyki. Zwiększanie adresu i zmniejszanie licznika angażują akumulator. Test 32KB RAM-u zajmuje ponad 3 sekundy... W tym mikroprocesorze jedyny rejestr 16-bitowy to licznik rozkazów. Nawet rejestry indeksowe są 8-bitowe. Dobrze, że jest przynajmniej mechanizm strony zerowej pamięci, jak w 6800.
Jak dla mnie, Motorola z dwoma akumulatorami i 16-bitowym rejestrem indeksowym kładzie 6502 na łopatki .
Zakupiłem płytkę mikrokomputera na MC68008 oraz - przy okazji - drugą na mikroprocesor 6502. Płytki przyszły w piątek.
MC68008 idzie pocztą z Włoch, a na razie zająłem się 6502:
Kości 6502 oraz 6821 od blisko 40 lat leżały u mnie szufladzie. Jakieś wyluty. Nie szkodzi - ruszyły bez problemu! Potem w innej szufladzie znalazłem pamięć RAM 32KB i dołożyłem.
Byłem ciekaw, jak wypadnie programowanie tego 6502 (rzecz jasna w asemblerze) w porównaniu z pisaniem na Motorolę 6800. I tu się zawiodłem. Prosty test pamięci RAM o rozmiarze 32KB wymagał ekwilibrystyki. Zwiększanie adresu i zmniejszanie licznika angażują akumulator. Test 32KB RAM-u zajmuje ponad 3 sekundy... W tym mikroprocesorze jedyny rejestr 16-bitowy to licznik rozkazów. Nawet rejestry indeksowe są 8-bitowe. Dobrze, że jest przynajmniej mechanizm strony zerowej pamięci, jak w 6800.
Jak dla mnie, Motorola z dwoma akumulatorami i 16-bitowym rejestrem indeksowym kładzie 6502 na łopatki .
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: „Starożytne” procesory
jarekz pisze:Jak dla mnie, Motorola z dwoma akumulatorami i 16-bitowym rejestrem indeksowym kładzie 6502 na łopatki .
Myślę, że pospieszyłeś się z opinią. Od zeszłego roku czytam o 6502 (Chińczyk przysłał mi zamiast zamówionego Z80 ) i nadal nie mogę przestawić mojego toku myślenia... Wcześniej programowałem tylko w asemblerze Z80 (na początku tylko I8080, bo taką miałem literaturę) i nie znałem nawet 6800. Przymierzałem się do 68000, ale odpuściłem, bo życie trochę mnie przygniotło. Pod wpływem Twojego postu przeczytałem kilka porównań, które znalazłem w sieci:
6800 vs 6502,
porównanie sześciu procesorów,
6502,Z80,I86,60k.
Z jakiegoś powodu 6502 był bardziej popularny od 6800 i była to nie tylko cena. Na pewno był najmniej skomplikowany - tylko 3500 tranzystorów, ale miał najwięcej trybów adresowania.
68008 to już 16-bitów, więc jest nieporównywalny. Mam wszystkie elementy do budowy MBC-68k, ale ciągle leży w szufladzie. Może się zmobilizuję i w końcu go zmontuję.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."A. Einstein
X is work. Y is play. Z is keep your mouth shut."A. Einstein
Re: „Starożytne” procesory
Zegar pisze:Z jakiegoś powodu 6502 był bardziej popularny od 6800 i była to nie tylko cena.
Myślę, że w tamtych czasach cena to była kluczowa cecha. W sumie porównanie 6800 do 6502 zawsze wypadnie tak samo jak porównanie 8080 do Z80, bo są to rozwinięte koncepcje tych pierwszych. Zdecydowanie bardziej poprawnym porównaniem byłoby użycie ich następców 6809 i 65C02. Niestety dobór procesora do konkretnego rozwiązania komercyjnego nie idzie w parze z jego wydajnością, architekturą i potencjałem rozwojowym. Doboru dokonuje marketing, księgowi i inwestorzy, czego doskonałym przykładem był wybór 8086 do pierwszego PC zamiast zdecydowanie jego lepszych konkurentów MC68000 (księgowi-zbyt wysoka cena) i Z8000 (inwestorzy-konflikt interesów). Doboru dokonał marketing Intela. Czy było to lepsze rozwiązanie, nie sądzę, 8088 pomimo jego 16-bit w typowych zastosowaniach z łatwością pokonywały go istniejące na rynku 8-bitowce.
Re: „Starożytne” procesory
tapy pisze:gaweł pisze:Jak coś będzie już wiadomo na temat Monteroli , to daj znać
Coś się ruszyło w kwestii MC68000, dokładnie dla jego 8-bitowej wersji 68008. Jeden sympatyk tej architektury postanowił ruszyć ten temat (końcówka tego wątku) i jeśli testy przebiegną pomyślnie, to jego rozwiązania zostaną przyjęte jako standard dla RCBus.
Dopadł mnie Covid, więc postanowiłem to "wykorzystać". Niestety nie zdążyłem się zaszczepić i przebieg choroby jest dużo gorszy niż poprzednie...
Mimo kłopotów z koncentracją i myśleniem w ogóle, polutowałem 68k-MBC. Przeszedłem też wszystkie "magiczne" kroki w programowaniu PIC-a. Najtrudniejsze było dla mnie przejście przez etap "./pp3 -c /dev/ttyACM0 -s 1700 -p -n -t 18f47q10". Nie pracowałem nigdy na Linuksie, więc nie rozumiałem tej linijki. Okazało się, że zamiast "/dev/ttyACM0" należy wpisać COM5 (akurat na tym porcie zgłaszało się moje UNO). Wszystko przebiegło zgodnie z opisem z Hackaday. Podłączyłem płytkę przez FTDI do PUTTy i myślałem, że coś popsułem, bo dostałem błąd.
Na szczęście to z powodu zasilania przez USB. Podłączyłem zewnętrzne 5V i ruszyło.
Podłączyłem też uTerm, monitor i klawiaturę i trochę się pobawiłem. Pierwsze wrażenie jest dosyć słabe, bo system jest tak samo "szybki" jak Z80-MBC2 i V20-MBC. Nie mierzyłem stoperem, ale "ASCIIart" strasznie wolno rysuje. Mam obawy, że problem leży nie w procesorach, ale w kontrolerach, które obsługują system. Niestety nie programowałem nigdy PIC-ów, więc nie zaglądam nawet do źródła, ale program Z80-MBC2 dosyć dokładnie przeanalizowałem i przerobiłem do własnych potrzeb, więc wiem, że można go znacznie przyspieszyć. Trzeba dla porównania zbudować coś alternatywnego.
jarekz pisze:Zakupiłem płytkę mikrokomputera na MC68008
Niestety kolega nie napisał, o jaką płytkę chodzi...
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."A. Einstein
X is work. Y is play. Z is keep your mouth shut."A. Einstein
Re: „Starożytne” procesory
Niestety kolega nie napisał, o jaką płytkę chodzi...
Jest to "ECB Mini-68k CPU Card":
https://www.retrobrewcomputers.org/doku.php?id=boards:ecb:mini-68k:start
Na płytce jest ogromna ilość układów TTL; podejrzewam, że można by było zrobić ją na 2/3 tej ilości scalaków...
Płytkę montowałem przez grudzień, a wczoraj dotarły mikroprocesory.
Podczas uruchamiania znalazłem jeden błąd: linia AS\ nie ma rezystora pull-up, co ma poważne konsekwencje w postaci niepełnego odczytywania wartości SSP i PC po resecie.
Po poprawieniu tego błędu, dogięciu 2 kontaktów w podstawce i kilku innych drobnych poprawkach WCZORAJ SYSTEM RUSZYŁ. Na razie wykonuje się prościutki program, którego efektem działania jest dwukrotne "machanie" sygnałem wyboru CS\ jednej z kostek RAM w pętli nieskończonej.
W trakcie projektowania jest teraz płytka "wejścia/wyjścia", wytwarzająca m.in. sygnał WAIT\ (który po zanegowaniu trafia do procesora jako DTACK\), mająca zawierać wyświetlacz LCD (sterowany bezpośrednio z magistrali mikroprocesora) oraz układ we/wy 68901.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: „Starożytne” procesory
Ładny projekt - ma już 10 lat, więc błędy powinny już być wykryte. Według starej szkoły wszystkie magistrale są buforowane i stąd tyle TTL-i.
Poczytałem trochę o replice Apple1, którą przedstawiłeś poprzednio. Mam kilka pytań, bo nie wszystko jest dla mnie jasne. Zawartość ROM-u jest podana w formie całkowicie dla mnie nieczytelnej, jak sobie z tym poradziłeś? Na płytce jest miejsce na Arduino Nano, które komunikuje się z procesorem poprzez VIA (6821) za pomocą ekspandera. Wygląda na to, że przez jeden z portów podaje kody klawiszy, a z drugiego odczytuje znaki wychodzące na terminal, ale nie znalazłem kompletnego programu, który miałby to robić. Są oddzielne do obsługi klawiatury, do transmisji z ekspanderem itd. Czy już się tym zająłeś? Na Tindie jest oferta zestawu PCB + elementy, ale nie ma w nim Arduino. Rozważam zakup, ale nie wiem, czy warto. Na korzyść przemawia zgodność złącza na krawędzi z RCbus (wygląda bardzo podobnie).
Poczytałem trochę o replice Apple1, którą przedstawiłeś poprzednio. Mam kilka pytań, bo nie wszystko jest dla mnie jasne. Zawartość ROM-u jest podana w formie całkowicie dla mnie nieczytelnej, jak sobie z tym poradziłeś? Na płytce jest miejsce na Arduino Nano, które komunikuje się z procesorem poprzez VIA (6821) za pomocą ekspandera. Wygląda na to, że przez jeden z portów podaje kody klawiszy, a z drugiego odczytuje znaki wychodzące na terminal, ale nie znalazłem kompletnego programu, który miałby to robić. Są oddzielne do obsługi klawiatury, do transmisji z ekspanderem itd. Czy już się tym zająłeś? Na Tindie jest oferta zestawu PCB + elementy, ale nie ma w nim Arduino. Rozważam zakup, ale nie wiem, czy warto. Na korzyść przemawia zgodność złącza na krawędzi z RCbus (wygląda bardzo podobnie).
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."A. Einstein
X is work. Y is play. Z is keep your mouth shut."A. Einstein
Re: „Starożytne” procesory
Ładny projekt - ma już 10 lat, więc błędy powinny już być wykryte.
Wydaje mi się, że u twórcy płytki wszystko działało dobrze - linia AS\ podczas resetu była w stanie wysokim, bo użył układów z serii LS,
a wejście takiego układu podciągało linię AS\ do góry. Ja dałem z jednym wyjątkiem same HCT-y. Podczas resetu AS\ była wysokoomowa, a stan logiczny akurat był niski.
ROM po resecie jest widziany od adresu 0x000000. Sygnał AS\ taktuje 8-bitowy rejestr przesuwny, którego 8. wyjście przełącza ROM do adresu 0x380000 (docelowego). Mechanizm ten pozwala odczytać z ROM-u wartości początkowe SST i PC. U mnie już w momencie wyjścia z resetu pojawiało się pierwsze zbocze AS\ i taktowało rejestr. Więc potem już po 7 odczytanych bajtach ROM zostawał przełączony w obszar 0x380000.
Według starej szkoły wszystkie magistrale są buforowane i stąd tyle TTL-i.
Owszem, to też, ale mam wrażenie, że generalnie w projekcie logikę klejącą stosowano dość rozrzutnie.
Używając tylu układów można było zapewnić więcej możliwości. Nie widzę np. szans użycia mechanizmu sterowania 8-bitowych układów Motoroli sygnałami R/W i E. Sygnały te będę musiał wytworzyć na dodatkowej płytce.
Zapewniono za to możliwość przejmowania magistrali przez inny sterownik, z czego ja na pewno nigdy nie skorzystam.
Poczytałem trochę o replice Apple1, którą przedstawiłeś poprzednio. Mam kilka pytań, bo nie wszystko jest dla mnie jasne.
Zawartość ROM-u jest podana w formie całkowicie dla mnie nieczytelnej, jak sobie z tym poradziłeś?
Na płytce jest miejsce na Arduino Nano, które komunikuje się z procesorem poprzez VIA (6821) za pomocą ekspandera.
Wygląda na to, że przez jeden z portów podaje kody klawiszy, a z drugiego odczytuje znaki wychodzące na terminal,
ale nie znalazłem kompletnego programu, który miałby to robić. Są oddzielne do obsługi klawiatury, do transmisji
z ekspanderem itd. Czy już się tym zająłeś?
Płytkę zmontowałem w wersji "minimum". Jest CPU, RAM i PIA. Być może dodam kiedyś wyświetlacz 16x2, łącze szeregowe MC6850, klawiaturkę
i napiszę jakiś program monitora. Dołączenie Arduino czy generalnie użycie "kanoniczne" tej płytki w ogóle mnie nie interesuje.
Re: „Starożytne” procesory
Zegar pisze: Pierwsze wrażenie jest dosyć słabe, bo system jest tak samo "szybki" jak Z80-MBC2 i V20-MBC.
Wydajność tych rozwiązań jest ograniczana przez przyjęte założenie użycia prostego mikrokontrolera z niezbyt szybkim SPI i kart SD jako pamięci masowej. Wszystkie operacje dyskowe będą powodowały ich spowolnienie.
jarekz pisze:Owszem, to też, ale mam wrażenie, że generalnie w projekcie logikę klejącą stosowano dość rozrzutnie.
Rozrzutność związana jest z zastosowaną magistralą N8VEM i jej wymaganiami, gdyż pochodzi ona z profesjonalnych rozwiązań komputerów modułowych z wieloma modułami na backplane.
Kilka lat temu (jeszcze przed RC2014/RCBus) przymierzałem się do przyjęcia N8VEM jako głównej platformy na której będę skupiał swoją aktywność, lecz ze względu na jego profesjonalne korzenie i wynikające z tego konsekwencje to odrzuciłem ten zamiar. Ogromnym plusem jest standardowy rozmiar eurokart (100x160mm), wadą cena PCB i znaczące straty jej powierzchni w celu zapewnienia buforowania szyny. Podobno społeczność skupiona wokół N8VEM planuje wprowadzić prostszą jego odmianę, już bez buforowania i z krótką eurokartą (100x100mm), lecz nie wiem na jakim etapie są ich prace.
Re: „Starożytne” procesory
Okiełznałem MOS6502. Na razie okrężną drogą, bo miałem zbyt dużo niewiadomych. Zamówiłem tylko płytkę w JLC i brakujące MC6821 i MCP23S17. Resztę już miałem. Przejrzałem całe repo repliki Apple-1 i znalazłem tam prawie wszystko, co było potrzebne. Niestety autor pozmieniał funkcje sygnałów RCbus, więc trzeba było kilka pinów odgiąć i połączyć przewodami. Płytka ma też zamienione strony - elementy są pod spodem.
Na mojej płytce użyłem na razie tylko dekoder adresów, który obszar 0xc000 - 0xc0ff traktuje jako I/O. Moim bootloaderem wytwarzam 1 MHz, bo nie miałem takiego generatora. Można było dopisać trochę kodu do programu w Arduino, ale nie chciało mi się. Za pomocą WozMon wpisywałem różne wartości do rejestrów 8255, który widać pod adresami C0E0-C0E3.
Sprzęt mam przetestowany, więc teraz czas na pisanie programu. Planuję na początek napisać obsługę wyświetlacza CA80 w przerwaniu NMI. Ale to już nie dzisiaj.
P.S. Apple-1 był niesamowicie prosty. WozMon mieści się na jednej stronie (256 bajtów). Jest też Basic i Asembler, ale go jeszcze nie próbowałem.
Na mojej płytce użyłem na razie tylko dekoder adresów, który obszar 0xc000 - 0xc0ff traktuje jako I/O. Moim bootloaderem wytwarzam 1 MHz, bo nie miałem takiego generatora. Można było dopisać trochę kodu do programu w Arduino, ale nie chciało mi się. Za pomocą WozMon wpisywałem różne wartości do rejestrów 8255, który widać pod adresami C0E0-C0E3.
Sprzęt mam przetestowany, więc teraz czas na pisanie programu. Planuję na początek napisać obsługę wyświetlacza CA80 w przerwaniu NMI. Ale to już nie dzisiaj.
P.S. Apple-1 był niesamowicie prosty. WozMon mieści się na jednej stronie (256 bajtów). Jest też Basic i Asembler, ale go jeszcze nie próbowałem.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."A. Einstein
X is work. Y is play. Z is keep your mouth shut."A. Einstein
Re: „Starożytne” procesory
Przeglądałem dzisiaj moje zbiory "starożytnych procesorów" i zaciekawił mnie jeden z feniksem. Wcześniej nie zwróciłem na niego uwagi.
Ma dodatkowy wiersz "SL0965". Wcześniej spotkałem podobne na Z180, np. "SL1919" i "SL1960". Dla Z180 znalazłem noty z opisem różnic, więc wpisałem w wyszukiwarkę i niestety nie było nic oprócz kilku ciekawych zdjęć.
Podobny do mojego.
Przy okazji podpowiedziało mi inne równie ciekawe.
Przybliżenie.
I najładniejsze.
Zdjęcia są bardzo dobrej jakości, więc nacieszyłem oczy, ale nie dowiedziałem się niczego praktycznego. Wybrałem z moich skromnych zasobów kilka w miarę atrakcyjnie wyglądających scalaków (niestety nie mam aż tak urodziwych) i zrobiłem z nich zestaw na WOŚP. Przygotowanie zajęło mi kilka godzin, ale co tam, może ktoś kupi, zamiast wrzucać do puszki... Aukcja rusza w południe, więc wtedy dodam link. Na razie mam tymczasowy.
Ma dodatkowy wiersz "SL0965". Wcześniej spotkałem podobne na Z180, np. "SL1919" i "SL1960". Dla Z180 znalazłem noty z opisem różnic, więc wpisałem w wyszukiwarkę i niestety nie było nic oprócz kilku ciekawych zdjęć.
Podobny do mojego.
Przy okazji podpowiedziało mi inne równie ciekawe.
Przybliżenie.
I najładniejsze.
Zdjęcia są bardzo dobrej jakości, więc nacieszyłem oczy, ale nie dowiedziałem się niczego praktycznego. Wybrałem z moich skromnych zasobów kilka w miarę atrakcyjnie wyglądających scalaków (niestety nie mam aż tak urodziwych) i zrobiłem z nich zestaw na WOŚP. Przygotowanie zajęło mi kilka godzin, ale co tam, może ktoś kupi, zamiast wrzucać do puszki... Aukcja rusza w południe, więc wtedy dodam link. Na razie mam tymczasowy.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."A. Einstein
X is work. Y is play. Z is keep your mouth shut."A. Einstein
Re: „Starożytne” procesory
Zegar pisze:Ma dodatkowy wiersz "SL0965". Wcześniej spotkałem podobne na Z180, np. "SL1919" i "SL1960".
Zilog stosował to oznaczenie przy nietypowych maskach które wprowadzały pewne zmiany w działaniu procesora. W przypadku tego Z80 prawdopodobnie dotyczyły cykli wykonywania niektórych instrukcji, trochę informacji znajdziesz tutaj - wymagany dobry translator
PS. Przy okazji, ma ktoś pewne źródło gdzie mógłbym dostać Z180 SL1960? Procesor ten ma zmienione działanie synchronicznego portu szeregowego i często przypadkowo można na niego natrafić, powodując frustracje posiadacza gdy nie działa on zgodnie z oczekiwaniami. Przy testowaniu software czasami przydaje się posiadanie takiego "odmieńca".
Re: „Starożytne” procesory
tapy pisze: trochę informacji znajdziesz tutaj - wymagany dobry translator
Niestety w tekście nie ma frazy SL0965. Myślę, że zdjęcie jest tylko poglądowe, a wyniki badań dotyczą "zwykłego" Z80. Jak znajdę chwilę, to sprawdzę pracę krokową w CA80. Jeżeli ma krótsze rozkazy, to nie będzie działać prawidłowo.
tapy pisze:PS. Przy okazji, ma ktoś pewne źródło gdzie mógłbym dostać Z180 SL1960? Procesor ten ma zmienione działanie synchronicznego portu szeregowego i często przypadkowo można na niego natrafić, powodując frustracje posiadacza gdy nie działa on zgodnie z oczekiwaniami. Przy testowaniu software czasami przydaje się posiadanie takiego "odmieńca".
Obserwowałem tego sprzedawcę, bo chciałem kupić Z280 i przy okazji widziałem też inne ciekawostki. Wygląda na uczciwego, bo zawsze miał 5.0 SL1960 jest czwarty.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."A. Einstein
X is work. Y is play. Z is keep your mouth shut."A. Einstein
Re: „Starożytne” procesory
AukcjaWOŚPruszyła, więc proszę o aktywny udział. Cena wywoławcza tylko 1 zł.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."A. Einstein
X is work. Y is play. Z is keep your mouth shut."A. Einstein
Re: „Starożytne” procesory
Zegar pisze: Chciałem cofnąć się jeszcze dalej, żeby poczuć klimat nowej przygody, jaka przydarzyła mi się w technikum.
Dziś musiałem wejść na stronę autora posiadanego przez mnie kitu dla Z80, bo zawieruszyłem gdzieś jego dokumentację i przypomniało mi się to co kiedyś tu powiedziałeś. Tam masz odpowiedź na swoje oczekiwania, do wielu egzotycznych procesorów ten twórca zbudował trenażery, jest i tam 6502, z klawiaturą, wyświetlaczem 7-segmentowymym - jak w CA80 (na marginesie ciekawie nim steruje). Na podstawie tych projektów można zbudować komputery przypominające ten nasz kultowy. Link.
Re: „Starożytne” procesory
gaweł pisze:... całkiem niedawno obchodziliśmy 50 rocznicę narodzin pierwszego procesora i4004 ...
25 kwietnia 1961 r. Patent na układ układ scalony
Off Topic
Amerykański inżynier Robert Noyce uzyskał patent na układ scalony - zminiaturyzowane urządzenie zawierające wiele innych elementów elektronicznych takich jak tranzystor, opornik, kondensator czy dioda. W tym samym czasie na ten sam pomysł wpadł Jack Kilby z firmy Texas Instruments. On także ma patent na układ, ale jego konstrukcja różni się budową od wynalazku Noyce’a. Powstanie układu scalonego było kamieniem milowym w rozwoju przemysłu komputerowego, a zwłaszcza w miniaturyzacji urządzeń. Kilby w 2000 r. dostał za swój układ Nagrodę Nobla, a Noyce nazwany "burmistrzem Doliny Krzemowej" zbił na swoim fortunę. Był współzałożycielem firmy Intel, potentata w produkcji układów.
źródło Gazeta Wyborcza
źródło Gazeta Wyborcza
Bez tego wynalazku nie byłoby procesorów.
"If A = success, then the formula is A = X + Y + Z.
X is work. Y is play. Z is keep your mouth shut."A. Einstein
X is work. Y is play. Z is keep your mouth shut."A. Einstein
Re: „Starożytne” procesory
Porty od starych procków: i8212
Tak przy okazji wiosennych porządków w pracowni, natrafiłem na układy 8212 (Intel – 8212, CEMI – UCY74S412, zza wschodniej granicy K589IR12). To całkiem sensny układ portów do procków starej daty. Zanim przyzwyczaiłem się do używania 8255, to te były dobrą alternatywą. I tak sobie wymyśliłem, że może warto je spożytkować w jakiej konstrukcji, ale wcześniej konieczne jest przypomnienie jak się ich używa, bo pamięć jest dobra ale ulotna. W sumie to układ może robić za port wejściowy jak i wyjściowy (w zależności od stanu wejścia określającego tryb pracy MD – pin 2). Jego pinologia to (jest jaka jest, choć obecnie fajniejsze są układy, które mają wejścia po jednej stronie układu a wyjścia po drugiej – tu są naprzemienne):
Układ ma tą fajną cechę, że wpis do rejestru generuje sygnał opisany jako INT, choć nie koniecznie należy go kojarzyć z sygnałem przerwania. W sytuacji, gdy robi za port wejściowy, to rzeczywiście można go podłączyć pod kontroler przerwań a fajność polega na tym, że odczyt gasi ten sygnał (odczyt portu jest tożsamy z potwierdzeniem obsługi przerwania dla portu – nie jest potrzebna dodatkowa logika; niektóre wejścia przerwań w prockach reagują na poziom i przed zakończeniem obsługi przerwania trzeba „gasić” jego przyczynę).
Zrobiłem sobie taki układ badawczy:
Jako port wejściowy (z punktu widzenia procka) jest dla MD=0: „coś” ustawia DI1..DI8 i generuje impuls na STB (z wpisem na zbocze opadające – choć dokładnie to 8212 jest zatrzaskiem). Wyjścia DO1..DO8 są w trzecim stanie. Odczyt zachodzi w sytuacji DS1=0 i DS2=1 (zakończenie odczytu gasi INT).
Początek wpisu: STB=1
Koniec wpisu: STB=0 → pojawia się INT.
Początek odczytu: są dane.
Koniec odczytu: wyjście w trzecim stanie, gaśnie flaga przerwania.
Jako port wyjściowy (MD=1) dane są ciągle dostępne a wpis następuje kombinacją DS1=0 i DS2=1.
Stan pasywny rejestru jako wyjściowego (MD=1).
Wpis do rejestru następuje kombinacją DS1 i DS2 (przykładowo DS1=0, DS2=1).
W czasie, gdy aktywny jest wpis, każda zmiana odbija się na wyjściu (8212 jest zatrzaskiem).
Po „zamknięciu” wpisu, układ 8212 jest nieczuły na zmiany zachodzące na jego wejściu.
Przypomniałem sobie stare rozwiązanie jako dwukierunkowa magistrala między prockami zrealizowana na dwóch rejestrach 74xx574 i dodatkowych przerzutnikach 74xx74. Teraz wystarczą dwa układy 8212.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Prawdziwe słowa nie są przyjemne. Przyjemne słowa nie są prawdziwe.
Lao Tse
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 1 gość