0% encontró este documento útil (0 votos)
3 vistas25 páginas

Manual de VHDL para Circuitos Secuenciales

El documento es un manual de VHDL para circuitos secuenciales, que explica la diferencia entre circuitos combinacionales y secuenciales, así como los elementos básicos de memoria como latches y flip-flops. Se detalla la operación de circuitos síncronos y se presentan descripciones estándar en VHDL para flip-flops y registros, además de una metodología de diseño para circuitos secuenciales. También se incluyen ejemplos prácticos de circuitos secuenciales como flip-flops con habilitador y registros de desplazamiento.

Cargado por

a20242373
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
3 vistas25 páginas

Manual de VHDL para Circuitos Secuenciales

El documento es un manual de VHDL para circuitos secuenciales, que explica la diferencia entre circuitos combinacionales y secuenciales, así como los elementos básicos de memoria como latches y flip-flops. Se detalla la operación de circuitos síncronos y se presentan descripciones estándar en VHDL para flip-flops y registros, además de una metodología de diseño para circuitos secuenciales. También se incluyen ejemplos prácticos de circuitos secuenciales como flip-flops con habilitador y registros de desplazamiento.

Cargado por

a20242373
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ

SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

MANUAL DE VHDL

CIRCUITOS SECUENCIALES I

Autores:

Edward Mitacc Meza

Stefano Sosa Cordova


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

CIRCUITOS SECUENCIALES I

1. Circuito secuencial vs circuito combinacional

Un circuito combinacional, por definición, es un circuito cuya salida es función de la


entrada actual. No tiene estados internos, y por tanto, no almacena información sobre
los eventos pasados, o entradas pasadas. Por otro lado, un circuito secuencial tiene un
estado interno (memoria), y su salida es función tanto de la entrada actual como del
estado interno. Este estado interno básicamente guarda información (“memoriza”) el
efecto de los pasados valores de entrada. La salida de un circuito secuencial, por tanto,
está afectada tanto por los actuales valores como los pasados valores de la entrada.

2. Elementos básicos de memoria

A continuación, se presentan las características básicas de un latch tipo D (o Latch D), y


de un flip-flop tipo D (o FF D):

Latch D
El símbolo y la tabla de funcionamiento de un latch D se muestran en la figura 1(a).
Notar que se usa el símbolo * para representar el valor siguiente, y por tanto, q*
significa “valor siguiente de q”. La entrada c es una señal de control, mientras que d es
una señal de datos de entrada. Cuando c se activa, el dato de entrada d pasa
directamente a la salida q. Cuando c se desactiva, la salida mantiene su valor previo.
Dado que la operación de un latch D depende del nivel de la señal, se dice que es
“sensible al nivel”. Un diagrama de tiempo representativo es presentado en la salida
q_latch de la figura 2. Cada vez que la señal de control (clk) está activa, el dato de
entrada pasa a la salida, y en caso contrario, se mantiene el valor anterior.

(a) Latch D (b) FF D disparado por flanco positivo

(c) FF D disparado por flanco negativo (d) FF D con reset asíncrono

Figura 1: Latch D y Flip-flop D [1]

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 2


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Figura 2: Diagramas de tiempo de Latch D y Flip-Flop D [1]

Sin embargo, dado que el latch es “transparente” (la entrada pasa directamente a la
salida) cuando c está activo, puede dejar pasar glitches (fallas transitorias) o producir
errores de sincronización. Por ello, en su lugar se prefiere el uso de flip-flops D en la
descripción de circuitos secuenciales.

Flip-flop D
El símbolo y la tabla de funcionamiento de un flip-flop D disparado por flanco positivo
se muestran en la figura 1(b). El FF D tiene una señal especial de control conocida
como señal de reloj, la cual es etiquetada como clk en el diagrama. El FF D se activa
sólo cuando la señal de reloj cambia de ‘0’ a ‘1’, lo cual se conoce como flanco de
subida del reloj. El resto del tiempo, cuando no hay flanco de subida, la salida mantiene
su valor previo. En otras palabras, en el flanco de subida de reloj, un FF D toma una
muestra del dato de entrada y almacena el valor en memoria, y pasa el valor a la salida.
La salida, la cual refleja el valor almacenado, no cambia hasta el siguiente flanco de
reloj. Dado que la operación de un FF D depende de un flanco en la señal de reloj, se
dice que es “sensible al flanco”.

Un diagrama de tiempo representativo es presentado en la salida q_pff de la figura 2.


Notar que la señal de reloj, clk, está funcionando como una señal de muestreo, que toma
una muestra del dato de entrada d en el flanco de subida.

La operación de un FF D disparado por flanco negativo es similar, excepto por el hecho


de que el muestreo es realizado en el flanco de bajada del reloj. Su símbolo y su tabla de
funcionamiento se muestran en la figura 1(c). Un diagrama de tiempo representativo se
muestra en la salida q_nff de la figura 2.

La propiedad de muestreo de los flip-flops hace posible que las variaciones o glitches
(fallas transitorias) entre dos flancos de reloj no tengan efecto en el contenido de la
memoria. Por ejemplo, en la figura 2, las variaciones de la señal d ocurridas entre los
flancos de reloj no influyen en los valores de las salidas q_pff y q_nff.

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 3


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

3. Circuitos síncronos

Un circuito síncrono utiliza flip-flops como elementos de memoria, los cuales están
todos controlados por una única señal de reloj global. El diagrama básico de un circuito
síncrono se muestra en la figura 3. El elemento de memoria, conocido también como
registro de estado, es una colección de flip-flops D sincronizados por una señal de reloj
global. La salida del registro es la señal estado_actual, y representa el estado interno del
sistema. La lógica del estado siguiente es un circuito combinacional que determina el
estado siguiente del sistema, mientras que la lógica de la salida es otro circuito
combinacional que genera la señal de salida externa. Notar que la salida depende de la
señal de entrada externa y del estado actual del registro.

Figura 3: Diagrama conceptual de un circuito secuencial síncrono

El circuito opera de la siguiente manera:


- En el flanco de subida del reloj, el valor de la señal estado_siguiente (conectada al
puerto d del registro), es capturado y transmitido hacia el puerto q, de modo que se
convierte en el nuevo valor de la señal estado_actual. Este valor permanece
almacenado por el resto del periodo de reloj.
- Basado en el valor de la señal estado_actual y la entrada externa, la lógica del estado
siguiente calcula el valor de la señal estado_siguiente, y la lógica de la salida calcula
el valor de la salida externa.
- En el siguiente flanco de subida de reloj, el nuevo valor de estado_siguiente es
capturado, y la señal estado_actual es actualizada. El proceso, entonces, se repite.

4. Descripción de elementos básicos de memoria

A continuación, se presentan descripciones VHDL estándares (típicas) de circuitos


básicos de memoria como flip-flops y registros.

Flip-flop D disparado por flanco de subida


La tabla de funcionamiento de un flip-flop D disparado por flanco de subida se muestra
en la figura 1(b). El código VHDL correspondiente se muestra a continuación. Ésta es
una descripción estándar, y es soportada por todas las herramientas de síntesis.

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 4


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

La sentencia if indica que en el flanco de subida de la señal clk, q toma el valor de d.


Dado que no hay una rama else, el valor de q se mantiene cuando no hay un flanco de
subida de clk. Por tanto, el código VHDL describe adecuadamente el funcionamiento de
un flip-flop D. Notar que la señal d no está en la lista de sensibilidad. Esto debido a que
la salida responde únicamente a la señal clk, y no depende de cambios en la señal d.

De forma alternativa a la expresión rising_edge(clk), se puede utilizar la


expresión clk'event and clk = '1'. El siguiente código VHDL es, por tanto,
equivalente.

Flip-flop D disparado por flanco de bajada


Un flip-flop D disparado por flanco de bajada es similar a un FF D disparado por flanco
de subida, excepto por el hecho de que el dato de entrada es capturado en el flanco de
bajada de la señal de reloj. Para especificar esta condición, se utiliza la expresión
falling_edge(clk) en lugar de rising_edge(clk). De manera equivalente, se
puede emplear la expresión clk'event and clk = '0'.

Flip-flop D con reset asíncrono


Un flip-flop D puede contener una señal de reset asíncrona que permite poner a ‘0’
lógico la salida del mismo. La tabla de funcionamiento correspondiente se muestra en la
figura 1(d). Notar que la operación reset no depende del nivel o flanco de la señal de

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 5


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

reloj. De hecho, tiene una prioridad mayor que la operación controlada por el reloj. El
código VHDL de un flip-flop D con reset asíncrono se muestra a continuación:

Ambas señales reset y clk están en la lista de sensibilidad dado que controlan una
operación en el flip-flop. Cuando el proceso es invocado, primero se verifica la señal de
reset. Si es '1', la salida del flip-flop es asignada el valor de '0' lógico. De lo
contrario, si es '0', el proceso continúa verificando la condición de flanco de subida
del reloj, como en un flip-flop D regular.

El reset asíncrono, como su nombre implica, no es sincronizado por la señal de reloj. Su


principal uso es para inicializar los elementos de memoria, y llevar el sistema a su
estado inicial. Una vez que el sistema entra a su estado inicial, éste comienza a operar
de manera síncrona, y no usará la señal de reset nuevamente.

Algunos flip-flops D pueden tener, adicionalmente, una señal de preset que permite
poner a '1' lógico la salida del mismo. El código VHDL correspondiente se muestra a
continuación:

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 6


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Registro
Un registro es una colección de flip-flops D que son controlados por la misma señal de
clk y reset. El código VHDL de un registro de 8 bits se muestra a continuación:

El código es similar a un flip-flop D, excepto por el hecho de que la entrada d y la salida


q son de 8 bits. Por lo general, se usa el mismo símbolo de un FF D para un registro. El
tamaño del registro se especifica indicando el ancho del bus de las conexiones de
entrada y salida.

5. Metodología de diseño de circuitos secuenciales

La manera más efectiva de diseñar un circuito secuencial es seguir el diagrama de


bloques de la figura 3. En primer lugar, se identifican los elementos de memoria, y
luego se diseñan la lógica del estado siguiente y la lógica de la salida. Esta separación
entre los elementos de memoria y los circuitos combinacionales es esencial para la
síntesis de circuitos secuenciales complejos, y es útil para realizar la verificación
funcional de los mismos. Por ello, como buena práctica se recomienda lo siguiente:

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 7


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

- Usar un segmento de código VHDL independiente para describir los elementos de


memoria. Este segmento debe ser la descripción estándar de un flip-flop D o un
registro.
- Usar el sufijo _reg para representar la salida de un registro o un flip-flop D.
- Usar el sufijo _next para indicar el siguiente valor (entrada D) de un flip-flop D o un
registro.

En la siguiente sección se presentan circuitos secuenciales simples descritos mediante


este estilo de codificación.

6. Ejemplos de descripción de circuitos secuenciales

Flip-flop D con habilitador


La tabla de funcionamiento de un flip-flop D con habilitador se muestra en la figura
4(a). Notar que la señal de habilitación (en) sólo tiene efecto en el flanco de subida de la
señal de reloj, lo cual significa que la señal es sincronizada por el reloj. En el flanco de
subida del reloj, el flip-flop captura los valores de en y d. Si en es '0', lo que significa
que el FF no está habilitado, el FF mantiene su valor previo. De lo contrario, si en es
'1', el FF está habilitado y funciona como un FF D regular.

(a) Tabla de funcionamiento (b) Diagrama conceptual

Figura 4: Flip-flop D con habilitador [1]

El código VHDL correspondiente se muestra a continuación:

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 8


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

El código VHDL sigue la metodología presentada para diseño de circuitos secuenciales,


y está dividido en tres segmentos: elemento de memoria, lógica del estado siguiente y
lógica de la salida. El elemento de memoria es un flip-flop D regular. La lógica del
estado siguiente está implementada por una sentencia when-else, de modo que la señal
q_next puede tomar el valor de d o tomar el valor actual del FF, q_reg, dependiendo del
valor de en. En el flanco de subida del reloj, el valor de q_next será capturado y
almacenado en el elemento de memoria. Por último, la lógica de la salida es
simplemente un cable que conecta la salida al puerto q del flip_flop.

El diagrama conceptual correspondiente se muestra en la figura 4(b). Para obtener el


diagrama, primero se separa y especifica el elemento de memoria, y luego se especifica
el circuito combinacional restante.

Registro de desplazamiento (registro serie-serie)


Un registro de desplazamiento (shift register) tiene una entrada y una salida de 1 bit.
Internamente está compuesto por n flip-flops conectados entre sí, en serie, formando
una cadena. La entrada del registro es la entrada del primer flip-flop, y la salida del
registro es la salida del último flip-flop. En la figura 5 se muestra un registro de
desplazamiento de 4 bits. Si se agrupan los cuatro flip-flops y se tratan como un solo
bloque de memoria, se puede adaptar el circuito al diagrama de bloques presentado
anteriormente para circuitos secuenciales. Este diagrama se presenta en la figura 6.

Figura 5: Registro de desplazamiento de 4 bits [1]

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 9


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Lógica
Desplaza de
1 bit hacia salida
la derecha

Figura 6: Diagrama de bloques de registro de desplazamiento de 4 bits [1]

El código VHDL correspondiente se muestra a continuación:

En la lógica del estado siguiente, la sentencia


r_next <= d & r_reg(3 downto 1);
indica que el contenido actual del registro es desplazado un bit hacia la derecha, y un
nuevo bit, d, es insertado a la izquierda.

Contador binario de carrera libre


Un contador binario de n bits tiene un registro con n flip-flops, y su salida es
interpretada como un número entero sin signo. Un contador binario de carrera libre
incrementa el contenido del registro en cada ciclo de reloj, y cuenta repetidamente desde
0 hasta 2n-1. Adicionalmente, se incluye una señal de estado, max_pulse, que se activa

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 10


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

cuando el contador llega a su tope (cuando todos los bits en '1'). El código VHDL de
un contador binario de 4 bits se muestra a continuación:

La lógica del estado siguiente consiste de un incrementador, el cual calcula el nuevo


valor para el siguiente estado del registro. Notar que una vez que el contador llega a su
máximo valor, “1111”, su siguiente valor es “0000”. Esto debido a que la cuenta está
definida para 4 bits. La lógica de salida utiliza una sentencia when-else para
implementar el pulso deseado, max_pulse. El diagrama conceptual se muestra en la
figura 7.

Figura 7: Diagrama conceptual de contador binario de carrera libre de 4 bits [1]

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 11


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Contador de módulo 10 (contador de décadas)


En lugar de utilizar todos los posibles 2n estados de un contador binario de n bits, se
puede emplear sólo un rango de estados para la cuenta. Se define un contador de
módulo m a un contador binario cuyos estados transitan desde 0 hasta m-1, y luego
repiten la cuenta. Por ejemplo, consideremos el diseño de un contador de módulo 10,
también conocido como contador de décadas. El contador realiza la cuenta de 0 hasta 9
repetidamente. Se necesitan al menos 4 bits ([log210]) para acomodar los 10 posibles
estados, y por tanto la salida es de 4 bits. La descripción VHDL de este contador se
muestra a continuación:

Se observa en la lógica del estado siguiente que se utiliza una sentencia when-else para
indicar que una vez que el contador llega a 9, su siguiente valor es 0. De no existir esta
condición, se continuaría incrementando la cuenta.

De forma alternativa, se puede emplear una constante para indicar el tope de la cuenta,
lo cual hace más flexible el código. Esto se muestra a continuación:

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 12


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

El diagrama conceptual correspondiente se muestra en la figura 8.

Figura 6: Diagrama conceptual de contador de módulo 10 [1]

Para realizar un contador de módulo m, simplemente se debe cambiar el tope del


contador a m-1. Asimismo, debe tenerse en cuenta el ancho de las señales que se
emplean para el contador, de modo que se acomoden a los valores que toma la cuenta.
Por ejemplo, si se desea describir un contador de módulo 18 (cuenta de 0 a 17), el ancho
de las señales del contador será de 5 bits, pues para expresar el valor máximo (17), se
necesitan 5 bits como mínimo (“10001”).

7. Test bench: Generación de señal de reloj y de reset

A fin de realizar la verificación funcional de un circuito secuencial, deben generarse


estímulos para las señales de reloj y de reset. Una manera de realizar esto es mediante la
sentencia wait for, la misma que se empleó para la generación de estímulos en circuitos
combinacionales. Sin embargo, la sintaxis de un proceso de generación de señal de reloj
es ligeramente distinta. A modo de ejemplo, se presenta la descripción de un contador
de módulo 6 y su respectivo test bench.

Ejemplo: Contador de módulo 6

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 13


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Test bench de contador de módulo 6:

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 14


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Se observa que se define una constante, denominada Periodo, para indicar la duración
del período de la señal de reloj. Esta constante es luego utilizada en los procesos
empleados para generar los estímulos para las señales clk y reset. En el primero de ellos,
Reset_process, se asigna inicialmente un ‘1’ lógico a reset y se mantiene dicho valor
por la duración de Periodo (20 ns), y luego se asigna un ‘0’ lógico a reset. Esto permite
generar un pulso de reset de corta duración, con la finalidad de inicializar el contador.
En el segundo proceso, Clock_process, se genera una señal de reloj que tiene la forma
de una señal cuadrada, que alterna repetidamente entre ‘0’ y ‘1’ lógico. Cada valor, ‘0’
ó ‘1’, se mantiene durante la mitad de Periodo (esto es, 10 ns), de manera que se genera
una señal clk que tiene un período de 20 ns (su forma de onda se repite cada 20 ns).
Debe notarse que no se incluye una sentencia wait al final de este proceso, ya que se
desea que el mismo se ejecute de manera continua a fin de generar una señal de reloj.
De existir la sentencia wait, sólo se generaría un período de la señal de reloj.

A continuación, se observan las formas de onda generadas de las señales clk, reset y q.
Puede notarse que efectivamente la señal reset se activa durante los primeros 20 ns, y
que la señal clk tiene un período de 20 ns. Asimismo, se observa que la señal q
efectivamente realiza una cuenta de 0 hasta 5 de forma repetida.

8. Ejercicios resueltos

8.1. Ejemplo 1: Contador de módulo 10 con múltiples salidas

Descripción del funcionamiento del circuito

El circuito consiste de un contador binario de módulo 10 que, además de mostrar el


valor actual de la cuenta, tiene tres salidas que indican si el valor actual es un número
par, impar o primo.

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 15


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Estructura del circuito

Estructura del código

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 16


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Verificación funcional del circuito (Test Bench)

Como se aprecia en los resultados gráficos, la señal cuenta se incrementa en cada ciclo
de reloj desde 0 hasta 9, de forma repetida. Asimismo, se generan las salidas n_par,
n_impar y n_primo de acuerdo a los valores esperados. Por ejemplo, cuando cuenta es
7, sólo se activan las salidas n_impar y n_primo.

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 17


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

8.2. Ejemplo 2: Contador de módulo 24 con múltiples salidas

Descripción del funcionamiento del circuito

El circuito consiste de un contador binario de módulo 24 que, además de mostrar el


valor actual de la cuenta, tiene tres salidas: mañana, tarde y noche.
Si 6 ≤ cuenta ≤ 12 => mañana = ‘1’.
Si 13 ≤ cuenta ≤ 18 => tarde = ‘1’.
Si 0 ≤ cuenta ≤ 5 ó 19 ≤ cuenta ≤ 23 => noche = ‘1’.

Estructura del circuito

Estructura del código

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 18


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Verificación funcional del circuito (Test Bench)

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 19


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Como se aprecia en los resultados gráficos, la señal cuenta se incrementa en cada ciclo
de reloj desde 0 hasta 23, de forma repetida. Asimismo, se generan las salidas manana,
tarde y noche de acuerdo a los valores esperados.

8.3. Ejemplo 3: Contador de módulo 9 con incremento y decremento

Descripción del funcionamiento del circuito

El circuito consiste de un contador binario de módulo 9 que está controlado por la señal
sel de la siguiente manera:
Si sel = ‘0’ => la cuenta se incrementa en una unidad
Si sel = ‘1’ => la cuenta disminuye en una unidad

Estructura del circuito

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 20


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Estructura del código

Verificación funcional del circuito (Test Bench)

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 21


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Como se aprecia en los resultados gráficos, la señal cuenta se incrementa o decrementa


dependiendo del valor de la señal sel.

8.3. Ejemplo 4: Temporizador de segundos

Descripción del funcionamiento del circuito

El circuito consiste de un temporizador que cuenta segundos (módulo 60). Considerar


que el reloj de entrada tiene una frecuencia de 50 MHz.

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 22


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Estructura del circuito

Estructura del código

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 23


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Verificación funcional del circuito (Test Bench)

Como se aprecia en los resultados gráficos, la señal cuenta se incrementa cada segundo
desde 0 hasta 59, de forma repetida.

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 24


PONTIFICIA UNIVERSIDAD CATÓLICA DEL PERÚ
SECCIÓN ELECTRICIDAD Y ELECTRÓNICA

Bibliografía

[1] Pong P. Chu


2006 “RTL Hardware Design Using VHDL: Coding for Efficiency, Portability
and Scalability”, Wiley-IEEE Press, primera edición

[2] Pedroni, Volnei A.


2010 “Circuit Design and Simulation with VHDL”, MIT Press, segunda edición

LABORATORIO DE CIRCUITOS Y SISTEMAS ELECTRÓNICOS 25

También podría gustarte