2-6 Modulos Combinacionales Basicos
2-6 Modulos Combinacionales Basicos
2-6 Modulos Combinacionales Basicos
ÍNDICE
• Bibliografía
• Introducción
• Codificadores y decodificadores
Síntesis de funciones de conmutación con decodificadores
• Multiplexores y demultiplexores
Síntesis de circuitos combinacionales con multiplexores
• Desplazadores
• Comparadores
• Dispositivos lógicos programables
• Módulos aritméticos básicos
Sumador
Restador
Sumador/Restador
• Unidad aritmético-lógica
2
Módulos combinacionales básicos
BIBLIOGRAFÍA
3
Módulos combinacionales básicos
INTRODUCCIÓN
4
Módulos combinacionales básicos
ÍNDICE
• Bibliografía
• Introducción
• Codificadores y decodificadores
Síntesis de funciones de conmutación con decodificadores
• Multiplexores y demultiplexores
Síntesis de circuitos combinacionales con multiplexores
• Desplazadores
• Comparadores
• Dispositivos lógicos programables
• Módulos aritméticos básicos
Sumador
Restador
Sumador/Restador
• Unidad aritmético-lógica
5
Módulos combinacionales básicos
DECODIFICADORES
6
Módulos combinacionales básicos
DECODIFICADORES
Y0 E X 1 X 0
Y1 E X 1 X 0
Y2 E X 1 X 0
Y3 E X 1 X 0 7
Módulos combinacionales básicos
DECODIFICADORES
library ieee;
use ieee.std_logic_1164.all;
entity deco2a4 is
port(enable: in std_logic;
x: in std_logic_vector(1 downto 0);
y: out std_logic_vector(3 downto 0));
end deco2a4;
DECODIFICADORES
library ieee;
use ieee.std_logic_1164.all;
entity test_deco2a4 is
end test_deco2a4;
test_deco2a4.vhd
9
Módulos combinacionales básicos
DECODIFICADORES
10
Módulos combinacionales básicos
11
Módulos combinacionales básicos
f 3 (a, b, c) m(2,4,6)
Enable
Y0
f1
c X0 Y1
b X1 Y2
IMPORTANTE: a X2 Y3
Y4
Cuidado con el orden de Y5 f2
Y6
significancia de las entradas Y7
f3
12
Módulos combinacionales básicos
13
Módulos combinacionales básicos
• Ejemplo: codificador de 8 a 3:
E Xactiva Y2 Y1 Y0 A
0 - 0 0 0 0
1 X0 0 0 0 1 y 0 E (x 1 + x 3 + x 5 + x 7 )
1 X1 0 0 1 1 y 1 E (x 2 + x 3 + x 6 + x 7 )
1 X2 0 1 0 1
y 2 E (x 4 + x 5 + x 6 + x 7 )
1 X3 0 1 1 1
1 X4 1 0 0 1 A E (x 0 + x 1 + x 2 + x 3 + x 4 + x 5 + x 6 + x 7 )
1 X5 1 0 1 1
1 X6 1 1 0 1
1 X7 1 1 1 1 14
Módulos combinacionales básicos
15
Módulos combinacionales básicos
library ieee;
use ieee.std_logic_1164.all;
entity cod8a3 is
port(enable: in std_logic;
x: in std_logic_vector(1 downto 0);
y: out std_logic_vector(3 downto 0);
activo: out std_logic);
end cod8a3;
cod8a3.vhd
17
Módulos combinacionales básicos
library ieee;
use ieee.std_logic_1164.all;
entity test_cod8a3 is
end test_cod8a3;
test_cod8a3.vhd
18
Módulos combinacionales básicos
19
Módulos combinacionales básicos
Código
21
Varias señales activas Una señal activa
Módulos combinacionales básicos
Z 2n 1 X 2n 1
Z 2n 2 X 2n 2 X 2n 1
Z 2n 3 X 2n 3 X 2 n 2 X 2n 1
.
.
Z i X i X i +1 ... X 2n 2 X 2n 1
22
Módulos combinacionales básicos
• Codificador 4 a 2:
Y0 E ( X 1 + X 3 )
Y1 E ( X 2 + X 3 )
A E ( X 0 + X1 + X 2 + X 3 )
23
Módulos combinacionales básicos
24
Módulos combinacionales básicos
ÍNDICE
• Bibliografía
• Introducción
• Codificadores y decodificadores
Síntesis de funciones de conmutación con decodificadores
• Multiplexores y demultiplexores
Síntesis de circuitos combinacionales con multiplexores
• Desplazadores
• Comparadores
• Dispositivos lógicos programables
• Módulos aritméticos básicos
Sumador
Restador
Sumador/Restador
• Unidad aritmético-lógica
25
Módulos combinacionales básicos
MULTIPLEXORES
MULTIPLEXORES
yE ( x0 m0 ( s1 , s0 ) + x1 m1 ( s1 , s0 ) + x2 m2 ( s1 , s0 ) + x3 m3 ( s1 , s0 ))
E ( x0 s1 s0 + x1 s1 s0 + x2 s1 s0 + x3 s1 s0 )
Multiplexor 4 a 1
27
Módulos combinacionales básicos
MULTIPLEXORES
entity mux4a1 is
port (enable: in std_logic;
x: in std_logic_vector(3 downto 0);
sel: in std_logic_vector(1 downto 0);
y: out std_logic);
end mux4a1;
MULTIPLEXORES
mux4a1.vhd
29
Módulos combinacionales básicos
MULTIPLEXORES
mux4a1.vhd
30
Módulos combinacionales básicos
MULTIPLEXORES
entity test_mux4a1 is
end test_mux4a1;
test_mux4a1.vhd 31
Módulos combinacionales básicos
MULTIPLEXORES
32
Módulos combinacionales básicos
• La EC de un multiplexor es:
2 n 1
y E x i
m i (s n-1,..., s 0 )
i 0
34
Módulos combinacionales básicos
2n 1
f(x n+k -1,..., x n , x n-1,..., x 0 ) f(z k -1,..., z 0 , s n-1,..., s 0 ) E (z i ,..., z 0 ) m i (s n-1,..., s 0 )
k -1
i 0 35
Módulos combinacionales básicos
E0 a b
E1 a b + a b b
Simplificación algebraica
E2 a b + a b + a b a + b
E3 a b + a b + a b a + b 36
Módulos combinacionales básicos
01 1 1 1 E0 a b
E1 b
12 13 15 14
11 1
8 9 11 10 E2 a + b
10 1 1 1
E3 a + b
37
Módulos combinacionales básicos
00 1 1
4 5 7 6
01 1 1 1
12 13 15 14
11 1
8 9 11 10
10 1 1 1
E2 E3 E2
38
Módulos combinacionales básicos
entity sintesis_mux is
port(a,b,c,d: in std_logic;
z: out std_logic);
end sintesis_mux;
sintesis_mux.vhd
40
Módulos combinacionales básicos
entity test_sintesis_mux is
end test_sintesis_mux;
42
Módulos combinacionales básicos
DEMULTIPLEXORES
DEMULTIPLEXORES
y0 Ex s 1 s 0
y1 Ex s 1 s 0
y2 Ex s 1 s 0
y3 Ex s 1 s 0
44
Módulos combinacionales básicos
DEMULTIPLEXORES
entity demux1a4 is
port(enable, x: in std_logic;
sel: in std_logic_vector(1 downto 0);
y: out std_logic_vector(3 downto 0));
end demux1a4;
demux1a4.vhd
45
Módulos combinacionales básicos
DEMULTIPLEXORES
demux1a4.vhd
46
Módulos combinacionales básicos
DEMULTIPLEXORES
y <= "0000";
if enable = '1' then
y(conv_integer(sel)) <= x;
end if;
end process;
end funcional_2;
47
Módulos combinacionales básicos
DEMULTIPLEXORES
entity test_demux1a4 is
end test_demux1a4;
begin
inst1: entity work.demux1a4(concurrente) port map(enable, x, sel, y1);
inst2: entity work.demux1a4(funcional_1) port map(enable, x, sel, y2);
inst3: entity work.demux1a4(funcional_2) port map(enable, x, sel, y3);
DEMULTIPLEXORES
49
Módulos combinacionales básicos
ÍNDICE
• Bibliografía
• Introducción
• Codificadores y decodificadores
Síntesis de funciones de conmutación con decodificadores
• Multiplexores y demultiplexores
Síntesis de circuitos combinacionales con multiplexores
• Desplazadores
• Comparadores
• Dispositivos lógicos programables
• Módulos aritméticos básicos
Sumador
Restador
Sumador/Restador
• Unidad aritmético-lógica
50
Módulos combinacionales básicos
DESPLAZADORES
.
.
.
.
.
.
.
mediante expresiones de XL Xn-1 Xn-2 X1 X0 XR
conmutación a través de puertas Enable
lógicas la construcción habitual
DESPLAZADOR
suele consistir en un conjunto de
multiplexores. OP
Yn-1 Yn-2 Y1 Y0
.
.
.
.
.
.
.
51
Módulos combinacionales básicos
DESPLAZADORES
XL X3 X2 X1 X0 XR XL X3 X2 X1 X0 XR
Enable Enable
OP OP
Y3 Y2 Y1 Y0 Y3 Y2 Y1 Y0
XL X3 X2 X1 X0 XR
XL X3 X2 X1 X0 XR
Enable
Enable
OP
OP
Y3 Y2 Y1 Y0 Y3 Y2 Y1 Y0
52
Módulos combinacionales básicos
DESPLAZADORES
X2 X0 X2 XL X1 X3 X1 X3 X0 X2 X0 X2 X3 X1 XR X1
Enable
OP0
OP1
E 3 2 1 0 E 3 2 1 0 E 3 2 1 0 E 3 2 1 0
0 0 0 0
1 1 1 1
Y3 Y2 Y1 Y0
53
Módulos combinacionales básicos
ÍNDICE
• Bibliografía
• Introducción
• Codificadores y decodificadores
Síntesis de funciones de conmutación con decodificadores
• Multiplexores y demultiplexores
Síntesis de circuitos combinacionales con multiplexores
• Desplazadores
• Comparadores
• Dispositivos lógicos programables
• Módulos aritméticos básicos
Sumador
Restador
Sumador/Restador
• Unidad aritmético-lógica
54
Módulos combinacionales básicos
COMPARADORES
55
Módulos combinacionales básicos
COMPARADORES
(a>b) a b
(a=b) a xnor b
(a<b) a b
56
Módulos combinacionales básicos
COMPARADORES
Comparador de 1
bit encadenable
57
Módulos combinacionales básicos
COMPARADORES
58
Módulos combinacionales básicos
ÍNDICE
• Bibliografía
• Introducción
• Codificadores y decodificadores
Síntesis de funciones de conmutación con decodificadores
• Multiplexores y demultiplexores
Síntesis de circuitos combinacionales con multiplexores
• Desplazadores
• Comparadores
• Dispositivos lógicos programables
• Módulos aritméticos básicos
Sumador
Restador
Sumador/Restador
• Unidad aritmético-lógica
59
Módulos combinacionales básicos
60
Módulos combinacionales básicos
61
Módulos combinacionales básicos
62
Módulos combinacionales básicos
• Las puertas And están conectadas de tal forma que cada una de ellas
implementa uno de los 2n minterms de las ‘n’ variables de entrada (es
como un decodificador de n a 2n .
• El grupo de puertas Or es programable, de tal forma que cada una de las
puertas Or puede implementar una suma de algunos de los 2n minterms.
• Cualquier salida de datos de la ROM implementa la siguiente expresión de
conmutación:
63
Módulos combinacionales básicos
64
Módulos combinacionales básicos
• Una ROM se puede ver como una tabla que almacena datos con la
siguiente estructura interna abstracta, donde cada dato ocupa una
posición de la tabla denominada dirección.
ROM
Read Only Memory
dirección 0 Palabra 0
dirección 1 Palabra 1
dirección 2 Palabra 2
66
Módulos combinacionales básicos
67
Módulos combinacionales básicos
69
Módulos combinacionales básicos
ÍNDICE
• Bibliografía
• Introducción
• Codificadores y decodificadores
Síntesis de funciones de conmutación con decodificadores
• Multiplexores y demultiplexores
Síntesis de circuitos combinacionales con multiplexores
• Desplazadores
• Comparadores
• Dispositivos lógicos programables
• Módulos aritméticos básicos
Sumador
Restador
Sumador/Restador
• Unidad aritmético-lógica
70
Módulos combinacionales básicos
SUMADORES
a b
𝑠 =𝑎⊕𝑏
+ 𝑐𝑜𝑢𝑡 = 𝑎 · 𝑏
cout
s
71
Módulos combinacionales básicos
SUMADORES
SUMADORES
entity add1 is
port(a,b,cin: in std_logic;
s, cout: out std_logic);
end add1;
add1.vhd
73
Módulos combinacionales básicos
SUMADORES
A B
an-1 bn-1 a1 b1 a0 b0
a b a b a b
cout Cout
+ Cin
... Cout
+ Cin Cout
+ Cin
cin
s s s
sn-1 s1 s0 74
Módulos combinacionales básicos
SUMADORES
entity add4 is
port(a,b: in std_logic_vector(3 downto 0);
cin: in std_logic;
s: out std_logic_vector(3 downto 0);
cout: out std_logic);
end add4;
SUMADORES
add4.vhd
76
Módulos combinacionales básicos
SUMADORES
• El lenguaje VHDL permite definir una entidad que tenga parámetros. Estos
parámetros reciben el nombre de generics, y sirven por ejemplo para
describir circuitos que no tienen un tamaño fijo si no que se puede fijar el
tamaño a la hora de crear una instancia de ese circuito.
• Vamos a ver un ejemplo de uso de generics con un sumador de ‘n’ bits:
library ieee;
use ieee.std_logic_1164.all;
entity addn is
generic(n: integer);
port(a,b: in std_logic_vector(n-1 downto 0);
cin: in std_logic;
s: out std_logic_vector(n-1 downto 0);
cout: out std_logic);
end addn;
addn.vhd
77
Módulos combinacionales básicos
SUMADORES
• Ejemplo (continuación):
addn.vhd
78
Módulos combinacionales básicos
SUMADORES
• Ejemplo: es a la hora de utilizar el sumador de ‘n’ bits en otro circuito, o
en un test-bench, cuando se le dará valor al parámetro ‘n’.
library ieee;
test_addn.vhd
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
entity test_addn is
end test_addn;
SUMADORES
80
Módulos combinacionales básicos
RESTADORES
A-B=A+C2(B)=A+C1(B)+1
a b a b a b
cout
+ cin
... cout
+ cin cout
+ cin
'1'
cout
s s s
sn-1 s1 s0
81
Módulos combinacionales básicos
SUMADORES RESTADORES
X 1 X
an-1 bn-1 an-2 bn-2 a1 b1 a0 b0
Op
a b a b a b a b
cout
+ cin cout
+ cin
... cout
+ cin cout
+ cin
s s s s
sn-1 sn-1 s1 s0
82
cn-1
Módulos combinacionales básicos
ÍNDICE
• Bibliografía
• Introducción
• Codificadores y decodificadores
Síntesis de funciones de conmutación con decodificadores
• Multiplexores y demultiplexores
Síntesis de circuitos combinacionales con multiplexores
• Desplazadores
• Comparadores
• Dispositivos lógicos programables
• Módulos aritméticos básicos
Sumador
Restador
Sumador/Restador
• Unidad aritmético-lógica
83
Módulos combinacionales básicos
84
Módulos combinacionales básicos
X3 Y3 X2 Y2 X1 Y1 X0 Y0
OP0
OP1
LE AE LE AE LE AE LE AE
LC
a b a b a b a b
cout + cin cout + cin cout + cin cout + cin
s s s s
Z3 Z2 Z1 Z0
85
Módulos combinacionales básicos
X3 Y3 X2 Y2 X1 Y1 X0 Y0
OP0
OP1
LE AE LE AE LE AE LE AE
LC
a b a b a b a b
cout + cin cout + cin cout + cin cout + cin
s s s s
Z3 Z2 Z1 Z0
86
Módulos combinacionales básicos
87
Módulos combinacionales básicos
LE AE
xy
OP1 OP0
OP1 OP0 00 01 11 10 yi
00 01 11 10
00 0 0 1 1
00 0 1 0 0
01 0 0 1 1
01 1 0 0 0
11 0 1 1 1
10 0 0 1 0
X
4
4 4 4 4
Las salidas de ambos
OP0 Unidad aritmética Unidad lógica
módulos van a un conjunto
de 4 multiplexores de 2 a 1
controlado por OP1.
4 4
Carry
0 1
OP1
2:1x4
MUX
4
90
Z
Módulos combinacionales básicos
a b a b a b a b
cout
+ cin cout
+ cin cout
+ cin cout
+ cin
s s s s
Carry
91
Módulos combinacionales básicos
0 1
OP0
MUX
2:1
92
z’’i
Módulos combinacionales básicos
X
4
4 4
4 4 4 4
4 4 4
Carry
0 1
Carry Z OP1
2:1x4
MUX
x3 y3 x2 y2 x1 y1 x0 y0
OP0
4
Z
a b a b a b a b
+ + + +
yi
cout cin cout cin cout cin cout cin
s s s s xi
x3 y3 x2 y2 x1 y1 x0 y0
0 1
OP0
MUX
2:1
Carry
93
z’’3 z’’2 z’’1 z’’0
Módulos combinacionales básicos
x3 y3 x2 y2 x1 y1 x0 y0 zi
OP0
Carry ALU de bit
ALU de bit ALU de bit ALU de bit
especial
OP
2 2
2 2
2 2
z3 z2 z1 z0
yi y3
xi x3
+ ci + c3
ci+1
Carry
3 2 1 0 3 2 1 0
OP0 OP0
MUX 4:1
MUX 4:1
0 0
1 OP1 1 OP1
zi
z3
95
Módulos combinacionales básicos
4 4
OP0
Carry ALU de bit
ALU de bit ALU de bit ALU de bit
especial
OP Unidad aritmético-lógica OP
2 2
2 2 2
2 2
4
z3 z2 z1 z0
Carry Z
y3 yi
x3 xi
+ c3 + ci
ci+1
Carry
3 2 1 0 3 2 1 0
OP0
MUX 4:1
OP0 0
MUX 4:1
0
1 OP1 1 OP1
zi
96
z3