La respuesta simple es que no puedes. Hay varias cosas que van en contra de usted:
-
sería que para una buena calidad de audio necesitarías ser muy preciso en tu generación PWM. Esto es bastante difícil, ya que su frecuencia de reloj maestra (la frecuencia que la lógica usó para generar el PWM desde) tendría que ser de alrededor de 100 MHz solo para obtener el equivalente de un DAC de 11 bits. Hay formas de generar PWM tan bien sin eso, pero entonces comenzarías con una señal analógica y por lo tanto no tendrías este problema.
-
como se indicó, necesitaría una reducción súper pronunciada de un filtro. Solo para que coincida con su equivalente de DAC de 11 bits, necesitará algo como 60 dB / octava, lo que no es razonable incluso para los profesionales. Este tipo de filtro tiene muchas dificultades, por lo que todos acudieron a DAC de Delta-Sigma para obtener su audio, que requiere aproximadamente un filtro de 6 db / octava.
-
Si su filtro no es de 60 db / octava, entonces necesitará que la frecuencia PWM sea super alta. Si tiene 60 db / octava, entonces podría tener una frecuencia PWM de 40 KHz. A 54 db / octava entonces tal vez 80 KHz funcionen. 48 db / octava = 160 kHz. Etc. Entra rápidamente en el rango de MHz alto, y luego su frecuencia de reloj maestra tendría que estar en GHz.
Sin embargo, no todo está perdido. ¿Realmente necesitas filtrar las cosas de alta frecuencia? En muchas aplicaciones (no todas) puede no filtrarlo o usar un filtro RC simple a 1-5 MHz. Sin embargo, seguirá habiendo problemas de alta frecuencia, pero el altavoz o la oreja lo filtrarán todo. Pero el audio seguirá sonando mal. Radio AM en una mala calidad del día. Así es como es.
Actualizar:
Mis números para el # 3, arriba, están algo equivocados. Pero antes de llegar a eso, déjame explicarte de dónde obtuve todos los números.
-
Digamos que está generando el PWM usando lógica digital (FPGA, Microcontrolador, etc.). Y luego digamos que su frecuencia de muestreo de audio y, por lo tanto, su frecuencia PWM es de 48 KHz. Y quieres resolución de 8 bits. Eso significa que su frecuencia de reloj principal debe ser 12.288 MHz. Lo calculé de esta manera: Master_Clk_Freq = Sample_Rate * 2 ^ n_bits. Hacer eso de nuevo para una resolución de 11 bits es 98.304 MHz.
-
El mejor nivel de ruido teórico de un DAC ideal es aproximadamente -6dB / Bit. Así que un DAC de 24 bits no tiene mejor ruido de -144 db. (Nota: estoy jugando un poco al margen con los términos aquí, agrupando SNR, THD + N y rango dinámico todos juntos.) Por supuesto, ningún DAC de 24 bits real puede hacer esto, pero estamos hablando de teoría aquí. Lo que esto significa es que un DAC de 11 bits tiene un nivel de ruido de -66 db, por lo que no tiene mucho sentido hacer un filtro que funcione mejor que esto. AM Radio tiene una relación señal / ruido de aproximadamente 60 dB para comparación.
-
Ok, aquí es donde ensucié los números. Suponga que la frecuencia de PWM = 48 KHz y el corte de filtro = 24 KHz (para facilitar las matemáticas). Con un filtro de -60dB / Oct estaremos en -63dB a 48KHz. Si nuestro filtro se cambiara a -54dB / Oct, entonces seríamos -57dB a 48 KHz y -62.4dB a 50.4KHz. Lo que esto significa es que al cambiar nuestro filtro de -60db / oct -54db / oct tendríamos que cambiar la tasa de PWM de 48 KHz a 50.4KHz para lograr el mismo rendimiento de bloqueo de filtro. No es una duplicación de la frecuencia PWM como mencioné antes. De la misma manera, si el filtro se cambiara a -18dB / Oct (que es un diseño manejable), la frecuencia PWM tendría que ser de 104 KHz para tener una atenuación del filtro de -63dB en la frecuencia PWM. Calculé esto haciendo una pequeña hoja de cálculo y jugando con los números.