DIY Electronic projects
Class D Amplifier - High Quality Power Audio Amplifier - Printable Version

+- DIY Electronic projects (https://forum.yu3ma.net)
+-- Forum: Hifi audio (https://forum.yu3ma.net/forum-3.html)
+--- Forum: Pojačivači snage - Power amps (https://forum.yu3ma.net/forum-16.html)
+--- Thread: Class D Amplifier - High Quality Power Audio Amplifier (/thread-2651.html)

Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46


RE: Class D Amplifier - High Quality Power Audio Amplifier - savan - 08-06-2022

Nenormalno sporo i kod tebe. Probao sam da prebacim pi4 kernel u 64bit mode dodavanjem arm_64bit=1 u config.txt, i verifikovao dali je u 64bit modu preko uname -a, kao sto se moze videti sada je 64bit modu (aarch64 GNU/Linux):

Code:
root@rpi4:~# uname -a
Linux rpi4 5.10.63-v8+ #1496 SMP PREEMPT Wed Dec 1 15:59:46 GMT 2021 aarch64 GNU/Linux

Quote:[pi4]
# Enable DRM VC4 V3D driver on top of the dispmanx display stack
dtoverlay=vc4-fkms-v3d
max_framebuffers=2
arm_64bit=1

Ali rezultat je duplo gori nego kada je u 32bit modu:

Code:
root@rpi4:~# ./dsd
4278
root@rpi4:~# ./dsd
3944
root@rpi4:~# ./dsd
4111
root@rpi4:~# ./dsd
4075
root@rpi4:~# ./dsd
4278
root@rpi4:~# ./dsd
4000
root@rpi4:~# ./dsd
4315
root@rpi4:~# ./dsd
3741
root@rpi4:~# ./dsd
4092

Mislio sam da nije printf problem, nije! Sto dokazuje drugaciji pristup
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
#include <time.h>

uint64_t nanos(void)
{
    struct timespec ts;
    timespec_get(&ts, TIME_UTC);
    return (uint64_t)ts.tv_nsec;
}

int main(void)
{
    uint8_t i = 0;
    uint64_t ticks = nanos();
    uint64_t rr = 0;

    for (i=0; i<100; ++i)
    {
        rr = nanos() - ticks;
    }

    printf("%lld\n", rr);

    return 0;
}

rezultat:

Code:
root@rpi4:~# ./dsd
45037
root@rpi4:~# ./dsd
44537
root@rpi4:~# ./dsd
46074

Katastrofa! Ima li resenja zna li neko?


RE: Class D Amplifier - High Quality Power Audio Amplifier - gorankg - 08-06-2022

Rešenje je da se sve proba na RPi Pico a da se koriste PIO. Evo nekih primera:

https://github.com/raspberrypi/pico-examples/tree/master/pio

Ne bih mogao sad to da uradim ali za dan-dva bi smo mogli da imamo i ostatak hardvera za test pa onda da probam.


RE: Class D Amplifier - High Quality Power Audio Amplifier - savan - 08-06-2022

Znam ali nebi trebao pico da bude brzi od rpi4, ipak je ovo 1500MHz mashina, trebala bi da pojede ovo! Nisam do sada ni pokusao tajminge, zgrozio sam se kada sam izmerio. Upravo skidam vmplayer, imam jednu virtualnu mashinu gde su mi kompajleri za windows pa da probam isti program na windowsu da vidim sta cu da dobijem


RE: Class D Amplifier - High Quality Power Audio Amplifier - savan - 08-06-2022

Pa daaa nesto je debelo kako ne treba na rpi4, dali je to kernel dali nesto drugo nemam predstavu. Na mojoj win10 mashini rezultat je nula nano sekundi na 100 iteracija! Evo ko hoce da se uveri


RE: Class D Amplifier - High Quality Power Audio Amplifier - Dragan100 - 08-06-2022

(08-04-2022, 06:21 PM)savan Wrote: Nadje tekst, ali nista ne kontam Smile

Trebalo bi kontaktrati @miroslaw.slobazcek
tu je i njegova cijela doktorska dizertacija 8Mb
On je zapravo napravio več kompletan ControlManagment, matematiku i post filter ADC NFB.
Njegov cilj je zapravo Low-Cost implementacija, 
"Final measurements demonstrate practical potential of the class-D power amplifier involving feedback with low-cost signal microcontroller."

 a mi bi htjeli Hi-End classu, nekomercijalnu, pa čemo odabrati i vrhunske komponente.
Tako i za NFB ADC uzet čemo 32Bit umesto 24Bit, pa netreba raditi ni Up-sampling.

Rezime Miroslaw S.:
"The class-D amplifier consists of multi-phase PWM power stage, output LC filter, and feedback loop with differential amplifier, 
ADC converter, and signal microcontroller. The whole system that provides amplification of the audio signal involves the class-D amplifier, 
controlmanagement (CM) unit, and stabilized power supply. 
The amplifier and the CM unit communicate over high speed synchronous interface. 
Due to the LC filter and calculation time the amplifier is modeled by resonant transfer function with delay. 
PID algorithm is chosen for feedback control, with settings obtained by pole-zero cancellation and phase margin requirement. 
Optimized machine language program with pipeline processing implements the algorithm. 
Robustness with respect to parameters of the LC filter and loudspeaker load are examined. 
A method for practical application of the loaded audio system is developed, involving fast automatic measurement of frequency characteristics and calculation of controller settings. 

Performance of the amplifier can be improved by compensating the delay using additional feedback loop with Smith predictor also implemented in machine language."
 


RE: Class D Amplifier - High Quality Power Audio Amplifier - mikikg - 08-06-2022

Mora sam da se ukljucim jer vidim da ste malo krenuli na pogresnu stranu Smile

Ja lepo rekoh da na GPIO + linux ne racunate mnogo jer se desavaju upravo te stvari koje ste spomenuli!
Ne moze to linux niti Windows da radi, ni Intel i7 ne moze tako da barata sa GPIO ...
Kod Windows 0 nano sekundi 100 iteracija, to je Microsoft, stari prevaranti : ), moze samo tako da pise ali na GPIO to nikad nece tako da izadje!

STM32 ce bolje te stvari da radi od i7, jbg, to je tako i tesko moze da se promeni.

Svi ti ti OS rade 100 stvari paralelno, tvoju for/loop petlju ima da prekine 200 puta neki interapti, sys pozivi i gomila stvari koje nisi svestan da se desavaju ...


RE: Class D Amplifier - High Quality Power Audio Amplifier - mikikg - 08-06-2022

Eventualno, jedina varijanta koja moze nekako da tacno slozi vremena na GPIO je SPI modul i to samo zato sto to radi posebno parce HW, CPU samo gurne u buffer a sam SPI to izbacuje napolje bit po bit sa 0% zavistnosti od CPU.


RE: Class D Amplifier - High Quality Power Audio Amplifier - savan - 08-06-2022

Znam Miki ali kako onda funkcionise neki audio plejer na rpi4 kad cpu nije u stanju da odradi ovu jednostavnu konverziju vremena i radi je sa kasnjenjem od 1000++ns , ne razumem stvarno, mora da ima neka caka


RE: Class D Amplifier - High Quality Power Audio Amplifier - mikikg - 08-06-2022

Uglavnom radi dedicated HW (I2S), CPU samo "dotura" semplove u buffer, uglavnom uz pomoc DMA jer ni to bez DMA nebi stizalo na vreme ...
Bilo kakvo petljanje (sinhrono) sa tim modulima (SPI, I2S, USART i slicno) je osudjeno na probleme, cak i sa MCU je to problematicno, malo manje nego sa CPU ali generalno je problem.

Zato sam u startu preporucio multy-core MCU koji nekako mogu da se izbore sa tim stvarima relativno dobro.


RE: Class D Amplifier - High Quality Power Audio Amplifier - savan - 08-06-2022

Ne verujem, tu je nesto drugo u pitanju, nemoguce da na cpu ovih 100 iteracija clock_gettime https://pastebin.com/WtMCZAJS radi 40000ns


RE: Class D Amplifier - High Quality Power Audio Amplifier - mikikg - 08-06-2022

Hehe, ne mora da mi verujes, ja ti samo prenosim neko prakticno iskustvo koje imam, 10+ godina sa RPi-evima, 30+ godina sa RISC procesorima, 40+ godina sa CISC procesorima Smile

Ja jos uvek nisam nasao "modul" koji bi mogao da zadovolji CD kvalitet u Power-domain, najbolji do sad je TI Piccolo i Delfino sa onim njihovim super-mega HR-PWM ...

Kada bi to moglo tek tako sve da radi, imaju ljudi "ozbiljnije" zahteve za motor-kontrolom, ili razni DC/DC pretvaraci, kako bi svi oni voleli makar 16bit pri "tricavih" 20-30kHz kontrolnog BW, ih to je "puna kapa", ali ne moze ni toliko Sad

Mi jurimo 20+ bitova na 100+ kHz, prilicno optimisticno Smile


RE: Class D Amplifier - High Quality Power Audio Amplifier - savan - 08-06-2022

Verujem ti, nego onda je sve laz i da je rpi4 na 1.5ghz. Probao sam na linux virtualnoj mashini na racunaru gde mi je win10, 100 iteracija odradi za 1100ns, cpu je intel i5 3.5ghz, po iteraciji je znaci desetak ns, da nije virtuelne mashine verovatno bi bilo daleko brze. A na pi4 koji je deklarisan na 1.5ghz skoro 40x sporije, sta tu nije u redu?


RE: Class D Amplifier - High Quality Power Audio Amplifier - mikikg - 08-06-2022

Tu je odprilike sve u redu, samo si prevideo da je RPi sa RISC procesorom a Intel je sa CISC procesorom/arhitekturom.
Jedan core CISC-a moze mnoooogo vise stvari da uradi u istom vremenskom periodu (pri istim clock) nego RISC koji mora neke "kompleksne" instrukcije da odradi sa desetinama i stotinama "prostijih" instrukcija.

CiSC je u sustini uzasno kompleksna arhitektura, ima mnogo specificnih internih jedinica koje cine jezgro i to je sve predstavljeno "kompleksnim setom instrukcija" kojih ima nekoliko hiljada i to je u sustini glavna razlika u odosu na RISC koji ima "redukovan/skracen set instrukcija" i ima ih par stotina.
CISC zbog svoje kompleksnosti trosi drasticno vise struje, reda 100W za desktop modele u poredjenu sa RISC koji trosi 1-2W.

Kada se to sve sabere/oduzme dobiju se te vrednosti koje si ti dobio tako da je to sve ocekivano ponasanje.


RE: Class D Amplifier - High Quality Power Audio Amplifier - savan - 08-06-2022

Ok ok, vidim sad sta bi mogao biti problem https://stackoverflow.com/questions/45863729/clock-gettime-might-be-very-slow-even-using-vdso , reci mi dali si probao timing preko bcm2835_peripheral syst ? Ovo sam isto nasao https://iosoft.blog/2020/05/25/raspberry-pi-dma-programming/


RE: Class D Amplifier - High Quality Power Audio Amplifier - mikikg - 08-06-2022

Nisam to probao, verovatno da moze bolje da radi sa DMA, valja probati, mada ni to sigurno nije magicno resenje, neki zaglup ce da iskoci sigurno na drugom mestu ...

Opet kazem, CD kvalitet sa "direktnom modulacijom" je vrlo tesko izvodljiv.
Indirektno preko DAC pa neki samooscilujuci izlazni stepen je ipak realnije resenje ...


RE: Class D Amplifier - High Quality Power Audio Amplifier - savan - 08-06-2022

Napravio sam ovako https://pastebin.com/kdtJGZBh , na 100 iteracija dobijam rezultat 3. E sad stvarno ne znam koliki je vremenski 1 tick, mozda bi ovako moglo precizno da se podesi nano sekunda? Predlozio sam kako bi se moglo probati https://forum.yu3ma.net/thread-2651-post-122223.html#pid122223 hardwerski, odatle imamo direktnu pdm modulaciju na hi i lo od polumosta a ulaz nam je dsd (i2s)! Moze i direktno na Draganovu shemicu https://forum.yu3ma.net/thread-2651-post-122224.html#pid122224


RE: Class D Amplifier - High Quality Power Audio Amplifier - mikikg - 08-06-2022

Ne mogu da otvorim tu sliku sa trenutnog provajdera, nesto SSL handshake zeza ...

Uglavnom, precizna tacna i stabilna vremena odprilike da nikako ne mozes da dobijes sa Cortex-A niti sa CISC, cak ni sa Cortex-M je to upitno jer ne mozes da delis i seckas osnovni clock, nema 3/4 clocka, nema 1/1.1756 clock ratio i slicno, ne moze da se secka clock ne-binarnim vrednostima (samo 2,4,8,16,32 itd), osim ako nema dedicated-PLL iskljucivo za to.

Zato smo videli na onim XMOS plocicama tacno potrebne vrednosti clocka/oscilatora koje mogu da se binarno dele ili da se ne dele uopste nego sve radi 1:1 pa se paralelnim procesiranjem snalaze da odrade matematiku dok se binarni stream ispucava iz buffera.


RE: Class D Amplifier - High Quality Power Audio Amplifier - mikikg - 08-06-2022

Inace, RPI koristi "bezobraznu" metodu generisanja specificnih frekvencija za Audio potrebe.
Posto nema PLL za tu namenu, jedno od resenja koje su smislili se svodi na "integriranu" vrednost, recimo za primer da kontroler moze da proizvede samo frekvencije od 2MHz i od 4MHz a nama kao za inat treba na primer 3MHz, kako to resiti?
Ovi iz RPi su smislili da puste malo 2MHz, pa malo 4MHz i tako stalno menjaju u krug da bi to u "duzem" vremenskom periodu ispalo kao da radi na 3MHz a u sustini ne radi na toliko nego to vrljavi tamo-vamo i zato se RPi bez reclocking i buffera cuje uglavnom odvratno!


RE: Class D Amplifier - High Quality Power Audio Amplifier - savan - 08-06-2022

https://datasheets.raspberrypi.com/bcm2711/bcm2711-peripherals.pdf u sekciji 10.1. (The System Timer peripheral provides four 32-bit timer channels and a single 64-bit free running counter) ne znam ali ako bi se uspelo pristupiti direktno ovim registrima moglo bi nesto d bude od toga mozda. Ja nemam zamerku na I2S zvuk sa rpi4


RE: Class D Amplifier - High Quality Power Audio Amplifier - savan - 08-06-2022

Jos nesto zanimljivo https://github.com/isometimes/rpi4-osdev