DDS: Convertidor de Fase a Seno
Direct Digital Synthesis - Explicación Detallada
1. Phase Accumulator (Acumulador de Fase - 48 bits)
El acumulador de fase es el corazón del sistema DDS. Funciona como un contador que
avanza en pasos controlados. Imagina un velocímetro digital que en lugar de sumar 1 en cada ciclo,
suma un valor personalizado (M).
¿Cómo funciona?
En cada ciclo del reloj de muestreo, el acumulador suma el valor M a su contenido actual.
Cuando "da la vuelta" (overflow), comienza de nuevo desde cero. La velocidad con la que da
vueltas completas determina la frecuencia de salida.
¿Por qué 48 bits?
-
Precisión extrema: Con 48 bits, puedes dividir el rango completo en
281 billones de pasos. Esto permite ajustar la frecuencia con una precisión casi infinitesimal.
-
Resolución de frecuencia: Si el clock es de 100 MHz, el paso más pequeño
posible es 100,000,000 / 2^48 = 0.00035 Hz. ¡Puedes generar 1.00000035 Hz
o 1.00000070 Hz!
-
Estabilidad: La frecuencia de salida es tan estable como el clock de
referencia (generalmente un cristal de cuarzo muy preciso).
Ejemplo práctico:
Clock (fC) = 100 MHz
Si M = 1 → fa = 0.00035 Hz (casi DC)
Si M = 2,862,835 → fa = 1,000 Hz (1 kHz exacto)
Si M = 143,165,576,500 → fa = 50 MHz (mitad del clock)
2. Phase Register (Registro de Fase - 14 bits)
El registro de fase es un compromiso inteligente entre precisión y eficiencia.
Toma solo los 14 bits más significativos (los de la izquierda, bits 34-47) del acumulador de 48 bits.
¿Por qué descartar bits?
Los 34 bits menos significativos (LSB) cambian muy lentamente y aportan poca información
útil para la forma de onda. Los 14 bits más significativos (MSB) cambian rápidamente y
representan la posición actual en el ciclo de la onda con suficiente precisión.
La magia de la reducción:
-
Problema: Si usáramos los 48 bits completos para indexar la tabla de
senos, necesitaríamos 2^48 = 281 billones de valores. A 2 bytes por valor, eso son
562 Petabytes de memoria. ¡Imposible!
-
Solución: Con 14 bits, solo necesitamos 2^14 = 16,384 valores.
A 2 bytes por valor, eso son solo 32 Kilobytes. ¡Perfecto!
-
Calidad: 16,384 puntos por ciclo de seno son más que suficientes.
El ojo humano (y la mayoría de aplicaciones) no notaría la diferencia con más puntos.
Analogía:
Imagina un reloj con 281 billones de marcas (48 bits). Sería imposible leerlo.
Lo reducimos a un reloj con 16,384 marcas (14 bits). Sigue siendo muy preciso
(menos de 0.02 grados entre marcas) y mucho más práctico.
3. Lookup Table (Tabla de Consulta - 16 bits)
La Lookup Table (LUT) es una memoria ROM que contiene los valores precalculados
de una onda senoidal. Es como tener una tabla de senos en la memoria, pero optimizada para
acceso ultrarrápido.
¿Qué contiene exactamente?
Para cada uno de los 16,384 valores posibles de fase (0 a 16,383), la tabla almacena
el valor de sen(2π × fase / 16384). Estos valores se calculan una sola vez durante el
diseño y se graban en la memoria.
Características clave:
-
Tamaño: 16,384 entradas × 16 bits = 32,768 bytes = 32 KB.
Ocupa muy poco espacio en un FPGA o ASIC moderno.
-
Resolución de amplitud: 16 bits permiten 65,536 niveles de
voltaje diferentes. Esto da un SNR (relación señal-ruido) teórico de
6.02 × 16 + 1.76 = 98 dB.
-
Velocidad: El acceso a memoria es instantáneo (1 ciclo de clock).
No hay cálculos en tiempo real, solo lectura.
-
Simetría: En la práctica, solo se almacena 1/4 de ciclo (0° a 90°)
y se usa simetría para reconstruir el ciclo completo, ahorrando aún más memoria.
Ejemplo de valores:
Fase = 0 → sen(0°) = 0 → Valor = 32,768 (centro, representado en 16 bits)
Fase = 4,096 → sen(90°) = 1 → Valor = 65,535 (máximo)
Fase = 8,192 → sen(180°) = 0 → Valor = 32,768 (centro)
Fase = 12,288 → sen(270°) = -1 → Valor = 0 (mínimo)
4. DAC (Digital-to-Analog Converter)
El DAC es el puente entre el mundo digital y el analógico. Convierte cada
valor digital de 16 bits de la tabla lookup en un voltaje analógico real que puede ser
usado por otros circuitos.
¿Cómo genera la onda continua?
El DAC recibe un nuevo valor digital en cada ciclo del clock de muestreo. Mantiene ese
voltaje constante hasta que llega el siguiente valor (efecto "sample and hold").
Un filtro paso bajo posterior suaviza los escalones, creando una onda senoidal continua.
Aspectos importantes:
-
Frecuencia de muestreo: Debe ser al menos 2× la frecuencia de
salida (Nyquist). En la práctica, se usa 10-20× para mejor calidad.
-
Resolución: 16 bits = 65,536 niveles. Cada nivel representa un
paso de voltaje de Vref / 65,536.
-
Velocidad: Los DACs modernos pueden operar a cientos de MHz,
permitiendo generar señales hasta 40-50 MHz con buena calidad.
-
Filtro de reconstrucción: Después del DAC se coloca un filtro
paso bajo para eliminar las frecuencias imagen (replicas espectrales) y suavizar
la onda.
Proceso completo:
1. Clock = 100 MHz → cada 10 ns llega un nuevo valor
2. DAC recibe: 32,768 → 33,500 → 34,200 → ... → 65,535 → ...
3. Voltaje de salida: 1.65V → 1.69V → 1.73V → ... → 3.3V → ...
4. Filtro suaviza los escalones → Onda senoidal perfecta de 1 MHz
Ventajas Clave del DDS
-
Precisión extrema: Resolución de 0.00035 Hz con clock de 100 MHz.
Puedes generar exactamente 1,000.0000 Hz o 1,000.00035 Hz. Ideal para aplicaciones
que requieren frecuencias muy específicas.
-
Agilidad espectral: Cambio de frecuencia en 1 ciclo de clock
(10 ns con clock de 100 MHz). Comparado con un PLL que tarda microsegundos o
milisegundos en asentarse.
-
Fase continua: Al cambiar la frecuencia, la fase no se resetea.
La onda continúa sin saltos ni discontinuidades. Esencial para modulaciones
complejas como FSK o PSK.
-
Eficiencia de memoria: 99.997% menos memoria (32 KB vs 32 PB)
sin pérdida apreciable de calidad. Compromiso perfecto.
-
Calidad de señal: SNR de ~98 dB con DAC de 16 bits.
Distorsión armónica muy baja (< -90 dBc típico).
-
Generación de formas complejas: No solo senos. Cambiando la
Lookup Table puedes generar ondas cuadradas, triangulares, o cualquier forma
de onda arbitraria.
Limitaciones a Considerar
-
Frecuencia máxima: Limitada por el clock. Máximo práctico es
~40% de fC (40 MHz con clock de 100 MHz) debido al teorema de Nyquist
y filtros necesarios.
-
Spurs espurios: Pequeñas frecuencias no deseadas aparecen debido
a la truncación de bits y no linealidades del DAC. Típicamente -60 a -80 dBc.
-
Consumo de potencia: El clock de alta frecuencia y el DAC
consumen más energía que un oscilador analógico simple.