Diseño de máquinas secuenciales sincrónicas 1 ) Dado el diagrama de estados de una maquina sincrónica y la asignación de
Views 144 Downloads 39 File size 1MB
Diseño de máquinas secuenciales sincrónicas 1 ) Dado el diagrama de estados de una maquina sincrónica y la asignación de estados
S2
Dir2
S1
MSS
clk
Dir1
Resetn
Formato: S2 , S1 /Dir2 , Dir1 Resetn 00/00 a 01/01
𝜙1/00
10/10
1𝜙/00 0𝜙/01
𝜙0/10
b
c
Asignación de estados: 𝑦1 0
1
0
a
c
1
𝜙
b
𝑦0
Se pide: 1. 2. 3. 4. 5.
ASM. Mapas de estado siguiente y salida (ASM a mapas). Tabla de Verdad y mapas de E.S. y salida (D.E. a Tabla y Tabla a mapas). Implementación, con multiplexores y flip-flop tipo D. Código VHDL completo y diagrama de tiempo (simulado).
ASM: Viendo el diagrama de estados podemos formar el diagrama ASM, solo tenemos que ver las condiciones de entrada (bloque de decisión) y las salidas que sean 1 (inicio/fin). Las salidas que tienen un inicio/fin(ovalo), son salidas tipo Mealy, es decir, varían acorde la condición de entrada.
Resetn
00
Ta
0 0 S2
S1
S1
1
0
Dir1
Dir2
Tb
11
Tc
Dir1
1
1
S2
0
10
Dir2
0
1 S1
Mapas de Karnaugh -
Para el mapa de estado siguiente, nos posicionamos en un estado cualquiera, el inicial preferible podría ser… (Ta), y vemos las rutas posibles que tiene este estado al llegar a otros estados, solo tomamos en cuenta los estados que tengan en su código, el bit de 1 debido a que éste se multiplica por la ecuación resultante en la trayectoria.
En Ta (00): En el camino rojo vemos que hay unas dos ecuaciones en la posición de 𝑦1 : ̅̅̅2 𝑆1 + 𝑆2 𝑆̅1 = 𝑆2 ⊕ 𝑆1 𝑆 En la trayectoria azul, hay un solo camino en la posición de 𝑦0 : ̅̅̅2 𝑆1 𝑆 Como no hay más caminos, esta dupla la colocamos en el mapa de Karnaugh en la posición 00 y así continuamos con el siguiente estado: En Tb (11): Camino naranja, posición 𝑦1 : ̅̅̅ 𝑺𝟐 Camino verde, posición 𝑦0 : ̅̅̅2 𝑆 En Tc (10): Camino morado, posición 𝑦1 : 𝑆̅1 En 𝑦0 no hay presencia de 1 en la trayectoria, entonces es 0
(𝑌1 , 𝑌0 ): 𝑦1 0
1
0
̅̅̅2 𝑆1 𝑆2 ⊕ 𝑆1 , 𝑆
𝑆̅1 , 0
1
𝜙 ,𝜙
̅̅̅ ̅̅̅2 𝑺𝟐 , 𝑆
𝑦0
Decodificador de estado siguiente
Para la salida, solo vemos los bloques de inicio/fin (ovalos), ya que estos son 1’s a la salida, así mismo, nos centramos en un estado, preferible el estado inicial, y ver las trayectorias hacia otro estado, pero solo en donde haya las condiciones de salida. La posición la determina la variable de salida acorde al formato establecido.
En la posición de Dir1: Camino rojo (Ta) ̅̅̅2 𝑆1 𝑆 Camino verde (Tb) ̅̅̅2 𝑆 En la posición de Dir2: Camino azul (Ta) 𝑆2 𝑆̅1 Camino morado (Tc) 𝑆̅1
(𝐷𝑖𝑟2 , 𝐷𝑖𝑟1 ):
(deco de salida) 𝑦1 0
1
0
̅̅̅2 𝑆1 S2 S̅1 , 𝑆
𝑆1 , 0
1
𝝓,𝝓
0 , ̅̅̅ 𝑆2
𝑦0
Por tablas de verdad: E.P. 𝑦1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
IN 𝑦0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1
𝑌1 0 1 1 0 𝜙 𝜙 𝜙 𝜙 1 0 1 0 1 1 0 0
𝑆2 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1
𝑆2 ⊕ 𝑆1
𝜙
𝑆̅1
̅̅̅2 𝑆
E.S. 𝑆1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 𝑌0 0 1 0 0 𝜙 𝜙 𝜙 𝜙 0 0 0 0 1 1 0 0
𝑌1 0 1 1 0 𝜙 𝜙 𝜙 𝜙 1 0 1 0 1 1 0 0
̅̅̅2 𝑆1 𝑆
𝜙
0
̅̅̅2 𝑆
OUT 𝑌0 0 1 0 0 𝜙 𝜙 𝜙 𝜙 0 0 0 0 1 1 0 0
𝐷𝑖𝑟2 0 0 1 0 𝜙 𝜙 𝜙 𝜙 1 0 1 0 0 0 0 0 𝐷𝑖𝑟2 0 0 1 0 𝜙 𝜙 𝜙 𝜙 1 0 1 0 0 0 0 0
𝐷𝑖𝑟1 0 1 0 0 𝜙 𝜙 𝜙 𝜙 0 0 0 0 1 1 0 0
𝑆2 𝑆̅1
𝜙
𝑆1
0
𝐷𝑖𝑟1 0 1 0 0 𝜙 𝜙 𝜙 𝜙 0 0 0 0 1 1 0 0
̅̅̅2 𝑆1 𝑆
𝜙
0
̅̅̅2 𝑆
Este método es Variable Entrante al Mapa, la tabla debe ser reducida hasta que tenga las variables de estado actual, después éstas salidas colocarlas en un mapa de Karnaugh: Decodificador de Estado Siguiente: 𝑦1 0
1
0
̅̅̅2 𝑆1 𝑆2 ⊕ 𝑆1 , 𝑆
𝑆̅1 , 0
1
𝜙 ,𝜙
̅̅̅ ̅̅̅2 𝑺𝟐 , 𝑆
0
1
0
̅̅̅2 𝑆1 S2 S̅1 , 𝑆
𝑆1 , 0
1
𝜙,𝜙
̅̅̅2 0,𝑆
𝑦0
Decodificador de Salida 𝑦1 𝑦0
Si existen demasiadas entradas, no es recomendable hacer una tabla de verdad debido a la cantidad excesiva de combinaciones que se deben realizar, cuando este problema se presenta, es recomendable realizar el diagrama ASM y posteriormente realizar los mapas.
Implementación: S2
S1
𝑦1 𝑦1
𝑦0
𝑦0 S2 0 S1
0
1 FF-D
1 MUX
Y1
8-1
Dir2
MUX 8-1
2
D Q
2
𝑦1 3
Clock reset
3
𝑦1
𝑦0 𝑦1
𝑦0
0 S1 1 MUX 8-1
0
FF-D Y0
S2
D Q
2 Clock reset
3
𝑦0
1 2 3
Clock
reset
MUX 8-1
Dir1
VHDL: library ieee; use ieee.std_logic_1164.all; -- black box o bloque general con entradas y salidas entity ejemplo_e_14 is port(S1,S2,clk,Resetn: in std_logic; Dir1,Dir2: out std_logic); end ejemplo_e_14; architecture behaviour of ejemplo_e_14 is -- estados type states is (Ta,Tb,Tc); signal y: states:=Ta; begin -- deco de estado siguiente process(clk,Resetn) begin if Resetn = '0' then y if I1 = '0' then y