PROBLEMA DE FLIP

Anuncio
Oscar Ignacio Botero H.
PROBLEMAS DE APLICACIÓN CON FLIP – FLOP
APLICACIÓN 1: Bandas Transportadoras (CBA)
El sistema posee:
 1 sensor de proximidad
 1 motor para la banda transportadora 1
 1 émbolo retráctil (ACME) para empujar las piezas
Un sensor de proximidad detecta la pieza y manda un pulso negativo al
control de secuencia, 1 segundo después el motor de la banda transportadora
1 se apaga, al transcurrir otro segundo se activa el émbolo retráctil por un
tiempo de 1 segundo que empuja la pieza hacia la banda transportadora 2 que
está constantemente en movimiento. Transcurrido 3 segundos del proceso se
enciende nuevamente el motor de la banda transportadora 1 hasta que el
sensor de proximidad detecte otra pieza.
El orden para la solución es:
1.
2.
3.
4.
5.
Diagrama de estados
Tabla de excitación
Tabla de estados
Diseños de los circuitos
Implementación del circuito completo
Oscar Ignacio Botero H. 2
Problemas de aplicación con Flip – Flop
SOLUCIÓN CON F/F D (CBA)
1. Diagrama de estados
El sensor de proximidad manda un pulso negativo que sirve para resetear los
F/F del control de secuencia.
En total son 5 estados, entonces se necesitan 3 flip – flop (23 = 8), se pueden
elegir tipo D o tipo JK, obviamente que posea clear o reset. Inicialmente
seleccionamos el F/F tipo D y luego el F/F JK.
2. Tabla de excitación del Flip – Flop tipo D
CK
D
1
IC 74LS74 – F/F TIPO D
R S Q Q’
ESTADO
1 1
1
0
Set (síncrono)
0
X
1
1
1
1
0
1
Qo Qo’
Reset (síncrono)
No cambia
Q
0
0
1
1
Qn+1
0
1
0
1
D
0
1
0
1
3. Tabla de estados
ESTADOS





SECUENCIA
ACTUAL
QC
QB
QA
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
SECUENCIA
PRÓXIMA
QC+1
QB+1 QA+1
0
0
1
0
1
0
0
1
1
1
0
0
1
0
0
DATOS D
DC
0
0
0
1
1
DB
0
1
1
0
0
DA
1
0
1
0
0
Oscar Ignacio Botero H. 3
Problemas de aplicación con Flip – Flop
4. Diseño de los circuitos
Cada estado posee un lugar único en el mapa de Karnaugh de acuerdo con el
orden de las variables C, B y A.
BC
A
0
1
00
01
11
10








Circuito de control de secuencia:
Se realiza para las entradas D A, DB y DC en los 5 estados por medio de los
mapas de Karnaugh.
Los estados   y  se llenan con X, ya que es indiferente el estado de
estos valores.
BC
A
00 01 11 10
0
1 0 X 1
1
0 X X 0
BC
A
00 01 11 10
0
0 0 X 1
1
1 X X 0
BC
A
00 01 11 10
0
0 1 X 0
1
0 X X 1
DA
DB
DC
DA
A C
DA
QA QC
DB
( A B) ( A B)
DC
C
( A QB )
DB
DC
(QA QB ) (QA QB )
DB
(QA
QB )
QC (QA QB )
Circuito de control del motor de la banda transportadora 1:
Los estados involucrados son el  y el  = 2 segundos apagado “0”.
B+C
A
0+0 0+1 1+1 1+0
0
X
0
1
X
X
0
M = Motor
M
B
M
QB
Maxterm "0"
Oscar Ignacio Botero H. 4
Problemas de aplicación con Flip – Flop
Circuito de control del motor del émbolo retráctil:
El estado involucrado es el  = 1 segundo.
BC
A
00 01 11 10
0
X
1
X X 1
E = Embolo
E
A B
E
QA QB
5. Implementación del circuito completo
Oscar Ignacio Botero H. 5
Problemas de aplicación con Flip – Flop
6. Implementación en ISE de Xilinx
----------------------------------------------------------------------------------- APLICACIÓN 1. BANDAS TRANSPORTADORAS CON F/F TIPO D
---------------------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity BandaTransportadora is
Port ( CLK : in STD_LOGIC;
SENSOR : in STD_LOGIC;
EMBOLO : out STD_LOGIC;
MOTOR : out STD_LOGIC;
Qa : inout STD_LOGIC;
Qb : inout STD_LOGIC;
Qc : inout STD_LOGIC);
end BandaTransportadora;
architecture Comportamiento of BandaTransportadora is
SIGNAL Da,Db,Dc:STD_LOGIC:='0';
SIGNAL Qat,Qbt,Qct:STD_LOGIC:='0';
begin
-- FUNCIONES SIMPLIFICADAS POR MAPAS K
Da <= NOT Qa AND NOT Qc;
Db <= Qa XOR Qb;
Dc <= Qc OR (Qa AND Qb);
-- FUNCIONES DEL MOTOR DE LA BANDA Y DEL ÉMBOLO
MOTOR <= NOT Qb;
EMBOLO <= Qa AND Qb;
-- PROCESO SECUENCIAL
SEQ: PROCESS (CLK,SENSOR)
BEGIN
IF SENSOR='0' THEN
Qat <= '0';
Qbt <= '0';
Qct <= '0';
ELSE
IF CLK'EVENT AND CLK='1' THEN
Qat <= Da;
Qbt <= Db;
Qct <= Dc;
ELSE
NULL;
END IF;
END IF;
END PROCESS SEQ;
Qa <= Qat;
Qb <= Qbt;
Qc <= Qct;
end Comportamiento;
Oscar Ignacio Botero H. 6
Problemas de aplicación con Flip – Flop
----------------------------------------------------------------------------------- APLICACIÓN 1. BANDAS TRANSPORTADORAS CON F/F TIPO D Y DISPLAY
-- Qa = Q(0)
-- Qb = Q(1)
-- Qc = Q(2)
---------------------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity BandasTransportadoras_Ddis is
Port ( SENSOR : in STD_LOGIC;
CLK : in STD_LOGIC;
EMBOLO : out STD_LOGIC;
MOTOR : out STD_LOGIC;
Q : inout STD_LOGIC_VECTOR (2 downto 0);
ANODOS: out STD_LOGIC_VECTOR (3 downto 0);
SEG: out STD_LOGIC_VECTOR (6 downto 0));
end BandasTransportadoras_Ddis;
architecture Comportamiento of BandasTransportadoras_Ddis is
SIGNAL Da,Db,Dc:STD_LOGIC:='0';
SIGNAL Q0t,Q1t,Q2t:STD_LOGIC:='0';
begin
-- FUNCIONES SIMPLIFICADAS POR MAPAS K
Da <= NOT Q(0) AND NOT Q(2);
Db <= Q(0) XOR Q(1);
Dc <= Q(2) OR (Q(0) AND Q(1));
-- FUNCIONES DEL MOTOR DE LA BANDA Y DEL ÉMBOLO
MOTOR <= NOT Q(1);
EMBOLO <= Q(0) AND Q(1);
-- PROCESO SECUENCIAL
SEQ: PROCESS (CLK,SENSOR)
BEGIN
IF SENSOR='0' THEN
Q0t <= '0';
Q1t <= '0';
Q2t <= '0';
ELSE
IF CLK'EVENT AND CLK='1' THEN
Q0t <= Da;
Q1t <= Db;
Q2t <= Dc;
ELSE
NULL;
END IF;
END IF;
END PROCESS SEQ;
Q(0) <= Q0t;
Q(1) <= Q1t;
Q(2) <= Q2t;
ANODOS <= "1110"; -- Seleccion del display 0 en la MUX
Oscar Ignacio Botero H. 7
Problemas de aplicación con Flip – Flop
WITH Q SELECT
SEG <="1000000" WHEN "000", -- Apague el segmento G cuando la entrada sea 0
"1111001" WHEN "001",
"0100100" WHEN "010",
"0110000" WHEN "011",
"0011001" WHEN "100",
"1111111" WHEN OTHERS;
end Comportamiento;
SOLUCIÓN CON F/F JK (CBA)
2. Tabla de excitación del flip flop tipo JK
R
0
1
1
1
1
1
CK
X
1
IC 74LS73 – F/F TIPO JK
J K Q Q’
ESTADO
X X 0
1
Reset (asíncrono)
0 0 Qo Qo’
No cambia
1 0 1
0
0 1 0
1
1 1 Toggle
X X Qo Qo’
Q
0
0
1
1
Set (síncrono)
Reset (síncrono)
Conmuta
No cambia
QN+1
0
1
0
1
J
0
1
X
X
K
X
X
1
0
3. Tabla de estados
ESTADOS





SECUENCIA
ACTUAL
QC
QB
QA
0
0
0
0
0
1
0
1
0
0
1
1
1
0
0
SECUENCIA
PRÓXIMA
QC+1 QB+1 QA+1
0
0
1
0
1
0
0
1
1
1
0
0
1
0
0
DATOS JK
JC
0
0
0
1
X
KC
X
X
X
X
0
JB
0
1
X
X
0
KB
X
X
0
1
X
JA
1
X
1
X
0
4. Diseños de los circuitos
Cada estado posee un lugar único en el mapa de Karnaugh de acuerdo con el
orden de las variables C, B y A.
BC
A
0
1
00
01
11
10








KA
X
1
X
1
X
Oscar Ignacio Botero H. 8
Problemas de aplicación con Flip – Flop
Circuito de control de secuencia:
Se realiza para las entradas JA, K A, JB, KB, J C y KC en los 5 estados por medio
de los mapas de Karnaugh.
Los estados   y  se llenan con X, ya que es indiferente el estado de
estos valores.
BC
A
00 01 11 10
0
1 0 X 1
1
0 X X 0
BC
A
00 01 11 10
0
0 0 X X
1
1 X X X
BC
A
00 01 11 10
0
0 X X 0
1
0 X X 1
JA
JB
JC
JA
JB
JC
A C
JA QA QC
A JB QA
A B
JC QA QB
BC
A
00 01 11 10
0
X X X X
1
1 X X 1
BC
A
00 01 11 10
0
X X X 0
1
X X X 1
BC
A
00 01 11 10
0
X 0 X X
1
X X X X
KA
KB
KC
KA
KB
Vcc
A
KB
KC
Gnd
QA
0
Circuito de control del motor de la banda transportadora 1:
Los estados involucrados son el  y el  = 2 segundos apagado “0”.
B+C
A
0+0 0+1 1+1 1+0
0
X
0
1
X
X
0
M = Motor
M
B
M
QB
Maxterm "0"
Oscar Ignacio Botero H. 9
Problemas de aplicación con Flip – Flop
Circuito de control del motor del émbolo retráctil:
El estado involucrado es el  = 1 segundo.
BC
A
00 01 11 10
0
X
1
X X 1
E
E = Embolo
A B
E QA QB
5. Implementación del circuito completo
Oscar Ignacio Botero H. 10
Problemas de aplicación con Flip – Flop
6. Implementación en ISE de Xilinx
----------------------------------------------------------------------------------- APLICACIÓN 1. BANDAS TRANSPORTADORAS CON F/F TIPO JK
---------------------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity BandaTransportadora_JK is
Port ( SENSOR : in STD_LOGIC;
CLK : in STD_LOGIC;
EMBOLO : out STD_LOGIC;
MOTOR : out STD_LOGIC;
Qa : inout STD_LOGIC;
Qb : inout STD_LOGIC;
Qc : inout STD_LOGIC);
end BandaTransportadora_JK;
architecture Comportamiento of BandaTransportadora_JK is
SIGNAL Ja,Ka,Jb,Kb,Jc,Kc:STD_LOGIC:='0';
SIGNAL Qat,Qbt,Qct:STD_LOGIC:='0';
begin
-- FUNCIONES SIMPLIFICADAS POR MAPAS K
Ja <= NOT Qa AND NOT Qc;
Ka <= '1';
Jb <= Qa;
Kb <= Qa;
Jc <= Qa AND Qb;
Kc <= '0';
-- FUNCIONES DEL MOTOR DE LA BANDA Y DEL ÉMBOLO
EMBOLO <= Qa AND Qb;
MOTOR <= NOT Qb;
-- PROCESO SECUENCIAL
SEQ:PROCESS (SENSOR,CLK)
BEGIN
IF SENSOR='0' THEN
Qat <= '0';
Qbt <= '0';
Qct <= '0';
ELSE
IF CLK'EVENT AND CLK='1' THEN
Qat <= (Ja AND NOT Qa) OR (NOT Ka AND Qa);
Qbt <= (Jb AND NOT Qb) OR (NOT Kb AND Qb);
Qct <= (Jc AND NOT Qc) OR (NOT Kc AND Qc);
ELSE
NULL;
END IF;
END IF;
END PROCESS SEQ;
Qa <= Qat;
Qb <= Qbt;
Qc <= Qct;
Oscar Ignacio Botero H. 11
Problemas de aplicación con Flip – Flop
end Comportamiento;
----------------------------------------------------------------------------------- APLICACIÓN 1. BANDAS TRANSPORTADORAS CON F/F TIPO JK Y DISPLAY
-- Qa = Q(0)
-- Qb = Q(1)
-- Qc = Q(2)
---------------------------------------------------------------------------------library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity BandasTransportadoras_JKdis is
Port ( SENSOR : in STD_LOGIC;
CLK : in STD_LOGIC;
EMBOLO : out STD_LOGIC;
MOTOR : out STD_LOGIC;
SEG : out STD_LOGIC_VECTOR (6 downto 0);
ANODOS : out STD_LOGIC_VECTOR (3 downto 0);
Q : inout STD_LOGIC_VECTOR (2 downto 0));
end BandasTransportadoras_JKdis;
architecture Comportamiento of BandasTransportadoras_JKdis is
SIGNAL Ja,Ka,Jb,Kb,Jc,Kc:STD_LOGIC:='0';
SIGNAL Q0t,Q1t,Q2t:STD_LOGIC:='0';
begin
-- FUNCIONES SIMPLIFICADAS POR MAPAS K
Ja <= NOT Q(0) AND NOT Q(2);
Ka <= '1';
Jb <= Q(0);
Kb <= Q(0);
Jc <= Q(0) AND Q(1);
Kc <= '0';
-- FUNCIONES DEL MOTOR DE LA BANDA Y DEL ÉMBOLO
EMBOLO <= Q(0) AND Q(1);
MOTOR <= NOT Q(1);
-- PROCESO SECUENCIAL
SEQ:PROCESS (SENSOR,CLK)
BEGIN
IF SENSOR='0' THEN
Q0t <= '0';
Q1t <= '0';
Q2t <= '0';
ELSE
IF CLK'EVENT AND CLK='1' THEN
Q0t <= (Ja AND NOT Q(0)) OR (NOT Ka AND Q(0));
Q1t <= (Jb AND NOT Q(1)) OR (NOT Kb AND Q(1));
Q2t <= (Jc AND NOT Q(2)) OR (NOT Kc AND Q(2));
ELSE
NULL;
END IF;
END IF;
END PROCESS SEQ;
Oscar Ignacio Botero H. 12
Problemas de aplicación con Flip – Flop
Q(0) <= Q0t;
Q(1) <= Q1t;
Q(2) <= Q2t;
ANODOS <= "1110"; -- Seleccion del display 0 en la MUX
WITH Q SELECT
SEG <="1000000" WHEN "000", -- Apague el segmento G cuando la entrada sea 0
"1111001" WHEN "001",
"0100100" WHEN "010",
"0110000" WHEN "011",
"0011001" WHEN "100",
"1111111" WHEN OTHERS;
end Comportamiento;
Descargar