Hlavní navigace

Osmibitové mikroprocesory a mikrořadiče firmy Motorola (1)

26. 10. 2010
Doba čtení: 19 minut

Sdílet

V dnešní části seriálu budeme sice pokračovat v popisu osmibitovým mikrořadičů, ovšem naši pozornost přesuneme z mikrořadičů řady PIC na osmibitové mikrořadiče navržené firmou Motorola a později firmou Fairchild. Všechny tyto mikrořadiče mají svůj základ v mikroprocesoru MC6800 z roku 1974.

Obsah

1. Osmibitové mikroprocesory a mikrořadiče firmy Motorola

2. Společné vlastnosti osmibitových CPU a MCU firmy Motorola

3. Motorola MC6800 – prapředek všech osmibitových mikroprocesorů a mikrořadičů řady 68×x

4. Mikroprocesor Motorola MC6800 z pohledu programátora

5. MOS 6502 – procesor vytvořený ex-zaměstnanci firmy Motorola

6. Plnohodnotný mikroprocesor za pouhých 25 dolarů?

7. Motorola MC6809 – nejvýkonnější osmibitový mikroprocesor

8. Mikrořadiče řady 68HC05 – základní řada osmibitových mikrořadičů Motoroly

9. Odkazy na Internetu

1. Osmibitové mikroprocesory a mikrořadiče firmy Motorola

V předchozích částech seriálu o architekturách počítačů jsme si popsali již dvě navzájem odlišné skupiny osmibitových mikrořadičů. Na jedné straně se jednalo o mikrořadiče firmy Intel, konkrétně o čipy z rodiny MCS-48 (Intel 8048 a spol.) a rodiny MCS-51 (Intel 8051 a spol.), na straně druhé pak o mikrořadiče PIC, konkrétně o rodiny PIC10, PIC12, PIC16 a PIC18. Ovšem osmibitové mikrořadiče byly a jsou vyráběny i dalšími firmami. Jedním z původních výrobců mikrořadičů je velký rival Intelu – firma Motorola, která své osmibitové mikrořadiče postavila na základu představovaném osmibitovým mikroprocesorem MC6800. Právě tímto mikroprocesorem totiž Motorola vlastně vstoupila na pole IT. Celá historie mikroprocesorů a z nich odvozených mikrořadičů totiž začala již v roce 1971 uvedením čtyřbitového mikroprocesoru Intel 4004, který byl v roce 1972 následován osmibitovým mikroprocesorem Intel 8008 a v květnu 1974 slavným čipem Intel 8080 (lidově nazývaným BOBO).

Obrázek 1: Čtyřbitový mikroprocesor Intel 4004, který začal být vyráběn již v roce 1971. Tento čip byl určen především pro použití v kalkulátorech, protože jeho využití v počítačích bylo kvůli malému výpočetnímu výkonu a podporou operací s pouze čtyřbitovými operandy nevhodné.

Ovšem již v srpnu 1974 začala osmibitový mikroprocesor s označením MC6800 svým zákazníkům nabízet i firma Motorola, a to dokonce za stejnou zaváděcí cenu jako konkurenční Intel – 360 dolarů při objednávce jednoho kusu (s možností množstevních slev). Ve skutečnosti však mohly být zařízení s MC6800 levnější, mj. i díky tomu, že tento čip vyžadoval pouze jediné napájecí napětí (Intel 8080 naproti tomu +5V, –5V a +12V) a taktéž nepotřeboval kromě zdroje hodinových signálů žádné další podpůrné obvody (Intel 8080 byl podporován čipy 8224 a 8228). Zajímavé je, že vývojový tým vedený Tomem Bennetem začal na vývoji čipu MC6800 pracovat již v roce 1971 a to krátce po uvedení Intelu 4004 na trh. Kromě samotného mikroprocesoru nabízela firma Motorola i další podpůrné obvody „rodiny 6800“, například paměť typu RAM, paměť typu PROM i EPROM, obvod s osmibitovými paralelními bránami PIA, jednoduchý modem s přenosovou rychlostí 300 a 600 Bd atd.

Obrázek 2: Mikroskopický snímek čipu Intel 4004, na němž můžeme vidět jak jeho velmi jednoduchou interní strukturu, tak i v pravém dolním rohu iniciály jeho tvůrce Federica Faggina, který se později podílel na vzniku slavného mikroprocesoru Z80 v konkurenční firmě Zilog.

2. Společné vlastnosti osmibitových CPU a MCU firmy Motorola

Firma Motorola samozřejmě nezůstala pouze u původních čipů MC6800, ale navrhla a vyráběla (popř. licencovala dalším společnostem) i mnohé další mikroprocesory a mikrořadiče. Je přitom zajímavé, že i přes mnohé změny, které byly způsobeny jak způsobem návrhu a použitou technologií, tak i nároky zákazníků na schopnosti čipů, jejich odolnosti proti vnějším podmínkám (řada HC08 a HC11 je například používána v družicích) a jejich výslednou cenu, mají všechny osmibitové mikroprocesory a mikrořadiče firmy Motorola několik společných vlastností, které mj. znamenají, že programy psané v assembleru jsou z velké části mezi jednotlivými čipy přenositelné na úrovni zdrojových kódů. Binární kódování instrukcí se ovšem liší a u některých CPU či MCU chybí jeden z akumulátorů či indexových registrů, popř. se odlišuje jejich bitová šířka. Ve všech případech se jedná o čipy obsahující velmi málo pracovních registrů, typicky pouze jeden až dva osmibitové akumulátory, jeden až dva indexové registry (různé šířky), ukazatel na vrchol zásobníku, čítač instrukcí a registr, v němž jsou umístěny příznaky (flags).

Obrázek 3: Osmibitový mikroprocesor Motorola MC6800.

V následující tabulce jsou pro přehled vypsány základní charakteristiky několika řad mikroprocesorů a mikrořadičů firmy Motorola a pro doplnění taktéž mikroprocesoru MOS 6502, o němž se pro úplnost zmíníme v páté kapitole (ve čtvrtém sloupci je uvedeno, zda je možné dvojici pracovních registrů A a B použít jako jeden šestnáctibitový registr D při provádění některých operací se šestnáctibitovými operandy):

Čip Typ Akumulátor(y) D=A+B (16b) Index registr(y) Čítač instrukcí Zásobníkové registry Spec. registry
MC6800 CPU A (8b), B (8b) ne X (16b) PC (16b) SP (16b) CCR (6b)
MC6809 CPU A (8b), B (8b) ano X (16b), Y (16b) PC (16b) S (16b), U (16b) CCR (8b), DP (8b)
68HC05 MCU A (8b) ne X (8b) PC (13b) SP (16b) CCR (5b)
68HC08 MCU A (8b) ne H:X (16b) PC (16b) SP (16b) CCR (6b)
68HC11 MCU A (8b), B (8b) ano X (16b), Y (16b) PC (16b) SP (16b) CCR (8b)
MOS 6502 CPU A (8b) ne X (8b), Y (8b) PC (16b) S (8b) P (7b)

Obrázek 4: Další fotografie osmibitového mikroprocesoru Motorola MC6800
(Zdroj: Wikipedia).

Důvod, proč mají všechny zmíněné mikroprocesory pouze minimální počet pracovních registrů, je jednoduchý – v polovině sedmdesátých let minulého století byly rychlosti operačních pamětí vyšší nebo alespoň srovnatelné s rychlostmi osmibitových mikroprocesorů. Proto by přidání dalších pracovních registrů vedlo především ke zvýšení složitosti a ceny celého čipu a samozřejmě také ke komplikacím při návrhu instrukční sady. Mnohem jednodušší bylo vytvoření zvláštních adresovacích režimů pro přístup k prvním 256 bajtům operační paměti, popř. (v případě MC6809) k vybrané stránce 256 bajtů paměti. Z tohoto pohledu můžeme tyto procesory považovat za čipy mající kromě akumulátoru(ů) i 256 pracovních registrů shodou okolností mapovaných do operační paměti.

3. Motorola MC6800 – prapředek všech osmibitových mikroprocesorů a mikrořadičů řady 68×x

V této kapitole se seznámíme se základními charakteristikami osmibitového mikroprocesoru MC6800. Z hlediska konstruktéra počítačů je mikroprocesor MC6800 typickým zástupcem osmibitových procesorů s osmibitovou externí datovou sběrnicí a šestnáctibitovou sběrnicí adresovou. Sběrnice je možné externím signálem přepnout do režimu s vysokou impedancí, takže k procesoru lze jednoduše připojit například řadič DMA (řadič přímého přístupu do paměti). Mikroprocesor obsahuje i dvojici vstupů pro přerušení – nemaskovatelné přerušení NMI a maskovatelné přerušení IRQ. Adresová a datová sběrnice je doplněná několika řídicími signály, především RW (řízení čtení/zápisu), VMA (platná adresa) a BA (volná sběrnice). Tento čip, na rozdíl od pozdějšího mikroprocesoru Z80, však neobsahoval podporu pro obnovování obsahu dynamických pamětí (DRAM).

Obrázek 5: Jednoduchý mikropočítač sestavený z čipů rodiny M68×x
(Zdroj: Wikipedia).

Zajímavé je, že MC6800 vyžadoval pro svoji činnost dvojici hodinových impulsů, které se nepřekrývaly a měly amplitudu +5V, což je více, než je možné zajistit běžnými obvody TTL. To byl ostatně jeden ze zdrojů problémů při začleňování tohoto čipu do elektronických zařízení, protože podpůrný obvod MC6870 (viz též schéma na pátém obrázku) byl pro mnoho účelů poměrně drahý. Dvojice nepřekrývajících se hodinových pulsů generovala v jednom cyklu celkem čtyři stavy, což je taktéž jeden z důvodů, proč původní MC6800 s hodinovou frekvencí „pouhý“ 1 MHz měla vyšší výpočetní výkon než Intel 8080A s mezní frekvencí 2 MHz. Jednotlivé instrukce MC6800 měly dobu trvání mezi 2 až 9 cykly, průměrně 4 cykly.

4. Mikroprocesor Motorola MC6800 z pohledu programátora

Již ve druhé kapitole jsme si uvedli malou srovnávací tabulku základních vlastností různých osmibitových mikroprocesorů a mikrořadičů (jedná se o takzvaný programový model). Z této tabulky je patrné, že mikroprocesor MC6800 disponuje šesticí registrů. Především se jedná o dvojici osmibitových pracovních registrů (akumulátorů) označovaných v assembleru písmeny A a B, dále pak o šestnáctibitový index registr X (jde o vůbec první použití index registru u mikroprocesoru), šestnáctibitový čítač instrukcí PC, taktéž šestnáctibitový ukazatel na vrchol zásobníku SP a šestibitový registr CCR obsahující různé příznaky nastavované či naopak nulované při aritmetických a logických operacích (a taktéž bitový přepínač maskovatelného přerušení). Všechny registry dostupné programátorům jsou vypsány v následující tabulce:

Označení Šířka Název registru Význam registru
A 8 b accumulator A první universální pracovní registr
B 8 b accumulator B druhý universální pracovní registr
X 16 b index register používán při adresování operandů
PC 16 b program counter používán při adresování instrukcí
SP 16 b stact pointer použit při operacích se zásobníkem
CCR 6 b condition code register obsahuje příznakové bity

Obrázek 6: Struktura mikroprocesoru MC6800
(Zdroj: Wikipedia)

Akumulátory A a B jsou použity u většiny aritmetických a logických operací, protože tvoří vždy první (nebo jediný) operand a současně se do nich ukládá i výsledek operace. Jedinou „asymetrii“ mezi těmito registry můžeme najít u instrukcí ABA (A=A+B), CBA (A-B) a SBA (A=A-B), kde je registr A vždy prvním operandem a současně se do něj ukládá (kromě instrukce CBA) i výsledek operace; dále pak u instrukcí DAA (korekce při BCD sčítání) a TAP společně s TPA (přesun mezi akumulátorem a příznakovým registrem), které pracují pouze s akumulátorem A. Indexový registr je použit při adresování druhého operandu mnoha instrukcí, jeho hodnotu je taktéž možné inkrementovat, dekrementovat, uložit či načíst z paměti a porovnat s dvoubajtovou konstantou. Příznakový registr CCR obsahuje následující jednobitové příznaky:

Příznak Název Význam
H halfcarry přetečení ze 3. do 4. bitu (použito při BCD aritmetice)
I interrupt příznak povolení či zákazu přerušení
N negative příznak operace se záporným výsledkem
Z zero příznak operace s nulovým výsledkem
V overflow (přeplnění) přetečení ze 6. do 7. (znaménkového) bitu
C carry přetečení ze 7. bitu (přenos do vyššího řádu)

Příznakové bity a jejich kombinace jsou použity u 14 podmíněných relativních skoků.

5. MOS 6502 – procesor vytvořený ex-zaměstnanci firmy Motorola

Při popisu vývoje osmibitových mikroprocesorů Motorola se musíme zmínit i o jednom mikroprocesoru, který byl sice vyráběn jinou firmou, ale má s původním mikroprocesorem MC6800 několik věcí společných. Jedná se o mikroprocesor MOS 6502 firmy MOS Technologies, který začal být komerčně nabízen v září roku 1975, tj. zhruba rok po uvedení konkurenčních osmibitových mikroprocesorů Intel 8080 a Motorola MC6800. Čip MOS 6502 navrhl Chuck Peddle a sedm jeho spolupracovníků (Harry Bawcum, Ray Hirt, Terry Holdt, Mike James, Will Mathis, Bill Mensch a Rod Orgill), kteří spolu s ním opustili firmu Motorola. Důvodem k tomu, že někteří klíčoví zaměstnanci Motorolu opustili, byla jak tehdejší hospodářská recese v USA (a s tím související nepopulární reorganizace ve firmě), tak i to, že se zaměstnancům nelíbilo stěhování z Phoenixu do nově otevřené pobočky v Austinu. Nicméně se vraťme k Chucku Peddlemu a firmě MOS Technologies.

Obrázek 7: Originální mikropočítač Apple II řízený osmibitovým mikroprocesorem MOS 6502.

Prvním mikroprocesorem navrženým v MOS Technologies byl čip nazvaný jednoduše MOS 6501, který byl pinově kompatibilní s Motorolou MC6800 (samotná sada instrukcí i vnitřní stavba procesoru však byla v mnoha ohledech odlišná). Možnost náhrady mikroprocesoru MC6800 za MOS 6502 v zařízeních připravených původně pro čipy řady 6800 se právníkům Motoroly samozřejmě nelíbila a po žalobě (a následném mezisoudním vyrovnání) Chuck Peddle spolu s Billem Menschem vytvořili čip MOS 6502, který již nebylo možné nainstalovat do stejné patice jako Motorolu MC6800. Mimochodem: dalším důsledkem mezisoudního vyrovnání bylo to, že firma MOS licencovala ostatní čipy řady 6800, mj. i původní Peddleho čip PIA neboli MC6820 (Chuck Peddle je ostatně podepsán pod šestnácti patenty Motoroly). I přes binární nekompatibilitu s mikroprocesorem MC6800 je však MOS 6502 dodnes legendární čip, který se při svém uvedení na trh proslavil zejména svou velmi nízkou cenou umožňující stavbu levných domácích a osobních mikropočítačů.

pc7003

Obrázek 8: Jedna z variant základní desky počítače C64. Tento počítač byl postaven na osmibitovém mikroprocesoru MOS 6510 (což je vylepšená varianta MOS 6502), grafickém čipu VIC-II, zvukovém čipu SID a dvojici vstupně-výstupních čipů SIO.

6. Plnohodnotný mikroprocesor za pouhých 25 dolarů?

V době, kdy Intel prodával svůj mikroprocesor Intel 8080 za 179 dolarů (zaváděcí cena pro jeden kus byla dokonce 360 dolarů) a Motorola svoji MC6800 za přesně tutéž částku 179 dolarů, přišla firma MOS Technologies se zaváděcí cenou pouhých 25 dolarů. Zpočátku byla potenciálním zákazníkům tak nízká cena podezřelá, ale po skokovém zlevnění jak 8080, tak i MC6800 (rychlá reakce obou konkurentů na nabídku firmy MOS) se začal MOS 6502 prodávat ve velkém. Důvod pro tak nízkou cenu byl jednoduchý – Chuck Peddle a jeho spolupracovníci použili vylepšenou metodu tvorby masky čipu, která jim dovolovala dělat pozdější opravy a především zvýšila výtěžnost výroby, tj. poměr dobrých čipů oproti zmetkům. Uvádí se, že 6502 měl až několikanásobně větší výtěžnost než 8080. Dalším důvodem bylo zjednodušení samotného čipu – například byl použit pouze jeden osmibitový akumulátor (A), oba indexové registry X a Y byly osmibitové a osmibitový byl taktéž ukazatel na vrchol zásobníku SP (horních osm bitů adresy bylo nastaveno na 0×01, tj. zásobník byl v operační paměti umístěn na adresách 256 až 511).

pc6612

Obrázek 9: Herní konzole Atari 2600 vybavená mikroprocesorem MOS 6507, což je varianta původního čipu MOS 6502, ovšem s omezeným počtem pinů adresové sběrnice.

Osmibitový mikroprocesor MOS 6502 či jeho vylepšené varianty MOS 65C02 či MOS 6510, popř. naopak zjednodušená varianta MOS 6507 (zmenšení pouzdra a tím pádem i počtu adresových pinů), byly použity v mnoha osobních i domácích počítačích, především v Apple II (jednalo se o jeden z nejprodávanějších počítačů v USA), osmibitových herních konzolích (Atari 2600, 5200 i 7800) i domácích počítačích firmy Atari (řada XL, XE), Commodore C64 (pravděpodobně je není zapotřebí podrobněji představovat) apod. Není divu, že se dodnes jedná o jeden z velmi populárních osmibitových mikroprocesorů používaných na některých universitách při výuce assembleru i architektur procesorů (interně se jedná vlastně o velmi jednoduchý obvod), které jsou dokonce dodnes vyráběny v šestnáctibitové variantě WD 65816 (pomocí nastavení příznakového bitu se tento mikroprocesor přepne do režimu 6502). Podle posledních výzkumů bude 6502 dokonce použita i v roce 3000 pro řízení ohýbacích robotů. :-)

pc6613

Obrázek 10: Schéma zapojení herní konzole Atari 2600 s osmibitovým mikroprocesorem MOS 6507.

7. Motorola MC6809 – nejvýkonnější osmibitový mikroprocesor

Po vzniku komerčně poměrně úspěšného mikroprocesoru MC6800 i od něho odvozených čipů označovaných MC6801 a 6802 (viz též další kapitolu) se firma Motorola rozhodla rozdělit další vývoj svých mikroprocesorů na dvě části. První skupina vývojářů se soustředila na vývoj zcela nové generace mikroprocesorů – jednalo se o později slavnou řadu 68000 (68k), jejíž tvůrci vlastně zcela přeskočili generaci šestnáctibitových procesorů, protože čipy 68000 byly v mnoha ohledech 32bitovými mikroprocesory. Druhá skupina vývojářů mezitím pracovala na novém typu osmibitového mikroprocesoru, který převzal mnoho svých vlastností jak z původního procesoru MC6800, tak i z čipu MOS 6502. Výsledkem byl s velkou pravděpodobností nejvýkonnější osmibitový mikroprocesor, který byl kdy vyroben. Jednalo se o procesor nazvaný MC6809, který programátorům nabízel několik v té době poměrně unikátních vlastností, například téměř zcela ortogonální instrukční sadu, dvojici šestnáctibitových index registrů či dva ukazatele na vrchol zásobníku.

pc6604

Obrázek 11: Herní konzole Vectrex s mikroprocesorem Motorola 6809 (jedná se o 3D model, nikoli o skutečnou fotografii).

Tento mikroprocesor měl sice ve své instrukční sadě „pouze“ 59 instrukcí, ovšem vzhledem k množství adresovacích režimů a ortogonalitě instrukční sady dokázal provádět všechny instrukce původního čipu MC6800 (78 instrukcí) a samozřejmě i vykonávat mnohé další operace. Jak původní procesor MC6800, tak i konkurenční MOS 6502 obsahoval speciální adresní režimy, s jejichž pomocí bylo možné přistupovat k prvním 256 bajtům operační paměti, a to rychlejším způsobem, než v případě použití plné 16bitové adresy (navíc byly instrukce i o jeden bajt kratší, což nebylo v dobách počítačů s maximálně 64 kB RAM nezanedbatelné). Konstruktéři mikroprocesoru MC6809 tuto možnost zachovali a navíc speciální osmibitové adresní režimy rozšířili o registr DP (direct page), kterým bylo možné vybrat jakoukoli stránku v rámci paměťového prostoru 64 kB, kterou bylo následně možné použít v součinnosti s osmibitovou adresou.

pc6605

Obrázek 12: Plošný spoj herní konzole Vectrex. Můžeme zde vidět jak zvukový čip AY-3–8912 (varianta již dříve popsaného čipu AY-3–8910), tak i popisovaný mikroprocesor Motorola MC6809, přesněji řečeno jeho variantu MC68A09.

Přidání druhého ukazatele na vrchol zásobníku U umožňovalo jak rychlé přepínání mezi různými procesy (operační systém vs. uživatelský program), tak i například snadnou implementaci interpretru programovacího jazyka Forth, který dvojici zásobníků používá. Nově přidána byla taktéž instrukce umožňující provést vynásobení dvou osmibitových operandů (násobička nebyla u osmibitových mikroprocesorů příliš častým příslušenstvím). Vzhledem k tomu, že řadič i ALU mikroprocesoru MC6809 byly ručně optimalizovány (šlo o možná poslední procesor typu CISC, jehož interní struktura byla „zadrátována“ bez použití mikrokódu), jednalo se o velmi rychlý procesor, a to i v případě, že byl použit relativně pomalý zdroj hodinového signálu – původní MC6809 měl maximální hodinovou frekvenci rovnu 1MHz, model MC68A09 1,5 MHz a konečně model MC68B09 2 MHZ.

Obrázek 13: Mikroprocesor Motorola MC6809.

Z mnoha pohledů se jednalo o technologicky velmi dobře navržený procesor, který však přišel na trh již poměrně pozdě – v době nástupu šestnáctibitových a 32bitových čipů. Poměrně zajímavé a poněkud nepochopitelné je, že mikrořadiče firmy Motorola NEbyly založeny na 6809, ale na starším a ne tak výkonném čipu MC6800, což je z dnešního pohledu možná poněkud škoda.

8. Mikrořadiče řady 68HC05 – základní řada osmibitových mikrořadičů Motoroly

Po vzniku osmibitového mikroprocesoru MC6800 vytvořila firma Motorola dvě další varianty tohoto čipu, které se některými svými vlastnostmi blížily skutečným mikrořadičům. Prvním z těchto čipů byl MC6802 z roku 1977, který obsahoval kromě vlastního řadiče a CPU i 128 bajtů paměti RAM, interní oscilátor (nemusel se připojovat externí zdroj hodinových signálů, pouze 4 MHz krystal) a spolu s čipem MC6846 (2kB paměti ROM, osmibitový obousměrný port a časovač) bylo možné vytvořit jednoduchý dvoučipový mikropočítač, což se již v mnoha ohledech blížilo ke klasickému mikrořadiči. Následoval čip MC6801 (číslování je pravda poněkud neobvyklé), který měl taktéž 128 bajtů paměti RAM, navíc však na tomto čipu byla přítomna i paměť ROM s kapacitou 2 kB, šestnáctibitový časovač, sériový port a 31 programova­telných I/O linek. Jednalo se o jeden z prvních mikroprocesorů (nebo vlastně už mikrořadičů), u nichž bylo možné oba osmibitové akumulátory A a B spojit do jednoho šestnáctibitového akumulátoru D.

Obrázek 14: Interní struktura mikrořadičů M68HC05 popsaných v následující kapitole.
(Zdroj: Freescale Semiconductor, Ltd. MC68HC05B6/D Rev. 4.1 08/2005)

Ovšem tento čip (s cca 35000 tranzistory) byl poměrně drahý a proto se používal pouze v automobilovém průmyslu a nikoli ve spotřební elektronice. Firma Motorola proto tento čip poměrně podstatným způsobem zjednodušila a začala ho nabízet pod novým označením MC6805. Od tohoto mikrořadiče je již malý krůček k 68HC05, jímž se budeme zabývat v následujícím textu. Jak jsme si již řekli, jedná se o zjednodušenou variantu čipu MC6801, což mj. znamená, že se počet registrů zmenšil na pět (je použit jen jeden osmibitový akumulátor), indexový registr má šířku pouze osm bitů a taktéž čítač instrukcí má sníženou šířku na 13 bitů, protože paměť nainstalovaná na mikrořadiči má menší kapacitu než teoreticky dosažitelných 64 kB:

Označení Šířka Název registru Význam registru
A 8 b accumulator A jediný universální pracovní registr
X 8 b index register používán při adresování operandů
PC 16 b (13 použito) program counter používán při adresování instrukcí
SP 16 b stact pointer použit při operacích se zásobníkem
CCR 5 b condition code register obsahuje příznakové bity

Obrázek 15: Základní zapojení mikrořadiče M68HC05.
(Zdroj: Freescale Semiconductor, Ltd. MC68HC05B6/D Rev. 4.1 08/2005)

Instrukční soubor se taktéž v některých ohledech odlišoval od původní MC6800. Zejména byla přidána instrukce pro celočíselné násobení (X:A = A×X) trvající 11 cyklů a navíc se objevily instrukce (podobné instrukcím známým z MCS-51), které umožňovaly přímou manipulaci s jednotlivými bity uloženými v prvních 256 bajtech paměti: BSET (bit set), BCLR (bit clear), BRSET (branch if bit is set) a BRCLR (branch if bit is clear). Taktéž možnosti adresování byly poněkud odlišné: bylo možné provádět přímé adresování prvních 256 bajtů, rozšířené adresování (16 bitů adresy), adresování přes index registr a adresování přes index registr a osmibitový či šestnáctibitový posun (offset). Všechny mikrořadiče Motoroly jsou postaveny na von Neumannově architektuře, tj. mají pouze jeden adresový prostor, do nějž je mapována jak paměť RAM, tak i paměť ((E)P)ROM a popř. i elektricky mazatelná paměť EEPROM.

CS24_early

Základní model procesoru 68HC05 má na jediném čipu 176 bajtů RAM, 5936 bajtů ROM, 256 bajtů EEPROM, tři osmibitové I/O porty, šestnáctibitový čítač/časovač, sériové rozhraní SCI, jeden osmibitový A/D převodník a konečně modul pro PWM (pulsní šířkovou modulaci). Existovaly však i další varianty tohoto procesoru, z nichž některé měly až 32 kB ROM či EPROM, větší kapacitu paměti RAM, nainstalovanou rutinu ve firmware, která umožňovala komunikaci s PC přes sériový port (později se tato rutina vyvinula ve známé BUFFALO) atd. Bližší informace o tomto mikrořadiči i o dalších řadách 68HC08 a 68HC11 si řekneme v navazující části seriálu.

Obrázek 16: Instrukční sada mikrořadiče M68HC05.
(Zdroj: Freescale Semiconductor, Ltd. MC68HC05B6/D Rev. 4.1 08/2005)

9. Odkazy na Internetu

  1. Wikipedia: Motorola 68HC05
    http://en.wiki­pedia.org/wiki/Mo­torola_68HC05
  2. Wikipedia: Freescale 68HC08
    http://en.wiki­pedia.org/wiki/68HC08
  3. Wikipedia: Freescale 68HC11
    http://en.wiki­pedia.org/wiki/68HC11
  4. Wikipedia: Freescale 68HC12
    http://en.wiki­pedia.org/wiki/Fre­escale_68HC12
  5. HC05 Processor Families
    http://www.fre­escale.com/we­bapp/sps/site/o­verview.jsp?no­deId=016246844­98633
  6. HC08 Processor Families
    http://www.fre­escale.com/we­bapp/sps/site/o­verview.jsp?no­deId=016246844­97663
  7. Digital Core Design 68HC08 – HDL IP Core
    http://www.dcd­.pl/acore.php?id­core=82
  8. Freescale 68HC11
    http://www.fre­escale.com/we­bapp/sps/site/ta­xonomy.jsp?no­deId=016246844­98635
  9. Lifecycle of a CPU:
    http://www.cpushac­k.net/life-cycle-of-cpu.html
  10. Most wanted CPU of the world:
    http://www.cpu-galaxy.at/CPU/In­tel%20CPU/3002–8008/4004%20G­rey.jpg
  11. Wikipedia: 6502:
    http://en.wiki­pedia.org/wiki/6502
  12. The Western Design Center, Inc.:
    http://www.wes­terndesigncen­ter.com/
  13. Apple II History Home:
    http://apple2his­tory.org/
  14. www.6502.org:
    http://www.6502­.org/
  15. Stránky firmy Microchip Technology
    http://www.mi­crochip.com/
  16. Výběr z různých modelů (osmibitových) mikrořadičů PIC
    http://www.mi­crochip.com/ste­llent/idcplg?Id­cService=SS_GET_PA­GE&nodeId=2661
  17. Řada (rodina) osmibitových mikrořadičů PIC 10
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1009&mi­d=10&lang=en&pa­geId=74
  18. Řada (rodina) osmibitových mikrořadičů PIC 12
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1001&mi­d=10&lang=en&pa­geId=74
  19. Řada (rodina) osmibitových mikrořadičů PIC 14
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1008&mi­d=10&lang=en&pa­geId=74
  20. Řada (rodina) osmibitových mikrořadičů PIC 16
    http://www.mi­crochip.com/Pa­ramChartSearch/char­t.aspx?branchID=1002&mi­d=10&lang=en&pa­geId=74
  21. Další výběr z různých modelů mikrořadičů PIC
    http://www.mi­crochip.com/map­s/microcontro­ller.aspx
  22. PIC microcontroller (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/PIC_mi­crocontroller
  23. Mikrokontrolér PIC (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Mi­krokontrolér_PIC
  24. FLASHFORTH for the PIC18F and the dsPIC30F
    http://flashf­orth.sourcefor­ge.net/
  25. FlashForth
    http://www.sou­rceforge.net/pro­jects/flashfor­th
  26. Free Pic software tools
    http://softwa­repic.50webs.com/fre­esoft.html
  27. What is Amicus?
    http://www.pic­basic.org/pro­ton_lite.php
  28. Amicus FAQ
    http://www.my­amicus.co.uk/faq­.php?s=2e8d12e7f4c23e775­776f4916876354b&
  29. Microcontrollers development tools
    http://www.gnu­pic.dds.nl/
  30. gpsim (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/Gpsim
  31. gpsim home page
    http://gpsim.sou­rceforge.net/gpsim­.html
  32. The FreeRTOS Project
    http://www.fre­ertos.org/
  33. FreeRTOS (Wikipedia)
    http://en.wiki­pedia.org/wiki/Fre­eRTOS
  34. Serial EEPROM (93C46 / 93CS46) Routines
    http://www.pjrc­.com/tech/8051/se­rial-eeprom.html
  35. Great Microprocessors of the Past and Present (V 13.4.0)
    http://jbayko­.sasktelwebsi­te.net/cpu.html
  36. SPI interface tutorial
    http://www.best-microcontroller-projects.com/spi-interface.html
  37. Serial Peripheral Interface Bus
    http://en.wiki­pedia.org/wiki/Se­rial_Peripheral_In­terface_Bus
  38. EUSB to SPI bus Kit
    http://www.ei­dusa.com/Elec­tronics_Kits_E­USB_To_SPI_BUS­.htm
  39. SPI Block Guide V03.06, Freescale Semiconductor
    http://www.fre­escale.com/fi­les/microcontro­llers/doc/ref_ma­nual/S12SPIV3­.pdf
  40. What is SPI?
    http://www.fpga4fun­.com/SPI1.html
  41. SPI – A simple implementation
    http://www.fpga4fun­.com/SPI2.html
  42. Bit-banging
    http://en.wiki­pedia.org/wiki/Bit-banging
  43. Joint Test Action Group
    http://en.wiki­pedia.org/wiki/JTAG
  44. I2C
    http://en.wiki­pedia.org/wiki/I2C
  45. Seriál o programovacím jazyce Forth:
    seriál o programovacím jazyce Forth
  46. Display Data Channel
    http://en.wiki­pedia.org/wiki/Dis­play_Data_Chan­nel
  47. I2 Background
    http://www.mi­croport.tw/blog­new.php?blog_no­=7#theory
  48. PIC16F87X, 28/40-pin 8-Bit CMOS FLASH Microcontrollers
    Microchip Technology Inc.
    http://www.mi­crochip.com

Byl pro vás článek přínosný?

Autor článku

Vystudoval VUT FIT a v současné době pracuje na projektech vytvářených v jazycích Python a Go.