Hallo,
ich will einen Stereo-Vorverstärker mit Equalizer und Ansteuerung mit µC
bauen. Um eine analoge Lösung zu umgehen (wegen der vielen
Kondensatoren), nehme ich einen Audio DAP TAS3002 von TI.
http://focus.ti.com/lit/ds/symlink/tas3103.pdf (Datenblatt)
Die Ansteuerung vom µC her klappt. Leider habe ich von digitaler
Signalverarbeitung nur wenig Wissen, so dass es mir schwer fällt, die
Biquad-Koeffizienten für den Equalizer (a1, a2, b0, b1, b2) für die
jeweilige BP-Frequenz zu bestimmen. Matlab und ALE habe ich nicht zur
Verfügung.
Gibt es ein freies Tool, was mir helfen könnte? Meine Suche war bisher
ohne wirkliches Ergebnis.
Gruß
Matthias
also filterkoeffizienten zu ermitteln gibt es einige tools. z.b. filter
solutions von nuhertz.
aber auch im web gibts einige adressen (sorry habe gerade keine parat)
schau auch mal in das buch "Digitale Signalverarbeitung" von Udo Zölzer.
Da stehen auch formeln für peaking/shelving filter drin.
In meinem Audio-Projekt nutze ich die Formeln vom Udo Zölzer (sind in
Delphi/Pascal geschrieben).
Geh mal auf "Audio-Projekt mit Spartan 3-FPGA".
Da gibts einen Snapshot des SVN Repositories. Da kannst du dir die
Sourcen anschauen.
Habe selbst mit TAS3103 gearbeitet. Mein TAS3004 funktioniert zwar auch,
aber da funktionieren die Filter leider nicht (warum habe ich nicht
herausgefunden).
Gruß
Rene
Danke für die Tipps. Wirklich weiter bin ich nicht gekommen. Das Nuhertz
Filterprogramm habe ich installiert, komme aber nicht klar damit.
Bei der Google-Suche taucht immer wieder der Hinweis auf "Filterexpress
Version 4 der Fa. SYSTOLIX" (Freeware) auf. Leider sind alle
Downloadlinks dorthin tot. Gibts das Programm nicht mehr? Vielleicht hat
es noch jemand auf seiner Platte?
wenns nur um die koeffizienten geht dann kannst du dir ja die delphi
dourcen des audio-projekts ansehen :
http://www.mikrocontroller.net/download/audiodsp-snapshot.tar.gz
unter \delphi\dap_demos\common\coeffs.pas
werden die koeffizienten berechnet. vielleicht hilfts weiter.
beim nuhertz programm muß man selbst noch etwas "hand anlegen" da die
koeffizienten nicht in der form b0,b1,b2,a1,a2 berechnet werden.
also umstellen.
>wenns nur um die koeffizienten geht dann kannst du dir ja die delphi>dourcen des audio-projekts ansehen :>http://www.mikrocontroller.net/download/audiodsp-s...
Ich habe mich damit beschäftigt. Da ich kein Delphi habe, habe ich die
betreffenden Routinen in C nachprogrammiert. Nun habe ich einige
Musterkoeffizienten von anderen TAS.. Projekten versucht damit
nachzuvollziehen. Leider kommen damit nicht die gleichen Koeffizienten
raus.
>beim nuhertz programm muß man selbst noch etwas "hand anlegen" da die>koeffizienten nicht in der form b0,b1,b2,a1,a2 berechnet werden.>also umstellen.
Hast Du ein Beispiel parat?
>Leider kommen damit nicht die gleichen Koeffizienten raus.
aufpassen ! ich verwende bei meinen koeffizienten (tp,bp,hp,notch) eine
halbton-skala.
allerdings bin ich mir auch nicht 100% sicher ob die im tas300x nicht
eine andere direktform implementiert haben.
es gibt 2 arten das zu implementieren (einmal mit 2, einmal mit 4
verzögerungsgliedern).
es lassen sich (soweit ich das verstanden habe) beide ineinander
umrechnen.
vielleicht liegt da der hase im pfeffer.
>Leider kommen damit nicht die gleichen Koeffizienten raus.
kannst du mal ein beispiel nennen (sprich beispiel koeffizienten-satz
und einen berechneten mit den dazugehörigen parametern) ?
das du ein beispiel hast finde ich bemerkenswert. hatte (damals) auch
danach gesucht aber nichts brauchbares gefunden.
>Hast Du ein Beispiel parat?
leider nicht da ich mit nuhertz nur kurz "gespielt" habe.
p = 240; <- hier liegt das problem. das meinte ich mit halbtonskala
q = 2;
versuchs mal so :
p = 240; // Beispiel jetzt in HZ
q = 2; // Beispiel jetzt mit "echtem" Güte-Parameter
f0 = p;
k = tan (PI * fo / 44100);
kq = k * k;
qr = sqrt (q);
die halbtonskala ist KEINE frequenz. ich brauch(t)e die halbtonskala um
den filter "synthesizer-kompatibel" zu machen.
ebenso das q. q gibt direkt die güte an. so wie du es verwenden wolltest
ist es normiert auf -1 - +1 (ebenfalls für meine synthesizer sachen ->
resonanz bei filtern)
vergleiche die werte nochmals.
es kann aber trotzdem noch sein das die beim tas300x eine andere
direktform verwenden. bin mir da nicht ganz sicher.
gruß
rene
>Filter Builder
dieses tool hätte mich auch noch interessiert. allerdings funktionierte
meine koeffizientenberechnung mit dem TAS3103 so gut das ich letzlich
darauf verzichtet habe.
andere filter (höherer ordnung) habe ich relativ schnell selbst
herleiten/zusammenbauen können.
wäre aber trotzdem ein schönes tool gewesen :-(
Dank Deiner Hilfe bin ich wieder etwas weiter gekommen. Das Programm
habe ich oben bei den Eingangswerten etwas angepasst. Jetzt folgender
Effekt:
- A0 und A1 stimmen ziemlich genau
- B0 und B2 haben den doppelten Wert gegenüber dem Musterbeispiel
genaue Werte siehe Bild der Anlage
Wenn ich die Samplingfrequenz auf 192kHz setze, stimmt auch B0 und B2
weitgehend überein. Das dürfte aber kaum stimmen da die TAS nur bis
96khz sampeln können. Siehst Du noch irgenwo einen Rechenfehler?
Ich bekomme die Berechnung nun auch mit dem Nuhertz-Programm "Filter
Free 2007" hin. Die Werte des Musterbeispiels kann ich damit weitgehend
bestätigen. (Mus demnach im c-Programm irgendwo noch ein Fehler sein.)
Bandpass 160 Hz bis 320 Hz
Sollwerte TAS3103 aus Musterbeispiel
b0 = 0.004922403444228 = 0x0000A14C
b1 = 0.000000000000000 = 0x00000000
b2 = -0.004922403444228 = 0x0FFF5EB3
a1 = 1.989121026148440 = 0x00FE9B84
a2 = -0.990155193111544 = 0xFF814298
Ergebnis, siehe Bild Anlage
@matthias
freut mich das ich helfen konnte :-)
sag mir mal bescheid ob es bei deinem tas3002 klappt.
habe bei mir das problem das sobald ich einen filter-koeffizienten-satz
reinschreibe nur noch rauschen rauskommt (egal ob ein signal anliegt
oder nicht).
schreibe ich allerdings einen lautstärkekoeffizienten hinein (also b0 =
x, b1=b2=a1=a2=0) funktionierts (lautstärke ändert sich).
egal wie ich es mache das dingen fängt sofort an zu rauschen.
jetzt weiß ich nicht ob ich zu blöd bin das teil zu programmieren oder
ob es eine macke hat. letzteres vermute ich eher, denn selbst wenn ich
bass/treble werte setze (die ja vom tas300x selbst "berechnet" werden)
rauschts nur noch.
dynamikeinheit habe ich noch nicht getestet. mir gings auch erstmal nur
um den tas als codec, und das hat funktioniert (wäre auch schlecht wenn
nicht :-)
ich verwende übrigens einen tas3004.
gruß
rene
Ich habe das Testboard mit dem TAS3002 zur Zeit nicht zur Verfügung (war
nur geborgt), bin aber dabei mir selber einen Vorverstärkter damit zu
bauen. Kanns also jetzt nicht praktisch testen. Leider bekommt man die
TAS300x nur schwer zu kaufen, Digikey hat sie aber auf Lager.
Hast Du noch eine Idee, warum bei b0, b2 die doppelten Werte rauskommen?
Ich wollte die Routine zur Berechnung der Koeffizienten mit in den µC
übernehmen, um die Bandpässe während der Laufzeit anpassen zu können.
Gruß Matthias
>Leider bekommt man die TAS300x nur schwer zu kaufen
habe meinen als sample bei ti bestellt. probiers mal. die sind
eiegentlich (hoffentlich immer noch) recht locker drauf, solange man es
nicht überstrapaziert.
genauer habe ich mir den sachverhalt mit den doppelten werten nicht
angeschaut.
check es mal mit einem tiefpass gegen, wenns geht. vllt. habe ich beim
delphi programm auch einen fehler gemacht, da ich den bandpass noch
nicht so ausgiebig getestet habe.
der tiefpass müsste passen. den habe ich mit anderen implementationen
(von meiner ehemaligen firma) gegengeprüft. die passen bis aufs letzte
bit genau.
TAS3002 + TAS3004 gibt es noch bei DigiKEY. Die werden von TI aber nicht
mehr für Neuentwicklungen empfohlen.
@ hättest du vor Jahren als ich dich mal um Details zu deinem TAS board
gefragt habe geantwortet hättest du vielleicht damals schon den Link zum
Filterbuilder von mir bekommen (den konnte man damals noch bei TI runter
laden und ich dachte du hast den schon). Ich hab dann aber dein Projekt
(und die TAS im allgemeinem) aus den Augen verloren.
Ich möchte den nicht hier einstellen , weil ich nicht weiß ob TI das mit
den Urheberrechten sieht. Man kann ihn aber wohl hier herunterladen:
http://www.diyaudio.com/forums/showthread.php?s=2bc2fd9ec8ccf89eb5e349165db3a9a4&threadid=7754&perpage=25&pagenumber=18
Gruß
>hättest du vor Jahren als ich dich mal um Details zu deinem TAS board>gefragt habe geantwortet hättest du vielleicht damals schon den Link zum>Filterbuilder von mir bekommen
sorry wenn ich das damals überlesen habe. war keine absicht.
ich bin mittlerweile von den tas weg, da mir der beschaltungsaufwand für
den tas als codec zu hoch ist, und die zusatzfunktionen (filter) wären
halt nur interessant gewesen wenn auch die resonanz für das
audio-projekt etwas höher gewesen wäre (bevor ich den
audio-projekt-artikel geschrieben habe).
nun bin ich bei den tlv-codecs und da werde ich (solange es die noch
gibt) erstmal bei bleiben.
mehr brauche ich fürs audio-projekt ja nicht.
nochmals sorry das ichs überlesen hab.
gruß
rene
Du darfst (must) Werte nur in die blauen Felder eintragen (steht inputs
-drüber). Ich habe sie eben zum testen nochmal runtergeladen funzt 1A.
Ich verwende allerdings auch OpenOffice (version 2.3). Das ist nicht nur
kostenlos sondern wohl auch kompatibler zu Excel als Excel ;-)
Das mit den blauen Feldern ist mir klar. Es klappt aber trotzdem nicht.
Bei Office 2000 geht es garnicht, bei Office 97 nur mit den Werten, die
im Original eingetragen sind, sobald man andere Eingangswerte einträgt,
kommt Fehler, das die Berechnung nicht erfolgen kann, sinngemäß.
Hatte ich auch (Excel in der Firma) da da wohl einige Komponenten /
Module nicht Installiert waren. Zuhause dem verwende ich nur OpenOffice
- ohne Probleme. Vielleicht ist bei deinem Download oder beim Entpacken
was schief gegangen. Ich würde es noch mal runterziehen. Ansonsten:
OpenOffice ist kostenlos.
Ich schmeiß mich weg vor lachen. Das gleiche Excel ! Sheet (die selbe
Datei) das mir unter OpenOffice 2.3 einwandfrei die Koordinaten
berechnet und wunderschön den Frequenzgang darstellt habe ich heute mal
mit Excel 97 testen können => läuft nicht. OK das Erstellungsdatum ist
16.06.2000. Aber du (Matthias) schreibst ja das es unter Office 2000
auch nicht funzt.
Ich habs auch nochmal runtergeladen. Läuft nicht, deshalb hat TI es
vielleicht vom Server genommen. Weißt Du, wo man die verwendeten
Funktionen im Excel findet? Die müssen doch irgendwo in der Datei
gespeichert werden. Ich bin leider kein Excel-Spezi. Komisch ist, das
beim starten der Datei die Grafik für einen Sekundenbruchteil angezeigt
wird;-)
Da sind keine Makros im einsatz alle Verwendeten Formel stehen in den
jeweiligen Zellen. Ansicht ist ein und ausschaltbar über Extras >
Optionen > Ansicht > Bearbeitungsleisten (Häckchen setzen). Wird aber
nicht viel nützen (zu komplexe verknüpfungen)/ wird sich kaum
nachvollziehen lassen. Du kannst aber unter Extras > Optionen >
Berechnen mal mit den Häckchen spielen vieleicht nützt es was. Wobei ich
nicht verstehe wieso du dir das nicht einfacher machst (OpenOffice).
Habe Openoffice installiert. Damit funktioniert der Filterbuilder nun
auch bei mir. Bei Excel braucht man offenbar noch ein zusätzliches
Plugin. Danke nochmal für den Tipp.
Ich habe es nun doch noch unter Excel (2000) zum laufen bekommen. Unter
Optionen - Add-In muß "Analyse Funktion VBA" angehakt werden. Dann läuft
der Filterbuilder problemlos.