Puertas lógicas

Anuncio
Puertas lógicas Puerta AND Otras puertas Interconexión de puertas Puerta AND l 
Comportamiento de una puerta AND ·∙ 0 1 AND FALSE TRUE 0 0 0 FALSE FALSE FALSE 1 0 1 TRUE FALSE TRUE a
b
a·b
2
Puerta AND en verilog /* ComprobaciOn de puerta AND: TestAnd.v */!
!
module TestAnd;!
!
a reg a,b; // Entradas!
salida
a1
wire salida;!
!
b
and a1(salida,a,b);!
!
// Bloque de comportamiento!
initial!
begin!
$monitor($time," a=%b, b=%b, a.b=%b", a,b,salida);! 0 a=0, b=0,
a=0; b=0;!
5 a=0, b=1,
#5 a=0; b=1;!
10 a=1, b=0,
15 a=1, b=1,
#5 a=1; b=0;!
#5 a=1; b=1;!
end!
!
endmodule!
a.b=0!
a.b=0!
a.b=0!
a.b=1!
3
Ejercicio 2 •  Completar la tabla de la puerta AND añadiendo como posibles entradas: •  x (indefinido) •  z (alta impedancia) •  Tiene que haber, por tanto, dieciséis líneas en la tabla 4
Otras puertas l 
l 
Puerta OR: or(salida, a, b)!
+ 0 1 OR FALSE TRUE 0 0 1 FALSE FALSE TRUE 1 1 1 TRUE TRUE TRUE a
b
a+b
Puerta NOT: not(salida, a)!
-­‐ 0 1 1 0 NOT FALSE TRUE TRUE FALSE a
a
5
Otras puertas l 
l 
Puerta NAND: nand(salida, a, b)!
a b NAND 0 0 1 0 1 1 1 0 1 1 1 0 a
b
a·b
Puerta NOR: nor(salida, a)!
a b NOR 0 0 1 0 1 0 1 0 0 1 1 0 a
b
a+b
6
Otras puertas l 
l 
Puerta XOR: xor(salida, a, b)!
a b XOR 0 0 0 0 1 1 1 0 1 1 1 0 a
b
⊗
a b
Puerta XNOR: xnor(salida, a)!
a b XNOR 0 0 1 0 1 0 1 0 0 1 1 1 a
b
a¤b
7
Otras puertas l 
Puerta BUFFER: buf(salida, a)!
BUF l 
0 0 1 1 a
a
Aunque parece poco interesante, va a resultar muy úSl para introducir retardos o mantener valores en los cables 8
Ejercicio 4 •  Probad alguna de las otras puertas (OR, XOR, NAND, NOR, XNOR, NOT, BUFFER) con las disSntas combinaciones de entradas (0,1,x,z). •  Si quisieras probar todas las puertas con todas las combinaciones, ¿cuántas líneas de código necesitarías? 9
Interconexión de puertas l 
l 
La salida de una puerta puede ser entrada de otra puerta En general: l 
l 
l 
La salida de una puerta lógica siempre debe ser un cable (wire) La entrada de una puerta lógica puede ser un cable o registro Ejemplo: construir la tabla de verdad de f2(a,b,c)=ab+c 10
Interconexión de puertas // Tabla de verdad de f2(a,b,c)=ab+c!
module f2;!
reg [2:0] r; // Entradas: a=r[2], b=r[1], c=r[0]!
wire salida, ab;!
conexión
e
d
le
b
a
c
l
e
s
e
ab
!
and a1(ab,r[2],r[1]);!
or o1(salida,ab,r[0]);!
!
// Bloque de comportamiento!
initial!
begin!
$display("
a b c | f2");!
$display("
----------");!
$monitor($time," %b %b %b | %b", r[2],r[1], r[0], salida);!
r=0; // r=000 => a=0, b=0, c=0!
while (r!='b111) #5 r=r+1;!
11
bucle para ir recorriendo los valores
end!
de 000 a 111
endmodule!
Interconexión de puertas •  Tabla de verdad de f2 a b c f2 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 0
5
10
15
20
25
30
35
a b c | f2
----------!
0 0 0 | 0!
0 0 1 | 1!
0 1 0 | 0!
0 1 1 | 1!
1 0 0 | 0!
1 0 1 | 1!
1 1 0 | 1!
1 1 1 | 1!
12
Ejercicio 8 •  Constrúyase la tabla de verdad de la función f3 vista en teoría y cuyo diagrama con puertas es el que se muestra a conSnuación 13
Ejercicio 9 •  Comprobad, mediante un programa Verilog, que la función f3 es equivalente a esta otra elaborada sólo con puertas NAND 14
15
Descargar