Procesor sestavený z čipů AMD Am2900 - předchůdce skutečných DSP

12. 4. 2011
Doba čtení: 20 minut

Sdílet

V dnešním článku si popíšeme integrované obvody tvořící rodinu AMD Am2900. Z těchto čipů bylo možné sestavovat specializované procesory s bitovou šířkou, která mohla být prakticky libovolným násobkem čtyř. Díky tomu, že i instrukční sada byla volitelná, používaly se i pro konstrukci signálových procesorů.

Obsah

1. Digitální signálové procesory před rokem 1980

2. Integrované obvody řady AMD Am2900 aneb zlatá střední cesta pro konstruktéry

3. Procesory sestavované z „bitových řezů“

4. Čip Am2901 – základní aritmeticko-logická jednotka

5. Integrovaný obvod Am2902

6. Vylepšené ALU: čipy Am2903 a Am29203

7. Sekvencér a programový řadič

8. Použití řady Am2900 v praxi i ve výuce

9. Odkazy na Internetu

1. Digitální signálové procesory před rokem 1980

V předchozí části seriálu o architekturách počítačů jsme si řekli základní informace o některých typických vlastnostech digitálních signálových procesorů (DSP). Vlastnosti DSP vyžadované jejich uživateli (což jsou většinou konstruktéři a/nebo programátoři různých elektronických zařízení) se v některých ohledech poněkud odlišují od vlastností běžných mikroprocesorů (CPU) či mikrořadičů (MCU). Jedná se především jak o odlišnou architekturu operačních pamětí (digitální signálový procesor by měl implementovat kruhové buffery a taktéž současné čtení ze dvou paměťových oblastí), tak i o požadavek na provádění základních aritmetických operací s takzvanou saturací. Digitální signálový procesor by měl taktéž podporovat instrukci pro násobení operandů (opět se saturací), měl by obsahovat větší množství pracovních registrů a v ideálním případě by jeho akumulátor (popř. akumulátory) měly mít větší bitovou šířku, než je bitová šířka vstupních a výstupních dat. Data na vstupu DSP jsou většinou získávána ze vstupního analogového signálu pomocí A/D převodníku a vzorkovacího/sam­plovacího obvodu typu Sample & Hold. Na výstup DSP může být připojen D/A převodník, popř. může digitální signál přicházet do dalšího článku celého výpočetního řetězce.

Obrázek 1: Typický představitel klasických mikroprocesorů osmibitové éry: MHB 8080A, což je československý klon mikroprocesoru Intel 8080A. I přesto, že se tento osmibitový mikroprocesor používal ve velkém množství zařízení (zpočátku dokonce suploval roli mikrořadičů, což je poněkud paradoxní, protože pro svoji korektní funkci vyžadoval kooperaci s minimálně dvěma dalšími čipy 8224 a 8228), neměl některé vlastnosti požadované při zpracování signálů v reálném čase.

V současnosti je nabídka digitálních signálových procesorů velmi široká, takže si konstruktéři různých elektronických zařízení mohou vybírat DSP podle jejich výpočetního výkonu, bitové šířky zpracovávaných dat (vzorků – samplů), kapacity datových i programových pamětí, ceny, spotřeby čipu atd. Taktéž je možné v případě potřeby celý digitální signálový procesor implementovat na FPGA (mnohé FPGA již obsahují sčítačky či dokonce násobičky, čímž se celá problematika zjednodušuje). Ovšem v minulosti – myšlena je v tomto případě přibližně doba před rokem 1980 – nebyly možnosti konstruktérů při výběru DSP zdaleka tak velké, protože se tehdejší výrobci mikroprocesorů a mikrořadičů teprve seznamovali s novými požadavky na vlastnosti těchto čipů. To ovšem znamenalo, že se pro implementaci elektronického obvodu určeného pro zpracování signálů, například při konstrukci digitální pásmové propusti, musel použít buď existující mikroprocesor nebo mikrořadič se všemi jeho nevýhodami v této poměrně specifické oblasti, nebo bylo nutné celé zařízení implementovat vlastní logickou sítí, například pomocí bipolárních integrovaných obvodů řady 7400.

Obrázek 2: Jedna z variant mikrořadiče Intel 8048. Osmibitové mikrořadiče sice mají některé společné vlastnosti s digitálními signálovými procesory (například oddělenou paměť programu a paměť dat, někdy i existenci A/D převodníku či modulu pro PWM), nicméně ani tyto čipy se pro zpracování signálů příliš nehodí.

2. Integrované obvody řady AMD Am2900 aneb zlatá střední cesta pro konstruktéry

Ve skutečnosti obě možnosti, které byly naznačené na konci předchozí kapitoly, nejsou pro konstruktéry elektronických zařízení mnohdy ani zdaleka ideální. Při použití běžného mikroprocesoru či mikrořadiče jako náhrady za DSP většinou citelně chyběla neexistence hardwarové násobičky, popř. její nízká výpočetní výkonnost. To je případ původní verze již popsaného osmibitového mikrořadiče 8051, který sice násobičku obsahoval, ale násobení bylo současně i nejpomalejší instrukcí tohoto MCU. Mnohdy taktéž konstruktérům vadilo to, že osmibitové CPU/MCU byly nevýkonné a naproti tomu šestnáctibitové mikroprocesory byly na konci sedmdesátých let minulého století ještě velmi drahé, takže by jejich použití například v běžných elektronických zařízeních nebylo ve velké většině případů rentabilní. Konstrukce logických sítí sestavených z hradel, klopných obvodů, posuvných registrů, pamětí atd., tj. z integrovaných obvodů o poměrně nízké integraci, již v sedmdesátých letech taktéž nebylo příliš rentabilní a navíc velký počet těchto obvodů znamenal komplikace při tvorbě plošného spoje, napájení součástek i jejich chlazení.

Obrázek 3: Osmibitový mikrořadič 68HC11 řady E se v některých zařízeních doposud používá ve funkci digitálního signálového procesoru (například i kvůli existenci A/D převodníků, násobičky a podpory šestnáctibitové aritmetiky), nicméně jde to i levněji/rychle­ji/elegantněji :-)

Ovšem již v roce 1975, tedy pouze několik měsíců po vytvoření prvního mikroprocesoru, přišla firma AMD s velmi zajímavou a v mnoha ohledech i revoluční technologií – takzvanou rodinou Am2900. Jednalo se o skupinu více než čtyřiceti typů integrovaných obvodů o střední až vysoké integraci, která byla navržena takovým způsobem, že se pomocí těchto čipů mohl sestavit plnohodnotný procesor zpracovávající data o bitové šířce, která byla násobkem čtyř. S trochou praxe tedy mohli konstruktéři sestavit čtyřbitový, osmibitový, dvanáctibitový, šestnáctibitový atd. atd. procesor, u nějž si dokonce mohli zvolit vlastní instrukční sadu odpovídající povaze řešeného problému. Navíc, což se ukázalo být v oblasti zpracování signálu poměrně důležité, existoval v rodině Am2900 čip implementující aritmeticko-logickou jednotku, a to i s hardwarovou násobičkou. Prakticky všechny integrované obvody z rodiny Am2900 používaly bipolární technologii, což mj. znamenalo i vyšší rychlost, než tomu bylo u tehdejších mikroprocesorů, které používaly technologii NMOS či PMOS (popř. později i CMOS).

Obrázek 4: Již minule zmíněný digitální signálový procesor TMS32010 firmy Texas Instruments, který konstruktérům nabídl na svou dobu vysoký výpočetní výkon v základních operacích se signálem (součet + součin).

3. Procesory sestavované z „bitových řezů“

Firma AMD prezentovala rodinu Am2900 pod názvem „bit slice processor“. Tímto názvem je řečeno přibližně to, že aritmeticko-logická jednotka implementovaná v samostatném čipu, má relativně malou bitovou šířku (v případě rodiny Am2900 se jednalo pouze o čtyři bity, v minulosti se však používaly i jednobitové a dvoubitové ALU), protože výrobce čipové sady předpokládá, že se při konstrukci procesorů použije větší množství aritmeticko-logických jednotek pracujících sériově či paralelně, a to takovým způsobem, aby bylo možné zpracovávat operandy o větší bitové šířce.

Obrázek 5: Integrovaný obvod AMD Am2901 tvořící ústřední část modulární architektury AMD Am2900. Zde zobrazený čip pochází z řady určené mj. i pro armádní účely (jeho charakteristiky tedy umožňují práci ve větším teplotním rozsahu atd.).

To ovšem taktéž znamenalo, že se v čipové sadě musel (minimálně při řazení ALU paralelně) nacházet i integrovaný obvod, který dokázal správně rozpoznat příznaky přetečení (overflow flag) a přenosu (carry flag) na základě stavových signálů přijímaných od jednotlivých ALU, jiný obvod musel vyhodnocovat příznak nuly (zero flag) atd. Další integrovaný obvod se staral o to, aby jednotlivé ALU mohly pracovat skutečně paralelně – zajišťoval tedy sčítání a odčítání operandů se zrychleným přenosem, kdy se příznak přenosu (carry) generuje již v průběhu sčítání obou operandů.

Obrázek 6: Klon výše zobrazeného čipu AMD Am2901, který pochází ze SSSR.

4. Čip Am2901 – základní aritmeticko-logická jednotka

Ústředním prvkem procesorů sestavených z bitových řezů byl v případě rodiny AMD Am2900 čip nesoucí označení Am2901. Tento integrovaný obvod (někdy označovaný za samostatný procesor, což však není zcela korektní) obsahoval především dva důležité bloky. Jednalo se o blok sestavený ze šestnácti čtyřbitových registrů a taktéž o blok, v němž byla implementována čtyřbitová aritmeticko-logická jednotka. Oba bloky byly ovládány externími řídicími signály: pro ovládání funkce bloku registrů se používaly signály pro výběr registrů pro čtení a zápis operandů (tyto signály lze považovat za čtyřbitové adresy sloužící pro výběr jednoho ze šestnácti pracovních registrů), aritmeticko-logická jednotka byla naproti tomu řízena mikroinstrukcemi o šířce devíti bitů, v nichž se určovala funkce prováděná ALU, zdrojové operandy a taktéž umístění výsledku. Jako jeden z operandů mohla taktéž sloužit data přiváděná po čtyřech samostatných externích linkách – tímto způsobem se například mohla přičíst konstanta k libovolnému pracovnímu registru apod.

Obrázek 7: Integrovaný obvod Am2901.

Vzhledem k tomu, že pro výběr funkce provedené aritmeticko-logickou jednotkou, byly určeny pouze tři bity z devítibitové mikroinstrukce, bylo možné vybrat jednu z osmi operací: R+S, S-R, R-S (prohozené operandy v porovnání s předchozí instrukcí), R or S, R and S, (not R) and S, R xor S a konečně neg (R xor S). Operandy R a S byly vybírány taktéž na základě trojice bitů z devítibitové mikroinstrukce, přičemž jednou z možností bylo dosazení konstanty 0 za jeden z operandů R nebo S. S využitím této možnosti se daly implementovat některé unární aritmetické operace, například změna znaménka operandu, negace operandu, vynulování operandu, inkrementace či dekrementace s využitím jedničkového přenosu (carry) na vstupu ALU atd. Kromě čtyřbitového výsledku byly na výstupní piny čipu Am2901 přiváděny i další stavové signály: příznak přetečení (carry), příznak záporného výsledku (negative), příznaky P (propagate) a G (generate) používané při zřetězení ALU se zrychleným přenosem a taktéž příznak přetečení overflow používaný při výpočtech s čísly se znaménkem (ten měl význam pouze u ALU počítající čtyři bity s nejvyšší váhou).

Obrázek 8: Zjednodušený blokový diagram čipu Am2901.
Zdroj: technické materiály firmy AMD.

5. Integrovaný obvod Am2902

Dalším integrovaným obvodem patřícím do rodiny AMD Am2900 byl čip Am2902, který sloužil v případě paralelního spojení většího počtu aritmeticko-logických jednotek k rychlému generování příznaků přenosu carry, které tvoří jeden z nezbytných vstupů ALU. Díky existenci tohoto čipu, jehož vnitřní schéma je mimochodem poměrně jednoduché, bylo umožněno paralelně zapojit až čtyři aritmeticko-logické jednotky a vytvořit tak vlastně ALU se šířkou šestnácti bitů. Při implementaci obvodu Am2902 se využívala dvojice bitových příznaků propagate a generate vytvářená samotnými ALU přímo na základě vstupních hodnot operandů a popř. i příznaku přenosu C0, který může být použit například pro přičtení jedničky k výsledku aritmetické operace. Příznak propagate značí, že přenos z ALU může být vypočten a přiveden na vstup následující ALU, a to ještě předtím, než je samotná operace součtu či rozdílu vůbec vykonána. Příznak generate naopak značí, že přenos bude skutečně ALU generován, což je opět možné zjistit pomocí základních logických operací ještě před vlastním provedením součtu či rozdílu.

Obrázek 9: Šestnáctibitová ALU sestavená ze čtveřice čipů Am2901 a jednoho čipu Am2902.
Zdroj: technické materiály firmy AMD.

Kvůli tomu, že integrovaný obvod Am2902 má počet párů vstupních signálů propagate+gene­rate omezen na tři, je možné paralelně zapojit „pouze“ čtveřici čtyřbitových aritmeticko-logických jednotek, což sice ve výsledku vede ke konstrukci šestnáctibitového procesoru (mimochodem levnějšího, než první procesory řady Intel 8086), ovšem v některých zařízeních byla požadována i větší bitová šířka zpracovávaných operandů. V tomto případě bylo možné buď navrhnout vlastní logickou síť simulující vícebitový obvod Am2902 (což ovšem vyžaduje použití logických hradel s mnoha vstupy), nebo bylo možné zapojit větší množství čipů Am2902 způsobem, který je naznačen na následujícím obrázku, kde je zobrazena aritmeticko-logická jednotka 32bitového procesoru. Povšimněte si, že jednotlivé dílčí čtyřbitové ALU jsou rozděleny na dvě čtveřice, přičemž vstup carry do druhé čtveřice sčítaček je generován samostatným třetím obvodem Am2902, ovšem s určitým časovým zpožděním, které však není tak velké jako v případě, že by se součet či rozdíl 32bitových operandů realizoval programově jako součet či rozdíl dvou dvojic 16bitových operandů.

Obrázek 10: 32bitová ALU sestavená z osmice čipů Am2901 a trojice čipů Am2902.
Zdroj: technické materiály firmy AMD.

6. Vylepšené ALU: čipy Am2903 a Am29203

Ve čtvrté kapitole byl popsán základní typ aritmeticko-logické jednotky rodiny AMD Am2900. Jednalo se o čip Am2901 s podporou tří základních aritmetických operací (součet, rozdíl a rozdíl s otočením významu operandů) a pěti operací logických prováděných bit po bitu. Ovšem namísto této základní ALU bylo taktéž možné použít složitější integrovaný obvod nesoucí označení Am2903 či Am29203. Tento obvod byl v několika ohledech oproti Am2901 vylepšen, zejména v tom ohledu, že obsahoval podporu pro násobení a dělení dvou operandů. Násobení (a taktéž dělení) nebylo prováděno v jednom taktu, ale v n mikroinstrukčních cyklech pro operandy o šířce n bitů s tím, že výsledek měl délku 2n bitů. Tento čip dále umožňoval provádět aritmetický nebo logický posuv operandu a to dokonce s tím rozšířením, že se jedním příznakem signalizovalo dokončení posuvu (vysunutí poslední nuly) při normalizaci čísel reprezentovaných ve formátu plovoucí řádové čárky (tento formát sice nebyl přímo podporován, ovšem i jednoduchou FPU bylo možné pomocí řady Am2900 sestavit, dokonce se nejednalo o nijak složité zapojení).

Obrázek 11: Sovětská varianta čipu Am2903.

Celkový počet operací podporovaných integrovaným obvodem Am2903 se oproti Am2901 zvýšil na šestnáct – sedm aritmetických operací a devět operací logických (bitových). Při vzájemném spojování několika integrovaných obvodů Am2903 takovým způsobem, aby tvořily vícebitovou aritmeticko-logickou jednotku, se muselo pomocí dvojice vstupních signálů pro každý čip Am2903 určit, v jakém místě celé „baterie ALU“ se tento čip nachází – buď se mohlo jednat o ALU zpracovávající čtyři bity s nejmenší váhou (LSS – Least Significant Slice), ALU zpracovávající naopak čtyři bity s největší váhou (MSS – Most Significant Slice), popř. o ALU ležící v celém řetězci uprostřed (IS – Intermediate Slice). Na základě této informace byly některé operace v aritmeticko-logických jednotkách prováděny poněkud odlišným způsobem – týká se to jak násobení či dělení, tak i bitových posunů a rotací.

Obrázek 12: Blokové schéma integrovaného obvodu Am2903.
Zdroj: technické materiály firmy AMD.

7. Sekvencér a programový řadič

Skutečný procesor však není tvořen pouze aritmeticko-logickou jednotkou, ale i řadičem. V případě procesorů sestavovaných z bitových řezů musel být řadič implementován s využitím dalších specializovaných obvodů, většinou pomocí sekvencéru a paměti o relativně malé kapacitě, v níž se strojové instrukce rozkládaly na mikroinstrukce, tj. signály řídicí přístup do paměti, funkce aritmeticko-logických jednotek atd. Záleželo jen na konstruktérovi procesoru (tím mohl být samotný programátor), jaký formát instrukcí si zvolí, které instrukce bude implementovat atd. Navíc bylo možné díky oddělení aritmeticko-logické jednotky od řadiče v procesoru poměrně jednoduše implementovat i další funkce, které nebyly původní ALU prováděny. Mohlo jít například o děličku sestavenou ze samostatné ALU (či dvojice ALU), pomocného čipu implementujícího registr a několika běžných logických hradel. Požadavky kladené na programátora těchto typů procesorů tak sice byly o něco vyšší, než u programátora využívajícího plnohodnotný mikroprocesor připravený výrobcem, ovšem i jeho volnost a možnosti byly mnohem větší.

Obrázek 13: Velmi jednoduchý čtyřbitový procesor sestavený z čipů rodiny Am2900.
Zdroj: technické materiály firmy AMD.

Podívejme se nyní na obrázek číslo 13, na němž je znázorněn velmi jednoduchý čtyřbitový (popř. n×4 bitový) procesor sestavený z čipů patřících do rodiny Am2900. Tento procesor se skládá ze dvou hlavních bloků. Na pravé straně schématu se nachází aritmeticko-logická jednotka s pomocnými obvody a taktéž stavovým registrem Am2918. Na levé straně můžeme vidět řadič sestavený především ze sekvencéru a mikroprogramové paměti (což je ve skutečnosti běžná paměť typu ROM, ovšem s větší bitovou šířkou slov). Sekvencér společně s mikroprogramovou pamětí na základě instrukčního kódu a různých bitových příznaků generuje mikroinstrukce prováděné aritmeticko-logickou jednotkou, které však zpětně ovlivňují i instrukční registr a další části procesoru. Sekvencér je tvořen čipem Am2909, jenž dokáže generovat čtyřbitové adresy, což je však většinou nedostatečný adresový rozsah. Z tohoto důvodu je možné spojit dvojici čipů Am2909 pro generování osmibitové adresy (256 slov) či trojici čipů pro generování adresy dvanáctibitové (4096 slov). Formát mikroinstrukcí a samozřejmě i vlastní obsah mikroprogramové paměti je zcela ponechán na vůli konstruktéra procesoru; jediné omezení spočívá v kapacitě této paměti a taktéž nutnosti dodržení časování jednotlivých částí procesoru.

Obrázek 14: Jedna z publikací, která se věnuje procesorům sestaveným z bitových řezů.

8. Použití řady Am2900 v praxi i ve výuce

Rodina čipů AMD Am2900 se již krátce po svém uvedení na trh v roce 1975 stala mezi konstruktéry i mezi některými programátory poměrně populární, protože jim nabízela velkou flexibilitu při návrhu procesoru (včetně jeho instrukční sady) a současně se díky použité bipolární technologii jednalo i o relativně rychlé řešení, ovšem na úkor větší spotřeby a nižší integrace. Integrované obvody Am2900 se z tohoto důvodu používaly například při konstrukcích minipočítačů, některých méně známých typů mikropočítačů, specializovaných zařízení (například prototypů 2D grafických akcelerátorů), ale i pro realizaci digitálních signálových procesorů, kde se mohlo využít například možnosti pracovat s osmibitovými vzorky, ovšem aritmeticko-logická jednotka mohla zpracovávat dvanáctibitová data (tři čtyřbitové ALU zapojené paralelně). Navíc se samotné aritmeticko-logické jednotky, tj. integrované obvody Am2901 a/nebo Am2903, používaly i při návrzích různých zapojení specializovaných pro provádění maticových operací (součty matic, násobení matic apod.).

Obrázek 15: Grafický akcelerátor (2D) používající čipy z rodiny Am2900.

bitcoin školení listopad 24

Dokonce i některé matematické koprocesory pracující s numerickými hodnotami reprezentovanými v systému plovoucí řádové čárky byly implementovány s využitím integrovaných obvodů patřících do rodiny Am2900. Navíc se díky velké otevřenosti celé architektury Am2900 (zejména v porovnání s běžnými mikroprocesory) používala rodina Am2900 i pro výuku na univerzitách, protože na vodiče mezi jednotlivými čipy bylo možné zapojit osciloskop nebo logický analyzátor, takže se Am2900 mohlo použít i při výuce (v sedmdesátých letech minulého století se informatika většinou vyučovala současně s elektronikou, popř. matematikou). Teprve o mnoho let později se tyto bipolární obvody začaly postupně nahrazovat buď obecnými jednočipovými mikroprocesory, popř. programo­vatelnými FPGA, které jsou v některých ohledech ještě flexibilnější (a dnes již samozřejmě i mnohem výkonnější), než dnes již poněkud zastaralá řada AMD Am2900.

Obrázek 16: Deska obsahující mj. i ALU Am2901.

9. Odkazy na Internetu

  1. Bit slicing
    http://en.wiki­pedia.org/wiki/Bit_sli­cing
  2. Bitslice DES
    http://www.dar­kside.com.au/bit­slice/
  3. Great Microprocessors of the Past and Present: Part VII: Advanced Micro Devices Am2901, a few bits at a time …
    http://www.cpushac­k.com/CPU/cpu­1.html#Sec1Par­t7
  4. Great Microprocessors of the Past and Present: Part IX: Signetics 8×300, Early cambrian DSP ancestor (1978):
    http://www.cpushac­k.com/CPU/cpu­2.html#Sec2Par­t9
  5. Introduction to DSP – DSP processors:
    http://www.bo­res.com/courses/in­tro/chips/index­.htm
  6. The Scientist and Engineer's Guide to Digital Signal Processing:
    http://www.dspgu­ide.com/
  7. Digital signal processor (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/Di­gital_signal_pro­cessor
  8. Digitální signálový procesor (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Di­gitální_signá­lový_procesor
  9. Digital Signal Processing FAQs
    http://dspguru­.com/dsp/faqs
  10. Reprezentace numerických hodnot ve formátech FX a FP
    http://www.ro­ot.cz/clanky/fi­xed-point-arithmetic/
  11. IEEE 754 a její příbuzenstvo: FP formáty
    http://www.ro­ot.cz/clanky/nor­ma-ieee-754-a-pribuzni-formaty-plovouci-radove-tecky/
  12. Aritmetické operace s hodnotami uloženými ve formátu FP
    http://www.ro­ot.cz/clanky/a­ritmeticke-operace-s-hodnotami-ve-formatu-plovouci-radove-carky/
  13. Výpočet goniometrických funkcí pomocí algoritmu CORDIC
    http://www.ro­ot.cz/clanky/vy­pocet-goniometrickych-funkci-algoritmem-cordic/
  14. Použití CORDICu pro výpočet dalších funkcí
    http://www.ro­ot.cz/clanky/me­toda-cordic-a-vypocet-funkci-tan-atan-a-length/
  15. Čtyři základní způsoby uložení čísel pomocí FX formátů
    http://www.ro­ot.cz/clanky/bi­narni-reprezentace-numerickych-hodnot-v-fx-formatu/
  16. Základní aritmetické operace prováděné v FX formátu
    http://www.ro­ot.cz/clanky/za­kladni-aritmeticke-operace-provadene-ve-formatu-fx/
  17. Implementace algoritmů pro aritmetické operace
    http://www.ro­ot.cz/clanky/im­plementace-aritmetickych-operaci-s-fx-formatem-v-cecku/
  18. Algoritmus CORDIC s hodnotami uloženými ve formátu FX
    http://www.ro­ot.cz/clanky/al­goritmus-cordic-s-hodnotami-ulozenymi-ve-formatu-fx/
  19. Algoritmus CORDIC v FX formátu a goniometrické funkce
    http://www.ro­ot.cz/clanky/al­goritmus-cordic-v-fx-formatu-a-goniometricke-funkce/
  20. FIR Filter FAQ
    http://dspguru­.com/dsp/faqs/fir
  21. Finite impulse response (Wikipedia)
    http://en.wiki­pedia.org/wiki/Fi­nite_impulse_res­ponse
  22. DSPRelated
    http://www.dspre­lated.com/
  23. Uzebox project home page
    http://code.go­ogle.com/p/Uze­box/
  24. The AVR Eclipse Plugin home page
    http://source­forge.net/pro­jects/avr-eclipse/
  25. The AVR Eclipse Plugin description
    http://avr-eclipse.source­forge.net/wiki/in­dex.php/The_AV­R_Eclipse_Plu­gin
  26. AVRDUDE – AVR Downloader/UploaDEr
    http://www.non­gnu.org/avrdu­de/
  27. AVRDUDE-gui (nadstavba nad AVRDUDE)
    http://source­forge.net/pro­jects/avrdude-gui/
  28. USBtiny
    http://www.xs4a­ll.nl/~dicks/a­vr/usbtiny/
  29. USBtinyISP
    http://www.la­dyada.net/make/us­btinyisp/
  30. Uzebox pages: Introduction
    http://belogic­.com/uzebox/ho­witsmade.htm
  31. Uzebox pages: Hardware Description
    http://belogic­.com/uzebox/har­dware.htm
  32. Uzebox pages: Video primer
    http://belogic­.com/uzebox/vi­deo_primer.htm
  33. Uzebox pages: Schemas
    http://belogic­.com/uzebox/dow­nloads.htm
  34. AVRFreaks Wiki
    http://www.avrfre­aks.net/wiki/in­dex.php/Main_Pa­ge
  35. Atmel AVR 8-bit and 32-bit
    http://www.at­mel.com/produc­ts/avr/
  36. tinyAVR
    http://www.at­mel.com/dyn/pro­ducts/devices­.asp?category_id=163&fa­mily_id=607&sub­family_id=791
  37. AT-Mini
    http://www.mi­kroe.com/eng/pro­ducts/view/649/at-mini-board/
  38. Arduino
    http://www.ar­duino.cc/
  39. AVR Microcontroller
    http://www.en­gineersgarage­.com/articles/a­vr-microcontroller
  40. Atmel AVR – Wikipedia
    http://en.wiki­pedia.org/wiki/At­mel_AVR
  41. AVR instruction set
    http://avr.hw­.cz/architektu­ra/instukce.html
  42. Porovnání jednotlivých procesorů (mikrořadičů) AVR
    http://avr.hw­.cz/architektu­ra/porovnani.html
  43. 68HC11 Instruction Set
    http://www.cs­.uaf.edu/2007/fa­ll/cs441/proj1no­tes/sawyer/in­st.html
  44. 68HC11 OpCode Map
    http://home.e­arthlink.net/~tdic­kens/68hc11/68h­c11_opcode_map­.html
  45. A Simple Robot Using the 68HC11 Processor
    http://home.e­arthlink.net/~tdic­kens/68hc11/trp­2/trp2.html
  46. 68HC11 C-Compiler (Imagecraft)
    http://microcon­trollershop.com/pro­duct_info.php?pro­ducts_id=188
  47. GNU Development Chain for 68HC11&68HC12
    http://www.gnu­.org/software/m68hc11/
  48. GNU C for 68HC11 – documentation
    http://www.gnu­.org/software/m68hc11/m­68hc11_doc.html
  49. The P-Brain tm Microcontroller Kit
    http://www.fu­turebots.com/bra­in.htm
  50. Wikipedia: Motorola 68HC05
    http://en.wiki­pedia.org/wiki/Mo­torola_68HC05
  51. Wikipedia: Freescale 68HC08
    http://en.wiki­pedia.org/wiki/68HC08
  52. Wikipedia: Freescale 68HC11
    http://en.wiki­pedia.org/wiki/68HC11
  53. Wikipedia: Freescale 68HC12
    http://en.wiki­pedia.org/wiki/Fre­escale_68HC12
  54. HC05 Processor Families
    http://www.fre­escale.com/we­bapp/sps/site/o­verview.jsp?no­deId=016246844­98633
  55. HC08 Processor Families
    http://www.fre­escale.com/we­bapp/sps/site/o­verview.jsp?no­deId=016246844­97663
  56. Digital Core Design 68HC08 – HDL IP Core
    http://www.dcd­.pl/acore.php?id­core=82
  57. Freescale 68HC11
    http://www.fre­escale.com/we­bapp/sps/site/ta­xonomy.jsp?no­deId=016246844­98635
  58. Lifecycle of a CPU:
    http://www.cpushac­k.net/life-cycle-of-cpu.html
  59. Most wanted CPU of the world:
    http://www.cpu-galaxy.at/CPU/In­tel%20CPU/3002–8008/4004%20G­rey.jpg
  60. Wikipedia: 6502:
    http://en.wiki­pedia.org/wiki/6502
  61. The Western Design Center, Inc.:
    http://www.wes­terndesigncen­ter.com/
  62. Apple II History Home:
    http://apple2his­tory.org/
  63. www.6502.org:
    http://www.6502­.org/
  64. Stránky firmy Microchip Technology
    http://www.mi­crochip.com/
  65. 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
  66. Ř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
  67. Ř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
  68. Ř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
  69. Ř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
  70. Další výběr z různých modelů mikrořadičů PIC
    http://www.mi­crochip.com/map­s/microcontro­ller.aspx
  71. PIC microcontroller (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/PIC_mi­crocontroller
  72. Mikrokontrolér PIC (Wikipedia CZ)
    http://cs.wiki­pedia.org/wiki/Mi­krokontrolér_PIC
  73. FLASHFORTH for the PIC18F and the dsPIC30F
    http://flashf­orth.sourcefor­ge.net/
  74. FlashForth
    http://www.sou­rceforge.net/pro­jects/flashfor­th
  75. Free Pic software tools
    http://softwa­repic.50webs.com/fre­esoft.html
  76. What is Amicus?
    http://www.pic­basic.org/pro­ton_lite.php
  77. Amicus FAQ
    http://www.my­amicus.co.uk/faq­.php?s=2e8d12e7f4c23e775­776f4916876354b&
  78. Microcontrollers development tools
    http://www.gnu­pic.dds.nl/
  79. gpsim (Wikipedia EN)
    http://en.wiki­pedia.org/wiki/Gpsim
  80. gpsim home page
    http://gpsim.sou­rceforge.net/gpsim­.html
  81. The FreeRTOS Project
    http://www.fre­ertos.org/
  82. FreeRTOS (Wikipedia)
    http://en.wiki­pedia.org/wiki/Fre­eRTOS
  83. Serial EEPROM (93C46 / 93CS46) Routines
    http://www.pjrc­.com/tech/8051/se­rial-eeprom.html
  84. Great Microprocessors of the Past and Present (V 13.4.0)
    http://jbayko­.sasktelwebsi­te.net/cpu.html
  85. SPI interface tutorial
    http://www.best-microcontroller-projects.com/spi-interface.html
  86. Serial Peripheral Interface Bus
    http://en.wiki­pedia.org/wiki/Se­rial_Peripheral_In­terface_Bus
  87. EUSB to SPI bus Kit
    http://www.ei­dusa.com/Elec­tronics_Kits_E­USB_To_SPI_BUS­.htm
  88. SPI Block Guide V03.06, Freescale Semiconductor
    http://www.fre­escale.com/fi­les/microcontro­llers/doc/ref_ma­nual/S12SPIV3­.pdf
  89. What is SPI?
    http://www.fpga4fun­.com/SPI1.html
  90. SPI – A simple implementation
    http://www.fpga4fun­.com/SPI2.html
  91. Bit-banging
    http://en.wiki­pedia.org/wiki/Bit-banging
  92. Joint Test Action Group
    http://en.wiki­pedia.org/wiki/JTAG
  93. I2C
    http://en.wiki­pedia.org/wiki/I2C
  94. Seriál o programovacím jazyce Forth:
    seriál o programovacím jazyce Forth
  95. Display Data Channel
    http://en.wiki­pedia.org/wiki/Dis­play_Data_Chan­nel
  96. I2 Background
    http://www.mi­croport.tw/blog­new.php?blog_no­=7#theory
  97. PIC16F87X, 28/40-pin 8-Bit CMOS FLASH Microcontrollers
    Microchip Technology Inc.
    http://www.mi­crochip.com

Autor článku

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