Hlavní navigace

Mikrořadiče a DSP společnosti Infineon: šestnáctibitové čipy C166 a XC166

Pavel Tišnovský

Minule popsaná řada mikrořadičů XC800 byla založena na zastaralém osmibitovém jádru 8051. Jedním z výsledků snah o náhradu je rodina šestnáctibitových jader C166 navržená firmami ST Microelectronic a Infineon (dříve Siemens).

Obsah

1. Mikrořadiče a DSP společnosti Infineon: šestnáctibitové čipy C166 a XC166

2. Řada C166

3. Řada XC166 (Classic Series)

4. Řada XC166H (High Line)

5. Moduly USIC

6. Sada pracovních registrů

7. PSW – Processor Status Word

8. Podmínky používané při skocích

9. Adresovací režimy

10. Instrukční soubor jader C166

11. Aritmetické a logické instrukce

12. Porovnání operandů, rotace a posuny

13. Bitové operace – Booleovský Processor

14. Podmíněné i nepodmíněné skoky, skoky do subrutin

15. Instrukce pro násobení a dělení

16. Odkazy na Internetu

1. Mikrořadiče a DSP společnosti Infineon: šestnáctibitové čipy C166 a XC166

Minule jsme se seznámili s mikrořadiči řady XC800 vyráběnými společností Infineon. Připomeňme si, že tyto mikrořadiče jsou postaveny na osmibitovém jádru 8051, které je již v mnoha ohledech zastaralé, což se negativně projevuje zejména při snaze psát aplikace pro tyto mikrořadiče ve vyšších programovacích jazycích (typicky v céčku). Osmibitová jádra 8051 jsou či byla používána v mnoha firmách vyrábějících čipy. Mezi tyto firmy patří například Atmel, Infineon, NXP, Microchip, ST Microelectronic, TI, Analog Devices a dalších několik desítek (!) společností. Většina výrobců si uvědomovala zastaralost 8051 a proto není divu, že vznikly různé čipy, které měly tuto řadu nahradit. Nové čipy nabídly především vylepšenou instrukční sadu vhodnější pro použití vyšších programovacích jazyků; mnohé mikrořadiče navíc zvýšily šířku ALU a datových sběrnic na šestnáct bitů.

V tomto seriálu jsme se již zmiňovali o některých osmibitových alternativách k 8051. Kromě řady Motorola 68HC11 se jedná například o Atmel AVR (dnes populární mj. i díky Arduinu), H8, eZ8 či Rabbit (poslední dva čipy jsou založeny na Zilogu Z80). Nutno podotknout, že osmibitové mikrořadiče se v současnosti stále používají a v některých oblastech se s velkou pravděpodobností budou používat i nadále, protože pořád existují požadavky na sice málo výkonný, ale levný čip s malou spotřebou, který lze v případě potřeby doplnit o pomocné koprocesory (FOC apod.).

Logickým krokem při vývoji výkonnějších mikrořadičů je zvýšení šířky ALU, pracovních registrů a datových sběrnic z osmi na šestnáct bitů. I těmito čipy jsme se již zabývali (i když ne v plné šíři). Připomeňme si zejména řadu MSP 430 společnosti TI či čipy H8/300H vyráběné holdingem Renesas. Podobnou cestou, tj. zvětšením šířky ALU a pracovních registrů, se vydali inženýři ve formách ST Microelectronic a Infineon při vývoji šestnáctibitových mikrořadičových jader C166, na něž navázala zpětně kompatibilní jádra XC166.

2. Řada C166

Při návrhu mikrořadičových jader C166 si inženýři dobře uvědomovali, že pouhé rozšíření ALU a registrů z osmi na šestnáct bitů není dostačující. Pro efektivní práci se strojovým kódem vzniklým překladem z céčka je totiž důležité mít k dispozici větší sadu univerzálně použitelných pracovních registrů (8051 naproti tomu měla jen akumulátor, dalších osm registrů mělo jen omezené možnosti) a taktéž adresovací režimy korespondující s možnostmi céčka, tj. práci s poli, práci s offsety při použití struktur atd. (opět – možnosti 8051 jsou zde velmi omezené na použití šestnáctibitového registru DPTR, osmibitových registrů R0, R1 a akumulátoru ve funkci offsetového registru). Navíc se ukázalo, že v mnoha aplikacích je vhodné mít k dispozici násobičku a děličku o šířce alespoň šestnácti bitů, která ovšem u těchto typů mikrořadičů nemusí být tak rychlá, jako u klasických DSP (v nichž zabírala násobička velkou část čipu).

Při návrhu C166 již navíc byly k dispozici dobré i špatné zkušenosti s vývojem RISCových mikroprocesorů s instrukční pipeline, takže C166 mají pipeline se čtyřmi řezy a jejich instrukční sada se v některých ohledech podobá RISCovým procesorům, i když je nutné poznamenat, že se nejedná o čistý RISC s Load a Store architekturou. Na druhou stranu se návrháři C166 snažili zachovat dobré vlastnosti 8051, takže na těchto čipech nalezneme Booleovský procesor, dokonce oproti 8051 v několika ohledech vylepšený.

Většina mikrořadičových jader postavených nad C166 podporuje adresování až 16 MB paměti, výjimkou jsou jen některé čipy s adresovým rozsahem 256 KB (SAB 8XC166). Proto je nutné pro adresy vyhradit 24 (resp.18 u menších čipů) bitů.

3. Řada XC166 (Classic Series)

Společnost Infineon používá jádra C166 vylepšená o další funkce (několik nových instrukcí) a doplněná o různé rozšiřující moduly, které okolo těchto jader vytváří plnohodnotný mikrořadič. Řada XC166 nazývaná taktéž „Classic Series“ je založena na jádrech C166S V2, která mohou používat hodinovou frekvenci až 80 MHz a teoreticky tak dosahovat maximální výpočetní rychlosti 80 MIPS (reálně to však bude méně, zhruba 75% špičkové rychlosti, i když je většina instrukcí v sedmiřezové pipeline dokončena v jediném taktu). Kromě vlastního jádra je na mikrořadiči umístěna i jednotka MAC (Multiply & Accumulate), paměť RAM o typické kapacitě 24 KB až 82 KB (v závislosti na konkrétní verzi čipu), Flash paměť o kapacitě až 768 KB, modul pro PWM (pulsně-šířkovou modulaci), až šest modulů USIC a některé čipy mají i řadič pro CAN nebo MultiCAN. Zajímavé je, že je podporován ECC, a to jak pro SRAM, tak i pro paměť Flash, což je vlastnost více než vítaná (a patřičně drahá :-), především v průmyslových aplikacích.

4. Řada XC166H (High Line)

Poněkud výkonnější řada se jmenuje XC166H neboli „High Line“. Mikrořadičová jádra používají poněkud vyšší hodinovou frekvenci (až 100 MHz, tedy teoreticky výkon 100 MIPS), mají čtyři jednotky PWM používané například pro řízení motorů (včetně třífázových motorů), rychlé A/D převodníky (taktéž používané při řízení motorů), počet USIC se zvýšil na deset (tedy celkově dvacet kanálů!) a používají dvouvodičový JTAG (původně se používal klasický pětivodičový JTAG). I zde se můžeme setkat s použitím ECC jak pro SRAM, tak i pro paměť Flash.

5. Moduly USIC

V mikrořadičích Infineon řady XC166 se používají moduly USIC neboli Universal Serial Interface Channel. Každý z těchto modulů obsahuje dva konfigurovatelné kanály s totožnou strukturou. Tyto kanály lze použít pro napojení mikrořadiče na různé typy portů a sběrnic, včetně klasického UARTu, SPI a I2C. Každý USIC také může generovat vlastní hodinový signál pro řízení rychlosti přenosu dat (baudrate). Tento signál je nezávislý na dalších USIC, takže je možné jeden mikrořadič propojit s různě rychlými zařízeními po samostatných a oddělených SPI (navíc s volbou poloduplexního či plně duplexního režimu).

6. Sada pracovních registrů

Mikrořadiče C166 obsahují šestnáct pracovních registrů, z nichž každý má šířku šestnáct bitů. To je poměrně vysoký počet, a to i v porovnání s konkurencí, protože i když například MSP430 od TI má „papírově“ tentýž počet registrů, jsou čtyři z nich použity pro jiné účely (čítač instrukcí, ukazatel na vrchol zásobníku, stavový registr a generátor konstant). Zajímavé a užitečné je, že u C166 je možné k osmi registrům přistupovat i po bajtech. K pracovním registrům lze připočítat i dvojici registrů použitou pro násobení a dělení:

Registry Šířka Význam
R0..R15 16 bitů šestnáct pracovních registrů (GPR)
RL0..RL7 8 bitů spodní bajty prvních osmi registrů R0..R7
RH0..RH7 8 bitů horní bajty prvních osmi registrů R0..R7
MDH 16 bitů použit ve dvojici MDH:MDL při dělení 32÷16 bitů
MDL 16 bitů použit jako dělenec při dělení 16÷16 bitů

7. PSW – Processor Status Word

Stav procesoru je z velké části uložen v registru nazvaném PWD neboli Processor Status Word. Podobně jako další registry má i tento šířku šestnácti bitů a je rozdělen na několik bitových polí a na samostatné bitové příznaky (ty se nijak zvlášť neliší od dalších typů CPU a MCU):

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í

Nejvyšší čtyři bity definují jednu ze šestnácti úrovní přerušení.

Poznámka: k bitům 7 až 9 mohou mít na novějších čipech přiřazeny další funkce.

8. Podmínky používané při skocích

U instrukcí JMPA, JMPI, JMPR, CALLA, CALLI a CALLR, které jsou popsány ve čtrnácté kapitole je možné s využitím čtyř bitů specifikovat podmínku, při jejímž splnění se skok či volání subrutiny provede. Jedná se o následující podmínky (některé jsou zdvojeny, takže tabulka má více řádků). Neobvyklá je poslední podmínka, která používá příznak E a zjišťuje tak hodnoty MIN_INT:

Postfix Testovaná podmínka Význam
_UC 1 == 1 (instrukce je provedena vždy)
_Z Z == 1 (alias pro _EQ)
_NZ Z == 0 (alias pro _NE)
_V V == 1 přetečení
_NV V == 0 nedošlo k přetečení
_N N == 1 operace skončila se záporným výsledkem
_NN N == 0 výsledek je kladný nebo nulový
_C C == 1 přenos
_NC C == 0 nedošlo k přenosu
_EQ Z == 1 (alias pro _Z)
_NE Z == 0 (alias pro _NZ)
     
_ULT C == 1 < bez znaménka (alias pro _C)
_ULE (Z ∨ C) == 1 ≤ bez znaménka
_UGE C == 0 ≥ bez znaménka (alias pro _NC)
_UGT (Z ∨ C) == 0 > bez znaménka
_SLT (N ⊕ V) == 1 < se znaménkem
_SLE (Z ∨ (N ⊕ V)) == 1 ≤ se znaménkem
_SGE (N ⊕ V) == 0 ≥ se znaménkem
_SGT (Z ∨ (N ⊕ V)) == 0 > se znaménkem
_NET (Z ∨ E) == 0

9. Adresovací režimy

Vzhledem k tomu, že registry používané pro adresování mají šířku jen šestnáct bitů a teoreticky je nutné adresovat až 224 bajtů v paměti, bylo nutné použít techniku známou z dalších mikrořadičů – fyzická adresa (ta se objeví na interní adresové sběrnici) je vypočtena součtem nějaké bázové adresy a offsetu.

Přímo v instrukcích se většinou specifikuje pouze šestnáctibitová adresa (obsah pracovního registru, konstanta atd.). Tato část je rozdělena na 14bitový offset a dvoubitový index, který vybírá jeden ze SFR nazvaných DPP0 až DPP3 (Data Page Pointer). Z těchto registrů se přečte spodních deset bitů (horních šest bitů se ignoruje), které společně vytvoří výslednou fyzickou adresu: [10bitů z DPPx] + [14bitů adresy z instrukce].

U skoků je situace odlišná, protože tam se namísto registrů DPPx používá registr nazvaný CSP (Code Segment Pointer). Ten lze změnit jen některými instrukcemi: JMPS, CALLS, RETS, RETI.

Při čtení či zápisu operandů je možné využít adresovací režimy zmíněné v následující tabulce. Povšimněte si, že každý pracovní registr může současně sloužit pro adresování, což (společně s režimy post-inkrementace a pre-dekrementace) umožňuje efektivní provádění mnoha céčkových konstrukcí:

Zápis Adresovací režim
Rw libovolný 16bitový pracovní registr R0..R15
Rb libovolný osmibitový pracovní registr RL0..RL7, RH0..RH7
reg speciální funkční registr 0×ff .. 0×ef
bitaddr použito při adresování bitů 0..15 na adresách 0×00 až 0×ff
[Rw] obsah adresy, na níž ukazuje zvolený GPR
[Rw+] obsah adresy, na níž ukazuje zvolený GPR, post-inkrement obsahu registru
[-Rw] obsah adresy, na níž ukazuje zvolený GPR, pre-dekrement obsahu registru
[Rw+#data] zvolit lze i šestnáctibitový offset
#data3 tříbitová konstanta (součástí instrukce)
#data4 čtyřbitová konstanta (součástí instrukce)
#data8 osmibitová konstanta
#data16 šestnáctibitová konstanta

Poznámka: SFR = speciální funkční registr, GPR = pracovní registr.

10. Instrukční soubor jader C166

Instrukční soubor jader C166 obsahuje 75 instrukcí, v jádrech XC166 se jejich počet ještě nepatrně zvyšuje. V navazujících kapitolách jsou popsány všechny základní instrukce; prozatím jsou však vynechány instrukce určené pro přenosy dat a taktéž instrukce, které nejsou ve všech jádrech používány – ATOMIC, BFLDxxx a EXTxxx.

11. Aritmetické a logické instrukce

Sada základních aritmetických instrukcí se podobá nabídce známé z dalších typů mikrořadičů (kromě 8048, která neobsahuje instrukce rozdílu a 8051, která neobsahuje SUB ale jen SUBB). Zajímavé ovšem je, že všechny instrukce existují v šestnáctibitové i osmibitové variantě:

Instrukce Varianta Stručný popis
ADD ADDB součet
ADDC ADDCB součet + carry
SUB SUBB rozdíl
SUBC SUBC rozdíl – carry
CPL CPLB jedničkový doplněk (negace)
NEG NEGB dvojkový doplněk (změna znaménka)

Poznámka: tyto instrukce nastavují příznaky N, Z, V, CE.

Podobně je tomu u logických instrukcí, které se provádí bit po bitu; opět buď pro šestnáctibitové operandy nebo i pro operandy osmibitové. Instrukce nastavují příznaky N, Z a E podle výsledku, zatímco příznaky V a C jsou vynulovány:

Instrukce Varianta Stručný popis
AND ANDB logický součin
OR ORB logický součet
XOR XORB logická nonekvivalence
SUBC SUBC rozdíl – carry

Poznámka: instrukce pro násobení a dělení jsou prováděny mimo hlavní aritmeticko-logickou jednotku a proto jsou popsány v samostatné kapitole.

12. Porovnání operandů, rotace a posuny

Zajímavá je sada instrukcí určených pro porovnání dvou operandů. Kromě běžné instrukce CMP jsou podporovány i instrukce, které po porovnání zvýší či sníží obsah prvního operandu (registru) o jedničku či dvojku. Tímto operandem je vždy nějaký šestnáctibitový pracovní registr. Pravděpodobně jste již uhodli, k čemu se tyto instrukce používají – jde o implementaci různých typů počítaných programových smyček (procesor naproti tomu nemá instrukci typu DJNZ či CJNE):

Instrukce Varianta Stručný popis
CMP CMPB porovnání dvou operandů a nastavení příznaků
CMPD1 × porovnání + snížení obsahu registru o 1
CMPD2 × porovnání + snížení obsahu registru o 2
CMPI1 × porovnání + zvýšení obsahu registru o 1
CMPI2 × porovnání + zvýšení obsahu registru o 2

Dalších pět instrukcí opět pracuje se šestnáctibitovými pracovními registry a umožňuje jejich rotaci, logický posun či aritmetický posun. I přesto, že druhý operand může teoreticky obsahovat jakoukoli hodnotu, je rotace/posun provedena maximálně o patnáct bitů (vyšší hodnoty se maskují 0×0f, resp. se jejich vyšší bity úspěšně ignorují):

Instrukce Varianta Stručný popis
SHL × bitový posun doleva (0..15)
SHR × bitový posun doprava (0..15)
ROL × rotace doleva (0..15)
ROR × rotace doprava (0..15)
ASHR × aritmetický posun doprava

13. Bitové operace – Booleovský Processor

V oblasti mikrořadičů se již od dob čipu Intel 8051 (MCS-51) můžeme setkat s implementací takzvaného Booleovského procesoru. Tímto poněkud nadneseným jménem se označuje sada instrukcí, které dokážou pracovat na úrovni jednotlivých bitů a nikoli celých slov, a to (většinou) dokonce takovým způsobem, že i přístup do paměti či do řídicích registrů periferních zařízení je prováděn po jednom bitu (například negace jediného bitu je rozdílná operace od přečtení bajtu/slova do akumulátoru, negace vybraného bitu a zápis celého bajtu/slova zpět). Jen pro zajímavost: na již zmíněném mikrořadiči MCS-51 je implementován úplný Booleovský procesor s jednobitovým akumulátorem (tím je příznak C/carry), 128 bitovou oblastí RAM a 128 bitovou oblastí speciálních řídicích registrů (SFR). Tento Booleovský procesor měl k dispozici sedmnáct instrukcí.

U čipů C166 se jedná o osm instrukcí doplněných o čtyři podmíněné skoky popsané v další kapitole:

Instrukce Stručný popis
BCLR vynulování bitu
BSET nastavení bitu na jedničku
   
BMOV přenos bitu
BMOVN přenos bitu s jeho negací
   
BCMP porovnání dvou bitů
   
BAND operace AND se dvěma bity
BOR operace OR se dvěma bity
BXOR operace XOR se dvěma bity

Poznámka: instrukce BCLR a BSET obsahují index nulovaného či naopak nastavovaného bitu přímo v operačním kódu instrukce. Vzhledem k tomu, že lze vybírat ze šestnácti bitů, znamená to, že BCLR zabírá celých 16 instrukčních kódů z 256 a totéž platí i pro BSET (tímto odstavcem jsme si tedy popsali celých 12,5% všech instrukčních kódů :-).

Poznámka2: ostatních šest instrukcí má délku čtyř bajtů, protože je nutné zakódovat typ instrukce (jeden bajt), zdrojový operand (jeden bajt), cílový operand (taktéž jeden bajt) a následně 4+4 bity reprezentující indexy bitů ve zdrojovém a v cílovém operandu.

14. Podmíněné i nepodmíněné skoky, skoky do subrutin

V této sekci se nejdříve zmíníme o podmíněných i nepodmíněných skocích. Pro jejich implementaci lze použít čtyři instrukce, přičemž pouze v poslední instrukci JMPS není možné použít podmínku. Naopak se jedná o jedinou instrukci umožňující skok do jiného segmentu:

Instrukce Stručný popis
JMPA absolutní skok při splnění podmínky
JMPI nepřímý skok při splnění podmínky
JMPR relativní skok při splnění podmínky
JMPS absolutní skok do vybraného segmentu (bez podmínky)

Následují čtyři instrukce doplňující výše popsaný Booleovský procesor. Jedná se o skoky vykonané ve chvíli, kdy je zvolený bit nastaven na jedničku popř. na nulu. Poslední dvě instrukce navíc dokážou hodnotu testovaného bitu znegovat:

Instrukce Stručný popis
JB relativní skok za podmínky, že je bit nastaven na 1
JNB relativní skok za podmínky, že je bit vynulován
JBC relativní skok za podmínky, že je bit nastaven a vynulování bitu
JNBS relativní skok za podmínky, že je bit vynulován a nastavení bitu

Další sada instrukcí slouží pro skok do subrutin (podprogramů) a návrat z nich. První čtyři instrukce odpovídají již popsaným skokům, ovšem návratová adresa je uložena na zásobník:

Instrukce Stručný popis
CALLA zavolání subrutiny při splnění podmínky
CALLI nepřímé volání subrutiny při splnění podmínky
CALLR relativní volání subrutiny při splnění podmínky
CALLS
   
PCALL uložení registru na zásobník a zavolání subrutiny
   
RET návrat ze subrutiny (stejný segment)
RETS návrat ze subrutiny (jiný segment)
RETP návrat ze subrutiny a obnovení registru
RETI návrat z přerušovací rutiny

15. Instrukce pro násobení a dělení

Samostatnou skupinu tvoří instrukce určené pro násobení a dělení. U těchto instrukcí se operandy ukládají jak do běžných pracovních registrů, tak i do dvou již zmíněných speciálních funkčních registrů nazvaných MDH a MDL. Tyto registry tvoří dvojici MDH:MDL a slouží například pro uložení dělence při dělení 32÷16 bitů. Násobička a dělička podporuje těchto šest instrukcí:

Instrukce Typ operandů Stručný popis
MUL se znaménkem násobení 16×16 bitů
MULU bez znaménka násobení 16×16 bitů
DIV se znaménkem dělení 16÷16 bitů
DIVU bez znaménka dělení 16÷16 bitů
DIVL se znaménkem dělení 32÷16 bitů
DIVLU bez znaménka dělení 32÷16 bitů

Poznámka: tyto instrukce lze přerušit, což se projeví nastavením příznaku MULIPPSW. Důvod je zřejmý – u mikrořadičů požadujeme rychlou reakci na přerušení, takže je výhodnější nečekat vždy na dokončení těchto dlouhotrvajících instrukcí.

16. Odkazy na Internetu

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

Trošku jsem doplnil druhou kapitolu (poslední odstavec): https://www.root.cz/clanky/mikroradice-a-dsp-spolecnosti-infineon-sestnactibitove-cipy-c166-a-xc166/#k02

A taky kapitolu o adresování: https://www.root.cz/clanky/mikroradice-a-dsp-spolecnosti-infineon-sestnactibitove-cipy-c166-a-xc166/#k09

Není tam všechno, například chybí EXTxx instrukce + možnost obejít DPP, ale o těch se ještě zmíním. Ale na úvod, jak se to řeší, by to doufám mohlo stačit.