Programování signálových procesoru
Transkript
Ústav radioelektroniky Vysoké učenı́ technické v Brně Programovánı́ signálových procesorů Mikroprocesorová technika, přednáška č. 13 Ing. Frýza Tomáš, Ph.D. 18. prosince 2007 Obsah přednášky Architektury signálových procesorů Způsoby adresovánı́ u signálových procesorů Lineárnı́ adresovánı́ Adresovánı́ modulo Bitově reverznı́ pořadı́ Programovánı́ signálových procesorů Jazyk symbolických adres Programovánı́ v jazyce C Kombinace JSA a C Zdroje informacı́ Otázky a přı́klady k procvičenı́ Obsah přednášky Architektury signálových procesorů Způsoby adresovánı́ u signálových procesorů Lineárnı́ adresovánı́ Adresovánı́ modulo Bitově reverznı́ pořadı́ Programovánı́ signálových procesorů Jazyk symbolických adres Programovánı́ v jazyce C Kombinace JSA a C Zdroje informacı́ Otázky a přı́klady k procvičenı́ Obecná struktura signálového procesoru (Harvardská architektura) I Signálový procesor je charakterizován několika znaky I I I I I I Pamět’ová oblast pro program a data je oddělena, Pro efektivnějšı́ výkon programu se využı́vá zřetězeného zpracovánı́ instrukcı́ (pipelining), Kromě aritmeticko/logické jednotky obsahuje centrálnı́ jednotka také hardwarovou násobičku, Pro přenos dat i adres uvnitř procesoru je využı́váno většı́ho počtu oddělených sběrnic, Instrukčnı́ soubor s omezeným počtem instrukcı́, jejichž výkon trvá obecně jeden nebo dva instrukčnı́ cykly, Přesun informacı́ (např. z/do I/O jednotek) je realizován tzv. přı́mým přı́stupem do paměti DMA (Direct Memory Access). Přı́mý přı́stup do paměti I Pomocı́ DMA je přenos dat mezi vyrovnávacı́ pamětı́ I/O zařı́zenı́ a pamětı́ systému prováděn bez zatěžovánı́ procesoru. Procesor tak nemusı́ přerušovat výkon programu, pouze musı́ uvolnit přı́slušné sběrnice. I Přesun řı́dı́ (generace adres, časovánı́ přesunu) jednotka DMA (viz. blokové schéma DSP). Struktura signálového procesoru (TI) Obrázek: Jádro procesoru TMS320C67xx Operace funkčnı́ch jednotek (TMS320C64xx) Typ operace .L .S .D 32bitové aritmetické operace Dvě 16bit. nebo čtyři 8bit. aritm. oper. 40bitové aritmetické operace 32bitové logické operace 32 nebo 40bitové posuny 32bitové operace s jednotlivými bity Násobenı́ dvou 16bitových operandů Dvě 16bitové nebo čtyři 8bitové násobenı́ Přı́stup do paměti Větvenı́ programu + + + + + + + + + + + + .M + + + + Instrukčnı́ paket DSP VLIW I U DSP s architekturou typu VLIW jsou instrukce (instrukčnı́ paket) složeny z dı́lčı́ch instrukcı́. Každá z instrukcı́ je právě 32bitová a nese informaci pro jednu řı́dicı́ jednotku. I DSP TMS320C6xxx obsahuje celkem 8 jednotek, proto jeden instrukčnı́ paket obsahuje 8 × 32 = 256b. Tvorbě instrukčnı́ch paketů je podřı́zeno také programovánı́ v jazyce symbolických adres DSP I I I I Na jednotlivé pakety se lze odkazovat pomocı́ návěštı́ (např. u podmı́něných či nepodmı́něných skoků), U dı́lčı́ch instrukcı́ v paketu to nelze. Celý paket se chápe jako celek a stejně tak se nahrává do řı́dicı́ jednotky při výkonu programu, Dı́lčı́ instrukce v paketu se pı́šı́ na samostatné řádky, které začı́najı́ symbolem ||. Např.: navesti: ldh .d1t1 *a4++,a9 ; reg. a9 = *a4 || ldh .d2t2 *b4++,b9 ; reg. b9 = *b4 Struktura instrukce VLIW I navesti: Návěštı́ I I *a4++,a9 ; reg. a9 = *a4 Identifikuje adresu, od které je v paměti uložen instrukčnı́ paket. Označenı́ konkrétnı́ instrukce, tj. operace která se má vykonat (např. ldh – načtenı́ dat z paměti, mpy – násobenı́, . . .). Funkčnı́ jednotka I I I .d1t1 Název instrukce I I ldh Označenı́ jednotky, která má instrukci vykonat (např. D1), Může být spojeno s označenı́m sběrnice pro přenos dat (T1). Argumenty instrukce I I Např. *a4++, a9. Na rozdı́l od mikrokontrolérů zde prvnı́ operand udává zdroj a poslednı́ destinaci, U DSP TMS320C6xxx nenı́ využito přı́mé adresovánı́. Název registru uvozený hvězdičkou tedy reprezentuje ”ukazatel”, tj. mı́sto kde je uložena adresa operandu. Obsah přednášky Architektury signálových procesorů Způsoby adresovánı́ u signálových procesorů Lineárnı́ adresovánı́ Adresovánı́ modulo Bitově reverznı́ pořadı́ Programovánı́ signálových procesorů Jazyk symbolických adres Programovánı́ v jazyce C Kombinace JSA a C Zdroje informacı́ Otázky a přı́klady k procvičenı́ Způsoby adresovánı́ u DSP I Výpočet adres pro čtenı́/zápis operandů v registrech nebo v paměti provádı́ jednotka generovánı́ adres AGU (Address Generation Unit) I I I I Využı́vá se celočı́selná aritmetika (tedy ne zlomkový tvar), Obsahuje vlastnı́ ALU jednotku(y) a datové/řı́dicı́ registr(y) pro nastavenı́ způsobu adresovánı́, Nejčastějšı́ způsoby u DSP jsou: lineárnı́ adresovánı́ (přı́mé/nepřı́mé), adresovánı́ modulo, adresovánı́ v bitově reverznı́m pořadı́. Pozn.: Způsob adresovánı́ se u TMS320C6000 nastavuje v registru AMR (Addressing Mode Register). Lineárnı́ adresovánı́ I Přı́mé adresovánı́ I I I Nepřı́mé adresovánı́ hodnot operandů I I I Operand instrukce obsahuje přı́mo zadanou adresu, kde v paměti se nacházı́ hodnota pro výkon instrukce, Pozn.: U TMS320C6000 nenı́ tento způsob využit. Operand instrukce obsahuje adresu, kde je v paměti uložena hodnota pro výkon instrukce. Je to tedy ukazatel na hodnotu, Značenı́ pomocı́ ”hvězdičky”: *nazev registru. Při použitı́ instrukcı́ pro přı́stup do paměti je možné měnit hodnotu ukazatele I I I Inkrementace/dekrementace před/po vykonánı́ adresace, Relativnı́ změna o většı́ počet pozic, Adresace bez změny ukazatele. Nepřı́mé adresovánı́ Tabulka: Změna hodnot ukazatelů Změna Před adresacı́ Po adresaci Inkrementace Dekrementace Většı́ zvýšenı́ Většı́ zmenšenı́ Beze změny *++rx *--rx *++rx[konst] *--rx[konst] *rx *rx++ *rx-*rx++[konst] *rx--[konst] *rx Nepřı́mé adresovánı́ hodnot operandů Tabulka: Načtenı́ dat z paměti do registru: ldw .d1 *a10,b1 (Load from memory) Název registru/pozice b1 a10 pamět’ 0x100 Před výkonem Po výkonu 0x0000 0000 0x0000 0100 0x0000 1234 0x0000 1234 0x0000 0100 0x0000 1234 Tabulka: Uloženı́ hodnoty do paměti: stb .d1 a1,*--a10 (Store to memory) Název registru/pozice a1 a10 pamět’ 0x100 pamět’ 0x101 Před výkonem 0x0012 0x0000 0x0000 0x1111 3456 0101 1111 1111 Po výkonu 0x0012 0x0000 0x0012 0x1111 3456 0100 3456 1111 Adresovánı́ modulo I Kromě lineárnı́ho způsobu adresovánı́ (hodnota ukazatele se konstantně zvyšuje/snižuje) je u DSP častým způsobem adresovánı́ tzv. adresovánı́ modulo (tzv. kruhová pamět’) I I I I V datové paměti se vyhradı́ blok určité délky a pouze v něm se ”pohybuje” ukazatel operandu, Až ukazatel obsahuje nejvyššı́ možnou adresu a instrukcı́ se provede dalšı́ zvýšenı́, je do ukazujı́cı́ho registru automaticky nahrána nejnižšı́ adresa ve vyčleněném bloku, Velikost bloku je možné vybrat z pevně daných intervalů (viz. registr AMR). Přı́klad použitı́ kruhové paměti I I Periodické čtenı́ koeficientů filtru, Dvojice ukazatelů pro ukládánı́ přijatých/vyslaných dat do paměti. Nastavenı́ způsobu adresovánı́ u TMS320C6000 I U každého z registrů A4-A7 a B4-B7 je možné specifikovat způsob adresovánı́ (lineárnı́/modulo) v registru AMR (31:0) I I I BK1 (25:21), BK0 (20:16) - určujı́ velikost bloku pro adresovánı́ modulo podle vztahu velikost [B] = 2BKn+1 , Je tedy možné nastavit 32 různých velikostı́ bloku pro adresovánı́ typu modulo: od 2B až po 4 294 967 296B, B7mode (15:14), B6mode (13:12), . . ., A4mode (1:0) - udává typ adresovánı́ pro konkrétnı́ registr B7-B4 a A7-A4. 0b00: lineárnı́, 0b01: modulo podle BK0, 0b10: modulo podle BK1. Adresovánı́ v bitově reverznı́m pořadı́ I I Generovánı́ adresy v bitově reverznı́m pořadı́ je patrně nejméně běžný způsob adresovánı́. Využı́vá se pouze u speciálnı́ch algoritmů, které vstupnı́/výstupnı́ data přerovnávajı́ z běžného pořadı́ do jiného. Přı́kladem je algoritmus rychlé Fourierovy transformace FFT (Fast Fourier Transform), která je často realizována pomocı́ DSP I Jsou-li vstupnı́ vzorky pro výpočet FFT v přirozeném pořadı́, tj. 0, 1, 2, . . ., 7 (přı́klad N = 8), je pořadı́ bitů u indexu výstupnı́ch vzorků v obráceném pořadı́ (LSB na prvnı́m mı́stě, MSB poslednı́), 000=0; 001=1; 010=2; 011=3; 100=4; 101=5; 110=6; 111=7, 000=0; 100=4; 010=2; 110=6; 001=1; 101=5; 011=3; 111=7, I Z důvodu usnadněnı́ výpočtu FFT, obsahujı́ DSP hardwarovou část, která realizuje toto ”přehozenı́” – adresovánı́ v bitově reverznı́m pořadı́. Obsah přednášky Architektury signálových procesorů Způsoby adresovánı́ u signálových procesorů Lineárnı́ adresovánı́ Adresovánı́ modulo Bitově reverznı́ pořadı́ Programovánı́ signálových procesorů Jazyk symbolických adres Programovánı́ v jazyce C Kombinace JSA a C Zdroje informacı́ Otázky a přı́klady k procvičenı́ Ukázka aplikace v JSA I Ukázka implementace jednoduchého algoritmu na signálový procesor TMS320C6000 využı́vajı́cı́ dvě základnı́ operace DSP: součet, součin I I I n=0 an · xn , N = 10. Násobenı́: a0 · x0 = y0 mpy .m a0,x0,y0 Akumulace mezivýsledků: y0 + mezisoucet = y add .l y0,mezisoucet,y Hodnoty operandů jsou ukládány v registrech mpy add Help: mpy add I I I PN −1 Obecný popis operacı́ I I y= .m a0,a1,a3 ; a0 * a1 = a3 .l a4,a3,a4 ; a4 + a3 = a4 - Integer multiply 16 LSB, - Addition without saturation. Připomenutı́: TMS320C6000 obsahuje 32bitové registry (A0-A15 a B0-B15). Adresovánı́ hodnot operandů I Hodnoty proměnných an a xn je nutno do registrů a0, a1 nejprve načı́st z paměti. Využijeme nepřı́mého adresovánı́, kdy registry a5, a6 obsahujı́ ukazatele na vzorky a0 a x0 ldh .d *a5++,a0 ; načtenı́ aktuálnı́ho vzorku a ldh .d *a6++,a1 ; načtenı́ aktuálnı́ho vzorku x Help: ldh - Load from memory. I I I Naplněnı́ 32bitové adresy ukazatelů a5, a6 musı́ samozřejmě předcházet uvedené instrukce a probı́há ve dvou krocı́ch pomocı́ instrukcı́ mvkl a mvkh I I mvkl .s mvkh .s mvkl .s konst low,a5 konst hi,a5 konst low,a6 ; nižšı́ch 16bitů adresy ukazatele ; vyššı́ch 16bitů adresy ukazatele ; nižšı́ch 16bitů adresy ukazatele I mvkh .s konst hi,a6 ; vyššı́ch 16bitů adresy ukazatele I Help: mvkl - Move 16 LSB constant into register, mvkh - Move 16 MSB constant into register. Větvenı́ programu I Cyklus je nutné realizovat pomocı́ instrukce skoku I b .s navesti ; skok na návěštı́ Help: b - Branch. I U DSP TMS320C6000 lze podmı́nit výkon každé instrukce. Jako argument je možné použı́t obsah registrů A1,A2,B0,B1 nebo B2. Testovaná hodnota se zapı́še do [] před instrukci, jejı́ž výkon má být podmı́něn I I I [b0] [!b0] b .s b .s navesti navesti ; skok na návěštı́ pokud b0 != 0 ; skok na návěštı́ pokud b0 = 0 Realizace cyklu je analogická s instrukčnı́ sadou AVR; jen s tı́m rozdı́lem, že zde netestujeme přı́znakový bit Zero navesti: [b0] ... sub .s b .s b0,1,b0 navesti ; b0 - 1 = b0 ; skoč pokud je b0 != 0 Dokončenı́ algoritmu I Výpis celého algoritmu výpočtu skalárnı́ho součinu (konstanty pt1 až pt3 reprezentujı́ adresy, kde jsou v paměti uloženy vstupnı́ vzorky, přı́p. výstupnı́ hodnota). Help: zero - Zero a register, sth - Store to memory. Dokončenı́ algoritmu mvkl .s2 pt1,a5 mvkh .s2 pt1,a5 mvkl .s2 pt2,a6 mvkh .s2 pt2,a6 mvkl .s2 pt3,a7 mvkh .s2 pt3,a7 mvkl .s2 10,b0 zero .l a4 ; ukazatel na vektor a ; ukazatel na vektor x ; ukazatel na výstupnı́ vzorek y ; počet opakovánı́ cyklu ; nulovánı́ mezivýsledku: a4 = 0 navesti: ldh .d *a5++,a0 ; načtenı́ aktuál. vzorku a ldh .d *a6++,a1 ; načtenı́ aktuál. vzorku x mpy .m a0,a1,a3 ; a0 * a1 = a3 || [b0] sth .d ... add .l a4,a3,a4 ; a4 + a3 = a4 sub .s b0,1,b0 ; b0 - 1 = b0 navesti ; if b0 != 0 skoč na navesti b .s a4,*a7 ; uloženı́ výsledku na adresu ukazatele a7 Programovánı́ v jazyce C I Při programovánı́ v jazyce C lze kombinovat několik možnostı́ I I I I I Celý kód v jazyce C, Použitı́ speciálnı́ch funkcı́ intrinsic, Kritické pasáže přepsat pomocı́ funkcı́ v JSA (*.asm) a ty volat z jazyka C, Kritické pasáže přepsat pomocı́ lineárnı́ho asembleru (*.sa). Speciálnı́ funkce intrinsic Jedná se o funkce v jazyce, které ale překladač zaměnı́ jednou, přı́p. několika instrukcemi, Help: int abs( int src ) ; int add2( int src1, int src2 ) ; int mpy( int src1, int src2 ) ; ... I Ukázka programovánı́ v jazyce C int main( void ) { short a = 0x40 ; short b = 0x20 ; int y ; } // variable declaration y = (a + b) << 1 ; // y = 2(a+b) while( 1 ) ; return( 1 ) ; // forever loop // return value = 1 Kombinace zdrojového kódu v JSA a v jazyce C I Obecně platı́ zásada, že vyššı́ programovacı́ jazyk C se při programovánı́ DSP použı́vá pro inicializaci aplikace a pro ”nekritické” pasáže kódu (z pohledu velikosti nebo rychlosti). I Kritické části je vhodné z hlediska absolutnı́ kontroly rychlosti a velikosti přeloženého kódu programovat v assembleru, přı́p. v tzv. lineárnı́m assembleru (Texas Instruments). Tři způsoby kombinace kódu napsaného v C a v JSA I I I I Funkce v C volá jinou funkci v JSA (uloženou v souboru *.asm), Přerušenı́ spouštı́ obsluhu napsanou v JSA, Instrukce v JSA je spuštěna speciálnı́ funkcı́ překladače intrinsic. Volánı́ funkce v JSA z jazyka C I Funkce v JSA i v C použı́vajı́ stejné registry. Mohou si také vyměňovat parametry/výsledné hodnoty. I Názvy veškerých proměnných či funkcı́ definovaných v C musı́ být v JSA uvozeny . Registr B3 obsahuje návratovou adresu z funkce v JSA. I int main() { ... y = asmFunction( a,b ) ; // volánı́ funkce v JSA ... } asmFunction: ... b b3 ; návrat z funkce v JSA Vstupnı́ parametry/výstupnı́ hodnota funkce v JSA I Funkce v JSA může obsahovat až 10 vstupnı́ch parametrů. Ty jsou vždy postupně uloženy v registrech A4, B4, A6, B6, A8, B8, A10, B10, A12 a B12. I Pokud funkce vracı́ hodnotu, je nutné ji před návratem uložit do registru A4. I Funkce se ukončı́ skokem na návratovou adresu, tj. b B3 Přı́klad Jaké hodnoty obsahujı́ registry A4 a B4 před a po vykonánı́ funkce y = asmFunction( a,b ), která realizuje operaci y = 2 · (a + b)? Necht’ hodnoty a = 0x40 a b = 0x20. Řešenı́ Registr Před Po A4 B4 0x40 (64) 0x20 (32) 0xc0 (192) 0x20 (32) Volánı́ funkce v JSA z jazyka C extern int asmFunction( short,short ) ; // function in assembler int main( void ) { int y = asmFunction( 0x40,0x20 ) ; // call assembler function while( 1 ) ; // forever loop return( 1 ) ; // return value = 1 } .global _asmFunction _asmFunction: add .d1x a4,b4,a4 shl .s1 a4,1,a4 || b .s2 b3 nop 4 ; global parameter definition ; a4 + b4 = a4 ; a4 << 1 = a4 ; return from function Vstupnı́ parametry/výstupnı́ hodnota funkce v JSA I Vzhledem k situaci, že jak kód napsaný v C tak i v JSA může použı́vat (přepisovat) registry, je potřeba je zálohovat I I Registry A0,B0 až A9,B9 se automaticky ukládajı́ do paměti při volánı́ funkce v JSA. Po ukončenı́ funkce se hodnoty nahrajı́ zpět (neplatı́ pro vstupnı́/výstupnı́ hodnoty), Ostatnı́ registry A10,B10 až A15,B15 musı́ zálohovat programátor ”ručně” na začátku volané funkce v JSA. Lineárnı́ assembler TMS320C6000 I Při programovánı́ v JSA signálového procesoru TMS320C6000 je potřeba specifikovat názvy registrů a předevšı́m hlı́dat časovánı́ jednotlivých instrukcı́ I I I Např. instrukci pro přı́stup do paměti doplnit 4 instrukcemi nop, Přı́stup do paměti trvá 5 strojových cyklů; 1. cyklus – spuštěnı́ instrukce; načtená/uložená hodnota je k dispozici za dalšı́ 4 cykly. Lineárnı́ asembler je jakýmsi mezikrokem mezi JSA a jazykem C. Umožňuje snadnějšı́ práci pro programátora, ale ponechává mu značnou kontrolu nad výsledným kódem I I I Je možné použı́vat symbolické názvy registrů, včetně předávaných parametrů (podobně jako proměnné v jazyce C), Správné časovánı́ výkonu instrukcı́ se provádı́ automaticky, Programuje se přı́mo pomocı́ instrukcı́ bez nutnosti specifikovat funkčnı́ jednotku. Kód je optimalizován mezi volné jednotky. Ukázka aplikace v lineárnı́m assembleru I Zdrojový kód uložený v souboru s koncovkou *.sa musı́ obsahovat několik částı́ I I I I I I Identifikace symbolu/funkce definovaného v jiném zdrojovém souboru pomocı́ direktivy .global, Specifikace začátku funkce .cproc, Konec funkce .endproc, Přiřazenı́ vstupnı́ch hodnot proměnným za .cproc, Deklarace proměnných (symbolické označenı́ registrů) .reg, Návratová hodnota funkce .return. Ukázka aplikace v lineárnı́m assembleru .global _asmFunction _asmFunction: .reg y add a,b,y shl y,1,y .return y .endproc ; the .global directive identifies a symbol ; that is used in the current file but ; defined in another file .cproc a,b ; beginning of the section _asmFunction ; a, b are inputs of procedure ; descriptive name to be used for a register ; a + b = y ; y << 1 = y ; return value in y ; end of the section _asmFunction Obsah přednášky Architektury signálových procesorů Způsoby adresovánı́ u signálových procesorů Lineárnı́ adresovánı́ Adresovánı́ modulo Bitově reverznı́ pořadı́ Programovánı́ signálových procesorů Jazyk symbolických adres Programovánı́ v jazyce C Kombinace JSA a C Zdroje informacı́ Otázky a přı́klady k procvičenı́ Zdroje informacı́ Lapsley, P., Bier, J., Shoham, A., Lee, E.A. DSP Processor Fundamentals. Architectures and Features. John Wiley & Sons, New York, 1996, ISBN 0-7803-3405-1. Smékal, Z., Sysel, P. Signálové procesory VLIW firmy Texas Instruments. Sdělovacı́ technika. Dahnoun, N. Linear assembly. University of Bristol, 2002. Dahnoun, N. Interfacing C and assembly code. University of Bristol, 2002. Obsah přednášky Architektury signálových procesorů Způsoby adresovánı́ u signálových procesorů Lineárnı́ adresovánı́ Adresovánı́ modulo Bitově reverznı́ pořadı́ Programovánı́ signálových procesorů Jazyk symbolických adres Programovánı́ v jazyce C Kombinace JSA a C Zdroje informacı́ Otázky a přı́klady k procvičenı́ Otázky a přı́klady k procvičenı́ 1. Navrhněte postup výpočtu jednoho vzorku konvoluce vektorů ~x a ~h (N = 4) uložených v paměti DSP TMS320C64xx. Zaměřte se na efektivnı́ využitı́ co největšı́ho počtu funkčnı́ch jednotek. Přesné označenı́ instrukcı́ nenı́ důležité. 2. Vyjmenujte všechny funkčnı́ jednotky signálového procesoru TMS320C6414. Které z nich umožňujı́ načı́tánı́ hodnot z paměti? 3. S jakou minimálnı́ frekvencı́ hodinového signálu je možné dosáhnout početnı́ho výkonu u DSP TMS320C6211 1 200 MIPS? 4. Napište tělo funkce y = komplex sum( A re, A im, B re, B im ) ; v lineárnı́m asembleru TMS320C6400 realizujı́cı́ součet dvou komplexnı́ch čı́sel.
Podobné dokumenty
Technické vybavenı osobnıch pocıtacu
• Co je to MTBF (Mean Time Between Failures)? Jaká jsou obvyklá poškozenı́ povrchu
pevného disku, jak je možné je řešit (pokud vůbec)? Co je to S.M.A.R.T.? Jmenujte alespoň
dva typické p...
Manuál formuláře
ÚDAJE PARTNERA
@S název(30)
@s název2(30)
@T ulice(30)
@U PSČ (6)
@V pošta(30)
@v stát (30)
@Y IČO(10)
@Z DIČ(14)
@u č.účtu(25)
@b banka(15)
@W příjem(30)
@X osoba(30)
@f telefon 2(30)
@t tel./fax(...
Bloková struktura mikrokontroléru
CICS procesory obsahujı́ velké množstvı́ instrukcı́, které s malými obměnami
vykonávajı́ ty samé operace (např. pomocı́ přı́mého adresovánı́, indexového
adresovánı́, apod.) – lze je sn...
Císelné soustavy v mikroprocesorové technice
v přı́padě, že výsledek aritmetické operace je následně operandem dalšı́ operace, je
nutné data upravit do původnı́ho počtu bitů,
následné snı́ženı́ počtu bitů je nutné také v pr...
analýza a zpracování řečových a biologických
uměleckou oblastı́ se již dále zabývat nebudeme, za to se o to vı́ce pozastavı́me u prozodie
jako obecného výrazu pro informačnı́ doplněk každého typu řeči. Svou prozodickou informaci o...