modulador BPSK con DDS en FPGA

1

Estaba desarrollando un modulador BPSK con un AD9852. Como AD no parece ofrecer ninguna forma de simular funcionalmente sus IC de DDS, de repente me veo en la necesidad de cambiar para una arquitectura FPGA. No he trabajado con un FPGA o VHDL todavía. Después de investigar un poco, se me ocurrieron un par de preguntas (más bien, muchas) con respecto a las arquitecturas FPGA y DDS:

1) ¿Qué tan rápido puede ir el reloj de referencia interno en el FPGA? ¿Se puede dividir internamente para obtener un reloj de referencia más alto?

2) ¿Es posible hacer un DAC interno en el FPGA?

En caso de que no lo sea, ¿se puede enviar el reloj de referencia interno a un DAC externo? ¿Cómo se puede arreglar el retraso de la tubería en este caso?

En caso de que ambos sean posibles, ¿cuál sería recomendado?

3) En varios proyectos con FPGA, el modulador se simplifica utilizando el DDS para generar la frecuencia portadora, luego multiplexarlo con su complemento y la entrada de datos binarios. En los esquemas tradicionales, la modulación de fase se realiza a la salida del acumulador de fase, antes de la LUT. ¿Cómo se puede hacer esto de manera práctica? (Por lo que puedo ver con las herramientas FPGA, la mayoría de estos bloques ya están disponibles).

Además, la LUT se puede reducir al explotar la simetría de onda sinusoidal hasta un cuarto o simplemente eliminarlo y aplicar el algoritmo CORDIC. ¿Cómo se puede realizar este truncamiento de fase? en el caso de CORDIC, ¿existe un bloque CORDIC implementado para esto?

Por cierto, pregunta tonta. ¿Deben calcularse los valores de LUT para cada palabra de sintonización de frecuencia en el acumulador de fase o solo depende del reloj de referencia (en cuyo caso debería calcularse para una frecuencia de referencia específica)?

4) ¿Es posible realizar cálculos de punto flotante DSP en FPGA? Soy consciente de que hay algunos tableros incrustados con ARM Cortex.

Finalmente, ¿qué modelos / tableros de FPGA recomendarías para esta aplicación en particular (también teniendo en cuenta que tengo un presupuesto)?

Soy consciente de que estas son muchas preguntas, pero se agradecería cualquier ayuda sobre estos temas

Gracias de antemano

    
pregunta Alejandro

1 respuesta

1

1) El reloj de referencia puede ir tan rápido o tan lento como quieras. La mayoría de los FPGA tienen PLL incorporados que pueden convertir un reloj de referencia externo en cualquier frecuencia que necesite (dentro de lo razonable). Por lo tanto, podría tomar una referencia externa de 10 MHz y multiplicarla hasta 100, 150, 200 MHz, etc.

2) No, los FPGA no contienen DAC. Puede ser posible construir un DAC R-2R, pero si desea ejecutar a una frecuencia de muestreo alta, puede ser recomendable usar un DAC externo de alto rendimiento con una interfaz serial ancha paralela o incluso de alta velocidad (no SPI, alta velocidad como en > 1 Gbps por carril). Obviamente, un DAC necesitará un reloj de muestra, y generar esto en el FPGA es ciertamente posible. Si usa un flip-flop DDR para generar el reloj, entonces debe coincidir exactamente con las muestras que se cronometran en paralelo.

3) Agregar un desplazamiento de fase después de que el acumulador de fase sea simple: solo agregue un sumador entre los dos y agregue el desplazamiento que necesita en cada ciclo.

En lo que respecta a una LUT, esa simetría es solo una cosa que puedes explotar. Si está de acuerdo con el uso de un par de cortes DSP (multiplicadores), es posible comprimir una tabla equivalente muy grande (fase de 18 bits, amplitud de 16 bits) en 3 LUT pequeñas (~ 512 entradas). Esto utiliza la identidad de disparo sin (A + B) = sin (A) + cos (A) * sin (B) para reconstruir la onda sinusoidal a alta resolución. Vea un ejemplo en enlace . Los valores de LUT solo tienen que calcularse para la profundidad de bit requerida, seleccione la frecuencia que desee con la palabra de control de frecuencia.

4) Es posible, pero en general no es muy eficiente. Los FPGA están en su mayoría optimizados para matemáticas de puntos fijos y enteros rápidos. Hay algunos que soportan el punto flotante del hardware, pero estos son relativamente raros.

    
respondido por el alex.forencich

Lea otras preguntas en las etiquetas