Programování signálových procesoru

Transkript

Programování signálových procesoru
Ú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

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...

Více

Manuál formuláře

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(...

Více

Bloková struktura mikrokontroléru

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...

Více

odpady - Mechanizace zemědělství

odpady - Mechanizace zemědělství * Platí pro roční nebo delší předplatné

Více

Císelné soustavy v mikroprocesorové technice

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...

Více

Infodruck - Česká pirátská strana

Infodruck - Česká pirátská strana 32600 PLZEN TSCHECHISCHE REPUBLIK

Více

analýza a zpracování řečových a biologických

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...

Více