Obsah
1. Základní stavební bloky mikroprocesoru
2. Aritmeticko-logická jednotka a základní matematické operace
3. Činnost řadiče při práci mikroprocesoru
4. Demonstrační příklad – provedení instrukce součtu
5. Generování n-bitového vektoru řadičem
6. Obsah n-bitového vektoru generovaného řadičem
8. Přednosti a zápory obvodového řadiče
1. Základní stavební bloky mikroprocesoru
Již v úvodních částech seriálu o architekturách počítačů (konkrétně se jedná o díly 3 až 10) jsme si řekli, z jakých základních stavebních bloků se skládá prakticky libovolný moderní mikroprocesor či mikrořadič. Jedná se především o aritmeticko-logickou jednotku (zkráceně ALU), která provádí, jak již její název ostatně napovídá, výpočet základních aritmetických a logických funkcí. Aritmeticko-logická jednotka je většinou nedílnou součástí integrovaného obvodu, v němž je implementován mikroprocesor, ovšem v předchozích dvou částech tohoto seriálu jsme si taktéž řekli, že ALU může být v případě konstrukce procesoru z takzvaných procesorových řezů realizována pomocí většího množství samostatných integrovaných obvodů – většinou kaskády ALU zpracovávajících současně menší počet bitů (typicky dva či čtyři bity) a dále s využitím obvodu pro rychlé generování signálů přenosu pro všechny ALU v kaskádě. Vstup i výstup ALU je – většinou přes pomocné záchytné registry – připojen na interní datovou sběrnici, která může být v mikroprocesoru vytvořena pouze jedna, ovšem časté jsou i mikroprocesory s dvojicí či dokonce trojicí interních datových sběrnic, což umožňuje zmenšit počet cyklů nutných pro provedení některých instrukcí.

Obrázek 1: Blokové schéma velmi jednoduchého cvičného mikroprocesoru použitého v úvodních částech tohoto seriálu, na němž si vysvětlíme některé činnosti řadiče i aritmeticko-logické jednotky. Jedná se o velmi jednoduchý mikroprocesor s jedinou interní datovou sběrnicí, dvojicí pracovních registrů A a B, čítačem instrukcí, ukazatelem na vrchol zásobníku a příznakovým registrem uchovávajícím trojici příznaků C (carry), O (overflow) a Z (zero).
Další velmi důležitou součástí prakticky každého mikroprocesoru jsou pracovní registry, což jsou v podstatě paměťové bloky s velmi malou kapacitou, protože každý pracovní registr je schopný (většinou) uschovat vždy jen jedno slovo. Slovem je zde myšlena základní informační jednotka, se kterou mikroprocesor pracuje. U mnoha typů mikroprocesorů se jedná o šířku operandů vstupujících do aritmeticko-logické jednotky. Typická šířka slov, tj. počet současně zpracovávaných bitů, se pohybuje od 4 bitů do 128 bitů, dnes se nejčastěji jedná o 8, 16, 32 či 64 bitů (pouze u některých DSP se používají jiné bitové šířky nedělitelné osmi). Vzhledem k tomu, že je kapacita pracovních registrů velmi malá a současně se jedná o paměť využívanou prakticky všemi instrukcemi, je většinou pro jejich vytvoření použita ta nejrychlejší (a mnohdy taktéž nejdražší) dostupná technologie, což znamená, že se u běžných mikroprocesorů jedná o statické paměti, mnohdy založené na klopných obvodech typu D či JK (v minulosti se pracovní registry implementovaly i s využitím velmi rychlé bipolární technologie ECL).

Obrázek 2: Sada deseti integrovaných obvodů z rodiny Intel 3000 (viz též předchozí část tohoto seriálu), z nichž je možné zkonstruovat plnohodnotný šestnáctibitový mikroprocesor, u nějž se programuje přímo řadič (není zde použit ani dekodér instrukcí ani mikrosekvencér, který si popíšeme v následující části tohoto seriálu).
2. Aritmeticko-logická jednotka a základní matematické operace
S pomocí aritmeticko-logické jednotky je možné – samozřejmě v závislosti na její konstrukci vycházející z uvažované oblasti použití procesoru – provádět celou řadu aritmetických operací. Prakticky všechny mikroprocesory obsahují instrukci pro součet obsahu dvou registrů (mnemotechnická zkratka této instrukce je ADD), popř. součet obsahu dvou registrů s přičtením přenosu (mnemotechnická zkratka této instrukce je buď ADC nebo ADDC – Add with Carry). Většina mikroprocesorů (s výjimkou například mikrořadičů řady Intel 8048) obsahuje i instrukce pro provedení rozdílu obsahu dvou registrů (SUB), popř. rozdílu s použitím přenosu z předchozí operace (SBC, nebo při opačném chápání přenosu SBB, tj. rozdíl s výpůjčkou). Spolu se zvyšujícím se stupněm integrace a od ní odvozené možnosti použití více logických prvků se také rozšiřovaly aritmetické schopnosti ALU, což se projevilo například přidáním násobičky (obsahoval ji například i slavný osmibitový mikroprocesor Motorola 6809, o němž jsme se již v tomto seriálu zmiňovali) a později dokonce i děličky.

Obrázek 3: Šestnáctibitová aritmeticko-logická jednotka sestavená ze čtveřice čipů Am2901 a jednoho čipu Am2902.
Zdroj: technické materiály firmy AMD.
Princip práce aritmeticko-logické jednotky je poměrně jednoduchý: na její vstup jsou v typické konfiguraci přivedena dvě n-bitová čísla a dále řídicí signály, pomocí kterých se zvolí příslušná operace. Poněkud předbíháme, ale právě tyto řídicí signály jsou generovány řadičem. Pokud například ALU dokáže provést šestnáct různých operací, postačuje na její řídicí vstup přivést čtveřici signálů. Na výstup aritmeticko-logické jednotky je po určitém zpoždění posláno m-bitové číslo, které odpovídá výsledku zvolené operace. Kromě toho může být na výstupu ALU ještě několik dalších signálů, které se nazývají příznaky (flags) nastavované v závislosti na výsledku či průběhu výpočtu. Jedním z příznaků může být příznak nulovosti (Z – zero flag), příznak přetečení (O – overflow flag), nebo příznak přenosu (C – carry flag). Příznaky se většinou ukládají do registru příznaků, jehož obsah je využíván jak některými instrukcemi pro podmíněné skoky, tak i samotnou aritmeticko-logickou jednotkou, například při bitových posunech nebo při provádění operace součtu s přenosem (carry) nebo rozdílů s výpůjčkou (borrow, což není nic jiného, než negovaný příznak přenosu).

Obrázek 4: Schéma sčítačky se zrychleným přenosem. Povšimněte si, že se zvyšující se bitovou šířkou sčítaných operandů roste i počet vstupů do hradel typu AND.
3. Činnost řadiče při práci mikroprocesoru
Aritmeticko-logická jednotka i pracovní registry tvoří část mikroprocesoru, která je orientována prakticky výhradně na zpracovávaná data: v registrech jsou data po určitou dobu ukládána (popř. se trvalejší informace zapisují a posléze čtou z hlavní paměti právě s využitím pracovních registrů), v aritmeticko-logické jednotce jsou nad daty prováděny všechny potřebné operace. Ovšem ještě nám chybí jeden funkční blok, který by určoval, jakým způsobem budou data zpracovávaná a o která data se vlastně bude jednat. Tímto funkčním blokem, který je v jistém smyslu „mozkem“ celého mikroprocesoru, je řadič spojený s dekodérem instrukcí načítaných buď z operační paměti (platí v případě mikroprocesorů založených na von Neumannově architektuře) nebo z paměti programu (což je případ mikrořadičů založených na Harvardské architektuře). Řadič pracuje na základě instrukcí, které jsou přečteny z paměti a přes interní sběrnici a instrukční registr vstupují do dekodéru instrukcí. Ten instrukční kód rozloží na jednotlivé části (operační znak a adresní část) a takto předzpracovanou instrukci přenese do řadiče.

Obrázek 5: Použití mikroprogramového řadiče v jednoduchém procesoru.
(ofoceno z katalogu podniku Tesla).
Do řadiče navíc vstupuje hodinový signál, o němž budeme pro jednoduchost předpokládat, že ho tvoří pravidelné obdélníkové pulsy, přičemž řadič je synchronizován (opět pro jednoduchost) na vzestupnou hranu těchto pulsů. U mnohých mikroprocesorů je však namísto jednoho obdélníkového signálu použita dvojice navzájem posunutých signálů a řadič reaguje jak na vzestupnou, tak i na sestupnou hranu, což ve svém důsledku vede k rozložení každého taktu na čtyři stavy (i z tohoto důvodu prakticky není možné porovnávat výkonnost mikroprocesorů pouze na základě jejich taktovací frekvence). Řadič pracuje jako několikastavový konečný automat: na základě instrukčního kódu získaného z dekodéru instrukcí vygeneruje v každém taktu n-bitový vektor, kde hodnota n je závislá na interní architektuře mikroprocesoru – řádově se jedná o desítky a někdy i stovky bitů! Hodnoty těchto bitů, které jsou rozvedeny na všechna důležitá místa v čipu, pak řídí všechny další bloky mikroprocesoru, tj. například určují, jakou operaci má provést ALU, obsah kterého pracovního registru má být poslán na vstup ALU (každý registr reaguje na dvojici signálů load a store), jaká data jsou zapsána či naopak přečtena z operační paměti atd. Jeden z těchto bitů slouží i jako signál pro dekodér instrukcí, aby načetl další instrukční kód na základě aktuální hodnoty registru PC – řadič tedy ve skutečnosti řídí i svoji vlastní činnost.

Obrázek 6: Zapojení vstupních a výstupních pinů mikroprogramového řadiče MH3001.
(ofoceno z katalogu podniku Tesla)
4. Demonstrační příklad – provedení instrukce součtu
Princip činnosti mikrořadiče (přesněji řečeno jeho chování navenek) si nejlépe vysvětlíme na demonstračním příkladu. Jednou ze základních instrukcí implementovaných v prakticky každém mikroprocesoru, je instrukce sloužící pro součet dvou pracovních registrů s uložením výsledku aritmetické operace součtu do prvního z těchto registrů. Navíc se po provedení součtu na základě výsledku uloží do registru příznaků nové hodnoty příznaků nuly (Z), přetečení (O) a přenosu (C); u některých mikroprocesorů se navíc upravují i hodnoty dalších příznaků, například příznaku polovičního přenosu (H, AC) používaného v BCD aritmetice a příznaku parity (P) tak, jak tomu bylo u slavných mikroprocesorů Intel 8080 „BOBO“ a Zilog Z80. Z pohledu programátora v assembleru je operace součtu provedena pomocí dále nedělitelné instrukce nazvané ADD či ADC/ADDC, která má většinou dvojici operandů: jedná se o indexy pracovních registrů, jejichž součet má být uskutečněn s tím, že výsledek je většinou uložen do prvního z těchto registrů (výjimkou jsou zásobníkové procesory a procesory s tříadresními instrukcemi).

Obrázek 7: Načtení kódu další instrukce na základě aktuální hodnoty programového čítače PC, jehož obsah je přenesen na externí adresovou sběrnici mikroprocesoru. Po uplynutí časového intervalu odpovídajícího době přístupu do operační paměti se na externí datové sběrnici vystaví kód instrukce, který je přes instrukční registr přenesen do instrukčního dekodéru, jenž kód instrukce rozdělí na operační znak a adresní část.
Ovšem interně je zdánlivě nedělitelná instrukce typu ADC rozdělena do několika mezikroků, které jsou naznačeny na dvojici obrázků umístěných nad a pod tímto odstavcem. Vzhledem k tomu, že náš cvičný procesor obsahuje pouze jedinou datovou sběrnici, je počet těchto mezikroků (a tím i celková doba trvání instrukce) poněkud větší, než kdyby se jednalo o mikroprocesor s dvojicí datových sběrnic, ale princip práce zůstává stejný. Nejdříve je načten kód instrukce z operační paměti. To je provedeno takovým způsobem, že je obsah programového čítače PC poslán na externí adresní sběrnici, k níž je připojena operační paměť. Z operační paměti se následně přečte kód instrukce, který je přes externí datovou sběrnici zaslán do mikroprocesoru, kde je tento kód uložen do instrukčního registru a následně přenesen do dekodéru instrukcí. Právě v tomto okamžiku dochází k „přeprogramování“ řadiče, protože dekodér instrukcí změní jeho stav.

Obrázek 8: Provedení aritmetické operace součtu obsahu obou pracovních registrů A a B s uložením výsledku součtu zpět do registru A. Vzhledem k tomu, že náš cvičný mikroprocesor obsahuje pouze jednu interní sběrnici, je počet cyklů nutných pro provedení instrukce poněkud větší, než u reálných čipů.
5. Generování n-bitového vektoru řadičem
Od chvíle, kdy řadič získá z dekodéru instrukcí rozložené instrukční slovo představující instrukci ADD, začíná postupně generovat následující signály ve formě n-bitového vektoru:
- Přenesení obsahu pracovního registru A přes interní sběrnici do prvního pomocného registru připojeného na vstup aritmeticko-logické jednotky.
- Přenesení obsahu pracovního registru B přes interní sběrnici do druhého pomocného registru připojeného na vstup aritmeticko-logické jednotky.
- Provedení operace součtu, tj. výběr jedné operace aritmeticko-logické jednotky. Výsledek se automaticky uloží do třetího pomocného registru připojeného na výstup aritmeticko-logické jednotky. Nové příznaky jsou uloženy do příznakového registru.
- Přenos obsahu třetího pomocného registru (tj. vlastního součtu) přes interní sběrnici do pracovního registru A.
- Zvýšení obsahu čítače instrukcí PC o jedničku, což je provedeno v několika krocích s využitím ALU (viz následující animace).
- Načtení dalšího kódu instrukce.

Obrázek 9: Mezikroky prováděné při zvýšení obsahu čítače instrukcí o jedničku. Pro přičtení jedničky je v našem cvičném procesoru použita přímo aritmeticko-logická jednotka, zatímco v současných procesorech se jedná o zvláštní obvod pracující paralelně s ALU.
6. Obsah n-bitového vektoru generovaného řadičem
I v případě, že je struktura mikroprocesoru velmi jednoduchá, musí n-bitový vektor generovaný řadičem obsahovat velké množství logických signálů. V následující tabulce jsou některé z těchto signálů vypsány (jedná se o úpravu pro náš cvičební mikroprocesor):
01 | generování externího signálu MEMR (čtení slova z operační paměti) |
02 | generování externího signálu MEMW (zápis slova do operační paměti) |
03 | přečtení slova z řadiče paměti a jeho přenesení na interní sběrnici |
04 | zápis slova na interní sběrnici do řadiče paměti |
05 | přenos obsahu pracovního registru A na interní sběrnici |
06 | přenos obsahu pracovního registru B na interní sběrnici |
07 | přenos obsahu čítače instrukcí PC na interní sběrnici |
08 | přenos obsahu ukazatele na vrchol zásobníku SP na interní sběrnici |
09 | přenos obsahu registru příznaků na interní sběrnici |
10 | zápis slova na interní sběrnici do pracovního registru A |
11 | zápis slova na interní sběrnici do pracovního registru B |
12 | zápis slova na interní sběrnici do čítače instrukcí PC |
13 | zápis slova na interní sběrnici do ukazatele na vrchol zásobníku SP |
14 | zápis slova na interní sběrnici do prvního pomocného registru před ALU |
15 | zápis slova na interní sběrnici do druhého pomocného registru před ALU |
16 | zápis slova na interní sběrnici do registru příznaků |
17 | přenos obsahu třetího pomocného registru za ALU na interní sběrnici |
18 | výběr aritmetické operace součtu pro ALU |
18 | výběr aritmetické operace součtu s přenosem pro ALU |
19 | výběr aritmetické operace rozdílu pro ALU |
19 | výběr aritmetické operace rozdílu s výpůjčkou pro ALU |
20 | výběr bitové operace AND pro ALU |
21 | výběr bitové operace OR pro ALU |
22 | výběr bitové operace XOR pro ALU |
23 | výběr bitové operace NOT pro ALU |
24 | výběr bitové operace rotace doleva pro ALU |
25 | výběr bitové operace rotace doprava pro ALU |

Obrázek 10: Provedení velmi jednoduché instrukce typu MOV B,A, tj. přesun obsahu pracovního registru A do pracovního registru B.
Některé signály uvedené v předchozí tabulce mohou být aktivní ve stejný okamžik. Jedná se například o přenos obsahu pracovního registru A na interní sběrnici a současně o zápis slova ze sběrnice do prvního a/nebo druhého pracovního registru umístěného před ALU.

Obrázek 11: Funkční schéma řadiče při zpracování instrukcí podmíněných a nepodmíněných skoků (nejedná se o schéma zapojení).
7. Obvodový řadič
V předchozích dvou kapitolách jsme si vypsali jak sekvenci mezikroků, které je nutné provést pro vykonání zdánlivě velmi jednoduché operace součtu (ADD) a taktéž jsme si uvedli některé položky n-bitového vektoru, který musí řadič vygenerovat pro provedení každého mezikroku. Pokud by se například operace ADD měla vykonat v deseti mezikrocích, musí řadič vygenerovat korektní n-bitový vektor desetkrát – v každém hodinovém taktu jeden vektor. Řadič je z pohledu logických systémů vlastně konečným automatem, který je možné ručně navrhnout a optimalizovat pomocí klopných obvodů a běžných logických hradel. I když se tento způsob návrhu řadiče skutečně dá realizovat a byl dokonce v minulosti použit (například u první generace mikroprocesorů MIPS), mnohdy se používá obvodový řadič realizovaný buď na základě čítače, nebo s využitím posuvného registru, v němž je posouvána jediná logická jednička (ostatní bity posuvného registru jsou nulové).

Obrázek 12: Základ obvodového řadiče s posuvným registrem. Řídicí signály jsou označeny písmeny a, b a c.
Zdroj: Karel Kryštoufek, Kurs číslicových počítačů a mikropočítačů.
Základ řadiče využívajícího posuvného registru je v podstatě velmi jednoduchý. Jeho princip je zobrazen na obrázku umístěném před tímto odstavcem. Jedná se o řadič mající pět různých stavů. Činnost řadiče je zahájena signálem I, kterým se do prvního klopného obvodu zapíše logická jednička, zatímco všechny další klopné obvody jsou ve stavu logické nuly. S příchodem hodinového signálu H je tato logická jednička posunuta z prvního klopného obvodu do obvodu druhého, po dalším signálu H do obvodu třetího atd. Logická jednička je v kaskádě klopných obvodů pětkrát posunuta a klopné obvody se jako celek mohou nacházet v jednom z pěti stavů 0 až n-1. Z těchto pěti stavů lze pomocí běžných logických členů (typicky implementujících operace OR či častěji NOR) odvozovat libovolné množství řídicích signálů, které jsou v našem jednoduchém schématu označeny symboly a, b a c. Důležité je, že takto zapojený řadič může řídit sám sebe, protože libovolný řídicí signál může být přiveden jak na vstup I, tak i na vstup RESET klopných obvodů. V některých případech se namísto logických členů používají multiplexory, na jejichž vstup je přivedena trvalá logická jednička a jejichž výběrové vstupy jsou zapojeny na vhodná místa v posuvném registru.

Obrázek 13: Schéma obvodového řadiče s čítačem.
Zdroj: Karel Kryštoufek, Kurs číslicových počítačů a mikropočítačů.
8. Přednosti a zápory obvodového řadiče
Obvodový řadič, jehož princip jsme si vysvětlili v předchozí kapitole, tvoří ve skutečnosti pouze základ pro návrh skutečného řadiče vhodného pro řízení mikroprocesoru, protože jsme prozatím vůbec neuvažovali například o tom, jak je počáteční stav řadiče ovlivněn kódem instrukce (operačním znakem) či jakým způsobem se zpracovává adresní část kódu instrukce, pomocí níž se například vybírají pracovní registry. V reálném obvodovém řadiči je navíc možné ovlivňovat polohu jedničky, která je v klopných obvodech (realizujících posuvný registr) posouvána. My jsme prozatím uvažovali pouze o tom, že se jednička v každém taktu posune do dalšího klopného obvodu, ovšem v reálném řadiči je možné polohu jedničky v některém kroku neměnit nebo ji dokonce přesunout do jiné (obecně nesousední) polohy. Podobně je tomu v případě, že je řadič založen nikoli na posuvném registru, ale na čítači. Ostatně i v předchozí kapitole popsaný posuvný registr je ve skutečnosti čítačem pracujícím v kódu „1 z N“ :-).

Obrázek 14: Blokové schéma osmibitového mikroprocesoru Intel 8080, na němž můžeme rozeznat stejné části, jaké má i náš cvičný mikroprocesor. Samotný řadič je na tomto schématu představován spodním blokem, do nějž vstupují instrukce načtené z operační paměti a zpracované dekodérem instrukcí.
Obvodové řadiče se při návrhu logických obvodů používají již po velmi dlouhou dobu, protože pro jednodušší úlohy (tj. menší počet stavů řadiče i menší počet řídicích signálů), je i návrh obvodového řadiče poměrně jednoduchý a řadič je možné realizovat s využitím existujících součástek s malou i střední integrací – zejména se používají integrované obvody implementující logická hradla, posuvný registr, multiplexor a demultiplexor (podobné typy řadičů se používaly ve spotřební elektronice před nástupem mikroprocesorů a mikrořadičů). Výhodou těchto typů řadičů je jejich vysoká rychlost. Ovšem s rostoucí složitostí řešené úlohy již počet stavů řadiče i počet řídicích signálů (n-bitový vektor) generovaných v každém stavu roste do takové míry, že je většinou ekonomičtější použít další typ řadiče. Jedná se o takzvaný mikroprogramový řadič, který obsahuje paměť s uloženým mikroprogramem. Těmto typům řadičů, které jsou z hlediska programátora mnohem zajímavější i flexibilnější, se budeme podrobněji věnovat v následující části tohoto seriálu.

Obrázek 15: Blokové schéma mikroprogramového řadiče, které si podrobněji vysvětlíme příště.
Zdroj: Karel Kryštoufek, Kurs číslicových počítačů a mikropočítačů.
9. Odkazy na Internetu
- Philip Koopman: Stack Computers: the new wave
http://www.ece.cmu.edu/~koopman/stack_computers/index.html - Philip Koopman: ARCHITECTURE OF THE WISC CPU/16
http://www.ece.cmu.edu/~koopman/stack_computers/sec4_2.html - CPU World: Intel 3000 bit-slice processor family
http://www.cpu-world.com/CPUs/3002/ - Intel3000 – Schottky Bipolar LSI Microcomputer Set
http://datasheets.chipdb.org/Intel/3002_Family/3001/Intel3001.pdf - Katalog součástek TESLA: MH3000
http://www.amapro.cz/datove_zdroje/katalogy/katalog_tesla/katalog_tesla127.php - MH3001 (Tesla)
http://katalogy.ic.cz/MH3001.html - MH3002 (Tesla)
http://katalogy.ic.cz/MH3002.html - MH3003 (Tesla)
http://katalogy.ic.cz/MH3003.html - Russian and USSR (CPU, MCU, BSP and Multipliers)
http://www.cpucollection.ca/Russian_and_ussr.htm - CPU-zone: 3001
http://www.cpu-zone.com/3001.htm - CPU-zone: 3002 3002 Support Chips
http://www.cpu-zone.com/3002.htm - CPU-zone: 3003 Look-Ahead Carry Generator
http://www.cpu-zone.com/3003.htm - CPU-Zone: RAM History
http://www.cpu-zone.com/RAM_History.htm - Bit slicing
http://en.wikipedia.org/wiki/Bit_slicing - Bitslice DES
http://www.darkside.com.au/bitslice/ - Great Microprocessors of the Past and Present: Part VII: Advanced Micro Devices Am2901, a few bits at a time …
http://www.cpushack.com/CPU/cpu1.html#Sec1Part7 - Great Microprocessors of the Past and Present: Part IX: Signetics 8×300, Early cambrian DSP ancestor (1978):
http://www.cpushack.com/CPU/cpu2.html#Sec2Part9 - Introduction to DSP – DSP processors:
http://www.bores.com/courses/intro/chips/index.htm - The Scientist and Engineer's Guide to Digital Signal Processing:
http://www.dspguide.com/ - Digital signal processor (Wikipedia EN)
http://en.wikipedia.org/wiki/Digital_signal_processor - Digitální signálový procesor (Wikipedia CZ)
http://cs.wikipedia.org/wiki/Digitální_signálový_procesor - Digital Signal Processing FAQs
http://dspguru.com/dsp/faqs - Reprezentace numerických hodnot ve formátech FX a FP
http://www.root.cz/clanky/fixed-point-arithmetic/ - IEEE 754 a její příbuzenstvo: FP formáty
http://www.root.cz/clanky/norma-ieee-754-a-pribuzni-formaty-plovouci-radove-tecky/ - Aritmetické operace s hodnotami uloženými ve formátu FP
http://www.root.cz/clanky/aritmeticke-operace-s-hodnotami-ve-formatu-plovouci-radove-carky/ - Výpočet goniometrických funkcí pomocí algoritmu CORDIC
http://www.root.cz/clanky/vypocet-goniometrickych-funkci-algoritmem-cordic/ - Použití CORDICu pro výpočet dalších funkcí
http://www.root.cz/clanky/metoda-cordic-a-vypocet-funkci-tan-atan-a-length/ - Čtyři základní způsoby uložení čísel pomocí FX formátů
http://www.root.cz/clanky/binarni-reprezentace-numerickych-hodnot-v-fx-formatu/ - Základní aritmetické operace prováděné v FX formátu
http://www.root.cz/clanky/zakladni-aritmeticke-operace-provadene-ve-formatu-fx/ - Implementace algoritmů pro aritmetické operace
http://www.root.cz/clanky/implementace-aritmetickych-operaci-s-fx-formatem-v-cecku/ - Algoritmus CORDIC s hodnotami uloženými ve formátu FX
http://www.root.cz/clanky/algoritmus-cordic-s-hodnotami-ulozenymi-ve-formatu-fx/ - Algoritmus CORDIC v FX formátu a goniometrické funkce
http://www.root.cz/clanky/algoritmus-cordic-v-fx-formatu-a-goniometricke-funkce/ - FIR Filter FAQ
http://dspguru.com/dsp/faqs/fir - Finite impulse response (Wikipedia)
http://en.wikipedia.org/wiki/Finite_impulse_response - DSPRelated
http://www.dsprelated.com/ - Uzebox project home page
http://code.google.com/p/Uzebox/ - The AVR Eclipse Plugin home page
http://sourceforge.net/projects/avr-eclipse/ - The AVR Eclipse Plugin description
http://avr-eclipse.sourceforge.net/wiki/index.php/The_AVR_Eclipse_Plugin - AVRDUDE – AVR Downloader/UploaDEr
http://www.nongnu.org/avrdude/ - AVRDUDE-gui (nadstavba nad AVRDUDE)
http://sourceforge.net/projects/avrdude-gui/ - USBtiny
http://www.xs4all.nl/~dicks/avr/usbtiny/ - USBtinyISP
http://www.ladyada.net/make/usbtinyisp/ - Uzebox pages: Introduction
http://belogic.com/uzebox/howitsmade.htm - Uzebox pages: Hardware Description
http://belogic.com/uzebox/hardware.htm - Uzebox pages: Video primer
http://belogic.com/uzebox/video_primer.htm - Uzebox pages: Schemas
http://belogic.com/uzebox/downloads.htm - AVRFreaks Wiki
http://www.avrfreaks.net/wiki/index.php/Main_Page - Atmel AVR 8-bit and 32-bit
http://www.atmel.com/products/avr/ - tinyAVR
http://www.atmel.com/dyn/products/devices.asp?category_id=163&family_id=607&subfamily_id=791 - AT-Mini
http://www.mikroe.com/eng/products/view/649/at-mini-board/ - Arduino
http://www.arduino.cc/ - AVR Microcontroller
http://www.engineersgarage.com/articles/avr-microcontroller - Atmel AVR – Wikipedia
http://en.wikipedia.org/wiki/Atmel_AVR - AVR instruction set
http://avr.hw.cz/architektura/instukce.html - Porovnání jednotlivých procesorů (mikrořadičů) AVR
http://avr.hw.cz/architektura/porovnani.html - 68HC11 Instruction Set
http://www.cs.uaf.edu/2007/fall/cs441/proj1notes/sawyer/inst.html - 68HC11 OpCode Map
http://home.earthlink.net/~tdickens/68hc11/68hc11_opcode_map.html - A Simple Robot Using the 68HC11 Processor
http://home.earthlink.net/~tdickens/68hc11/trp2/trp2.html - 68HC11 C-Compiler (Imagecraft)
http://microcontrollershop.com/product_info.php?products_id=188 - GNU Development Chain for 68HC11&68HC12
http://www.gnu.org/software/m68hc11/ - GNU C for 68HC11 – documentation
http://www.gnu.org/software/m68hc11/m68hc11_doc.html - The P-Brain tm Microcontroller Kit
http://www.futurebots.com/brain.htm - Wikipedia: Motorola 68HC05
http://en.wikipedia.org/wiki/Motorola_68HC05 - Wikipedia: Freescale 68HC08
http://en.wikipedia.org/wiki/68HC08 - Wikipedia: Freescale 68HC11
http://en.wikipedia.org/wiki/68HC11 - Wikipedia: Freescale 68HC12
http://en.wikipedia.org/wiki/Freescale_68HC12 - HC05 Processor Families
http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=01624684498633 - HC08 Processor Families
http://www.freescale.com/webapp/sps/site/overview.jsp?nodeId=01624684497663 - Digital Core Design 68HC08 – HDL IP Core
http://www.dcd.pl/acore.php?idcore=82 - Freescale 68HC11
http://www.freescale.com/webapp/sps/site/taxonomy.jsp?nodeId=01624684498635 - Lifecycle of a CPU:
http://www.cpushack.net/life-cycle-of-cpu.html - Most wanted CPU of the world:
http://www.cpu-galaxy.at/CPU/Intel%20CPU/3002–8008/4004%20Grey.jpg - Wikipedia: 6502:
http://en.wikipedia.org/wiki/6502 - The Western Design Center, Inc.:
http://www.westerndesigncenter.com/ - Apple II History Home:
http://apple2history.org/ - www.6502.org:
http://www.6502.org/ - Stránky firmy Microchip Technology
http://www.microchip.com/ - Výběr z různých modelů (osmibitových) mikrořadičů PIC
http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=2661 - Řada (rodina) osmibitových mikrořadičů PIC 10
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1009&mid=10&lang=en&pageId=74 - Řada (rodina) osmibitových mikrořadičů PIC 12
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1001&mid=10&lang=en&pageId=74 - Řada (rodina) osmibitových mikrořadičů PIC 14
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1008&mid=10&lang=en&pageId=74 - Řada (rodina) osmibitových mikrořadičů PIC 16
http://www.microchip.com/ParamChartSearch/chart.aspx?branchID=1002&mid=10&lang=en&pageId=74 - Další výběr z různých modelů mikrořadičů PIC
http://www.microchip.com/maps/microcontroller.aspx - PIC microcontroller (Wikipedia EN)
http://en.wikipedia.org/wiki/PIC_microcontroller - Mikrokontrolér PIC (Wikipedia CZ)
http://cs.wikipedia.org/wiki/Mikrokontrolér_PIC - FLASHFORTH for the PIC18F and the dsPIC30F
http://flashforth.sourceforge.net/ - FlashForth
http://www.sourceforge.net/projects/flashforth - Free Pic software tools
http://softwarepic.50webs.com/freesoft.html - What is Amicus?
http://www.picbasic.org/proton_lite.php - Amicus FAQ
http://www.myamicus.co.uk/faq.php?s=2e8d12e7f4c23e775776f4916876354b& - Microcontrollers development tools
http://www.gnupic.dds.nl/ - gpsim (Wikipedia EN)
http://en.wikipedia.org/wiki/Gpsim - gpsim home page
http://gpsim.sourceforge.net/gpsim.html - The FreeRTOS Project
http://www.freertos.org/ - FreeRTOS (Wikipedia)
http://en.wikipedia.org/wiki/FreeRTOS - Serial EEPROM (93C46 / 93CS46) Routines
http://www.pjrc.com/tech/8051/serial-eeprom.html - Great Microprocessors of the Past and Present (V 13.4.0)
http://jbayko.sasktelwebsite.net/cpu.html - SPI interface tutorial
http://www.best-microcontroller-projects.com/spi-interface.html - Serial Peripheral Interface Bus
http://en.wikipedia.org/wiki/Serial_Peripheral_Interface_Bus - EUSB to SPI bus Kit
http://www.eidusa.com/Electronics_Kits_EUSB_To_SPI_BUS.htm - SPI Block Guide V03.06, Freescale Semiconductor
http://www.freescale.com/files/microcontrollers/doc/ref_manual/S12SPIV3.pdf - What is SPI?
http://www.fpga4fun.com/SPI1.html - SPI – A simple implementation
http://www.fpga4fun.com/SPI2.html - Bit-banging
http://en.wikipedia.org/wiki/Bit-banging - Joint Test Action Group
http://en.wikipedia.org/wiki/JTAG - I2C
http://en.wikipedia.org/wiki/I2C - Seriál o programovacím jazyce Forth:
seriál o programovacím jazyce Forth - Display Data Channel
http://en.wikipedia.org/wiki/Display_Data_Channel - I2 Background
http://www.microport.tw/blognew.php?blog_no=7#theory - PIC16F87X, 28/40-pin 8-Bit CMOS FLASH Microcontrollers
Microchip Technology Inc.
http://www.microchip.com