Titulación: Ingeniería Informática Asignatura: Fundamentos de Computadores Bloque 3: Sistemas secuenciales Tema 8: José Ignacio Martínez Torre Luis Rincón Córcoles
ÍNDICE Bibliografía Introducción Biestables asíncronos Biestables síncronos por nivel Biestables síncronos por flanco Flip-flop SR Flip-flop JK Flip-flop D Flip-flop T Síntesis de máquinas de estados con flip-flops Análisis de máquinas de estados con flip-flops Descripción de máquinas de estados en VHDL 2
BIBLIOGRAFÍA Román Hermida, Ana Mº del Corral, Enric Pastor, Fermín Sánchez Fundamentos de Computadores, cap. 5 Editorial Síntesis Thomas L. Floyd Fundamentos de Sistemas Digitales, cap. 8 Editorial Prentice Hall Daniel D. Gajski Principios de Diseño Digital, cap. 6 Editorial Prentice Hall M. Morris Mano Diseño Digital, cap. 6 Editorial Prentice Hall 3
INTRODUCCIÓN Los elementos de memoria básicos se llaman biestables, por que pueden estar en dos posibles estados: con la salida a o a. Según las entradas de datos de que disponen podemos establecer varios tipos de biestables: S-R: entradas de puesta a (S, set) y puesta a (R, reset) J-K: entradas de puesta a (J, set) y puesta a (K, reset) D: entrada de datos (D) T: entrada de inversión o basculamiento (toggle) Los biestables pueden ser asíncronos o síncronos: Asíncronos (latch): cuando cambia cualquiera de las entradas puede cambiar la salida. Síncronos: la salida puede cambiar sólo cuando la señal de sincronismo lo permite. 4
INTRODUCCIÓN Además, dentro de los biestables síncronos se puede diferenciar entre: Síncronos por nivel (gated latch): la salida puede cambiar cuando la señal de sincronismo está en un determinado nivel(alto o bajo). Síncronos por flanco (low/high edge-triggered flip-flop): la salida puede cambiarcuandolaseñaldesincronismopasadeunnivelaotro. Cuandopasadenivelbajoaalto=>síncronoporflancodesubida. Cuandopasadenivelaltoabajo=>síncronoporflancodebajada. Los más utilizados son los biestables síncronos por flanco, y reciben el nombre de flip-flops. Normalmente los biestables síncronos cuentan con entradas asíncronas que se utilizan para forzar un valor determinado en los mismos al margen del reloj(prevalecen sobre él). Puesta a asíncrona(clear, reset) Puestaaasíncrona(preset,set) 5
INTRODUCCIÓN Tabla de excitación de un biestable: Muestra las entradas que hay que introducir en un biestable para gobernar sus transiciones entre estados.
ÍNDICE Bibliografía Introducción Biestables asíncronos Biestables síncronos por nivel Biestables síncronos por flanco Flip-flop SR Flip-flop JK Flip-flop D Flip-flop T Síntesis de máquinas de estados con flip-flops Análisis de máquinas de estados con flip-flops Descripción de máquinas de estados en VHDL 7
BIESTABLES ASÍNCRONOS El elemento de memoria más sencillo es el latchsr que tiene dos puertas NOR o NAND de dos entradas conectadas entre sí. Es un biestable con un estado de Set(puesta a ) y otro de Reset(puesta a ). Latch SR NOR Asíncrono: 8
BIESTABLES ASÍNCRONOS Latch SR NAND Asíncrono: El latchsr NAND opera con señales activas bajas 9
ÍNDICE Bibliografía Introducción Biestables asíncronos Biestables síncronos por nivel Biestables síncronos por flanco Flip-flop SR Flip-flop JK Flip-flop D Flip-flop T Síntesis de máquinas de estados con flip-flops Análisis de máquinas de estados con flip-flops Descripción de máquinas de estados en VHDL
BIESTABLES SÍNCRONOS POR NIVEL LatchSR NOR síncrono por nivel (gatedlatch): añadiendo unas puertas AND y una señal de sincronismo C, se puede convertir el latchsr NOR asíncrono en uno síncrono por nivel.
BIESTABLES SÍNCRONOS POR NIVEL Latch D síncrono (gated latch): añadiendo un inversor para que la entrada R y la entrada S nunca tengan el mismo valor se elimina el estado prohibido, y se obtiene un biestable D. R S Latch D síncrono (gated latch) con Clear y Preset asíncronos: se pueden añadir entradas de clear y preset asíncronas conectándolas directamente el latch SR interno. CLR PRS ON Preset(Q=) Clear (Q=) No permitido 2
BIESTABLES SÍNCRONOS POR NIVEL Comportamiento indeseado de los biestables disparados por nivel: Desplazamiento de un valor alto X= por 3 latches. Comportamiento deseado:,, (/2) 2 3 Comportamiento obtenido:,, Se debe a que los latchesson transparentes y cuando C=H los cambios en D se propagan Solución: Flip-flopmaster-slaveo disparado por flanco 2 3 2 3 3
ÍNDICE Bibliografía Introducción Biestables asíncronos Biestables síncronos por nivel Biestables síncronos por flanco Flip-flop SR Flip-flop JK Flip-flop D Flip-flop T Síntesis de máquinas de estados con flip-flops Análisis de máquinas de estados con flip-flops Descripción de máquinas de estados en VHDL 4
BIESTABLES SÍNCRONOS POR FLANCO Flip-flopD master-slave: utilizando dos biestablessíncronos por nivel se puede construir un biestable síncrono por flanco. 2 Con Clk= el primer D captura y el segundo D no cambia Con Clk= al revés Este modo de operación implica que se captura D en el flanco de subida del reloj Clk 5
BIESTABLES SÍNCRONOS POR FLANCO Comportamiento deseado de los biestables disparados por flanco: Desplazamiento de un valor alto X= por 3 biestables master-slave. Comportamiento deseado:,, (/2) 2 3 6
BIESTABLES SÍNCRONOS POR FLANCO 2 3,, Desplazamiento correcto 7
BIESTABLES SÍNCRONOS POR FLANCO Flip-flop D disparado por flanco de subida del reloj: Consiste en añadir al latch convencional dos latches que aseguren que en S y en R nunca se da la condición prohibida. 8
BIESTABLES SÍNCRONOS POR FLANCO Set Set Reset Este modo de operación implica que se captura D en el flanco de subida del reloj Clk 9
BIESTABLES SÍNCRONOS POR FLANCO Flip-flopD disparado por flanco de subida del reloj con Clear y Preset: El Flip-flopD base + 2 entradas adicionales CLR y PRS en las NAND del latchde salida CLR PRS No permitido Clear (Q=) Preset(Q=) ON 2
PARÁMETROS DE LOS BIESTABLES Para que un flip-flop funcione correctamente, hay que respetar dos tiempos: Tiempo de preestabilización (setup time): tiempo previo al flanco activo en el que las entradas deben permanecer estables. Tiempo de mantenimiento (hold time): tiempo posterior al flanco activo en el que las entradas deben permanecer estables. D estable D t setup t hold t setup t hold Clk Si no se respetan estos tiempos: metaestabilidad. Elflip-floppuedetomarunvalorqueniesnies. Elflip-flopserecuperasolo,peronosesabecuántotiempotardaenhacerlo. 2
PARÁMETROS DE LOS BIESTABLES Otro tiempo importante es el retardo de propagación(propagation delay): Es el tiempo transcurrido desde el flanco hasta que la salida del biestable presenta el nuevo estado. El tiempo de cambio de valor alto a bajo (t PHL ) y el de bajo a alto (t PLH ) no tienen por qué ser iguales. El retardo de propagación es siempre mayor que el tiempo de mantenimiento. D estable D t setup t hold t setup t hold Clk t PLH t PHL Q 22
FLIP-FLOP SR 23
FLIP-FLOP SR: MODELO VHDL library ieee; use ieee.std_logic_64.all; entity flipflopsr is port(clk, rst, S, R: in std_logic; Q: out std_logic); end flipflopsr; architecture funcional of flipflopsr is begin process(clk, rst) begin if rst = '' then Q <= ''; elsif rising_edge(clk) then if S = '' then Q <= ''; elsif R = '' then Q <= ''; end if; end if; end process; end funcional; 24
FLIP-FLOP JK 25
FLIP-FLOP JK: MODELO VHDL library ieee; use ieee.std_logic_64.all; entity flipflopjk is port(clk, rst, J, K: in std_logic; Q: out std_logic); end flipflopjk; architecture funcional of flipflopjk is signal JK: std_logic_vector( downto ); signal Q_aux: std_logic; begin JK <= J&K; process(clk, rst) begin if rst = '' then Q_aux <= ''; elsif rising_edge(clk) then case JK is when "" => Q_aux <= Q_aux; when "" => Q_aux <= ''; when "" => Q_aux <= ''; when others => Q_aux <= not Q_aux; end case; end if; end process; Q <= Q_aux; end funcional; 26
FLIP-FLOP D 27
FLIP-FLOP D: MODELO VHDL library ieee; use ieee.std_logic_64.all; entity flipflopd is port(clk, rst, D: in std_logic; Q: out std_logic); end flipflopd; architecture funcional of flipflopd is begin process(clk,rst) begin if rst = '' then Q <= ''; elsif rising_edge(clk) then Q <= D; end if; end process; end funcional; 28
FLIP-FLOP T 29
FLIP-FLOP T: MODELO VHDL library ieee; use ieee.std_logic_64.all; entity flipflopt is port(clk, rst, T: in std_logic; Q: out std_logic); end flipflopt; architecture funcional of flipflopt is signal Q_aux: std_logic; begin process(clk,rst) begin if rst = '' then Q_aux <= ''; elsif rising_edge(clk) then if T = '' then Q_aux <= not Q_aux; end if; end if; end process; Q <= Q_aux; end funcional; 3
ÍNDICE Bibliografía Introducción Biestables asíncronos Biestables síncronos por nivel Biestables síncronos por flanco Flip-flop SR Flip-flop JK Flip-flop D Flip-flop T Síntesis de máquinas de estados con flip-flops Análisis de máquinas de estados con flip-flops Descripción de máquinas de estados en VHDL 3
SÍNTESIS DE FSM CON FLIP-FLOPS Hemos visto ya la síntesis de máquinas secuenciales utilizando flip-flops de tipo D. Revisaremos la síntesis, pero empleando ahora flip-flops de otras clases. La dificultad estriba en la síntesis de la función de transición. Con flip-flopsd basta con conocer el estado próximo, y suministrar a la entrada D el valor del estado buscado. Con otros flip-flopshay que conocer el estado actual y el próximo, y en función de ambos establecer el valor de las entradas. En los flip-flopssr y JK será preciso calcular dos funciones por cada variable de estado. Usaremos el mismo ejemplo que en el tema anterior. Materializaremos únicamente máquinas de Mealy. X {a, b} Z {p, q} X Sistema secuencial Z = q p si los caso últimos contrario tres datos son : abb 32
SÍNTESIS DE FSM CON FLIP-FLOPS b/p S Inicio Diagrama de estados a/p b/p a/p S S 2 a/p b/q Tabla de estados y salidas Estado actual Entrada actual A S S /p S /p S S /p S 2 /p S 2 S /p S /q b Estado siguiente / Salida Codificación binaria Tabla de estados y salidas Entrada Salida Estado S(t) X X(t) X Z(t) Z S(t) Q Q Q Q a p S / / b q S / / S 2 / / 33
SÍNTESIS DE FSM CON FLIP-FLOPS: JK Si elegimos biestables JK, tenemos que crear una nueva tabla de excitación y salida. S(t) X Q Q / / / / / / S(t), X S(t+), Z Entradasde excitación Q Q X Q Q Z J K J K X X X X X X X X X X X X X X X X X X X X X X X X X X 34
SÍNTESIS DE FSM CON FLIP-FLOPS: JK Es preciso materializar J, K, J, K y Z. S(t), X S(t+), Z Entradasde excitación Q Q X Q Q Z J K J K X X X X X X X X X X X X X X X X X X X X X X X X X X Función de transición J Z (Q J K K (Q (Q (Q,Q,Q,Q,Q,X ) = X,X,X,X ) = ) = X ) = X Q Función de salida (Q,Q,X) = X Q 35
SÍNTESIS DE FSM CON FLIP-FLOPS: JK Función de transición S(t+) Memoria S(t) Función de salida Z J K Q J Q K 36
SÍNTESIS DE FSM CON FLIP-FLOPS: SR Si elegimos biestables SR, la tabla de excitación y salida cambia. S(t) X Q Q / / / / / / S(t), X S(t+), Z Entradasde excitación Q Q X Q Q Z S R S R X X X X X X X X X X X X X X X X X X X X Sería preciso materializar S, R, S, R y Z. 37
ÍNDICE Bibliografía Introducción Biestables asíncronos Biestables síncronos por nivel Biestables síncronos por flanco Flip-flop SR Flip-flop JK Flip-flop D Flip-flop T Síntesis de máquinas de estados con flip-flops Análisis de máquinas de estados con flip-flops Descripción de máquinas de estados en VHDL 38
ANÁLISIS DE FSM CON FLIP-FLOPS Lo que cambia es la generación de la tabla de excitación y salida. J Entradas: X {,} Salidas: Z {,} Variables de estado: 2 {Q,Q } K Q J La salida depende del estado y de la entrada: es una máquina de Mealy. K Q 39
ANÁLISIS DE FSM: ECUACIONES Y TABLAS - MEALY Función de transición J (Q J K K (Q (Q,Q (Q,Q,Q,Q,X ) = X,X,X,X ) = ) = X ) = X Q Z Función de salida (Q,Q,X) = X Q S(t), X Entradasde excitación S(t+), Z Q Q X J K J K Q Q Z X X X X X X X X X X X X X X X X X X X X X X X X X X La salida depende del estado y de la entrada: es una máquina de Mealy. S(t) X Q Q / / / / / / / / 4
ANÁLISIS DE FSM: DECODIFICACIÓN Y REPRESENTACIÓN FORMAL - MEALY Asignamos nombres y valores a las entradas, los estados y la salida. S(t) X Entrada Salida Estado Q Q X X(t) Z Z(t) Q Q S(t) / / a p S / / b q S / / S 2 / / S 3 Estado actual Entrada actual a S S /p S /p S S /p S 2 /p S 2 S /p S /q S 3 S /p S /q b inicio b/p S b/p b/q S3 a/p a/p S2 a/p S b/p a/p 4
ÍNDICE Bibliografía Introducción Biestables asíncronos Biestables síncronos por nivel Biestables síncronos por flanco Flip-flop SR Flip-flop JK Flip-flop D Flip-flop T Síntesis de máquinas de estados con flip-flops Análisis de máquinas de estados con flip-flops Descripción de máquinas de estados en VHDL 42
Las máquinas de estados se pueden describir fácilmente en VHDL de forma funcional. DESCRIPCIÓN DE MÁQUINAS DE ESTADOS EN VHDL Se describen utilizando 2 procesos, uno que modela el cálculo del estado siguiente y de la salida, y otro proceso que modela la actualización del estado. Se puede crear un tipo de datos enumerado para los estados, o se puede utilizar un vector de bits. Vamos a ver un ejemplo con la siguiente máquina de estados: / / / S / S / S2 Inicio / 43
Ejemplo: entidad y proceso que modela el estado futuro y la salida. DESCRIPCIÓN DE MÁQUINAS DE ESTADOS EN VHDL library ieee; use ieee.std_logic_64.all; entity fsm_funcional is port(clk,rst,x: in std_logic; z: out std_logic); end fsm_funcional; architecture funcional of fsm_funcional is type estados is (S, S, S2); signal ns, ps: estados; --next state y present state begin --proximo estado y salida process(x,ps) begin case ps is when S => if x = '' then ns <= S; z <= ''; else ns <= S; z <= ''; end if; when S => if x = '' then ns <= S; z <= ''; else ns <= S2; z <= '; end if; when S2 => if x = '' then ns <= S; z <= ''; else ns <= S; z <= ''; end if; end case; end process; 44
DESCRIPCIÓN DE MÁQUINAS DE ESTADOS EN VHDL Ejemplo (continuación): proceso que modela la actualización del estado. --actualización del estado process(clk,rst) begin if rst = '' then ps <= S; elsif rising_edge(clk) then ps <= ns; end if; end process; end funcional; 45
Ejemplo (continuación): test-bench. DESCRIPCIÓN DE MÁQUINAS DE ESTADOS EN VHDL library ieee; use ieee.std_logic_64.all; entity test_fsm_funcional is end test_fsm_funcional; architecture test of test_fsm_funcional is signal clk: std_logic := ''; signal rst,x,z: std_logic; begin clk <= not clk after 5 ns; rst <= '', '' after ns, '' after 2 ns; x <= '', '' after 3 ns,'' after 6 ns, '' after 7 ns, '' after 8 ns; inst: entity work.fsm_funcional port map(clk,rst,x,z); end test; 46
Ejemplo (continuación): resultado de la simulación. DESCRIPCIÓN DE MÁQUINAS DE ESTADOS EN VHDL 47