SlideShare une entreprise Scribd logo
1  sur  10
M�quinas de estado finito en VHDL
Las m�quinasde estadofinito,m�sconocidasporsuacr�nimoeningl�sFSM(FiniteState Machine),
se utilizan ampliamente en el dise�o de circuitos digitales (adem�s de en otros �mbitos de la
ingenier�a,comola programaci�n),para describirel comportamientode unsistemaseg�nel valor
de sus entradasyde c�mo vancambiandoenel tiempo. �staesunadefinici�nparcial peroque nos
permite hacernos una primera idea intuitiva. Desde el punto de vista de las FSM, un sistema est�
compuestode estados porlosque vapasandoel sistema,de se�alesdeentrada que modificanesos
estadosyde se�alesde salida que puedenutilizarse paraconocerel estadodel sistemayactuaren
consecuencia. Un ejemplo muy visual podr�a ser un sem�foro, el cu�l dispone de tres estados
diferentes, uno para cada color. Las entradas del sistema las podr�a generar un temporizador que
activa una se�al cada cierto tiempo, indicando que hay que pasar al siguiente estado.Por �ltimo,
las salidas del sistema podr�an ser tres se�ales que indiquenqu� l�mpara, de las tres disponibles,
tiene que encenderse.Para representar una m�quina de estados se utilizan diagramasde estados
como el siguiente.
Cada c�rculo representaunestado.En este caso tenemoscuatroestadosque se llamanS1, S2, S3 y
S4. El estadoS1 tiene unaflechaque indicaque esel estadoel inicial,al que se entra tras un reset
del sistema.El S4tiene undoble c�rculo,que indicaque esunestadofinal.Losestadosest�nunidos
por unasflechasllamadastransiciones,queindicanc�moevolucionael sistemade unestadoaotro
seg�nse activanlas se�alesde entrada.Eneste casoconcretohay tresse�alesde entrada(a,b,c y
d). Si estandoenel estadoS1 se activa la se�al a, el sistemaevolucionar�al estadoS2. Del mismo
modo,si estandoenel estadoS2se activalase�al b,el sistemaevolucionar�de nuevoal estadoS1.
En este caso no hay se�ales de salida. Si las hay pueden ponerse dentro del c�rculo o, para no
sobrecargar el diagrama,se puedendefinir fuerade �ste,porejemploenunatabla.Vamosa crear
una FSM muy b�sica y a implementarla en VHDL, para poder llevarla a una FPGA. La m�quina que
vamos a implementar es la mostrada en el siguiente diagrama de estados.
Tenemos cuatro estados (S0, S1, S2 y S3) y dos se�ales de entrada (A y B). No hemos puesto en el
diagrama las se�ales de salida, pero las definimos en la siguiente tabla:
S0 -> Y0
S1 -> Y1
S2 -> Y2
S3 -> Y3
Por lo tanto, tenemos cuatro se�ales de salida. La se�al Y0 se activa cuando el sistema est� en el
estado S0, La Y1 cuando el sistema est� en el estado S1 y as� sucesivamente. Como se puede
observar,lasalidadel sistemadependeexclusivamentedelestadoenelquese encuentraelsistema.
Cuando ocurre esto decimos que se trata de una m�quina de estados de tipo Moore. Si la salida
depende del estadoy adem�s de las entradasactuales del sistema, se tratar�a de una m�quina de
estados de tipo Mealy. Se puede demostrar que ambos modelos son equivalentes, as� que aqu�
vamos a quedarnos con el primer tipo que es m�s sencillo.
A nivel f�sico, una de las formas m�s efectivas de implementar una FSM es seg�n el siguiente
esquema.
Obviamente necesitamosalg�nelementode memoriaparaalmacenarel estadoactual del sistema.
Nosotros usaremos un registro de biestablesde tipo D (es por lo tanto un bloque secuencial). Los
otros dos bloques son puramente combinacionales. El primero se encarga de generar el estado
siguienteapartirdel estadoactual yde lasentradasdel sistema.Adem�s,necesitamosotrocircuito
para generar las se�ales de salida a partir del estado actual (recordemos que es una m�quina de
tipo Moore).
Voy a llevar a la pr�ctica el circuito usando una FPGA. En concreto usar� la placa BASYS 3 con una
FPGA Artix 7 de Xilinx.Voyautilizarel bot�n0comose�al de resetylosbotones4y 2 comose�ales
A y B respectivamente. Las salidas Y0 a Y3 las voy a asociar a los LEDs 0 a 3. Para evitar utilizar
circuitos antirebote para los pulsadores,he dise�ado el diagrama de forma que dos pulsaciones
seguidas del mismo bot�n no hagan evolucionar el sistema a otro estado.
Como tenemoscuatroestados,podr�amosusar dos bitpara codificarlosestados.Por ejemplo:S0-
>00, S1->01, S2->10 y S3->11. Sinembargo,lo m�s habitual esdejarque el sintetizadorlohagapor
nosotros definiendo un tipo para los estados tal y como se ve en la siguiente definici�n. As�, si
a�adimos nuevos estados, no tenemos que andar redimensionando el registro de estados.
-- declaraciones modelo FSM
type STATES is (S0, S1, S2, S3);
signal state_reg, state_next: STATES;
Veamosc�mose implementaenVHDL cada uno de estostres bloques.Empecemosporel registro
de estados.
-- registro de estados
process(CLK)
begin
if CLK'event and CLK='1' then
if RST='1' then
state_reg <= s0;
else
state_reg <= state_next;
end if;
end if;
end process;
El registrode estadostiene unase�al de resets�ncronaque llevaal sistemaal estadoS0.Si la l�gica
de codificaci�n del estado siguiente genera un nuevo estado, este se almacenar� en el registro,si
no,la salidadel registrose mantiene.Veamosc�moesel circuito que genera el estado siguiente.
-- L�gica de estado siguiente (circuito combinacional)
process (state_reg, A, B)
begin
state_next <= state_reg;
case state_reg is
when S0 =>
if A='1' then
state_next <= S1;
end if;
when S1 =>
if B='1' then
state_next <= S2;
end if;
when S2 =>
if A='1' then
state_next <= S3;
end if;
when S3 =>
state_next <= S3;
end case;
end process;
El estadosiguientese generaapartir del estadoactual y de las entradasA y B, por lo que ponemos
estastresse�alesenlalistade sensibilidaddelproceso.Paraevitarque el sintetizadorgenere alg�n
latchoelementode memoria,asignamospordefectoel estadoactual alase�al de estadosiguiente.
El c�digoVHDLdescribe losestadosy lastransicionesasociadasalasentradasseg�nel diagramade
estados que definimos m�s arriba, de forma que, de ser necesario, asigna el valor del estado
siguiente ala variable state_nextcuandohayun cambio en lasentradas o en el estado.Por �ltimo
echamos un vistazo al circuito de decodificaci�n para las salidas.
-- salida tipo Moore
process (state_reg)
begin
-- estableciendo la salida por defecto
-- nos aseguramos de crear un circuito
-- combinacional sin latches.
Y0 <= '0';
Y1 <= '0';
Y2 <= '0';
Y3 <= '0';
case state_reg is
when S0 => Y0 <= '1';
when S1 => Y1 <= '1';
when S2 => Y2 <= '1';
when S3 => Y3 <= '1';
end case;
end process;
De nuevo, para evitar que el sintetizador cree elementos de memoria, asignamos un valor por
defecto a las salidas (en este caso 0), y seg�n el estado actual, se activa la salida correspondiente
seg�n definimos en la tabla de arriba.
El c�digo VHDL completo de nuestra FSM es el siguiente.
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity FSM is
Port ( CLK : in STD_LOGIC;
BTN : in STD_LOGIC_VECTOR (4 downto 0);
LED : out STD_LOGIC_VECTOR (15 downto 0));
end FSM;
architecture Behavioral of FSM is
-- alias
alias RST : STD_LOGIC is BTN(0);
alias A : STD_LOGIC is BTN(4);
alias B : STD_LOGIC is BTN(2);
alias Y0 : STD_LOGIC is LED(0);
alias Y1 : STD_LOGIC is LED(1);
alias Y2 : STD_LOGIC is LED(2);
alias Y3 : STD_LOGIC is LED(3);
-- declaraciones modelo FSM
type STATES is (S0, S1, S2, S3);
signal state_reg, state_next: STATES;
begin
-- registro de estados
process(CLK)
begin
if CLK'event and CLK='1' then
if RST='1' then
state_reg <= s0;
else
state_reg <= state_next;
end if;
end if;
end process;
-- L�gica de estado siguiente (circuito combinacional)
process (state_reg, A, B)
begin
state_next <= state_reg;
case state_reg is
when S0 =>
if A='1' then
state_next <= S1;
end if;
when S1 =>
if B='1' then
state_next <= S2;
end if;
when S2 =>
if A='1' then
state_next <= S3;
end if;
when S3 =>
state_next <= S3;
end case;
end process;
-- salida tipo Moore
process (state_reg)
begin
-- estableciendo la salida por defecto
-- nos aseguramos de crear un circuito
-- combinacional sin latches.
Y0 <= '0';
Y1 <= '0';
Y2 <= '0';
Y3 <= '0';
case state_reg is
when S0 => Y0 <= '1';
when S1 => Y1 <= '1';
when S2 => Y2 <= '1';
when S3 => Y3 <= '1';
end case;
end process;
end Behavioral;
Os dejoel archivode restriccionesparalaplacaBASYS 3 que he usadopara este ejemplo,dondese
definenlospuertosde lospulsadores,losLEDsy el reloj del sistema.
## LEDs
set_property PACKAGE_PIN U16 [get_ports {LED[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[0]}]
set_property PACKAGE_PIN E19 [get_ports {LED[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[1]}]
set_property PACKAGE_PIN U19 [get_ports {LED[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[2]}]
set_property PACKAGE_PIN V19 [get_ports {LED[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[3]}]
set_property PACKAGE_PIN W18 [get_ports {LED[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[4]}]
set_property PACKAGE_PIN U15 [get_ports {LED[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[5]}]
set_property PACKAGE_PIN U14 [get_ports {LED[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[6]}]
set_property PACKAGE_PIN V14 [get_ports {LED[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[7]}]
set_property PACKAGE_PIN V13 [get_ports {LED[8]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[8]}]
set_property PACKAGE_PIN V3 [get_ports {LED[9]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[9]}]
set_property PACKAGE_PIN W3 [get_ports {LED[10]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[10]}]
set_property PACKAGE_PIN U3 [get_ports {LED[11]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[11]}]
set_property PACKAGE_PIN P3 [get_ports {LED[12]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[12]}]
set_property PACKAGE_PIN N3 [get_ports {LED[13]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[13]}]
set_property PACKAGE_PIN P1 [get_ports {LED[14]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[14]}]
set_property PACKAGE_PIN L1 [get_ports {LED[15]}]
set_property IOSTANDARD LVCMOS33 [get_ports {LED[15]}]
## Botones
set_property IOSTANDARD LVCMOS33 [get_ports {BTN[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports {BTN[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports {BTN[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {BTN[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {BTN[0]}]
## BTNL -> W19
set_property PACKAGE_PIN W19 [get_ports {BTN[4]}]
## BTND -> U17
set_property PACKAGE_PIN U17 [get_ports {BTN[3]}]
## BTNR -> T17
set_property PACKAGE_PIN T17 [get_ports {BTN[2]}]
## BTNU -> T18
set_property PACKAGE_PIN T18 [get_ports {BTN[1]}]
## BTNC -> U18
set_property PACKAGE_PIN U18 [get_ports {BTN[0]}]
## Reloj CLK conectado a W5
set_property IOSTANDARD LVCMOS33 [get_ports {CLK}]
set_property PACKAGE_PIN W5 [get_ports {CLK}]
create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5}
[get_ports CLK]
En la simulaci�nde laFSMvemoscomo evolucionael circuitodesde S0a S3 seg�nvan cambiando
lasentradasA y B. Tambi�npodemosobservarc�mose activanlasentradasY0 a Y3.

Contenu connexe

Tendances

Practica compuertas
Practica compuertasPractica compuertas
Practica compuertas
140497
 
Maquinas de estado Finito
Maquinas de estado FinitoMaquinas de estado Finito
Maquinas de estado Finito
Rosangela Perez
 
Apuntes circuitos secuenciales
Apuntes circuitos secuencialesApuntes circuitos secuenciales
Apuntes circuitos secuenciales
kgconchis
 
06 error en estado estable o estacionario
06   error en estado estable o estacionario06   error en estado estable o estacionario
06 error en estado estable o estacionario
Johan Rabelly
 

Tendances (19)

Práctica 5
Práctica 5Práctica 5
Práctica 5
 
Maquinas de estado
Maquinas de estadoMaquinas de estado
Maquinas de estado
 
Practica compuertas
Practica compuertasPractica compuertas
Practica compuertas
 
Máquinas de estado finito
Máquinas de estado finitoMáquinas de estado finito
Máquinas de estado finito
 
Maquinas de estado Finito
Maquinas de estado FinitoMaquinas de estado Finito
Maquinas de estado Finito
 
Presentacion 2 - Maquinas de Estado Finito
Presentacion 2 - Maquinas de Estado FinitoPresentacion 2 - Maquinas de Estado Finito
Presentacion 2 - Maquinas de Estado Finito
 
Maquinas de estado finito mapa mental
Maquinas de estado finito mapa mentalMaquinas de estado finito mapa mental
Maquinas de estado finito mapa mental
 
Exposicion matematica
Exposicion matematicaExposicion matematica
Exposicion matematica
 
Electrónica digital: tema IV maquinas de estado finito
Electrónica digital: tema IV maquinas de estado finitoElectrónica digital: tema IV maquinas de estado finito
Electrónica digital: tema IV maquinas de estado finito
 
Electrónica digital: Tema 6 Teoría de autómatas síncronos
Electrónica digital: Tema 6 Teoría de autómatas síncronosElectrónica digital: Tema 6 Teoría de autómatas síncronos
Electrónica digital: Tema 6 Teoría de autómatas síncronos
 
Circuitos secuenciales
Circuitos secuencialesCircuitos secuenciales
Circuitos secuenciales
 
Diferencias entre circuitos combinacionales y secuenciales
Diferencias entre circuitos combinacionales y secuencialesDiferencias entre circuitos combinacionales y secuenciales
Diferencias entre circuitos combinacionales y secuenciales
 
Semaforo
SemaforoSemaforo
Semaforo
 
Maquinas de estado finito
Maquinas de estado finitoMaquinas de estado finito
Maquinas de estado finito
 
Apuntes automatas
Apuntes automatasApuntes automatas
Apuntes automatas
 
Apuntes circuitos secuenciales
Apuntes circuitos secuencialesApuntes circuitos secuenciales
Apuntes circuitos secuenciales
 
06 error en estado estable o estacionario
06   error en estado estable o estacionario06   error en estado estable o estacionario
06 error en estado estable o estacionario
 
cascada electroneumatica
cascada electroneumaticacascada electroneumatica
cascada electroneumatica
 
Sistemas secuenciales
Sistemas secuencialesSistemas secuenciales
Sistemas secuenciales
 

Similaire à Electrónica digital: Maquinas de estado finito en VHDL

Matematica discreta informe
Matematica discreta informeMatematica discreta informe
Matematica discreta informe
Jhojan Mendoza
 
Matematica discreta informe
Matematica discreta informeMatematica discreta informe
Matematica discreta informe
Jhojan Mendoza
 
⭐⭐⭐⭐⭐ Lecciones Simuladas Sistemas Digitales MSS (1er Parcial)
⭐⭐⭐⭐⭐ Lecciones Simuladas Sistemas Digitales MSS (1er Parcial)⭐⭐⭐⭐⭐ Lecciones Simuladas Sistemas Digitales MSS (1er Parcial)
⭐⭐⭐⭐⭐ Lecciones Simuladas Sistemas Digitales MSS (1er Parcial)
Victor Asanza
 

Similaire à Electrónica digital: Maquinas de estado finito en VHDL (20)

Electrónica digital: Maquina de estado finitas (FSM´s)
Electrónica digital: Maquina de estado finitas (FSM´s)Electrónica digital: Maquina de estado finitas (FSM´s)
Electrónica digital: Maquina de estado finitas (FSM´s)
 
Electrónica digital: capitulo 7 Autómatas finitos parte 1
Electrónica digital: capitulo 7 Autómatas finitos parte 1Electrónica digital: capitulo 7 Autómatas finitos parte 1
Electrónica digital: capitulo 7 Autómatas finitos parte 1
 
Problema resuelto de Maquinas de estado
Problema resuelto de Maquinas de estadoProblema resuelto de Maquinas de estado
Problema resuelto de Maquinas de estado
 
Electrónica digital: Tema 7 Sistemas secuenciales síncronos
Electrónica digital: Tema 7 Sistemas secuenciales síncronosElectrónica digital: Tema 7 Sistemas secuenciales síncronos
Electrónica digital: Tema 7 Sistemas secuenciales síncronos
 
Tema4 lógica secuencial
Tema4 lógica secuencialTema4 lógica secuencial
Tema4 lógica secuencial
 
Maquinas de estado con VHDL - electronica digital - circuitos secuenciales
Maquinas de estado con VHDL - electronica digital  - circuitos secuencialesMaquinas de estado con VHDL - electronica digital  - circuitos secuenciales
Maquinas de estado con VHDL - electronica digital - circuitos secuenciales
 
Taller 4 josue stanley lazo rivera
Taller 4 josue stanley lazo riveraTaller 4 josue stanley lazo rivera
Taller 4 josue stanley lazo rivera
 
Contadores (electronica)
Contadores (electronica)Contadores (electronica)
Contadores (electronica)
 
Programación Basada en Autómatas
Programación Basada en AutómatasProgramación Basada en Autómatas
Programación Basada en Autómatas
 
Matematica discreta informe
Matematica discreta informeMatematica discreta informe
Matematica discreta informe
 
Matematica discreta informe
Matematica discreta informeMatematica discreta informe
Matematica discreta informe
 
Electrónica digital: Análisis de diseño de circuitos secuenciales
Electrónica digital: Análisis de diseño de circuitos secuenciales Electrónica digital: Análisis de diseño de circuitos secuenciales
Electrónica digital: Análisis de diseño de circuitos secuenciales
 
Circuitos secuenciales=u.o
Circuitos secuenciales=u.oCircuitos secuenciales=u.o
Circuitos secuenciales=u.o
 
Informe practico
Informe practicoInforme practico
Informe practico
 
Electrónica digital: Diseño de circuitos con VHDL
Electrónica digital: Diseño de circuitos con VHDLElectrónica digital: Diseño de circuitos con VHDL
Electrónica digital: Diseño de circuitos con VHDL
 
Expo flip flop
Expo flip flopExpo flip flop
Expo flip flop
 
cir_digitales
 cir_digitales cir_digitales
cir_digitales
 
Electrónica digital: maquinas de estado con VHDL
Electrónica digital: maquinas de estado con VHDLElectrónica digital: maquinas de estado con VHDL
Electrónica digital: maquinas de estado con VHDL
 
⭐⭐⭐⭐⭐ Lecciones Simuladas Sistemas Digitales MSS (1er Parcial)
⭐⭐⭐⭐⭐ Lecciones Simuladas Sistemas Digitales MSS (1er Parcial)⭐⭐⭐⭐⭐ Lecciones Simuladas Sistemas Digitales MSS (1er Parcial)
⭐⭐⭐⭐⭐ Lecciones Simuladas Sistemas Digitales MSS (1er Parcial)
 
004 Electroneumática y Neumática: Método de cascada
004 Electroneumática y Neumática: Método de cascada 004 Electroneumática y Neumática: Método de cascada
004 Electroneumática y Neumática: Método de cascada
 

Plus de SANTIAGO PABLO ALBERTO

Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
SANTIAGO PABLO ALBERTO
 
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
SANTIAGO PABLO ALBERTO
 
Programación de autómatas PLC OMRON CJ/CP1
Programación de  autómatas PLC OMRON CJ/CP1Programación de  autómatas PLC OMRON CJ/CP1
Programación de autómatas PLC OMRON CJ/CP1
SANTIAGO PABLO ALBERTO
 
Manual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTManual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMART
SANTIAGO PABLO ALBERTO
 
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
SANTIAGO PABLO ALBERTO
 
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
SANTIAGO PABLO ALBERTO
 
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
SANTIAGO PABLO ALBERTO
 
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
SANTIAGO PABLO ALBERTO
 

Plus de SANTIAGO PABLO ALBERTO (20)

secuencia electroneumática parte 1
secuencia electroneumática parte 1secuencia electroneumática parte 1
secuencia electroneumática parte 1
 
secuencia electroneumática parte 2
secuencia electroneumática parte 2secuencia electroneumática parte 2
secuencia electroneumática parte 2
 
Manual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzadaManual de teoría y practica electroneumática avanzada
Manual de teoría y practica electroneumática avanzada
 
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez Programacion de PLC basado en Rslogix 500 por Roni Domínguez
Programacion de PLC basado en Rslogix 500 por Roni Domínguez
 
Programación de microcontroladores PIC en C con Fabio Pereira
Programación de microcontroladores PIC en  C con Fabio PereiraProgramación de microcontroladores PIC en  C con Fabio Pereira
Programación de microcontroladores PIC en C con Fabio Pereira
 
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
Análisis y Diseño de Sistemas de Control Digital por Ricardo Fernandez del Bu...
 
Arduino: Arduino de cero a experto
Arduino: Arduino de cero a expertoArduino: Arduino de cero a experto
Arduino: Arduino de cero a experto
 
Fisica I
Fisica IFisica I
Fisica I
 
Quimica.pdf
Quimica.pdfQuimica.pdf
Quimica.pdf
 
Manual básico PLC OMRON
Manual básico PLC OMRON Manual básico PLC OMRON
Manual básico PLC OMRON
 
Programación de autómatas PLC OMRON CJ/CP1
Programación de  autómatas PLC OMRON CJ/CP1Programación de  autómatas PLC OMRON CJ/CP1
Programación de autómatas PLC OMRON CJ/CP1
 
Manual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMARTManual del sistema del controlador programable S7-200 SMART
Manual del sistema del controlador programable S7-200 SMART
 
Catálogo de PLC S7-200 SMART
Catálogo de PLC S7-200 SMART Catálogo de PLC S7-200 SMART
Catálogo de PLC S7-200 SMART
 
PLC: Automatismos industriales
PLC: Automatismos industrialesPLC: Automatismos industriales
PLC: Automatismos industriales
 
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
PLC: Buses industriales y de campo practicas de laboratorio por Jose Miguel R...
 
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...PLC y Electroneumática: Electricidad y Automatismo eléctrico por  Luis Miguel...
PLC y Electroneumática: Electricidad y Automatismo eléctrico por Luis Miguel...
 
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
Electrónica: Diseño y desarrollo de circuitos impresos con Kicad por Miguel P...
 
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
PLC: Diseño, construcción y control de un motor doble Dahlander(cuatro veloci...
 
PLC: Motor Dahlander
PLC: Motor DahlanderPLC: Motor Dahlander
PLC: Motor Dahlander
 
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...Electrónica digital:  Introducción a la Lógica Digital - Teoría, Problemas y ...
Electrónica digital: Introducción a la Lógica Digital - Teoría, Problemas y ...
 

Dernier

LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
bcondort
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
gustavoiashalom
 
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
nicolascastaneda8
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
BRAYANJOSEPTSANJINEZ
 

Dernier (20)

Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico EcuatorianoEstadística Anual y Multianual del Sector Eléctrico Ecuatoriano
Estadística Anual y Multianual del Sector Eléctrico Ecuatoriano
 
Six Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo processSix Sigma Process and the dmaic metodo process
Six Sigma Process and the dmaic metodo process
 
Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5Lineamientos del Plan Oferta y Demanda sesión 5
Lineamientos del Plan Oferta y Demanda sesión 5
 
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.pptTippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
Tippens fisica 7eDIAPOSITIVAS TIPENS Tippens_fisica_7e_diapositivas_33.ppt
 
libro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operacioneslibro de ingeniería de petróleos y operaciones
libro de ingeniería de petróleos y operaciones
 
Clasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docxClasificación de Equipos e Instrumentos en Electricidad.docx
Clasificación de Equipos e Instrumentos en Electricidad.docx
 
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdfLA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
LA APLICACIÓN DE LAS PROPIEDADES TEXTUALES A LOS TEXTOS.pdf
 
PostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCDPostgreSQL on Kubernetes Using GitOps and ArgoCD
PostgreSQL on Kubernetes Using GitOps and ArgoCD
 
27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt27311861-Cuencas-sedimentarias-en-Colombia.ppt
27311861-Cuencas-sedimentarias-en-Colombia.ppt
 
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
01 MATERIALES AERONAUTICOS VARIOS clase 1.ppt
 
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
ANALISIS Y DISEÑO POR VIENTO, DE EDIFICIOS ALTOS, SEGUN ASCE-2016, LAURA RAMIREZ
 
Sesion 6 _ Curso Integrador II_TSZVQJ.pdf
Sesion 6 _ Curso Integrador II_TSZVQJ.pdfSesion 6 _ Curso Integrador II_TSZVQJ.pdf
Sesion 6 _ Curso Integrador II_TSZVQJ.pdf
 
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERUQUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
QUIMICA GENERAL UNIVERSIDAD TECNOLOGICA DEL PERU
 
UNIDAD II 2.pdf ingenieria civil lima upn
UNIDAD  II 2.pdf ingenieria civil lima upnUNIDAD  II 2.pdf ingenieria civil lima upn
UNIDAD II 2.pdf ingenieria civil lima upn
 
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
4º Clase Laboratorio (2024) Completo Mezclas Asfalticas Caliente (1).pdf
 
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptxNTP- Determinación de Cloruros  en suelos y agregados (1) (1).pptx
NTP- Determinación de Cloruros en suelos y agregados (1) (1).pptx
 
Ejemplos aplicados de flip flops para la ingenieria
Ejemplos aplicados de flip flops para la ingenieriaEjemplos aplicados de flip flops para la ingenieria
Ejemplos aplicados de flip flops para la ingenieria
 
Controladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y VentajasControladores Lógicos Programables Usos y Ventajas
Controladores Lógicos Programables Usos y Ventajas
 
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der RoheAportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
Aportes a la Arquitectura de Le Corbusier y Mies Van der Rohe
 
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJODIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
DIAPOSITIVAS DE SEGURIDAD Y SALUD EN EL TRABAJO
 

Electrónica digital: Maquinas de estado finito en VHDL

  • 1. M�quinas de estado finito en VHDL Las m�quinasde estadofinito,m�sconocidasporsuacr�nimoeningl�sFSM(FiniteState Machine), se utilizan ampliamente en el dise�o de circuitos digitales (adem�s de en otros �mbitos de la ingenier�a,comola programaci�n),para describirel comportamientode unsistemaseg�nel valor de sus entradasyde c�mo vancambiandoenel tiempo. �staesunadefinici�nparcial peroque nos permite hacernos una primera idea intuitiva. Desde el punto de vista de las FSM, un sistema est� compuestode estados porlosque vapasandoel sistema,de se�alesdeentrada que modificanesos estadosyde se�alesde salida que puedenutilizarse paraconocerel estadodel sistemayactuaren consecuencia. Un ejemplo muy visual podr�a ser un sem�foro, el cu�l dispone de tres estados diferentes, uno para cada color. Las entradas del sistema las podr�a generar un temporizador que activa una se�al cada cierto tiempo, indicando que hay que pasar al siguiente estado.Por �ltimo, las salidas del sistema podr�an ser tres se�ales que indiquenqu� l�mpara, de las tres disponibles, tiene que encenderse.Para representar una m�quina de estados se utilizan diagramasde estados como el siguiente.
  • 2. Cada c�rculo representaunestado.En este caso tenemoscuatroestadosque se llamanS1, S2, S3 y S4. El estadoS1 tiene unaflechaque indicaque esel estadoel inicial,al que se entra tras un reset del sistema.El S4tiene undoble c�rculo,que indicaque esunestadofinal.Losestadosest�nunidos por unasflechasllamadastransiciones,queindicanc�moevolucionael sistemade unestadoaotro seg�nse activanlas se�alesde entrada.Eneste casoconcretohay tresse�alesde entrada(a,b,c y d). Si estandoenel estadoS1 se activa la se�al a, el sistemaevolucionar�al estadoS2. Del mismo modo,si estandoenel estadoS2se activalase�al b,el sistemaevolucionar�de nuevoal estadoS1. En este caso no hay se�ales de salida. Si las hay pueden ponerse dentro del c�rculo o, para no sobrecargar el diagrama,se puedendefinir fuerade �ste,porejemploenunatabla.Vamosa crear una FSM muy b�sica y a implementarla en VHDL, para poder llevarla a una FPGA. La m�quina que vamos a implementar es la mostrada en el siguiente diagrama de estados. Tenemos cuatro estados (S0, S1, S2 y S3) y dos se�ales de entrada (A y B). No hemos puesto en el diagrama las se�ales de salida, pero las definimos en la siguiente tabla: S0 -> Y0 S1 -> Y1
  • 3. S2 -> Y2 S3 -> Y3 Por lo tanto, tenemos cuatro se�ales de salida. La se�al Y0 se activa cuando el sistema est� en el estado S0, La Y1 cuando el sistema est� en el estado S1 y as� sucesivamente. Como se puede observar,lasalidadel sistemadependeexclusivamentedelestadoenelquese encuentraelsistema. Cuando ocurre esto decimos que se trata de una m�quina de estados de tipo Moore. Si la salida depende del estadoy adem�s de las entradasactuales del sistema, se tratar�a de una m�quina de estados de tipo Mealy. Se puede demostrar que ambos modelos son equivalentes, as� que aqu� vamos a quedarnos con el primer tipo que es m�s sencillo. A nivel f�sico, una de las formas m�s efectivas de implementar una FSM es seg�n el siguiente esquema. Obviamente necesitamosalg�nelementode memoriaparaalmacenarel estadoactual del sistema. Nosotros usaremos un registro de biestablesde tipo D (es por lo tanto un bloque secuencial). Los otros dos bloques son puramente combinacionales. El primero se encarga de generar el estado siguienteapartirdel estadoactual yde lasentradasdel sistema.Adem�s,necesitamosotrocircuito para generar las se�ales de salida a partir del estado actual (recordemos que es una m�quina de tipo Moore). Voy a llevar a la pr�ctica el circuito usando una FPGA. En concreto usar� la placa BASYS 3 con una FPGA Artix 7 de Xilinx.Voyautilizarel bot�n0comose�al de resetylosbotones4y 2 comose�ales A y B respectivamente. Las salidas Y0 a Y3 las voy a asociar a los LEDs 0 a 3. Para evitar utilizar circuitos antirebote para los pulsadores,he dise�ado el diagrama de forma que dos pulsaciones seguidas del mismo bot�n no hagan evolucionar el sistema a otro estado. Como tenemoscuatroestados,podr�amosusar dos bitpara codificarlosestados.Por ejemplo:S0- >00, S1->01, S2->10 y S3->11. Sinembargo,lo m�s habitual esdejarque el sintetizadorlohagapor nosotros definiendo un tipo para los estados tal y como se ve en la siguiente definici�n. As�, si a�adimos nuevos estados, no tenemos que andar redimensionando el registro de estados. -- declaraciones modelo FSM type STATES is (S0, S1, S2, S3); signal state_reg, state_next: STATES;
  • 4. Veamosc�mose implementaenVHDL cada uno de estostres bloques.Empecemosporel registro de estados. -- registro de estados process(CLK) begin if CLK'event and CLK='1' then if RST='1' then state_reg <= s0; else state_reg <= state_next; end if; end if; end process; El registrode estadostiene unase�al de resets�ncronaque llevaal sistemaal estadoS0.Si la l�gica de codificaci�n del estado siguiente genera un nuevo estado, este se almacenar� en el registro,si no,la salidadel registrose mantiene.Veamosc�moesel circuito que genera el estado siguiente. -- L�gica de estado siguiente (circuito combinacional) process (state_reg, A, B) begin state_next <= state_reg; case state_reg is when S0 => if A='1' then state_next <= S1; end if; when S1 => if B='1' then state_next <= S2; end if; when S2 =>
  • 5. if A='1' then state_next <= S3; end if; when S3 => state_next <= S3; end case; end process; El estadosiguientese generaapartir del estadoactual y de las entradasA y B, por lo que ponemos estastresse�alesenlalistade sensibilidaddelproceso.Paraevitarque el sintetizadorgenere alg�n latchoelementode memoria,asignamospordefectoel estadoactual alase�al de estadosiguiente. El c�digoVHDLdescribe losestadosy lastransicionesasociadasalasentradasseg�nel diagramade estados que definimos m�s arriba, de forma que, de ser necesario, asigna el valor del estado siguiente ala variable state_nextcuandohayun cambio en lasentradas o en el estado.Por �ltimo echamos un vistazo al circuito de decodificaci�n para las salidas. -- salida tipo Moore process (state_reg) begin -- estableciendo la salida por defecto -- nos aseguramos de crear un circuito -- combinacional sin latches. Y0 <= '0'; Y1 <= '0'; Y2 <= '0'; Y3 <= '0'; case state_reg is when S0 => Y0 <= '1'; when S1 => Y1 <= '1'; when S2 => Y2 <= '1'; when S3 => Y3 <= '1'; end case; end process;
  • 6. De nuevo, para evitar que el sintetizador cree elementos de memoria, asignamos un valor por defecto a las salidas (en este caso 0), y seg�n el estado actual, se activa la salida correspondiente seg�n definimos en la tabla de arriba. El c�digo VHDL completo de nuestra FSM es el siguiente. library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity FSM is Port ( CLK : in STD_LOGIC; BTN : in STD_LOGIC_VECTOR (4 downto 0); LED : out STD_LOGIC_VECTOR (15 downto 0)); end FSM; architecture Behavioral of FSM is -- alias alias RST : STD_LOGIC is BTN(0); alias A : STD_LOGIC is BTN(4); alias B : STD_LOGIC is BTN(2); alias Y0 : STD_LOGIC is LED(0); alias Y1 : STD_LOGIC is LED(1); alias Y2 : STD_LOGIC is LED(2); alias Y3 : STD_LOGIC is LED(3); -- declaraciones modelo FSM type STATES is (S0, S1, S2, S3); signal state_reg, state_next: STATES; begin -- registro de estados process(CLK) begin if CLK'event and CLK='1' then if RST='1' then state_reg <= s0;
  • 7. else state_reg <= state_next; end if; end if; end process; -- L�gica de estado siguiente (circuito combinacional) process (state_reg, A, B) begin state_next <= state_reg; case state_reg is when S0 => if A='1' then state_next <= S1; end if; when S1 => if B='1' then state_next <= S2; end if; when S2 => if A='1' then state_next <= S3; end if; when S3 => state_next <= S3; end case; end process; -- salida tipo Moore process (state_reg) begin -- estableciendo la salida por defecto
  • 8. -- nos aseguramos de crear un circuito -- combinacional sin latches. Y0 <= '0'; Y1 <= '0'; Y2 <= '0'; Y3 <= '0'; case state_reg is when S0 => Y0 <= '1'; when S1 => Y1 <= '1'; when S2 => Y2 <= '1'; when S3 => Y3 <= '1'; end case; end process; end Behavioral; Os dejoel archivode restriccionesparalaplacaBASYS 3 que he usadopara este ejemplo,dondese definenlospuertosde lospulsadores,losLEDsy el reloj del sistema. ## LEDs set_property PACKAGE_PIN U16 [get_ports {LED[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[0]}] set_property PACKAGE_PIN E19 [get_ports {LED[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[1]}] set_property PACKAGE_PIN U19 [get_ports {LED[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[2]}] set_property PACKAGE_PIN V19 [get_ports {LED[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[3]}] set_property PACKAGE_PIN W18 [get_ports {LED[4]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[4]}] set_property PACKAGE_PIN U15 [get_ports {LED[5]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[5]}] set_property PACKAGE_PIN U14 [get_ports {LED[6]}]
  • 9. set_property IOSTANDARD LVCMOS33 [get_ports {LED[6]}] set_property PACKAGE_PIN V14 [get_ports {LED[7]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[7]}] set_property PACKAGE_PIN V13 [get_ports {LED[8]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[8]}] set_property PACKAGE_PIN V3 [get_ports {LED[9]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[9]}] set_property PACKAGE_PIN W3 [get_ports {LED[10]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[10]}] set_property PACKAGE_PIN U3 [get_ports {LED[11]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[11]}] set_property PACKAGE_PIN P3 [get_ports {LED[12]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[12]}] set_property PACKAGE_PIN N3 [get_ports {LED[13]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[13]}] set_property PACKAGE_PIN P1 [get_ports {LED[14]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[14]}] set_property PACKAGE_PIN L1 [get_ports {LED[15]}] set_property IOSTANDARD LVCMOS33 [get_ports {LED[15]}] ## Botones set_property IOSTANDARD LVCMOS33 [get_ports {BTN[4]}] set_property IOSTANDARD LVCMOS33 [get_ports {BTN[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {BTN[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {BTN[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {BTN[0]}] ## BTNL -> W19 set_property PACKAGE_PIN W19 [get_ports {BTN[4]}] ## BTND -> U17 set_property PACKAGE_PIN U17 [get_ports {BTN[3]}] ## BTNR -> T17
  • 10. set_property PACKAGE_PIN T17 [get_ports {BTN[2]}] ## BTNU -> T18 set_property PACKAGE_PIN T18 [get_ports {BTN[1]}] ## BTNC -> U18 set_property PACKAGE_PIN U18 [get_ports {BTN[0]}] ## Reloj CLK conectado a W5 set_property IOSTANDARD LVCMOS33 [get_ports {CLK}] set_property PACKAGE_PIN W5 [get_ports {CLK}] create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports CLK] En la simulaci�nde laFSMvemoscomo evolucionael circuitodesde S0a S3 seg�nvan cambiando lasentradasA y B. Tambi�npodemosobservarc�mose activanlasentradasY0 a Y3.