(Numerically Controlled Oscillator) NCO (Numerically Controlled Oscillator)
Qué es un NCO Aplicaciones NCO: Oscilador controlado numéricamente Qué es un NCO Es un sistema electrónico digital utilizado para sintetizar señales de frecuencias variadas, a partir de una base de tiempo Aplicaciones - Conversores digitales up/down - PLLs digitales - Sistemas de radar - Moduladores/Demoduladores - Drivers para transmisiones ópticas o acústicas - Software-defined radios (SDR) Sistemas Digitales - UBA
Se elimina la necesidad del ajuste de los componentes NCO: Oscilador controlado numéricamente Ventajas Se elimina la necesidad del ajuste de los componentes analógicos, debido al paso del tiempo La interfaz digital facilita el control del sistema de manera remota Sistemas Digitales - UBA
Diagrama en bloques básico NCO: Oscilador controlado numéricamente Diagrama en bloques básico RCF + RF CFA Registro de Control de Frecuencia Sumador (Módulo N) Acumulador de fase Registro de Fase Convertidor Fase-Amplitud Lookup table Sistemas Digitales - UBA
- Se comienza con el Registro de Fase inicializado en cero NCO: Oscilador controlado numéricamente Funcionamiento - Se comienza con el Registro de Fase inicializado en cero - En el Registro de Control de Frecuencia se graba un número I - Con el primer ciclo de reloj el Registro de Fase toma el valor I - Con los siguientes ciclos de reloj el RF se incrementa en I, tomando los valores 2I, 3I, …, y así sucesivamente, hasta el desborde del contador. 001 101 110 001 100 101 001 000 001 011 100 001 111 000 001 110 111 001 000 001 010 011 001 010 RCF + RF CFA Sistemas Digitales - UBA
La salida del registro de Fase se utiliza para acceder a la NCO: Oscilador controlado numéricamente Funcionamiento La salida del registro de Fase se utiliza para acceder a la memoria que contiene las muestras de la señal El período de la señal de salida es igual al tiempo que le lleva al contador alcanzar su cuenta máxima. En este tiempo se tienen que obtener todas las muestras de la señal, guardadas en la memoria - De lo anterior se desprende que si el incremento de fase aumenta, el período de la señal de salida disminuye. Por Ej.: si el incremento es 1 se necesitan 2N ciclos de reloj para que el contador desborde, y si es 2 se necesitan 2N/2 Sistemas Digitales - UBA
Funcionamiento I1 Salida de la LUT Acumulador I2 = 2.I1 Salida de NCO: Oscilador controlado numéricamente Funcionamiento I1 Salida de la LUT Acumulador I2 = 2.I1 Salida de la LUT Acumulador Sistemas Digitales - UBA
De lo anterior se desprende: NCO: Oscilador controlado numéricamente Funcionamiento De lo anterior se desprende: [seg] I N 2 . Tclock To = (Período de la señal de salida) [Hz] N 2 I . Fclock Fo = (Frecuencia de la señal de salida) - A su vez, la memoria posee las muestras de un ciclo de una señal senoidal. El salto de fase entre cada posición es: N 2 360 ° = d Sistemas Digitales - UBA
- El Registro de Fase es de N bits, lo que le permite acceder NCO: Oscilador controlado numéricamente Funcionamiento - El Registro de Fase es de N bits, lo que le permite acceder a cualquier dirección de la memoria. El valor a la entrada del Registro de Control de Frecuencia, que se suma al valor del Registro de Fase en cada ciclo de reloj representa un incremento de fase de: N 2 .I 360 Δ ° = F - Finalmente la resolución en frecuencia se obtiene para I=1: [Hz] N 2 Fclock Tclock.2 1 Δf = Sistemas Digitales - UBA
N debe ser un número entero, por lo tanto: NCO: Oscilador controlado numéricamente Ejemplo de diseño Fo (Frecuencia de salida) = 500 Hz Df = Resolución en frecuencia <= 0,05 Hz Ts = Período de muestreo = 1/8000 seg 1. Cálculo del número de bits necesarios del acumulador N debe ser un número entero, por lo tanto: N = 18 Sistemas Digitales - UBA
Fo (Frecuencia de salida) = 500 Hz NCO: Oscilador controlado numéricamente Ejemplo de diseño Fo (Frecuencia de salida) = 500 Hz Df = Resolución en frecuencia <= 0,05 Hz Ts = Período de muestreo = 1/8000 seg 2. Recálculo de la resolución en frecuencia Df = 0,0305 Hz Sistemas Digitales - UBA
Fo (Frecuencia de salida) = 500 Hz NCO: Oscilador controlado numéricamente Ejemplo de diseño Fo (Frecuencia de salida) = 500 Hz Df = Resolución en frecuencia <= 0,05 Hz Ts = Período de muestreo = 1/8000 seg 3. Cálculo del incremento de fase I = 16384 Sistemas Digitales - UBA
Lookup table (memoria) NCO: Oscilador controlado numéricamente Arquitectura Lookup table (memoria) LUT cos Incremento de fase DF N FFD + FFD 2N-1 sen clk La LUT tiene 2N entradas (siendo N el número de bits de las direcciones generadas por el acumulador) La precisión de los datos de salida de la LUT es independiente de N Sistemas Digitales - UBA
Lookup table (memoria) NCO: Oscilador controlado numéricamente Arquitectura Lookup table (memoria) La LUT puede ser cargada con: - Todos los puntos de la senoide (ciclo completo) - La mitad de los puntos de la senoide (medio ciclo) - Un cuarto de los puntos de una senoide (cuarto ciclo) LUT 2N-1 Sistemas Digitales - UBA
Fo (Frecuencia de salida requerida) = 5MHz NCO: Oscilador controlado numéricamente Ejemplo 2 Fo (Frecuencia de salida requerida) = 5MHz Cantidad de valores en memoria = 256 Fs = Frecuencia de muestreo = 20MHz Fs . I Fo 5MHz Fo = [Hz] I = . 2N = . 256 = 64 2N Fs 20MHz Sistemas Digitales - UBA
Fo (Frecuencia de salida requerida) = 4.8MHz NCO: Oscilador controlado numéricamente Ejemplo 3 Fo (Frecuencia de salida requerida) = 4.8MHz Cantidad de valores en memoria = 256 Fs = Frecuencia de muestreo = 20MHz [Hz] 2N I . Fs Fo = 20MHz 256 4,8MHz 61,44 256 round(I) . 20MHz Fo = 4,76MHz ≠ 4,8MHz Sistemas Digitales - UBA
Arquitectura (uso de punto fijo) NCO: Oscilador controlado numéricamente Arquitectura (uso de punto fijo) Diagrama general Lookup table Incremento de fase DF Qm,r Qm,r Qm,r Qm,r Qm FFD + FFD Q() clk El incremento de fase está representado en punto fijo (Qm,r) El acumulador opera con punto fijo -> aumenta su complejidad pero se logra un mejor control sobre la frecuencia deseada Para acceder a la LUT se descarta la parte fraccionaria Si se aumenta la cantidad de bits r se aumenta la resolución en frecuencia Sistemas Digitales - UBA
Ejemplo 3 (Continuación) NCO: Oscilador controlado numéricamente Ejemplo 3 (Continuación) Retomamos el ejemplo 3 pero esta vez utilizamos 4 bits fraccionales Con este nuevo formato el incremento puede ser representado como: I = 61,4375d = 00111101,0111b 20MHz . 61,4375 Fo = = 4,799MHz 256 La frecuencia resultante es mucho más cercana a la requerida Sistemas Digitales - UBA
Mínimo incremento (I) posible NCO: Oscilador controlado numéricamente Mínimo incremento (I) posible 1 Imin = 2r Resolución de frecuencia para el Imin 20MHz . Imin DFo = = 78125Hz 256 Sistemas Digitales - UBA
Resolución en frecuencia [Hz] NCO: Oscilador controlado numéricamente Resolución de frecuencia obtenible para 8 bits y una frecuencia de muestreo de 20MHz Bits p/parte fracc Incremento mínimo Resolución en frecuencia [Hz] 1 78.125 0,5 39.062,5 2 0,25 19.531,25 3 0,125 9.765,625 4 0,0625 4.882,8125 5 0,03125 2.441,40625 10 0,00097656 76,29394531 15 0,000030518 2,384185791 20 0,00000095367 0,074505806 Sistemas Digitales - UBA
Acceso a la memoria de valores de la señal (LUT) NCO: Oscilador controlado numéricamente Acceso a la memoria de valores de la señal (LUT) Sólo se utiliza la parte entera del acumulador (truncado) Este truncamiento atenta contra la pureza espectral de la señal generada Las muestras almacenadas en la LUT también presentan un grado de cuantización en amplitud. Esto también degrada la señal generada. Sistemas Digitales - UBA
Componentes espúreas debido al truncamiento de fase NCO: Oscilador controlado numéricamente Componentes espúreas debido al truncamiento de fase Sistemas Digitales - UBA
Componentes espúreas debido a la cuantización de amplitud NCO: Oscilador controlado numéricamente Componentes espúreas debido a la cuantización de amplitud Sistemas Digitales - UBA
Componentes espúreas debido a la cuantización de NCO: Oscilador controlado numéricamente Componentes espúreas debido a la cuantización de amplitud y al truncamiento de fase Sistemas Digitales - UBA
Rango dinámico libre de espúreos (SFDR) NCO: Oscilador controlado numéricamente Rango dinámico libre de espúreos (SFDR) SFDR Sistemas Digitales - UBA
influencia sobre el rendimiento del NCO. NCO: Oscilador controlado numéricamente Recapitulando … Tanto los bits representantes de la parte entera del acumulador, como los representantes de la parte fraccionaria y la resolución de la LUT tienen influencia sobre el rendimiento del NCO. Si se aumenta el número de bits de la parte entera se tiene: - Una LUT más grande - Un efecto menor debido al truncamiento de la fase Si se aumenta el número de bits de la parte fraccionaria se tiene: - Un salto incremental más pequeño y una mejor resolución en frec. - Un acumulador más caro Si se aumenta la resolución de la salida de la LUT se tiene: - Un efecto menor debido a la cuantización de las muestras de la señal. - Mayores requerimientos para la LUT Sistemas Digitales - UBA
Arquitectura (uso de punto fijo) NCO: Oscilador controlado numéricamente Arquitectura (uso de punto fijo) Agregado de dither Lookup table Incremento de fase DF Qm,r Qm,r Qm,r Qm,r Qm,r Qm FFD + FFD + Q() clk Generador de dither Sistemas Digitales - UBA
Arquitectura (uso de punto fijo) NCO: Oscilador controlado numéricamente Arquitectura (uso de punto fijo) Agregado de dither (poca cantidad de bits) SFDR = 73dB Sistemas Digitales - UBA
Arquitectura (uso de punto fijo) NCO: Oscilador controlado numéricamente Arquitectura (uso de punto fijo) Agregado de dither (excesiva cantidad de bits) SFDR = 81dB Sistemas Digitales - UBA
Arquitectura (uso de punto fijo) NCO: Oscilador controlado numéricamente Arquitectura (uso de punto fijo) Agregado de dither (cantidad correcta de bits) SFDR = 105dB Sistemas Digitales - UBA
Código VHDL Estructura NCO: Oscilador controlado numéricamente Código VHDL Estructura Incremento de fase DF sin_o acum_fase sin_cos cos_o clk Sistemas Digitales - UBA
Ejemplo de implementación en VHDL y simulación NCO: Oscilador controlado numéricamente Ejemplo de implementación en VHDL y simulación entity Acum_Fase is generic( P: natural := 3; -- incremento Q: natural := 14; -- módulo N: natural := 4 -- cantidad de bits ); port( clk: in std_logic; acum_reg: out std_logic_vector(N-1 downto 0) end entity Acum_Fase; Sistemas Digitales - UBA
Ejemplo de implementación en VHDL y simulación NCO: Oscilador controlado numéricamente Ejemplo de implementación en VHDL y simulación architecture BEH of Acum_Fase is signal mod_reg: unsigned(N-1 downto 0) := (others => '0'); signal rem_nc: unsigned(N-1 downto 0) := (others => '0'); signal term_add: unsigned(N-1 downto 0) := (others => '0'); begin rem_nc <= to_unsigned(Q,N) - mod_reg; term_add <= to_unsigned(P,N); Modular_Addition: process(clk) is if rising_edge(clk) then if (rem_nc<=to_unsigned(P,N)) then mod_reg <= to_unsigned(P,N) - rem_nc; else mod_reg <= mod_reg + term_add; end if; end process Modular_Addition; acum_reg <= std_logic_vector(mod_reg); end architecture BEH; Sistemas Digitales - UBA
NCO: Oscilador controlado numéricamente FIN Sistemas Digitales - UBA