Sei sulla pagina 1di 68

Monografía

CIME
µ

INTRODUCCIÓN AL DISEÑO DIGITAL


DE CIRCUITOS LÓ GICOS
COMBINACIONALES

Capítulo 3
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante

Centro de Investigaciones en Microelectrónica


Facultad de Ingeniería Eléctrica
CUJAE
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Contenido

Resumen I-3

Breve introducción histórica I-3

Introducción al diseño digital I-5

Capítulo 1. Introducción a la Electrónica Digital.

Introducción. I-7
Dispositivos digitales. Compuertas (puertas) lógicas. I-7
Sistemas numéricos. I-11
Códigos. I-12
Circuitos integrados digitales. Familias lógicas. I-16
Series de la familia CMOS. Series de la familia TTL. I-19
Nomenclatura de los circuitos integrados digitales I-20
Algunos índices de las familias CMOS y TTL. I-21
Márgenes de ruido. I-21
Factor de carga (Fan-out). I-22
Lógica cableada. Compuertas drenaje abierto y colector abierto. I-23
Compuertas con tercer estado. Compuertas Schmitt-trigger I-31
Consumo de potencia. I-32
Interconexión de circuitos CMOS con TTL. I-33
Electrónica molecular. I-33
Elementos del Algebra de Conmutación. I-35
Simplificación de funciones lógicas. Mapas de Karnaugh. Azares estáticos I-39
Referencias I-54
Ejercicios. I-55

Capítulo 2. Dispositivos lógicos programables


Introducción II-3
Dispositivos lógicos programables. Clasificación, características y aplicaciones. II-3
PLD simples (SPLD) II-3
Estructura interna de un PAL CMOS II-6
SPLD comerciales. PAL 16V8 II-8
PAL 22V10 II-11
PLD complejos (CPLD). FPGA II-12
Lenguajes de descripción de hardware. Introducción al VHDL. II-15
Diseño jerárquico en VHDL II-23
Síntesis de circuitos lógicos combinacionales usando PLD y circuitos integrados SSI II-27
Referencias II-32
Ejercicios II-33
Anexo 1 II-37

2
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
Anexo 2 II-38

Capítulo 3. Circuitos integrados digitales de mediano y alto nivel de


integración

Introducción. Convertidores de código. 4


Decodificadores. Diferentes tipos. 4
Aplicaciones de los decodificadores binarios 9
Extensión de decodificadores binarios 12
Decodificadores para lámparas de siete segmentos 12
Codificadores. Diferentes tipos. Aplicaciones 15
Selectores de datos (multiplexores) 19
Aplicacio nes de los selectores de datos 25
Estructura decodificador binario-selector de datos 33
“Demultiplexers” 37
Memorias ROM. 39
Capacidad de la memoria ROM 43
Extensión de memoria. Banco de memoria 44
ROM comerciales 53
Diagramas de tiempo 54
Aplicaciones de la memoria ROM. 55
Programación de la ROM utilizando un súper lenguaje. 55
Referencias 57
Ejercicios 57

Indice general 61

3
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Capítulo 3. Circuitos integrados digitales de


mediano y alto nivel de integración
Introducción.-
En este capítulo se estudian los circuitos integrados combinacionales de nivel de
integración medio y se presentan algunas de sus aplicaciones. También se estudia las
memorias ROM programables (PROM), que son circuitos integrados de nivel de
integración alto.

Circuitos integrados combinacionales de nivel de integración medio. [1,2]


En el diseño de los circuitos lógicos combinacionales hay algunas estructuras que aparecen
en forma reiterada. Por esa razón, y gracias al desarrollo de la microelectrónica, se fabrican
y están disponibles comercialmente gran cantidad de éstas las que se ofertan como
circuitos integrados de nivel de integración medio. Entre ellas están los decodificadores
(decoders), codificadores (encoders) y los selectores de datos (multiplexers). La utilización
de estos circuitos integrados, comparados con los de nivel de integración bajo, reduce la
cantidad de “pastillas” necesarias para construir un circuito o sistema digital, disminuye el
tiempo y los costos de diseño y aumentan la confiabilidad de los mismos. Su empleo
presupone utilizar una metodología de diseño diferente a la que se utiliza con los circuitos
integrados de nivel de integración pequeño.

Decodificadores.
Un decodificador es un conversor de código que convierte una palabra de entrada en una
palabra de salida diferente. Generalmente, en los decodificadores la palabra de salida utiliza
un código con un mayor número de bits que el código de entrada. Los decodificadores más
utilizados son los binarios. Los decodificadores binarios emplean el código binario en la
palabra de entrada, mientras que la palabra de salida se codifica de modo tal que todos sus
bits son iguales, excepto uno de ellos. La posición del bit desigual indica el valor binario de
la palabra de entrada. Además de la palabra de entrada en código binario, en estos
decodificadores puede haber otras señales de entrada que habilitan o no la función que
realiza el circuito. Cuando el decodificador no está habilitado los bits en la palabra de salida
son todos iguales.
Para comprender mejor lo explicado anteriormente, en la Tabla 3-1 se muestra el
funcionamiento de un decodificador binario de dos bits (decodificador de dos a cuatro
líneas). En este caso B y A son los bits de la palabra binaria de entrada y G es la señal de
habilitación. La palabra de salida tiene cuatro bits (Y3,Y2,Y1,Y0) que serán todos iguales a
cero si el decodificador no está habilitado (G = 0). Cuando está habilitado (G = 1), entonces
el terminal de salida que se activa depende de la palabra de entrada. En este decodificador
se dice que las salidas son activas a nivel alto porque el bit correspondiente a la salida
activada toma el valor uno y los demás toman el valor cero. Cuando las salidas son activas

4
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
a nivel bajo ocurre lo contrario. Las señales de entrada A y B en este decodificador también
son activas a nivel alto.

Entradas Salidas
G B A Y3 Y2 Y1 Y0
1 0 0 0 0 0 1
1 0 1 0 0 1 0
1 1 0 0 1 0 0
1 1 1 1 0 0 0
0 - - 0 0 0 0
Tabla 3-1 Decodificador binario de dos bits con salidas activas a nivel alto.

Utilizando la Tabla 3-1 podemos escribir las funciones de salida:


Y0 = G/B/A
Y1 = G/BA
Y2 = GB/A
Y3 = GBA
Como puede verse, en las salidas del decodificador binario están presentes todos los
términos productos de las variables que forman la palabra correspondiente al código
binario de entrada. A partir de las ecuaciones anteriores se puede dibujar el circuito para
este decodificador:

Figura 3-1. Decodificador binario de dos bits con salidas activas a nivel alto.
a) Diagrama circuital b) Símbolo lógico

5
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Ejemplo 3-1.
Escriba un programa en VHDL para obtener un decodificador binario cuya funcionamiento
sea igual al dado en la Tabla 3-1.

Solución:
-- Fichero: ejem3_1.vhd

ENTITY ejem3_1 IS
PORT (
G, B, A : in bit ;

Y: out bit_vector (3 downto 0) ) ;


End ejem3_1 ;

ARCHITECTURE ejem3_1 OF ejem3_1 IS

signal Yi: bit_vector (3 downto 0) ;


begin
Yi <= "0001" when B='0' AND A='0' else
"0010" when B='0' AND A='1' else
"0100" when B='1' AND A='0' else
"1000" ;

Y <= Yi when G ='1' else "0000" ;

end ejem3_1 ;

-- Ahora lo empaquetamos para poder reutilizarlo en otro diseño:

PACKAGE DECPKG IS
COMPONENT ejem3_1
PORT (
G, B, A: in bit ;
Y: out bit_vector (3 downto 0) ) ;
END COMPONENT ;
END DECPKG ;

6
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
La simulación permite comprobar que efectivamente el circuito diseñado cumple los
requisitos establecidos. He aquí el resultado:

Figura 3-2. Simulación del decodificador binario de dos bit diseñado en el Ejemplo 3-1.

Decodificadores comerciales 74x138 y 74x139.


Los CI 74x138 y 74x139 son decodificadores binarios muy conocidos. Ambos se ofertan en
envases plásticos doble en línea de 16 terminales como se muestra en la Figura 3-3.

Figura 3-3. Distribución de terminales de los decodificadores binarios 74x138 y 74x139.


Los terminales 8 y 16, no representados, son los terminales de alimentación. a) 74x138:
decodificador binario de 3 a 8 líneas. b) 74x139: Dos decodificadores binarios de 2 a 4
líneas cada uno.

Estos decodificadores tienen sus salidas activas a nivel bajo. El circuito integrado 74x139
contiene dos decodificadores binarios iguales de dos a cuatro líneas. El 74x138 es un
decodificador binario de tres a ocho líneas. El funcionamiento de cada uno de ellos se
muestra en las Tabla 3-2 y 3-3, respectivamente.

Entradas Salidas
G_L B A Y3_L Y2_L Y1_L Y0_L
0 0 0 1 1 1 0
0 0 1 1 1 0 1
0 1 0 1 0 1 1
0 1 1 0 1 1 1
1 - - 1 1 1 1

7
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
Tabla 3-2. Funcionamiento de cada uno de los decodificadores 74x139. La entrada de
habilitación, G_L, es activa a nivel bajo.

A partir de la Tabla 3-2 podemos escribir las ecuaciones de salida del decodificador 74x139
que son la siguientes:
Y0_L = /(/G_L/B/A), Y1_L = /(/G_L/BA), Y2_L = /(/G_LB/A), Y3_L = /(/G_LBA)

El circuito lógico es el mostrado a continuación:

Figura 3-4 Decodificador binario 74x139. Diagrama de uno de los dos decodificadores que
contiene esta pastilla. Nótese que todas las entradas están “buffereadas”.

La Tabla de funcionamiento del 74x138 es la mostrada a continuación:


Entradas Salidas
G1 G2A_L G2B_L C B A Y7_L Y6_L Y5_L Y4_L Y3_L Y2_L Y1_L Y0_L
0 - - - - - 1 1 1 1 1 1 1 1
- 1 - - - - 1 1 1 1 1 1 1 1
- - 1 - - - 1 1 1 1 1 1 1 1
1 0 0 0 0 0 1 1 1 1 1 1 1 0
1 0 0 0 0 1 1 1 1 1 1 1 0 1
1 0 0 0 1 0 1 1 1 1 1 0 1 1
1 0 0 0 1 1 1 1 1 1 0 1 1 1
1 0 0 1 0 0 1 1 1 0 1 1 1 1
1 0 0 1 0 1 1 1 0 1 1 1 1 1
1 0 0 1 1 0 1 0 1 1 1 1 1 1
1 0 0 1 1 1 0 1 1 1 1 1 1 1

Tabla 3-3 Tabla de funcionamiento del decodificador binario 74x138.

El decodificador 74x138 posee tres entradas de habilitación, una activa a nivel alto, G1, y
dos activas a nivel bajo, G2A_L y G2B_L. El código binario de entrada está constituido por
tres señales activas a nivel alto: C, B, A donde A es el bit menos significativo (LSB).
Mediante la Tabla 3-3 se pueden escribir las ecuaciones de cada una de las salidas tal como
aparecen en el Ejercicio 3-2.

8
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Ejemplo 3-2.
Escriba un programa en VHDL para obtener un decodificador binario cuyo funcionamiento
sea igual al 74x138.

Solución:

-- Fichero: ejem3_2.vhd

ENTITY ejem3_2 IS

PORT ( G1, G2A_L, G2B_L, C, B, A : IN BIT ;


Y_L: out bit_vector (7 downto 0) ) ;
End ejem3_2 ;

ARCHITECTURE ejem3_2 OF ejem3_2 IS

signal Y_i: BIT_VECTOR (7 downto 0) ;


begin
Y_i <= "11111110" when C=’0’ AND B='0' AND A='0' else
"11111101" when C=’0’ AND B='0' AND A='1' else
"11111011" when C=’0’ AND B='1' AND A='0' else
"11110111" when C=’0’ AND B='1' AND A='1' else
"11101111" when C=’1’ AND B='0' AND A='0' else
"11011111" when C=’1’ AND B='0' AND A='1' else
"10111111" when C=’1’ AND B='1' AND A='0' else
"01111111" ;

Y_L <= Y_i when G1 = '1' AND G2A_L = ‘0’ AND G2B_L =’0’ ELSE
"11111111" ;

end ejem3_2 ;

Aplicaciones de los decodificadores binarios:


Los decodificadores binarios tienen numerosas aplicaciones. En los Ejemplos 3-3, 3-4 y 3-5
se ilustran algunas.

Ejemplo 3-3 Utilice el decodificador binario de 2 a 4 líneas de la Figura 3-1 y una


compuerta OR de dos entradas y diseñe la función F(x,w) = /x/w + xw = ∑ (0,3).

Solución:

9
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
Teniendo en cuenta que en las salidas del decodificador binario están presentes todos los
términos productos de las variables que forman la palabra correspondiente al código
binario de entrada sólo se necesita conectar las salidas adecuadas del decodificador a las
entradas de la compuerta OR ya que el decodificador binario que se utiliza en este caso
tiene sus salidas activas a nivel alto (cuando el decodificador binario tiene las salidas
activas a nivel bajo es necesario utilizar una compuerta NAND). El circuito resultante en
este caso se muestra a continuación:

Nótese lo sencillo que resulta el diseño cuando se tienen las funciones expresadas en forma
decimal. Sólo es necesario conectar las entradas de las compuertas a las salidas
correspondientes del decodificador de acuerdo a cada uno de los términos de las funciones
dadas.

Ejemplo 3-4 Repita el Ejemplo anterior pero utilice el decodificador 74x139.

Solución
En este caso el decodificador tiene las salidas activas a nivel bajo, por lo tanto es necesario
utilizar una compuerta NAND.
El circuito resultante es el siguiente:

Ejemplo 3-5 Utilice un decodificador 74x138 y un 74x20 y diseñe las funciones


F1(x,y,z) = /x.y./z + /x.y.z + x./y./z + x.y.z = ∑ (2,3,4,7)

10
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

F2(x,y,z) = /x./y./z + /x./y.z + x./y.z + x.y.z = ∑ (0,1,5,7)


Solución:
En este caso, como se utiliza un decodificador que tiene las salidas activas a nivel bajo es
necesario que las compuertas sean NAND. El circuito resultante es el siguiente:

Ejemplo 3-6 Describa el funcionamiento del circuito siguiente:

Solución:
Con este circuito se puede colocar en serie los datos A, B, C y D en el Bus. En la Tabla
siguiente se ilustra una alternativa posible:
EN_L X W Bus
1 0 0 Tercer estado
0 0 0 A
1 0 1 Tercer estado
0 0 1 B
1 1 0 Tercer estado
0 1 0 C
1 1 1 Tercer estado
0 1 1 D

11
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Extensión de decodificadores binarios.


Cuando se necesita un decodificador binario mayor que el disponible es posible construirlo
utilizando varios de ellos y algunos otros elementos. Para ilustrar lo anterior en la Figura
3-5 se muestra la obtención de un decodificador binario de 5 a 32 líneas utilizando cuatro
decodificadores de 3 a 8 líneas tipo 74x138 y la mitad de un 74x139. La extensión es
aplicable también a otros tipos de circuitos, no sólo a los decodificadores binarios, más
adelante, en este capítulo, se mostrarán otros casos

Figura 3-5 Decodificador binario de 5 a 32 líneas utilizando cuatro 74x138

Decodificadores para lámparas de siete segmentos [1,2,3]


Además de los decodificadores binarios, hay otros tipos de decodificadores de uso
específico entre ellos los más conocidos son el decodificador BCD a siete segmentos y el
decodificador hexadecimal a siete segmentos. De acuerdo a los dos tipos de lámparas de
siete segmentos existentes, la de cátodo común o la de ánodo común, se fabrican
decodificadores para un tipo u otro de lámpara, ejemplos de circuitos comerciales de este
tipo son el 74x47, 74x48 y 74x49. Los tres son decodificadores BCD a siete segmentos, el
74x47 es para lámparas de ánodo común mientras que el 74x48 y el 74x49 son para
lámparas de cátodo común.

12
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
En la Figura 3-6 se muestran los esquemas correspondientes a estos dos tipos de lámparas,
pd es un segmento para indicar el punto decimal:

Figura 3-6 Esquema interno de lámparas de siete segmentos a) Lámpara de ánodo común
b) ) Lámpara de cátodo común

En la Figura 3-7 se muestra la identificación de cada uno de los segmentos de la lámpara y


los dígitos del sistema hexadecimal.

Figura 3-7 Lámpara siete segmentos. a) Identificación de cada uno de los segmentos de la
lámpara. b) Dígitos del sistema hexadecimal.

La tabla de la verdad para un decodificador hexadecimal a siete segmentos para lámparas


de cátodo común, cuyos segmentos, de acuerdo a la Figura 3-6 b), se encienden
aplicándoles el uno lógico es la siguiente:
Entradas Salidas
n3 n2 n1 n0 g f e d c b a
0 0 0 0 0 1 1 1 1 1 1
0 0 0 1 0 0 0 0 1 1 0

13
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

0 0 1 0 1 0 1 1 0 1 1
0 0 1 1 1 0 0 1 1 1 1
0 1 0 0 1 1 0 0 1 1 0
0 1 0 1 1 1 0 1 1 0 1
0 1 1 0 1 1 1 1 1 0 1
0 1 1 1 1 0 0 0 1 1 1
1 0 0 0 1 1 1 1 1 1 1
1 0 0 1 1 1 0 1 1 1 1
1 0 1 0 1 1 1 0 1 1 1
1 0 1 1 1 1 1 1 1 0 0
1 1 0 0 0 1 1 1 0 0 1
1 1 0 1 1 0 1 1 1 1 0
1 1 1 0 1 1 1 1 0 0 1
1 1 1 1 1 1 1 0 0 0 1

Tabla 3-4 Tabla de la verdad para un decodificador hexadecimal


a siete segmentos para lámparas de cátodo común

Ejemplo 3-7 Escriba un programa en VHDL para el diseño de un decodificador


hexadecimal a siete segmentos para lámparas de cátodo común semejante al mostrado en la
Tabla 3-4. Verifique, mediante la simulación, el resultado obtenido

Solución:
-- Decodificador hexadecimal a siete segmentos para
-- lámparas de cátodo común
library IEEE; -- fichero:hex_7seg.vhd
use IEEE.std_logic_1164.all;

ENTITY hex_7s IS PORT (


Data: IN std_logic_vector (3 downto 0); -- (n3,n2,n1,n0)
ledout: OUT std_logic_vector (6 downto 0) );
END hex_7s ;

ARCHITECTURE hex_7s OF hex_7s IS


begin
with Data select
ledout <= "0111111" when "0000",
"0000110" when "0001",
"1011011" when "0010",
"1001111" when "0011",
"1100110" when "0100",
"1101101" when "0101",
"1111101" when "0110",
"1000111" when "0111",
"1111111" when "1000",
"1101111" when "1001",

14
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
"1110111" when "1010",
"1111100" when "1011",
"0111001" when "1100",
"1011110" when "1101",
"1111001" when "1110",
"1110001" when others ;
end hex_7s ;

Figura 3-8 Resultados de la simulación del decodificador hexadecimal a siete segmentos.

Codificadores (Encoders).
Los codificadores realizan la operación inversa a los decodificadores. Por lo tanto
generalmente tienen un número mayor de entradas que de salidas. Un ejemplo de encoder
de cuatro entradas muy sencillo es el que se muestra en la tabla siguiente:

Entradas Salidas
I3 I2 I1 I0 Y1 Y0
1 0 0 0 1 1
0 1 0 0 1 0
0 0 1 0 0 1
0 0 0 1 0 0

Tabla 3-5. Encoder de cuatro entadas sin prioridad

El codificador dado en la Tabla 3-5 es un encoder sin prioridad puesto que siempre debe
haber activada una sola de sus entradas. El código binario a la salida muestra cuál es la
entrada que se encuentra activada.
A partir de la tabla podemos escribir los Mapas de Karnaugh para YO y Y1:

Mapa de Karnaugh de la función Y1


I1 I0 00 01 11 10
I3 I2

15
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

00 - 0 - 0
01 1 - - -
11 - - - -
10 1 - - -

Nótese la existencia de los opcionales correspondientes a las combinaciones de entrada que


no pueden ocurrir en este tipo de encoder.

Agrupando convenientemente los unos con los opcionales se forman dos grupos con ocho
elementos cada uno de ellos, de donde se obtiene la ecuación siguiente:
Y1 = I3 + I2

Mapa de Karnaugh de la función Y0


I1 I0 00 01 11 10
I3 I2
00 - 0 - 1
01 0 - - -
11 - - - -
10 1 - - -

Agrupando convenientemente los unos con los opcionales se forman dos grupos con ocho
elementos cada uno de ellos, de donde se obtiene la ecuación siguiente:
Y0 = I3 + I1

El diagrama circuital para estas ecuaciones es el siguiente:

Figura 3-9. Codificador de cuatro entradas sin prioridad

Ejemplo 3-8
Escriba en VHDL un programa para el diseño del codificador sin prioridad dado en la
Tabla 3-5.

Solución:

-- Encoder sin prioridad, fichero: ejem3_8.vhd


library IEEE;
use IEEE.std_logic_1164.all ;

16
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

ENTITY ejem3_8 IS
PORT (
I: in std_logic_vector (3 downto 0) ;
y: out std_logic_vector (1 downto 0) ) ;

END ejem3_8 ;

ARCHITECTURE ejem3_8 OF ejem3_8 IS


begin

with I select
Y<= "11" when "1000" ,
"10" when "0100" ,
"01" when "0010" ,
"00" when "0001" ,
"--" when others ;

end ejem3_8 ;

Encoder de prioridad
En este tipo de encoder se permite la activación simultánea de varias entradas lo que
resulta de mayor utilidad, por ejemplo, en aplicaciones donde varios dispositivos solicitan
ser atendidos simultáneamente. En la Tabla 3-6 se muestra el funcionamiento de un
encoder de prioridad de cuatro entradas, considerando que I3 es la entrada de mayor
prioridad e Io la de menor prioridad:

Entradas Salidas
I3 I2 I1 I0 Y1 Y0
1 - - - 1 1
0 1 - - 1 0
0 0 1 - 0 1
0 0 0 1 0 0

Tabla 3-6 Encoder de prioridad de cuatro entradas

A partir de la Tabla 3-6 podemos escribir los Mapas de Karnaugh para YO y Y1:

Mapa de Karnaugh de la función Y1


I1 I0 00 01 11 10
I3 I2
00 0 0 0 0
01 1 1 1 1

17
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

11 1 1 1 1
10 1 1 1 1

Agrupando convenientemente los ceros se forma un grupo con los cuatro elementos de la
fila superior del mapa. Este grupo ofrece la ecuación simplificada siguiente:

/y1 = /i3 * /i2

Mapa de Karnaugh de la función Y0


I1 I0 00 01 11 10
I3 I2
00 0 0 1 1
01 0 0 0 0
11 1 1 1 1
10 1 1 1 1

Agrupando convenientemente los unos se forma un grupo con ocho elementos y otro grupo
de cuatro unos. A partir de estos grupos se obtiene la ecuación siguiente:

Y0 = i3 + /i2 * i1

Ejemplo 3-9
Escriba en VHDL un programa para el diseño del codificador con prioridad dado en la
Tabla 3-6.

Solución:

-- Encoder de cuatro entradas con prioridad, fichero: ejem3_9.vhd

library IEEE;
use IEEE.std_logic_1164.all ;

ENTITY ejem3_9 IS
PORT ( I3, I2, I1, I0: in std_logic ;
y: out std_logic_vector (1 downto 0) ) ;

END ejem3_9 ;

ARCHITECTURE ejem3_9 OF ejem3_9 IS


begin

Y<= "11" when I3 = '1' ELSE


"10" when I2 = '1' ELSE
"01" when I1 = '1' ELSE
"00" ;

18
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

end ejem3_9 ;

-- Nótese el tratamiento dado a los opcionales en las variables de entrada de la Tabla 3-6.

A continuación se muestra un fragmento del fichero ejem3_9.rpt donde aparecen las


ecuaciones de diseño obtenidas por el compilador Galaxy las que coinciden exactamente
con las obtenidas anteriormente utilizando el método de los mapas de Karnaugh:

PLD Compiler Software: PLA2JED.EXE 17/JUL/96 [v3.22 ] 4 IR x66

DESIGN EQUATIONS (12:24:24)

/y_1 = /i3 * /i2

y_0 = /i2 * i1 + i3

Completed Successfully

En los resultados de la simulación, mostrados en la Figura 3-10, se aprecia la ausencia de la


variable de entrada I0 esto es debido a que tanto Y0 como Y1 no dependen de dicha
variable.

Figura 3-10 Resultados de la simulación del encoder de prioridad de cuatro entradas.

Entre los encoders de prioridad disponibles comercialmente se encuentra el 74x148 que es


un encoder de ocho entradas. En las Referencias [1-2] puede encontrarse sus características
principales.

19
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Selectores de datos (Multiplexers).

Los selectores de datos son conmutadores digitales que permiten seleccionar uno entre n
datos de acuerdo a un código de selección formado por una palabra de entrada que debe
tener m bits de modo tal que 2 elevado a m sea igual o mayor que n. El dato seleccionado
aparecerá en la salida del selector. Este dato puede ser de b, uno o más, bits. Además de las
entradas de selección y de datos, en un multiplexer, generalmente, hay una entrada de
habilitación.
En la Figura 3-11 se muestra la estructura de un selector de datos

Figura 3-11 Estructura de un selector de datos (multiplexer)

En los selectores de datos comerciales n = 2, 4, 8 ó 16; mientras que b = 1, 2 ó 4.


Cuando la entrada de habilitación se encuentra activada el selector puede realizar su
función y cuando no lo está la salida estará desactivada o en tercer estado, esto depende del
tipo específico de selector.

Selectores de datos comerciales


La mayoría de los multiplexers comerciales se ofertan en envases doble en línea de 16
terminales. Entre los más populares se encuentran el 74x151, 74x153 y 74x157, mostrados
en la Figura 3-12:

20
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Figura 3-12. Selectores de datos (multiplexers) comerciales 74x151, 74x153 y 74x157.

El 74x151 es un selector de ocho entradas de datos de un bit cada uno o sea n = 8 y b = 1,


tiene 3 entradas de selección (m = 3) C, B y A donde A es la menos significativa y una
entrada de habilitación, EN_L, que se activa a nivel bajo. Se disponen de dos salidas
complementarias. Cuando la entrada de habilitació n no está activada la salida Y = 0
mientras que /Y = 1. La Tabla de la verdad del 74x151 es la siguiente:

EN_ L C B A Y /Y

1 - - - 0 1
0 0 0 0 D0 /D0
0 0 0 1 D1 /D1
0 0 1 0 D2 /D2
0 0 1 1 D3 /D3
0 1 0 0 D4 /D4
0 1 0 1 D5 /D5
0 1 1 0 D6 /D6
0 1 1 1 D7 /D7

Tabla 3-7. Tabla de la verdad del 74x151.

A partir de la Tabla 3-7 podemos escribir las ecuaciones de diseño para el 74x151 que son
las siguientes:

Y = /EN_L (/C*/B*/A*D0 + /C*/B* A*D1 + /C* B*/A*D2 + /C* B* A*D3 +


C*/B*/A*D4 + C*/B* A*D5 + C* B*/A*D6 + C* B* A*D7)
/Y = NOT Y

Con las ecuaciones anteriores se dibuja el circuito del 74x151 como se muestra en la
Figura 3-13.

21
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
El 74x153 son dos selectores de cuatro entradas de datos de un bit cada uno o sea n = 4 y
b = 1, tiene 2 entradas de selección (m = 2) comunes para ambos selectores B y A donde A
es la menos significativa y una entrada de habilitación independiente para cada selector,
G_L, que se activa a nivel bajo. Cuando la entrada de habilitación no está activada la salida
Y = 0. La Tabla de la verdad, para cada uno de los selectores del 74x153, es la siguiente:

G_L B A Y

1 - - 0
0 0 0 C0
0 0 1 C1
0 1 0 C2
0 1 1 C3

Tabla 3-8. Tabla de la verdad del 74x153

La ecuación para el diseño de cada uno de lo selectores que forman el 74x153 es la


siguiente:
Y = /G_L (/B*/A*C0 + /B*A*C1 + B*/A*C2 + B*A*C3)

El 74x157 son cuatro selectores de dos entradas de datos de un bit cada uno o sea n = 2 y
b = 1, tiene una entrada de selección, S, y una entrada de habilitación G_L que se activa a
nivel bajo. Cuando la entrada de habilitación no está activa las salidas de los selectores
están a nivel bajo. La entrada de selección y la de habilitación es la misma para los cuatro
selectores que contiene esta pastilla. La Tabla de la verdad, para cada uno de los selectores
del 74x157, es la siguiente:

G_L S Y

1 - 0
0 0 A
0 1 B

Tabla 3-9. Tabla de la verdad del 74x157

22
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Figura 3-13. Circuito del selector de datos 74x151

Comercialmente se oferta también el selector de datos 74x251 que es semejante al 74x151,


la única diferencia consiste en que si la entrada de habilitación no está activada (En_L = 1),
las salidas del selector están en tercer estado. Existen también los selectores 74x253 y
74x257 semejantes al 74x153 y 74x157, respectivamente, con la diferencia ya señalada de
que sus salidas están en tercer estado cuando la entrada de habilitación no está activada.

Ejemplo 3-10 Utilice VHDL y escriba un programa para el diseño de un selector semejante
al 74x151.

Solución:
-- Multiplexer tipo 74x151, fichero: ejem3_10.vhd

library IEEE ;
use IEEE.std_logic_1164.all ;

ENTITY ejem3_10 IS
PORT (
EN_L, C, B, A : in std_logic ;
D7, D6, D5, D4, D3, D2, D1, D0: in std_logic ;
Y, Y_L: out std_logic ) ;

23
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
END ejem3_10 ;

ARCHITECTURE ejem3_10 OF ejem3_10 IS


Signal Y_i: std_logic ;
begin

Y_i <= D0 when C = '0' AND B = '0' AND A = '0' ELSE


D1 when C = '0' AND B = '0' AND A = '1' ELSE
D2 when C = '0' AND B = '1' AND A = '0' ELSE
D3 when C = '0' AND B = '1' AND A = '1' ELSE
D4 when C = '1' AND B = '0' AND A = '0' ELSE
D5 when C = '1' AND B = '0' AND A = '1' ELSE
D6 when C = '1' AND B = '1' AND A = '0' ELSE
D7 ;

Y <= Y_i when EN_L = '0' ELSE


'0' ;

Y_L <= NOT Y_i when EN_L = '0' ELSE


'1' ;

end ejem3_10 ;

24
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Figura 3-14. Resultados de la simulación del Ejemplo 3-10

Aplicaciones de los selectores de datos


Al igual que los decodificadores binarios, los selectores de datos pueden ser utilizados para
sintetizar funciones lógicas. Incluso con ventaja respecto a los decodificadores como
veremos en el siguiente ejemplo.

Ejemplo 3-11 Utilice el CI 74x153 y diseñe las funciones lógicas


F1(x,y,z) = /x.y./z + /x.y.z + x./y./z + x. y.z = ∑ (2,3,4,7)
F2(x,y,z) = /x./y./z + /x./y.z + x./y.z + x.y.z = ∑ (0,1,5,7)
Compare los resultados con los obtenidos en el Ejemplo 3-5.

Solución:

Teniendo en cuenta la ecuación para el diseño de cada uno de lo selectores que forman el
74x153 que es Y = /G_L (/B*/A*C0 + /B*A*C1 + B*/A*C2 + B*A*C3)
Haciendo /G_L = 0 , B = x y A = y, quedará Cj en función de la variable z.
El valor específico de Cj se determina a partir de la tabla de la verdad de cada una de las
funciones que se desee sintetizar. En la figura que sigue se muestra el resultado.
Comparando esta solución con la encontrada en el Ejemplo 3-5, donde se utilizó un
decodificador binario 74x138, se ve que es más sencilla la solución utilizando selectores de
datos.

25
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Ejemplo 3-12 Utilice el selector de datos 74x151 y diseñe la función


W(n3,n2,n1,n0) = ∑ (0,2,3,5,6,7,8,9,10,12,14,15)
Solución:
Dado que el multiplexer disponible tiene tres entradas de selección le asignaremos a dichas
entradas las tres variables más significativas de la función W que se desea sintetizar, debe
tenerse cuidado que la variable mas significativa de la función se asigne a la entrada de
selección más significativa del multiplexer y así sucesivamente (para este caso n3 = C,
n2 = B, n1 = A). Por consiguiente las entradas de datos, Dj, del multiplexer quedarán
entonces en función de la variable menos significativa, o sea Dj = F(n0). Lo anterior puede
verse en la siguiente tabla:

n3 = C n2 = B n1 = A n0 W Dj = F(n0)
0 0 0 0 1 D0 = /n0
0 0 0 1 0
0 0 1 0 1 D1 = 1
0 0 1 1 1
0 1 0 0 0 D2 = n0
0 1 0 1 1
0 1 1 0 1 D3 = 1
0 1 1 1 1
1 0 0 0 1 D4 = 1
1 0 0 1 1
1 0 1 0 1 D5 = /n0
1 0 1 1 0
1 1 0 0 1 D6 = /n0
1 1 0 1 0
1 1 1 0 1 D7 = 1
1 1 1 1 1

26
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
Ahora solamente resta dibujar el circuito como se muestra a continuación:

Nótese la sencillez del diseño cuando se utilizan circuitos de mediano nivel de integración
comparado con el caso del diseño basado en circuitos de nivel de integración pequeño.

Ejemplo 3-13 En la figura que aparece debajo se ilustra otra aplicación de los selectores de
datos, se trata de un sistema de trasmisión “multiplexado” en el tiempo:

En las entradas de datos del selector se coloca en paralelo los ocho bits de la palabra de
entrada y esta se trasmite bit a bit por la salida del multiplexer que está conecta al canal de
trasmisión. El tiempo que demora en trasmitirse una palabra depende de la frecuencia de la
señal de reloj.

27
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Ejemplo 3-14 Compruebe que el circuito mostrado realiza la tabla de la verdad


correspondiente a cada uno de los selectores de datos del 74x153.

Solución:
La tabla de datos para cada uno de los selectores del 74x153 fue presentada en la Tabla 3-8
la que se repite aquí por comodidad

G_L B A Y

1 - - 0
0 0 0 C0
0 0 1 C1
0 1 0 C2
0 1 1 C3

Tabla 3-8. Tabla de la verdad del 74x153

Y la tabla de la verdad del decodificador binario fue dada en Tabla 3-1 que se repite aquí
también:

Entradas Salidas
G B A Y3 Y2 Y1 Y0
1 0 0 0 0 0 1
1 0 1 0 0 1 0
1 1 0 0 1 0 0
1 1 1 1 0 0 0
0 - - 0 0 0 0

Tabla 3-1 Decodificador binario de dos bits con salidas activas a nivel alto.

La tabla funcional del circuito resultante es, por lo tanto, la siguiente:

28
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

G_L G A B Y3 Y2 Y1 Y0 Y
0 1 0 0 0 0 0 1 C0
0 1 0 1 0 0 1 0 C1
0 1 1 0 0 1 0 0 C2
0 1 1 1 1 0 0 0 C3
1 0 - - 0 0 0 0 0

Comparando la tabla anterior con la Tabla 3-8 se comprueba que el circuito dado en la
figura de este ejemplo es el correspondiente al 74x153.

Ejemplo 3-15 Utilice el diseño jerárquico en VHDL y escriba un programa que permita
obtener un selector de datos semejante al 74x153 empleando el esquema circuital
presentado en el Ejemplo 3-14.

Solución:

-- fichero ejem3_15
-- Programa principal

USE WORK.DECPKG.ALL ; -- Hace visible el paquete decpkg creado en ejem3_1.vhd

ENTITY ejem3_15 IS
PORT (
B, A: in bit ; -- Entradas de selección, comunes para ambos selectores
G1_L, C01, C11, C21, C31 : in bit ; -- Entradas del selector no. 1
G2_L, C02, C12, C22, C32 : in bit ; -- Entradas del selector no. 2
Y1 : out bit ; -- Salida del selector no. 1
Y2 : out bit ) ; -- Salida del selector no. 2

End ejem3_15 ;

ARCHITECTURE ejem3_15 OF ejem3_15 IS


signal g1i, g2i: bit ;
signal y1i, y2i: bit_vector (3 downto 0) ;
signal y13, y12, y11, y10 : bit ;
signal y23, y22, y21, y20 : bit ;

begin

g1i <= not G1_L ;


g2i <= not G2_L ;

dec1 : ejem3_1 port map ( g1i, b, a, y1i ) ;


dec2 : ejem3_1 port map ( g2i, b, a, y2i ) ;

29
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
-- dec1 y dec2 son etiquetas obligatorias ;

y13 <= y1i(3) and c31 ;


y12 <= y1i(2) and c21 ;
y11 <= y1i(1) and c11 ;
y10 <= y1i(0) and c01 ;

y23 <= y2i(3) and c32 ;


y22 <= y2i(2) and c22 ;
y21 <= y2i(1) and c12 ;
y20 <= y2i(0) and c02 ;

Y1<= y13 or y12 or y11 or y10 ;

Y2<= y23 or y22 or y21 or y20 ;

end ejem3_15 ;

Después de compilar se obtiene en el file ejem3_15.rpt las siguientes ecuaciones de diseño


del 74x153 ya conocidas:

PLD Compiler Software: PLA2JED.EXE 17/JUL/96 [v3.22 ] 4 IR x66

DESIGN EQUATIONS (17:39:59)

y1 =
b * a * /g1_l * c31
+ b * /a * /g1_l * c21
+ /b * a * /g1_l * c11
+ /b * /a * /g1_l * c01

y2 =
b * a * /g2_l * c32
+ b * /a * /g2_l * c22
+ /b * a * /g2_l * c12
+ /b * /a * /g2_l * c02

PLD Compiler Software: PLA2JED.EXE 17/JUL/96 [v3.22 ] 4 IR x66

DESIGN EQUATIONS (18:33:04)

Completed Successfully

30
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Ejemplo 3-16 Escriba, a partir de la Tabla 3-8 un programa en VHDL para obtener un
selector de datos semejante al 74x153. Verifique las ecuaciones de diseño a partir del
fichero.rpt

Solución:

La entidad es la misma que en el ejemplo anterior ya que se trata del mismo circuito. La
arquitectura se escribirá en forma diferente, aprovechando la gran flexibilidad que brinda
VHDL lo que permite escribir para una misma entidad un gran variedad de arquitecturas
aun tratándose del mismo circuito.

Recordando que la tabla de la verdad del 74x153 es la siguiente:

G_L B A Y

1 - - 0
0 0 0 C0
0 0 1 C1
0 1 0 C2
0 1 1 C3

Se escribe la arquitectura del programa en VHDL.

-- Fichero: ejem3_16.vhd

ENTITY ejem3_16 IS
PORT (
B, A: in bit ;
G1_L, C01, C11, C21, C31 : in bit ; -- Entradas del selector no.1
G2_L, C02, C12, C22, C32 : in bit ; -- Entradas del selector no. 2
Y1 : out bit ; -- Salida del selector no.1
Y2 : out bit ) ; -- Salida del selector no. 2

End ejem3_16 ;

ARCHITECTURE ejem3_16 OF ejem3_16 IS

signal Y1i, Y2I: bit ;

begin

Y1i <= C01 when B='0' AND A='0' else


C11 when B='0' AND A='1' else
C21 when B='1' AND A='0' else
C31 ;

31
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Y1 <= Y1i when G1_L = '0' else '0' ;

Y2i <= C02 when B='0' AND A= '0' else


C12 when B='0' AND A= '1' else
C22 when B='1' AND A= '0' else
C32 ;

Y2 <= Y2i when G2_L = '0' else '0' ;

end ejem3_16 ;

A partir del fichero ejem3_16.rpt se obtienen las ecuaciones de diseño:

PLD Compiler Software: PLA2JED.EXE 17/JUL/96 [v3.22 ] 4 IR x66

DESIGN EQUATIONS (18:33:04)

y1 =
b * a * /g1_l * c31
+ b * /a * /g1_l * c21
+ /b * a * /g1_l * c11
+ /b * /a * /g1_l * c01

y2 =
b * a * /g2_l * c32
+ b * /a * /g2_l * c22
+ /b * a * /g2_l * c12
+ /b * /a * /g2_l * c02

Completed Successfully

Ejemplo 3-17 Conecte adecuadamente dos selectores de datos 74x151 para obtener un
multiplexor extendido de 16 entradas de datos.

Solución:
La entrada de habilitación posibilita la solución. En este caso la entrada más significativa,
D, se conecta directamente a la entrada de habilitación del decodificador de la parte

32
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
superior de la figura, habilitándolo cuando D = 0. Mientras que esta entrada se conecta a
través de un inversor al decodificador de la parte inferior de la figura, habilitándolo cuando
D = 1. Las entradas de selección correspondientes de cada selector se unen entre sí. Las
entradas de datos desde D0 hasta D7 se corresponden con el selector de la parte superior,
mientras que D8 hasta D15 aparecen en el selector de la parte inferior. Nótese el empleo de
una compuerta NAND de dos entradas conectada a las salidas negadas de ambos selectores
para realizar la operación lógica OR de las mismas. Todo lo anterior se puede ver en la
figura siguiente:

Figura 3-15. Multiplexor extendido a 16 entradas de datos, utilizando dos 74x151.

Estructura decodificador-selector de datos.


Mediante esta estructura se puede sintetizar cualquier circuito lógico combinacional. Se
trata de la utilización combinada de los decodificadores binarios y los selectores de datos.
Además de los circuitos señalados será necesario, en general, utilizar un arreglo de
compuertas. Se ilustra con un ejemplo en qué consiste esta estructura.

33
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
Ejemplo 3-18 Determine la función lógica que realiza el circuito mostrado en la figura
siguiente:

Solución:
La ecuación correspondiente al multiplexer es la siguiente:

F = /EN(/B/AC0 + /BAC1 + B/AC2 + BAC3)


Pero de acuerdo a la figura, en el multiplexer A = n2, B = n3 y /EN = 1,

Sustituyendo en F, se obtiene:

F = /n3/n2C0 + /n3n2C1 + n3/n2C2 + n3n2C3, además de la figura se tiene que

C0 = /n1/n0 + /n1n0 + n1/n0 + n1n0


C1 = 0
C2 = 0
C3 = /n1/n0 + /n1n0 + n1/n0 + n1n0
Sustituyendo estos valores de CO. C1, C2 y C3 en F se obtiene la función lógica que realiza
el circuito:

F(n3,n2,n1,n0) = /n3/n2/n1/no + /n3/n2/n1no + /n3/n2n1/no + /n3/n2n1no


+ n3n2/n1/no + n3n2/n1no + n3n2n1/no + n3n2n1no
= ∑ (0,1,2,3,12,13,14,15)

34
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Nótese que la estructura anterior formada por un decodificador binario de dos a cuatro
líneas, un selector con cuatro entradas de datos y un arreglo de cuatro compuertas OR de
cuatro entradas cada una permite sintetizar cualquier función lógica combinacional de
cuatro variables. Lo único que hace falta es que el arreglo de compuertas sea
programable.

Ejemplo 3-19 Utilice la estructura del Ejemplo 3-18 y vuelva a programar las entradas del
arreglo de compuertas para que el circuito resultante realice la función lógica
F(n3,n2,n1,n0) = ∑ (0,1,4,12,13,14).

Solución:
Las filas de la tabla de la verdad de la función F(n3,n2,n1,n0) = ∑ (0,1,4,12,13,14) donde
ésta toma el valor 1 son las siguientes:

n3 n2 n1 n0 F
0 0 0 0 0 1
1 0 0 0 1 1
4 0 1 0 0 1
12 1 1 0 0 1
13 1 1 0 1 1
14 1 1 1 0 1

Conectando n1 y no a las entradas del código binario del decodificador las líneas que se
activarán en el mismo, según la tabla anterior, son Y0, Y1 y Y2.

Si se conectan n3 y n2 a las entradas de selección del selector de datos entonces los canales
seleccionados, de acuerdo a la tabla anterior, son el CO, C1 y C3.

En la tabla se puede ver también cómo se debe interconectar las salidas del decodificador a
los canales de datos del selector a través del arreglo de compuertas. Por ejemplo en la fila
12: n3 = n2 = 1 => se selecciona el canal C3 del selector
n1 = n0 = 0 => se activa la línea Y0 del decodificador
Por consiguiente la línea Y0 debe conectarse a una de las entradas de la compuerta OR
cuya salida está conectada al cana C3. Con el resto de las filas se procede de la misma
manera y se obtiene la programación de todas las entradas del arreglo de compuertas tal
como aparece en la figura siguiente:

35
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Cuando se realiza el diseño con decodificadores binarios que tienen sus salidas activas a
nivel bajo, como es el caso del 74x138 y 74x139, el arreglo de compuertas tiene que ser
NAND teniendo cuidado de conectar las entradas no utilizadas a la fuente de alimentación.

Ejemplo 3-20 Repita el diseño de la función lógica F(n3,n2,n1,n0) = ∑ (0,1,4,12,13,14),


dada en el Ejemplo 3-19, utilizando la estructura decodificador-selector de datos pero
emplee el decodificador 74x139. Compare el circuito resultante con el del ejemplo anterior.

Solución:
La solución es semejante a la anterior sólo es necesario cambiar las compuertas OR por
compuertas NAND ya que el 74x139 tiene sus salidas activas a nivel bajo. El circuito queda
de la siguiente forma:

36
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

En esta solución se ha mantenido, con el propósito de comparación, el arreglo de cuatro


compuertas, en realidad lo que se debe hacer es utilizar una compuerta NAND de tres
entradas y dos inversores, lo que se puede lograr con una sola pastilla, la 74x10. El cana l
C2 se conectaría directamente a tierra, sin necesidad de utilizar una compuerta.

De lo visto en estos ejemplos de aplicación de la estructura decodificador-selector de datos


es evidente que resultaría muy útil disponer de esta estructura en un circuito integrado que
contenga el decodificador, el selector de datos y el arreglo de compuertas programable ya
que esto permite, como se dijo antes, sintetizar cualquier función lógica combinacional,
limitada sólo por el número de sus variables. Esta estructura integrada existe en forma de
un circuito de alto nivel de integración, se trata de las memorias ROM programables.

Demultiplexers
Los “demultiplexores” realizan la operación inversa de los selectores de datos. Esto se
muestra en forma esquemática en la figura siguiente:

37
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Figura 3-16. Trasmisión de datos en serie por una línea. En el extremo del trasmisor se
recibe en paralelo los n bits de una palabra los que, mediante las entradas de selección del
“multiplexor”, se van colocando uno a uno en la línea, como se ilustró en la Figura
correspondiente al Ejemplo 3-13. En el extremo receptor el “demultiplexor” recibe uno a
uno los datos trasmitidos y, mediante las entradas de selección, los va colocando en los
terminales de salida que corresponda.

El “demultiplexor” no es más que un decodificador binario que recibe los datos de la línea a
través de una entrada de habilitación, las entradas de selección son sus entradas de código
binario. Para entender mejor lo anterior vamos a presentar el sistema de la Figura 3-16 pero
sustituyendo el extremo trasmisor por la figura correspondiente al Ejemplo 3-13 y el
“demultiplexor” por un decodificador binario 74x138. El resultado se muestra en la Figura
3-17.

Figura 3-17. Sistema “multiplexor-demultiplexor” formado por un 74x151 y un 74x138.

De lo explicado anteriormente se concluye que un “demultiplexor” es un decodificador


binario utilizado de una manera específica. En los manuales de los fabricantes los
decodificadores binarios se presentan como decodificador/demultiplexer, es el usuario, en
su aplicación, el que determina si el dispositivo funciona como decodificador o como
“demultiplexor”.

38
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Memorias ROM.
Hay varias palabras que se utilizan para referirse a este tipo de memorias pues además de
ROM se utilizan también PROM, EPROM y EEPROM. Veamos el significado de cada una
de ellas:

ROM (Read Only Memory). Memoria de lectura solamente. Estas memorias se programan
durante la fabricación del circuito integrado de acuerdo a la solicitud realizada por el
usuario. No se puede volver a programar posteriormente.

PROM. Esta memoria se programa por el usuario pero sólo una vez ya que no puede
borrarse.

EPROM. En esta memoria el usuario puede programar el contenido y borrarlo para volver a
programar la memoria numerosas veces. El borrado se realiza utilizando una lámpara de luz
ultravioleta. Esto requiere un envase especial que posee una ventana transparente a esta de
radiación.

EEPROM Es semejante a la anterior pero con la ventaja de que el borrado se realiza


eléctricamente por lo que no es necesario utilizar la lámpara de luz ultravioleta.

Desde hace varios años la tecnología CMOS es la predominante en la fabricación de las


memorias ROM.
Al igual que el PAL, una memoria ROM es un circuito lógico combinacional formado por
un arreglo de compuertas AND y otro arreglo de compuertas OR. En las memorias ROM el
arreglo AND es fijo y el OR es programable mientras que en el PAL ocurre lo contrario.
Además de la anterior, hay otras diferencias importantes entre una ROM y un PAL, entre
estas diferencias pueden señalarse las siguientes: en la ROM no hay posibilidad de
realimentar las señales de salida pues los terminales de salida son sólo eso, salidas. La
programación de la ROM se realiza escribiendo un programa en un súper lenguaje, por
ejemplo, C o PASCAL, de acuerdo a la plataforma de diseño disponible, y no mediante
VHDL o cualquier otro lenguaje de descripción de hardware. Las compuertas que
constituyen el arreglo AND están dispuestas formando un decodificador binario y uno, o
varios, selectores de datos constituyendo un arreglo bidimensional como el mostrado en la
Figura 3-18. Las señales de entrada a la memoria se aplican internamente a las entradas de
código binario del decodificador binario, a las entradas de selección del selector de datos y
a las entradas de control para el tercer estado de los buffers de salida. El arreglo OR
programable conecta las salidas del decodificador con las entradas de datos del selector.

39
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Figura 3-18. Diagrama de una memoria ROM en forma de arreglo bidimensional.

Para comprender mejor lo explicado anteriormente veamos un circuito concreto


correspondiente a una memoria ROM de 16x1 bit.

Figura 3-19. a) Memoria ROM de 16x1 bit. Note la X en las entradas de las compuertas
OR la que indica que dichas entradas son programables por el usuario de la memoria.

40
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
b) Compuerta OR de cuatro entradas programable. c) Transistor MOS N con compuerta
flotante. d) Símbolo lógico.

Las entadas A3-A0 constituyen el bus de direcciones de la memoria ROM.


La salida D0 constituye el bus de datos. En este caso el bus de datos es de un bit.
Las entradas OE_L y CS_L forman el bus de control. Ambas son activas a nivel bajo.

Cuando una cualquiera de las entradas que forman el bus de control no está activada, el bus
de datos está en tercer estado. Esto se puede resumir en la tabla siguiente:

CS_L OE_L A3 ... A0 Bus de datos


1 - - Tercer estado
- 1 - Tercer estado
0 0 Estable D0

Tabla 3-9 Situación del bus de datos en función de las entradas del bus de control.

En la Figura 3-20 se ilustra la utilización de la ROM anterior para obtener la función


F(x,w) = /x.w + x./w = x ⊕ w

Figura 3-20 Utilización de una ROM para obtener la función F(x,w) = /x.w + x./w = x ⊕ w

41
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
a) La programación de las compuertas OR cuyas salidas están conectadas a los canales
C1, C2 y C3 es indiferente puesto que, en este caso, está seleccionado
permanentemente el canal C0.
b) Símbolo lógico de la ROM programada para obtener F(x,w) = x ⊕ w.
En la Figura 3-21 se muestra la estructura interna de la memoria ROM correspondiente al
caso anterior, suponiendo que el arreglo OR programable está construido, como es usual,
con tecnología CMOS.

42
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Figura 3-21 a) Estructura interna de la memoria ROM programada para obtener la función
F(x,w) = /x.w + x./w = x ⊕ w. b) Circuito equivalente.
Compare las Figuras 3-20 a) y 3-21 con las Figuras 2-2 a) y 2-4. Note la diferencia entre la
utilización de un PAL y una ROM para sintetizar la misma función.

Capacidad de la memoria ROM


La capacidad de la memoria ROM está determinada por la cantidad de líneas de su bus de
direcciones y la cantidad de líneas de su bus de datos, según la siguiente ecuación

Capacidad = (2 EXP n ) m bits

donde,
n = número de líneas del bus de direcciones y
m = número de líneas del bus de datos

Ejemplo 3-21 Calcule la capacidad de la memoria ROM de la Figura 3-19.

43
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
Solución:

En esta memoria n = 4 y m = 1

Por lo tanto, Capacidad = (2 EXP 4) 1 = (16)1 = 16 bits.

La memoria ROM, al igual que cualquier otro circuito lógico combinacional, es no volátil
puesto que, después de programada, la información guardada se conserva aunque falte la
alimentación. Lo anterior constituye una ventaja de este tipo de memoria sobre otras que
son volátiles.

Extensión de memoria. Banco de memoria.


Al igual que ocurre con otros circuitos integrados, en ocasiones se necesita una memoria de
capacidad mayor que la de la pastilla de memoria disponible. En este caso se puede realizar
la extensión deseada utilizando varias pastillas y, generalmente, algunos circuitos
integrados adicionales, tales como decodificadores binarios, PAL o compuertas. La
extensión puede presentar tres casos diferentes
a) Extensión del bus de datos.
b) Extensión del bus de direcciones, y
c) Extensión del bus de datos y del bus de direcciones.

A continuación se presenta un ejemplo de cada caso

a) Extensión del bus de datos.


Ejemplo 3-22 Se necesita una memoria de 8x4 bit y se dispone de memorias de 8x1 bit.
Realice la extensión correspondiente
Solución

En este caso hay que utilizar cuatro memorias de 8x1 bit. La memoria resultante tendrá un
bus de direcciones de tres líneas, igual que el de las pastillas disponibles, en cambio su bus
de datos tendrá un ancho de cuatro líneas en vez de la única línea de la pastilla disponible.

La memoria resultante queda en la forma que se muestra en la Figura 3-22.

44
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Figura 3-22. Extensión del bus de datos. a) Interconexión de las cuatro memorias de 8x1
bit. b) Memoria resultante de 8x4 bits.

b) Extensión del bus de direcciones.


Ejemplo 3-23 Se necesita una memoria de 32x1 bit y se dispone de memorias de 8x1 bit así
como del circuito integrado 74x139. Realice la extensión correspondiente

Solución

En este caso hay que utilizar cuatro memorias de 8x1 bit. La memoria resultante tiene un
bus de direcciones de cinco líneas, aquí se ha realizado una extensión en profundidad del
bus de direcciones. En cambio el bus datos tiene una sola línea, igual que las pastillas de
memoria utilizadas. Es necesario seleccionar cada una de las memorias mediante las líneas
A3 y A4 del bus de direcciones, para esto se puede utilizar la mitad del circuito integrado
74x139 .

45
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Figura 3-23. Extensión del bus de direcciones. a) Interconexión de las cuatro memorias de
8x1 bit. b) Memoria resultante de 32x1 bit.

c) Extensión del bus de datos y del bus de direcciones


Ejemplo 3-24 Se necesita una memoria de 32x4 bit y se dispone de memorias de 8x1 bit así
como del circuito integrado 74x139. Realice la extensión correspondiente

Solución

En este caso, siguiendo el procedimiento empleado en los dos ejemplos anteriores, debemos
realizar la extensión del bus de datos y también del bus de direcciones.
a) Extensión del bus de datos: Realizamos el mismo trabajo del Ejemplo 3-22 y
obtenemos la memoria equivalente de 8x4 bits.
b) Ahora realizamos la extensión del bus de direcciones sobre la memoria obtenida
anteriormente de 8x4 bits, siguiendo el procedimiento utilizado en el Ejemplo 3-23,
el resultado es el mostrado en la Figura 3-24:

46
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Figura 3-24 Memoria ROM de 32x4 bit. a) Interconexión de las cuatro memorias
equivalentes de 8x4 bit. b) Memoria resultante de 32x4 bit.

Banco de memoria
Ejemplo 3-25 Suponga que tenemos un sistema digital con un bus de direcciones de cinco
líneas y que necesitamos conectarle una memoria ROM equivalente de 24x1 bit. Se
Dispone de memorias de 8x1 bit y del circuito integrado 74x139. Dibuje el banco
suponiendo que está ubicado en la parte baja del bus de direcciones.

Solución:

En este caso necesitamos extender el bus de direcciones de la pastilla disponible de 8x1 bit
para disponer de las cinco líneas necesarias en el bus de direcciones. Como el banco está
ubicado en la parte baja del bus de direcciones las 24 localizaciones de memoria del mismo
abarcarán desde la dirección 00000 (0) hasta la dirección 10111 (23), se acostumbra
expresar estas direcciones en el sistema numérico hexadecimal, en este caso, la ubicación
del banco está entre las direcciones 00H y la 17H.
Es conveniente presentar estos resultados en una tabla, llamada mapa de memoria como la
siguiente:

47
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Mapa de memoria
Pastilla A4 A3 A2 A1 A0 Dirección hexadecimal
Cero 0 0 0 0 0 00H.
.. .. .. .. .. ..
0 0 1 1 1 07H
Uno 0 1 0 0 0 08H
.. .. .. .. .. ..
0 1 1 1 1 0FH
Dos 1 0 0 0 0 10H
.. .. .. .. .. ..
1 0 1 1 1 17H

Para resolver el problema utilizamos el procedimiento del Ejemplo 3-23 y el resultado que
se obtiene es el siguiente.

Figura 3-25. Banco de memoria ROM de 24x1 bit, ubicado en la parte baja del bus de
direcciones. El bus de datos está transparente porque OE_L = 0.

Cuando el banco está formado por pastillas de diferente capacidad se hace más difícil la
decodificación de las diferentes pastillas componentes. En el Ejemplo 3-26 se ilustra esta
situación.

48
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
Ejemplo 3-26
Utilice la menor cantidad posible de los circuitos integrados disponibles y diseñe un banco
de memoria EPROM de 112 Kx8 bit el que debe ubicarse a partir de la dirección E0000H.
Circuitos integrados disponibles: 74x139
y las memorias EPROM 27512 (64Kx8 bit), 27256 (32Kx8 bit), 2764 (8Kx8 bit).

Solución

Para obtener los 112Kx8 se requiere:


Una 27512 (64Kx8 bit),
Una 27256 (32Kx8 bit) y
Dos 2764 (8Kx8 bit)

El bus de direcciones del banco tiene que tener 20 líneas puesto que debe ubicarse a partir
de la dirección E0000H.

Para determinar la cantidad de decodificadores 74x139 necesarios y las interconexiones


correspondientes debemos escribir el mapa de memorias del banco que estamos diseñando:

Mapa de memoria
Pas A19A18A17 A16 A15 A14 A13 A12 A11..A8 A7..A4 A3..A0 Dirección
64K (111 0) 0 0 0 0 0 0 0 E0000H
... .. .. .. .. .. .. .. .. ..
(111 0) 1 1 1 1 1 1 1 EFFFFH
32K (111 1 0) 0 0 0 0 0 0 F0000H
… .. .. .. .. .. .. .. .. ..
(111 1 0) 1 1 1 1 1 1 F7FFFH
8K (111 1 1 0 0) 0 0 0 0 F8000H
… .. .. .. .. .. .. .. .. ..
(111 1 1 0 0) 1 1 1 1 F9FFFH
8K (111 1 1 0 1) 0 0 0 0 FA000H
… .. .. .. .. .. .. .. .. ..
(111 1 1 0 1) 1 1 1 1 FBFFFH

Las líneas del bus de direcciones del banco que no estén contenidas en la pastilla de
memoria correspondiente se utilizan en la decodificación de dicha pastilla. En el mapa de
memoria se han marcado en negritas y entre ( ), las líneas correspondientes a cada una de
las pastillas utilizadas. Así en la memoria de 64K estas líneas son la A19, A18, A17 y A16.
En la memoria de 32K estas líneas son la A19, A18, A17, A16 y A15.
En las memorias de 8K estas líneas son la A19, A18, A17, A16, A15, A14 y A13.

A partir de aquí se realiza el dibujo del banco que es el siguiente:

49
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Figura 3-26. Banco de memoria de 112Kx8 bit correspondiente al Ejemplo 3-26.

La decodificación de las cuatro pastillas de memoria que constituyen el banco del Ejemplo
3-26 es mucho más sencilla si utilizamos un PAL, como se muestra en el Ejemplo 3-27

Ejemplo 3-27 Repita el diseño anterior pero utilice un PAL16V8 en lugar del 74x139.
a) Escriba el programa en VHDL para programar el 16V8. b) Dibuje el banco resultante
donde se muestre las conexiones del PAL y las pastillas de memoria.

Solución:
a) El programa en VHDL es el siguiente:

-- Decodificador de memorias, fichero: ejem3_27.vhd


-- Dispositivo PAL16V8

library IEEE ;
use IEEE.std_logic_1164.all ;

ENTITY ejem3_27 IS

50
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
PORT (
CS_L : in std_logic ;
A: in std_logic_vector (19 downto 13) ;
CS64K_L, CS32K_L, CS8K0_L, CS8K1_L : out std_logic
) ;

Attribute pin_numbers of ejem3_27: entity is


"CS_L:1 "&"A(19):2 "&"A(18):3 "&"A(17):4 "&"A(16):5 "&"A(15):6 "
&"A(14):7 "&"A(13):8 "&"CS64K_L:19 "&"CS32K_L:18 "&"CS8K0_L:17 "
&"CS8K1_L:16 " ;

END ejem3_27 ;

ARCHITECTURE ejem3_27 OF ejem3_27 IS


Signal C64K, C32K, C8K0, C8K1 : std_logic ;
begin

C64K <= '0' when A(19 downto 16) = "1110" ELSE '1' ;
C32K <= '0' when A(19 downto 15) = "11110" ELSE '1' ;
C8K0 <= '0' when A = "1111100" ELSE '1' ;
C8K1 <= '0' when A = "1111101" ELSE '1' ;

-- Los valores anteriores se toman a partir del mapa de memoria.

CS64K_L <= C64K WHEN CS_L = '0' ELSE '1' ;


CS32K_L <= C32K WHEN CS_L = '0' ELSE '1' ;
CS8K0_L <= C8K0 WHEN CS_L = '0' ELSE '1' ;
CS8K1_L <= C8K1 WHEN CS_L = '0' ELSE '1' ;

end ejem3_27 ;

Después de la compilació n con Galaxy se obtiene el fichero ejem3_27.rpt que contiene,


entre otras cosas, la distribución de terminales del PAL16V8, que se ha utilizado en este
diseño:

PLD Compiler Software: PLA2JED.EXE 17/JUL/96 [v3.22 ] 4 IR x66

DESIGN SIGNAL PLACEMENT (18:10:33)

Messages:
Information: All signals pre-placed in user design.

51
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

C16V8A
__________________________________________
cs_l =| 1| |20|* not used
a_19 =| 2| |19|= cs64k_l
a_18 =| 3| |18|= cs32k_l
a_17 =| 4| |17|= cs8k0_l
a_16 =| 5| |16|= cs8k1_l
a_15 =| 6| |15|* not used
a_14 =| 7| |14|* not used
a_13 =| 8| |13|* not used
not used *| 9| |12|* not used
not used *|10| |11|* not used
__________________________________________

Summary:
Error Count = 0 Warning Count = 0

Completed Successfully
Information: Checking for duplicate NODE logic.

b) El dibujo del banco es el mostrado en la Figura 3-27:

52
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Figura 3-27. Banco de 112Kx8 bit de memoria EPROM que utiliza un PAL16V8
programado como decodificador de memoria.

ROM comerciales [1,2,4,5]


Hay disponibles comercialmente una gran cantidad de memorias ROM de diferentes
capacidades. En la Tabla 3-10 se muestran algunas de ellas:

Memoria EPROM Bus de direcciones Bus de datos Capacidad


2708 A9..A0 (10 líneas) D7..D0 (8 líneas) 1K x 8 bit
2716 A10..A0 (11 líneas) D7..D0 (8 líneas) 2K x 8 bit
2732 A11..A0 (12 líneas) D7..D0 (8 líneas) 4K x 8 bit
2764 A12..A0 (13 líneas) D7..D0 (8 líneas) 8K x 8 bit
27128 A13..A0 (14 líneas) D7..D0 (8 líneas) 16K x 8 bit
27256 A14..A0 (15 líneas) D7..D0 (8 líneas) 32K x 8 bit
27512 A15..A0 (16 líneas) D7..D0 (8 líneas) 64K x 8 bit

Tabla 3-10. Capacidad de algunas memorias EPROM comerciales.

53
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
En Figura 3-28 se muestra la distribución de terminales de las cuatro EPROM últimas que
aparecen en la Tabla 3-10.

Figura 3-28. EPROM comerciales de 8Kx8, 16Kx8, 32Kx8 y 64Kx8 bit encapsuladas en
envases doble en línea de 28 terminales. Los terminales 14 y 28, no representados, son los
de alimentación.

El terminal PGM_L se pone a nivel bajo durante la programación de la memoria y a nivel


alto durante su utilización. En el terminal VPP se aplica el voltaje de programación.
Durante la utilización de la memoria se conecta a VCC.
Además de las anteriores hay otras memorias ROM de mayor capacidad, incluyendo entre
ellas algunas cuyo bus de datos es de 16 y 32 bit.

Diagramas de tiempo de una memoria ROM


En estos diagramas se representan los intervalos de tiempo que deben transcurrir entre la
activación de las diferentes señales y la respuesta del dispositivo. En la Figura 3-29 se
ilustran diferentes casos.

Figura 3-29. Diagramas de tiempo de una memoria ROM

54
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

El significado de los tiempos que aparecen en la Figura 3-29 es el siguiente:


tAA : Tiempo de acceso desde la dirección. Es el tiempo que debe transcurrir desde que la
dirección está estable para que el dato de salida sea válido.

tACS: Tiempo de acceso desde el “chip select”. Es el tiempo que debe transcurrir desde que
es activada la entrada de selección (CS_L), suponiendo que la dirección ya estaba estable,
para que el dato de salida sea válido.

tOZ : Tiempo para que la salida pase al tercer estado. Es el tiempo que debe transcurrir
desde que se desactiva CS_L o OE_L antes de que el bus de salida pase al tercer estado

tOE: Tiempo para que la salida salga del tercer estado. Es el tiempo que debe transcurrir
desde que se activa CS_L o OE_L, suponiendo que la otra señal ya estaba activada, antes
de que el bus de salida abandone el tercer estado.

tOH : Tiempo de sostenimiento del dato de salida. Es el tiempo que transcurre desde que la
dirección deja de ser estable antes de que deje de ser válido el dato de salida.

Aplicaciones de la memoria ROM.


Las memorias ROM tienen numerosas aplicaciones, la mayor parte de ellas están asociadas
al almacenamiento de programas en sistemas digitales con microprocesadores. En las
Referencias [1-2] pueden encontrarse otras en el campo de las comunicaciones. También
hemos visto que se utilizan para sintetizar cualquier tipo de circuito lógico combinacional.

Programación de la ROM utilizando un súper lenguaje.


Como se había señalado, una de las diferencias entre la memoria ROM y el PAL radica en
la forma en que se realiza la programación del dispositivo. En el caso de un PAL se utiliza
un lenguaje de descripción de hardware (VHDL, VERILOG, etc) mientras que las
memorias ROM se programan con un súper lenguaje (C, PASCAL, etc.).
A continuación se presenta un programa pequeño escrito en C para obtener el producto de
dos números binarios enteros de tres y dos bits cada uno. En el programa estos números han
sido llamados x, y.

#include <stdio.h> /* fichero: prod7x3 */

/* Procedure to print d as a hex digit. */

void PrintHexDigit(int d)

{
if (d<10) printf("%c", '0'+d);
else printf("%c", 'A'+d-10);
}

55
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

/* Procedure to print i as two hex digits. */


void PrintHex2(int i)
{
PrintHexDigit((i / 16) % 16);
PrintHexDigit(i % 16);
}

void main()
{
int x, y;

for (x=0; x<=7; x++) {


PrintHex2(x*4); printf(":");
for (y=0; y<=3; y++) {
printf(" ");
PrintHex2(x*y);
}
printf("\n");
}
}

Después de compilar este programa se obtienen los resultados que se muestran debajo,
donde la columna de la izquierda ofrece la dirección de partida impuesta en el bus de
direcciones en cada fila y los números que siguen dan el resultado de la multiplicación de x
por y. Todas las cifras de la tabla están en el sistema numérico hexadecimal. Para
comprender el contenido de la tabla debe tenerse en cuenta que el valor de x en la primera
fila es x = 0, x = 1 en la segunda fila y así sucesivamente hasta llegar a x = 7 en la fila
inferior. Mientras que y = 0 en la primera columna, y = 1 en la segunda columna, y = 2 en
la tercera columna, y = 3 en la última columna. Por ejemplo el número 15, que aparece en
la fila inferior y la última columna es el resultado de multiplicar x = 7 por y = 3 o sea 21
en el sistema decimal que es, como sabemos, igual a 15 en el sistema numérico
hexadecimal.

00: 00 00 00 00
04: 00 01 02 03
08: 00 02 04 06
0C: 00 03 06 09
10: 00 04 08 0C
14: 00 05 0A 0F
18: 00 06 0C 12
1C: 00 07 0E 15

En la Referencia [1] puede encontrarse varios programas escritos en C para obtener la


programación de una memoria ROM. En la Referencia [2] aparecen estos mismos
programas pero escritos en PASCAL.

56
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Referencias.-

[1] J. F. Wakerly, Electronic Design: Principles and Practices, Third Edition, Prentice
Hall, New Jersey, 2000.

[2] J. F. Wakerly, Electronic Design: Principles and Practices, Second Edition, Prentice
Hall, New Jersey, 1994.

[3] J. L. Perdomo y A. Hernández, Introducción del VHDL en la docencia de pregrado,


Revista Ingeniería Electrónica Automática y Comunicaciones, Vol. XXII, no. 3, pp. 78-
80, 2001

[4] www.fairchildsemi.com

[5] www.amd.com

Ejercicios.
3-1 Utilice VHDL y diseñe un decodificador binario de 2 a 4 líneas semejante al 74x139.

3-2 Utilice la Tabla 3-3 y compruebe que las ecuaciones de salida del decodificador
binario 74x138 son las siguientes:

y_l_7 = /(g * c * b * a), y_l_6 = /(g * c * b * /a), y_l_5 = /(g * c * /b * a)

y_l_4 = /(g * c * /b * /a), y_l_3 = /(g * /c * b * a), y_l_2 = /(g * /c * b * /a)

y_l_1 = /(g * /c * /b * a), y_l_0 = /(g * /c * /b * /a),

Donde g = g1 * /g2a_l * /g2b_l

A partir de las ecuaciones anteriores dibuje el circuito correspondiente al decodificador


74x138.

3-3 Utilice VHDL y diseñe un decodificador binario de 3 a 8 líneas semejante al 74x138


pero con una entrada adicional de selección S, tal que cuando S =’0’ las salidas sean
activas a nivel bajo y cuando S=’1’ las salidas sean activas a nivel alto.

3-4 Utilice la Figura 3-8 para dibujar los dígitos obtenidos en las salidas del decodificador
hexadecimal a siete segmentos y verifique que se corresponden con la palabra de entrada.

57
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
3-5 Escriba la tabla de la verdad para un decodificador BCD a siete segmentos para
lámparas cátodo común.

3-6 Utilice VHDL y diseñe un decodificador BCD a siete segmentos semejante al del
ejercicio anterior.

3-7 Escriba un programa en VHDL que permita obtener un decodificador para lámparas de
siete segmentos del tipo cátodo común. El decodificador debe tener una entrada adicional
de selección ,S, tal que cuando S = 0 el decodificador será BCD a siete segmentos y cuando
S = 1 el decodificador será hexadecimal a siete segmentos.

3-8 Repita el ejercicio anterior pero suponiendo que la lámpara es de ánodo común.

3-9 Escriba un programa en VHDL que permita obtener un decodificador hexadecimal a


siete segmentos. El decodificador debe tener una entrada adicional de selección ,S, tal que
cuando S = 0 el decodificador será para lámparas de ánodo común y cuando S = 1 el
decodificador será para lámparas cátodo común.

3-10 Repita el diseño anterior utilizando circuitos integrados de nivel de integración bajo
(74x00, 74x04, 74x10, 74x20 y 74x30). Compare ambas soluciones.

3-11 En el file de reporte obtenido al compilar el fichero ejem3_8 aparecen las siguientes
ecuaciones de diseño para el encoder sin prioridad de la Tabla 3-5:

y_1 = /i_1 * /i_0

y_0 = /i_0 * /i_2

Compruebe que ellas también son válidas. (Sugerencia: utilice los mapas de Karnaugh de
Y0 y Y1 y agrupe los ceros en lugar de los unos).

3-12 A partir de las ecuaciones de diseño obtenidas para el encoder de prioridad de cuatro
entradas dado en la Tabla 3-6, dibuje el circuito correspondiente y compárelo con el
circuito de la Figura 3-9.

3-13 Utilice la Figura 3-10 y verifique el funcionamiento del encoder de prioridad de


cuatro entradas dado en la Tabla 3-6.

3-14 Utilice el 74x151 y diseñe las funciones lógicas dadas en el Ejemplo 3-11. Compare
ambas soluciones.

3-15 Utilice el 74x151 y diseñe un CLC con una salida que será W = 0 cuando en sus
entradas exista cualquier número primo de cuatro bits .

3-16 Escriba un programa en VHDL que permita obtener un selector de datos semejante al
74x253.

58
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
3-17 Escriba un programa en VHDL que permita obtener un selector de datos semejante al
74x157.

3-18 Utilice los circuitos integrados 74x151, 74x139 y 74x20 y diseñe un selector
extendido a 32 entradas de datos.

3-19 Utilice los circuitos integrados 74x153 y 74x00 y diseñe un selector extendido de 8
entradas de datos.

3-20 Dibuje el circuito del Ejemplo 3-20 utilizando como compuertas sólo una pastilla
74x10. El resto de los CI son los mismos.

3-21 Utilice la estructura decodificador-selector de datos y diseñe, con los circuitos


integrados disponibles, la función
W(n4,n3,n2,n1,n0) = ∑ (0,6,11,14,15,16,18,21,25,29,30)
Circuitos integrados disponibles: Un 74x138, ½ 74x153, un 74x10 y ¼ 74x00.

3-22 Repita el ejercicio anterior pero considerando que los circuitos integrados
disponibles son: ½ 74x139, un 74x151, un 74x04 y un 74x00. Enumere los
elementos que sobren.

3-23 Diseñe la función dada en el Ejercicio 3-21:


W(n4,n3,n2,n1,n0) = ∑ (0,6,11,14,15,16,18,21,25,29,30) utilizando la menor cantidad
posible de los circuitos integrados disponibles: 74x04, 74x20 y 74x30. Enumere la
cantidad de cada uno de los circuitos integrados utilizados y el total.

3-24 Escriba en VHDL un programa para diseñar la función dada en el Ejercicio 3-21
W(n4,n3,n2,n1,n0) = ∑ (0,6,11,14,15,16,18,21,25,29,30)

3-25 Suponga que al escribirse la ecuación de diseño del Ejercicio 3-21 se cometió un error
y que la función correcta era realmente
W(n4,n3,n2,n1,n0) = ∑ (0,6,11,13,15,16,18,21,25,29,30)
Realice los cambios necesarios en el diseño del Ejercicio 3-21, del Ejercicio 3-23 y del
Ejercicio 3-24 para que el mismo corresponda a la función correcta. Compare la cantidad
de cambios realizados en cada uno de los casos y establezca un criterio sobre la
conveniencia de utilizar en el diseño digital los circuitos integrados de mayor nivel de
integración posible.

3-26 Dibuje la memoria ROM de la Figura 3-19 suponiendo que ha sido programada para
obtener el uno lógico en su bus de datos cuando en su bus de direcciones hay cualquier
número primo de cuatro bits. En cualquier otro caso la salida debe estar a nivel bajo.
Compare esta solución con la encontrada en el Ejemplo 1-13.

3-27 Repita el Ejemplo 3-25, suponiendo que el banco está ubicado en la parte alta del bus
de direcciones.

59
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
3-28 Utilice los circuitos integrados disponibles, 27256, ½ 74x139 y 1/3 74x10,
y diseñe un banco EPROM de 128Kx8 bit
a) Escriba el mapa de memoria. Suponga que el bus de direcciones del sistema es de
20 líneas y que el banco está situado en la parte alta de dicho bus.
b) Dibuje el banco resultante

3-29 Diseñe un banco EPROM de 160Kx8 bit. Circuitos integrados disponibles: 27256 y
un 74x138.
Escriba el mapa de memoria. Suponga que el banco está situado a partir de la
dirección 80000H y dibuje el banco resultante

3-30 Diseñe un banco EPROM de 56Kx8 bit. Utilice la menor cantidad posible de los
circuitos integrados disponibles. El banco debe ubicarse a partir de la dirección
F0000H. Escriba el mapa de memoria y dibuje el banco resultante. Circuitos
integrados disponibles: EPROM 27256, 27128, 2764 y decodificadores 74x139.

3-31 Repita el diseño del Ejercicio 3-30 pero utilice como decodificador de memoria un
PAL16V8. Escriba el programa correspondiente en VHDL. Compare ambas
soluciones.

3-32 ¿ Cuál es la capacidad mínima que debe tener una memoria ROM para poder
programar en la misma el producto de dos números binarios enteros de dos bit cada
uno? Explique.

3-33 Diseñe un banco de memoria EPROM de 100Kx8 bit utilizando la menor cantidad de
las memorias 27512, 27256, y 2732. El bus de direcciones del sistema es de 20
líneas y bus de datos tiene 8 líneas. Además de las memorias, dispone de cualquier
otro circuito integrado que necesite. Si utiliza un PAL tiene que escribir el programa
correspondiente en VHDL.

3-34 Diseñe, utilizando la menor cantidad posible de los circuitos integrados disponibles,
un CLC al que llegan números binarios enteros de cinco bits. El CLC tiene una salida
F que se activa a nivel alto cuando en las entradas exista cualquier número impar
mayor que 9. Las combinaciones del 4 al 8, ambas inclusive, nunca ocurren.
El CLC tiene también una entrada de habilitación, G, activa a nivel alto, que al
desactivarse pone en tercer estado la salida F.
Enumere la cantidad de los circuitos integrados utilizados de cada tipo y el total.
Circuitos integrados disponibles: 74x00, 74x04, 74x10, 74x20 74x30, 74x125 y
74x126.
3-35 Escriba un programa en VHDL para realizar el diseño del Ejercicio 3-34.

3-36 Diseñe el CLC del Ejercicio 3-34 utilizando la estructura decodificador-selector de


datos. Dispone de los circuitos integrados 74x139, 74x151 y todos los SSI del
Ejercicio 3-34.

3-37 Repita el Ejercicio 3-30 suponiendo que el banco está ub icado en la parte alta del bus
de direcciones

60
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Indice general

Nota: El primer número (romano) que aparece en la numeración indica el capítulo y el


segundo la página.

Álgebra de conmutación I-35


. Operaciones lógicas I-35
. Algunos postulados y teoremas I-36
. Funciones lógicas I-37
Igualdad de las funciones lógicas I-38
Simplificación de las funciones lógicas I-39
Mapas de Karnaugh I-39
Reglas I-42

Altera II-32
AMD III-57
América, La I-3
Ampere I-3
Ánodo común (Vea lámparas de siete segmentos)
Aviram, A. I-54
Azares estáticos I-50

Banco de memorias (Vea memorias)


Bit I-12, II-17
Bit_vector II-17
Boole (Vea Álgebra de Conmutación)
Boolean II-17
Buffer I-9, I-11, II-17

Cátodo común (Vea lámparas de siete segmentos)


Circuitos integrados de nivel de integración medio III-4
CMOS
Compuertas I-17, I-31
Familia I-19

61
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
Algunos índices I-21
PAL CMOS II-6
ROM CMOS III-39
Codificadores III-15
.Con prioridad III-17
.Sin prioridad III-15

Códigos I-12
. ASCII I-13
. BCD Natural I-13
. Binario I-16
. Biquinario I-13
. Exceso Tres I-13
. Gray I-16
. Hamming de siete bits I-14
Compuertas lógicas: AND I-7
Buffer I-9
Drenaje abierto y colector abierto I-24
Entradas no utilizadas I-30
NAND I-9
NOT I-7
OR I-7
Schmitt trigger I-32
Tercer estado I-31
XNOR I-9
XOR I-9
Constante de tiempo I-19
Consumo de potencia I-32
CPLD II-12
.Arquitectura II-12
. Familia C370 II-13
. Familia XC9500 II-13
Encapsulado II-14
Macrocelda II-13
Cypress II-13, II-32

Decoders (Vea decodificadores)


Decodificadores III-4
.Binarios III-4
Aplicaciones III-9
Comerciales III-7
Extensión III-12
.para lámparas de siete segmentos III-12

62
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
Deeker, C I-33, I-54
Demultiplexer III-37
Diseño digital I-5, II-3
Dispositivos digitales I-7
Dispositivos lógicos programables (Vea PLD)
Domínguez, N. II-32

EEPROM (Vea memorias ROM)


Electrónica digital I-5
Electrónica molecular I-33
Ellenbogen, J. C. I-34, I-35, I-54
Encoders (Vea codificadores)
Entradas no utilizadas en las compuertas I-30
EPROM (Vea memorias ROM)
Escuela de Electricidad I-3
Estructura decodificador-selector de datos III-33
Exposición de Electricidad I-3

Factor de carga (Fan out) I-22


Fairchild III-57
Familias lógicas CMOS y TTL I-19, I-20
Indices I-21
Faraday I-3
FPAA II-14
FPGA II-14
Familia ORCA II-14
Familia XC4000E II-14
Funciones lógicas (Vea Algebra de Conmutación)

G
Gray (Vea códigos)

H
Hamming (Vea códigos)
Hernández, A II-32, III-57
HDL II-15
ABEL II-15
AHDL II-15
PALASM II-15

63
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
VERILOG II-15
VHDL II-15
Asignaciones condicionales II-20
Atributos II-31
Bibliotecas II-21
Componente II-22
Sintaxis II-22
Diseño jerárquico II-23
Estructura II-16
Arquitectura II-18
Sintaxis II-18
Entidad I-16
Sintaxis II-16
Modo de las señales I-17
Operadores II-20
aritméticos II-20
de concatenación II-20
de relación II-20
extensión (overload) II-22
lógicos II-20
Palabras reservadas II-37
Paquetes II-21
Sintaxis II-22
Tipo de las señales II-17

Igualdad de funciones lógicas (Vea Álgebra de Conmutación)


In II-17
Indices de las familias lógicas (Vea familias lógicas)
Indiferente I-33
Inout II-17
Integer II-17
Inversores (Vea compuertas)

Karnaugh (Vea mapas de Karnaugh)

L
Lámparas de siete segmentos III-13

64
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
Lattice Semiconductor II-14, II-32
Lenguajes de descripción de hardware (Vea HDL)
Lógica cableada I-23
Love, J.C. I-34, I-35, I-54

Mapas de Karnaugh I-6, I-39


Reglas I-42
Márgenes de ruido I-21
Martí, J. I-3, I-54
Martin, B. II-32
Maxwell I-3
Memorias ROM II-3, III-39
Aplicaciones III-55
Bancos III-47
Capacidad III-43
Comerciales III-53
Diagramas de tiempo III-54
Extensión III-44
Programación III-55
Microelectrónica I-5
Millman, J. I-54
MITRE I-54
Multiplexers (Vea selectores de datos)

N
Nanoelectrónica I-5, I-33
Nomenc latura de los circuitos integrados digitales I-20
NOT (Vea compuertas)

Operaciones lógicas (Vea Álgebra de Conmutación)


Opcional (Vea indiferente)
OR (Vea compuertas)
OR exclusivo (Vea compuertas)
Out II-17

65
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

PAL II-4
Diagrama lógico II-4
Estructura interna II-6
Programación II-6
Perdomo, J. L. II-32, III-57
Pérez, D. I-54
PLA II-3
PLD II-3
Postulados (Vea Álgebra de Conmutación)
Potencia (Vea consumo de potencia)
PROM (Vea memorias ROM)
Puertas (Vea compuertas)

Ratner, M.A. I-33, I-54


Referencias I-54, II-32, III-57
Reglas (Vea mapas de Karnaugh)
Ruido (Vea márgenes de ruido)

Sentidos de circulación de las corrientes I-18


Series (Vea familias lógicas)
SPLD II-3
Comerciales II-8
16V8 II-8
Diagrama lógico II-10
Distribución de terminales II-9
Macrocelda II-8
22V10 II-11
Distribución de terminales II-11
Macrocelda II-11
Tiempo de propagación II-12
Selectores de datos III-20
Aplicaciones III-25
Comerciales III-20
Extensión III-33

66
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.
Símbolos equivalentes de las compuertas I-36
Simplificación de funciones lógicas (Vea Álgebra de Conmutación)
Sistemas numéricos I-11
Sistema Binario I-11
Sistema Decimal I-11
Sistema Hexadecimal I-11
Sistema Octal I-12
Sitios Web (Vea Web)
Std_logic II-17
Std_logic_vector II-17

Tans, S. J. I-54
Teoremas (Vea Algebra de Conmutación)

Varela, F. I-2
VERILOG (Vea HDL)
VHDL (Vea HDL)
Verschueren, A.R.M. I-54

W
Wakerly, J. F. I-54, II-32, III-57
Web
www.altera.com II-32
www.amd.com III-57
www.cypress.com II-32
www.fairchildsemi.com III-57
www.latticesemi.com II-32
www.mitre.org/research/nanotech/MITREnano group.html I-54
www.xilinx.com II-32

67
Introducción al Diseño Digital de Circuitos Lógicos Combinacionales
Autor: Dr. Alberto Hernández Pérez, Profesor Consultante, CIME, CUJAE
Capítulo 3.

Xilinx II-13, II-32


XNOR (Vea compuertas lógicas)
XOR (Vea compuertas lógicas)

68

Potrebbero piacerti anche