Vous êtes sur la page 1sur 5

Mquinas de Estado Sincrnicas

Descripcin en VHDL
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 2
Elementos para la Descripcin de
Mquinas de Estado Sincrnicas
VHDL permite varias formas de hacer la descripcin de una Mquina de Estados
Sincrnica.
Cualquiera que sea la forma usada, la descripcin debe realizar las funciones de
los bloques constructivos del modelo general de la Mquina de Estados
Sincrnica mostrado en la figura.
LGICA
FORMADORA
DEL ESTADO
FUTURO
REGISTRO
DE
ESTADO
(Conjunto de
Flip-Flops)
LGICA
FORMADORA
DE LA
SALIDA
REGISTRO
DE
SALIDA
(Conjunto de
Flip-Flops)
(state_next)
ESTADO FUTURO
ESTADO
INTERNO
(state_reg)
clk
ENTRADAS
DE CONTROL
SINCRNICAS
(ACTUALES)
SALIDA
REGISTRADA
SINCRNICA
(output_reg)
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 3
Elementos para la Descripcin de
Mquinas de Estado Sincrnicas
La Arquitectura podr incluir cuatro procesos concurrentes a saber:
1) Un Proceso Registro de Estado (Secuencial) donde se describe la
transformacin del Estado Futuro (state_next) al Estado Actual
(state_reg), sensible a la seal clk.
2) Un Proceso Lgica de Estado Futuro (Combinacional) que define el
Estado Futuro de la Mquina, sensible al Estado Actual y a las Seales de
Entrada.
3) Un Proceso (o Flujo de Datos) Lgica de Salida (Combinacional) que
define las Salidas de la Mquina, en funcin del Estado Actual y de las
Seales de Entrada (Mealy) o del Estado Actual solamente (Moore).
4) Un Proceso Salida Registrada (Secuencial) donde se registra la Salida
generada en el Proceso Lgica de Salida, sensible a la seal clk.
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 4
Elementos para la Descripcin de
Mquinas de Estado Sincrnicas
Como siempre, la declaracin de entidad debe incluir todas las Seales de
Entrada (Control e Inicializacin) y de Salida.
Para hacer que las sentencias dentro de un proceso sensible a la seal clk
actualicen las asignaciones con su flanco (ascendente o descendente), se
requiere un elemento adicional vinculado a la seal clk, el atributo event, que
se adhiere al nombre de la seal con una comilla simple (clkevent).
Ahora el proceso evala el valor de tipo booleano que devuelve clkevent
(true si hubo un evento, false si no); cuando es true, el proceso actualiza las
asignaciones incluidas en l.
Ejemplo: if clkevent and clk=1 then . . . (flanco ascendente)
Otra forma de detectar un Flanco de Seal es usando las Funciones Especficas
definidas en el paquete IEEE 1164.
-------------------------------------------------------------------------------
-- edge detection
-------------------------------------------------------------------------------
FUNCTION RISING_EDGE(SIGNAL s : std_ulogic) RETURN BOOLEAN;
FUNCTION FALLING_EDGE(SIGNAL s : std_ulogic) RETURN BOOLEAN;
Ejemplo: if rising_edge(clk) then . . . (flanco ascendente)
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 5
Ejemplo 1: Detector de Secuencia (Mealy)
Se busca disear una Mquina de Estados Sincrnica con una entrada y
formada por una sucesin indefinida de bits sincronizados con el flanco
ascendente de clk y una salida o. La salida debe hacerse o=1 cuando detecte
que en el perodo de clk actual, la entrada se encuentra en 1 y que en los
tres perodos de clk anteriores la secuencia en la entrada fue 101. Como
referencia, se da un ejemplo de las secuencias de entrada y salida. Note que
por tratarse de una sucesin ininterrumpida de bits, un mismo bit puede ser el
1 final de la secuencia a detectar y el primero de la siguiente.
0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 o
1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 0 y
Tiempo
s0
s1 s2
s3 y
y
y
y
y
y
1 <= o / y
y
ini
Estado
Formato del
Diagrama
valor <= o / exp[y]
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 6
Descripcin del Detector (FSM seq_detect_me)
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 7
Descripcin del Detector (FSM seq_detect_me)
s1/1 s2/0 s3
s3/0 s0/0 s2
s1/0 s2/0 s1
s1/0 s0/0 s0
state_next/o state_next/o state_reg
y=1 y=0
TABLA DE ESTADOS
Y SALIDA
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 8
Descripcin del Detector (FSM seq_detect_me)
Cronograma
Salida condicionada
ini
s0
s1 s2
s3 y
y
y
y
y
y
1 <= o / y
y
ini
s1/1 s2/0 s3
s3/0 s0/0 s2
s1/0 s2/0 s1
s1/0 s0/0 s0
state_next/o state_next/o state_reg
y=1 y=0
TABLA DE ESTADOS
Y SALIDA
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 9
Ejemplo 2: Detector de Secuencia (Moore)
Se busca disear una Mquina de Estados Sincrnica con una entrada y
formada por una sucesin indefinida de bits sincronizados con el flanco
ascendente de clk y una salida o. La salida debe hacerse o=1 si en los
cuatro perodos de clk anteriores al actual, la secuencia de entrada fue
1011. Como referencia, se da un ejemplo de las secuencias de entrada y
salida. Note que por tratarse de una sucesin ininterrumpida de bits, un mismo
bit puede ser el 1 final de la secuencia a detectar y el primero de la siguiente.
0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 o
1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 0 y
Tiempo
Formato del
Diagrama
Estado
o <= valor
exp[y]
s0
ini
s1 s2 s3
s4
1 <= o
y
y
y
y
y
y
y
y y
y
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 10
Descripcin del Detector (FSM seq_detect_mo)
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 11
Descripcin del Detector (FSM seq_detect_mo)
1 s1 s2 s4
0 s4 s2 s3
0 s3 s0 s2
0 s1 s2 s1
0 s1 s0 s0
state_next state_next state_reg
o
y=1 y=0
TABLA DE ESTADOS
Y SALIDA
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 12
Descripcin del Detector (FSM seq_detect_mo)
Cronograma
ini
1 s1 s2 s4
0 s4 s2 s3
0 s3 s0 s2
0 s1 s2 s1
0 s1 s0 s0
state_next state_next state_reg
o
y=1 y=0
TABLA DE ESTADOS
Y SALIDA
s0
ini
s1 s2 s3
s4
1 <= o
y
y
y
y
y
y
y
y y
y
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 13
Ejemplo 3: Detector de Secuencia (Salida Registrada)
Se busca disear una Mquina de Estados Sincrnica con una entrada y
formada por una sucesin indefinida de bits sincronizados con el flanco
ascendente de clk y una Salida o Registrada. La Salida Futura o_next
(generada un perodo de clk antes que o) debe hacerse o_next=1 cuando
se detecte que en el perodo de clk actual, la entrada se encuentra en 1 y
que en los tres perodos de clk anteriores la secuencia en la entrada fue
101. Como referencia, se da un ejemplo de las secuencias de entrada y
salidas (o_next y o). Note que por tratarse de una sucesin ininterrumpida de
bits, un mismo bit puede ser el 1 final de la secuencia a detectar y el primero
de la siguiente.
0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 o
0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 o_next
1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 0 y
Tiempo
s0
s1 s2
s3 y
y
y
y
y
y
1 <= o_next / y
y
ini
Estado
Formato del
Diagrama
valor <= o_next / exp[y]
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 14
Descripcin del Detector (FSM seq_detect_me_reg)
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 15
Descripcin del Detector (FSM seq_detect_me_reg)
s1/1 s2/0 s3
s3/0 s0/0 s2
s1/0 s2/0 s1
s1/0 s0/0 s0
state_next/o_next state_next/o_next state_reg
y=1 y=0
TABLA DE ESTADOS
Y SALIDA
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 16
Descripcin del Detector (FSM seq_detect_me_reg)
Cronograma
ini
s0
s1 s2
s3 y
y
y
y
y
y
1 <= o_next / y
y
ini
La salida registrada test_o, no tiene glitches y est demorada un ciclo de reloj
respecto a la seal o_next.
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 17
Ejemplo 4: Detector de Secuencia (Moore) con
Asignacin Casi One-Hot
Se busca disear una Mquina de Estados Sincrnica con una entrada y
formada por una sucesin indefinida de bits sincronizados con el flanco
ascendente de clk y una salida o. La salida debe hacerse o=1 si en los
cuatro perodos de clk anteriores al actual, la secuencia de entrada fue
1011. Como referencia, se da un ejemplo de las secuencias de entrada y
salida. Note que por tratarse de una sucesin ininterrumpida de bits, un mismo
bit puede ser el 1 final de la secuencia a detectar y el primero de la siguiente.
Se requiere adems realizar una asignacin de Cdigo de Estado Casi One-Hot,
como se ilustra en la figura.
0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 o
1 1 1 1 0 1 1 0 1 0 1 0 1 0 1 1 1 1 0 1 0 0 y
Tiempo
0 0 0 1 s4
0 0 1 0 s3
0 1 0 0 s2
1 0 0 0 s1
0 0 0 0 s0
state_reg(0) state_reg(1) state_reg(2) state_reg(3) Estado
Seal de Estado Actual
s0
ini
s1 s2 s3
s4
1 <= o
y
y
y
y
y
y
y
y y
y
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 18
Descripcin del Detector (FSM seq_detect_mo)
Process

Process Properties

HDL Options

Property Name:
FSM Encoding Algorithm
Value: User
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 19
Descripcin del Detector (FSM seq_detect_mo)
1 STATE_1 STATE_2 STATE_4
0 STATE_4 STATE_2 STATE_3
0 STATE_3 STATE_0 STATE_2
0 STATE_1 STATE_2 STATE_1
0 STATE_1 STATE_0 STATE_0
state_next state_next state_reg
o
y=1 y=0
TABLA DE ESTADOS
Y SALIDA
UTN-FRBA - TCNICAS DIGITALES I Ing. Pablo Caldirola 20
Descripcin del Detector (FSM seq_detect_mo)
Cronograma
ini
0000
ini
0001 0010 0100
1000
1 <= o
y
y
y
y
y
y
y
y y
y