OldComp.cz
http://www.oldcomp.cz/

I8080 periferie k Z80
http://www.oldcomp.cz/viewtopic.php?f=122&t=5579
Stránka 11

Autor:  Mikes21 [ 26.09.2017, 15:48 ]
Předmět příspěvku:  I8080 periferie k Z80

Trochu jsem premyslel, jak by se daly pripojit nejake periferni obvody od i8080 k Z80.
Jedna se napriklad o obvod 8155. Jenze ten pouziva signal ALE pro zachyceni adresy ze zbernice (sestupna hrana). Poradil by mi nekdo znaly, jak na Z80 vyrobit signal ALE? Nebo staci jen ALE vstup u 8155 spojit s /IORQ a /RD a /WR s /RD a /WR? CE bych generoval klasicky pres LS138.

Autor:  Busy [ 26.09.2017, 16:37 ]
Předmět příspěvku:  Re: I8080 periferie k Z80

S pripajanim periferii od 8080 k Z80 obvykle nebyva ziadny problem, staci zapojit zbernicove signaly RD,WR na RD a WR procesora a do dekodera pre CS pridat aj dekodovanie signalu MEMRQ ktory ma Z80 "navyse" voci 8080. Bez problemov sa daju takto pripojit napr. obvody 8251,8253,8255. A este treba dat pozor na rychlost perifernych obvodov ak Z80 ma vyssi takt ako 8080.

PS: 8155 nie je periferny obvod pre 8080, ale pre *51 ktora signal ALE ma uz priamo na sebe.

Autor:  danhard [ 26.09.2017, 16:44 ]
Předmět příspěvku:  Re: I8080 periferie k Z80

8155 není brouk k 8080, ale k 8085,nebo 8048?, 8051 s multiplexovanou data_adress sběrnicí.

Autor:  Mikes21 [ 27.09.2017, 08:58 ]
Předmět příspěvku:  Re: I8080 periferie k Z80

Aha, tak jsem udelal chybu. Otazka presto zustava: Jde pripojit konkretne 8155 s mixovanou AD sbernici a signalem ALE k Z80? Nebo presneji jak?

Autor:  danhard [ 27.09.2017, 10:09 ]
Předmět příspěvku:  Re: I8080 periferie k Z80

Nejde jen o signál ALE, ale hlavně tam nejde po datové sběrnici spodní část adresy.
Na rozšíření portů na Z80 můžeš použít 8255 od 8080, nebo přímo porty pro Z80 PIO, nebo jakýkoliv diskrétní port.

Autor:  Nostalcomp [ 29.09.2017, 11:00 ]
Předmět příspěvku:  Re: I8080 periferie k Z80

Tak tomuhle říkám výzva! Sice jsem zpočátku nechápal, proč by se někdo měl zabývat připojováním Comba 8155 k Z80, ale nakonec mi to nepřijde jako úplně špatnej nápad. Přeci jen se ten kousíček RAM a nějaký ty paralelní porty v jednom čipu hodí. O timeru nemluvě. Ale pořádný důvod by se našel v případě 8256 MUART, viz http://nostalcomp.cz/p8256.php. Paralení porty, timery a hlavně sériák v jednom, to už se vyplatí.

Tak jsem o tom přemýšlel a napadlo mě následující řešení. Podotýkám, že je to jen teorie a není to prakticky ověřeno, na to jsem neměl čas. Také jsem ještě nekontroloval časování z hlediska délky trvání jednotlivých signálů, ale myslím, že by to chodit mohlo. Pochopitelně nepočítám-li moderní extrémně rychlé varianty CPU Z80.

V principu jde o to, že by se celý obvod 8155 nebo 8256 obsluhoval pomocí instrukcí IN a OUT. K tomu by bylo nutné vytvořit jednoduché rutiny pro čtení/zápis do obvodu. Z hlediska softwaru primitivní.

Z hlediska HW je nutné si pomoci několika obvody dle přiloženého schématu. Až na latch registr typu D se jedná o klasickou kombinační logiku. Myslím, že by to celé mohlo být klidně i v nějakém GALu, ale pro názornost se budu držet diskrétních obvodů. Na schématu jsou dvě varianty generování signálu /CE pro komba. Popsány budou níže.

Popis zapojení:

Počáteční RESET obvodů je vyřešen společně s resetem CPU, jen je nutné signál invertovat.

Řízení přístupu k 8155, 8256 zajišťuje adresový dekodér typu 74138 (3205), který je klasicky uvolňovaný signálem /IORQ s blokací /M1 (kvůli přerušení). Obvod generuje pomocné signály /X, které se pak používají k dalšímu řízení toku dat.

Pro nastavení příznaku IO/M u 8155 je použit záchytný registr typu D zachycující sestupnou hranou (7475, 74373, apod). U 8256 by tato část odpadla, protože nemá IO/M vstup.

Signál ALE tvoří invertovaný signál /WR podmíněný signálem /X1

Signály /RD a /WR jsou standardní, pouze hradlované pomocí /X2

Signál /CE je tvořen hradlem AND z pomocných /X1 a /X2 (varianta 1)


SW obsluha 8155 by pak byla následující (3 kroky):

1) Zápisem OUT (0),A volíme, zda u 8155 budeme pracovat s RAM (A=0), nebo periferiemi (A=1). V tomto kroku se aktivuje pomocný signál /X0, který spolu se zapisovacím impulsem /WR přepíše nejnižší datový bit D0 do pomocného latche.

2) Zápisem OUT (1),A vytvoříme signál ALE. Ve střadači A musí být osmibitová adresa pro 8155/8256, kterou obvod zachytí ve svém interním registru. Pochopitelně je spolu s ALE obvod vybrán pomocí aktivního /CE.

3) Zápisem OUT (2),A ,nebo čtením IN (2),A zapíšeme, nebo vyzvedneme data z 8155/8256. Data jdou pochopitelně přes střadač A. Signály /WR a /RD jsou hradlovány pomocným signálem /X2, který zároveň aktivuje vybraný obvod pomocí jeho /CE. U signálu /RD není hradlování nutné, ale u /WR již ano, aby nebyl /WR 8155 aktivován během tvorby ALE! Nicméně, jak bude popsáno dále, je vhodné hradlovat oba signály.

Trochu mi dělá starost to, že dle diagramu časování Z80 končí signály /IORQ a /WR ve stejný okamžik. To by mohl být problém zejména u tvorby signálu ALE (krok 2).

Zde jsou možná tři řešení:

1) prodloužit dobu trvání /IORQ (MKO či RC prodlužující puls)

2) zkrátit dobu trvání /WR Z80 (MKO či RC zkracující puls) - lepší

3) pomocí RS klopného obvodu před zápisem ALE aktivovat /CE natrvalo a shazovat jej dalším pomocným signálem /X3. V tom případě by musel v obsluze následovat ještě krok 4 tvořený "plonkovou" instrukcí IN (3),A nebo OUT (3),A. Jejím vykonáním by se pouze shodil výběr /CE a jinak by se nic neprovádělo. Na obsahu A by nezáleželo. V tomto případě je nutné signálem /X2 hradlovat jak /RD, tak /WR! Toto řešení je také zakresleno ve schématu.


Pokud to někdo vyzkouší, nebo zde najde nějaké moje zásadní pochybení v úvahách, prosím dejte vědět!

Poznámka: Kromě Comba 8155, existuje ještě varianta 8156 lišící se pouze opačnou úrovní CE. Úprava na tento obvod je snad dostatečně triviální. U řešení s jedním hradlem se místo AND použije NAND. U řešení s RS se použije druhý výstup.

Přílohy:
8155_k_z80.jpg
8155_k_z80.jpg [ 76.4 KiB | Zobrazeno 8785 krát ]

Autor:  Nostalcomp [ 29.09.2017, 12:51 ]
Předmět příspěvku:  Re: I8080 periferie k Z80

Myslím, že stejným způsobem by šly obvody se vstupem ALE připojit i k CPU 8080. Signál /M1 na dekodéru se nahradí trvalou log.1 a signál /IORQ se nahradí signálem vzniklým jako /IORD AND /IOWR. Pak by to asi rovnou chtělo tu verzi s RS klopákem pro generování /CE. Tohle už by se vyzkoušet dalo třeba s PMI, které má vyvedenou systémovou sběrnici. Ještě mám nějaké Unikarty, tak si možná některý večer pohraju :-)

Analogicky, jako vše výše uvedené, by bylo možné kombo obvody namapovat i do paměťových adresových prostorů Z80, resp. 8080.

Autor:  danhard [ 29.09.2017, 17:58 ]
Předmět příspěvku:  Re: I8080 periferie k Z80

V podstatě se tam musí lézt na dvakrát.
Poprvé se instrukcí OUT vygeneruje ALE + obsah adresové sběrnice + CE + IO/M a podruhé se udělá přístup do datové oblasti.
V podstatě by měl stači jeden adresovej dekodér na /IORQ, /RD a /WR se volí adresou, je zapotřebí potlačit /M1, na signál ALE je potřeba inverze.
Jedna 74138 a nějaké hradlo, 7410.

HADEX jich má dostatek :)
http://www.hadex.cz/e414-mhb8155h-dil40/

Jako exot mám NSC800N, ten se chová podobně jako 8085, ale instrukční sadu má jako Z80.

Autor:  Nostalcomp [ 30.09.2017, 12:24 ]
Předmět příspěvku:  Re: I8080 periferie k Z80

Bingo! Chtělo to trochu vyvětrat mozek jízdou na bicyklu :-) Až tam mi došlo, že /CE a IO/M jsou u combo obvodů latchovaný uvnitř, takže ten D registr je úplně zbytečnej a oba signály můžou nahradit adresový signály. Taky ten požadovaný přesah /CE oproti ALE bude dle diagramu a tabulky časování Z80 spolehlivě dodržen.

Ale pořád jsem se zuby nehty držel toho hradlování signálů /RD a /WR. Holt zvyk. Sice by to ničemu nevadilo, ale je to zbytečný. Opravdu se můžou "vytáhnout" z dekodéru přímo. Takže Danhardovi dík za nakopnutí.

Tím se celé zapojení opravdu redukuje na dekodér a jeden invertor. V případě 8080 pak ještě jedno AND hradlo. Zkusím to s tím PMIčkem. Je to tak jednoduchý, že se to dá na nepájivém poli a na to už si čas udělám. Dám vědět, jak to dopadlo a přidám to propojení CPU s 8155.

Autor:  danhard [ 30.09.2017, 17:02 ]
Předmět příspěvku:  Re: I8080 periferie k Z80

To já jsem dnes zakončil výlet na bicyklu držkopádem a orbou asfaltu rypákem :lol:

Autor:  Mikes21 [ 30.09.2017, 22:00 ]
Předmět příspěvku:  Re: I8080 periferie k Z80

Tu 8256 jsem mel na mysli taky. A kdyz mi 'pristala' na stole, tak dvakrat. Jen jsem to nechtel az tak moc komplikovat ;-)
Puvodni myslenka byla zalozena taky na tech dekoderech, ale nemel jsem cas ani odvahu to zkouset. A pak me odradilo zkoumani specifikaci. Rikal jsem si, ze lepsi je prakticka zkusenost. Proto to tema tady.
Jestli to nekdo zkusite (kdo mate vice zkusenosti), tak budu moc rad. A pro PMI-80 bych to taky vyuzil. Alespon bych ji opet vytahnul, oprasil a trochu si zablbnul.

Jo, ale na kole to zkouset nebudu :-)

Stránka 11 Všechny časy jsou v UTC + 1 hodina [ Letní čas ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/