Practica 03
Practica 03
Practica 03
Objetivos:
Introducción:
De forma abstracta, un circuito digital puede especificarse mediante un símbolo el cual muestre
las entradas y salidas, y una descripción de lo que hace el circuito. De forma interna, este circuito
posiblemente se componga de muchas compuertas, las cuales están interconectadas para
reproducir un comportamiento deseado en el circuito. Podemos interconectar tantas
compuertas como queramos, pero en cierto punto esto podría ser muy costoso.
Es posible dividir el circuito en pequeñas piezas, llamadas bloques, junto con sus interfaces, de
tal manera que ahora la interconexión de estas piezas cumpla con la especificación completa del
circuito. Observe que esto es semejante a una filosofía de “divide y vencerás”, en donde este
diseño jerárquico permite:
Enfocarse en diseños más sencillos que forman los bloques o ladrillos de construcción de
circuitos más complicados.
Permite el reúso.
Algunos circuitos “básicos” que son los bloques de otros circuitos más complicados son:
• Multiplexores/Demultimplexores.
• Códificadores/Decodificacores.
• Sumadores.
Multiplexores/Demultimplexores
Códificadores/Decodificacores
Observe en la Tabla 1 que, cada salida representa uno y solo un mintérmino, por lo que al igual
que con los multiplexores, los decodificadores en línea permiten diseñar otros circuitos
combinacionales; solo habría que “cablear” en una compuerta OR, todas aquellas salidas que
están asociadas a los mintérminos de la tabla de verdad del circuito combinacional.
Entrada Salidas
x y z F0(x,y,z) F1(x,y,z) F2(x,y,z) F3(x,y,z) F4(x,y,z) F5(x,y,z) F6(x,y,z) F7(x,y,z)
0 0 0 1 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0 0 0 0
0 1 0 0 0 1 0 0 0 0 0
0 1 1 0 0 0 1 0 0 0 0
1 0 0 0 0 0 0 1 0 0 0
1 0 1 0 0 0 0 0 1 0 0
1 1 0 0 0 0 0 0 0 1 0
1 1 1 0 0 0 0 0 0 0 1
Tabla 1. Decodificador 3 a 8.
Un codificador, por lo tanto, es un circuito combinacional que realiza el proceso inverso del
decodificador; en este caso, un codificador en línea 2n a n es un circuito combinacional de 2n
entradas y n salidas, el cual general código binario correspondiente, ver Tabla 2.
Entradas Salidas
a b c d e f g h F(a,...,h) F(a,...,h) F(a,...,h)
1 0 0 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 1
0 0 1 0 0 0 0 0 0 1 0
0 0 0 1 0 0 0 0 0 1 1
0 0 0 0 1 0 0 0 1 0 0
0 0 0 0 0 1 0 0 1 0 1
0 0 0 0 0 0 1 0 1 1 0
0 0 0 0 0 0 0 1 1 1 1
Cualquier otra entrada diferente a las anteriores. 0 0 0
Tabla 2. Tabla de verdad de codificador en línea 8 a 3.
De la Tabla 2, observe que en este caso el número de entradas es 8 y, por lo tanto, el número
total de renglones debe ser 256; sin embargo, solo 8 entradas son válidas, las demás dan por
resultado 0.
Sumadores
a 0 0 1 1
b +0 +1 +0 +1
0 1 1 10
Observe que casi todas las salidas son un bit, al cual llamaremos S, pero en el último caso hay
una salida extra, que se conoce como “el llevamos” o acarreo (C). Por lo tanto, tenemos un
circuito combinacional de 2 entradas (a y b) y 2 salidas (C y S), como se muestra en la Tabla 3.
Al circuito de la Tabla 3, se le conoce como medio sumador (Half-Adder), a b C S
la palabra “medio” se refiere a que dicho circuito no considera “el 0 0 0 0
llevamos” o acarreo que provendría de una suma anterior. Recuerde la 0 1 0 1
suma aritmética se realiza respetando las reglas de la notación posicional, 1 0 0 1
lo cual eventualmente, podría generar un acarreo a la siguiente posición. 1 1 1 0
En este caso es necesario emplear un sumador completo (Full-Adder). La Tabla 3. Medio
Tabla 4 muestra la tabla de verdad de un sumador completo. Sumador.
Actividades:
En donde todas las variables son binarias, C es el acarreo de salida y se está realizando una suma
de dos números de tres bits. Note que la suma, para ir en armonía con las entradas de tres bits,
también debería ser de tres bits, por lo tanto, a la salida conecte un display de 7 segmentos, y
el acarreo a un led que en este caso nos indicará que el resultado no puede ser representado
por 3 bits.
Todo lo anterior tendrá que ser implementado en VHDL y Logisim, incluyendo multiplexores y
decodificadores, es decir, no puede emplear las bibliotecas que vienen por default. Puede usar
descripción funcional, por flujo de datos o estructural.