Tarea3 SDI115

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 29

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERIA Y ARQUITECTURA


INGENIERIA ELECTRICA

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

Los Flipflops son multivibradores capaces de permanecer en uno de dos


estados posibles durante un tiempo indefinido en ausencia de perturbaciones,
es decir, por una seal de reloj (clk).
Esta caracterstica es sumamente til en cuanto a electrnica digital para asi
memorizar informacin, cambiarla o reiniciar el circuito hecho.
Los FlipFlops son capaces de tener dos estados presentes y mantenerlos hasta
que llega una seal de reloj que le indica que deber cambiar.
Tambien son conocidos como BIESTABLES, en general estos multivibradores
son utilizados para la creacin de contadores ya sean estos de manera
ascendente (UP) o de manera descendente(DOWN), a su vez dependiendo del
tipo de entradas los FFs se dividen en:
-

Asincronos
Sincronos

Que se explicaran mas adelante en el ppresente trabajo, por lo general las


entradas de control asncronas prevalecen sobre las sncronas y se usan
normalmente en unidades llamadas "registros", para el almacenamiento de
datos numricos binarios.

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

FLIP FLOPS DISPARADOS POR FLANCO

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

(a) Positive edge-triggered

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.

ENTRADAS ASNCRONAS DE INICIALIZACIN Y BORRADO


Cuando se estn utilizando flip
flip-flops
flops en la construccin de circuitos, es
necesario poder controlar el momento en el que un FF empieza a funcionar y el
valor con el que inicia su secuencia. Para esto, los flip-flops
flip flops cuentan con dos
entradas que le permiten
n al diseador seleccionar los valores iniciales del FF y
el momento en el que empieza a funcionar. Estas entradas son llamadas en
Ingls: Clear y Preset.
-

Clear - inicializa Q en cero sin importar entradas o reloj (

Preset - inicializa Q en 1 sin importar entradas o reloj (

).
).

Para ambas entradas, si reciben el valor de:


-

0 : inicializan el FF en el valor correspondiente.

1: el flip-flop
flop opera normalmente

Si queremos que el Flip


Flip-Flop
Flop funcione sncronamente, debemos desactivar
estas entradas colocndolas
olocndolas en un nivel ALTO.

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;

Capturas del Funcionamiento

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

Capturas del Funcionamiento

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

Capturas del funcionamiento

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

Contador asncrono mod 10 UP/DOWN


:
=0
=1
#
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

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

Contador sncrono mod 10 UP/DOWN


A
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

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

QA* QB* QC*


QC*
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
0 0 0 0
X XXX
X XXX
X XXX
X XXX
X XXX
X XXX
1 0
0 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
X XXX
X XXX
X XXX
X XXX
X XXX
X XXX

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

Reloj digital de 24 horas


Se usara un contador mod 3, mod 6, mod 10

Cdigo VHDL para contador MOD 3

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

Cdigo VHDL para contador MOD 6

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

Cdigo VHDL para contador MOD 10

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

1) Tina casua problemas al momento de simular el trabajo con FFs.

2) Es difcil aplicar la teora de querer hacer trabajar a un FFs ya elaborado


para que este trabaje a menor capacidad en TINA

3) Si se desea crear o elaborar un contador en TINA, resulta ms factible


hacerlo con contadores asncronos, ya que s construccin es ms fcil.

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.

2) Los FFs son una herramienta muy til en el mundo de la informtica


digital, permitiendo asi ordenar de manera ascendente o descendente
una cantidad de datos en binario.

PREGUNTAS DE INVESTIGACION:

Investigue las libreras de ALTERA, que permiten usar flip-flop ya


diseados, escriba el cdigo necesario para usar estos componentes

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

Investigue algunas formas de crear un tren de pulsos.

el generador q se usa son tablas de verdad de modo asi generar el diagrama


Dibujamos la tabla de verdad para el diseo, para esto utilizamos el Diagrama
de pulsos y la ecuacion general del FlipFlop JK:
Las columnas A(t+1) y B(t+1) son las que se obtiene a partir del diagrama de
pulsos. Por ejemplo en UP los primeros valores de A = A(t) = 1 y B = B(t) = 0 le
corresponden a A(t+1) = 1 y B(t+1) =1, es decir, le corresponde el siguiente
valor, o valor en t+1, y asi sucesivamente hasta completar todos los valores.

Es posible generar con un 555 un tren de pulsos con Duty-Cicle de


50%? Si su respuesta es s, Cmo se hace? Si su respuesta es no
por qu?

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.

Investigue el uso de las libreras en VHDL existentes en VHDL para


simplificar el trabajo de codificacin usado decodificadores,
codificadores, multiplexores, demultiplexores y sumadores

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

que las unidades secundarias sern arquitecturas y cuerpos de paquetes. Por


lo tanto, se puede sacar la conclusin de que cada unidad secundaria deber
estar asociada con una unidad primaria.
Al realizar una compilacin se analizarn las unidades que vayan apareciendo
en el texto. Por consiguiente, es importante establecer un orden lgico de las
distintas unidades, para que de esta forma se puedan cumplir las dependencias
existentes entre las mismas. La forma que toma la librera una vez compilada
es muy diversa; dependiendo de la herramienta de compilacin utilizada as
ser el resultado obtenido, esto se debe a que en VHDL no existe un estndar
para crear bibliotecas.
Como ejemplo se muestra a continuacin la declaracin de un package que
contiene a dos componente, un contador y un decodificador.
--Primero se declaran las libreras que se van a emplear libraryieee;
use ieee.std_logic_1164.all;
usework.std_arith.all;
--Empieza la declaracin del package "UNO" package uno
iscomponentcountport( clk,reset:in bit; conta :buffer std_logic_vector(1 downto
0));
endcomponent;
componentdecoderport ( seleccion :in std_logic_vector(1 downto 0);
enable1,enable2:in bit; salida :outstd_logic_vector(3 downto 0));
endcomponent; endpackage;
--Declaracin de las estidadeslibraryieee;
use ieee.std_logic_1164.all;
usework.std_arith.all;
usework.uno.all;
entitycountisport ( clk,reset:in bit;
conta:bufferstd_logic_vector(1 downto 0));
endcount;
architecturearchicount of countisbegin contador :process (clk,reset) beginif
(reset='1') thenconta<= (others => '0') ;
elsifclk'event and clk='1' thenconta<= conta + 1;
endif;
endprocess contador;
endarchicount;
--Declaracin de las arquitecturas --Descripcion del decodificador 3/8 (74ls138)
libraryieee;
28

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

También podría gustarte