Está en la página 1de 19

Universidad Autónoma Metropolitana

División CBI
Departamento de Electrónica

Laboratorio de Diseño Lógico

Práctica 8: Caracterización de
Flip-Flops

Equipo 1
Diego Ivan Sanchez Reyes 2202015818
Luis Axel Estarrón Navarro 2222005818
Maribel Espinoza Santiago 2213032370
Profesor: Francisco Javier Sanchez Rangel

Grupo: CEL 01

Trimestre: 23-I

Fecha de entrega: 3-Junio-2023


OBJETIVOS:
1. Caracterizar un Flip-Flop de acuerdo con su tabla característica.
2. Caracterizar un Flip-Flop de acuerdo a su función característica.
3. Construir un Flip-Flop de un tipo a partir de uno de otro tipo.
4. Implementar Flip-Flops en VHDL.

MARCO TEÓRICO.
Circuitos Secuenciales.
En la figura no. 1 se muestra el diagrama a bloques de un circuito secuencial, el cual
se forma de la interconexión de un circuito combinacional y unos elementos de
almacenamiento. Los elementos de almacenamiento son circuitos capaces de
almacenar información binaria. La información binaria almacenada en estos
elementos define el estado del circuito secuencial en cualquier momento. El
diagrama a bloques demuestra que las salidas de un circuito secuencial son
funciones no sólo de las entradas, sino también del estado presente de los
elementos de almacenamiento. El siguiente estado de los elementos de
almacenamiento también es una función de las entradas y del estado presente.

Los circuitos secuenciales se sincronizan por medio de dispositivos de sincronía,


llamado generador de reloj, que produce un tren periódico de pulsos de reloj, tal y
como se muestra en la figura no.2.

Los circuitos secuenciales se clasifican en:


• Circuitos Asíncronos: Depende de las entradas en cualquier instante y el orden en
el tiempo del cambio de las entradas.
• Circuitos Síncronos: Se define por el conocimiento de sus señales en instantes
discretos de tiempo.
La sincronización de los circuitos secuenciales se puede realizar de varias maneras,
tal y como se muestra en la figura no 3.
Flip-Flops.
Algunos elementos de almacenamiento son conocidos como Flip-flops. Los
Flip-flops son celdas binarias capaces de almacenar un bit de información. En la
figura no. 4 se muestra el diagrama a bloques de un Flip-flop.

Existen distintos tipos de Flip-flops, en la figura no. 5 se muestran las características


de los principales tipos de Flip-flops.
DESARROLLO TEÓRICO.
1. Explique cómo obtener un Flip-Flop D a partir de un Flip-Flop JK.
La tabla característica del Flip-Flop JK es:
JK Q(t+1) FUNCIÓN
00 Q Mantener estado
01 0 Reset
10 1 Set
11 Q’ Complemento del estado

Mientras que la tabla característica del Flip-Flop D es:


D Q(t+1) FUNCIÓN
0 0 Reset
1 1 Set

Nótese que, si la entrada J del Flip-Flop JK la conectamos a la entrada K por medio de un


inversor obtenemos lo siguiente.
K’K Q(t+1) FUNCIÓN
00 NA NA
01 0 Reset
10 1 Set
11 NA NA
Que es la tabla característica del Flip-Flop D.
Concluimos que se debe conectar la entrada J a la entrada K negada (con un inversor) para
convertir un Flip-Flop JK a un Flip-Flop D.

2. Explique cómo obtener un Flip-Flop T a partir de un Flip-Flop JK.


La tabla característica del Flip-Flop JK es:
JK Q(t+1) FUNCIÓN
00 Q Mantener estado
01 0 Reset
10 1 Set
11 Q’ Complemento del estado

Mientras que la tabla característica del Flip-Flop T es:


T Q(t+1) FUNCIÓN
0 Q Mantener estado
1 Q’ Complemento del estado

Nótese que, si conectamos las entradas J y K en cortocircuito (las unimos como una sola
entrada), obtenemos lo siguiente:
KK Q(t+1) FUNCIÓN
00 Q Mantener estado
01 NA NA
10 NA NA
11 Q’ Complemento del estado
Que es la tabla característica del Flip-Flop T.
Concluimos que se deben conectar las entradas J y K en cortocircuito para convertir un Flip-Flop
JK a un Flip-Flop T.

3. Diseñe en VHDL un Flip-Flop D empleando su función característica.


a. Determinar el número de entradas y salidas.
En un Flip-Flop D, tenemos un bit de entrada D, así como un reloj de entrada CLK,
también en forma de bit. Por otro lado, se tienen dos bits Q y Q’ que actúan como
entrada y como salida de datos (se retroalimentan entre sí).
b. Elaborar la tabla de verdad.
CLK D Q Q’ Acción
0 X Q Q’ -
1 0 0 1 Reset
1 1 1 0 Set
c. Diseñar el circuito a bloques.
Para diseñar el circuito, utilizamos dos compuertas NOR, a las que va a entrar
nuestra entrada D en paralelo a 1 de las entradas. La salida de cada compuerta NOR
está asociada con los bits de entrada-salida Q y Q’. Posteriormente, se conecta Q a
la entrada de la compuerta NOR de Q’ y viceversa (esto asegura que las entradas Q y
Q’ siempre sean opuestas). Finalmente, se utilizan dos compuertas AND para
asegurar que solo se envíe la señal D cuando el reloj CLK está encendido.

d. Diseñar el circuito en VHDL.


La función característica del Flip-Flop D es: 𝑄(𝑡 + 1) = 𝐷
En el circuito VHDL podemos diseñar el Flip-Flop D por medio de su función
característica: D<=Q. El código resulta de la siguiente manera:
-- Diseño de un Flip Flop D utilizando su función característica
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity flipflop_D is
Port(CLK: in std_logic;
D: in std_logic;
Foco:out std_logic;
Q,Qn: inout std_logic
);
end flipflop_D;

architecture flipflop_D_arch of flipflop_D is

signal Reloj:std_logic;
signal Div: std_logic_vector(24 downto 0);

begin
--Divisor de frecuencias
process(CLK)
begin
if CLK'event and CLK='1' then
Div<=Div+1;
end if;
end process;
Reloj<= Div(24);

--Flip Flop D
process(Reloj)
begin
Foco<=Reloj;
if Reloj'event and Reloj='1' then
Q<=D;
Qn<=(not D);
end if;
end process;
end flipflop_D_arch;

4. Diseñe en VHDL un Flip-Flop T empleando su función característica.


a. Determinar las entradas y salidas.
Para este tipo de Flip-Flop, sólamente se requiere una entrada T (Toggle), así como
su entrada de reloj CLK. Se siguen teniendo las mismas salidas Q y Q’.
b. Elaborar la tabla de verdad.
CLK D Q Q’ Acción
0 X Q Q’ -
1 0 Q Q’ Mantener
1 1 Q’ Q Complementar
c. Diseñar el circuito a bloques.
En este caso, vamos a tomar como base el diseño a bloques del Flip-Flop D que se
elaboró en el inciso pasado, con dos diferencias:
I. Se conecta la entrada T directamente a ambas compuertas AND SIN
INVERSORES.
II. Las salidas Q y Q’ se retroalimentan (conectan) a sus respectivas compuertas
AND que entran a las compuertas NOR.
El circuito resulta de la siguiente manera:
d. Diseñar el circuito en VHDL.
La función característica del Flip-Flop T es: 𝑄(𝑡 + 1) = 𝑄(𝑡) · 𝑇' + 𝑄'(𝑡) · 𝑇.
Al igual que el diseño a bloques, el circuito en VHDL es prácticamente
idéntico, reemplazando la función característica del Flip Flop D por la función del Flip
Flop T (y reescribiendo las entradas y salidas adecuadamente):
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity flipflop_T is
Port(CLK: in std_logic;
T: in std_logic;
Foco:out std_logic;
Q,Qn: inout std_logic
);
end flipflop_T;

architecture flipflop_T_arch of flipflop_T is

signal Reloj:std_logic;
signal Div: std_logic_vector(24 downto 0);

begin
--Divisor de frecuencias
process(CLK)
begin
if CLK'event and CLK='1' then
Div<=Div+1;
end if;
end process;
Reloj<= Div(24);

--Flip Flop T
process(Reloj)
begin
Foco<=Reloj;
if Reloj'event and Reloj='1' then
Q<=(T and not Q) or (not T and Q);
end if;
Qn<=(not Q);
end process;
end flipflop_T_arch;

5. Diseñe en VHDL un Flip-Flop JK empleando su función característica.


a. Determinar las entradas y salidas.
Para el Flip-Flop JK, se necesitan 2 entradas J (Jump) y K (Keep), además de una
entrada de reloj CLK. Se siguen teniendo las dos salidas Q y Q’-
b. Elaborar la tabla de verdad.
CLK J K Q Q’ Acción
0 X X Q Q’
1 0 0 Q Q’ Mantener
1 0 1 0 1 Reset
1 1 0 1 0 Set
1 1 1 Q’ Q Complementar
c. Diseñar el circuito a bloques.
En este caso, nos basamos en el diseño del Flip-Flop T, con una modificación:
I. En lugar de conectar la entrada T a ambas compuertas ANDs, se conecta una
entrada K a la compuerta AND de Q, y otra entrada J a la compuerta AND de
Q’.
El circuito resulta de la siguiente manera:

d. Diseñar el circuito en VHDL.


La función característica del FLip-Flop JK es: 𝑄(𝑡 + 1) = 𝑄'(𝑡) · 𝐽 + 𝑄(𝑡) · 𝐾'
El circuito en VHDL resulta de la siguiente manera.
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;

entity flipflop_JK is
Port(CLK: in std_logic;
J,K: in std_logic;
Foco:out std_logic;
Q,Qn: inout std_logic
);
end flipflop_JK;

architecture flipflop_JK_arch of flipflop_JK is


signal Reloj:std_logic;
signal Div: std_logic_vector(24 downto 0);

begin
--Divisor de frecuencias
process(CLK)
begin
if CLK'event and CLK='1' then
Div<=Div+1;
end if;
end process;
Reloj<= Div(24);

--Flip Flop JK
process(Reloj)
begin
Foco<=Reloj;
if Reloj'event and Reloj='1' then
Q<=(J and not Q)or(not K and Q);
end if;
Qn<=(not Q);
end process;
end flipflop_JK_arch;

MATERIAL Y EQUIPO.
• Computadora PC.
• Software Quartus II.
• Tarjeta de desarrollo ALTERA DE2.

DESARROLLO EXPERIMENTAL.
1. Flip Flop D
Imagen 1. Código en VHDL.

Imagen 2. RTL del flip flop D.


Imagen 3. Simulación del flip flop D.

Imagen 4. Pin planner del flip flop D.


Fotografía 1. Flip flop D.
En esta fotografía podemos observar en funcionamiento el flip flop D en el cual sale directamente la
entrada D que se le ponga, en este caso se usó 0 por lo tanto la salida de Q es 0 que es el led 0 y
podemos ver un Led prendido el cual corresponde a Q’.
2. Flip Flop T

Imagen 5. Código VHDL.


Imagen 6. RTL de Flip Flop T.

Imagen 7. Simulación de Flip Flop T.


Imagen 8. Pin planner de Flip Flop T.
Flip flop T

Fotografía 2. Flip flop T.


En esta fotografía podemos observar en funcionamiento el flip flop T en el la entrada T que se le
ponga sera Mantener estado o complementar estado, en este caso se usó 1 por lo tanto la salida de
Q es el complemento del anterior, por lo tanto al estar el Led 0 en valor 0 sabemos que el valor
anterior fue 1.

3. Flip Flop JK

Imagen 9. Código VHDL.


Imagen 10. RTL de JK.

Imagen 11. Simulaciones de Flip Flop JK.


Imagen 12. Pin planner de Flip Flop JK.
Fotografía 3. Flip Flop JK.
En esta fotografía podemos observar en funcionamiento el flip flop JK el cual depende de 2 entradas,
en este caso se usaron los valores 01 por lo tanto la salida corresponde a reset por lo cual vemos al
Led 0 en valor 0 y al Led 1 en valor 1 ya que este es Q’.

BIBLIOGRAFÍA.
● SÁNCHEZ RANGEL; NOTAS DEL CURSO DE DISEÑO LÓGICO
● QUARTUS II HANDBOOK VERSION 13.0, VOLUME 1: DESIGN AND SYNTHESIS;
ALTERA 2013.
● DE2 DEVELOPMENT AND EDUCATION BOARD, USER MANUAL; ALTERA 2012

CONCLUSIONES INDIVIDUALES.

DIEGO IVAN SANCHEZ REYES


Los 3 circuitos creados en esta práctica corresponden a flip flop, en los 3 casos se usó un
reloj y se modificó la frecuencia con la que este manda una señal para cambiar ya que la
tarjeta en la que se programa es muy rápida para notar los cambios.
El primer flip flop realizado se trata de uno de los más sencillos el flip flop D en el cual este
agarra el valor que se le de a la entrada y se mantiene hasta cambiar la entrada por lo tanto
fue muy sencillo.
El siguiente fue el flip flop T el cual también es algo sencillo, este hace uso de las salidas Q y
Q’ para usarlas como entradas dependiendo el valor de T si es 0 se mantiene pero si es 1
este empieza a cambiar entre 0 y 1.
Para el último flip flop se uso una entrada mas, el JK el cual tiene 4 modos al tener 2
entradas, este es el más completo de los 3 realizados en clase por lo tanto el mas complejo
de realizar, aqui tenemos a las entradas J y K con las cuales se pueden poner los estados
como Mantener estado (00), Reset(01), Set(10) y Complementar estado(11) como vemos es
como la combinación de lo que puede hacer el flip flop D y T.
En general al pasarlos a código en VHDL fue sencillo gracias a las herramientas vistas en
clase.
MARIBEL ESPINOZA SANTIAGO.
En esta práctica se llevaron a cabo 3 circuitos, en el cual el objetivo principal fue la creación
de Flip-Flops de acuerdo a la tabla y función característica de cada uno de ellos, e
implementarlo en código VHDL, para después bajarlo a la Tarjeta.
El primer circuito fue diseñar en VHDL un Flip-Flop D empleando su función característica,
en donde se tuvo un bit de entrada D, así como un reloj de entrada CLK, también en forma
de bit. Por otro lado, se obtuvieron dos bits Q y Q’ que actúan como entrada y como salida
de datos.
El segundo circuito fue diseñar en VHDL un Flip-Flop T empleando su función característica,
en donde sólamente se requirió de una entrada T (Toggle), así como su entrada de reloj
CLK y teniendo las salidas Q y Q’.
El tercer circuito fue el diseño en VHDL de un Flip-Flop JK empleando su tabla
característica, en donde se necesitaron 2 entradas J (Jump) y K (Keep), además de una
entrada de reloj CLK y teniendo como salidas Q y Q’.
Gracias a la realización de los Flip-Flops, se pudo observar cual de ellos es el que tiene
más funcionalidad para crear otro Flip-Flop partiendo de uno en específico.
Con esto se concluye que se cumplió con los objetivos de la práctica.

LUIS AXEL ESTARRÓN NAVARRO


Para el diseño de los flip flops, se utilizó el mismo circuito como base: dos compuertas NOR
interconectadas con sus salidas, para asegurar que se obtengan salidas complementadas Q
y Q’. Asimismo, se utilizaron compuertas AND para obtener la sincronización con la señal
de reloj CLK. De esta manera, se obtuvieron los 3 tipos de flip flops por medio de
variaciones a este circuito:
● El flip flop D se obtiene al conectar D’ y D a las compuertas NOR (requiere un
inversor).
● El flip flop T se obtiene al conectar T en paralelo a las compuertas NOR (se retira el
inversor del flip flop T). Asimismo, se retroalimenta la señal de Q y Q’ como entrada
a sus compuertas NOR.
● El flip flop JK se obtiene al separar las entradas en paralelo del fip flop T como
entradas individuales K (keep) y J (jump).

Entre los tres flip flops utilizados en la práctica, el flip flop JK fue el más versátil, ya
que, como se explica en los incisos 1 y 2 del desarrollo teórico, puede cubrir la funcionalidad
de un flip flop D (carga de información directa), así como la funcionalidad de un flip flop T
(mantener y complementar estados).
En cuanto la implementación, el diseño del circuito en VHDL fue bastante sencillo
gracias al uso de postulados secuenciales como condiciones if, así como la implementación
directa de las funciones características de cada flip flop dentro del código.
Para futuros circuitos, el uso de flip flops como bloque de diseño es de suma
importancia, ya que éstos son el componente principal de los registros (tema que se ve en
la siguiente práctica).
Con todo lo anterior, se concluye que se lograron cumplir los objetivos de la práctica.

También podría gustarte