Téma: Vývoj použitelného DSPčka

Jelikož jsem přes digitální zvukové záležitosti naprostý diletant, rád bych oslovil zdejší mistry. Sním o vývoji použitelného DSPčka (digitální výhybky), které by bylo téměř nekompromisně použitelné pro domácí poslech. Na trhu je mnoho zařízení pro PA, ale nic dosažitelného co by se mi líbilo i na doma a zvukově je to taky dost velká bída. Jako laik vůbec netuším, co by takový přístroj obnášel, každopádně vím, že v Českých DIY HIFI vodách něco takového opravdu chybí. Bylo zde několik projektů se špičkovými DACy a od toho je podle mě jen krok k vývoji DSP. Takový přístroj, by mohl být využíván nejen pro domácí poslech, ale i ve studiích a při live zvučení = velké pole, neorané.
Moje představa by byla asi taková. Vstupy: analog, digitál - USB, SPDIF(AES/EBU) kvůli profesionálnímu nasazení. Výstupy 2x3 analog. Na víc než třípásma to asi nemá cenu řešit. Usb by sloužilo krom zdroje signálu i k editaci filtrů a dalších funkcí přes PC. Mělo by to umět 24bit/192KHz.
Osobně mohu nabídnout svůj čas, navrhnout mechaniku, případně analogové záležitosti, výstupní buffery, moje finanční možnosti jsou však omezené. Kdyby se ale našlo dost lídí, co by do toho šli, snad by to nebylo úplně nereálné.
Co si o takovém počinu myslíte?

Web

(upravil Dohnalik 10. 9. 2014 13:18)

Re: Vývoj použitelného DSPčka

Nic složitýho...na trhu už je projekt miniDSP, kterej vyvíjí tuším čínani.
Já bych navrhoval použít http://www.analog.com/en/processors-dsp … oduct.html má dobrou výkonovou rezervu na všechno, co se tam bude muset nacpat. A pak to buď naprogramovat aby to už samo bralo info z potíků a tak, nebo dát k tomu MCU, kterej bude upravovat koeficienty filtrů přes I2C v RAM DSP.

Nicméně je potřeba zajistit to, aby zpracovávání signálu v DSP probíhalo vždy na jedné frekvenci...lze to měnit, ale ta složitost za to nestojí. DSP má v sobě ASRC, který by každej vstup resamplovaly na 192/24, pak by se to prohnalo DSP, výhybkama, filtrama, EQ...cokoli si kdo vymyslí, a výstup do D/A čipů by byl vždy 192kHz, to je zároveň i výhoda, jelikož to zlepší impulzní odezvu FIR filtrů v těchto převodnícíh.

Lze to naprogramovat v SigmaStudiu, kde to naprogramuje každý, kdo má zkušenost třeba s ARMem, není třeba znát digitální zpracování signálů a podobně.

K USB lze využít opensource projekt audio-widget, který má luta i já v převodnícíh, já jsem ho upravoval i trochu do hloubky a řízení přes HID tam není problém. K SPDIF/AES/TOSLINK vstupům bych použil ASRC + transceiver od TI nebo AKM. Výstupní D/A převodníky...nepoužíval ybch nic od TI, jejich PCM17xx nejsou moc dobrý, vyhnul bych se obecně skoro všem Iout DAC, navrhnout ho správně není prdel, a šel bych do Vout AKM nebo Wolfoson (kterej byl odkoupen cirrus logic). Můžete klidně použít můj AK4399 DAC, který jsem uvolnil jako opensource. Za samozřejmost považuju galvanickou izolaci mezi DSP a DACy.

Já na to nemám čas a byl bych hodně drahej, takže to píšu jenom pro někoho, kdo by se do toho chtěl pustit. Já budu dělat aktivní digitální výhybku pro 2.1 sestavičku k PC (3 pásma), ale to vidím až tak někdy za rok, teď mám hlavu plnou úplně jiných věcí.

//jsem ochotný pomoct s návrhem zapojení a desek v altium designer nebo eaglu, případně i možná s naprogramováním, ale musel by to být opensource veřejný projekt, který by vyvíjelo více lidí, jak říkám, zatím nemám čas to táhnout.

Re: Vývoj použitelného DSPčka

Bezpochyby hodně zajímavá myšlenka, ale celková realizace trochu sebevražda. big_smile
To co tady nadhodil Dohnalík zní dobře, ale má to pár ale...
- První, že dělat toto jako čistě OpenSource tak to nevím jestli by se do toho někomu chtělo. Mě osobně moc ne. Určitě bych neměl problém s knowledge sharingem v rámci vývojářů. Bez tohoto nejde, ale dát to ven celé, tak to by jste mohli zaplakat nad výdělkem. Číňani by po tom skočili jak po uzeným. smile Nemluvě o tom, že k tomu je potřeba poměrně dost věcí a ty nejsou zadarmo. A co se týče mě tak už mě začíná štvát i kradený software. Nemluvě o času, který by to každého stálo. A upřímně už jsem navždy vyléčený dělat něco zadarmo. Tím pochopitelně nemám na mysli, že to zaplatí jeden z komunity, to rozhodně ne, ale musí tam být nějaká návratnost jinak je k docela k ničemu, nemyslíte?
- Další věc je USB část. Docela maso. Ovládání před HID je sice pěkná věc, ale k tomu je zapotřebí to napsat a to na dvou stranách. K tomu je zapotřebí uvažovat o ovládačích na straně Widlí a v těchto směrech je situace taky všelijaká. Linux je sice dobrá náhrada, ale tím, že budete mít 1% potenciálních zákazníků si moc nepomůžete.

Co se týče mě. Tak já bych audio-widget nepoužil. Důvodem je to, že je to na přepsání pomalu celého projektu a nevím jak vy, ale já se na to moc netřepu. Mohl bych přispět svým STMkem (STM32F4xx), umí v podstatě to samé co Atmel a přece jen jsem v tom více kovaný, ale ... To ale znamená, že tam mám hodně věcí k dořešení, nemám na to moc času, a taky mé původní představy o čase vývoje vzaly za své. Zase na druhé straně by Vám to mohl vytrhnout trn z paty. Podpora UAC1/UAC2, HID, SPI, I2S, I2C, spousta I/O atd. Výkon dle mého soudu dostačující. Jediné omezení je stereo, s vícekanálovým zvukem nemám zkušenost. K tomu je možné přihodit i nějaký dotykový display pro ovládání bez USB.

Upřímně, ale celé to není žádná sranda a všechno berte jen jako úvahu. Sám bych do toho rozhodně nešel. A když bych se toho zúčastnil tak rozhodně nesnáším nůž na krk. Když něco dělám tak kvůli tomu, že to chci a ne, že si to někdo přeje. wink Zatím je to stejně pasé, protože dokud nebudu mít zprovozněné všechno co chci na svým interním projektu tak nemá cenu o dalších věcech ani uvažovat. Navíc mám teď aktivity, které mě totálně odtrhly od reality a je docela možné, že bude chvíli trvat než se k tomu vůbec dostanu. Viděl bych to ne dřív než příští rok.

Web

Re: Vývoj použitelného DSPčka

Po audiowidgetu se číňani taky nevrhli smile Já bych se nebál to na tom postavit, ovládání se dá napsat v C++ v Qt, takže to poběží na winu, macu i linuxu. Ovladače pro winy pro AW jsou. Pokud bysme to neudělali jako fully-open, tak jsem taktéž pro, kdyby to bylo cca za ten rok.

Já chystám něco podobného postavené na jednom NXP ARMu, kterej bude dělat i ten signallprocessing, ovladače k tomu budu mít vlastní, bude to umět ohromný množství věcí, ale nebudu to nikde uvolňovat, jelikož je to hodně drahej komerční projekt smile

Re: Vývoj použitelného DSPčka

O něčem podobném zrovna přemýšlím. Ten Dohnalíkův návrh dává smysl. DSP od ADI by zapláclo problém s výkonem (do toho DSP se toho vejde opravdu hodně), s dostatečným množstvím I2S výstupů i přepínáním zdrojů signálu.

Můj nápad ohledně ovládání je volit MIDI nebo MIDI před USB. Podobně jako je možné využít REW pro nastavování komerčních parametrických ekvalizérů. Tím by bylo možné použít MIDI kontroléry nebo udělat ovládací modul zvlášť. Z hlediska SW na PC by s tím také neměl být problém - nebylo by třeba zvláštních ovladačů.

Řekl bych, že z hlediska času je to celkem náročný na odladění, a to beru v úvahu jen tu digitální část. Muselo by se tomu věnovat více lidí, jak již bylo řečeno, nebo by si to někdo mohl vzít jako velkej projekt do školy.

Web

Re: Vývoj použitelného DSPčka

Já bych se třebas rád přiučil některým DSP algoritmům, ale co si budem vykládat, neočekávám, že by to nějak klaplo.  Jinak jako nápad je to celkem pěkný nářez, co do náročnosti. STM32 bych též uvítal více, než konkurenci, ale to ignorujte smile

Re: Vývoj použitelného DSPčka

Tak klidně, pokud Hazys a xmarek, jako STM32 borci, udělají UAC2 + HID ovládání, tak by se dal sehnat nějakej C++ borec (kontakty mám), kterej by napsal ovládací aplikaci. Já bych navrhl věci co se týče digitálního zvuku (A/D, D/A, SPDIF) s tím, že by mi někdo pomohl s psaní FW a hraním si s DSP. Udělal bych i výstupní část D/A. No a analog stuff u vstupů (přepínání analogových vstupů) a výstupů (buffer, reáltková regulace hlasitosti) by mohl udělat třeba tuba. Počítám, že by se našlo ještě pár dalších lidí a pak by z toho mohl být zajímavej i návratnej projekt, kterej by asi docela dost lidí ocenilo.

Mimo to bysme pak mohli udělat třeba i digitální výhybku pro sub...jelikož je to digitál, tak dovoluje ohromnou strmost, klidně -48 db/ok nebo víc. Subsonickej filtr, odstranění DC složky...to se všechno dá udělat krásnou matematikou v SigmaDSP.

Re: Vývoj použitelného DSPčka

Počkejte pánové, já myslel, že půjde o seriozní výrobek, ne o hifistický nesmysl s relátkovým útlumákem. Jestli to má být externí doplněk - pak dobré, vtipné, ale jako permanentní součást takového díla je to absolutní nesmysl.

Čoveče, na STM32 zas tolik borec zatím nejsem, ale řekněme, mám to z první ruky a přístup k vybavení i lidem, co tomu rozumí. USB sem zatím nedělal, ale v čase budoucím se na něj chystám.

Bohužel, nedisponuji příliš volným časem (za to zanedlouho budu disponovat opět blbou náladou na další půlrok), takže podíl na seriozním vývoji opravdu nemohu slibovat ani zaručit. Spíš čistě z hobbysmu, by mě ty DSP algoritmy zajímaly, mám o nich jen slabé povědomí a naprogramovat dovedu tak leda dynamickou kompresi, co je tak trochu jednoduché.
Pokud máš někde po ruce nějakou literaturu, kterou bys mohl doporučit, třeba nějaké HOW TO, jak naprogramovat filtr, tak prosím doporuč, rád si počtu.

(upravil Dohnalik 10. 9. 2014 23:05)

Re: Vývoj použitelného DSPčka

Tak relátkovej útlumák má svoje místo a měřitelnej dopad. Samozřejmě tam nehodlám vymýšlet píčoviny s diskrétním bufferem, to fakt ne...

http://www.dspguide.com/pdfbook.htm Tad něco je, ale je potřeba některý věci brát s rezervou. Stejně tak jako u jakékoli jiné literatury má pisatel na některý věci zkrátka svůj názor smile HOW TO najdeš u spouty výrobců, NXP, ADI, STM tuším taky...TI tam je...ti všichni mají AN jak napsat FIR, napsat a odladit IIR včetně kodu a tak.

Jen abys správně chápal, zase tolik znalosti o programování filtrů nepotřebuješ, stačí ti je umět spočítat v příapdě, že chceš měnit koeficienty v RAM.

V pačným případě to funguje jako skládačka:

http://www.analog.com/library/analogdialogue/archives/45-03/AD45-03_FIG_04.jpg

Re: Vývoj použitelného DSPčka

stačí ti je umět spočítat v příapdě, že chceš měnit koeficienty v RAM.

No ale to je ale většina z celý tý zábavy.

Re: Vývoj použitelného DSPčka

Ani ne, jsou na to programy, tabulky v excelu a všechno možný...

(upravil Hazys 10. 9. 2014 23:21)

Re: Vývoj použitelného DSPčka

Nechat předpočítat koeficienty v matlabu umí každý školený vůl, ale počítat to za chodu v MCU, aby šla za chodu měnit třeba dělička?


//Každopádně děkuji za tu literaturu. Je tam toho čtení tolik, že budu mít do důchodu co dělat.

(upravil Dohnalik 10. 9. 2014 23:21)

Re: Vývoj použitelného DSPčka

Tak to je pak jiná, lepší bude udělat pole...protože ten MCU se z toho osere big_smile Spočítat takovej FIR...odladit stabilitu IIR...jooo, to je prdel. Ale jak říkám, ty vzorce se dají převzít z těch programů, takže to není zase nic extra hroznýho, jenom je to poměrně náročný na výpočet, pokud se to má měnit rychle...tj mcu bez FPU nemá šanci (pokud by měl obsluhovat ještě další věci, jakože jo).

(upravil Hazys 10. 9. 2014 23:37)

Re: Vývoj použitelného DSPčka

FPU není problém, Cortex M4 má.

No ještě jednou děkuji za výživnou literaturu, když budu při náladě a času, tak si to projdu. Momentálně mám ale jinou zábavu - učím se VHDL. Teda za tím spíš jen teoreticky, čeká se na dodávku evalboardu a programátoru. Obojí najednou bych asi fakt nedával.

(upravil mechanik 11. 9. 2014 13:49)

Re: Vývoj použitelného DSPčka

Pardon že vám do toho zasahujem.

Dohnalik, neni to trochu divné byť za analogovú reguláciu hlasitosti pomocou relé a pri tom používať digitálne filtre? Ved je to to isté len v užšom pásme.

(upravil cestmir 11. 9. 2014 14:08)

Re: Vývoj použitelného DSPčka

To isté snáď ani nie... Je trochu rozdiel, či je niečo potenciálne nežiadúce (termický/kvantizačný šum, zložky skreslenia, vf bordel z dig. časti a pod.) maskované užitočným signálom s nezoslabenou úrovňou v inej časti spektra (čo je prípad filtra), alebo je zoslabované celé pásmo (čo je prípad atenuátora), pričom minimálne časť nežiadúcich zložiek zostáva konštantná.

Re: Vývoj použitelného DSPčka

Ale stále by sa ten analog dal asi považovať za "čistejšie riešenie". No jasné má zase teoreticky iné problémy. Ja by som len čakal žed sa to buď bude riešiť čisto digitálne alebo čisto analogovo.

Re: Vývoj použitelného DSPčka

No pokiaľ počúvaš prevažne digitálne zdroje signálu, čo je dnes najbežnejší scenár, je "čistejšie" riešenie skôr všetko až po reg. hlasitosti a výkonové zosilnenie vybaviť matematicky v dig. doméne...

Kombinácia, ktorá mi už trochu proti srsti je, je nutnosť samplovať prípadný analógový zdroj (LP, pásky), aby mohol byť vôbec na zostave prehraný, čo bude v prípade dig. aktívnej výhybky nevyhnutné.

(upravil Dohnalik 11. 9. 2014 14:50)

Re: Vývoj použitelného DSPčka

O tomhle jsme měli diskuzi s BV, ano, kdyby to bylo čistě digitální, tak většina lidí ani nic nepozná, ale jelikož by to mělo být ultimate, tak změnu samotné výstupní úrovně, tj hlasitosti, bych rád provedl analogově. To, že digitálním filtrem něco oříznu je fuk...užitečná informace kterou chci poslouchat tam zůstane a nehne se ani o dB.

cestmir: Je to možná výhoda i nevýhoda...například to LP se dá jen zesílit, rovnou nacpat do ADC a subsoniku, DC, RIAA udělat s přeností na 0,001 dB v DSP smile Já kopu za digitál, takže v dobře udělaném digitalizování signálu nevidím nejmenší problém, naopak. Ale musí to být zkrátka dobře provedené, s přizpůsobenou vstupní úrovní apod, pak se ani netopí signál v šumu a jiný bordel.

Ale ano, z technického hlediska bude čistě analogové řešení vždy lepší, z praktického hlediska bude daleko náročnější, větší a několikanásobně dražší aby se vyrovnalo takovému digitálu.

Re: Vývoj použitelného DSPčka

Hezky se to rozjíždí. Jde vidět, že tazatele jeho sen nepřešel. big_smile Co se týče STM32 tak je mi jasné, že celá část USB by šla za mnou. Proto jsem upozorňoval na to, že tam mám ještě dost věcí k dodělání. Každopádně nemám problém se o své znalosti podělit, ale případný zájemce musí počítat s tím, že USB (a k tomu UAC1, UAC2, HID) je docela celký záběr. Nejde jen o teoretickou část, ale i praktickou. S některými věcmi na STM32 jsem docela dlouho laboroval než jsem je rozjel např. DMA =>I2S podle externí frequence (mimo PLL závěs). A těch problému je tam opravdu mnoho a praktických realizací je jako šafránu. To je vlastně věc, které mě pořád blokuje.

Jinak to co tady nastřelil Dohnalík se mi líbí. Určitě bych netahal některý vypočetní výkon MCU, protože ten má co dělat s USB, display-em a ovládání přes I2C, SPI, GPIO apod. Ono se to nezdá, ale např. pro 24 bit musí přepočítávat vzorky a asi by nikdo nechtěl poslouchat lupance v hudbě. big_smile Jinak součástí specifikace UAC1/2 jsou i různé srandy které jdou např. za equalizérem takže by se nemusel nutně použít ani HID. Ale vše je na domluvě. Upřímně už teď se mi při té představě začíná kouřit z makovice. big_smile

Co se týče mě tak já bych to určitě uvítal minimálně z toho pohledu, že bych se něco nového naučil. Ale jak už jsem upozorňoval je to běh na dlouhou trať. Oni výrobci moc dobře ví proč se do toho neženou. wink

Web