Tarea3 SDI115
Tarea3 SDI115
Tarea3 SDI115
MATERIA:
SISTEMAS DIGITALES I
DOCENTE
GERMAN
ESTUDIANTES
ROMERO GRANADOS, GERSON BENEDICTO RG13039
OLIVA HERNANDEZ, MIGUEL ANGEL
OH13007
FECHA DE ENTREGA
martes, 16 de junio de 2015
ndice
Pg.
Introduccin .
Objetivos
Desarrollo
Observaciones
24
Conclusiones
25
Introduccin
Asincronos
Sincronos
Objetivos
General:
a) Conocer el funcionamiento de los flipflops para la elaboracin
de relojes digitales usando distintas combinaciones de entrada,
y a su vez el anlisis de circuitos mediante tablas de excitacin.
Especificos:
a) Usar los flipflops para la construccin de un reloj de 24 horas
mediante contadores sncronos y asncronos.
b) Simular el comportamiento de los FFs en circuito elaborado en
TINA
Los Flip Flops son dispositivos sncronos, de dos estados, tambin conocidos
como multivibradoresbiestables. Un Flip - Flop es muy diferente a un Latch ya
que estos estn diseados para trabajar con niveles en cambio los FFs a
trabajar con flancos o cambios de estado, es decir, sus salidas cambiaran
dependiendo del tipo de flanco que se escoja ya sea de subida o de bajada
formados por la seal de reloj. Como se muestra acontinuacion:
C
Q
Q
(b) Negative edge-triggered
FLIP-FLOP (S-R)
El flip-flop RS sncrono opera en conjuncin con un reloj, en otras palabras
opera sincronizadamente. Cuando S est a nivel ALTO, y R est a nivel BAJO,
la salida Q se pone a nivel ALTO con el flanco de disparo del pulso de reloj,
pasando el Flip-Flop al estado SET.
S R CLK
NC NC
Comentarios
No cambio
RESET
SET
Condicin no
vlida
FLIP-FLOP TIPO D
El flip-flop D es uno de los FF ms sencillos. Su funcin es dejar pasar lo que
entra por D, a la salida Q, despus de un pulso del reloj. Es, junto con el FF JJ
K, uno de los flip-flopsmas
flopsmas comunes con reloj, adems resulta muy til cuando
se necesita almacenar un nico
ni bit de datos (1 o 0).
FLIP-FLOP J-K
El flip-flop J-K
K es una mezcla entre el flip-flop
flip
S-R y el flip-flop
flop T. Esto ocurre de
la siguiente manera:
En J=1, K=1 acta como Flip
Flip-flop T
De otra forma, acta como flip-flop
flip
S-R
Este Flip-Flop es idntico al de un S-R
S R en las condiciones de operacin SET,
RESET y de permanencia en estado NO Cambio. La diferencia est en que el
Flip-Flop J-K
K no tiene condicin no vlida como ocurre en el S-R.
S R.
).
).
1: el flip-flop
flop opera normalmente
Flip Flop JK
Cdigo VHDL
entityffjk is
port(
j, k, clk, set, reset : in bit;
q, q_neg
: out bit);
endffjk;
architecturejk of ffjk is
signalpre_q : bit;
begin
process(set, reset, clk)
begin
if (set='0' and reset='0') then
ifclk='1' then
if (j='0' and k='1') then pre_q<= '0';
elsif (j='1' and k='0') then pre_q<= '1';
elsif (j='1' and k='1') then pre_q<= not pre_q;
end if;
end if;
elsif (set='0' and reset='1') then pre_q<= '0';
elsif (set='1' and reset='0') then pre_q<= '1';
end if;
end process;
q <= pre_q;
q_neg<= not pre_q;
endjk;
FlipFlop RS
Cdigo VHDL
entityffsr is
port(
s, r, clk, set, reset : in bit;
q, q_neg
: out bit);
endffsr;
architecturesr of ffsr is
signalpre_q : bit;
begin
process(set, reset, clk)
begin
if (set='0' and reset='0') then
ifclk='1' then
if (s='0' and r='1') then pre_q<= '0';
elsif (s='1' and r='0') then pre_q<= '1';
end if;
end if;
elsif (set='0' and reset='1') then pre_q<= '0';
elsif (set='1' and reset='0') then pre_q<= '1';
end if;
end process;
q <= pre_q;
q_neg<= not pre_q;
end sr;
10
11
FlipFlop D
Cdigo VHDL
entityffd is
port(
d, clk, set, reset : in bit;
q, q_neg
: out bit);
endffjk;
architecture d of ffd is
signalpre_q : bit;
begin
process(set, reset, clk)
begin
if (set='0' and reset='0') then
ifclk='1' then
if d='0' then pre_q<= '0';
elsif d='1' then pre_q<= '1';
end if;
end if;
elsif (set='0' and reset='1') then pre_q<= '0';
elsif (set='1' and reset='0') then pre_q<= '1';
end if;
end process;
q <= pre_q;
q_neg<= not pre_q;
end d;
12
13
FlipFlop T
Cdigo VHDL
entityfft is
port(
t, clk, set, reset
: in bit;
q, q_neg
: out bit);
endfft;
architecturearch_t of fft is
signalpre_q : bit;
begin
process(set, reset, clk)
begin
if (set='0' and reset='0') then
ifclk='1' then
ift='1' then pre_q<= not pre_q;
end if;
end if;
elsif (set='0' and reset='1') then pre_q<= '0';
elsif (set='1' and reset='0') then pre_q<= '1';
end if;
end process;
q <= pre_q;
q_neg<= not pre_q;
endarch_t;
14
Funcionamiento
15
A Qa Qb Qc Qd Pa Ca Pb Cb Pc Cc Pd Cd
0 0
0
0
0
0
0
0
0
0
0
0
0
0 0
0
0
1
0
0
0
0
0
0
0
0
0 0
0
1
0
0
0
0
0
0
0
0
0
0 0
0
1
1
0
0
0
0
0
0
0
0
0 0
1
0
0
0
0
0
0
0
0
0
0
0 0
1
0
1
0
0
0
0
0
0
0
0
0 0
1
1
0
0
0
0
0
0
0
0
0
0 0
1
1
1
0
0
0
0
0
0
0
0
0 1
0
0
0
0
0
0
0
0
0
0
0
0 1
0
0
1
0
0
0
0
0
0
0
0
0 1
0
1
0
0
1
0
X
0
1
0
X
0 1
0
1
1
0 1
1
0
0
0 1
1
0
1
X
X
X
X
0 1
1
1
0
0 1
1
1
1
1 0
0
0
0
0
0
0
0
0
0
0
0
1 0
0
0
1
0
0
0
0
0
0
0
0
1 0
0
1
0
0
0
0
0
0
0
0
0
1 0
0
1
1
0
0
0
0
0
0
0
0
1 0
1
0
0
0
0
0
0
0
0
0
0
1 0
1
0
1
0
0
0
0
0
0
0
0
1 0
1
1
0
0
0
0
0
0
0
0
0
1 0
1
1
1
0
0
0
0
0
0
0
0
1 1
0
0
0
0
0
0
0
0
0
0
0
1 1
0
0
1
0
0
0
0
0
0
0
0
1 1
0
1
0
1 1
0
1
1
1 1
1
0
0
X
X
X
X
1 1
1
0
1
1 1
1
1
0
1 1
1
1
1
X
0
0
1
0
1
X
0
Ecuaciones:
=
=
=
16
Capturas Funcionamiento
17
QA QB QC
QD
0 0 0 0
0 0
0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0
0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
0 0 0 0
0 0
0 1
0 0 1 0
0 0 1 1
0 1 0 0
0 1 0 1
0 1 1 0
0 1 1 1
1 0 0 0
1 0
0 1
1 0 1 0
1 0 1 1
1 1 0 0
1 1 0 1
1 1 1 0
1 1 1 1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
JA
KA
0 X
0 X
0 X
0 X
0 X
0 X
0 X
1 X
X 0
X 1
X X
X X
X X
X X
X X
X X
1 X
0 X
0 X
0 X
0 X
0 X
0 X
0 X
X 1
X 0
X X
X X
X X
X X
X X
X X
JB KB
0
0
0
1
X
X
X
X
0
0
X
X
X
X
X
X
0
0
0
0
X
X
X
X
1
0
X
X
X
X
X
X
X
X
X
X
0
0
0
1
X
X
X
X
X
X
X
X
X
X
X
X
1
0
0
0
X
X
X
X
X
X
X
X
JC KC
0
1
X
X
0
1
X
X
0
0
X
X
X
X
X
X
0
X
X
X
1
0
X
X
1
0
X
X
X
X
X
X
X
X
0
1
X
X
0
1
X
X
X
X
X
X
X
X
X
0
1
0
X
X
1
0
X
X
X
X
X
X
X
X
JD KD
1
X
1
X
1
X
1
X
1
X
X
X
X
X
X
X
1
X
1
X
1
X
1
X
1
X
X
X
X
X
X
X
X
1
X
1
X
1
X
1
X
1
X
X
X
X
X
X
X
1
X
1
X
1
X
1
X
1
X
X
X
X
X
X
Ecuaciones:
=
=
=
=
+
+
=
=
=
+
+
=1
18
libraryieee;
use ieee.std_logic_1164.all;
useieee.std_logic_arith.all;
ENTITY counter3 IS
PORT ( clk, set, reset : IN std_logic;
QA, QB : OUT std_logic);
END counter3;
ARCHITECTURE MOD3 OF counter3 IS
SIGNAL pre_q: unsigned(0 to 1);
BEGIN
PROCESS(clk, set, reset)
BEGIN
IF reset='1' THEN
pre_q<= "00";
ELSIF (clk='1') THEN
pre_q<= pre_q + 1;
ELSIF (pre_q="11") THEN
pre_q<= pre_q + 1;
ELSIF (set='1') THEN
pre_q<= pre_q + 1;
END IF;
END PROCESS;
QA <= pre_q(0);
QB <= pre_q(1);
END MOD3;
19
libraryieee;
use ieee.std_logic_1164.all;
useieee.std_logic_arith.all;
ENTITY counter6 IS
PORT ( clk, set, reset : IN std_logic;
QA, QB,QC : OUT std_logic);
END counter6;
ARCHITECTURE MOD6 OF counter6 IS
SIGNAL pre_q: unsigned( 0 to 2);
BEGIN
PROCESS(clk, set, reset)
BEGIN
IF reset='1' THEN
pre_q<= "000";
ELSIF (clk='1') THEN
pre_q<= pre_q + 1;
ELSIF (pre_q="110") THEN
pre_q<= pre_q + 2;
ELSIF (set='1') THEN
pre_q<= pre_q + 1;
END IF;
END PROCESS;
QA <= pre_q(0);
QB <= pre_q(1);
QC <= pre_q(2);
END MOD6;
20
libraryieee;
use ieee.std_logic_1164.all;
useieee.std_logic_arith.all;
ENTITY counter10 IS
PORT ( clk, set, reset : IN std_logic;
QA, QB, QC, QD : OUT std_logic);
END counter10;
ARCHITECTURE MOD10 OF counter10 IS
SIGNAL pre_q: unsigned(0 to 3);
BEGIN
PROCESS(clk, set, reset)
BEGIN
IF reset='1' THEN
pre_q<= "0000";
ELSIF (clk='1') THEN
pre_q<= pre_q + 1;
ELSIF (pre_q="1010") THEN
pre_q<= pre_q + 6;
ELSIF (set='1') THEN
pre_q<= pre_q + 1;
END IF;
END PROCESS;
QA <= pre_q(0);
QB <= pre_q(1);
QC <= pre_q(2);
QD <= pre_q(3);
END MOD10;
21
Funcionamiento
22
23
24
Observaciones
25
Conclusiones
1) El uso de los FFs para poder realizar un conteo mediante una seal de
reloj, facilita la creacin de relojes dijitales que muestran las horas,
minutos y segundos.
PREGUNTAS DE INVESTIGACION:
architecturearchitff of tffis
beginprocess (clk) beginif
(clk'event and clk = '1') then
if (t = '1') then q <= not(q);
else q <= q;
endif;
endif;
endprocess;
endarchitff;
ese es un flipflop ya simulado
Si la entrada de control t esta a nivel lgico alto el flipflop bascula, si esta a
nivel bajo, mantiene su valor anterior.
26
la respuesta es si
El temporizador 555 fue introducido al mercado en el ao 1971 (hace ms de
30 aos!!!!.) por la empresa SigneticsCorporation con el nombre: SE555/NE555
y fue llamado "The IC Time Machine" (el Circuito integrado mquina del
tiempo"), que en esos momentos era el nico integrado de su tipo disponible.
Hoy da sigue tan vigente como entonces y tiene mltiples aplicaciones en los
mas variados entornos y cometidos.
Como hemos visto anteriormente podemos generar con el NE555 un pulso de
forma que la relacin entre el tiempo que permanece en alto y el que lo est en
bajo o DutyCycle es configurable. Esto se conoce como PWM o Pulse
WidthModulation o modulacin del ancho del pulso.
Hasta ahora se han visto varios elementos del lenguaje, como pueden ser las
entidades, las arquitecturas, los paquetes, etc. Cuando se realiza una
descripcin en VHDL se utilizan estas unidades, en uno o ms ficheros, stos
se denominan ficheros de diseo. Posteriormente, estos ficheros sern
compilados para obtener una librera o biblioteca de diseo, de forma que esta
biblioteca contiene los elementos que componen el circuito. La biblioteca donde
se guardan los resultados de la compilacin se denomina work.
Una librera se compone de dos partes bien diferenciadas, dependiendo de las
unidades que la formen. Por un lado, estn las unidades primarias, que
correspondern a entidades, paquetes y archivos de configuracin. Mientras
27
use ieee.std_logic_1164.all;
usework.uno.all;
entitydecoderisport ( seleccion :in std_logic_vector(1 downto 0);
enable1,enable2:in bit; salida :outstd_logic_vector(3 downto 0));
enddecoder;
--Descripcin del decodificador architecturearchidecoder of
decoderisbegindecodificador:process(seleccion,enable1,enable2) beginif
enable2='1' then salida<=(others=>'0'); elsif enable2='0' and enable1='0' then
salida<=(others => '0');
elsif(enable1='1') then case seleccioniswhen "00" => salida <= "0001"; when
"01" => salida <= "0010";
when "10" => salida <= "0100";
when "11" => salida <= "1000";
whenothers => salida <="1111";
end case;
endif;
endprocess decodificador;
endarchidecoder;
Para poder hacer uso, de cualquier componente de elpackage "uno" (el
decodificador o el contador),es necesario que primero se incluya la sentencia:
usework.uno.all;
29