Está en la página 1de 15

Unidad IV – Diseño de Circuitos Secuenciales – Parte 4

Clase #18 – Problemas de Aplicación:


Diseño de Unidades de Control

Lógica Digital
Prof. Ricardo Villegas
Contenido
 Contexto de las aplicaciones con unidades de control.
 Diseño de unidades de control en problemas de
aplicación.
 Elementos de VHDL para descripción de circuitos
secuenciales:
• Procesos
• Atributos
Contexto de las Aplicaciones con Unidades de Control

Sensores Magnitudes Conversor Magnitudes


(Transductores) Analógicas A/D Digitales Entradas

Reloj
ENTORNO U. C.

Magnitudes Magnitudes Salidas


Conversor
Actuadores D/A
Analógicas Digitales

Observación
En los problemas de aplicación van a aparecer funciones lógicas de varias variables (usualmente más
de 3) por lo que la implementación de dichas funciones se obtiene:
• Simplificando con el método de mapa de Karnaugh con variables internas (VIMK).
• Con MUX o DEMUX.
Diseño de Unidades de Control - Problema #1
Diseñar la unidad de control asociada al siguiente sistema de tanques:
V1

start
N1 N2
Tanque2
Tanque1
A

N3 V2
B

Descripción:
• El sistema se encuentra detenido y el proceso de llenado/vaciado se inicia mediante la señal start en
activo alto, proveniente de un botón.
• Abrir la válvula V1 mientras el nivel del Tanque1 es menor que el indicado por el sensor de nivel N1.
• Cerrar V1 y activar la bomba B para llenar Tanque2 mientras su nivel sea menor que el nivel del
sensor de nivel N2.
• Activar el agitador A y descargar el Tanque2 a través de la válvula V2, mientras el nivel del Tanque2
sea superior al indicado por el sensor de nivel N3.
• Volver a la condición inicial de parada.
Análisis:
• El sistema es cíclico y cada estado representa una situación de llenado o vaciado correspondiente con los
requerimientos descritos.
• Existen 4 estados bien definidos en el enunciado:
00 – estado inicial, detenido en espera de la señal start.
01 – llenado del Tanque1.
10 – vaciado del Tanque1 / Llenado del Tanque2.
11 – vaciado del Tanque2.
• La evolución de los estados está asociada con valores provenientes de dispositivos físicos de entrada (un botón y
3 sensores de nivel).
• El botón genera la señal start en activo alto cuando es presionado para comenzar el ciclo de llenado de los
tanques.
• Todos los sensores de nivel son similares y generan un valor de 0 cuando el nivel del líquido está por debajo del
sensor; en caso contrario, generan un valor de 1.
• Todos los dispositivos de salida (válvulas, bomba y agitador) se activan con un valor de 1.

Entradas: start,N1,N2,N3 (+reloj) start = 0


Salidas: V1,V2,B,A 00
Estados: 4 estados → 2 flip-flops (Q1Q0)
N3 = 0 start = 1
N3= 1
start V1
N1 11 01
V2
N2 U.C. B A,V2 V1
N3
clk A
N1 = 0
N2 = 1 N1 = 1
10
• Todas las salidas son de tipo Moore.
• Las variables de estado Q1 y Q0 están representadas B Diagrama de
por dos f-f D.
N2 = 0 Estados
Tabla de Flujos

start N1 N2 N3 Q1 Q0 Q1+ Q0+ D1 D0 V1 V2 B A • Por cada estado actual existen dos


transiciones posibles que dependen de una sola
0 00 0 0 de las variables de entrada; los valores de las
1
φ φ φ 00
01 0 1
0 0 0 0 restantes entradas son irrelevantes para las
transiciones de ese estado en particular.
0 01 0 1 • Los valores de las entradas de excitación se
φ 1
φ φ 01
10 1 0
1 0 0 0 obtienen de las tablas de transición del f.f. D al
comparar cada Qi con el respectivo Qi+
0 10 1 0 • Los mapas de Karnaugh para las entradas de
φ φ 1
φ 10
11 1 1
0 0 1 0 excitación fueron expresados en función de las
variables de estados, por lo que las variables
0 00 0 0 asociadas con las entradas aparecen como
φ φ φ 1
11
11 1 1
0 1 0 1 variables internas.
• D1 se obtiene con el método de simplificación
VIMK, pero el mapa de D0 es completamente
Entradas de Excitación heterogéneo (no hay casillas con términos
comunes) por lo que se implementa con MUX
D1: D0: 4:1, tomando Q1Q0 como variables de
Q0 Q0
0 1 0 1 selección.
Q1 Q1
0 0 N1 0 start N1 • Todas las salidas son Moore y activas por nivel
alto; en sus expresiones algebraicas solo
1 1 1
N3 N2 N3 aparecen variables de estado.

D1 = N1 ⋅ Q1 ⋅ Q 0 + N 3 ⋅ Q1 + Q1 ⋅ Q 0 D0 con MUX 4 : 1, Q1Q 0 sel.

Salidas V1 = Q1 ⋅ Q 0
V2 = Q1 ⋅ Q 0
B = Q1 ⋅ Q0
A = Q1 ⋅ Q 0
Circuito Lógico

D
D
Q
A
1 V2
Q

B
V1

D
start D
Q
I0 A B
N1 I1 MUX
Y
0
N2 4:1
Q
I2
N3 I3
clk
E

• En el diseño se verifica que en el Codificador de Entradas aparecen las entradas externas start, N1, N2 y N3.
• Los flip-flops de la memoria están identificados con los números 1 y 0, significando que sus salidas representan a las variables de
estado Q1 y Q0, respectivamente; la señal de reloj es común para ambos.
• Las entradas del Decodificador de Salidas son las variables de estado debido a que todas las salidas son de tipo Moore; para ahorrar
un par de compuertas se aprovechan términos comunes que aparecen tanto en el Codificador de Entradas como en el Decodificador de
Salidas.
Diseño de Unidades de Control - Problema #2
Diseñar una unidad de control para una máquina expendedora de bebidas de acuerdo
con el siguiente diagrama y especificaciones:

Especificaciones:
• El dinero necesario para adquirir la bebida es introducido
U.C. a través de un dispositivo lector, cuya señal din se activa
b1 b2 b3 Drinks por nivel alto cuando el dinero fue ingresado.
• La máquina permite seleccionar uno de 3 sabores
posibles de bebida mediante botones, asociados con las
respectivas señales b1, b2 y b3, activas por nivel alto.
• Tres sensores activos por nivel alto, d1, d2 y d3, realizan un
d1 d2 d3
chequeo de existencia del sabor antes de suministrar la
s1 s2 s3 bebida. Si el sabor seleccionado está disponible, el
respectivo sensor se activa y se procede a servir la bebida;
en caso contrario, el sensor no se activa.
din • Si no hay existencia de la bebida seleccionada, el dinero
se devuelve activando por nivel alto la señal dev.
• La bebida se sirve activando dispositivos dispensadores
dev específicos para cada sabor mediante las señales s1, s2 y s3,
independientemente de si hay un vaso o no en el
compartimiento; los dispensadores son activo alto.
Análisis:
• Todas las señales asociadas con los dispositivos de entras y salida son activas por nivel alto.
• Las entradas provienen del dispositivo lector (din), los botones de selección de sabor (b1, b2, b3) y los dispositivos de chequeo de
existencia de bebida (d1, d2, d3).
• Las salidas están asociadas con la devolución del dinero (dev) y los dispositivos dispensadores de la bebida seleccionada (s1, s2, s3).
Para este problema en particular, determinar si las salidas son de tipo Moore o Mealy va a incidir directamente en el número de
estados que tendrá el sistema.
• Existen varios escenarios para determinar los estados de la máquina; el escogido intenta mantener dentro de un número razonable
y manejable la cantidad de estados, tomando en cuenta que mientras existan más estados se requieren más flip-flops en la memoria
y por lo tanto aumenta también la complejidad y costo del sistema.
• Se definen 6 estados para representar la dinámica del sistema:
000 – Detenido; en espera por ingreso del dinero.
001 – En espera por selección del sabor; transiciones establecidas con prioridad para activaciones simultáneas.
010, 011, 100 – Chequeo de existencia de sabores; aplicado a cada sabor en particular.
101 – Devolución del dinero por inexistencia de sabor elegido.
• Las salidas s1, s2 y s3 se definen tipo Mealy a partir de los estados de chequeo (010, 011, 100) como consecuencia de la existencia
del sabor escogido; la salida dev es tipo Moore y asociada a un estado específico para devolución.

Entradas: din,b1,b2,b3,d1,d2,d3 (+ reloj) β din 110 111


000
Salidas: s1,s2,s3,dev
Estados: 6 estados → 3 flip-flops (Q2Q1Q0) α
101
din
d1 d2 d3 dev 001 β
b1 b2 b3

clk s1
b1 b1 b2b3
din s2
b1 U.C. s3
b 1b 2
b2 010 100
dev 011 d3
b3 d1 d2

α α
• Una salida tipo Moore (dev) y 3 tipo Mealy (s1, s2, s3).
• Las variables de estado Q2,Q1 y Q0 están representadas por
d2 / s2 Diagrama de
tres f-f D. d1 / s1
β d3 / s3 Estados
din b1 b2 b3 d1 d2 d3 Q2Q1 Q0 Q2+Q1+ Q0+ D2 D1 D0 s1 s2 s3 dev

Tabla de Flujos 0
φ φ φ φ φ φ 000
000 0 0 0
0 0 0 0
1 001 0 0 1
0 0 0 001 0 0 1
0 0 1 100 1 0 0
φ φ φ φ 001 0 0 0 0
0 1 φ 011 0 1 1

1 φ φ 010 0 1 0

0 101 1 0 1 0
φ φ φ φ φ φ 010 0 0 0
1 000 0 0 0 1
0 101 1 0 1 0
φ φ φ φ φ φ 011 0 0 0
1 000 0 0 0 1
0 101 1 0 1 0
φ φ φ φ φ φ 100 0 0 0
1 000 0 0 0 1
φ φ φ φ φ φ φ 101 000 0 0 0 0 0 0 1
φ φ φ φ φ φ φ 110 000 0 0 0 0 0 0 0
φ φ φ φ φ φ φ 111 000 0 0 0 0 0 0 0

• Se observa que por cada estado actual existen diferentes transiciones posibles que dependen del valor que tengan las entradas
relevantes para ese estado particular; las transiciones en los estados 101, 110 y 111 son incondicionales.
• Los estados 110 y 111 no son utilizados en el modelo pero debe asegurarse una transición hacia un estado estable.
• Las entradas din, d1, d2 y d3 son relevantes únicamente en las transiciones de los estados 000, 010, 011 y 100, respectivamente.
• En el estado 001 realmente están contenidas 8 combinaciones posibles para las entradas b1, b2 y b3: dos son explícitas (000 y 001), y las
restantes 6 están indicadas por φ para las variables b2 y b3 ; esta representación asigna prioridades a las entradas en caso de activaciones
simultáneas.
•Los valores de las entradas de excitación se obtienen de las tablas de transición del f.f. al comparar cada Qi con el respectivo Qi+
Entradas de Excitación Salidas
D2: D1: D0 :
Q1Q0 Q1Q0 Q1Q0
00 01 11 10 00 01 11 10 00 01 11 10 s1 = Q2 ⋅ Q1 ⋅ Q0 ⋅ d1
Q2 Q2 Q2
0 0 a d2 d1 0 0 b 0 0 0 din c d2 d1 s2 = Q2 ⋅ Q1 ⋅ Q 0 ⋅ d 2

1 d3 0 0 0 1 0 0 0 0 1 d3 0 0 0 s3 = Q 2 ⋅ Q1 ⋅ Q0 ⋅ d 3
dev = Q 2 ⋅ Q1 ⋅ Q 0
a = b1 ⋅ b2 ⋅ b3 b: b2b3 c: b2b3
00 01 11 10 00 01 11 10
b1 b1
0 0 0 1 1 0 1 0 1 1
D2 implementada con MUX 8:1, 1 1 1 1 1 1 0 0 0 0
Q2Q1Q0 sel.
b = b1 + b2 c = b1 ⋅ b3 + b1 ⋅ b2
= b1 ⋅ (b2 + b3 )
D1 = Q 2 ⋅ Q1 ⋅ Q 0 ⋅ (b1 + b2 )
D0 implementada con MUX 8:1,
Q2Q1Q0 sel.

• Los mapas de Karnaugh para las entradas de excitación fueron expresados en función de las variables de estados por lo que las
variables din, d1, d2 y d3 aparecen como variables internas; el procedimiento de simplificación es similar pero los implicantes agrupan
términos semejantes que contengan a la variable interna.
• Debido el estado 001 agrupa sub-funciones dependientes de las variables b1, b2 y b3, es más sencillo expresar esas sub-funciones con
las letras a, b y c en las casillas correspondientes de los mapas, y luego obtener la expresión simplificada de dichas casillas con otros
mapas basados en las variables bi.
• Como el contenido de los mapas para D2 y D0 es completamente heterogéneo, es preferible implementar esas funciones con MUX; en
el caso de D1, el mapa solo tiene el minterm expresado por b para la combinación 001 de Q2Q1Q0, por lo que se puede implementar con
compuertas lógicas.
• La salida dev es Moore y activas por nivel alto; en su expresión algebraica solo aparecen variables de estado.
• Las salidas s1, s2 y s3 son Mealy y por ello en sus expresiones algebraicas aparecen variables de estado y también entradas di.
Circuito Lógico

• El Codificador de Entradas recibe las entradas externas din,b1,b2,b3,d1,d2 y d3. Se observa que D2 y D0 están implementadas con MUX
8:1, siendo Q2Q1Q0 las variables de selección, mientras que la expresión de D0 está implementada con compuertas lógicas.
• En el diseño, los flip-flops C, B y A del integrado 74175 corresponden a las variables de estado Q2 , Q1 y Q0, respectivamente; la señal
de reloj es común para todos.
• Las entradas del Decodificador de Salidas son las variables de estado y las entradas d1, d2 y d3. Se observa que dev es la única salida
que combina únicamente variables de estado, puesto que es de tipo Moore; las salidas s1, s2 y s3 son tipo Mealy.
Elementos de VHDL para Descripción de
Circuitos Secuenciales
Procesos
• El proceso es el bloque básico de ejecución secuencial
• Los procesos contienen instrucciones secuenciales, como por ejemplo estructuras selectivas y
ciclos, que permiten modelar el comportamiento de un circuito
– Dentro de los procesos es posible declarar y utilizar variables
• El proceso tiene una lista de sensitividad, conformada por un conjunto de señales
– Cuando el valor de una señal en la lista cambia, se activa el proceso
– Las asignaciones de señales que aparezcan dentro de un proceso solo se hacen efectivas al finalizar la
ejecución del mismo; las asignaciones de variables son inmediatas
• Un proceso equivale a una única instrucción concurrente
– Cuando una arquitectura tiene varios procesos, estos son interpretados simultáneamente
• El proceso se declara con la palabra reservada process

process (lista_de_sensitividad) -- Ejemplo de proceso


… -- Declaraciones de señales o variables process(clk, clr)
variable q : STD_LOGIC;
begin
begin
… -- Instrucciones secuenciales if clr = ‘1’ then
end process; q := ‘0’;
else
q := ‘1’;
end if;
end process;
Atributos
• Los atributos son propiedades asociadas a ciertos elementos, tales como
señales o variables, que proporcionan información adicional acerca del
elemento
• El acceso a los atributos se realiza mediante la comilla simple (‘)
Formato:
nombre_objeto'nombre_atributo

• Existen varios atributos predefinidos, pero también es posible definir


atributos personalizados
– El atributo event es uno de los más usados y devuelve un valor de verdadero o
falso para indicar si una señal ha cambiado de valor o no

-- Ejemplo de uso del atributo event


-- Detecta si ocurre un flanco de subida en una señal
-- (la señal ha pasado de 0 a 1)
if (clk'event and clk = '1') then
… -- bloque de instrucciones
end if;
Ejemplo: Descripción de un flip-flop D con VHDL
entity FF_D is
port(
clk : in STD_LOGIC;
reset : in STD_LOGIC;
D : in STD_LOGIC;
Q : out STD_LOGIC;
NQ : out STD_LOGIC
);
end FF_D;

architecture FF_D of FF_D is


signal estado: STD_LOGIC := '0';
begin
process(clk, reset)
begin
if (reset = '1') then -- reset asíncrono
estado <= '0';
elsif ( clk'event and clk = '1') then -- actualizar estado en el flanco de subida del reloj
estado <= D;
end if;
end process;
Q <= estado;
NQ <= not estado;
end FF_D;

También podría gustarte