SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
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
Í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
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.

                                     Bloque de Alimentación




                     Reloj de                                         Filtro Elíptico
                    Referencia                 NCO                       de salida




                                 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.
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
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.
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.
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.
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.
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).
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).
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).
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.
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.
Simulación del filtro
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
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.
fXTAL = 20 MHz; Modo x6 activadofsys_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
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.
En las siguientes figuras mostramos los diseños que Analog Devices nos propone.




                                   Esquemático general del diseño
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
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.
–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
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
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
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.
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.
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

Más contenido relacionado

La actualidad más candente

planos-esquematicos-de-circuitos-electronicos
 planos-esquematicos-de-circuitos-electronicos planos-esquematicos-de-circuitos-electronicos
planos-esquematicos-de-circuitos-electronicosDiegoFernandoGomezVa
 
Memco (barrera infrarroja modelo 632)
Memco (barrera infrarroja modelo 632)Memco (barrera infrarroja modelo 632)
Memco (barrera infrarroja modelo 632)Júlio César Ramos
 
Seminario reparacion tv moderna 2
Seminario reparacion tv moderna 2Seminario reparacion tv moderna 2
Seminario reparacion tv moderna 2JOHNJARVYESPINOSA
 
101172 pic16f877-en-espanol1
101172 pic16f877-en-espanol1101172 pic16f877-en-espanol1
101172 pic16f877-en-espanol1grana2810
 
Circuitos logicos de tres estados
Circuitos logicos de tres estadosCircuitos logicos de tres estados
Circuitos logicos de tres estadosZy Mo
 
Kenwood tkr 750 850
Kenwood tkr 750 850Kenwood tkr 750 850
Kenwood tkr 750 850montaluisam
 
Equivalencias de ls compuertas basicas por transistores mos g4
Equivalencias de ls compuertas basicas por transistores mos   g4Equivalencias de ls compuertas basicas por transistores mos   g4
Equivalencias de ls compuertas basicas por transistores mos g4A CG
 
Introduccion laboratorio tecnicas digitales
Introduccion laboratorio tecnicas digitalesIntroduccion laboratorio tecnicas digitales
Introduccion laboratorio tecnicas digitalesjorgeardilau
 
Familia logica
Familia logicaFamilia logica
Familia logicadariox991
 
Montaje practico de un circuito detector de movimientos
Montaje practico de un circuito  detector de movimientosMontaje practico de un circuito  detector de movimientos
Montaje practico de un circuito detector de movimientosJomicast
 

La actualidad más candente (20)

planos-esquematicos-de-circuitos-electronicos
 planos-esquematicos-de-circuitos-electronicos planos-esquematicos-de-circuitos-electronicos
planos-esquematicos-de-circuitos-electronicos
 
Grabacion de microcontroladores_pic
Grabacion de microcontroladores_picGrabacion de microcontroladores_pic
Grabacion de microcontroladores_pic
 
Memco (barrera infrarroja modelo 632)
Memco (barrera infrarroja modelo 632)Memco (barrera infrarroja modelo 632)
Memco (barrera infrarroja modelo 632)
 
Trabajo en grupo #4
Trabajo en grupo #4Trabajo en grupo #4
Trabajo en grupo #4
 
Seminario reparacion tv moderna 2
Seminario reparacion tv moderna 2Seminario reparacion tv moderna 2
Seminario reparacion tv moderna 2
 
101172 pic16f877-en-espanol1
101172 pic16f877-en-espanol1101172 pic16f877-en-espanol1
101172 pic16f877-en-espanol1
 
Circuitos logicos de tres estados
Circuitos logicos de tres estadosCircuitos logicos de tres estados
Circuitos logicos de tres estados
 
Kenwood tkr 750 850
Kenwood tkr 750 850Kenwood tkr 750 850
Kenwood tkr 750 850
 
16947169 cursotvchinas
16947169 cursotvchinas16947169 cursotvchinas
16947169 cursotvchinas
 
Sistemas Microprocesados I
Sistemas Microprocesados ISistemas Microprocesados I
Sistemas Microprocesados I
 
Electronica basica para ingenieros
Electronica basica para ingenierosElectronica basica para ingenieros
Electronica basica para ingenieros
 
TRANSISTORES
TRANSISTORESTRANSISTORES
TRANSISTORES
 
Equivalencias de ls compuertas basicas por transistores mos g4
Equivalencias de ls compuertas basicas por transistores mos   g4Equivalencias de ls compuertas basicas por transistores mos   g4
Equivalencias de ls compuertas basicas por transistores mos g4
 
Familias ttl y cmos
Familias ttl y cmosFamilias ttl y cmos
Familias ttl y cmos
 
Introduccion laboratorio tecnicas digitales
Introduccion laboratorio tecnicas digitalesIntroduccion laboratorio tecnicas digitales
Introduccion laboratorio tecnicas digitales
 
Familia logica
Familia logicaFamilia logica
Familia logica
 
Funcionamiento del USART
Funcionamiento del USARTFuncionamiento del USART
Funcionamiento del USART
 
Cmos
CmosCmos
Cmos
 
Vumetro estereo
Vumetro estereoVumetro estereo
Vumetro estereo
 
Montaje practico de un circuito detector de movimientos
Montaje practico de un circuito  detector de movimientosMontaje practico de un circuito  detector de movimientos
Montaje practico de un circuito detector de movimientos
 

Destacado

Gate oscillator Serie y Paralelo
Gate oscillator Serie y ParaleloGate oscillator Serie y Paralelo
Gate oscillator Serie y ParaleloMarc Tena Gil
 
Decodificador audio canal + analógico
Decodificador audio canal + analógicoDecodificador audio canal + analógico
Decodificador audio canal + analógicoMarc Tena Gil
 
Amplificación de potenciales extracelulares
Amplificación de potenciales extracelularesAmplificación de potenciales extracelulares
Amplificación de potenciales extracelularesMarc Tena Gil
 
Amplificacion intracelular
Amplificacion intracelularAmplificacion intracelular
Amplificacion intracelularMarc Tena Gil
 
Amplificación de potenciales extracelulares
Amplificación de potenciales extracelularesAmplificación de potenciales extracelulares
Amplificación de potenciales extracelularesMarc Tena Gil
 
Detector de secuencia no solapada 1011 empleando PLA
Detector de secuencia no solapada 1011 empleando PLADetector de secuencia no solapada 1011 empleando PLA
Detector de secuencia no solapada 1011 empleando PLAMarc Tena Gil
 
Electronica basica c4
Electronica basica c4Electronica basica c4
Electronica basica c4javiertecteos
 
Electronica Basica
Electronica BasicaElectronica Basica
Electronica Basicaguestdc092bf
 
Abstract of mit open course ware new textiles
Abstract of mit open course ware new textilesAbstract of mit open course ware new textiles
Abstract of mit open course ware new textilesMarc Tena Gil
 

Destacado (13)

Gate oscillator Serie y Paralelo
Gate oscillator Serie y ParaleloGate oscillator Serie y Paralelo
Gate oscillator Serie y Paralelo
 
Decodificador audio canal + analógico
Decodificador audio canal + analógicoDecodificador audio canal + analógico
Decodificador audio canal + analógico
 
Amplificación de potenciales extracelulares
Amplificación de potenciales extracelularesAmplificación de potenciales extracelulares
Amplificación de potenciales extracelulares
 
Amplificacion intracelular
Amplificacion intracelularAmplificacion intracelular
Amplificacion intracelular
 
GPS Receiver
GPS ReceiverGPS Receiver
GPS Receiver
 
Amplificación de potenciales extracelulares
Amplificación de potenciales extracelularesAmplificación de potenciales extracelulares
Amplificación de potenciales extracelulares
 
Detector de secuencia no solapada 1011 empleando PLA
Detector de secuencia no solapada 1011 empleando PLADetector de secuencia no solapada 1011 empleando PLA
Detector de secuencia no solapada 1011 empleando PLA
 
Electronica basica c4
Electronica basica c4Electronica basica c4
Electronica basica c4
 
Electronica Basica
Electronica BasicaElectronica Basica
Electronica Basica
 
Electronica Basica
Electronica BasicaElectronica Basica
Electronica Basica
 
Electronica Digital 4º Eso
Electronica Digital 4º EsoElectronica Digital 4º Eso
Electronica Digital 4º Eso
 
Abstract of mit open course ware new textiles
Abstract of mit open course ware new textilesAbstract of mit open course ware new textiles
Abstract of mit open course ware new textiles
 
Electronica 4ºEso
Electronica 4ºEsoElectronica 4ºEso
Electronica 4ºEso
 

Similar a NCO

Sensores de luz
Sensores de luzSensores de luz
Sensores de luzBetty_87
 
Topologias de los Amplificadores
Topologias de los AmplificadoresTopologias de los Amplificadores
Topologias de los AmplificadoresAngel Naveda
 
Amplificador operacional inversor(carlos ortiz, grupo ad)
Amplificador operacional inversor(carlos ortiz, grupo ad)Amplificador operacional inversor(carlos ortiz, grupo ad)
Amplificador operacional inversor(carlos ortiz, grupo ad)Karlos Ortiz
 
Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2Alejandro Garcia
 
Amplificadores operacionales: CONVERTIDOR CON OPAM
Amplificadores operacionales: CONVERTIDOR CON OPAMAmplificadores operacionales: CONVERTIDOR CON OPAM
Amplificadores operacionales: CONVERTIDOR CON OPAMAlberto Mendoza
 
Diagrama de circuito del voltímetro digital usando ICL7107
Diagrama de circuito del voltímetro digital usando ICL7107Diagrama de circuito del voltímetro digital usando ICL7107
Diagrama de circuito del voltímetro digital usando ICL7107SANTIAGO PABLO ALBERTO
 
Informe de la araña robótica (1).pdf
Informe de la araña robótica (1).pdfInforme de la araña robótica (1).pdf
Informe de la araña robótica (1).pdfsebastian214948
 
Cubo de LEDs controlado por microprocesador
Cubo de LEDs controlado por microprocesadorCubo de LEDs controlado por microprocesador
Cubo de LEDs controlado por microprocesadorMarcelo Mendoza
 
PCB voltímetro digital casero con ICL7107 Electrónica
PCB voltímetro digital casero con ICL7107 Electrónica PCB voltímetro digital casero con ICL7107 Electrónica
PCB voltímetro digital casero con ICL7107 Electrónica SANTIAGO PABLO ALBERTO
 
Contador bcd-0-9-temporizador-555-automatizacion
Contador bcd-0-9-temporizador-555-automatizacionContador bcd-0-9-temporizador-555-automatizacion
Contador bcd-0-9-temporizador-555-automatizacionJimena Rachel
 

Similar a NCO (20)

NCO (Documento)
NCO (Documento)NCO (Documento)
NCO (Documento)
 
Reporte practica 4
Reporte practica 4Reporte practica 4
Reporte practica 4
 
Sensores de luz
Sensores de luzSensores de luz
Sensores de luz
 
Topologias de los Amplificadores
Topologias de los AmplificadoresTopologias de los Amplificadores
Topologias de los Amplificadores
 
Amplificador operacional inversor(carlos ortiz, grupo ad)
Amplificador operacional inversor(carlos ortiz, grupo ad)Amplificador operacional inversor(carlos ortiz, grupo ad)
Amplificador operacional inversor(carlos ortiz, grupo ad)
 
Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2Pic16f877 guia detallada parte2
Pic16f877 guia detallada parte2
 
Control nivel luz
Control nivel luzControl nivel luz
Control nivel luz
 
Amplificadores operacionales: CONVERTIDOR CON OPAM
Amplificadores operacionales: CONVERTIDOR CON OPAMAmplificadores operacionales: CONVERTIDOR CON OPAM
Amplificadores operacionales: CONVERTIDOR CON OPAM
 
Informe pwm
Informe pwmInforme pwm
Informe pwm
 
Diagrama de circuito del voltímetro digital usando ICL7107
Diagrama de circuito del voltímetro digital usando ICL7107Diagrama de circuito del voltímetro digital usando ICL7107
Diagrama de circuito del voltímetro digital usando ICL7107
 
Informe de la araña robótica (1).pdf
Informe de la araña robótica (1).pdfInforme de la araña robótica (1).pdf
Informe de la araña robótica (1).pdf
 
Tutorial micro MSP430
Tutorial micro MSP430Tutorial micro MSP430
Tutorial micro MSP430
 
SEGUNDO DESAFIO
SEGUNDO DESAFIO  SEGUNDO DESAFIO
SEGUNDO DESAFIO
 
Informe dav
Informe  davInforme  dav
Informe dav
 
Cubo de LEDs controlado por microprocesador
Cubo de LEDs controlado por microprocesadorCubo de LEDs controlado por microprocesador
Cubo de LEDs controlado por microprocesador
 
Instrumentacion ss13
Instrumentacion ss13Instrumentacion ss13
Instrumentacion ss13
 
Instrumentacion ss13
Instrumentacion ss13Instrumentacion ss13
Instrumentacion ss13
 
Laboratorio 1
Laboratorio 1Laboratorio 1
Laboratorio 1
 
PCB voltímetro digital casero con ICL7107 Electrónica
PCB voltímetro digital casero con ICL7107 Electrónica PCB voltímetro digital casero con ICL7107 Electrónica
PCB voltímetro digital casero con ICL7107 Electrónica
 
Contador bcd-0-9-temporizador-555-automatizacion
Contador bcd-0-9-temporizador-555-automatizacionContador bcd-0-9-temporizador-555-automatizacion
Contador bcd-0-9-temporizador-555-automatizacion
 

Último

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 

Último (15)

Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 

NCO

  • 1. 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
  • 2. Í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
  • 3. 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. Bloque de Alimentación Reloj de Filtro Elíptico Referencia NCO de salida 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.
  • 4. 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
  • 5. 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.
  • 6. 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.
  • 7. 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.
  • 8. 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.
  • 9. 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).
  • 10. 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).
  • 11. 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).
  • 12. 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.
  • 13. 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.
  • 15. 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
  • 16. 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.
  • 17. fXTAL = 20 MHz; Modo x6 activadofsys_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
  • 18. 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.
  • 19. En las siguientes figuras mostramos los diseños que Analog Devices nos propone. Esquemático general del diseño
  • 20. 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
  • 21. 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.
  • 22. –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
  • 23. 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
  • 24. 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
  • 25. 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.
  • 26. 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.
  • 27. 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