Filtro digital dedicado

He construido un DDS (0-80MHz) con un FPGA (XC3S400) que puedo programar para hacer casi cualquier forma de onda (frecuencia limitada por la complejidad de la forma de onda). Después de semanas de luchar para hacer un filtro de paso bajo adecuado para él, me di cuenta de que es poco práctico construir un filtro analógico casi perfecto que pueda eliminar todas las imágenes de alta frecuencia (Nyquist) + todos los alias de baja frecuencia (fotos de los resultados aquí ; obstáculos creados por alias de baja frecuencia en DDS, figura 1 aquí ).

Ahora quiero convertirme en un filtro digital de paso bajo (o preferiblemente paso de banda sintonizable), pero realmente no tengo tiempo para aprender DSP desde cero. Busqué en algunas de las principales empresas (Analog Devices, Texas Instruments,...) un producto de filtro digital dedicado, pero mi búsqueda siempre redirige a productos DSP.

Quiero saber si hay filtros digitales dedicados con una interfaz simple (por ejemplo, selección de frecuencia mediante una interfaz de microcontrolador o algo así). Por ejemplo, enviar el comportamiento de filtro deseado a través de una palabra en serie/paralelo al dispositivo y funciona con eso.

Edición:

Me di cuenta de la respuesta a continuación que puedo usar el FPGA actual para mi propósito. Probé 2 enfoques: 1- DDS> DAC> ADC> FIR (FPGA)> DAC. esto crea nuevamente alias relacionados con el DAC. 2- DDS > FIR (sin ADC externo) > DAC. Esto no está mal, pero el problema con los alias persiste hasta cierto punto. Estoy buscando un buen recurso/método de pensamiento para este problema (¡quizás el más fácil!)

A menos que me esté perdiendo algo, los alias son producto de su SCOPE y no de su DDS.
@ScottSeidman No, finalmente descubrí que era una combinación de todo: alcance + alias de baja frecuencia, inherentes a "DDS del mundo real" (el segundo enlace proporcionado en la pregunta) + mala línea de tierra que pasa de FPGA en lugar de los pines dedicados + mal creación de prototipos de diseño de PCB + ...... y posiblemente muchas otras cosas que entran en la cuenta en altas frecuencias (¡incluso quizás los marcianos! :)) !!
No estoy seguro de entender tu pregunta. ¿Qué distingues cuando hablas de "imágenes de alta frecuencia" y "alias de baja frecuencia"? ¿Puede compartir el espectro de su señal, mostrando lo que quiere decir con estos dos componentes?
@ThePhoton se proporciona un enlace en la pregunta (el primero "aquí") o también: electronics.stackexchange.com/questions/91616/…
@Aug, en su página vinculada, no veo qué funciones llama "alias de baja frecuencia" y qué funciones llama "imágenes de alta frecuencia". También dice arriba que sus problemas son causados ​​​​por una combinación de varias cosas que incluyen "mala línea de tierra" y "mal diseño de prototipos de PCB". Es absolutamente necesario solucionar estos dos problemas y mostrarnos los resultados antes de que podamos distinguir cualquier problema que tenga con el alias.

Respuestas (2)

Dichos productos definitivamente existen, pero será difícil para usted encontrar un producto que se adapte con precisión a los requisitos de su proyecto. Para filtros digitales de frecuencia de audio, puede consultar QuickFilterTech . Para frecuencias de radio más altas (> 1 GHz), viene a la mente el hitita .

Sin embargo, si necesita operar en el rango más pequeño de decenas de MHz, probablemente tendrá que hacer lo que hace la mayoría de la gente: obtener un DSP o FPGA más bien pequeño y usar las herramientas proporcionadas por el proveedor para generar un firmware de filtro (todos los proveedores principales los tienen; diseño paramétrico con asistentes GUI e imágenes compatibles).

De hecho, el mejor enfoque contemporáneo (y el más utilizado) para un diseño integrado de un solo chip puede ser solo este: FPGA que implementa tanto la MCU como el filtro digital en el mismo firmware.

Actualizar

Acabo de darme cuenta de que ya tiene un Spartan FPGA en su proyecto. Puede usar el compilador Xilinx FIR para generar un filtro fijo listo para usar (y usar el cambiador de frecuencia para realizar la afinación) o puede investigar algunos de los enfoques para la implementación de filtros ajustables en la FPGA (algunos no son muy difíciles, muchas publicaciones alrededor).

Gracias por la buena sugerencia. Me confundí un poco. Acabo de hacer un módulo FIR (IP CORE). Tiene una entrada de [0..15] bits y una salida de [0..36] bits y como FPGA no tiene ADC, ¿cómo debo usarlo? una idea es: DDS -> DAC (un tercero y fuera de la FPGA que crea alias) -> ADC -> FIR -> DAC (nuevamente, sin alias) o simplemente puedo usar solo un DAC (DDS-> FIR -> CAD).
No pienses en términos analógicos, todo es digital. :)
Para el enfoque más crudo posible, puede tomar el tren de pulsos DDS y conectarlo al MSB de la entrada del FIR (¿no era esto lo que quería hacer con el DAC/ADC?). La salida de FIR se parecerá a una onda sinusoidal. Si este es su objetivo principal, existen topologías de filtro que son particularmente adecuadas para la conversión de tren de pulsos a onda sinusoidal digitalizada (pero tenga en cuenta que necesita ejecutar el FIR a un reloj suficientemente alto).

El filtrado digital suena como la única forma de lograr lo que desea y mis dos peniques no son mucho, pero aquí va.

Hay filtros digitales básicos de segundo orden que son buenos y razonablemente simples, pero se basan en un poco de sobremuestreo para lograr anchos de banda cercanos a la frecuencia de muestreo básica. El sobremuestreo se puede lograr tomando dos muestras básicas consecutivas y creando muestras en el medio. Digo esto porque estos son los únicos filtros digitales que conozco (en mi capacidad limitada en este tema) que podrían funcionar.

Aquí hay uno que se basa en un muestreo de 1kHz y menciona la creación de sobremuestreos para lograr una estabilidad más allá del límite de 300Hz sin sobremuestreo. Si ya tiene muestras a una velocidad de 1 GHz, este tipo de filtro funcionaría hasta quizás 200 MHz: -

ingrese la descripción de la imagen aquí