Forum: Digitale Signalverarbeitung / DSP / Machine Learning PCM1725 Audio DAC per I²S an dsPIC30F4013: jemand Erfahrung


von Max (Gast)


Lesenswert?

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

von ,,,, (Gast)


Lesenswert?

Hat der dsPIC nicht direkt eine DCI-Schnittstelle? Diese sollte
eigentlichen den Systemtakt direkt ausgeben können.

von Max (Gast)


Lesenswert?

@,,,,

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

von ,,,, (Gast)


Lesenswert?

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.

von Fly (Gast)


Lesenswert?

@ ,,,,

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.

von ,,,, (Gast)


Lesenswert?

Laut Datenblatt kann der PCM1725 die Sync. automatisch durchführen. Aber
stimmt schon, ist kein guter Ansatz. An dieses Problem hatte ich nicht
gedacht.

von Max (Gast)


Lesenswert?

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

von Max (Gast)


Lesenswert?

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

von Fly (Gast)


Lesenswert?

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.

von Max (Gast)


Lesenswert?

@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 ;-)

von Fly (Gast)


Lesenswert?

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.

von Mathias (Gast)


Lesenswert?

"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

von Mathias M. (schneider-huetter)


Angehängte Dateien:

Lesenswert?

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
Noch kein Account? Hier anmelden.