[ megoldva ] Z80 reset megoldás

Van egy Z80 alapú gép, amin még reset gomb sincs, de a Z80 reset lábát a következő kapcsolás hajtja meg (a reset vonal már közvetlenül a Z80 26-os reset lábára megy, U13 = LS04):

A reset vonal ki van vezetve a gép hátoldalán, így gondolom azért van ez a kapcsolás a sima +5V helyett, hogy egy külső eszköz kezdeményezhessen CPU resetet.

Nem lenne elég, ha egy felhúzó ellenálláson keresztül (4k7) lenne rákötve a +5V a reset lábra?

El tudnátok mondani nekem, miért van szükség ilyen összetett kapcsolásra, és mi lehet a feladata?

Hozzászólások

Szerkesztve: 2022. 06. 22., sze – 11:37

Ez véleményem szerint power on reset, azaz addig tartja a CPU-t resetben, amí a kondenzátor ki van sülve, majd amikor a tápfesz bekapcsolásakor feltöltődik, elengedi azt.

U13 meg gondolom schmitt-trigger, hogy ne flappeljen össze-vissza, amikor a kondenzátor feszültsége az alacsony-magas szint határának közelébe ér.

Az U13 (74LS)04, ami pont nem Scmitt trigger.

Helyette 14-es kellene, mert ez az áramkör elméletilieg oszillálhat a feszültség alacsony emelkedési sebessége miatt.

Ha TTL az U13, akkor a RESET vonalat földre lehet kötni kívülről, de nem nyomógombbal, mert az is "recseg".

És ha TTL az U13, akkor 6,8 -> 68 μF jobb lenne - persze ez a táp felállásának sebességétől is függ.

Hogy miért 04? Vagy a nem megfelelő alkatrészt rakták be, vagy pedig éppen ilyen inverter maradt. ;)

Miért ilyen bonyolult az ámramkör? Nem is bonyolult. Erről a pontról kivezetett RESET talán a külső eszközök szinkronizálására szolgál, ekkor az U13 a vonalat hajtja meg.

Van az eszközhöz olyan bővítés, ami reset gombot tartalmaz, de lehet, hogy nem közvetlen a földeli a reset vonalat. Sajna annak a kapcsolását nem láttam.

A gépbe 9 V megy be, és van a gépen bekapcsoló gomb, így gondolom a 9 V azonnali. Ebből egy 7805-ös csinálja azt az 5V-ot, amit minden használ.

Ez egy reset vonal, kit érdekel, hogy átmeneti oszcilláció meg recsegés lehet. Emberi reakcióidő alatt kijön a resetből, és ennyi, ehhez elég lenne egy nyomógomb meg egy 4,7k-s ellenállás, még debouncer meg egyéb se kell. Ez a bonyolított bekötés csak azért kell, hogy a bekapcsolás egyben reset is legyen, és ne kelljen esetleges bekapcsolás után még 2-3× kézzel resetelgetni.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Hozzászólásod eléri az információhiányból eredő véleménycikk színvonalát. ;)

A bekapcsoláskor előállított reset jelnek addig stabil szintűnek kell lennie, amíg a tápegység biztonságosan eléri az összes áramkör megfelelő működéséhez szükséges feszültséget. Ezt az időzítést az elegendően nagy rc tag automatikusan biztosítja.

A reset hatására az adatlapon definiált egyértelmű állapotból indul a cpu. Mivel a Z80 nem mikrokontroller, ezért a csatlakoztatott egyéb áramkörök állapota is lehet többféle:

  • indifferens
  • auto reset a tápfeszültség megjelenésekor
  • cpu reset felhasználásával - ide tartoznak a külső áramkörök is
  • programozott, tehát a program indulása után "mesterséges" alaphelyzetbe kerül
  • hosszabb resetet igénylő aszinkron áramkörök

Tehát: A reset hatására az adatlapon definiált egyértelmű állapotból indul a cpu.

És néha nem. És annyira nem, hogy még egy US Patentet is megért. :-D

Ebből pedig az a tanulság, hogy a vélemény nem számít. Ott az adatlap, amin a gyártó közli a garantált működési módot és annak a feltételeit. A  specifikációtól eltérő feltételek esetei érdektelenek és kerülendők a normál működés során.

Így van, néha nem. Voltak is mikroszámítógépek, amik néha bekapcsolás után instabilak voltak, és resetelni kellett 1-2×, hogy használható legyen, ez a hardverre nem volt káros, max. bosszantó volt néha, ahogy a magnóról betöltés néhai sikertelenségei is. Ezek a 8 bites retró hardverek pont azért jók, hogy egyszerűek, mint a szög, ezekben semmilyen hülyebiztosság, extra védelem, security feature, elágazásbecslés, AI-s húzásól, túlbonyolítás, absztrakció nem volt. Ez nem az a platform, amit megéri túllihegni. Aki bonyodalmora, elegáns megoldásokra hajt, az használ modern hardvert, ott megkapja.

Windows 95/98: 32 bit extension and a graphical shell for a 16 bit patch to an 8 bit operating system originally coded for a 4 bit microprocessor, written by a 2 bit company that can't stand 1 bit of competition.”

Bár mindennek semmi köze ahhoz, amit írtam.

Csak úgy érdekességképp ezekkel a retro (==szar, szerinted) mikrogépekkel készült az első CT. Dolgoztam olyan nx64 csatornás logikai analizátorral, amiben 12 db Z80 végezte a dolgát. (Az alapgép 350 havi fizetésem volt.) Persze mindez független attól, hogy valaki képes-e értelmezni egy adatlapot vagy egyáltalán elolvassa-e. Egy Core i7 is szarul működik, ha nem megfelelő jeleket adsz rá vagy hibás a tápfesz. Ja, és az autódba töltött benzin akár származhat olyan szibériai olajkútból, amit ilyen retro szar vezérel a mai napig.

Min ahogy előttem írták ez egy power on reset. A külső eszköz nem tud resetet kezdeményezni, csak figyelni tudja azt, mivel az U13 nem open collectoros kimenettel rendelkezik.

„Az összeomlás elkerülhetetlen, a katasztrófa valószínű, a kihalás lehetséges.” (Jem Bendell)

A fenti hozzászólások kiegészítéseként:
Ez egy elég gyakori megoldás 8 és 16 bites számítógépeknél. Bekapcsolásnál kell valamennyi idő míg a tápfeszülségek stabilan beállnak. A panelon található szűrőkondenzátoroknak fel kell töltődnie, a tápICknek a feszültségingadozásaiknak le kell csengenie. A digitális áramkörök nem szeretik ha a tápfeszültségük bizonyoz érték alá csökken, ettő nem definiált állapotba állhatnak be. Logikai árakörök hibás állapotot vehetnek fel, memóriákban téves tartalom keletkezhet, processzorok rosszul hajthatnak végre utasításokat. Kényesebb áramköröknél akár az IC(k)  tönkremeneteléhez is vezethet.
A fenti áramkör azt biztosítja, hogy a +5V megjelenése után a 7404 gyártási szórásától függően valahol 65 és 77 ms körül csinál egy meredek felfutó élt és magas szinten tartja a -RESET vonalat. A dióda szerepe, hogy a +5V beesésekor azzal azonos meredekséggel csökkenteni a kondenzátor feszültségét és 1.8-2V körül, kb. ott ahol a TTL ICk kezdenek beborulni, resetbe küldi az egész áramkört.
Amennyiben reset gombot szeretnétek utólag beépíteni, akkor a kondenzátor két lába közé iktassatok be egy NO nyomógombot. A nyomógomb prellengése nem fog prpoblémát okozni, az RC tag időállandója miatt.

Technikatörténeti érdkesség, hogy a ZX spectrumban az RC tag direktben volt a reset lábra kötve. A TVCben, meg egészen komplexre volt megépítve ugyanez az áramkör a 25MHZ-es órajel generátor adta az egyik reset jelet.

"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

TVC-ről szólva, ha egyszer nyomtuk meg a Reset-gombot, akkor még nem veszett el a memóriatartalom, de ha kétszer, abból teljes újraindulás lett.

Ugyanez történt akkor is, ha csak egyszer akartuk megnyomni, de ügyetlenség vagy a nyomógomb (ha lehet annak nevezni) mechanikai gondjai miatt kétszer jutott érvényre.

Szerk: nosztalgiából googléztam egy kicsit, fogtam egy ilyet: http://tvc.homeserver.hu/html/konvertbascas.html

TVC tervezésében és felépítésében elég komoly, dolgok voltak elrejtve és látszik, hogy nem csak egy szimpla home computer volt a cél. Valószínűleg egy kicsit más környezetben, jobb időben való megjelenéssel, sokkal komolyabb hatása lehetett volna.

Amit hiányolok, az egy jó wavról CASra konvertáló program. Van pár kazettám, amit jó lenne megmenteni az enyészettől. Pl. az első nyákterveimet (nyakterv), vagy rajzaimat (varazsecset).

"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "

Hm... Z80. Ezen tanultam meg a szakma alapjait. Mai napig tudnám assemblyben programozni, ha erre lenne szükség. Ontopic nem szólok hozzá, mert a többiek mindent elmondtak. Illetve egyet mégis. A két 74LS04 kapu ugyan kevéssé elegáns, mint a HC(T)14 vagy LS14, ugyanakkor elég nagy a feszültségerősítése egy ilyennek ott, ahol alacsonyból magas szintbe és fordítva megy át. A két kapu egymás után már kellemesen nagy jelmeredekséget fog okozni.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Nagyobb meredekség kell? Tegyél be két inverter!
Késleltetés kell? Tegyél be két invertert!
Nagyobb kimenő áram kell? Tegyél be négy invertert! (Egy sorba, három párhuzamosan 10 Ohmokkal.)
Tirisztor kell? Tegyél be két invertert és csatold vissza egy ellenállással!

"Maradt még 2 kB-om. Teszek bele egy TCP-IP stacket és egy bootlogót. "