Está en la página 1de 49

4/6/2020

011000010111001101100001011011100111101001100001

01101010011001010110000101101110
1
Sistemas Digitales II

011000010111001101100001011011100111101001100001

Objetivos: 01101010011001010110000101101110

• Al finalizar la unidad el estudiante estará en


capacidad de crear circuitos digitales
combinatoriales y secuenciales utilizando un
lenguaje de descripción de hardware.
• El estudiante podrá simular sistemas digitales
usando herramientas CAD (Computer Aided Design
– Diseño Asistido por Computador) y lenguaje de
descripción de hardware.

2
Sistemas Digitales I

1
4/6/2020

011000010111001101100001011011100111101001100001

Clasificación de los Circuitos 
Secuenciales Sincrónicos.

01101010011001010110000101101110
Diagrama de Bloques General de una Máquina Secuencial Sincrónica (MSS)

3
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Entender los requerimientos del circuito
y bajo que condiciones se generan las
salidas (Mealy o Moore).
01101010011001010110000101101110

𝑖 𝑜
Dibujar un Bloque (MSS – Máquina
secuencial sincrónica) con todas las
entradas y salidas del circuito. Usar el MSS
formato: In/Out. 𝑖 𝑜

Diagrama de Estados primitivo (suele


tener estados redundantes), con un estado
inicial al cual se debe regresar al encender
la fuente de poder, al presionar Reset o
bajo condiciones de las entradas de la MSS.

Tabla de estados primitivo, para identificar


y eliminar estados redundantes. Redibujar
el Diagrama de Estados simplificado.

Mapa de códigos de Estados usando las


reglas para minimización del decodificador
de estado siguiente.
4
Sistemas Digitales II

2
4/6/2020

011000010111001101100001011011100111101001100001
Tabla de Estados Presentes y Siguientes con códigos de
estado, seleccionar el elemento de memoria de estados
(flip‐flop o Registro), con la misma cantidad de columnas
que el número de bits del código de estado.

01101010011001010110000101101110
Elaborar los mapas de Estados Siguientes para implementar
el Decodificador de Estado Siguiente.

Elaborar los mapas de salidas para implementar el


Decodificador de Salida.

Graficar el Diagrama Esquemático.

Realizar pruebas de funcionamiento del prototipo en el


Laboratorio.
5
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Ejemplo 1
Diseñar una MSS ‐ Controladora de Acceso

EL sistema controla el acceso de varios dispositivos a los recursos compartidos en


01101010011001010110000101101110

un sistema. Solo un dispositivo puede utilizar los recursos a la vez.


Cuando un dispositivo quiere acceder a los recursos, debe enviar a la MSS una
señal “Solicitud” (S). Esta señal permanece activa mientras dure el acceso del
dispositivo a los recursos. La MSS produce las salidas independientes para cada
dispositivo llamados Permiso (P).

Suponga que hay tres dispositivos D1, D2 y D3, cada uno con diferente prioridad
de acceso. D1 tiene mayor prioridad que D2 y D3. D2 tiene mayor prioridad que
D3. Escriba el diagrama de estados y la descripción en VHDL
D1
S1
P1
D2 S2 Controladora
P2
de Acceso
P3
S3
D3
6
Sistemas Digitales II

3
4/6/2020

011000010111001101100001011011100111101001100001
Formato: S1, S2, S3 / P1, P2, P3

01101010011001010110000101101110
7
Sistemas Digitales II

011000010111001101100001011011100111101001100001

01101010011001010110000101101110

1.1.‐ Diseño de una MSS modelo 
Moore y Mealy utilizando 
decodificadores y multiplexores

8
Sistemas Digitales I

4
4/6/2020

011000010111001101100001011011100111101001100001

Procedimiento tradicional

01101010011001010110000101101110
Tabla de 
Diagrama de  Implementación 
Estados  Mapas de  Ecuaciones 
Estados  con Puertas 
Presentes y  Karnaugh Booleanas
Reducido Lógicas
Siguientes

yn \ y0 0 1
Diagrama  0 Yn..Y0 Yn..Y0
de Tiempo
1 Yn..Y0 Yn..Y0

9
Sistemas Digitales II

011000010111001101100001011011100111101001100001

Diagrama de 
Mapas de 
Estados Reducido 
/ ASM Karnaugh
01101010011001010110000101101110

Implementaciones 
contemporáneas

Implementación: 
VHDL
Reg. Sostenimiento, 
Diagrama de  Decoder & Mux
• Mem Estado & Deco E.S.
Tiempo
• Deco Salida.

10
Sistemas Digitales II

5
4/6/2020

011000010111001101100001011011100111101001100001
Ejemplo 2
Dado el siguiente diagrama de estados de una MSS‐Mealy:
• Implemente todo el circuito de la MSS utilizando multiplexores 8 a 1 y registro de 
sostenimiento para la memoria de estados:

01101010011001010110000101101110
F: 𝐼𝑛 , 𝐼𝑛 / 𝑂𝑢𝑡 , 𝑂𝑢𝑡 Resetn

A
000
1,1/1,0 0,1/0,1 0,0/1,0
0,1/1,1
1,1/1,0 1,0/0,1
B ɸ,0/1,0
0,1/0,0
001
1,1/1,0
0,ɸ/0,1 0,0/1,0
F
1,ɸ/1,0 1,0/1,1
101
D
011 0,0/0,0
ɸ,1/0,1 ɸ,0/1,1 1,1/0,0

C H
0,1/1,0
010 111 1,0/1,0
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Solución

Implementacion:
Diagrama de  Mapas de 
01101010011001010110000101101110

estados reducido Karnaught Reg. sostenimiento, 


Decoder & Mux

Asignación de Códigos de Estado.
y0\y2y1 00 01 11 10
0 A C G E
1 B D H F

Decodificador Estado Siguiente: 𝑌 𝑌 𝑌
y0\y2y1 00 01 11 10
0 0,0,1 0,0,0 ɸ ɸ
1 0,𝐼𝑛 ,1 𝐼𝑛 ,1, 𝐼𝑛 1, 𝐼𝑛 ⨁𝐼𝑛 , 1 0,0,1

Decodificador Salidas: 𝑂𝑢𝑡 , 𝑂𝑢𝑡
y0\y2y1 00 01 11 10
0 𝐼𝑛 ʘ𝐼𝑛 , 𝐼𝑛 ⨁𝐼𝑛 𝐼𝑛 ,𝐼𝑛 ɸ ɸ
1 1, 𝐼𝑛 ⨁𝐼𝑛 𝐼𝑛 , 1 𝐼𝑛 ⨁𝐼𝑛 ,0 𝐼𝑛2 𝐼𝑛 , 0

12
Sistemas Digitales II

6
4/6/2020

011000010111001101100001011011100111101001100001
Solución

01101010011001010110000101101110
Circuito decodificador de estados Circuito decodificador de salidas
siguientes

Memorias de estado 13
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Ejemplo 3
Una MSS‐Mealy a más de las señales Resetn y Clock, tiene la siguiente configuración de 
señales de entrada y salida:
01101010011001010110000101101110

Decodificador de Estado Siguiente:

Decodificador de Salida:

Se pide:
• Dibujar el diagrama de estados reducido con el formato: 𝑥 , 𝑥 / 𝑄 , 𝑄
• Completar el diagrama de tiempo con el comportamiento de las salidas correspondientes.
• Hacer el circuito correspondiente al codificador de estado siguiente con Multiplexores.14
Sistemas Digitales II

7
4/6/2020

011000010111001101100001011011100111101001100001
Recordar
Para todos los ejercicios usar la siguiente asignación de códigos de estados.

01101010011001010110000101101110
Asignación de Códigos de Estado.
y0\y2y1 00 01 11 10
0 A C G E
1 B D H F

Utilizar Variable Entrante al Mapa (VEM) de ser necesario.

y0,In\y2,y1 00 01 11 10 y1\y2 0 1
00 1 1 0 0 0 1 𝑦 . 𝐼𝑛
01 1 1 1 0 1 𝑦 𝐼𝑛 𝑦 Ꚛ𝐼𝑛
11 1 1 0 1
y0\y2y1 00 01 11 10
10 1 0 1 0
0 1 1 𝐼𝑛 0
1 1 𝐼𝑛 𝐼𝑛 𝐼𝑛

15
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Solución
Diagrama de  Implementacion:
Diagrama de  Reg.  Mapas de  Diagrama de 
estados
01101010011001010110000101101110
tiempo sostenimiento,  Karnaught estados reducido
reducido Decoder & Mux

Asignación de Códigos de Estado.
y0\y2y1 00 01 11 10
0 A C G E
1 B D H F

Decodificador Salidas: 𝑄 , 𝑄
y0\y2y1 00 01 11 10
0 1, 𝑥 ⨁𝑥 1, 1 1, 𝑥 ʘ𝑥 𝑥 ʘ𝑥 , 𝑥 ⨁𝑥
1 0, 0 0, 0 0, 0 0, 0

16
Sistemas Digitales II

8
4/6/2020

011000010111001101100001011011100111101001100001
Solución
• Dibujar el diagrama de estados reducido.
Resetn

01101010011001010110000101101110
F: 𝑥 , 𝑥 / 𝑄 , 𝑄 000
A

0,1/1,1 0,0/1,0
1,1/1,0 1,0/1,1
100
0,1/1,0 E
1,1/1,1
0,1/0,1 0,0/1,0 ɸ,ɸ/1,1
1,1/1,0 1,0/0,1
110
G

0,0/1,1
1,0/1,0
010
C

Sistemas Digitales II

011000010111001101100001011011100111101001100001
Solución
Completar el diagrama de tiempo con el comportamiento de las 
salidas correspondientes.
01101010011001010110000101101110

Diagrama de estados
Diagrama de tiempo
reducido

18
Sistemas Digitales II

9
4/6/2020

011000010111001101100001011011100111101001100001
Solución
• Hacer el circuito correspondiente al codificador de estado siguiente con Multiplexores.
Diagrama de  Mapas de  Implementacion:Reg. 

01101010011001010110000101101110
estados reducido Karnaught sostenimiento, Decoder & Mux

Asignación de Códigos de Estado.
y0\y2y1 00 01 11 10
0 A C G E
1 B D H F
Decodificador Estado Siguiente: 𝑌 𝑌 𝑌
y0\y2y1 00 01 11 10
0 1,0,0 0,0,0 0,𝑥 ,0 1,1,0
1 ɸ ɸ ɸ ɸ

Sistemas Digitales II

011000010111001101100001011011100111101001100001
Diseño de una MSS usando VHDL y herramientas CAD.

• Uso Tradicional de CAD: procedimiento manual trabajoso.


01101010011001010110000101101110

Inicia con el diagrama de estados y culmina con la


implementación final. El uso de herramientas CAD implica
introducir el circuito en un Editor Grafico y simular el
comportamiento de la MSS e implementarla en un PLD.

• Con HDL
Se describe el Diagrama de Estados utilizando un HDL (Hardware
Description Language) como VHDL. Luego del VHDL se puede
simular en implementar en una FPGA o CPLD.
Existe solo una diferencia entre el VHDL del modelo Moore y del
modelo Mealy.

20
Sistemas Digitales II

10
4/6/2020

011000010111001101100001011011100111101001100001
Diseño de una MSS modelo Moore con VHDL.
Ejemplo 4. Construir el código VHDL para el siguiente
diagrama de estados y explicar el código línea por línea.

01101010011001010110000101101110
Formato: w/z

La declaración library ieee es la declaración de la biblioteca


general de solo lectura que contiene un conjunto de
definiciones estándar para VHDL.
21
Sistemas Digitales II

011000010111001101100001011011100111101001100001

La declaración use ieee.std_logic_1164.all es la declaración del


paquete estándar.
01101010011001010110000101101110

Las siguientes líneas declaran una entity que se llama simple y


tiene tres terminales de entrada Clock, Resetn, w, y un terminal
de salida z.
La entity describe las conexiones externas. A continuación, con
port se especifican los nombres de las señales, su modo y tipo:
• in entrada
• out salida
• inout entrada o salida
• buffer salida realimentada.
La información está representada en código VHDL como objeto
de datos. Se proporcionan tres clases de objetos: señales,
constantes y variables.
22
Sistemas Digitales II

11
4/6/2020

011000010111001101100001011011100111101001100001

Para describir los circuitos lógicos, los más importantes objetos


de datos son señales (signal). Ellos representan las señales

01101010011001010110000101101110
lógicas (alambres) en el circuito. Los constantes y variables se
usan menos frecuentemente.
Las señales pueden ser declarados en VHDL en 3 lugares: en la
declaración de entity, en la sección de declaraciones de
architecture y en la sección de declaraciones de package. Las
señales (signal) son objetos usados para conectar elementos
concurrentes, tales como component, process, y asignaciones
concurrentes. Equivalen a los nodos internos de un circuito.
Siempre tienen que ser declaradas con un tipo asociado (type).
signal signal_name: type_name;
type de una señal determina los valores legales que la señal
puede tener y sus usos legales en código VHDL. 23

Sistemas Digitales II

011000010111001101100001011011100111101001100001
Son ejemplos de type para signal: bit, bit_vector, std_logic,
std_logic_vector, integer.
01101010011001010110000101101110

Con la palabra “comportamiento estamos nombrando a la


architecture, pero se puede utilizar cualquier palabra válida en
VHDL para nombrarla. La siguiente línea introduce la keyword
type, que representa una característica especial de VHDL. La
palabra clave type permite crear un nuevo tipo de señales.
El nuevo tipo de señales es llamado estado y el código especifica
que una señal de este tipo puede tener tres posibles valores: “a”,
“b” y “c”.
La siguiente línea define una signal llamado “y” y declara que es
también de tipo estado.
24
Sistemas Digitales II

12
4/6/2020

011000010111001101100001011011100111101001100001

La señal “y” es usada para representar la salidas de los flip‐flops


que implementan el bloque de Memoria de Estados en una MSS

01101010011001010110000101101110
sin especificar el número de flip‐flops, es decir, “y” representa el
código de Estado Presente sin especificar el número de bits del
código.
Solo especifica que “y” puede tener tres simbólicos valores
“a”, “b” y “c”.
El compilador VHDL automáticamente elije un número
apropiado de los flipflops cuando sintetiza el circuito para
implementar la MSS. También elije las asignaciones de código
de estados para los estados a, b y c.
El Siguiente paso es especificar las transiciones entre los
estados, por lo tanto, las siguientes líneas representan una de
las maneras de describir el Diagrama de Estados.
25
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Transiciones
--Es asincrónico
01101010011001010110000101101110

La declaración process describe la MSS como un circuito secuencial. Entre


paréntesis esta la lista de sensibilidad (sensitivity list), es decir las señales de
entrada que pueden causar que process cambie. En nuestro caso son Resetn y
Clock. La señal w no está incluida en la lista de sensibilidad porque un cambio
solo en el valor de entrada w, no afecta al etado “y” hasta que ocurre el flanco
de subida de Clock. La única señal que se modifica en el process es la señal “y”.
26
Sistemas Digitales II

13
4/6/2020

011000010111001101100001011011100111101001100001

Las líneas iniciales especifican que MSS debe entrar en estado “a” si Resetn = 0.
Con la letra n se acostumbran indicar que la señal es de lógica negativa.

01101010011001010110000101101110
Ya que la condición de la declaración de if no depende de la señal de Clock esto
significa que Resetn es asincrónico. Cuando señal de Resetn no es verdadera la
declaración de elsif especifica que circuito espera por el flanco positivo de Clock.
El comportamiento de la señal de salida “y” es definido por la declaración
secuencial case ‐ when.
case ‐ when es la declaración secuencial usada dentro de process que selecciona
y ejecuta una alternativa de entre varias posibles, evaluando una expresión dada
(“y” en nuestro caso). Debe terminar con end.
La declaración case ‐ when se distingue de la declaración if – then – else en que
no hay prioridad entre alternativas.
Ya que la declaración case esta dentro de la condición elsif, cualquier cambio de
“y” puede tener lugar solo en el flanco positivo de Clock.
Es decir, la condición elsif implica que la señal “y” debe ser implementada como
la salida de uno o más flip‐flops.
Cada cláusula when en la declaración case representa un estado de la MSS.
27
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Salidas

Las Salidas de la MSS se declaran fuera del PROCESO donde se


01101010011001010110000101101110

declararon las transiciones.


Hay tres formas de declarar las salidas:
1. Con declaraciones concurrentes (RTL)
2. Con PROCESS / IF ‐ THEN ‐ ELSE
3. Con PROCESS / CASE ‐ IS ‐ WHEN

Salidas con declaraciones concurrentes:


Utilizamos asignaciones directas RTL para las salidas fijándonos en qué estados
son verdaderas.

Aquí se especifica que si la MSS está en el estado “c”, entonces la salida
z debe ser 1, si no, debe ser 0.

28
Sistemas Digitales II

14
4/6/2020

011000010111001101100001011011100111101001100001

01101010011001010110000101101110
29
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Declaraciones concurrentes y secuenciales.
01101010011001010110000101101110

El diagrama indica como las declaraciones concurrentes son ejecutados en VHDL. Las
declaraciones concurrentes son aquellas que aparecen entre las declaraciones begin y end de
una architecture. Esta área de architecture se llama área concurrente. En VHDL todas las
declaraciones en el área concurrente son ejecutadas al mismo tiempo y hay cuatro tipos
diferentes de declaraciones concurrentes:
1. declaración de señal simple (simple signal assignment)
signal x, y, s : std_logic; Ejemplo: s <= x + y;
2. declaración de señal seleccionada (selected signal assignment)
signal x1, x2, Sel, y : std_logic; Ejemplo: with Sel select
y <= x1 when ‘0’,
x2 when others;
3. declaración de señal condicional (condicional signal assignment)
Ejemplo: z <= '1' when y = c else '0';
4. declaraciones generar (generate statements). Nota: se hablará más adelante sobre ésta
declaración.
30
Sistemas Digitales II

15
4/6/2020

011000010111001101100001011011100111101001100001

01101010011001010110000101101110
El diagrama muestra como se ejecutan las declaraciones secuenciales en VHDL.
Las declaraciones secuenciales son ejecutadas una después de la otra en el orden que ellas
aparecen entre las declaraciones begin y end de un process.
Por esta razón las declaraciones secuenciales siempre deben ser separados de las declaraciones
concurrentes.
La interacción de las declaraciones concurrentes y secuenciales es ilustrada en el siguiente
ejemplo. Mientras las declaraciones if – elsif – end if en el process son ejecutadas
secuencialmente (una después de la otra), el cuerpo de process es tratado por VHDL como una
simple declaración concurrente y es ejecutado al mismo tiempo que otras declaraciones
concurrentes.
La declaración process es una declaración concurrente, es decir, si un código VHDL tiene varias
declaraciones de process, son ejecutados concurrentemente. Pero las declaraciones dentro de
cada declaración process son secuenciales y son ejecutados en orden, una después de la otra.

31
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Notar que
las salidas
dependen
solo del
01101010011001010110000101101110

estado,
por tanto
es modelo
Moore

Por ejemplo, process (Resetn, Clock)


Entre los paréntesis se indica la sensitivity list que es un conjunto de señales cuyo cambio activa
la ejecución de process. La Sensitivity list es opcional, pero en caso de no existir se hace
necesaria la presencia dentro de declaración process de una o más sentencias wait.

32
Sistemas Digitales II

16
4/6/2020

011000010111001101100001011011100111101001100001

01101010011001010110000101101110
La declaración process puede incluir otras declaraciones dentro de ella
(declaraciones if, case y loop).
Las declaraciones if, case y loop pueden ser usadas para describir tanto circuitos
combinatoriales, como secuenciales.
La sentencia if – then – elsif ‐ else es una declaración secuencial usada para
describir lógica condicional. Puede haber varias elsif, pero solo una else al final.
Debe terminar con end.
No existe una relación directa entre declaraciones concurrentes y secuenciales y
la lógica combinatorial y secuencial.

33
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Diseño de una MSS modelo Mealy con VHDL.

En los diseños anteriores cada estado tenía definido un valor de salida. Las
01101010011001010110000101101110

salidas se mantenían constantes durante todo el estado. A este tipo se las llama
salidas incondicionales. Tales MSS se conocen como máquinas de modelo
Moore. En las MSS modelo Mealy, los valores de salida dependen tanto del
estado como de los valores presentes en las entradas. Por esto se conocen como
salidas condicionales.
Ejemplo 5:
Diseñar una MSS que detecte dos unos consecutivos en la entrada W.
La salida Z debe ser igual a 1 en el mismo periodo de Clock en el que se produce
la detección.

Solo dos estados son necesarios porque permitimos que el valor de la salida Z
dependa tanto del valor de Estado Presente como del valor de la entrada W.
34
Sistemas Digitales II

17
4/6/2020

011000010111001101100001011011100111101001100001
Ya que son solo dos estados, se los puede usar un código de un bit. Por lo
tanto, sólo se require un flop‐flop para el bloque de Memoria de Estados.

01101010011001010110000101101110
El código VHDL para MSS de modelo Mealy es similar al del modelo Moore,
pero tiene una diferencia.
35
Sistemas Digitales II

011000010111001101100001011011100111101001100001

01101010011001010110000101101110

36
Sistemas Digitales II

18
4/6/2020

011000010111001101100001011011100111101001100001

La única diferencia entre los códigos para MSS modelo Mealy y modelo Moore
esta en la parte de código que describe la salida.

01101010011001010110000101101110
Para la MSS de modelo Mealy la salida Z esta definida usando declaración case ‐
when.

Cuando la MSS esta en estado a, Z debe ser 0, pero cuando esta en estado b, Z
debe tomar valor de W.

La segunda declaración de case – when no esta dentro de la declaración de if


que espera por la transición de Clock, porque el valor de Z debe depender no
solo del estado sino también de la entrada W en las MSS de modelo Mealy.

37
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Estilo alternativo del código VHDL.

No se especifica una manera estándar para escribir el código VHDL que


01101010011001010110000101101110

representa el funcionamiento de una MSS. El código analizado es solo una


posibilidad. La otra posibilidad esta presentada a continuación. Dos señales son
usadas para representar el estado de la MSS: y_presente, que es el estado
presente y y_siguiente que es el estado siguiente. No se puede usar las letras
mayúsculas ya que VHDL no hace diferencia entre letras mayúsculas y
minúsculas.

El código especifica dos process separados.


Primer process describe la tabla de estados (tabla de verdad) como un circuito
combinatorial. Se usa declaración case para indicar el valor de y_siguiente para
cada valor de y_presente y w. Es decir, se describe el bloque del Decodificador
de estado Siguiente.
38
Sistemas Digitales II

19
4/6/2020

011000010111001101100001011011100111101001100001
Ejemplo 6: En el ejemplo 4 usamos el estilo alternativo

01101010011001010110000101101110
Sistemas Digitales II 39

011000010111001101100001011011100111101001100001
El segundo process describe el bloque de Memoria de Estados.

El código indica que con cada flanco de subida de Clock y_presente va a tomar el
01101010011001010110000101101110

valor de y_siguiente.

Dentro del process también se indica que y_presente será igual a “a” cuando
Resetn = 0.

Los circuitos que producirá el compilador de VHDL para cada versión del código
serán probablemente diferentes, pero realizarán una función idéntica.
Pero aunque las dos versiones de código son funcionalmente equivalentes, la
primera versión es más recomendable. Quartus II reconocerá esta versión como
una MSS. Al simularla el valor de la señal “y” es reportado usando los nombres
de los estados “a”, “b” y “c”.

Para la segunda versión del código, Quartus II reporta solo valores lógicos de las
señales. El valor de la señal y_presente es presentado por el simulador como 00,
01 y 10.

40
Sistemas Digitales II

20
4/6/2020

011000010111001101100001011011100111101001100001
Ejemplo 7:

Diseñar una MSS modelo Moore que realizará el control de la venta

01101010011001010110000101101110
para una máquina dispensadora de caramelos.
El precio de un caramelo es de 15¢. La máquina puede recibir solo
monedas de 5¢ (Níckel) y de 10¢ (Dime).
Si el usuario deposita 20¢ (2 x 10¢), la máquina no devuelve 5¢,
pero da crédito y espera que el usuario deposite otros 10¢ para
completar la segunda venta. Después de la venta la MSS debe
regresar al estado inicial.

41
Sistemas Digitales II

011000010111001101100001011011100111101001100001

Basándose en las condiciones de funcionamiento dados


desarrollamos inicialmente un Diagrama de Estados Primitivo.
01101010011001010110000101101110

Formato : D,N / C Dime = 10¢ Níckel = 5¢

Luego elaboramos la Tabla de Estados Primitiva.


42
Sistemas Digitales II

21
4/6/2020

011000010111001101100001011011100111101001100001

Para reducir 2 estados, los dos


deberán ser equivalentes.
2 estados son equivalentes si

01101010011001010110000101101110
para los mismos valores de las
entradas tenemos iguales
valores de salida y los mismos
próximos estados.
Si 2 estados “p” y “q” son
equivalentes entonces el estado
“q” es redundante o el estado
“p” es redundante (Se deberá
eliminar uno de los 2 y
reordenar el diagrama de
estados).

43
Sistemas Digitales II

011000010111001101100001011011100111101001100001

01101010011001010110000101101110

Los estados equivalentes 
son:  ‐ S4, S7 y S8
‐ S5 y S9
‐ S2 y S6 

44
Sistemas Digitales II

22
4/6/2020

011000010111001101100001011011100111101001100001
Diagrama de Estados Reducido

A continuación se presenta la implementación del sistema usando descripción

01101010011001010110000101101110
VHDL alternativa y suponiendo que se requiere mantener la asignación de
códigos de estados del diseño original:

FORMATO : D, N / C

Dime = 10¢ Níckel = 5¢

45
Sistemas Digitales II

011000010111001101100001011011100111101001100001

01101010011001010110000101101110

FORMATO : D, N / C

46
Sistemas Digitales II

23
4/6/2020

011000010111001101100001011011100111101001100001

01101010011001010110000101101110
Con las técnicas regulares, pudimos reducir el número de estados hasta cinco.
Usando el modelo Moore, este es el número mínimo de estados que podemos
obtener.
Si usamos una MSS modelo Mealy podemos obtener aún menos estados.

47
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Ejemplo 8: Con Mealy
Formato : D,N / C Si para el mismo
ejemplo usamos el
modelo Mealy,
01101010011001010110000101101110

10¢ (Dime)
5¢ (Níckel) podemos eliminar los
estados S4 y S5 donde
se genera la salida
incondicional C.

Tenemos problema en los estados S2 y S3 donde la salida C puede volverse a


activar con un nuevo cambio en las entradas con lo que entregaría otro caramelo
sin verificar el dinero correspondiente.
48
Sistemas Digitales II

24
4/6/2020

011000010111001101100001011011100111101001100001

Podemos eliminar este problema agregando un flip‐flop D en la salida de tal
manera que solo se acepte un cambio en la salida por estado El único
problema es que la salida se desfasa un estado.

01101010011001010110000101101110
49
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Ejemplo 9
Diseñar una MSS ‐ Controladora de Acceso – (Se resolvió como ejemplo 1)

EL sistema controla el acceso de varios dispositivos a los recursos compartidos en


01101010011001010110000101101110

un sistema. Solo un dispositivo puede utilizar los recursos a la vez.


Cuando un dispositivo quiere acceder a los recursos, debe enviar a la MSS una
señal “Solicitud” (S). Esta señal permanece activa mientras dure el acceso del
dispositivo a los recursos. La MSS produce las salidas independientes para cada
dispositivo llamados Permiso (P).

Suponga que hay tres dispositivos D1, D2 y D3, cada uno con diferente prioridad
de acceso. D1 tiene mayor prioridad que D2 y D3. D2 tiene mayor prioridad que
D3. Escriba el diagrama de estados y la descripción en VHDL
D1
S1
P1
D2 S2 Controladora
P2
de Acceso
P3
S3
D3
50
Sistemas Digitales II

25
4/6/2020

011000010111001101100001011011100111101001100001
Formato: S1, S2, S3 / P1, P2, P3

01101010011001010110000101101110
51
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Descripción en VHDL :
01101010011001010110000101101110

52
Sistemas Digitales II

26
4/6/2020

011000010111001101100001011011100111101001100001
Para generar las tres salidas P1, P2 y P3 en este código VHDL utilizamos
las declaraciones concurrentes condicionales.

01101010011001010110000101101110
Para describir el Decodificador de Salida, en lugar de las declaraciones concurrentes
condicionales, se pueden utilizar declaraciones secuenciales con process y que tenga una
declaración if.

53
Sistemas Digitales II

011000010111001101100001011011100111101001100001

01101010011001010110000101101110

Este código VHDL parece correcto, pero los resultados de simulación presentan
errores.

54
Sistemas Digitales II

27
4/6/2020

011000010111001101100001011011100111101001100001
¿Cuál es el error?
Usamos la declaración if – then ‐ elsif, pero no tiene else al final.
Y tampoco están dados los valores de los señales P1, P2 y P3 por default (valores

01101010011001010110000101101110
iniciales).
Para corregir este error se puede asignar a P1, P2 y P3 por default valores 0.

55
Sistemas Digitales II

011000010111001101100001011011100111101001100001

Ejemplo 10.
01101010011001010110000101101110

Diseñar una MSS que tiene una entrada Dt y una salida Ok. La MSS 
debe muestrear la entrada Dt por cuatro veces consecutivas e 
inmediatas. La salida se activa (Ok = 1) si se detecta en la entrada Dt
la secuencia 0111. Luego la MSS regresa al estado inicial para 
realizar el siguiente muestreo.

El sistema hará el muestreo siempre cuatro veces, sin importar si el 
código leído es correcto o incorrecto, 

Asuma también que la señal Dt está sincronizada con Clock.

56
Sistemas Digitales II

28
4/6/2020

011000010111001101100001011011100111101001100001

01101010011001010110000101101110
57
Sistemas Digitales II

011000010111001101100001011011100111101001100001
2. Mapa de Estados Presentes y Siguiente Primitivo.
01101010011001010110000101101110

d
d
h En un segundo 
h
h chequeo se 
h
determinan las 
h equivalencias de 
h
h los estados d, f, g

En un primer chequeo
se detectan las
equivalencias de los
estados h, i, j, l, m, n, o 

58
Sistemas Digitales II

29
4/6/2020

011000010111001101100001011011100111101001100001
Reducimos el número de estados:
(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) – (a, b, c, d, e, f, g, h, i, j, l, m, n, o) (k) –
(a, b, c, d, f, g, h, i, j, l, m, n, o) (e) (k) – (a, c, d, f, g, h, i, j, l, m, n, o) (b) (e) (k) –

01101010011001010110000101101110
(a) (b) (c)(d, f, g) (e) (h, i, j, l, m, n, o) (k) – (a) (b) (c) (d) (e) (h) (k)

3. Diagrama de Estados Reducido.
El Diagrama de Estados tiene ahora solamente siete estados.

59
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Asignación de códigos de estados en VHDL.
La asignación del código puede tener un impacto en la complejidad del circuito diseñado.
Un objetivo obvio del proceso de asignación del código de estados es minimizar el costo de la
01101010011001010110000101101110

implementación. Por ejemplo, el software Quartus de Intel trata de encontrar tal codificación de
los estados que minimiza el numero total de términos AND que va a ser utilizada en la FPGA
donde se cargará el circuito. En VHDL, también se permite al usuario asignar los códigos de
estados que desea. No hay una manera estándar para hacerlo.
• Ejemplo 11: simple_2.vhd
Quartus recomienda hacer la asignación de códigos usando la característica atributo (attribute)
del VHDL. Un attribute se refiere a algún tipo de información sobre un objeto. Por ejemplo,
todas las signals en VHDL automáticamente tienen unos attribute predefinidos. Un ejemplo es
el atributo event que se usa para especificar el flanco de reloj en Clock ‘event.

Aparte de los attribute predeterminados, el usuario puede crear sus propios attribute. Estos
atributos pueden ser usados para dar algún tipo de información deseada a un objeto en código
VHDL. La asignación manual de código de estado en Quartus se hace creando un attribute
asociado con el tipo estado.

60
Sistemas Digitales II

30
4/6/2020

011000010111001101100001011011100111101001100001

Primero se define el nuevo atributo llamado enum_encoding que es de tipo string
(cadena).

01101010011001010110000101101110
En la siguiente línea se asocia ENUM_ENCODING con el tipo estado y se especifica que el 
atributo tiene el valor “00 01 11”.  El compilador de Quartus usa el valor de 
ENUM_ENCODING para hacer la asignación de estados “a” = 00, “b” = 01; “c” = 11.

El atributo ENUM_ENCODING es especifico solo para Quartus. Pero hay otras maneras de 
asignar los códigos que funcionará en otros sistemas CAD.

• Ejemplo 12: simple_3.vhd

En este caso tanto y_presente así como y_siguiente están definidos como señales de dos
bits. Los nombres de estados son definidos como constantes con el valor correspondiente
a la codificación deseada. VHDL requiere que la declaración de case para y_presente
incluya una cláusula when para todos los posibles valores de y_presente. Ya que en este
caso y_presente es una señal de std_logic_vector debemos especificar una cláusula when
others.

61
Sistemas Digitales II

011000010111001101100001011011100111101001100001

01101010011001010110000101101110

62
Sistemas Digitales II

31
4/6/2020

011000010111001101100001011011100111101001100001
Diseño de una MSS con método de un flip‐flop por estado (One – Hot Encoding).

En este método se asigna tantas variables de estado como cuantos estados existen. Siendo así, en 
cada estado solo una de las variables de estado es igual a 1.

01101010011001010110000101101110
En el Ejemplo tenemos tres estados, por lo tanto es necesario usar tres variables de estado. Por 
ejemplo, “a”→001, “b”→ 010, “c”→ 100.
Las demás combinaciones de tres variables no se usan, por lo tanto asumimos que son casos Ø (don’t
care).
De la tabla de verdad derivamos las siguientes expresiones del Decodificador de Estado Siguiente y 
del Decodificador de Salida:

63
Sistemas Digitales II

011000010111001101100001011011100111101001100001

01101010011001010110000101101110

Debido a que yo solo se


enciende en el estado “a”
nos sirve para definir el
comportamiento de Y1 y
Y2. De esta forma, por
ejemplo Y2 se define con
respecto a yo negándolo,
dado que solo se enciende
en el estado “a”.
64
Sistemas Digitales II

32
4/6/2020

011000010111001101100001011011100111101001100001
Estas expresiones son más complejas que las anteriores, lo que significa que el
circuito es más complejo. Pero a veces este método de diseño puede ser atractivo.
Implica un solo 1 por estado.

01101010011001010110000101101110
El inversor de la salida
se ha colocado para que
luego de resetear
vayamos al estado inicial
yO. Hecho esto, se debe
colocar un inversor en la
entrada para invertirla y
que la señal guardada
corresponda a la lógica
que tiene yO. Pero
además colocamos otro
inversor para cumplir con
la función negada que se
obtuvo para yO.

65
Sistemas Digitales II

011000010111001101100001011011100111101001100001
“a”→001, “b”→ 010, “c”→ 100.
01101010011001010110000101101110

Podemos notar que si la señal Resetn se activa, la 
MSS va al estado 001 gracias a los inversores
colocados en la implementación. El resto del tiempo 
trabaja normalmente

66
Sistemas Digitales II

33
4/6/2020

011000010111001101100001011011100111101001100001
Sincronización de señales externas.

En el ejemplo de la máquina vendedora de caramelos, el bloque

01101010011001010110000101101110
receptor‐de‐monedas al detectar las monedas de cinco y diez
centavos generará dos señales: senseN y senseD. Pero el receptor
de monedas es un dispositivo mecánico, por lo tanto, es muy lento
comparado con el circuito digital que debe recibir estas señales.
Esto significa que las señales senseN y senseD estarán presente
durante un gran número de periodos de Clock de la MSS.
La MSS puede tomar estas señales largas como si hubieran
ingresado varias monedas. Por lo tanto, es necesario sincronizar las
señales senseN y senseD para que por cada moneda introducida la
señal que recibe la MSS no dure más que un periodo de Clock.
Para esto se puede implementar un circuito de sincronización que
recibe la señal senseN o senseD de cualquier duración y genera la
salida N o D que dure solo un periodo de Clock.
67
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Sincronización mediante Flip Flops externos
Se conectan dos Flip Flops en cascada de tal forma que la salida N
solo sea verdadera un pulso de reloj, mientras la señal pasa del
01101010011001010110000101101110

primer FF al segundo.
L‐>H L‐>H‐>L
L‐>H
L‐>H H‐>L

Cuando se captura el primer 0, las salidas de los 2 FFs valen 0, pero luego del inversor 
vale 1. Al llegar el primer 1, se captura y la salida del primer FF ahora vale 1 haciendo que 
68
la salida N valga 1. Luego la salida regresa a 0.
Sistemas Digitales II

34
4/6/2020

011000010111001101100001011011100111101001100001
Sincronización mediante el diagrama de estados

También se pueden ajustar señales “lentas” mediante verificaciones en el

01101010011001010110000101101110
diagrama de estados:
Ejemplo : Diseñar una MSS modelo MOORE cuya salida F sea alta, si se presiona y
suelta el pulsador B dos veces.

El estado “a” es de espera inicial. Al presionar el 
pulsador B, la MSS pasa al estado “b”, donde queda 
retenida por tantos pulsos de reloj mientras se 
mantenga presionado B. Solo si se suelta B la MSS 
pasa al estado “c”.
En los estados “d” y “e” se repite el esquema para 
detectar que se presionó B por segunda vez. Luego 
regresa al estado “a” generando alto en la salida F.
69
Sistemas Digitales II

011000010111001101100001011011100111101001100001
DISEÑO DE CONTADORES.

Los Contadores son MSS que pueden ser usadas para realizar las
01101010011001010110000101101110

siguientes funciones:
• Convertir un número de pulsos de entrada en algún código y
almacenarlo.
• Generar un código secuencial especial.
• Como divisor de la frecuencia.
• Como elemento de retardo.
Se los puede clasificar de la siguiente manera:
• Por el modo de operación sencillo o múltiple (ascendente, descendente,
Up/Down).
• Por el número de bits de salida (4 bits, 8 bits).
• Por el número de estados o módulo.
• Por el modo de generar la secuencia (binario, de distancia unitaria).
• Sincrónicos y asincrónicos.

70
Sistemas Digitales II

35
4/6/2020

011000010111001101100001011011100111101001100001
Ejemplo 13.

Diseñar un Contador ascendente, de modo sencillo y módulo 8 (0, 1, 2, 3, 4, 5, 6,

01101010011001010110000101101110
7) con reset asincrónico, que tiene una entrada w. Si w = 0, el circuito se queda en
el mismo estado, si w = 1, el Contador va al siguiente estado y se incrementa.

71
Sistemas Digitales II

011000010111001101100001011011100111101001100001

01101010011001010110000101101110

En el estado a la salida es igual a 0 (z2 z1 z0 = 000), en el estado b la salida es


igual a 1 (z2 z1 z0 = 001), etc.

Para la asignación de códigos de estado necesitamos utilizar tres bits (y2 y1 y0).

Lo más conveniente y simple en el caso de los contadores es codificar cada estado


con un código igual al número que debe tener el Contador en la salida. De esta
manera no se requiere el bloque Decodificador de Salida.

Las señales de salida solo dependen del estado del Contador, es decir, son salidas
incondicionales. Por lo tanto, la MSS diseñada es de modelo Moore.

72
Sistemas Digitales II

36
4/6/2020

011000010111001101100001011011100111101001100001
Tabla de estados presentes y siguientes:

01101010011001010110000101101110
73
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Elaboramos los mapas del Decodificador de Estado Siguiente y utilizamos
flip‐flops tipo D para la Memoria de Estado. 01101010011001010110000101101110

74
Sistemas Digitales II

37
4/6/2020

011000010111001101100001011011100111101001100001
También podemos minimizar con el uso de una variable entrante al
mapa (w).

01101010011001010110000101101110
75
Sistemas Digitales II

011000010111001101100001011011100111101001100001

01101010011001010110000101101110

76
Sistemas Digitales II

38
4/6/2020

011000010111001101100001011011100111101001100001
Las salidas: z2 = y2, z1 = y1, z0 = y0.

Si observamos el circuito del Decodificador de Estado Siguiente se nota como se

01101010011001010110000101101110
complica la circuiteria con cada siguiente bit.

Para generar el estado siguiente para el flip‐flop D0 se requieren dos puertas


AND, para D1 se requieren tres AND, para D2 – cuatro AND.

Si fuera un Contador de 8 bits necesitaríamos nueve puertas AND!


Se puede simplificar el bloque del Decodificador de Estado Siguiente usando flip‐
flops tipo JK.

Primeramente, relacionemos las Tablas de excitación de los flip‐flop tipo D y tipo


JK:

77
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Y luego basados en la tabla de estados presentes y siguientes miramos las 
transiciones para cada variable de próximo estado. 01101010011001010110000101101110

Reemplazando la tabla del flip‐flop D1 por las tablas J1 y K1 y la tabla de D0 por


las tablas J0 y K0 derivamos las siguientes expresiones:
J1 = K1 = y0w
J0 = K0 = w
Sistemas Digitales II 78

39
4/6/2020

011000010111001101100001011011100111101001100001
Esto significa, que si usamos los flip‐flops JK el Decodificador de Estado
Siguiente es más simple.

01101010011001010110000101101110
79
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Diagrama ASM (Algorithmic State Machine).

Los Diagramas de Estados y tablas de Estado Presente y Siguiente son convenientes para
describir el comportamiento de las MSS que tienen pocas entradas y salidas. Para las MSS
01101010011001010110000101101110

más grandes los diseñadores a menudo utilizan una forma diferente de representación
llamada el Diagrama Algorítmico de la Máquina de Estado (ASM). Un Diagrama ASM es
un tipo de diagrama de flujo que puede ser usado para representar las transiciones de
estados y las salidas generadas por una MSS. Un Diagrama ASM utiliza tres tipos de
elementos:

1. Bloque de Estado
Es un rectángulo que es equivalente a un óvalo del Diagrama de Estado.
Dentro del bloque de estado se indican todas las salidas que debe generar la MSS en este
estado que dependen solo de los valores de variables de Estado Presente, es decir, las
salidas incondicionales (tipo MOORE). No es necesario indicar Clr = 1, es suficiente solo
escribir Clr.

80
Sistemas Digitales II

40
4/6/2020

011000010111001101100001011011100111101001100001
2. Bloque de decisión

El diamante indica que en un determinado estado la MSS pregunta por el valor de una de
sus entradas y, dependiendo del valor de ésta entrada elije cual será el estado siguiente.

01101010011001010110000101101110
3. Bloque de salida condicional
Este óvalo indica las señales de salida condicional (modelo Mealy). Estas salidas dependen
de los valores de las variables de Estado Presente y de las entradas de la MSS. La condición
que determina si tales salidas son generadas, se especifican en el bloque de decisión

81
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Analizaremos la equivalencia entre el Diagrama de Estados y el Diagrama
ASM que describen el funcionamiento de la misma MSS. 01101010011001010110000101101110

Para implementar:
1) Asignamos los códigos de estados.

82
Sistemas Digitales II

41
4/6/2020

011000010111001101100001011011100111101001100001
2) Elaboramos la tabla de estados presentes y siguientes.

01101010011001010110000101101110
3) Implementamos los mapas para las variables de estado siguiente Y1 y Y0 y las
Out1 y Out2.

83
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Analizaremos la equivalencia entre el Diagrama de Estados y el Diagrama
ASM que describen el funcionamiento de la misma MSS. 01101010011001010110000101101110
00

01

11

10

Para implementar:
1). Asignamos los mismos códigos de estado.

84
Sistemas Digitales II

42
4/6/2020

011000010111001101100001011011100111101001100001
2) Implementamos los mapas del Decodificador de Estado Siguiente.

Para llenar los mapas del Decodificador de Estado Siguiente se debe analizar los cambios
de variables de cada bit de estado en cada estado del Diagrama ASM. Es aconsejable llenar

01101010011001010110000101101110
al mismo tiempo las celdas correspondientes al mismo estado en todos los mapas. Si algún
código no fuera utilizado se coloca don´t care (φ)

3) Escribimos las ecuaciones de salida.


Tenemos dos salidas de las cuales la salida Out1 es condicional y la salida Out2 es
incondicional. Simplemente en el diagrama ASM verificamos la condición necesaria para
que se active cada salida.

85
Sistemas Digitales II

011000010111001101100001011011100111101001100001
4) Implementación con Multiplexores 4 a 1 para el Decodificador de
Estado Siguiente y puertas lógicas para el Decodificador de salida: 01101010011001010110000101101110

Conexiones 
de Y1

Conexiones 
de Y0

86
Sistemas Digitales II

43
4/6/2020

011000010111001101100001011011100111101001100001
Ejemplo 14:

Reconsideremos la MSS modelo MEALY vendedora de caramelos. Se pide encontrar el


diagrama ASM equivalente e implementar

01101010011001010110000101101110
Formato : D,N / C

10¢ (Dime)
5¢ (Níckel)

87
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Diagrama ASM :
10¢ (Dime)
5¢ (Níckel)
01101010011001010110000101101110

88
Sistemas Digitales II

44
4/6/2020

011000010111001101100001011011100111101001100001
En este caso el diagrama ASM parece ser mas complejo que el diagrama de 
estados. Estos ocurre debido a que hay acciones diversas asociadas con las 
diferentes combinaciones de las entradas.

01101010011001010110000101101110
Implementación:
Mapas del decodificador de estado siguiente:

Salidas condicionales:

89
Sistemas Digitales II

011000010111001101100001011011100111101001100001
El Decodificador de salida se puede implementar con un decoder 2 a 4 o
con puertas lógicas 01101010011001010110000101101110

90
Sistemas Digitales II

45
4/6/2020

011000010111001101100001011011100111101001100001
Diseño de una MSS con Diagrama ASM.

Diseñe una MSS modelo MOORE que controle una Máquina vendedora de colas.

01101010011001010110000101101110
La señal de entrada MP se activa cuando hay una moneda presente en la máquina. Para
recibir una moneda debe activarse la señal MP y luego desactivarse para indicar que la
moneda ingreso y luego terminó de ingresar.
Un circuito externo envía las señales A<B y A=B que comparan la magnitud relativa de la
cantidad de monedas ingresadas en un acumulador (A) y el precio de una cola (B).
Una vez que una moneda ha terminado de ingresar el controlador actúa de acuerdo a
cuanto dinero se ha acumulado con respecto al precio de la cola.
‐Si el dinero recibido es menor al precio debe pedir otra moneda.
‐Si el dinero recibido es igual al precio el controlador debe despachar el producto (activar
señal DP) hasta que se confirme que el producto ya ha sido despachado (se active la señal
PDR). Luego de eso debe encerar el acumulador activando la salida Clear Acc, y regresar al
estado inicial para vender otra cola
‐Si el dinero recibido es mayor al precio, la máquina debe retornar una moneda (activando
la señal RN) hasta que se confirme que la moneda ha sido retornada (se active la señal CR).
Luego de eso el acumulador debe decrementarse una unidad activando la salida Dec Acc, y
luego de eso preguntar nuevamente por la cantidad acumulada versus el precio.
Considere RESET asincrónico.
91
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Sistema de Control de la
máquina vendedora de colas.
01101010011001010110000101101110

92
Sistemas Digitales II

46
4/6/2020

011000010111001101100001011011100111101001100001
Diagrama ASM 000
MP: Moneda presente
A<B: Suma menor al precio
A=B: Suma igual al precio

01101010011001010110000101101110
RN: Retorna Nickel (5 centavos) 001
CR: Cambio listo
Dec Acc: Decrementa Acumulador
DP: Cae producto
PDR: Producto entregado
Clear Acc: Resetea Acumulador 011
Compara el valor 
acumulado de la 
suma con el 
precio

010 110

Entrega el 
Entrega vuelto y 
producto y 
reduce la suma 111 100 resetea la suma

93
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Diseñaremos el circuito Controlador utilizando diferentes métodos
• Método tradicional del diseño para los MSS de entradas múltiples
• Método de un flip‐flop por estado
• Descripción en lenguaje VHDL
01101010011001010110000101101110

I. Diseño del circuito Controlador con el método tradicional.

1) Una vez que tenemos el Diagrama ASM diseñado, se requiere asignar el código de
identificación para cada estado. El numero de bits de código depende del numero de
estados. Para asignar a los siete estados códigos diferentes, se requieren tres bits.
Esto significa que el Bloque de Memoria de Estados debe tener tres flipflops.
Para la asignación de códigos de estados del Diagrama ASM se deben aplicar las mismas
reglas que en la asignación de códigos en el Diagrama de Estados.
Asignaremos los códigos de la siguiente manera:

94
Sistemas Digitales II

47
4/6/2020

011000010111001101100001011011100111101001100001
2) Elaborar los mapas del Decodificador de Estado Siguiente. Para cada
estado se deben analizar las condiciones de transición para cada bit.

01101010011001010110000101101110
Se pueden simplificar los mapas e implementar las expresiones para Y2, Y1 y Y0 utilizando
puertas lógicas.
Algo más practico en este caso sería utilizar Multiplexores 8 a 1 cuyas entradas deben ser
conectadas a las señales respectivas de cada celda como indican los mapas.

95
Sistemas Digitales II

011000010111001101100001011011100111101001100001
3) Como es una MSS Moore, el circuito Controlador debe generar cuatro salidas
incondicionales.
Ecuaciones del Decodificador de Salida:
01101010011001010110000101101110

Las expresiones de salida también pueden ser implementadas utilizando puertas lógicas.
Pero es mas practico usar un Decodificador de 3‐a‐8.

4). Para simular el sistema, podemos utilizar el Editor Gráfico dell software Quartus.
Ingresamos el circuito, luego lo compilamos en modo Funcional y creamos un Default
Symbol que luego podemos utilizar para implementar la Partición Funcional del Sistema
Digital diseñado.
96
Sistemas Digitales II

48
4/6/2020

011000010111001101100001011011100111101001100001

01101010011001010110000101101110
97
Sistemas Digitales II

011000010111001101100001011011100111101001100001
Diagramas de tiempo de la simulación: 01101010011001010110000101101110

98
Sistemas Digitales II

49

También podría gustarte