Konference: Počítač SHARP MZ-800 a emulátory
Od: | Petr Žydek |
Datum: | 2.6.2003 09:09 |
Předmět: | novinky okolo 16bit IDE |
novinky okolo 16bit IDE: |
Dnes jsem se rozhodl předložit další
variantu 16ti bitového IDE, korekce byly
významnější než jsem čekal, proto bych
to rozvedl podrobněji.
Díky za doplňující informaci od Marka
Šmihly týkající se repetičních I/O
instrukcí, pro nezasvěcené sděluji
informaci, kterou jsem sám nevěděl:
obsah B registru nejprve dekrementuje
a pak se teprve odesílá na A8-A15!
Tento fakt nicméně nebrání funkčnosti
mého zařízení, je třeba k tomu
přihlížet při vymýšlení obsahu
Eprom-dekodéru. Pro sjednocení ovládání
ovšem navrhuju užít původních konvencí,
tj. je-li např. B=02h, pak se OUTem
odesílá JEDNA 16tice, sudá hodnota B
uvozuje 0. bajt, lichá 1. bajt (skutečnost,
že je před odesláním nultého bajtu B=01h,
se vyřeší tím, že dekodér zareaguje při
A7..A0=78h a A8=1, při odesílání 1. bajtu
je tomu naopak).
Teď ještě jednou definice I/O přenosů:
-při [OUT 78h a B je sudé] se posílá 0. bajt
z 16ti bitového páru na DD0-DD7. Tento bajt
se zachytí v registru, HDD není selektován.
-při následném [OUT 78h a B je liché] se
zachycená hodnota z registru odbaví na DD0-DD7
HDD a právě odesílaný 1. bajt přes transreceiver
projde na DD8-DD15 HDD, disk je selektován.
"HDD ani netuší, že data do něj tekoucí byla
připravena nadvakrát", analogicky toto platí
i pro čtení.
-při [IN 78h a B je sudé] je disk selektován,
dodá na DD0-DD7 a DD8-DD15 JEDNU 16tici dat
k převzetí procesorem. 0. bajt na DD0-DD7
projde transreceiverem na datovou sběrnici
počítače a zároveň dojde k zachycení bajtu
z DD8-DD15 do registru.
-při [IN 78h a B je liché] disk není selektován
a zachycená hodnota z registru se převezme
do počítače jako 1. bajt. V tomto případě "HDD
netuší, že počítač zbaštil data ve dvou cyklech".
-při libovolné I/O instrukci v rozsahu adres
79-7Fh se blokuje přístup na DD8-DD15 HDD,
řadič je průchozí pro datové přenosy
počítač <--> DD0-DD7 HDD.
-jediné omezení se týká programové obsluhy
v režimu 8 bitového IDE, B se musí udržovat
sudé a čítání bajtů a dozor nad přenesenými
bajty musí vhodným způsobem zastat program
(to snad nevadí, těžiště zájmu snad přebere
16ti bitová varianta a tento režim zůstane
kvůli kompatibilitě a přenosnosti dat z disků
naplněných "8 bitově")
-v režimu 16ti bitového IDE se B jen iniciuje,
I/O instrukcemi s nepřímou adresou(!!!) se
mění sám (myslím repetiční instrukce)
Po analýze předchozího jsem objevil závažnou
chybu v původním návrhu, pro zápis je IC pro
dolní část IDE ve funkci registru a IC pro horní
část IDE ve funkci transreceiveru; pro čtení
je tomu naopak!!! Je to proto, že zápis jsou
"dva bajty po sobě odeslané, do HDD najednou
přijaté" a čtení jsou "dva bajty přijaté
najednou po jednom procesorem zbaštěné" (to je
matoucí sdělení, že???).
Proto NELZE použít původně navrhovaných obvodů,
nový návrh stále počítá s třemi obvody a jmenují
se:
-27xxx (Eprom-dekodér, dále jen dekodér) kusů: 1
-74LS543 (8xtransreceiver-register) kusů:2
Možné varianty
-LS543 (HC543, HCT543, F543) jsou jen v pouzdrech
DIP24-úzké, resp. 543 SMD miniaturní pouzdro
pro povrchovou montáž, má smysl pro kombo desky,
kde se musí šetřit místem.
Má ho GES (podle víkendového stavu na fer-netu)
za neskutečných cca 100Kč bez DPH!!!
Obdobnou funkci plní LS646 a LS652, mají ovšem
jiné řídící piny a registry jsou řízeny hranou,
LS543 má registry typu LS573-latch transparent,
což mi přijde více kompatýbl pro časování I/O
operací. Ovšem bez výroby prototypu a malého
zkušebního programu to nepůjde, neberu
zodpovědnost absolutně za nic. Ze staré ISA karty
mám doma 1ks F543, ještě jednoho a můžeme zkoušet.
-otázka dekodéru je mnohem širší: EPROM, EEPROM,
PEROM nejrůznějších kapacit a pouzder
Přehled paměťových dekodérů
-2732 4Kx8
(+) pouzdro DIP24, minimální návrh "3 IC" řadiče
jako u 8 bitového s LS10
(-) dnes horší dostupnost a cena=?
-27(C)64 8Kx8 DIP28
(+) cena
(-) větší pouzdro DIP28, dostupnost
-27128 16Kx8
(+) jen kompatibilita (je to ROM Sharpa)
(-) cena
(-) větší pouzdro DIP28, dostupnost
(-) není ve verzi CMOS
-27(C)256 32Kx8
(+) cena, dostupnost
(-) větší pouzdro DIP28
-27(C)512 64Kx8
(+) cena, dostupnost
(-) větší pouzdro DIP28
-28(C)64 8Kx8
(+) EEPROM (pro odladění prototypu sqjelé)
(+) pouzdro DIP28 i PLCC32 SMD (kombo desky)
(?) cena, dostupnost
(-) větší pouzdro DIP28
-29C256 32Kx8
(+) PEROM, tj. nová generace EEPROM
(pro odladění prototypu sqjelé)
(+) pouzdro DIP28 i PLCC32 SMD
(verze DIP28 se hodí pro experimentální
vývoj ROMky Sharpa, pinově a obsahově
kompatibilní při A14=1)
(+) dostupnost, cena=?
(-) větší pouzdro DIP28
-29C512 64Kx8
(+) PEROM, tj. nová generace EEPROM
(pro odladění prototypu sqjelé)
(+) pouzdro PLCC32 SMD (jediné má smysl)
(+) dostupnost, cena=?
(+) k mání na starších HDD Seagate např.
1.7GB (cvaká-li takovýto disk, máte
ho zadarmo a paměť šikovný člověk
snadno odebéře)
-27C1024 OTP 64Kx16
-29C1024 64Kx16
speciální varianta pro fajnšmekry, jedná
se o jedinkrát programovatelnou EPROM
(27C1024), resp. PEROM (29C1024),
organizace 64Kx16 umožňuje návrh
dvoukanálového IDE z pěti obvodů, struktura
s LS543 je pak na desce přítomna dvakrát,
dekodér je jediný, selekce I/O portů např.
68-6Fh by se prováděla z volných vyšších
osmi výstupů Q8-Q15 paměti.
Poznámky
-u nejjednodušší varianty "sólo IDE"
doporučuju 2x F543 DIP24, 1x 2732
(záleží na jaké paměti z hlediska
ceny a dostupnosti se MZ-fórum dohodne)
-u návrhů s rezervou pro FD/RD je nejlepší
řešení 29C512 SMD a 2x F543 SMD
-základní schéma zapojení bude s 2732,
návrhy s jinými EPROM musí mít piny A12
a vyšší připojené na LOW, piny /WE, /PGM
RD/B, Upp musí být na takových úrovních,
aby byla paměť v režimu čtení (závisí na
typu paměti)
-postupně uveřejním schéma, tabulky hodnot
dekodéru (z hlediska signálů z CPU i
z hlediska výstupních pinů přiřazených
signálům do obou xx543 a /SELP do HDD)
-už něvládzem, jsem grogy; 2.6. 2003 0:36
Petr de Zviqov
Ostatní příspěvky vlákna:
[2003/1 (22)] [2003/2 (25)] [2003/3 (14)] [2003/4 (20)] [2003/5 (73)] [2003/6 (108)] [2003/7 (88)] [2003/8 (81)] [2003/9 (146)] [2003/10 (60)] [2003/11 (12)] [2003/12 (5)]