Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
SNTESIS VHDL
X(t)
Z(t)
Q(t+1)
clk
f: funcin de transicin g: funcin f i de d salida lid X(t)={x1(t), x2(t), , xn(t)}: variables de entrada Z(t)={z1(t), z2(t), , zn(t)}: variables de salida
Q(t)={q1(t), q2(t), , qn(t)}: estado de la mquina Q(t+1)={q1(t+1), q2(t+1), , qn(t+1)}: prximo estado de la mquina clk : reloj del sistema
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
SNTESIS VHDL
Memoria
Z(t)
clk
Lgica secuencial
Mquinas de Mealy: las salidas del sistema dependen tanto de las entradas del sistema como del estado actual. Q(t+1)= f[X(t), Q(t)] Z(t) = g[X(t), Q(t)]
Mquina de Moore: las salidas del sistema slo dependen del estado actual. Q(t+1)= f[X(t), Q(t)] Z( ) = g[Q(t)] Z(t) [Q( )]
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
SNTESIS VHDL
El clculo del prximo estado se realiza mediante un proceso combinacional, en la lista de sensibilidad se introducen las entradas de la mquina y el estado actual.
process (entradas, estado) begin -- Clculo del prximo estado en funcin de las entradas case estado is when estado0 => if (entradas = valor) then prox_estado <= ; else prox_estado <= ; end if; . when estadon => if (entradas = valor) then prox_estado <= ; else prox_estado <= ; end if; end case; end process;
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
SNTESIS VHDL Un proceso secuencial almacena un elemento de memoria en el que se almacena el estado actual.
process (reloj, entradas_asncronas) begin if (evaluacin_entradas_asncronas) (evaluacin entradas asncronas) then estado <= estado0; -- asignacin del estado inicial elsif relojevent and reloj=1 then estado <= prox_estado; -- asignacin del siguiente estado end if; end process;
El clculo de las salidas se modela mediante un proceso combinacional en cuya lista de sensibilidades se debe incluir el estado actual y las entradas.
process (entradas, (entradas estado) begin -- Clculo de las salidas en funcin del estado actual case estado is when estado0 => if (entradas = valor) then salidas <= ; ; else salidas <= ; end if; . when estadon => if (entradas = valor) then salidas <= ; else salidas <= ; end if; end case; end process;
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
SNTESIS VHDL Ejemplo:
0/0 X RST Z CLK Esquema de la mquina 1/1 q0 0/1 0/0 q1 1/0 Grafo de funcionamiento 1/0 q2 q qi X/Z
entity FSM1 is port ( X, RST, CLK : in std_logic; Z : out std_logic); end FSM1;
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
SNTESIS VHDL
architecture rtl of FSM1 is type estadosFSM is (q0, q1, q2); signal estado, prox_estado : estadosFSM; begin process (X, estado) begin case estado is when q0 => if (X='0') then prox_estado <= q0; else prox_estado <= q1; end if; when q1 => if (X='0') then prox_estado <= q0; else prox_estado <= q2; end if; when q2 => if (X='0') then prox_estado <= q0; else prox_estado <= q2; end if; end case; end process; process (CLK, RST) begin if (RST='1') then estado <= q0; elsif CLK CLK'event event and CLK= CLK='1' 1 then estado <= prox_estado; end if; end process; process (X, estado) begin case estado is when q0 => if (X='0') then Z<= '0'; else Z<='1'; end if; when q1 => Z<='0'; when q2 => Z<=not X; end case; end process; end rtl;
METODOLOGAS Y HERRAMIENTAS PARA EL DISEO DE SISTEMAS DIGITALES
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
SNTESIS VHDL
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
SNTESIS VHDL Ejemplo:
process (CLK, RST) begin if ( (RST='1') ) then estado <= q0; elsif CLK'event and CLK='1' then case estado is when q0 => if (X='0') then estado <= q0; q ; else estado <= q1; end if; when q1 => if (X='0') then estado <= q0; else estado <= q2; end if; when q2 => if (X='0') then estado <= q0; else estado <= q2; end if; end case; end if; end process;
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
SNTESIS VHDL
salidas <= ; ;
if (entradas = valor) then estado <= ; else estado <= ; end if; . when estadon =>
salidas <= ;
if (entradas = valor) then estado <= ; else l estado <= ; end if; end case; end if; end process;
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
SNTESIS VHDL Ejemplo:
process (CLK, RST) begin if (RST=1) then estado <= q0; Z <= 0; elsif CLKevent and CLK=1 then case estado is when q0 => > Z <= 0; if (X=1) then estado <= q1; else estado <= q2; end if; when q1 => Z <= 0; if (X=1) then estado <= q2; else estado < <= q0; end if; when q2 => Z <= 1; if (X=1) then estado <= q0; else estado <= q2; end if; end case; end if; end process;
X RST CLK Z
q0 0 0 1 0 1 q2 1
qi Z
q1 0
10
Microelectrnica
ITT-Sistemas Electrnicos
EL LENGUAJE VHDL
SNTESIS VHDL
Codificacin de estados
Binaria : no es ptima en trminos de retardo y rea cuando el nmero de estados es elevado. q0=000 q0= 000 , q1= q1=001 001 , q2= q2=010 010 , q3= q3=011 011 Gray: elimina los glitches que pudieran aparecer cuando se pasa de un estado al siguiente: q0=000, q1=001, q2=011, q3=010 One H O Hot t : reduce d el l nmero d de recursos utilizados tili d para mquinas con 8 o ms estados: q0=0001, q1=0010, q2=0100, q3=1000 El tipo de codificacin se puede fijar mediante una opcin del sintetizador o bien mediante atributos declarados en los paquetes que se suministran junto a la herramienta. Leonardo Spectrum de Mentor
type estadosFSM is (q0, q1, q2); attribute TYPE_ENCODING_STYLE of estadoFSM : type is ONEHOT;
Synopsis
type estadosFSM is (q0, q1, q2); attribute ENUM_ENCODING : STRING; attribute ENUM_ENCODING of estadoFSM : type is 001 010 011;
Para que haya coincidencia entre los resultados de sntesis y simulacin s u ac es necesario ecesa o usar usa una u a seal se a de inicializacin c a ac que lleve al sistema al estado inicial.
11