. : New eShop! - Mobilní verze - Pandatron.cz - Pandatron.sk - Diskuzní fórum - Zakázkový vývoj : .
 
Zvukový přehrávač v jednočipu
7. ledna 2009 | Pandatron | Zvukový přehrávač v jednočipu | Komentářů: 12  

Zvukový přehrávač v jednočipu

Návod jak snadno zkonvertovat libovolný zvukový záznam pro jednočip i příklad jeho použití v osmibitovém procesoru s 1 a 1,5 bitovým audio výstupem.

Vzhledem k rostoucí oblibě nejrůznějších multimediálních aplikací přichází stále častěji požadavek i na vývoj zařízení schopného mluvit lidskou řečí, či přehrávajícího melodie. U větších projektů není takový požadavek žádný problém. Zvukový záznam ve WAV, případně i MP3 formátu se uloží do velké externí Flash paměti a poté se přehrává pomocí kvalitního D/A převodníku či přímo audio kodeku. Pokud však pracujeme na menší aplikaci, kde není kladen přílišný nárok na věrnost a kvalitu výstupního zvuku, můžeme použít následující aplikaci.

Principy D/A převodu:
Možností převodu binárních informací audio záznamu na analogový signál v aplikacích je hned několik. Tři nejzákladnější jsou:

- Použít externího D/A převodník, případně i celého audio kodek, kterých je v dnešní době doslova nepřeberné množství. Takové řešení přináší nejvyšší kvalitu generovaného signálu, je však především vykoupeno vyšší cenou výsledné aplikace.

- Druhou možností je použít osm či dokonce šestnáct I/O pinů procesoru a vytvořit na nich jednoduchý odporový D/A převodník. Výhodou takového řešení je solidní zvukový výstup (viz například známé převodníky na paralelní port starších počítačů), nevýhodou však příliš velká ztráta I/O pinů.

- třetí a závěrečnou možností, o které je i tento článek je použít na generování analogového signálu jeden, maximálně dva I/O piny, doplněné o primitivní integrační článek. Nevýhodou je potřeba výpočtu (převodu) audio záznamu. Výhodou je však značná úspora jak cenová a pinová, tak i kapacitní na uložení zvukového záznamu. Ten totiž není potřeba ukládat v osmi či šestnácti bitech, postačí totiž jednobitový stream.

1-bit a 1,5-bit bitstream:
Na následujících obrázcích jsou dvě nejčastěji používané formy integračního D/A převodníku:


Obr. 1: 1-bitový D/A převodník
 
Obr. 2: 1,5-bitový D/A převodník

Jelikož se jedná o integrační články, je princip samotného D/A převodu jednoduchý. Jakmile je výstupní pin procesoru přepnut na logickou jedničku, začne se kondenzátor C nabíjet přesně danou rychlostí, určenou násobkem hodnot R*C. Je-li tedy například potřeba vytvořit napěťový střed pro „ticho“ ve zvukovém záznamu, stačí neustále měnit stav výstupního pinu z 1 na 0 a zpět. Pokud je následně potřeba vygenerovat napětí o určité velikosti, stačí na požadovanou dobu zapnout či naopak vypnout výstupní pin.
V paměti tak není potřeba uchovávat osmi či šestnácti bitový zvukový záznam, postačí zkonvertovaný jednobitový stream, který je přesně v rytmu samplovací frekvence vyčítán a je podle něho zapínán a vypínán výstupní pin.

Samozřejmě je pro správnou funkci potřeba, aby zatížení kondenzátoru C následným zesilovačem bylo pokud možno minimální. Pak je i přes značnou jednoduchost D/A převodníku i úspory v objemu zvukového záznamu dosaženo více než uspokojivých výsledků.

Jediným problémem tedy zůstává samotný převod audio záznamu do vhodného jednobitového streamu.

BTc Sound Encoder 2.0:
Přesně tak se jmenuje program od autora Romana Black, který nejen že dokáže převést libovolný zvukový záznam na jednobitový stream, ale dokáže volit i různé kvality výstupního signálu, konvertovat samplovací frekvenci na téměř libovolnou hodnotu a řadu dalších užitečných funkcí.


Obr. 2: BTc Sound Encoder 2.0

Program je možné zdarma stáhnout z oficiálního webu autora, který je uveden na konci článku. Stejně tak je možné na konci článku stáhnout zálohu tohoto programu doplněnou o některé ze zde publikovaných ukázek.

Samotné ovládání programu je velice intuitivní. Volbou File->Open wave file se načte originální zvukový záznam.
V případě potřeby je možné volbou Edit->Resample změnit vzorkovací frekvenci na nižší. Přeci jen není vždy nutné a občas to v aplikaci není ani možné používat tu nejvyšší samplovací frekvenci přesahující 40 či dokonce 90 kHz.


Obr. 3: Přesamplování zvukového záznamu

Nyní již stačí v dolní části hlavního okna programu zvolit zda chceme použít jednobitový (jednopinový) či jedenapůlbitový (dvoupinový) výstupní integrační článek (volba Alogr. type). Při použití druhé volby doporučuji přečíst si programový help, kde se dozvíte jak z datového streamu získat data pro druhý pin.
Poté je potřeba zvolit si kvalitu výsledného převodu. To se provede volbou „Fineness“. Podle této volby budou i následně automaticky vypočteny hodnoty součástek výstupního integračního článku. Platí zde jednoduché pravidlo, čím nižší kvalita (tedy nižší časovací konstanta integračního článku) tím vyšší je hlasitost. Naopak čím vyšší kvalitu použijete, tím nižší má samozřejmě výstupní signál amplitudu, což samozřejmě nebývá na závadu.

Tím je základní nastavení dokončeno. Případně je možné v menu Edit ještě zvolit některý ze speciálních filtrů.
Výsledný stream je nyní možné v menu File uložit v požadovaném formátu. Na výběr je formát assembleru pro PIC, formát pro jazyk C i čistě binární podoba například pro externí paměť. Pokud požadujete formát například asembleru pro AVR procesor, je potřeba výsledný soubor nechat v libovolném programátorském editoru (doporučuji například TextPad) hromadně upravit a nahradit tak opakující se příkazy jinými.

Ve vygenerovaném souboru, případně i v menu Special->Output Filter Model je možné získat hodnoty pro potřebný integrační článek.


Obr. 4: Hodnoty pro integrační článek

Příklady výsledných zvukových záznamů:
Program umožňuje přímo při práci přehrát si jak originální záznam, tak i výsledný záznam přesně tak, jak bude nakonec vypadat vygenerovaný z jednočipu.
Jako příklad jsem použil zvukový záznam dodaný s programem.

Originální záznam:

Získat Flash Player pro tento přehrávač.
download

1,5bit BTc16:

Získat Flash Player pro tento přehrávač.
download

1bit BTc16:

Získat Flash Player pro tento přehrávač.
download

1,5bit BTc64:

Získat Flash Player pro tento přehrávač.
download

1bit BTc4:

Získat Flash Player pro tento přehrávač.
download

Jak je ze záznamů patrné, výsledný zvukový výstup je i při nejnižší kvalitě dostatečný pro celou řadu aplikací. Vyšší kvalita a vyšší vzorkovací frekvence pak zajistí i velice uspokojivý výsledek. Samozřejmě ani nejvyšší kvalita se nikdy nemůže rovnat použití externího D/A převodníku a tak pro profesionální použití vždy doporučuji nešetřit.

Konkrétní aplikace s jednočipem:
Pro ověření kvality a vůbec pracnosti použití výsledných streamů jsem se rozhodl zhotovit následující ukázkové zapojení.


Obr. 5: Schéma zapojení

Je v něm použit osmibitový procesor PIC s interní pamětí Flash velikosti 32kB. Do té je uložen jak jednoduchá přehrávací smyčka, tak i celý datový stream. Aby byla výsledná kvalita zvuku alespoň dobrá, byla použita vzorkovací frekvence 16kHz. Tomu odpovídá i vyšší nárok na objem audio dat a tak bylo možné do procesoru uložit jen několik vteřin záznamu.

Zde je zvukový záznam pořízený připojením kondenzátoru C5 přímo na vstup Line-In zvukové karty. To samozřejmě není nejideálnější řešení a v praxi by mělo být použito oddělení například operačním zesilovačem.

Získat Flash Player pro tento přehrávač.
download

Firmware i s uloženým zvukovým záznamem je ke stažení na konci článku.

Celé zapojení bylo sestaveno na kontaktním poli.


Obr. 6: Sestavení obvodu na kontaktním poli

Závěr:
Účelem článku nebylo zhotovit profesionální audio výstup k procesoru. To v zásadě ani není žádný velký problém. Stačí použít speciální integrovaný obvod a pouze mu odesílat binární hodnoty.
Pravým účelem článku bylo představit jednoduchou možnost i pro menší a finančně omezenější aplikace, ve kterých není kladen příliš vysoký nárok na kvalitu výsledného zvuku. Pokud tak stavíte například mluvící teploměr či elektrického vrátného, je toto řešení v řadě takových případů více než dostatečné.

Odkazy & Download:
Domovská stránka autora programu BTc Sound Encoder - http://www.romanblack.com

Záloha programu s několika ukázkovými zvuky - DOWNLOAD
Firmware procesoru - DOWNLOAD







GooglePlus1 FaceBook Twitter del.icio.us DiGG Google StumbleUpon Google Buzz Email RSS PDF Tisk

Komentáře (12):

Zobrazit starší 30 dnů (12)...

host
12. Dne 04. 07. 2009 v 20:43 zaslal host
Popis programu
Zdravím, ačkoliv celé zařízení vypadá jednoduše, mohl by mi někdo blíž popsat samotný program? Jak např. mikroC natáhnout exportovaný soubor a jak funguje přehrávací smyčka? Díky, Honza M.


Název příspěvku: Vaše jméno: host
                 
  Zakázat formátování [Zakáže kódování a nahrazování smajlíky.]
Připojit soubory
reklama:
SDR-5+ HF receiver - All Mode Softwarový přijímač
Digitální softwarový přijímače SDR-5+ je již pátou generací špičkových produktů naší společnosti. Jedná se o All Mode Receiver s integrovaným generátorem, dvěma anténními vstupy a VCO vstupem s frekvenčním rozsahem 0 až 100 MHz.
Skladem od 2550 Kč

Informace uvedené v článcích jsou platné v době jejich vydání a samotné články jsou určeny pouze jako zdroj informací. Autor článku ani správce webu nenesou žádnou zodpovědnost za případné újmy na majetku a zdraví. Názvy společností a výrobků, loga a další multimediální materiál mohou být ochrannými známkami příslušných společností.
RSS kanály: | |
+420 723 846 377
info@pandatron.cz
Všechna práva vyhrazena | mobilní verze | © Copyright 2000 - 2016 ISSN 1803-6007