Академический Документы
Профессиональный Документы
Культура Документы
Collazo
Tcnicas Digitales I
En lo que sigue se presentarn algunos circuitos que surgen como aplicaciones
de lgica combinacional y que se disponen integrados en forma comercial.
De manera simultnea se vern algunos ejemplos de obtencin de circuitos
similares a partir de descripciones en VHDL.
H D L
V
En
Oi
I
Otro caso es cuando los procesos
internos de los circuitos se
habilitan para que aparezcan a la
salida, en cuyo caso se habla de
una seal de habilitacin de puerta
G (gate). La salida inhabilitada
permanecer inactiva (en alto o
bajo)
Oj
On
OE
Tipos de habilitacin
I3 MUX
I2
Y
I1
I0 S1 S0
Entradas activas
en alto
I3 MUX
I2
Y
I1
I0 S1 S0
I3 MUX
I2
Y
I1
I0 S1 S0
Codificadores
I7
I6
I5
I4
I3
I2
I1
I0
I8
X
X
X
X
X
X
X
1
I7
X
X
X
X
X
X
X
X
1
I6
X
X
X
X
X
X
X
X
X
1
I5
X
X
X
X
X
X
X
X
X
X
1
I4
X
X
X
X
X
X
X
X
X
X
X
1
I3
X
X
X
X
X
X
X
X
X
X
X
X
1
I2
X
X
X
X
X
X
X
X
X
X
X
X
X
1
I1
X
X
X
X
X
X
X
X
X
X
X
X
X
X
1
I0
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
1
A3 A2 A1 A0
1
1
1
1
1
1
1
0
1
1
0
1
1
1
0
0
1
0
1
1
1
0
1
0
1
0
0
1
1
0
0
0
0
1
1
1
0
1
1
0
0
1
0
1
0
1
0
0
0
0
1
1
0
0
1
0
0
0
0
1
0
0
0
0
I3
I1
0
1
0
0
1
0
0
0
0
0
1
1
GS
I1
Eo
I0
0 1 2 3 4 5 6 7 Ei
C = Ei.(I4 + I5 + I6 + I7)
c)
B = Ei.I2 + Ei.I3.(I4 + I5) + Ei.I6 + Ei.I7
A = Ei.I1.(I2 + I4 + I6) + Ei.I3.(I4 + I6) + Ei.I5.I6 + Ei.I7
GS = Ei.(I0 + I1 + I2 + I3 + I4 + I5 + I6 + I7)
Eo = Ei + GS
0
1
0
1
I15
I14
I13
I12
A1
2 A1
I3
I2
I1
I0
A0
GS
Eo
CODAR
Ei
I7
I6
I5
I4
I3
A0
I2
I1 GS
Eo
I0
CODAR
Ei
I11
I10
I9
I8
A1
A1
A0
I3
A0
I2
I1 GS
Eo
I0
CODAR
Ei
I3
I2
I1
I0
Expansin de Codificadores
Ei
Se marcaron 4
bloques de color
que, unidos,
for
man la TV de un
codific. de 4 entr.
Esto da la pauta
de que con al
menos 4 de stos
se formar uno de
16 entradas.
I2
Se aprecia que las dos salidas ms significativas se repiten 4 veces seguidas, cambia una
variable y nuevamente se repite 4 veces seguidas mientras que las menos significativas
toman sus cuatro valores por cada valor de las ms significativas.
I2
C = I 4 + I 5 + I 6 + I 7)
b)
B = I 2 + I 3.( I 4 + I 5) + I 6 + I 7
a) Codificador elemental
de 8 entradas
A = I 1.( I 2 + I 4 + I 6) + I 3.( I 4 + I 6) + I 5. I 6 + I 7
b) Codificador de prioridad
c) Codificador de prioridad mejorado
incluye habilitacin de entrada,
propagacin de habilitacin a la
salida y seal de grupo (ayuda a
diferenciar el cdigo cero de
salida entre entrada I0 activa y
ausencia de entradas activas)
I3 I2 I1 I0 O1 O0
0
0
1
0
I5
I4
I3
Ei
I4
Ei
0
0
0
1
I7
I6
I0
Expansin de Codificadores
I9
X
X
X
X
X
X
1
I6
I5
a)
Ei
I7
I3
I2
I1
I0
0 A1
A0
GS
Eo
CODAR
I3
I2
I1
I0
A1
A3
A0
A2
GS
Eo
GS
CODAR
Eo
Decodificadores (o Decoders)
Un decoder es un dispositivo
lgico de n entradas que activa
una de sus 2 n
salidas cuya
numeracin decimal coincide
con el cdigo binario de las
seales de entrada
A2 A2 A1 A1 A0 A0
A2
A2
A1
A0
O0
A1
O1
A0
A0
O0
O1
O2
O3
O4
O5
O6
O7
O2
A1
O3
O4
A2
O5
EN
O6
P 2 = O 2 = A2 A1 A0
O1
O2
O3
O4
O5
O6
P 3 = O3 = A2 A1 A0
O0
Decodificador con
entrada habilitacin
O7
P 0 = O0 = A2 A1 A0
P1 = O1 = A2 A1 A0
A2
A1
A0
O7
En
b)
2 library ieee;
3 use ieee.std_logic_1164.all;
En este ejemplo se
4 entity deco_x8 is
trabaja con un vector de
5 port (ent : in std_logic_vector (2 downto 0);
salida que va a tener 8
6
hab : in std_logic;
valores distintos segn
7
sal : out std_logic_vector (7 downto 0));
sea la palabra de entrada.
8 end deco_x8 ;
9 architecture tabla of deco_x8 is
Abajo se ve la simulacin
10 signal ssal: std_logic_vector (7 downto 0);
11 begin
12 with ent select
13
ssal <= "00000001" when "000", "00000010" when "001",
14
"00000100" when "010", "00001000" when "011",
15
"00010000" when "100", "00100000" when "101",
16
"01000000" when "110", "10000000" when "111",
17
"00000000" when others;
18
sal <= ssal when hab = '1' else "00000000";
19 end tabla;
P 4 = O 4 = A2 A1 A0
P 5 = O5 = A2 A1 A0
P 6 = O6 = A2 A1 A0
P 7 = O 7 = A2 A1 A0
a)
Decodificadores: Expansin
A2
A1
A0
E1
O0
O1
DECOD
O2
0
A1
O3
A0
E1
O0
O0
O1
O2
O3
A3
A2
A1
A0
O0
O0
O1
DECOD
O2
0
A1
O3
O1
E1
E0
A0
A1
A0
O0
O0
O1
O1
E1
O2
O2
O3
DECOD 0
O3
E0
O3
O4
E0
O1
DECOD
O2
1
O5
E1
O0
O4
O6
O7
E0
O1
DECOD
O2
1
O5
O3
A1
A0
A1
A0
O0
O4
O1
O5
O2
O6
O3
DECOD 1
O7
O6
E1
O3
O7
E0
O0
O8
O1
DECOD
O2
2
O9
A1
A0
E1
E0
A1
A0
O3
A1
A0
O10
A3
O11
A2
A1 O1
O2
O3
DECOD
E1
O0
O12
E0
O1
DECOD
O2
3
A1
O3
O13
A0
Expansin de decoders de 2
entradas con doble habilitacin
a 4 entradas sin habilitacin
O0
O8
O1
O9
O0
A0
10
Decodificadores: Expansin
En
O2
A1
A0
O14
O2
E1
O3
E0
DECOD 2
O10
A1
A0
O0
O12
O1
O13
O2
O14
E1
O3
E0
DECOD 3
O15
O11
O15
11
12
D
0
0
0
0
0
0
0
0
1
C
0
0
0
0
1
1
1
1
0
B
0
0
1
1
0
0
1
1
0
A
0
1
0
1
0
1
0
1
0
Y
0
1
0
1
0
1
0
1
0
0
1
2
3
4
5
6
7
10
11
12
1
1
0
1
1
0
1
0
0
1
13
14
1
1
1
1
1
1
0
1
0
1
15
A
B
C
D
Y =
a)
O0
O1
O2
A1 O3
O4
A2 O5
O6
O7
A3 O8
O9
O10
O11
O12
O13
O14
O15
A0
B
Y
C
D
b)
P(1,3,4,7,9, 10,12,15)
Y=
O0
O1
O2
A1 O3
O4
A2 O5
O6
O7
A3 O8
O9
O10
O11
O12
O13
O14
O15
A0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
1
2
3
4
5
6
c)
7
8
9
S(0,2,5,6,8,11,13,14)
B
C
D
0
0
0
0
0
1
1
1
1
1
X
X
X
X
X
X
0
0
0
0
1
0
1
1
1
1
X
X
X
X
X
X
0
0
1
1
0
1
0
0
1
1
X
X
X
X
X
X
0
1
0
1
0
1
0
1
0
1
X
X
X
X
X
X
13
O0
O1
O2
A1 O3
O4
A2 O5
O6
O7
A3 O8
O9
O10
O11
O12
O13
O14
O15
B
C
D
Decod
B'
A'
C
D
C'
B'
A'
14
O0
O1
O2
A1 O3
O4
A2 O5
O6
O7
A3 O8
O9
O10
O11
O12
O13
O14
O15
A0
Decod
C'
O0
O1
O2
A1 O3
O4
A2 O5
O6
O7
A3 O8
O9
O10
O11
O12
O13
O14
O15
A0
A0
D'
D'
Aiken
D'
15
16
Aiken
O0
O1
O2
A1 O3
O4
A2 O5
O6
O7
A3 O8
O9
O10
O11
O12
O13
O14
O15
A0
D'= 5+6+7+8+9
C'= 4+6+7+8+9
B'= 2+3+5+8+9
A'= 1+3+5+7+9
O0
O1
O2
A1 O3
O4
A2 O5
O6
O7
A3 O8
O9
O10
O11
O12
O13
O14
O15
A0
B
C
D
Decod
D'
C'
B'
A'
Decod
Alguien se anima a decir
qu funcin cumple el
circuito?
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
18
D
D
C
B
A
BCD 2
AIKEN
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
2
3
4
O3
O2
O1
O0
19
Aiken
5
6
7
8
9
0
0
0
0
0
1
1
1
1
1
X
X
X
X
X
X
Se vi en su momento un
conversor de BCD natural a
Aiken a partir de las Tabla de
Verdad de A a D y se lleg a:
D'
C'
B'
A'
N
1
Natural
?
n
n ?
On
In
?
Conversores de cdigo
I3
I2
I1
I0
ROM /
PROM
17
Natural
0
0
0
0
1
0
1
1
1
1
X
X
X
X
X
X
0
0
1
1
0
1
0
0
1
1
X
X
X
X
X
X
0
1
0
1
0
1
0
1
0
1
X
X
X
X
X
X
C.B.A
D' = D + C.B + C.B.A
C.B
C' = D + C.B + CA
A'=D
20
Considerando que el
vector de salida tiene
un nico 1, una forma
ms simple es detectar
en qu salida debe
estar (segn la ent) y
escribirlo.
Si no est habilitado, la
salida es cero.
7
6
5
4
3
2
1
0
sal
0
0
0
0
0
0
0
0
ent
1
0
1
i=5
Se tom ent=5
como ejemplo
21
Cmo vara la
simulacin de este
problema si se pone un
process (ent) y se omite
la hab en la lista de
sensibilidad?
ent2
ent1
1
1
0
sal7
sal6
sal5
ent0 sal4
sal3
sal2
hab1 sal1
hab2 sal0
0
0
1
0
0
0
0
0
Decodificador con 2
entradas habilitacin
ent2
ent1
1
0
sal7
sal6
sal5
ent0 sal4
sal3
sal2
hab1 sal1
hab2 sal0
1
0
0
0
0
0
0
0
Decodificador con 2
entradas habilitacin
ent2
ent1
1
0
sal7
sal6
sal5
ent0 sal4
sal3
sal2
hab1 sal1
hab2 sal0
0
0
0
0
0
1
0
0
0
4
Decodificador con 2
entradas habilitacin
sal
0
0
1
0
0
0
0
0
22
...
13 begin
14 ssal <= "00000000";
15 process (ent, hab)
16
variable i : integer range 0 to 7;
17
begin
18
i :=(to_integer(unsigned(ent)));
19
ssal(i) <= '1';
20
if hab = "10" then sal <= ssal;
begin
ssal <= 00000000;
ssal(5) <= 1; -- como ejemplo i=5
24
2 library ieee;
3 use ieee.std_logic_1164.all;
Numeric_std no tiene
4 use ieee.numeric_std.all;
conversin de std_logic_
5 entity deco is
vector a entero; primero
6 port (ent : in std_logic_vector (2 downto 0);
debe
convertirse
en
7
hab : in std_logic_vector (1 downto 0);
unsigned y luego pasarlo
8
sal : out std_logic_vector (7 downto 0));
a entero.
9 end deco;
10 architecture tabla of deco is
11 signal ssal : std_logic_vector (7 downto 0);
La equivalencia con la
12 begin
misma sentencia del
13 process (ent, hab)
ejemplo
anterior
se
14
variable i : integer range 0 to 7;
obtiene convirtiendo el 0
15
begin
con 8 bits a unsigned, y
16
ssal <= "00000000";
luego de unsigned a
17
i := to_integer (unsigned (ent));
std_logic_vector.
18
ssal(i) <= '1';
19
if hab = "10" then sal <= ssal;
20
else sal <= std_logic_vector (to_unsigned (0,8));
21
end if;
22 end process;
23 end tabla;
2 library ieee;
3 use ieee.std_logic_1164.all;
4 use ieee.numeric_std.all;
x
x
x
x
x
x
x
x
x
x end tabla;
I3
I2
I1
I0
B
Y
A
S
S
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
A
0
1
0
1
0
1
0
1
MUX
a)
Y
0
1
0
1
0
0
1
1
En0
b)
I0
I1
I2
I3
En1
En2
En3
I0
I0
En0
En0
I1
I1
En1
En1
I2
I2
En2
En2
I3
I3
En3
En3
c)
I2
I3
I0
En1
I2
I2
I3
I3
I3
I1
I2
I3
OE
O0 O1 O2 O3
DEC
g)
e)
d)
I0
I1
I1
I2
En2
I0
I0
I1
En0
En3
Multiplexores
I0
I1
26
Se animan a
plantearlas?
...
25
entity deco is
port (ent : in std_logic_vector (2 downto 0);
hab : in std_logic_vector (1 downto 0);
sal : out std_logic_vector (7 downto 0));
end deco;
architecture tabla of deco is
signal ssal : unsigned (7 downto 0);
begin
+V
O0 O1 O2 O3
En
Decoder
S1
S0
h)
S1
S0
i)
O0 O1 O2 O3
O0 O1 O2 O3
En Decoder
S1
S0
Decoder
j)
S1
S0
I0
I1
I2
I3
En0
En1
En2
En3
f)
27
I1
I2
I3
En
O0 O1 O2 O3
En
k)
Decoder
S1
S0
28
I3
I2
I1 3 O
I0
A1 A0
Otro tipo de circuito dedicado es el que hace la operacin inversa del Multiplexor,
esto es, aqul que toma informacin por su nica entrada y la distribuye en una
de varias salidas, que se escogen mediante entradas llamadas de seleccin.
Out3
En0
I3 Mux4
pref
I2
I1 2 O
I0
A1 A0
I3
I2 4
I1
O
I0
A1 A0
Out2
sal
a)
I3 Mux4
pref
I2
I1 1 O
I0
A1 A0
ent(4)
I3 Mux4
pref
I2
I1 0 O
I0
A1 A0
ent(0)
O1
O0
Out1
Out0
29
S1
S0
f)
E1
E0
O3
O3
O1
O0
O0
O3
S1 S0
O1
O2
E1 E0
O1
O2
O2
O2
En3
O3
O3
c)
O3
O2
O1
O0
DEMUX
O1
O2
S1 S0
O3
d)
e)
S0
30
S0
S1
S2
S1
S0
S1
S0
O4
O0
O1
O2
I
S3
S2
S1
S0
O3
O3
O1
g)
S1 S0
En3
En1
En2
O0
O2
O2
O2
b)
O1
DEMUX O0
I
O1
En2
O0
En0
S1
O0
O0
Demultiplexores
I
En1
Demux
A3 A2 A1 A0
O3
O2
O1
O0
Mux4pref
ent(11)
ent(7)
Demultiplexores
Mux_16ent
Mux4pref
ent(15)
O5
O6
O7
O3
h)
O0
O1
O3
S1 S0
O3
O0
O1
O0
O4
O1
DEMUX
1
O2
E1
O3
E0
S1 S0
O5
O0
O8
O1
DEMUX
2
O2
E1
O3
E0
S1 S0
O9
O10
O3
S1 S0
O11
O0
O12
DEMUX O1
4
O2
O13
O2
O0
O4
O5
O3
S1 S0
O7
O0
O8
DEMUX O1
3
O2
O9
O7
O11
O0
O12
O13
O14
S3
O0
S1 O1
O2
S2
O15
S0
O3
DECOD
O3
S1 S0
S1
S0
O2
DEMUX O1
2
O2
O6
O1
DEMUX
3
O2
E1
O3
E0
S1 S0
O3
i)
31
O0
DEMUX O1
1
O2
O0
O1
DEMUX
0
O2
E1
O3
E0
S1 S0
O6
O10
O14
O15
j)
32
Demultiplexores en VHDL
I
En funcin de los
distintos ejemplos VHDL
vistos y las dos
diapositivas anteriores,
Se animan a plantear
una descripcin VHDL de
un Demultiplexor?
S3
S2
S1
S0
O0
O0
O1
DEMUX
0
O2
E1
O3
E0
S1 S0
O1
O0
O4
O1
DEMUX
1
O2
E1
O3
E0
S1 S0
O5
O0
O8
O1
O9
DEMUX
2
O2
E1
E0
O3
O7
O10
O11
O0
O12
O1
DEMUX
3
O2
E1
O3
E0
S1 S0
O13
O14
O15
35
a)
O7
O6
O5
O4
O3
O2
O1
O0
C
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
A
0
1
0
1
0
1
0
1
X
0
1
0
1
0
1
1
0
I0 MUX
I1
I2
I3
I4
X
I5
I6
I7
0
1
0
1
0
1
1
0
MUX
B
0
0
1
1
A
0
1
0
1
X
0
1
C
/C
0
1
I0
I1
I2
I3
S1 S0
B
c)
S2 S1 S0
b)
C
S2 S1 S0
a) Uso de un Mux y un Demux para conectar varios transmisores con distintos receptores.
b) Implementacin de una funcin lgica de 3 variables con un Mux de 3 variables de
seleccin: se trata de poner en las entradas los valores de la funcin en el rengln de la TV
cuyo nmero coincida con la entrada del Mux.
c) Idem, con un Mux de 2 variables de seleccin y un inversor. En rigor no siempre ser
necesario el uso del inversor segn sea la funcin a generar, pero s es seguro que con un
Mux de n variables de seleccin y a lo sumo un inversor, se puede generar una funcin lgica
(como suma de productos) de n+1 variables. Para ello se procede a obtener una tabla
reducida en una variable (queda con una variable menos). La que se sac puede (o no)
aparecer en la tabla en la columna de la funcin. De hacerlo, la variable se conecta a la(s)
entrada(s) que coincidan con los renglones donde aparece.
Se deja para el estudiante, pensar cmo se podran implementar funciones de n+2 variables
con un Mux de n variables de seleccin
33
MUX
S1 S0
O6
O3
S1 S0
O2
DEMUX
I3
I2
I1
I0
34
A
0
1
I0
0
1
I1
A1
0
1
x1 = A0.0 + A0.1 = A0
0
1
A0
A1 A0
0
f1
0
1
1
0
f1
c)
f1
b) Encadenando tres de esos Mux elementales se arma uno de dos variables de seleccin de 1
de 4 entradas posibles. La funcin de salida f1 ser una sobre 2 exp (2 exp 2) = 16 valores
posibles. Esa f1 se puede representar por medio de una Tabla de Verdad. En este caso se
muestra como ejemplo la funcin A1 xor A0.
c) Esa tabla se la denomina Tabla de Inspeccin (Look up table) y es el componente bsico de
los bloques lgicos elementales que forman parte de la estructura de algunos circuitos
programables que se utilizarn para el diseo que se implementa a partir de descripciones
hechas en VHDL como son las FPGA.
36