Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Class D Amplifier - High Quality Power Audio Amplifier
Malo detaljnije oko I2S i DSD, nama treba pre svega razdvojeni levi i desni kanal, kod stereo PCM to se razdvajalo nakon 24/32 bita preko FS linije, kod DSD je nezgodno što nam je frame 1bit i FS signal treba tako da se ponaša, 1bit-levom, 1-bit-desnom, 1bit-levom kanalu i tako u krug, možda zatreba neki flip-flop ili enevtualno da se radi sa 2x većim clock da bi dobili efektivno 2 kanala preko jednog data-stream, u suštini ništa strašno i sve se nekako uklapa sa I2S modulom.
Audio semplovi moraju da budu specifično enkodirani, zvaće se .WAV nebitno je, unutra je specifično upisan raspored nula/jedinica tj u multipleksiranom DSD formatu (to procesiranje se na kraju smešta u kernel-driver da u letu radi konverziju, otom-potom).

Ovaj code je dobra polazna tačka kao primer, radi u user-space, obraduje specifično I2S, koristi DMA, ima audio procesiranja za RDS i MPX-Stereo (nebitno za našu priču) i generalno to sve nam treba samo da umetnemo našu PCM->DSD konverziju.
https://github.com/ChristopheJacquet/PiF...i_fm_rds.c
Reply
Ovaj kolega je napravio ovo što nama treba, iskoristio je PWM modul na RPi i napravio dva DSD L/R izlaza, i on pravi neki 1bit Class-D Smile
Jedino da mu "pomognemo" da još sredi ovih par TODO oko DMA kontrole ... Wink
https://gitlab.com/HITMAnsOFT/snd-bcm2835-dsd

Samo da podesim remote-build i probam to! Javljam šta se dešava ...

[Image: attachment.php?aid=38521]


Attached Files Thumbnail(s)

Reply
Super, samo napred!

dsp:
https://www.audiosciencereview.com/forum...ial.29656/

Jedna vrhunska stranica sa c i matlab implementacijama:
https://www.ece.rutgers.edu/~orfanidi/intro2sp/
Reply
Ovaj program radi, uz male "poteškoće" (ima neke dropove na svaku sekundu) ali u suštini radi!!! Probao na RPi2.
Dobije je vrlo pristojan zvuk ovako na prvo slušanje ... Povezao sam PINR preko 47k otpornika na ulaz moje zvučne kartice pa dalje u monitore/amp.
Odprilike je "sve tu", i bass i visoki.
Nije loše za početak, treba detaljnija analiza ...
Reply
Nisam ni sumnjao da ne moze! Smile
Reply
Jos malo poslušao i poigrao se sa programom, prvo sam dodao da mi preskači procesiranje PCM->DSD jer to radi par minuta tj snimim sadržaj PWM buffera (oko 160MB) u test.dsd fajl i posle kada puštam ponovo učita fajl nazad u buffer i to odradi za 1 sekundu pa krene da svira.

Radi tako što koristi 32x16 FIFO buffer koji je povezan sa PWM modulom koji je podešen da izbacuje SERISKI informacije umesto Duty, clock je podešen na 2.8MHz i ima funkciju za proveravanje "kada je PWM slobodan" tj kada je prazan FIFO buffer da se prebaci sledeća grupa semplova iz glavnog/velikog PWM buffera/memorije, to vrti u krug dok ne odradi sve semplove/frejmove.

Sve u svemu pristup je dobar i ima smisla, puckanje i krckanje koje se primećuje je u relaciji sa opterećenjem procesora jer program troši 100% jednog CPU-core dok radi tako da to treba malo popraviti i prebaciti na DMA i onda bi odprilike sve bilo na svom mestu generalno kao koncept upotrebe PWM-a i pretvaranja u DSD/PDM.

[Image: attachment.php?aid=38525]


Attached Files Thumbnail(s)

Reply
Super! Ajde okaci C program pa cu se ja malo poigrati sa polling funkcijama i interuptovima kada budem krenuo to da radim... Kod mene sam sveo touch drajver + ir led drajver i jos neke stvari kojee sam sam razvio na nulu iskoriscenosti cpu-a preko poll funkcija, pa cu probati i to tvoje da odradim da nam cpu bude sto manje zauzet.
Reply
STM32F7 serija ima dva hardverski odrađena SAI kanala. SAI je Serial Audio Interface i može da se uveže sa DMA kontrolerom. Probao sam to i dobio neki proizvoljan stream iz FLASH-a na frekvenciji bliskoj 2.822400MHz što bi trebalo da odgovara DSD64.
Nije tačna jer je glavni oscilator 8MHz pa deliteljima ne dobijam tačnu vrednost, odnosno treba da stavim neki drugi oscilator na NUCLEO pločicu sa STM32F767ZI mikrokontrolerom.
Imam 1KHz sine dsd64 testi fajl pa ću kasnije da probam sa njim.

Probao sam na F7 ali SAI ima na F4 i L4 i verovatno na još nekim serijama STM32.
Reply
Trebao bi da probam neki stm32 kada dodje na red, upravo sam narucio rp2040 cisto da vidim kako to malo cudo funkcionise i kako se programira, gledam da ga koristim u narednom periodu umesto microchipa 12f1840 za tamo neke stvari jer je isto tako malen a mogucnosti daleko vise nego taj pic, mozda bi i rp2040 mogao da udje u ovu audio pricu? Ima mogucnost da procesuira 32bit i2s https://arduino-pico.readthedocs.io/en/latest/i2s.html samo je pitanje do koje brzine moze to da podrzi

Edit:
vec uveliko se koristi ova biblioteka na rp2040 https://github.com/earlephilhower/ESP8266Audio
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)