Proyecto Final
Rincón Ortega Jorge Leonardo
e-mail: al2243040479@[Link]
Sánchez Peregrina Victor Hugo
e-mail: al2243042866@[Link]
Zárate Hernández Tristán
e-mail: al2243042786@[Link]
I. Introducción Estado actual: Los flip-flops, que están inter-
conectados, mantienen el estado actual del
En el diseño de sistemas digitales complejos,
sistema.
la implementación de un sistema de control mul-
Lógica de transición: Una red de puertas
tiestado es crucial para gestionar de manera efi-
lógicas (como AND, OR, NOT) determina
ciente las operaciones de múltiples unidades de
cuál será el siguiente estado basándose en el
procesamiento. Este proyecto se enfoca en crear
estado actual y en las entradas.
una solución que garantice la sincronización y
Cambio de estado: Con el siguiente pulso de
coordinación entre estas unidades, permitiendo
reloj, los flip-flops se actualizan y el sistema
que trabajen de forma armónica y sin conflictos.
cambia al nuevo estado.
Para lograrlo, se diseñará un controlador de Reinicio: Es un mecanismo que se utiliza
estado adaptable utilizando VHDL en el software para restaurar el sistema a un estado ini-
Quartus II para posteriormente implementarlo en cial predefinido o a un estado de operación
una tarjeta Altera DE2. Este controlador estará seguro después de que ocurre un evento no
dotado de la capacidad de manejar múltiples esta- deseado.
dos y transiciones lógicas. Además, se integrarán
En este tipo de sistemas para garantizar la sincro-
mecanismos de reinicio y restablecimiento para
nización y coordinación entre todas las unidades
garantizar la fiabilidad del sistema frente a fallos
del circuito, se utilizan dos estrategias principales:
o condiciones inesperadas, lo que permite una
el uso de una señal de reloj (clock) global y el
rápida recuperación y asegura la integridad de las
diseño de una lógica de control de estado.
operaciones.
Señal de reloj: La señal de reloj es una señal
II. Marco Teórico periódica, a menudo un pulso cuadrado, que
Un sistema de control es un circuito digital se distribuye a todos los flip-flops en el siste-
diseñado para cambiar entre múltiples estados ma. Su función es actuar como un marcador
lógicos de manera secuencial. Los flip-flops son los de tiempo universal. Todos los flip-flops en el
componentes clave de estos sistemas, ya que son sistema cambian de estado solo en los flancos
capaces de almacenar un solo bit de información, (ascendente o descendente) de esta señal. Es-
manteniendo un estado hasta que se les indica to asegura que todos los elementos biestables
que cambien. Esto los hace ideales para ser la cambien de estado al mismo tiempo, lo que
"memoria"de los sistemas secuenciales. sincroniza sus operaciones.
Lógica de control de estado: La lógica de
Funcionamiento: control de estado es la parte del circuito
Entrada: El sistema recibe una señal de en- que determina el siguiente estado de los flip-
trada que actúa como la .orden"para cambiar flops basándose en su estado actual y en las
al siguiente estado. entradas del sistema. Esto se logra mediante
Proyecto Final
el uso de compuertas lógicas (AND, OR, de los ocho bits de la salida, correspondiendo
NOT, etc.). a la estación actual.
Display de 7 Segmentos: Se definieron
III. Objetivos de la practica constantes para los códigos de 7 segmen-
Diseñar un sistema de control multiestado tos de cada dígito (0-7). La salida sali-
Garantizar la sincronización y coordinación da_bcd_7seg se asigna combinacionalmente
entre múltiples unidades al código correspondiente al valor actual del
Crear un controlador de estado adaptable contador_reg.
Integrar funcionalidad de reinicio y restable-
IV-B. Metodología de Diseño proyecto 2
cimiento
Optimizar la eficiencia de recursos y el ren- La solución se estructura en tres componentes
dimiento del circuito principales: un divisor de frecuencia, una caja de
Aplicar conocimientos de programación en estados (contador) y una ruta de datos (decodifi-
VHDL cador combinacional).
Documentar el diseño y comunicar los resul- IV-B1. Componentes Lógicos:
tados Divisor de Frecuencia: Un proceso sín-
crono utiliza un contador (clk_count) para
IV. Diseño y Construcción dividir la frecuencia del reloj de entrada
IV-A. Metodología de Diseño (clk_in). Se ha configurado para que, con
El diseño se basa en una arquitectura de conta- una señal de 50 MHz, genere un pulso de
dor síncrono. La posición del tren se modela como reloj lento (slow_clk) de aproximadamente
el estado de un registro de 3 bits, lo que permite 1 Hz. Este pulso se utiliza para controlar
representar los valores de 0 a 7 (S0 a S7). el avance de las secuencias. El valor de la
IV-A1. Lógica del Circuito: constante clk_div es 25,000,000, lo que ge-
nera un pulso de slow_clk cada 0.5 segundos,
Registro de Estado: Se utiliza una señal
resultando en una frecuencia de 1 Hz.
interna contador_reg de 3 bits, de tipo un-
Caja de Estados: Se utiliza un proceso
signed, para almacenar la estación actual.
síncrono, sensible al slow_clk, para imple-
Control Secuencial: Un proceso síncrono,
mentar un contador (contador). Este registro
sensible al flanco de subida del reloj (clk) y
de estado avanza en cada flanco de subida del
a un reinicio asíncrono activo en bajo (re-
reloj lento. Su valor máximo de conteo está
set_n), actualiza el valor del contador_reg.
condicionado por la entrada selector. Para
Control de Dirección: La entrada S deter-
los casos "00 "01", el contador cicla de 0 a
2
mina la operación:
3, y para los casos "10 "11", cicla de 0 a 7.
2
• Si S=0: el contador se incrementa. Se Ruta de Datos: Un proceso combinacional
incluye una condición para evitar que el se encarga de decodificar el estado actual del
contador supere el valor 7, mantenién- contador y la entrada selector para activar
dolo en la estación S7 si ya ha llegado. los segmentos correctos en los displays. Se
• Si S=1: el contador se decrementa. Se utilizan constantes predefinidas para los có-
incluye una condición para evitar que digos de 7 segmentos, tanto para segmentos
el contador descienda por debajo de 0, individuales (SEG_A, SEG_B, etc.) como
manteniéndolo en la estación S0 si ya para combinaciones específicas (por ejemplo,
ha llegado. SEG_B_AND_C que representa la activa-
IV-A2. Unidades de Salida: ción de los segmentos B y C).
Indicador LED: Se implementa una
asignación condicional para la salida
leds_individuales. El valor del contador_reg
se decodifica para encender únicamente uno
2
Proyecto Final
V. Pruebas Experimentales VII. Anexos
V-A. Ejercicio 1 Codigo ejercicio 1.
library ieee ;
use ieee . std_logic_1164 . all ;
use ieee . numeric_std . all ;
entity CET is
port (
clk : in std_logic ;
reset_n : in std_logic ;
S : in std_logic ;
salida_bcd_7seg : out
std_logic_vector (6 downto 0) ;
leds_i ndivid uales : out
std_logic_vector (7 downto 0)
);
end entity CET ;
architecture contador of CET is
signal contador_reg : unsigned (2
downto 0) := ( others = > ’0 ’) ; --
Figura 1: Pruebas Experimentales del Ejercicio 1 Contador de 3 bits (0 a 7)
-- abcdefg
V-B. Ejercicio 2 constant SEGMENTOS_0 :
Para este ejercicio no se tomaron fotografías std_logic_vector (6 downto 0) :=
como evidencia del trabajo realizado, sin embar- " 0000001 " ; -- 0
constant SEGMENTOS_1 :
go, el profesor realizo las pruebas pertinentes a std_logic_vector (6 downto 0) :=
la hora de clase, demostrando que funcionaba " 1001111 " ; -- 1
correctamente. constant SEGMENTOS_2 :
std_logic_vector (6 downto 0) :=
VI. Conclusiones " 0010010 " ; -- 2
El desarrollo del proyecto permitió aplicar de constant SEGMENTOS_3 :
std_logic_vector (6 downto 0) :=
forma práctica los conocimientos adquiridos en
" 0000110 " ; -- 3
el curso de Diseño Lógico, desde la concepción constant SEGMENTOS_4 :
de un sistema de control multiestado hasta su std_logic_vector (6 downto 0) :=
implementación física. Se logró diseñar y progra- " 1001100 " ; -- 4
mar circuitos secuenciales capaces de coordinar constant SEGMENTOS_5 :
distintos elementos, integrando funcionalidades std_logic_vector (6 downto 0) :=
como control de dirección, visualización en LEDs " 0100100 " ; -- 5
constant SEGMENTOS_6 :
y displays, y un sistema de reinicio. Durante las std_logic_vector (6 downto 0) :=
pruebas, el sistema mostró un funcionamiento " 0100000 " ; -- 6
estable y coherente con los objetivos planteados, constant SEGMENTOS_7 :
cumpliendo las condiciones de avance y retroceso, std_logic_vector (6 downto 0) :=
así como la correcta ejecución de secuencias auto- " 0001110 " ; -- 7
matizadas. En general, el trabajo permitió refor-
begin
zar habilidades en el uso de VHDL, optimización
de recursos y depuración de errores, evidenciando -- Proceso principal del contador
la importancia de la planificación y la validación process ( clk , reset_n )
experimental en proyectos de electrónica digital. begin
3
Proyecto Final
if reset_n = ’0 ’ then
contador_reg <= ( others = >
’0 ’) ;
elsif rising_edge ( clk ) then --
Flanco de subida del reloj
if S = ’0 ’ then
if contador_reg < 7 then
contador_reg <=
contador_reg + 1;
end if ;
else
if contador_reg > 0 then
contador_reg <=
contador_reg - 1;
end if ;
end if ;
end if ;
end process ;
salida_bcd_7seg <= SEGMENTOS_0
when " 000 " ,
SEGMENTOS_1 when " 001 " ,
SEGMENTOS_2 when " 010 " ,
SEGMENTOS_3 when " 011 " ,
SEGMENTOS_4 when " 100 " ,
SEGMENTOS_5 when " 101 " ,
SEGMENTOS_6 when " 110 " ,
SEGMENTOS_7 when " 111 " ,
( others = > ’1 ’) when others ;
leds_individ uales <= " 00000001 "
when " 000 " , -- LED 0 encendido
" 00000010 " when " 001 " , -- LED 1
encendido
" 00000100 " when " 010 " , -- LED 2
encendido
" 00001000 " when " 011 " , -- LED 3
encendido
" 00010000 " when " 100 " , -- LED 4
encendido
" 00100000 " when " 101 " , -- LED 5
encendido
" 01000000 " when " 110 " , -- LED 6
encendido
" 10000000 " when " 111 " , -- LED 7
encendido
( others = > ’0 ’) when others ; --
Todos apagados por defecto
end architecture contador ;