| Autor |
|
|
|
BID = 312942
~Gh05t~ Gelegenheitsposter
 
Beiträge: 68 Wohnort: Haiger am Niel *g*
|
|
Hi all,
ich hab mir letzte Woche auf dem Weg von der Uni nachhause überlegt wie ein Digital-Verstärker aufgebaut werden müsste. Hab mal n bissl im Netz gesucht aber nicht viel brauchbares gefunden (was irgendwie schon wieder abschreckend wirkt), also hab ich gedacht ich nehm mir einfach mal einen meiner PIC-Controller, ein paar kleine Transistoren und probier ma aus (in Form eines Headphone-AMPs oder so was).
Bei der Frage wie ich am besten mein Audio-Signal digitalisiere ist mir die Idee gekommen ich könnte ja direkt SPDIF nehmen. Das ist ja schon digital genug
Also hab ich mal etwas gesucht und ein paar Chips gefunden, die die Audio-Daten in digitaler Form via I²S-BUS zur Verfügung stellen können (z.B. Phillips UDA1351).
Beim lesen des Datenblatts ist mir dann der Aufbau des SPDIF-Signals ins Auge gefallen und ich habe mich gefragt, ob ich denn wirklich einen Solchen Decoder-Chip brauche? Kann ich das nicht direkt mit meinem Controller machen?
Wenn nicht, was genau ist I²S?
Hat jemand noch n bissl Dokumentation für mich (vllt. auch zum Thema Digital-Endstufen?) |
|
BID = 313886
~Gh05t~ Gelegenheitsposter
 
Beiträge: 68 Wohnort: Haiger am Niel *g*
|
|
tjo, anscheinend bin ich wieder in der Wüste...
Den Chip hab ich für alle Fälle ma bei nem Bekannten geordert der Connections zu Phillips hat, aber ich denke das geht auch ohne.
Ich habe zwar noch nicht genau verstanden wozu die einzelnen Teile des SPDIF-Signals gut sind, aber es sieht etwa so aus:
Ein Block besteht aus 192 Frames, jeder Frame aus je 2 Subframes (einen für jeden Kanal).
Jeder Sub-Frame hat 32-Bits. Die ersten 4 Bit stellen eine Präambel dar, die zeigt ob man gerade den Beginn eines Blocks hat und ob das Sub-Frame für Kanal 1 oder 2 ist. Die folgenden 24 Bits sind Daten (PCM), dann kommen noch ein paar Status-Bits von denen ich nicht weis wofür sie gut sind: Valid-Flag, User-Data, Channel-Status, Parity-Bit
Das Signal ist (bis auf die Präambel) in einem Biphase-Mark-Code (BMC) (ähnlich Manchester-Code) Kodiert.
So. Ich habe noch nie was mit Seriellen Signalen gemacht. Ich stelle mir das an sich nicht sehr schwierig vor, solange man ein Takt hat. Aber wie mache ich das bei Selbst-Synchronierenden Signalen wie hier? |
|
BID = 313899
Benedikt Inventar
      Beiträge: 6241
|
Wiso willst du das mit einem PIC machen, wenn du das IC schon fertig bekommst ?
Das wird nämlich nichts:
Ein Audiosignal über SPIF hat bis zu 192kHz bei 16bit, Stereo. macht also 6MBit Datenrate nur für die Audiodaten.
|
BID = 314156
~Gh05t~ Gelegenheitsposter
 
Beiträge: 68 Wohnort: Haiger am Niel *g*
|
Ich weiß nicht ob ich das IC bekomme, ich habe nur ma angefragt. Keine Ahnung ob da ranzukommen ist, zu kaufen finde ich es nicht.
Aber mir stellt sich die Frage ob das was dann aus diesem Decoder kommt dann ein besser zu verarbeitendes Signal ist. Ich weiß nicht genau was I²S ist, so weit ich das rausgefunden habe ist es sowas wie I²C nur mit 3 Signal-Leitungen. Das finde ich aber eigentlich schwieriger, da es ja ein BUS-Protokoll ist und ich noch den ganzen Mist mit Adressierung etc. machen muss. Außerdem wird die Transferrate ja nicht viel anders sein.
So genau hatte ich mir das mit der Bandbreite noch nicht überlegt, ich dachte mit 48Mhz Taktfrequenz ist da schon einiges machbar... aber 6MBit ist schon ne Menge das stimmt.
Da sehe ich schon wieder das ich scheinbar nicht verstanden habe wie das Signal aussieht. Wie kommst du auf 192Khz und 16bit (Stereo) bzw. wie steht das in Relation zu der Beschreibung des Signals wie ich es oben geschrieben habe?
So wie ich die Beschreibung von Phillips verstanden habe enthält ein Frame eines Blocks 2*32bit, davon sind 2 * 20-24bit Audio-Daten. Ein Block hat 192 Frames (d.h. 12kBit), das heißt wenn ich 48khz haben will (Was für SPDIF gängig ist) sind es 250 Blocks pro Sekunde. Und zwar unabhängig von der Bit-Rate, da ein Frame immer 2*32Bit ist.
Das heißt: 250 Blocks * 192 Frames * 2 Subframes * 32 Bit = 3000kBit (2760kBit für 44,16khz). Das sind dann Stereo Daten inklusive Status- und sonstigen Bits.
Aber um ehrlich zu sein ist 3MBit immer noch ne ganze Menge
|
BID = 314158
Benedikt Inventar
      Beiträge: 6241
|
Zitat : ~Gh05t~ hat am 23 Mär 2006 12:48 geschrieben :
| Ich weiß nicht genau was I²S ist, so weit ich das rausgefunden habe ist es sowas wie I²C nur mit 3 Signal-Leitungen. Das finde ich aber eigentlich schwieriger, da es ja ein BUS-Protokoll ist und ich noch den ganzen Mist mit Adressierung etc. machen muss. Außerdem wird die Transferrate ja nicht viel anders sein.
|
I2S hat nicht viel mit einem Bus zu tun:
Es gibt 3 Leitungen:
Takt, Daten und eine zum Unterscheiden zwischen rechts und links, also ganz simpel.
Such mal bei Phillips, die haben da einige Application Notes dazu.
Zitat :
|
So genau hatte ich mir das mit der Bandbreite noch nicht überlegt, ich dachte mit 48Mhz Taktfrequenz ist da schon einiges machbar...
|
Du bist auch auf den Marketingtrick von Microchip reingefallen:
Der Takt wird beim PIC durch 4 geteilt, bleiben also 12MHz.
Zitat :
|
Wie kommst du auf 192Khz und 16bit (Stereo) bzw. wie steht das in Relation zu der Beschreibung des Signals wie ich es oben geschrieben habe?
|
192kHz und 24bit sind bei SPDIF auch möglich, auch wenn man es nur selten nutzt. Daher muss SPDIF für diese Datenrate ausgelegt sein.
Es gibt von Crystal (oder so ähnlich) auch einige schöne ICs:
SPDIF rein, I2C raus.
Dahinter dann noch ein DAC (z.B. TDA1543) und fertig ist das analoge Signal.
Bei AC3 wird das ganze aber um einiges komplizierter.
|
BID = 314193
~Gh05t~ Gelegenheitsposter
 
Beiträge: 68 Wohnort: Haiger am Niel *g*
|
Zitat :
| | 192kHz und 24bit sind bei SPDIF auch möglich, auch wenn man es nur selten nutzt. Daher muss SPDIF für diese Datenrate ausgelegt sein. |
Das halte ich für ein Gerücht. Eine Ethernet-karte muss ja auch nicht unbedingt 10GBit können, nur weil das laut Netzwerkstandart möglich ist.
Mein Yamaha Receiver versteht meines Wissens auch nur 44.1 und 48kHz.
Axo, AC3 brauch ich nicht, Analog auch nicht.
PS: Nach Crystal und SPDIF zu suchen ist etwas mühsam...
|
BID = 314224
Benedikt Inventar
      Beiträge: 6241
|
Ich habe mir die SPDIF Spezifikationen nochmal angesehen:
Du hast recht, es gibt keine echte Angabe was die Schaltung an Audiodaten übertragen können muss.
Daher auch oft die Missverständnisse zwischen PCM und AC3, was beides als SPDIF bezeichnet wird.
Ein IC das SPDIF->I2S kann ist CS8411
Die Daten gibt es auf Link
|
BID = 314266
~Gh05t~ Gelegenheitsposter
 
Beiträge: 68 Wohnort: Haiger am Niel *g*
|
Na super... CS8411 in die Suche eingegeben, 2 Treffer in "Discontinued Products"...
Edit: Es gibt anscheinend Referenzbauteile
[ Diese Nachricht wurde geändert von: ~Gh05t~ am 23 Mär 2006 17:56 ]
|
BID = 314274
Ltof Inventar
     
Beiträge: 9386 Wohnort: Hommingberg
|
Zitat : ~Gh05t~ hat am 20 Mär 2006 13:08 geschrieben :
|
...auf dem Weg von der Uni nachhause überlegt wie ein Digital-Verstärker aufgebaut werden müsste...
|
Du meinst nicht zufällig eine "Class-D"-Endstufe?
_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)
|
BID = 314402
~Gh05t~ Gelegenheitsposter
 
Beiträge: 68 Wohnort: Haiger am Niel *g*
|
Das kam in meinen Gedanken nicht vor, keine Ahnung :P
Aber ja, ich denke ich rede von einer Class D Endstufe. Ich dachte halt man digitalisiert sich ein Audiosignal und macht daraus einfach eine Pulsweitenmodulation um das Signal nachzubauen. Je höherfrequenter das geht, desto besser.
Ein SPDIF ist nun mal schon digital, also dachte ich man könnte sich den ADC sparen. Wie genau das aussehen muss wollte ich mit einer kleinen Testschaltung herausfinden. Aber gut das du mich noch mal drauf hinweist, dafür das ich "nur mal testen" wollte bin ich schon wieder ziemlich in Details vertieft (dabei müsste ich eigentlich Mathe lernen)
Dokumentation zum Thema Digital-Endstufe habe ich wie gesagt noch nicht viel gefunden, auch das war teil meiner Frage... (ich möchte jetzt nicht hören das man sowas nicht im vorbeigehen entwickelt, das ist mir nämlich klar und egal )
|
BID = 314524
high_speed Schreibmaschine
    
Beiträge: 2073
|
Hallo ~Gh05t~
Mit einem µC wirst du wohl nicht weit kommen, außer, er hat
ein entsprechendes Interface für S/PDIF.
Ich gehe mal von der genannten Bitrate von 3Mbit/s aus.
Um die Daten einzutakten müssen sie mit einer größeren
Frequenz abgetastet werden. 4-fach Abtastung 12MHz.
Des weiterem muss der µC auch noch andere Aufgaben erfüllen.
Da kommt man schnell in Taktraten von 100MHz und mehr.
Man muss sich nur mal überlegen wie viele Tate er alleine
für das abfragen des aktuellen Eingangszustands und
vergleichen mit dem vorigen braucht. Dann kommen noch
Timer-Interrupts dazu und .. .
Wenn man nicht die entsprechenden Controller verwenden will,
bleibt einem nur noch übrig, es selber in Logik zu bauen.
z.B.:FPGA (Field Programmable Gate Array)
Auf "www.mikrocontroller.net" bin ich eben auf das folgende
Thema gestoßen: S/PDIF-Interface als HDL Link
Hier findest du ein S/PDIF Interface: Link
Den Code für eine PWM kann ich dir auch gebe, muss ihn erst
noch ein bisschen aufräumen.
MfG
Holger
_________________
George Orwell 1984 ist nichts gegen heute.
Der Überwachungsstaat ist schon da!
Leider lernen die Menschen nicht aus der Geschichte,
ansonsten würde sie sich nicht andauernd wiederholen.
|
BID = 314539
high_speed Schreibmaschine
    
Beiträge: 2073
|
Hier die versprochene PWM.
Ich habe nur noch die Generic eingebaut.
_________________
George Orwell 1984 ist nichts gegen heute.
Der Überwachungsstaat ist schon da!
Leider lernen die Menschen nicht aus der Geschichte,
ansonsten würde sie sich nicht andauernd wiederholen.
|
BID = 314545
~Gh05t~ Gelegenheitsposter
 
Beiträge: 68 Wohnort: Haiger am Niel *g*
|
Das mein Prozessor zu langsam dafür ist hab ich ja schon festgestellt. Das mit den FPGA hört sich sehr interessant an, damit wollte ich schon immer mal was machen, danke für den Tip
Aber ich glaube da brauch ich noch n bissl mehr als nur ein Stück Code
Also werde ich mich erst mal in deine Linkliste vertiefen, mal sehen was die so hergibt!
|
BID = 314563
high_speed Schreibmaschine
    
Beiträge: 2073
|
Hallo Ltof
Zitat : Ltof hat am 24 Mär 2006 14:59 geschrieben :
|
Eine Class-D-Endstufe mit Analogeingang ..
|
Er wollte aber einen digitalen Eingang und da braucht man
eben ein paar Schieberegister (shift register),
Zustandsautomaten (statemaschinen) und ..
@~Gh05t~
Besorge dir mal von Altera Quartus II Web Edition Link
Oder von Xilinx das ISE WebPACK Link
Die Software ist kostenlos, du musst dich aber bei den
Herstellern registrieren.
Zitat : ~Gh05t~ hat am 23 Mär 2006 22:42 geschrieben :
|
Ein SPDIF ist nun mal schon digital, also dachte ich man könnte sich den ADC sparen. Wie genau das aussehen muss wollte ich mit einer kleinen Testschaltung herausfinden. Aber gut das du mich noch mal drauf hinweist, dafür das ich "nur mal testen" wollte bin ich schon wieder ziemlich in Details vertieft (dabei müsste ich eigentlich Mathe lernen)
|
Muss ich irgendwie überlesen haben.
Alles zurück.
Ltof Vorschlag ist in diesem Fall das Beste, da ein analoges
Signal existiert.
MfG
Holger
_________________
George Orwell 1984 ist nichts gegen heute.
Der Überwachungsstaat ist schon da!
Leider lernen die Menschen nicht aus der Geschichte,
ansonsten würde sie sich nicht andauernd wiederholen.
|