Hlavní navigace

Instrukční soubor digitálních signálových procesorů řady Motorola 56000

14. 2. 2017
Doba čtení: 17 minut

Sdílet

Po popisu funkčních modulů, z nichž jsou sestaveny DSP Motorola 56000, se zaměříme na jejich instrukční soubor. Zjistíme, zda se tvůrcům skutečně podařilo navrhnout soubor instrukcí vhodných pro rychlé zpracování signálů.

Obsah

1. Instrukční soubor digitálních signálových procesorů řady Motorola 56000

2. PCU a AGU

3. Programový čítač a zásobník návratových adres

4. Speciální registry používané pro implementaci programových smyček

5. Registr s příznakovými bity

6. AGU a registry používané pro adresování operandů

7. Adresovací režimy

8. Instrukční soubor DSP Motorola 56000

9. Aritmetické instrukce

10. Logické instrukce

11. Manipulace s jednotlivými bity

12. Instrukce pro programové smyčky

13. Řízení běhu programu

14. Instrukce pro přenosy dat

15. Odkazy na Internetu

1. Instrukční soubor digitálních signálových procesorů řady Motorola 56000

Na popis interní struktury a základních funkčních modulů digitálního signálového procesoru Motorola 56000 dnes navážeme, protože se budeme zabývat instrukčním souborem tohoto úspěšného a doposud používaného čipu. Nejdříve se však budeme muset zmínit o některých dalších funkčních blocích Motoroly 56000, protože právě tyto bloky slouží pro řízení celého čipu a mají tedy velký vliv na to, jak vlastně vypadá instrukční sada a jaké instrukce a adresovací režimy může obsahovat.

Podívejme se na blokové schéma DSP Motorola 56000:

pc79

Obrázek 1: Blokové schéma digitálního signálového procesoru Motorola 56000.

Stejný obrázek jsme si ukazovali již minule, ovšem to jsme se zajímali především o sběrnice (čtyři vodorovné šipky umístěné přibližně uprostřed), trojici paměťových bloků (vpravo nahoře) a taktéž o aritmeticko-logickou jednotku a násobičku (vpravo dole). Dnes si popíšeme bloky PCU (Program Control Unit, zobrazený vlevo dole) a AGU (Address Generation Unit, umístěn nad sběrnicemi), které vlastně zabezpečují funkci řadiče celého procesoru.

2. PCU a AGU

Bloky (či moduly) PCU a AGU mají následující význam:

  • Program Control Unit neboli PCU je modul, který se primárně stará o vytváření adres instrukcí posílaných na sběrnici PDB, o níž jsme se již zmínili minule. Když se zamyslíme nad tím, jak se (i na běžných mikroprocesorech) generují adresy instrukcí, velmi přesně odhadneme, co tento modul obsahuje. V první řadě je to programový čítač (PC), dále zásobník návratových adres, ale i registr s příznakovými bity, protože u podmíněných skoků záleží generování adresy další instrukce právě na kombinaci příznaků. Nalezneme zde i další registry sloužící pro implementaci programových smyček.
  • Address Generation Unit neboli AGU je taktéž modul určený primárně pro generování adres, ovšem v tomto případě se jedná o adresy operandů uložených v paměťovém bloku X či Y a posílaných přes sběrnice XDB a YDB. Adresování operandů se v mnoha ohledech odlišuje od adresování instrukcí, protože v oblasti DSP potřebujeme používat „kruhové adresování“ (filtr omezené délky) či speciální adresování pro rychlou Fourierovu transformaci.

3. Programový čítač a zásobník návratových adres

Nejprve si ve stručnosti popíšeme blok PCU (Program Control Unit). Tento blok je propojen s adresovými sběrnicemi PAB a PDB i s univerzální sběrnicí GDB. Dále do tohoto bloku vstupují další důležité signály, především hodiny a několik signálů oznamujících přerušení. Navíc tento blok obsahuje vlastní řídicí logiku a několik speciálních registrů. Základem prakticky každého procesoru je PC neboli programový čítač (Program Counter). Ten má v případě Motoroly 56000 šířku šestnácti bitů, což omezuje maximální velikost programového kódu. Z hlediska programátora se však jedná o 24bitový registr, neboť při přenosu dat se používají operandy o plné šířce 24 bitů (horních osm bitů je však v PCU ignorováno, což zaručuje dopřednou kompatibilitu, při čtení těchto osm bitů obsahuje nuly).

Kromě programového čítače nalezneme v tomto bloku i sadu patnácti registrů tvořících zásobník návratových adres. Toto označení však ve skutečnosti není příliš přesné, protože každý z těchto registrů má šířku 32 bitů a obsahuje kromě šestnáctibitové návratové adresy i hodnotu příznaků ve chvíli, kdy došlo k uložení informace do zásobníku. Jedná se vlastně o velmi elegantní řešení přerušovacích rutin, v nichž je uložení příznaků a na konci jejich obnovení provedeno „zadarmo“. Se zásobníkem souvisí i další speciální registr nazvaný SP ukazující na vrchol zásobníku (Stack Pointer). S tímto registrem se většinou pracuje pouze nepřímo.

4. Speciální registry používané pro implementaci programových smyček

V bloku PCU nalezneme i dva speciální registry určené pro efektivní implementaci programových smyček; typicky smyček tvořících jádra číslicových filtrů. Tyto dva registry se jmenují LA a LC. Registr LA obsahuje adresu poslední instrukce tvořící programovou smyčku (adresa první instrukce je přitom ukládána na zásobník) zatímco registr LC obsahuje počet opakování smyčky. K této dvojici registrů ještě musíme připočítat příznak nazvaný LF (Loop Flag), který je automaticky nastavován při vstupu do programové smyčky instrukcí DO. Ve chvíli, kdy je tento příznak nastaven, kontroluje PCU, zda se hodnota programového čítače rovná obsahu registru LA. Pokud dojde ke shodě, tj. nacházíme se na poslední instrukci ve smyčce, je otestováno počitadlo LC na jedničku. V případě, že LC!=1, je hodnota LC snížena a PC je nastaven na adresu přečtenu ze zásobníku (tj. provede se skok na začátek smyčky). Dokonce je možné smyčky vnořovat – PCU v tomto případě nejdříve uloží všechny potřebné registry na zásobník.

5. Registr s příznakovými bity

Jak jsme si již řekli ve druhé kapitole, obsahuje modul PCU i registr s příznakovými bity. Tento šestnáctibitový registr je rozdělen na dvě části nazvané MR (Mode Register) a CCR (Condition Code Register) tak, jak naznačuje následující tabulka:

Bit Část Označení Název Stručný popis
0 CCR C Carry příznak přenosu při aritmetické operaci
1 CCR V Overflow příznak přetečení při aritmetické operaci
2 CCR Z Zero příznak nulového výsledku
3 CCR N Negative příznak záporného výsledku
         
4 CCR U Unnormalized nenormalizovaný výsledek poslední operace
5 CCR E Extension výsledek poslední operace nepřekročil binární tečku
6 CCR L Limit překročení maximální či minimální hodnoty (8 bitů před tečkou)
7 CCR S Scaling typicky použito při výpočtu FFT
         
8 MR I0 Interrupt mask maska přerušení
9 MR I1 Interrupt mask maska přerušení
10 MR S0 Scaling mode režim změny měřítka (viz další tabulka)
11 MR S1 Scaling mode režim změny měřítka (viz další tabulka)
         
12 MR * Reserved rezervováno
13 MR T Trace mode režim ladění
14 MR DM Double precision volba režimu násobení
15 MR LF Loop Flag provádí se programová smyčka (viz předchozí kapitolu)

Bity S0 a S1 ovlivňují konverzi hodnot shifterem při ukládání akumulátorů zpět do paměti (na čtvrtém obrázku se jedná o dolní shifter):

S1 S0 Operace
0 0 hodnoty se jen zkopírují
0 1 scale down, posun doprava o jeden bit
1 0 scale up, posun doleva o jeden bit
1 1 prozatím rezervováno

Obrázek 2: Akumulátory (zvýrazněné modrou barvou) jsou připojeny k výstupu z aritmeticko-logické jednotky. Dále je možné do akumulátorů zapisovat data přímo z datových sběrnic. Z akumulátorů si operandy čte ALU, a to jak přímo, tak i přes shifter. Zápis zpět do paměti se provádí vždy přes shifter/limiter, který zajistí konverzi dat podle nastavení bitů S0 a S1.

6. AGU a registry používané pro adresování operandů

Druhým důležitým blokem ovlivňujícím instrukční sadu digitálních signálových procesorů Motorola 56000 je blok pojmenovaný Address Generation Unit neboli AGU. Tento blok slouží pro tvorbu adres použitých pro čtení vstupních operandů popř. pro zápis výsledků vypočtených v násobičce a aritmeticko-logické jednotce. Pro tyto účely obsahuje AGU vlastní sadu dvaceti čtyř registrů, které se na tvorbě adres podílí (designéři 56000 evidentně na registrech nešetřili, což ostatně souvisí se zaměřením tohoto DSP na co nejlepší využití ALU a násobičky). Všechny tyto registry, které jsou rozděleny do dvou samostatně pracujících skupin, jsou vypsány v následující tabulce:

Ukazatele Offsety Modifikátory
R0 N0 M0
R1 N1 M1
R2 N2 M2
R3 N3 M3
     
R4 N4 M4
R5 N5 M5
R6 N6 M6
R7 N7 M7

Všechny zmíněné registry mají šířku šestnáct bitů, z čehož opět vyplývají omezení na maximální kapacitu paměti, tentokrát paměti datové (ta je ovšem rozdělena na dva bloky a šířka dat je 24 bitů, takže se nejedná o omezení na pouhých 64 KB, ale na šestinásobek). U některých adresovacích režimů je nutné vybrat pouze ukazatel, tedy registr Rn. Registr s offsetem bude v takovém případě mít jméno Nn a modifikátor bude mít jméno Mn, přičemž n bude vždy stejná hodnota. Význam jednotlivých registrů lze shrnout takto:

  • Registry R0R7 obsahují adresu zdrojového či cílového operandu. Tyto registry mohou být v závislosti na použitém adresovacím režimu automaticky modifikovány (adresu v nich uloženou lze zvýšit či naopak snížit, a to v rámci jediné instrukce).
  • Registry N0N7 obsahují konstantu, o kterou se ve vybraných adresovacích režimech zvýší či sníží hodnota uložená v adresních registrech R0R7. Kromě toho lze vždy použít konstantu 1 či –1 (inkrementace, dekrementace). Tyto registry taktéž slouží jako běžné offsetové registry (viz navazující kapitolu).
  • Registry M0M7 obsahují konstantu použitou v těch případech, kdy je vyžadováno použití cyklického adresování, například při použití jader číslicových filtrů nebo při implementaci fronty (FIFO). Opět platí, že obsah těchto registrů je použit jen v některých adresovacích režimech.

7. Adresovací režimy

V assembleru digitálních signálových procesorů Motorola 56000 je možné použít následující adresní režimy určené pro čtení operandů z vybraného paměťového bloku (X, Y) či naopak pro zápis výsledku zpět. Pro jednoduchost si jejich použití ukážeme na instrukci MOVE určené pro přenosy dat:

Instrukce Význam
MOVE A0, X:$1234 absolutní adresa v paměťovém bloku X
   
MOVE A0, X:(R7) efektivní adresa je uložena v R7, paměťový blok X
MOVE B0, X:(R6) efektivní adresa je uložena v R6, paměťový blok X
MOVE A1, X:(R6) efektivní adresa je uložena v R5, paměťový blok X
MOVE B1, X:(R5) efektivní adresa je uložena v R4, paměťový blok X
   
MOVE A0, Y:(R0) efektivní adresa je uložena v R0, paměťový blok Y
MOVE A1, Y:(R0) efektivní adresa je uložena v R0, paměťový blok Y
   
MOVE A1, Y:(R0)+ dtto, ale registr R0 se po zápisu zvýší o jedničku (postincrement)
MOVE A1, Y:(R0)- dtto, ale registr R0 se po zápisu sníží o jedničku (postdecrement)
MOVE A1, Y:-(R0) dtto, ale registr R0 se před zápisem sníží o jedničku (predecrement)
   
MOVE A1, Y:(R0)+N0 dtto, ale registr R0 se po zápisu zvýší o hodnotu uloženou v registru N0
MOVE A1, Y:(R0)-N0 dtto, ale registr R0 se po zápisu sníží o hodnotu uloženou v registru N0
   
MOVE A1, Y:(R5+N5) efektivní adresa je vypočtena součtem R5+N5 (běžná funkce offsetového registru)

U těch režimů, v nichž se modifikuje adresa uložená v registru Rn, je možné použít „modulo“ registr Mn, jehož obsah má tento význam:

Mn= Význam
0×ffff normální (lineární) adresování
0×0001 až 0×7fff adresování modulo (modulo 2 až modulo 32768, hodnota „modulo“ je tedy o jedničku vyšší)
0×0000 „reverse carry“ adresování, carry bit je propagován od horních bitů adresy k bitům spodním, lze použít pro FFT atd.
0×8000 až 0×fffe (jen sudé hodnoty), rezervováno
0×8001 až 0×fffd (jen liché hodnoty), taktéž adresování modulo

8. Instrukční soubor DSP Motorola 56000

V následujících šesti kapitolách si stručně popíšeme celý instrukční soubor digitálního signálového procesoru Motorola 56000. Instrukce se rozdělují do šesti skupin:

9. Aritmetické instrukce

Aritmetické instrukce mohou být kombinovány s přenosem dat po jedné z datových sběrnic, což znamená, že v průběhu výpočtu je možné si předpřipravit operandy pro další instrukci. Aritmetické instrukce mohou ovlivnit příznakové bity CCR (Carry, Zero atd.) a všechny instrukce jsou prováděny v násobičce, sčítačce a paralelně běžící ALU:

Obrázek 3: Struktura ALU (žluté bloky + zelená sčítačka).

Následuje seznam aritmetických instrukcí:

Instrukce Stručný popis
ABS absolutní hodnota operandu
ADC součet s carry
ADD součet
ADDL bitový posun doleva a součet
ADDR bitový posun doprava a součet
ASL aritmetický posun doleva
ASR aritmetický posun doprava
CLR vynulování operandu
CMP porovnání
CMPM porovnání
DEC snížení operandu o jedničku
DIV dělení (jen jedna iterace, je nutné opakovat podle požadované přesnosti)
INC zvýšení operandu o jedničku
   
MAC operace multiply-accumulate
MACR operace multiply-accumulate se zaokrouhlením
MPY násobení
MPYR násobení se zaokrouhlením
   
NEG negace akumulátoru
NORM normalizace operandu
RND zaokrouhlení
SBC rozdíl s carry
SUB rozdíl
SUBL bitový posun doleva a rozdíl
SUBR bitový posun doprava a rozdíl
Tcc přenos (při splněné podmínce)
TFR jen přenos dat
TST test akumulátoru a nastavení příznaků

10. Logické instrukce

Taktéž logické instrukce se provádí v datové ALU a mohou nastavit (měnit) příznakové bity. Jedinou výjimku tvoří poslední dvě instrukce, které slouží pro provedení logické operace mezi konstantou a řídicím registrem:

Instrukce Stručný popis
NOT bitová negace
AND logický součin
OR logický součet
EOR logická noekvivalence
   
ROL rotace operandu doleva
ROR rotace operandu doprava
LSL logický posun doleva
LSR logický posun doprava
   
ANDI logický součin mezi konstantou a řídicím regisrem
ORI logický součet mezi konstantou a řídicím regisrem

11. Manipulace s jednotlivými bity

Další čtyři instrukce slouží pro otestování aktuální hodnoty vybraného bitu v paměti nebo registru a popř. pro vynulování, nastavení či inverzi tohoto bitu. Výsledek testu je uložen do příznakového bitu Carry ve stavovém registru, takže ho lze ihned použít, například pro provedení podmíněného skoku apod.:

Instrukce Stručný popis
BTST jen test bitu
BCLR test bitu + jeho následné vynulování
BSET test bitu + jeho následné nastavení na jedničku
BCHG test bitu + jeho následná inverze

Poznámka: ještě sem logicky patří instrukce JCLR a JSET popsané dále.

12. Instrukce pro programové smyčky

Jedná se o nejzajímavější skupinu instrukcí optimalizovaných pro implementaci počítaných programových smyček:

Instrukce Stručný popis
DO začátek programové smyčky
ENDDO explicitní opuštění smyčky (nahrazuje BREAK)

Způsob zápisu smyčky:

DO #počet_opakování, návěští_poslední_instrukce

Popř.:

DO registr_obsahující_počet_opakování, návěští_poslední_instrukce

Instrukce DO provede následující kroky (většinu paralelně):

  1. Registry LA a LC jsou uloženy na zásobník (smyčky lze vnořovat).
  2. Do registru LC se uloží počet opakování smyčky.
  3. Aktuální hodnota PC (začátek smyčky) se uloží na zásobník společně se stavovým registrem.
  4. Do registru LA se uloží adresa konce smyčky.
  5. Nastaví se příznakový bit LF ve stavovém registru.

Způsob zápisu vnořených smyček:

            DO #1234, END_LOOP_1
            ...
            ...
            ...
            DO #5678, END_LOOP_2
            ...
            ...
            ...
END_LOOP_2: ...
            ...
            ...
            ...
END_LOOP_1: ...

13. Řízení běhu programu

Zbývající skupina instrukcí slouží pro řízení běhu programu a taktéž pro přepínání stavu mikroprocesoru (ladicí režim, režim nízké spotřeby atd.):

Instrukce Stručný popis
JMP nepodmíněný skok
Jcc podmíněný skok
JCLR skok pokud je vybraný bit nulový
JSET skok pokud je vybraný bit nastavený na jedničku
   
JSR skok do podprogramu
JScc kombinace Jcc + JSR
JSCLR kombinace JCLR + JSR
JSSET kombinace JSET + JSR
   
RTS návrat z podprogramu
RTI návrat z přerušovací rutiny
   
DEBUG vstup do ladicího režimu
DEBUGcc vstup do ladicího režimu při splnění podmínky
   
NOP prázdná operace
REP opakování další instrukce
   
RESET reset periferních zařízení
SWI softwarové přerušení
STOP přepnutí do stavu snížené spotřeby
WAIT čekání na přerušení ve stavu snížené spotřeby

14. Přenosy dat

Pro veškeré přenosy zpracovávaných dat (nikoli instrukčních kódů) se používají sběrnice XDB, YDB a GDB, které jsme si již popsali minule. S instrukcí MOVE jsme se již seznámili v kapitole o adresování, ovšem existují i další instrukce určené pro přenosy dat mezi pamětí a různými typy registrů. Instrukce přenášející data z akumulátorů mohou nastavit příznakové bity S a L:

Instrukce Stručný popis
LUA načtení a úprava adresy, odpovídá instrukci LEA z jiných typů mikroprocesorů
MOVE přenos mezi datovými registry (včetně akumulátorů)
MOVEC přenos mezi řídicími registry
MOVEM přenos z paměti programu či do paměti programu (pokud se nejedná o boot blok)
MOVEP přenos dat z/do periferních zařízení

Poznámka: přenosy mohou být součástí běžných aritmetických instrukcí, potom se provádí paralelně:

root_podpora

ADD X0,A    X0, X:(R3)+

Tento zápis znamená paralelní provedení těchto kroků:

  • součet X0+A
  • uložení výsledku do akumulátoru A
  • přenos registru X0 do paměťového regionu X na adresu R3
  • Registr R3 je zvýšen o jedničku (po uložení X0)

Povšimněte si, že se zde používají tři různé typy registrů: X0 je umístěn před násobičkou, A je akumulátor a R3 je adresový registr.

15. Odkazy na Internetu

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

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

Autor článku

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