generador digital de funciones

21
Autores: Ricardo Rodríguez Vasallo. Ignacio Borrajo Iglesias. Laboratorio de Sistemas Digitales Programables II.

Upload: roger-zapana

Post on 07-Aug-2015

78 views

Category:

Documents


3 download

DESCRIPTION

generador digital de funciones

TRANSCRIPT

Page 1: generador digital de funciones

 

 

 

 

 

 

 

 

 

Autores: Ricardo Rodríguez Vasallo.

Ignacio Borrajo Iglesias.

Laboratorio de Sistemas Digitales Programables II.

Page 2: generador digital de funciones

Generador Digital de Funciones Índice

2

ÍNDICE DESCRIPCIÓN .............................................................................................................. 3 ESPECIFICACIONES................................................................................................... 4 ANÁLISIS PREVIO....................................................................................................... 5 DISEÑO DEL SISTEMA DIGITAL. ........................................................................... 6

1. UNIDAD DE CONTROL. ................................................................................... 8 2. UNIDAD OPERATIVA:.................................................................................... 11

A) SELECTOR DE FRECUENCIA: .............................................................. 11 B) BLOQUE PRINCIPAL. ............................................................................. 12

3. SISTEMA COMPLETO. ................................................................................... 16 ESTIMACIÓN DE LOS RECURSOS LÓGICOS .................................................... 17 ELECCIÓN DEL CIRCUITO .................................................................................... 18 COMPILACIÓN E IMPLEMENTACIÓN ............................................................... 19 CONCLUSIONES ........................................................................................................ 21

Page 3: generador digital de funciones

Generador Digital de Funciones Descripción

DESCRIPCIÓN La aplicación es un generador digital de funciones senoidales, triangulares y cuadradas que permite elegir la frecuencia de trabajo entre un rango que abarca desde 1Hz hasta 80KHz. Asimismo permite al usuario introducir un nivel de offset a la señal. Una ampliación de la aplicación original desarrollada es la posibilidad de dibujar dos tipos de señales senoidales rectificadas completas. Una posible implementación física de la aplicación sería así:

El diagrama de bloques de la aplicación a muy alto nivel:

R

RESET

ALIMENTACIÓN

NIVEL OFFSET SIGNO

FRECUENCIA

CAMBIO DE FRECUENCIA

CAMBIO FORMA DE ONDA

SIGNO OFFSET LEDS

VISUALIZADOR

SALIDA

FPGA

UNIDAD DE CONTROL

UNIDAD OPERATIVA

8 C.D.A. AD7523

BOTONES

OSCILOSCOPIO

OSCILADOR

Page 4: generador digital de funciones

Generador Digital de Funciones Especificaciones

4

ESPECIFICACIONES El terminal está diseñado para dibujar señales senoidales, triangulares y cuadradas, incluyendo dentro de las senoidales dos rectificadas completas. El usuario tiene la capacidad de modificar la frecuencia en un rango que viene determinado por el oscilador, como el oscilador que diponemos es de 10MHz, el rango obtenido va desde 1Hz hasta 80KHz. El usuario tiene la posibilidad de añadir un nivel de offset a la señal de salida aproximadamente de ±1,25 voltios. Para obtener la señal analógica disponemos de un conversor digital analógico de ocho bits al que se proporcionan los datos del tipo de onda a dibujar. Para indicar al usuario la frecuencia de la señal seleccionada disponemos de un visualizador de siete segmentos para indicar el módulo y de una línea de LEDs que indican el rango de escala de la onda. Para generar datos con un conversor digital analógico es necesario entregarle el valor de tensión de salida que se desea en ocho bits para obtener a la salida el valor analógico según la función:

Para generar el tipo de onda deseada se entregan valores preseleccionados al conversor para en cada caso dibujar la forma de cada onda. La aplicación se queda a la espera de que el usuario pulse el botón de cambio de onda y en ese momento empieza a dibujar una senoide a una frecuencia preestablecida. A partir de este momento la aplicación funciona continuamente hasta que se pulse el botón de reset pudiendo el usuario cambiar la frecuencia y el offset (aumentar o disminuir ambos) y elegir uno de los cinco tipos de onda disponibles.

Vo = Vref ( ) VALOR

256

Page 5: generador digital de funciones

Generador Digital de Funciones Análisis Previo

5

ANÁLISIS PREVIO. Esta aplicación responde a un sistema de control de complejidad media que requiere al menos de los siguientes sistemas:

• Un sistema secuencial síncrono de control diseñado mediante un diagrama de flujo y depurado posteriormente mediante VHDL que será la UNIDAD DE CONTROL.

• Una UNIDAD OPERATIVA constituida por una serie de circuitos auxiliares que se explicarán posteriormente.

Consideramos que dada la extensión del sistema y la utilización de memorias internas, una FPGA se ajusta mejor como circuito digital configurable para su implementación.

Page 6: generador digital de funciones

Generador Digital de Funciones Diseño del Sistema Digital

6

Inicialización decircuitos.

Selección tipo desalida?

SI

NO

Tipo onda = senoidal.Frecuencia = reloj frecuencia inicial.

Cambio?

NO

Tipo onda = onda siguiente

ONDA

Aumento / Disminuye

FRECUENCIA

Frecuencia = relojfrecuencia superior

Frecuencia = relojfrecuencia mayor

DISMINUYOAUMENTO

Límite superior Límite superior

NO

Frecuencia = relojfecuencia mínima

SI

Frecuencia = relojfrecuencia inferior

NO SI

SENOIDAL

CUADRADA

TRIANGULAR

SENOIDALRECTIFICADA

POSITIVA

SENOIDALRECTIFICADA

NEGATIVA

TIPO DE ONDASIGUIENTE

DISEÑO DEL SISTEMA DIGITAL. El sistema digital se divide en dos grandes bloques funcionales constituidos por una unidad de control y una unidad operativa. El diagrama funcional a muy alto nivel sería:

Page 7: generador digital de funciones

Generador Digital de Funciones Diseño del Sistema Digital

7

El diagrama funcional muestra el funcionamiento explicado en la sección de especificaciones y se puede observar cómo el cambio de tipo de onda y de frecuencia son cíclicos y al llegar al límite superior pasan al inferior y viceversa (Vg. Al estar a 80KHz y aumentar la frecuencia se pasa a una señal de 1Hz).

Page 8: generador digital de funciones

Generador Digital de Funciones Diseño del Sistema Digital

8

1. UNIDAD DE CONTROL. La unidad de control es un sistema secuencial síncrono encargado de generar las señales que gobiernan la unidad operativa para dar la funcionalidad requerida. Las señales de entrada:

• CAMBIO_FREC: señal que proviene de un botón de usuario (previamente sincronizado) que indica a la unidad de control que el usuario quiere aumentar o disminuir la frecuencia.

• TIPO_SAL: señal que proviene de un botón de usuario (previamente sincronizado) que indica a la unidad de control que el usuario quiere cambiar el tipo de onda de salida.

• RESET: inicializa el sistema. • CLK: reloj del sistema.

Las señales generadas:

• CAMBIO_F_OK: indica a la unidad operativa que tiene que cambiar el reloj de salida de datos para modificar la frecuencia de salida.

• RECTIFICAR: indica a la señal operativa si la señal de salida tiene que ser rectificada o no.

• NEGATIVA: indica si la rectificación es positiva o negativa. • CAMBIO_T_OK: bus que selecciona el tipo de onda de salida.

Page 9: generador digital de funciones

Generador Digital de Funciones Diseño del Sistema Digital

9

El diseño de la unidad de control responde al diagrama de estados:

En el diagrama se puede observar cómo cada vez que la entrada TIPO_SAL se activa, se pasa al estado siguiente y se genera el tipo de onda siguiente, en cada uno de estos estados, si se activa la señal CAMBIO_FREC, cambia a un estado en el que se generan las señales para cambiar el valor de la frecuencia.

Page 10: generador digital de funciones

Generador Digital de Funciones Diseño del Sistema Digital

10

El funcionamiento de esta unidad se comprobó mediante una simulación temporal:

En la simulación se comprueba cómo el usuario pasa por todos los tipos de onda posibles como se puede ver en el grupo rojo, el usuario pulsa el botón de cambio de tipo de salida lo que provoca cambios en el bus CAMBIO_T_OK. Como se puede observar en el cuarto y el quinto cambio se generan las señales correspondientes a ondas rectificadas y en el sexto cambio se vuelve a una senoidal sin recitificar. Es interesante observar cómo el bus de salida no cambia debido a que son señales rectificadas pero siguen siendo senoidales. En el grupo verde se observa simplemente cómo la pulsación del botón de cambio de frecuencia genera la señal CAMBIO_F_OK, que provoca en la unidad operativa un cambio de reloj de salida. En el diseño original no estaba previsto incluir una unidad de control ya que el sistema evoluciona secuencialmente y la unidad operativa se podría gobernar ella sola. Sin embargo para posibles ampliaciones posteriores hemos considerado conveniente introducir este sencillo sistema de control.

Page 11: generador digital de funciones

Generador Digital de Funciones Diseño del Sistema Digital

11

2. UNIDAD OPERATIVA: La unidad operativa está formada por dos grandes partes:

• SELECTOR DE FRECUENCIA • BLOQUE PRINCIPAL

A) SELECTOR DE FRECUENCIA: Se encarga de dividir el reloj externo que proviene del oscilador en 19 señales de frecuencias inferiores y seleccionar como salida una de ellas. Está compuesto por:

COMPONENTE FUNCIÓNDIVISOR Divide la señal de reloj en 19 de

frecuencias inferiores.

MULTIPLEXORDE 20 CANALESCONTADOR Direcciona el MULTIPLEXOR.

Selecciona una de las salidas del DIVISOR incluyendo el reloj externo.

El esquemático de este bloque:

El divisor está compuesto por una serie de contadores anidados y se ha diseñado específicamente para obtener señales significativas, es decir, al usuario no le interesaría obtener señales de frecuencias como 625KHz por lo que con el divisor obtenemos frecuencias que nos permitan dibujar señales más comunes como pueden ser 1KHz, 5Hz, etc. El esquemático es:

Page 12: generador digital de funciones

Generador Digital de Funciones Diseño del Sistema Digital

12

B) BLOQUE PRINCIPAL. Es la parte de la unidad operativa que se encarga de generar los valores necesarios para dibujar los diferentes tipos de onda. Está compuesto por:

COMPONENTE FUNCIÓNMEMORIA ROM Contiene los valores de la señal senoidal.

MULTIPLEXOR DE DOS CANALES

Selecciona el puntero de la memoria ROM.

MULTIPLEXOR DE TRES CANALES Selecciona el tipo de señal de salida sin offset

SUMADOR / RESTADOR Añade o quita offset a la salida.

CONTADOR DE 128 Direcciona la memoria ROM para una señal senoidal simple

CONTADOR DE 64 Direcciona la memoria ROM para una señal senoidal rectificada.

MULTIPLEXOR DE DOS CANALES Selecciona si la señal rectificada es positiva o negativa.

FREC_TO_VISUAL Indica al siete segmentos el módulo de la frecuencia que se debe visualizar

FREC_TO_LED Indica a los leds cual se debe enceder.

Genera los valores de las señales triangular y cuadrada.TRIANGULAR2

La señal de salida del divisor proporciona la frecuencia de trabajo de los contadores que direccionan la memoria ROM y del bloque TRIANGULAR2 que explicaremos a continuación. Con el MULTIPLEXOR DE TRES CANALES se elige la onda que el usuario quiere visualizar y si hay nivel de offset se le añade o resta en el SUMADOR / RESTADOR dependiendo de la entrada SIGNO_OFF.

Page 13: generador digital de funciones

Generador Digital de Funciones Diseño del Sistema Digital

13

El CONTADOR DE 64 direcciona la mitad superior o inferior de la memoria ROM para obtener así una señal rectificada positiva o negativa. El tipo de rectificación se elige con el MULTIPLEXOR DE DOS CANALES. El esquemático de este bloque:

Explicaremos a continuación el componente TRIANGULAR2 que se encarga de generar los datos de las señales triangular y cuadrada. Está compuesto por:

COMPONENTE FUNCIÓNSUMADOR / RESTADOR Calcula la rampa ascendente / descendente de la señal triangular.

BIESTABLE JK Memorizar el final de contaje del contador.

CONTADOR DE 64 Para conseguir la misma frecuencia final que en el caso de la senoidal.

MULTIPLEXOR DE DOS CANALES Selecciona nivel alto o bajo de la señal cuadrada.

BIESTABLE D Memoriza el ultimo valor del sumador y lo realimenta al sumador. El CONTADOR DE 64 evoluciona según la señal FRECUENCIA, salida del divisor, y su señal de fin de contaje indica a la señal triangular que debe cambiar de rampa ascendente a descendente y a la señal cuadrada que debe cambiar de nivel. Los valores de la señal triangular se generan sumando dos a la salida realimentada del sumador almacenada en el BIESTABLE D. La señal que indica si debe sumar o restar es la señal de salida memorizada en el BIESTABLE JK. La señal cuadrada se genera simplemente eligiendo el valor alto o bajo fijados previamente en el MULTIPLEXOR DE DOS CANALES seleccionado por la señal memorizada en el BIESTABLE JK.

Page 14: generador digital de funciones

Generador Digital de Funciones Diseño del Sistema Digital

14

El esquemático de este componente:

El funcionamiento de la unidad operativa se ha comprobado realizando la simulación temporal:

En la simulación se puede observar como el usuario realiza tres cambios de tipo de señal en el bus TIPO_SALIDA, que se ve reflejado en el bus SALIDAS. También provoca tres cambios de frecuencia que se ven reflejados en el bus SEL_FREC mediante el cambio de su valor y finalmente cambiando la frecuencia de salida de los datos en el bus SALIDAS, se ha incluido la señal FRECUENCIA para poder observar estos cambios más fácilmente. También se puede observar cómo la entrada F_MAS_MENOS provoca que se aumente o disminuya la frecuencia cuando se activa CAMBIO_OK.

SENOIDAL CUADRADA

TRIANGULAR

Page 15: generador digital de funciones

Generador Digital de Funciones Diseño del Sistema Digital

15

En esta simulación se ha evitado introducir offset dejando esta funcionalidad para la simulación del sistema completo. También se observa cómo en los buses OCHO_SEG y LEDS se generan los valores adecuados para la correcta visualización de la frecuencia actual.

Page 16: generador digital de funciones

Generador Digital de Funciones Diseño del Sistema Digital

16

3. SISTEMA COMPLETO. Se ha procedido a la comprobación del sistema completo que se observa en el esquemático:

Mediante la simulación temporal de la unidad de control y la operativa trabajando sincronizadamente.

En la simulación se puede observar una situación similar a las explicadas anteriormente sólo que ahora se actúa simplemente sobre las señales que provienen de los botones de usuario. Lo más destacable de la simulación es observar cómo cuando existe un nivel de offset (introducido por el usuario) en el bus SWITCH, éste se refleja en la salida del sistema y dependiendo del valor de la señal SIGNO_OFFSET se suma o se resta.

Page 17: generador digital de funciones

Generador Digital de Funciones Estimación de los Recursos Lógicos

17

ESTIMACIÓN DE LOS RECURSOS LÓGICOS Estimación de los terminales de entrada salida:

Terminales de entrada: Dos terminales específicos:

CLK: reloj externo al circuito (oscilador). RESET: puesta en estado inicial global.

Dos terminales para botones de usuario:

CAMBIO_FREC_P: permite cambiar la frecuencia. TIPO_ONDA_P: cambia la forma de onda.

Ocho terminales para selectores de usuario:

FRECUENCIA_UP_DOWN_P: selecciona si aumenta o disminuye la frecuencia.

SIGNO_OFFSET_P: selecciona si se suma o resta el valor de offset.

SWITCH0_P – SWITCH5_P: valor de offset.

Terminales de salida: Ocho salidas al conversor: CONVERSOR0 – CONVERSOR7 Siete salidas al visualizador: VISUAL_A_P – VISUAL_G_P Cinco salidas para los LED: LEDS0_P – LEDS4_P. Dos salidas de control de registro: REGISTRO_LE, REGISTRO_OE.

En total necesitamos 34 terminales de entrada salida, con lo que optamos por un encapsulado de 84 terminales para un correcto enrutado y para posibles ampliaciones posteriores. Circuitos adicionales:

Conversor digital / analógico: AD7523 Harris Semiconductor.

Oscilador de 10MHz.

Page 18: generador digital de funciones

Generador Digital de Funciones Elección del Circuito

18

ELECCIÓN DEL CIRCUITO Debido a que es necesario la utilización de una memoria interna para los datos de la onda senoidal, el circuito más adecuado parece ser del tipo FPGA. Como la unidad operativa es compleja y para posteriores ampliaciones será necesario tener un alto número de CLBs y como son necesarios un número elevado de terminales para albergar los ya utilizados y para futuras ampliaciones, se ha seleccionado la FPGA 4005E-PC84 de Xilinx para realizar la implementación. La aplicación se ha comprobado en la placa de FPGAs de Xilinx de la forma:

FORMA DE ONDA

CAMBIO FRECUENCIA

VALOR FRECUENCIA

MULTIPLICADOR FRECUENCIA

RESET GLOBAL VALOR OFFSET

SIGNO OFFSET

FRECUENCIA MÁS / MENOS

x1Hz x10Hz x100Hz x1KHz x10KHz

Page 19: generador digital de funciones

Generador Digital de Funciones Compilación e Implementación

19

COMPILACIÓN E IMPLEMENTACIÓN Una vez realizada la implementación sobre la XC4005E-PC84 observamos que el sistema completo ocupa 142 de 196 CLBs lo que supone un 72% de su capacidad con lo cual la elección la consideramos adecuada. Los resultados obtenidos de la herramienta Foundation de Xilinx se pueden observar en el resumen: Design Summary:

Number of errors: 0

Number of warnings: 3

Number of CLBs: 142 out of 196 72%

CLB Flip Flops: 91

4 input LUTs: 194

3 input LUTs: 41 (2 used as route-throughs)

32X1 ROMs: 32

Number of bonded IOBs: 34 out of 61 55%

IOB Flops: 2

IOB Latches: 0

Number of clock IOB pads: 1 out of 8 12%

Number of primary CLKs: 1 out of 4 25%

Number of secondary CLKs: 4 out of 4 100%

Number of TBUFs: 32 out of 448 7%

Number of oscillators: 1

Number of STARTUPs: 1

Total equivalent gate count for design: 6341

Additional JTAG gate count for IOBs: 1632

El resultado final de la implementación se puede observar en la siguiente imagen:

Page 20: generador digital de funciones

Generador Digital de Funciones Compilación e Implementación

20

El máximo retardo de nuestro circuito es de 49,798ns y el mínimo periodo aplicable es de 33.59ns lo que nos da una frecuencia máxima de trabajo de 29,771Mhz. Los retardos y la frecuencia máxima son aceptables ya que nuestro sistema trabaja con una señal de reloj externa de 10Mhz necesaria para poder obtener las frecuencias correctas en el divisor. Tras varias pruebas de implementación (incrementando el esfuerzo de la aplicación) se consiguen ciertas mejoras en la frecuencia de trabajo que como se ha explicado anteriormente no repercuten en el funcionamiento, los nuevos resultados: Design statistics:

Minimum period: 29.470ns (Maximum frequency: 33.933MHz)

Maximum combinational path delay: 53.772ns

Minimum input arrival time before clock: 15.180ns

Maximum output required time before clock: 94.910ns

Device utilization summary:

Number of External IOBs 34 out of 112 55%

Flops: 2

Latches: 0

Number of IOBs driving Global Buffers 1 out of 8 12%

Number of CLBs 142 out of 196 72%

Total CLB Flops: 91 out of 392 23%

4 input LUTs: 258 out of 392 65%

3 input LUTs: 73 out of 196 37%

Number of OSCILLATORs 1 out of 1 100%

Number of PRI-CLKs 1 out of 4 25%

Number of SEC-CLKs 4 out of 4 100%

Number of STARTUPs 1 out of 1 100%

Number of TBUFs 32 out of 448 7%

Page 21: generador digital de funciones

Generador Digital de Funciones Conclusiones

21

CONCLUSIONES La implementación de la aplicación se ha realizado en la placa de FPGAs de Xilinx y se comprueba que funciona correctamente. La frecuencia de trabajo del oscilador (10Mhz) limita el rango de frecuencias de salida. Para una mejor visualización de las señales, convendría añadir un filtro a la señal de salida del CDA.