1. ˇCesk´e vysok´e uˇcen´ı technick´e v Praze
Fakulta elektrotechnick´a
Cˇ VUT FEL katedra pocˇı´tacˇu˚
Bakal´aˇrsk´a pr´ace
Audio port pro ˇreˇcov´e aplikace
Martin Loskot
Vedouc´ı pr´ace: Ing. Miroslav Skrbek, Ph.D.
Studijn´ı program: Elektrotechnika a informatika, strukturovan´y bakal´aˇrsk´y
Obor: V´ypoˇcetn´ı technika
ˇcerven 2008
3. Podˇekov´an´ı
Dˇekuji panu Ing. Miroslavu Skrbkovi, Ph.D., vedouc´ımu bakal´aˇrsk´e pr´ace, za jeho ochotu, ˇcas
a cenn´e rady, kter´e mi pomohly ke zd´arn´emu dokonˇcen´ı t´eto pr´ace. D´ale dˇekuji panu Dr. Ing.
Tom´aˇsi Mackovi za poskytnut´ı podklad˚u, pomoci a zpˇetn´e vazby.
iii
7. Abstract
This bachelor thesis discusses the analysis, the design and the implementation of an audio port
for speech recognition applications. The first and main output of this thesis is a fully functional
sample of a desk audio port containing a microphone, a speaker, a headphone connector and
three buttons. The port is connected to a personal computer using USB interface, the audio
device is a standard USB Audio Device and the button control is a standard Human Interface
Device. The second output is a control application vxmlclient converting button events into
voice recognizer commands. The third part of the thesis is considering the functionality and
the actual usability of the device using a sample VoiceXML document. The thesis also includes
the description of later design changes and recommended modifications.
Abstrakt
Pr´ace se zab´yv´a anal´yzou, n´avrhem a realizac´ı audio portu urˇcen´eho k ovl´ad´an´ı ˇreˇcov´ych ap-
likac´ı. Hlavn´ım v´ystupem pr´ace je funkˇcn´ı vzorek stoln´ıho audio portu obsahuj´ıc´ı mikrofon,
reproduktor, sluch´atkov´y v´ystup a tˇri ovl´adac´ı tlaˇc´ıtka. Port se pˇripojuje k osobn´ımu poˇc´ıtaˇci
pomoc´ı USB rozhran´ı, zvukov´e zaˇr´ızen´ı je standardn´ı USB Audio Device, tlaˇc´ıtkov´e ovl´ad´an´ı je
standardu Human Interface Device. Druh´ym c´ılem je vytvoˇren´ı ovl´adac´ıho programu vxmlclient
pˇrev´adˇej´ıc´ıho akce tlaˇc´ıtek na pˇr´ıkazy pro hlasov´y rozpozn´avaˇc. Tˇret´ı ˇc´ast´ı je zhodnocen´ı
funkˇcnosti a re´aln´e pouˇzitelnosti zaˇr´ızen´ı na vzorov´em VoiceXML dokumentu. Souˇc´ast´ı pr´ace
je i popis proveden´ych zmˇen proti p˚uvodn´ımu n´avrhu a dalˇs´ıch doporuˇcen´ych ´uprav.
vii
15. KAPITOLA 1. ´UVOD 1
1 ´Uvod
C´ılem t´eto pr´ace je realizovat zaˇr´ızen´ı umoˇzˇnuj´ıc´ı pouˇz´ıv´an´ı prohl´ıˇzeˇce hlasov´ych dokument˚u
ve form´atu VoiceXML. Pouˇzit´y prohl´ıˇzeˇc Charlie VoiceXML browser s dokumentac´ı a seznam
poˇzadavk˚u mi byl poskytnut firmou IBM ˇCesk´a republika, spol. s r.o. D˚uleˇzit´ym poˇzadavkem
zadavatel˚u byla jednoduch´a instalace a provoz na jak´emkoli poˇc´ıtaˇci vybaven´em operaˇcn´ım
syst´emem Microsoft Windows XP. Hlavn´ım pˇr´ınosem pro uˇzivatele by mˇelo b´yt zjednoduˇsen´ı
kaˇzdodenn´ıch rutinn´ıch ´ukol˚u, a to i na poˇc´ıtaˇci, kter´y dosud nen´ı vybaven zvukov´ym sub-
syst´emem. Po doplnˇen´ı patˇriˇcn´eho softwaru by mˇelo b´yt moˇzn´e napˇr. spouˇstˇet aplikace,
vyhled´avat ´udaje v datab´az´ıch nebo vytoˇcit telefonn´ı ˇc´ıslo a v´est a ovl´adat hovor.
V n´asleduj´ıch kapitole nejprve formuluji vˇsechny poˇzadavky, kter´e byly na zaˇr´ızen´ı kladeny a
naznaˇc´ım moˇzn´e pˇr´ıstupy k probl´emu. Zm´ın´ım se o podstatˇe pouˇzit´ı jazyka VoiceXML a jeho
moˇznostech a pop´ıˇsi existuj´ıc´ı VoiceXML browser a zp˚usob jeho ovl´ad´an´ı. Provedu v´ybˇer hard-
waru a metody komunikace s n´ım, z ˇcehoˇz pˇri n´avrhu vyplyne pouˇzit´ı sofwarov´ych prostˇredk˚u.
V n´avrhov´e ˇc´asti detailnˇe rozeberu zvolen´y koncept ˇreˇsen´ı a provedu principi´aln´ı n´avrh jak
hardwaru - audio portu, tak softwaru - obsluˇzn´eho programu vxmlclient. V realizaˇcn´ı kapi-
tole pop´ıˇsi samotn´y postup implementace, sch´ema zapojen´ı, ploˇsn´y spoj a hotov´e zaˇr´ızen´ı
vˇcetnˇe odliˇsnost´ı proti p˚uvodn´ımu n´avrhu. Popis dopln´ım doporuˇcen´ymi zmˇenami a n´amˇety
na rozˇs´ıˇren´ı. V pˇredposedn´ı kapitole vysvˇetl´ım instalaci a pouˇzit´ı portu a doporuˇc´ım dalˇs´ı
testov´an´ı. Z´avˇer bude patˇrit shrnut´ı a zhodnocen´ı pˇr´ınosu pr´ace.
Nasazen´ı audio portu je na obr. 2.3. Obsahem doprovodn´eho CD je elektronick´a podoba t´eto
pr´ace spolu s komentovan´ymi zdrojov´ymi k´ody obluˇzn´eho programu, datasheety pouˇzit´ych
komponent, sch´ematem zapojen´ı a n´avrhem ploˇsn´eho spoje.
Obr´azek 1.1: Nasazen´ı audio portu
17. KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE 3
2 Popis probl´emu, specifikace c´ıle
2.1 Seznam poˇzadavk˚u
Zde se pokus´ım shrnout vˇsechny poˇzadavky, kter´e byly na audio port poloˇzeny. Nˇekter´e byly
obsaˇzeny v zad´an´ı bakal´aˇrsk´e pr´ace, jin´e vyplynuly pˇri konzultac´ıch se zadavateli v pr˚ubˇehu
tvorby.
• Audio port bude obsahovat mikrofon a reproduktor (mono) s moˇznost´ı pˇripojen´ı sluch´atek
(stereo) a alespoˇn tˇri tlaˇc´ıtka.
• Audio port bude pˇripojiteln´y pˇres USB rozhran´ı k jak´emukoli poˇc´ıtaˇci vybaven´emu
operaˇcn´ım syst´emem Microsoft Windows XP.
• Audio port bude nap´ajen ze sbˇernice USB.
• Zvukov´a ˇc´ast audio portu se bude hl´asit jako standardn´ı USB zaˇr´ızen´ı tˇr´ıdy Audio.
• Minim´aln´ı vzorkovac´ı frekvence audiokodeku bude 16 kHz.
• Minim´aln´ı rozliˇsen´ı A/D a D/A pˇrevodn´ıku bude 16 bit˚u.
• Hlasov´y v´ystup na reproduktor a sluch´atka bude srozumiteln´y s dostateˇcnou a regulo-
vatelnou hlasitost´ı.
• Hlasov´y vstup z mikrofonu bude dostateˇcnˇe kvalitn´ı pro pouˇzit´y rozpozn´avaˇc.
• Akce tlaˇc´ıtek bude moˇzno v´azat na ovl´ad´an´ı aplikac´ı a ˇr´ızen´ı hlasov´eho rozpozn´avaˇce
Charlie VoiceXML browser firmy IBM, nejl´epe prostˇrednictv´ım zaˇr´ızen´ı tˇr´ıdy Human
Interface Device (HID).
• Audio port bude fyzicky ˇreˇsen jako ergonomick´e stoln´ı zaˇr´ızen´ı v podobˇe stabiln´ıho
stoj´ankov´eho mikrofonu s tlaˇc´ıtky na z´akladnˇe.
• Vˇsechny komponenty mus´ı b´yt dostupn´e v ˇCesk´e republice, a to i v kusov´ych mnoˇzstv´ıch
a s dodac´ı lh˚utou do jednoho mˇes´ıce.
2.2 VoiceXML
K porozumˇen´ı c´ıl˚um t´eto pr´ace je nutn´e porozumˇet princip˚um pouˇzit´ı jazyka VoiceXML (Voice
Extensible Markup Language, VXML)[8], na nˇemˇz je funkˇcnost hlasov´eho rozpozn´avaˇce a v
d˚usledku i audio portu zaloˇzena.
2.2.1 Standard VoiceXML
VoiceXML je standard vyhl´aˇsen´y World Wide Web Consortiem urˇcen´y pro popis a realizaci
pˇredevˇs´ım hlasov´ych dialog˚u mezi ˇclovˇekem a poˇc´ıtaˇcem [8]. Tento standard definuje dialogy
za pouˇzit´ı rozpozn´an´ı a z´aznamu ˇreˇci, syntetizovan´e ˇreˇci, digit´aln´ıch audioz´aznam˚u, telefonu,
telefonn´ı t´onov´e volby (DTMF) a konverzace se sm´ıˇsenou iniciativou.
Pomoc´ı VoiceXML lze vytv´aˇret hlasov´e aplikace stejnˇe jednoduˇse jako bˇeˇzn´e HTML str´anky.
Form´atovac´ı pˇr´ıkazy podobn´e HTML tag˚um urˇcuj´ı ˇcasovou posloupnost jednotliv´ych akc´ı, kter´e
bˇehem dialogu VoiceXML browser interpretuje a prov´ad´ı. VoiceXML aplikace urˇcen´e pro PC
lze adaptovat i na aplikace vyuˇz´ıvaj´ıc´ı bˇeˇzn´e telefonn´ı linky.
18. 4 KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE
2.2.2 Architektura VoiceXML
VoiceXML syst´em sest´av´a ze tˇr´ı ˇc´ast´ı: dokumentov´eho serveru, prohl´ıˇzeˇce a implementaˇcn´ı
platformy (obr. 2.3).
Obr´azek 2.1: Architektura VoiceXML, pˇrevzato z [8]
Dokumentov´y server na poˇz´ad´an´ı poskytuje prohl´ıˇzeˇci VoiceXML soubory, kter´e prohl´ıˇzeˇc in-
terpretuje podle poˇzadavk˚u implementaˇcn´ı platformy - obsluˇzn´eho programu. Obsluˇzn´y pro-
gram zajiˇsˇtuje odezvu uˇzivateli, zas´ıl´an´ı pˇr´ıkaz˚u prohl´ıˇzeˇci, spouˇstˇen´ı uˇzivatelsk´ych program˚u
a pˇr´ıpadnˇe diagnostiku a konfiguraci cel´e sestavy.
2.2.3 Pouˇzit´ı VoiceXML
Samotn´y VoiceXML dokument je obsah textov´eho souboru uzavˇren´y elementy
<vxml>...</vxml>,
funkcionalita dokumentu je zajiˇstˇena dialogy menu
<menu>...</menu>
a formul´aˇr
<form>...<form>.
Menu uˇzivateli umoˇzˇnuje v´ybˇer z nab´ızen´ych alternativ a t´ım ˇr´ızen´ı pr˚ubˇehu dialogu, formul´aˇr
zajiˇsˇtuje vstup a v´ystup informac´ı. Konverzace obvykle zaˇc´ın´a proveden´ım prvn´ıho dialogu,
pˇred´av´a se na dalˇs´ı dialogy a konˇc´ı, pokud nˇekter´y dialog neurˇc´ı sv´eho n´asledn´ıka. D´ale je
moˇzn´e pouˇz´ıvat promˇenn´e k ukl´ad´an´ı ´udaj˚u, podm´ınky pro ˇr´ızen´ı a vˇetven´ı dialogu, poddia-
logy, pˇr´ıkazy k z´aznamu a reprodukci zvuku a mnoho dalˇs´ıch element˚u. Pˇri pouˇzit´ı rozpozn´avaˇce
je nutn´e kaˇzd´emu vstupn´ımu poli (field) definovat pouˇzitou gramatiku, tj. mnoˇzinu platn´ych
vstup˚u, a to buˇd pˇr´ımo v dokumentu, nebo v jin´em souboru.
19. KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE 5
N´asleduje pˇr´ıklad jednoduch´eho VoiceXML dokumentu, pˇrevzat´eho z [8], kter´y jsem doplnil o
vysvˇetluj´ıc´ı koment´aˇre:
<?xml version="1.0" encoding="UTF-8"?>
<vxml xmlns="http://www.w3.org/2001/vxml"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3.org/2001/vxml
http://www.w3.org/TR/voicexml20/vxml.xsd"
version="2.0">
<!--Prvn´ı dialog-->
<form>
<!--Vstupn´ı pole-->
<field name="drink">
<!--Dotaz na uˇzivatele-->
<prompt>Would you like coffee, tea, milk, or nothing?</prompt>
<!--Definice gramatiky uloˇzen´e v souboru drink.grxml-->
<grammar src="drink.grxml" type="application/srgs+xml"/>
</field>
<block>
<!--Odkaz na n´asleduj´ıc´ı dialog-->
<submit next="http://www.drink.example.com/drink2.asp"/>
</block>
</form>
</vxml>
Pr˚ubˇeh konverzace mezi poˇc´ıtaˇcem (C) a ˇclovˇekem (H):
C: Would you like coffee, tea, milk, or nothing?
H: Orange juice. (chybn´a volba)
C: I did not understand. (chybov´a zpr´ava z´avisl´a na konkr´etn´ım prohl´ıˇzeˇci)
C: Would you like coffee, tea, milk, or nothing?
H: Tea. (spr´avn´a volba)
C: (pokraˇcuje dokumentem drink2.asp)
Je zde vidˇet, ˇze pˇrev´aˇznou vˇetˇsinu funkˇcnosti vˇcetnˇe oˇsetˇren´ı nekorektn´ıch vstup˚u mus´ı obstarat
prohl´ıˇzeˇc. Obdobnˇe by mˇel fungovat i testovac´ı dokument intepretovan´y Charlie VoiceXML
browserem.
2.3 Charlie VoiceXML browser
Charlie VoiceXML browser [11] je konzolov´y prohl´ıˇzeˇc VoiceXML dokument˚u pro MS Windows.
Je schopen pracovat ve dvou z´akladn´ıch reˇzimech. Prvn´ım je reˇzim pˇr´ıkazov´eho ˇr´adku, ve
kter´em se dokument naˇcte pˇr´ıkazem
ebrowser filename.vxml
20. 6 KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE
a automaticky se zaˇcne prov´adˇet od prvn´ıho formul´aˇre. Druh´ym je reˇzim XML Voice Browser
(XVB) serveru, ve kter´em prohl´ıˇzeˇc naslouch´a na dan´em portu (obvykle 7777) a ˇcek´a na TCP
spojen´ı a n´asledn´e pˇr´ıkazy. Volba reˇzimu a mnoha dalˇs´ıch parametr˚u (portu, jazykov´ych sou-
bor˚u, vzorkov´an´ı, logov´an´ı, timeout˚u apod.) se prov´ad´ı konfiguraˇcn´ım souborem mastercfg.cfg
podle dokumentace pˇriloˇzen´e k browseru [11].
2.3.1 Pˇr´ıkazy VoiceXML browseru
Charlie VoiceXML browser pracuje jako stavov´y automat, vykon´av´a pˇr´ıchoz´ı pˇr´ıkazy a odes´ıl´a
na nˇe pˇr´ım´e (direct) a asynchronn´ı odpovˇedi, mezi nimi jsou i informace o kaˇzd´e zmˇenˇe stavu
prohl´ıˇzeˇce (obr. 2.2). Kaˇzd´emu poˇzadavku m˚uˇze klient urˇcit jedineˇcn´e ID, kter´ym jsou pak
identifikov´any vˇsechny pˇr´ım´e odpovˇedi. Asynchronn´ı odpovˇedi ID nemaj´ı a jsou povaˇzov´any za
odpovˇedi na posledn´ı zpracovan´y pˇr´ıkaz. K testov´an´ı pˇr´ıkaz˚u pro serverov´y reˇzim je k dispozici
konzolov´y klient xvbc, umoˇzˇnuj´ıc´ı pˇres TCP spojen´ı zas´ılat jednotliv´e XVB pˇr´ıkazy nebo d´avky
pˇr´ıkaz˚u [10].
Obr´azek 2.2: Pˇr´ım´e a asynchronn´ı odpovˇedi, pˇrevzato z [10]
Toto je typick´a sekvence XVB pˇr´ıkaz˚u:
<!--Inicializace browseru-->
<xvb><init id="1"/></xvb>
<!--Naˇcten´ı dokumentu-->
<xvb><load id="2" uri="menu.vxml"/></xvb>
<!--Zaˇc´atek vykon´av´an´ı-->
<xvb><exec id="3"/></xvb>
<!--Storno vykon´av´an´ı-->
<xvb><cancel id="4"/></xvb>
<!--Izolace od browseru-->
<xvb><detach id="5"/></xvb>
<!--´Upln´e odpojen´ı od browseru-->
<xvb><disconnect id="6"/></xvb>
Na poˇzadavek o inicializaci pˇriˇsly postupnˇe tyto dvˇe odpovˇedi, znaˇc´ıc´ı postupn´e pˇrechody do
stav˚u ”initializing” a ”initialized”. Prvn´ı z nich je asynchronn´ı. Druh´a odpovˇeˇd je pˇr´ım´a, tedy
21. KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE 7
je u n´ı moˇzn´e urˇcit, kter´ym pˇr´ıkazem byla vyvol´ana:
<?xml version="1.0"?>
<xvb version="0.4">
<result state="initializing"/>
</xvb>
<?xml version="1.0"?>
<xvb version="0.4">
<result id="1" state="initialized">
<session sid="2" remoteuri="" localuri="" vxmluri="" rooturi="" key="2Kb7FzP"
state="initialized"/>
</result>
</xvb>
Charlie VoiceXML browser je d´ale vybaven ”SocketIO Charlie extension”, coˇz mu umoˇzˇnuje
zas´ılat data (napˇr. rozpoznan´e vstupy) pˇres TCP spojen´ı na adresu a port definovan´y ve
VoiceXML dokumentu. Obdobnˇe funguje ”FileIO Charlie extension” umoˇzˇnuj´ıc´ı pr´aci se
soubory.
2.3.2 Vlastn´ı ovl´ad´an´ı - pl´anovan´y vxmlclient
Jedn´ım z c´ıl˚u t´eto pr´ace je pr´avˇe napsat jedno´uˇcelov´y zkuˇsebn´ı obsluˇzn´y program vxmlclient,
kter´y by nahradil uviverz´aln´ı xvbc a poskytl tak pohotovˇejˇs´ı podporu pˇri testov´an´ı audioportu.
Princip jeho funkce popisuje druh´a polovina pˇr´ıˇst´ı kapitoly.
2.4 St´avaj´ıc´ı hardware
Pˇri hled´an´ı optim´aln´ıho hardwarov´eho ˇreˇsen´ı jsem se nejprve zamˇeˇril na nalezen´ı hotov´eho
produktu nebo vyuˇzit´ı existuj´ıc´ıch komponent, pot´e jsem prozkoumal moˇzn´e cesty pˇri n´avrhu
vlastn´ıho zaˇr´ızen´ı.
2.4.1 Hotov´a ˇreˇsen´ı
Na trhu existuje velk´e mnoˇzstv´ı audiozaˇr´ızen´ı, z nichˇz vˇetˇsina splˇnuje poˇzadavky kladen´e na
zvukovou ˇc´ast audio portu, jako je vzorkovac´ı frekvence, rozliˇsen´ı pˇrevodn´ıku, sluch´atkov´e a
repro v´ystupy a pˇripojen´ı jako standardn´ı USB Audio. Hlasitost b´yv´a u jednoduˇsˇs´ıch z nich
ovl´ad´ana prostˇrednictv´ım poˇc´ıtaˇce, sloˇzitˇejˇs´ı m´ıvaj´ı vlastn´ı regul´atory ˇci ekvaliz´ery. ˇZ´adn´e
z nich vˇsak nen´ı provedeno jako stoln´ı zaˇr´ızen´ı s vestavˇen´ym reproduktorem a mikrofonem.
Jako z´asadn´ı probl´em se tak´e uk´azala neexistence tlaˇc´ıtek s program´atorsky nebo uˇzivatelsky
definovateln´ymi funkcemi, potˇrebn´ymi k ovl´ad´an´ı VoiceXML prohl´ıˇzeˇce.
2.4.2 ´Uprava existuj´ıc´ıch ˇreˇsen´ı
Zv´aˇzil jsem moˇznost upravit existuj´ıc´ı zvukovou kartu pˇrid´an´ım mikrofonu a reproduktoru
s v´ystupn´ım v´ykonov´ym zesilovaˇcem a tlaˇc´ıtkov´e ovl´ad´an´ı realizovat oddˇelenˇe jako zvl´aˇstn´ı
zaˇr´ızen´ı standardu HID. V´yhodou tohoto ˇreˇsen´ı by byla jednoduch´a realizace cel´e zvukov´e
ˇc´asti, i kdyˇz by znaˇcn´a ˇc´ast funkˇcnosti zvukov´e karty z˚ustala nevyuˇzita. Nev´yhodou je vˇsak
obt´ıˇzn´e a zbyteˇcnˇe komplikovan´e spojen´ı zvukov´e a tlaˇc´ıtkov´e ˇc´asti do jednoho celku, neboˇt
jsem se chtˇel vyhnout moˇznosti pˇripojovat obˇe ˇc´asti zvl´aˇsˇt jako samostatn´e jednotky pˇres USB
22. 8 KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE
rozboˇcovaˇc, ˇc´ımˇz by se pˇrid´avaly relativnˇe nepotˇrebn´e podp˚urn´e komponenty. D´ale by se neod-
stranila nutnost tvorby ploˇsn´eho spoje, kter´y by byl nutn´y pro realizaci v´ystupn´ıho zesilovaˇce.
T´ım by rostla velikost a cena zaˇr´ızen´ı.
Po zv´aˇzen´ı tˇechto fakt˚u jsem zvolil variantu vlastn´ıho ˇreˇsen´ı cel´eho portu, kter´e se mi jevilo
jako pˇr´ımoˇcar´e a efektivn´ı.
2.5 Vlastn´ı ˇreˇsen´ı hardwaru
V´yvoj vlastn´ıho ˇreˇsen´ı jsem zah´ajil studiem specifikace USB [14], USB Audio Class [5] a USB
HID class [1]. Zde uv´ad´ım struˇcn´e shrnut´ı tˇech v´ysledk˚u, kter´e se pˇr´ımo v´aˇz´ı k n´avrhu audio
portu.
2.5.1 Universal Serial Bus (USB)
USB je nejrozˇs´ıˇrenˇejˇs´ı s´eriov´e rozhran´ı urˇcen´e k pˇripojov´an´ı periferi´ı k PC, pomoc´ı rozboˇcovaˇc˚u
umoˇzˇnuje pˇripojen´ı aˇz 127 zaˇr´ızen´ı v aˇz sedmi ´urovn´ıch a podporuje pˇripojov´an´ı od odpojov´an´ı
za bˇehu syst´emu (hot swapping) a automatickou konfiguraci zaˇr´ızen´ı (plug-and-play). Jedno
fyzick´e zaˇr´ızen´ı m˚uˇze disponovat v´ıce logick´ymi rozhran´ımi (napˇr. zvukov´ym a ovl´adac´ım),
pak se jedn´a o tzv. ”USB composite device”. D´ale je pro n´as podstatn´e to, ˇze umoˇzˇnuje jak
pˇripojen´ı zaˇr´ızen´ı s vlastn´ım nap´ajen´ım (self-powered device), tak i nap´ajen´ı zaˇr´ızen´ı s menˇs´ım
odbˇerem proudu pˇr´ımo ze sbˇernice (bus-powered device).
USB poskytuje zaˇr´ızen´ı nap´ajen´ı 5 V s pˇetiprocetn´ı toleranc´ı. Po pˇripojen´ı sm´ı zaˇr´ızen´ı odeb´ırat
proud max. 100 mA, avˇsak sm´ı poˇz´adat o nav´yˇsen´ı aˇz do 500 mA po kroc´ıch 2 mA. Pˇri pouˇzit´ı
mezilehl´ych bus-powered hub˚u se vˇsak pˇr´ıdˇel sniˇzuje na 400 mA. Nav´ıc na kaˇzd´em prvku doch´az´ı
k ´ubytku napˇet´ı, jak ukazuje obr. 2.3 [14]. I pˇri pˇripojen´ı pˇr´ımo ke koˇrenov´emu hubu v PC nebo
k jin´emu samostatnˇe nap´ajen´emu hubu se tedy m˚uˇze st´at, ˇze zaˇr´ızen´ı bude m´ıt k dispozici pouze
4,5 V. Operaˇcn´ı syst´em hostitelsk´eho poˇc´ıtaˇce typicky proudov´e zat´ıˇzen´ı sbˇernice monitoruje a
varuje uˇzivatele v pˇr´ıpadˇe, ˇze je poˇzadov´an vˇetˇs´ı proud, neˇz je dostupn´y. Z toho vypl´yv´a, ˇze
vˇsechny komponenty navrhovan´eho zaˇr´ızen´ı mus´ı b´yt schopn´e pracovat pˇri napˇet´ı menˇs´ım nebo
rovn´em 4,5 V (v ide´aln´ım pˇr´ıpadˇe vˇsechny pˇri stejn´em) a souhrnn´y odbˇer nesm´ı pˇres´ahnout
500 mA.
Obr´azek 2.3: Maxim´aln´ı ´ubytky nap´ajec´ıho napˇet´ı pˇri pouˇzit´ı bus-powered hubu, pˇrevzato z
[14]
Zaˇr´ızen´ı pˇripojen´a k rozhran´ı USB mohou b´yt navrˇzen´a zcela dle v˚ule v´yrobce, a pak potˇrebuj´ı
specifick´y ovladaˇc. Druhou moˇznost´ı je postavit zaˇr´ızen´ı spadaj´ıc´ı do nˇekter´ych z tzv. USB
device classes - tˇr´ıd standardn´ıch USB zaˇr´ızen´ı. Tyto tˇr´ıdy definuj´ı jednotnou identifikaci a
23. KAPITOLA 2. POPIS PROBL´EMU, SPECIFIKACE C´ILE 9
chov´an´ı zaˇr´ızen´ı, takˇze jeden ovladaˇc m˚uˇze b´yt pouˇzit pro vˇsechna zaˇr´ızen´ı dan´e tˇr´ıdy. Operaˇcn´ı
syst´em by mˇel implementovat ovladaˇce vˇsech tˇr´ıd a t´ım zajistit podporu libovoln´emu zaˇr´ızen´ı
spadaj´ıc´ımu do nˇekter´e z nich. Tento rys USB architektury umoˇzˇnuje, abychom za pouˇzit´ı dvou
USB tˇr´ıd realizovali audio port bez nutnosti ps´at jak´ekoli ovladaˇce. Pro naˇse ´uˇcely se nab´ız´ı
Audio class a Human Interface Device (HID) class.
2.5.1.1 USB Audio class
Tˇr´ıdu USB Audio definuje USB Implementers Forum, Inc. [5] jako tˇr´ıdu obsahuj´ıc´ı veˇsker´a
zaˇr´ızen´ı pod´ılej´ıc´ı se na zpracov´an´ı zvuku a ˇr´ızen´ı zvukov´ych funkc´ı. To znamen´a, ˇze obstar´av´a
operace s digit´aln´ımi i analogov´ymi audio daty stejnˇe jako ovl´ad´an´ı hlasitosti, ekvaliz´er, mix´er,
gener´atory efekt˚u a dalˇs´ı. Zaˇr´ızen´ı t´eto tˇr´ıdy se po pˇripojen´ı k poˇc´ıtaˇci bude chovat jako
zvukov´a karta se vˇsemi tˇemito funkcemi, pokud byly implementov´any.
2.5.1.2 USB Human Interface Device (HID) class
Tˇr´ıda USB Human Interface Device je pops´ana v´ıce dokumenty USB Implementers Fora [1].
Je to tˇr´ıda popisuj´ıc´ı zaˇr´ızen´ı pro pˇr´ımou komunikaci ˇclovˇeka a poˇc´ıtaˇce, jako jsou kl´avesnice,
myˇsi, hern´ı ovladaˇce, tlaˇc´ıtkov´e panely a alfanumerick´e displeje. HID zaˇr´ızen´ı jsou podle typu
dˇelena do ”usage pages” (str´anky uˇzit´ı), kter´e bl´ıˇze urˇcuj´ı pouˇzit´ı dan´eho zaˇr´ızen´ı (napˇr. Key-
board/Keypad, LEDs, Telephony, Consumer, Game Controls, Button apod.).
Kaˇzd´a usage page seskupuje jednotliv´a ”usages” podobn´eho druhu (napˇr. Consumer usage
page zahrnuje Stop, Eject, Pause, Quit, Help a dalˇs´ı usages) a d´ale m˚uˇze obsahovat i spoleˇcnˇe
vystupuj´ıc´ı skupiny logicky bl´ızk´ych prvk˚u (napˇr. do skupiny Consumer Control patˇr´ı Vo-
lume Increment, Volume Decrement, Mute a dalˇs´ı). Jak usage pages, tak i jednotliv´e usages a
skupiny bl´ızk´ych usages jsou identifikov´any dvojm´ıst´ymi hexadecim´aln´ımi ˇc´ısly.
Informace z HID zaˇr´ızen´ı jsou typicky pˇri kaˇzd´e ud´alosti pˇren´aˇseny pˇres interruptov´e rozhran´ı
ve formˇe ˇc´ıseln´ych scan-k´od˚u popisuj´ıc´ıch stav ovl´adac´ıch prvk˚u. Tyto scan-k´ody mohou b´yt
d´ıky API operaˇcn´ıho syst´emu zas´ıl´any ve formˇe zpr´av obsluˇzn´ym aplikac´ım.
2.5.2 Idea vlastn´ıho ˇreˇsen´ı
Hlavn´ı myˇslenkou m´eho ˇreˇsen´ı je maxim´aln´ı vyuˇzit´ı standardizovan´ych zaˇr´ızen´ı a rozhran´ı. Jako
optim´aln´ı se jev´ı vyuˇzit´ı komponent tˇr´ıdy Audio pro ˇc´ast zvukovou a tˇr´ıdy Human Interface
Device pro ˇc´ast tlaˇc´ıtkovou. V ide´aln´ım pˇr´ıpadˇe se podaˇr´ı naj´ıt integrovan´e reˇsen´ı, kter´e obstar´a
jak USB komunikaci, tak zpracov´an´ı zvuku a obsluhu tlaˇc´ıtek. V dalˇs´ı ˇc´asti pr´ace se pokus´ım
takov´yto vhodn´y hardware nal´ezt a v z´avislosti na nˇem pak vypracovat hardwarov´e i softwarov´e
ˇreˇsen´ı.
25. KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 11
3 Anal´yza a n´avrh ˇreˇsen´ı
V t´eto kapitole provedu a vysvˇetl´ım v´ybˇer hardwarov´ych komponent a pop´ıˇsi jejich propojen´ı.
Na to nav´aˇzi n´avrhem obsluˇzn´eho programu a testovac´ıho dokumentu.
3.1 Volba hardwarov´e architektury
3.1.1 Univerz´aln´ı obvody
Pˇri n´avrhu nov´eho zaˇr´ızen´ı bylo v z´asadˇe moˇzn´e postupovat dvˇema smˇery. Jako prvn´ı jsem
zv´aˇzil moˇznost implementace z´akladn´ı funkcionality pomoc´ı univerz´aln´ıch mikroprocesor˚u.
Prohl´edl jsem nab´ıdku firem Microchip, Atmel, Analog Devices, Zilog, NXP Semiconduc-
tors, Freescale Semiconductor, ON Semiconductor, National Semiconductor, Maxim Integrated
Products a Texas Instruments. Aˇckoli existuje velk´e mnoˇzstv´ı procesor˚u, nepodaˇrilo se mi
nal´ezt ˇz´adn´y, kter´y by souˇcasnˇe disponoval A/D a D/A kodekem poˇzadovan´e kvality, audio
v´ybavou a USB rozhran´ım. Bylo by tedy pravdˇepodobnˇe nutn´e pouˇz´ıt tˇri samostatn´e obvody:
kodek, sign´alov´y procesor a USB controller (a d´ale samozˇrejmˇe stabiliz´ator napˇet´ı a vstupn´ı
a v´ystupn´ı zesilovaˇce). Zaˇr´ızen´ı by tedy bylo relativnˇe sloˇzit´e a n´aroˇcn´e na tvorbu firmwaru i
obsluˇzn´e aplikace.
3.1.2 Specializovan´e obvody
Druhou cestou bylo pouˇzit´ı specializovan´eho obvodu vyroben´eho na m´ıru podobn´ym aplikac´ım.
Opˇet jsem proˇsel nab´ıdky v´yˇse zm´ınˇen´ych firem a z nevelk´eho v´ybˇeru jsem jako jedin´e vhodn´e
zhodnotil obvody ˇrady PCM290x firmy Texas Instruments. Jejich hlavn´ı v´yhodou je v´yznamn´a
jednoduchost proti vˇsem ostatn´ım. Funkce tˇechto kodek˚u s USB rozhran´ım pˇresnˇe pokr´yvaj´ı
pˇr´ısluˇsn´e poˇzadavky ze zad´an´ı a mimo nˇe nenab´ızej´ı ˇz´adn´e nadbyteˇcn´e schopnosti. Nakonec
jsem se rozhodl pro kodek PCM2904, kter´y je nejjednoduˇsˇs´ım z kodek˚u pracuj´ıc´ıch v z´akladn´ım
proveden´ı pˇri nap´ajec´ım napˇet´ı kolem 5 V a umoˇzˇnuj´ıc´ıch poˇz´adat USB hostitele o proud aˇz
500 mA.
3.1.3 V´ysledn´a hardwarov´a architektura
V´ybˇer komponent jsem pˇrizp˚usobil vlastnostem kodeku PCM2904 [13]. Ten s´am o sobˇe
neposkytuje dostateˇcn´y v´ykon pro buzen´ı reproduktor˚u, ani nen´ı pˇrizp˚usoben pro pˇr´ım´e
pˇripojen´ı mikrofonu a nedok´aˇze tyto souˇc´asti nap´ajet. I pˇres doplnˇen´ı tˇechto relativnˇe
nez´avisl´ych prvk˚u z˚ustane zaˇr´ızen´ı pomˇernˇe jednoduch´e a snadno modifikovateln´e.
Pˇri v´ybˇeru dalˇs´ıch souˇc´astek jsem z˚ustal u firmy Texas Instruments, neboˇt nab´ız´ı dostateˇcn´y
sortiment zesilovaˇc˚u i stabiliz´ator˚u vˇcetnˇe dobr´e dokumentace a uk´azkov´ych zapojen´ı. Texas
Instruments m´a zastoupen´ı a s´ıˇt distributor˚u i v ˇCR a jej´ı produkty jsou u n´as jiˇz zabˇehl´e.
Pro experiment´aln´ı v´yvoj je pˇr´ızniv´e i to, ˇze nab´ız´ı bezplatn´e zasl´an´ı vzork˚u souˇc´astek s dobou
doruˇcen´ı dvou aˇz tˇr´ı t´ydn˚u.
Zaˇr´ızen´ı tedy bude obsahovat tyto ˇctyˇri z´akladn´ı komponenty (obr. 3.1):
• kodek PCM2904DB zajiˇsˇtuj´ıc´ı komunikaci pˇres USB, zpracov´an´ı zvukov´ych proud˚u a
obsluhu tlaˇc´ıtek,
• v´ystupn´ı zesilovaˇc TPA6011A4PWP dod´avaj´ıc´ı v´ykon reproduktoru a sluch´atk˚um,
• vstupn´ı zesilovaˇc OPA353UA pro buzen´ı A/D pˇrevodn´ıku kodeku mikrofonn´ım sign´alem,
26. 12 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I
• nastaviteln´y stabiliz´ator napˇet´ı REG103UA-A pro nap´ajen´ı obou zesilovaˇc˚u, mikrofonu a
ovl´adac´ıch prvk˚u.
Obr´azek 3.1: Blokov´e sch´ema audioportu
3.2 Pouˇzit´e komponenty
3.2.1 PCM2904DB - audio kodek s rozhran´ım USB
Je pops´an v datasheetu [13]. Jedn´a se o jednoˇcipov´y stereo audio kodek s USB rozhran´ım verze
1.1. Pracuje bez jak´ehokoli uˇzivatelsk´eho softwarov´eho k´odu a chov´a se jako v´yˇse zm´ınˇen´e USB
audio zaˇr´ızen´ı (zvukov´a ˇc´ast), resp. HID zaˇr´ızen´ı Consumer usage page (0x0C), Consumer Con-
trol (0x01) (tlaˇc´ıtkov´a ˇc´ast) [1]. PCM2904 obsahuje 16-bitov´e Delta-Sigma pˇrevodn´ıky (obr.
3.2). D/A pˇrevodn´ık pracuje pˇri vzorkovac´ı frekvenci 32, 44,1 nebo 48 kHz, A/D pˇrevodn´ık pˇri
8, 11,025, 16, 22,05, 32, 44,1 a 48 kHz. Regulace hlasitosti je zajiˇstˇena v rozsahu 0 aˇz -64 dB s
krokem 1 dB nez´avisle pro kaˇzd´y o obou kan´al˚u.
Zaˇr´ızen´ı HID m´a z pouzdra vyvedeno piny HID0, HID1 a HID2, jak je vidˇet na obr. 3.2 a
3.3. Stav tlaˇc´ıtek je zjiˇsˇtov´an a hl´aˇsen kaˇzd´ych 32 milisekund. ˇC´ıseln´e hodnoty scan-k´od˚u
pouˇziteln´e obluˇznou aplikac´ı jsou tvoˇreny jako tˇr´ıbitov´y bin´arn´ı k´od, kde HID0 m´a v´yznam
nejniˇzˇs´ıho a HID2 nejvyˇsˇs´ıho bitu, tedy dosahuj´ı hodnot 0 aˇz 7.
Po pˇripojen´ı k USB a enumeraci poˇz´ad´a kodek o nap´ajen´ı 500 mA, pot´e power manager zmˇenou
sign´alu SSPND do jedniˇcky povol´ı ˇcinnost podp˚urn´ych obvod˚u (obr. 3.3). Z´aroveˇn zaˇcne
vodiˇc SSPND slouˇzit jako zdroj napˇet´ı pro HID piny vybaven´e intern´ım pull-down rezistorem,
ovl´ad´an´ı tedy prob´ıh´a pˇripojov´an´ım kladn´eho napˇet´ı. Kodek pro svou potˇrebu d´ale obsahuje
integrovan´y regul´ator napˇet´ı 3,3 V, je si tedy schopen s´am zajistit nap´ajen´ı. Pro svou funkci
potˇrebuje pouze 12 MHz krystalov´y rezon´ator a nˇekolik rezistor˚u a blokovac´ıch kondenz´ator˚u.
Poˇzadovan´e nap´ajec´ı napˇet´ı je 4,35 aˇz 5,25 V a odbˇer proudu 56 mA. Fyzicky je kodek proveden
27. KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 13
Obr´azek 3.2: Blokov´e sch´ema PCM2904, pˇrevzato z [13]
jako 28-v´yvodov´a SMD souˇc´astka v pouzdru SSOP (DB) s rozteˇc´ı v´yvod˚u 0,65 mm. Tyto
vlastnosti jej po doplnˇen´ı o vstupn´ı a v´ystupn´ı zesilovaˇce pˇredurˇcuj´ı k pouˇzit´ı v audio portu.
3.2.2 TPA6011A4PWP - v´ykonov´y audio zesilovaˇc
Je pops´an v datasheetu [7]. TPA6011A4 je v´ystupn´ı v´ykonov´y stereo zesilovaˇc urˇcen´y k pouˇzit´ı
pˇredevˇs´ım v notebooc´ıch a kapesn´ıch poˇc´ıtaˇc´ıch. Do kaˇzd´eho kan´alu je schopn´y dod´avat v´ykon
2 W pˇri z´atˇeˇzi s impedanc´ı 3 ohmy. Umoˇzˇnuje pouˇzit´ı diferenˇcn´ıch nebo (pro n´as vhodnˇejˇs´ıch)
single-ended vstup˚u. Pomoc´ı multiplexor˚u lze volit mezi dvˇema shodn´ymi stereovstupy (pro
dva r˚uzn´e zdroje sign´alu) a dvˇema r˚uzn´ymi reˇzimy t´ehoˇz stereov´ystupu (jedn´ım pro sluch´atka,
druh´ym pro reproduktory), jak ukazuje blokov´e sch´ema 3.4.
Aktivn´ı je vˇzdy pr´avˇe jeden vstup voliten´y pinem HP/LINE, nula aktivuje vstupy RLINEIN
a LLINEIN, jedniˇcka pˇripoj´ı RHPIN a LHPIN. Pro audio port jsem pouˇzil prvn´ı moˇznost,
HP/LINE, RHPIN i LHPIN jsem pˇrizemnil a RLINEIN a LLINEIN jsem pˇres vazebn´ı kon-
28. 14 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I
Obr´azek 3.3: Z´akladn´ı zapojen´ı PCM2904, pˇrevzato z [13]
denz´ator 10M pˇripojil pˇr´ımo k v´ystupu kodeku. Nez´avisle na vstupu lze pinem SE/BTL v nule
pˇripojit pˇr´ıdavn´e zesilovaˇce na v´yvodech LOUT- a ROUT- a t´ım vybrat reˇzim BTL (reproduk-
tor je pak zapojen mezi ROUT+ a ROUT-, resp. LOUT+ a LOUT-). Jedniˇcka tyto zesilovaˇce
odpoj´ı a t´ım se pˇrejde do reˇzimu SE (sluch´atka pak jsou pˇres vazebn´ı kondenz´atory Cc pˇripojena
mezi ROUT+ resp. LOUT+ a zemi). Nastaven´ı SE/BTL je pˇri pouˇzit´ı sluch´atkov´eho konek-
toru se sp´ınaˇcem prov´adˇeno automaticky d´ıky odporov´emu dˇeliˇci, obr. 3.5. Takto jsem se
rozhodl zapojit i v´ystup audio portu, ovˇsem pro mono reproduktor jsem pouˇzil pouze lev´y
kan´al.
ˇR´ızen´ı hlasitosti zajiˇsˇtuje jednotka ”32-Step Volume Control” na obr. 3.4. Stejnosmˇern´ym
napˇet´ım na pinech VOLUME, SEDIFF a SEMAX se nastavuje hlasitost v´ystupu, rozd´ıl hlasi-
tosti reproduktor˚u a sluch´atek a maxim´aln´ı hlasitost sluch´atek. Ovl´adac´ı napˇet´ı se sm´ı pohy-
bovat v intervalu od nuly do aktu´aln´ıho nap´ajec´ıho napˇet´ı zesilovaˇce a je rovnomˇernˇe rozdˇeleno
na 32 krok˚u, z nichˇz kaˇzd´y mimo prvn´ıho odpov´ıd´a 2 dB zisku zesiovaˇce, kter´e se tak m˚uˇze
pohybovat v rozmez´ı -46 aˇz +14 dB. Prvn´ı interval od 0 znamen´a zisk -85 dB, tedy fakticky
nulovou hlasitost. V audio portu nen´ı tato regulace hlasitosti pro bˇeˇzn´y provoz potˇrebn´a, neboˇt
je jiˇz vyˇreˇsena kodekem. Proto jsem se rozhodl osadit pouze tˇri trimry 100k pro poˇc´ateˇcn´ı nas-
taven´ı.
Doporuˇcen´e nap´ajec´ı napˇet´ı je 4 aˇz 5,5 V. Pˇri pˇredpokl´adan´e z´atˇeˇzi 8 ohm a nap´ajec´ım napˇet´ı
4,5 V by zesilovaˇc mˇel pˇredat maxim´aln´ı v´ykon 1 W a pˇritom vyz´aˇrit nejv´yˇse 0,6 W, coˇz by mˇel
pokr´yt nap´ajec´ı proud 355 mA. Fyzicky je obvod proveden jako 20-v´yvodov´a SMD souˇc´astka
29. KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 15
Obr´azek 3.4: Blokov´e sch´ema TPA6011A4, pˇrevzato z [7]
v pouzdru HTSSOP (PWP) s rozteˇc´ı v´yvod˚u 0,65 mm.
3.2.3 OPA353UA - operaˇcn´ı zesilovaˇc
Je pops´an v datasheetu [6] a zobrazen na obr. 3.6 a firmou Texas Instruments je doporuˇcen´y
pro pˇripojov´an´ı vstup˚u ke kodek˚um ˇrady PCM290x [12]. Je to rail-to-rail operaˇcn´ı zesilovaˇc
urˇcen´y pro nasazen´ı v miniaturizovan´ych aplikac´ıch a vhodn´y pro buzen´ı A/D pˇrevodn´ık˚u.
Pouˇz´ıv´a nesymetrick´e nap´ajen´ı 2,7 aˇz 5,5 V a m´a klidov´y odbˇer proudu do 8 mA. Vzhledem k
pˇripojen´ı na vysokoimpedanˇcn´ı vstup kodeku nehroz´ı v´yrazn´y vzestup odbˇeru.
Vyr´ab´ı se jak samostatnˇe, tak ve v´ıce kopi´ıch ve spoleˇcn´em pouzdˇre. Zvolil jsem variantu
samostatn´eho OPA353UA v osmiv´yvodov´em SMD pouzdˇre SOIC (D) s rozteˇc´ı v´yvod˚u 1,27
mm. Na vstup jsem pˇripojil mono mikrofon a v´ystup jsem rozdˇelil na dvˇe ˇc´asti pˇriveden´e pˇres
blokovac´ı kondenz´atory do vstup˚u VINL a VINR kodeku.
30. 16 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I
Obr´azek 3.5: Z´akladn´ı zapojen´ı TPA6011A4, pˇrevzato z [7]
3.2.4 REG103UA-A - stabiliz´ator napˇet´ı
Je pops´an v datasheetu [9] a jeho zapojen´ı je naznaˇceno na obr. 3.7. Jedn´a se o stabiliz´ator
napˇet´ı o nastaviteln´e velikosti 1,295 aˇz 5,5 V, pochopitelnˇe shora d´ale omezen´eho nap´ajec´ım
napˇet´ım samotn´eho stabiliz´atoru. Zvolil jsem jej pro stabilizaci nap´ajec´ıho napˇet´ı obou ze-
silovaˇc˚u, neboˇt pouˇziteln´y pr˚unik povolen´ych napˇet´ı zesilovaˇc˚u a garantovan´eho napˇet´ı posky-
tovan´eho USB rozhran´ım (po odeˇcten´ı ´ubytku na stabiliz´atoru) je 4 aˇz 4,385 V.
Nastaven´ı v´ystupn´ıho napˇet´ı se prov´ad´ı volbou rezistor˚u R1 a R2 podle vzorce na obr. 3.7.
Pouˇzil jsem hodnoty R1 = 30k a R2 = 13k, coˇz odpov´ıd´a napˇet´ı 4,28 V leˇz´ıc´ımu ve v´yˇse
uveden´em intervalu, kter´e my mˇelo postaˇcovat s rezervou na obou stran´ach. Proudov´a rezerva je
tak´e zajiˇstˇena, i v extr´emn´ıch podm´ınk´ach m´a stabiliz´ator dodat minim´alnˇe 500 mA. Vyz´aˇren´e
teplo vlastn´ıho stabiliz´atoru pˇri napˇet´ı USB rozhran´ı 5 V je P = (Vin - Vout)*Iout = (5 V -
4,28 V)*(355 mA + 8 mA) = 0,261 W, coˇz odpov´ıd´a vlastn´ımu odbˇeru stabiliz´atoru 52 mA.
3.2.5 LSM-S20K - miniaturn´ı reproduktor
Pouˇzit´y reproduktor mus´ı pˇredevˇs´ım vˇernˇe reprodukovat ˇreˇc. Nen´ı tedy nutn´e snaˇzit se za
kaˇzdou cenu pokr´yt cel´e slyˇsiteln´e zvukov´e spektrum, ale staˇc´ı zajistit reprodukci pˇribliˇznˇe
31. KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 17
Obr´azek 3.6: Operaˇcn´ı zesilovaˇc OPA353, pˇrevzato z [6]
Obr´azek 3.7: Nastaviteln´y stabiliz´ator napˇet´ı REG103A, pˇrevzato z [9]
v rozmez´ı 125 Hz aˇz 8 kHz. Horn´ı hranice 8 kHz je z´aroveˇn maxim´aln´ı frekvenc´ı, kterou je
podle Nyquistova vzorkovac´ıho teor´emu teoreticky moˇzn´e zachytit pˇri vzorkovac´ı frekvenci 16
kHz, kter´a je pro audio port poˇzadov´ana. Impedance reproduktoru mus´ı odpov´ıdat n´arok˚um
zesilovaˇce. Z´aroveˇn mus´ı b´yt povolen´y v´ykon reproduktoru vˇetˇs´ı nebo roven v´ykonu zesilovaˇce,
neboˇt by jinak mohlo doj´ıt k jeho poˇskozen´ı. V neposledn´ı ˇradˇe by mˇel b´yt reproduktor kom-
paktn´ı a fyzicky proveden´y tak, aby jej bylo moˇzno do experiment´aln´ıho zaˇr´ızen´ı namontovat
bez potˇreby lepen´ı.
Rozhodl jsem se pouˇz´ıt miniaturn´ı reproduktor LSM-S20K [2] z obr. 3.8. Je to miniaturn´ı
reproduktor prim´arnˇe urˇcen´y pro pouˇzit´ı v notebooc´ıch, monitorech a vestavˇen´ych zaˇr´ızen´ıch.
Jeho z´akladn´ı parametry shrnuje tabulka 3.1. Je vidˇet, ˇze by mˇel poˇzadavk˚um audioportu plnˇe
vyhovovat.
3.2.6 Genius MIC-01A - stoj´ankov´y mikrofon
Stejnˇe jako reproduktor i mikrofon mus´ı vˇernˇe pˇren´aˇset hlas, coˇz vˇsechny mikrofony splˇnuj´ı.
Pro uˇzit´ı ve stoln´ıch mikrofonech jsou vhodn´e levn´e a kvalitn´ı elektretov´e mikrofony, prin-
cipi´alnˇe zaloˇzen´e na sn´ım´an´ı zmˇen napˇet´ı pˇri zmˇen´ach kapacity kondez´atoru tvoˇren´eho kmitaj´ıc´ı
membr´anou. Zmˇeny jsou velmi mal´e, proto je do mikrofonn´ıch vloˇzek vestavov´an zesilovaˇc s
tranzistory FET a mikrofon vyˇzaduje nap´ajen´ı (obr. 3.9). Nap´ajec´ı napˇet´ı Vs o velikosti 2,5
aˇz 10 V se pˇriv´ad´ı pˇres rezistor 2k2, mikrofon je pak od vstupu zesilovaˇce nutn´e oddˇelit kon-
denz´atorem 10M. Nap´ajec´ı proud je nejv´yˇse 1 mA.
32. 18 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I
Obr´azek 3.8: Reproduktor LSM-S20K, pˇrevzato z [2]
Typ Jednotka LSM-S20K
Impedance Ω 8
Jmenovit´y v´ykon W 1 ± 15%
Maxim´aln´ı v´ykon W 2
Rezonanˇcn´ı frekvence Hz 500 ± 20%
Akustick´y tlak dB 83 ± 3
Frekvenˇcn´ı p´asmo Hz Fo ∼ 20000
Tabulka 3.1: Parametry reproduktoru LSM-S20K
Z d˚uvodu jednoduch´e mont´aˇze jsem zvolil hotov´y stoj´ankov´y mikrofon Genius MIC-01A. Jeho
frekvenˇcn´ı rozsah je 100Hz aˇz 11kHz, v´ystupn´ı impedance 2 kΩ.
3.2.7 Sluch´atka
Pˇredpokl´ad´a se pouˇzit´ı bˇeˇzn´ych sluch´atek k osobn´ımu poˇc´ıtaˇci o impedanci 32 Ω, pro kter´e je
pˇrizp˚usoben zesilovaˇc. Hlasitost je moˇzno upravit piny SEDIFF se SEMAX zesilovaˇce.
3.3 Ovˇeˇren´ı dostateˇcnosti nap´ajen´ı
Souhrnn´y odbˇer proudu cel´eho zaˇr´ızen´ı je 56 mA (kodek) + 355 mA (v´ystupn´ı zesilovaˇc) + 8
mA (vstupn´ı zesilovaˇc) + 52 mA (stabiliz´ator) = 471 mA pˇri souˇcasn´em pln´em zat´ıˇzen´ı vˇsech
komponent. Mˇela by tedy st´ale b´yt k dispozici urˇcit´a rezerva pro ovl´adac´ı prvky, nap´ajen´ı
mikrofonu (dohromady jednotky mA) a neoˇcek´avan´e pˇr´ıpady. Audio port nap´ajen´y z USB je
tedy pomoc´ı tˇechto komponent realizovateln´y.
3.4 Softwarov´e ˇreˇsen´ı
V t´eto ˇc´asti rozeberu softwarovou obsluhu zaˇr´ızen´ı pod MS Windows XP, hlavn´ı d˚uraz bude
kladen zejm´ena na raw input API.
33. KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 19
Obr´azek 3.9: Nap´ajen´ı elektretov´eho mikrofonu, pˇrevzato z [3]
3.4.1 Audio
Jak jiˇz bylo ˇreˇceno, kodek PCM2904 je standardn´ım USB audio zaˇr´ızen´ım, takˇze jej lze pouˇz´ıt
jako bˇeˇznou zvukovou kartu. Pˇri pˇripojen´ı k poˇc´ıtaˇci se automaticky rozpozn´a, doinstaluj´ı se
pro nˇej ovladaˇce a nahrad´ı se j´ım dosavadn´ı aktivn´ı zvukov´e zaˇr´ızen´ı. Regulace v´ystupn´ı hla-
sitosti se prov´ad´ı klasicky, tj. programem ”Ovl´ad´an´ı hlasitosti” na liˇstˇe Windows. Nastaven´ı
hlasitosti mikrofonu nen´ı sofwarovˇe provediteln´e. Pˇri odpojen´ı kodeku se okamˇzitˇe obnov´ı nas-
taven´ı a funkˇcnost p˚uvodn´ıho zaˇr´ızen´ı.
Rozpozn´avaˇc a ˇreˇcov´y syntenz´ator Charlie VoiceXML browseru pˇri bˇeˇzn´em nastaven´ı pracuje
s pr´avˇe aktivn´ım zaˇr´ızen´ım, ˇz´adn´e ´upravy ani popis dalˇs´ıch detail˚u proto nen´ı potˇrebn´y.
3.4.2 Tlaˇc´ıtka
Tlaˇc´ıtka na pinech HID0 aˇz HID2 jsou ve Windows defaultnˇe mapov´ana jako ovl´ad´an´ı hlasi-
tosti, viz tab. 3.2. M´ym ´ukolem tedy bylo zjistit, jak lze obsluˇzn´ym programem z´ıskat infor-
mace o stavech a zmˇen´ach stav˚u tˇechto tlaˇc´ıtek. Ideou bylo odchyt´avat vlastn´ı aplikac´ı vˇsechny
tlaˇc´ıtkov´e ud´alosti a reagovat na nˇe zas´ıl´an´ım odpov´ıdaj´ıch pˇr´ıkaz˚u VoiceXML prohl´ıˇzeˇci. Pr´aci
na probl´emu jsem zah´ajil vyhled´av´an´ım podklad˚u v MSDN Library [4], kde jsem se na do-
poruˇcen´ı vedouc´ıho pr´ace zamˇeˇril na uˇzivatelsk´y vstup podle raw input modelu.
3.4.3 Raw Input Model
Raw Input Model pouˇz´ıvan´y MS Windows XP je urˇcen ke snadn´e obsluze zaˇr´ızen´ı uˇzivatelsk´eho
rozhran´ı zaˇr´ızen´ı HID (Human Interface Device). Pˇredpokl´ad´a pouˇzit´ı Windows API. Proti
tradiˇcn´ımu pˇr´ıstupu by mˇel m´ıt pro autora aplikac´ı tyto v´yhody [4]:
• aplikace nemus´ı detekovat ani otev´ırat zaˇr´ızen´ı,
• aplikace z´ısk´av´a data pˇr´ımo ze zaˇr´ızen´ı (nikoli virtu´aln´ı k´ody) a zpracov´av´a je podle sv´ych
potˇreb,
• aplikace m˚uˇze rozliˇsit v´ıce vstupn´ıch zdroj˚u, i kdyˇz jsou stejn´eho typu (napˇr. v´ıce r˚uzn´ych
kl´avesnic),
• aplikace ˇr´ıd´ı datov´y provoz v´ybˇerem dat buˇd z cel´e skupiny zaˇr´ızen´ı, nebo jen z vybran´ych
typ˚u,
• zaˇr´ızen´ı mohou b´yt pouˇzita okamˇzitˇe po uveden´ı na trh, nen´ı tˇreba ˇcekat na vytvoˇren´ı
specifick´ych typ˚u zpr´av a jejich implementaci do operaˇcn´ıho syst´emu.
34. 20 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I
Pin Usage ID Scan-k´od Funkce
HID0 0xE2 1 Mute
HID1 0xE9 2 Volume up
HID2 0xEA 4 Volume down
Tabulka 3.2: Popis pin˚u HID0 aˇz HID2 kodeku PCM2904
Raw input model tedy pˇrin´aˇs´ı moˇznost implementovat zaˇr´ızen´ı zp˚usobem ”vyrob hardware -
pˇripoj k PC - oˇsetˇri zpr´avy - zaˇcni prod´avat”. Tento pˇr´ıstup je pro n´as vhodn´y, proto jsem jej
pouˇzil. Obsluˇzn´y program jsem psal v jazyce C++.
3.4.3.1 Registrace raw input zaˇr´ızen´ı
Aby mohla aplikace pouˇz´ıvat raw input a odchyt´avat ud´alosti, mus´ı si nejprve obsluhovan´e
zaˇr´ızen´ı zaregistrovat. K registraci zaˇr´ızen´ı je nutn´e vytvoˇrit struktury typu RAWINPUT-
DEVICE a uloˇzit do nich pole TLC (top level collection) pro poˇzadovan´a zaˇr´ızen´ı, kter´a se
skl´adaj´ı z identifik´ator˚u UsagePage a Usage tˇechto zaˇr´ızen´ı. D´ale je moˇzn´e nastavit urˇcit´e
pˇr´ıznaky dwFlags, nˇekter´e z nich jsou vˇsak pˇr´ıpustn´e jen pro kl´avesnice a polohovac´ı zaˇr´ızen´ı.
Pak se provede vlastn´ı registrace zavol´an´ım RegisterRawInputDevices().
Tento k´od prov´ad´ı v obsluˇzn´em programu ”vcmlclient” registraci tlaˇc´ıtkov´e ˇc´asti audio portu:
RAWINPUTDEVICE Rid;
// UsagePage kodeku je Consumer Page (0x0C)
Rid.usUsagePage = 0x0C;
// Usage kodeku je Consumer Control (0x01)
Rid.usUsage = 0x01;
// S t´ımto pˇr´ıznakem bude aplikace pˇrij´ımat zpr´avy i na pozad´ı
Rid.dwFlags = RIDEV_INPUTSINK;
// Zpr´avy bude obluhovat handler hlavn´ıho okna
Rid.hwndTarget = hwndMainWindow;
// Pokud se registrace nepodaˇr´ı, nahl´as´ı se chyba
if (RegisterRawInputDevices(&Rid, 1, sizeof(Rid)) == FALSE) SignalizeError();
D˚uleˇzit´y je fakt, ˇze lze zaregistrovat i zaˇr´ızen´ı, kter´e nen´ı aktu´alnˇe k poˇc´ıtaˇci pˇripojeno - stane
se pouze to, ˇze od nˇej nebudou pˇrich´azet ˇz´adn´e zpr´avy. Po pˇripojen´ı zaˇr´ızen´ı zaˇcne Windows
Manager automaticky raw input pos´ılat.
Seznam raw input zaˇr´ızen´ı aktu´alnˇe pˇripojen´ych k poˇc´ıtaˇci lze z´ıskat zavol´an´ım GetRawInput-
DeviceList(). Za pouˇzit´ı hDevice z tohoto vol´an´ı m˚uˇze aplikace vol´an´ım GetRawInputDevice-
Info() zjistit o dan´em zaˇr´ızen´ı detaily.
3.4.3.2 ˇCten´ı dat ze zaˇr´ızen´ı
Aplikace pˇrij´ım´a raw input z kaˇzd´eho zaregistrovan´eho zaˇr´ızen´ı. Pˇri pˇrijet´ı vstupu je do fronty
zpr´av aplikace pˇrid´ana zpr´ava WM INPUT a frontˇe se nastav´ı pˇr´ıznak QS RAWINPUT. Raw
35. KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 21
input nijak nedefinuje v´yznam dat, jejich interpretace je proto plnˇe v naˇs´ı moci. Data se mohou
ˇc´ıst dvˇema zp˚usoby: buˇd standardnˇe (bez bufferov´an´ı), nebo za pouˇzit´ı bufferu.
Bezbufferov´a metoda znamen´a, ˇze se ˇctou data nejv´yˇse z jedn´e RAWINPUT struktury. Ap-
likace zavol´a GetMessage() pro z´ısk´an´ı WM INPUT zpr´avy. Pak zavol´a GetRawInputData()
za pouˇzit´ı handleru obsaˇzen´eho ve zpr´avˇe. Bufferov´a metoda naopak ˇcte najednou cel´e pole
RAWINPUT struktur vol´an´ım GetRawInputBuffer(). To b´yv´a v´yhodn´e pro zaˇr´ızen´ı, kter´a pro-
dukuj´ı velk´a mnoˇzstv´ı dat. Pole se pak proch´az´ı pomoc´ı makra NEXTRAWINPUTBLOCK.
Pro potˇreby audio portu je tedy postaˇcuj´ıc´ı metoda bezbufferov´a, pouˇzit´a ve vxmlclientovi tak,
ˇze se prvn´ım vol´an´ım GetRawInputData() zjist´ı pouze velikost dat. Pak se vytvoˇr´ı odpov´ıdaj´ıc´ı
pole, do kter´eho se pˇri druh´em vol´an´ı data uloˇz´ı. Nakonec se sjednot´ı typy ukazatel˚u, jak
ukazuje k´od:
// Promˇenn´a pro uloˇzen´ı velikosti
UINT cbSize;
GetRawInputData(
// Handler z´ıskan´y ze zpr´avy WM_INPUT
(HRAWINPUT) hRawInput,
// Pˇr´ıznak RID_INPUT ˇcte data, RID_HEADER hlaviˇcku
(UINT) RID_INPUT,
// Ukazatel na ˇcten´a data, pokud je NULL, je do &cbSize uloˇzena velikost dat
(LPVOID) NULL,
// Velikost dat v bytech
(PUINT) &cbSize,
// Velikost hlaviˇcky
(UINT) sizeof(RAWINPUTHEADER));
LPBYTE lpbBuffer = new BYTE[cbSize];
GetRawInputData(
(HRAWINPUT) hRawInput,
(UINT) RID_INPUT,
(LPVOID) lpbBuffer,
(PUINT) &cbSize,
(UINT) sizeof(RAWINPUTHEADER));
RAWINPUT * pRawInput = (RAWINPUT *) lpbBuffer;
Scan-k´od tlaˇc´ıtkov´eho rozhran´ı ze z´ısk´a ze struktury pRawInput (typu RAWINPUT) z jej´ı pod-
struktury hid (typu RAWHID), kter´a m´a promˇennou bRawData (typu BYTE). Experiment´alnˇe
jsem zjistil, ˇze hodnota scan-k´odu pouˇzit´eho kodeku je uloˇzena v prvn´ım bytu:
USHORT usScanCode;
usScanCode = pRawInput->data.hid.bRawData[1];
36. 22 KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I
T´ım jsem z´ıskal ˇc´ıselnou hodnotu, kterou jsem mohl pˇr´ımo pouˇz´ıt pro vˇetven´ı programu.
Podobnˇe se d´a z´ıskat poˇcet HID vstup˚u v bRawData i velikost kaˇzd´eho vstupu, jak je pops´ano
v [4].
3.4.4 Ovl´ad´an´ı VoiceXML browseru
Jak jiˇz bylo ˇreˇceno v kapitole o VoiceXML browseru, prohl´ıˇzeˇc je prakticky nez´avisl´a aplikace a
jedin´a komunikace mezi n´ım a moj´ı zkuˇsebn´ı klientskou aplikac´ı vxmlclient se m˚uˇze odehr´avat
pˇres socketov´e TCP spojen´ı. Jeho ˇr´ızen´ı tedy spoˇc´ıv´a v generov´an´ı vhodn´ych XVB (XML
Voice Browser) pˇr´ıkaz˚u v z´avislosti na stisc´ıch tlaˇc´ıtek audio portu, o audio kan´aly se starat
nemus´ıme (obr. 3.10).
Zkuˇsebn´ı vxmlclient nevyˇzaduje zpˇetnou vazbu od browseru, a nen´ı tady tˇreba pˇrij´ımat
odpovˇedi, kter´e by pˇrinesly mnoh´e komplikace. Komplikac´ı by byla zejm´ena nutnost zpra-
cov´avat pˇr´ıchoz´ı odpovˇedi prostˇrednictv´ım lexik´aln´ıho a syntaktick´eho analyz´atoru, coˇz by
vyˇzadovalo dokonalou znalost syntaxe cel´e mnoˇziny XVB pˇr´ıkaz˚u a odpovˇed´ı, kter´a se nadto
st´ale mˇen´ı. Pro v´yvojov´e a diagnostick´e ´uˇcely se lze spolehnout na konzolov´e v´ystupy browseru.
Pˇri testovac´ım provozu by chybn´e ˇci nadbyteˇcn´e zasl´an´ı pˇr´ıkazu nemˇelo zp˚usobit probl´emy,
neboˇt browser se chov´a jako stavov´y automat a pokud dostane neoˇcek´avan´y pˇr´ıkaz, pouze
ohl´as´ı chybu a jinak na pˇr´ıkaz nereaguje. Pokraˇcuje v ˇcek´an´ı na platn´y pˇr´ıkaz.
3.4.5 Sekvence pˇr´ıkaz˚u zas´ılan´ych vxmlclientem
Vxmlclient by mˇel vykon´avat tuto sekvenci operac´ı:
• spustit na pozad´ı Charlie VoiceXML browser,
• nav´azat TCP spojen´ı,
• poslat pˇr´ıkaz ”init” pro inicializaci browseru a ”load” pro naˇcten´ı VXML dokumentu,
• ˇcekat na ud´alosti od tlaˇc´ıtek,
• pˇri stisku tlaˇc´ıtka zaslat posloupnost pˇr´ıkaz˚u ”cancel”, ”exec” a ”listen” s vhodn´ymi
parametry, kter´a nejprve ukonˇc´ı potenci´aln´ı prov´adˇen´ı pˇredchoz´ıch formul´aˇr˚u VXML
dokumentu, pak skoˇc´ı na formul´aˇr dan´y ˇc´ıslem tlaˇc´ıtka a nakonec spust´ı z´aznam hlasu,
• pˇri uvolnˇen´ı tlaˇc´ıtka zaslat ”listen” s parametrem pro ukonˇcen´ı z´aznamu hlasu,
• pˇred sv´ym ukonˇcen´ım zavˇr´ıt TCP spojen´ı a ukonˇcit VoiceXML browser.
37. KAPITOLA 3. ANAL ´YZA A N ´AVRH ˇREˇSEN´I 23
Obr´azek 3.10: Blokov´e sch´ema komunikace
3.5 Shrnut´ı n´avrhov´e ˇc´asti
Souˇc´asti audiosyst´emu realizovan´eho pomoc´ı v´yˇse uveden´ych prostˇredk˚u budou:
• audio port,
• vxmlclient,
• Charlie VoiceXML browser,
• VXML dokument.
Pomoc´ı nich bude zajiˇstˇena cel´a poˇzadovan´a funkˇcnost. Propojen´ı bude provedeno podle
obr´azku 3.10.
39. KAPITOLA 4. REALIZACE 25
4 Realizace
4.1 Hardwarov´a realizace
Po v´ybˇeru z´akladn´ıch komponent jsem vybral souˇc´astky podle doporuˇcen´ı v datasheetech [13],
[7], [6] a [9]. Pˇri zapojov´an´ı mikrofonn´ıho zesilovaˇce jsem pouˇzil ˇc´ast zapojen´ı z desky DEM-
PCM2900/2902 EVM [12]. Snaˇzil jsem se pouˇz´ıvat pˇredevˇs´ım SMD souˇc´astky. Pro pˇripojen´ı
k USB jsem pouˇzil konektor typu B, pro sluch´atka 3,5 mm stereo konektor se sp´ınaˇci a jako
tlaˇc´ıtka typ P-B 1720A, vˇsechny tyto ˇc´asti v proveden´ı pro zap´ajen´ı do desky ploˇsn´eho spoje.
Seznam souˇc´astek i jejich pˇresn´a oznaˇcen´ı naleznete v pˇr´ıloze C.1.
4.1.1 Sch´ema zapojen´ı
K n´avrhu jsem pouˇzil software Eagle firmy CadSoft, verzi 4.16r2 pro Windows, v bezplatn´em
proveden´ı Light Edition (nab´ız´ı plnou funkˇcnost, ale m´a omezenou velikost ploˇsn´eho spoje a
podporuje pouze jednovrstv´e a dvouvrstv´e desky). V´ysledn´e sch´ema zapojen´ı je v pˇr´ıloze z
rozmˇerov´ych d˚uvod˚u rozdˇeleno na dvˇe ˇc´asti, prvn´ı zachycuje kodek, stabiliz´ator a vstupn´ı ze-
silovaˇc (A.1), druh´a obvod v´ystupn´ıho zesilovaˇce (B.1). Kompletn´ı sch´ema a upraven´e knihovny
souˇc´astkov´ych znaˇcek a pouzder jsou na pˇriloˇzen´em CD.
4.1.2 Ploˇsn´y spoj a mechanick´e ˇreˇsen´ı
Nejprve jsem musel nakreslit pouzdro zesilovaˇce, kter´e chybˇelo v knihovnˇe, a na vˇsechna pouz-
dra pak namapovat sch´ematick´e znaˇcky. Ploˇsn´y spoj jsem navrhoval tak, aby se veˇsel do
pˇr´ıstrojov´e krabiˇcky U-KP44 o vnˇejˇs´ıch rozmˇerech 90 x 22 x 65 mm. Realizoval jsem jej ve
dvou vrstv´ach na desce o rozmˇerech 67 x 57,5 mm spoji o ˇs´ıˇrce 10 mil, neboˇt bl´ızkost ploˇsek
kodeku a zesilovaˇce nikde nedovolovala ˇsirˇs´ı spoje. Deska je navrˇzena podle pokyn˚u v [16] a
[15]. Ilustraˇcn´ı negativ desky je na obr. 4.1, n´avrh z Eaglu na CD.
Zaˇr´ızen´ı jsem navrhoval tak, aby vˇsechny souˇc´asti mimo mikrofon a reproduktor byly pˇrip´ajeny
pˇr´ımo k desce ploˇsn´eho spoje. USB konektor je vyveden na zadn´ı stranu krabiˇcky a sluch´atkov´y
konektor na pˇredn´ı stranu, jejich otvory jsou proveden´e jako proˇrezy ve v´ıku (obr. 4.2). Na
tlaˇc´ıtka jsou pˇrilepeny knofl´ıky soustruˇzen´e ze silonu proch´azej´ıc´ı otvory na svrchn´ı stranˇe.
Cel´y ploˇsn´y spoj je pˇres distanˇcn´ı sloupky pˇripevnˇen zapuˇstˇen´ymi ˇsrouby k odn´ımateln´emu dnu
krabiˇcky. Stoj´ankov´y mikrofon je pˇripevnˇen tˇrmenem a dvˇema ˇsrouby k prav´e stˇenˇe krabiˇcky,
jeho osa je sklonˇen´a pˇribliˇznˇe 10 stupˇn˚u od svislice smˇerem ke stˇredu krabiˇcky. Pod´el t´eto osy
je tak´e moˇzn´e mikrofon nat´aˇcet. D´ale bylo z estetick´ych d˚uvod˚u nutn´e odˇr´ıznout od krabiˇcky
postrann´ı ´uchyty. Celkovou vnitˇrn´ı stavbu zachycuje obr. 4.3.
Reproduktor je zevnitˇr pˇriˇsroubov´an pod dˇerovanou svrchn´ı stranu krabiˇcky. P˚uvodn´ı tˇesn´e
uchycen´ı se neosvˇedˇcilo, neboˇt membr´ana kolidovala s krabiˇckou a zvuk byl tlumen´y. Po
podloˇzen´ı reproduktoru distanˇcn´ımi sloupky se kvalita a hlasitost reprodukce v´yraznˇe zv´yˇsila.
Veˇsker´e ˇsrouby na povrchu v´ıka jsou mosazn´e s p˚ulkulatou hlavou (obr. 4.4), protoˇze stˇena
v´ıka mi pro pouˇzit´ı zapuˇstˇen´ych ˇsroub˚u nepˇriˇsla dostateˇcnˇe siln´a.
4.1.3 Nutn´e zmˇeny hardwaru proti n´avrhu
Bˇehem tvorby audio portu jsem provedl nˇekolik zmˇen proti p˚uvodn´ımu n´avrhu. Tyto zmˇeny
nejsou zachyceny na sch´ematu ani na n´avrhu ploˇsn´eho spoje, jsou vˇsak nutn´e pro dosaˇzen´ı
funkˇcnosti zaˇr´ızen´ı.
40. 26 KAPITOLA 4. REALIZACE
Obr´azek 4.1: Ilustraˇcn´ı negativ desky
4.1.3.1 Otoˇcen´ı tlaˇc´ıtek
Po nakoupen´ı tlaˇc´ıtek jsem zjistil, ˇze jsou napevno propojeny do dvojice vˇzdy jejich vzd´alenˇejˇs´ı
v´yvody (a ne bliˇzˇs´ı, jak jsem se chybnˇe domn´ıval). Proto jsem vˇsechna tlaˇc´ıtka musel otoˇcit o
90 stupˇn˚u a mechanicky pˇrizp˚usobit jejich v´yvody, aby ˇsly zasunout do otvor˚u desky.
4.1.3.2 ´Uprava sluch´atkov´eho konektoru
Pˇri n´avrhu ploˇsn´eho spoje jsem neovˇeˇril, zda jsou u n´as dostupn´e sluch´atkov´e 3,5 mm konektory
s dr´atˇen´ymi v´yvody. Proto jsem musel upravit konektor s ploch´ymi v´yvody jejich sestˇriˇzen´ım
na takovou velikost, aby proˇsly kruhov´ymi otvory v desce.
4.1.3.3 Diodov´y kod´er
V pr˚ubˇehu softwarov´e implementace vyˇslo najevo, ˇze v MS Windows pravdˇepodobnˇe nen´ı moˇzn´e
zabr´anit defaultn´ı interpretaci HID pin˚u kodeku. Experiment´alnˇe jsem zjistil, ˇze ze scan-k´od˚u
0 aˇz 7 maj´ı pouze k´ody 1, 2, 4 a 7 viditeln´y efekt (po ˇradˇe mute, volume increment, volume
decrement, mute). K´ody 0, 3, 5 a 6 jsou nevyuˇzit´e.
Proto jsem se rozhodl upravit zapojen´ı tak, aby se pˇri stisku kaˇzd´eho z tlaˇc´ıtek aktivovala vˇzdy
odliˇsn´a dvojice HID pin˚u a pˇri uvolnˇen´ı vˇsch tlaˇc´ıtek z˚ustaly HID piny neaktivn´ı. Toho jsem
dos´ahl zapojen´ım ˇsesti diod 1N4148 do jednoduch´eho kod´eru, kter´y mˇen´ı k´od ”1 ze 3” na k´od
”2 ze 3” (obr. 4.5). Vedlejˇs´ı efekt tohoto zapojen´ı je, ˇze pˇri souˇcasn´em stisku v´ıce tlaˇc´ıtek se
vygeneruje k´od 7, kter´y aktivuje/deaktivuje funkci mute.
41. KAPITOLA 4. REALIZACE 27
Obr´azek 4.2: V´ıko audio portu
4.1.3.4 Zv´yˇsen´ı zes´ılen´ı operaˇcn´ıho zesilovaˇce
Pˇri prvn´ıch pokusech o z´aznam zvuku se uk´azalo, ˇze hlasitost nahr´av´an´ı je ponˇekud n´ızk´a.
Proto jsem rezistor R14 mezi mikrofonem a vstupn´ım zesilovaˇcem nahradil propojkou a hlasitost
se t´ım zv´yˇsila na pˇrijatelnou ´uroveˇn.
4.2 Softwarov´a realizace
Obsluˇzn´y program jsem se rozhodl implementovat v jazyce C++ v prostˇred´ı MS Visual Studio
2008. Psal jsem jej jako okenn´ı aplikaci pro MS Windows XP za pouˇzit´ı WinAPI. Zdrojov´y
k´od je na pˇriloˇzen´em CD, popis ovl´ad´an´ı v kapitole 5.
Hlavn´ı tˇr´ıdou programu je WinMain, kter´a vytvoˇr´ı hlavn´ı okno, jeho tlaˇc´ıtka a nˇekolik pol´ı edit
a label. Spust´ı registraci HID zaˇr´ızen´ı RegisterInput() a smyˇcku pˇrekladu a rozdˇelov´an´ı zpr´av.
4.2.1 Zpracov´an´ı zpr´av
Zpr´avy zpracov´av´a procedura WindowProcedure(). Zpr´ava WM COMMAND odpov´ıd´a vˇsem
ud´alostem tlaˇc´ıtek. Tlaˇc´ıtko ”Connect” zavol´a PrepareServer(), ˇc´ımˇz spust´ı VoiceXML Browser
a provede pˇripojen´ı. Pˇri stisku ”Load and test” vytvoˇr´ı ze zadan´e adresy dokumentu load pˇr´ıkaz
a pomoc´ı SendCommand() jej odeˇsle. Stiskem ”Exit” se na hlavn´ı okno zavol´a DestroyWin-
dow().
Zpr´ava WM INPUT znamen´a, ˇze bylo stisknuto nˇekter´e z tlaˇc´ıtek. Vyvol´a spuˇstˇen´ı procedury
GetHIDData(), kter´a nahraje do promˇenn´e usScanCode k´od tlaˇc´ıtek. Na to se zavol´a proce-
dura ServeButtons(), kter´a zajist´ı zasl´an´ı pˇr´ıkaz˚u prohl´ıˇzeˇci.
Na zpr´avu WM Destroy se reaguje zavˇren´ım spojen´ı se serverem, ukonˇcen´ım serveru a koncem
samotn´eho klienta.
4.2.2 Potˇrebn´e hlaviˇckov´e soubory a knihovny
Vxmlclient vyˇzaduje zahrnout do sekce include hlaviˇckov´e soubory windows.h a altstr.h.
Pro ´uspˇeˇsnou kompilaci bylo d´ale nutn´e pˇridat mezi parametry linkeru socketovou knihovnu
42. 28 KAPITOLA 4. REALIZACE
Obr´azek 4.3: Vnitˇrn´ı uspoˇr´ad´an´ı audio portu
WSOCK32.lib. Aby bylo moˇzn´e spouˇstˇet Vxmlclienta i na poˇc´ıtaˇc´ıch bez instalovan´eho Visual
Studia, staticky jsem pˇrilinkoval potˇrebnou knihovnu msvcr90d.dll.
4.3 Doporuˇcen´e ´upravy a rozˇs´ıˇren´ı
Zmˇeny d˚uleˇzit´e pro funkci zaˇr´ızen´ı jsem zm´ınil v´yˇse. Zde se zamˇeˇr´ım na doporuˇcen´e ´upravy
pro zajiˇstˇen´ı lepˇs´ı pouˇzitelnosti zaˇr´ızen´ı.
4.3.1 Hardwarov´e a mechanick´e ´upravy
Jako prvn´ı ´upravu doporuˇcuji prov´est zmˇenu sch´ematu zapojen´ı a n´aslednˇe redesign desky
ploˇsn´eho spoje v souladu s podsekc´ı ”Nutn´e zmˇeny hardwaru proti n´avrhu”. Z´aroveˇn by bylo
vhodn´e pˇrem´ıstit tlaˇc´ıtka do vˇetˇs´ı vzd´alenosti od okraje v´ıka a zvˇetˇsit jejich pr˚umˇer.
Zadavatel d´ale navrhl pˇridat LED signalizuj´ıc´ı stisk tlaˇc´ıtka a konektor pro pˇripojen´ı extern´ıho
mikrofonu (tyto dvˇe zmˇeny budou realizov´any u druh´eho vzorku). Alternativnˇe by bylo moˇzn´e
vestavˇet cel´y port do pouzdra ruˇcn´ıho mikrofonu a hlasov´e funkce i tlaˇc´ıtka pak efektnˇe pouˇz´ıvat
napˇr. pˇri prezentac´ıch.
4.3.2 Softwarov´e rozˇs´ıˇren´ı
Vhodn´ym rozˇs´ıˇren´ım vxmlclienta by bylo umoˇznˇen´ı pˇr´ıjmu zpˇetn´e vazby od prohl´ıˇzeˇce, nejl´epe
pomoc´ı ”SocketIO Charlie extension”. Pak by bylo moˇzn´e zadat do VXML dokumentu jm´ena
program˚u nebo maker a jejich parametr˚u, kter´e by pak vxmlclient spustil (napˇr. Skype dialer,
diktafon, ovl´ad´an´ı dom´ac´ı elektroniky).
Klient i server by mohly bˇeˇzet podobnˇe jako sluˇzba na pozad´ı. Zaj´ımavou ´upravou by byla i
aktivace zvukov´eho zaˇr´ızen´ı v audio portu pouze pˇri stisku tlaˇc´ıtka, tj. bˇeˇznˇe by se pouˇz´ıvala
43. KAPITOLA 4. REALIZACE 29
Obr´azek 4.4: Kompletn´ı audio port
Obr´azek 4.5: Diodov´y kod´er
intern´ı zvukov´a karta poˇc´ıtaˇce a jen pro zad´av´an´ı pˇr´ıkaz˚u by se pouˇzil port. Tyto ´upravy vˇsak
sahaj´ı mimo r´amec t´eto pr´ace.
45. KAPITOLA 5. POUˇZIT´I 31
5 Pouˇzit´ı
5.1 Pouˇzit´ı audio portu
5.1.1 Pˇripojen´ı hardwaru
Audio port pˇripojte USB kabelem s konektorem ”B” k poˇc´ıtaˇci a poˇckejte na enumeraci zaˇr´ızen´ı
a automatick´e nahr´an´ı ovladaˇc˚u. Z reproduktoru se ozve slab´e zabzuˇcen´ı signalizuj´ıc´ı ´uspˇeˇsn´e
pˇripojen´ı. Od t´eto chv´ıle je aktivn´ı zvukovou kartou pr´avˇe audio port. Ovˇeˇrte, zda je zapnut´y
zvuk a spr´avnˇe nastavena hlasitost portu. Zvuk lze kdykoli vypnout nebo zapnout souˇcasn´ym
stiskem dvou nebo tˇr´ı tlaˇc´ıtek portu.
5.1.2 Spuˇstˇen´ı klienta a pˇripojen´ı k serveru
Spusˇtte klienta vxmlclient, do pole ”VoiceXML browser address” zadejte um´ıstˇen´ı browseru a
kliknˇete na tlaˇc´ıtko ”Connect” (obr. 3.10). T´ım dojde ke spuˇstˇen´ı browseru na pozad´ı a pokusu
o nav´az´an´ı TCP spojen´ı. Nepovede-li se pˇripojen´ı a pˇritom je adresa spr´avn´a, je pravdˇepodobnˇe
nutn´e povolit ve firewallu pˇripojen´ı z localhosta na port 7777. Po ´uspˇeˇsn´em pˇripojen´ı se pole i
tlaˇc´ıtko znepˇr´ıstupn´ı a titulek tlaˇc´ıtka se zmˇen´ı na ”Connected”.
Obr´azek 5.1: Okno vxmlclienta
5.1.3 Naˇcten´ı VXML dokumentu
Do pole ”VoiceXML document address” zadejte um´ıstˇen´ı dokumentu (na doprovodn´em CD
je pˇripraven testovac´ı dokument organizer.vxml) a kliknˇete na tlaˇc´ıtko ”Load and test”. V
pˇr´ıpadˇe ´uspˇeˇsn´eho naˇcten´ı pˇrehraje port ozn´amen´ı ”loaded” a je pˇripraven k pouˇzit´ı.
5.1.4 Zad´av´an´ı pˇr´ıkaz˚u pro organiz´er
Testovac´ı dokument organizer.vxml (viz n´ıˇze) obsahuje ˇctyˇri formul´aˇre. Formul´aˇr s ID ”loaded”
slouˇz´ı pouze k ovˇeˇren´ı ´uspˇeˇsn´eho nahr´an´ı. Pˇriˇrazen´ı ostatn´ıch formul´aˇr˚u ukazuje tabulka 5.1.
Stisknˇete a drˇzte vybran´e tlaˇc´ıtko a vyslovte jednu z voleb. Uvolnˇete tlaˇc´ıtko a poˇckejte na
odpovˇeˇd.
Kdykoli je moˇzn´e zadat dalˇs´ı pˇr´ıkaz, a to i pˇred dokonˇcen´ım st´avaj´ıc´ıho. Pokud rozpozn´avaˇc
nedostane srozumiteln´y pˇr´ıkaz, zaˇcne v´as opakovanˇe vyz´yvat k nov´emu zad´an´ı. V´yzvy lze
46. 32 KAPITOLA 5. POUˇZIT´I
Tlaˇc´ıtko Na spoji Scan-k´od Formul´aˇr Funkce Moˇzn´e volby
Lev´e SW3 6 form1 Adres´aˇr Alice, Bob, Eve
Stˇredn´ı SW2 3 form2 Kalend´aˇr Sunday, Monday,. . . , Saturday
Prav´e SW1 5 form3 J´ızdn´ı ˇr´ad One, two, three
Tabulka 5.1: Pˇriˇrazen´ı tlaˇc´ıtek audio portu dokumentu organizer.vxml
ukonˇcit zad´an´ım platn´eho pˇr´ıkazu nebo pˇr´ıkazem ”exit”. Po vykon´an´ı kaˇzd´eho pˇr´ıkazu ˇcek´a
prohl´ıˇzeˇc na dalˇs´ı. Po celou dobu klient zobrazuje, kter´e tlaˇc´ıtko pro volbu formul´aˇr˚u je pr´avˇe
stisknuto.
5.1.5 Ukonˇcen´ı pr´ace
Kliknˇete na tlaˇc´ıtko ”Exit” nebo zavˇrete okno vxmlclienta. Provede se zavˇren´ı spojen´ı s
browserem, ukonˇcen´ı browseru a ukonˇcen´ı klienta.
5.2 Tvorba vlastn´ıch dokument˚u
Podle n´ıˇze uveden´eho vzoru je moˇzn´e tvoˇrit vlastn´ı VXML dokumenty pouˇziteln´e pro audio
port. Z´avazn´e je pouˇz´ıt pro testovac´ı formul´aˇr n´azev ”loaded” a pro pracovn´ı formul´aˇre ”form1”
aˇz ”form3”. Deatiln´ı popis VXML a dalˇs´ı uk´azky k´odu naleznete v dokumentu [8].
5.3 Testovac´ı dokument organizer.vxml
<?xml version="1.0"?>
<vxml version="1.0">
<!--Definice promˇenn´ych-->
<var name="email" expr="’none’"/>
<var name="todo" expr="’none’"/>
<var name="bustime" expr="’none’"/>
<!--Formul´aˇr pro otestov´an´ı ´uspˇeˇsn´eho nahr´an´ı-->
<form id = "loaded">
<block>
<prompt>Loaded.</prompt>
</block>
</form>
<!--Prvn´ı ppacovn´ı formul´aˇr-->
<form id = "form1">
<!--Pole rozpozn´avaj´ıc´ı slovo-->
<field name="fmailinglist">
<grammar> Alice | Bob | Eve </grammar>
<!--Akce po vyplnˇen´ı: pˇri splnˇen´ı podm´ınky nastav promˇennou-->
<filled>
<if cond="fmailinglist == ’Alice’">
47. KAPITOLA 5. POUˇZIT´I 33
<assign name="email" expr="’alice@google.com’"/>
<elseif cond="fmailinglist == ’Bob’"/>
<assign name="email" expr="’bob@yahoo.com’"/>
<elseif cond="fmailinglist == ’Eve’"/>
<assign name="email" expr="’eve@post.org’"/>
</if>
<!--Pˇrehr´an´ı kompletn´ı odpovˇedi-->
<prompt>
value expr="fmailinglist"/>’s email is <value expr="email"/>.
</prompt>
</filled>
</field>
</form>
...
<!--Obdobnˇe pro form2 a form3-->
...
</vxml>
5.4 Re´aln´a pouˇzitelnost zaˇr´ızen´ı
Audio port na testovac´ım dokumentu prok´azal, ˇze je zp˚usobil´y k nasazen´ı do testovac´ıho
provozu. Ot´azkou z˚ust´av´a, jak se osvˇedˇc´ı pˇri rozpozn´av´an´ı za pouˇzit´ı rozs´ahl´ych gramatik.
Podle v´ysledku testu by pak bylo vhodn´e zv´aˇzit pouˇzit´ı kvalitnˇejˇs´ıho mikrofonu a zdokonalen´ı
vstupn´ıho zesilovaˇce. Usability testing by mˇel zhodnotit ergonomii zaˇr´ızen´ı a zajistit ´upravy
vedouc´ı ke snadnˇejˇs´ımu pouˇzit´ı hardwaru i softwaru.
49. KAPITOLA 6. Z ´AVˇER 35
6 Z´avˇer
Prostudoval jsem dokumentaci jazyka VXML, VoiceXML browseru a ˇc´asti dokumentace MS
Windows API (Raw Input) a specifikace USB (nap´ajen´ı a tˇr´ıdy zaˇr´ızen´ı). Vybral jsem hard-
warov´e komponenty a softwarov´e prostˇredky a navrhnul strukturu audio portu.
Navrhnul jsem sch´ema zapojen´ı, ploˇsn´y spoj a mechanick´e uspoˇr´ad´an´ı, kter´e jsem realizo-
val. Napsal jsem aplikaci vxmlclient s uk´azkov´ym dokumentem organizer.vxml. ´Uspˇeˇsnˇe jsem
provedl testov´an´ı na uk´azkov´em dokumentu.
V´ysledkem pr´ace je funkˇcn´ı vzorek audio portu vˇcetnˇe obsluˇzn´e aplikace vxmlclient. Port je
pouˇziteln´y pro z´aznam i reprodukci hlasu i pro tlaˇc´ıtkov´e ovl´ad´an´ı klienta. Souˇc´ast´ı je uk´azkov´y
VXML dokument pro demonstraci moˇznost´ı portu.
Hlavn´ım pˇr´ınosem zaˇr´ızen´ı je moˇznost uˇzivatelsky definovat libovoln´e reakce na stisk tlaˇc´ıtek,
coˇz dosavadn´ı jedno´uˇcelov´a zvukov´a zaˇr´ızen´ı nenab´ızej´ı. To pˇrin´aˇs´ı univerzalitu pouˇzit´ı a
moˇznost nasazen´ı nejen jako stoln´ı zaˇr´ızen´ı, ale i jako souˇc´ast vestavˇen´ych zaˇr´ızen´ı, hlasov´ych
termin´al˚u apod. Z uk´azkov´eho vxmlclienta je moˇzn´e vych´azet pˇri n´avrhu sofistikovanˇejˇs´ıho
uˇzivatelsk´eho rozhran´ı. Douf´am, ˇze zaˇr´ızen´ı bude dobˇre slouˇzit.
51. KAPITOLA 7. SEZNAM LITERATURY 37
7 Seznam literatury
[1] HID Related Specifications.
USB Implementers Forum, Inc.
www.usb.org/developers/hidpage/.
[2] LSM-S20K - informace o produktu.
Conrad Electronic GmbH.
www.conrad.cz/miniaturni-reproduktor-8-ohm-100-mw+dp47825.
[3] MCE102 - datasheet.
Vanson Electronics Inc.
www.gme.cz/_dokumentace/dokumenty/643/643-022/dsh.643-022.1.pdf.
[4] MSDN Library.
Microsoft Corporation.
msdn.microsoft.com/cs-cz/library/default(en-us).aspx.
[5] Universal Serial Bus Device Class Definition for Audio Devices.
USB Implementers Forum, Inc., march 1998.
www.usb.org/developers/docs/usb_20_040908.zip.
[6] OPA 353 - High-Speed, Single-Supply, Rail-to-Rail Operational Amplifiers
MicroAmplifierTM Series.
Texas Instruments Incorporated, march 1999.
focus.ti.com/lit/ds/symlink/opa353.pdf.
[7] TPA6011A4 - 3-W Stereo Audio Power Amplifier with Advanced DC Volume Control.
Texas Instruments Incorporated, february 2004.
focus.ti.com/lit/ds/symlink/tpa6011a4.pdf.
[8] Voice Extensible Markup Language (VoiceXML) Version 2.0.
W3C Recommendation, march 2004.
www.w3.org/TR/voicexml20/.
[9] REG103 - DMOS 500mA Low-Dropout Regulator.
Texas Instruments Incorporated, september 2005.
focus.ti.com/lit/ds/symlink/reg103-a.pdf.
[10] XVB - XML Voice Browser Proposal 0.3.
IBM Voice Technologies and Systems, Prague, july 2005.
[11] Charlie VoiceXML browser documentation and examples.
IBM Voice Technologies and Systems, Prague, september 2006.
[12] DEM-PCM2900/2902 EVM - User’s Guide.
Texas Instruments Incorporated, march 2007.
focus.ti.com/lit/ug/sleu024a/sleu024a.pdf.
[13] PCM2904/PCM2906 - Stereo Audio CODEC with USB Interface, Single-Ended Analog
Input/Output and S/PDIF.
Texas Instruments Incorporated, november 2007.
focus.ti.com/lit/ds/symlink/pcm2904.pdf.
52. 38 KAPITOLA 7. SEZNAM LITERATURY
[14] Universal Serial Bus Revision 2.0 specification.
USB Implementers Forum, Inc., april 2008.
www.usb.org/developers/docs/usb_20_040908.zip.
[15] M. Skrbek. Jak vyrobit ploˇsn´y spoj.
Web katedry poˇc´ıtaˇc˚u.
service.felk.cvut.cz/lab/tistaky/index.html.
[16] V. Z´ahlava. N´avrh a konstrukce desek ploˇsn´ych spoj˚u.
ˇCesk´a technika - nakladatelstv´ı ˇCVUT, 1st edition, 2005.
53. P ˇR´ILOHA A. SCH´EMA ZAPOJEN´I - ˇC ´AST KODEKU 39
A Sch´ema zapojen´ı - ˇc´ast kodeku
Obr´azek A.1: Sch´ema zapojen´ı - ˇc´ast kodeku
54. 40 P ˇR´ILOHA B. SCH´EMA ZAPOJEN´I - ˇC ´AST ZESILOVA ˇCE
B Sch´ema zapojen´ı - ˇc´ast zesilovaˇce
Obr´azek B.1: Sch´ema zapojen´ı - ˇc´ast zesilovaˇce
56. 42 P ˇR´ILOHA D. OBSAH CD
D Obsah CD
Obr´azek D.1: Obsah CD
Datasheets Datov´e listy integrovan´ych obvod˚u, v´yvojov´e desky a reproduktoru
Eagle/lbr Upraven´e knihovny komponent Eaglu
Eagle/projects/audio port Podklady sch´ematu a ploˇsn´eho spoje audio portu
Eagle/projects/diode coder Podklady doplˇnkov´eho sch´ematu diodov´eho kod´eru
Images Fotografie audio portu
Src/Organizer Zdrojov´y k´od testovac´ıho VoiceXML dokumentu
Src/Vxmlclient Zdrojov´y k´od vxmlclienta a soubory projektu Visual Studia 2008
Src/Vxmlclient/Debug Zkompilovan´y vxmlclient a soubory Visual Studia 2008 pro kompilaci
Text Tento dokument ve form´atu PDF
Text/src LaTeX Obr´azky a podklady pro sazbu tohoto dokumentu v LaTeXu
USB Vybran´e ˇc´asti specifikace USB souvisej´ıc´ı s audio portem