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
@,,,,
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