Jednočipové mikropočítače (mikrokontroléry) nacházejí stále
větší uplatnění v nejrůznějších oblastech elektroniky. Současná
nabídka jednočipových mikropočítačů je velmi rozsáhlá. Za 26 let, od doby kdy
firma Intel uvedla na trh první mikrokontrolér 4004 prošly tyto čipy rozsáhlým
vývojem a zdokonalováním. Většina konstruktérů a programátorů,
zabývající se touto tematikou jistě zná mikrokontroléry 8048 a 8051. Ty dnes
vyrábí prakticky každá větší firma a nabídka jejich mutací na trhu
je veliká. Vývoj však neúprosně pokračuje a 8 bitová rodina 8051 pomalu
začíná vývojáře omezovat. Na nutnost 16 bitového zpracování dat ,
aritmetiky, potřeby většího paměťového prostoru, vyššího
výpočetního výkonu, lepších možností adresování, více
registrů atd. zareagovaly firmy vyrábějících mikrokontroléry. Na trhu se objevili
nové 16. bitové mutace řady 8051. V roce 1995 představila firma Philips mikrokontrolér
80C51XA-G1 a následně verzi XA-G3, obě z nové rodiny eXtended Architecture. Cílem tohoto
článku je objasnit základní rysy této architektury a nastínit další
možnosti při návrhu aplikací s jednočipovými mikroprocesory. Věříme, že článek
bude přínosem zejména pro konstruktéry pracující s rodinou 8051 a
hledající rozšíření možností svých aplikací. XA je
nová architektura, která byla vyvinuta firmou Phillips Semiconductors v rámci uspokojení
požadavků trhu na celkově vyšší výkon, než jaký lze dosáhnout
klasickými osmibitovými mutacemi 80C51, při současném zachování zpětné
kompatibility kódu s 80C51. XA je kompatibilní s 80C51 na úrovni zdrojového kódu,
přičemž všechny vnitřní registry i operační režimy 80C51 jsou plně podporovány. Tato
skutečnost kupodivu nijak záporně neovlivňuje výkon XA, který je skutečně velmi vysoký -
3x až 4x převyšuje výkon obvyklých 16-bitových architektur a 10-100x výkon
původní 80C51.Phillips dokonce plánuje v blízké budoucnosti zvyšovat
taktovací frekvenci až někam přes hranici 100MHz, což by znamenalo rychlost více než 30MIPS !
Základní parametry architektury XA
- - 16-ti bitové a plně statické CPU s konfigurovatelnou šířkou sběrnice 8/16 bitů
- - 24-bitový rozsah paměti, segmentace po 64kB
- - Každý 16-bitový CPU registr může provádět všechny aritmetické a logické operace
- - Vylepšený instrukční soubor podporující bitově orientované logické operace, stejně jako rychlé násobení 16x16 a dělení 32/16
- - Instrukční soubor je upraven pro použití překladačů z vyšších jazyků
- - Podpora multitaskingu a aplikací reálného času, obsahující 32 vektorových přerušení, až 16 softwarových TRAPů , segmentovaná paměť dat pro podporu přepínání stránek.
- - Úsporné módy, podporované vnitřní XA architekturou, včetně IDLE a
powerdown módů.
Následující graf obsahuje porovnání výkonu XA s 80C51 a běžnými 16-bitovými architekturami (68000,80C192) při použití stejné taktovací frekvence. Pro měření byly použity benchmarky MPY (násobení 16x16), FDIV (dělení 16x16), ADD/SUB (sčítání/odčítání 24b), CMP24b (porovnávání 24b), CAN16b (controller area network), NTPLN (lineární interpolace), INTERR (doba trvání přerušení) a BITTEST (bitové operace). Graf ukazuje poměr výkonů jednotlivých architektur vzhledem k výkonu XA.
Základní parametry XA-G3
- - 20-bitová adresová sběrnice = 1 MB každý programový a datový paměťový prostor
- - 2.7 až 5.5V plně statické operace
- - 32 kB programové paměti na chipu
- - 512 bytů RAM na chipu
- - Tři čítače/časovače s podpůrnými funkcemi
- - Watchdog - Dva UARTy
- - Čtyři 8-bitové I/O porty, každý bit zvlášť je možno softwarově nastavit na 4 možné funkce
- - 44- pinové PLCC a 44-pinové LQFP pouzdro
Stručný popis eXtended Architecture :
Organizace paměti XA obsahuje několik oddělených paměťových prostorů. Architektura a kódování instrukcí je optimalizováno pro registrově založené operace, nicméně všechny aritmetické a logické operace mohou být prováděny i přímo v datové paměti. Tímto způsobem se XA vyhýbá klasickému problému s jedním akumulátorovým registrem. XA umožňuje adresovat až 16MB paměti, ale paměť je segmentována po 64kB obdobným způsobem jako u řady 80X86. Přímo adresovat lze však pouze první kilobyte segmentu, zbytek pak buď nepřímo, nebo nepřímo s offsetem (viz adresovací režimy). V konkrétních implementacích je možno použít méně než 24 bitů adres, dokonce existuje tzv. small-memory mode, v kterém je adresa pouze šestnáctibitová a segmentové registry ztrácejí význam. Nepoužité adresové vývody je ovšem možno softwarově nakonfigurovat jako běžné I/O porty. Vnitřní datová i kódová paměť vždy překrývá odpovídající část paměti vnější, pokud není vnější paměť hardwarově mapovaná na fyzicky vyšší adresu, nebo pokud není vnitřní paměť vypnutá. Vypnutí vnitřní paměti se provádí hardwarově.
Jednotka registrů :
Systém registrů je odvozen od architektury 80C51, všechny registry jsou pouze
rozšířeny na šířku 16 bitů. Klasické stránkování R0-R3
zůstává, jsou tedy k dispozici čtyři stránky po čtyřech 16-bitových registrech.
Každý registr lze adresovat jak šestnáctibitově, tak jako jeho osmibitovou polovinu (např. R0h,
R0l). Kromě toho, některé instrukce (konkrétně 32-bitové posuvy, násobení a
dělení) mohou používat dva 16-bitové registry současně jako jeden 32-bitový pár.
Všechny registry jsou bitově adresovatelné, kromě tří momentálně nevybraných
bank. Kódování instrukcí XA umožňuje budoucí rozšíření o
dalších 8 16-bitových registrů, které však v XA-G3 implementovány nejsou.
Dále u XA z pochopitelných důvodů odpadly registry A a B, dále byl vyřazen registr DPTR
určený pro adresování kódové paměti (pro adresování
kódové paměti lze u XA použít jakýkoliv jiný registr).
Adresovací režimy :
Procesory XA disponují 16. bitovým zásobníkem LIFO, umístěným v
datové paměti. Systém může disponovat dvěma zásobníky- uživatelským a
systémovým. Uživatelský zásobník, může být umístěn, kdekoli v
paměti, zatímco systémový zásobník musí být umístěn v
prvním segmentu (prvních 64 kb). Každý zásobník má svůj oddělený
ukazatel, mapovaný na místo registru R7. Zásobník, narozdíl od standardu 8051,
ukládá data sestupně. To znamená, že hodnota ukazatele se s každou instrukcí PUSH
snižuje. Po resetu je ukazatel nastaven na nejvyšší adresu nejmenší datové
paměti, se kterou se procesory řady XA vyrábějí (adresa 128d). Přetečení
zásobníku je hardwarově ošetřeno vyvoláním přerušení, když ukazatel
zásobníku zmenší svoji hodnotu z 80h na 7Eh. (pouhým nastavením SP na
hodnotu menší než 80h se přerušení nevyvolá ). Po vyvolání tohoto
přerušení ještě zbude 64 byte zásobníku, takže obslužná rutina
výjimek může ještě zásobník používat i v případě, že se zároveň s
touto výjimkou vyskytne NMI.
Hardware XA-G3
Sběrnice :
Oproti klasické 8051 přibylo několik podstatných vylepšení. Především
XA architektura přímo podporuje 16.bitovou datovou sběrnici a až 24 adresových bitů. Datovou sběrnici
lze nastavit na 8 nebo 16 bitů,úrovní na pinu BUSW po resetu. Počet bitů adresové sběrnice lze
softwarově přepínat mezi 12,16,20 a 24 bity (pro XA-G3 max. 20 bitů). Použijeme-li tedy pouze 4kb eprom,
ušetříme 4 adresové vodiče, které pochopitelně můžeme využít jako ostatní
porty. Další význačný rys architektury XA je multiplexování
adresových/datových vodičů. Adresy a0-a3 a a12-a23 (a20 u XA-G3) jsou totiž vyvedeny nemultiplexovaně.
Multiplexují se d0-d7 a a4-a11. Tímto zapojením je dosaženo 16 násobného
snížení počtu zápisů do adresového latche (Burst mód). Časování
sběrnice je softwarově nastavitelné ve velkém rozsahu,ale může se stát že se i přes
maximální zpomalení nevyhnete použití externího zpožďovacího obvodu,
připojeného na vstup WAIT (obzvláště při 30Mhz krystalu) .
Vstupně-výstupní porty:
Všechny porty podporují 4 různé módy provozu: open drain, quasi-bidirectional, off (high impedance) a push-pull. Oproti 8051 tedy přibyl mód otevřený kolektor, mód komplementární dvojice tranzistorů a mód vysoké impedance (vstup). Každý pin je možno konfigurovat nezávisle pomocí osmi řídících registrů.
Čítače a časovače :
Celkem jsou k dispozici 3 čítače, 1 (případně 2) však spotřebujeme, jestliže chceme
používat sériové porty. Každý čítač má 4 módy provozu, od
klasické 8051 se liší pouze mód 0, který je změněn na 16.bit auto reload.
Čítač 2 má záchytné registry jako u 8052.
Watchdog timer :
G3 má implementován watchdog timer, který resetuje obvod v případě selhání software. Watchdog je softwarově vypnutelný a má nastavitelnou periodu. Pozor, při inicializaci programu je VŽDY nutné watchdog zakázat, pokud ho nehodláte používat, jelikož je po zapnutí obvodu implicitně aktivní.
Vylepšené sériové porty :
XA-G3 obsahuje 2 sériové porty, kompatibilní 8051FB. Proto klasické 8051 přibyla následující vylepšení: - oddělené vektory přerušení pro TX a RX směr - double-buffering TX registru pro časově kritické aplikace - detekce break , overrun a framing error - řádná podpora multiprocesorové komunikace.
Proč se rozhodnout právě pro řadu XA ? Procesory řady XA vyplní mezeru, mezi klasickými 51-kovými procesory, s jejich omezeným výkonem (do čekož lze zahrnout i mutace typu 96, 552, Dallas atd.) a výkonnými moduly s procesoty řady X86 např. PIGGY. V aplikacích, v nichž je kladen důraz především na periferní operace, malou spotřebu, jednoduchost a relativně vysoký výpočetní výkon je snadno předeženou. Jediným porovnatelným konkurentem je 80251 od firmy Intel, která však nedosáhla zdaleka tolik vylepšení, jako řada XA. Jediným nedostatkem těchto obvodů, je nyní nedostupnost verze s vnitřní pamětí programu, která by se měla objevit do konce prvního čtvtletí 1997 a nedostatek systémových prostředků. Firma Phillips však na svém internetovém zastoupení ZDARMA nabízí beta verzi kompileru a simulátoru pod WINDOWS. Jedná se o licencovanou neprofesionální verzi, která má především ve své simulační části značná omezení a i dost chyb, ale kompilátor zdrojového kódu funguje dobře, takže v zahájení práce s 8051XAG3 vám po zakoupení procesoru (jehož cena se při kusových množstvích pohybuje ke konci března 1997 do 800 Kč vč. DPH) už nic nebrání.
POSTŘEHY konstruktéra : Resetovací úroveň je obráceně proti staré 8051. ( obvod je resetován v log. 0) . Obvod je neuvěřitelně rychlý. Ani pro softwarově nastavenou nejpomalejší sběrnici nelze nejrychlejší provedení 8255 (o LCD display nebo pomalých promkách ani nemluvě) připojit bez externího obvodu pro vytváření WAIT impulsů. Typická spotřeba obvodu se při 5V a 30 MHz pohybuje mezi 40 a 80 mA, výrobce udává maximálně 100 mA, při IDLE módu maximálně 25 mA a pro power-down mód se spotřeba pohybuje mezi 5 a 50 mA. Maximální výstupní proud jednoho výstupu je 15 mA při optimální konfiguraci.
Závěrem bych rád podotkl, že i přes všechny uvedené výhody a značnou rychlost
procesoru, výrazně převyšující své konkurenty, má XA několik
důležitých nedostatků. Pokud přejdete na XA z architektury 8051 nebo podobné, pak budete jistě
nadšeni, nicméně programátoři zvyklí na komfort dvaatřicetibitového
prostředí, registrů a skvělých adresovacích možností architektury 68000 by se mohli
cítit nepříjemně omezeni. Naproti tomu je třeba si uvědomit, že XA je jednočipový
mikrokontrolér, nikoliv samostatný procesor a ve své třídě v současné době
prakticky nemá konkurenci.
Jan Řehák - www.HW.cz
Jan Staněk - Syntex technologies
Richard Cvach - Syntex technologies.
Tady si můžete stáhnou popis architektury v .PDF formatu sbalenem programem RAR : XA_DOC.RAR
Další informace najdete na : : Philips XA page