Forum: Digitale Signalverarbeitung / DSP / Machine Learning Phasenkorrektur eines DSP Chips von STM (STA311b)


von Matthias (matthiasm)


Lesenswert?

Hi zusammen,

ich bastle grad einen kleinen Amp mit STA311b als DSP und PWM Treiber 
sowie PCM4202 AD Wandler.

Läuft soweit auch, wenn ich jetzt nun die Phase messe (von Analog in des 
PCM4202) nach Analog out (hinter LC Filter des PWM Ausganges) dann habe 
ich eine sehr unruhige Phase ab etwa 1kHz.

Ich habe mich bewusst für den PCM4202 entschieden da dieser eine sehr 
lineare Phase hat. Die Phasenschweinerei muss also im STA311b entstehen. 
Gibt es eine Möglichkeit die Phase zu linearisieren? Eventuell über 
Filter Coeffizienten?

Wie wird das üblicherweise gemacht?

Danke, Gruß
Matthias

von Detlef _. (detlef_a)


Lesenswert?

>>Die Phasenschweinerei muss also im STA311b entstehen.

kann doch auch das LC Filter sein!?

Cheers
detlef

von Matthias (matthiasm)


Lesenswert?

Detlef _a schrieb:
> kann doch auch das LC Filter sein!?

Nein das habe ich bereits gemessen, Phasenverzug über den LC Filter 
beträgt max. 5°.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Phasenverlauf eines Biquad kann recht überraschend sein:
http://www.kvraudio.com/forum/viewtopic.php?p=5225317
Eine endgültige Lösung wird mit dem STA vermutlich nicht möglich sein, 
denn die Biquads sind da fest eingebaut, so zumindest lese ich die Intro 
bei STM.

: Bearbeitet durch User
von Matthias (matthiasm)


Lesenswert?

Matthias Sch. schrieb:
> Phasenverlauf eines Biquad kann recht überraschend sein:
> http://www.kvraudio.com/forum/viewtopic.php?p=5225317
> Eine endgültige Lösung wird mit dem STA vermutlich nicht möglich sein,
> denn die Biquads sind da fest eingebaut, so zumindest lese ich die Intro
> bei STM.

Ja die Biquads sind fest eingebaut aber eben nicht gesetzt. Sprich 
aktuell sind alle Werte auf Default und die DSP Einheit steht auf 
Bypass.


Aber mein Phasenverlauf macht genau solche Sprünge wie im verlinkten 
Artikel der zweite Beitrag. Immer im Zickzack.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Matthias Machmal schrieb:
> Aber mein Phasenverlauf macht genau solche Sprünge wie im verlinkten
> Artikel der zweite Beitrag. Immer im Zickzack.

Hmm, das spricht doch aber dafür, das da noch eines aktiv ist. Welches 
das ist, könntest du ja herausfinden, indem du nach der aktiven Frequenz 
schaust. Sind da noch irgendwelche Loudness- oder Bass/Treble Filter 
aktiv?

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Zeig doch mal einen Plot, sonst kann man nur raten was dein Problem ist.

von Matthias (matthiasm)


Lesenswert?

Matthias Sch. schrieb:
> Hmm, das spricht doch aber dafür, das da noch eines aktiv ist. Welches
> das ist, könntest du ja herausfinden, indem du nach der aktiven Frequenz
> schaust. Sind da noch irgendwelche Loudness- oder Bass/Treble Filter
> aktiv?

Mal sehen, ich schau mir das heute Abend nochmal an ...

> Zeig doch mal einen Plot, sonst kann man nur raten was dein Problem ist.

... und erstelle ein Plot.

von Martin O. (ossi-2)


Lesenswert?

Bei einem Filter mit konstanter Gruppenlaufzeit ändert sich die Phase 
linear mit der Frequenz und "springt" dann ab und zu scheinbar um 360 
Grad. Vielleicht ist das schon alles...

von Detlef _. (detlef_a)


Lesenswert?

>>Vielleicht ist das schon alles...
In dem plot springen die Phasen nicht um 360° (das ist auch kein Sprung 
sondern ein Darstellungsproblem) sondern um 180 Grad. Und das passiert 
genau dann, 'wenn man mit der Frequenz an einer Polstelle langgeht, die 
nahe am Kreis liegt', um das mal so salopp aber in Gänsefüßchen zu 
sagen. Du hast im DSP noch biquads zu laufen, die sind nicht abgestellt.

Cheers
Detlef

von Matthias (matthiasm)


Angehängte Dateien:

Lesenswert?

So ich hab nun die gewünschten Plots.

Drei Stück:

- Einmal nur den LC Ausgangsfilter (vom PWM Out des DSP bis zur 
Lautsprecherklemme).

- Einmal das komplette System vom Analog Input bis zur 
Lautsprecherklemme

- Einmal nur die Vorstufe vor dem PCM4202 (aufgebaut mit OPA1632 wie im 
Datenblatt des PCM4202 vorgegeben)

Die Plots sehen alle bis auf das über den DSP sehr gut aus (meine 
Meinung). Alle durch den "User" programmierbaren DSP Funktionen, Treble, 
Xover, Loudness und Biquads sind abgeschaltet.


Zum Test habe ich auch mal ein paar Biquads erstellt. Dies ergibt nur 
leichte Unterschiede zum komplett deaktivierten DSP (aber ja, es wird 
dadurch noch "schlimmer").

Jemand eine Ahnung woran das noch liegen kann?

Achja, Verbindung ADC -> DSP läuft mit PCM I2S 96kHz 256fs 24.576Mhz 
Masterclock.

Danke!

von Matthias (matthiasm)


Angehängte Dateien:

Lesenswert?

So, Nachtrag!

Mit einer Samplingfrequenz von 192kHz wurde es drastisch besser! 
Vermutlich weil der DSP dann kein Oversampling mehr machen muss.

So ganz gefällt es mir aber trotzdem noch nicht...

von Detlef _. (detlef_a)


Lesenswert?

Der Sprung um annähernd 360° scheint mir ok aber ne lineare Phase ist 
das nicht. Warum ist bei bypass aller Filter der Phasengang abhängig von 
der samplefrequenz !?

Cheers
Detlef

von Matthias (matthiasm)


Lesenswert?

Detlef _a schrieb:
> Der Sprung um annähernd 360° scheint mir ok aber ne lineare Phase ist
> das nicht.

Ja, leider...

> Warum ist bei bypass aller Filter der Phasengang abhängig von
> der samplefrequenz !?

Vielleicht weil der DSP intern nativ mit 192kHz arbeitet und dann kein 
oversampling mehr notwendig ist?

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Matthias Machmal schrieb:
> Vielleicht weil der DSP intern nativ mit 192kHz arbeitet und dann kein
> oversampling mehr notwendig ist?

Hmm, oversampling sollte aber nicht die Ursache für Phasendreh sein, im 
Gegenteil. Da der Dreh bei 5kHz und etwa 16kHz noch da ist, spricht das 
für mich dafür, das da noch ein Filter im Spiel ist.
Abhängig von der Samplingfrequenz schaltet der STA vermutlich 
Antialiasing Filter dazu, die könnten evtl. die Ursache sein, wenn du 
den DSP selbst ausschliessen kannst.

von Matthias (matthiasm)


Lesenswert?

Hmm leider kann man im STA311 nicht allzuviel rumkonfigurieren.

Alle Register die mir dahingehend interessant schienen wie z.B. Noise 
Shaper habe ich bereits durchgeforstet und getestet.

Hab das jetzt auch mal an den ST Support weitergegeben. Mal sehen was 
die dazu sagen. Vielleicht können die ja auch einen Phaseplot aus ihrem 
Labor veröffentlichen.

Danke aber schon mal für die Unterstützung.

von Matthias (matthiasm)


Angehängte Dateien:

Lesenswert?

Ich komme leider nicht weiter... so ein Mist. Mich ärgert das weil meine 
zwei Halbbrücken und das ganze Drumherum echt super läuft, nur der DSP 
zickt rum. Hab testweise auch mal einen TAS5558 verwendet mit leider 
noch schlechterem Ergebnis.

Was mache ich denn falsch? Ich habe einen AD Converter (mittlerweile 
schon drei verschiedene versucht), dann gehe ich mit I2S in den STA311b 
DSP (alle möglichen Samplingraten bis 192khz schon durch) und 
anschließend kommen zwei IRS20124 Brückentreiber und die Ausgangsfets 
sowie ein LC Filter.

Ich hab auch schon den PWM Ausgang des STA311b auf verschiedene Art und 
Weisen gefiltert um direkt am DSP Ausgang zu messen. Auch dort sieht die 
Phase nahezu identisch aus wie der Ausgang. Daher schließe ich die 
Ausgangsstufe samt dem LC Filter mal als Fehlerquelle aus.

Jemand eine Idee was ich noch machen könnte? ich bin mittlerweile 
ratlos, hab schon sämtliche Register des STA311b durchforstet, 
verschiedenste PLL Konfigs durchgetestet... MEEEENSCH!!

Anbei noch ein paar Scope Bilder bei verschiedenen Frequenzen. Man sieht 
auch hier sehr schön wie der Eingang (gelb) vom Ausgang (grün) abweicht. 
So macht das natürlich keinen Sinn :(

Vor allem dass es mit dem TAS5558 von TI noch schlechter aussieht 
wundert mich. Es hat also definitiv was mit dem DSP zu tun. Sind diese 
"Out-of-the-box" DSPs wirklich so grottig? Muss ich eventuell auf einen 
Blackfin oder Xmos etc umstiegen und alles selbst erstellen?

Ich bin um jede Hilfe dankbar!!

: Bearbeitet durch User
von Martin O. (ossi-2)


Lesenswert?

Wie sieht der Amplitudengang aus ?
Wie sieht der Phasengang aus, wenn man die Frequenz linear darstellt
(und nicht logarithmisch wie in einem der obigen Bilder)?
Wie sieht die Gruppengeschwindigkeit in Abhängigkeit von der Frequenz 
aus?

: Bearbeitet durch User
von Matthias (matthiasm)


Angehängte Dateien:

Lesenswert?

Martin O. schrieb:
> Wie sieht der Amplitudengang aus ?

(siehe Bild) Gemessen direkt am PWM Pin des STA311b mit 680 Ohm und 
4.7nF als Tiefpass, PWM Frequenz: 384kHz.

> Wie sieht der Phasengang aus, wenn man die Frequenz linear darstellt
> (und nicht logarithmisch wie in einem der obigen Bilder)?

(siehe Bild) ebenfalls am PWM Pin des STA311b wie oben beschrieben 
gemessen. Zum Vergleich auch ein Bild des selben Phasengangs in log. 
Darstellung.

> Wie sieht die Gruppengeschwindigkeit in Abhängigkeit von der Frequenz
> aus?

(siehe Bilder) konstante 155µS (was in Bezug auf die Phase keinen Sinn 
macht, oder?)

: Bearbeitet durch User
von Martin O. (ossi-2)


Lesenswert?

Ich wage jetzt mal ne Interpretation:
Wenn "unkontrollierte/störende/zufällige" Filter aktiviert wären,
wären  vermutlich weder Verstärkung noch Gruppenlaufzeit so schön
konstant über den weiten Frequenzbereich wie beobachtet.

Die Signalverarbeitung im IC führt zu insgesamt ca. 155us Verzögerung,
was zu dem beobachteten (sehr linaren) Phasengang führt.
Die "Phasensprünge" sind der Darstellung geschuldet.

Vermutlich ist die Welt also in Ordnung...

von Matthias (matthiasm)


Lesenswert?

Martin O. schrieb:
> Ich wage jetzt mal ne Interpretation:
> Wenn "unkontrollierte/störende/zufällige" Filter aktiviert wären,
> wären  vermutlich weder Verstärkung noch Gruppenlaufzeit so schön
> konstant über den weiten Frequenzbereich wie beobachtet.

Ja, wie gesagt die DSP Einheit steht auf Bypass.

>
> Die Signalverarbeitung im IC führt zu insgesamt ca. 155us Verzögerung,
> was zu dem beobachteten (sehr linaren) Phasengang führt.
> Die "Phasensprünge" sind der Darstellung geschuldet.
>
> Vermutlich ist die Welt also in Ordnung...

Hmm... meinst wirklich? Man sieht aber aufn den Oszi Bildern (4 Posts 
weiter oben) auch sehr deutlich dass das Ausgangssignal nicht konstant 
mit dem Eingang "mitläuft". So wirklich linear sieht mir das nicht aus.

von Martin O. (ossi-2)


Lesenswert?

Beachte:
"Konstante Zeitverschiebung" ist nicht "konstante Phasenverschiebung".

Während 100us bei 100Hz fast keine Phasenverschiebung sind,
sind 100us bei 10kHz schon 360 Grad.

von Matthias (matthiasm)


Lesenswert?

Martin O. schrieb:
> Beachte:
> "Konstante Zeitverschiebung" ist nicht "konstante Phasenverschiebung".
>
> Während 100us bei 100Hz fast keine Phasenverschiebung sind,
> sind 100us bei 10kHz schon 360 Grad.

Hmm ABER ist es nicht Sinn und Zweck eines konstanten Group Delays alle 
Frequenzen als "Gruppe" zu behandeln und gleichmäßig durch den DSP zu 
schicken?

So hab ich das zumindest mal gelernt.

Mein Problem ist dass ich das Signal was rauskommt mit dem Eingang 
vergleichen möchte und das stellt sich aktuell als nahezu unmöglich dar.

von Martin O. (ossi-2)


Lesenswert?

....dass ich das Signal was rauskommt mit dem Eingang
vergleichen möchte und das stellt sich aktuell als nahezu unmöglich dar.

Wenn ein System eine Gruppenlaufzeit von T hat, muss Du das
Ausgangssignal mit dem um T verschobenen Eingangssignal
vergleichen, was bei T=150uS mit einem einfachen Oszilloskop
schwer sein dürfte, weil Du die Kanäle um 150us gegeneinander
verschieben musst.

Ob und mit welchen Digital-Skopes das geht weiss ich nicht....

Schick doch mal nen "weichen Puls" mit 100us Dauer durchs
System und schau wann und wie verformt er rauskommt.

von Martin O. (ossi-2)


Lesenswert?


von Detlef _. (detlef_a)


Lesenswert?

Matthias Machmal schrieb:
>> Vermutlich ist die Welt also in Ordnung...
>
> Hmm... meinst wirklich? Man sieht aber aufn den Oszi Bildern (4 Posts
> weiter oben) auch sehr deutlich dass das Ausgangssignal nicht konstant
> mit dem Eingang "mitläuft". So wirklich linear sieht mir das nicht aus.

Es ist alles gut, sehe ich auch so.

lineare Phase = konstante Gruppenlauzeit = konstante 'Durchlaufzeit'

155us, ist doch ok. Was meinst Du mit 'mitläuft': Wenn Du die Frequenz 
hochdrehst ändert sich natürlich die Phase zwischen Eingang und Ausgang.

Cheers
Detlef

von Matthias (matthiasm)


Lesenswert?

Hmm dann habe ich da wohl eine falsche Auffassung.

Meiner Ansicht nach sollte der Phasenwinkel zwischen Ein- und 
Ausgangssignal über den Bereich des Nutzsignales (20Hz-20kHz) konstant 
bleiben.

Aaaaber gut wenn das natürlich anders ist dann lag der Fehler die ganze 
Zeit bei mir :-(

von Detlef _. (detlef_a)


Lesenswert?

>>>>>>
Meiner Ansicht nach sollte der Phasenwinkel zwischen Ein- und
Ausgangssignal über den Bereich des Nutzsignales (20Hz-20kHz) konstant
bleiben.

Nein, der Phasenwinkel wird größer. Das ist intuitiv einzusehen:
Der Puls oder der Sinus hat eine konstante Durchlaufzeit durch das 
System. Dieser konstanten Zeit entspricht bei hohen Frequenzen 'mehr 
Winkel', um das mal so salopp zu sagen. Also man braucht lineare Phase 
und deren Ableitung ist konstant, das ist die Gruppenlaufzeit.

Cheers
Detlef

von Matthias (Gast)


Lesenswert?

@lineare phase & gruppenlaufzeit:

Beitrag "Re: Linearphasig"

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.