Für meien Master-Thesis würde ich gerne ein DSP-System zur
Audiosignalverarbeitung entwickeln. Das System soll über zwei unbalanced
Eingänge und vier oder sechs unbalanced Ausgänge verfügen. Im DSP sollen
dann 2- oder 3-Wege Stereo-Frequenzweiche, Parametrische Equalizer,
Kompressor, Limiter und Subharmonic synthesizer implementiert werden.
Die Verarbeitung soll in Audiotypischer Samplerate und mit 24Bit
erfolgen. Desweiteren sollen noch ein LCD-Display und ein LED-VU-Meter
angesteuert werden. Über einen I2S-Eingang soll es möglich sein, ein
digitales Stereo-Signal einzukoppeln (beispielweise aus einem
Bluetooth-Audio-Empfänger)
Die Masterarbeit ist noch nicht angemeldet und steht noch ein wenig in
zeitlicher Ferne. Dennoch würde ich mich gerne schon mal mit der
Machbarkeit dieses Vorhabens auseinandersetzen.
Praktisch gesehen werde ich einen DSP-Prozessor auswählen, DACs und ADCs
wählen, die Platine dafür entwickeln und die genannten Features in
Software implementieren. Wenn ich im Zuge der Masterarbeit nicht alle
Features implementiert bekomme weil die Zeit fehlt ist das ok, das
System sollte aber Leistungsfähig genug sein, um die fehlenden Features
später problemlos nachrüsten zu können, da ich es für private Zwecke
weiter verwenden und ausbauen möchte.
Nur wie fängt man da an? Ich nehme an, zuerst suche ich mir einen
passenden DSP-Prozessor aus. Kostenloser C-Compiler ohne Codegrößen-,
Laufzeit- oder Codeoptimierungsbeschränkung ist sicher pflicht. Nun habe
ich aber 1x Stereo Analog In, 1x I2S In, und 3x Stereo Analog Out. D.h.
Ich benötige entsprechend viele Hardware-Kommunikationsschnittstellen am
DSP. Beim Stöbern ist mir jedoch aufgefallen, dass das gar nicht
unbedingt so üblich zu sein scheint. Da ist dann von 2..3
I2S-Schnitstellen die Rede, benötigen würde ich aber gleich mal 5.
Wieder andere DSPs verwenden andere Schnittstellen oder z.B. TDM,
welches aber nur in Verbindung mit einem größeren all-in-one Codec zu
gebrauchen sein dürfte und damit die Auswahl an benutzbaren Bauteilen
einschränkt, da das meiste ja für I2S zu bekommen sein dürfte. Habe ich
nur an der flaschen Stelle gesucht?
Nach welchen Kriterien also sollte ich einen DSP aussuchen?
Gruß, ein Etit-Student
Etit-Student schrieb:> Nun habe> ich aber 1x Stereo Analog In, 1x I2S In, und 3x Stereo Analog Out. D.h.> Ich benötige entsprechend viele Hardware-Kommunikationsschnittstellen am> DSP. Beim Stöbern ist mir jedoch aufgefallen, dass das gar nicht> unbedingt so üblich zu sein scheint. Da ist dann von 2..3> I2S-Schnitstellen die Rede, benötigen würde ich aber gleich mal 5.
Nicht unbedingt.
Die reine Signalverarbeitung ist das eine. Das Routing der Signale ist
das andere. Beides kann, muss aber nicht im gleichen Gerät stattfinden.
Stichwort: Matrix mixer https://en.wikipedia.org/wiki/Matrix_mixer
Mir scheint, Du willst quasi so etwas bauen?
http://www.extron.de/product/printable.aspx?id=dmp64
Nach Möglichkeit wollte ich gerne alles in einem Baustein erledigen,
sonst handle ich mir wieder zusätzlichen Overhead mit der Kommunikation
zwischen Router und Prozessor ein, das wird dann alles wieder eine
Nummer komplizierter.
Ach ja, die Verarbeitung sollte mit 96kHz Samplerate erfolgen damit das
Antialiasing- und Rekonstruktionsfilter einfach gehalten werden kann.
Die Samplingtiefe soll 24Bit betragen um genug Headroom auch für hohe
Eingangspegel zu erhalten.
Hallo,
ich bin gerade an einem ähnlichen Projekt dran:
Grundsätzlich gibt es im großen und ganzen drei Möglichkeiten das
irgendwie zu realisieren.
1.
Es gibt Audio-DSPs wo alles auf einem einzigen IC integriert ist. z.B.
der ADAU1701. AD an Board, DA an Board, bis zu 8 digitale Audio Ein- und
Ausgänge. TI hat da auch paar ähnliche Chips.
Konfiguration bei dem ADAU z.B. erfolgt graphisch, dass du dir da einen
Signalpfad zusammenkonfigurieren kannst.
2.
Du baust dir ein eigenes DSP-System auf. Mit eigenen AD-Wandlern,
eigenen DA-Wandlern und einem dickeren DSP-Baustein.
Das sind dann DSPs, die du wenn du willst direkt in einer Sprache wie
z.B. C Programmieren kannst, wenn du willst um deine eigenen
Filteralgorithmen zu implementieren.
Von der Komplexität natürlich eine deutliche Stufe über das wie in 1.
Du musst ne PLL mit drauf machen um die Master-Clock zu generieren,
musst beim Leiterplattenlayout ein bisschen aufpassen.
3.
Du machst das ganze wie in 2. nimmst aber einen FPGA als Baustein und
baust dir deinen DSP per Hardwaresprache zusammen.
Paramter können ja z.B. über ein I2C Modul von außen trotzdem geändert
werden.
Moin,
Ich schaetz' die Zeitdauer fuer so eine Masterarbeit mal auf <=6 Monate.
In dieser Zeit kann man nicht allzuviel wuppen. Nochdazu weil man ja
auch noch Zeit braucht, dan ganzen Kram auf viele Seiten Papier zu
bringen, sich mit der Textverarbeitung entsprechend
auseinandersetzen,etc. bla.
In dieser Zeit ein komplettes HW-Design eines Multilayer-PCBs ggf. noch
mit DDRx-SDRAM Interface, also impedanzkontrollierten Bussen...
eieiei... das ist "ambitioniert".
Davon ausgehend wuerd' ich eher die Sache andersrum aufziehen: Welche
Bausteine lassen sich moeglichst simpel auf ein Board bringen? welche
Erfahrungen beim Erstellen von Layouts hab' ich, die Hochschule? welches
Gehaeuse haben die Bausteine, kann ich das ueberhaupt "verschaffen"?
Beispiel: Die popeligsten DSPs vom TI, C55x Serie kommen im 0.65mm bzw.
0.8mm Pitch BGA Gehaeuse daher. Da ist erstmal voellig wurst, ob die
24bit oder 25.3 bit Audiosamplebreite koennen - da musst du erstmal ein
Board routen (lassen), fertigen (lassen) und bestuecken (lassen)
koennen, bevor das interessant wird...
Gruss
WK
Aber mal eine Frage:
Audio-DSPs mit zwei Eingängen und vier/sechs Ausgängen gibts doch schon
seit Jahren in allen Möglichen Variationen für Industrieeinsatz,
ELA-Technik, CarHifi, Veranstaltungstechnik, Hifi, etc... zu kaufen?
Wo ist da der Reiz eine Master-Thesis drüber zu schreiben?
Variante 1 und 2 scheinen mir am praktikabelsten.
Variante 1 ist natürlich interessant bezüglich der einfachen
Realisierung, allerdings schätze ich, dass ich da einfach zu beschränkt
in meinen Möglichkeiten bin. Kann man da einfach eine I2S-Quelle
anschließen? Kann man einfach mitten im Verarbeitungspfad die Audiodaten
abgreifen und eigene Berechnungen damit nebenher durchführen um ein
VU-Meter zu realisieren? Sind so etwas wie Kompressor und Subharmonic
Synthesizer damit überhaupt konfigurierbar oder muss man sich das dann
selber zusammencoden? Und wenn letzteres: Hat man überhaupt die
Möglichkeit, eigene Algorithmen zu implementieren?
Wie läuft das eigentlich ab mit diesem SigmaStudio. Klickt man sich da
einfach nur alles zusammen und flasht es auf den DSP und das wars dann?
Oder Generiert SigmaStudio lediglich Code, den man dann noch nach
belieben Verändern und (um die genannten Features) erweitern kann? Sind
das also Closed-Source Fertigbausteine oder sind die frei
programmierbar?
Variante 2 ist, falls mich Variante 1 jetzt nicht gerade noch umhaut,
eher das, was ich möchte. Die Masterarbeit soll ja auch einen gewissen
Anspruch erfüllen, außerdem möchte ich mit dem System wirklich flexibel
sein.
Im Zuge der Masterarbeit reicht es, wenn der DSP ein fixes Routing mit
Frequenztrennung übernimmt!
Alles weiteren Features kann ich dann in Eigenregie nach der
Masterarbeit noch implementieren. Das ist auch der Grund warum ich
überhaupt ein eigenes System entwickeln möchte. Die ganzen kaufbaren
Systeme bieten eine Reihe an Features, sind aber darüberhinaus nicht
anpassbar und alle closed-source. Ich möchte jedoch maximale
Flexibilität und die Freiheit, ein bereits lauffähiges System beliebig
anzupassen und jeden erdenklichen Algorithmus implementieren zu können,
sei es Level-Meter, BPM-Erkennung, Limiter oder Subharmonic Synthesizer.
Dementsprechend muss der DSP natürlich genug Leistungsreserven haben um
bei 24bit/96khz all diese Verarbeitungsalgorithmen auf 4 Kanälen
bereitstellen zu können. Zum gegenwärtigen Zeitpunkt habe ich noch
überhaupt keine Vorstellung, wie viel Rechenleistung dafür in der Praxis
tatsächlich notwendig ist. Am ärgerlichsten wäre es, am Ende ein
lauffähiges System zu haben, in das ich mich bereits eingearbeitet habe,
aber dann nicht alles implementieren zu können, da die Rechenleistung
nicht ausreicht.
Auf superkomplexes Hardware-Design möchte mit >2-Layer-Platinenlayout
muss ich natürlich während der Masterarbeit verzichten. Hersteller
professioneller DSP-Systeme die meinen oben genannten Anforderungen
genügen schaffens aber auch ohne, dass deren Platinen nach
Raketentechnik aussehen, das gibt mir Hoffnung :-)
Am einfachsten wird sein, du beschaffst dir ein evaluation Board.
Da gibts ja einige im Audio-Bereich.
Schau dir doch mal z.B. so einen DSP von Behringer an, hat 3 Ins, 6 Out
so wie du es brauchst.
http://s130.photobucket.com/user/dropped99silverado/media/Avalanche/SAM_0353.png.html
Schau dir mal die Platine in der Mitte an, was ich da schonmal sehe ist
ein minimum 144 Pin Sharc-DSP, wenn nicht wahrscheinlich eher noch mehr
Pins und externe Ram-Bausteine und extern AD und DA Wandler.
Die Platine wird minimum mal 4 Layer haben.
Die Beschaffung der Bauteile sollte jetzt nicht so schwer werden.
Aber bis das alles sauber läuft ist das normalerweise ein Projekt wo
gerne mal 2-3 erfahrene ING's ein Jahr lang beschäftigt werden können.
Egal schrieb:> Am einfachsten wird sein, du beschaffst dir ein evaluation Board.> Da gibts ja einige im Audio-Bereich.
Sehe ich auch so. Hardware und Software von Grund auf zu erstellen und
alles sauber zu dokumentieren - dafür wird die Zeit vermutlich nicht
reichen.
huh, 4-6 Entwicklungsjahre Vollzeit um eine Platine für einen DSP mit
DACs und ADCs zu entwickeln und eine Frequenzweiche zu implementieren?
Ist das nicht etwas viel? :-O
Sobald man sich die Komponenten zusammengesucht und die Platine designt
hat kann man ja schon beginnen, einen simplen Allpass zu implementieren,
soll heißen den Eingang direkt auf den Ausgang routen. Die restlichen
Features können dann so nach und nach implementiert werden. Wie gesagt
reicht für die Masterarbeit ein Minimum Signalverarbeitungstechnischem
Umfang, also ein paar einfache IIR-Filter völlig aus. Ziel der Sache ist
ja nur, im Rahmen der Arbeit ein nachhaltiges System zum hobbymäßigen
weiterentwickeln zu schaffen. Insofern wäre mir die Entwicklung einer
Platine schon ganz recht.
Mit einem Devboard allerdings könnte ich natürlich schnell erst mal
lauffähige Ergebnisse produzieren, mich völlig auf die Software
konzentrieren, Features implementieren und dann später, außerhalb der
Thesis mich an die Entwicklung einer eigenen Platine machen. Lieber
wär's mir aber umgekehrt.
Zugegeben habe ich nur wenig Erfahrung darin, was (neben Thesis
schreiben) zur Entwicklung einer Lauffähigen Platine und einer
minimalimplementierung eines IIR-Algorithmus alles an Arbeitsschritten
erforderlich ist. Vor allem die Einarbeitung in den DSP wird dauern.
Meine bisherige Erfahrung beläuft sich auf das Design einfacher Platinen
und die Programmierung von Atmel 8-Bit Mikrocontrollern.
Etit-Student schrieb:> Kostenloser C-Compiler ohne Codegrößen-,> Laufzeit- oder Codeoptimierungsbeschränkung ist sicher pflicht.
Wenn Du einen findest, dann sag Bescheid ;-)
Etit-Student schrieb:> huh, 4-6 Entwicklungsjahre Vollzeit um eine Platine für einen DSP mit> DACs und ADCs zu entwickeln und eine Frequenzweiche zu implementieren?> Ist das nicht etwas viel? :-O
Nein, ist es nicht. DSP ist "etwas" komplexer als ein Arduino. Aber das
haben die Anderen Dir auch schon geschrieben.
Grüße
Andreas
Etit-Student schrieb:> huh, 4-6 Entwicklungsjahre Vollzeit um eine Platine für einen DSP> mit> DACs und ADCs zu entwickeln und eine Frequenzweiche zu implementieren?> Ist das nicht etwas viel? :-O
Unterschätze die Komplexität nicht. Ein Produkt, wofür jemand Geld
bezahlen soll, ist was anderes als eine schnell zusammengehackte
Bastelplatine. Du hast Lieferzeiten von Bauteilen und PCBs, u.U.
Bauteilabkündigungen, womöglich noch Bugs im Layout, musst vielleicht
noch CE-/EMV-Prüfungen machen. Den selben Spaß hast du dann nochmal bei
der Software - mal passt was in der Buildumgebung nicht, mal kämpfst du
mit Prozessor-spezifischen Eigenarten, dann stellst du womöglich fest,
dass deine Software zwar funktioniert und Grundanforderungen erfüllt -
aber mehr auch nicht. So kann deine Appliance bei dir funktionieren,
beim Kunden aber womöglich dessen Anforderungen überhaupt nicht
erfüllen. Alleine die Planung, welche Anforderungen du erfüllen willst
und auch welche du nicht erfüllen willst, kostet Zeit.
Der Lebenszyklus eines richtigen Produkts - egal ob Hardware oder
Software - ist halt mehr als nur mal fix 'ne Schaltung zusammengeklickt
und schnell noch drei, vier Funktionen zusammengeschrieben.
Tach,
wo ist das Problem?
Die üblichen Verdächtigen können das schon lange. Ein gutes altes
BlackfinBF533 EZKIT hat entsprechende HW gleich schon drauf. Da gehen
Stereo in und 6 Kanal out.
Da du aber noch die Platine machen willst: mit unter 4 Lagen ist da nix.
Du könntest höchstens die Ansprüche etwas herunterskalieren (würde ich
mal so raten) und eine kleinere Variante, die noch gut lötbar ist,
einsetzen, z.B. den BF592.
Und zum Thema Compiler: GCC ist immer noch kostenlos und nicht
beschränkt in der Codegrösse. Damit fällt die Auswahl schon mal leichter
:-)
Nur bei den Debug-Tools gibt's halt deutliche Preisunterschiede und ADI
war in den letzten 10 Jahren gut darin, eine Menge Konfusion mit
unterschiedlichen, zueinander nicht kompatiblen Tools zu schaffen. Ist
aber beim anderen Platzhirsch TI nicht besser.
Sag mal an welcher Uni kann man denn eine Masterarbeit (!) einfach nach
eigenen Hobbyprojekten anmelden, die so gut wie keinen
wissenschaftlichen Anspruch haben?
Und das soll dann gleichwertig mit einem Masterabschluss sein, der
tatsächlich aktuelle Forschungsthemen in der Arbeit zum Thema hatte und
wo der Masterand etwas zwar einfaches, aber neues macht?
Etit-Student schrieb:> Das System soll über zwei unbalanced> Eingänge und vier oder sechs unbalanced Ausgänge verfügen
Mit der Festlegung schießt Du Dein Audio-System schon in die B-Liga.
Horst schrieb:> Sag mal an welcher Uni kann man denn eine Masterarbeit (!) einfach nach> eigenen Hobbyprojekten anmelden, die so gut wie keinen> wissenschaftlichen Anspruch haben?
Längst nicht jede Diplomarbeit hatte früher einen hoch
wissenschaftlichen Anspruch. Die Masterarbeiten heute werden da auch
nicht viel anders sein. Dafür gibt es einfach zu viele "Masteranden" und
zu wenige Forschungsfelder, auf denen jemand mit Anfang/Mitte 20
wirklich neue Erkenntnisse zu liefern vermag.
Abgesehen davon: Es muss natürlich immer einen Professor geben, der die
Arbeit betreut. Wenn der mit dem Thema einverstanden ist, dann kann es
auch so durchgeführt werden. Wissenschaftlicher Anspruch hin oder her.
Mark B. schrieb:> Längst nicht jede Diplomarbeit hatte früher einen hoch> wissenschaftlichen Anspruch.
Sehe ich auch so. Schließlich geht es um den Eintritt in das
Ingenieurleben und was da gemacht wird, ist auch meistens nicht
wissenschaftlich, sondern es geht um die Nutzung wissenschaftlicher
Erkenntnisse und Realisation.
Die Frage ist, ob man dann nicht auch mal was bauen sollte, was modern
ist, also sozusagen on top.
Was ist momentan in der Audiotechnik hipp?
Du studierst in Darmstadt am "Etit"?
Schau Dir mal an, was an den einschlägigen Hochschulen im Bereich Audio
bzw am ETI in Detmold und der UDK Berlin diesbezüglich gerade gemacht
wird.
Was Du vorhast, ist alles schon 1000mal da. Bis vielleicht auf den "Sub
harmonic Synthesizer" dessen Funktion mir in einem Audioprozessor nicht
ganz einleuchtend ist.
Halt wo ist denn die Rede davon dass er in Darmstadt studiert??
Wenn das der Fall ist und er ist an der TU, dann melde dich mal bei
Prof. Henning, der Audiosignalverarbeitung macht.
So Sachen wie Noice-Cancelation mit Wiener Filter und so ist interessant
und ein Thema was relativ aktuell ist oder gerichtetes Hören bei
Hörgeräten.
Den ersten Audio DSP den ich hatte war ein Dynacord dsp224. Baujahr 94.
Das Thema ist echt durch.
Danke für die Beiträge. Ja, es handelt sich um die TU-Darmstadt ;-) Ob
der zukünftige Betreuer meinen Projektvorschlag so hinnimmt werde ich
natürlich sehen müssen. Eventuell soll ich mich doch eher mit aktuellen
Themen beschäftigen. Alles bringt mir am Ende Erfahrung ein, sei es nun
ein Projekt aus dem aktuellen Forschungsgebiet oder etwas, das seit 20
Jahren schon tausende Male gemacht wurde. Deswegen ist der Anspruch für
mich persönlich ja nicht geringer.
Ich verstehe nur eure Aussagen zur Machbarkeit noch nicht ganz. Ich
wüsste nun wirklich nicht was ich mehrere Jahre bräuchte um einem
lauffähigen Prototypen eines DSP-Systems mit einfacher digitaler
Filteranwendung zu erschaffen. Mit einem TI F28069 Piccolo controlSTICK
habe ich innerhalb von 2 Wochen auch schon mal eine Frequenzbeschränkung
realisiert. Hier belief sich die Arbeit zugegeben nur auf Einarbeitung
in den Prozessor, ein bisschen Copy&Paste, was den Code angeht, und die
Infrastruktur, sprich Platine usw. war auch schon vorhanden. Aber
angenommen ich fange mit einem Demoboard an und beschränke mich während
der Masterarbeit erst mal auf die Programmierung und implementiere so
viel, wie ich schaffe (kann man ja sicher mit dem Betreuer noch
absprechen). Hinterher kann ich immer noch eine eigene Platine
etnwickeln. Ich will ja kein professionelles vermarktungsfähiges Gerät
komplett fertigentwickeln sondern etwas in der DSP-Technik lernen und
mich damit beschäftigen. Ich denke da über meine Masterarbeit hinaus,
ich will nachhaltig einarbeiten.
OK, ich sehe es ein, ich schraube meine Ansprüche runter! Für den Anfang
muss es natürlich kein komplizierterer Prozessor sein als für die
Berechnung von einigen Filtern mit ein wenig Rechenreserve für ein paar
weitere DSP-Effekte tatsächlich notwendig ist. 4-Kanal Out reicht ja
auch. Natürlich wäre es schön, wenn man gleich ein System nimmt bei dem
die Rechenkapazität quasi unbeschränkt ist, aber nur unter der
Voraussetzung, dass man sich damit nicht unnötig das doppelte an Aufwand
aufhalst.
Mal aus Interesse: Wie viel Rechenleistung kann ich von einem STM32F4
erwarten? Reicht der für 24bit/96kHz Signalverarbeitung oder wird der
von der Leistung schon arg dünn? Wie kann ich lernen, so was
abzuschätzen?
Hey melde dich mal bei mir!!!
Ich mache auch grad meinen Master an der TUD und bin ein Audio-Nerd.
Habe aktuell hobbymäßig Projekte in der Richtung am Laufen.
Vlt können wir uns ja mal morgen Nachmittag an der Rennbahn treffen
Moin,
Etit-Student schrieb:> sondern etwas in der DSP-Technik lernen und> mich damit beschäftigen. Ich denke da über meine Masterarbeit hinaus,> ich will nachhaltig einarbeiten.
Keine gute Idee, find' ich. Das sind 2 voellig verschiedene Baustellen.
Mach als Masterarbeit irgendwas eher "simpleres", irgendwas wo das
Ergebnis fuer dich besser berechenbarer/einschaetzbarer ist als
irgendwas ganz neues.
Die Note der Masterarbeit wirst du - wenns irgendwie gehakt hat - in
jeder Bewerbung nach dem Studium erklaeren duerfen. Also sollte da nix
haken.
"Daheim" kannste dann immernoch vorneweg, neben- und hinterher deinen
DSP-Kram machen.
Etit-Student schrieb:> Mal aus Interesse: Wie viel Rechenleistung kann ich von einem STM32F4> erwarten? Reicht der für 24bit/96kHz Signalverarbeitung oder wird der> von der Leistung schon arg dünn? Wie kann ich lernen, so was> abzuschätzen?
Kommt halt immer drauf an, was du machen willst. 24bit/96 kHz, das
heisst dann aufm ARM: 32bit Datenbreite. Wenn deine CPU mit 100MHz
laeuft und pro Clockcycle eine Instruktion abarbeitet und es keine
Waitstates beim Zugriff auf den Speicher gibt, dann hast du also fuer
deine Verarbeitung eines Samples rund 1000 Takte = 1000
Assemblerinstruktionen "Zeit". ICh denk' mal - fuer eine popelige
Frequenzweiche wirds locker reichen. Bei irgendwas mit Korrelationen
ueber X Samples berechnen, Gleichungssysteme aufloesen um
Filterkoeffizienten rauszukriegen, mit denen man dann filtern will - da
koennt's schon enger werden.
Dann ist auch noch interessant, was an Peripherie (I2S Interfaces,
McBSP, oder wie's auch immer heisst) bei dem Baustein dabei ist - ob die
das auch unterstuetzt, was du haben willst.
Gruss
WK
Mit einem DSP schafft man normal FIR-Addition mit wenigstens einem
Viertel der Taktfrequenz. Also reicht es für 4 Filter mit z.B. 512 TAPs.
Das geht bei Audio.
Etit-Student schrieb:> OK, ich sehe es ein, ich schraube meine Ansprüche runter
Warum solltest du, die waren eh gering.
Stereo rein und 6 Ausgänge raus ist ein dBx driverack.
Dort natürlich professionell mit XLR.
Das Ding tut das alles
"Im DSP sollen dann 2- oder 3-Wege Stereo-Frequenzweiche,
Parametrische Equalizer, Kompressor, Limiter und
Subharmonic synthesizer implementiert werden"
aber noch viel mehr: Es schützt die Lautsprecher vor Überlastung in dem
es die Belastung mitrechnet und mit Grenzwerten je nach Lautsprecher
vergleicht.
Es misst die Anlage und den Raum in dem sie steht mit einem Messmikro
aus und passt Frequenzweiche und Filter an die Kennwerte der verwendeten
Lautsprecher automatisch an.
Genau wie du "vergessen" hast eine Laufzeitkorrektur einzuplanen, hat
auch das kleine Modell keine Laufzeitkorrektor, aber das grosse.
http://www.pfleid.de/Etit-Student schrieb:> Dementsprechend muss der DSP natürlich genug Leistungsreserven haben um> bei 24bit/96khz all diese Verarbeitungsalgorithmen auf 4 Kanälen> bereitstellen zu können. Zum gegenwärtigen Zeitpunkt habe ich noch> überhaupt keine Vorstellung, wie viel Rechenleistung dafür in der Praxis> tatsächlich notwendig ist.
Es tun die "erstzunehmenden" DSP von TI oder AD.
Das
Strubi schrieb:> gutes altes BlackfinBF533 EZKIT
wäre eine gute Basis (da dir Chinch reicht).
Ich würde mich auf die Software beschränken, das fertige Board nehmen.
Richtige VU-Meter sind übrigens auch nicht ganz simpel:
http://www.sengpielaudio.com/VU-MeterEinmessen.pdfhttp://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.30.2
Also falls es wen interessiert, ich bin gerade dabei einen Audio-DSP mit
4*in und 4*out zu machen.
Das wird ein Stm32F407 und zwei SGTL5000 Codecs die Full-Duplex an den
zwei I2S Ports betrieben werden.
Kann ja dann mal berichten, bin gerade am Routen der Platine...
So wie es aussieht kommte ich sogar mit zwei Layern aus
Hallo,
kurzes Update:
Ich habe heute mal ein STM32F4 Discovery-Board genommen (mit dem
f407vgt6 drauf) und habe daran das audio-shield des teensy 3.x dran
gemacht (da ist ja ein SGTL5000) drauf.
Habe dann den Startup-Code von der Teensy-Lib genommen und für den STM
umgeschrieben.
Habe es immerhin jetzt schon soweit dass ein einfaches Audio-Loopback
funktioniert (durch den STM32 hindurch).
Wie ich das dann hinbekomme dass ich die zwei Hardware-I2S Synchron
bekomme wenn dann mal zwei von den SGTL5000 im Spiel sind... Mhhh mal
schauen...
Werde jetzt die kommende Woche hoffentlich mal dazu kommen das Board zu
machen.
Wenn das aber mal alles hinhaut auf jeden Fall eine interessante
LowCost-DIY DSP Plattform mit sehr ordentlicher Audioqualität für ca 20
Euro Bauteilkosten..
Robert schrieb:> Wie ich das dann hinbekomme dass ich die zwei Hardware-I2S Synchron> bekomme wenn dann mal zwei von den SGTL5000 im Spiel sind
Das ist hardwareseitig kein Problem, einfach den zweiten als Slave
konfigurieren, und BCLK und LRCLK mit dem ersten verbinden.
Ja das mit der sclk und der lrclk habe ich so gemacht.
Ich meinte eher weil ich die zwei i2s Blöcke ja nicht direkt parallel
anschalten kann und sich die buffer intern dann leicht zeitlich
verzögert füllen. Das läuft ja via DMA und löst immer nach halb voll und
komplett voll jeweils ein Interrupt aus und die sind dann nicht
synchron.
Die Platine ist gemacht und bei elecrow gerade in der mache. Die
Bauteile sind alle da.
Jürgen S. schrieb:> Robert schrieb:>>> Die Platine ist gemacht und bei elecrow gerade in der mache. Die>> Bauteile sind alle da.>> Und was wird das System können?
Wollte hauptsächlich Audio-Routing und paar IIR Filter für jeden Kanal
und ein Limiter am Ende.
Steuerbar über Uart von außen
So zumindest mein Plan. Vermutlich wird es wegen Faulheit bei mir auf
hardcoding rauslaufen.
Mal kurzes Update:
Platine von Elecrow immer noch nicht da, habe mir aber mit der cmsis-dsp
library schon was sehr gut funktionierendes zusammengebastelt
(allerdings nur für zwei kanal in und out).
Habe jetzt schon mehrere hintereinander geschaltete Biquads auf Basis
von 1.31 Bit FixedPoint Arithmetik am laufen und funzt super bisher.
Es gibt auch noch den freeDSP. http://www.freedsp.cc/
Benutzt die gleiche Technik wie der MiniDSP aber ist offener.
Den werde ich wohl für meine Audioprojekte in Zukunft nutzen.
Leider geht damit nur blockschaltbildartiges Zusammenklicken der
DSP-Funktionen, lässt sich aber per SPI/I2C auch gewissermaßen
fernsteuern.
Wer die volle Kontrolle über den Datenstrom haben möchte, für den ist
das aber eher nix.
Ja die ADAU Serie hatte ich auch schon ins Auge gefasst bevor ich
anfing, aber ich fande das System dort sehr komisch wie man Paramter von
außen zur Laufzeit ändern kann / muss , weil er z.B. IIR-Paramter mehr
oder wenig zufällig auf irgendwelche Speicherstellen mappt und da auch
keinen direkten Zugriff auf den Audiostream hat.
Aber ich wollte, auch wegen dem Lerneffekt, es einfach mal klassisch
aufbauen.
Hallo Leute,
ich bin es mal wieder:
Platine von Elecrow ist inzwischen gekommen, habe ich natürlich sofort
bestückt.
Die gute Nachricht: Der STM ist via STLink erreichbar und lässt sich
debuggen. Auch der I2C Bus zu den Audio-Codecs scheint zu funktioniert,
zumindest läuft die Routine sauber durch ohne Fehler.
Leider hat der Code den ich für das Evaluation-Board gemacht habe, nicht
auf Anhieb funktioniert.
Ich hatte jetzt heute Abend nicht mehr viel Zeit. Ich werde aber morgen
die Platine mal mit dem Oszi unter die Lupe nehmen.
Falls sich jemand fragt wegen dem Namen auf der Platine: Ich heiße nicht
wirklich "Robert (Gast)" ;-)
Grüße
Ich bins wieder und habe leider ein Problem bei dem ich nicht weiter
weiß:
Ich hatte das Board vorgestern soweit komplett laufen. Hatte einen
Audio-Playthrough geschrieben dass alles was an Input X reinkommt an
Output X rauskommt. Hat mit allen vier Kanälen einwandfrei funktioniert.
Hatte sogar schon meine Lötausrüstung weggeräumt und dann ist folgendes
passiert.
Ich hatte die Spannungsversorgung kurz weggenommen und wieder dran
gemacht und wollte das Debugging starten -> kein Ton.
Über das Oszi stellte sich dann heraus, dass die I2C Kommunikation von
den SGTL5000 blockiert wird und der STM32 dann nach dem Timeout eben
aufhört.
Spannungsversorgungen (analog 3v3, digital 3v3 und digital 1v8 passt
alles habe ich nachgemessen)
Also gut, zwei neue SGTL5000 aufgelötet.
I2C Kommunikation läuft wieder, aber immer noch kein Ton raus.
I2S Kommunikation passte auch laut Oszi.
Aber es kam beim Kopfhörer nix raus.
Bei den 220uF Kondensatoren habe ich auf Seite der AudioCodecs immer so
ca 1.5 V Offset gemessen. Die waren nun nicht mehr da.
Was da los ist wieso da nix mehr ging... Keine Ahnung.
Also die zwei Stück auch wieder runtergelötet (einen hatte ich ja noch
da)
I2C und I2S Kommunikation passte auch wieder, Ton war ganz leicht hörbar
im Kopfhörer. Wenn ich im debugging Pause klickte, hörte man ganz lautes
surren (wie es am Anfang auch war wie es noch funktionierte).
Nun bin ich aktuell ziemlich deprimiert weil ich 5 von den Audio ICs
habe die Augenscheinlich kaputt sind und jeder weitere den ich drauf
löte wahrscheinlich auch nicht geht.
Vielleicht hat einer von euch Tipps wie ich weiter machen soll.
Nochmal komplett neuen Prototypen aufbauen?
Danke!
Vor allem frage ich mich wie es dazu kommen konnte dass die Platine
einen Schaden nur dadurch abbekam dass ich nur die Spannungsversorgung
mal trennte und wieder dran machte (der ST-Link und Audio In-Out war zu
dem Zeitpunkt aktiv als ich die Versorgung wegnahm).
Ich dachte das Netzteil produziert evtl. Überschwinger beim ein und
ausstecken oder so, aber der anstieg auf 5V und von 5v runter waren
eigentlich sehr sauber (habe ich auch mit Oszi nachgemessen).
Vielleicht hat ja der STM irgendwie einen Schaden. Komisch aber dass das
Debugging, der I2C und I2S läuft also denke ich eher der ist es nicht.
Paul H. schrieb:> Den werde ich wohl für meine Audioprojekte in Zukunft nutzen.> Leider geht damit nur blockschaltbildartiges Zusammenklicken der> DSP-Funktionen, lässt sich aber per SPI/I2C auch gewissermaßen> fernsteuern.
Wie macht man das real?
Hallo,
ich wollte mal kurz wieder eine Rückmeldung zu meinem STM32-Audio DSP
geben. Habe die letzten Tage wieder viel Zeit reingesteckt.
Mit der Firmware bin ich jetzt fast fertig.
Es können intern zwei Summen gebildet werden, freies Routing, über den
SGTL5000 kann der Gain Analog an den Eingängen und Ausgängen geregelt
werden (digitaler Gain geht natürlich auch), pro Kanal bis zu 10
Biquads, Signal Invertieren und Delay sind möglich.
Gesteuert wird der DSP über einfache Befehle die man per Uart reinsendet
z.B. "Filter#EQ#0#100#5#0.7" für einen EQ auf Kanal 0 bei 100 Hz mit 5
dB Gain und Q von 0.7
Außerdem kann man sich über Uart die aktuelle CPU Auslastung zurückgeben
lassen und sich live die Pegel auf den Kanälen In1-4, SumA, SumB und
Out1-4 zurück geben lassen.
Einstellungen speichert der STM intern in dem er sie in seinen Flash
schreibt.
Gebaut habe ich das alles auf Fixed-Point Basis unter Zuhilfenahme der
CMSIS-DSP Library.
Überrascht bin ich doch etwas über die Rechenpower die der STM doch hat
nach ein paar Optimierungen jetzt.
Im Leerlauf (also einfach nur Playthrough) ca 2%.
Mit jedem weiteren Biquad ca +1%.
Also es lassen sich schon recht komplexe Audioverarbeitungen realisieren
drauf.
Was ich jetzt noch machen will ist einen Audiolimiter zu implementieren
und danach noch eine PC-Software um das ganze "angenehm" zu
konfigurieren.
Danach will ich evtl. nochmal die Hardware nochmal neu machen mal
schauen.
Robert schrieb:> Überrascht bin ich doch etwas über die Rechenpower die der STM doch hat> nach ein paar Optimierungen jetzt.> Im Leerlauf (also einfach nur Playthrough) ca 2%.> Mit jedem weiteren Biquad ca +1%.> Also es lassen sich schon recht komplexe Audioverarbeitungen realisieren> drauf.
In der Tat. Dagegen klingen alle bisherigen Meldungen über die
Performance des STM32 geradezu fürchterlich Pessimistisch.
Hast du vor dein Projekt zu veröffentlichen? :)