V problematike predĺženia a posilnenia zbernice ZX Spectra nie je roky nič nové.
Je to vcelku logické, lebo sa jedná o veľmi komplikovanú záležitosť.
Poďme sa na to pozrieť zblízka.
ZX Spectrum má vyvedenú zbernicu na priamy konektor s 2x27 vývodmi (nepočítajúc vodiacu štrbinu).
Jednotlivé signály popisuje tabuľka:
/* hoci dokumenty výrobcu popisujú, že v čase DMA je signál vo vysokej impedancii, nie je to pravda, signál zostáva v úrovni log. 1.
Počítač má periférie vlastné (napr. klávesnica), ale aj periférie externé (ZX IF1). Zvyšok sú periférie, ktoré sú pripojiteľné užívateľom. ZX Interface I je vyňatý zámerne, nakoľko vzhľadom na špecifický tvar sa musí pripojiť priamo za počítač bez akýchkoľvek medzičlánkov.
Z hľadiska variability treba vždy počítať s tymito možnosťami:
- periféria je pripojená priamo na konektor počítača (pred posilňovač zbernice)
- periféria je pripojená za posilňovač zbernice.
Nikdy nie je možné zabrániť, aby užívateľ pripojil hocijakú perifériu, i viac periférií priamo na konektor počítača a nevyužil posilňovač.
Z hľadiska funkčnosti
- môže počítač inštrukciami výstupu ovplyvňovať niekoľko periférií súčasne (napr. zapisovať do externej RAM súčasne so zápisom do internej RAM, dtto platí o portoch, príkladom je klonovanie farieb borderu pomocou RGB LED)
- môže počítač inštrukciami vstupu ovplyvňovať niekoľko periférií, pokiaľ je HW navrhnutý tak, že nenastávajú kolízie (napr. nemôžu byť súčasne aktívne vonkajšia ja vnútorná pamäť, ale môžu byť aktívne porty, využívajúce len niektoré dátové bity, alebo ak je na zbernici hierarchia- napr. Interface II má prednosť pred klávesnicou, lebo hodnoty z klávesnice idú cez rezistory)
- ZX Spectrum má cez odporový oddeľovač pripojenú video zbernicu, ktorej signály presakujú na dátovú zbernicu, pokiaľ na nej nie je aktívny iný "silnejší" obvod
- nie je možné predpokladať, ktorá periféria (alebo periférie) bude v režime vstupu aktívna, môže to byť vnútorná, priama, ale aj posilnená (príkladom môže byť pripojený INTERFACE II na zbernicu počítača alebo za posilňovačom) - stav na zbernici je závislý na stlačenej klávese ale aj na joysticku
DMA
Je niekoľko periférií, ktoré využívajú DMA mód. Ak má byť posilňovač univerzálny, treba túto možnosť zahrnúť do analýzy.
Doposiaľ identifikované periférie, ktoré využívajú DMA:
- Datagear
- MB02
WAIT
tento signál môže byť tak vstupný, ako aj výstupný (pri DMA). Aj Amstadovské verzie Spectra využívajú signál WAIT namiesto pozastavenia hodín, čo robila ULA.
Periférie, ktoré využívajú DMA:
- DISCiPLE (in)
- Datagear (out)
- MB02 (out)
Toto sú východiská, s ktorými je nutné sa popasovať pri návrhu.
Nakritickejší moment je stav zbernice počas inštrukcií čítania (IORQ+RD, MREQ+RD), kedy môže nastať kolízia, pretože má byť aktívna iba jediná periféria, ktorá posiela dáta na dátovú zbernicu. Pokiaľ je to periféria interná, alebo pred posilňovačom, prenos na posilňovači musí byť zakázaný. A ak je to periféria za posilňovačom, prenos musí byť povolený.
Ako teda rozoznať, či inštrukcia aktivovala perifériu alebo nie a podľa toho zapnúť posilnenie?
Jediným možným riešením je sledovať, či sa na dátovej zbernici objavili dáta. Ale dáta skutočné, nielen pseudostavy z pullup rezistorov.
Ako východisko bolo zvolené publikované riešenie z roku 1986, kedy sa sleduje stav log. 0 na dátovej zbernici (toto riešenie bolo ešte vylešené tým, že sa nesleduje dátová zbernica ako celok, ale každý bit sa testuje a posilňuje samostatne). To signalizuje, že periféria bola aktivovaná a vysiela dáta. Zapojenie predpokladá, že ak by boli na zbernici len log. 1, tak periféria je buď neaktívna, alebo vložila na zbernicu hodnotu FF. Vtedy sa však prenos neaktivuje a má sa za to, že hodnota FF je načítaná vďaka interným pull-up rezistorom. Žiaľ tento predpoklad je totálne nesprávny, lebo v tom čase môže (ale nemusí) nastať priesak z videozbernice a inštrukcia vstupu načíta nesprávnu hodnotu. Práve preto je toto riešenie nepoužiteľné, a publikované zapojenie nikdy nemohlo fungovať správne!
Táto verzia posilňovača bola založená na nefunčnom publikovanom zapojení z roku 1986.
Po malých úpravách je vhodná pre ZX81.
Publikované zapojenie z roku 1986, využívajúce dva štvorbitové obojsmerné posilňovače.
Pravdepodobne si ho nikto nepostavil, a ak áno, musel byť sklamaný výsledkom.
Aké sú ďalšie možnosti prístupu k riešeniu?
1) ignorantský, t. j. posilniť dátové signály pri čítaní a oddeliť ich od zbernice ZX radom rezistorov, čím síce kolízia nastane, ale vysporiadajú sa s ňou prúdy na rezistoroch (pre mňa riešenie neakceptovateľné)
2) časovo rozlíšený, t. j. načítať stavy zbernice v dvoch krátkych intervaloch po sebe a z rozdielu zistiť, ktoré bity dátovej zbernice sú aktívne (riešenie vcelku jednoduché, ale hodnota na dátovej zbernici by musela byť stabilná počas poslednej polperiódy signálu RD, čo sa nedá zaručiť)
3) napäťovo rozlíšený, t. j. zistiť stav zbernice na základe analýzy napäťových úrovní pomocou rýchlych napäťových komparátorov (príliš komplikované, hoci realizovateľné riešenie, treba však počítať s vyššou cenou, rýchle napäťové komparátory sú dosť drahé a je ich treba 16)
Je na tejto stránke nejaký nezmysel? Dajte mi vedieť.