Hlavní navigace

Mikrořadiče a DSP společnosti Infineon – vylepšená šestnáctibitová jádra C166S V2

Pavel Tišnovský

Některé novější 16bitové mikrořadiče firmy Infineon jsou založeny na vylepšených jádrech C166S V2. Jedná se o třetí generaci jader z rodiny C166, která je zpětně kompatibilní, ovšem je výkonnější a obsahuje i modul pro DSP operace.

Obsah

1. Mikrořadiče a DSP společnosti Infineon – vylepšená šestnáctibitová jádra C166S V2

2. Centrální procesorová jednotka: ALU, MAC a ADU

3. MAC – Multiply Accumulate

4. Instrukční pipeline

5. Predikce skoků a nápověda předaná překladačem či uživatelem

6. Rozšíření sady pracovních registrů, mapování registrů do paměti

7. Rozšíření registru PSW (Program Status Word)

8. Paměťový prostor větší než 64kB

9. Rozdělení programové paměti na segmenty

10. Adresování dat

11. Obejití funkce stránkových registrů DPP instrukcemi EXT??

12. DSP operace

13. Nové adresovací režimy pro DSP operace

14. Instrukce ATOMIC

15. Odkazy na Internetu

1. Mikrořadiče a DSP společnosti Infineon – vylepšená šestnáctibitová jádra C166S V2

Původní šestnáctibitová mikrořadičová jádra C166, s nimiž jsme se seznámili v předchozím článku, sice nabízela dostatečný výpočetní výkon pro mnoho řídicích aplikací, ovšem ve chvíli, kdy bylo nutné provádět nějaké DSP operace (zesílení/zeslabení, konvoluce, korelace, FIR) již bylo výhodnější přejít na výkonnější mikrořadič, digitální signálový procesor či ještě lépe na kombinaci MCU+DSP. Jádra pojmenovaná C166S V2 představují právě onu zajímavou kombinaci šestnáctibitového mikrořadiče a rychlé jednotky určené pro provádění DSP operací se šestnáctibitovými vstupy a čtyřicetibitovými mezivýsledky. I přesto, že se tato jádra jmenují V2, se ve skutečnosti jedná již o třetí (nikoli druhou) generaci jader C166, ovšem s odlišnou vnitřní architekturou a několika vylepšeními, která se týkají jak instrukční sady (nové instrukce, nové adresovací režimy), tak i například instrukční pipeline umožňující dokončit většinu instrukcí v jednom cyklu.

2. Centrální procesorová jednotka: ALU, MAC a ADU

Centrální procesorová jednotka použitá u čipů s jádry C166S V2 obsahuje následující moduly:

  1. ALU (Aritmeticko-logická jednotka doplněná o samostatnou násobičku a děličku)
  2. MAC (Modul Multiply Accumulate, ten je zcela oddělený od výše zmíněné násobičky a děličky)
  3. ADU (Address Data Unit)
  4. IPIP (instrukční pipeline)
  5. IFU (jednotka řídicí načítání instrukcí, práci se zásobníkem návratových adres atd.)
  6. WB (Write-back buffer pro data)
  7. RF (dvě interní sady pracovních registrů, viz další text)

Aritmeticko-logická jednotka se skládá z klasické ALU, ovšem doplněné o barrel shifter, násobičku a děličku (pracující podobně jako u C166) a taktéž o novou jednotku MAC popsanou v navazující kapitole. Dále se v centrální procesorové jednotce nachází dvě sady pracovních registrů a modul ADU (Address Data Unit), jenž kromě speciálních registrů použitých pro adresování (DPP0..DPP3, SPSEG, SP, STKOV..) obsahuje i dvojici samostatně (paralelně s hlavní ALU) pracujících sčítaček používaných pro postinkrement/dekrement a preinkrement/dekrement adresy.

3. MAC – Multiply Accumulate

Jednotka MAC (Multiply Accumulate) tvoří základ pro ty aplikace, v nichž je nutné nějakým způsobem zpracovávat signály (většinou plynulý tok dat). Interně se MAC skládá z rychlé násobičky se šestnáctibitovými vstupy, která je propojena s barrel shifterem a akumulátorem. Jak posuvný registr, tak i akumulátor mají šířku čtyřicet bitů, což efektivně umožňuje výpočty s hodnotami reprezentovanými v systému pevné řádové čárky (FX – Fixed Point). Výpočty je možné provádět s automatickou saturací výsledků (nedojde k přetečení) a vzhledem k tomu, že násobička dokončí operaci v jediném cyklu, mohou být DSP operace prováděné na C166S V2 až desetkrát rychlejší v porovnání s původními jádry C166 (samozřejmě pokud porovnáváme čipy se shodným hodinovým signálem).

Modul MAC je doplněn registry nazvané MAH, MAL a MAE s obsahem akumulátoru (první dva registry jsou šestnáctibitové, poslední je jen osmibitový), dále registr MRW použitý při opakování programových smyček, MCW (MAC Unit Control Word) pro nastavení režimu saturace i posunu mezivýsledku po násobení a MSW (MAC Unit Status Word), což je registr se stavem celé jednotky MAC (přenos, přetečení, záporný výsledek poslední operace, nulový výsledek apod.)

4. Instrukční pipeline

Instrukční pipeline je u jader C166S V2 rozdělena na dvě části, přičemž první část se stará o načtení instrukce (fetch) a část druhá o její vykonání. První část má dva řezy, část druhá pak pět řezů. Navíc první část obsahuje logiku pro predikci skoků a dvojici bufferů pro přednačtené instrukce. Podívejme se, jak tato první část instrukční pipeline vypadá, protože se jedná o zajímavé a současně i výkonné řešení:

Obrázek 1: První část instrukční pipeline jader C166 V2.

Na diagramu můžeme vidět, že pipeline na vstupu obsahuje relativně malý buffer, který může obsahovat až šest instrukcí. Instrukční kódy (popř. konstanty) jsou z paměti programu načítány po interní sběrnici o šířce 64 bitů, takže je možné (například po skoku) tento buffer naplnit relativně rychle. Za vstupním bufferem se nachází logika pro detekci skokových instrukcí a pro predikci skoků v prvních třech instrukcích z bufferu. Pokud je skok detekován a logika usoudí, že bude proveden, je možné přeskočit (bypass) další buffer a FIFO, u běžných instrukcí jsou pak instrukce ukládány přes další buffer do FIFO. Instrukce skoku jsou prováděny paralelně s instrukcí, která skoku předchází (což je opak klasického RISCového branch delay slotu), což ovšem znamená, že logika v této části pipeline musí instrukci skoku pozměnit (vypočítat absolutní adresu skoku atd.).

5. Predikce skoků a nápověda předaná překladačem či uživatelem

S instrukční pipeline, resp. přesněji řečeno s její první částí (prefetch) poměrně úzce souvisí predikce skoků. Ta je u jader C166S V2 řešena poměrně jednoduchým způsobem, který ovšem umožňuje, aby centrální procesorové jednotce mohl pomoci překladač či sám programátor používající assembler. Prediktor skoků rozděluje všechny skokové instrukce do několika kategorií a u jednotlivých kategorií určuje, v jakém případě se má skok provést. Navíc existuje i kategorie skokových instrukcí, u nichž je predikce provedena na základě bitu zapsaného do instrukčního slova. Tento bit nastavuje překladač (na základě statické či runtime analýzy) či přímo programátor pracující s assembleru:

  • U instrukcí JMPS a CALLS se předpokládá, že se skok vždy provede.
  • Totéž platí u instrukcí RET, RETS, RETP a RETI.
  • U instrukcí JMPI a CALLI se předpokládá, že se skok provede ve chvíli, kdy podmínka není zadána (suffix _UC), v ostatních případech se předpokládá, že se skok neprovede.
  • U relativních podmíněných skoků se předpokládá, že skok bude proveden ve chvíli, kdy se skáče směrem zpět (tj. skok je velmi pravděpodobně umístěn na konci programové smyčky).
  • Totéž platí u všech skokových instrukcí „booleovského procesoru“, tj. JB, JBC, JNB a JNBS.
  • U instrukcí JMPA a CALLA může programátor/překladač určit, zda skok bude či nebude pravděpodobně proveden. Zápis je jednoduchý: JMPA+ podmínka, adresa a JMPA- podmínka, adresa.

6. Rozšíření sady pracovních registrů, mapování registrů do paměti

U původních mikrořadičových jader C166 existovala sada šestnácti šestnáctibitových pracovních registrů, přičemž osm z těchto registrů bylo možné rozdělit na dvojice osmibitových registrů. U novějších jader C166S V2 existují hned tři sady (resp. přesněji řečeno banky) pracovních registrů, přičemž jedna banka se nazývá globální a zbylé dvě banky pak lokální. Globální banka registrů je mapována do operační paměti, takže tyto registry je vlastně možné považovat „jen“ za speciální formu offsetu použitého při adresování. To, ve které části paměti se tato banka nachází, je určeno obsahem registru CP (Context Pointer), v jehož horních čtyřech bitech jsou vždy uloženy jedničky, aby se zaručilo, že banka pracovních registrů bude vždy uložena v interní paměti.

Počáteční adresu globální banky registrů je možné nastavit instrukcí:

SCXT CP, #konstanta

Lokální banky nejsou mapovány do RAM (jsou součástí centrální procesorové jednotky) a tudíž je nelze adresovat nepřímo. To, která banka registrů je použita, je určeno dvěma novými bityPSW a protože je tento registr automaticky obnoven při ukončení přerušovací rutiny, je možné například jednu interní banku používat právě v přerušovacích rutinách a nestarat se o to, aby přerušovací rutina nenarušila obsah pracovních registrů používaných hlavním programem.

7. Rozšíření registru PSW (Program Status Word)

Původní jádra C166 obsahovala stavový registr, v němž nebyly některé bity využity. Jen pro připomenutí, struktura stavového registru PSW byla následující:

Bit Označení Význam
0 N příznak záporného výsledku
1 C příznak přenosu
2 V příznak přetečení
3 Z příznak nulovosti
4 E výsledkem operace je nejmenší hodnota (0×80 či 0×8000)
5 MULIP došlo k přerušení násobení či dělení (tyto operace lze přerušit během výpočtu)
6 USR0 uživatelsky nastavitelný bit
7 ×
8 ×
9 ×
10 HLDEN povolení externího řízení sběrnice jiným čipem přes signály BREQ, HOLD a HLDA
11 IEN povolení či zákaz přerušení
12 ILVL úroveň přerušení
13 ILVL úroveň přerušení
14 ILVL úroveň přerušení
15 ILVL úroveň přerušení

U jader C166S V2 se využily i zbývající tři bity, a to následujícím způsobem:

Bit Označení Význam
7 USR1 uživatelsky nastavitelný bit
8 BANK výběr banky pracovních registrů
9 BANK výběr banky pracovních registrů

Bity 8 a 9 společně určují, jaká banka pracovních registrů se použije:

Bit 9 a 8 PSW význam
00 globální banka (mapovaná do paměti)
01 rezervováno
10 první lokální banka registrů
11 druhá lokální banka registrů

8. Paměťový prostor větší než 64kB a rozdělení programové paměti na segmenty

Na rozdíl od některých dalších mikrořadičů se u jader C166S V2 používá jeden lineární adresový prostor společný jak pro datovou paměť, tak i pro paměť programu, což mj. zjednodušuje instrukční soubor. Konkrétně to znamená, že existuje prostor o maximální teoretické velikosti 16 MB, do něhož se mapuje interní ROM, interní paměť Flash, interní DRAM, speciální funkční registry (SFR) a popř. i všechny externí paměti. Na druhou stranu je však nutné kvůli této konfiguraci vyřešit problém, jak efektivně adresovat teoretický rozsah 16 MB na šestnáctibitovém mikroprocesoru.

O přenos instrukcí a konstant z paměti programu se stará modul nazvaný PMU neboli Program Management Unit, který je s centrální procesorovou jednotkou propojen přes již zmíněnou 64bitovou interní sběrnici. Většina čipů limituje velikost paměti programu na 4MB (což v reálných aplikacích prakticky nebude vadit).

9. Rozdělení programové paměti na segmenty

Při načítání instrukcí z programové paměti je použita metoda segmentování. Již zmíněný rozsah adres do 16 MB (224 adres) je rozdělen do 256 vzájemně se nepřekrývajících segmentů, takže každý segment má velikost přesně 65536 adres. Pro uložení aktuálně používaného segmentu je využit osmibitový registr CSP, ukazatel na zpracovávanou instrukci IP je pouze šestnáctibitový a navíc je jeho nejnižší bit vždy nulový, protože instrukce jsou zarovnány na šestnáctibitová slova. Explicitní změnu obsahu registru CSP provádí instrukce JMPS a CALLS, u nichž je kromě adresy skoku v rámci segmentu použita i osmibitová konstanta značící nový segment:

CALLS segment, adresa
JMPS  segment, adresa

Poznámka: tyto instrukce mají šířku čtyř bajtů – jeden bajt pro kód instrukce, další bajt pro segment a dvojice bajtů pro adresu v rámci segmentu.

Implicitní změnu obsahu registru CSP provádí instrukce RETS a RETI. V případě potřeby je možné segmentaci (vliv registru CSP na výpočet absolutní adresy) zakázat nastavením bitu SGTDIS v konfiguračním registru CPUCON1 (po resetu je segmentace implicitně povolena).

10. Adresování dat

Datová paměť je s centrální procesorovou jednotkou propojena pouze po šestnáctibitové sběrnici a maximální kapacita interní datové paměti dosahuje u většiny čipů „jen“ 24 KB. Na druhou stranu se jedná o SRAM, takže lze relativně nízkou kapacitu pochopit. K této paměti můžeme připočíst ještě rychlejší DPRAM o kapacitě typicky 3 KB, které je přes High Speed System Bus propojena s MPU (s CPU je propojena přímo – je dokonce jeho součástí) a slouží především pro DSP operace. Pro komunikaci s externími paměťmi se používá EBC neboli External Bus Controller, velikost těchto pamětí již není nijak významně omezena, takže prakticky vždy přesáhne 64 KB. A právě proto je nutné i při práci s datovou pamětí použít nějaký systém adresování, který obejde omezení 64 KB při použití šestnáctibitových registrů.

Existuje několik režimů adresování datové paměti, ovšem základní režim je založen na použití stránkových registrů nazvaných Data Page Pointer neboli DPP. Tyto registry obsahují horních deset bitů adresy (její celková šířka je 24 bitů). Přímo v instrukcích sloužících pro manipulaci s daty se většinou specifikuje pouze šestnáctibitová adresa (obsah pracovního registru, konstanta atd.). Tato část je rozdělena na offset o šířce čtrnácti bitů a dvoubitový index, který vybírá jeden z Data Page Pointerů (registry DPP0DPP3). Z těchto registrů se přečte již zmíněných spodních deset bitů (horních šest bitů se ignoruje), které společně vytvoří výslednou fyzickou adresu:

                            15  pracovní registr či konstanta 0
                            +---------------------------------+
                            | r r b b b b b b b b b b b b b b |
                            +---------------------------------+
                              | |                 |
15             DPP0           v v 0               |
+---------------------------------+               |
| 0 0 0 0 0 0 a a a a a a a a a a | rr=00         |
+---------------------------------+               |
                              | |                 |
15             DPP1           v v 0               |
+---------------------------------+               |
| 0 0 0 0 0 0 a a a a a a a a a a | rr=01         |
+---------------------------------+               |
                              | |                 |
15             DPP2           v v 0               |
+---------------------------------+               |
| 0 0 0 0 0 0 a a a a a a a a a a | rr=10         |
+---------------------------------+               |
                              | |                 |
15             DPP3           v v 0               |
+---------------------------------+               |
| 0 0 0 0 0 0 a a a a a a a a a a | rr=11         |
+---------------------------------+               |
                                                  |
31         24 23                16 15             v            0
+---------------------------------+----------------------------+
| 0 0 0 0 0 0 a a a a a a a a a a |b b b b b b b b b b b b b b |
+---------------------------------+----------------------------+

11. Obejití funkce stránkových registrů DPP instrukcemi EXT??

V některých případech je možné adresování s využitím stránkových registrů DPPx zcela obejít. K tomu slouží čtyři nové „blokové“ instrukce EXTP, EXTPR, EXTS a EXTSR.

Instrukci EXTP a EXTPR se předává desetibitové číslo stránky a velikost bloku (počet instrukcí), pro něž se adresa vypočte právě na základě předaného čísla stránky a čtrnáctibitového offsetu (horní dva bity se ignorují):

EXTP #stránka, velikost_bloku
EXTPR #stránka, velikost_bloku

Třetí instrukce EXTS i čtvrtá instrukce EXTSR spočítá adresu na základě šestnáctibitového offsetu a osmibitového segmentu, přičemž osmibitový segment je součástí blokové instrukce:

EXTS #segment, velikost_bloku
EXTSR #segment, velikost_bloku

Poznámka: při provádění celého bloku instrukcí se změněným adresovacím režimem je zakázáno přerušení. Blok však ve skutečnosti není příliš dlouhý, protože počitadlo velikosti bloku je jen dvoubitové.

12. DSP operace

Modul pro DSP operace se svým interním uspořádáním podobá většině dalších digitálních signálových procesorů. Ostatně se podívejme na následující obrázek, na němž je naznačena jeho struktura:

Obrázek 2: DSP modul
(upraveno podle materiálů firmy Infineon)

Na vstupu se nachází sběrnice, po které lze přenášet dvojici šestnáctibitových operandů. Ty lze buď navzájem vynásobit nebo je lze spojit do jednoho 32bitového slova. Výsledek násobení/spojení je přenesen do sčítačky a odčítačky tvořící druhou část operace MAC (Multiply Accumulate). Tato sčítačka je již čtyřicetibitová, aby nebylo nutné po každém součtu kontrolovat, zda došlo k přetečení. Výsledek operace MAC je uložen do akumulátoru, z něhož může být přečten (popř. lze navíc aplikovat různé konverze, saturace, limitaci výsledků na 16bitové hodnoty apod.) nebo přes shifter přenesen ve zpětnovazební smyčce do sčítačky. Režim DSP je řízen několika bity v řídicím registru MSW (MAC Status Word).

13. Nové adresovací režimy pro DSP operace

Pro DSP operace bylo do jader C166S V2 přidáno několik nových adresovacích režimů a taktéž několik nových registrů. Nejjednodušší je funkce nových registrů QR0 a QR1, které mohou být použity pro postinkrementaci či postdekrementaci adresy po přístupu do paměti. Tyto operace tedy již nejsou omezeny na přičtení či odečtení jedničky:

instrukce [Rw+QRx]   ; postinkrement o QRx po přístupu do paměti
instrukce [Rw-QRx]   ; postdekrement o QRx po přístupu do paměti

Další dva registry IDX0 a IDX1 lze použít pro reprezentaci offsetu. V tomto případě se horní dva bity registrů použijí pro výběr jednoho stránkového registru DPPx podle schématu, který již známe. Při použití IDX0 či IDX1 lze jejich hodnotu automaticky zvýšit či snížit o jedničku nebo o hodnotu uloženou v jednom z registrů QX0 či QX1 (mnemotechnická pomůcka – QRx slouží pro změnu registrů, jejichž jména začínají na R zatímco QXx mění indexové registry IDXx).

14. Instrukce ATOMIC

Zajímavý koncept představuje instrukce ATOMIC. Této instrukci lze předat dvoubitovou hodnotu specifikující velikost bloku (1–4) instrukcí, které se provedou atomicky, tj. bez přerušení (povolena jsou jen některá vybraná hardwarová přerušení). S touto technikou jsme se již vlastně setkali – nalezneme ji i u čtyř instrukcí EXTP, EXTPR, EXTS a EXTSR popsaných v jedenácté kapitole. Uvnitř atomického bloku je možné použít libovolné instrukce, tj. mj. i instrukce DSP, komunikaci s periferními zařízeními, podmíněné skoky apod.

15. Odkazy na Internetu

  1. C166®S V2 Architecture & Core
    http://www.infineon.com/cms/en/pro­duct/microcontroller/16-bit-c166-microcontroller/c166-s-v2-architecture-and-core/channel.html?channel=db3a304312bef5660112­c3011c7d01ae
  2. Memory segmentation
    https://en.wikipedia.org/wi­ki/Memory_segmentation
  3. Bus mastering
    https://en.wikipedia.org/wi­ki/Bus_mastering
  4. ST10 16-bit MCUs
    http://www.st.com/en/micro­controllers/st10–16-bit-mcus.html?querycriteria=pro­ductId=LN1111
  5. XC800 family
    https://en.wikipedia.org/wi­ki/XC800_family
  6. C166 (stránky společnosti Infineon)
    https://www.infineon.com/cms/en/pro­duct/microcontroller/16-bit-c166-microcontroller/channel.html?chan­nel=ff80808112ab681d0112ab6b2e­af0759#ispnTab3
  7. C166 Family
    https://en.wikipedia.org/wi­ki/C166_family
  8. Permanent Magnet Synchronous Motor
    https://en.wikipedia.org/wi­ki/Synchronous_motor#Perma­nent_magnet_motors
  9. Implementing field oriented control of a brushless DC motor
    http://www.eetimes.com/do­cument.asp?doc_id=1279321
  10. Vector control (motor)
    https://en.wikipedia.org/wi­ki/Vector_control_(motor)
  11. Motorola DSP56k
    https://www.rockbox.org/wi­ki/MotorolaDSP56k
  12. Motorola 56000 (Wikipedia)
    http://en.wikipedia.org/wi­ki/Motorola_56000
  13. Using the Motorola DSP56002EVM for Amateur Radio DSP Projects
    http://www.johanforrer.net/EV­M/article.html
  14. The Atari Falcon030 „Personal Integrated Media System“
    http://www.atarimuseum.com/com­puters/16bits/falcon030.html
  15. Turtle Beach Corporation (stránky společnosti)
    http://www.turtlebeach.com/
  16. Turtle Beach Corporation (Wikipedia)
    https://en.wikipedia.org/wi­ki/Turtle_Beach_Corporati­on
  17. Atari Falcon 030 DSP 3D engine test
    http://www.digiti.info/vi­deo/WHQwMjNRaExfLWs=/atari_fal­con030_dsp_3d_engine_test
  18. Atari Falcon030 (německy)
    http://www.maedicke.de/ata­ri/hardware/falcon.htm
  19. Old-computers.com: Atari Falcon030
    http://www.old-computers.com/museum/compu­ter.asp?c=125&st=1
  20. Atari Falcon030 (Wikipedia)
    http://en.wikipedia.org/wi­ki/Atari_Falcon
  21. Past and current projects (including Falcon stuff)
    http://os.inf.tu-dresden.de/~nf2/projects/projects.html
  22. Atari Falcon 030: The Case For The Defence
    http://www.soundonsound.com/sos/1994_ar­ticles/sep94/atarifalcon.html
  23. DaVinci processor family
    http://www.ti.com/general/doc­s/datasheetdiagram.tsp?ge­nericPartNumber=TMS320DM365&di­agramId=64193
  24. Texas Instruments DaVinci
    https://en.wikipedia.org/wi­ki/Texas_Instruments_DaVin­ci
  25. TMS320DM6446 (DaVinci)
    http://www.ti.com/product/tms320dm6446
  26. Digital Media Video Processors (TI)
    http://www.ti.com/lsds/ti/pro­cessors/dsp/media_processor­s/davinci/products.page#
  27. TI Wiki
    http://processors.wiki.ti­.com/index.php/Main_Page
  28. C5000 ultra-low-power DSP
    http://www.ti.com/lsds/ti/pro­cessors/dsp/c5000_dsp/over­view.page
  29. OMAP (Wikipedia)
    https://en.wikipedia.org/wiki/OMAP
  30. OMAP – TI Wiki
    http://processors.wiki.ti­.com/index.php/OMAP
  31. Why OMAP can't compete in smartphones
    http://www.eetimes.com/au­thor.asp?section_id=40&doc_id=1286602
  32. Applications Processors – The Heart of the Smartphone
    http://www.engineering.com/E­lectronicsDesign/Electronic­sDesignArticles/ArticleID/5791/Ap­plications-Processors-The-Heart-of-the-Smartphone.aspx
  33. TI cuts 1,700 jobs in OMAP shift
    http://www.eetimes.com/do­cument.asp?doc_id=1262782
  34. VLIW: Very Long Instruction Word: Texas Instruments TMS320C6×
    http://www.ecs.umass.edu/e­ce/koren/architecture/VLIW/2/ti1­.html
  35. An Introduction To Very-Long Instruction Word (VLIW) Computer Architecture
    Philips Semiconductors
  36. VLIW Architectures for DSP: A Two-Part Lecture (PDF, slajdy)
    http://www.bdti.com/MyBDTI/pub­s/vliw_icspat99.pdf
  37. Very long instruction word (Wikipedia)
    https://en.wikipedia.org/wi­ki/Very_long_instruction_word
  38. A VLIW Approach to Architecture, Compilers and Tools
    http://www.vliw.org/book/
  39. VEX Toolchain (VEX = VLIW Example)
    http://www.hpl.hp.com/downloads/vex/
  40. Elbrus (computer)
    https://en.wikipedia.org/wi­ki/Elbrus_%28computer%29
  41. Super Harvard Architecture Single-Chip Computer
    https://en.wikipedia.org/wi­ki/Super_Harvard_Architec­ture_Single-Chip_Computer
  42. Digital Signal Processors (stránky TI)
    http://www.ti.com/lsds/ti/pro­cessors/dsp/overview.page
  43. C674× Low Power DSP (stránky TI)
    http://www.ti.com/lsds/ti/pro­cessors/dsp/c6000_dsp/c674×/o­verview.page
  44. TMS320C30 (stránky TI)
    http://www.ti.com/product/tms320c30
  45. TMS320C6722B
    http://www.ti.com/product/tms320c6722b/des­cription
  46. Introduction to DSP
    http://www.ti.com/lit/wp/spry281/spry­281.pdf
  47. The Evolution of TMS (Family of DSPs)
    http://www.slideshare.net/mo­to_modx/theevo1
  48. Datasheet k TMS32010
    http://www.datasheetarchi­ve.com/dlmain/49326c32a52050140ab­ffe6f0ac4894aa09889/M/TMS32010
  49. 1979: Single Chip Digital Signal Processor Introduced
    http://www.computerhistory­.org/siliconengine/single-chip-digital-signal-processor-introduced/
  50. The TMS32010. The DSP chip that changed the destiny of a semiconductor giant
    http://www.tihaa.org/histo­rian/TMS32010–12.pdf
  51. Texas Instruments TMS320 (Wikipedia)
    https://en.wikipedia.org/wi­ki/Texas_Instruments_TMS320
  52. 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
  53. Great Microprocessors of the Past and Present (V 13.4.0)
    http://jbayko.sasktelwebsi­te.net/cpu.html
  54. Introduction to DSP – DSP processors:
    http://www.bores.com/courses/in­tro/chips/index.htm
  55. The Scientist and Engineer's Guide to Digital Signal Processing:
    http://www.dspguide.com/
  56. Digital signal processor (Wikipedia EN)
    http://en.wikipedia.org/wi­ki/Digital_signal_processor
  57. Digitální signálový procesor (Wikipedia CZ)
    http://cs.wikipedia.org/wi­ki/Digitální_signálový_pro­cesor
  58. Digital Signal Processing FAQs
    http://dspguru.com/dsp/faqs
  59. Reprezentace numerických hodnot ve formátech FX a FP
    http://www.root.cz/clanky/fixed-point-arithmetic/
  60. IEEE 754 a její příbuzenstvo: FP formáty
    http://www.root.cz/clanky/norma-ieee-754-a-pribuzni-formaty-plovouci-radove-tecky/
  61. Č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/
  62. Základní aritmetické operace prováděné v FX formátu
    http://www.root.cz/clanky/zakladni-aritmeticke-operace-provadene-ve-formatu-fx/
  63. 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/
  64. FIR Filter FAQ
    http://dspguru.com/dsp/faqs/fir
  65. Finite impulse response (Wikipedia)
    http://en.wikipedia.org/wi­ki/Finite_impulse_response
  66. DSPRelated
    http://www.dsprelated.com/
  67. Addressing mode (Wikipedia)
    https://en.wikipedia.org/wi­ki/Addressing_mode
  68. Orthogonal instruction set
    https://en.wikipedia.org/wi­ki/Orthogonal_instruction_set
  69. TI 16-bit and 32-bit microcontrollers
    http://www.ti.com/lsds/ti/mi­crocontrollers16-bit32-bit/overview.page
  70. TMS 32010 Assembly Language Programmer's Guide (kniha na Amazonu)
    https://www.amazon.com/32010-Assembly-Language-Programmers-Guide/dp/0904047423
  71. COSC2425: PC Architecture and Machine Language, PC Assembly Language
    http://www.austincc.edu/rblac­k/courses/COSC2425/index.html
Našli jste v článku chybu?