Čím jiným začít, než fyzickým zapojením procesoru 6809…

Možná nepřekvapí jistá podobnost s procesorem 6502. Je to logické, protože, jak jsme si už několikrát řekli, 6502 i 6809 vycházejí ideově z téhož předchůdce, 6800.

Popis vývodů

Procesor má vyvedené obě hlavní sběrnice, jak datovou (D0 – D7), tak adresní (A0 – A15). Tady nás nečeká žádné překvapení. Signály nejsou multiplexované a jsou plně k dispozici.

Vstup /RESET slouží k inicializaci procesoru do výchozího stavu. Na vstupu je Schmittův klopný obvod, takže stačí jednoduché zapojení s kondenzátorem a rezistorem, podobně jako u předchozích počítačů. Po RESETu se načte adresa (2 bajty) z adres FFFEh a FFFFh a získaná hodnota se použije k nastavení programového čítače PC. Nezapomeňte, že 6809 používá ukládání ve stylu Big Endian, tedy nejprve vyšší část adresy, poté nižší. Vyšší část tedy bude na adrese FFFEh, nižší na FFFFh.

Výstup R/W informuje okolí o tom, jestli procesor hodlá číst (=1), nebo zapisovat (=0). Opět, podobně jako u 6502, se nerozlišují periferie a paměť, pro procesor je vše „paměť“.

Pro připojení krystalu se používají vývody XTAL a EXTAL. Pokud použijete externí generátor časovacích pulsů, přiveďte signál na vstup EXTAL a XTAL nechte nezapojený.

Uvnitř poběží procesor na frekvenci, která je rovna čtvrtině frekvence krystalu (popřípadě přivedené frekvenci). U OMEN Kilo jsem tedy použil frekvenci 7,3728 MHz, která po podělení čtyřmi dává naši oblíbenou pracovní frekvenci 1,8432 MHz.

Existují tři varianty tohoto procesoru, které seliší podle maximální pracovní frekvence: 6809, 68A09 a 68B09. Varianta bezpísmene pracuje na frekvenci 1 MHz, varianta A používá 1,5 MHz a varianta Bmůže pracovat až s frekvencí 2 MHz (to znamená, že externí krystal můžemít frekvenci 4, 6, resp. 8 MHz).

Pro řízení vnějších obvodů slouží hodinové signály E a Q. E má stejnou funkci, jakou má u 6502 výstup PHI2. Sestupnou hranou na výstupu E oznamuje procesor, že začíná operační cyklus. Poté přijde vzestupná hrana na výstupu Q a oznámí, že na adresní sběrnici je platná adresa. Následuje vzestupná hrana signálu E, sestupná signálu Q (bez speciálního významu) a celý cyklus ukončuje (a zároveň zahajuje nový) sestupná hrana signálu E, při níž přečte procesor data ze sběrnice.

Pro většinu jednoduchých případů můžeme signál Q (Quadrature time) ignorovat a pracovat pouze se signálem E, stejně jako u 6502.

Pozor na variantu 6809E! Tato varianta nemá interní oscilátor, vyžaduje externí generátor dvoufázových hodin a zapojení vývodů je lehce odlišné.

Výstupy BA a BS informují o tom, zda je procesor odpojený od sběrnice (ve stavu HALT / DMA) či zda reaguje na požadavek na přerušení apod. Za normálního chodu jsou oba v 0 a pokud nepotřebujete nějak speciálně reagovat na výjimečné stavy, můžete oba ignorovat.

Vstup MRDY slouží k témuž, k čemu sloužily vstupy READY, /WAIT či RDY – informuje o tom, že externí obvody nezpracovaly požadavek a že potřebují, aby procesor počkal. Pokud je tento vstup v log. 0, hodiny se zastaví ve stavu E=1, Q=0 a čeká se, až bude MRDY opět 1. Teprve pak procesor dokončí čtení dat, popřípadě přestane posílat data k zápisu, a pokračuje se dál.

Vstup /DMA/BREQ slouží k přerušení práce procesoru a jeho odpojení od sběrnice. Pokud je na tomto vstupu na konci aktuálního cyklu 0, procesor se uvede do stavu DMA a uvolní sběrnici. Uvolnění sběrnice signalizuje nastavením BS = BA = 1. Okolní zařízení teď má až 15 cyklů na to, aby si udělalo, co je potřeba. Po 15 cyklech si procesor vezme dva cykly pro vnitřní refresh a na tu dobu nastaví BS = BA = 0. Pokud stále trvá požadavek na DMA, celý postup se opakuje.

Vstup /HALT zastaví procesor podobně jako předchozí vstup. Do stavu HALT se procesor přepne poté, co dokončí aktuálně prováděnou instrukci. Opět se odpojí od datové i adresní sběrnice, odpojí i výstup R/W, a nastaví BS = BA = 1.

Přerušení

Poslední tři vstupy, o nichž jsem se ještě nezmínil, jsou vstupy /NMI, /FIRQ a /IRQ. Jejich stav je vyhodnocován ve chvíli sestupné hrany Q (E=1).

/NMI je dobře známé „nemaskovatelné přerušení“. Logická 0 na tomto vstupu vyvolá přerušení, které programátor nemůže programově zamaskovat. Jediná výjimka je těsně po RESETu, dokud není nastaven obsah v registru ukazatele zásobníku (S). Po detekování požadavku na NMI je na zásobník automaticky uložen obsah registrů PC, U, Y, X, DP, A, B a CC a procesor si z adres FFFCh a FFFDh načte adresu obsluhy nemaskovatelného přerušení. Toto přerušení má zároveň nejvyšší prioritu.

Téměř identicky se chová požadavek /IRQ. Dva rozdíly tu ale jsou. Zaprvé: adresa obsluhy přerušení se bere z adres FFF8h a FFF9h. A zadruhé: pokud je bit I v registru CC roven 1, přerušení se nevykoná.

Vstup /FIRQ (Fast IRQ) funguje obdobně jako IRQ. I tento vstup vyvolá přerušení (adresa obsluhy je v paměti na FFF6h a FFF7h), i toto přerušení lze zamaskovat bitem F v registru CC, ale hlavní rozdíl je, že neukládá na zásobník žádné jiné registry, jen programový čítač PC a registr příznaků CC.

OMEN Kilo CPU

Základní deska, která vychází z koncepce OMEN Bravo. Obsahuje jen procesor, 32 kB RAM, 8 kB EEPROM, dekodér signálů a nezbytné obvody okolo (RESET, krystal). Nakonec jsem k „nezbytným obvodům“ přidal i nám důvěrně známý 68B50 pro sériovou komunikaci. Díky tomu může být OMEN Kilo použit jako jednodeskový počítač, bez jakýchkoli dalších obvodů.

Pokračování příště…