Instituto Polit�cnico Nacional
Instituto Politécnico Nacional
"La Técnica al Servicio de la Patria"

Boletín No. 93
1o. de noviembre de 2022




GENERADOR DE FRECUENCIA CON VHDL Y LA NEXYS 3

 

Juan Antonio Jaramillo Gómez, Dr.
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. .
Mirna Salmerón Guzmán, M. en C.
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo. .
Isis Chetzyl Ballardo Rodriguez, Dra.
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.

Cómo citar este artículo

Resumen

Se presenta la implementación de un sistema que genera una salida LVTTL con frecuencia de salida de 1 a 2kHz que cambia con botones, con visualización en display de 7 segmentos, utilizando la tarjeta de desarrollo Nexys 3 y programada con el lenguaje de descripción de hardware VHDL en el programa ISE de Xilinx. Tiene como salida un led testigo y una salida externa donde se puede conectar una etapa de potencia o simplemente una bocina. Se proporcionan los códigos VHDL y el archivo de restricciones de usuario para la tarjeta mencionada.

 

Abstract

The implementation of a system that generates an LVTTL output with an output frequency of 1 to 2kHz that changes with buttons, with visualization on a 7-segment display, using the Nexys 3 development card and programmed with the VHDL hardware description language, is presented in the Xilinx ISE program. It has a witness led as output and an external output where a power stage or simply a speaker can be connected. VHDL codes and user restrictions file for the mentioned board are provided.

 

Introducción

Los generadores de señales o de funciones o de formas de onda son equipos, dispositivos y circuitos electrónicos que generan patrones de señales periódicas y no periódicas, analógicas y digitales que se usan para la prueba y análisis de circuitos, para el diseño y hasta para la reparación de circuitos en áreas de ingeniería, medicina y hasta en entretenimiento (ver figura 1). Anteriormente los generadores eran equipos de banco y con funciones limitadas, pero hoy en día los equipos son portátiles, en módulo o tarjeta y con muchas funciones disponibles inclusive con pantallas touch o controlados por software.

 

Figura 1.

 

Los circuitos generadores de señales se pueden obtener desde un simple circuito integrado como un LM555 y unos cuantos componentes para generar señales rectangulares o el ICL8038 para generar cinco tipos de señales (sinusoidal, cuadrada, triangular, rampa, y pulsos. Hoy día, también es posible realizarlos con circuitos programables (señales rectangulares) y con circuitos convertidores generar cualquier señal para:

  • Crear señales desde cero por tiempo y amplitud.
  • Replicar señales de cualquier tipo como anomalías, errores, fallas.
  • Generar señales ideales o funciones (senoidal, cuadrada, triangular, etc.).

Dentro de un dispositivo lógico programable (GAL, CPLD o FPGA) se pueden hacer circuitos secuenciales a partir de los flip-flops o biestables, con estos se pueden programar los registros de corrimiento o desplazamiento y los contadores, que al conectarse en un arreglo (serie, paralelo, etc.) y con el apoyo de una circuitería adicional se puede dar el proceso de almacenamiento, manipulación y conteo. Todo el funcionamiento de los circuitos secuenciales síncronos se realiza, por lo general, de manera síncrona con una señal de reloj, además de tener las señales de control que permiten subir/bajar (Up/Down), congelar (Hold), resetear (Reset o Clear) o ajustar (Set) el valor, activadas con valores en alto (High) o en bajo (Low).

Una aplicación particular de estos circuitos mencionados es el de un generador de rectangular que cambie el valor de la frecuencia o periodo, cuyas aplicaciones van desde la caracterización de circuitos hasta el control de energía, control de luz, control de velocidad en motores, etc.

La visualización de los datos de cualquier componente, en particular los digitales, sirve para indicar las condiciones de los sistemas, los valores medidos, el estado en que se encuentran, etc. Existen varias formas de llevar a cabo la presentación de los datos, las más comunes son utilizando un Display de 7 segmentos, un Display de Cristal Líquido o LCD (Liquid Crystal Display), un display matricial, entre otros. En un display de 7 segmentos se puede controlar de dos formas, dígito por dígito cuando es independiente o por medio de barrido cuando todos sus segmentos están conectados. Algunos de sus usos son en máquinas despachadoras (dulces, gasolina, refrescos, etc.), en medidores (multímetros, termómetros, niveladores, etc.), sistemas de control específicos (temporizador y control de temperatura, medidores de nivel con alarmas, sistema de llenado de tinaco, etc.), entre muchos otros.

En este ejemplo, se presenta la salida en un display de 7 segmentos conectado a la tarjeta Nexys 3 (ver figuras 2 y 3), que es un display de 4 dígitos en bus, por lo que hay que hacer un barrido de la información para mostrar las unidades, decenas, centenas y unidad de millar.

 

Figura 2. Imagen de la tarjeta Nexys 3.

 

 

Figura 3. Conexión de terminales de los componentes básicos.

 

Para la implementación del generador de señal se utilizó un Spartan 6 contenido en la tarjeta Nexys 3, utilizando una salida del conector externo para una bocina de alta impedancia o una bocina con módulo amplificador de audio conectado a una fuente externa.

El programa de control está escrito en VHDL puesto en un archivo anexo. El cambio de frecuencia se realiza con los botones para subir y bajar la frecuencia, un botón de reset y un botón de set (ajusta a 1000Hz), como ya se dijo la salida es para una bocina externa a la tarjeta además de un led testigo, mostrando su valor en el display de 4 dígitos, barrido con un divisor de frecuencia de 400Hz.

Cálculos

Debido a que la tarjeta contiene un reloj de 100MHz, los divisores basados en contadores se calculan con la siguiente ecuación:

 

 

Por ejemplo, para un barrido de display con una frecuencia de 400Hz (0.0025s=2.5ms) el contador es:

 

 

Para un reloj de 10Hz (0.1s=10ms) el contador es:

 

 

Aunque también se puede plantear el tiempo que se requiere alcanzar y saber el tamaño del contador, con la siguiente ecuación:

 

 

Por ejemplo, para un tiempo de 50ms el contador es:

 

 

Para un tiempo de 0.125ms el contador es:

 

 

Con estos datos se escribe el código cuyo proyecto y entidad se muestran en la figura 4.

 

Figura 4. Diseño del proyecto en el ISE de Xilinx y la entidad.

 

Conexiones

La única conexión externa que se tiene es para conectar la salida de la bocina, sin embargo se debe de elegir uno de los conectores de expansión (JA, JB, JC o JD) de la Nexys 3 (ver figura 5), recordando que la tarjeta puede entregar 3.3V, si la bocina funciona a este voltaje se conecta de forma directa, pero si es de otro voltaje hay que energizarlo de forma externa, inclusive poner un circuito de potencia para bocinas de mayor cantidad de watts.

 

Figura 5. Terminales del conector de expansión de la nexys 3.

 

Los terminales pueden numerarse desde JA0-JA7 o también JA1-JA12.

Código

Parte del código se muestra en la figura 6, el cual expone el proceso del conteo para realizar el ajuste de la frecuencia de salida. Este es uno de los distintos procesos con los que cuenta el proyecto. En la siguiente liga, se accesa el código completo descrito en VHDL.

 

Figura 6. Código del proceso en el que el contador ajusta la frecuencia de salida.

 

El código escrito de VHDL y el archivo de restricciones son ya sintetizados se implementaron en la tarjeta Nexys 3, cuyos resultados se muestran en la figura 7.

 

Figura 7. Fotos de las pruebas del generador de frecuencia con salida a display.

 

Conclusiones

Se ha presentado la implementación de un código para la generación de frecuencia en el rango de 1 a 2000 Hz. La salida se manda a una bocina, a un led testigo en la tarjeta y a un display donde se muestran los valores de frecuencia en la tarjeta Nexys 3. Se entregan los códigos en VHDL y el UCF de la Nexys 3 para que se utilicen, analicen y modifiquen como cada usuario lo requiera.

Referencias

  1. CINVESTAV. (Recuperado el 7 de julio de 2022). de http://www.vlsilab.cinvestav.mx/files/Practicas_Spartan_3E.pdf

  2. Haskell R. E., Hanna D. M. (2010). Digital design using Digilent FPGA boards VHDL. E.U.: LBE books. Pp 187-209.

  3. Haskell R. E., Hanna D. M. (2010). Digital design using Digilent FPGA boards Verilog. E.U.: LBE books. Pp 172-190.

Cómo citar este artículo en APA

Jaramillo, J., Salmerón, M. y Ballardo, I. (1 de noviembre de 2022). Generador de frecuencia con VHDL y la NEXYS 3. Boletín UPIITA. 17 (93).
https://www. https://www.boletin.upiita.ipn.mx/index.php/ciencia/1022-cyt-numero-93/2115-generador-de-frecuencia-con-vhdl-y-la-nexys-3

Regresar al índice