Hallo, ich habe da eine Frage. Ich arbeite mich gerade in VHDL und FPGAs ein. Und da wollte ich nun über einen Sigma Delta DAC digitale Audiodaten ausgeben. Die Audiodaten liegen als 16Bit PWM vor. Meine Frage nun kann ich wenn ich die Lautstärke ändern möchte das irgendwie mit den PWM Daten machen? Also die Wertigkeit verändern?? So das am Ausgang der Sound leise oder lauter wird? Hardware Technisch über einen Amplifier geht nicht. Danke Gruß
Peter schrieb: > Die Audiodaten liegen als 16Bit PWM vor. Tatsächlich direkt als PWM-Bitstrom? Oder eher wie üblich als eine "Audiodatei" mit 16-Bit Werten? Dann könntest du einfach vor dem Ausgeben der Daten diese "kleiner" skalieren. Damit hast du eine geringere Eingangsamplitude für deinen DAC und fertig...
Du verlierst natürlich Dynamik wenn du die Werte kleiner machst.
Wie definierst du Dynamik? Was vorher doppelt so laut war, ist auch nachher doppelt so laut. Fazit: Dynamik bleibt gleich. Bestenfalls der Rauschabstand wird geringer: was vorher fast unhörbar im Rauschen war, ist nachher weg.
Macht auch so schon nicht viel Sinn, von Dynamikverlust zu reden, wenn man die Lautstärke reduzieren willst. Wenn man das Umrechnen will, muss man wenigstens über ein PWM-Period hinweg integrieren und rechnen.
Lothar Miller schrieb: > Peter schrieb: >> Die Audiodaten liegen als 16Bit PWM vor. > Tatsächlich direkt als PWM-Bitstrom? > > Oder eher wie üblich als eine "Audiodatei" mit 16-Bit Werten? Nennt sich übrigens PCM.
Moin Moin ich wollte auch sowas ähnliches machen wie der Peter. Habe aber das mit dem skalieren nicht ganz verstanden. Ist das in etwa so: z.B.: ein 16Bit Signal in 24Bit eingebettet. Mittel: AUDIO_LEFT_VOL_24BIT(31 + 6 downto 0 + 6) <= AUDIO_LEFT_VOL_16BIT; AUDIO_RIGHT_VOL_24BIT(31 + 6 downto 0 + 6) <= AUDIO_RIGHT_VOL_16BIT; Leiser: AUDIO_LEFT_VOL_24BIT(31 + 3 downto 0 + 3) <= AUDIO_LEFT_VOL_16BIT; AUDIO_RIGHT_VOL_24BIT(31 + 3 downto 0 + 3) <= AUDIO_RIGHT_VOL_16BIT; Lauter AUDIO_LEFT_VOL_24BIT(31 + 9 downto 0 + 9) <= AUDIO_LEFT_VOL_16BIT; AUDIO_RIGHT_VOL_24BIT(31 + 9 downto 0 + 9) <= AUDIO_RIGHT_VOL_16BIT; Gruß Marco
Du willst mit Faktoren 2 skalieren? Warum nimmst du nicht den Wert und addierst jeweils die obligaten 0 ... 3dB? Du könntest z.B. Faktor 1,125 draufmultiplizieren: Ergebnis (15downto0) = Input (15downto0) +/- Input (15downto3)
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.