Mejorando PWM usando comparación con LFSR en lugar de contador

3

PWM es una técnica muy potente para simular una salida analógica de un microcontrolador, lógica programable o cualquier otro entorno digital. Esto se puede utilizar para controlar LED, motores y altavoces, etc. sin la necesidad de un componente DAC externo (en algunos casos es necesario un filtro de paso bajo).

Un PWM generalmente se hace usando un contador y un comparador. El contador cuenta y se acumula constantemente, y cuando está por encima de un valor de umbral (el% deseado de voltaje de salida), se envía una lógica '1', y cuando se envía una lógica '0'.

El principal problema de PWM es que existe un equilibrio entre la precisión y la frecuencia: si se necesita un bit más para la precisión, significa que el contador tardará el doble de tiempo en volver a rodar, y como tal, las frecuencias de parásitos que Los filtrados tendrán que ser más bajos en el espectro, por lo tanto más cerca de la señal y más difíciles de filtrar.

Por estas razones, PWM no es aplicable a las señales que deberían

  1. Tienen altas frecuencias analógicas
  2. Necesita demasiados bits en el DAC

Mi idea es simple: en lugar de usar un contador de N bits, uso un generador de números aleatorios, creado tomando los N bits altos (¿o bajos?) de un LFSR de bits M (por ejemplo, use los 8 bits más bajos de un LFSR de 16 bits). De esa manera, en lugar de emitir una onda cuadrada con un ancho de pulso variable, generamos un vapor de pulsos aleatorios.

La probabilidad de que un pulso sea '1' es igual a la relación entre la tensión de salida deseada y la tensión de salida máxima. Como tal, el resultado es exactamente el mismo que el de PWM, excepto que las frecuencias de parásitos ahora son aleatorias, y son mucho más fáciles de filtrar. Ahora es posible agregar tantos bits como sea necesario para el ADC, y esto no causará ningún problema.

Por ejemplo, es posible y en realidad es muy simple tener una salida de audio de 16 bits con un reloj de 1MHz. Con el PWM tradicional, esto nunca hubiera sido posible: solo una señal de audio de 5 bits habría sido posible sin un fuzz de audio que se pueda cargar.

¿Funcionará esto? Como esta idea es tan simple y mejora tanto la técnica de PWM, ¿por qué no se menciona en ninguna parte?

    
pregunta Bregalad

5 respuestas

2

Pensé que resumiría mis comentarios en una respuesta, tal vez sea de alguna utilidad para alguien.

  1. El uso de ruido blanco hará que sea más difícil eliminar la señal de modulación en lugar de hacerlo más fácil. En el caso de una señal PWM normal, necesita un paso bajo y está listo. Cuando use el ruido blanco para hacer la modulación, causará ruido en el mismo rango de frecuencia que la señal que está tratando de crear. Esto no se puede eliminar fácilmente.
  2. El ruido que queda en su señal generada será aproximadamente 14dB por debajo del nivel del ruido blanco que utilizó como señal moduladora. Suponiendo un verdadero ruido blanco de hasta 1 MHz como en su ejemplo, entonces la cantidad de ruido restante es una proporción simple. 44100Hz / 1MHz da un 4,41 por ciento o aproximadamente -14dB.
  3. Verifiqué mi estimación anterior generando una señal de ruido blanco con una frecuencia de muestreo de 1MHz, filtrando y volviendo a muestrear hasta 44100Hz. La señal resultante fue de hecho 14dB por debajo de la señal de ruido blanco original.
  4. Curiosamente, 14dB también trata sobre el rango dinámico del muestreo de 5 bits a 1MHz mencionado en la pregunta. Entonces, realmente no ganas nada en el departamento de señal a ruido. Usted intercambia un audio cuantificado de 5 bits que es al menos silencioso cuando no hay señal para obtener una señal que se cuantifica a una profundidad de bits mucho mayor pero tiene un ruido blanco constante a -14dB, incluso cuando no hay una señal real presente.

Entonces, la idea funciona y no funciona.

Como esperaba, puede usar la modulación de ruido para obtener una mejor profundidad de bit y tener menos errores de cuantificación al distribuir la señal de modulación en todo el ancho de banda.

Esto conlleva el costo de no poder eliminar el ruido de modulación de la señal de salida generada, por lo que terminará con la misma relación señal / ruido.

Todo lo que has hecho es cambiar la causa de la mala relación señal / ruido.

    
respondido por el JRE
5

Una mejora sin duda. Pero no lo mejora hasta el punto donde no hay señales a una frecuencia de f_clock / resolución, todavía están presentes, reducidas por el primer orden de la relación de frecuencia. Si la pequeña mejora es adecuada para su aplicación, entonces hágalo. Para una aplicación de audio típica, la mejora no sería suficiente, ni tampoco sería para generar señales de calibración de CC, por ejemplo.

Puede lograr una mejor supresión de las frecuencias de f_clock / resolution con una de dos técnicas.

sigma en forma de ruido delta fraccional N . Hay mucho material publicado sobre este tema, en gran parte bastante opaco. No voy a hacer una revisión de literatura aquí. En este método todavía hay señales en fclk / resolution, pero se suprimen en el orden n de la relación para un modulador de orden n.

Síntesis del teorema del resto chino . Esto utiliza dos (o más) PWM convencionales en paralelo, cada uno con un acumulador más corto. Los dos contadores son de la forma MN y MP, donde M, N y P se ceban mutuamente, y M es un poco más que el número de PWM, digamos 5 para dos PWM. Si N = 63 y P = 64, entonces la tasa de repetición más baja es 1/2020 de fclock (1 / 5x64), pero la resolución que se puede lograr es 1/16128 (los 63 y 64 trabajan juntos para crear 1 / 4032ths, y hay una adición de 1/4 de 1 / (M-1)). En este método, realmente no hay señales en fclk / resolution. El método está limitado a la monotonicidad por el grado de equilibrio analógico que se puede obtener, pero esta igualdad debería ser más fácil de lograr que la relación entre un PWM más significativo y menos significativo, si intentara combinar dos de esa manera. ¿Por qué se llama Síntesis del Teorema del Resto Chino? Eso es lo que se usa para determinar los números que se cargarán en sus PWM, dada la fracción de salida que se debe alcanzar.

    
respondido por el Neil_UK
4

El problema es que todavía tendrá bajas frecuencias en la salida. Peor aún, no hay límite inferior en el contenido de frecuencia, incluso si la señal deseada es constante. Al menos con PWM sabes que todo el ruido estará en la frecuencia de PWM y sus armónicos.

Básicamente, usted está cambiando el ruido en frecuencias conocidas con ruido de amplio espectro. En algunos casos, eso podría ser una compensación deseable. En otros casos, esto es peor porque ahora ya no puede separar el ruido de la señal por la frecuencia.

Otra idea común en esta línea es usar un motor DIV o algo así como un algoritmo de Bresenham. Realiza un seguimiento del error acumulado y hace que la salida sea alta cuando el error es negativo y baja cuando el error es positivo.

Luego puede jugar con diferentes estrategias de cómo cada porción de salida se acumula a lo largo del tiempo en el error. Si se acaba de agregar sin deterioro, entonces tiene un motor DIV puro o un algoritmo de Bresenham. Esto puede producir frecuencias infinitamente bajas, pero el promedio a largo plazo está dentro de ± un corte alto o bajo. Con diferentes decaimientos, puede hacer que emita frecuencias menos bajas a expensas de la precisión a largo plazo.

Sin embargo, en ningún caso estos métodos tienen un límite garantizado más alto en la frecuencia de ruido que PWM tiene la misma frecuencia de corte y la máxima precisión resultante.

    
respondido por el Olin Lathrop
2

Se utiliza.

Creo que ha descrito el generador de "secuencia pseudoaleatoria" (PRS) PWM.

Se describe en la nota de aplicación de Cypress Semiconductor "AN2246: PSoC® 1 - Fuente PWM - Alta frecuencia, Alta resolución" en el documento "AN2246_001-33721_0C_V" que puede descargar de Cypress Semi en el documento:
AN2246_001-33721_0C_V.pdf

Esa nota de aplicación también describe varias alternativas.

    
respondido por el gbulmer
1

Un modulador Delta-Sigma de orden simple o doble (es decir, como MOD1 y MOD2) hace un trabajo aún mejor al aprovechar el ancho de banda, el ruido y la resolución, y es incluso más sencillo de implementar. Y se usan mucho en varios dominios.

Cuando desee obtener más información sobre los conversores Delta-Sigma, le recomiendo: "Descripción de los convertidores de datos Delta-Sigma" de Schreier y Temes (ISBN 0-471-46585-2).

    
respondido por el user3668158

Lea otras preguntas en las etiquetas