Fase 3 - Análisis de Circuitos Secuenciales
Jairo Garzón Santana
Código: 1016001932
Grupo: 243004_88
Universidad Nacional Abierta y A Distancia - UNAD
Escuela de Ciencias Básica, Tecnología e Ingeniería - ECBTI
Electrónica Digital
Tutor Miguel Eduardo Ordoñez Mosquera
05 de Mayo de 2024
INTRODUCCION
Los circuitos digitales desempeñan un papel fundamental en la
electrónica moderna, permitiendo la manipulación, procesamiento y
almacenamiento de información de manera eficiente y precisa. Dentro
de este vasto campo, los contadores ascendentes y descendentes, así
como los registros y flip-flops D, son componentes esenciales que se
encuentran en una amplia gama de aplicaciones, desde sistemas de
control hasta dispositivos de temporización.
En este trabajo, exploraremos en detalle el diseño, simulación e
implementación de circuitos digitales que emplean contadores
ascendentes y descendentes, así como registros y flip-flops D.
Comenzaremos por comprender los principios básicos de funcionamiento
de estos componentes, y luego nos adentraremos en su diseño
utilizando lenguajes de descripción de hardware (HDL) como VHDL.
Además, exploraremos cómo simular estos diseños para verificar su
funcionamiento y cómo implementarlos en dispositivos programables
para su uso en aplicaciones prácticas.
OBJETIVOS
Objetivo General:
Diseñar, simular e implementar circuitos digitales utilizando contadores
ascendentes y descendentes, así como registros y flip-flops D, con el fin
de comprender su funcionamiento y aplicaciones en sistemas digitales.
Objetivos Específicos:
• Desarrollar un diseño en VHDL para contadores ascendentes y
descendentes, utilizando registros y flip-flops D, y simular su
comportamiento para verificar su correcto funcionamiento.
• Utilizar dispositivos programables como FPGA o CPLD para
implementar los diseños de contadores ascendentes y
descendentes en hardware físico, y verificar su funcionamiento en
tiempo real.
• Evaluar el rendimiento de los contadores ascendentes y
descendentes en términos de velocidad, consumo de recursos y
estabilidad, tanto en simulaciones como en implementaciones
físicas, y comparar los resultados en diferentes escenarios de
aplicación.
CUERPO DEL TRABAJO
1. Preguntas orientadoras:
Defina con sus propias palabras los siguientes conceptos luego de hacer
la búsqueda en los textos guías.
a. Circuitos asíncronos y síncronos: Los circuitos asíncronos y
síncronos son dos tipos de circuitos digitales que difieren en la forma en
que se sincronizan y procesan las señales.
Circuitos Asíncronos: Los circuitos asíncronos no tienen un reloj central
que sincronice todas las operaciones. Las operaciones se ejecutan en
respuesta a las señales de entrada, sin depender de un reloj central.
Esto significa que las operaciones pueden ocurrir de manera
independiente y en cualquier momento, lo que puede llevar a problemas
de sincronización y a situaciones en las que las señales lleguen a
diferentes partes del circuito en momentos diferentes.
Circuitos Síncronos: Los circuitos síncronos, por otro lado, están
sincronizados por un reloj central. Este reloj emite pulsos a intervalos
regulares, y todas las operaciones en el circuito se sincronizan con estos
pulsos. Cada operación en el circuito ocurre en un ciclo de reloj
específico, lo que garantiza que todas las partes del circuito estén
coordinadas y sincronizadas.
b. Latch: Es un tipo de circuito secuencial que se utiliza en
electrónica digital para almacenar información. Funciona como un tipo
de memoria temporal que puede retener un valor de salida incluso
después de que las entradas hayan cambiado. Hay varios tipos de
latches, pero uno de los más comunes es el latch SR (Set-Reset), que
tiene dos entradas principales: Set (S) y Reset (R). Dependiendo del
estado de estas entradas y de la arquitectura específica del latch, el
latch puede mantener su estado actual (mantener), cambiar al estado
"1" (set) o cambiar al estado "0" (reset).
c. Flip Flop: Es un tipo de circuito secuencial utilizado en electrónica
digital para almacenar información de forma temporal. Se utilizan en
una amplia gama de aplicaciones, incluidos registros de desplazamiento,
contadores, memoria de acceso aleatorio (RAM), y en la implementación
de lógica secuencial en general. Existen varios tipos de flip-flops, entre
los más comunes se encuentran:
Flip-flop D: Tiene una entrada de datos (D), una entrada de reloj (CLK)
y una salida (Q). El estado de la salida Q cambia a la entrada de datos D
en el flanco del reloj (ascendente o descendente) según la configuración
del flip-flop (flanco ascendente o descendente).
Flip-flop JK: Similar al flip-flop D, pero con dos entradas adicionales: J
(set) y K (reset). Permite una mayor flexibilidad en las operaciones de
set y reset en comparación con el flip-flop D.
Flip-flop T: También conocido como flip-flop basculante, tiene una
entrada de datos (T), una entrada de reloj (CLK) y una salida (Q).
Cambia su estado de salida en cada flanco del reloj si la entrada T está
en un estado lógico alto (1); si está en un estado lógico bajo (0), no
ocurre ningún cambio.
d. Registro: Es un componente que se utiliza para almacenar una
secuencia de datos. Está compuesto por un conjunto de celdas de
almacenamiento, cada una capaz de retener un único bit de
información. Hay varios tipos de registros, cada uno diseñado para una
función específica:
Registro de Desplazamiento: Es un tipo de registro que permite mover
los bits almacenados hacia la izquierda o hacia la derecha en paralelo.
Se utiliza comúnmente en aplicaciones donde se requiere desplazar
datos, como en la implementación de desplazamientos de bits, la
rotación de datos, y en la realización de operaciones de serialización y
deserialización.
Registro de Desplazamiento de Desplazamiento Paralelo-Serie (SISO,
SIPO, PISO, PIPO): Estos son registros de desplazamiento
especializados que permiten la entrada y salida de datos tanto en forma
paralela como en serie.
Registro de Desplazamiento Universal: Este tipo de registro de
desplazamiento permite una mayor flexibilidad al realizar operaciones
de desplazamiento en paralelo, en serie, hacia la izquierda, hacia la
derecha, así como operaciones de carga y almacenamiento de datos.
Registro de Transferencia Paralela-Serie (PISO): Similar al registro de
desplazamiento, el registro de transferencia paralela-serie convierte los
datos de forma paralela a serie para su transmisión.
Registro de Carga Paralela (PLL): Este tipo de registro permite la carga
simultánea de datos en todas sus celdas de almacenamiento desde
líneas de entrada paralelas.
Registro de Desplazamiento Bidireccional: Permite el desplazamiento de
datos en ambas direcciones, hacia la izquierda y hacia la derecha.
e. Contador: Es un dispositivo digital que cuenta secuencialmente
eventos o pulsos de entrada. Esencialmente, es un tipo de registro que
se incrementa o decrementa en un valor fijo cada vez que recibe un
pulso de reloj. Hay varios tipos de contadores, cada uno con su propio
diseño y aplicación:
Contador Asíncrono (o contador de pulso): En este tipo de contador, la
entrada de reloj de cada etapa del contador está conectada a la salida
de la etapa anterior, lo que hace que las etapas se activen
secuencialmente. Pueden sufrir problemas de propagación de señal y
tener una velocidad limitada.
Contador Síncrono: Todas las etapas del contador se activan
simultáneamente por un pulso de reloj común. Esto elimina los
problemas de propagación de señal y permite una operación más rápida
y predecible. Los contadores síncronos son más complejos de
implementar que los asíncronos, pero ofrecen un mejor rendimiento en
términos de velocidad y precisión.
Contador BCD (Decimal Codificado en Binario): En este tipo de contador
cada etapa del contador representa un dígito decimal en binario. Se
utiliza comúnmente en aplicaciones donde se requiere contar en formato
decimal, como en relojes digitales y displays de siete segmentos.
Contador ascendente y descendente: Los contadores pueden ser
diseñados para contar hacia arriba (incrementando su valor) o hacia
abajo (decrementando su valor) dependiendo de la aplicación específica.
Contador de Anillo: Este tipo de contador se basa en un registro de
desplazamiento circular, donde los datos se desplazan de una etapa a la
siguiente en un bucle cerrado. Se utilizan en aplicaciones donde se
necesita un conteo continuo sin un límite predefinido.
2. Descripción de hardware en VHDL
En el siguiente enlace encontrará las plantillas en VHDL requeridas para
las diferentes descripciones de hardware, se utilizará los archivos:
• 0 Estructura_General
• 1 archivo Simulación
• 2 Reloj para simulación
• Flip-Flop Reset y Enable
• Flip-Flop Reset
Enlace:
https://drive.google.com/open?id=1JjCgZSw1KY5fq99l8rOe9oNw4uPe8
3Ii
2.1 Diseño de Flip flop:
1. Diseñe un flip-flop tipo D, con reset activo en alto y enable activo en
alto. Siga la siguiente orientación y complete el archivo de simulación:
a. Un diagrama de bloques y colocar la tabla de verdad.
D Q Q(t+1)
0 0 0
0 1 0
1 0 1
1 1 1
b. Una impresión de pantalla con la descripción en VHDL
EVIDENCIA DESCRIPCION
Para el archivo design.vhd
se realiza de la siguiente
manera:
De las líneas 1 al 6 se
escribe los datos del
alumno.
De las líneas 8 al 10 se
cargan las librerías.
Línea 12 se inicia la
entidad.
Líneas 13 al 20 se declaran
entradas (CLK, RST, D,
ENB) y salida (Q).
Línea 22 se inicia
descripción de la
arquitectura
Línea 23 se describe la
arquitectura del programa
el cual describe en manera
de condicional el
funcionamiento de un flip
flop D
Para el archivo
testbench.vhd se realiza de
la siguiente manera:
De las líneas 1 al 6 se
escribe los datos del
alumno.
De las líneas 7 al 9 se
cargan las librerías.
Línea 11 se crea la entidad
Simulacion para vincular
las señales de design con
el archivo de simulación.
Linea 15 se regula el
periodo a 10 ns.
Líneas 17 al 21 se crea las
señales de entrada
(CLK_tb, RST_tb, D_tb,
ENB_tb)y de salida (Q_tb)
de la simulación
Líneas 23 al 31 se trae los
puertos declarados en
design.
Líneas 32 al 40 se ingresan
señales de ingreso traída
de design a las señales de
testbench
Lineas 42 al 49 se regula el
reloj del flip flop D
De las líneas 52 al 80 se
considera los diferentes
casos del programa en el
flip flop D dando como
resultado la salida acorde a
lo descrito en la tabla de
verdad
Una impresión de pantalla con la simulación generada en EDA
PLAYGROUND
SIMULACION
Cuando la señal de reset (RST) está en alto ('1'), la salida Q se
establece en bajo ('0') independientemente del valor de la entrada D.
Cuando la señal de reset está baja y el habilitador (ENB) está activado
DESCRIPCION
('1'), la salida Q sigue el valor de la entrada D en cada flanco de subida
del reloj (CLK).
Si el habilitador no está activado ('0'), el flip-flop D permanece en su
estado actual, sin importar el valor de la entrada D, en cada flanco de
subida del reloj.
2.2 Diseño de un registro.
• Revisar el siguiente video: Fajardo, C. (2019, abril 15), Registro en
VHDL en EDA Playground [Archivo de video], Recuperado de:
https://youtu.be/tGHL5FyOl1E
Se ha seleccionado estudiante 4: 8 bits
a. Un diagrama de bloques, colocar la tabla de verdad.
CLK RST ENTRADA SALIDA
0 1 XXXXXXXX 00000000
0 0 XXXXXXXX 00000000
1 0 XXXXXXXX 00000000
0 0 00000000 00000000
1 0 00000000 00000000
0 0 01010101 00000000
1 0 01010101 01010101
0 0 11111111 01010101
1 0 11111111 11111111
0 0 10101010 11111111
1 0 10101010 10101010
0 0 00000000 10101010
1 0 00000000 00000000
0 0 00000000 00000000
1 0 00000000 00000000
b. Una impresión de pantalla con la descripción en VHDL
EVIDENCIA DESCRIPCION
Para el archivo design.vhd
se realiza de la siguiente
manera:
De las líneas 1 al 6 se
escribe los datos del
alumno.
De las líneas 8 al 10 se
cargan las librerías.
Línea 13 se inicia la entidad.
Líneas 14 al 18 se declaran
entradas (CLK, RST,
ENTRADA) y salida
(SALIDA).
Línea 21 se inicia
descripción de la
arquitectura
Linea 23 se ingresa las
señales a tomar de 8 bits
Línea 29 se describe la
arquitectura del programa el
cual describe en manera de
condicional el
funcionamiento de un
registro de almacenamiento
Para el archivo
testbench.vhd se realiza de
la siguiente manera:
De las líneas 1 al 6 se
escribe los datos del
alumno.
De las líneas 8 al 9 se
cargan las librerías.
Línea 11 se crea la entidad
Simulacion para vincular las
señales de design con el
archivo de simulación.
Líneas 17 al 23 se trae los
puertos declarados en
design.
Líneas 25 al 32 se crean las
señales de entrada (clk, rst,
In_1) y salida (Out_1) a
utilizar en este test.
Linea 36 se crea la
constante Periodo para el
reloj.
Líneas 38 al 45 se ingresan
señales de ingreso traída de
design a las señales de
testbench
Lineas 47 al 54 se crean los
estimulos del reloj con clk
arriba y abajo con Periodo/2
Lineas 58 al 64 se crean los
estimulos del reset arriba y
abajo
Lineas 65 al 77 se crean los
estimulos de la entrada con
una separación de 100 ns
Lineas 78 al 82 se crean los
estimulos del reset arriba y
abajo
Lineas 84 al 88 fin del
programa
Una impresión de pantalla con la simulación generada en EDA
PLAYGROUND.
SIMULACION
El código VHDL define un registro de almacenamiento de 8 bits con un
reloj (CLK), una señal de reset (RST), una entrada de 8 bits (ENTRADA)
y una salida de 8 bits (SALIDA). El registro almacena el valor de la
entrada cuando se activa el flanco de subida del reloj (CLK). Si la señal
DESCRIPCION
de reset (RST) está activa (en este caso, alta), el registro se restablece
a cero, independientemente del reloj. En la simulación, se aplican
patrones de entrada específicos (In_1) al registro y se observa la salida
correspondiente (Out_1). Se aplican varios patrones de entrada para
probar diferentes casos, como entrada aleatoria, todos los bits a uno,
todos los bits a cero, etc.
2.3 Contador ascendente
Diseñe un contador ascendente módulo N.
Se escoge Estudiante 4 con un Modulo N=40
a. Un diagrama de bloques diseñado por el estudiante
b. Una impresión de pantalla con la descripción en VHDL
EVIDENCIA DESCRIPCION
Para el archivo design.vhd
se realiza de la siguiente
manera:
De las líneas 1 al 6 se
escribe los datos del
alumno.
De las líneas 8 al 10 se
cargan las librerías.
Línea 13 se inicia la entidad.
Líneas 14 al 17 se declaran
entradas (CLK, RST) y
salida (SALIDA).
Línea 20 se inicia
descripción de la
arquitectura
Linea 24 se ingresa las
señales a tomar de 8 bits
Línea 28 se describe la
arquitectura del programa el
cual describe en manera de
condicional el
funcionamiento de contador
ascendente hasta que la
salida sea igual a 40 (28 en
hexadecimal)
Para el archivo
testbench.vhd se realiza de
la siguiente manera:
De las líneas 1 al 6 se
escribe los datos del
alumno.
De las líneas 8 al 9 se
cargan las librerías.
Línea 11 se crea la entidad
Simulacion para vincular las
señales de design con el
archivo de simulación.
Líneas 17 al 23 se trae los
puertos declarados en
design.
Líneas 25 al 32 se crean las
señales de entrada (clk, rst,
In_1) y salida (Out_1) a
utilizar en este test.
Linea 36 se crea la
constante Periodo para el
reloj.
Líneas 38 al 45 se ingresan
señales de ingreso traída de
design a las señales de
testbench
Lineas 47 al 54 se crean los
estimulos del reloj con clk
arriba y abajo con Periodo/2
Lineas 58 al 64 se crean los
estimulos del reset arriba y
abajo
Lineas 66 al 70 fin del
programa
c. Una impresión de pantalla con la simulación, en el cual se
evidencie el correcto funcionamiento del diseño.
SIMULACION
El código VHDL define un registro de almacenamiento de 8 bits con un
reloj (CLK), una señal de reset (RST), una entrada de 8 bits (ENTRADA)
y una salida de 8 bits (SALIDA). El registro almacena el valor de la
DESCRIPCION
entrada cuando se activa el flanco de subida del reloj (CLK). Si la señal
de reset (RST) está activa (en este caso, alta), el registro se restablece
a cero, independientemente del reloj. En la simulación, se observa la
salida correspondiente (Out_1) sigue contando hasta que llega al
número 28 en hexadecimal y retorna a 0.
2.4 Contador descendente
Diseñe un contador descendente
Se escoge Estudiante 4 con un Modulo M=40
a. Un diagrama de bloques diseñado por el estudiante.
b. Una impresión de pantalla con la descripción en VHDL
EVIDENCIA DESCRIPCION
Para el archivo design.vhd
se realiza de la siguiente
manera:
De las líneas 1 al 6 se
escribe los datos del
alumno.
De las líneas 8 al 10 se
cargan las librerías.
Línea 13 se inicia la entidad.
Líneas 14 al 17 se declaran
entradas (CLK, RST) y
salida (SALIDA).
Línea 20 se inicia
descripción de la
arquitectura
Línea 24 se ingresa las
señales a tomar de 8 bits
Línea 28 se describe la
arquitectura del programa el
cual describe en manera de
condicional el
funcionamiento de contador
descendente hasta que la
salida sea igual a 0 (0 en
hexadecimal), iniciando
desde 40 (28 en
hexadecimal)
Para el archivo
testbench.vhd se realiza de
la siguiente manera:
De las líneas 1 al 6 se
escribe los datos del
alumno.
De las líneas 8 al 9 se
cargan las librerías.
Línea 11 se crea la entidad
Simulacion para vincular las
señales de design con el
archivo de simulación.
Líneas 17 al 23 se trae los
puertos declarados en
design.
Líneas 25 al 32 se crean las
señales de entrada (clk, rst,
In_1) y salida (Out_1) a
utilizar en este test.
Linea 36 se crea la
constante Periodo para el
reloj.
Líneas 38 al 45 se ingresan
señales de ingreso traída de
design a las señales de
testbench
Lineas 47 al 54 se crean los
estimulos del reloj con clk
arriba y abajo con Periodo/2
Lineas 58 al 64 se crean los
estimulos del reset arriba y
abajo
Lineas 66 al 70 fin del
programa
c. Una impresión de pantalla con la simulación, en el cual se evidencie el
correcto funcionamiento del diseño.
SIMULACION
El código VHDL define un registro de almacenamiento de 8 bits con un
reloj (CLK), una señal de reset (RST), una entrada de 8 bits (ENTRADA)
y una salida de 8 bits (SALIDA). El registro almacena el valor de la
DESCRIPCION
entrada cuando se activa el flanco de subida del reloj (CLK). Si la señal
de reset (RST) está activa (en este caso, alta), el registro se restablece
a cero, independientemente del reloj. En la simulación, se observa la
salida correspondiente (Out_1) sigue contando descendentemente hasta
que llega al número 0 en hexadecimal y retorna a 28 en hexadecimal o
40.
2.5 Contador ascendente y descendente
Diseñe un contador ascendente/descendente
Se escoge Estudiante 4 con un Modulo M=40
a. Un diagrama de bloques diseñado por el estudiante.
b. Una impresión de pantalla con la descripción en VHDL.
EVIDENCIA DESCRIPCION
Para el archivo design.vhd
se realiza de la siguiente
manera:
De las líneas 1 al 6 se
escribe los datos del
alumno.
De las líneas 8 al 11 se
cargan las librerías.
Línea 13 se inicia la entidad.
Líneas 14 al 19 se declaran
entradas (CLK, RST,
DIRECTION) y salida
(SALIDA).
Línea 22 se inicia
descripción de la
arquitectura
Línea 24 se ingresa las
señales a tomar de 8 bits
Línea 25 se describe la
arquitectura del programa el
cual describe en manera de
condicional el
funcionamiento de contador
descendente y ascendente
dependiendo de que bit
tiene DIRECTION si 1 o 0
Para el archivo
testbench.vhd se realiza de
la siguiente manera:
De las líneas 1 al 6 se
escribe los datos del
alumno.
De las líneas 8 al 9 se
cargan las librerías.
Línea 11 se crea la entidad
Simulacion para vincular las
señales de design con el
archivo de simulación.
Líneas 17 al 23 se trae los
puertos declarados en
design.
Líneas 25 al 32 se crean las
señales de entrada (clk, rst,
direction) y salida (Out_1) a
utilizar en este test.
Linea 36 se crea la
constante Periodo para el
reloj.
Líneas 38 al 45 se ingresan
señales de ingreso traída de
design a las señales de
testbench
Lineas 47 al 54 se crean los
estimulos del reloj con clk
arriba y abajo con Periodo/2
Lineas 58 al 64 se crean los
estimulos del reset arriba y
abajo
Lineas 65 al 70 se realiza
los cambios de estado de la
variable direction de 0 a 1
Lineas 71 al 76 fin del
programa
c. Una impresión de pantalla con la simulación, en el cual se evidencie el
correcto funcionamiento del diseño.
SIMULACION
El diseño de un contador ascendente y descendente implementado en
VHDL. Toma una señal de reloj (CLK), una señal de reinicio (RST), y una
señal de dirección (DIRECTION) como entradas. La salida del contador
se proporciona en el vector SALIDA, que es un vector de 8 bits.
Se implementa en un proceso sincronizado con el flanco de subida del
DESCRIPCION
reloj (CLK). Cuando el reinicio (RST) está activo, el contador se inicializa
en el valor hexadecimal 28 (x"28"). Si el reinicio no está activo, el
contador incrementa o decrementa según la dirección especificada por la
señal DIRECTION. Cuando el contador llega al valor máximo (FF en
hexadecimal) y la dirección es ascendente, se mantiene en ese valor. De
manera similar, cuando el contador alcanza el valor mínimo (00 en
hexadecimal) y la dirección es descendente, se mantiene en ese valor.
CONCLUSIONES
Los contadores son componentes esenciales en la electrónica digital, ya
que proporcionan una forma de contar eventos y generar secuencias de
números. Tanto los contadores ascendentes como los descendentes son
útiles en diversas aplicaciones, desde temporizadores hasta sistemas de
control.
Los contadores ascendentes incrementan su valor con cada pulso de
reloj, mientras que los contadores descendentes disminuyen su valor.
Esto se logra mediante el uso de circuitos secuenciales, como registros
y flip-flops, que almacenan y manipulan los estados internos del
contador.
Implementación con Registros y Flip-Flops D: En la implementación de
contadores, los registros y flip-flops D son componentes fundamentales.
Los registros almacenan datos en forma paralela y se utilizan para
cargar los valores iniciales en el contador. Los flip-flops D son utilizados
como elementos de memoria para mantener el estado actual del
contador y se sincronizan con el pulso de reloj.
REFERENCIAS BIBLIOGRAFICAS
• Tocci. R. (2017). Sistemas Digitales: Principios y
Aplicaciones.(capítulo 4, pp 202-286) https://ebooks7-24-
com.bibliotecavirtual.unad.edu.co/?il=7393&pg=1
• Maxinez, D. (2015). Programación de sistemas digitales con VHDL.
(capítulo 3, pp.49-67). https://elibro-
net.bibliotecavirtual.unad.edu.co/es/ereader/unad/39460?page=1
• Rodríguez, O. (2018). Sistemas embebidos con VHDL. Editorial
Parmenia, Universidad La Salle México. (Capítulo 4, pp.127-148).
https://elibro-
net.bibliotecavirtual.unad.edu.co/es/ereader/unad/183494?page=
129
• Maxinez, D. (2015). Programación de sistemas digitales con VHDL.
(Capítulo 2, y 9, pp.27-36, 209-216). https://elibro-
net.bibliotecavirtual.unad.edu.co/es/ereader/unad/39460?page=1