¿Cuántos grifos necesita un filtro FIR?

20

Estoy buscando diseñar un conjunto de filtros FIR para implementar un filtro de paso bajo. También estoy tratando de reducir la latencia de la señal a través del filtro, así que me pregunto cuál podría ser el número mínimo de toques que puedo usar.

Sé que más toques pueden conducir a un corte más agudo de la frecuencia y a detener mejor el rechazo de banda, etc. Sin embargo, lo que me interesa es más fundamental, si quiero implementar un filtro de paso bajo con corte en ¿significa eso que necesito al menos 100 toques para atenuar las señales de baja frecuencia? ¿O puedo salir con menos toques y si es así hay algún límite inferior teórico?fs100

Tommy
fuente

Respuestas:

24

Citando el clásico Procesamiento digital de señales de Bellanger : teoría y práctica , el punto no es dónde está su frecuencia de corte, sino cuánta atenuación necesita, cuánta ondulación en la señal que desea preservar puede tolerar y, lo más importante, cómo debe reducir su transición de paso a stopband (ancho de transición).

Supongo que desea un filtro de fase lineal (aunque especifica una latencia mínima, no creo que un filtro de fase mínima sea una buena idea, en general, a menos que sepa muy bien lo que hará con su señal después) . En ese caso, el orden del filtro (que es el número de toques) es

N23log10[110δ1δ2]fsΔf

con

fs the sampling rateΔf the transition width, ie. the difference between end of pass band and start of stop bandδ1 the ripple in passband, ie. "how much of the original amplitude can you afford to vary"δ2 the suppresion in the stop band.

¡Enchufemos algunos números! Especificó una frecuencia de corte de , así que seguiré adelante y reclamaré que su ancho de transición no será más de la mitad de eso, entonces .fs100Δf=fs200

Procedente de la tecnología SDR / RF, 60 dB de supresión suelen ser completamente suficientes: el hardware, sin costos locos, no será mejor para mantener las señales no deseadas fuera de su entrada, así que, no desperdiciemos CPU en tener un filtro fantástico que es mejor de lo que tu hardware puede hacer. Por lo tanto, .δ2=60 dB=103

Digamos que puede vivir con una variación de amplitud de 0.1% en la banda de paso (si puede vivir con más, considere también hacer que el requisito de supresión sea menos estricto). Eso es .δ1=104

Entonces, conectando esto:

NTommy's filter23log10[110δ1δ2]fsΔf=23log10[110104103]fsfs200=23log10[110107]200=23log10[1106]200=23(log10106)200=236200=800 .

Entonces, con sus 200 toques, está lejos, si usa una banda de paso extremadamente estrecha en su filtro, como supuse que lo haría.

Tenga en cuenta que esto no tiene por qué ser un problema: en primer lugar, un filtro de 800 toques da miedo, pero, francamente, solo a primera vista:

  • Como probé en esta respuesta en StackOverflow : las CPU de hoy en día son rápidas , si usas la implementación FIR optimizada para CPU de alguien. Por ejemplo, utilicé la implementación FFT-FIR de GNU Radio con exactamente el esquema de especificación de filtro anterior. Obtuve un rendimiento de 141 millones de muestras por segundo, eso podría o no ser suficiente para ti. Así que aquí está nuestro caso de prueba de preguntas específicas (que me llevó unos segundos producir):Filtrado FIR de FFT basado en GNU Radiovalorar resultados: rate_avg = 1.40982e + 08
  • Decimación: si solo va a mantener una fracción del ancho de banda de entrada, la salida de su filtro se sobremuestre drásticamente. La introducción de una decimación de significa que su filtro no le proporciona todas las muestras de salida, sino solo cada ésto, lo que normalmente generaría muchos alias, pero dado que está erradicando toda señal que podría tener un alias, puede con seguridad hazlo. Las implementaciones inteligentes de filtros (decimadores polifásicos) pueden reducir el esfuerzo computacional de M, de esta manera. En su caso, podría diezmar fácilmente por , y luego, su computadora solo tendría que calcularMMM=50120050=24multiplicaciones / acumulaciones por muestra de entrada, mucho más fácil. Los filtros en GNU Radio generalmente tienen esa capacidad. Y de esta manera, incluso fuera de la FIR FFT (que no se presta muy bien a una implementación de decimación polifásica), puedo exprimir otro factor de 2 en el rendimiento. No puedo hacer mucho más. Eso es bastante cercano al ancho de banda de RAM, en mi experiencia, en mi sistema. por
  • Latencia: no me importa. Realmente, no lo hagas, a menos que lo necesites. ¿Estás haciendo esto con frecuencias de muestreo de audio típicas? Recuerde, mencionado anteriormente. Por lo tanto, el tiempo dedicado a calcular la salida del filtro solo será relevante para la transmisión de señal en vivo de MS / s. Para DSP con datos fuera de línea: bueno, agregue un retraso a cualquier señal que tenga en paralelo a su filtro para compensar. (Si su filtro es de fase lineal, su retraso será la mitad de la longitud del filtro). Esto podría ser relevante en una implementación de hardware del filtro FIR.96kSsridiculously141MSs
  • Implementación de hardware: por lo tanto, tal vez la CPU y el sistema operativo de su PC o dispositivo integrado realmente no le permitan cumplir con sus restricciones de latencia, por lo que está buscando FIRs implementadas con FPGA. Lo primero que notará es que para el hardware, hay un paradigma de diseño diferente: un "Suprimo todo menos1100de mi índice de velocidad de entrada "necesita un ancho de bits grande para los números de punto fijo que manejaría en Hardware (en oposición a los números de punto flotante en una CPU). Así que esa es la primera razón por la que normalmente dividiría ese filtro en múltiples , filtros FIR en cascada, más pequeños y diezmadores. Otra razón es que usted puede, con cada "paso" en cascada, dejar que sus multiplicadores (típicamente, "segmentos DSP") funcionen a una velocidad menor y, por lo tanto, multiplexarlos (número de segmentos DSP) usualmente es muy limitado), usando un multiplicador para múltiples toques. Otra razón más es que especialmente los filtros de media banda, es decir, los pasos bajos que suprimen la mitad de la banda de entrada y entregan la mitad de la velocidad de entrada, son implementables de manera muy eficiente en el hardware (ya que tienen la mitad los grifos son cero, algo que es difícil de explotar en una implementación de CPU / SIMD).
Marcus Müller
fuente
3
Lake DSP estaba haciendo 256,000 filtros FIR en tiempo real a mediados y principios de los 90. 1200 grifos? Phfffft! ;-)
Peter K.
2
@PeterK. ¡Ese es el espíritu! Respeto profundo por ese FIR de 256kT: la precisión numérica con la que han construido debe haber sido tan impresionante como el gran tamaño del diseño. Siendo demasiado joven para disfrutarlos tecnológicamente, los principios de los 90 deben haber sido un momento interesante. Hablé con un ingeniero hace un tiempo que hizo IC DFT en esos días; La necesidad de ASIC DSP específicos de la aplicación parecía ser alta, ya que la gente se dio cuenta de lo que era posible en cuanto a DSP con las plataformas informáticas para manejar realmente los flujos de datos resultantes, pero no hay aceleradores "multipropósito" (a diferencia de hoy).
Marcus Müller
@PeterK., Sí, pero los australianos siempre están tirando de nuestra pierna.
robert bristow-johnson
@ robertbristow-johnson oy amigo, qué chiste interno está sucediendo aquí: D?
Marcus Müller
2
@ MarcusMüller, aunque no parece haber un mayor popularidad de los ASICs en ese entonces en comparación con ahora (y creo que es porque todo el mundo que era una especificación de ASIC / diseñador entonces ahora sólo utiliza FPGAs) no eran "polivalentes" DSP principios de los años 90s. esa cosa de LakeDSP se hizo con 6 DSP56001.
robert bristow-johnson
14

Para una estimación rápida y muy práctica, me gusta la regla de oro de fred harris:

Ntaps=Atten22BT

dónde:

Atten es la atenuación deseada en dB,

BT es la banda de transición normalizada ,BT=FstopFpassFs

Fstop y son las frecuencias de banda de parada y banda de paso en Hz yFpass

Fs es la frecuencia de muestreo en Hz.

Esto se acerca mucho a lo que obtendría para un filtro de fase lineal con una ondulación de banda de paso de 0.1 dB. Utilizo esta regla general a menudo para obtener una idea del primer corte del número de toques necesarios, y luego modificar a través de la iteración en el proceso de diseño del filtro.

También para tener en cuenta: esta regla general proporciona una gran visión de lo que realmente impulsa el número de toques: detener la atenuación de banda y la inclinación de la banda de transición (y la ondulación de la banda de paso, pero generalmente, al menos para los filtros que he tenido que diseñar para aplicaciones de comunicaciones inalámbricas: el requisito de atenuación dominaría sobre la ondulación). Por lo tanto, su pregunta al establecer un límite en Fs / 100 se pierde con la rapidez con la que necesita hacer la transición a una banda de parada.

Ejemplo: atenuación de 60 dB, = 100KHz, = 1KHz, = 3KHzFsFpassFstop

Ntaps=60222/100=137 grifos (redondeando)

Jugar con estos números también puede demostrar la importancia en la reducción del procesamiento mediante el uso de enfoques de diezmado.

Dan Boschen
fuente
7

Agregando a la respuesta aceptada, algunas referencias adicionales. No escribiré las fórmulas que pueden estar involucradas. Esas fórmulas en su mayoría producen reglas generales o aproximaciones para comenzar. Puede manipular estos números para su diseño real.

Uno de los orígenes del diseño de Bellanger es: Sobre la complejidad computacional en filtros digitales, 1981, Proc. EUR. Conf. Diseño de teoría de circuitos, M. Bellanger. Es bastante difícil de obtener, pero es factible . Curiosamente, también especifica fórmulas para evaluar el número de bits por coeficiente, que debe considerarse en la implementación de aritmética finita. Una versión más accesible en francés es: Evaluation de la complexité des filtres numériques , 1982.

Se recopilan varias otras fórmulas en el diseño de filtro de respuesta de impulso finito , Manual para el procesamiento de señales digitales, 1993, T. Samamaki.

Más recientemente, puede leer Estimación precisa de la longitud mínima del filtro para filtros digitales FIR óptimos , 2000, K. Ichige et al.

Por último, el diseño eficiente en papel de los filtros FIR con pedidos mínimos de filtro que utilizan la optimización de la norma l0 , 2014 afirma un diseño en el que el orden se reduce gradualmente.

Laurent Duval
fuente
4

No creo que realmente haya un número mínimo definitivo de toques. Es bastante común generar filtros FIR mediante optimización convexa, por ejemplo, sujeto a 1

minimize max(|H(ω)|)for all ω in the stopband
subject to1δ|H(ω)|δ for all ω in the passband

Los principales problemas prácticos que se me ocurren serían la cantidad de muestras de frecuencia utilizadas al hacer la optimización, ya que el comportamiento de la muestra entre frecuencias puede causar efectos no deseados. Lo bueno que puede llegar a ser el ajuste depende, por supuesto, del número de golpes. Supongo que se podría decir que el número mínimo de toques es cuando el problema se vuelve inviable. Entonces, una solución sería resolver el problema de viabilidad.

Arnfinn
fuente