Forum: Mikrocontroller und Digitale Elektronik Codec PCM3000


von Thorsten (Gast)


Lesenswert?

Hallo,

ich wollte mal fragen, ob es hier jemand gibt, der mit oben genanntem
Codec oder auch dem PCM3001 schon Erfahrungen gesammelt hat?

Ich habe am Wochenende mal eine Platine dafür gemacht, der Oszillator
des PCM3000 ist mit 12.288MHz beschaltet. Jetzt wahrscheinlich eine
dumme Frage, aber wie hoch muß denn die Bitclock sein, mit der die
Audiodaten in den PCM getaktet werden? Müßten doch auch 12.288MHz sein,
oder?

Wäre prima, wenn mir da jemand helfen kann.

Gruß
Thorsten

von TheMason (Gast)


Lesenswert?

Hallo Thorsten

der Bitclock muß nicht gleich dem Masterclock sein.
Es hängt vom Codec bzw. von der Konfiguration des Codecs ab welchen
Bit-Clock du benutzen mußt.
In deinem Falle müsste der Bitclock jedoch gleich dem Masterclock
(12.288MHz = 256 * Smaplerate (48000KHz) ) sein.

Gruß
Rene

von Thorsten (Gast)


Lesenswert?

Mist, das habe ich befürchtet. Ich betreibe diesen Codec an einem dsPIC
(30MIPS), mußte jedoch feststellen, dass dieser den Takt zwar erzeugen
kann, dann aber keine Zeit mehr für Berechnungen mit den Audiodaten
bleibt. Selbst einfaches durchreichen der Audiodaten (Loop)
funktioniert nicht. Der Sound klingt extrem verzerrt, übersteuert und
verrauscht. Dann muß ich wohl eine kleinere Samplerate nehmen.

Thorsten

von TheMason (Gast)


Lesenswert?

Also das kann ich mir nicht vorstellen. Der Master bzw. Bitclock gibt
doch nur die Clock für dein serielles Signal vor. Die Zeit zum
Verarbeiten deiner Samples ist doch ein Vielfaches deiner
Samplefrequenz. Du hättest demnach 1/48000Hz = 20,83usec pro Sample
Zeit. Jetzt kenn ich den dsPIC nicht, aber der hat doch sicherlich ein
Audio-IO Register mit dem du bei jedem neuen Sample "geweckt" wirst
oder ?
Also selbst bei 30MIPS sind doch Filter und Lautstärke und dergleichen
möglich.

Gruß
Rene

von Thorsten (Gast)


Lesenswert?

> Der Master bzw. Bitclock gibt doch nur die Clock für dein
> serielles Signal vor.

> Du hättest demnach 1/48000Hz = 20,83usec pro Sample Zeit.

Ok, dann habe ich das jetzt soweit verstanden.

> Jetzt kenn ich den dsPIC nicht, aber der hat doch sicherlich
> ein Audio-IO Register mit dem du bei jedem neuen Sample "geweckt"
> wirst oder ?

Genau. Jedesmal, wenn ein neuer Sample ankommt, wird ein Interrupt
ausgelöst. In der ISR schreibe ich nun dieses Sample direkt wieder in
den Sendepuffer. Dürfte soweit also alles richtig sein und der Fehler
liegt woanders. Eventuell gibts ja ein Problem mit den Taktflanken und
vor allem dem sehr kurzen Framesync-Signal. Ich habe die Code-Platine
über ein ca. 15cm langes Flachbandkabel mit dem dsPIC verbunden.
Vielleicht liegt da das Problem.

Und vor allem ist mir jetzt gerade eingefallen, dass ich ja mal messen
könnte, in welchen Zeitabständen neue Samples kommen. Müßte ja dann
alle 20,83µs der Fall sein.

von TheMason (Gast)


Lesenswert?

Vielleicht hast du auch ein Konfigurationsproblem mit deinem dsPIC.
Je nach Einstellung (z.B. IIS) werden nur 64 Bitclocks erwartet bis ein
Stereo-Sample (!!, also 32 pro Mono-Sample)) vollständig ist. Bei deinen
12.288 MHz hättest du dann eine Samplerate von 192KHz mit ganz viel Müll
drin.
Prüfe mal die Konfiguration von deinem dsPIC und geb dir (wie du schon
sagtest) einen Impuls aus sobald ein neues Sample eingetrudelt ist.
(wenn != 20,83us -> Konfig-Fehler :-))

Gruß
Rene

von Thorsten (Gast)


Lesenswert?

Hallo Rene,

vielen Dank für deine Hinweise, es war in der Tat ein
Konfigurationsproblem auf dsPIC-Seite. Allerdings hätte ich noch eine
Frage. Sollte man den beiden Audio-Ausgängen einen Tiefpaß spendieren
bzw. wann sollte der vorgesehen werden? Ich habe mir nämlich das
Audioausgangssignal mit dem Scope angesehen und mußte feststellen, dass
die Signalform einem mit dem NF-Signal modulierten Sinus enstspricht.
Die "Trägerfrequenz liegt" bei etwa 12kHz, deshalb hört sich der Ton
bei höheren Frequenzen doch leicht verzerrt an. Aber vielleicht habe
ich da ja noch einen anderen Fehler drin.

Vielen Dank!

Gruß
Thorsten

von TheMason (Gast)


Lesenswert?

Hallo Thorsten,

Einen Tiefpass sollte man vorsehen. Alleine schon aus dem Grund da der
PCM nicht "wissen" kann mit welcher Samplerate du arbeitest.
Eigentlich sind Filter mit hoher Ordnung (4-6) am idealsten.
Aber bei meinem "Selbstbau-DAC" habe ich auch nur einen Tiefpass 2.
Ordnung drin. (mehr bringt es bei 8 Bit sowieso nicht *gg)
Aber für erste Tests sollte es reichen den Ausgang ohne Tiefpass zu
betreiben (wenn man keine hohen Ansprüche an die Audio-Qualität hat)

Gruß
Rene

PS. Wo hast du den dsPIC her ? Würde mich u.U. auch interessieren mit
dem Ding was zu machen.

von Thorsten (Gast)


Lesenswert?

Habe vor längere Zeit mal welche bei eBay sehr günstig ersteigert. Zur
Zeit werden da auch welche Angeboten, sind aber leider nur die
dsPIC30F3013. Alternativ kannst du auch bei Microchip kostenlose Muster
anfordern. Und wenn du zuviel Geld hast, kaufe sie bei Farnell. Der
dsPIC30F6014-30 kostet da satte 25 Euro :)

Gruß
Thorsten

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.