Encontré algunas preguntas y problemas que me hice últimamente y esperaba poder obtener una buena pista aquí antes de comenzar a leer artículos largos sin siquiera estar seguro de si es la forma correcta.
Supongamos que tengo un diseño FPGA, donde obtengo datos ADC con una frecuencia de muestreo de 40 MHz, por lo que engancho los datos de la interfaz ADC en 40 MHz.
pero quiero hacer que el DSP dentro del FPGA tenga una velocidad de reloj de 100 MHz (por ejemplo, porque tengo una interfaz de memoria DDR3 en el diagrama de bloques del DSP que funciona a 400 MHz con una velocidad de reloj de 4:1, lo que significa que el reloj de la interfaz de usuario de la DDR3 es de 100 MHz).
Los datos de la interfaz ADC que vienen en una tasa de 40MHz son válidos el 90% del tiempo, lo que significa que necesito la mayor parte.
Entonces, la primera pregunta que quiero hacer es: ¿Cómo movería el flujo de datos del dominio del reloj lento al rápido?
Ya hice un mecanismo de trabajo para esto, llené un FIFO (con 1024 de profundidad) y justo después comencé a llenar el siguiente FIFO (utilicé 2 FIFO),
mientras que el proceso de lectura del primer FIFO comenzaba en el momento en que el primero FIFO está lleno y, a partir de este momento, solo leo el primero y luego el segundo y el primero y el segundo y así sucesivamente... mientras sigo escribiendo en los 2 FIFO cada uno a la vez.
Después de que terminé de escribir este bloque, me pregunté si había una mejor manera,
Encontré el filtro de interpolación usando FIR, ¿la interpolación hace este trabajo de pasar de un dominio de reloj lento a uno rápido para un flujo de datos?
También vi el filtro polifásico que también parece una forma de pasar a una frecuencia de muestreo más rápida.
¿Su filtro, que es fácil de instanciar en FPGA, es la forma correcta de mover el flujo de datos a un dominio de reloj más rápido, o mi camino con FIFO es el camino a seguir?
gracias.
Entonces, la primera pregunta que quiero hacer es: ¿Cómo movería el flujo de datos del dominio del reloj lento al rápido? Ya hice un mecanismo de trabajo para esto, llené un FIFO (con 1024 de profundidad) y justo después comencé a llenar el siguiente FIFO (utilicé 2 FIFO),
Exactamente como lo está haciendo: con el dominio del reloj cruzando FIFO.
Después de que terminé de escribir este bloque, me pregunté si había una mejor manera, encontré el filtro de interpolación usando FIR, ¿la interpolación hace este trabajo de pasar de un dominio de reloj lento a uno rápido para un flujo de datos?
No. Quiero decir, sí, pero no.
Desea pasar las mismas muestras a un reloj más rápido y procesarlas allí. La interpolación (y todo el remuestreo) en realidad cambia la señal digital.
Ilustremos con un ejemplo: supongamos que desea pasar de una señal muestreada de 40 MHz a 200 MS/s (megasmuestras por segundo). Lo que hace es simplemente insertar 4 ceros después de cada muestra de entrada. Debido a que generalmente desea que los "ceros" no sean ceros sino que representen la señal analógica como si se muestreara a 200 MHz para empezar, aplica un filtro de paso bajo (en esa aplicación se llama filtro anti-imagen) y obtiene una señal interpolada.
Sin embargo, el hecho de que obtenga 200 millones de muestras por segundo no significa que deba procesarlas a un rendimiento de 200 millones de muestras por segundo o a una velocidad de reloj de 200 MHz. Puede procesarlos tan rápido como desee y, si tiene suficiente búfer, también tan lento como desee.
La frecuencia de muestreo y la frecuencia del reloj no están inherentemente vinculadas.
Piense en esto en su PC: digamos que tiene un archivo de audio PCM sin formato, muestreado a 44,1 kS/s. Quiere codificarlo como audio MPEG 4; aunque la pieza de audio puede durar minutos, el proceso de codificación toma solo unos segundos: no es necesario llevar el archivo de audio a la "tasa de procesamiento" de su CPU (cualquiera que sea esa tasa, realmente no existe) .
Lo mismo para su dominio FPGA: seguro, su lógica de dominio de reloj más alto probablemente tendrá que estar inactiva en el medio si recibe muestras de un ADC de menor velocidad, pero eso solo significa que puede relajarse, y está bien si las cosas toman más de uno. ciclo de reloj por muestra para trabajar.
Cubic273.15
Michael Astahov
chris stratton
Michael Astahov
chris stratton