Hallo! ich möchte ein bischen mit audio signalverarbeitung und filterung herum experimentieren. ich hab ein dsPIC30F4013 mit einer I²S (DCI) schnittstelle und einen PCM1725 16bit setero audio DAC bei mir rummliegen und möchte was damit machen. z.b. ganz einfach einen 1khz sinus erzeugen oder so ähnliches. ich hab schon ein bisschen rumprogrammiert. und am ausgang des DACs hat sich sogar schon was verändert, jedoch ein ton kam noch nicht raus. mein erstes problem liegt darin, den systemtakt für den PCM1725 zu generieren, der sollte 256*fs sein (wird für das digitale filter benötigt). ich hab einfach mal versucht das mit einem output compare zu machen, jedoch weis ich nicht genau, wie genau dieser takt stimmen muss?. eine andere frage noch: benötige ich am ausgang des DACs für einfache tests unbedinngt ein Ausgangsfilter (TP)? hat jemand schon was mit diesen oder ähnlichen DACs oder auch ADCs (z.b. PCM1801) gemacht? wäre für hinweise, tips, links, oder beispiel-codes sehr dankbar! s.g. MAX
Hat der dsPIC nicht direkt eine DCI-Schnittstelle? Diese sollte eigentlichen den Systemtakt direkt ausgeben können.
@,,,, das DCI generiert den bit-takt für die serielle übertragung und den takt für die Frames (rechter und linker channel). aber leider nicht den system takt für das digitale filter. MAX
Was spricht dagegen, einen normalen Quarzoszillator zu benutzen. Bei fs=48kHz würden z. B. 384*48kHz=18,432MHz gehen. Diese Frequenz dürft problemlos erhältlich sein.
@ ,,,, Und wie kriegt er den Quarzoszi-Takt synchron mit DCI des DSPic? Meiner Meinung nach schlechter Ansatz. Ich würde es mit einem Audiocodec versuchen der einen internen Masterclock hat. -->ADAV801 von Analog Device.
Laut Datenblatt kann der PCM1725 die Sync. automatisch durchführen. Aber stimmt schon, ist kein guter Ansatz. An dieses Problem hatte ich nicht gedacht.
am liebsten wäre es mir, wenn der 256*fs extern aus dem fs generiert werden würde, mittels PLL oder so, ist das irgendwie einfach möglich (geringer schaltungsaufwand). kennt ihr einen frequenzverielfacher baustein, der z.b. 256-fach kann? gruß, MAX
hab grad gesehen, dass man es vielleicht mit einem CD4046 digitalen PLL baustein realisieren könnte. ich weiß jedoch leider nicht, wie ich den baustein dimensionieren soll, dass er bei einer eingangsfrequenz fs eine ausgangsfrequenz 256*fs generiert? - datenblatt hab ich zwar schon etwas durchgesehen, aber so ganz schlau werd ich auch nicht daraus. ist es überhaupt eine gute idee, das mit diesem baustein zu realiseren und wenn ja, wie kann ich diesen baustein relativ schnell und einfach dimensionieren? danke für antworten und tips, MAX
Ich denke nicht das es so hinhauen wird, wahrscheindlich wirst du mit einem PLL enorm Jitter produzieren. Ich kenn mich auch nicht wirklich aus mit dem Thema, leider gibt es wenige Leute die hier helfen können. Warum benützt du nicht einen Codec der den Systemtakt intern generiert? Ich denke die ganzen seriellen Codecs sind für Audio DSP's gemacht, die unterstützen nämlich den so hohen geforderten Masterclock.
@Fly mhm... hast du ein konkretes bsp von nem codec, der auf ein halbwegs akzeptables gehäuse für einen hobbybastler hat, also möglichst nich zu kein und nicht allzu viele pins ;-)
Schau sir doch mal den ADAV801 an, hab ich oben schon gepostet, weiss grad ned in was für Gehäuse es den gibt. Sonst würde ich dir empfehlen auf einen "echten" Audio DSP umzusteigen.
"Laut Datenblatt kann der PCM1725 die Sync. automatisch durchführen. Aber stimmt schon, ist kein guter Ansatz. An dieses Problem hatte ich nicht gedacht." Hmm, wenn der Baustein diese Funktion schon implementiert hat, warum sollte man sie nicht verwenden? Welche Nachteile würde man sich damit einhandeln? Anscheinend ist es mittlerweile sehr schwierig geworden einen vernünftigen Audio-DAC für "normale" Controller zu finden. Der ADAV801 scheint mir auf den ersten Blick auch reichlich überdimensioniert zu sein. Gibt es denn keinen "einfachen" DAC, ähnlich dem TDA1543, mehr? Gruß Mathias
Ich habe den PCM1725 jetzt mit einem dsPIC2010 zum Laufen gebracht. Ich versorge sowohl den dsPIC, als auch den 1725 mit einem 8 MHz Quarzoszillator, daraus ergibt sich mit 8MHz/256 eine Samplingrate von 31250 Hz. Da der dsPIC2010 leider kein DCI hat, verwende ich das SPI und erzeuge mir das Frame-Sync-Signal aus dem SPI-Sync-Impuls (High-Impuls bevor die Übertragung beginnt, Länge eines Bittakts) mithilfe eines Inverters und eines Toggle-Flipflops. Zum Testen durchlaufe ich ein Sinus-Array und schau mir das Ganze auf dem Oszi an. Auf den ersten Blick sieht das Signal sehr gut auch (siehe Anhang bild_1.jpg), aber wenn man die Bilder 2 und 3 betrachtet sieht man, dass sich ziemlich heftige "Glitches" im Signal befinden, die man natürlich auch deutlich als hochfrequentes Störsignal hört. Versuchsweise habe ich mal einen steilflankigen Tiefpass drangehängt, was das Phänomen jedoch nur abschwächt - aber nicht beseitigt. Ich habe auch mal einen TDA1543 ausprobiert, da sehe ich dann keine Glitches, das Signal ist aber auch nicht schön und hat deutlich hörbare hochfrequente Anteile (auch mit Rekonstruktions-TP)... Hattet ihr vielleicht schon ähnliche Probleme? Könnte das an einem fehlerhaften I2S-Timing liegen? Viele Grüße Mathias
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.