Verilog con BASYS 3

Capítulo 5. Generadores de frecuencia

16 de febrero de 2024

En el siguiente tutorial veremos cómo generar señales de reloj de una frecuencia dada. 

El generador de frecuencias descrito en los siguientes ejemplos, está basado en circuitos digitales sencillos, tales como contadores y temporizadores. El principio de funcionamiento es el siguiente: un contador genera un pulso de duración medio ciclo de reloj cada x milisegundos, en función de la frecuencia que busquemos. Este tic, se aplica en la entrada de un flip-flop tipo T que es el que finalmente genera la señal de reloj.


En este ejemplo vamos a generar una señal de reloj de 50 Hz. Para ello partimos de un temporizador que produce un tic cada 10 ms -que es la mitad del periodo de la frecuencia que buscamos de 50 Hz- es decir, T = 1 / 50 Hz = 20 ms. 

Como la Basys 3 tiene un reloj de 100 MHz, en contar hasta 10 ms empleará 1.000.000 de ciclos de reloj. Este es el valor final de nuestro contador.

El pulso de salida del temporizador dispara un flip flop tipo T que conmuta su salida para generar la señal de reloj de 50 Hz.

Código Verilog.

Mapa de entradas y salidas.

Generamos el bitstream, programamos la Basys 3 y estas son las formas de onda que obtenemos en los pines JB7 y JB8 definidos anteriormente.

El tic generado por el contador conmuta la salida del flip-flop tipo T cada 10 ms, generando una señal de reloj de 50 Hz. Modificando las cuentas del temporizador podemos obtener señales de reloj de la frecuencia que queramos.

2. Generador de dos frecuencias

A continuación veremos cómo modelar un generador de dos frecuencias de 25 y 50 Hz seleccionables mediante interruptor sw1.

Añadimos un bloque always dentro del temporizador. Este bloque comprueba el estado del interruptor de selección sw1, si está a nivel bajo, el temporizador cuenta hasta 1 millón, si está a nivel alto contará hasta 2 millones, produciendo un tren de pulsos cada 10 o 20 ms que aplicado al TFF, genera las señales de reloj de 50 y 25 Hz alternativamente.

Mapa de entradas y salidas.

Formas de onda de las señales de reloj de 25 y 50 Hz. 

Estas señales se producen de manera alternativa en el pin JB7.

CH1: Señal de reloj de 25 Hz; CH2: 20 ms tic

CH1: Señal de reloj de 50 Hz; CH2: 10 ms tic

3. Generador de cuatro frecuencias en paralelo

En este ejemplo vamos a instanciar cuatro temporizadores y cuatro flip-flop T para generar de manera simultánea cuatro frecuencias de diferentes valores.

Las frecuencias de salida del generador son: 25 Hz, 50 Hz, 10 KHz y 25 KHz.

En el módulo top, instanciamos cuatro temporizadores y cuatro flip-flop T y a cada circuito le pasamos una constante diferente. Dicha constante o parámetro serán las cuentas de los temporizadores para generar los tic correspondientes y después los flip-flop T producen  las cuatro señales de reloj en paralelo.

Mapa de entradas y salidas.

Formas de onda.

CH1: Señal de reloj de 25 Hz; CH2:  Señal de reloj de 50 Hz

CH1: Señal de reloj de 10 KHz; CH2:  Señal de reloj de 25 KHz

Eso es todo, espero que os haya gustado.

Enlaces

Basado en el curso Digital Circuit Design Using Verilog 

Lecture 36 - Counters as Timers 

Many thanks to Mr Anas Salah Eddin for sharing

Descargas


Puedes descargar el código Verilog de los tres ejemplos en el link de aquí abajo.