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;