NCO

27
NCO GENERADOR DE RELOJ DE FRECUENCIA VARIABLE ENTRE 10MHz y 20MHz CON UN PASO DE 50KHz SUBSISTEMAS ELECTRÓNICOS DE COMUNICACIONES 2010 MARC TENA GIL JAVIER CAMBRA ENGUIX

description

GENERADOR DE RELOJ DE FRECUENCIAS DISCRETAS VARIABLES ENTRE 10MHz y 20MHz CON UN PASO DE 50KHz

Transcript of NCO

Page 1: NCO

NCO GENERADOR DE RELOJ DE FRECUENCIA VARIABLE ENTRE

10MHz y 20MHz CON UN PASO DE 50KHz

SUBSISTEMAS ELECTRÓNICOS DE COMUNICACIONES 2010 MARC TENA GIL JAVIER CAMBRA ENGUIX

Page 2: NCO

ÍNDICE

1. Introducción

2. Descripción de la aplicación

3. Diseño general del circuito

4. Bloques del sistema

4.1. Bloque de alimentación

4.2. Reloj de referencia

4.3. NCO

4.4. Filtro elíptico de salida

4.5. Interfaz de comunicaciones

4.6. Programación del microcontrolador

5. Herramientas que nos proporciona el fabricante

6. Conclusiones

7. Bibliografía

Page 3: NCO

1 INTRODUCCIÓN

Un NCO es un oscilador controlado numéricamente que nos permite obtener

frecuencias de salida con una resolución que ningún otro dispositivo es capaz de

proporcionar. Estos dispositivos se usan en aplicaciones donde se necesitan señales de

frecuencia muy exacta y estable.

Al largo del trabajo explicaremos detalladamente el funcionamiento de este dispositivo

que utilizaremos para implementar una aplicación concreta. En este caso nuestra

aplicación será un generador de reloj de frecuencia variable entre 10MHz y 20MHz con

un paso de 50Khz.

Reloj de

Referencia NCOFiltro Elíptico

de salida

Bloque de Alimentación

Interfaz de comunicaciones

Reloj de

Referencia NCOFiltro Elíptico

de salida

Bloque de Alimentación

Interfaz de comunicaciones

Esquema de bloques del reloj

2 DESCRIPCIÓN DE LA APLICACIÓN

En la figura se muestra el esquema que seguiremos para implementar dicha aplicación.

Nota de aplicación. Generador de frecuencia de reloj.

Page 4: NCO

Nuestro diseño estará compuesto por una interfaz de comunicaciones provista de un

microcontrolador PIC que usaremos para configurar el NCO, un oscilador para crear la

señal de reloj de referencia, un filtro elíptico de séptimo orden que sirve para eliminar

las bandas imagen no deseadas, espurios, jitter, etc. y por último el NCO propiamente

dicho.

En el esquema anterior observamos como la señal senoidal de la salida del filtro

elíptico la volvemos a introducir NCO a través de su comparador con tal de obtener la

señal cuadrada deseada.

3 DISEÑO GENERAL DEL CIRCUITO

Hoja 1 esquemático

Page 5: NCO

Hoja 2 esquemático

BLOQUE DE ALIMENTACION

Dependiendo de si la aplicación sería portátil o fija elegiremos una batería o un adaptador de

red para obtener nuestra tensión de referencia.

Sabiendo que fxtal = 20 MHz y por lo tanto la ftrabajo = 6 x 20 MHz = 120 MHz, consultando las

especificaciones proporcionadas por el fabricante en el catálogo hay que alimentar a 3,3 V

para poder colocarle un reloj de entrada de 20 MHz (el máximo especificado es 20,83 MHz). En

caso que al hacer el montaje del circuito, la placa de pruebas no funcionara, habría que

cambiar la tensión de alimentación a 5 V y en consecuencia revisar el diseño en aquellos

puntos que se verían afectados por el cambio.

Dicho reloj tiene que cumplir unos niveles lógicos especificados para que el integrado funcione

correctamente. El nivel alto tiene que ser mayor que 2.3 V y el nivel bajo inferior a 1 V. Queda

especificado pues el margen de ruido que se permite en esta señal de entrada. Para la PIC y los

displays necesitamos 5 V.

La corriente de alimentación necesaria con nuestra configuración del AD 9851 está sobre los

55 mA pero sin exceder los 70 mA; y el rango de potencia disipada se moverá sobre los 200

mW.

En el caso de pensar en una aplicación portátil habría que recurrir al uso de baterías, hemos

elegido un fabricante que nos proporciona un gran rango de diferentes tipos de batería, tanto

en composición como en tensión y corriente de salida.

Page 6: NCO

De entre todo el catálogo nos sirve cualquiera que nos proporcione 3.3 voltios y alrededor de

50 mA de corriente. Así pues si utilizamos batería en un principio no creemos necesario ningún

circuito extra para la alimentación. En todo caso diseñar con las notas que proporciona el

fabricante el circuito de carga y de protección contra sobrecalentamientos para evitar posibles

peligros.

Batería Cargador y protección

Boost converter

Lo nombrado nos sirve para la alimentación del AD9851, junto con esta batería sería necesario

utilizar un boost converter para aumentar la tensión a 5V para alimentar la PIC y los displays

(puede que sea necesario tener alguna consideración más ya que es el elemento que más va a

consumir del sistema).

Simplemente comentar que el boost converter es un convertidor de una tensión continua de

entrada a una tensión continua de salido mayor. Utiliza una carga para almacenar la tensión y

dos semiconductores como interruptores (Diodo y transistor). Se le suele añadir bobinas y

condensadores (a modo de filtro) para reducir el rizado a la salida.

Page 7: NCO

Otra opción a tener en cuenta es obtener la alimentación de la red para otro tipo de

aplicaciones. El esquema sería el siguiente:

Una primera etapa para conseguir las especificaciones de displays i PIC y una segunda etapa

para la alimentación del NCO.

En la primera encontramos un LM7805 que nos baja la tensión a 5 voltios, y en la segunda un

low dropout regulator para conseguir la tensión de 3,3 voltios.

Hablando un poco más del LDO (low-dropout regulator) es un regulador de tensión continua

que funciona desde tensiones diferenciales entrada salida muy pequeñas. El principal

componente que forma el LDO es un FET de potencia y un amplificador de error diferencial. El

funcionamiento es el de todo regulador de tensión.

RELOJ DE REFERENCIA

OSCILADOR DE REFERENCIA PARA EL RELOJ DEL AD 9851:

Con este bloque lo que se consigue es una base de tiempos muy estable para el NCO, y

aplicando las fórmulas detalladas en el apartado oscilador controlado numéricamente

conseguir las frecuencias deseadas. Este mismo reloj debido a que tiene un fan-out de 10 nos

servirá también para la PIC, ya que justo es la frecuencia de reloj que necesita. Este ha sido

otro de los puntos que nos ha decantado a elegir 20 MHz como frecuencia del gate oscillator.

Para una información detallada del funcionamiento de los cristales osciladores de cuarzo y su

diseño se puede visitar el siguiente enlace:

http://www.huarpe.com/electronica/osc/oscilador-xtal.html

Los catálogos y notas de aplicación se han obtenido del fabricante y se pueden consultar en su

página web que aparece en la bibliografía.

Como hemos nombrado antes la elección del cristal ha sido tomada para aprovechar el filtro

que nos proporciona el fabricante y ahorrarnos su diseño.

El cristal a utilizar va a ser de 20 MHz en una configuración paralela de gate oscillator.

Page 8: NCO

Cristal oscilador 20 MHz Gate oscillator

Se ha buscado y elegido para la ocasión un fabricante, del cual consultando en su página web

encontramos un cristal de la frecuencia pedida, además el propio fabricante suministra un

apartado de notas de aplicación de cómo montar el cristal para obtener un oscilador estable.

En el catálogo del cristal aparece un rango de frecuencias de entre los cuales puedes elegir la

frecuencia de oscilación, aunque esto solo es posible para pedidos en masa superiores a 1000

unidades. Quizás si tan sólo se quiere hacer una placa de evaluación habría que indagar un

cristal ya fabricado de 20 MHz y hacer el diseño completo.

El fabricante especifica que la capacidad de carga tiene que ser de 10 pF. También nos

proporciona las derivas con la temperatura, el tiempo, etc.

DISEÑO

Gracias a las notas de aplicación que nos suministra el fabricante en formato pdf es muy

sencillo realizar el diseño del oscilador, así como en caso de que fuera necesario hacer

cualquier estudio sobre la variación de la f con la temperatura y el tiempo en el caso que la

aplicación lo necesite. En nuestro caso no va a ser necesario ya que las variaciones de

temperatura en una posible aplicación de este tipo como pudiera ser para una radio (en el

rango de f correspondiente) no son críticas, y con la precisión obtenida tampoco nos tiene que

preocupar el envejecimiento del cristal.

Capacidad de carga del gate oscillator:

La capacidad parásita (Cstray) está formada por la capacidad con la que el controlador (µP, PIC,

etc.) va a cargar al circuito, así como la capacidad introducida por las patillas del cristal. La

recomendación del fabricante es asumir su valor como 5 pF.

Teniendo entonces que: CSTRAY = 5 pF CL1 = CL2 = 10 pF

**R1 aparece debido a la modelización del cristal, no es un resistor externo.

Page 9: NCO

NCO Este va a ser el bloque más importante de nuestro generador de reloj de frecuencia variable. Un sintetizador de frecuencia es un dispositivo capaz de generar frecuencias en cierto rango. Atendiendo a nuestra aplicación cabe mencionar las siglas DDS, que significan síntesis directa de frecuencia. Una de las aplicaciones del NCO es precisamente ésta, generar valores discretos de frecuencia en cierto rango con una pureza espectral elevada y con una resolución muy pequeña, en el rango de los mHz mediante circuitos digitales y conversores digital-analógico Este tipo de sintetizadores son más caros y algo menos puros que los de síntesis directa (varios O.L. y multiplicadores) pero nos dan una resolución mejor y una mayor velocidad.

Esquema básico NCO

Donde:

w = anchos del bus de direcciones

b = ancho del bus de datos

n = ancho del bus del acumulador

El fundamento de todo esto es en tener almacenado en la ROM el muestreo de un periodo de

un seno (o coseno) lo más puro posible. Manejando el registro de incremento de fase en el que

se le indica el incremento del contador (con la salida de la cuenta se accede a las posiciones de

memoria de la ROM) se pueden generar un gran rango de frecuencias discretas (variando el

valor almacenado en el registro de fase).

Page 10: NCO

Como se puede observar en esta figura, dando valores a la N podemos obtener los senos de las

diferentes frecuencias deseadas. Las dos señales que se aprecian arriba son con N=1 y N=2,

duplicando en el segundo caso la frecuencia respecto del primero.

Normalmente la frecuencia del reloj de referencia que actúa como base de tiempos se obtiene

de un gate oscillator (fCLK).

Después de esta somera descripción de qué es un NCO y su funcionamiento básico, pasamos a

describir más a fondo nuestro NCO, el AD9851 de Analog Devices.

Este circuito integrado utiliza la síntesis digital directa tomando como base un oscilador

controlado numéricamente para obtener una onda sinusoidal. Esta onda sinusoidal digital es

convertida a analógica mediante un convertidor D/A interno de 10 bits de alta velocidad.

También podemos obtener una onda cuadrada de salida con bajo jitter y compatible

TTL/CMOS a partir de la onda sinusoidal gracias al comparador de alta velocidad interno.

La resolución de la frecuencia de salida oscila entre 40 mHz y 180 MHz. La fase de la señal

generada es continua(esto es sencillo de conseguir si al recorrer la ROM tan solo se cambia el

valor del contador y cuando se produce dicho cambio se mantiene el valor del acumulador, no

variando así la fase entre la frecuencia que estamos generando y la que queremos pasar a

generar).

Page 11: NCO

El diagrama de bloques funcional y el flujo de señal del AD9851 configurado como generador

de reloj es el siguiente:

Diagrama de flujo del generador de reloj con el AD9851

En el diagrama se puede apreciar el reloj de referencia que construiremos con un gate

oscillator basado en un cristal de cuarzo de 20 MHz.

El DDS que consiste en un divisor digital de frecuencia cuyo incremento de frecuencia se

controla introduciendo una palabra de sintonía). El acumulador de fase es un contador de

módulo variable que incrementa el número guardado cada vez que recibe un pulso del reloj.

Cuando el contador alcanza el fondo de escala se ajusta para que la fase de la señal de salida

del acumulador tenga fase continua. La palabra de ajuste de frecuencia establece el módulo

del contador, el cual determina el tamaño del incremento (∆ Fase) que será añadido al valor

contenido en el acumulador de fase en el siguiente pulso del reloj. Cuanto mayor sea el

incremento a añadir, más rápido llegará el acumulador a fin de cuenta y se ajustará, de forma

que obtendremos una mayor frecuencia a la salida.

Tras ésta síntesis de frecuencia digital se realiza una conversión a analógico, que tras ser

filtrada paso bajo se vuelve a introducir en el comparador integrado en el propio dispositivo

obteniendo a la salida una señal cuadrada.

Pasamos a detallar ahora la relación de la frecuencia de salida con los parámetros de control

que poseemos (se hará otra pequeña reseña especificando valores en el apartado del interfaz

de comunicaciones).

Page 12: NCO

Respuesta en frecuencia del sistema

En nuestro sistema la frecuencia del reloj es de 120 MHz y la frecuencia de salida oscila entre

10 y 20 MHz. Como se puede apreciar las frecuencias imagen tienen un valor de energía

relativamente alto, determinado por el factor de roll off de la sinc(x) de la salida cuantificada

del convertidor D/A. De hecho, dependiendo de la relación entre la frecuencia de salida y la

frecuencia del reloj del sistema, la amplitud de la primera frecuencia imagen puede ser la

misma que la del fundamental (cuando fout es la mitad del reloj del sistema).

Normalmente se sitúa un filtro paso bajo entre la salida del convertidor D/A y la entrada del

comparador para suprimir las frecuencias imagen que no están relacionadas harmónicamente

y otras señales espurias que producen jitter. Por todo esto se ha de tener muy en cuenta la

relación entre la frecuencia de salida seleccionada, la frecuencia del reloj del sistema y las

frecuencias imagen, para evitar anomalías indeseadas a la salida.

Una buena regla de diseño que se puede aplicar cuando el AD9851 trabaja como generador de

reloj es limitar la frecuencia fundamental de la salida al 40% de la frecuencia del reloj de

referencia, de esta forma evitamos que se generen señales solapadas que estén demasiado

cerca de la banda de interés de la salida para ser filtradas.

El reloj de referencia de entrada al AD9851 tiene una limitación mínima de 1 MHz cuando el

multiplicador 6X REFCLK no está siendo empleado, y de 5 MHz cuando sí que está en uso. Este

último caso nombrado es el que nos ocupa, teniendo una señal d reloj de 120 MHz que

proviene de un gate oscillator de 20 MHz usando la configuración en x6 obteniendo la

frecuencia final del sistema de 120 MHz. Siendo el peor caso para el aliasing cuando queremos

generar la frecuencia máxima de salida, que son 20 MHz y obteniendo la frecuencia imagen a

100 MHz.

La elección del cristal y el modo x6 no ha sido casual, ya que así podemos emplear el filtro

diseñado por el fabricante en el apartado de aplicaciones.

Page 13: NCO

FILTRO ELÍPTICO DE SALIDA

Como se comenta en otros apartados, el filtro elíptico de salida vamos a utilizar el

mismo que emplea el fabricante en su apartado de notas de aplicación.

Respuesta en frecuencia del sistema

Para poder aprovechar el diseño hemos elegido un cristal de 20 MHz pensando en habilitar el

modo x6 que lleva incorporado el AD9851. Como podemos ver nuestra frecuencia imagen más

cercana y por lo tanto la más molesta quedaría a 100 MHz, que está aproximadamente 30 MHz

por encima de la frecuencia de corte del filtro de ejemplo. Nos vamos a evitar pues cualquier

problema debido al aliasing; pero faltaría ver si nos puede molestar el jitter o cualquier otro

espurio que pueda caer en nuestra zona de trabajo. Haciendo uso de las herramientas que nos

proporciona el fabricante en su web vemos que puede que tengamos alguna señal molesta,

pero vemos que su amplitud está sobre los 40 dB por debajo del nivel de nuestra señal, cosa

que significa que la señal interferente es aproximadamente 10000 veces más débil que la

nuestra, por lo que en un principio tampoco tiene que preocuparnos mucho. Además en el

catálogo del circuito integrado se recomienda como un buen criterio de diseño que la

frecuencia máxima de salida no sea superior al 40 % de la señal de reloj del sistema; en

nuestro caso siendo el reloj de 120 MHz la recomendación queda en no generar señales de

salida superiores a 48 MHz, frecuencia que queda bastante lejos de los 20 MHz que vamos a

tener nosotros como máximo.

A continuación se presentan dos figuras con el esquema eléctrico del filtro y una simulación

del mismo.

Page 14: NCO

Simulación del filtro

Page 15: NCO

INTERFAZ DE COMUNICACIONES

Como primer paso vamos a explicar cómo funciona la interfaz de comunicaciones del AD9851 y

después explicaremos la solución que hemos adoptado para ello.

PROTOCOLO DE PROGRAMACIÓN

Para programar el AD9851 existen dos modos:

- Serie asíncrono.

- Paralelo asíncrono.

En nuestro diseño empleamos un modo de carga paralelo por lo tanto sólo vamos a detallar la

utilización de éste.

EL protocolo consiste en cargar los 40 bits que necesita el AD9851 para configurarse y saber

qué frecuencia tiene que generar.

Control carga paralela

El integrado dispone de un bus de 8 líneas para cargar los datos en 5 iteraciones de un byte

cada una, controlada por las señales W_CLK (reloj para almacenar en los registros internos los

datos) y la señal FQ_UD que valida los datos para que sean transferidos de los registros y

validando los datos.

Cronog

rama carga paralela de registros internos

Pasamos a explicar mejor cómo funciona el protocolo:

Se puede configurar solamente la palabra W0 y no tener que cargar los 5 bytes. En nuestro,

caso esto serviría en caso de querer dejar el dispositivo en bajo consumo usando el 6º bit de

esta palabra; el 7º siempre tiene que ser 0 para el modo de carga paralelo y el último será un 1

Page 16: NCO

o 0 dependiendo de si vamos a habilitar el multiplicador interno (x6) de frecuencia (En nuestro

caso sí lo vamos a utilizar, por lo tanto estará a 1). Comentar que los 5 primeros bits de W0 son

sirven para indicar la fase de la señal de salida.

La mayoría de veces el uso que se va a hacer es de la carga de todas las palabras, así pues

vamos a describir este proceso:

Mientras la línea FQ_UD se encuentra a nivel bajo, por el pin de W_CLK le vamos a pasar la

señal de reloj y por D0-D7 a golpe de reloj los 5 bytes necesarios. Tras esto se tiene que

afirmar la línea FQ_UD para transferir los datos de los registros internos y que se haga efectivo

el cambio de frecuencia pasado un tCF (18 ciclos del reloj del AD9851). Esto lo hace dejando el

puntero de nuevo en W0 y transfiriendo palabra por palabra los datos para hacer efectivo el

cambio de f.

A partir de aquí y una vez hecha esta última transferencia, W_CLK es ignorada a no ser que se

produzca un RESET o que se produzca un nivel alto en la línea FQ_UD en cuyo caso se inicializa

el puntero a W0 y se espera la llegada de la siguiente carga de datos.

Existen otros ciclos como el de RESET general , poner en estado de reposo, recuperarse del

reposo, etc. que pueden ser útiles pero no son de interés para la elaboración de esta memoria.

Especificaciones temporales

**Habría que considerar el estudio de tiempos.

Una vez explicado cómo hay que transferir los datos al CI, pasamos a detallar qué bits hay que

enviarle para generar las frecuencias deseadas.

Page 17: NCO

fXTAL = 20 MHz; Modo x6 activadofsys_clk = 120 MHz

fMÁX_OUT = 20 MHz phase_MÁX = 715827882

fmín_OUT = 10 MHz phase_mín = 357913941

El escalón de frecuencia es 50 KHz unitario = 1789569

**Hay que tener en cuenta que los valores se han truncado para que sean enteros aunque el error cometido no es superior a las

milésimas de hercios, que no va a suponer ningún problema para la aplicación.

En esta segunda parte vamos a explicar la solución adoptada para resolver este apartado.

La interfaz de comunicaciones nos servirá para configurar nuestro dispositivo. Hay muchas

formas de implementar la interfaz. Nosotros hemos elegido una basada en una serie de

microswitches que nos servirán para configurar la frecuencia de reloj que queremos que

nuestro sistema nos proporcione.

Hemos dotado al sistema de 4 displays de 7 segmentos donde podremos visualizar la

frecuencia , 2 bloques de microswitches y un microcontrolador PIC que será el encargado de

interpretar las órdenes introducidas por los microswitches proporcionando el valor que

cargaremos en el registro del AD9851 utilizando la carga paralelo de dicho dispositivo.

En la siguiente figura podemos ver un esquema general de la interfaz del dispositivo con un

ejemplo grafico de cómo se deben introducir los datos. En nuestro diseño nos valemos de 4

circuitos integrados 7447 que servirán para decodificar el valor BCD introducido mediante los

switches y proporcionado las excitaciones adecuadas para iluminar los LEDS.

Esquema de la interfaz de comunicaciones

Page 18: NCO

En la figura anterior podemos observar que tenemos un botón de reset. Este es el reset del

sistema y va conectado tanto al microcontrolador como al NCO.

La forma de configurar la frecuencia es la siguiente. De los dos bloques de microswitches, el

primero controla las dos cifras de la izquierda, es decir, los MHz. El segundo bloque controla

las dos cifras de la derecha, donde la última cifra solo tendrá como valor 0 o 5, ya que la

resolución de nuestro sistema es de 0.05MHz.

La forma de introducir los datos será posicionando los switches de forma que en binario

representen el número que queremos introducir.

El display1 sólo representara 1 o 2, para configurar utilizamos los dos primeros switches del

bloque1.

El display2 representara valores entre el 0 y el 9, introduciremos dicho valor mediante los

switches del 3 al 6 del bloque1, ambos inclusive.

El display3 también representara valores del 0 al 9, introduciendo el valor en este caso usando

los switches 1 a 4 del bloque 2.

Finalmente, el último display se controla con el switch 5 del bloque 2, de forma que la posición

cero del switch corresponderá al 0, mientras que la posición 1 del switch representará el 5.

HERRAMIENTAS QUE NOS PROPORCIONA EL FABRICANTE

El fabricante del NCO, en este caso Analog Devices nos facilita la tarea a la hora de utilizar el

dispositivo. Si entramos en su página web de podemos encontrar distintas herramientas y

aplicaciones que nos ayudan tanto en la implementación como en el diseño del circuito.

-Placas de evaluación y kits de desarrollo.

En apartados anteriores hemos expuesto la interfaz de comunicaciones que hemos

desarrollado para nuestra aplicación concreta de generación de frecuencia de reloj entre

10MHz y 20MHz.

Analog Devices nos proporciona ya una placa de evaluación configurable de distintas formas

para poder implementar la aplicación concreta que necesitemos. Esta placa de evaluación la

podemos implementar comprar directamente al fabricante o implementarla nosotros mismos,

y para ellos nos proporciona tanto el diseño del esquemático como el diseño de los distintos

planos de la PCB.

Page 19: NCO

En las siguientes figuras mostramos los diseños que Analog Devices nos propone.

Esquemático general del diseño

Page 20: NCO

Vistas de las PCB

Podemos observar que esta placa de evaluación carece de ningún dispotivo que nos permita

programar el DDS. Esta tarea la llevaremos a cabo utilizando el software que Analog Devices

nos proporciona en su página web. Una vez instalado nos permite comprobar que el

dispositivo se encuentra correctamente conectado a nuestro PC. Podremos conectar el

dispositivo mediante el puerto de comunicaciones paralelo.

Software 1

Page 21: NCO

Una vez dentro del software podemos observar la interfaz que observamos en la siguiente

figura.

Software 2

Esta interfaz nos permite insertar frecuencias discretas o bien hacer barridos de frecuencia con

el paso que le indiquemos. Observamos también los distintos bloques, como es el caso de

External Clock, donde indicamos la frecuencia del reloj de referencia, el botón del

multiplicador interno x6, el botón de carga y de reset, así como el modo de comunicación que

vamos a usar, serie o paralelo, con sus correspondientes palabras de configuración.

En definitiva es una herramienta que nos proporciona gran versatilidad de uso a nuestro

dispositivo, y que nos puede ahorras muchas horas de trabajo y diseño.

Page 22: NCO

–Herramienta, software y modelos de simulación.

Aparte de las herramientas de control que acabamos de mencionar, Analog nos proporciona

un par de herramientas que nos pueden ayudar para diseñar el circuito, y que nos avisan si

estamos diseñando algo de forma incorrecta.

La primera de estas herramientas es el ADIsimDDS. Esta herramienta nos permite ver el

espectro de las señales que genera este dispositivo, así como la forma de la señal de salida del

dispositivo, según la frecuencia que deseamos obtener y el reloj de referencia que utilicemos.

Esta aplicación también calcula el valor de la palabra de bits que hay que enviar al DDS para la

frecuencia deseada.

En las dos siguientes figuras mostramos los ejemplos de frecuencia mínima ( 10 MHz) y

máxima (20 MHz).

Herramienta web 1

Page 23: NCO

Herramienta web 2

Por último, la siguiente aplicación sirve para calcular el valor de las resistencias RSet y Rload así

como para ver las palabras que debemos utilizar para configurar el DDS, tanto si usamos

comunicación serio, o comunicación paralelo.

Herramienta web 3

Page 24: NCO

PROGRAMACION DEL PIC El PIC, como todos los procesadores y microcontroladores tiene su propio lenguaje de

programación en ensamblador, no obstante esto puede llegar a ser poco práctico cuando los

programas adquieren una cierta complejidad.

Normalmente se opta por programar en lenguajes de alto nivel como C.

El programa que hemos desarrollado para esta aplicación en concreto es el siguiente.

#include <16f873.h> //PIC a utilizar

#include <math.h>

#fuses XT,NOWDT,NOPROTECT,PUT,NOLVP //órdenes para el programador

#use delay (clock=20000000) //Fosc=20MHz

#use standard_io(B)

#use fixed_io(a_inputs=RA0,RA1,RA2,RA3,RA4) //A0,A1,A2,A3,A4,a5 como entradas en porta

#use fixed_io(b_inputs=RB0,RB1,RB2,RB3,RB4,RB5,RB6,RB7) //B0,B1,B2,B3,B4,B5,B6,B7 como entradas en porta

#use fixed_io(c_outputs=RC0,RC1,RC2,RC3,RC4,RC5,RC6,RC7,RC8)

int fclock=20000000;

int N=0; //variables globales

byte F,F1,F2,F3,F5,w0,w1,w2,w3,w4

void main(void){

set_tris_a(0xFF); //port_a como entrada

set_tris_b(0xFF); //port_b como entrada

set_tris_c(0x00); //port_c como salida

do{

F1=RA1*1+RA0*2; //convierto valores del display1 a binario

F2=RA2*1+RA3*2+RA4*4+RA5*8; //convierto valores del display2 a binario

F3=RB0*1+RB1*2+RB2*4+RB3*8; //convierto valores del display3 a binario

F4=RB4*5; //convierto valores del display4 a binario

F=F1+F2+F3+F4; //sumo todos los valores

F=F*10000; //multiplico por 10000 para quedarme con un valor de F en MHz

N=(F*pow(2,32))/fclock; //Obtengo N, a partir de la formula del NCO

W4_bin=(N%256)*256; //Descompongo la palabra de bits

w3_bin=(N%65536)*256;

w2_bin=(N%16777216)*256;

w1_bin=(N%4294967296)*256;

W0=9;

if(RB6=0){ //Si FQ_UD=0

delay_ms(10)

output_c(w0); //Envío palabra por puerto C

delay_ms(5);

output_high(R7); //CLK=1

delay_ms(10);

output_low(R7); //CLK=0

delay_ms(5);

output_c(w1); //Envío palabra por puerto C

delay_ms(5);

output_high(R7); //CLK=1

delay_ms(10);

output_low(R7); //CLK=0

delay_ms(5);

output_c(w2); //Envío palabra por puerto C

Page 25: NCO

delay_ms(5);

output_high(R7); //CLK=1

delay_ms(10);

output_low(R7); //CLK=0

delay_ms(5);

output_c(w3); //Envío palabra por puerto C

delay_ms(5);

output_high(R7); //CLK=1

delay_ms(10);

output_low(R7); //CLK=0

delay_ms(5);

output_c(w4); //Envío palabra por puerto C

delay_ms(5);

output_high(R7); //CLK=1

delay_ms(10);

output_low(R7); //CLK=0

delay_ms(5);

While(TRUE); //INFINITO

}

La forma de trabajar con el PIC será, convertir este código en C a código .hex en ensamblador,

hay diversos programas gratuitos que realizan esta función.

Finalmente, con otro segundo programa, y utilizando una placa de programación para PICS que

se puede obtener en cualquier tienda de electrónica, por internet, o directamente fabricarlo,

enviaremos el programa .hex a la memoria del PIC. Debemos tener en cuenta que los

programas deben tener un tamaño que sea capaz de albergar la memoria del PIC.

Page 26: NCO

Vamos a describir brevemente una utilidad y montaje para la programación arriba

mencionada.

Programador de la PIC

Con este circuito montado en una PCB y un programa como el que podemos observar en la

figura de la siguiente página se programa la PIC.

Page 27: NCO

Captura del software para programar la PIC

CONCLUSIONES

BIBLIOGRAFIA:

Transparencias de la asignatura Subsistemas Electrónicos de Comunicaciones.

http://www.huarpe.com/

http://www.micropik.com/pag_ci_cristales_cuarzo.htm

http://www.ecsxtal.com/

http://www.todorobot.com.ar

http://www.ukai.com/baterias-industriales