SlideShare una empresa de Scribd logo
13
Lo más leído
Sistemas Digitales
Principios y Aplicaciones
2/.!,$*4/##)
.%!,37)$-%2
'2%'/29,-/33
DÉCIMA EDICIÓN
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas digitales
Principios y aplicaciones
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas digitales
Principios y aplicaciones
Ronald J. Tocci
Monroe Community College
Neal S. Widmer
Purdue University
Gregory L. Moss
Purdue University
DÉCIMA EDICIÓN
Reynaldo Félix Acuña
Profesor investigador
Departamento de Ingeniería Eléctrica
y Electrónica
InstitutoTecnológico y de Estudios
Superiores de Monterrey
Campus Estado de México
Marcos de Alba
Profesor investigador
Departamento de Ingeniería Eléctrica
y Electrónica
InstitutoTecnológico y de Estudios
Superiores de Monterrey
Campus Estado de México
Revisión técnica
Traducción
Alfonso Vidal Romero Elizondo
Ingeniero en Electrónica y Comunicación
InstitutoTecnológico y de Estudios Superiores de
Monterrey - Campus Monterrey
Authorized traslation from the English language edition, entitled Digital systems: principles and applications
by Ronald J. Tocci, Neal S. Widmer and Gregory L. Moss, published by Pearson Education, Inc., publishing as
Prentice Hall, Inc., Copyright ©2007, All rights reserved.
ISBN 0131725793
Traducción autorizada de la edición en idioma inglés titulada Digital systems: principles and applications por
Ronald J. Tocci, Neal S. Widmer and Gregory L. Moss, publicada por Pearson Education, Inc., publicada como
Prentice Hall Inc., Copyright ©2007. Todos los derechos reservados.
Edición en español
Editor: Luis Miguel Cruz Castillo
e-mail: luis.cruz@pearsoned.com
Editor de desarrollo: Bernardino Gutiérrez Hernández
Supervisor de producción: Adriana Rida Montes
DÉCIMA EDICIÓN, 2007
D.R. © 2007 por Pearson Educación de México, S.A. de C.V.
Atlacomulco 500-5o. piso
Industrial Atoto
53519, Naucalpan de Juárez, Edo. de México
Cámara Nacional de la Industria Editorial Mexicana. Reg. Núm. 1031.
Prentice Hall es una marca registrada de Pearson Educación de México, S.A. de C.V.
Reservados todos los derechos. Ni la totalidad ni parte de esta publicación pueden reproducirse, registrarse
o transmitirse, por un sistema de recuperación de información, en ninguna forma ni por ningún medio, sea
electrónico, mecánico, fotoquímico, magnético o electroóptico, por fotocopia, grabación o cualquier otro, sin
permiso previo por escrito del editor.
El préstamo, alquiler o cualquier otra forma de cesión de uso de este ejemplar requerirá también
la autorización del editor o de sus representantes.
ISBN 10: 970-26-0970-4
ISBN 13: 978-970-26-0970-4
Impreso en México. Printed in Mexico.
1 2 3 4 5 6 7 8 9 0 - 10 09 08 07
TOCCI, RONALD J., NEAL S. WIDMER,
GREGORY L. MOSS
Sistemas digitales.
Principios y aplicaciones
Décima edición
Pearson Educación, México, 2007
ISBN: 978-970-26-0970-4
Área: Ingeniería
Formato: 21  27 cm Páginas: 968
A ti, Cap, por amarme tanto tiempo; y por las mil y una maneras
de iluminar las vidas de todos los que tocas.
—RJT
A mi esposa Kris y a nuestros hijos John, Brad, Blake, Matt y
Katie: por prestarme el tiempo y atención que les quité al realizar
esta revisión.
—NSW
A mi familia: Marita, David y Ryan.
—GLM
Sistemas_Digitales_Principios_y_Aplicaci.pdf
PR EFACIO
Este libro es un estudio completo sobre los principios y las técnicas de los siste-
mas digitales modernos. Enseña los principios fundamentales sobre los sistemas
digitales y cubre con amplitud los métodos tradicional y moderno para aplicar las
técnicas de diseño y desarrollo digital, incluyendo cómo administrar un proyecto
a nivel de sistemas. El libro está planeado para utilizarse en programas de dos y
cuatro años relacionados con tecnología, ingeniería y ciencias computacionales.
Aunque sería de utilidad tener conocimientos sobre electrónica básica, la mayor
parte del material no lo requiere. Se pueden omitir las partes del texto en las que
se utilizan conceptos sobre electrónica sin peligro de afectar la comprensión de los
principios de lógica.
Mejoras generales
La décima edición de Sistemas digitales refleja los puntos de vista de los autores en
relación con la dirección de la electrónica digital moderna. En la industria actual
podemos ver la importancia de liberar un producto en el mercado lo más rápido
posible. El uso de herramientas de diseño modernas, dispositivos lógicos programa-
bles complejos, CPLD, y arreglos de compuertas programables por campo (FPGA)
permite a los ingenieros progresar de los conceptos al silicón funcional con mucha
rapidez. Los microcontroladores se están haciendo cargo de muchas aplicaciones
que antes se implementaban mediante circuitos digitales, por lo que se ha estado
usando la DSP para sustituir muchos circuitos análogos. Es sorprendente que los
microcontroladores, la DSP y todos los componentes lógicos necesarios puedan
ahora consolidarse en una sola FPGA mediante el uso de un lenguaje de descrip-
ción de hardware con herramientas de desarrollo avanzadas. Ahora, los estudiantes
deben estar expuestos a estas modernas herramientas, inclusive hasta en un curso
introductorio. Es responsabilidad de cada educador encontrar la mejor forma de
preparar a los graduandos para el trabajo que encontrarán en su vida profesional.
Las piezas SSI y MSI estándar que han servido como “ladrillos y mortero” en
la construcción de sistemas digitales durante más de 40 años ahora se están vol-
viendo obsoletas. Muchas de las técnicas que se han enseñado se enfocan en la
optimización de circuitos que se crean a partir de estos dispositivos fuera de moda.
Los temas que se adaptan en forma única a la aplicación de la antigua tecnología
pero que no contribuyen a una comprensión de la nueva tecnología deben eliminarse
del currículum. No obstante y desde un punto de vista educativo, estos pequeños
vii
VIII PREFACIO
circuitos integrados (CI) ofrecen una forma de estudiar los circuitos digitales sim-
ples, además de que el cableado de circuitos mediante el uso de “breadboards”
(tarjetas experimentales o tableros experimentales) es un ejercicio pedagógico
valioso. Estos ejercicios nos ayudan a reforzar conceptos tales como las entradas y
salidas binarias, la operación de un dispositivo físico y las limitaciones prácticas,
mediante el uso de una plataforma muy simple. En consecuencia hemos optado
por seguir presentando las descripciones conceptuales de los circuitos digitales
y ofrecer ejemplos en los que se utilicen piezas lógicas estándar convencionales.
Para los instructores que deseen seguir enseñando los fundamentos mediante el
uso de circuitos SSI y MSI, este libro retiene esas cualidades que han provocado
una amplia aceptación de las ediciones pasadas. Incluso muchas herramientas de
diseño de hardware proporcionan una técnica introductoria de diseño fácil de usar,
en la que se emplea la funcionalidad de las piezas estándar convencionales con
la flexibilidad de los dispositivos lógicos programables. Un diseño digital puede
describirse mediante el uso de un dibujo esquemático con bloques de construcción
predefinidos, los cuales son equivalentes a las piezas estándar convencionales, que
pueden compilarse y después programarse directamente en un PLD de destino con
la capacidad adicional de poder simular con facilidad el diseño dentro de la misma
herramienta de desarrollo.
Creemos que los graduandos podrán aplicar los conceptos que se presentan en
este libro mediante el uso de métodos de descripción de nivel superior y disposi-
tivos programables más complejos. El cambio más importante en el campo es una
mayor necesidad de comprender los métodos de descripción, en vez de enfocarse
en la arquitectura de un dispositivo específico. Las herramientas de software han
evolucionado a un punto en el que hay muy poca necesidad de preocuparse por el
funcionamiento interno del hardware y es mucho más necesario enfocarse en qué
es lo que entra, qué es lo que sale y cómo puede el diseñador describir lo que se
supone debe hacer el dispositivo. También creemos que los graduandos se involu-
crarán con proyectos en los que se utilice lo más nuevo en herramientas de diseño
y soluciones de hardware.
Este libro ofrece una ventaja estratégica para enseñar el nuevo y vital tema de
los lenguajes de descripción de hardware a los principiantes en el campo digital.
En estos momentos, VHDL es sin duda un lenguaje estándar en la industria, pero
también es muy complejo y con una curva de aprendizaje bastante pronunciada.
A menudo los estudiantes principiantes se desalientan debido a los rigurosos reque-
rimientos de diversos tipos de datos, y luchan por comprender los eventos de dispa-
ro por borde que se utilizan en VHDL. Por fortuna Altera ofrece el AHDL, un
lenguaje menos exigente que utiliza los mismos conceptos básicos que el VHDL
pero más sencillo de dominar para los principiantes. Así, los instructores pueden
optar por utilizar AHDL para enseñar a los estudiantes principiantes, o VHDL para
las clases más avanzadas. Esta edición ofrece más de 40 ejemplos con AHDL, otros
tantos conVHDL y muchos ejemplos de prueba de simulación.Todos estos archivos de
diseño están disponibles en el CD-ROM que acompaña al libro.
El sistema de desarrollo de software más reciente de Altera es Quartus II. El
software MAX+ PLUS II que se ha utilizado durante muchos años aún sigue siendo
popular en la industria y cuenta con soporte por parte de Altera. Su principal des-
ventaja es que no programa los dispositivos más recientes. El material de este texto
no está enfocado a enseñar una plataforma específica de hardware ni los detalles
acerca del uso de un sistema de desarrollo de software. Las nuevas revisiones de
software aparecen con tanta frecuencia que un libro de texto no podría mantenerse
actualizado si tratara de describir todos los detalles. Hemos tratado de demostrar
lo que esta herramienta puede hacer, en vez de enseñar al lector cómo utilizarla.
Sin embargo, en el CD-ROM que viene con este libro hemos incluido tutoriales para
facilitar el aprendizaje de cualquiera de estos dos paquetes de software. Los ejem-
plos de AHDL y VHDL son compatibles con los sistemas Quartus o MAX+ PLUS.
Las simulaciones de temporización se desarrollaron mediante el uso de MAX+
PLUS, pero también pueden realizarse con Quartus.
Hay muchas opciones de hardware de laboratorio disponibles para los usua-
rios de este libro. Existen muchas tarjetas de desarrollo CPLD y FPGA para que
PREFACIO IX
los estudiantes puedan usarlas en el laboratorio. También se dispone de varias
tarjetas de generaciones anteriores que son similares a la UP2 de Altera y que
contienen CPLDs de la familia MAX7000. Un ejemplo más reciente de una de las
tarjetas disponibles es la tarjeta UP3 del programa universitario de Altera (vea la
figura P-1), que contiene una FPGA más grande, proveniente de la familia Cyclone.
La tarjeta DE2 es una de las más reciente de Altera (vea la figura P-2), la cual
cuenta con una nueva y poderosa FPGA Cyclone II de 672 terminales y una varie-
dad de características básicas tales como interruptores, LEDs y pantallas, así como
muchas características adicionales para proyectos más avanzados. Cada año entran
al mercado más tarjetas de desarrollo, y muchas de ellas tienen un costo realmente
bajo. Estas tarjetas, junto con el poderoso software educativo, ofrecen una excelen-
te manera de enseñar y demostrar la implementación práctica de los conceptos que
presentamos en este texto.
Las mejoras más considerables en esta décima edición se encuentran en el
capítulo 7. Aunque los contadores asincrónicos (ondulación) ofrecen una buena
introducción a los circuitos secuenciales, en el mundo real se utilizan los circuitos
contadores sincrónicos. Hemos rediseñado el capítulo 7 y los ejemplos subsiguientes
FIGURA P-1 La
tarjeta de desarrollo
UP3 de Altera.
FIGURA P-2 La
tarjeta de desarrollo
DE2 de Altera.
X PREFACIO
para enfatizar los CIs de contadores sincrónicos e incluimos técnicas para analizar-
los, conectarlos en cascada y utilizar HDL para describirlos.También se ha agregado
una sección para mejorar la cobertura de las máquinas de estado y las característi-
cas de HDL que se utilizan para describirlas. Otras de las mejoras son: la inclusión
de técnicas de análisis para los circuitos combinacionales, la cobertura expandida de
aplicaciones del temporizador 555 y una mejor cobertura de los números binarios
con signo.
Nuestro enfoque sobre el HDL y los PLDs proporciona a los instructores varias
opciones:
1. El material relacionado con el HDL puede omitirse por completo sin afectar la
continuidad del texto.
2. El HDL puede enseñarse como un tema separado si se omite el material inicial
y después se regresa a las últimas secciones de los capítulos 3, 4, 5, 6, 7 y 9, para
después cubrir el 10.
3. Los temas relacionados con el HDL y el uso de los PLDs pueden cubrirse a
medida que se desarrolle el curso (capítulo por capítulo) y pueden irse entre-
mezclando en las prácticas de laboratorio o las lecturas.
De entre todos los lenguajes de descripción de hardware específicos, es evi-
dente que VHDL es el estándar en la industria, por lo cual es muy probable que
los graduandos lo vayan a utilizar en sus profesiones. No obstante, siempre hemos
creído que es muy pesado tratar de enseñar VHDL en un curso introductorio. La
naturaleza de la sintaxis, las sutiles distinciones en los tipos de objetos y los mayo-
res niveles de abstracción pueden convertirse en obstáculos para un principiante.
Por esta razón hemos incluido el AHDL de Altera como el lenguaje de introducción
recomendado para los cursos de primero y segundo años. También hemos incluido
el VHDL como lenguaje recomendado para clases más avanzadas o cursos intro-
ductorios que se ofrecen a estudiantes con más madurez. No recomendamos tratar
de cubrir ambos lenguajes en el mismo curso. Las secciones del texto que cubren
los detalles específicos de un lenguaje se identifican claramente con una barra
gris en el margen. Sin duda hemos creado un libro que puede usarse en múltiples
cursos y que servirá como una excelente referencia después de que se gradúen los
estudiantes.
Organización de los capítulos
Es raro que un instructor utilice los capítulos de un libro de texto en la secuencia
en la que se presentan. Este libro se escribió de manera que, en su mayor parte,
cada capítulo se basa en el material anterior, pero es posible alterar la secuencia
de capítulos hasta cierto punto. La primera parte del capítulo 6 puede cubrirse
justo después del capítulo 2, aunque esto significa que habrá un largo intervalo
antes de llegar a los circuitos aritméticos del capítulo 6. La mayor parte del mate-
rial del capítulo 8 puede cubrirse antes (por ejemplo, después del capítulo 4 o 5)
sin problemas graves.
Este libro puede utilizarse ya sea en un curso de un solo ciclo escolar o en una
secuencia de dos ciclos. En un curso de un ciclo escolar tal vez haya que omitir
algunos temas, debido a los límites en cuanto a las horas de clase disponibles. Es
obvio que la elección de los temas a eliminar dependerá de factores tales como los
objetivos del programa o del curso y los antecedentes de los estudiantes. A conti-
nuación se muestra una lista de las secciones y capítulos que pueden eliminarse con
la menor probabilidad de trastornos:
■ Capítulo 1: Todo.
■ Capítulo 2: Sección 6.
■ Capítulo 3: Secciones 15 a 20.
■ Capítulo 4: Secciones 7, 10 a 13.
PREFACIO XI
■ Capítulo 5: Secciones 3, 23 a 27.
■ Capítulo 6: Secciones 5 a 7, 11, 13, 16 a 23.
■ Capítulo 7: Secciones 9 a 14, 21 a 24.
■ Capítulo 8: Secciones 10, 14 a 19.
■ Capítulo 9: Secciones 5, 9, 15 a 20.
■ Capítulo 10: Todo.
■ Capítulo 11: Secciones 7, 14 a 17.
■ Capítulo 12: Secciones 17 a 21.
■ Capítulo 13: Todo.
CONJUNTOS DE PROBLEMAS En esta edición se incluyen seis categorías de
problemas: básicos (B), avanzados (A), diagnóstico de fallas (F), nuevos (N), diseño
(D) y HDL (H). Los problemas sin designación se consideran como de dificultad
intermedia, entre los básicos y los avanzados. Los problemas para los cuales se
imprime la solución al final del libro o en el CD-ROM incluido están marcados con
un asterisco (vea la figura P-3).
ADMINISTRACIÓN DE PROYECTOS Y DISEÑO A NIVEL DE SISTEMA En el
capítulo 10 se incluyen varios ejemplos reales para describir las técnicas que se
utilizan para administrar proyectos. Por lo general, estas aplicaciones son familiares
para la mayoría de los estudiantes de electrónica, y el primer ejemplo de un reloj
digital es familiar para todos. Muchos textos hablan sobre el diseño de arriba-abajo,
pero este texto demuestra las características clave de este método y cómo utilizar
las modernas herramientas para desarrollarlo.
HOJAS TÉCNICAS Hemos eliminado el CD-ROM que contenía hojas técnicas de
Texas Instruments de la novena edición. La información que contenía este CD-ROM
se encuentra ahora disponible en línea.
ARCHIVOS DE SIMULACIÓN En esta edición también se incluyen archivos de
simulación que pueden cargarse en el programa Electronics Workbench Multisim®
.
Los diagramas esquemáticos de los circuitos de muchas de las figuras que se mues-
tran en el texto se han capturado como archivos de entrada para esta popular herra-
mienta de simulación. Cada archivo demuestra en cierta forma la operación del
circuito o refuerza un concepto. En muchos casos se adjuntan instrumentos al cir-
cuito y se aplican secuencias de entrada para demostrar el concepto presentado en
una de las figuras del texto. Estos circuitos pueden modificarse según se desee para
profundizar sobre los temas o crear asignaturas y tutoriales para los estudiantes.
FIGURA P-3 Las letras
denotan categorías
de problemas, y los
asteriscos indican
que se proporcionan
las soluciones
correspondientes al
final del texto.
02/,%-!3
3%##)¼. 

 $POTVMUF MB GJHVSB  %FUFSNJOF MPT OJWFMFT FO MB TBMJEB EF DBEB EFDPEJGJ
DBEPS QBSB MPT TJHVJFOUFT DPOKVOUPT EF DPOEJDJPOFT EF FOUSBEB
	B
 5PEBT MBT FOUSBEBT FO #+0
	C
 5PEBT MBT FOUSBEBT FO CBKP
 FYDFQUP   -50
	D
 5PEBT MBT FOUSBEBT FO -50 FYDFQUP     #+0
	E
 5PEBT MBT FOUSBEBT FO -50

{$VÈM FT FM OÞNFSP EF FOUSBEBT Z TBMJEBT EF VO EFDPEJGJDBEPS RVF BDFQUB 
EJTUJOUBT DPNCJOBDJPOFT EF FOUSBEB

 %NCONTRARÈ LAS RESPUESTAS A LOS PROBLEMAS MARCADOS CON UN ASTERISCO AL lNAL DEL LIBRO
#
#
XII PREFACIO
Todas las figuras en el texto que tienen su correspondiente archivo de simulación en
el CD-ROM se identifican mediante el icono que se muestra en la figura P-4.
TECNOLOGÍA DE CI Esta nueva edición continúa la práctica que empezamos
con las últimas tres ediciones que se refiere a dar más prominencia a la tecnología
CMOS como principal tecnología de CI en aplicaciones de integración de pequeña
y media escala. Hemos logrado esta profundidad en la cobertura, al mismo tiempo
que pudimos retener una amplia cobertura de la lógica TTL.
Cambios específicos
A continuación se muestran los principales cambios en la cobertura de los temas:
■ Capítulo 1 Hemos actualizado y mejorado muchas explicaciones que tratan
sobre cuestiones análogas/digitales.
■ Capítulo 2 Eliminamos el sistema numérico octal y agregamos el código de
Gray. Incluimos una tabla de códigos ASCII estándar completa, junto con nue-
vos ejemplos relacionados con los caracteres ASCII, la representación hexa-
decimal y los archivos de transferencia de código objeto de las computadoras.
También agregamos nuevo material sobre las tramas de caracteres ASCII para
la transferencia asincrónica de datos.
■ Capítulo 3 Además de algunos nuevos ejemplos prácticos de funciones lógicas,
la principal mejora en el capítulo 3 es una nueva técnica de análisis que utiliza
tablas para evaluar puntos intermedios en el circuito lógico.
■ Capítulo 4 En el capítulo 4 sólo fue necesario realizar unos cuantos cambios.
■ Capítulo 5 Hay una nueva sección que trata acerca de los pulsos digitales y las
definiciones asociadas, tales como: anchura de pulso, periodo, tiempo de eleva-
ción y tiempo de caída. Se modificó la terminología utilizada para las entradas
de los circuitos de latch, de Clear (Borrar) a Reset (Restablecer) para que fuera
compatible con las descripciones de los componentes de Altera. También se
eliminó la definición de un flip-flop maestro/esclavo. Se mejoró la explicación
sobre las aplicaciones de circuitos disparadores de Schmitt (Schmitt trigger)
para enfatizar su papel en cuanto a la eliminación de los efectos del ruido.
Ahora se explica el funcionamiento interno del temporizador 555 y se proponen
ciertos circuitos de temporización mejorados que hacen que el dispositivo sea
más versátil. Se rediseñó la cobertura sobre el HDL para los latches SR y D,
para utilizar una descripción más descriptiva de su comportamiento, y se modi-
ficó la cobertura de los contadores para enfocarse en las técnicas estructurales
para interconectar bloques de flip-flops.
■ Capítulo 6 En esta edición se cubren con más detalle los números con signo,
en especial todo lo relacionado con la extensión de signo en los números con
complemento a 2 y el desbordamiento aritmético. Una nueva sugerencia de
calculadora simplifica la negación de números binarios representados en hexa-
decimal. Se utiliza un modelo de círculo de números para comparar los formatos
FIGURA P-4 El
icono denota que
la figura tiene su
correspondiente archivo
de simulación
en el CD-ROM.
'*(63  %JBHSBNB
HFOFSBM EF VO
EFDPEJGJDBEPS
PREFACIO XIII
de números con y sin signo, lo cual ayuda a los estudiantes para que visualicen
la operación de suma/resta mediante el uso de ambos formatos.
■ Capítulo 7 Este capítulo se revisó con mucho detalle para enfatizar los circui-
tos de contadores sincrónicos. Se siguen introduciendo los contadores de ondu-
lación simple para proporcionar una comprensión básica del concepto de
conteo y la conexión en cascada asincrónica. Después de examinar las limitacio-
nes de los contadores de ondulación en la sección 2, se presentan los contadores
sincrónicos en la sección 3 y se utilizan en todos los ejemplos subsiguientes a lo
largo del texto. Los contadores de CI que se presentan son: 74160, ’161, ’162 y
’163. Estos dispositivos comunes ofrecen una excelente diversidad de caracte-
rísticas que enseñan la diferencia entre las entradas de control sincrónicas y
asincrónicas, y las técnicas de conexión en cascada. Los circuitos 74190 y ’191
se utilizan como ejemplo de un CI de contador sincrónico arriba/abajo, con lo
cual se refuerzan aún más las técnicas requeridas para la conexión sincrónica
en cascada. Hay una nueva sección dedicada a las técnicas de análisis para cir-
cuitos sincrónicos mediante el uso de flip-flops JK y D. Las técnicas de diseño
sincrónico ahora incluyen también el uso de registros de flip-flop D que repre-
sentan la mejor manera en que se implementan los circuitos secuenciales en la
tecnología PLD moderna. Se mejoraron las secciones sobre HDL para demos-
trar la implementación de las operaciones sincrónicas/asincrónicas de cargar,
borrar y conectar en cascada. Otra de las novedades es un énfasis en la simulación
y la prueba de los módulos de HDL. Ahora las máquinas de estado se presentan
como un tema, se definen los modelos tradicionales de Mealy y Moore y se pre-
senta un nuevo sistema de control de semáforos como ejemplo. También se
hicieron pequeñas mejoras en la segunda mitad del capítulo 7 y se rediseñaron
todos los problemas al final del capítulo 7 para reforzar los conceptos.
■ Capítulo 8 Este capítulo sigue siendo una descripción muy técnica de la tecno-
logía disponible en las familias lógicas estándar y los componentes digitales. Se
mejoraron las secciones de interfaz de voltaje mixto para cubrir la tecnología
de bajo voltaje. La curva de ciclo de vida más reciente de Texas Instruments
muestra el historial y la posición actual de diversas series lógicas, desde su
introducción hasta su obsolescencia. También se presenta la señalización dife-
rencial de bajo voltaje (LVDS).
■ Capítulo 9 Este capítulo trata todavía acerca de los fundamentos de los siste-
mas digitales y su demostración mediante el uso de HDL. También se introdu-
cen muchas otras técnicas de HDL, como las salidas de tres estados y diversas
estructuras de control de HDL. Se describe un circuito 74ALS148 como otro
ejemplo de codificador. Se actualizaron todos los ejemplos de sistemas que uti-
lizan contadores para la operación sincrónica. En especial, se mejoró el sistema
de transmisión en serie mediante el uso de MUX y DEMUX. Se explica la téc-
nica de cómo utilizar un MUX para implementar expresiones SOP en una forma
más estructurada, como un ejercicio de estudio independiente en los problemas
al final del capítulo.
■ Capítulo 10 Este capítulo, que se introdujo como novedad en la novena edi-
ción, no sufrió cambios considerables.
■ Capítulo 11 Se mejoró el material sobre DACs bipolares, y se presentó un
ejemplo sobre el uso de DACs como control de amplitud digital para formas
de onda analógicas. En esta edición se explica la especificación de precisión de
convertidores A/D más común en forma de / LSB.
■ Capítulo 12 Se realizaron pequeñas mejoras en este capítulo para consolidar
y comprimir algo del material sobre tecnologías antiguas de memoria, tales
como la UV EPROM. Aún se presenta la tecnología flash mediante el uso de
un ejemplo de primera generación, pero también se describen las mejoras más
recientes, así como algunas de las aplicaciones de la tecnología flash en los
dispositivos modernos disponibles para el consumidor.
■ Capítulo 13 Este capítulo, nuevo en la novena edición, se actualizó para intro-
ducir la nueva familia Cyclone de PLDs.
XIV PREFACIO
Características que se retuvieron
Esta edición retiene todas las características que contribuyeron a la amplia acep-
tación de las ediciones anteriores. Utiliza un enfoque de diagrama de bloques para
enseñar las operaciones lógicas básicas sin confundir al lector con los detalles de
su operación interna. Se conservan todas las características eléctricas de los CIs
lógicos, excepto las más básicas, hasta que el lector cuente con una sólida com-
prensión de los principios lógicos. En el capítulo 8 se introducen los CI internos. En
ese punto, el lector podrá interpretar las características de entrada y salida de un
bloque lógico y “ajustarlo” en forma apropiada a un sistema completo.
Por lo general, el tratamiento de cada nuevo tema o dispositivo sigue estos
pasos: se presenta el principio de operación; se presentan ejemplos y aplicaciones
con una explicación detallada, a menudo mediante el uso de CIs reales; se plan-
tean preguntas cortas de repaso al final de la sección; y por último se presentan
problemas a profundidad al final del capítulo. Estos problemas, que van desde lo
más simple hasta lo más complejo, ofrecen a los instructores una amplia elección
para los estudiantes. El principal objetivo de estos problemas es reforzar el mate-
rial pero no sólo con repetir los principios, ya que requieren que los estudiantes
demuestren la comprensión de estos principios al aplicarlos a distintas situaciones.
Este enfoque también ayuda a los estudiantes a desarrollar confianza y a expandir
su conocimiento sobre el material.
El material relacionado con los PLDs y HDLs se distribuye a lo largo del texto,
con ejemplos en los que se enfatizan las características clave en cada aplicación.
Estos temas aparecen al final de cada capítulo, lo que facilita relacionar cada tema
con el texto general al principio del capítulo, o se puede analizar por separado el
material que trata sobre los conceptos de PLD/HDL.
La extensa cobertura relacionada con la detección y solución de problemas se
extiende desde el capítulo 4 hasta el 12, incluyendo la presentación de los prin-
cipios y las técnicas de detección y solución de problemas, ejemplos prácticos,
25 ejemplos de detección y solución de problemas, y además, 60 problemas reales
relacionados con este mismo tema. Si se complementa con los ejercicios prácticos
de laboratorio, este material puede ayudar a impulsar el desarrollo de buenas habi-
lidades para la detección y solución de problemas.
La décima edición ofrece más de 200 ejemplos resueltos, más de 400 preguntas
de repaso y más de 450 problemas/ejercicios de capítulo. Algunos de estos proble-
mas son aplicaciones que muestran cómo se utilizan en un típico sistema de micro-
computadora los dispositivos lógicos presentados en el capítulo. Después del
Glosario están las respuestas a la mayoría de los problemas. El Glosario provee
definiciones concisas de todos los términos que están resaltados en el texto, en
negritas.
Al final del libro hay un índice de CIs para ayudar a que los lectores localicen
con facilidad el material sobre cualquier CI citado o utilizado en el texto. Las últi-
mas hojas del libro contienen tablas de los teoremas de álgebra Booleana más usa-
dos, síntesis de compuertas lógicas y tablas de verdad de flip-flops para una rápida
referencia al resolver problemas o trabajar en el laboratorio.
Suplementos (en inglés)
Para acompañar a este libro de texto se ha desarrollado un detallado complemento
con herramientas de enseñanza y aprendizaje. Cada componente provee una función
única, y cada uno de ellos puede usarse ya sea en forma independiente o en conjun-
to con los demás.
CD-ROM Cada libro incluye un CD-ROM, con lo siguiente:
■ MAX+PLUS®
II, software versión Educativa de Altera. Éste es un entorno
integrado de desarrollo completamente funcional, de calidad profesional para
sistemas digitales, el cual se ha utilizado durante muchos años y sigue teniendo
soporte por parte de Altera. Los estudiantes pueden utilizarlo para escribir,
PREFACIO XV
compilar y simular sus diseños en casa, antes de ir al laboratorio. Pueden usar
el mismo software para programar y probar un CPLD de Altera.
■ Quartus II, software Versión Web de Altera. Éste es el software de sistema de
desarrollo más reciente de Altera, el cual ofrece características más avanzadas
y soporta los nuevos dispositivos PLD, tales como la familia Cyclone de FPGAs,
que se encuentran en muchas de las tarjetas educacionales más recientes.
■ Tutoriales. Gregory Moss ha desarrollado tutoriales que se han utilizado con
éxito durante varios años para enseñar a los estudiantes principiantes a utilizar
el software MAX+PLUS II de Altera. Estos tutoriales están disponibles en los
formatos PDF y PPT (presentación de Microsoft®
PowerPoint®
), y también se
han adaptado para enseñar Quartus II. Con la ayuda de estos tutoriales, cual-
quiera puede aprender a modificar y probar todos los ejemplos que se presen-
tan en este texto, así como a desarrollar sus propios diseños.
■ Archivos de diseño de las figuras del libro de texto. Hay más de 40 archivos
de diseño en cada lenguaje que se presenta en figuras a lo largo del texto. Los
estudiantes pueden cargar estos archivos en el software de Altera y probarlos.
■ Soluciones a problemas selectos: archivos de diseño de HDL. Algunas de las
soluciones a los problemas al final del capítulo se encuentran disponibles (en
inglés) para los estudiantes. (Todas las soluciones de HDL están disponibles
para los instructores en el Manual para el instructor.) Las soluciones para los
problemas del capítulo 7 incluyen algunos archivos de gráficos extensos y de
HDL que no se publican en el libro, pero están disponibles en el CD-ROM.
■ Circuitos del texto modelizados en Multisim®
. Es posible abrir y trabajar en
forma interactiva con cerca de 100 circuitos para incrementar su comprensión
de los conceptos y prepararse para las actividades de laboratorio. Se propor-
cionan archivos de circuitos Multisim para cualquiera que tenga este software.
Quienes no tengan el software Multisim y deseen comprarlo para usar los archi-
vos de circuitos pueden ordenarlo en el sitio Web www.prenhall.com/ewb.
■ Material suplementario de introducción a los microprocesadores y los
microcontroladores. Para tener flexibilidad al dar servicio a las diversas
necesidades de las distintas escuelas, se presenta una introducción a este tema
como una conveniente interfaz entre un curso de sistemas digitales y un curso
de introducción a los microprocesadores/microcontroladores.
RECURSOS PARA LOS ESTUDIANTES (en inglés)
■ Sitio Web complementario (www.pearsoneducacion.net/tocci). Este sitio ofre-
ce a los estudiantes una guía de estudio en línea gratuita, con la cual pueden
revisar el material tratado en el texto y comprobar su comprensión de los temas
clave.
RECURSOS PARA EL INSTRUCTOR (en inglés)
■ Manual para el instructor. Este manual contiene las soluciones para todos los
problemas de final de capítulo que vienen en este libro de texto.
■ Manual de soluciones de laboratorio. Se incluyen los resultados de ambos
manuales de laboratorio.
■ Presentaciones en PowerPoint®
. Las figuras del texto, además de Notas para el
orador para cada capítulo.
■ TestGen. Hay un banco de pruebas computarizado.
XVI PREFACIO
Para acceder a los materiales suplementarios en línea, los instructores deberán
solicitar un código de acceso, luego ir a www.pearsoneducacion.net/tocci, haga clic
en el vínculo Instructor Resource Center y después haga clic en Register para obte-
ner un código de acceso de instructor. Después de registrarse, en un plazo no mayor
a 48 horas recibirá un correo electrónico de confirmación en el que se incluirá el
código de acceso. Cuando haya recibido su código, vaya al sitio e inicie sesión para
obtener las instrucciones completas sobre cómo descargar los materiales que desee
utilizar.
AGRADECIMIENTOS
Agradecemos a todas aquellas personas que evaluaron la novena edición y propor-
cionaron respuestas para un extenso cuestionario: Ali Khabari, Wentworth Institute
of Technology; Al Knebel, Monroe Community College; Rex Fisher, Brigham Young
University; Alan Niemi, LeTourneau University; y Roger Sash, University of
Nebraska. Se tomaron muy en cuenta sus comentarios, críticas y sugerencias, cuyo
incalculable valor nos fue de utilidad para determinar el formato final de la décima
edición.
También estamos muy agradecidos con el profesor Frank Ambrosio, Monroe
Community College, por su usual labor de alta calidad en los índices y en el Manual
de recursos para el instructor; con Thomas L. Robertson, Purdue University, por pro-
veer su sistema de levitación magnética como ejemplo; y con los profesores Russ
Aubrey y Gene Harding, Purdue University, por la revisión técnica de los temas
y muchas sugerencias para realizar mejoras. Apreciamos la cooperación de Mike
Phipps y de Altera Corporation por su apoyo al otorgar el permiso para usar su
paquete de software y las figuras de sus publicaciones técnicas.
Un proyecto de esta magnitud requiere de un soporte editorial exhaustivo
y profesional, y una vez más Prentice Hall logró su cometido con excelencia.
Agradecemos al personal en Prentice Hall y TechBooks/GTS por su ayuda para
hacer que esta publicación sea un éxito.
Por último, queremos hacer saber a nuestras esposas e hijos cuánto apreciamos
su apoyo y su comprensión. Esperamos poder reponer gradualmente todas las horas
que pasamos alejados de ellos mientras trabajábamos en esta revisión.
Ronald J. Tocci
Neal S. Widmer
Gregory L. Moss
R ES UMEN
DE CO NTENIDO
CAPÍTULO 1 Conceptos introductorios 2
CAPÍTULO 2 Sistemas y códigos numéricos 24
CAPÍTULO 3 Descripción de los circuitos lógicos 54
CAPÍTULO 4 Circuitos lógicos combinacionales 118
CAPÍTULO 5 Flip-flops y dispositivos relacionados 208
CAPÍTULO 6 Aritmética digital: operaciones y circuitos 296
CAPÍTULO 7 Contadores y registros 360
CAPÍTULO 8 Familias lógicas de circuitos integrados 488
CAPÍTULO 9 Circuitos lógicos MSI 576
CAPÍTULO 10 Proyectos de sistemas digitales mediante el uso de HDL 676
CAPÍTULO 11 Interface con el mundo analógico 718
CAPÍTULO 12 Dispositivos de memoria 784
CAPÍTULO 13 Arquitecturas de los dispositivos lógicos programables 868
Glosario 898
Respuestas a los problemas seleccionados 911
Índice de CIs 919
Índice 922
xvii
Sistemas_Digitales_Principios_y_Aplicaci.pdf
CO N TENIDO
CAPÍTULO 1 Conceptos introductorios 2
1-1 Representaciones numéricas 4
1-2 Sistemas digitales y analógicos 5
1-3 Sistemas numéricos digitales 10
1-4 Representación de cantidades binarias 13
1.5 Circuitos digitales/circuitos lógicos 15
1-6 Transmisión en paralelo y en serie 17
1-7 Memoria 18
1-8 Computadoras digitales 19
CAPÍTULO 2 Sistemas y códigos numéricos 24
2-1 Conversiones de binario a decimal 26
2-2 Conversiones de decimal a binario 26
2-3 Sistema numérico hexadecimal 29
2-4 Código BCD 33
2-5 Código gray 35
2-6 Integración de los sistemas numéricos 37
2-7 Byte, nibble y palabra 37
2-8 Códigos alfanuméricos 39
2-9 Método de paridad para la detección de errores 41
2-10 Aplicaciones 44
xix
CAPÍTULO 3 Descripción de los circuitos lógicos 54
3-1 Constantes y variables booleanas 57
3-2 Tablas de verdad 57
3-3 Operación OR con compuertas OR 58
3-4 Operación AND con compuertas AND 62
3-5 Operación NOT 65
3-6 Descripción de circuitos lógicos en forma algebraica 66
3-7 Evaluación de las salidas de circuitos lógicos 68
3-8 Implementación de circuitos a partir de expresiones booleanas 71
3-9 Compuertas NOR y NAND 73
3-10 Teoremas booleanos 76
3-11 Teoremas de DeMorgan 80
3-12 Universalidad de las compuertas NAND y NOR 83
3-13 Representaciones alternas de compuertas lógicas 86
3-14 Cuál representación de compuerta se debe usar 89
3-15 Símbolos lógicos del estándar IEEE/ANSI 95
3-16 Resumen de los métodos para describir circuitos lógicos 96
3-17 Comparación entre lenguajes de descripción y lenguajes de
programación 98
3-18 Implementación de circuitos lógicos con PLDS 100
3-19 Formato y sintaxis del HDL 102
3-20 Señales intermedias 105
CAPÍTULO 4 Circuitos lógicos combinacionales 118
4-1 Forma de suma de productos 120
4-2 Simplificación de circuitos lógicos 121
4-3 Simplificación algebraica 121
4-4 Diseño de circuitos lógicos combinacionales 127
4-5 Método de mapas de Karnaugh 133
4-6 Circuitos OR exclusivo y NOR exclusivo 144
4-7 Generador y comprobador de paridad 149
4-8 Circuitos de habilitación/deshabilitación 151
4-9 Características básicas de los CIS digitales 153
4-10 Diagnóstico de fallas de sistemas digitales 160
4-11 Fallas internas en los circuitos integrados digitales 162
4-12 Fallas externas 166
4-13 Ejemplo práctico de diagnóstico de fallas 168
4-14 Dispositivos lógicos programables 170
4-15 Representación de datos en HDL 177
4-16 Tablas de verdad mediante el uso de HDL 181
4-17 Estructuras de control de decisiones en HDL 184
XX CONTENIDO
CAPÍTULO 5 Flip-flops y dispositivos relacionados 208
5-1 Latch de compuerta NAND 211
5-2 Latch de compuerta NOR 216
5-3 Ejemplo práctico de diagnóstico de fallas 219
5-4 Pulsos digitales 220
5-5 Señales de reloj y flip-flops sincronizados por reloj 221
5-6 Flip-flop sincronizado por reloj en S-R 224
5-7 Flip-flop sincronizado por reloj en J-K 227
5-8 Flip-flop sincronizado por reloj en D 230
5-9 Latch D (latch transparente) 232
5-10 Entradas asíncronas 233
5-11 Símbolos IEEE/ANSI 236
5-12 Consideraciones de sincronización de los flip-flops 238
5-13 Problema potencial de sincronización en circuitos con FF 241
5-14 Aplicaciones de los flip-flops 243
5-15 Sincronización de los flip-flops 243
5-16 Detección de una secuencia de entrada 244
5-17 Almacenamiento y transferencia de datos 245
5-18 Transferencia de datos en serie: registros de desplazamiento 247
5-19 División y conteo de frecuencia 250
5-20 Aplicación de microcomputadora 254
5-21 Dispositivos disparadores de Schmitt 256
5-22 One-shot (multivibrador monoestable) 256
5-23 Circuitos generadores de reloj 260
5-24 Diagnóstico de fallas en circuitos con flip-flops 264
5-25 Circuitos secuenciales mediante el uso de HDL 268
5-26 Dispositivos disparados por flanco 272
5-27 Circuitos de HDL con varios componentes 277
CAPÍTULO 6 Aritmética digital: operaciones
y circuitos 296
6-1 Suma binaria 298
6-2 Representación de números con signo 299
6-3 Suma en el sistema de complemento a 2 306
6-4 Resta en el sistema de complemento a 2 307
6-5 Multiplicación de números binarios 310
6-6 División binaria 311
6-7 Suma BCD 312
6-8 Aritmética hexadecimal 314
6-9 Circuitos aritméticos 317
6-10 Sumador binario en paralelo 318
6-11 Diseño de un sumador completo 320
CONTENIDO XXI
6-12 Sumador completo en paralelo con registros 323
6-13 Propagación del acarreo 325
6-14 Sumador en paralelo de circuito integrado 326
6-15 Sistema de complemento a 2 328
6-16 Circuitos integrados tipo ALU 331
6-17 Ejemplo práctico de diagnóstico de fallas 335
6-18 Uso de las funciones de la biblioteca TTL con Altera 337
6-19 Operaciones lógicas con arreglos de bits 338
6-20 Sumadores en HDL 340
6-21 Expansión de la capacidad de bits de un circuito 343
CAPÍTULO 7 Contadores y registros 360
7-1 Contadores asíncronos (de rizo) 362
7-2 Retraso de propagación en contadores de rizo 365
7-3 Contadores síncronos (en paralelo) 367
7-4 Contadores con números mod  2N
370
7-5 Contadores síncronos descendentes y ascendentes/descendentes 377
7-6 Contadores preajustables 379
7-7 Contadores síncronos de CI 380
7-8 Decodificación de un contador 389
7-9 Análisis de los contadores síncronos 393
7-10 Diseño de un contador síncrono 396
7-11 Contadores básicos mediante el uso de HDL 405
7-12 Contadores con todas las características en HDL 412
7-13 Cómo alambrar módulos de HDL en conjunto 417
7-14 Máquina de estados 425
7-15 Registros de circuito integrado 437
7-16 Entrada en paralelo/salida en paralelo: 74ALS174/74HC174 437
7-17 Entrada en serie/salida en serie: 74ALS166/74HC166 439
7-18 Entrada en paralelo/salida en serie: 74ALS165/74HC165 441
7-19 Entrada en serie/salida en paralelo: 74ALS164/74HC164 443
7-20 Contadores de registro de desplazamiento 445
7-21 Diagnóstico de fallas 450
7-22 Registros en HDL 452
7-23 Contadores de anillo en HDL 459
7-24 Monoestables en HDL 461
CAPÍTULO 8 Familias lógicas de circuitos
integrados 488
8-1 Terminología de CIS digitales 490
8-2 La familia lógica TTL 498
8-3 Hojas técnicas TTL 502
8-4 Características de las series TTL 506
XXII CONTENIDO
8-5 Capacidad de carga de la familia TTL 509
8-6 Otras características de la familia TTL 514
8-7 Tecnología MOS 518
8-8 Lógica de MOS complementario 521
8-9 Características de las series CMOS 523
8-10 Tecnología de bajo voltaje 530
8-11 Salidas de colector abierto/drenador abierto 533
8-12 Salidas lógicas triestado (tres estados) 538
8-13 Lógica de interfase de bus de alta velocidad 541
8-14 La familia ECL de CIS digitales 543
8-15 Compuerta de transmisión CMOS (interruptor bilateral) 546
8-16 Interfase de CIS 548
8-17 Interfase de voltaje mixto 553
8-18 Comparadores de voltaje analógico 554
8-19 Diagnóstico de fallas 556
CAPÍTULO 9 Circuitos lógicos MSI 576
9-1 Decodificadores 577
9-2 Decodificadores/controladores de BCD a 7 segmentos 584
9-3 Pantallas de cristal líquido 587
9-4 Codificadores 591
9-5 Diagnóstico de fallas 597
9-6 Multiplexores (selectores de datos) 599
9-7 Aplicaciones de los multiplexores 604
9-8 Demultiplexores (distribuidores de datos) 610
9-9 Más diagnóstico de fallas 617
9-10 Comparador de magnitud 621
9-11 Convertidores de código 624
9-12 Buses de datos 628
9-13 El registro triestado 74ALS173/HC173 629
9-14 Operación del bus de datos 632
9-15 Decodificadores mediante el uso de HDL 638
9-16 El decodificador/controlador de 7 segmentos en HDL 642
9-17 Codificadores mediante el uso de HDL 645
9-18 Multiplexores y demultiplexores en HDL 648
9-19 Comparadores de magnitud en HDL 652
9-20 Convertidores de código en HDL 653
CAPÍTULO 10 Proyectos de sistemas digitales
mediante el uso de HDL 676
10-1 Administración de pequeños proyectos 678
10-2 Proyecto de controlador de motor de pasos 679
10-3 Proyecto de codificador de teclado numérico 687
CONTENIDO XXIII
10-4 Proyecto de reloj digital 693
10-5 Proyecto de contador de frecuencia 710
CAPÍTULO 11 Interface con el mundo analógico 718
11-1 Repaso de la comparación entre digital y analógico 719
11-2 Conversión digital-analógica (DAC) 721
11-3 Circuitos convertidores D/A 728
11-4 Especificaciones de un DAC 733
11-5 Un DAC de circuito integrado 735
11-6 Aplicaciones de los DACS 736
11-7 Diagnóstico de fallas en los DACS 738
11-8 Conversión analógica-digital (ADC) 739
11-9 ADC de rampa digital 740
11-10 Adquisición de datos 745
11-11 ADC de aproximaciones sucesivas 749
11-12 ADCS tipo flash 755
11-13 Otros métodos de conversión A/D 757
11-14 Circuitos de muestreo y retención 761
11-15 Multiplexaje 762
11-16 Osciloscopio de almacenamiento digital 764
11-17 Procesamiento digital de señales (DSP) 765
CAPÍTULO 12 Dispositivos de memoria 784
12-1 Terminología de memoria 786
12.2 Operación general de la memoria 790
12-3 Conexiones entre CPU y memoria 793
12-4 Memorias de sólo lectura 795
12-5 Arquitectura de la ROM 796
12-6 Sincronización de la ROM 799
12-7 Tipos de ROMS 800
12-8 Memoria flash 808
12-9 Aplicaciones de la ROM 811
12-10 RAM semiconductora 814
12-11 Arquitectura de la RAM 815
12-12 RAM estática (SRAM) 818
12-13 RAM dinámica (DRAM) 823
12-14 Estructura y operación de la RAM dinámica 824
12-15 Ciclos de lectura/escritura de la DRAM 829
12-16 Refresco de la DRAM 831
12-17 Tecnología de la DRAM 834
12-18 Expansión de tamaño de palabra y capacidad 836
12-19 Funciones especiales de la memoria 844
XXIV CONTENIDO
12-20 Diagnóstico de fallas en sistemas de RAM 847
12-21 Prueba de la ROM 852
CAPÍTULO 13 Arquitecturas de los dispositivos
lógicos programables 868
13-1 Árbol familiar de los sistemas digitales 870
13-2 Fundamentos de los circuitos de un PLD 875
13-3 Arquitecturas de PLDS 877
13-4 El GAL 16V8 (matriz lógica genérica) 881
13-5 El CPLD EPM7128S de Altera 885
13-6 La familia FLEX10K de Altera 890
13-7 La familia Cyclone de Altera 894
Glosario 898
Respuestas a los problemas seleccionados 911
Índice de CIs 919
Índice 922
CONTENIDO XXV
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas digitales
Principios y aplicaciones
1-1 Representaciones numéricas
1-2 Sistemas digitales y
analógicos
1-3 Sistemas numéricos
digitales
1-4 Representación de
cantidades binarias
■ CONTENIDO
CON CEPTOS
INTRODUCTORIOS
C A P Í T U L O 1
1-5 Circuitos digitales/circuitos
lógicos
1-6 Transmisión en paralelo y
en serie
1-7 Memoria
1-8 Computadoras digitales
3
■ OBJETIVOS
Al terminar este capítulo, usted podrá:
■ Diferenciar entre la representación analógica y la digital.
■ Citar las ventajas y desventajas de las técnicas digitales en comparación con
las analógicas.
■ Comprender la necesidad de los convertidores analógicos-digitales (ADC) y los
convertidores digitales-analógicos (DAC).
■ Reconocer las características básicas del sistema número binario.
■ Convertir un número binario en su equivalente decimal.
■ Contar en el sistema numérico binario.
■ Identificar las señales digitales comunes.
■ Identificar un diagrama de tiempos.
■ Establecer las diferencias entre la transmisión en paralelo y la
transmisión en serie.
■ Describir las propiedades de las memorias.
■ Describir las partes principales de una computadora digital y comprender sus
funciones.
■ Diferenciar entre microcomputadoras, microprocesadores y
microcontroladores.
■ INTRODUCCIÓN
En el mundo actual, el término digital se ha convertido en parte de nuestro
vocabulario común, debido a la dramática forma en que los circuitos y las
técnicas digitales se han vuelto tan utilizados en casi todas las áreas de la vida:
computadoras, automatización, robots, ciencia médica y tecnología, transporte,
telecomunicaciones, entretenimiento, exploración en el espacio, etcétera. Usted
está a punto de empezar un emocionante viaje educativo, en el cual descubrirá
los principios fundamentales, conceptos y operaciones que son comunes para
todos los sistemas digitales, desde el interruptor de encendido/apagado más
simple hasta la computadora más compleja. Si el libro logra su cometido, usted
deberá tener una comprensión detallada de la manera en que funcionan todos los
sistemas digitales, y deberá ser capaz de aplicar este conocimiento en el análisis y
la detección de fallas en cualquier sistema digital.
Primero presentaremos algunos conceptos subyacentes que forman una
parte vital de la tecnología digital (estos conceptos se ampliarán a medida que
se requieran más adelante en el libro). Además, presentaremos parte de la
terminología que se necesita cuando uno inicia un nuevo campo de estudio,
para agregarla a la lista de términos importantes de cada capítulo.
4 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS
1-1 REPRESENTACIONES NUMÉRICAS
En los campos de la ciencia, la tecnología, los negocios y en la mayoría de los cam-
pos de trabajo, constantemente tratamos con cantidades. Estas cantidades se miden,
se monitorean, se manipulan en forma aritmética, se observan, o de alguna otra
forma se utilizan en los sistemas físicos. Es importante que al tratar con varias can-
tidades se puedan representar sus valores con eficiencia y precisión. Básicamente
existen dos maneras de representar el valor numérico de las cantidades: analógica
y digital.
Representaciones analógicas
En la representación analógica una cantidad se representa mediante un indica-
dor proporcional que varía en forma continua. Un ejemplo es el velocímetro de
los automóviles clásicos de las décadas de 1960 o 1970. La deflexión de la aguja es
proporcional a la velocidad del automóvil y sigue cualquier cambio que se produz-
ca a medida que el vehículo aumente o reduzca su velocidad. En los automóviles
antiguos se utilizaba un eje mecánico flexible para conectar la transmisión con el
velocímetro en el tablero. Es interesante observar que en automóviles recientes, por
lo general, se prefiere la representación analógica, aun y cuando la velocidad ahora
se mide en forma digital.
Los termómetros anteriores a la revolución digital utilizaban la representación
analógica para medir la temperatura, y muchos de ellos todavía se usan actualmen-
te. Esos termómetros utilizan una columna de mercurio, cuya altura es proporcional
a la temperatura. Estos dispositivos están desapareciendo del mercado debido a
problemas con el medio ambiente, pero sin duda son un excelente ejemplo de la
representación analógica. Otro ejemplo es el termómetro de exteriores, en el cual
la posición del apuntador gira alrededor de un disco a medida que un serpentín de
metal se expande y se contrae con base en los cambios de temperatura. La posición
del apuntador es proporcional a la temperatura. Sin importar qué tan pequeño sea
el cambio en la temperatura, habrá un cambio proporcional en el indicador.
En estos dos ejemplos las cantidades físicas (velocidad y temperatura) se aco-
plan a un indicador a través de un medio mecánico solamente. En los sistemas analó-
gicos eléctricos, la cantidad física que se mide o se procesa se convierte en un voltaje
o corriente proporcional (señal eléctrica). Entonces el sistema utiliza este voltaje o
corriente para fines de visualización, procesamiento o control.
El sonido es un ejemplo de una cantidad física que puede representarse median-
te una señal analógica eléctrica. Un micrófono es un dispositivo que genera un vol-
taje de salida proporcional a la amplitud de las ondas sonoras que lo golpean. Las
ondas sonoras producen variaciones en el voltaje de salida del micrófono. De esta
manera, las grabaciones en cinta pueden almacenar ondas sonoras mediante el uso
del voltaje de salida del micrófono para cambiar en forma proporcional el campo
magnético en la cinta.
Las cantidades analógicas como las antes mencionadas tienen una importan-
te característica: sin importar cómo se representen: pueden variar a través de un
intervalo continuo de valores. La velocidad de un automóvil puede tener cualquier
valor entre 0 y 100 km/hora, por ejemplo. De manera similar, la salida del micrófono
podría tener cualquier valor dentro del intervalo de 0 a 10 mV (por ejemplo: 1 mV,
2.3724 mV, 9.9999 mV).
Representaciones digitales
En la representación digital las cantidades se representan no mediante indicadores
que varían en forma continua, sino mediante símbolos llamados dígitos. Considere
como ejemplo el reloj digital, que indica la hora del día en forma de dígitos decima-
les que representan horas y minutos (y algunas veces segundos). Como es sabido, la
hora del día cambia en forma continua pero la lectura del reloj digital no cambia
así, sino que cambia en intervalos de uno por minuto (o por segundo). En otras pala-
bras, esta representación digital de la hora del día cambia en incrementos discretos,
PREGUNTAS DE REPASO *
en comparación con la representación de la hora que proporciona un reloj de pared
operado mediante corriente alterna analógica, en donde la lectura de la carátula
cambia en forma continua.
Así, la principal diferencia entre las cantidades analógicas y digitales puede
plantearse de la siguiente manera:
analógica ⬅ continua
digital ⬅ discreta (paso por paso)
Debido a la naturaleza discreta de las representaciones digitales, no existe ambi-
güedad cuando se lee el valor de una cantidad digital, mientras que el valor de una
cantidad analógica, por lo general, se deja abierto a la interpretación. En la prácti-
ca, cuando se mide una cantidad analógica, siempre se “redondea” a un nivel de pre-
cisión conveniente. En otras palabras, se digitaliza la cantidad. La representación
digital es el resultado de asignar un número de precisión limitada a una cantidad
que varía en forma continua. Por ejemplo, cuando usted toma su temperatura con un
termómetro analógico, es común que la columna de mercurio se encuentre entre dos
líneas de graduación, pero usted elije la línea más cercana y le asigna un número,
por decir, 36.7 °C (98.6 °F).
¿Cuáles de las siguientes cantidades son analógicas y cuáles son digitales?
(a) Un interruptor de diez posiciones.
(b) La corriente que fluye a través de un contacto eléctrico.
(c) La temperatura de una habitación.
(d) Granos de arena en la playa.
(e) El medidor de combustible de un automóvil.
Solución
(a) Digital.
(b) Analógica.
(c) Analógica.
(d) Digital, ya que el número de granos sólo puede tener ciertos valores discretos
(enteros) y no cualquier valor posible en un rango continuo.
(e) Analógico, en caso de ser del tipo con aguja; digital, si tiene indicador numérico
o de barra de gráficos.
1. Describa en forma concisa la principal diferencia entre las cantidades analógi-
cas y digitales.
1-2 SISTEMAS DIGITALESY ANALÓGICOS
Un sistema digital es la combinación de dispositivos diseñados para manipular infor-
mación lógica o cantidades físicas que se representan en forma digital; es decir, las
cantidades sólo pueden tener valores discretos. Estos dispositivos, por lo general, son
EJEMPLO 1-1
* Las respuestas a las preguntas de repaso se encuentran al nal del capítulo correspondiente.
SECCIÓN 1-2/SISTEMAS DIGITALES Y ANALÓGICOS 5
6 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS
electrónicos, pero también pueden ser mecánicos, magnéticos o neumáticos.Algunos
de los sistemas digitales más comunes son las computadoras y las calculadoras digi-
tales, los equipos de audio y video digital, y el sistema telefónico (el sistema digital
más grande del mundo).
Un sistema analógico contiene dispositivos que manipulan cantidades físicas
que se representan en forma analógica. En un sistema analógico, las cantidades
pueden variar sobre un intervalo continuo de valores. Por ejemplo, la amplitud de la
señal de salida a la bocina en un receptor de radio puede tener cualquier valor entre
cero y su límite máximo. Otros sistemas analógicos comunes son los amplificadores
de audio, los equipos de grabación y reproducción de cintas magnéticas, y un simple
interruptor regulador de luz.
Ventajas de las técnicas digitales
Cada vez hay más aplicaciones en la electrónica, al igual que en la mayoría de las
otras tecnologías, que utilizan técnicas digitales para hacer operaciones que antes
se realizaban mediante métodos analógicos. Las razones principales del cambio
hacia la tecnología digital son:
1. Generalmente los sistemas digitales son más fáciles de diseñar. Los circuitos que
se utilizan en los sistemas digitales son circuitos de conmutación, en donde no
importan los valores exactos de voltaje o de corriente, sino sólo el intervalo
(ALTO o BAJO) en el que se encuentren.
2. Es fácil almacenar información. Esto se logra mediante dispositivos y circuitos
especiales que pueden fijar la información digital y almacenarla durante el
tiempo que sea necesario, y las técnicas de almacenamiento masivo pueden
guardar miles de millones de bits de información en un espacio físico relativa-
mente pequeño. En contraste, la capacidad de almacenamiento de las técnicas
analógicas es extremadamente limitada.
3. Es más fácil mantener la precisión y la exactitud en todo el sistema. Una vez que
se digitaliza una señal, la información que contiene no se deteriora a medida
que se procesa. En los sistemas analógicos, las señales de voltaje y de corriente
tienden a distorsionarse debido a los efectos de temperatura, humedad y por
variaciones de tolerancia de los componentes en los circuitos que procesan la
señal.
4. La operación puede programarse. Es bastante sencillo diseñar sistemas digitales
cuya operación esté controlada por un conjunto de instrucciones almacenadas,
a lo cual se le conoce como programa. Los sistemas analógicos también pueden
programarse, pero la variedad y la complejidad de las operaciones disponibles
son muy limitadas.
5. Los circuitos digitales son más resistentes al ruido. Las fluctuaciones espurias en
el voltaje (ruido) no son tan críticas en los sistemas digitales, ya que el valor
exacto del voltaje no es importante, siempre y cuando el ruido no sea tan fuerte
como para evitar que podamos distinguir entre un nivel ALTO y un nivel BAJO.
6. Pueden fabricarse más circuitos digitales en los chips de CI. Es cierto que los circui-
tos analógicos también se han beneficiado con el desarrollo de la tecnología de
los circuitos integrados, pero su complejidad relativa y uso de dispositivos que
no pueden integrarse de manera económicamente conveniente (capacitores de
alto valor, resistencias de precisión, inductancias, transformadores) han hecho
imposible alcanzar el mismo grado de integración en los sistemas analógicos.
Limitaciones de las técnicas digitales
En realidad existen muy pocas desventajas al utilizar técnicas digitales. Los dos
problemas principales son:
El mundo real es analógico.
El procesamiento de las señales digitales lleva tiempo.
La mayoría de las cantidades físicas son analógicas por naturaleza, y a menudo estas
cantidades son las entradas y salidas que un sistema monitorea, opera o controla.
Algunos ejemplos son: temperatura, presión, posición, velocidad, nivel de líquido y
flujo, entre otros. Estamos habituados a expresar estas cantidades en forma digital,
como cuando decimos que la temperatura es de 32° (31.8° si queremos ser más pre-
cisos), pero en realidad estamos haciendo una aproximación digital de una cantidad
que es sin duda analógica.
Para aprovechar las técnicas digitales al procesar entradas y salidas analógicas,
se deben seguir cuatro pasos:
1. Convertir la variable física en una señal eléctrica (analógica).
2. Convertir la señal eléctrica (analógica) a su forma digital.
3. Procesar (operar con) la información digital.
4. Convertir las salidas digitales nuevamente a la forma analógica del mundo
real.
Se podría escribir todo un libro únicamente para explicar el paso 1. Existen
muchos tipos de dispositivos que convierten diversas variables físicas en señales eléc-
tricas analógicas (sensores). Éstos se utilizan para medir cosas que se encuentran en
nuestro mundo analógico “real”. Tan sólo en un automóvil hay sensores de nivel de
líquido (tanque de gasolina), temperatura (control del clima y del motor), velocidad
(velocímetro), aceleración (detección de colisión con bolsa de aire), presión (aceite,
múltiple de admisión) y flujo (combustible), por mencionar unos cuantos.
Para ilustrar un sistema típico que utiliza este enfoque, la figura 1-1 describe un
sistema de precisión para regulación de temperatura. Un usuario oprime botones
para aumentar o reducir la temperatura en incrementos de 0.1° (representación
digital). Un sensor de temperatura en el espacio que se está calentando convierte la
temperatura medida en un voltaje proporcional. Este voltaje analógico se convierte
en una cantidad digital mediante un convertidor analógico-digital (ADC). Después,
este valor se compara con el valor deseado y se utiliza para determinar un valor
digital que representa cuánto calor se necesita. El valor digital se convierte en una
cantidad analógica (voltaje) mediante un convertidor digital-analógico (DAC). Este
voltaje se aplica a un elemento de calentamiento, el cual producirá el calor corres-
pondiente al voltaje aplicado y afectará la temperatura del espacio.
Otro buen ejemplo en donde se lleva a cabo la conversión entre valores analógi-
cos y digitales es en la grabación de audio. Los discos compactos (CD) han sustituido
a las cintas magnéticas debido a que proporcionan un medio mucho más conveniente
FIGURA 1-1 Diagrama de bloques de un sistema digital de precisión para control de temperatura.
Espacio con temperatura
controlada
Entrada digital:
Establece la temperatura deseada
Procesador digital
Conversión
digital-analógica
Conversión
analógico-digital
Calor
Sensor
Señal analógica que representa
la temperatura actual
Señal digital que representa
la temperatura actual
Señal digital que representa
la potencia (voltaje) para el calentador


SECCIÓN 1-2/SISTEMAS DIGITALES Y ANALÓGICOS 7
8 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS
para la grabación y reproducción de música. El proceso funciona más o menos así:
(1) los sonidos provenientes de los instrumentos y de las voces humanas producen
una señal analógica de voltaje en un micrófono; (2) esta señal analógica se convierte
en un formato digital mediante el uso de un proceso de conversión analógico-digital;
(3) la información digital se almacena en la superficie del CD; (4) durante la repro-
ducción, el reproductor de CD toma la información digital de la superficie del CD y
la convierte en una señal analógica, que a su vez se amplifica y se alimenta a una
bocina, en donde puede ser detectada por el oído humano.
La segunda desventaja de los sistemas digitales es que se requiere tiempo para
procesar las señales digitalizadas (listas de números). Además es necesario realizar
conversiones entre las formas analógica y digital de la información, lo cual hace que
el sistema sea más complejo y costoso. Entre más precisos necesiten ser los números,
más tiempo se requerirá para procesarlos. En muchas aplicaciones, estos aspectos se
minimizan con las numerosas ventajas del uso de las técnicas digitales, por lo cual
la conversión entre cantidades analógicas y digitales se ha vuelto bastante común
en la tecnología actual.
No obstante, existen situaciones en las que es más sencillo o económico utilizar
técnicas analógicas. Por ejemplo, hace varios años un colega (Tom Robertson) deci-
dió crear una demostración de un sistema de control para los grupos de visitantes.
Planeaba suspender un objeto metálico en un campo magnético, como se muestra
en la figura 1-2. Para implementar un electroimán enredó alambre en una bobina,
al tiempo que controlaba la cantidad de corriente que pasaba a través de ésta. Para
medir la posición del objeto metálico pasaba un rayo de luz infrarroja a través del
campo magnético. A medida que el objeto se acercaba al electroimán, empezaba a
bloquear el rayo de luz. Para controlar el campo magnético se medían los pequeños
cambios en el nivel de luz, logrando así mantener el objeto metálico flotando y esta-
cionario, sin usar cordones. Todos los intentos por utilizar una microcomputadora
para medir estos cambios tan pequeños, realizar los cálculos de control y excitar
el electroimán resultaban demasiado lentos, aún y cuando se utilizaba la PC más
rápida y potente disponible en ese entonces. En la solución final sólo utilizó un
par de amplificadores operacionales y otros componentes que costaron sólo unos
cuantos dólares: un método completamente analógico. Hoy en día tenemos acceso a
procesadores que son lo suficientemente veloces y a técnicas de medición lo bastan-
te precisas como para lograr esta hazaña, pero la solución más simple sigue siendo
analógica.
Es común ver que se emplean técnicas tanto analógicas como digitales dentro
del mismo sistema para beneficiarse de las ventajas de ambas. En estos sistemas
híbridos, una de las partes más importantes de la fase de diseño implica determinar
cuáles partes del sistema deben ser analógicas y cuáles digitales. La tendencia en
(a) (b)
FIGURA 1-2 Un sistema de levitación magnético suspendiendo: (a) un globo
terráqueo con una placa de acero incrustada, y (b) un martillo.
PREGUNTAS DE REPASO
la mayoría de los sistemas es digitalizar la señal lo más pronto posible y convertirla
de nuevo en analógica lo más tarde posible, a medida que las señales fluyen a través
del sistema.
El futuro es digital
Los avances en la tecnología digital durante las últimas tres décadas han sido feno-
menales, y hay razones fuertes para creer que todavía hay más por venir. Piense
en los artículos de uso diario que han cambiado del formato analógico al digital en
el transcurso de su vida. Ahora puede comprar un termómetro digital inalámbrico
para interiores/exteriores por menos de 10.00 dólares. Los automóviles han pasado
de tener muy pocos controles electrónicos a ser vehículos controlados en su mayor
parte por la tecnología digital. El audio digital nos ha llevado a usar el disco com-
pacto y el reproductor MP3. El video digital trajo consigo al DVD. Las cámaras de
video y fotográficas digitales para el hogar; la grabación digital con sistemas como
TiVo; los teléfonos celulares digitales y el tratamiento digital de imágenes en los
rayos X; el tratamiento de imágenes de resonancia magnética (MRI) y los sistemas
de ultrasonido en los hospitales son sólo unas cuantas de las aplicaciones que han
sido invadidas por la revolución digital. Tan pronto como se cuente con la infraes-
tructura apropiada, los sistemas de teléfono y televisión se harán digitales. La tasa
de crecimiento en el ámbito digital continúa sorprendiendo. Tal vez su automóvil
esté equipado con un sistema tal como On Star de GM, el cual convierte el table-
ro en un centro de comunicación, información y navegación inalámbrica. Tal vez
ya esté utilizando comandos de voz para enviar o recibir correo electrónico, pedir
un reporte de tráfico, revisar las necesidades de mantenimiento del automóvil o sólo
cambiar de estación de radio o de CD; todo sin necesidad de quitar sus manos del
volante o su vista del camino. Los automóviles pueden reportar su posición exacta
en caso de emergencia o de una falla mecánica. En los años por venir la comunica-
ción inalámbrica seguirá expandiendo su cobertura para ofrecerle conectividad en
donde quiera que se encuentre. Los teléfonos podrán recibir, ordenar y tal vez res-
ponder a las llamadas entrantes, al igual que una secretaria altamente capacitada.
La revolución de la televisión digital le proveerá no sólo de una mayor definición de
la imagen, sino también mucha más flexibilidad en la programación. Usted podrá
seleccionar el programa que desea ver y cargarlo en la memoria de su televisor, con
lo cual podrá congelar la imagen o reproducir escenas a placer, como si estuviera
viendo un DVD. A medida que la realidad virtual continúe mejorando, usted podrá
interactuar con la materia que esté estudiando. Tal vez esto no suene tan emocio-
nante cuando se estudia electrónica, pero imagine estudiar la historia como si fuera
un participante, o aprender las técnicas apropiadas para todo lo relacionado con
temas que vayan desde el atletismo hasta la cirugía, por medio de simulaciones
basadas en su desempeño actual.
La tecnología digital continuará su incursión de alta velocidad en las activi-
dades diarias de nuestras vidas, además de que abrirá nuevas fronteras en formas
que tal vez nunca hayamos imaginado. Estas aplicaciones (y muchas más) se basan
en los principios que presentamos en este libro. Las herramientas de software para
desarrollar sistemas complejos se actualizan constantemente y están disponibles
para cualquier persona a través de la Web. También estudiaremos los fundamentos
técnicos necesarios para comunicarnos con cualquiera de estas herramientas y lo
prepararemos para que pueda disfrutar de una carrera fascinante y llena de satis-
facciones.
1. ¿Cuáles son las ventajas de las técnicas digitales, en comparación con las analó-
gicas?
2. ¿Cuál es la principal limitación en cuanto al uso de las técnicas digitales?
SECCIÓN 1-2/SISTEMAS DIGITALES Y ANALÓGICOS 9
10 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS
1-3 SISTEMAS NUMÉRICOS DIGITALES
En la tecnología digital se utilizan muchos sistemas numéricos. Los más comunes
son los siguientes: decimal, binario, octal y hexadecimal. Evidentemente el sistema
decimal es el más conocido, ya que es el que utilizamos a diario. Analicemos algunas
de sus características para ayudarnos a comprender los demás sistemas numéricos.
Sistema decimal
El sistema decimal está compuesto de 10 números o símbolos. Estos 10 símbolos son:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9; al utilizar estos símbolos como dígitos de un número, podemos
expresar cualquier cantidad. El sistema decimal se conoce también como sistema de
base 10 ya que tiene 10 dígitos, y ha evolucionado en forma natural debido al hecho
de que las personas tenemos 10 dedos. De hecho, la palabra dígito se deriva de la
palabra “dedo”.
El decimal es un sistema de valor posicional, en el cual el valor de un dígito
depende de su posición. Por ejemplo, considere el número decimal 453. Por la posi-
ción de los dígitos sabemos que el 4 en realidad representa 4 centenas, el 5 represen-
ta 5 decenas y el 3 representa 3 unidades. En esencia, el 4 lleva el mayor peso de los
tres dígitos y se le conoce como el dígito más significativo (MSD) mientras que el 3
lleva el menor peso y se le conoce como el dígito menos significativo (LSD).
Considere otro ejemplo, 27.35. Este número en realidad es igual a 2 decenas
más 7 unidades más 3 décimas más 5 centésimas, o bien 2  10  7  1  3  0.1 
5  0.01. El punto decimal se utiliza para separar las partes entera y fraccional del
número.
Dicho de forma más rigurosa, las diversas posiciones relativas al punto decimal
llevan pesos que pueden expresarse como potencias de 10. Esto se ilustra en la
figura 1-3, en donde se representa el número 2745.214. El punto decimal separa las
potencias positivas de 10 de las potencias negativas. El número 2745.214 es, por lo
tanto, igual a:
En general, cualquier número es sólo la suma de los productos del valor de cada
dígito y su valor posicional.
Conteo decimal
Al contar en el sistema decimal, empezamos con 0 en la posición de las unidades y
tomamos cada símbolo (dígito) en forma progresiva hasta llegar al 9. Luego agrega-
mos un 1 a la siguiente posición más alta y empezamos de nuevo con 0 en la prime-
103 102
2 7 4 5 . 2 1 4
101 100 10–3
10–2
10–1
Valores posicionales
(pesos)
Punto
decimal
MSD LSD
FIGURA 1-3 Valores de
posición decimal como
potencias de 10.
+ (2 * 10-1
) + (1 * 10-2
) + (4 * 10-3
)
(2 * 10+3
) + (7 * 10+2
) + (4 * 101
) + (5 * 100
)
ra posición (vea la figura 1-4). Este proceso continúa hasta llegar al conteo de 99.
Después agregamos un 1 a la tercera posición y continuamos de nuevo con 0s en
las primeras dos posiciones. El mismo patrón se sigue hasta llegar al número que
deseamos contar.
Es importante observar que en el conteo decimal, la posición de las unidades
(LSD) cambia hacia arriba con cada paso en el conteo, la posición de las decenas
cambia hacia arriba cada 10 pasos en el conteo, la posición de las centenas cambia
hacia arriba cada 100 pasos en el conteo, y así sucesivamente.
Otra característica del sistema decimal es que si utilizamos sólo dos lugares
decimales, podemos contar hasta 102
 100 números distintos (0 a 99).*
Con tres
lugares podemos contar hasta 103
 1000 números (0 a 999), y así sucesivamente. En
general, con N lugares o dígitos podemos contar hasta 10N
números distintos. Empe-
zando con cero, el número más grande siempre será 10N
 1.
Sistema binario
Desafortunadamente, el sistema numérico decimal no se presta para una imple-
mentación conveniente en los sistemas digitales. Por ejemplo, es muy difícil diseñar
equipo electrónico de manera que pueda trabajar con 10 niveles de voltaje distin-
tos (cada uno representando un carácter decimal, del 0 al 9). Por otro lado, es muy
sencillo diseñar circuitos electrónicos simples y precisos que operen sólo con dos
niveles de voltaje. Por esta razón casi cualquier sistema digital utiliza el sistema
numérico binario (base 2) como el sistema numérico básico de sus operaciones. Fre-
cuentemente se utilizan otros sistemas numéricos para interpretar o representar
cantidades binarias, para ayudar a las personas que trabajan con estos sistemas
digitales y los utilizan.
En el sistema binario sólo hay dos símbolos o posibles valores de dígitos: 0 y 1.
Aún así, este sistema de base 2 puede usarse para representar cualquier cantidad
que pueda representarse en decimal o en otros sistemas numéricos. Sin embargo, se
requeriría de un mayor número de dígitos binarios para expresar una determinada
cantidad.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
99
100
101
102
103
199
200
999
1000
FIGURA 1-4 Conteo decimal.
* El cero se cuenta como número.
SECCIÓN 1-3/SISTEMAS NUMÉRICOS DIGITALES 11
12 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS
Todas las aseveraciones mencionadas con respecto al sistema decimal pueden
aplicarse de igual forma al sistema binario. Este sistema también es de valor posi-
cional, en donde cada dígito binario tiene su propio peso expresado como potencia
de 2. Esto se ilustra en la figura 1-5, donde los lugares a la izquierda del punto bina-
rio (contraparte del punto decimal) son potencias positivas de 2, y los lugares a la
derecha son potencias negativas de 2. El número 1101.101 se representa en la figura.
Para encontrar su equivalente en el sistema decimal, sólo tomamos la suma de los
productos del valor de cada dígito (0 o 1) y su valor posicional.
En la operación anterior podemos observar que se utilizaron subíndices (2 y 10)
para indicar la base en la cual se expresa el número. Esta convención evita la confu-
sión que se crea siempre que se emplea más de un sistema numérico.
En el sistema binario es muy común que el término dígito binario se abrevie
con el término bit, el cual utilizaremos a partir de ahora. Por ende, en el número
expresado en la figura 1-5 hay cuatro bits a la izquierda del punto binario, los cuales
representan la parte entera del número, y tres bits a la derecha del punto binario,
los cuales representan la parte fraccional. El bit más significativo (MSB) es el bit
más a la izquierda (de mayor peso). El bit menos significativo (LSB) es el bit más a
la derecha (de menor peso). Éstos se indican en la figura 1-5. Aquí, el MSB tiene un
peso de 23
y el LSB tiene un peso de 23
.
Conteo binario
Al tratar con números binarios, por lo general, nos restringimos a un número especí-
fico de bits. Esta restricción se basa en los circuitos que utilicemos para representar
los números binarios. Utilicemos números binarios de cuatro bits para ilustrar el
método para contar en binario.
La secuencia que se muestra en la figura 1-6, comienza con todos los bits en 0; a
esto se le conoce como cuenta cero. Para cada cuenta sucesiva se alterna la posición
de las unidades (20
); es decir, cambia de un valor binario al otro. Cada vez que el
bit de las unidades cambie de 1 a 0 se alternará la posición de los dos (21
), es decir,
cambiará de estado. Cada vez que la posición de los dos cambie de 1 a 0, se alternará
la posición de los cuatros (22
) (cambiará de estado). De igual forma, cada vez que la
posición de los cuatros pase de 1 a 0, se alternará la posición de los ochos (23
). Si el
número binario tuviera más de cuatro bits, este mismo proceso continuaría para las
posiciones de los bits de mayor orden.
La secuencia de conteo binario tiene una característica importante, como se
muestra en la figura 1-6. El bit de las unidades (LSB) cambia ya sea de 0 a 1 o de 1
a 0 con cada conteo. El segundo bit (posición de los dos) permanece en 0 durante
dos conteos, después en 1 durante dos conteos, después en 0 durante dos conteos,
y así sucesivamente. El tercer bit (posición de los cuatros) permanece en 0 durante
23
22
1 0 1 1 1 0 1
21
20 2–3
2–2
2–1
Valores
posicionales
Punto
binario
MSB LSB
FIGURA 1-5 Los valores
posicionales binarios como
potencias de 2.
= 11.62510
= 8 + 0 + 2 + 1 + 0.5 + 0 + 0.125
+ (1 * 2-1
) + (0 * 2-2
) + (1 * 2-3
)
1011.1012 = (1 * 23
) + (0 * 22
) + (1 * 21
) + (1 * 20
)
PREGUNTAS DE REPASO
cuatro conteos, después en 1 durante cuatro conteos, y así sucesivamente. El cuar-
to bit (posición de los ochos) permanece en 0 durante ocho conteos, después en 1
durante ocho conteos. Si quisiéramos contar aún más, agregaríamos más lugares y
este patrón continuaría con los 1s y los 0s alternando en grupos de 2N1
. Por ejem-
plo, si utilizamos un quinto lugar binario, el quinto bit alternaría dieciséis 0s, des-
pués dieciséis 1s, y así en lo sucesivo.
Al igual que para el sistema decimal, para el sistema binario también aplica que
si se utilizan N bits o lugares, podemos realizar 2N
conteos. Por ejemplo, con dos bits
podemos realizar 22
 4 conteos (de 002 hasta 112); con cuatro bits podemos realizar
24
 16 conteos (de 00002 hasta 11112); y así sucesivamente. En la última cuenta todos
los bits serán 1s y será igual a 2N
–1 en el sistema decimal. Por ejemplo, si se utilizan
cuatro bits, el último número será 11112  24
1  1510.
¿Cuál es el mayor número que se puede representar si se utilizan ocho bits?
Solución
Ésta fue una breve introducción al sistema numérico binario y su relación con el
sistema decimal. En el siguiente capítulo invertiremos mucho más tiempo en estos
dos sistemas numéricos y otros más.
1. ¿Cuál es el equivalente decimal de 11010112?
2. ¿Cuál es el binario que sigue al 101112 en la secuencia de conteo?
3. ¿Cuál es el mayor valor decimal que se puede representar si se utilizan 12 bits?
1-4 REPRESENTACIÓN DE CANTIDADES BINARIAS
En los sistemas digitales, la información que se procesa, por lo general, está presente
en formato binario. Las cantidades binarias pueden representarse mediante cual-
quier dispositivo que sólo tenga dos estados de operación o condiciones posibles.
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Pesos Equivalente decimal
23 = 8 22 = 4 21 = 2 20 = 1
LSB
FIGURA 1-6 Secuencia
de conteo binario.
EJEMPLO 1-2
2N
-1 = 28
-1 = 25510 = 111111112.
SECCIÓN 1-4/REPRESENTACIÓN DE CANTIDADES BINARIAS 13
14 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS
Por ejemplo, un interruptor sólo tiene dos estados: abierto o cerrado. De manera
arbitraria podemos permitir que un interruptor abierto represente el 0 binario y
que un interruptor cerrado represente el 1 binario. Con esta asignación podemos
ahora representar cualquier número binario. La figura 1-7(a) muestra un número en
código binario para un dispositivo de apertura de puertas de garaje. Los pequeños
interruptores están ajustados para formar el número binario 1000101010. La puerta
se abrirá sólo si coinciden los patrones de bits en el receptor y en el transmisor .
La figura 1-7(b) muestra otro ejemplo, en el cual se almacenan números binarios
en un CD. La superficie interior (debajo de una capa de plástico transparente) se
recubre con una capa de aluminio con alta capacidad de reflexión. Se queman hoyos
a través de esta cubierta reflectora para formar “pozos” que no reflejan la luz de
la misma manera que las áreas no quemadas. Estas áreas en las que se queman los
pozos se consideran como “1s” y las áreas reflectoras son “0s”.
Existen muchos otros dispositivos que sólo tienen dos estados de operación, o
que pueden operarse en dos condiciones extremas. Entre ellos están: la bombilla de
luz (brillante u oscura), el diodo (conductor o no conductor), el electroimán (energi-
zado o desenergizado), el transistor (en corte o saturado), la fotocelda (iluminada u
oscura), el termostato (abierto o cerrado), el embrague mecánico (enganchado o des-
enganchado), y un área en un disco magnético (magnetizada o desmagnetizada).
En los sistemas digitales electrónicos la información binaria se representa
mediante voltajes (o corrientes) que están presentes en las entradas y salidas de los
diversos circuitos. Por lo general, el 0 y el 1 binarios se representan mediante dos
niveles de voltaje nominal. Por ejemplo, cero Volts (0 V) podrían representar el 0
binario y 5 V podrían representar el 1 binario. En realidad y debido a las variacio-
nes en los circuitos, el 0 y el 1 se representan mediante intervalos de voltaje. Esto se
ilustra en la figura 1-8(a), en donde cualquier voltaje entre 0 y 0.8V representa un 0
y cualquier voltaje entre 2 y 5V representa un 1. Por lo general, todas las señales de
entrada y salida se encuentran dentro de alguno de estos intervalos, excepto duran-
te las transiciones de un nivel a otro.
Ahora podemos notar otra diferencia importante entre los sistemas digitales y
los analógicos. En los sistemas digitales, el valor exacto de un voltaje no es impor-
FIGURA 1-7
(a) Opciones de
configuración binaria
para un dispositivo de
apertura de puertas
de garaje. (b) Audio
digital en un CD.
(a)
(b)
tante; por ejemplo, para las asignaciones de voltaje de la figura 1-8(a) un voltaje de
3.6 V significa lo mismo que un voltaje de 4.3 V. En los sistemas analógicos el valor
exacto de un voltaje es importante. Por ejemplo, si el voltaje analógico es proporcio-
nal a la temperatura medida por un transductor, 3.6 V representaría una tempera-
tura distinta que 4.3 V. En otras palabras, la magnitud del voltaje lleva información
importante. Dicha característica significa que, por lo general, es más difícil diseñar
circuitos analógicos precisos que circuitos digitales, debido a la manera en la que se
ven afectados los valores exactos de voltaje por las variaciones en los valores de los
componentes, la temperatura y el ruido (fluctuaciones aleatorias de voltaje).
Las señales digitales y los diagramas de tiempos
La figura 1-8(b) muestra una señal digital común y la forma en que ésta varía a tra-
vés del tiempo. En realidad es un gráfico de voltaje contra tiempo (t) y se le conoce
como diagrama de tiempos. La escala de tiempo horizontal está graduada en inter-
valos regulares que comienzan desde t0 y avanzan hasta t1, t2 y así sucesivamente.
Para el ejemplo del diagrama de tiempos que se muestra aquí, la señal empieza en
0 V (un 0 binario) en el tiempo t0 y permanece ahí hasta el tiempo t1. En t1 la señal
realiza una transición (salto) hasta 4 V (un 1 binario). En t2 regresa a 0 V. En t3 y t5
ocurren transiciones similares. Observe que la señal no cambia en t4, sino que per-
manece en 4 V desde t3 hasta t5.
Las transiciones en este diagrama de tiempos se dibujan como líneas verticales,
por lo que parecen ser instantáneas cuando en realidad no lo son. Sin embargo, en
muchas situaciones los tiempos de transición son tan cortos en comparación con
los tiempos entre transiciones que podemos mostrarlos en el diagrama como líneas
verticales. Más adelante nos encontraremos con situaciones en las que será nece-
sario mostrar las transiciones con más precisión, en una escala de tiempo a mayor
detalle.
Los diagramas de tiempos se utilizan mucho para mostrar cómo cambian las
señales digitales con el tiempo, y en especial para mostrar la relación entre dos o
más señales digitales en el mismo circuito o sistema. Al mostrar una o más señales
digitales en un osciloscopio o analizador lógico podemos comparar las señales con sus
diagramas de tiempos esperados. Ésta es una parte muy importante de los procedi-
mientos de prueba y detección de fallas que se utilizan en los sistemas digitales.
1.5 CIRCUITOS DIGITALES/CIRCUITOS LÓGICOS
Los circuitos digitales están diseñados para producir voltajes de salida que se
encuentran dentro de los intervalos de voltaje prescritos para 0 y 1, como los que
se definen en la figura 1-8. De igual forma, los circuitos digitales están diseñados
para responder en forma predecible a los voltajes de entrada que se encuentran
No
utilizado
(a)
5 V
2 V
0.8 V
0 V
(b)
Volts
4 V
0 V t
1
0
1
0
1 binario
0 binario
t0 t1 t2 t3 t4 t5
Voltajes
inválidos
FIGURA 1-8 (a) Asignaciones comunes de voltaje en un sistema digital; (b) diagrama
común de sincronización de una señal digital.
SECCIÓN 1-5/CIRCUITOS DIGITALES/CIRCUITOS LÓGICOS 15
16 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS
dentro de los intervalos definidos de 0 y 1. Esto significa que un circuito digital
responderá de igual forma a todos los voltajes de entrada que se encuentren dentro
de los valores permitidos para 0; de manera similar, no habrá distinción entre los
voltajes de entrada que se encuentren dentro del intervalo permitido para 1.
La figura 1-9 representa un circuito digital típico con una entrada vi y una sali-
da vo. La salida se muestra para dos formas de onda de señal de entrada distintas.
Observe que vo es igual para ambos casos, pues aunque las dos formas de onda de
entrada difieren en sus niveles exactos de voltaje, se encuentran en los mismos nive-
les binarios.
Circuitos lógicos
La forma en que un circuito digital responde a una entrada se conoce como lógica
del circuito. Cada tipo de circuito digital obedece un cierto conjunto de reglas lógi-
cas. Por esta razón a los circuitos digitales se les conoce también como circuitos
lógicos. A lo largo del libro utilizaremos ambos términos sin distinción. En el capítu-
lo 3 veremos con mayor claridad el significado del término “lógica” de un circuito.
Vamos a estudiar todos los tipos de circuitos lógicos que se utilizan en la actua-
lidad en los sistemas digitales. Primero enfocaremos nuestra atención sólo en la
operación lógica que realizan estos circuitos; es decir, la relación entre las entradas
y las salidas del circuito. Dejaremos pendiente cualquier discusión acerca de la ope-
ración interna de los circuitos lógicos hasta que hayamos entendido completamente
su operación lógica.
Circuitos digitales integrados
Casi todos los circuitos digitales que se utilizan en los sistemas digitales moder-
nos son circuitos integrados (CI). La amplia variedad de circuitos integrados lógicos
disponibles, ha hecho posible la construcción de sistemas digitales complejos que
son más pequeños y confiables que sus contrapartes fabricados con componentes
discretos.
Existen varias tecnologías de fabricación de circuitos integrados utilizadas para
producir circuitos integrados digitales, de las cuales las más comunes son CMOS,
TTL, NMOS y ECL. Cada una difiere en cuanto al tipo de circuito utilizado para pro-
porcionar la operación lógica deseada. Por ejemplo,TTL (lógica de transistor-transis-
tor) utiliza el transistor bipolar como el elemento principal en el circuito, mientras
que CMOS (semiconductor de metal óxido complementario) utiliza el MOSFET en
modo mejorado como el elemento principal del circuito. Aprenderemos sobre las
diversas tecnologías de CIs, sus características, ventajas y desventajas a medida que
vayamos dominando los tipos básicos de circuitos lógicos.
Circuito
digital
vi
vo
0 V
0.5 V
4 V
0 V
t
3.7 V
5 V
t
Caso I
Caso II
4 V
vi vo
vi
vo
0 V
FIGURA 1-9 Un
circuito digital responde
a un nivel binario de
entrada (0 o 1) y no a su
voltaje real.
PREGUNTAS DE REPASO 1. Verdadero o falso: El valor exacto de un voltaje de entrada es imprescindible
para un circuito digital.
2. ¿Puede un circuito digital producir el mismo voltaje de salida para distintos
valores del voltaje de entrada?
3. Un circuito digital también se conoce como circuito __________.
4. Un gráfico que muestra cómo cambian una o más señales digitales a través del
tiempo se llama ___________.
1-6 TRANSMISIÓN EN PARALELOY EN SERIE
Una de las operaciones más comunes que ocurre en cualquier sistema digital es la
transmisión de información de un lugar a otro. La información puede transmitirse
a través de una distancia tan pequeña como una fracción de un centímetro en la
misma tarjeta de circuitos, o a través de muchos kilómetros cuando el operador
de una terminal de computadora se comunica con una ubicada en otra ciudad. La
información que se transmite se encuentra en formato binario y, por lo general, se
representa como voltajes en las salidas de un circuito emisor, las cuales se conectan
a las entradas de un circuito receptor. La figura 1-10 ilustra los dos métodos básicos
para la transmisión de información digital: en paralelo y en serie.
La figura 1-10(a) demuestra el uso de la transmisión de datos en paralelo desde una
computadora hacia una impresora mediante el uso del puerto paralelo de impresora
(LPT1) de la computadora. En este escenario vamos a suponer que queremos imprimir
“H”
MSB
LSB
0
1
0
0
1
0
0
0
“i”
0
1
1
0
1
0
0
1
“H”
00010010
“i”
10010110
LSB MSB LSB MSB
FIGURA 1-10 (a) La
transmisión en paralelo
utiliza una línea de
conexión por bit, y todos
los bits se transmiten al
mismo tiempo;
(b) la transmisión en
serie utiliza sólo una
línea de señal y los
bits individuales se
transmiten en forma
consecutiva (uno a la
vez).
(a)
(b)
SECCIÓN 1-6/TRANSMISIÓN EN PARALELO Y EN SERIE 17
18 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS
PREGUNTAS DE REPASO
la palabra “Hi” en la computadora. El código binario para la “H” es 01001000 y el códi-
go binario para la “i” es 01101001. Cada carácter (la “H” y la “i”) está formado de ocho
bits. Mediante el uso de la transmisión en paralelo, los ocho bits se envían al mismo
tiempo a través de ocho alambres. La “H” se envía primero, seguida de la “i”.
La figura 1-10(b) demuestra el uso de la transmisión en serie como cuando se
utiliza un puerto COM serial en la computadora para enviar datos a un módem,
o cuando se utiliza un puerto USB (Bus Serie Universal) para enviar datos a una
impresora. Aunque los detalles acerca de los formatos de los datos y la velocidad
de la transmisión son bastante distintos entre un puerto COM y un puerto USB, los
datos en sí se envían de la misma forma: un bit a la vez, a través de un solo alambre.
Los bits se muestran en el diagrama como si en realidad se desplazaran sobre el
alambre en el orden mostrado. El bit menos significativo de la “H” se envía primero
y el bit más significativo de la “i” se envía al último. Desde luego que en la realidad
sólo puede haber un bit en el alambre en cualquier instante y, por lo general, el
tiempo se dibuja empezando por la izquierda y avanzando hacia la derecha. Esto
produce un gráfico de bits lógicos contra tiempo de la transmisión en serie, al cual se
le conoce como diagrama de tiempos. Observe que en esta presentación el bit menos
significativo se muestra a la izquierda, ya que se envió primero.
La principal diferencia entre las representaciones en paralelo y en serie es la
pérdida de velocidad a cambio de simpleza en el circuito. La transmisión de datos
binarios desde una parte del sistema digital a otra puede realizarse con más rapi-
dez si se utiliza el método en paralelo ya que todos los bits se transmiten al mismo
tiempo, mientras que en el método serie se transmite un bit a la vez. Por otro lado,
la transmisión en paralelo requiere más líneas de señal conectadas entre el emisor
y el receptor de los datos binarios que la transmisión en serie. En otras palabras,
la transmisión en paralelo es más rápida y la transmisión en serie requiere menos
líneas de señal. A lo largo del libro encontraremos muchas veces esta comparación
entre los métodos paralelo y serie para representar información binaria.
1. Describa las ventajas de la transmisión de datos binarios en paralelo y en serie.
1-7 MEMORIA
Cuando se aplica una señal de entrada a la mayoría de los dispositivos o circuitos,
la salida cambia de cierta forma en respuesta a la entrada, y cuando se elimina la
señal de entrada la salida regresa a su estado original. Estos circuitos no exhiben
la propiedad de la memoria debido a que sus salidas regresan a su estado normal.
En los circuitos digitales, ciertos tipos de dispositivos y circuitos tienen memoria.
Cuando se aplique una entrada a dicho circuito la salida cambiará su estado, pero
permanecerá en el nuevo estado aún y cuando se elimine la entrada que lo provocó.
Esta propiedad de retener su respuesta a una entrada momentánea se conoce como
memoria. La figura 1-11 ilustra las operaciones con y sin memoria.
Circuito con
memoria
Circuito sin
memoria
FIGURA 1-11
Comparación entre la
operación sin memoria
y con memoria.
Datos,
Artmética-
lógica
Entrada
Memoria
Salida
Control
Datos,
información
Unidad central de
procesamiento (CPU)
C Señales de control
D Datos o información
FIGURA 1-12 Diagrama funcional de una computadora digital.
Los circuitos y dispositivos de memoria juegan un importante papel en los siste-
mas digitales, ya que proporcionan los medios para almacenar números binarios ya
sea en forma temporal o permanente, con la habilidad de modificar la información
almacenada en determinado momento. Como veremos, los diversos elementos de
memoria incluyen los de tipo magnético y óptico, y aquellos que utilizan circuitos
de fijación electrónica (llamados latches y flip-flops).
1-8 COMPUTADORAS DIGITALES
Las técnicas digitales han encontrado aplicación en una innumerable variedad de
áreas de tecnología, pero el de las computadoras digitales automáticas es hasta aho-
ra la más notable y extensa. Aunque las computadoras digitales afectan en alguna
forma la vida de todos nosotros, es poco probable que todos sepamos con exactitud
qué es lo que hace una computadora. En términos simples, una computadora es un
sistema de hardware que realiza operaciones aritméticas, manipula datos (por lo general
en formato binario) y realiza decisiones.
En su mayoría los humanos podemos hacer todo lo que hacen las computadoras,
pero éstas lo hacen con mucha más velocidad y precisión, a pesar del hecho de que
las computadoras realizan todos sus cálculos y operaciones un paso a la vez. Por
ejemplo, un ser humano puede tomar una lista de 10 números y encontrar la suma
en una sola operación, con sólo colocar los números uno sobre otro y sumarlos colum-
na por columna. Por otro lado, una computadora sólo puede sumar dos números a la
vez, por lo que para sumar esa misma lista de números tendría que realizar nueve
pasos. Desde luego el hecho de que la computadora sólo requiera de unos cuantos
nanosegundos por cada paso es algo que compensa su aparente ineficiencia.
Una computadora es mucho más veloz y precisa que las personas pero, a diferen-
cia de nosotros, debe recibir un conjunto completo de instrucciones que le indiquen
con exactitud qué debe hacer en cada paso. Este conjunto de instrucciones, llamado
programa, lo preparan una o más personas para cada trabajo que la computadora
debe realizar. Los programas se colocan en la unidad de memoria de la computado-
ra, en formato codificado en binario, y cada instrucción tiene un código único. La
computadora toma estos códigos de instrucción de la memoria uno por uno y realiza
la operación designada.
Principales partes de una computadora
Existen varios tipos de sistemas computacionales, pero cada uno puede descompo-
nerse en las mismas unidades funcionales. Cada unidad realiza funciones específi-
cas, y todas las unidades funcionan en conjunto para llevar a cabo las instrucciones
que se dan en el programa. La figura 1-12 muestra las cinco partes funcionales prin-
SECCIÓN 1-8/COMPUTADORAS DIGITALES 19
20 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS
cipales de una computadora digital y su interacción. Las líneas sólidas con flechas
representan el flujo de datos e información. Las líneas punteadas con flechas repre-
sentan el flujo de sincronización y las señales de control.
Las principales funciones de cada unidad son:
1. Unidad de entrada. A través de esta unidad se alimenta un conjunto completo
de instrucciones y datos al sistema computacional y la unidad de memoria, para
almacenarlos hasta que se requieran. Por lo general, la información se introduce
a la unidad de entrada desde un teclado o un disco.
2. Unidad de memoria. La memoria almacena las instrucciones y los datos que
se reciben de la unidad de entrada. Almacena los resultados de las operaciones
aritméticas que se reciben de la unidad aritmética. También suministra infor-
mación a la unidad de salida.
3. Unidad de control. Esta unidad recibe instrucciones de la unidad de memo-
ria, una por una y las interpreta. Después envía las señales de sincronización y
control apropiadas a todas las demás unidades para hacer que se ejecute una
determinada instrucción.
4. Unidad aritmética-lógica. En esta unidad se realizan todos los cálculos aritméti-
cos y las decisiones lógicas, para después almacenar los resultados en la unidad
de memoria.
5. Unidad de salida. Esta unidad recibe los datos de la unidad de memoria y los
imprime, los muestra en pantalla o los presenta de cualquier otra forma al ope-
rador (o proceso, en caso de una computadora de control de procesos).
Unidad central de procesamiento (CPU)
Como se muestra en el diagrama de la figura 1-12, por lo general, las unidades de con-
trol y aritmética-lógica se consideran como una sola unidad, a la cual se le conoce como
unidad central de procesamiento (CPU). La CPU contiene todos los circuitos requeri-
dos para obtener e interpretar las instrucciones y para controlar y realizar las diversas
operaciones que requieren las instrucciones.
TIPOS DE COMPUTADORAS Todas las computadoras están compuestas por las
unidades básicas antes descritas, pero pueden diferir en cuanto al tamaño físico, la
velocidad de operación, la capacidad de memoria y la capacidad de cómputo, entre
otras características. Hoy en día los sistemas computacionales están configurados
en muchas y muy diversas formas, con muchas características comunes y también
diferencias. Tanto empresas como universidades utilizan sistemas computacionales
grandes instalados de manera permanente en varios gabinetes, para el soporte de
tecnología de información. Las computadoras personales de escritorio se utilizan
en nuestros hogares y oficinas para ejecutar programas útiles que mejoran nuestras
vidas y proporcionan comunicación con otras computadoras. En los PDA se utilizan
computadoras portátiles, y en los sistemas de videojuegos se utilizan computado-
ras especializadas. La forma más prevalente de computadoras se encuentra reali-
zando tareas de rutina dedicadas en electrodomésticos y demás sistemas a nuestro
alrededor.
En la actualidad, todos los sistemas con excepción de los más grandes, utilizan
tecnología que ha evolucionado a partir de la invención del microprocesador. Este
componente es en esencia una unidad central de procesamiento (CPU) en un circui-
to integrado, el cual puede conectarse a los demás bloques de un sistema compu-
tacional. Por lo general, a las computadoras que utilizan un microprocesador como
CPU se les denomina microcomputadoras. Las microcomputadoras de propósito
general (por ejemplo: las PC, las PDA, etc.) realizan una variedad de tareas en una
amplia gama de aplicaciones, dependiendo del software (programas) que ejecuten.
En contraste tenemos a las computadoras dedicadas que realizan actividades tales
como operar el motor de un automóvil, controlar el sistema de frenos antibloqueo u
operar el horno de microondas. El usuario no puede programar estas computadoras
ya que sólo realizan una tarea de control: se les conoce como microcontroladores.
PREGUNTAS DE REPASO
Como estos microcontroladores son una parte integral de un sistema más grande
y sirven un propósito dedicado, también se les llama controladores embebidos. Por
lo general, los microcontroladores tienen todos los elementos de una computadora
completa (CPU, memoria y puertos de entrada/salida), todo lo cual está contenido
dentro de un solo circuito integrado. Los microcontroladores embebidos se encuen-
tran en los electrodomésticos de su cocina, en el equipo de entretenimiento, en las
fotocopiadoras, en los cajeros automáticos del banco, en el equipo automatizado de
fabricación, en la instrumentación médica, entre muchas otras aplicaciones.
Como puede ver, aún las personas que no tienen una PC o que no utilizan una
en la escuela o el trabajo utilizan a diario microcomputadoras, ya que muchos dis-
positivos electrónicos, electrodomésticos, equipo de oficina y muchos otros aparatos
están fabricados con base en microcontroladores embebidos (integrados). En esta
era digital, si usted trabaja, juega o va a la escuela, no podrá escapar: con toda segu-
ridad en alguna parte estará utilizando una microcomputadora.
1. Explique la diferencia ente un circuito digital con memoria y uno sin memoria.
2. Nombre las cinco unidades funcionales principales de una computadora.
3. ¿Cuáles son las dos unidades que conforman la CPU?
4. Un chip de CI que contiene un CPU se llama __________.
RESUMEN
1. Las dos formas básicas de representar el valor numérico de las cantidades físi-
cas son la analógica (continua) y la digital (discreta).
2. La mayoría de las cantidades en el mundo real son analógicas, pero, por lo gene-
ral, las técnicas digitales son superiores a las técnicas analógicas, y se pronosti-
ca que la mayor parte de los avances estarán en el ámbito digital.
3. El sistema numérico binario (0 y 1) es el sistema básico que se utiliza en la tec-
nología digital.
4. Los circuitos digitales o lógicos operan con voltajes que se encuentran dentro de
intervalos prescritos, los cuales representan ya sea un 0 o un 1 binario.
5. Las dos formas básicas de transferir información digital son: en paralelo (todos
los bits simultáneamente) y en serie (un bit a la vez).
6. Las partes principales de todas las computadoras son las unidades: de entrada,
de control, de memoria, de aritmética-lógica y de salida.
7. La CPU es la combinación de la unidad aritmética-lógica y la unidad de con-
trol.
8. Por lo general, una microcomputadora tiene una CPU que se encuentra en un
solo chip, y se le llama microprocesador.
9. Un microcontrolador es una microcomputadora diseñada de manera especial
para aplicaciones de control dedicadas (no de propósito general).
TÉRMINOS IMPORTANTES*
bit
circuitos digitales/circuitos
lógicos
computadoras digitales
microcomputadoras
microcontroladores
microprocesador
programa
sistema digital
transmisión en paralelo
transmisión en serie
unidad aritmética-lógica
* Encontrará estos términos en negritas a lo largo del capítulo; además están deÀnidos en el Glosario al
Ànal del libro. Esto aplica en todos los capítulos.
TÉRMINOS IMPORTANTES 21
22 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS
PROBLEMAS
SECCIÓN 1-2
1-1.*
¿Cuáles de las siguientes cantidades son analógicas y cuáles digitales?
(a) El número de átomos en una muestra de material.
(b) La altitud de una aeronave.
(c) La presión en la llanta de una bicicleta.
(d) La corriente que pasa a través de una bocina.
(e) La configuración del temporizador en un horno de microondas.
1-2. ¿Cuáles de las siguientes cantidades son analógicas y cuáles digitales?
(a) La anchura de una pieza de madera.
(b) La cantidad de tiempo transcurrido antes de que se apague el timbre.
(c) La hora del día que se muestra en un reloj de cuarzo.
(d) La altitud por encima del nivel del mar, si se mide desde una escalera.
(e) La altitud por encima del nivel del mar, si se mide desde una rampa.
SECCIÓN 1-3
1-3.* Convierta los siguientes números binarios a sus valores decimales equiva-
lentes.
(a) 110012
(b) 1001.10012
(c) 10011011001.101102
1-4. Convierta los siguientes números binarios a decimal.
(a)    100112
(b)    1100.0101
(c)    10011100100.10010
1-5.* Muestre la secuencia de conteo binario de 000 a 111, usando tres bits.
1-6. Muestre la secuencia de conteo binario de 000000 a 111111, usando seis
bits.
1-7.* ¿Cuál es el máximo número que podemos contar si utilizamos 10 bits?
1-8. ¿Cuál es el máximo número que podemos contar si utilizamos 14 bits?
     1-9.* ¿Cuántos bits se necesitan para contar hasta 511?
1-10. ¿Cuántos bits se necesitan para contar hasta 63?
SECCIÓN 1-4
1-11.* Dibuje el diagrama de tiempos para una señal digital que alterne en forma
continua entre 0.2 V (0 binario) durante 2 ms y 4.4 V (1 binario) durante
4 ms.
1-12. Dibuje el diagrama de tiempos para una señal que alterne entre 0.3 V (0
binario) durante 5 ms y 3.9 V (1 binario) durante 2 ms.
convertidor analógico-
digital (ADC)
convertidor digital-
analógico (DAC)
diagrama de tiempos
memoria
representación
analógica
representación digital
sistema analógico
sistema binario
sistema decimal
unidad central de
procesamiento (CPU)
unidad de control
unidad de entrada
unidad de memoria
unidad de salida
* Encontrará las respuestas a los problemas marcados con un asterisco al Ànal del libro.
SECCIÓN 1-6
1-13.* Suponga que se van a transmitir en binario los valores enteros decimales
desde el 0 hasta el 15.
(a) ¿Cuántas líneas se necesitan si se utiliza la representación en paralelo?
(b) ¿Cuántas líneas se necesitan si se utiliza la representación en serie?
SECCIONES 1-7 Y 1-8
1-14. ¿Cuál es la diferencia entre un microprocesador y una microcomputadora?
1-15. ¿Cuál es la diferencia entre un microcontrolador y una microcomputadora?
RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES
SECCIÓN 1-1
1. Las cantidades analógicas pueden tomar cualquier valor sobre un intervalo continuo; las
cantidades digitales sólo pueden tomar valores discretos.
SECCIÓN 1-2
1. Es más fácil de diseñar; es más fácil de almacenar información; tiene mayor precisión;
capacidad de programación; se ve menos afectado por el ruido; tiene un mayor grado de
integración.
2. Las cantidades físicas del mundo real son analógicas. El procesamiento digital requiere
tiempo.
SECCIÓN 1-3
1. 10710 2. 110002 3. 409510
SECCIÓN 1-5
1. Falso. 2. Sí, siempre y cuando los dos voltajes de entrada estén dentro del mismo
intervalo de niveles lógicos. 3. Lógico. 4. Diagrama de tiempos.
SECCIÓN 1-6
1. La transmisión en paralelo es más rápida; la transmisión en serie sólo requiere una línea
de señal.
SECCIÓN 1-8
1. Si hay un cambio instantáneo en la señal de entrada, el circuito que tiene memoria
cambiará su salida y permanecerá con ese cambio. 2. Entrada, salida, memoria,
aritmética-lógica, de control. 3. Unidad de control y unidad aritmética-lógica.
4. Microprocesador.
RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES 23
2-1 Conversiones de binario a
decimal
2-2 Conversiones de decimal a
binario
2-3 Sistema numérico
hexadecimal
2-4 Código BCD
2-5 Código Gray
■ CONTENIDO
S ISTEMAS Y CÓDIGOS
N UMÉRICOS
C A P Í T U L O 2
2-6 Integración de los sistemas
numéricos
2-7 Byte, nibble y palabra
2-8 Códigos alfanuméricos
2-9 Método de paridad para la
detección de errores
2-10 Aplicaciones
■ OBJETIVOS
Al terminar este capítulo, usted podrá:
■ Convertir un número de un sistema numérico (decimal, binario, hexadecimal)
a su equivalente en uno de los otros sistemas numéricos.
■ Citar las ventajas del sistema numérico hexadecimal.
■ Contar en hexadecimal.
■ Representar números decimales mediante el código BCD; y citar las ventajas
y desventajas en cuanto al uso del código BCD.
■ Comprender la diferencia entre BCD y binario directo.
■ Entender el propósito de los códigos alfanuméricos tales como el código
ASCII.
■ Explicar el método de paridad para la detección de errores.
■ Determinar el bit de paridad que se adjuntará a una cadena de datos
digitales.
■ INTRODUCCIÓN
El sistema numérico binario es el más importante en los sistemas digitales,
aunque también hay otros que son importantes. El sistema decimal es importante
ya que se utiliza de manera universal para representar cantidades fuera de
un sistema digital. Esto significa que habrá situaciones en las que los valores
decimales deban convertirse en valores binarios antes de introducirse en el
sistema digital. Por ejemplo, cuando oprime un número decimal en su calculadora
de bolsillo (o computadora), los circuitos en el interior de la máquina convierten
el número decimal en un valor binario.
De igual forma, habrá situaciones en las que los valores binarios en las salidas
de un sistema digital deberán convertirse en valores decimales para presentarlos
al mundo exterior. Por ejemplo, su calculadora (o computadora) utiliza números
binarios para calcular la solución a un problema y después convierte los resultados
en dígitos decimales antes de mostrarlos en pantalla.
Como verá más adelante, no es fácil ver un número binario y convertirlo
en su valor decimal equivalente. Resulta muy tedioso tener que introducir una
larga secuencia de unos (1s) y ceros (0s) en un teclado numérico, o escribir
números binarios extensos en papel. En especial es difícil tratar de comunicar una
cantidad binaria cuando se habla con otra persona. El sistema numérico
hexadecimal (base 16) se ha convertido la forma estándar de comunicar valores
numéricos en los sistemas digitales. La gran ventaja es que los números
hexadecimales pueden convertirse con facilidad a binario y viceversa.
Se han ideado otros métodos para representar cantidades decimales con
dígitos codificados en binario, los cuales no son en sí verdaderos sistemas
numéricos, pero ofrecen la facilidad de conversión entre el código binario y el
sistema numérico decimal. A esto se le conoce como decimal codificado en binario.
Es muy importante que usted pueda interpretar los valores en cualquier sistema
y realizar conversiones entre cualquiera de estas representaciones numéricas, ya
25
26 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS
PREGUNTAS DE REPASO
que las cantidades y los patrones de bits podrían estar representadas mediante
cualquiera de estos métodos en cualquier sistema dado y en todo el material
escrito de soporte para esos sistemas. También cubriremos otros códigos que
utilizan 1s y 0s para representar cosas tales como caracteres alfanuméricos, ya que
son muy comunes en los sistemas digitales.
2-1 CONVERSIONES DE BINARIO A DECIMAL
Como se explicó en el capítulo 1, el sistema numérico binario es un sistema posicio-
nal, en el cual cada dígito binario (bit) lleva un cierto peso basado en su posición
relativa al LSB. Cualquier número binario puede convertirse en su equivalente deci-
mal con sólo sumar todos los pesos de las diversas posiciones en el número binario
que contengan 1. Para ilustrar esto, vamos a convertir el número 110112 a su equi-
valente decimal.
Hagamos ahora otro ejemplo con un mayor número de bits:
Observe que el procedimiento es encontrar los pesos (es decir, potencias de 2)
para cada posición de bit que contenga un 1, y después hay que sumarlos. Observe
también que el MSB tiene un peso de 27
, aun y cuando es el octavo bit; esto se debe
a que el LSB es el primer bit y tiene un peso de 20
.
1. Convierta el número 1000110110112 en su equivalente decimal.
2. ¿Cuál es el peso del MSB de un número de 16 bits?
2-2 CONVERSIONES DE DECIMAL A BINARIO
Existen dos métodos para convertir un número entero decimal en su representación
equivalente en el sistema binario. El primer método es el proceso inverso al que
se describió en la sección 2-1. El número decimal tan sólo se expresa como una suma
de potencias de 2, y después se escriben 1s y 0s en las posiciones de bit apropiadas.
Para ilustrar lo anterior veamos lo siguiente:
Observe que se coloca un 0 en las posiciones 21
y 24
, ya que todas las posiciones
deben tomarse en cuenta.Veamos otro ejemplo:
1 1 0 1 12
24
⫹ 23
⫹ 0 ⫹ 21
⫹ 20
⫽ 16 ⫹ 8 ⫹ 2 ⫹ 1
⫽ 2710
1 0 1 1 0 1 0 12 
27
 0  25
 24
 0  22
 0  20
 18110
4510  32  8  4  1  25
 0  23
 22
 0  20
 1 0 1 1 0 12
7610  64  8  4  26
 0  0  23
 22
 0  0
 1 0 0 1 1 0 02.
División repetida
El segundo método para convertir enteros decimales a binario es el que utiliza la
división entre 2. Para la conversión, que se muestra a continuación para el número
2510, se requiere dividir en forma repetida el número decimal entre 2 y anotar el
residuo después de cada división hasta que se obtenga un cociente de 0. El resul-
tado binario se obtiene al escribir el primer residuo como el LSB y el último como
el MSB. Este proceso, que se ilustra en el diagrama de flujo de la figura 2-1, puede
usarse también para convertir de decimal a cualquier otro sistema numérico, como
veremos más adelante.
SECCIÓN 2-2/CONVERSIONES DE DECIMAL A BINARIO 27

2
2
5
   residuo de 1
LSB
 6  residuo de 0

6
2
  3  residuo de 0

3
2
  1  residuo de 1

1
2
  0  residuo de 1
MSB
2510  1 1 0 0 12
12

2
12
↑
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
↑
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
↑
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
↑
⏐
⏐
⏐
⏐
⏐
⏐
⏐
↑
⏐
⏐
⏐
⏐
⎯⎯⎯⎯
⎯
⎯
⎯
↓
⏐
⎯⎯⎯⎯
⎯
↓
⏐
⎯⎯⎯⎯
⎯
↓
⏐
⎯⎯⎯⎯
⎯
↓
Reunir los residuos (R)
para formar el número
binario deseado, en donde
el primer R es el LSB y el
último R es el MSB
¿Es
Q  0?
Registrar cociente
(Q) y residuo (R)
Dividir entre
2
INICIO
FIN
NO
SÍ
FIGURA 2-1 Diagrama
de flujo para el método de
división repetida de la
conversión de enteros
decimales a binarios. Puede
usarse el mismo proceso para
convertir un entero decimal
a cualquier otro sistema
numérico.
28 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS
Convierta el número 3710 en binario. Trate de resolverlo por su cuenta antes de ver
la solución.
Solución
Por lo tanto, 3710  1001012.
Alcance de conteo
Recuerde que si utilizamos N bits, podemos contar hasta 2N
números decimales dis-
tintos que van desde 0 hasta 2N
 1. Por ejemplo, para N  4 podemos contar desde
00002 hasta 11112, 010 hasta 1510, para un total de 16 números distintos. Aquí, el
valor decimal más grande es 24
 1  15, y hay 24
números distintos.
Entonces, en general, podemos decir que:
Si utilizamos N bits, podemos representar números decimales que van desde 0
hasta 2N
 1, un total de 2N
números distintos.
(a) ¿Cuál es el intervalo de valores decimales que pueden representarse en ocho
bits?
(b) ¿Cuántos bits se necesitan para representar valores decimales que van desde 0
hasta 12,500?
Solución
(a) Aquí tenemos que N  8. Por ende, podemos representar números decimales
desde 0 hasta 28
 1  255. Para verificar lo anterior podemos comprobar si
111111112 se convierte en 25510.
SUGERENCIA PARA EL USO DE CALCULADORA:
Si utiliza una calculadora para realizar las divisiones entre 2, podrá saber si el re-
siduo es 0 o 1 y si el resultado tiene o no una parte fraccionaria. Por ejemplo, 25/2
produciría 12.5. Como hay una parte fraccionaria (.5), el residuo es un 1. Si no hu-
biera parte fraccionaria, como en 12/2  6, entonces el residuo sería 0. El siguiente
ejemplo demuestra esto.
EJEMPLO 2-1

3
2
7
  5 ⎯→ residuo de 1 (LSB)
 9.0 ⎯→ 0

9
2
  4.5 ⎯→ 1

4
2
  2.0 ⎯→ 0

2
2
  1.0 ⎯→ 0

1
2
  0.5 ⎯→ 1 (MSB)
18

2
18.
↑
EJEMPLO 2-2
PREGUNTAS DE REPASO
(b) Con 13 bits podemos contar desde el 0 decimal hasta 213
– 1  8191. Con 14 bits
podemos contar desde 0 hasta 214
– 1  16,383. Es evidente que no son suficien-
tes 13 bits, pero 14 bits nos llevarán más allá de 12,500. Por ende, el número de
bits requerido es 14.
1. Convierta 8310 en binario usando ambos métodos.
2. Convierta 72910 en binario usando ambos métodos. Revise su respuesta y con-
vierta el resultado de vuelta en decimal.
3. ¿Cuántos bits se requieren para contar hasta 1 millón decimal?
2-3 SISTEMA NUMÉRICO HEXADECIMAL
El sistema numérico hexadecimal utiliza la base 16. En consecuencia, tiene 16 sím-
bolos posibles para los dígitos. Utiliza los dígitos del 0 al 9 más las letras A, B, C, D,
E y F como símbolos para los 16 dígitos. Las posiciones de los dígitos se ponderan
como potencias de 16, como se muestra a continuación, en lugar de ponderarse como
potencias de 10, como en el sistema decimal.
La tabla 2-1 muestra las relaciones entre hexadecimal, decimal y binario. Observe
que cada dígito hexadecimal representa un grupo de cuatro dígitos binarios. Es
importante recordar que los dígitos hex (abreviación de “hexadecimal”) de la A a la F
son equivalentes a los valores decimales del 10 al 15.
Conversión de hexadecimal a decimal
Es posible convertir un número hexadecimal a su equivalente decimal gracias a que
la posición de cada dígito hexadecimal tiene un peso equivalente a una potencia
164
163
162
161
160
161
162
163
164
Punto hexadecimal
TABLA 2-1
Hexadecimal Decimal Binario
0 0 0000
1 1 0001
2 2 0010
3 3 0011
4 4 0100
5 5 0101
6 6 0110
7 7 0111
8 8 1000
9 9 1001
A 10 1010
B 11 1011
C 12 1100
D 13 1101
E 14 1110
F 15 1111
SECCIÓN 2-3/SISTEMA NUMÉRICO HEXADECIMAL 29
30 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS
de 16. El LSD tiene un peso de 160
 1; la siguiente posición de dígito tiene un
peso de 161
 16; la siguiente tiene un peso de 162
 256; y así sucesivamente. En el
siguiente ejemplo demostraremos el proceso de conversión.
Observe que en el segundo ejemplo, el valor 10 se sustituyó por A y el valor 15 por F
en la conversión a decimal.
Para practicar, verifique que 1BC216 sea igual a 710610.
Conversión de decimal a hexadecimal
Recuerde que para realizar la conversión de decimal a binario utilizamos la divi-
sión repetida entre 2. De igual forma, la conversión de decimal a hexadecimal
puede realizarse mediante el uso de la división repetida entre 16 (figura 2-1). El
siguiente ejemplo contiene dos casos de esta conversión.
(a) Convierta 42310 a hexadecimal.
Solución
(b) Convierta 21410 a hexadecimal.
Solución
SUGERENCIA PARA EL USO DE CALCULADORA:
Puede usar la función yx
de la calculadora para evaluar las potencias de 16.
2AF16  2  162
 10  161
 15  160
 512  160  15
 68710
35616  3  162
 5  161
 6  160
 768  80  6
 85410
EJEMPLO 2-3

4
1
2
6
3
   residuo de 7
 1  residuo de 10

1
1
6
  0  residuo de 1
42310  1A716
26

16
26
↑
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
⏐
↑
⏐
⏐
⏐
⏐
⏐
⏐
↑
⏐
↑
↑

2
1
1
6
4
  13  residuo de 6

1
1
3
6
  0  residuo de 13
21410  D616
↑
⏐
⏐
⏐
⏐
⏐
↑
⏐
⏐
↑
Observe de nuevo que los residuos de los procesos de división forman los dígitos
del número hexadecimal. Observe también que cualquier residuo mayor de 9 se
representa por las letras de la A a la F.
Conversión de hexadecimal a binario
El sistema numérico hexadecimal se utiliza principalmente como método “abrevia-
do” para representar números binarios. En realidad es muy sencillo convertir un
número hexadecimal en binario. Cada dígito hexadecimal se convierte en su equiva-
lente binario de cuatro bits (tabla 2-1). Esto se ilustra a continuación para el número
9F216.
Para practicar, verifique que BA616  1011101001102.
Conversión de binario a hexadecimal
Esta conversión es sólo el inverso del proceso antes mencionado. El número binario
se separa en grupos de cuatro bits, y cada grupo se convierte en su dígito hexadeci-
mal equivalente. Se agregan ceros (los que se muestran ensombrecidos) según sea
necesario para completar un grupo de cuatro bits en el MSD.
Para hacer las conversiones entre hexadecimal y binario es necesario conocer
los números binarios de cuatro bits (del 0000 hasta el 1111) y sus dígitos hexadeci-
males correspondientes. Una vez que memorize, la conversión podrá realizarse con
rapidez sin necesidad de hacer cálculos. Esto explica por qué el sistema hexadeci-
mal es tan útil para representar números binarios extensos.
Para practicar, verifique que 1010111112  15F16.
Conteo en hexadecimal
Al contar en hexadecimal, puede incrementarse (en 1) la posición de cada dígito, des-
de el 0 hasta la F. Una vez que la posición de un dígito llega al valor F, se restablece
SUGERENCIA PARA EL USO DE CALCULADORA:
Si utiliza una calculadora para realizar las divisiones en el proceso de conversión,
los resultados incluirán una fracción decimal en vez de un residuo. Para obtener el
residuo multiplique la fracción por 16. En el ejemplo 2-3(b) la calculadora habría
producido lo siguiente:
El residuo se convierte en (0.375)  16  6.
214
16
= 13.375
9F216  9 F 2
↓ ↓ ↓
 1 0 0 1 1 1 1 1 0 0 1 0
 1001111100102
1 1 1 0 1 0 0 1 1 02  1 1 1 0 1 0 0 1 1 0
3 A 6
 3A616
0 0
⎫
⎪
⎬
⎪
⎭
⎭
⎭
⎫
⎪
⎬
⎪
⎫
⎪
⎬
⎪
SECCIÓN 2-3/SISTEMA NUMÉRICO HEXADECIMAL 31
32 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS
a 0 y se incrementa la posición del siguiente dígito. En las siguientes secuencias de
conteo hexadecimal se ilustra esto:
(a) 38, 39, 3A, 3B, 3C, 3D, 3F, 40, 41, 42
(b) 6F8, 6F9, 6FA, 6FB, 6FC, 6FD, 6FE, 6FF, 700
Observe que cuando hay un 9 en la posición de un dígito, se convierte en A cuando
se incrementa.
Con N posiciones de dígitos hexadecimales podemos contar desde el 0 decimal
hasta 16N
 1, para un total de 16N
valores distintos. Por ejemplo, con tres dígitos
hexadecimales podemos contar desde 00016 hasta FFF16, 010 hasta 409510, para un
total de 4096  163
valores distintos.
Utilidad de los números hexadecimales
Los números hexadecimales se utilizan a menudo en un sistema digital como una
manera “abreviada” de representar cadenas de bits. Al trabajar con las computado-
ras, es muy común usar cadenas de hasta 64 bits. Estas cadenas binarias no siempre
representan un valor numérico, sino que, como veremos más adelante, pueden indi-
car algún tipo de código que conlleve información no numérica. Al trabajar con un
número extenso de bits es más conveniente y menos errático escribir los números
binarios en hexadecimal, ya que, como hemos visto, es bastante sencillo realizar
conversiones entre hexadecimal y binario, o viceversa. Para ilustrar la ventaja de la
representación hexadecimal de una cadena binaria, suponga que tiene en su poder
una impresión del contenido de 50 ubicaciones de memoria, cada una de las cua-
les es un número de 16 bits y usted tiene que revisarlas comparándolas con una
lista. ¿Qué preferiría revisar, 50 números como éste: 0110111001100111, o 50 núme-
ros como éste: 6E67? ¿Y con cuál sería más probable equivocarse? No obstante, es
importante tener en cuenta que todos los circuitos digitales trabajan en binario. Los
números hexadecimales sólo se utilizan como una conveniencia para los humanos
involucrados. Sería conveniente que memorizara el patrón binario de 4 bits para
cada dígito hexadecimal. Sólo entonces se dará cuenta de la utilidad de esta herra-
mienta en los sistemas digitales.
Convierta el número 378 decimal en un número binario de 16 bits, primero convir-
tiendo el número en hexadecimal.
Solución
Por lo tanto, 37810  17A16. Este valor hexadecimal puede convertirse con facilidad
en el número binario 000101111010. Por último, podemos expresar el número 37810
como un número de 16 bits si le agregamos cuatro 0s a la izquierda:
37810  0000 0001 0111 10102
EJEMPLO 2-4

3
1
7
6
8
  23  residuo de 10  A

2
1
3
6
  1  residuo de 7

1
1
6
  0  residuo de 1
↑
↑
16
10
PREGUNTAS DE REPASO
Convierta el número B2F16 en decimal.
Solución
Resumen de las conversiones
En estos momentos es probable que su cabeza esté dando vueltas a medida que
trata de mantener el sentido con todas estas distintas conversiones de un sistema
numérico a otro. Tal vez se haya dado cuenta que muchas de estas conversiones
pueden realizarse en forma automática en su calculadora con sólo oprimir una tecla,
pero es importante que las domine para que pueda comprender el proceso. Además,
¿qué pasaría si su calculadora se quedara sin energía en un momento crucial y no
tuviera un reemplazo a la mano? El siguiente resumen le ayudará, pero nada se
compara con la práctica continua.
1. Al convertir de binario (o hexadecimal) a decimal, utilice el método de tomar la
suma ponderada de la posición de cada bit.
2. Al convertir de decimal a binario (o hexadecimal), utilice el método de la divi-
sión repetida entre 2 (o 16) y recolectar los residuos (figura 2-1).
3. Al convertir de binario a hexadecimal, divida el número en grupos de cuatro
bits y convierta cada grupo en el dígito hexadecimal correcto.
4. Al convertir de hexadecimal a binario, convierta cada dígito en su equivalente
de cuatro bits.
1. Convierta el número 24CE16 en decimal.
2. Convierta el número 311710 en hexadecimal y después de hexadecimal a binario.
3. Convierta el número 10010111101101012 en hexadecimal.
4. Escriba los siguientes cuatro números en esta secuencia de conteo hexadecimal:
E9A, E9B, E9C, E9D, _____, _____, _____, _____.
5. Convierta el número 352716 en binario.
6. ¿Qué rango de valores decimales puede representarse mediante un número hexa-
decimal de cuatro dígitos?
2-4 CÓDIGO BCD
Cuando se representan números, letras o palabras mediante un grupo especial de
símbolos, decimos que están siendo codificados, y al grupo de símbolos se le llama
código.Tal vez uno de los códigos más conocidos sea el Morse, en el cual una seria de
puntos y rayas representan las letras del alfabeto.
Hemos visto que cualquier número decimal puede representarse mediante un
número binario equivalente. El grupo de 1s y 0s en el número binario puede consi-
derarse como un código que representa el número decimal. Cuando un número deci-
mal se representa por su número binario equivalente, le llamamos código binario
directo.
EJEMPLO 2-5
= 286310
= 11 * 256 + 2 * 16 + 15
B2F16 = B * 162
+ 2 * 161
+ F * 160
SECCIÓN 2-4/CÓDIGO BCD 33
34 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS
Todos los sistemas digitales utilizan cierta forma de números binarios para su
operación interna, pero el mundo externo es decimal por naturaleza. Esto significa
que con frecuencia se realizan conversiones entre los sistemas decimal y binario.
Hemos visto que las conversiones entre decimal y binario pueden volverse extensas
y complicadas cuando se manejan números grandes. Por esta razón, en ciertas situa-
ciones se utiliza un medio para codificar números decimales que combina algunas
características tanto del sistema decimal como del sistema binario.
Código decimal codificado en binario
Si cada dígito de un número decimal se representa mediante su equivalente binario,
el resultado es un código que se conoce como decimal codificado en binario (que en lo
sucesivo abreviaremos como BCD). Como un dígito decimal puede llegar hasta el 9, se
requieren cuatro bits para codificar cada dígito (el código binario para el 9 es 1001).
Para ilustrar el código BCD, considere como ejemplo el número decimal 874.
Cada dígito se cambia a su equivalente binario de la siguiente manera:
Como segundo ejemplo, vamos a cambiar el número 943 a su representación en
código BCD:
Una vez más, cada dígito decimal se cambia a su equivalente binario directo.
Observe que siempre se utilizan cuatro bits para cada dígito.
Así, el código BCD representa cada dígito del número decimal mediante un
número binario de cuatro bits. Es evidente que sólo se utilizan los números binarios
de cuatro bits del 0000 al 1001. El código BCD no utiliza los números 1010, 1011,
1100, 1101, 1110 y 1111. En otras palabras, sólo se utilizan 10 de los 16 posibles
grupos de código binario de cuatro bits. Si llega a aparecer uno de los números “pro-
hibidos” de cuatro bits en una máquina que utilice el código BCD, por lo general, es
una indicación de que se produjo un error.
Convierta el número 0110100000111001 (BCD) en su equivalente decimal.
Solución
Divida el número BCD en grupos de cuatro bits y convierta cada grupo en decimal.
Convierta el número BCD 011111000001 en su equivalente decimal.
Solución
8 7 4 (decimal)
↓ ↓ ↓
1000 0111 0100 (BCD)
9 4 3 (decimal)
↓ ↓ ↓
1001 0100 0011 (BCD)
0110 1000 0011 1001
6 8 3 9
⎫
⎫
⎫
⎫
⎫
⎬
⎫
⎬
⎫
⎬
⎫
⎬
0111 1100 0001
7 ↓ 1
El grupo con el código prohibido
indica un error en el número BCD
⎫
⎬
⎫
⎫
⎫
⎬
EJEMPLO 2-6
EJEMPLO 2-7
PREGUNTAS DE REPASO
Comparación entre BCD y binario
Es importante entender que BCD no es otro sistema numérico como el binario, el
decimal o el hexadecimal. De hecho, se utiliza el sistema decimal pero cada dígito
está codificado en su equivalente binario. También es importante comprender que
un número BCD no es lo mismo que un número binario directo. Un número binario
directo toma el número decimal completo y lo representa en binario; el código BCD
convierte cada dígito decimal en binario de manera individual. Para ilustrar esto,
tome el número 137 y compare sus códigos binario directo y BCD:
13710  100010012 (binario)
13710  0001 0011 0111 (BCD)
Para representar el 137, el código BCD requiere 12 bits, mientras que el código bina-
rio directo sólo requiere de ocho bits. El código BCD requiere más bits que el binario
directo para representar números decimales de más de un dígito, ya que no utiliza
todos los grupos de cuatro bits posibles, como se indicó antes, y es, por lo tanto, algo
ineficiente.
La principal ventaja del código BCD es la relativa facilidad de convertir BCD en
decimal y viceversa. Sólo necesitan recordarse los grupos de código de cuatro bits
para los dígitos decimales del 0 al 9. Esta facilidad de conversión es muy importante
desde el punto de vista del hardware, ya que en un sistema digital son los circuitos
lógicos los que realizan las conversiones hacia y desde decimal.
1. Represente el valor decimal 178 mediante su equivalente binario directo. Luego
codifique el mismo número decimal en BCD.
2. ¿Cuántos bits se requieren para representar un número decimal de ocho dígitos
en BCD?
3. ¿Cuál es la ventaja de codificar un número decimal en BCD, en lugar de hacerlo
en binario directo? ¿Cuál es la desventaja?
2-5 CÓDIGO GRAY
Los sistemas digitales operan a velocidades muy elevadas y responden a los cambios
que se producen en las entradas digitales. Al igual que en la vida real, cuando varias
condiciones de entrada están cambiando al mismo tiempo la situación puede malin-
terpretarse, con lo cual se puede llegar a producir una reacción errónea. Cuando se
ven los bits en una secuencia de conteo binario, a menudo hay varios bits que deben
cambiar estados al mismo tiempo. Por ejemplo, considere cuando el número binario
de tres bits correspondiente al 3 decimal cambia a 4: los tres bits deben cambiar de
estado.
Para reducir la probabilidad de que un circuito digital malinterprete una entra-
da cambiante, se desarrolló el código Gray como una manera de representar una
secuencia de números. El aspecto único del código Gray es que, entre dos números
sucesivos en la secuencia sólo un bit cambia. La tabla 2-2 muestra la traducción
entre el valor del código binario de tres bits y el código Gray. Para convertir de bina-
rio a Gray sólo hay que empezar en el bit más significativo y usarlo como el MSB
de Gray, como muestra la figura 2-2(a). Después se compara el MSB binario con el
siguiente bit binario (B1). Si son iguales, entonces G1  0; si son distintos, entonces
G1  1. Para encontrar G0 se compara B1 con B0.
SECCIÓN 2-5/CÓDIGO GRAY 35
36 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS
La figura 2-2(b) muestra la conversión del código Gray a binario. Observe que el
MSB en Gray siempre es el mismo que el MSB en binario. El siguiente bit binario se
encuentra comparando el bit binario a la izquierda con el bit correspondiente en código
Gray. Los bits similares producen un 0 y los bits distintos un 1. La aplicación más
común del código Gray es en los codificadores de posición de eje, como muestra la
figura 2-3. Estos dispositivos producen un valor binario que representa la posición de
un eje mecánico giratorio. Un codificador de eje práctico utiliza mucho más de tres
bits y divide la rotación en mucho más de ocho segmentos, por lo que puede detectar
incrementos de rotación mucho más pequeños.
TABLA 2-2
Equivalencia entre el
código binario de tres
bits y el código Gray.
B2 B1 B0 G2 G1 G0
0 0 0 0 0 0
0 0 1 0 0 1
0 1 0 0 1 1
0 1 1 0 1 0
1 0 0 1 1 0
1 0 1 1 1 1
1 1 0 1 0 1
1 1 1 1 0 0
B2 B1 B0
G2 G1
Gray
(a)
Binario
MSB LSB
G0
¿Diferente? ¿Diferente?
G2 G1 G0
B2 B1
Binario
(b)
Gray
MSB LSB
B0
¿Diferente? ¿Diferente?
FIGURA 2-2 Conversión de (a) binario a Gray y de (b) Gray a binario.
G2
G1
G0
FIGURA 2-3 Un
codificador de eje de
ocho posiciones y tres
bits.
PREGUNTAS DE REPASO 1. Convierta el número 0101 (binario) en su equivalente en código de Gray.
2. Convierta el número 0101 (código de Gray) en su número binario equivalente.
2-6 INTEGRACIÓN DE LOS SISTEMAS NUMÉRICOS
La tabla 2-3 muestra la representación de los números decimales del 1 al 15 en los
sistemas numéricos binario y hexadecimal, y también en los códigos BCD y Gray.
Examine esta tabla con cuidado y asegúrese de comprender de dónde proviene.
Observe en especial cómo la representación en BCD siempre usa cuatro bits para
cada dígito decimal.
2-7 BYTE, NIBBLE Y PALABRA
Bytes
La mayoría de las microcomputadoras maneja y almacena datos binarios e infor-
mación en grupos de ocho bits, por lo que una cadena de ocho bits tiene un nombre
especial: byte. Un byte consiste de ocho bits y puede representar cualquier tipo de
datos o de información. Los siguientes ejemplos ilustrarán este punto.
¿Cuántos bytes hay en una cadena de 32 bits?
Solución
32/8  4; por lo tanto, hay cuatro bytes en una cadena de 32 bits.
TABLA 2-3
Decimal Binario Hexadecimal BCD GRAY
0 0 0 0000 0000
1 1 1 0001 0001
2 10 2 0010 0011
3 11 3 0011 0010
4 100 4 0100 0110
5 101 5 0101 0111
6 110 6 0110 0101
7 111 7 0111 0100
8 1000 8 1000 1100
9 1001 9 1001 1101
10 1010 A 0001 0000 1111
11 1011 B 0001 0001 1110
12 1100 C 0001 0010 1010
13 1101 D 0001 0011 1011
14 1110 E 0001 0100 1001
15 1111 F 0001 0101 1000
EJEMPLO 2-8
SECCIÓN 2-7/BYTE, NIBBLE Y PALABRA 37
38 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS
¿Cuál es el valor decimal más grande que puede representarse en binario si se uti-
lizan dos bytes?
Solución
Dos bytes son 16 bits, por lo que el valor binario más grande será equivalente al
número decimal 216
 1  65,535.
¿Cuántos bytes se necesitan para representar el valor decimal 846,569 en BCD?
Solución
Cada dígito decimal se convierte en un código BCD de cuatro bits. Por ende, un
número decimal de seis dígitos requiere 24 bits. Esos 24 bits corresponden a tres
bytes. El diagrama para este caso se muestra a continuación:
Nibbles
A menudo los números binarios se descomponen en grupos de cuatro bits, como
hemos visto con los códigos BCD y las conversiones a números hexadecimales. En los
primeros días de los sistemas digitales surgió un término para describir un grupo de
cuatro bits. Como abarca la mitad de un byte, se le denominó nibble. Los siguientes
ejemplos ilustran el uso de este término.
¿Cuántos nibbles hay en un byte?
Solución
2
¿Cuál es el valor hexadecimal del nibble menos significativo del número binario
1001 0101?
Solución
1001 0101
El nibble menos significativo es 0101  5.
Palabras
Los términos bit, nibble y byte representan un número fijo de dígitos binarios.
A medida que los sistemas han ido creciendo a través de los años, también ha crecido
EJEMPLO 2-9
EJEMPLO 2-10
8 4 6 5 6 9 (decimal)
1000 0100 0110 0101 0110 1001 (BCD)
byte1 byte2 byte3
⎫
⎪
⎫
⎪
⎫
⎪
⎫
⎪
⎫
⎪
⎫
⎪
⎬
⎬
⎬
EJEMPLO 2-11
EJEMPLO 2-12
PREGUNTAS DE REPASO
su capacidad (¿apetito?) de manejar datos binarios. Una palabra es un grupo de bits
que representa una cierta unidad de información. El tamaño de la palabra depende
del tamaño de la ruta de datos en el sistema que utiliza la información. El tamaño
de palabra puede definirse como el número de bits en la palabra binaria con el que
opera un sistema digital. Por ejemplo, tal vez la computadora en su horno de micro-
ondas sólo pueda manejar un byte a la vez.Tiene un tamaño de palabra de ocho bits.
Por otro lado, la computadora personal en su escritorio puede manejar ocho bytes a
la vez, por lo que tiene un tamaño de palabra de 64 bits.
1. ¿Cuántos bytes se necesitan para representar el número 23510 en binario?
2. ¿Cuál es el valor decimal más grande que puede representarse en BCD, si se
utilizan dos bytes?
3. ¿Cuántos dígitos hexadecimales puede representar un nibble?
4. ¿Cuántos nibbles hay en un dígito BCD?
2-8 CÓDIGOS ALFANUMÉRICOS
Además de los datos numéricos, una computadora debe ser capaz de manejar infor-
mación no numérica. En otras palabras, una computadora debe reconocer códigos
que representen letras del alfabeto, signos de puntuación y otros caracteres especia-
les, además de los números. A estos códigos se les denomina códigos alfanuméricos.
Un código alfanumérico completo debe incluir las 26 letras minúsculas, las 26 letras
mayúsculas, los 10 dígitos numéricos, 7 signos de puntuación y de 20 a 40 caracteres
adicionales, como , /, #, %, *, y así sucesivamente. Podemos decir que un código
alfanumérico representa a todos los caracteres y funciones que se encuentran en el
teclado de una computadora.
Código ASCII
El código alfanumérico más utilizado es el Código estándar estadounidense para el
intercambio de información (ASCII). Este código es de siete bits, por lo cual tiene
27
 128 código posibles. Más que suficiente para representar todos los caracteres
estándar del teclado, así como las funciones de control tales como retorno de carro
(RETURN) y avance de línea (LINEFEED). La tabla 2-4 muestra un listado del códi-
go ASCII estándar de siete bits. La tabla proporciona los equivalentes en hexadeci-
mal y decimal. Para obtener el código binario de siete bits para cada carácter hay
que convertir el valor hexadecimal en binario.
Use la tabla 2-4 para encontrar el código ASCII de siete bits para el carácter de
barra diagonal inversa ().
Solución
El valor hexadecimal que aparece en la tabla 2-4 es 5C. Al traducir cada dígito hexa-
decimal en código binario de cuatro bits produce el valor 0101 1100. Los siete bits de
menor peso representan el código ASCII para , o 1011100.
EJEMPLO 2-13
SECCIÓN 2-8/CÓDIGOS ALFANUMÉRICOS 39
40 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS
TABLA 2-4 Código ASCII estándar.
Caracter HEX Decimal Caracter HEX Decimal Caracter HEX Decimal Caracter HEX Decimal
NUL (nulo) 0 0 Espacio 20 32 @ 40 64
.
60 96
Inicio del
encabezado 1 1 ! 21 33 A 41 65 a 61 97
Inicio del texto 2 2 “ 22 34 B 42 66 b 62 98
Fin del texto 3 3 # 23 35 C 43 67 c 63 99
Fin de la transmisión 4 4 $ 24 36 D 44 68 d 64 100
Consulta 5 5 % 25 37 E 45 69 e 65 101
Reconocimiento 6 6  26 38 F 46 70 f 66 102
Timbre 7 7 ` 27 39 G 47 71 g 67 103
Retroceso 8 8 ( 28 40 H 48 72 h 68 104
Tabulación
horizontal 9 9 ) 29 41 I 49 73 i 69 105
Avance de línea A 10 * 2A 42 J 4A 74 j 6A 106
Tabulación vertical B 11 + 2B 43 K 4B 75 k 6B 107
Avance de hoja
de impresión C 12 , 2C 44 L 4C 76 l 6C 108
Retorno de carro D 13 - 2D 45 M 4D 77 m 6D 109
Mayúsculas
desactivadas E 14 . 2E 46 N 4E 78 n 6E 110
Mayúsculas
activadas F 15 / 2F 47 O 4F 79 o 6F 111
Escape de enlace
de datos 10 16 0 30 48 P 50 80 p 70 112
Control directo 1 11 17 1 31 49 Q 51 81 q 71 113
Control directo 2 12 18 2 32 50 R 52 82 r 72 114
Control directo 3 13 19 3 33 51 S 53 83 s 73 115
Control directo 4 14 20 4 34 52 T 54 84 t 74 116
ACK
(reconocimiento)
negativo 15 21 5 35 53 U 55 85 u 75 117
Sincronía en
estado inactivo 16 22 6 36 54 V 56 86 v 76 118
Fin de Bloque de
Transmisión 17 23 7 37 55 W 57 87 w 77 119
Cancelar 18 24 8 38 56 X 58 88 x 78 120
Fin de medio 19 25 9 39 57 Y 59 89 y 79 121
Sustituir 1A 26 : 3A 58 Z 5A 90 z 7A 122
Escape 1B 27 ; 3B 59 [ 5B 91 { 7B 123
Separador
de formas 1C 28  3C 60  5C 92 | 7C 124
Separador
de grupos 1D 29 = 3D 61 ] 5D 93 } 7D 125
Separador
de registros 1E 30  3E 62 ^ 5E 94 ~ 7E 126
Separador de
unidades 1F 31 ? 3F 63 5F 95 Suprimir 7F 127
PREGUNTAS DE REPASO
El código ASCII se utiliza para la transferencia de información alfanumérica
entre una computadora y los dispositivos externos, tales como una impresora u otra
computadora. La computadora también utiliza ASCII en forma interna para alma-
cenar la información que escribe un operador en el teclado. El siguiente ejemplo
ilustra lo anterior.
Un operador está escribiendo un programa en lenguaje C en el teclado de cierta
microcomputadora, la cual convierte cada pulsación de tecla en su código ASCII, y
lo almacena como un byte en memoria. Determine las cadenas binarias que se intro-
ducirán en memoria cuando el operador escriba la siguiente instrucción en C:
if (x3)
Solución
Localice cada carácter (incluyendo el espacio) en la tabla 2-4 y escriba su código
ASCII.
i 69 0110 1001
f 66 0110 0110
espacio 20 0010 0000
( 28 0010 1000
x 78 0111 1000
 3E 0011 1110
3 33 0011 0011
) 29 0010 1001
Observe que se agregó un 0 al bit más a la izquierda de cada código ASCII, ya que
los códigos deben almacenarse como bytes (ocho bits). A este proceso de agregar un
bit adicional se le denomina rellenar con 0s.
1. Codifique el siguiente mensaje en código ASCII utilizando la representación
hexadecimal: “COSTO  $72.”
2. El siguiente mensaje en código ASCII con bits de relleno se almacena en ubica-
ciones contiguas de memoria en una computadora:
01010011 01010100 01001111 01010000
¿Cuál es el mensaje?
2-9 MÉTODO DE PARIDAD PARA LA DETECCIÓN DE ERRORES
El movimiento de datos binarios y códigos de un lugar a otro es la operación más
frecuente que se realiza con los sistemas digitales.A continuación se listan solo unos
cuantos ejemplos:
■ La transmisión de voz digitalizada a través de un enlace de microondas.
■ El almacenamiento de datos y la recuperación de los mismos desde dispositivos
de memoria externos, como el disco magnético y el disco óptico.
■ La transmisión de datos digitales desde una computadora hacia otra computado-
ra remota, a través de líneas telefónicas (mediante el uso de un módem). Ésta es
una de las principales formas de enviar y recibir información en Internet.
Siempre que se transmite información desde un dispositivo (el transmisor) has-
ta otro (el receptor), existe la posibilidad de que puedan producirse errores tales
EJEMPLO 2-14
SECCIÓN 2-9/MÉTODO DE PARIDAD PARA LA DETECCIÓN DE ERRORES 41
42 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS
que causen que el receptor no reciba la información idéntica tal y como la envió el
transmisor. La principal causa de errores de transmisión es el ruido eléctrico, el cual
consiste en fluctuaciones espurias en el voltaje o en la corriente, dichas señales de
ruido están presentes en todos los sistemas electrónicos en diversos grados. La figu-
ra 2-4 es una ilustración simplificada de un tipo de error de transmisión.
El transmisor envía una señal digital en serie que está relativamente libre de
ruido, a través de una línea de señal hacia un receptor. No obstante, para cuando
la señal llega al receptor contiene un cierto grado de ruido acumulado a la señal
original. En ocasiones, el ruido es tan grande en amplitud que altera el nivel lógico
de la señal, como se ve en el punto x. Cuando esto ocurre, el receptor puede inter-
pretar en forma incorrecta ese bit como un 1 lógico, que no corresponde con lo que
el transmisor ha enviado.
La mayoría del equipo digital moderno está diseñado relativamente libre de
errores, y la probabilidad de que ocurran errores como el que se muestra en la figura
2-4 es muy baja. No obstante, debemos considerar que los sistemas digitales fre-
cuentemente transmiten miles, incluso millones de bits por segundo, por lo que
incluso hasta una relación muy baja de ocurrencia de errores puede producir un
error ocasional que podría llegar a ser molesto, si no es que desastroso. Por esta
razón, muchos sistemas digitales emplean algún método para la detección (y en
ocasiones corrección) de errores. Uno de los esquemas más simples y utilizados para
este fin es el método de paridad.
Bit de paridad
Un bit de paridad es un bit que se agrega al grupo de bits del código que se está
transfiriendo de un lugar a otro. El bit de paridad se hace 0 o 1, dependiendo del
número de 1s que contenga el grupo de bits del código. Se utilizan dos métodos dis-
tintos.
En el método de paridad par, el valor del bit de paridad se elije de manera que
el número total de 1s en el grupo de bits del código, incluyendo el bit de paridad,
sea par. Por ejemplo, suponga que el grupo es 1000011. Éste es el carácter “C” en
ASCII. El código tiene tres 1s. Por ende, agregaremos un bit de paridad de 1 para
que el número total de 1s sea par. El nuevo código incluyendo el bit de paridad sería
entonces:
Si el grupo de bits del código contiene un número par de 1s para empezar, el bit
de paridad recibe un valor de 0. Por ejemplo, si el código fuera 1000001 (el código
ASCII para la “A”), el bit de paridad asignado sería 0 y el nuevo código incluyendo el
bit de paridad sería 01000001.
El método de paridad impar se utiliza de la misma forma, sólo que el bit de pari-
dad se elije de manera que el número total de 1s, incluyendo el bit de paridad, sea
impar. Por ejemplo, para el código 1000001, el bit de paridad asignado sería un 1.
Para el código 1000011, el bit de paridad sería un 0.
FIGURA 2-4 Ejemplo del ruido que produce un error en la transmisión
de datos digitales.
Transmisor Receptor
x
1 0 0 0 0 1 1
↑
1
bit de paridad agregado*
* El bit de paridad puede colocarse en cualquier extremo del grupo de código, pero, por lo general, se
coloca a la izquierda del MSB.
Ya sea que se utilice la paridad par o impar, el bit de paridad se convierte en
parte de la palabra de código. Por ejemplo, al agregar un bit de paridad al código
ASCII de siete bits se produce un código de ocho bits. Por lo tanto, el bit de paridad
se trata justo igual que cualquier otro bit en el código.
El bit de paridad se transmite para detectar cualquier error de un solo bit que
ocurra durante la transmisión de un código de un lugar a otro. Por ejemplo, supon-
ga que el carácter “A” se va a transmitir y se va a utilizar paridad impar. El código
transmitido sería
Cuando el circuito receptor reciba el código, verificará que éste contenga un núme-
ro impar de 1s, incluyendo el bit de paridad. De ser así, el receptor supondrá que el
código se ha recibido de manera correcta. Ahora suponga que debido a cierto ruido
o falla el receptor en realidad recibe el siguiente código:
El receptor descubrirá que este código tiene un número par de 1s. Esto indica al
receptor que debe haber un error en el código, ya que se presume que el transmisor
y el receptor han acordado utilizar paridad impar. Sin embargo, no hay forma de que
el receptor sepa cuál bit tiene error, ya que no sabe cuál se supone que va a ser el
código.
Podemos asumir que este método de paridad no funciona si dos bits tienen error,
ya que dos errores no cambiarían la característica de “par” o “impar” en el número
de 1s en el código. En la práctica, el método de paridad se utiliza sólo en situaciones
en las que la probabilidad de un solo error es muy baja y la probabilidad de doble
error es prácticamente cero.
Cuando se utiliza el método de paridad, el transmisor y el receptor deben acor-
dar antes de la transmisión si se va a utilizar la paridad par o impar. No hay ventaja
de un método sobre el otro, aunque parece que la paridad par se utiliza más a
menudo. El transmisor debe agregar el bit de paridad apropiado a cada unidad de
información que transmita. Por ejemplo, si el transmisor está enviando datos codi-
ficados en ASCII, deberá agregar el bit de paridad a cada grupo de código ASCII de
siete bits. Cuando el receptor examine los datos que reciba del transmisor, compro-
bará cada grupo de código para ver si el número total de 1s, incluyendo el bit de
paridad, es consistente con el tipo de paridad acordado. A esto se le conoce común-
mente como comprobar la paridad de los datos. En caso de que detecte un error, el
receptor puede enviar un mensaje al transmisor para pedirle que vuelva a transmi-
tir el último conjunto de datos. El procedimiento a seguir cuando se detecta un
error depende de cada sistema.
Es común que las computadoras se comuniquen con otros equipos remotos a través
de líneas telefónicas. Así es como se lleva a cabo la comunicación por acceso telefó-
nico a través de Internet. Cuando una computadora transmite un mensaje a otra, esa
información, por lo general, se codifica en ASCII. ¿Cuáles serían las cadenas de bits
que transmitiría una computadora para enviar el mensaje HOLA, utilizando ASCII
con paridad par?
Solución
Primero, vea los códigos ASCII para cada carácter del mensaje. Después, para cada
código cuente el número de 1s. Si es un número par añada un 0 como el MSB, o un 1
1 0 0 0 0 0 1
1
1 0 0 0 0 0 0
1
EJEMPLO 2-15
SECCIÓN 2-9/MÉTODO DE PARIDAD PARA LA DETECCIÓN DE ERRORES 43
44 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS
PREGUNTAS DE REPASO
si es un número impar. Por ende, los códigos de ocho bits (bytes) resultantes tendrán
un número par de 1s (incluyendo la paridad).
bits de paridad agregados
T
H  0 1 0 0 1 0 0 0
O  1 1 0 0 0 1 0 1
L  1 1 0 0 1 1 0 0
A  0 1 0 0 0 0 0 1
1. Agregue un bit de paridad impar al código ASCII para el símbolo $ y exprese el
resultado en hexadecimal.
2. Adjunte un bit de paridad par al código BCD para el 69 decimal.
3. ¿Por qué el método de paridad no puede detectar un doble error en los datos
transmitidos?
2-10 APLICACIONES
A continuación se presentan algunas aplicaciones que servirán como repaso de algu-
nos conceptos que vistos en este capítulo. El objetivo de estas aplicaciones es que
usted se dé una idea de cómo se utilizan los diversos sistemas y códigos numéricos
en el mundo digital. En los problemas al final del capítulo presentaremos más apli-
caciones.
Un CD-ROM ordinario puede almacenar 650 megabytes de datos digitales. Como
mega  220
, ¿cuántos bits de datos puede almacenar un CD-ROM?
Solución
Recuerde que un byte tiene ocho bits. Por lo tanto, 650 megabytes son 650  220
 8  5,452,595,200 bits.
Para poder programar la mayoría de microcontroladores, las instrucciones binarias
se almacenan en un archivo de una computadora personal, de una manera especial
que se conoce como Formato Hexadecimal Intel. La información hexadecimal se
codifica en caracteres ASCII, de manera que pueda mostrarse con facilidad en la
pantalla de una PC, imprimirse o transmitirse de una manera sencilla, carácter por
carácter, a través de un puerto COM serial de la PC. A continuación se muestra una
línea de un archivo en Formato Hexadecimal Intel:
:10002000F7CFFFCF1FEF2FEF2A95F1F71A95D9F7EA
El primer carácter enviado es el código ASCII correspondiente a los dos puntos,
seguido de un 1. A cada uno se le adjunta un bit de paridad como el bit más signi-
ficativo. Un instrumento de prueba captura el patrón binario de bits a medida que
pasa a través del cable hacia el microcontrolador.
(a) ¿Qué apariencia debe tener el patrón binario de bits incluyendo la paridad?
(MSB-LSB.)
APLICACIÓN 2-1
APLICACIÓN 2-2
(b) El valor 10, que va después de los dos puntos, representa en número hexadeci-
mal el total de bytes que se van a cargar en la memoria del microcontrolador.
¿Cuál es el número decimal de bytes que se van a cargar?
(c) El número 0020 es un valor hexadecimal de cuatro dígitos que representa la
dirección en la que se va a almacenar el primer byte. ¿Cuál es la mayor direc-
ción posible? ¿Cuántos bits se requerirían para representar esta dirección?
(d) El valor del primer byte de datos es F7. ¿Cuál es el valor (en binario) del nibble
menos significativo de este byte?
FFFF 1111 1111 1111 1111 16 bits
Solución
(a) Los códigos ASCII son 3A (para el :) y 31 (para el 1) 00111010 10110001
bit de paridad par
(b) 10 hex  1  16  0  1  16 bytes decimales.
(c) FFFF es el mayor valor posible. Cada dígito hexadecimal es de 4 bits, por lo que
necesitamos 16 bits.
(d) El nibble menos significativo (4 bits) se representa mediante el 7 hexadecimal.
En binario sería 0111.
Una pequeña computadora de control de procesos utiliza códigos hexadecimales
para representar sus direcciones de 16 bits de memoria.
(a) ¿Cuántos dígitos hexadecimales se requieren?
(b) ¿Cuál es el intervalo de direcciones en hexadecimal?
(c) ¿Cuántas localidades de memoria hay?
Solución
(a) Como 4 bits se convierten en un dígito hexadecimal, se necesitan 16/4  4 dígi-
tos hexadecimales.
(b) El intervalo binario es de 00000000000000002 a 11111111111111112. En hexade-
cimal sería de 000016 a FFFF16.
(c) Con 4 dígitos hexadecimales, el número total de direcciones es 164
 65,536.
En un sistema basado en microcontrolador, los números se introducen en BCD pero
se almacenan en binario directo. Como programador, usted debe decidir si necesita
una ubicación de almacenamiento de un byte o de dos bytes.
(a) ¿Cuántos bytes necesita si el sistema recibe una entrada decimal de dos dígi-
tos?
(b) ¿Qué pasaría si tuviera que introducir tres dígitos?
Solución
(a) Con dos dígitos puede introducir valores hasta el 99 (1001 1001BCD). En binario
este valor es 01100011, el cual cabe en una ubicación de memoria de ocho bits.
También puede utilizar un solo bit.
(b) Tres dígitos pueden representar hasta 999 (1001 1001 1001). En binario este
valor es 1111100111 (10 bits). Por lo tanto, no puede usar un solo byte; necesita
dos bytes.
APLICACIÓN 2-3
APLICACIÓN 2-4
SECCIÓN 2-10/APLICACIONES 45
46 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS
Cuando hay que transmitir caracteres ASCII entre dos sistemas independientes
(como una computadora y un módem), debe haber una manera de indicar al receptor
cuándo va a llegar un nuevo carácter. A menudo también se tiene la necesidad de
detectar errores en la transmisión. El método de transferencia se llama comunica-
ción asíncrona de datos. El estado normal de inactividad de la línea de transmisión
es un 1 lógico. Cuando el transmisor envía un carácter ASCII, debe “encapsularse”
para que el receptor sepa en dónde comienzan y terminan los datos. El primer bit
debe ser siempre un bit de inicio (0 lógico). A continuación se envía el código ASCII,
en donde el LSB va primero y el MSB al último. Después del MSB se adjunta un bit
de paridad para comprobar errores en la transmisión. Para terminar la transmisión
se envía un bit de paro (1 lógico). En la figura 2-5 se muestra una transmisión asíncro-
na ordinaria del código ASCII de siete bits para el signo # (23 Hex) con paridad par.
RESUMEN
1. El sistema numérico hexadecimal se utiliza en los sistemas y las computadoras
digitales como una manera eficiente de representar cantidades binarias.
2. En las conversiones entre hexadecimal y binario, cada dígito hexadecimal
corresponde a cuatro bits.
3. El método de división repetida se utiliza para convertir números decimales en
binario o hexadecimal.
4. Mediante el uso de un número binario de N bits podemos representar valores
decimales desde el 0 hasta 2N
– 1.
5. Para formar el código BCD de un número decimal se convierte cada dígito del
número decimal en su equivalente binario de cuatro bits.
6. El código Gray define una secuencia de patrones de bits, en los que sólo un bit
cambia entre patrones sucesivos en la secuencia.
7. Un byte es una cadena de ocho bits. Un nibble es de cuatro bits. El tamaño de
una palabra depende del sistema.
8. Un código alfanumérico utiliza grupos de bits para representar a todos los carac-
teres y funciones que forman parte del teclado ordinario de una computadora.
El código ASCII es el código alfanumérico más utilizado.
9. En el método de paridad para la detección de errores se adjunta un bit de pari-
dad especial a cada grupo de bits que se transmite.
APLICACIÓN 2-5
I
N
I
C
I
O
D
1
D
0
L
S
B
D
2
D
3
D
5
D
4
D
6
M
S
B
P
a
r
i
d
a
d
P
A
R
O
inactiva inactiva
FIGURA 2-5 Datos seriales asíncronos con paridad par.
TÉRMINOS IMPORTANTES
PROBLEMAS
SECCIONES 2-1 Y 2-2
2-1. Convierta los siguientes números binarios en decimales.
(a)*
10110 (d) 01101011 (g)* 1111010111
(b) 10010101 (e)* 11111111 (h) 11011111
(c)* 100100001001 (f) 01101111
2-2. Convierta los siguientes valores decimales en binarios.
(a)* 37 (d) 1000 (g)* 205
(b) 13 (e)* 77 (h) 2133
(c)* 189 (f) 390 (i)* 511
2-3. ¿Cuál es el valor decimal más grande que puede representarse mediante
(a)* un número binario de ocho bits? (b) un número de 16 bits?
SECCIÓN 2-4
2-4. Convierta cada número hexadecimal en su equivalente decimal.
(a)* 743 (d) 2000 (g)* 7FF
(b) 36 (e)* 165 (h) 1204
(c)* 37FD (f) ABCD
2-5. Convierta cada uno de los siguientes números decimales en hexadecima-
les.
(a)* 59 (d) 1024 (g)* 65,536
(b) 372 (e)* 771 (h) 255
(c)* 919 (f) 2313
2-6. Convierta cada uno de los valores hexadecimales del problema 2-4 en núme-
ros binarios.
2-7. Convierta los números binarios del problema 2-1 en hexadecimales.
2-8. Liste los números hexadecimales en secuencia, desde 19516 hasta 28016.
2-9. Cuando se va a convertir un número decimal grande en binario, algunas
veces es más fácil convertirlo primero en hexadecimal y después en binario.
Pruebe este procedimiento para el número 213310 y compárelo con el proce-
dimiento usado en el problema 2-2(h).
2-10. ¿Cuántos dígitos hexadecimales se requieren para representar los números
decimales del 0 hasta el 20,000?
2-11. Convierta los siguientes valores hexadecimales en decimales.
(a)* 92 (d) ABCD (g)* 2C0
(b) 1A6 (e)* 000F (h) 7FF
(c)* 37FD (f) 55
bit de paridad
byte
códigos alfanuméricos
código binario directo
código decimal codificado
en binario (BCD)
Código estándar
estadounidense para
el intercambio de
información (ASCII)
código Gray
método de paridad
nibble
palabra
sistema numérico
hexadecimal
tamaño de palabra
* Encontrará las respuestas a los problemas marcados con un asterisco al nal del libro.
PROBLEMAS 47
48 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS
2-12. Convierta los siguientes valores decimales en hexadecimales.
(a)* 75 (d) 24 (g)* 25,619
(b) 314 (e)* 7245 (h) 4095
(c)* 2048 (f) 498
2-13. Tome cada número binario de cuatro bits en el orden en el que están escri-
tos y escriba el dígito hexadecimal equivalente sin realizar ningún cálculo
manual o mediante la calculadora.
(a) 1001 (e) 1111 (i) 1011 (m) 0001
(b) 1101 (f) 0010 (j) 1100 (n) 0101
(c) 1000 (g) 1010 (k) 0011 (o) 0111
(d) 0000 (h) 1001 (l) 0100 (p) 0110
2-14. Tome cada dígito hexadecimal y escriba su valor binario de cuatro bits sin
realizar ningún cálculo manual ni mediante la calculadora.
(a) 6 (e) 4 (i) 9 (m) 0
(b) 7 (f) 3 (j) A (n) 8
(c) 5 (g) C (k) 2 (o) D
(d) 1 (h) B (l) F (p) 9
2-15.* Convierta los números binarios del problema 2-1 en hexadecimales.
2-16.* Convierta los valores hexadecimales del problema 2-11 en binarios.
2-17.* Liste los números hexadecimales en secuencia, desde 280 hasta 2A0.
2-18. ¿Cuántos dígitos hexadecimales se requieren para representar números deci-
males hasta 1 millón?
SECCIÓN 2-5
2-19. Codifique los siguientes números decimales en BCD.
(a)* 47 (d) 6727 (g)* 89,627
(b) 962 (e)* 13 (h) 1024
(c)* 187 (f) 529
2-20. ¿Cuántos bits se requieren para representar los números decimales en el
intervalo de 0 a 999 si se utiliza: (a) código binario directo, y (b) código
BCD?
2-21. Los siguientes números están en BCD. Conviértalos en decimales.
(a)* 1001011101010010 (d) 0111011101110101
(b) 000110000100 (e)* 010010010010
(c)* 011010010101 (f) 010101010101
SECCIÓN 2-7
2-22.* (a) ¿Cuántos bits hay en ocho bytes?
(b) ¿Cuál es el número hexadecimal más grande que puede representarse
en cuatro bytes?
(c) ¿Cuál es el valor decimal codificado en BCD más grande que puede
representarse en tres bytes?
2-23. (a) Consulte la tabla 2-4. ¿Cuál es el nibble más significativo del código
ASCII para la letra X?
(b) ¿Cuántos nibbles pueden almacenarse en una palabra de 16 bits?
(c) ¿Cuántos bytes se requieren para formar una palabra de 24 bits?
SECCIONES 2-8 Y 2-9
2-24. Represente la instrucción “X  3  Y” en código ASCII. Adjunte un bit de
paridad impar.
2-25.* Adjunte un bit de paridad par a cada uno de los códigos ASCII del problema
2-24, y muestre los resultados en hexadecimal.
2-26. Los siguientes bytes (mostrados en hexadecimal) representan el nombre de
una persona según como se almacenaría en la memoria de una computado-
ra. Cada byte es código ASCII con relleno. Determine el nombre de cada
persona.
(a)* 42 45 4E 20 53 4D 49 54 48
(b) 4A 6F 65 20 47 72 65 65 6E
2-27. Convierta los siguientes números decimales en código BCD y después adjun-
te un bit de paridad impar.
(a)* 74 (c)* 8884 (e)* 165
(b) 38 (d) 275 (f) 9201
2-28.* En cierto sistema digital, los números decimales del 000 al 999 se repre-
sentan en código BCD. También se incluye un bit de paridad impar al final
de cada grupo. Examine cada uno de los códigos que se muestran a conti-
nuación y suponga que cada uno acaba de transferirse de un lugar a otro.
Algunos de los grupos contienen errores. Suponga que no se han producido
más de dos errores en cada grupo. Determine cuáles de los siguientes casos
tienen un solo error y cuáles tienen en definitiva un error doble. (Sugerencia:
recuerde que éste es código BCD).
(a) 1001010110000
bit de paridad
(b) 0100011101100
(c) 0111110000011
(d) 1000011000101
2-29. Suponga que el receptor recibió los siguientes datos del transmisor del ejem-
plo 2-16:
0 1 0 0 1 0 0 0
1 1 0 0 0 1 0 1
1 1 0 0 1 1 0 0
1 1 0 0 1 0 0 0
1 1 0 0 1 1 0 0
¿Qué errores puede determinar el receptor en los datos que recibió?
PREGUNTAS DE PRÁCTICA
2-30.* Realice cada una de las siguientes conversiones. Si desea puede probar
varios métodos en algunas de ellas para ver con cuál se adapta mejor. Por
ejemplo, una conversión de binario a decimal puede realizarse en forma
directa, o también mediante una conversión de binario a hexadecimal segui-
da de una conversión de hexadecimal a decimal.
(a) 141710  ______2
(b) 25510  ______2
(c) 110100012  ______10
(d) 11101010001001112  ______10
PROBLEMAS 49
50 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS
(e) 249710  ______16
(f) 51110  ______ (BCD)
(g) 23516  ______10
(h) 431610  ______16
(i) 7A916  ______10
(j) 3E1C16  ______10
(k) 160010  ______16
(l) 38,18710  ______16
(m) 86510  ______ (BCD)
(n) 100101000111 (BCD)  ______10
(o) 46516  ______2
(p) B3416  ______2
(q) 01110100 (BCD)  ______2
(r) 1110102  ______ (BCD)
2-31.* Represente el valor decimal 37 en cada una de las siguientes formas.
(a) Binario directo.
(b) BCD.
(c) Hexadecimal.
(d) ASCII (es decir, trate cada dígito como un carácter).
2-32.* Llene los espacios en blanco con la palabra o palabras correctas.
(a) Para convertir de decimal a _________ se requiere de la división repeti-
da entre 16.
(b) Para convertir de decimal a binario se requiere de la división repetida
entre __________.
(c) En el código BCD, cada ______ se convierte en su equivalente binario de
cuatro bits.
(d) El código ______ tiene la característica de que sólo cambia un bit al
avanzar de un paso al siguiente.
(e) Un transmisor adjunta un _______ a un código para permitir que el
receptor detecte _________.
(f) El código _______ es código alfanumérico más común que se utiliza en
los sistemas computacionales.
(g) ________ se utiliza a menudo como una manera conveniente de repre-
sentar números binarios extensos.
(h) Una cadena de ocho bits se llama _________.
2-33. Escriba el número binario que se produce cuando cada uno de los siguientes
números se incrementa en uno.
(a)* 0111 (b) 010011 (c) 1011
2-34. Decremente cada uno de los siguientes números binarios.
(a)* 1110 (b) 101000 (c) 1110
2-35. Escriba el número que se produce cuando se incrementa cada una de las
siguientes cifras.
(a)* 777916 (c)* 0FFF16 (e)* 9FF16
(b) 999916 (d) 200016 (f) 100A16
2-36.* Repita el problema 2-35 para la operación de decremento.
EJERCICIOS AVANZADOS
2-37.* En una microcomputadora, las direcciones de las localidades de memoria son
números binarios que identifican cada uno de los circuitos de memoria
en donde se almacena un byte. El número de bits que forman cada dirección
depende de cuántas localidades de memoria haya. Como el número de bits
puede ser muy extenso, a menudo las direcciones se especifican en hexade-
cimal, en lugar de binario.
(a) Si una microcomputadora utiliza una dirección de 20 bits, ¿cuántas loca-
lidades de memoria distintas hay?
(b) ¿Cuántos dígitos hexadecimales se necesitan para representar la direc-
ción de una localidad de memoria?
(c) ¿Cuál es la dirección hexadecimal de la localidad de memoria número
256? (Nota: la primera dirección siempre es 0.)
2-38. En un CD de audio, la señal de voltaje de audio, por lo general, se muestrea
aproximadamente 44,000 veces por segundo, y el valor de cada muestra se
graba en la superficie del CD como número binario. En otras palabras, cada
número binario que se graba representa un punto de voltaje individual en
la forma de onda de la señal de audio.
(a) Si los números binarios tienen una longitud de seis bits, ¿cuántos valo-
res de voltaje distintos pueden representarse mediante un solo número
binario? Repita para ocho y diez bits.
(b) Si se utilizan números de diez bits, ¿cuántos bits se grabarán en el CD en
un segundo?
(c) Si un CD puede almacenar, por lo general, 5 mil millones de bits, cuántos
segundos de audio pueden grabarse si se utilizan diez bits?
2-39.* Una cámara digital en blanco y negro coloca una rejilla fina sobre una ima-
gen para después medir y registrar un número binario que representa el
nivel de gris que ve en cada celda de la rejilla. Por ejemplo, si se utilizan
números de cuatro bits el valor de negro se establece en 0000 y el valor de
blanco en 1111, y cualquier nivel de gris puede tener algún valor entre 0000
y 1111. Si se utilizan números de seis bits, el negro es 000000 y el blanco es
111111, y todos los grises se encuentran entre estos dos valores.
Suponga que queremos diferenciar entre 254 niveles de gris dentro de cada
una de las celdas de la rejilla. ¿Cuántos bits necesitaríamos usar para repre-
sentar estos niveles de gris?
2-40. Una cámara digital de 3 megapixeles almacena un número de ocho bits para
el brillo de cada uno de los colores primarios (rojo, verde, azul) que se encuen-
tran en cada elemento de imagen (pixel). Si se almacenan todos los bits, sin
compresión de datos, ¿cuántas imágenes pueden almacenarse en una tarjeta
de memoria de 128 Megabytes? (Nota: en los sistemas digitales, Mega signifi-
ca 220
).
2-41. Construya una tabla que muestre las representaciones en binario, hexadeci-
mal y BCD de todos los números decimales del 0 al 15. Compare sus resulta-
dos con la tabla 2-3.
RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES
SECCIÓN 2-1
1. 2267 2. 32768
SECCIÓN 2-2
1. 1010011 2. 1011011001 3. 20 bits
RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES 51
52 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS
SECCIÓN 2-3
1. 9422 2. C2D; 110000101101 3. 97B5 4. E9E, E9F, EA0, EA1
5. 11010100100111 6. 0 a 65,535
SECCIÓN 2-4
1. 1011001092; 000101111000 (BCD) 2. 32 3.Ventaja: facilidad de conver-
sión. Desventaja: el código BCD requiere más bits.
SECCIÓN 2-5
1. 0111 2. 0110
SECCIÓN 2-7
1. Uno 2. 9999 3. Uno 4. Uno
SECCIÓN 2-8
1. 43, 4F, 53, 54, 20, 3D, 20, 24, 37, 32 2. STOP
SECCIÓN 2-9
1. A4 2. 001101001 3. Dos errores en los datos no cambiarían la caracte-
rística impar o par del número de 1s en los datos.
Sistemas_Digitales_Principios_y_Aplicaci.pdf
3-1 Constantes y variables
booleanas
3-2 Tablas de verdad
3-3 Operación OR con
compuertas OR
3-4 Operación AND con
compuertas AND
3-5 Operación NOT
3-6 Descripción de circuitos
lógicos en forma algebraica
3-7 Evaluación de las salidas
de circuitos lógicos
3-8 Implementación de circuitos
a partir de expresiones
booleanas
3-9 Compuertas NOR y NAND
3-10 Teoremas booleanos
3-11 Teoremas de DeMorgan
■ CONTENIDO
D ES CRIPCIÓN DE LOS
CIR CUITOS LÓGICOS
C A P Í T U L O 3
3-12 Universalidad de las
compuertas NAND y NOR
3-13 Representaciones alternas
de compuertas lógicas
3-14 Cuál representación de
compuerta se debe usar
3-15 Símbolos lógicos del estándar
IEEE/ANSI
3-16 Resumen de los métodos
para describir circuitos
lógicos
3-17 Comparación entre lenguajes
de descripción y lenguajes de
programación
3-18 Implementación de circuitos
lógicos con PLDs
3-19 Formato y sintaxis del HDL
3-20 Señales intermedias
■ OBJETIVOS
Al terminar este capítulo, usted podrá:
■ Realizar las tres operaciones lógicas básicas.
■ Describir la operación y construir las tablas de verdad para las compuertas
AND, NAND, OR y NOR, y el circuito NOT (INVERSOR).
■ Dibujar diagramas de tiempos para las diversas compuertas de los circuitos
lógicos.
■ Escribir la expresión booleana para las compuertas lógicas y combinaciones
de compuertas lógicas.
■ Implementar circuitos lógicos mediante el uso de compuertas AND, OR y NOT.
■ Apreciar el potencial del álgebra booleana para simplificar circuitos lógicos
complejos.
■ Usar los teoremas de DeMorgan para simplificar las expresiones lógicas.
■ Usar cualquiera de las compuertas universales (NAND y NOR) para
implementar un circuito representado por una expresión booleana.
■ Explicar las ventajas de construir un diagrama de circuitos lógicos mediante
el uso de los símbolos alternos de las compuertas, en comparación con los
símbolos estándar de las compuertas lógicas.
■ Describir el concepto de las señales lógicas, activa en BAJO y activa en ALTO.
■ Dibujar e interpretar los símbolos de las compuertas lógicas del estándar
IEEE/ANSI.
■ Usar varios métodos para describir la operación de los circuitos lógicos.
■ Interpretar circuitos simples definidos mediante un lenguaje de descripción
de hardware (HDL).
■ Explicar la diferencia entre un HDL y un lenguaje de programación de
computadoras.
■ Crear un archivo de HDL para una compuerta lógica simple.
■ Crear un archivo de HDL para circuitos combinacionales con variables
intermedias.
■ INTRODUCCIÓN
En los capítulos 1 y 2 presentamos los conceptos de niveles lógicos y circuitos
lógicos. En circuitos lógicos sólo existen dos posibles condiciones para cualquier
entrada o salida: verdadero o falso. El sistema numérico binario utiliza sólo
dos dígitos: 1 y 0, por lo que es perfecto para representar relaciones lógicas.
Los circuitos lógicos digitales utilizan intervalos de voltaje predefinidos para
representar estos estados binarios. Si utilizamos estos conceptos podemos crear
circuitos compuestos de algo más que arena de playa procesada y alambre, con
lo cual se pueden realizar decisiones lógicas consistentes e inteligentes. Es muy
importante que tengamos un método para describir las decisiones lógicas que
realizan estos circuitos. En otras palabras, debemos describir la forma en que
operan. En este capítulo estudiaremos muchas formas para describir su operación.
55
56 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
Cada uno de estos métodos de descripción es importante, ya que todos los métodos
aparecen muchas veces en la literatura técnica y la documentación de sistemas, y
se utilizan en conjunto con las herramientas modernas de diseño y desarrollo.
La vida está llena de ejemplos de casos que se encuentran en un estado o en otro.
Por ejemplo, una criatura puede estar viva o muerta, una luz puede estar encendida
o apagada, una puerta puede estar cerrada o abierta, y puede estar lloviendo o no. En
1854, un matemático llamado George boole escribió el libro Una investigación sobre
las leyes del pensamiento, en donde describía la manera en que realizamos decisiones
lógicas con base en circunstancias verdaderas o falsas. Los métodos que describió
se conocen actualmente como lógica booleana, y el sistema de usar símbolos y
operadores para describir estas decisiones se llama álgebra booleana. De la misma
forma que utilizamos símbolos tales como x y y para representar valores numéricos
desconocidos en el álgebra tradicional, el álgebra booleana utiliza símbolos para
representar una expresión lógica que tiene uno de dos valores posibles: verdadero o
falso. La expresión lógica podría ser puerta está cerrada, botón está oprimido, o nivel
de combustible está bajo. Es muy tedioso escribir estas expresiones, por lo que se
acostumbra sustituirlas por símbolos tales como A, B y C.
El propósito principal de estas expresiones lógicas es describir la relación
entre la salida de un circuito lógico (la decisión) y sus entradas (las condiciones).
En este capítulo estudiaremos los circuitos lógicos más básicos (compuertas
lógicas), que son los elementos a partir de los cuales se construyen todos los demás
circuitos lógicos y sistemas digitales.Veremos cómo la operación de las distintas
compuertas lógicas y los circuitos más complejos formados por combinaciones
de compuertas lógicas pueden describirse y analizarse mediante el uso del álgebra
booleana. También veremos un breve adelanto sobre cómo puede usarse dicha
álgebra para simplificar una expresión booleana de un circuito determinado, de
manera que éste pueda reconstruirse con menos compuertas lógicas y/o menos
conexiones. En el capítulo 4 veremos mucho más acerca de la simplificación de
circuitos.
El álgebra booleana no sólo se utiliza como herramienta para analizar y
simplificar sistemas lógicos. También puede usarse como herramienta para crear
un circuito lógico con una relación de entrada/salida deseada. Por lo general,
este proceso se conoce como síntesis de circuitos lógicos, en vez de análisis. Se
han utilizado otras técnicas en el análisis, síntesis y documentación de sistemas
y circuitos lógicos, como tablas de verdad, símbolos esquemáticos, diagramas de
tiempos y (por último, pero no menos importante) el lenguaje. Para categorizar
estos métodos, podríamos decir que el álgebra booleana es una herramienta
matemática, las tablas de verdad son herramientas para organización de datos, los
símbolos esquemáticos son herramientas de representación gráfica, los diagramas
de tiempos son herramientas para graficar la respuesta y el lenguaje es la
herramienta universal de descripción.
Actualmente puede usarse cualquiera de estas herramientas para proporcionar
la entrada a una computadora. Éstas pueden utilizarse para simplificar y traducir
entre estas diversas formas de descripción y, en última instancia, proveer
una salida en la forma necesaria para implementar un sistema digital. Para
aprovechar los poderosos beneficios del software computacional, primero debemos
comprender por completo las formas aceptables para describir estos sistemas en
términos que la computadora pueda entender. En este capítulo veremos las bases
para un estudio más detallado de estas herramientas vitales para la síntesis y el
análisis de los sistemas digitales.
Es evidente que las herramientas que describiremos aquí son invaluables para
describir, analizar, diseñar e implementar circuitos digitales. El estudiante que
tenga la expectativa de trabajar en el campo digital deberá esforzarse mucho por
comprender y familiarizarse con el álgebra booleana (aunque no lo crea, es mucho
más sencilla que el álgebra convencional) y con todas las demás herramientas.
Resuelva todos los ejemplos, ejercicios y problemas, incluso los que no le asigne
su instructor. Cuando acabe con todos ellos, haga los suyos. Bien valdrá la pena
el tiempo que invierta en ello, ya que usted verá cómo mejoran sus habilidades y
aumenta su confianza.
3-1 CONSTANTESY VARIABLES BOOLEANAS
El álgebra booleana difiere en gran medida del álgebra ordinaria, ya que a las cons-
tantes y variables booleanas sólo se les permite tener dos valores posibles: 0 y 1.
Una variable booleana es una cantidad que puede ser (en distintas ocasiones) igual
a 0 o a 1. Las variables booleanas se utilizan a menudo para representar el nivel de
voltaje presente en un alambre o en las terminales de entrada/salida de un circuito.
Por ejemplo, en cierto sistema digital el valor booleano 0 podría asignarse a cual-
quier voltaje en el intervalo de 0 a 0.8 V, mientras que el valor booleano 1 podría
asignarse a cualquier voltaje entre 2 y 5 V.*
Por lo tanto, el 0 y el 1 booleanos no representan números reales, sino el estado
de una variable de voltaje, o lo que se conoce como su nivel lógico. Se dice que un
voltaje en un circuito digital está en el nivel 0 lógico o en el nivel 1 lógico, depen-
diendo de su valor numérico actual. En la lógica digital se utilizan otros términos
más como sinónimos de 0 y 1. La tabla 3-1 muestra algunos de los más comunes. La
mayor parte del tiempo utilizaremos las designaciones 0/1 y BAJO/ALTO.
SECCIÓN 3-2/TABLAS DE VERDAD 57
Como dijimos en la introducción, el álgebra booleana es el medio para expresar
la relación entre las entradas y las salidas de un circuito lógico. Las entradas se con-
sideran variables lógicas cuyos niveles lógicos en cualquier momento determinan
los niveles de salida. En todo el trabajo que veremos utilizaremos símbolos de letras
para representar variables lógicas. Por ejemplo, la letra A podría representar una
cierta entrada o salida de un circuito digital, y en un determinado momento debe-
mos tener A  0 o A  1; alguno de los dos estados.
Como sólo dos valores son posibles, en realidad es muy sencillo trabajar con el
álgebra booleana en comparación con el álgebra ordinaria. En el álgebra booleana
no hay fracciones, decimales, números negativos, raíces cuadradas, raíces cúbicas,
logaritmos, números imaginarios, etc. De hecho, en el álgebra booleana sólo hay tres
operaciones básicas: OR, AND y NOT.
A estas operaciones básicas se les conoce como operaciones lógicas. Los circuitos
digitales, llamados compuertas lógicas, pueden construirse a partir de diodos, transis-
tores y resistencias conectados de manera que la salida del circuito sea el resultado
de una operación lógica básica (OR, AND, NOT) que se lleva a cabo con las entradas.
Utilizaremos primero el álgebra booleana para describir y analizar las compuertas
lógicas básicas, y después para analizar y diseñar combinaciones de compuertas lógi-
cas conectadas para formar circuitos lógicos.
3-2 TABLAS DE VERDAD
Una tabla de verdad es una herramienta para describir la forma en que la salida
de un circuito lógico depende de los niveles lógicos presentes en las entradas del
circuito. La figura 3-1(a) muestra una tabla de verdad para un tipo de circuito lógico
de dos entradas. La tabla lista todas las posibles combinaciones de niveles lógicos
TABLA 3-1
0 lógico 1 lógico
Falso Verdadero
Apagado Encendido
Bajo Alto
No Sí
Interruptor abierto Interruptor cerrado
* Los voltajes entre 0.8 y 2 V están indenidos (no son 0 ni 1) y bajo circunstancias normales no deben
presentarse.
58 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
PREGUNTAS DE REPASO
Entradas
Salida
A
B
(a)
(b)
(c)
? x
A
0
0
1
1
B
0
1
0
1
x
1
0
1
0
A
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
B
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
C
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
D
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
x
0
0
0
1
1
0
0
1
0
0
0
1
0
0
0
1
A
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
x
0
1
1
0
0
0
0
1
presentes en las entradas A y B, junto con el correspondiente nivel en la salida x.
La primera entrada en la tabla muestra que cuando A y B se encuentran en el nivel 0,
la salida x se encuentra en el nivel 1 o, de manera equivalente, en el estado 1. La
segunda entrada muestra que cuando la entrada B se cambia al estado 1, de manera
que A  0 y B  1, la salida x se vuelve un 0. De manera similar, la tabla muestra qué
ocurre con el estado de salida para cualquier conjunto de condiciones de entrada.
Las figuras 3-1(b) y (c) muestran ejemplos de tablas de verdad para circuitos
lógicos de tres y cuatro entradas. De nuevo, cada tabla enlista todas las posibles
combinaciones de niveles lógicos de las entradas a la izquierda, con el nivel lógico
resultante para la salida x a la derecha. Desde luego que los valores reales para x
dependerán del tipo de circuito lógico.
Observe que hay 4 combinaciones para la tabla de verdad de dos entradas,
8 combinaciones para una tabla de verdad de tres entradas y 16 combinaciones para
la tabla de verdad de cuatro entradas. El número de combinaciones de entrada será
igual a 2N
para una tabla de verdad con N entradas. Observe también que la lista
de todas las posibles combinaciones de entrada va de acuerdo con la secuencia de
conteo binario, por lo que es fácil anotar todas las combinaciones sin que falte una.
1. ¿Cuál es el estado de salida del circuito de cuatro entradas representado en la
figura 3-1(c) cuando todas las entradas excepto B son 1?
2. Repita la pregunta 1 para las siguientes condiciones de entrada: A  1, B  0,
C  1, D  0.
3. ¿Cuántas combinaciones se necesitan en la tabla para un circuito de cinco
entradas?
3-3 OPERACIÓN OR CON COMPUERTAS OR
La operación OR (O) es la primera de las tres operaciones booleanas básicas que
estudiaremos. El horno de cocina es un buen ejemplo. La luz dentro del horno debe
encenderse si el interruptor de la luz del horno está encendido “O” si la puerta está
abierta. La letra A podría usarse para representar la condición interruptor de la luz
del horno encendido y B podría representar la condición puerta abierta. La letra x
podría representar la condición luz encendida. La tabla de verdad de la figura 3-2(a)
muestra lo que ocurre cuando se combinan dos entradas lógicas (A y B) mediante
el uso de la operación OR para producir la salida x. La tabla muestras que x es un 1
lógico para cada una de las combinaciones de niveles de entrada en donde una o más
entradas sea 1. El único caso en el que x es un 0 es cuando ambas entradas son 0.
FIGURA 3-1 Ejemplo
de tablas de verdad
para circuitos de
(a) dos entradas,
(b) tres entradas y
(c) cuatro entradas.
La expresión booleana para la operación OR es
x  A  B
En esta expresión, el signo  no indica la suma ordinaria; indica la operación OR.
Esta operación es similar a la suma ordinaria, excepto para el caso en el que tanto A
como B son 1; la operación OR produce 1  1  1, no 1  1  2. En el álgebra boolea-
na 1 es el valor más alto, por lo que nunca tendremos un resultado mayor que 1. Lo
mismo aplica cuando se combinan tres entradas mediante el uso de la operación OR.
Aquí tenemos que x  A  B  C. Si consideramos el caso en el que las tres entradas
son 1, tenemos
x  1  1  1  1
La expresión x  A  B se lee como “x es igual a A OR B”, lo cual significa que x
será 1 cuando A o B o ambas sean 1. De igual forma, la expresión x  A  B  C se
lee como “x es igual a A OR B OR C”, lo cual significa que x será 1 cuando A o B o
C o cualquier combinación de ellas sean 1. Para describir este circuito en el idioma
español podríamos decir que x es verdadera (1) CUANDO A es verdadera (1) OR B es
verdadera (1) OR C es verdadera (1).
Compuerta OR
En los circuitos digitales, una compuerta OR*
es un circuito que tiene dos o más
entradas y cuya salida es igual a la combinación OR de las entradas. La figura 3-2(b)
muestra el símbolo lógico para una compuerta OR de dos entradas. Las entradas A y
B son niveles lógicos de voltaje y la salida x es un nivel lógico de voltaje cuyo valor
es el resultado de la operación OR sobre A y B; es decir, x  A  B. En otras palabras,
la compuerta OR opera de manera que su salida esté en ALTO, 1 lógico, si cualquiera
de las entradas A o B o ambas se encuentran en el nivel 1 lógico. La salida de la com-
puerta OR estará en BAJO, 0 lógico, sólo si todas sus entradas están en 0 lógico.
Esta misma idea puede extenderse a más de dos entradas. La figura 3-3 muestra
una compuerta OR de tres entradas y su tabla de verdad. Si examinamos esta tabla
de verdad podremos ver de nuevo que la salida será 1 para cada caso en el que una o
más entradas sean 1. Este principio general es el mismo para las compuertas OR con
cualquier número de entradas.
* El término compuerta proviene de la operación de inhibición/habilitación que se describe en el capítulo 4.
SECCIÓN 3-3/OPERACIÓN OR CON COMPUERTAS OR 59
A
0
0
1
1
B
0
1
0
1
x = A + B
0
1
1
1
x = A + B
(a)
A
B
Compuerta OR
(b)
OR
FIGURA 3-2 (a) Tabla
de verdad que define
la operación OR;
(b) símbolo del circuito
para una compuerta OR
de dos entradas.
x = A + B + C
A
C
B
A
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
x = A + B + C
0
1
1
1
1
1
1
1
FIGURA 3-3 Símbolo
y tabla de verdad para
una compuerta OR de
tres entradas.
60 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
Si utilizamos el lenguaje del álgebra booleana, la salida x podemos expresarla
como x  A  B  C, en donde hay que enfatizar otra vez que el símbolo  repre-
senta la operación OR. Así, la salida de cualquier compuerta OR puede expresarse
como la combinación OR de sus diversas entradas. Pondremos esto en práctica a la
hora de analizar los circuitos lógicos.
Resumen de la operación OR
Los puntos importantes que debemos recordar en relación con la operación OR y las
compuertas OR son:
1. La operación OR produce un resultado (salida) de 1 siempre que cualquiera de
sus entradas sea 1. En cualquier otro caso, la salida será 0.
2. Una compuerta OR es un circuito lógico que realiza una operación OR sobre las
entradas del circuito.
3. La expresión x  A  B se lee como “x es igual a A OR B”.
En muchos sistemas de control industriales se requiere activar una función de salida
cada vez que se activa una de varias entradas. Por ejemplo, en un proceso químico tal
vez sea conveniente que se active una alarma cada vez que la temperatura del proce-
so exceda un valor máximo O cada vez que la presión pase cierto límite. La figura 3-4
es un diagrama de bloques del caso descrito. El circuito transductor de temperatura
produce un voltaje de salida proporcional a la temperatura del proceso. Este voltaje
VT se compara con un voltaje de referencia de temperatura VTR en un circuito com-
parador de voltajes. Por lo general, la salida del comparador TH es de un voltaje bajo
(0 lógico) pero cambia a un voltaje alto (1 lógico) cuando VT excede a VTR, lo cual
indica que la temperatura del proceso es demasiado alta. Para la medición de pre-
sión se utiliza un arreglo similar, de manera que su salida asociada del comparador
PH cambie de BAJO a ALTO cuando la presión es demasiado alta.
Dado que se quiere que la alarma se active cuando la temperatura o la presión estén
demasiado altas, es indudable que las dos salidas del comparador pueden alimen-
tarse a una compuerta OR. Por ende, la salida de la compuerta OR cambia a ALTO
(1) para cualquiera de las dos condiciones de alarma activándola. Es obvio que esta
misma idea puede extenderse a situaciones con más de dos variables del proceso.
EJEMPLO 3-1
FIGURA 3-4 Ejemplo
del uso de una
compuerta OR en un
sistema de alarma.
Transductor
de presión
Proceso químico
Comparador
Alarma
VT
VTR
VP
VPR
Comparador
TH
PH
Transductor
de
temperatura
Determine la salida de la compuerta OR de la figura 3-5. Las entradas A y B de
la compuerta OR están variando de acuerdo con los diagramas de tiempos que se
muestran. Por ejemplo, A empieza en nivel BAJO en el tiempo t0, cambia a ALTO en
t1, regresa a BAJO en t3 y así sucesivamente.
Solución
La salida de la compuerta OR estará en ALTO siempre que cualquiera de las entra-
das esté en ALTO. Entre los tiempos t0 y t1 ambas entradas están en BAJO, por lo
cual SALIDA  BAJO. En t1 la entrada A cambia a ALTO mientras que la entrada B
permanece en BAJO. Esto hace que SALIDA cambie a ALTO en t1 y permanezca así
hasta t4, ya que durante este intervalo una o ambas entradas están en ALTO. En t4 la
entrada B cambia de 1 a 0, por lo que ambas entradas están en BAJO haciendo que
SALIDA cambie nuevamente a BAJO. En t5 A cambia a ALTO, con lo cual SALIDA
regresa a BAJO y permanece así durante el resto del tiempo mostrado.
Para la situación que se describe en la figura 3-6, determine la forma de onda en la
salida de la compuerta OR.
Solución
Las tres entradas A, B y C de la compuerta OR están variando, según se muestra en
sus diagramas de tiempos. La salida de la compuerta OR se determina concluyendo
EJEMPLO 3-2
Salida=A + B
A
t0 t1 t2 t3 t4 t5 t6 t7
Tiempo
A
B 1
0
Salida
1
0
0
1
B
FIGURA 3-5 Ejemplo
3-2.
EJEMPLO 3-3A
FIGURA 3-6 Ejemplos
3-3A y B.
A + B + C
A
C
B
Tiempo
SAL
A
B
C
0
SAL
1
0
1
0
1
0
1
t1
SECCIÓN 3-3/OPERACIÓN OR CON COMPUERTAS OR 61
62 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
PREGUNTAS DE REPASO
que estará en ALTO cada vez que al menos una de las tres entradas esté en un nivel
ALTO. Si utilizamos este razonamiento, la forma de onda de la salida de la compuer-
ta OR es como se muestra en la figura. Se debe poner especial atención a lo que
ocurre en el tiempo t1. El diagrama muestra que, en ese instante, la entrada A está
cambiando de ALTO a BAJO mientras que la entrada B está cambiando de BAJO a
ALTO. Como estas entradas están realizando sus transiciones casi al mismo tiempo,
y como estas transiciones tardan cierta cantidad de tiempo, hay un pequeño inter-
valo durante el cual estas entradas de la compuerta OR se encuentran en la región
indefinida entre 0 y 1. Cuando esto ocurre, la salida de la compuerta OR también
adquiere un valor en este intervalo, como se puede ver por la deformación o pico
en la forma de onda de salida en t1. La ocurrencia de esta deformación y su tamaño
(amplitud y anchura) dependen de la velocidad con la que ocurren las transiciones
de entrada.
¿Qué le pasaría a la deformación en la salida de la figura 3-6 si la entrada C se asen-
tara en el estado ALTO mientras que A y B estuvieran cambiando en el tiempo t1?
Solución
Con la entrada C en nivel ALTO en t1 la salida de la compuerta OR permanecerá en
ese estado sin importar lo que ocurra en las otras entradas, ya que cualquier entrada
en ALTO mantendrá la salida de la compuerta OR en ALTO. Por lo tanto, la deforma-
ción no aparecerá en la salida.
1. ¿Cuál es el único conjunto de condiciones de entrada que producirá una salida
en BAJO para cualquier compuerta OR?
2. Escriba la expresión booleana para una compuerta OR de seis entradas.
3. Si la entrada A en la figura 3-6 se mantiene de manera permanente en el nivel 1,
¿cuál será la forma de onda de salida?
3-4 OPERACIÓN AND CON COMPUERTAS AND
La operación AND es la segunda operación booleana básica. Como ejemplo del uso
de la lógica AND, considere una secadora de ropa ordinaria: seca ropa (calienta y
gira) sólo si el temporizador está por encima de cero “Y” la puerta está cerrada.Vamos a
asignar A para representar cuando el temporizador está activado, B para representar
cuando la puerta está cerrada y x puede representar cuando el calentador y el motor
están encendidos. La tabla de verdad de la figura 3-7(a) muestra lo que ocurre cuando
dos entradas lógicas A y B se combinan mediante el uso de la operación AND para
producir la salida x. La tabla muestra que x es un 1 lógico sólo cuando A y B están
en el nivel 1 lógico. Para cualquier caso en el que una de las entradas sea 0, la salida
será 0.
La expresión booleana para la operación AND es
x  A  B
En esta expresión, el signo  indica la operación AND booleana y no la operación
de multiplicación. No obstante, la operación AND sobre variables booleanas opera de
la misma forma que la multiplicación ordinaria según nos muestra el análisis de la
tabla de verdad, por lo que podemos considerarlas como iguales. Esta característica
puede ser útil al evaluar expresiones lógicas que contengan operaciones AND.
EJEMPLO 3-3B
La expresión x  A  B se lee como “x es igual a A AND B”, lo cual significa que
x será 1 sólo cuando A y B sean 1. Por lo general, se omite el signo  de manera que la
expresión se vuelve x  AB. Para el caso en el que se aplica la operación AND con tres
entradas, tenemos que x  A  B  C  ABC. Esto se lee como “x es igual a A AND B
AND C”, lo cual significa que x será 1 sólo cuando A y B y C sean todas 1.
Compuerta AND
La figura 3-7(b) muestra el símbolo lógico para una compuerta AND de dos entradas.
La salida de la compuerta AND es igual al producto AND de las entradas lógicas;
es decir, x  AB. En otras palabras, la compuerta AND es un circuito que opera de
manera que su salida esté en ALTO sólo cuando todas sus entradas se encuentren en
ALTO. Para todos los demás casos, la salida de la compuerta AND estará en BAJO.
Esta misma operación es característica de compuertas AND con más de dos
entradas. Por ejemplo, la figura 3-8 muestra una compuerta AND de tres entradas y
su tabla de verdad correspondiente. Una vez más, observe que la salida de la com-
puerta es 1 sólo para el caso en el que A  B  C  1. La expresión para la salida es
x  ABC. Para una compuerta AND de cuatro entradas, la salida es x  ABCD, y así
sucesivamente.
Observe la diferencia entre los símbolos para la compuerta AND y la compuer-
ta OR. Cada vez que vea el símbolo AND en el diagrama de un circuito lógico, le
indicará que la salida estará en ALTO sólo cuando todas las entradas estén en ALTO.
Cada vez que vea el símbolo OR, le indicará que la salida estará en ALTO cuando
cualquiera de sus entradas esté en ALTO.
Resumen de la operación AND
1. La operación AND se realiza de la misma forma que la multiplicación ordinaria
de 1s y 0s.
2. Una compuerta AND es un circuito lógico que realiza la operación AND sobre
las entradas.
3. La salida de una compuerta AND será 1 sólo para el caso en el que todas las
entradas sean 1; para todos los demás casos la salida será 0.
4. La expresión x  AB se lee como “x es igual a A AND B”.
A
0
0
1
1
B
0
1
0
1
x = A • B
0
0
0
1
A
B
(a) (b)
x = AB
AND
Compuerta AND
FIGURA 3-7 (a) Tabla
de verdad para la
operación AND;
(b) símbolo de la
compuerta AND.
SECCIÓN 3-4/OPERACIÓN AND CON COMPUERTAS AND 63
FIGURA 3-8 Tabla de
verdad y símbolo para
una compuerta AND de
tres entradas.
A
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
x = ABC
0
0
0
0
0
0
0
1
A
C
x = ABC
B
64 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
Determine la salida x de la compuerta AND en la figura 3-9, para las formas de onda
de entrada dadas.
Solución
La salida de una compuerta AND se determina con base en la consideración de
que estará en ALTO sólo cuando todas las entradas se encuentren en ALTO al mis-
mo tiempo. Para las formas de onda de entrada dadas, la condición se cumple sólo
durante los intervalos t2 t3 y t6t7. En todos los demás intervalos, sólo una o más
de las entradas son 0, con lo cual se produce una salida en BAJO. Observe que los
cambios en el nivel de entrada que se producen mientras la otra entrada está en
BAJO no tienen efecto sobre la salida.
Determine la forma de onda de salida para la compuerta AND que se muestra en la
figura 3-10.
Solución
La salida x será 1 sólo cuando A y B se encuentren en ALTO al mismo tiempo. Si nos
basamos en este hecho podemos determinar la forma de onda de x como se muestra
en la figura.
Observe que la forma de onda de x es 0 siempre que B es 0, sin importar el nivel
de la señal en A. Observe también que siempre que B es 1, la forma de onda de x es
igual que la de A. En consecuencia podemos considerar la entrada B como una entra-
da de control cuyo nivel lógico determina si la forma de onda de A pasa o no hacia la
salida x. En esta situación, la compuerta AND se utiliza como un circuito inhibidor.
Podemos decir que B  0 es la condición de inhibición que produce una salida de 0.
Por otro lado, B  1 es la condición de habilitación, la cual permite que A llegue a la
salida. Esta operación de inhibición es una aplicación importante de las compuertas
AND, que veremos más adelante con mayor detalle.
¿Cómo se modifica la forma de onda de la salida x en la figura 3-10 si la entrada B
se mantiene en el nivel 0?
Solución
Con B en BAJO, la salida x también permanecerá en BAJO. Esto puede razonarse de
dos maneras distintas. Primero, con B  0 tenemos que x  AB  A0  0, ya que
EJEMPLO 3-4
FIGURA 3-9 EJEMPLO
3-4.
A
B
x = AB
t0 t1 t2 t3
0
1
0
1
0
1
A
B
x
t4 t5 t6 t7
EJEMPLO 3-5A
A
B
A
B
x
x
FIGURA 3-10 Ejemplos 3-5A y 3-5B.
EJEMPLO 3-5B
PREGUNTAS DE REPASO
cualquier cosa que se multiplique por 0 (AND) será igual a 0. Otra manera de ver
esto es que una compuerta AND requiere que todas las entradas estén en ALTO para
que la salida esté en ALTO, y esto no puede ocurrir si B se mantiene en BAJO.
1. ¿Cuál es la única combinación de entrada que producirá un nivel ALTO en la
salida de una compuerta AND de cinco entradas?
2. ¿Qué nivel lógico debe aplicarse a la segunda entrada de una compuerta AND
de dos entradas si se desea inhibir la señal lógica en la primera entrada para
evitar que llegue a la salida?
3. Verdadero o falso: la salida de una compuerta AND siempre será distinta de la
salida de una compuerta OR para las mismas condiciones de entrada.
3-5 OPERACIÓN NOT
La operación NOT es distinta de las operaciones OR y AND, ya que puede realizarse
sobre una sola variable de entrada. Por ejemplo, si la variable A está sujeta a la ope-
ración NOT, el resultado x puede expresarse así:
x  A
En donde la barra superior representa la operación NOT. Esta expresión se lee como
“x es igual a NOT A” o “x es igual al inverso de A” o “x es igual al complemento de A”.
Cada una de estas expresiones es de uso común y todas indican que el valor lógico
de x  A es el opuesto del valor lógico de A. La tabla de verdad de la figura 3-11(a)
aclara esto para los dos casos en que A  0 y A  1. Esto es,
0  1 porque 0 no es 1
y
1  0 porque 1 no es 0
La operación NOT también se conoce como inversión o complementación, términos
que utilizaremos de manera indistinta en este libro. Aunque siempre utilizaremos el
indicador de barra superior para representar la inversión, es importante mencionar
que el símbolo primo () es otro indicador para la inversión. Esto es,
A  A
Ambos deben reconocerse como símbolos que indican la operación de inversión.
FIGURA 3-11 (a) Tabla
de verdad; (b) símbolo
para el INVERSOR
(compuerta NOT);
(c) ejemplos de formas
de onda.
A
0
1
x = A
1
0
1
0
A
1
0
x
(c)
La presencia de un
círculo pequeño siempre
denota la inversión
(b)
A x = A
(a)
NOT
NOT
SECCIÓN 3-5/OPERACIÓN NOT 65
66 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
PREGUNTAS DE REPASO
Circuito NOT (INVERSOR)
La figura 3-11(b) muestra el símbolo para un circuito NOT, al cual se le conoce más
comúnmente como INVERSOR. Este circuito siempre tiene una sola entrada y su
nivel lógico de salida siempre es opuesto al nivel lógico de esta entrada. La figura
3-11(c) muestra la forma en que el INVERSOR afecta a una señal de entrada. Invier-
te (complementa) la señal de entrada en todos los puntos de la forma de onda, por
lo que siempre que la entrada  0, la salida  1, y viceversa.
La figura 3-12 muestra una aplicación ordinaria de la compuerta NOT. El botón está
cableado para producir un 1 lógico (verdadero) cuando se oprime. Algunas veces es
conveniente saber si el botón no está oprimido, por lo que este circuito proporciona
una expresión que es verdadera cuando el botón no está oprimido.
Resumen de las operaciones booleanas
Las reglas para las operaciones OR, AND y NOT pueden resumirse de la siguiente
manera:
OR AND NOT
0  0  0 0  0  0 0  1
0  1  1 0  1  0 1  0
1  0  1 1  0  0
1  1  1 1  1  1
1. La salida del INVERSOR de la figura 3-11 está conectada a la entrada de un
segundo INVERSOR. Determine el nivel de salida del segundo INVERSOR para
cada nivel de entrada A.
2. La salida de la compuerta AND de la figura 3-7 está conectada a la entrada de
un INVERSOR. Escriba la tabla de verdad que muestre la salida, y, del INVER-
SOR para cada combinación de entradas A y B.
3-6 DESCRIPCIÓN DE CIRCUITOS LÓGICOS EN FORMA
ALGEBRAICA
Cualquier circuito lógico, sin importar qué tan complejo sea, puede describirse por
completo mediante el uso de las tres operaciones booleanas básicas ya que las com-
puertas OR, AND y el circuito NOT son los bloques fundamentales para la construc-
APLICACIÓN 3-1
Nivel lógico 1 (verdadero) cuando está oprimido
(falso cuando el botón no está oprimido).
Oprimido
+5 V
Botón
No oprimido
Nivel lógico 1 (verdadero) cuando no está oprimido
(falso cuando el botón está oprimido).
FIGURA 3-12 Una
compuerta NOT que
indica que un botón no
está oprimido cuando su
salida es verdadera.
ción de sistemas digitales. Por ejemplo, considere el circuito de la figura 3-13(a),
el cual tiene tres entradas A, B y C, y una sola salida x. Si utilizamos la expresión
booleana para cada compuerta podemos determinar con facilidad la expresión para
la salida.
La expresión para la salida de la compuerta AND se escribe como A  B. Esta
salida AND está conectada como entrada para la compuerta OR junto con C, otra
entrada. La compuerta OR opera sobre sus entradas de manera que su salida es la
suma OR de las entradas. Por lo tanto, podemos expresar la salida OR como x  AB
 C. Esta expresión final podría haberse escrito también como x  C  AB, ya que
no importa cuál término de la suma OR se escriba primero.
Precedencia de operadores
En ocasiones puede haber confusión acerca de cuál operación debe llevarse a cabo
primero en una expresión. La expresión A  B  C puede interpretarse de dos mane-
ras: (1) Se aplica un OR entre A  B y el término C; o (2) Se aplica un AND entre A
y el término B  C. Para evitar esta confusión debe quedar claro que si una expre-
sión contiene las operaciones AND y OR, la operación AND se realiza primero, a
menos que haya paréntesis en la expresión, en cuyo caso la operación encerrada
entre paréntesis es la que se debe realizar primero. Esta regla es la misma que se
utiliza en el álgebra ordinaria para determinar el orden de las operaciones.
Para ilustrar mejor este concepto, considere el circuito de la figura 3-13(b). La
expresión para la salida de la compuerta OR es A  B. Esta salida sirve como entra-
da para la compuerta AND junto con otra entrada C. Por ende, expresamos la salida
de la compuerta AND como x  (A  B)  C. Observe el uso de los paréntesis aquí
para indicar que primero se aplica la operación OR entre A y B, antes de que a su
suma OR se le aplique un AND con C. Sin los paréntesis se interpretaría de manera
incorrecta, ya que A  BC significa que a la entrada A se le aplica un OR con el
producto B  C.
Circuitos que contienen INVERSORES
Siempre que haya un INVERSOR presente en el diagrama de un circuito lógico, la
expresión de su salida es en sí igual a la expresión de la entrada con una barra sobre
ella. La figura 3-14 muestra dos ejemplos que utilizan INVERSORES. En la figura
3-14(a) la entrada A se alimenta a través de un INVERSOR, cuya salida es, por lo
tanto A. La salida del INVERSOR se alimenta a una compuerta OR junto con B, de
manera que la salida OR es igual a A  B. Observe que la barra sólo está sobre A,
lo cual indica que A primero se invierte y después se alimenta a la compuerta OR
junto con B.
SECCIÓN 3-6/DESCRIPCIÓN DE CIRCUITOS LÓGICOS EN FORMA ALGEBRAICA 67
A
B x = A • B + C
C
A • B
(a)
A
B x = (A + B) • C
C
A + B
(b)
FIGURA 3-13 (a)
Circuito lógico con su
expresión booleana.
(b) Circuito lógico cuya
expresión requiere
paréntesis.
A
B
A
B x = A + B
A + B
(b)
(a)
x = A + B
A
FIGURA 3-14
Circuitos que utilizan
INVERSORES.
68 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
PREGUNTAS DE REPASO
En la figura 3-14(b) la salida de la compuerta OR es igual a A  B y se ali-
menta a través de un INVERSOR. Por lo tanto, la salida del INVERSOR es igual a
(A  B) ya que invierte toda la expresión de entrada. Observe que la barra cubre toda
la expresión (A  B). Esto es importante ya que, como veremos más adelante, las
expresiones (A  B) y (A  B) no son equivalentes. La expresión (A  B) indica que
primero se aplica un OR entre A y B, y después su suma OR se invierte, mientras
que la expresión (A  B) indica que primero se invierten A y B, y después se aplica
un OR a los resultados de las dos inversiones.
La figura 3-15 muestra dos ejemplos más, que deben estudiarse con cuidado.
Note el uso de dos conjuntos separados de paréntesis en la figura 3-15(b). Observe
además en la figura 3-15(a) que la variable de entrada A está conectada como entra-
da para dos compuertas distintas.
1. En la figura 3-15(a) cambie cada compuerta AND por una compuerta OR, y cam-
bie la compuerta OR por una compuerta AND. Después escriba la expresión
para la salida x.
2. En la figura 3-15(b) cambie cada compuerta AND por una compuerta OR y cada
compuerta OR por una compuerta AND. Después escriba la expresión para la
salida x.
3-7 EVALUACIÓN DE LAS SALIDAS DE CIRCUITOS LÓGICOS
Una vez que tengamos la expresión booleana para un circuito lógico, podremos obte-
ner el nivel lógico de salida para cualquier conjunto de niveles de entrada. Por
ejemplo, suponga que deseamos conocer el nivel lógico de la salida x del circuito
de la figura 3-15(a), para el caso en el que A  0, B  1, C  1 y D  1. Como en el
álgebra ordinaria, podemos encontrar el valor de x si “conectamos” los valores de
A
B
C
A
D
A
B
C
D
E
A + B
A + D
A
ABC
A + D
(a)
x = ABC ( A + D)
(A + B)C (A + B)C
(b)
D + (A + B)C
x = [D + (A + B)C] • E
FIGURA 3-15 Más ejemplos.
las variables en la expresión y realizamos las operaciones indicadas como se mues-
tra a continuación:
Como otro ejemplo, vamos a evaluar la salida del circuito de la figura 3-15(b) para
A  0, B  0, C  0, D  1 y E  1.
En general, siempre debemos seguir las siguientes reglas cuando se evalúa una
expresión booleana:
1. Primero realice todas las inversiones de términos individuales; es decir, 0  1 o
1  0.
2. Después realice todas las operaciones que estén encerradas entre paréntesis.
3. Realice una operación AND antes de una operación OR, a menos que haya
paréntesis que indiquen lo contrario.
4. Si una expresión tiene una barra sobre ella, primero realice las operaciones
dentro de la expresión y después invierta el resultado.
Como práctica, determine las salidas de ambos circuitos de la figura 3-15 para
el caso en el que todas las entradas sean 1. Las respuestas son x  0 y x  1, respec-
tivamente.
Análisis mediante el uso de una tabla
Siempre que tenga un circuito lógico combinacional y desee saber cómo funciona, la
mejor manera de analizarlo es mediante el uso de una tabla de verdad. Las ventajas
de este método son:
Le permite analizar una compuerta o combinación lógica a la vez.
Le facilita una segunda comprobación de su trabajo.
Cuando termine tendrá una tabla que será de un beneficio incalculable cuando
se busquen fallas en el circuito lógico.
Recuerde que una tabla de verdad lista todas las posibles combinaciones de las
entradas en orden numérico. Para cada combinación posible de entrada, podemos
determinar el estado lógico en cada punto (nodo) del circuito lógico, incluyendo la
salida. Consulte la figura 3-16(a). Hay varios nodos intermedios en este circuito, los
cuales no son entradas ni salidas. Tan sólo son conexiones entre la salida de una
compuerta y la entrada de otra. En este diagrama se han etiquetado como u, v y w.
El primer paso después de listar todas las combinaciones de entradas es crear una
columna en la tabla de verdad para cada señal intermedia (nodo), como se muestra
en la figura 3-16(b). El nodo u se ha llenado como el complemento de A.
= 0
= 1 # 1 # 1 # 0
= 1 # 1 # 1 # (1)
= 1 # 1 # 1 # (0 + 1)
= 0 # 1 # 1 # (0 + 1)
x = ABC(A + D)
= 1
= 1 # 1
= [1 + 1] # 1
= [1 + 0] # 1
= [1 + 0 # 1] # 1
= [1 + (0 + 0) # 1] # 1
x = [D + (A + B)C] # E
SECCIÓN 3-7/EVALUACIÓN DE LAS SALIDAS DE CIRCUITOS LÓGICOS 69
70 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
u = A
v = AB
x
A
B
C
w = BC
A B C u=
A
v=
AB
w=
BC
x=
v+w
0 0 1
0 0 1
0 1 1
0 1 1
1 0 0
1 0 0
1 1 0
1 1
0
1
0
1
0
1
0
1 0
(b)
A B C u=
A
v=
AB
w=
BC
x=
v+w
(c)
0 0 0 1 0
0 0 1 1 0
0 1 0 1 1
0 1 1 1 1
1 0 0 0 0
1 0 1 0 0
1 1 0 0 0
1 1 1 0 0
A B C u=
A
v=
AB
w=
BC
x=
v+w
0 0 0 1 0 0
0 0 1 1 0 0
0 1 0 1 1 0
0 1 1 1 1 1
1 0 0 0 0 0
1 0 1 0 0 0
1 1 0 0 0 0
1 1 1 0 0 1
(d)
0 0 0 0 0
0 1 0 0 0
0 0 1 0 1
0 1 1 1 1
1 0 0 0 0
1 1 0 0 0
1 0 0 0 0
1
0
0
1
1
0
0
1
1 1
1
1
1
1
0
0
0
0 0 1 1
A B C u=
A
v=
AB
w=
BC
x=
v+w
(e)
(a)
El siguiente paso es llenar los valores para la columna v, como se muestra
en la figura 3-16(c). Del diagrama podemos ver que v  AB. El nodo v debe estar en
ALTO cuando A (nodo u) está en ALTO Y B está en ALTO. Esto ocurre cada vez que
A está en BAJO Y B está en ALTO. El tercer paso es predecir los valores en el nodo
w, que es el producto lógico de BC. Esta columna está en ALTO cada vez que B está
en ALTO Y C está en ALTO, como se muestra en la figura 3-16(d). El último paso es
combinar en forma lógica las columnas v y w para predecir la salida x. Como x  v
 w, la salida x estará en ALTO cuando v esté en ALTO O w esté en ALTO, como se
muestra en la figura 3-16(e).
Si usted construyera este circuito y no se produjera la salida correcta para x
bajo todas las condiciones, podría utilizar esta tabla para encontrar el problema.
El procedimiento general es probar el circuito bajo cada combinación de entradas.
Si cualquier combinación de entradas produce una salida incorrecta (es decir, una
falla), compare el estado lógico actual de cada nodo intermedio en el circuito con
el valor teórico correcto en la tabla mientras aplica esa condición de entrada. Si el
estado lógico para un nodo intermedio es correcto, el problema debe estar más a la
derecha de ese nodo. Si el estado lógico de un nodo intermedio es incorrecto, el pro-
blema debe estar a la izquierda de ese nodo (o ese nodo está en corto con algo). En
el capítulo 4 veremos con más detalle los procedimientos de detección de errores y
las posibles fallas en los circuitos.
FIGURA 3-16 Análisis
de un circuito lógico
mediante el uso de
tablas de verdad.
PREGUNTAS DE REPASO
Analice la operación de la figura 3-15(a) mediante la creación de una tabla que
muestre el estado lógico en cada nodo del circuito.
Solución
Para llenar la columna t, escriba un 1 para todas las entradas en las que A  0
Y B  1 y C  1.
Para llenar la columna u, escriba un 1 para todas las entradas en las que A  1
O D  1.
Para llenar la columna v, complete todas las entradas de la columna u.
Para llenar la columna x, escriba un 1 para todas las entradas en las que t  1
y v  1.
1. Use la expresión de x para determinar la salida del circuito de la figura 3-15(a),
para las condiciones en que A  0, B  1, C  1 y D  0.
2. Use la expresión de x para determinar la salida del circuito de la figura 3-15(b),
para las condiciones en que A  B  E  1 y C  D  0.
3. Determine las respuestas a las preguntas 1 y 2 encontrando los niveles lógicos
presentes en la salida de cada compuerta mediante el uso de una tabla, como en
la figura 3-16.
3-8 IMPLEMENTACIÓN DE CIRCUITOS A PARTIR DE
EXPRESIONES BOOLEANAS
Cuando la operación de un circuito se define mediante una expresión booleana,
podemos dibujar el diagrama de un circuito lógico de manera directa a partir de esa
expresión. Por ejemplo, si necesitáramos un circuito que estuviera definido por x 
A  B  C, de inmediato sabríamos que todo lo que se requiere es una compuerta AND
de tres entradas. Si necesitáramos un circuito definido por x  A  B, utilizaríamos
una compuerta OR de dos entradas con un INVERSOR en una de ellas. El mismo
razonamiento que se utiliza para estos casos puede extenderse hacia circuitos más
complejos.
EJEMPLO 3-6
A B C D t  u  A  D v  x  tv
0 0 0 0 0 0 1 0
0 0 0 1 0 1 0 0
0 0 1 0 0 0 1 0
0 0 1 1 0 1 0 0
0 1 0 0 0 0 1 0
0 1 0 1 0 1 0 0
0 1 1 0 1 0 1 1
0 1 1 1 1 1 0 0
1 0 0 0 0 1 0 0
1 0 0 1 0 1 0 0
1 0 1 0 0 1 0 0
1 0 1 1 0 1 0 0
1 1 0 0 0 1 0 0
1 1 0 1 0 1 0 0
1 1 1 0 0 1 0 0
1 1 1 1 0 1 0 0
A  D
ABC
SECCIÓN 3-8/IMPLEMENTACIÓN DE CIRCUITOS A PARTIR DE EXPRESIONES. . . 71
72 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
Suponga que deseamos construir un circuito cuya salida sea y  AC  BC  ABC.
Esta expresión booleana contiene tres términos (AC, BC, ABC), a los cuales se les
aplica una operación OR. Esto nos indica que se requiere una compuerta OR de tres
entradas, en donde éstas son iguales a AC, BC y ABC. En la figura 3-17(a) se ilustra
esto, en donde está dibujada una compuerta OR de tres entradas etiquetadas como
AC, BC y ABC.
Cada entrada de la compuerta OR es un término del producto de AND, lo cual
significa que puede usarse una compuerta AND con las entradas apropiadas para
generar cada uno de estos términos. Esto se muestra en la figura 3-17(b), que corres-
ponde al diagrama del circuito final. Observe el uso de INVERSORES para producir
los términos A y C requeridos en la expresión.
Siempre puede seguirse este mismo enfoque general, aunque más adelante
veremos que existen técnicas más inteligentes y eficientes. No obstante, por ahora
utilizaremos este método simple y directo para minimizar el número de elementos
nuevos que deberá aprender.
Dibuje el diagrama del circuito para implementar la expresión x  (A  B)(B  C).
Solución
Esta expresión muestra que los términos A  B y B  C son entradas para una com-
puerta AND, y cada uno de estos términos se genera a partir de una compuerta OR
separada. La figura 3-18 muestra un dibujo del resultado.
AC
ABC
BC y = AC + BC + ABC
(a)
y = AC + BC + ABC
A
B
C
C
A
B
AC
ABC
BC
(b)
C
C
B
FIGURA 3-17
Construcción de un
circuito lógico a partir
de una expresión
booleana.
EJEMPLO 3-7
A
B
C
A + B
B + C
B
x = (A + B)(B + C)
FIGURA 3-18 Ejemplo
3-7.
PREGUNTAS DE REPASO 1. Dibuje el diagrama del circuito que implemente la expresión x  ABC(A  D)
mediante el uso de compuertas con no más de tres entradas.
2. Dibuje el diagrama del circuito para la expresión y  AC  BC  ABC.
3. Dibuje el diagrama del circuito para x  [D  (A  B)C)]  E.
3-9 COMPUERTAS NORY NAND
En los circuitos digitales se utilizan mucho otros dos tipos de compuertas lógicas:
NOR y NAND. Estas compuertas combinan las operaciones básicas AND, OR y NOT,
por lo que es muy sencillo escribir sus expresiones booleanas.
Compuerta NOR
La figura 3-19(a) muestra el símbolo para una compuerta NOR de dos entradas. Es
igual que el símbolo de la compuerta OR, sólo que tiene un pequeño círculo en la
salida. El pequeño círculo representa la operación de inversión. Por ello, la compuer-
ta NOR opera de manera similar a una compuerta OR seguida de un INVERSOR, de
manera que los circuitos en las figuras 3-19(a) y (b) son equivalentes, y la expresión
de salida para la compuerta NOR es x  A  B.
La tabla de verdad de la figura 3-19(c) muestra que la salida de la compuerta
NOR es el inverso exacto de la salida de la compuerta OR para todas las posibles
condiciones de entrada. La salida de una compuerta OR cambia a ALTO cuando cual-
quiera de sus entradas se encuentra en ALTO; la salida de la compuerta NOR cambia
a BAJO cuando cualquiera de sus entradas se encuentra en ALTO. Esta misma opera-
ción puede aplicarse a las compuertas NOR con más de dos entradas.
A
0
0
1
1
B
0
1
0
1
A + B
0
1
1
1
A + B
1
0
0
0
A
B
Indica
inversión
(a)
(b)
OR NOR
(c)
x = A + B
A + B
A
B
x = A + B
FIGURA 3-19 (a) símbolo NOR;
(b) circuito equivalente; (c) tabla de
verdad.
SECCIÓN 3-9/COMPUERTAS NOR Y NAND 73
74 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
Determine la forma de onda en la salida de una compuerta NOR para las formas de
onda de entrada que se muestran en la figura 3-20.
Solución
Una manera de determinar la forma de onda de salida NOR es encontrando primero
la forma de onda de salida OR y luego invirtiéndola (cambiar todos los 1s por 0s y
viceversa). Otro sistema utiliza el hecho de que la salida de una compuerta NOR
estará en ALTO sólo cuando todas sus entradas estén en BAJO. Por lo tanto, pue-
de examinar las formas de onda de entrada, encontrar esos intervalos en los que
todas están en BAJO, y hacer que la salida de la compuerta NOR esté en ALTO para
esos intervalos. La salida de la compuerta NOR estará en BAJO para todos los demás
intervalos. La figura muestra la forma de onda de salida resultante.
Determine la expresión booleana para una compuerta NOR de tres entradas, segui-
da de un INVERSOR.
Solución
Consulte la figura 3-21, en donde se muestra el diagrama del circuito. La expresión
en la salida de la compuerta NOR es (A  B  C), la cual se alimenta después a tra-
vés de un INVERSOR para producir
La presencia de los signos de doble inversión indica que se invirtió la cantidad (A 
B  C) y se invirtió una vez más. Debe quedar claro que esto sólo hace que la expre-
sión (A  B  C) permanezca sin cambios. Esto es,
Siempre que hay dos barras de inversión sobre la misma variable o cantidad, una
cancela a la otra, como en el ejemplo anterior. No obstante, en casos tales como
A  B las barras de inversión no se cancelan. Esto se debe a que las barras de inver-
sión más pequeñas invierten las variables individuales A y B, mientras que la barra
larga invierte la cantidad (A  B). En consecuencia, A  B 	 A  B. De manera
similar, A B 	 AB.
EJEMPLO 3-8
EJEMPLO 3-9
x = (A + B + C)
x = (A + B + C) = (A + B + C)
FIGURA 3-21 Ejemplo 3-9. A
C
B
A + B + C x = A + B + C = A + B + C
FIGURA 3-20 Ejemplo
3-8.
A
B
x = A + B
1
0
A
1
0
B
1
0
x
Compuerta NAND
La figura 3-22(a) muestra el símbolo para una compuerta NAND de dos entradas. Es
el mismo que el de la compuerta AND más un pequeño círculo en la salida. De nue-
vo, este pequeño círculo denota la operación de inversión. Así, la compuerta NAND
opera igual que una compuerta AND seguida de un INVERSOR, de manera que los
circuitos de la figura 3-22(a) y (b) son equivalentes y la expresión de salida para la
compuerta NAND es x  AB.
La tabla de verdad de la figura 3-22(c) muestra que la salida de la compuerta
NAND es el inverso exacto de la compuerta AND para todas las posibles condicio-
nes de entrada. La salida AND cambia a nivel ALTO sólo cuando todas las entradas
se encuentran en ALTO, mientras que la salida NAND cambia a BAJO sólo cuando
todas las entradas se encuentran en ALTO. Esta misma característica puede aplicar-
se a las compuertas NAND que tienen más de dos entradas.
Determine la forma de onda de salida de una compuerta NAND que tiene las entra-
das que se muestran en la figura 3-23.
Solución
Una manera es dibujar primero la forma de onda de salida para una compuerta
AND y después invertirla. Otra técnica utiliza el hecho de que una salida NAND
estará en BAJO sólo cuando todas las entradas estén en ALTO. De esta forma, puede
encontrar todos esos intervalos durante los cuales todas las entradas están en ALTO
y hacen que la salida NAND esté en BAJO para esos intervalos. La salida estará en
ALTO en todos los demás tiempos.
EJEMPLO 3-10
A
0
0
1
1
B
0
1
0
1
AB
0
0
0
1
(c)
AB
1
1
1
0
AND NAND
A
B
Indica
inversión
(a)
(b)
x = AB
A
B
AB AB
FIGURA 3-22
(a) Símbolo NAND;
(b) circuito equivalente;
(c) tabla de verdad.
SECCIÓN 3-9/COMPUERTAS NOR Y NAND 75
A
B
x
x = AB
A
B
FIGURA 3-23 Ejemplo
3-10.
76 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
PREGUNTAS DE REPASO
Implemente el circuito lógico que tiene la expresión x  AB  (C  D) utilizando sólo
compuertas NOR y NAND.
Solución
El término (C  D) es la expresión para la salida de una compuerta NOR. A este tér-
mino se le aplica la operación NAND junto con A y B, y el resultado se invierte; ésta
es, desde luego, la operación NAND. Así, el circuito se implementa como se muestra
en la figura 3-24. Observe que la compuerta NAND primero aplica un AND a los tér-
minos A, B y (C  D), y después invierte todo el resultado.
Determine el nivel de salida de la figura 3-24 cuando A  B  C  1 y D  0.
Solución
En el primer método utilizamos la expresión para x.
En el segundo método, anotamos los niveles lógicos de entrada en el diagrama del
circuito (los cuales se muestran en gris en la figura 3-24) y seguimos estos niveles a
través de cada compuerta, hasta la salida final. La compuerta NOR tiene entradas
de 1 y 0 para producir una salida de 0 (un OR hubiera producido una salida de 1).
Entonces la compuerta NAND tiene niveles de entrada de 0, 1 y 1 para producir una
salida de 1 (al igual que AND hubiera producido una salida de 0).
1. ¿Cuál es el único conjunto de condiciones de entrada que producirá una salida
en ALTO en una compuerta NOR de tres entradas?
2. Determine el nivel de salida en la figura 3-24 cuando A  B  1, C  D  0.
3. Cambie la compuerta NOR de la figura 3-24 por una compuerta NAND y cam-
bie la compuerta NAND por una compuerta NOR. ¿Cuál es la nueva expresión
para x?
3-10 TEOREMAS BOOLEANOS
Hemos visto cómo puede utilizarse el álgebra booleana para ayudar a analizar un cir-
cuito lógico y expresar su operación en forma matemática. Para continuar con nues-
tro estudio del álgebra booleana vamos a investigar los diversos teoremas booleanos
(también conocidos como reglas booleanas) que pueden ayudarnos a simplificar las
EJEMPLO 3-11
C
D
1
0
C + D
x = AB(C + D)
1
1
1
0
B
A
FIGURA 3-24
Ejemplos 3-11 y 3-12.
EJEMPLO 3-12
= 0 = 1
= 1 # 1 # 0
= 1 # 1 # (1)
= 1 # 1 # (1 + 0)
x = AB(C + D)
expresiones lógicas y los circuitos lógicos. El primer grupo de teoremas se muestra
en la figura 3-25. En cada teorema, x es una variable lógica que puede ser un 0 o un 1.
Cada teorema se acompaña por el diagrama de un circuito lógico que demuestra su
validez.
El teorema (1) establece que si se aplica un AND entre cualquier variable y 0,
el resultado es 0. Esto es fácil de recordar ya que la operación AND es como la mul-
tiplicación ordinaria, en donde sabemos que cualquier cantidad multiplicada por 0
es igual a 0. También sabemos que la salida de una compuerta AND será 0 siempre
que una entrada sea 0, sin importar el nivel en la otra entrada.
El teorema (2) también es obvio si se le compara con la multiplicación ordinaria.
El teorema (3) puede demostrarse si se prueba cada caso. Si x  0, entonces
0  0  0; si x  1 entonces 11  1. Por lo tanto, xx  x.
El teorema (4) puede probarse de la misma forma. No obstante, también pode-
mos razonar que en cualquier momento ya sea x o su inverso, x, deben estar en el
nivel 0 y, por lo tanto, su producto AND siempre será 0.
El teorema (5) es bastante directo, ya que cualquier cantidad que se sume con 0
no afecta su valor, ya sea en la suma ordinaria o en la operación OR.
El teorema (6) establece que si se aplica un OR entre cualquier variable y 1, el
resultado siempre será 1. Comprobamos esto para ambos valores de x: 0  1  1 y
1  1  1.También es importante recordar que la salida de una compuerta OR será 1
cuando cualquiera de sus entradas sea 1, sin importar el valor de la otra entrada.
El teorema (7) puede probarse si se comprueban ambos valores de x: 0  0  0
y 1  1  1.
El teorema (8) puede probarse de manera similar, o basta con razonar que en
cualquier momento ya sea x o x estará en el nivel 1, de manera que siempre se esté
aplicando un OR entre 0 y 1, lo cual siempre produce un 1.
Antes de presentar más teoremas, debemos recalcar que cuando se aplican los
teoremas (1) a (8) la variable x puede llegar a representar una expresión que con-
tiene más de una variable. Por ejemplo, si tenemos que AB(AB), podemos invocar
el teorema (4) si hacemos que x  AB. Por ende, podemos decir que AB(AB). Esta
misma idea puede aplicarse al uso de cualquiera de los teoremas.
Teoremas con múltiples variables
Los teoremas que presentamos a continuación involucran más de una variable:
0
x
x
0
x
1
x
1
x
x
1
x
0
x
x
x
1
x
x
0
(1) x • 0 = 0
(2) x • 1 = x
(3) x • x = x
(4) x • x = 0
(5) x + 0 = x
(6) x + 1 = 1
(7) x + x = x
(8) x + x = 1
FIGURA 3-25 Teoremas con una sola variable.
(9) x  y  y  x
(10) x # y = y # x
SECCIÓN 3-10/TEOREMAS BOOLEANOS 77
78 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
Los teoremas (9) y (10) se conocen como leyes conmutativas, ya que indican que el
orden en el que se aplican las operaciones OR y AND a dos variables no importa;
el resultado es el mismo.
Los teoremas (11) y (12) son las leyes asociativas, las cuales establecen que pode-
mos agrupar las variables en una expresión AND o en una expresión OR de cual-
quier forma que necesitemos.
El teorema (13) es la ley distributiva, la cual establece que para expandir una
expresión se multiplica término por término, de igual forma que en el álgebra ordi-
naria. Este teorema también indica que podemos factorizar una expresión. Esto es,
si tenemos una suma de dos (o más) términos, cada uno de los cuales contiene una
variable común, esta variable común puede factorizarse de igual forma que en el
álgebra ordinaria. Por ejemplo, si tenemos la expresión ABC  A B C podemos facto-
rizar la variable B:
Como otro ejemplo, considere la expresión ABC  ABD. Aquí los dos términos tienen
en común las variables A y B, por lo que AB puede factorizarse de ambos términos.
Esto es,
Los teoremas (9) a (13) son fáciles de recordar y de utilizar, ya que son idénticos
a los del álgebra ordinaria. Por otro lado, los teoremas (14) y (15) no tienen contra-
partes en el álgebra ordinaria. Para demostrar cada uno de ellos hay que probar
todos los casos posibles para x y y. Para ilustrar lo anterior (para el teorema 14)
vamos a crear una tabla de análisis para la ecuación x  xy, como se muestra a con-
tinuación:
Observe que el valor de toda la expresión (x  xy) es siempre el mismo que
para x.
El teorema (14) también puede demostrarse mediante la factorización y el uso
de los teoremas (6) y (2), como se muestra a continuación:
x  xy  x(1  y)
 x  1 [usando el teorema (6)]
 x [usando el teorema (2)]
Todos estos teoremas booleanos pueden ser útiles para simplificar una expre-
sión lógica; es decir, para reducir el número de términos en la expresión. Con esto,
la expresión reducida produce un circuito que es menos complejo que el que habría
producido la expresión original. Una buena porción del siguiente capítulo estará
dedicada al proceso de simplificación de los circuitos. Por ahora, los siguientes
(11) x  (y  z)  (x  y)  z  x  y  z
(12) x(yz)  (xy)z  xyz
(13a) x(y  z)  xy  xz
(13b) (w  x)(y  z)  wy  xy  wz  xz
(14) x  xy  x
(15a)
(15b) x + xy = x + y
x + xy = x + y
ABC + A BC = B(AC + A C)
ABC  ABD  AB(C  D)
x y xy x  xy
0 0 0 0
0 1 0 0
1 0 0 1
1 1 1 1
ejemplos servirán para ilustrar cómo pueden aplicarse los teoremas booleanos.
Nota: encontrará todos los teoremas booleanos en la parte interior de la cubierta
posterior del libro.
Simplifique la expresión y  ABD  AB D.
Solución
Factorice las variables comunes AB mediante el uso del teorema (13):
y  AB(D  D)
Si utilizamos el teorema (8), el término entre paréntesis es equivalente a 1. Así,
y  AB  1
 AB [utilizando el teorema (2)]
Simplifique la expresión z  (A  B)(A  B).
Solución
Podemos expandir la expresión si multiplicamos los términos [teorema (13)]:
z  A  A  A  B  B  A  B  B
Si invocamos el teorema (4), el término A  A  0. Además, B  B  B [teorema
(13)]:
z  0  A  B  B  A  B  AB  AB  B
Si factorizamos la variable B [teorema (13)] tenemos que:
z  B(A  A  1)
Por último, utilizando los teoremas (2) y (6),
z  B
Simplifique x  ACD  ABCD.
Solución
Si factorizamos las variables comunes CD, tenemos que
x  CD(A  AB)
Utilizando el teorema (15a) podemos sustituir A  AB por A  B, de manera que
x  CD(A  B)
 ACD  BCD
EJEMPLO 3-13
EJEMPLO 3-15
EJEMPLO 3-14
SECCIÓN 3-10/TEOREMAS BOOLEANOS 79
80 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
PREGUNTAS DE REPASO
1. Use los teoremas (13) y (14) para simplificar y  AC  ABC.
2. Use los teoremas (13) y (8) para simplificar y  A B C D  A B C D.
3. Use los teoremas (13) y (15b) para simplificar y  AD  ABD.
3-11 TEOREMAS DE DEMORGAN
Dos de los teoremas más importantes del álgebra booleana fueron aportación de un
gran matemático apellidado DeMorgan. Los teoremas de DeMorgan son extremada-
mente útiles para simplificar expresiones en las cuales se invierte un producto o la
suma de variables. Los dos teoremas son:
(16) (x  y)  x  y
(17) (x  y)  x  y
El teorema (16) establece que cuando se invierte la suma OR de dos variables,
es lo mismo que invertir cada variable en forma individual y después aplicar una
operación AND a estas dos variables invertidas. El teorema (17) establece que cuando
se invierte el producto AND de dos variables, es lo mismo que invertir cada varia-
ble en forma individual y después aplicar una operación OR a estas dos variables.
Cada uno de los teoremas de DeMorgan puede demostrarse con facilidad si se com-
prueban todas las posibles combinaciones para x y y. Dejaremos esta comprobación
como un ejercicio de final de capítulo.
Aunque estos teoremas están declarados en términos de las variables indivi-
duales x e y, son también válidos en situaciones en las que x y/o y son expresiones
que contienen más de una variable. Por ejemplo, vamos a aplicarlas a la expresión
(AB  C) como se muestra a continuación:
Aquí utilizamos el teorema (16) y tratamos a AB como x y a C como y. El resultado
puede simplificarse aún más ya que tenemos un producto AB que está invertido. Si
utilizamos el teorema (17), la expresión se convierte en
Ahora, si sustituimos B por B, al final nos queda
Este resultado final sólo contiene signos de inversión para invertir una sola variable.
Simplifique la expresión z  (A  C)  (B  D) en una en la que sólo haya variables
individuales invertidas.
Solución
Si utilizamos el teorema (17) y tratamos a (A  C) como x y a (B  D) como y, tene-
mos que
EJEMPLO 3-16
(AB + C) = (AB) # C
AB # C = (A + B) # C
(A + B) # C = AC + BC
z = (A + C) + (B + D)
En esta expresión se partió el signo inversor grande a la mitad y se cambió el signo
AND () por un signo OR ().Ahora el término (A  C) puede simplificarse mediante
la aplicación del teorema (16). El término (B  D) también puede simplificarse:
Aquí se partieron los signos inversores grandes de cada expresión a la mitad y se
cambiaron los () por (). Cancelando las dobles inversiones nos queda por último
El punto clave en el ejemplo 3-16 es que cuando se utilizan los teoremas de
DeMorgan para reducir una expresión, podemos descomponer un signo inversor en
cualquier punto de la expresión y cambiar el signo del operador en ese punto por su
opuesto ( se cambia por , y viceversa). Este procedimiento se continúa hasta que
la expresión se reduce a una en la que sólo haya variables individuales invertidas.
A continuación se proporcionan dos ejemplos más.
Ejemplo 1 Ejemplo 2
Los teoremas de DeMorgan pueden extenderse fácilmente a más de dos varia-
bles. Por ejemplo, puede demostrarse que
Aquí podemos ver que el signo inversor grande se descompone en dos puntos de la
expresión y que el signo del operador se cambia por su opuesto. Esto puede exten-
derse a cualquier número de variables. De nuevo, debemos tener en cuenta que las
variables en sí pueden ser expresiones, en lugar de variables individuales. A conti-
nuación se muestra otro ejemplo.
Implicaciones de los teoremas de DeMorgan
Examinemos los teoremas (16) y (17) desde el punto de vista de los circuitos lógicos.
Primero vamos a considerar el teorema (16):
El lado izquierdo de la ecuación puede considerarse como la salida de una compuer-
ta NOR cuyas entradas son x y y. Por otra parte, el lado derecho de la ecuación es el
= (A # C) + B # D
z = (A + C) + (B + D)
z = AC + BD
 
= AB + AC + DE + DF
= [A # (B + C)] + [D # (E + F)]
= A # (B + C)
= (A # BC) + (D # EF)
= A # (B + C)
= (A + BC) + (D + EF)
= A # (B # C)
1A + BC2  1D + EF2
z = A + B # C
x # y # z = x + y + z
x + y + z = x # y # z
 AB  CD  EF
= AB + CD + EF
x = AB # CD # EF
x + y = x # y
SECCIÓN 3-11/TEOREMAS DE DEMORGAN 81
82 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
resultado de primero invertir ambas variables x y y, y después pasarlas a través de
una compuerta AND. Estas dos representaciones son equivalentes y se ilustran en la
figura 3-26(a), lo que significa que una compuerta AND con INVERSORES en cada
una de sus entradas es equivalente a una compuerta NOR. De hecho, ambos símbo-
los se utilizan para representar a la función NOR. Cuando se utiliza la compuerta
AND con entradas invertidas para representar a la función NOR, por lo general, se
dibuja en la forma que se muestra en la figura 3-26(b), en donde los pequeños círcu-
los en las entradas representan la operación de inversión.
Ahora consideremos el teorema (17):
Podemos implementar el lado izquierdo de la ecuación mediante una compuer-
ta NAND con entradas x y y. Para implementar primero el lado derecho se invierten
las entradas x e y, y después se pasan a través de una compuerta OR. En la figura
3-27(a) se muestran estos dos símbolos equivalentes. La compuerta OR con INVER-
SORES en cada una de sus entradas es equivalente a la compuerta NAND.También
ambas representaciones se utilizan para la función NAND. Cuando se utiliza la com-
puerta OR con entradas invertidas para representar a la función NAND, por lo gene-
ral, se dibuja en la forma que se muestra en la figura 3-27(b), en donde los círculos
en las entradas nuevamente representan la operación de inversión.
Determine la expresión de salida para el circuito de la figura 3-28 y simplifíquelo
mediante el uso de los teoremas de DeMorgan.
FIGURA 3-26
(a) Circuitos
equivalentes implicados
por el teorema (16);
(b) símbolo alternativo
para la función NOR.
(b)
x
y
x • y = x + y
x
y
(a)
x
y
x
y
x + y x • y = x + y
x # y = x + y
(b)
x
y
x + y = xy
x
y
x + y = xy
xy
(a)
x
y
x
y
FIGURA 3-27
(a) Circuitos
equivalentes implicados
por el teorema (17);
(b) símbolo alternativo
para la función NAND.
EJEMPLO 3-17
A
B
C
z = A • B • C = A + B + C = A + B + C
C
FIGURA 3-28 Ejemplo
3-17.
PREGUNTAS DE REPASO
Solución
La expresión para z es z  ABC. Utilizamos el teorema de DeMorgan para descompo-
ner el signo de inversión grande:
Ahora cancelamos la doble inversión en C para obtener
1. Utilice los teoremas de DeMorgan para convertir la expresión z  (A  B)  C por
una que sólo tenga inversiones de variables individuales.
2. Repita la pregunta 1 para la expresión y  RST  Q.
3. Implemente un circuito que tenga la expresión de salida z  A B C utilizando
sólo una compuerta NOR y un INVERSOR.
4. Use los teoremas de DeMorgan para convertir y  A  B  CD en una expresión
que contenga sólo inversiones de variables individuales.
3-12 UNIVERSALIDAD DE LAS COMPUERTAS NANDY NOR
Todas las expresiones booleanas consisten de varias combinaciones de las opera-
ciones básicas de OR, AND e INVERSOR. Por lo tanto, cualquier expresión pue-
de implementarse mediante el uso de combinaciones de compuertas OR, AND e
INVERSOR. No obstante, es posible implementar cualquier expresión lógica utili-
zando sólo compuertas NAND. Esto se debe a que si las compuertas NAND se com-
binan en forma apropiada, pueden usarse para realizar cada una de las operaciones
booleanas OR, AND e INVERSOR. La figura 3-29 demuestra este concepto.
z = A + B + C
z = A + B + C
FIGURA 3-29 Las compuertas NAND pueden usarse para implementar cualquier función
booleana.
A
A
B
A
B
A
INVERSOR
AND
OR
A
A
B
B
1
2
3
1
2
(a)
(b)
(c)
x = A • A = A
AB
A
B
x = AB
x = A B = A + B
SECCIÓN 3-12/UNIVERSALIDAD DE LAS COMPUERTAS NAND Y NOR 83
84 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
En primer lugar, en la figura 3-29(a) tenemos una compuerta NAND de dos
entradas, las cuales se conectaron juntas a propósito, de manera que la variable A
se aplique a ambas. En esta configuración, la compuerta NAND actúa tan sólo como
INVERSOR, ya que su salida es x  A  A  A.
En la figura 3-29(b) tenemos dos compuertas NAND conectadas de manera que
se realice la operación AND. La compuerta NAND 2 se utiliza como INVERSOR para
cambiar AB por AB  AB, que es la función AND deseada.
Para implementar la operación OR se pueden utilizar compuertas NAND conec-
tadas como se muestra en la figura 3-29(c). Aquí las compuertas NAND 1 y 2 se
utilizan como INVERSORES para las entradas, de manera que la salida final sea
x  A  B, lo cual puede simplificarse como x  A  B mediante el uso del teorema
de DeMorgan.
De una manera similar, podemos demostrar que se pueden crear arreglos de
compuertas NOR para implementar cualquiera de las operaciones booleanas. Esto
se ilustra en la figura 3-30. La parte (a) muestra que una compuerta NOR con sus
entradas conectadas entre sí se comporta como un INVERSOR, debido a que la sali-
da es x  A  A  A.
En la figura 3-30(b) hay dos compuertas NOR conectadas de tal forma que se
lleve a cabo la operación OR. La compuerta NOR 2 se utiliza como un INVERSOR
para cambiar A  B por A  B  A  B, que es la función OR deseada.
La operación AND puede implementarse con compuertas NOR, como se muestra
en la figura 3-30(c). Aquí las compuertas NOR 1 y 2 se utilizan como INVERSORES
para las entradas de manera que la salida final sea x  A  B, que puede simplificar-
se, mediante el uso del teorema de DeMorgan, como x  A  B.
Como cualquiera de las operaciones booleanas pueden implementarse con sólo
utilizar compuertas NAND, puede construirse cualquier circuito si se utilizan sólo com-
puertas NAND. Lo mismo aplica para las compuertas NOR. Esta característica de las
compuertas NAND y NOR puede ser muy útil en el diseño de circuitos lógicos, como se
muestra en el ejemplo 3-18.
En cierto proceso de manufactura, una banda transportadora se apaga cada vez que
ocurren determinadas condiciones, las cuales se supervisan y reflejan con base en
EJEMPLO 3-18
A
INVERSOR
A
B
OR
A
B
AND
A
A
A
B
B
(a)
(b)
(c)
A
B
x = A+ B = AB
x = A + A = A
A + B A + B
2
3
1
1
2
FIGURA 3-30 Las compuertas NOR pueden utilizarse para implementar cualquier operación
booleana.
los estados de cuatro señales lógicas de la siguiente manera: la señal A estará en
ALTO siempre que la velocidad de la banda transportadora sea demasiado alta; la
señal B estará en ALTO cada vez que el recipiente recolector al final de la banda
se encuentre lleno; la señal C estará en ALTO cuando la tensión de la banda esté
demasiado alta; la señal D estará en ALTO cuando esté desconectado el sobrepaso
manual.
Se necesita un circuito lógico para generar una señal x que cambie a ALTO
siempre que las condiciones A y B se presenten al mismo tiempo, o cada vez que las
condiciones C y D se presenten al mismo tiempo. Podemos deducir que la expresión
lógica para x es x  AB  CD. El circuito debe implementarse con la menor cantidad
de circuitos integrados que sea posible. Los circuitos integrados TTL que se mues-
tran en la figura 3-31 están disponibles. Cada CI es cuádruple, lo que significa que
contiene cuatro compuertas idénticas en un solo chip.
Solución
El método directo para implementar la expresión obtenida utiliza dos compuertas
AND y una compuerta OR, como se muestra en la figura 3-32(a). Esta implementa-
ción utiliza dos compuertas del CI 74LS08 y una sola compuerta del CI 74LS32. Los
números entre paréntesis en cada entrada y salida son los números de terminal del
CI respectivo, los cuales siempre se muestran en cualquier diagrama de cableado
de circuitos lógicos. Para nuestros fines, la mayoría de los diagramas lógicos no mos-
trarán los números de terminal a menos que se necesiten en la descripción de la
operación del circuito.
Se puede lograr otra implementación si se toma el circuito de la figura 3-32(a)
y se sustituye cada compuerta AND y OR por la implementación equivalente con la
compuerta NAND de la figura 3-29. El resultado se muestra en la figura 3-32(b).
A primera vista, este nuevo circuito parece requerir siete compuertas NAND.
No obstante, las compuertas NAND 3 y 5 están conectadas como INVERSORES en
serie y pueden eliminarse del circuito, ya que realizan una doble inversión de la
señal que sale de la compuerta NAND 1. De manera similar, las compuertas NAND
4 y 6 pueden eliminarse. En la figura 3-32(c) se muestra el circuito final, después de
eliminar los dobles INVERSORES.
Este circuito final es más eficiente que el de la figura 3-32(a), ya que utiliza tres
compuertas NAND de dos entradas que están incluidas en un solo CI, el 74LS00.
7
6
5
4
3
2
1
74LS00
14 13 12 11 10 9 8
GND
VCC
7
6
5
4
3
2
1
74LS08
14 13 12 11 10 9 8
GND
VCC
7
6
5
4
3
2
1
74LS32
14 13 12 11 10 9 8
GND
VCC
FIGURA 3-31 Circuitos integrados disponibles para el ejemplo 3-18.
SECCIÓN 3-12/UNIVERSALIDAD DE LAS COMPUERTAS NAND Y NOR 85
86 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
PREGUNTAS DE REPASO 1. ¿Cuántas maneras tenemos ahora para implementar la operación de inversión
en un circuito lógico?
2. Implemente la expresión x  (A  B)(C  D) mediante el uso de compuertas OR
y AND. Implemente después la expresión utilizando sólo compuertas NOR, con-
virtiendo cada compuerta OR y AND a su implementación con NOR de la figura
3-30. ¿Cuál circuito es más eficiente?
3. Escriba la expresión de salida para el circuito de la figura 3-32(c) y utilice los
teoremas de DeMorgan para demostrar que es equivalente a la expresión para
el circuito de la figura 3-32(a).
3-13 REPRESENTACIONES ALTERNAS DE COMPUERTAS LÓGICAS
Hemos presentado las cinco compuertas lógicas básicas (AND, OR, INVERSOR,
NAND y NOR) y los símbolos estándar que se utilizan para representarlas en los
diagramas de circuitos lógicos. Aunque tal vez algunos diagramas de circuitos aún
C
D
A
B
74LS00
74LS00
(8)
x
(9) 74LS00
(10)
(3)
(6)
(1)
(2)
(4)
(5)
(c)
(b)
C
D
A
B
74LS08
74LS08
(3)
x = AB + CD
(1)
(2)
(3)
(6)
(1)
(2)
(4)
(5)
C
D
A
B
x
74LS32
AND
OR
AND
Después de eliminar
las inversiones dobles
7
(a)
1
2
3 5
4 6
FIGURA 3-32 Posibles
implementaciones para
el ejemplo 3-18.
utilicen estos símbolos estándar de manera exclusiva, cada vez es más común encon-
trar diagramas de circuitos en los que se emplean los símbolos lógicos alternativos
además de los símbolos estándar.
Antes de hablar sobre las razones para utilizar un símbolo alternativo para una
compuerta lógica, presentaremos los símbolos alternativos para cada compuerta
y demostraremos que son equivalentes a los símbolos estándar. Consulte la figura
3-33; el lado izquierdo muestra el símbolo estándar para cada compuerta lógica y el
lado derecho muestra el símbolo alternativo. El símbolo alternativo para cada com-
puerta se obtiene a partir del símbolo estándar mediante el siguiente proceso:
1. Invertir cada entrada y salida del símbolo estándar. Para ello se agregan bur-
bujas (pequeños círculos) en las entradas y salidas que no tienen burbujas y se
quitan las de las entradas y salidas que si tienen.
2. Cambiar el símbolo de la operación de AND a OR, o de OR a AND. En el caso
especial del INVERSOR, el símbolo de la operación no se cambia.
Por ejemplo, el símbolo NAND estándar es un símbolo AND con una burbuja
en su salida. Siguiendo los pasos antes mencionados, eliminamos la burbuja de la
salida y agregamos una en cada entrada. Después cambiamos el símbolo AND por
un símbolo OR. El resultado es un símbolo OR con burbujas en sus entradas.
Podemos demostrar con facilidad que este símbolo alternativo es equivalente
al símbolo estándar mediante el uso de los teoremas de DeMorgan y recordando
que la burbuja representa una operación de inversión. La expresión de salida del
símbolo NAND estándar es AB  A  B, que es lo mismo que la expresión de salida
para el símbolo alterno. Podemos seguir este mismo procedimiento para cada par de
símbolos de la figura 3-33.
Debemos recalcar varios puntos en relación con las equivalencias de los símbo-
los lógicos:
1. Las equivalencias pueden extenderse a las compuertas con cualquier número de
entradas.
2. Ninguno de los símbolos estándar tiene burbujas en sus entradas, y todos los
símbolos alternativos sí.
A
B
A
B
A
B
A
B
A
B
A
B
A
B
A
B
A A
A • B
A + B
AB
A + B
A
A
A • B = A + B
A + B = AB
A + B = AB
A • B = A + B
AND
OR
NAND
NOR
INV
FIGURA 3-33
Símbolos estándar y
alternativos para varias
compuertas lógicas y
para el inversor.
SECCIÓN 3-13/REPRESENTACIONES ALTERNAS DE COMPUERTAS LÓGICAS 87
88 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
3. Los símbolos estándar y alternativos para cada compuerta representan el mismo
circuito físico; no hay diferencia en los circuitos representados por los dos símbolos.
4. Las compuertas NAND y NOR son inversoras, por lo que tanto los símbolos
estándar como los alternativos para estas compuertas tendrán una burbuja ya
sea en la entrada o en la salida. Las compuertas AND y OR son no inversoras, por
lo que los símbolos alternativos para cada una de ellas tendrá burbujas tanto en
las entradas como en las salidas.
Interpretación de los símbolos lógicos
Cada uno de los símbolos de las compuertas lógicas de la figura 3-33 ofrece una inter-
pretación única de la manera en que opera la compuerta. Antes de demostrar estas
interpretaciones debemos establecer el concepto de los niveles lógicos activos.
Cuando una línea de entrada o de salida en el símbolo de un circuito lógico no
tiene burbuja, se dice que está activa en ALTO. Cuando una línea de entrada o de
salida tiene una burbuja, se dice que está activa en BAJO. Por lo tanto, la presencia
o ausencia de una burbuja determina el estado activo en BAJO /activo en ALTO res-
pectivamente, de las entradas y la salida de un circuito, y se utiliza para interpretar
la operación del mismo.
Para ilustrar lo anterior, la figura 3-34(a) muestra el símbolo estándar para una
compuerta NAND. Este símbolo estándar tiene una burbuja en su salida y no tiene
burbujas en sus entradas. Por lo tanto, tiene una salida activa en BAJO y entradas
activas en ALTO. En consecuencia, la operación lógica que representa este símbolo
puede interpretarse de la siguiente manera:
La salida cambia a BAJO sólo cuando todas las entradas están en ALTO.
Observe que esto dice que la salida cambiará a su estado activo sólo cuando
todas las entradas se encuentren en sus estados activos. Se utiliza la palabra todas
debido al símbolo AND.
El símbolo alterno para una compuerta NAND que se muestra en la figura 3-34(b)
tiene una salida activa en ALTO y entradas activas en BAJO, por lo que su operación
puede declararse así:
La salida cambia a ALTO cuando cualquier entrada está en BAJO.
Esto quiere decir que la salida estará en su estado activo cuando cualquiera de
las entradas se encuentre en su estado activo. Se utiliza la palabra cualquiera debido
al símbolo OR.
Si lo analiza un poco, podrá ver que las dos interpretaciones para los símbolos
NAND de la figura 3-34 son maneras distintas de decir lo mismo.
A
B
AB
A
B
Activa en ALTO
El estado BAJO es
el estado activo.
(a)
La salida cambia a BAJO
sólo cuando todas las
entradas están en ALTO.
Activa en BAJO
El estado ALTO es
el estado activo.
(b)
La salida está en ALTO
cuando cualquier entrada
está en BAJO.
A + B = AB
FIGURA 3-34
Interpretación
de los dos símbolos de
compuertas NAND.
PREGUNTAS DE REPASO
Resumen
En estos momentos tal vez se esté preguntando por qué la necesidad de tener dos
símbolos e interpretaciones distintas para cada una de las compuertas lógicas. Espe-
ramos que las razones para ello se aclaren después de que lea la siguiente sección.
Por ahora vamos a resumir los puntos importantes en relación con las representacio-
nes de las compuertas lógicas.
1. Para obtener el símbolo alternativo para una compuerta lógica, tome el símbolo
estándar y cambie su símbolo de operación (OR a AND, o AND a OR). Cambie
también las burbujas tanto en las entradas como en la salida (es decir, elimine
las burbujas que estén presentes y agregue otras en donde no haya).
2. Para interpretar la operación de una compuerta lógica, primero observe cuál
estado lógico (0 o 1) es el activo para las entradas y cuál es el activo para la sali-
da. Después tome en cuenta que el estado activo de la salida se produce al tener
todas las entradas en su estado activo (si se utiliza un símbolo AND) o cualquiera
de las entradas en su estado activo (si se utiliza un símbolo OR).
Proporcione la interpretación de los dos símbolos de compuerta OR.
Solución
Los resultados se muestran en la figura 3-35. Observe que se utiliza la palabra cual-
quiera cuando el símbolo de operación es un OR y la palabra todas cuando se usa un
AND.
1. Escriba la interpretación de la operación que realiza el símbolo estándar de la
compuerta NOR de la figura 3-33.
2. Repita la pregunta 1 para el símbolo alternativo de la compuerta NOR.
3. Repita la pregunta 1 para el símbolo alternativo de la compuerta AND.
4. Repita la pregunta 1 para el símbolo estándar de la compuerta AND.
3-14 CUÁL REPRESENTACIÓN DE COMPUERTA SE DEBE USAR
Algunos diseñadores de circuitos lógicos y algunos libros de texto sólo utilizan los
símbolos estándar de las compuertas lógicas en los diagramas esquemáticos de sus
circuitos. Aunque esta práctica es correcta, no facilita el seguimiento de la opera-
ción del circuito. El uso apropiado de los símbolos de compuerta alternativos en el
EJEMPLO 3-19
A
B
A • B = A + B
A
B
A + B
Activa en ALTO
El estado ALTO
es el estado activo.
(a)
La salida cambia a ALTO
cuando cualquiera de sus
entradas se encuentra en ALTO.
La salida cambia a BAJO
sólo cuando todas sus
entradas están en BAJO.
Activa en BAJO
El estado BAJO
es el estado activo.
(b)
FIGURA 3-35
Interpretación
de los dos símbolos de
compuerta OR.
SECCIÓN 3-14/CUÁL REPRESENTACIÓN DE COMPUERTA SE DEBE USAR 89
90 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
diagrama puede hacer mucho más clara la operación del circuito. Para ilustrar lo
anterior consideremos el ejemplo que se muestra en la figura 3-36.
El circuito de la figura 3-36(a) contiene tres compuertas NAND conectadas para
producir una salida Z que depende de las entradas A, B, C y D. El diagrama del cir-
cuito utiliza el símbolo estándar para cada una de las compuertas NAND. Aunque
la lógica de este diagrama es correcta, no facilita una comprensión de la manera en
que funciona el circuito. Sin embargo, las representaciones que se muestran en las
figuras 3-36(b) y (c) pueden analizarse con más facilidad para determinar la opera-
ción del circuito.
La representación de la figura 3-36(b) se obtiene a partir del diagrama del cir-
cuito original, sustituyendo la compuerta NAND 3 con su símbolo alternativo. En
este diagrama la salida Z se toma del símbolo de una compuerta NAND que tiene
una salida activa en ALTO. Por ende, podemos decir que Z cambiará a ALTO cuando
X o Y estén en BAJO. Ahora, como X y Y aparecen cada una en la salida de símbolos
NAND que tienen salidas activas en BAJO, podemos decir que X cambiará a BAJO
sólo si A  B  1, y que Y cambiará a BAJO sólo si C  D  1. Ahora podemos descri-
bir la operación del circuito de la siguiente manera:
La salida Z cambiará a ALTO siempre que A  B  1 o cuando C  D  1
(o en ambos casos).
Esta descripción puede traducirse al formato de tablas de verdad si se estable-
ce Z  1 para aquellos casos en los que A  B  1 y para aquellos casos en los que
C  D  1. Para todos los demás casos, Z se hace 0. La tabla de verdad resultante se
muestra en la figura 3-36(d).
La representación de la figura 3-36(c) se obtiene a partir del diagrama del circui-
to original, sustituyendo las compuertas NAND 1 y 2 por sus símbolos alternativos.
(d)
A
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
B
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
C
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
D
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
Z
0
0
0
1
0
0
0
1
0
0
0
1
1
1
1
1
A
B
Z
C
D
A
B
C
D
A
B
C
D
1
2
3
(a)
(b)
(c)
1
2
Z
X
Y
Activa en ALTO
Z
Activa en BAJO
X
Y
3
3
1
2
FIGURA 3-36
(a) Circuito original
que utiliza símbolos
NAND estándar;
(b) representación
equivalente en la
cual la salida Z es
activa en ALTO;
(c) representación
equivalente en la cual
la salida Z es activa
en BAJO; (e) tabla de
verdad.
En esta representación equivalente, la salida Z se toma de una compuerta NAND
en la cual su salida sea activa en BAJO. Por lo tanto, podemos decir que Z cambiará
a BAJO sólo cuando X  Y  1. Como X y Y son salidas activas en ALTO, podemos
decir que X cambiará a ALTO cuando A o B estén en BAJO, y que Y cambiará a ALTO
cuando C o D estén en BAJO. De todo esto podemos concluir que la operación del
circuito es la siguiente:
La salida Z cambiará a BAJO sólo cuando A o B estén en BAJO y C o D
estén en BAJO.
Esta descripción puede traducirse al formato de tablas de verdad si hacemos
que Z  0 para todos los casos en los que cuando menos una de las entradas A o B
esté en BAJO al mismo tiempo que cuando menos una de las entradas C o D esté en
BAJO. Para todos los demás casos, Z se hace 1. La tabla de verdad resultante es la
misma que la que obtuvimos para el diagrama del circuito de la figura 3-36(b).
¿Cuál diagrama de circuito debe usarse?
La respuesta a esta pregunta depende de la función específica que vaya a realizar la
salida del circuito. Si se va a utilizar para producir cierta acción (por ejemplo, encen-
der un LED o activar otro circuito lógico) cuando la salida Z cambia al estado 1,
entonces decimos que Z debe ser activa en ALTO, y debemos usar el diagrama
del circuito de la figura 3-36(b). Por otro lado, si el circuito se va a utilizar para pro-
ducir cierta acción cuando Z cambia al estado 0, entonces Z debe ser activa en
BAJO, y debemos usar el diagrama de la figura 3-36(c).
Desde luego que habrá situaciones en las que se utilicen ambos estados de la
salida para producir distintas acciones, y cualquiera de ellos podría considerarse
como el estado activo. Para estos casos puede utilizarse cualquiera de las dos repre-
sentaciones del circuito.
Colocación de las burbujas
Consulte la representación del circuito de la figura 3-36(b) y observe que se seleccio-
naron los símbolos para las compuertas NAND 1 y 2 de manera que tengan salidas
activas en BAJO, para hacer que coincidan con las entradas activas en BAJO de la
compuerta NAND 3. Consulte la representación del circuito de la figura 3-36(c) y
observe que se seleccionaron los símbolos para las compuertas NAND 1 y 2 de mane-
ra que tengan salidas activas en ALTO, para hacer que coincidan con las entradas
activas en ALTO de la compuerta NAND 3. Esto nos conduce a la siguiente regla
general para preparar diagramas esquemáticos de circuitos lógicos:
Siempre que sea posible, seleccione símbolos de compuerta de manera
que las salidas con burbuja se conecten a las entradas con burbuja, y las
salidas sin burbuja se conecten a las entradas sin burbuja.
Los siguientes ejemplos demostrarán cómo aplicar esta regla.
El circuito lógico de la figura 3-37(a) se utiliza para activar una alarma cuando la
salida Z cambie a ALTO. Modifique el diagrama del circuito de manera que repre-
sente la operación del mismo de una manera más eficiente.
EJEMPLO 3-20
A
B
C
D
2
1
Z
A
B
C
D
2
1
Z
(a) (b)
ALARMA ALARMA
FIGURA 3-37 Ejemplo 3-20.
SECCIÓN 3-14/CUÁL REPRESENTACIÓN DE COMPUERTA SE DEBE USAR 91
92 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
Solución
Como la condición Z  1 activa la alarma, Z debe ser activa en ALTO. Por ende, el
símbolo de la compuerta AND 2 no tiene que cambiarse. El símbolo de la compuerta
NOR debe cambiarse por su símbolo alternativo con una salida sin burbuja (activa
en ALTO) para que concuerde con la entrada sin burbuja de la compuerta AND 2,
como se muestra en la figura 3-37(b). Observe que ahora el circuito tiene salidas sin
burbuja conectadas a las entradas sin burbuja de la compuerta 2.
Cuando la salida del circuito lógico de la figura 3-38(a) cambia a BAJO, activa otro
circuito lógico. Modifique el diagrama del circuito para representar la operación del
mismo más eficazmente.
Solución
Como Z debe ser activa en BAJO, debemos cambiar el símbolo para la compuerta
OR 2 por su símbolo alterno, como se muestra en la figura 3-38(b). El nuevo símbolo
de la compuerta OR 2 tiene entradas con burbujas, por lo que los símbolos de la
compuerta AND y de la compuerta OR 1 deben cambiarse por símbolos que tengan
salidas con burbuja, como se muestra en la figura 3-38(b). El INVERSOR ya tiene
una salida con burbuja. Ahora el circuito tiene todas sus salidas con burbuja conec-
tadas a las entradas con burbuja de la compuerta OR 2.
Análisis de circuitos
Cuando se dibuja el diagrama esquemático de un circuito lógico utilizando las reglas
que hemos seguido en estos ejemplos, es mucho más fácil para un ingeniero, técnico
o estudiante seguir el flujo de la señal a través del circuito y determinar las condi-
ciones de entrada necesarias para activar la salida. Ilustraremos esto en los siguien-
tes ejemplos que, por coincidencia, utilizan diagramas de circuitos tomados de los
diagramas esquemáticos lógicos de una microcomputadora real.
El circuito lógico de la figura 3-39 genera una salida llamada MEM que se utili-
za para activar los circuitos integrados de memoria en cierta microcomputadora.
Determine las condiciones de entrada necesarias para activar a MEM.
EJEMPLO 3-21
E
D
C
B
A
1
2
Z
(b)
E
D
C
B
A
Z
(a)
1
2
FIGURA 3-38 Ejemplo
3-21.
EJEMPLO 3-22
Solución
Una manera de hacerlo sería escribir la expresión para MEM en términos de las
entradas RD, ROM-A, ROM-B y RAM, y evaluarla para las 16 combinaciones posibles
de estas entradas. Aunque este método sí funcionaría, se requeriría mucho más tra-
bajo del necesario.
Un método más eficiente es interpretar el diagrama del circuito utilizando las
ideas que hemos desarrollado en las últimas dos secciones. Éstos son los pasos:
1. MEM es activa en BAJO y cambará a BAJO sólo cuando X y Y estén en ALTO.
2. X estará en ALTO sólo cuando RD  0.
3. Y estará en ALTO cuando W o V estén en ALTO.
4. V estará en ALTO cuando RAM  0.
5. W estará en ALTO cuando ROM-A o ROM-B  0.
6. Con todo esto podemos deducir que MEM cambiará a BAJO sólo cuando RD  0
y cuando menos una de las tres entradas ROM-A, ROM-B o RAM esté en BAJO.
El circuito lógico de la figura 3-40 se utiliza para controlar el motor de control del
eje de una unidad de disco flexible cuando la microcomputadora envía o recibe
datos hacia o desde el disco. El circuito encenderá el motor cuando UNIDAD  1.
Determine las condiciones necesarias de entrada para encender el motor.
EJEMPLO 3-23
MEM
Y
X
V
W
RD
ROM-A
ROM-B
RAM
FIGURA 3-39 Ejemplo
3-22.
Nota: Todas las compuertas son CMOS
UNIDAD
Y
W
74HC30
74HC32
74HC02
A1
A2
A3
A4
A5
A6
A7
ENTRADA
SALIDA
A0
X
74HC02
FIGURA 3-40 Ejemplo
3-23.
SECCIÓN 3-14/CUÁL REPRESENTACIÓN DE COMPUERTA SE DEBE USAR 93
94 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
Solución
Una vez más, interpretaremos el diagrama paso por paso:
1. UNIDAD estará activa en BAJO y cambiará a ALTO sólo cuando X  Y  0.
2. X estará en BAJO cuando ENTRADA o SALIDA estén en ALTO.
3. Y estará en BAJO sólo cuando W  0 y A0  0.
4. W estará en BAJO sólo cuando todas las entradas de la A1 a la A7 estén en
ALTO.
5. De todo esto podemos deducir que UNIDAD estará en ALTO cuando A1  A2 
A3  A4  A5  A6  A7  1 y A0  0, y cuando ni ENTRADA o SALIDA ni ambas
estén en 1.
ObserveelextrañosímboloparalacompuertaNANDCMOSdeochoentradas(74HC30);
observe además que la señal A7 está conectada a dos de las entradas NAND.
Niveles asignados
Hemos estado describiendo las señales lógicas como activas en BAJO o activas en
ALTO. Por ejemplo, la salida MEM en la figura 3-39 es activa en BAJO y la salida
UNIDAD en la figura 3-40 es activa en ALTO, ya que son los estados de salida que
hacen que ocurra algo. De manera similar, la figura 3-40 tiene las entradas de la A0
a la A7 activas en ALTO y la entrada A0 activa en BAJO.
Cuando una señal lógica se encuentra en su estado activo, podemos decir que
está asignada. Por ejemplo, cuando decimos que la entrada A0 está asignada, signifi-
ca que se encuentra en su estado de activa en BAJO. Cuando una señal no se encuen-
tra en su estado activo, se dice que está no asignada. Por ende, cuando decimos que
UNIDAD está no asignada, significa que se encuentra en su estado inactivo (bajo).
Es evidente que los términos asignado y no asignado son sinónimos de activo e
inactivo, respectivamente:
asignado  activo
no asignado  inactivo
Ambos conjuntos de términos son de uso común en el campo digital, por lo que usted
debe ser capaz de reconocer ambas formas de describir el estado activo de una señal
lógica.
Etiquetado de señales lógicas activas en BAJO
El uso de una barra superior para etiquetar las señales activas en BAJO se ha con-
vertido en práctica común. La barra superior sirve como otra indicación de que la
señal es activa en BAJO; desde luego que la ausencia de una barra superior indica
que la señal es activa en ALTO.
Como ejemplo, todas las señales de la figura 3-39 son activas en BAJO y pueden
etiquetarse de la siguiente manera:
Recuerde que la barra superior es sólo una manera de enfatizar que estas seña-
les son activas en BAJO. Emplearemos esta convención para etiquetar las señales
lógicas siempre que sea apropiado.
Etiquetado de señales biestado
Es muy común que una señal de salida tenga dos estados activos; es decir, que tiene
una función importante en el estado ALTO y otra en el estado BAJO. Es costumbre
etiquetar dichas señales de manera que ambos estados activos sean aparentes. Un
ejemplo común es la señal de lectura/escritura RD/WR, la cual se interpreta de la
siguiente manera: cuando esta señal está en ALTO se realiza la operación de lectura
(RD); cuando está en BAJO se realiza la operación de escritura (WR).
, , , , MEM
RAM
ROM-B
ROM-A
RD
PREGUNTAS DE REPASO 1. Use el método de los ejemplos 3-22 y 3-23 para determinar las condiciones de
entrada necesarias para activar la salida del circuito de la figura 3-37(b).
2. Repita la pregunta 1 para el circuito de la figura 3-38(b).
3. ¿Cuántas compuertas NAND se muestran en la figura 3-39?
4. ¿Cuántas compuertas NOR se muestran en la figura 3-40?
5. ¿Cuál será el nivel de salida en la figura 3-38(b) cuando todas las entradas estén
asignadas?
6. ¿Qué entradas se requieren para asignar la salida de alarma en la figura 3-37(b)?
7. ¿Cuál de las siguientes señales es activa en BAJO: RD, W, R/W?
3-15 SÍMBOLOS LÓGICOS DEL ESTÁNDAR IEEE/ANSI
Los símbolos lógicos que hemos utilizado hasta ahora en este capítulo son los símbo-
los estándar tradicionales utilizados en la industria digital durante muchos, muchos
años. Estos símbolos tradicionales utilizan una forma distintiva para cada compuer-
ta lógica. En 1984 se desarrolló un estándar más reciente para los símbolos lógicos;
a éste se le conoce como Estándar IEEE/ANSI 91-1984 para símbolos lógicos. El
estándar IEEE/ANSI utiliza símbolos rectangulares para representar todas las com-
puertas y circuitos lógicos. Una notación de dependencia especial dentro del símbolo
rectangular indica cómo dependen las salidas del dispositivo de sus entradas. La
figura 3-41 muestra los símbolos IEEE/ANSI a un lado de los símbolos tradicionales
para las compuertas lógicas básicas. Observe los siguientes puntos:
1. Los símbolos rectangulares utilizan un pequeño triángulo rectángulo ( ) en
lugar de la pequeña burbuja de los símbolos tradicionales para indicar la inver-
sión del nivel lógico. La presencia o ausencia del triángulo también indica si una
entrada o salida es activa en nivel BAJO o ALTO.
SECCIÓN 3-15/SÍMBOLOS LÓGICOS DEL ESTÁNDAR IEEE/ANSI 95
x
x
x
x
x
A
B
A
B
A
B
A
B
A
A
B
A
B
A
B
A
B
A
x
x
x
x
x
(b)
(a)
NOR
NAND
OR
AND
NOT
1


≥1
≥1
FIGURA 3-41
Símbolos lógicos
estándar:
(a) tradicionales;
(b) IEEE/ANSI.
96 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
PREGUNTAS DE REPASO
2. Una notación especial dentro de cada símbolo rectangular describe la relación
lógica entra las entradas y la salida. El “1” dentro del símbolo INVERSOR deno-
ta un dispositivo con sólo una entrada; el triángulo en la salida indica que ésta
cambiará al estado activo en BAJO cuando la entrada se encuentre en su estado
activo en ALTO. El “” dentro del símbolo AND significa que la salida cambia-
rá a su estado activo en ALTO cuando todas las entradas se encuentren en el
estado activo en ALTO. El “
” dentro de la compuerta OR indica que la salida
cambiará a su estado activo (ALTO) siempre que cualquiera de las entradas se
encuentre en su estado activo (ALTO).
3. Los símbolos rectangulares para las compuertas NAND y NOR son los mismos
que para las compuertas AND y OR, respectivamente, con la adición del peque-
ño triángulo inversor en la salida.
¿Tradicional o IEEE/ANSI?
El estándar IEEE/ANSI no ha sido muy aceptado todavía en el campo digital, aunque
tal vez se encuentre con él en algunos diagramas esquemáticos de equipos recientes.
La mayoría de los libros de datos de CI digitales incluyen los símbolos tradicionales y
también los de IEEE/ANSI, ya que es posible que este estándar, más reciente, se uti-
lice cada vez más. En la mayoría de los diagramas de circuitos de este libro emplea-
remos los símbolos tradicionales.
1. Dibuje todas las compuertas lógicas básicas tanto con los símbolos tradicionales
como con los símbolos IEEE/ANSI.
2. Dibuje el símbolo IEEE/ANSI para una compuerta NOR con la salida activa en
ALTO.
3-16 RESUMEN DE LOS MÉTODOS PARA DESCRIBIR CIRCUITOS
LÓGICOS
Los temas que hemos visto en este capítulo están centrados alrededor de sólo tres
funciones lógicas simples que conocemos como AND, OR y NOT. El concepto no es
nuevo, ya que todos usamos estas funciones lógicas en nuestra vida diaria cuando
tomamos decisiones. He aquí algunos ejemplos lógicos. Si está lloviendo O (OR) el
periódico dice que podría llover, entonces llevaré mi paraguas. Si recibo mi cheque
de nómina hoyY (AND) llego al banco, entonces tendré dinero para gastar esta tarde.
Si tengo una calificación aprobatoria en teoría Y (AND) NO (NOT) he fallado en el
laboratorio, entonces aprobaré mi clase de circuitos digitales. En estos momentos
tal vez usted se pregunte por qué hemos invertido tantos esfuerzos para describir
estos conceptos familiares. La respuesta puede resumirse en dos puntos clave:
1. Debemos ser capaces de representar estas decisiones lógicas.
2. Debemos ser capaces de combinar estas funciones lógicas y de implementar un
sistema de toma de decisiones.
Hemos aprendido a representar cada una de las funciones lógicas básicas mediante
el uso de:
Declaraciones lógicas en nuestro propio lenguaje.
Tablas de verdad.
Símbolos lógicos gráficos tradicionales.
Símbolos lógicos del estándar IEEE/ANSI.
Expresiones de álgebra booleana.
Diagramas de tiempos.
La siguiente expresión describe la manera en que un circuito lógico necesita operar
para poder controlar un indicador de advertencia del cinturón de seguridad de un
automóvil.
Si el conductor está presente Y (AND) el conductor NO (NOT) tiene el
cinturón enganchado Y (AND) el interruptor de encendido está activado,
ENTONCES encender la luz de advertencia.
Describa el circuito utilizando álgebra booleana, diagramas esquemáticos con sím-
bolos lógicos, tablas de verdad y diagramas de tiempos.
Solución
Vea la figura 3-42.
EJEMPLO 3-24
Expresión booleana
luz_advertencia 5 conductor_presente • cinturon_enganchado • interruptor_encendido
(a)
Diagrama esquemático
conductor_presente
cinturon_enganchado
interruptor_encendido
(b)
Tabla de verdad
conductor_presente
0
0
0
0
1
1
1
1
cinturon_enganchado
0
0
1
1
0
0
1
1
interruptor_encendido
0
1
0
1
0
1
0
1
Luz_advertencia
0
0
0
0
0
1
0
0
(c)
Diagrama de tiempos
Nombre
ignition_on
buckled_up
driver_present
warning_light
0
0
1
0
Val 1.0 ms 2.0 ms 3.0 ms 4.0 ms 5.0 ms 6.0 ms 7.0 ms 8.0 ms 9.0 ms 10 m
(d)
Luz_advertencia
FIGURA 3-42 Métodos para describir circuitos lógicos: (a) expresión booleana; (b) diagrama esquemático;
(c) tablas de verdad; (d) diagrama de tiempos.
SECCIÓN 3-16/RESUMEN DE LOS MÉTODOS PARA DESCRIBIR CIRCUITOS. . . 97
98 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
PREGUNTAS DE REPASO
La figura 3-42 muestra cuatro maneras distintas de representar el circuito lógico que
se describió verbalmente en el problema del ejemplo 3-24. Hay muchas otras formas
en que podríamos representar la lógica para esta decisión. Como ejemplo podríamos
idear todo un conjunto nuevo de símbolos gráficos, o enunciar la relación lógica en
un idioma diferente como francés o japonés. Desde luego que no podemos cubrir
todas las formas posibles de describir un circuito lógico, pero debemos comprender
los métodos más comunes para poder comunicarnos con otras personas en esta pro-
fesión. Lo que es más, ciertas situaciones son más fáciles de describir si utilizamos
un método en lugar de otro. En algunos casos una imagen vale más que mil palabras;
en otros las palabras son lo bastante concisas y se comunican con más facilidad a los
demás. El punto importante aquí es que necesitamos formas de describir y comuni-
car la operación de los sistemas digitales.
1. Nombre cinco formas de describir la operación de los circuitos lógicos.
3-17 COMPARACIÓN ENTRE LENGUAJES DE DESCRIPCIÓN
Y LENGUAJES DE PROGRAMACIÓN*
Las tendencias recientes en el campo de los sistemas digitales están a favor de la
descripción de los circuitos digitales mediante el lenguaje basado en texto. Tal vez
usted haya notado que cada método de descripción de la figura 3-42 presenta obs-
táculos para introducir los datos a la computadora, ya sea por las barras superiores,
los símbolos, el formato o el dibujo de líneas. En esta sección empezaremos a cono-
cer algunas de las herramientas más avanzadas que utilizan los profesionales en el
área de sistemas digitales para describir los circuitos que implementan sus ideas. A
estas herramientas se les conoce como lenguajes de descripción de hardware (HDL).
Aún con las poderosas computadoras que tenemos actualmente, no es posible des-
cribir un circuito lógico en lenguaje común (como español o inglés) y esperar que
la computadora lo entienda. Las computadoras necesitan un lenguaje definido con
más rigidez. En este libro nos enfocaremos en dos lenguajes: el lenguaje de descrip-
ción de hardware de Altera (AHDL) y el lenguaje de descripción de hardware para
circuitos integrados de muy alta velocidad (VHDL).
VHDL y AHDL
VHDL no es un lenguaje nuevo. El Departamento de Defensa de los Estados Unidos
lo desarrolló a principios de la década de 1980 como una forma concisa de docu-
mentar los diseños en el proyecto de circuitos integrados de muy alta velocidad
(VHSIC). Como era demasiado adjuntar HDL a este acrónimo (incluso hasta para
los militares), el lenguaje se abrevió como VHDL. Se desarrollaron programas de
computadora para tomar los archivos de lenguaje VHDL y simular la operación
de los circuitos. Con el crecimiento de los dispositivos lógicos programables com-
plejos en los sistemas digitales, VHDL ha evolucionado para convertirse en uno de
los principales lenguajes de descripción de hardware de alto nivel para diseñar
e implementar circuitos digitales (síntesis). El IEEE estandarizó este lenguaje, con
lo cual se hizo atractivo para los ingenieros, así como para los fabricantes de herra-
mientas de software que traducen los diseños a los patrones de bits utilizados para
programar los dispositivos reales.
AHDL es un lenguaje desarrollado por Altera Corporation para ofrecer una for-
ma conveniente de configurar los dispositivos lógicos que ofrecen. Altera fue una de
las primeras compañías en introducir dispositivos lógicos que pueden reconfigurarse
* Se pueden omitir todas las secciones que hablan sobre los lenguajes de descripción de hardware sin
perder la continuidad en el balance de los capítulos del 1 al 12.
mediante electrónica. A estos dispositivos se les conoce como dispositivos lógicos pro-
gramables (PLDs).A diferencia delVHDL, este lenguaje no está diseñado para usarse
como un lenguaje universal para describir cualquier circuito lógico, sino para progra-
mar sistemas digitales complejos en PLDs de Altera, en un lenguaje que se perciba
en general como más sencillo de aprender, pero que es muy similar alVHDL.También
cuenta con características que aprovechan por completo la arquitectura de los dispo-
sitivos de Altera. En todos los ejemplos de este libro utilizaremos el software Altera
MAX PLUS II o Quartus II para desarrollar archivos de diseño en AHDL y VHDL.
Podrá ver la ventaja de usar el sistema de desarrollo de Altera para ambos lenguajes
cuando programe un dispositivo real. El sistema de Altera facilita el desarrollo de
circuitos en forma considerable; además, contiene todas las herramientas necesarias
para traducir el archivo de diseño de HDL a uno listo para cargarse en un PLD de Alte-
ra.También le permite desarrollar bloques de construcción mediante la introducción
de diagramas esquemáticos, AHDL,VHDL y otros métodos, para después interconec-
tar esos bloques y formar un sistema completo.
Hay otros HDLs disponibles que son más adecuados para programar disposi-
tivos lógicos más simples. Después de que, con la ayuda de este libro, aprenda los
fundamentos de AHDL o VHDL, le parecerá fácil utilizar cualquiera de los otros
lenguajes.
Lenguajes de programación de computadoras
Es importante diferenciar entre los lenguajes de descripción de hardware, que están
diseñados para describir la configuración de hardware de un circuito, y los lengua-
jes de programación que representan una secuencia de instrucciones que deben
ser llevadas a cabo por una computadora para realizar cierta tarea. En ambos casos
utilizamos un lenguaje para programar un dispositivo. No obstante, las computado-
ras son sistemas digitales complejos que se fabrican a partir de circuitos lógicos.
Las computadoras operan mediante el seguimiento de una lista de tareas (es decir,
instrucciones o “el programa”), cada una de las cuales debe realizarse en un orden
secuencial. La velocidad de operación se determina con base en la rapidez de la
computadora para ejecutar cada instrucción. Por ejemplo, si una computadora fuera
a responder a cuatro entradas distintas, requeriría cuando menos cuatro instruccio-
nes (tareas secuenciales) para detectar e identificar cuál entrada cambió de estado.
Por otro lado, la velocidad de un circuito lógico digital está limitada sólo por la rapi-
dez con la que la circuitería pueda cambiar las salidas en respuesta a los cambios en
las entradas. Supervisa todas las entradas en forma concurrente (al mismo tiempo)
y responde a cualquier cambio.
La siguiente analogía le ayudará a comprender la diferencia entre la operación
de una computadora y la operación de un circuito lógico digital, junto con el papel de
los elementos de lenguaje que se utilizan para describir lo que hacen los sistemas.
Considere el reto de describir lo que se le hace a un auto de carreras durante
una parada en los pits. Si una sola persona realizara todas las tareas necesarias, una
por una, tendría que ser muy rápida. Ésta es la forma en la que opera una computado-
ra: una tarea a la vez, pero con mucha rapidez. Desde luego que en las competencias
de autos hay todo un equipo de mecánicos en los pits que invade el auto, y cada
miembro realiza su tarea mientras los demás realizan la suya.Todos los miembros del
equipo operan en forma concurrente, al igual que los elementos de un circuito digi-
tal. Ahora considere la forma en que usted describiría a alguien más lo que se está
haciendo al auto de carreras durante la parada en los pits, utilizando (1) el enfoque
del mecánico individual o (2) el enfoque del equipo de mecánicos. ¿No serían muy
similares las dos descripciones verbales de lo que se está haciendo? Como veremos,
los lenguajes que se utilizan para describir el hardware digital (HDL) son muy simi-
lares a los lenguajes que describen los programas de computadora (por ejemplo,
BASIC, C, JAVA), aún y cuando la implementación resultante opera en formas muy
distintas. No es necesario conocer cualquiera de estos lenguajes de programación
para comprender el HDL. Lo importante es que cuando usted haya aprendido a usar
tanto el HDL como un lenguaje de computadora, deberá comprender el papel particu-
lar de cada uno en los sistemas digitales.
SECCIÓN 3-17/COMPARACIÓN ENTRE LENGUAJES DE DESCRIPCIÓN Y. . . 99
100 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
PREGUNTAS DE REPASO
Compare la operación de una computadora y un circuito lógico al realizar la opera-
ción lógica simple de y  AB.
Solución
El circuito lógico es una simple compuerta AND. La salida y estará en ALTO dentro
de un lapso aproximado de 10 nanosegundos después del punto en el que A y B estén
en ALTO al mismo tiempo. La salida y estará en BAJO dentro de un lapso aproximado
de 10 nanosegundos después de que cualquiera de las entradas cambie a BAJO.
La computadora debe ejecutar un programa de instrucciones que realice deci-
siones. Suponga que cada instrucción toma 20 ns (bastante rápido). Cada figura del
diagrama de flujo que se muestra en la figura 3-43 representa una instrucción. Es
evidente que se requerirá un mínimo de dos o tres instrucciones (40-60 ns) para res-
ponder a los cambios en las entradas.
1. ¿Qué significa HDL?
2. ¿Cuál es el propósito de un HDL?
3. ¿Cuál es el propósito de un lenguaje de programación de computadoras?
4. ¿Cuál es la diferencia clave entre el HDL y los lenguajes de programación de
computadoras?
3-18 IMPLEMENTACIÓN DE CIRCUITOS LÓGICOS CON PLDS
En la actualidad, muchos circuitos digitales se implementan mediante el uso de
dispositivos lógicos programables (PLDs). Estos dispositivos no son como las micro-
computadoras o los microcontroladores, los cuales “ejecutan” un programa de ins-
trucciones. En vez de ello se configuran en forma electrónica y sus circuitos internos
están “alambrados” entre sí en forma electrónica para formar un circuito lógico.
Este alambrado programable puede considerarse como miles de conexiones que
están conectadas (1) o no conectadas (0). La figura 3-44 muestra una pequeña área
de conexiones programables. Cada cruce de una fila (alambre horizontal) y una
columna (alambre vertical) es una conexión programable. Es fácil imaginar lo difícil
EJEMPLO 3-25
FIGURA 3-43 El
proceso de decisiones
de un programa de
computadora.
Regresar y repetir
Hacer que y
cambie a BAJO
Hacer que y
cambie a BAJO
Hacer que y
cambie a ALTO
¿Está B en ALTO?
¿Está A en ALTO?
No Sí
No Sí
PREGUNTAS DE REPASO
A
B
C
D
E
F
G
H
Matriz de conexiones programables
Circuitos
lógicos
ENTRADAS
digitales
que sería tratar de configurar estos dispositivos mediante la colocación de 1s y 0s en
una matriz en forma manual (que es como se hacía en la década de 1970).
El papel del lenguaje de descripción de hardware es proporcionar una manera
concisa y conveniente para que el diseñador describa la operación del circuito en
un formato que una computadora personal pueda manejar y almacenar adecuada-
mente. La computadora ejecuta una aplicación de software especial llamada com-
pilador para traducir el lenguaje de descripción de hardware en la matriz de 1s y
0s que pueden cargarse en el PLD. Si una persona puede dominar el lenguaje de
descripción de hardware de mayor nivel, le será más fácil programar los PLDs que
tratar de usar álgebra booleana, dibujos esquemáticos o tablas de verdad. En for-
ma muy parecida a como aprendemos un idioma, empezaremos por expresar cosas
simples y poco a poco iremos aprendiendo los aspectos más complicados de estos
lenguajes. Nuestro objetivo es que aprenda lo suficiente sobre HDL como para que
se comunique con los demás y realice tareas simples. La total comprensión de todos
los detalles sobre estos lenguajes es algo que está fuera del alcance de este libro, ya
que sólo puede dominarse mediante la práctica regular.
En las secciones de este libro que tratan acerca de los HDLs presentaremos
tanto a AHDL como aVHDL en un formato que le permita omitir un lenguaje y con-
centrarse en el otro sin perderse de información importante. Desde luego que esto
implica que habrá cierta información redundante presente si usted opta por leer
sobre ambos lenguajes. Sentimos que esta redundancia vale el esfuerzo de propor-
cionarle la flexibilidad de enfocarse en cualquiera de los dos lenguajes, o de apren-
der ambos al comparar y contrastar ejemplos similares. La forma recomendada de
utilizar el libro es enfocarse en un lenguaje. Es cierto que la manera más sencilla
de volverse bilingüe y eficiente en ambos lenguajes es crecer en un entorno en el
que ambos lenguajes se hablen de manera rutinaria. No obstante, también es muy
fácil confundir los detalles, por lo que mantendremos los ejemplos específicos sepa-
rados e independientes. Esperamos que este formato le brinde la oportunidad de
aprender un lenguaje ahora y, más adelante, utilizar este libro como referencia, en
caso de que necesite aprender el segundo lenguaje.
1. ¿Qué significa PLD?
2. ¿Cómo se reconfiguran los circuitos en forma electrónica en un PLD?
3. ¿Qué hace un compilador?
FIGURA 3-44
Configuración de
las conexiones
de hardware con
los dispositivos lógicos
programables.
SECCIÓN 3-18/IMPLEMENTACIÓN DE CIRCUITOS LÓGICOS CON PLDS 101
102 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
3-19 FORMATOY SINTAXIS DEL HDL
Todos los lenguajes tienen sus propiedades particulares, sus similitudes con otros
lenguajes y su propia sintaxis. Cuando estudiamos gramática en la escuela, apren-
demos convenciones tales como el orden de las palabras como elementos en una
oración y la puntuación apropiada. A esto se le conoce como la sintaxis del lengua-
je. Un lenguaje diseñado para que la computadora lo interprete debe seguir reglas
estrictas de sintaxis. Una computadora es tan sólo un conjunto de alambre y arena
de playa procesada (silicio) que no tiene idea de lo que uno “quiere” darle a enten-
der, por lo que debemos presentar las instrucciones usando la sintaxis exacta que el
lenguaje de computadora espera y comprende. El formato básico de la descripción
de cualquier circuito de hardware, en cualquier lenguaje, implica dos elementos
vitales:
1. La definición de lo que entra al circuito y lo que sale de éste, es decir las espe-
cificaciones de entradas/salidas.
2. La definición de la forma en que las salidas responden a las entradas, es decir
su operación.
Un ingeniero o técnico competente podría leer un diagrama esquemático como
el de la figura 3-45, ya que ambos comprenderían el significado de cada uno de los
símbolos en el dibujo. Si usted comprende cómo funciona cada elemento y cómo se
conectan los elementos entre sí, podrá comprender la forma en que opera el circuito.
En el lado izquierdo del diagrama está el conjunto de entradas y a la derecha está
el conjunto de salidas. Los símbolos del centro definen su operación. El lenguaje
basado en texto debe transmitir la misma información. Todos los HDLs utilizan el
formato que se muestra en la figura 3-46.
En un lenguaje basado en texto, el circuito que se describe debe tener un nom-
bre. Se deben asignar nombres a las entradas y las salidas (algunas veces llamadas
puertos), y se deben definir de acuerdo con la naturaleza del puerto. ¿Es un bit
individual de un interruptor? ¿O es un número de cuatro bits que proviene de un
teclado numérico? El lenguaje basado en texto debe transmitir de alguna forma la
naturaleza de estas entradas y salidas. El modo de un puerto define si es de entrada,
de salida o de entrada/salida. El tipo se refiere al número de bits y la manera en que
éstos se agrupan y se interpretan. Si el tipo de entrada es de un solo bit, entonces
sólo puede tener dos valores posibles: 0 y 1. Si el tipo de entrada es un número bina-
rio de cuatro bits que proviene de un teclado numérico, puede tener cualquiera de
16 valores distintos (00002  11112). El tipo determina el intervalo de valores posi-
bles. En un lenguaje basado en texto, la definición de la operación del circuito está
FIGURA 3-45
Descripción de un
diagrama esquemático. y
SALIDA
a
ENTRADA
b
AND2
ENTRADA
Descripción funcional
Definiciones de E/S
Documentación
FIGURA 3-46 Formato
de los archivos de HDL.
PREGUNTAS DE REPASO
contenida dentro de un conjunto de instrucciones que van después de la definición
de entrada/salida (E/S) del circuito. En las siguientes dos secciones describiremos
el circuito simple de la figura 3-45 e ilustraremos los elementos críticos del AHDL
y del VHDL.
DESCRIPCIÓN BOOLEANA MEDIANTE EL USO DE AHDL
Consulte la figura 3-47. La palabra clave SUBDESIGN asigna un nombre al bloque
del circuito, que en este caso es compuerta_and. El nombre del archivo también debe
ser compuerta_and.tdf. Observe que la palabra clave SUBDESIGN está en mayúscu-
las. El software no lo requiere, pero el uso de un estilo consistente en cuanto a las
mayúsculas y minúsculas facilita en forma considerable la lectura del código. La guía
de estilo que se incluye con el compilador de Altera para AHDL sugiere el uso de
letras mayúsculas para las palabras clave del lenguaje. Las variables que nombre el
diseñador deben estar en minúsculas.
La sección SUBDESIGN define las entradas y salidas del bloque del circuito
lógico. Algo debe encerrar al circuito que estamos tratando de describir, al igual que
un diagrama de bloques encierra a todo lo que forma parte del diseño. En AHDL,
esta definición de entrada/salida se encierra entre paréntesis. La lista de variables
utilizadas como entradas para este bloque se separa mediante comas y va seguida
de :INPUT;. En AHDL se asume el uso del tipo bit individual, a menos que la varia-
ble se designe como varios bits. El bit de salida individual se declara con el modo
:OUTPUT;. Aprenderemos la forma correcta de describir otros tipos de entradas,
salidas y variables a medida que lo vayamos necesitando.
El conjunto de instrucciones que describe la operación del circuito en AHDL
está contenido en la sección lógica, entre las palabras clave BEGIN y END. En este
ejemplo, la operación de hardware se describe mediante una ecuación de álgebra
booleana muy simple, la cual establece que a la salida (y) se le debe asignar () el
nivel lógico producido por a AND b. A esta ecuación de álgebra booleana se le cono-
ce como instrucción de asignación concurrente. Cualquier instrucción (sólo hay una
en este ejemplo) entre BEGIN y END se evaluará en forma constante y concurrente.
El orden en el que se listen no tiene nada que ver. Los operadores booleanos básicos
son:
 AND
# OR
! NOT
$ XOR
1. ¿Qué aparece dentro de los paréntesis ( ) después de SUBDESIGN?
2. ¿Qué aparece entre BEGIN y END?
FIGURA 3-47 Elementos
esenciales en AHDL. SUBDESIGN compuerta and
(
a, b :INPUT;
y :OUTPUT;
)
BEGIN
y  a  b;
END;
A
H
D
L
SECCIÓN 3-19/FORMATO Y SINTAXIS DEL HDL 103
104 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
PREGUNTAS DE REPASO
DESCRIPCIÓN BOOLEANA MEDIANTE EL USO DEVHDL
Consulte la figura 3-48. La palabra clave ENTITY asigna un nombre al bloque del
circuito, que en este caso es compuerta_and. Observe que la palabra ENTITY está
en mayúsculas pero compuerta_and no. El software no requiere esto, pero el uso
de un estilo consistente en cuanto a las mayúsculas y minúsculas facilita en forma
considerable la lectura del código. La guía de estilo que se incluye con el compilador
de Altera paraVHDL sugiere el uso de letras mayúsculas para las palabras clave del
lenguaje. Las variables que nombra el diseñador deben estar en minúsculas.
La declaración ENTITY puede considerarse como la descripción de un bloque.
Algo debe encerrar al circuito que estamos tratando de describir, al igual que un
diagrama de bloques encierra a todo lo que forma parte del diseño. En VHDL, la
palabra clave PORT indica al compilador que estamos definiendo entradas y salidas
para el bloque de este circuito. Se listan los nombres utilizados para las entradas
(separados por comas) y se termina con un punto y coma, junto con una descripción
del modo y del tipo de entrada (:IN BIT). EnVHDL, la descripción BIT indica al com-
pilador que cada una de las variables en la lista es un bit individual. Aprenderemos
la forma apropiada de describir otros tipos de entradas, salidas y variables a medida
que lo vayamos necesitando. La línea que contiene END compuerta_and; termina la
declaración ENTITY.
La declaración ARCHITECTURE se utiliza para describir la operación de todo
lo que se encuentra dentro del bloque. El diseñador inventa un nombre para esta
descripción arquitectónica del funcionamiento interno del bloque ENTITY (ckt
en este ejemplo). Todo bloque ENTITY debe tener cuando menos una declaración
ARCHITECTURE asociada a él. Las palabras OF e IS son palabras clave en esta
declaración. El cuerpo de la descripción de la arquitectura va encerrado entre las
palabras clave BEGIN y END. END va seguida del nombre que se asignó a esta arqui-
tectura. Dentro del cuerpo (entre BEGIN y END) está la descripción de la operación
del bloque. En este ejemplo, la operación del hardware se describe mediante una
ecuación de álgebra booleana muy simple, la cual establece que a la salida (y) se le
debe asignar () el nivel lógico producido por a AND b. A esto se le conoce como
una instrucción de asignación concurrente, lo cual significa que todas las instruc-
ciones (sólo hay una en este ejemplo) entre BEGIN y END se evaluarán en forma
constante y concurrente. El orden en el que se listen no es relevante.
1. ¿Cuál es la función de la declaración ENTITY?
2. ¿Qué sección clave define la operación del circuito?
3. ¿Cuál es el operador de asignación que se utiliza para asignar un valor a una
señal lógica?
V
H
D
L
FIGURA 3-48 Elementos
esenciales en VHDL. ENTITY compuerta and IS
PORT ( a, b :IN BIT;
y :OUT BIT);
END compuerta and;
ARCHITECTURE ckt OF compuerta and IS
BEGIN
y = a AND b;
END ckt;
3-20 SEÑALES INTERMEDIAS
En muchos diseños se tiene la necesidad de definir puntos de señal “dentro” del
bloque del circuito. Son puntos en el circuito que no son entradas ni salidas para
el bloque, pero que pueden ser útiles como punto de referencia. Puede ser una señal
que necesite conectarse a muchos otros lugares dentro del bloque. En un diagrama
esquemático analógico o digital se llamarían puntos de prueba o nodos. En un HDL
se conocen como nodos ocultos o señales locales. La figura 3-49 muestra un circuito
muy simple que utiliza una señal intermedia llamada m. En el HDL estos nodos
(señales) no se definen con las entradas y salidas, sino en la sección que describe la
operación del bloque. Las entradas y salidas están disponibles para otros bloques
de circuito en el sistema, pero estas señales locales se reconocen sólo dentro de este
bloque.
En el código de ejemplo que viene a continuación, observe la información en la
parte superior. El propósito de esta información es sólo con fines de documentación.
En definitiva es imprescindible que el diseño se documente con todos los detalles
posibles. Como mínimo, debe describir el proyecto en el que se está usando, quién lo
escribió y la fecha. Por lo general, a esta información se le conoce como el encabeza-
do. En este libro vamos a mantener nuestros encabezados breves para que sea más
ligero cuando lo lleve a su clase, pero recuerde que el espacio en memoria casi no
cuesta y la información es valiosa, así que no tenga miedo de documentar sus proyectos
con todo el detalle posible. También hay comentarios enseguida de instrucciones en
el código. Estos comentarios sirven al diseñador para recordar lo que estaba tratan-
do de hacer, además ayudan a que cualquier otra persona comprenda el significado
del código.
NODOS OCULTOS EN AHDL
El Código AHDL que describe el circuito de la figura 3-49 se muestra en la figura
3-50. Los comentarios en AHDL pueden ir encerrados entre caracteres %, como
podemos ver entre las líneas 1 y 4. Esta sección del código permite al diseñador
escribir muchas líneas de información que serán ignoradas por los programas de
computadora que utilicen este archivo, pero para cualquier persona que trate
de descifrar el código serán muy útiles. Observe que los comentarios al final de
las líneas 9, 10, 13, 15 y 16 van precedidos por dos guiones cortos (--). El texto des-
pués de los guiones cortos es sólo para documentación. Puede usarse cualquiera
de estos símbolos para comentarios, pero los signos de porcentaje deben usarse en
pares para abrir y cerrar un comentario. Los dos guiones cortos indican un comenta-
rio que se extiende hasta el final de la línea.
En AHDL las señales locales se declaran en la sección VARIABLE, la cual se
coloca entre la sección SUBDESIGN y la sección lógica. La señal intermedia m
se define en la línea 11, después de la palabra clave VARIABLE. La palabra clave
NODE designa la naturaleza de la variable. Observe que un signo de dos puntos
a
ENTRADA
b
y
SALIDA
c
m
Señal intermedia m
ENTRADA
ENTRADA
FIGURA 3-49
Diagrama de un circuito lógico con una variable intermedia.
A
H
D
L
SECCIÓN 3-20/SEÑALES INTERMEDIAS 105
106 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
PREGUNTAS DE REPASO
separa el nombre de la variable de su designación de nodo. En la descripción de
hardware de la línea 13, la variable intermedia se asigna (se conecta) a un valor
(m  a  b;) y después m se utiliza en la segunda instrucción en la línea 14 para
asignar (conectar) un valor a y (y  m # c;). Recuerde que las instrucciones de asig-
nación son concurrentes y por ende no importa el orden en el que se proporcionan.
Para que los humanos podamos leerlas, es más lógico asignar valores a variables
intermedias antes de usarlas en otras instrucciones de asignación, tal y como se
muestra en este ejemplo.
1. ¿Cuál es la designación que se utiliza para las variables intermedias?
2. ¿En dónde se declaran estas variables?
3. ¿Importa si la ecuación m o y se declara primero?
4. ¿Qué carácter se utiliza para limitar un bloque de comentarios?
5. ¿Qué caracteres se utilizan para comentar una sola línea?
SEÑALES LOCALES DEVHDL
El código de VHDL que describe el circuito de la figura 3-49 se muestra en la figura
3-51. Los comentarios en VHDL van después de dos guiones cortos (--). Al escribir
dos guiones cortos sucesivos, el diseñador puede escribir información desde ese
punto hasta el final de la línea. La información que vaya después de estos dos guio-
nes será ignorada por los programas de computadora que utilicen este archivo, pero
cualquier persona que trate de descifrar el código podrá leerla.
La señal intermedia m se define en la línea 13, después de la palabra clave SIG-
NAL. La palabra clave BIT designa el tipo de la señal. Observe que un signo de dos
puntos separa el nombre de la señal de su designación de tipo. En la descripción de
hardware de la línea 16, la señal intermedia se asigna (se conecta) a un valor (m  a
AND b;) y después m se utiliza en la instrucción de la línea 17 para asignar (conec-
tar) un valor a y (y  m OR c;). Recuerde que las instrucciones de asignación son
V
H
D
L
FIGURA 3-50 Las
variables intermedias
en AHDL, descritas en
la figura 3-49.
1 % Variables intermedias en AHDL (Figura 3 49)
2 Sistemas digitales 10a ed
3 NS Widmer
4 MAYO 23, 2005 %
5 SUBDESIGN fig3 50
6 (
7 a,b,c :INPUT; define las entradas del bloque
8 y :OUTPUT; define la salida del bloque
9 )
10 VARIABLE
11 m :NODE; nombra una señal intermedia
12 BEGIN
13 m  a  b; genera término de producto oculto
14 y  m # c; genera suma en la salida
15 END;
PREGUNTAS DE REPASO
concurrentes y no importa el orden en el que se proporcionen. Para que los humanos
podamos leerlas, es más lógico asignar valores a las señales intermedias antes de
utilizarlas en otras instrucciones de asignación, como se muestra aquí.
1. ¿Cuál es la designación utilizada para las señales intermedias?
2. ¿En dónde se declaran estas señales?
3. ¿Importa si la ecuación m o y se declara primero?
4. ¿Qué caracteres se utilizan para comentar una sola línea?
RESUMEN
1. El álgebra booleana es una herramienta matemática que se utiliza en el análisis
y diseño de circuitos digitales.
2. Las operaciones booleanas básicas son OR, AND y NOT.
3. Una compuerta OR produce una salida en ALTO cuando cualquier entrada está
en ALTO. Una compuerta AND produce una salida en ALTO sólo cuando todas
las entradas están en ALTO. Un circuito NOT (INVERSOR) produce una salida
que es el nivel lógico opuesto al de la entrada.
4. Una compuerta NOR es igual que una compuerta OR con su salida conectada a
un INVERSOR. Una compuerta NAND es igual que una compuerta AND con su
salida conectada a un INVERSOR.
FIGURA 3-51 Señales intermedias en VHDL, descritas en la figura 3-49.
1 Variables intermedias en VHDL (Figura 3 49)
2 Sistemas digitales 10a ed
3 NS Widmer
4 MAYO 23, 2005
5
6 ENTITY fig3 51 IS
7 PORT( a, b, c :IN BIT; define las entradas del bloque
8 y :OUT BIT); define la salida del bloque
9 END fig3 51;
10
11 ARCHITECTURE ckt OF fig3 51 IS
12
13 SIGNAL m :BIT; nombra una señal intermedia
14
15 BEGIN
16 m = a AND b; genera término de producto oculto
17 y = m OR c; genera suma en la salida
18 END ckt;
RESUMEN 107
108 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
5. Los teoremas y las reglas booleanas pueden usarse para simplificar la expresión
de un circuito lógico y pueden producir una manera más simple de implementar
el circuito.
6. Las compuertas NAND pueden usarse para implementar cualquiera de las opera-
ciones booleanas básicas. Las compuertas NOR pueden usarse en forma similar.
7. Pueden usarse los símbolos alternativos o estándar para cada compuerta lógica,
dependiendo de si la salida va a ser activa en ALTO o activa en BAJO.
8. El estándar IEEE/ANSI para los símbolos lógicos utiliza símbolos rectangulares para
cada dispositivo lógico, con notaciones especiales dentro de los rectángulos
para mostrar cómo dependen las salidas de las entradas.
9. Los lenguajes de descripción de hardware se han convertido en un método
importante para describir circuitos digitales.
10. El código HDL siempre debe contener comentarios que documenten sus carac-
terísticas más importantes, de manera que cualquier persona que lo lea después
pueda comprender lo que hace.
11. Toda descripción de un circuito en HDL contiene una definición de las entradas
y salidas, seguida de una sección que describe la operación del circuito.
12. Además de las entradas y salidas, pueden definirse conexiones intermedias inac-
cesibles desde fuera del circuito. A estas conexiones intermedias se les conoce
como nodos ocultos o señales locales.
TÉRMINOS IMPORTANTES
activa en ALTO
activa en BAJO
AHDL –lenguaje de
descripción de hardware
de Altera
álgebra booleana
ARCHITECTURE
asignada
BIT
circuito NOT
(INVERSOR)
compilador
compuerta AND
compuerta NAND
compuerta NOR
compuerta OR
concurrente
ENTITY
HDLs –lenguajes de
descripción de hardware
IEEE/ANSI
instrucción de asignación
concurrente
inversión (complementación)
modo
nivel lógico
niveles lógicos activos
no asignado
NODE
nodos ocultos (señales
locales)
operación AND
operación NOT
operación OR
PLDs –dispositivos lógicos
programables
símbolos lógicos
alternativos
sintaxis
SUBDESIGN
tabla de verdad
teoremas booleanos
teoremas de DeMorgan
tipo
VARIABLE
VHDL –lenguaje de
descripción de
hardware para circuitos
integrados de muy alta
velocidad (VHSIC)
PROBLEMAS
Las letras en gris que van antes de algunos de los problemas se utilizan para indicar
la naturaleza o el tipo de éstos, como se indica a continuación:
B problema básico.
F problema de diagnóstico de fallas.
D problema de diseño o modificación de circuito.
N nuevo concepto o técnica que no se cubre en el libro.
A problema avanzado.
H problema de HDL.
SECCIÓN 3-3
3-1.*
Dibuje la forma de onda de salida para la compuerta OR de la figura 3-52.
3-2. Suponga que la entrada A en la figura 3-52 se conectó a tierra en forma inad-
vertida (es decir, A  0). Dibuje la forma de onda de salida resultante.
3-3.* Suponga que la entrada A en la figura 3-52 se pone en corto en forma inad-
vertida con la línea de suministro de 5 V (es decir, A  1). Dibuje la forma
de onda de salida resultante.
3-4. Lea las siguientes aseveraciones con respecto a una compuerta OR. Al prin-
cipio tal vez parezcan válidas, pero después de analizarlas se dará cuenta
que ninguna es verdadera siempre. Demuestre esto mediante un ejemplo
específico para refutar cada aseveración.
(a) Si la forma de onda de salida de una compuerta OR es igual que la
forma de onda en una de sus entradas, la otra entrada se mantendrá de
manera permanente en BAJO.
(b) Si la forma de onda de salida de una compuerta OR siempre está en
ALTO, una de sus entradas se mantendrá de manera permanente
en ALTO.
3-5. ¿Cuántas combinaciones distintas de condiciones de entrada producirán
una salida en ALTO en una compuerta OR de cinco entradas?
SECCIÓN 3-4
3-6. Cambie la compuerta OR en la figura 3-52 por una compuerta AND.
(a)* Dibuje la forma de onda de salida.
(b) Dibuje la forma de onda de salida si la entrada A se conecta de manera
permanente a tierra.
(c) Dibuje la forma de onda de salida si A se pone en corto de manera per-
manente con 5 V.
3-7.* Consulte la figura 3-4. Modifique el circuito de manera que la alarma se
active sólo cuando la presión y la temperatura excedan sus límites máximos
al mismo tiempo.
3-8.* Cambie la compuerta OR en la figura 3-6 por una compuerta AND y dibuje
la forma de onda de la salida.
3-9. Suponga que tiene una compuerta desconocida de dos entradas, que puede
ser OR o AND. ¿Qué combinación de niveles de entrada debe aplicar a las
entradas para determinar qué tipo de compuerta es?
3-10. Verdadero o falso: sin importar cuántas entradas tenga, una compuerta AND
producirá una salida en ALTO para sólo una combinación de niveles de
entrada.
B
B
B
C
B
B
D
B
B
B
FIGURA 3-52
A
B
C
x
A
B
C
* Encontrará las respuestas a los problemas marcados con un asterisco al nal del libro.
PROBLEMAS 109
110 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
SECCIONES 3-5 A 3-7
3-11. Aplique la forma de onda A de la figura 3-23 a la entrada de un INVER-
SOR. Dibuje la forma de onda de salida. Repita el proceso para la forma
de onda B.
3-12. (a)* Escriba la expresión booleana para la salida x en la figura 3-53(a).
Determine el valor de x para todas las posibles condiciones de entrada
y liste los valores en una tabla de verdad.
(b) Repita el proceso para el circuito de la figura 3-53(b).
3-13.* Cree una tabla de análisis completa para el circuito de la figura 3-15(b);
para ello encuentre los niveles lógicos presentes en la salida de cada com-
puerta, para todas las 32 posibles combinaciones de entrada.
3-14. (a)* Cambie cada compuerta OR por una compuerta AND y cada compuerta
AND por una compuerta OR en la figura 3-15(b). Después escriba la
expresión para la salida.
(b) Complete una tabla de análisis.
3-15. Cree una tabla de análisis completa para el circuito de la figura 3-16; para
ello encuentre los niveles lógicos presentes en la salida de cada compuerta,
para todas las 16 posibles combinaciones de niveles de entrada.
SECCIÓN 3-8
3-16. Para cada una de las siguientes expresiones, construya el circuito lógico
correspondiente utilizando compuertas AND y OR e INVERSORES.
(a)* x  AB(C  D)
(b)* z  A  B  CDE)  BCD
(c) y  (M  N  PQ)
FIGURA 3-53 A
(a)
x
B
C
(b)
A
B
C
D
x
B
B
B
B
B
B
(d) x  W  PQ
(e) z  MN(P  N)
(f) x  (A  B)(A  B)
SECCIÓN 3-9
3-17.* (a) Aplique las formas de onda de entrada de la figura 3-54 a una compuer-
ta NOR y dibuje la forma de onda de salida.
(b) Repita el procedimiento manteniendo C de manera permanente en
BAJO.
(c) Repita el procedimiento manteniendo C en ALTO.
3-18. Repita el problema 3-17 para una compuerta NAND.
3.19.* Escriba la expresión para la salida de la figura 3-55 y utilícela para deter-
minar la tabla de verdad completa. Después aplique las formas de onda de
la figura 3-54 a las entradas del circuito y dibuje la forma de onda de salida
resultante.
3-20. Determine la tabla de verdad para el circuito de la figura 3-24.
3-21. Modifique los circuitos que se construyeron en el problema 3-16 de manera
que se utilicen compuertas NAND y NOR en donde sea apropiado.
SECCIÓN 3-10
3-22. Demuestre los teoremas (15a) y (15b) probando todos los casos posibles.
3-23.* PREGUNTA DE EJERCICIO
Complete cada una de las expresiones.
(a) A  1  __________
(b) A  A  __________
(c) B  B  __________
(d) C  C  __________
(e) x  0  __________
(f) D  1 __________
(g) D  0  __________
(h) C  C  __________
(i) G  GF  __________
(j) y  wy  __________
A
B
C
FIGURA 3-54
X
A
B
C
FIGURA 3-55
PROBLEMAS 111
B
B
C
B
B
C
B
112 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
3-24. (a)* Simplifique la siguiente expresión usando los teoremas (13b), (3)
y (4):
x  (M  N)(M  P)(N  P)
(b) Simplifique la siguiente expresión utilizando los teoremas (13a), (8)
y (6):
z  ABC  ABC  BCD
SECCIONES 3-11 Y 3-12
3-25. Demuestre los teoremas de DeMorgan probando todos los casos posibles.
3-26. Simplifique cada una de las siguientes expresiones usando los teoremas de
DeMorgan.
(a)* ABC (d) A  B (g)* A(B  C)D
(b) A  BC (e)* AB (h) (M  N)(M  N)
(c)* ABCD (f) A  C  D (i) ABCD
3-27.* Use los teoremas de DeMorgan para simplificar la expresión de salida de la
figura 3-55.
3-28. Convierta el circuito de la figura 3-53(b) en uno que utilice sólo compuertas
NAND. Después escriba la expresión de salida para el nuevo circuito, simpli-
fíquelo utilizando los teoremas de DeMorgan y compárelo con la expresión
para el circuito original.
3-29. Convierta el circuito de la figura 3-53(a) en uno que utilice sólo compuer-
tas NOR. Después escriba la expresión para el nuevo circuito, simplifíquelo
utilizando los teoremas de DeMorgan y compárelo con la expresión para el
circuito original.
3-30. Muestre cómo puede construirse una compuerta NAND de dos entradas a
partir de dos compuertas NOR de dos entradas.
3-31. Muestre cómo puede construirse una compuerta NOR de dos entradas a
partir de compuertas NAND de dos entradas.
3-32. Un jet emplea un sistema para monitorear los valores de revoluciones por
minuto (rpm), presión y temperatura de sus motores mediante el uso de
motores que operan de la siguiente manera:
salida del sensor de RPM  0 sólo cuando la velocidad  4800 rpm
salida del sensor P  0 sólo cuando la presión  220 psi
salida del sensor T  0 sólo cuando la temperatura  200° F
La figura 3-56 muestra el circuito lógico que controla una luz de advertencia
en cabina para ciertas combinaciones de condiciones del motor. Suponga
que un nivel ALTO en la salida W activa la luz de advertencia.
(a)* Determine qué condiciones del motor darán una advertencia al piloto.
(b) Cambie este circuito por uno que utilice sólo compuertas NAND.
Luz de
advertencia
W
P
T
R
Sensor de
temperatura
Sensor de
presión
Sensor
de RPM
FIGURA 3-56
C
C
B
B
C
C
B
B
C
SECCIONES 3-13 Y 3-14
3-33. Para cada una de las siguientes instrucciones, dibuje el símbolo de com-
puerta lógica (estándar o alternativo) apropiado para la operación dada.
(a) Una salida en ALTO ocurre sólo cuando las tres entradas están en
BAJO.
(b) Una salida en BAJO ocurre cuando alguna de las cuatro entradas está
en BAJO.
(c) Una salida activa en BAJO ocurre sólo cuando las ocho entradas están
en ALTO.
3-34. Dibuje las representaciones estándar para cada una de las compuertas lógi-
cas básicas. Después dibuje las representaciones alternativas.
3-35. Suponga que el circuito de la figura 3-55 es un candado de combinación
digital simple, cuya salida generará una señal ABRIR activa en BAJO para
sólo una combinación de entradas.
(a)* Modifique el diagrama del circuito de tal forma que represente la ope-
ración del circuito de una manera más efectiva.
(b) Use el nuevo diagrama del circuito para determinar la combinación
de entradas que activará la salida. Para ello, trabaje regresando desde
la salida y utilizando la información que proporcionan los símbolos de
las compuertas, como se hizo en los ejemplos 3-22 y 3-23. Compare los
resultados con la tabla de verdad que se obtuvo en el problema 3-19.
3-36. (a) Determine las condiciones de entrada necesarias para activar la sali-
da Z en la figura 3-37(b). Para ello, trabaje regresando desde la salida,
como se hizo en los ejemplos 3-22 y 3-23.
(b) Suponga que el estado BAJO de Z es el que debe activar la alarma.
Cambie el diagrama del circuito para reflejar lo anterior y después uti-
lice el diagrama revisado para determinar las condiciones de entrada
necesarias para activar la alarma.
3-37. Modifique el circuito de la figura 3-40, de manera que se necesite que A1  0
para producir UNIDAD  1, en lugar de A1  1.
3-38.* Determine las condiciones de entrada necesarias para hacer que la salida
en la figura 3-57 cambie a su estado activo.
3-39.* ¿Cuál es el estado asignado para la salida de la figura 3-57?, ¿para la salida
de la figura 3-36(c)?
3-40. Use los resultados del problema 3-38 para obtener la tabla de verdad com-
pleta para el circuito de la figura 3-57.
3-41.* La figura 3-58 muestra una aplicación de compuertas lógicas que simula un
interruptor de dos vías, como los que utilizamos en nuestros hogares para
encender o apagar una luz desde dos interruptores distintos. Aquí la luz
FIGURA 3-57
x
A
B
C
D
E
PROBLEMAS 113
B
B
C
C
D
B
B
B
N
114 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
es un LED que estará ENCENDIDO (en conducción) cuando la salida de
la compuerta NOR esté en BAJO. Observe que esta salida está etiquetada
como LUZ para indicar que es activa en BAJO. Determine las condiciones de
entrada necesarias para encender el LED. Después verifique que el circuito
opere como un interruptor de dos vías, utilizando los interruptores A y B.
(En el capítulo 4 aprenderá a diseñar circuitos como éste para producir una
relación dada entre las entradas y las salidas.)
SECCIÓN 3-15
3-42. Vuelva a dibujar los circuitos de (a)* la figura 3-57 y (b) la figura 3-58
mediante el uso de los símbolos IEEE/ANSI.
SECCIÓN 3-17
PREGUNTAS DE PRÁCTICA DE HDL
3.-43.* Verdadero o falso:
(a) VHDL es un lenguaje de programación de computadoras.
(b) VHDL puede hacer lo mismo que AHDL.
(c) AHDL es un lenguaje del estándar IEEE.
(d) Cada intersección en una matriz de conmutación puede programarse
como un circuito abierto o cerrado, entre un alambre de fila con uno de
columna.
(e) El primer elemento que aparece en la parte superior de un listado de
HDL es la descripción funcional.
(f) El tipo de un objeto indica si es una entrada o una salida.
(g) El modo de un objeto determina si es una entrada o una salida.
(h) Los nodos ocultos son nodos que se han eliminado y que nunca se utili-
zarán de nuevo.
(i) Las señales locales son otro nombre para las variables intermedias.
(j) El encabezado es un bloque de comentarios que documentan informa-
ción vital sobre el proyecto.
SECCIÓN 3-18
3-44. Vuelva a dibujar la matriz de conexiones programable de la figura 3-44.
Etiquete las señales de salida (líneas horizontales) de la matriz de conexión
FIGURA 3-58 +5 V
LUZ
+5 V
+5 V
A
B
B
H
B
(desde la fila superior hasta la fila inferior) de la siguiente manera: AAA-
BADHE. Dibuje una X en las intersecciones apropiadas para poner en corto
circuito una fila con una columna y crear estas conexiones hacia el circuito
lógico.
   3-45.* Escriba el código de HDL en el lenguaje de su preferencia, para que produz-
ca las siguientes funciones de salida:
3-46. Escriba el código de HDL en el lenguaje de su preferencia, para implemen-
tar el circuito lógico de la figura 3-39.
(a) Use una sola ecuación booleana.
(b) Use las variables intermedias V, W, X y Y.
APLICACIÓN DE MICROCOMPUTADORA
3-47.* Consulte la figura 3-40 en el ejemplo 3-23. Las entradas de A7 a A0 son entra-
das de dirección que se suministran a este circuito desde las salidas del
microprocesador de una microcomputadora. El código de dirección de ocho
bits A7 – A0 selecciona cuál dispositivo desea activar el microprocesador. En
el ejemplo 3-23, el código de dirección requerido para activar la unidad de
disco era A7 a A0  111111102  FE16.
Modifique el circuito de manera que el microprocesador deba enviar
un código de dirección de 4A16 para activar la unidad de disco.
EJERCICIOS AVANZADOS
3-48. Muestre cómo puede implementarse x  ABC con una compuerta NOR de
dos entradas y una compuerta NAND de dos entradas.
3-49.* Implemente y  ABCD usando sólo compuertas NAND de dos entradas.
RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES
SECCIÓN 3-2
1. x  1 2. x  0 3. 32
SECCIÓN 3-3
1. Las entradas en BAJO. 2. x  A  B  C  D  E  F 3. Nivel ALTO constante.
SECCIÓN 3-4
1. Todas las cinco entradas  1. 2. Una entrada en BAJO mantendrá la salida en
BAJO. 3. Falso; vea la tabla de verdad para cada compuerta.
SECCIÓN 3-5
1. La salida del segundo INVERSOR será igual que la entrada A. 2. y estará en BAJO
sólo para A  B  1.
SECCIÓN 3-6
1. x  A  B  C  AD 2. x  D(AB  C)  E
X  A  B
Y  AB
Z  A  B  C
RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES 115
H
H
C
C
C
116 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS
SECCIÓN 3-7
1. x  1 2. x  1 3. x  1 para ambos casos.
SECCIÓN 3-8
1.Vea la figura 3-15(a). 2.Vea la figura 3-17(b). 3.Vea la figura 3-15(b).
SECCIÓN 3-9
1. Todas las entradas en BAJO. 2. x  0 3. x  A  B  CD
SECCIÓN 3-10
1. y  AC 2. y  A B D 3. y  AD  BD
SECCIÓN 3-11
1. z  AB  C 2. y  (R  S  T)Q 3. Igual que la figura 3-28, sólo que la
compuerta NAND se sustituye por una compuerta NOR. 4. y  AB(C  D)
SECCIÓN 3-12
1. Tres. 2. El circuito NOR es más eficiente, ya que puede implementarse con solo un CI
74LS02. 3. x  (AB)(CD)  AB  (CD)  AB  CD
SECCIÓN 3-13
1. La salida cambia a BAJO cuando cualquier entrada está en ALTO. 2. La salida
cambia a ALTO sólo cuando todas las entradas están en BAJO. 3. La salida cambia a
BAJO cuando cualquier entrada está en BAJO. 4. La salida cambia a ALTO sólo cuando
todas las entradas están en ALTO.
SECCIÓN 3-14
1. Z cambiará a ALTO cuando A  B  0 y C  D  1. 2. Z cambiará a BAJO cuando A 
B  0, E  1 y C o D o ambas sean 1. 3. Dos. 4. Dos. 5. BAJO. 6. A  B
 0, C  D  1 7. W
SECCIÓN 3-15
1.Vea la figura 3-41. 2. Rectángulo con  en su interior y triángulos en las entradas.
SECCIÓN 3-16
1. Ecuación booleana, tabla de verdad, diagrama lógico, diagrama de tiempos, lenguaje.
SECCIÓN 3-17
1. Lenguaje de descripción de hardware. 2. Para describir un circuito digital y su ope-
ración. 3. Para dar a una computadora una lista secuencial de tareas. 4. El HDL
describe los circuitos concurrentes de hardware; las instrucciones de computadora se ejecu-
tan una a la vez.
SECCIÓN 3-18
1. Dispositivo lógico programable. 2. Se cierran y se abren conexiones en una matriz
de conmutación. 3. Traduce el código de HDL en un patrón de bits para configurar la
matriz de conmutación.
SECCIÓN 3-19
AHDL
1. Las definiciones de entrada y de salida. 2. La descripción de la forma en que opera.
VHDL
1. Para dar un nombre al circuito y definir sus entradas y salidas. 2. La descripción
ARCHITECTURE. 3.  
SECCIÓN 3-20
AHDL
1. NODE. 2. Después de la definición de E/S y antes de BEGIN. 3. No.
4. %. 5. --
VHDL
1. SIGNAL. 2. Dentro de ARCHITECTURE, antes de BEGIN. 3. No. 4. --
RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES 117
4-1 Forma de suma de productos
4-2 Simplificación de circuitos
lógicos
4-3 Simplificación algebraica
4-4 Diseño de circuitos lógicos
combinacionales
4-5 Método de mapas de
Karnaugh
4-6 Circuitos OR exclusivo y NOR
exclusivo
4-7 Generador y comprobador de
paridad
4-8 Circuitos de habilitación/
deshabilitación
4-9 Características básicas de los
CIs digitales
■ CONTENIDO
CIR CUITOS LÓGICOS
COMBINACIONALES
C A P Í T U L O 4
4-10 Diagnóstico de fallas en
sistemas digitales
4-11 Fallas internas en los
circuitos integrados digitales
4-12 Fallas externas
4-13 Ejemplo práctico de
diagnóstico de fallas
4-14 Dispositivos lógicos
programables
4-15 Representación de datos en
HDL
4-16 Tablas de verdad mediante el
uso de HDL
4-17 Estructuras de control de
decisiones en HDL
■ OBJETIVOS
Al terminar este capítulo, usted podrá:
■ Convertir una expresión lógica en una expresión de suma de productos.
■ Realizar los pasos necesarios para reducir una expresión de suma de
productos a su forma más simple.
■ Utilizar el álgebra booleana y el mapa de Karnaugh como herramientas para
simplificar y diseñar circuitos lógicos.
■ Explicar la operación de los circuitos OR exclusivo y NOR exclusivo.
■ Diseñar circuitos lógicos simples sin la ayuda de una tabla de verdad.
■ Implementar circuitos de habilitación.
■ Citar las características básicas de los CIs digitales TTL y CMOS.
■ Utilizar las reglas básicas de diagnóstico de fallas de los sistemas digitales.
■ Deducir las fallas a partir de los resultados observados en circuitos lógicos
combinacionales.
■ Describir la idea fundamental de los dispositivos lógicos programables (PLDs).
■ Describir los pasos implicados en la programación de un PLD para realizar
una función lógica combinacional simple.
■ Consultar los manuales de usuario de Altera para adquirir la información
necesaria para realizar un experimento de programación simple en el
laboratorio.
■ Describir los métodos de diseño jerárquico.
■ Identificar los tipos de datos apropiados para las variables con valores de un
solo bit, arreglos de bits y numéricas.
■ Describir los circuitos lógicos mediante el uso de las estructuras de control de
HDL IF/ELSE, IF/ELSIF y CASE.
■ Seleccionar la estructura de control apropiada para un problema dado.
■ INTRODUCCIÓN
En el capítulo 3 estudiamos la operación de todas las compuertas lógicas básicas,
y utilizamos el álgebra booleana para describir y analizar circuitos formados de
combinaciones de compuertas lógicas. Estos circuitos pueden clasificarse como
circuitos lógicos combinacionales ya que, en cualquier momento, el nivel lógico
de la salida depende de la combinación de los niveles lógicos presentes en las
entradas. Un circuito combinacional no tiene característica de memoria, por lo
que su salida depende sólo del valor actual de sus entradas.
En este capítulo continuaremos con nuestro estudio de los circuitos
combinacionales. Para empezar, veremos más detalles sobre la simplificación de
los circuitos lógicos. Analizaremos dos métodos: el primero utiliza los teoremas
del álgebra booleana; el segundo utiliza una técnica de mapeo. Además,
119
120 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
estudiaremos técnicas simples de diseño de circuitos lógicos combinacionales
para satisfacer un conjunto dado de requerimientos. El estudio completo del
diseño de circuitos lógicos no es uno de nuestros objetivos, pero los métodos que
presentaremos le brindarán una excelente introducción al diseño lógico.
Una buena porción de este capítulo está dedicada al diagnóstico de fallas de
los circuitos combinacionales. Con esta primera exposición al diagnóstico de fallas,
usted podrá empezar a desarrollar el tipo de habilidades analíticas necesarias para
tener éxito al realizar sus diagnósticos de fallas. Para que este material sea lo más
práctico posible, primero presentaremos algunas de las características básicas de
los CIs de compuertas lógicas en las familias lógicas TTL y CMOS, junto con una
descripción de los tipos más comunes de fallas que se encuentran en los circuitos
integrados digitales.
En las últimas secciones de este capítulo ampliaremos nuestro conocimiento
sobre los dispositivos lógicos programables y los lenguajes de descripción de
hardware. Reforzaremos el concepto de las conexiones de hardware programables
y brindaremos más detalles en relación con la función del sistema de desarrollo.
Usted conocerá los pasos que se siguen actualmente para el diseño y desarrollo de los
sistemas digitales. Le proporcionaremos suficiente información para que pueda elegir
los tipos de datos correctos para usarlos en proyectos simples que presentaremos
más adelante en este capítulo. Por último explicaremos varias estructuras de control,
junto con algunas instrucciones relacionadas con su uso apropiado.
4-1 FORMA DE SUMA DE PRODUCTOS
Los métodos de simplificación y diseño de circuitos lógicos que estudiaremos requie-
ren que la expresión lógica se encuentre en forma de suma de productos (SOP).
Algunos ejemplos de esta forma son:
Cada una de estas expresiones de suma de productos consiste de dos o más térmi-
nos AND (productos) a los que se les aplica la operación OR. Cada término AND
consiste de una o más variables que aparecen de manera individual, ya sea en for-
ma complementada o no complementada. Por ejemplo, en la expresión de suma de
productos ABC  ABC el primer producto AND contiene las variables A, B y C en su
forma no complementada (no invertida). El segundo término AND contiene a A y C
en su forma complementada (invertida). En una expresión de suma de productos, un
signo de inversión no puede cubrir más de una variable en un término (por ejemplo,
no podemos tener ABC o RST).
Producto de las sumas
Algunas veces se utiliza otra forma general para las expresiones lógicas en el dise-
ño de circuitos lógicos. A esta forma se le llama producto de las sumas (POS) y con-
siste de dos o más términos OR (sumas) a los que se les aplica una operación AND.
Cada término OR consiste de una o más variables en su forma complementada o no
complementada. He aquí algunas expresiones de producto de sumas:
Los métodos de simplificación y diseño de circuitos que utilizaremos se basan
en la forma de suma de productos (SOP), por lo que no veremos muchos ejemplos
1.
2.
3. AB + CD + EF + GK + HL
AB + ABC + C D + D
ABC + ABC
1.
2.
3. (A + C)(B + D)(B + C)(A + D + E)
(A + B)(C + D)F
(A + B + C)(A + C)
PREGUNTAS DE REPASO
con la forma de producto de sumas (POS). No obstante, de vez en cuando se presen-
tará esta forma para algunos circuitos lógicos que tengan una cierta estructura.
1. ¿Cuál de las siguientes expresiones se encuentra en la forma SOP?
(a) AB  CD  E
(b) AB(C  D)
(c) (A  B)(C  D  F)
(d) MN  PQ
2. Repita la pregunta 1 para la forma POS.
4-2 SIMPLIFICACIÓN DE CIRCUITOS LÓGICOS
Una vez que se obtiene la expresión para un circuito lógico, podemos reducirla a una
forma más simple que contenga menos términos, o menos variables en uno o más tér-
minos. Así, la nueva expresión puede utilizarse para implementar un circuito equiva-
lente al circuito original, pero que contenga menos compuertas y conexiones.
Para ilustrar esto, el circuito de la figura 4-1(a) puede simplificarse para produ-
cir el circuito de la figura 4-1(b). Ambos circuitos realizan la misma lógica, por lo
que debe ser obvio que el más simple es más conveniente, ya que contiene menos
compuertas y, por lo tanto, será más pequeño y económico que el original. Lo que es
más, la confiabilidad del circuito aumentará, ya que hay menos interconexiones que
pueden provocar fallas potenciales en el circuito.
En las siguientes secciones estudiaremos dos métodos para simplificar los cir-
cuitos lógicos. Uno de ellos utiliza los teoremas de álgebra booleana y, como vere-
mos, depende mucho de la inspiración y la experiencia. El otro método (mapeo de
Karnaugh) tiene un enfoque sistemático, paso a paso. Tal vez algunos instructores
deseen omitir este último método debido a que es algo mecánico y es posible que no
contribuya a una mejor comprensión del álgebra booleana. Esto puede hacerse sin
afectar la continuidad o la claridad del resto del libro.
4-3 SIMPLIFICACIÓN ALGEBRAICA
Podemos utilizar los teoremas de álgebra booleana que estudiamos en el capítulo 3
para que nos ayuden a simplificar la expresión para un circuito lógico. Desafortu-
nadamente, no siempre es obvio cuáles teoremas deben aplicarse para producir
SECCIÓN 4-3/SIMPLIFICACIÓN ALGEBRAICA 121
FIGURA 4-1 A menudo
es posible simplificar
un circuito lógico de
tal forma que en la
parte (a) se produzca
una implementación
más eficiente, la cual se
muestra en (b).
A
B BC
(a)
C
x = A B C
C
A
B
C
(b)
A + BC
x = A B(A + BC)
122 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
EJEMPLO 4-1
el resultado más simple. Lo que es más, no hay una manera sencilla de saber si la
expresión simplificada se encuentra en su forma más simple o si todavía puede sim-
plificarse más. Por ende, la simplificación algebraica se vuelve a menudo un proceso
de prueba y error. Sin embargo, con experiencia uno puede volverse un adepto para
obtener resultados bastante razonables.
Los ejemplos que se muestran a continuación ilustrarán muchas de las maneras
en las que pueden aplicarse los teoremas booleanos para tratar de simplificar una
expresión. Estos ejemplos contienen dos pasos esenciales:
1. La expresión original se coloca en forma SOP mediante la aplicación repetida
de los teoremas de DeMorgan y la multiplicación de los términos.
2. Una vez que la expresión original se encuentre en la forma SOP, se comprueba
si hay factores comunes en los términos de productos y se lleva a cabo la fac-
torización en donde sea posible. Este proceso de factorización deberá ayudar a
eliminar uno o más términos.
Simplifique el circuito lógico que se muestra en la figura 4-2(a).
Solución
El primer paso es determinar la expresión para la salida, utilizando el método que
se presentó en la sección 3-6. El resultado es
z  ABC  AB  (A C)
Una vez que se obtiene la expresión, por lo general, es conveniente descomponer
todos los signos inversores grandes mediante el uso de los teoremas de DeMorgan, y
después multiplicar todos los términos.
z  ABC  AB(A  C) [teorema (17)]
 ABC  AB(A  C) [se cancelan las inversiones dobles]
 ABC  ABA  ABC [se realizan las multiplicaciones]
 ABC  AB  ABC [A  A  A]
z = ABC + AB(AC)
A
C
B
A
A C
A B C
B
(a)
A
A B(A C)
(b)
z = A(B + C)
B + C
A
B
C
FIGURA 4-2 Ejemplo 4-1.
EJEMPLO 4-2
Ahora que la expresión se encuentra en la forma SOP, debemos buscar variables
comunes entre los diversos términos con la intención de factorizar. Los términos
primero y tercero de arriba tienen a AC en común, lo cual puede factorizarse:
Como B  B  1, entonces
Ahora podemos factorizar A, lo cual produce
Este resultado ya no puede simplificarse más. En la figura 4-2(b) se muestra la
implementación de su circuito. Es fácil observar que el circuito de la figura 4-2(b) es
mucho más simple que el de la figura 4-2(a).
Simplifique la expresión z  AB C  ABC  ABC.
Solución
La expresión ya se encuentra en la forma SOP.
Método 1: Los primeros dos términos de la expresión tienen el producto AB en
común. Por lo tanto,
Podemos factorizar la variable A de ambos términos:
Utilizando el teorema (15b):
Método 2: La expresión original es z  AB C  ABC  ABC. Los primeros dos
términos tienen a AB en común. Los últimos dos tienen a AC en común. ¿Cómo
podemos saber si debemos factorizar AB de los primeros dos términos, o AC de
los últimos dos términos? En realidad podemos hacer ambas cosas si utilizamos el
término ABC dos veces. En otras palabras, podemos reformular la expresión de la
siguiente manera:
en donde hemos agregado un término ABC. Esto es válido y no cambia el valor de la
expresión, ya que ABC  ABC  ABC [(teorema (7)]. Ahora podemos factorizar AB
de los primeros dos términos y AC de los últimos dos:
z = AC(B + B) + AB
= AC + AB
z = AC(1) + AB
z = A(C + B)
= AB + ABC
= AB(1) + ABC
z = AB(C + C) + ABC
z = A(B + BC)
z = AB C + ABC + ABC + ABC
= AB + AC = A(B + C)
= AB # 1 + AC # 1
z = AB(C + C) + AC(B + B)
SECCIÓN 4-3/SIMPLIFICACIÓN ALGEBRAICA 123
z = A(B + C)
124 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
EJEMPLO 4-3
Desde luego que este resultado es el mismo que se obtuvo con el método 1. Este
truco de usar el mismo término dos veces puede usarse siempre. De hecho, el mismo
término puede usarse más veces si es necesario.
Simplifique z  AC(ABD)  ABC D  ABC.
Solución
Primero, utilizamos el teorema de DeMorgan en el primer término:
z  AC(A  B  D)  ABC D  ABC (paso 1)
La multiplicación produce lo siguiente:
z  ACA  ACB  ACD  ABC D  ABC (2)
Como A  A  0, se elimina el primer término:
z  A BC  ACD  ABC D  ABC (3)
Ésta es la forma SOP deseada. Ahora debemos buscar factores comunes de entre
los diversos términos de productos. La idea es buscar el factor común más grande
entre dos o más términos de productos. Por ejemplo, los términos primero y último
tienen el factor común BC y los términos segundo y tercero tienen el factor común
A D. Podemos factorizar estos términos de la siguiente manera:
z  BC(A  A)  A D(C  BC) (4)
Ahora, como A  A  1, y C  BC  C  B [teorema (15a)], tenemos que
z  BC  A D(B  C) (5)
Este mismo resultado podría obtenerse si eligiéramos otros términos para la fac-
torización. Por ejemplo, podríamos haber factorizado C de los términos de productos
primero, segundo y cuarto, en el paso 3, para obtener:
z  C(A B  A D  AB)  ABC D
La expresión dentro de los paréntesis puede factorizarse aún más:
z  C(B[A  A]  A D)  ABC D
Y como A  A  1, esta expresión se convierte en:
z  C(B  A D)  ABC D
Después de multiplicar, nos queda
z  BC  AC D  ABC D
EJEMPLO 4-4
Ahora podemos factorizar A D de los términos segundo y tercero para obtener
z  BC  A D(C  BC)
Si utilizamos el teorema (15a), la expresión entre paréntesis se convierte en B  C.
Por lo tanto, queda
z  BC  A D(B  C)
Este resultado es el mismo que obtuvimos antes, pero nos llevó muchos más pasos.
Aquí se ilustra el porqué debemos buscar los factores comunes más grandes: por lo
general, nos llevará a la expresión final en menos pasos.
El ejemplo 4-3 ilustra la frustración que se encuentra a menudo en la simplifi-
cación booleana. Como hemos llegado a la misma ecuación (que parece irreducible)
por dos métodos distintos, podría parecer razonable concluir que esta ecuación final
es la forma más simple. De hecho, la forma más simple de esta ecuación es
z  ABD  BC
Pero no hay una manera aparente de reducir el paso (5) para llegar a esta versión
más simple. En este caso nos faltó una operación en el proceso, la cual nos podría
haber conducido a la forma más simple. La pregunta es, “¿Cómo hubiéramos podido
saber que omitimos un paso?” Más adelante examinaremos una técnica de mapeo
que siempre nos llevará a la forma SOP más simple.
Simplifique la expresión x  (A  B)(A  B  D)D.
Solución
La expresión puede colocarse en la forma de suma de productos mediante la multi-
plicación de todos los términos. El resultado es
x  AAD  ABD  ADD  BAD  BBD  BDD
El primer término puede eliminarse, ya que AA  0. De igual forma, los términos
tercero y sexto pueden eliminarse debido a que DD  0. El quinto término puede
simplificarse a BD, ya que BB  B. Esto nos da
x  ABD  ABD  BD
Podemos factorizar BD de cada término para obtener
x  BD(A  A  1)
Es evidente que el término dentro de los paréntesis siempre es 1, por lo que al últi-
mo nos queda
x  BD
SECCIÓN 4-3/SIMPLIFICACIÓN ALGEBRAICA 125
126 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
EJEMPLO 4-5
EJEMPLO 4-6
PREGUNTAS DE REPASO
Simplifique el circuito de la figura 4-3(a).
Solución
La expresión para la salida z es
z  (A  B)(A  B)
Si multiplicamos para obtener la forma de suma de productos, obtenemos
z  AA  A B  BA  BB
Podemos eliminar AA  0 y BB  0 para terminar con
z  A B  AB
Esta expresión se implementa en la figura 4-3(b), y si la comparamos con el circuito
original veremos que ambos circuitos contienen el mismo número de compuertas y
conexiones. En este caso, el proceso de simplificación produjo un circuito equiva-
lente pero más simple.
Simplifique x  ABC  ABD  C D.
Solución
Inténtelo, pero no podrá simplificar más esta expresión.
1. Indique cuáles de las siguientes expresiones no se encuentran en la forma de
suma de productos:
(a) RST  RST  T
(b) ADC  ADC
(c) MNP  (M  N)P
(d) AB  ABC  A B C D
2. Simplifique el circuito de la figura 4-1(a) para obtener el circuito de la figura
4-1(b).
3. Cambie cada compuerta AND en la figura 4-1(a) por una compuerta NAND.
Determine la nueva expresión para x y simplifíquela.
FIGURA 4-3 Ejemplo
4-5.
A
B
(a)
z
(b)
A
B
z
4-4 DISEÑO DE CIRCUITOS LÓGICOS COMBINACIONALES
Cuando se da el nivel de salida deseado de un circuito lógico para todas las posibles
condiciones de entrada, los resultados pueden mostrarse de manera conveniente
en una tabla de verdad. La expresión booleana para el circuito requerido puede
entonces derivarse de la tabla de verdad. Por ejemplo, considere la figura 4-4(a), en
donde se muestra la tabla de verdad para un circuito que tiene dos entradas A y B,
y la salida x. La tabla muestra que la salida x estará en el nivel 1 sólo para el caso
en el que A  0 y B  1. Ahora lo que resta es determinar qué circuito lógico produci-
rá esta operación deseada. Debería ser evidente que una de las posibles soluciones
es la que se muestra en la figura 4-4(b). Aquí se utiliza una compuerta AND con las
entradas A y B, de manera que x  A  B. Es obvio que x será 1 sólo si ambas entradas
de la compuerta AND son 1, a saber, A  1 (lo cual significa que A  0) y B  1. Para
todos los demás valores de A y B, la salida x será 0.
Puede usarse un enfoque similar para las demás condiciones de entrada. Por
ejemplo, si x fuera a estar en nivel alto sólo para la condición A  1, B  0, el cir-
cuito resultante sería una compuerta AND con entradas A y B. En otras palabras,
para cualquiera de las cuatro posibles condiciones de entrada, podemos generar
una salida x en nivel alto mediante el uso de una compuerta AND con las entradas
apropiadas para generar el producto AND requerido. En la figura 4-5 se muestran
los cuatro casos. Cada una de las compuertas AND que se muestran genera una
salida que es 1 sólo para una condición de entrada dada y la salida es 0 para todas
las demás condiciones. Hay que recalcar que las entradas AND son invertidas o no
invertidas, dependiendo de los valores que tengan las variables para la condición
dada. Si la variable es 0 para la condición dada, se invierte antes de entrar a la com-
puerta AND.
Ahora consideremos el caso que se muestra en la figura 4-6(a), en donde tene-
mos una tabla de verdad que indica que la salida x debe ser 1 para dos casos dis-
tintos: A  0, B  1 y A  1, B  0. ¿Cómo puede implementarse esto? Sabemos que
el término AND A  B generará un 1 sólo para la condición A  0, B  1, y que el
término AND A · B generará un 1 para la condición A  1, B  0. Como x debe estar
A
0
0
1
1
B
0
1
0
1
x
0
1
0
0
(a) (b)
A
x = AB
B
A
FIGURA 4-4 Circuito que
produce una salida de
1 sólo para la condición
en la que A  0 y B  1.
FIGURA 4-5 Una
compuerta AND con las
entradas apropiadas
puede usarse para
producir una salida
de 1 para un conjunto
específico de niveles de
entrada.
AB
A
B
AB
A
B
AB
A
B
AB
A
B
ALTO sólo cuando A = 0, B = 0
ALTO sólo cuando A = 0, B = 1
ALTO sólo cuando A = 1, B = 0
ALTO sólo cuando A = 1, B = 1
SECCIÓN 4-4/DISEÑO DE CIRCUITOS LÓGICOS COMBINACIONALES 127
128 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
en ALTO para cualquiera de esas condiciones, debe quedar claro que se debe aplicar
una operación OR a estos términos para producir la salida x deseada. Esta imple-
mentación se muestra en la figura 4-6(b), en donde la expresión resultante para la
salida es x  AB  AB.
En este ejemplo se genera un término AND para cada caso en la tabla donde la
salida x va a ser un 1. Después se aplica un OR a las salidas de la compuerta AND
para producir la salida total x, que será 1 cuando cualquiera de los términos de la
operación AND sea 1. Este mismo procedimiento puede extenderse a los ejemplos
con más de dos entradas. Considere la tabla de verdad para un circuito de tres entra-
das (tabla 4-1). Aquí hay tres casos en donde la salida x debe ser 1. Se muestra el
término AND requerido para cada uno de estos casos. Observe nuevamente que para
cada caso en el que una variable es 0, ésta aparece invertida en el término AND. La
expresión de suma de productos para x se obtiene aplicando una operación OR a los
tres términos AND.
x  ABC  ABC  ABC
Procedimiento completo de diseño
Cualquier problema lógico puede resolverse mediante el uso del siguiente procedi-
miento:
1. Interprete el problema y establezca una tabla de verdad para describir su ope-
ración.
2. Escriba el término AND (producto) para cada caso en el que la salida sea 1.
3. Escriba la expresión de suma de productos (SOP) para la salida.
4. Simplifique la expresión de salida, si es posible.
5. Implemente el circuito para la expresión final simplificada.
FIGURA 4-6 Cada
conjunto de condiciones
de entrada que
debe producir una
salida en ALTO se
implementa mediante
una compuerta AND
separada. Se aplica
una operación OR a las
salidas de la compuerta
AND para producir la
salida final.
A
0
0
1
1
B
0
1
0
1
x
0
1
1
0
x = AB + AB
AB
AB
(b)
A
B
A
B
(a)
TABLA 4-1
A B C x
0 0 0 0
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1 : ABC
: ABC
: ABC
EJEMPLO 4-7
El siguiente ejemplo ilustra el procedimiento completo de diseño.
Diseñe un circuito lógico que tenga tres entradas A, B y C, y cuya salida esté en
ALTO sólo cuando la mayoría de sus entradas estén en ALTO.
Solución
Paso 1. Establezca la tabla de verdad.
Con base en el enunciado del problema, la salida x deberá ser 1 siempre que dos o
más entradas sean 1; para todos los demás casos, la salida deberá ser 0 (tabla 4-2).
Paso 2. Escriba el término AND para cada caso en el que la salida sea un 1.
Hay cuatro casos así. Los términos AND se muestran enseguida de la tabla de ver-
dad (tabla 4-2). Observe de nuevo que cada término AND contiene cada variable de
entrada en su forma invertida o no invertida.
Paso 3. Escriba la expresión de suma de productos para la salida.
x  ABC  ABC  ABC  ABC
Paso 4. Simplifique la expresión de salida.
Esta expresión puede simplificarse de varias formas.Tal vez la más rápida sea consi-
derar que el último término ABC tiene dos variables en común con cada uno de los
otros términos. Por ende, podemos usar el término ABC para factorizarlo con cada
uno de los demás términos. La expresión se reformula de manera que el término
ABC ocurra tres veces (recuerde del ejemplo 4-2 que es posible hacer esto en el
álgebra booleana):
x  ABC  ABC  ABC  ABC  ABC  ABC
Si factorizamos los pares de términos apropiados, tenemos que
x  BC(A  A)  AC(B  B)  AB(C  C)
Cada término en paréntesis es igual a 1, por lo que nos queda
x  BC  AC  AB
TABLA 4-2
A B C x
0 0 0 0
0 0 1 0
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1 : ABC
: ABC
: ABC
: ABC
SECCIÓN 4-4/DISEÑO DE CIRCUITOS LÓGICOS COMBINACIONALES 129
130 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
EJEMPLO 4-8
Paso 5. Implemente el circuito para la expresión final.
Esta expresión se implementa en la figura 4-7. Como la expresión se encuentra en
la forma SOP, el circuito consiste de un grupo de compuertas AND conectadas con
una sola compuerta OR.
Consulte la figura 4-8(a), en donde un convertidor analógico-digital está monito-
reando el voltaje de corriente directa de una batería de almacenamiento de 12 V
en una nave espacial en órbita. La salida del convertidor es un número binario de
4 bits identificado como ABCD, que corresponde al voltaje de la batería en interva-
los de 1V, en donde A es el MSB. Las salidas binarias del convertidor se alimentan a
un circuito lógico que debe producir una salida en ALTO siempre y cuando el valor
binario sea mayor que 01102  610; esto es, que el voltaje de la batería sea mayor
que 6 V. Diseñe este circuito lógico.
Solución
La tabla de verdad se muestra en la figura 4-8(b). Para cada caso en la tabla de ver-
dad hemos indicado el equivalente decimal del número binario representado por la
combinación ABCD.
La salida z es igual a 1 para todos aquellos casos en los que el número binario
sea mayor que 0110. Para todos los demás casos, z es igual a 0. Esta tabla de verdad
nos da la siguiente expresión de suma de productos:
FIGURA 4-8 Ejemplo 4-8.
(b)
A
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
B
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
C
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
D
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
(0)
(1)
(2)
(3)
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
A
B
C
D
MSB
LSB
Circuito
lógico
(a)
z
z = A + BCD
(c)
A
B
C
D
Convertidor
analógico-
digital
VB
A
B
C
D
z
0
0
0
0
0
0
0
1→ ABCD
1→ ABCD
1→ ABCD
1→ ABCD
1→ ABCD
1→ ABCD
1→ ABCD
1→ ABCD
1→ ABCD
+ ABCD + ABCD + ABCD
z = ABCD + AB C D + AB CD + ABCD + ABCD + ABC D
A
B
C
BC
AB
AC
x = BC + AC + AB
FIGURA 4-7 Ejemplo 4-7.
P
AND
OR
Q
R
S
P
Q
R
S = P + QR
(d)
(c)
S = P + QR
P
Q
R
(b)
Sensor de
bandeja
alimentadora
1 k⍀
+5 V
P
Q
R
Interruptores
para detección
del papel
S
(a)
1 k⍀
Circuito
lógico
FIGURA 4-9 Ejemplo 4-9.
EJEMPLO 4-9
La simplificación de esta expresión será una formidable tarea, pero con un poco de
cuidado puede lograrse. El proceso paso a paso implica factorizar y eliminar térmi-
nos de la forma A  A:
Esta expresión puede reducirse aún más si aplicamos el teorema (15a), el cual nos
dice que x  xy  x  y. En este caso x  A y y  BCD. Por lo tanto,
Esta expresión final se implementa en la figura 4-8(c).
Como lo demuestra este ejemplo, el método de simplificación algebraica puede
ser bastante largo cuando la expresión original contiene un gran número de tér-
minos. Ésta es una limitación que no comparte el método de mapeo de Karnaugh,
como veremos más adelante.
Observe la figura 4-9(a). En una copiadora simple, se debe generar una señal de paro S
para detener la operación de la máquina y encender una luz indicadora cada vez
que exista una de las siguientes condiciones: (1) que no haya papel en la bandeja
alimentadora; o (2) que se activen los dos microinterruptores en la ruta del papel, lo
cual indica un atasco. La presencia de papel en la bandeja alimentadora se indica
= ABCD + A
= ABCD + A(B + B)
= ABCD + AB + AB
= ABCD + AB(C + C) + AB(C + C)
= ABCD + AB C + ABC + ABC + ABC
z = ABCD + AB C(D + D) + ABC(D + D) + ABC(D + D) + ABC(D + D)
z = ABCD + A = BCD + A
SECCIÓN 4-4/DISEÑO DE CIRCUITOS LÓGICOS COMBINACIONALES 131
132 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
mediante un nivel ALTO en la señal lógica P. Cada microinterruptor produce una
señal lógica (Q y R, respectivamente) que cambia a ALTO cada vez que el papel pasa
por el interruptor y lo activa. Diseñe el circuito lógico para producir un nivel ALTO
en la señal de salida S para las condiciones antes mencionadas, e impleméntelo uti-
lizando el chip con cuatro compuertas NAND de dos entradas 74HC00 CMOS.
Solución
Utilizaremos el proceso de cinco pasos indicado en el ejemplo 4-7. La tabla de ver-
dad se muestra en la figura 4-3. La salida S será un 1 lógico siempre que P  0, ya
que esto indica que no hay papel en la bandeja alimentadora. S también será un 1
para los dos casos en los que Q y R sean ambas 1, lo cual indica un atasco de papel.
Como la tabla indica, hay cinco condiciones de entrada distintas que producen una
salida en ALTO. (Paso 1)
Se muestran los términos AND para cada uno de estos casos. (Paso 2)
La expresión de suma de productos sería
S  P Q R  P QR  PQR  PQR  PQR (Paso 3)
Podemos empezar la simplificación factorizando P Q de los términos 1 y 2, y factori-
zando PQ de los términos 3 y 4:
S  P Q(R  R)  PQ(R  R)  PQR (Paso 4)
Ahora podemos eliminar los términos R  R ya que son iguales a 1:
S  P Q  PQ  PQR
Si factorizamos P de los términos 1 y 2 podemos eliminar Q:
S  P  PQR
Aquí, podemos aplicar el teorema (15b) (x  xy  x  y) para obtener
S  P  QR
Como una comprobación adicional de esta ecuación booleana simplificada, vea-
mos si concuerda con la tabla de verdad con la que comenzamos. Esta ecuación dice
que la salida S estará en ALTO siempre que P esté en BAJO OR cuando Q AND R
estén en ALTO. Consulte la tabla 4-3 y observe que la salida está en ALTO para los
cuatro casos en los que P está en BAJO. S también está en ALTO cuando Q AND R
TABLA 4-3
P Q R S
0 0 0 1
0 0 1 1
0 1 0 1
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 0
1 1 1 1 PQR
PQR
PQR
PQR
PQR
FIGURA 4-10 Circuito
para la figura 4-9(d)
implementado mediante
el uso del chip NAND
74HC00.
PREGUNTAS DE REPASO
están ambas en ALTO, sin importar el estado de P. Lo anterior concuerda con la
ecuación.
La implementación AND/OR para este circuito se muestra en la figura 4-9(b).
(Paso 5)
Para implementar este circuito usando el chip NAND de dos entradas 74HC00,
debemos convertir cada una de las compuertas y el INVERSOR en sus compuertas
NAND equivalentes (con base en la sección 3-12). Esto se muestra en la figura 4-9(c).
Es evidente que podemos eliminar los inversores dobles para producir la implemen-
tación con compuertas NAND que se muestra en la figura 4-9(d).
El circuito alambrado final se obtiene mediante la conexión de dos de las com-
puertas NAND en el chip 74HC00. Este chip CMOS tiene la misma configuración de
compuertas y los mismos números de terminales que el chip 74LS00 TTL de la figura
3-31. La figura 4-10 muestra el circuito alambrado con números de terminales, inclu-
yendo las terminales 5 V y tierra (GND). También incluye un transistor excitador
de salida y un LED para indicar el estado de la salida S.
1. Escriba la expresión de suma de productos para un circuito con cuatro entradas
y una salida que debe estar en ALTO sólo cuando la entrada A esté en BAJO al
mismo tiempo que dos de las otras entradas estén en BAJO.
2. Implemente la expresión de la pregunta 1 utilizando sólo compuertas NAND de
cuatro entradas. ¿Cuántas se requieren?
4-5 MÉTODO DE MAPAS DE KARNAUGH
El mapa de Karnaugh (mapa K) es una herramienta gráfica que se utiliza para simpli-
ficar una ecuación lógica o convertir una tabla de verdad en su correspondiente cir-
cuito lógico mediante un proceso simple y ordenado.Aunque un mapa K puede usarse
para problemas en los que se involucre cualquier número de variables de entrada,
su utilidad práctica está limitada a cinco o seis variables. Los siguientes problemas
estarán limitados a un máximo de cuatro entradas, ya que los problemas con cinco o
más entradas son demasiado complicados y se resuelven mejor mediante el uso de un
programa de computadora.
P
Q
R
(e)
1
2
3
4
5
6
7
14
S 33 k⍀
100 ⍀
+5 V
74HC00
74HC00
Nota: las otras dos compuertas
en el chip no están
conectadas.
SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 133
134 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
FIGURA 4-11 Mapas
de Karnaugh y tablas de
verdad para (a) dos,
(b) tres y (c) cuatro
variables.
Formato del mapa de Karnaugh
Al igual que una tabla de verdad, el mapa K es un medio para mostrar la relación
entre las entradas lógicas y la salida deseada. La figura 4-11 muestra tres ejemplos de
mapas K para dos, tres y cuatro variables, junto con sus correspondientes tablas
de verdad. Estos ejemplos ilustran los siguientes puntos importantes:
1. La tabla de verdad proporciona el valor de la salida X para cada combinación
de valores de entrada. El mapa K proporciona la misma información en un for-
mato distinto. Cada caso en la tabla de verdad corresponde a una casilla en el
mapa K. Por ejemplo, en la figura 4-11(a) la condición A  0, B  0 corresponde
la casilla A B en el mapa K. Como la tabla de verdad muestra X  1 para este
caso, se coloca un 1 en la casilla A B del mapa K. De manera similar, la condición
A  1, B  1 en la tabla de verdad corresponde a la casilla AB del mapa K. Como
X  1 para este caso, se coloca un 1 en la casilla AB. Todas las demás casillas se
llenan con 0s. Esta misma idea se utiliza en los mapas con tres y cuatro variables
que se muestran en la figura.
2. Las casillas del mapa K se etiquetan de manera que las casillas adyacentes en
forma horizontal difieran sólo por una variable. Por ejemplo, la casilla de la
esquina superior izquierda en el mapa de cuatro variables es A B C D, mientras
que la casilla que se encuentra justo a su derecha es A B C D (sólo la variable
D es distinta). De manera similar, las casillas adyacentes verticalles sólo difie-
A
0
0
1
1
B
0
1
0
1
X
1 → AB
0
0
1 → AB
A
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
B
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
C
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
D
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
X
0
1 → ABCD
0
0
0
1 → ABCD
0
0
0
0
0
0
0
1 → ABCD
0
1 → ABCD
A
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
X
1 → ABC
1 → ABC
1 → ABC
0
0
0
1 → ABC
0
X = ABCD + ABCD
+ ABCD + ABCD
X = ABC + ABC
+ ABC + ABC
0 1 0 0
1 1
1 0
1 0
0 0
AB
AB
AB
AB
AB
AB
AB
AB
CD CD CD CD
C C
(c)
(b)
(a)
x = AB + AB
A
1
0
B
1 0
A
B
0 1 0 0
0 0 0 0
0 1 1 0
0 0
1 0
1 0
0 0
AB
AB
AB
AB
C C
(a)
X = ABC + ABC
= BC
1 0
0 0
0 0
1 0
AB
AB
AB
AB
C C
(c)
X = ABC + ABC = BC
0 0 1 1
AB
AB
AB
AB
CD CD CD CD
(d)
ABC
ABD
X = ABCD + ABCD
+ ABCD + ABCD
= ABC + ABD
0 0
1 1
0 0
0 0
AB
AB
AB
AB
C C
(b)
X = ABC + ABC
= AB
0 0 0 0
1 0 0 1
0 0 0 0
FIGURA 4-12
Ejemplos de
agrupamientos de pares
de 1s adyacentes.
ren por una variable. Por ejemplo, la casilla de la esquina superior izquierda es
A B C D, mientras que la casilla que está justo debajo es A B C D (sólo la variable
B es distinta).
Observe que cada casilla en la fila superior se considera como adyacente
a una casilla correspondiente en la fila inferior. Por ejemplo, la casilla A BCD
en la fila superior es adyacente a la casilla ABCD en la fila inferior, ya que sólo
difieren por la variable A. Podemos considerar que la parte superior del mapa se
dobla para tocar su parte inferior. De manera similar, las casillas de la columna
más a la izquierda son adyacentes a las correspondientes en la columna más a
la derecha.
3. Para que las casillas adyacentes en forma vertical y horizontal difieran sólo por
una variable, el etiquetado de arriba hacia abajo debe realizarse en el orden
mostrado: A B, AB, AB, AB. Lo mismo aplica para el etiquetado de izquierda a
derecha: C D, CD, CD, CD.
4. Una vez que se ha llenado un mapa K con 0s y 1s, puede obtenerse la expresión
de suma de productos para la salida X mediante la aplicación de la operación
OR a todas las casillas que contengan un 1. En el mapa de tres variables de la
figura 4-11(b), las casillas A B C, A BC, ABC y ABC contienen un 1, de manera que
X  A B C  A BC  ABC  ABC.
Agrupamiento
La expresión para la salida X puede simplificarse mediante la combinación apropia-
da de las casillas en el mapa K que contengan 1s. Al proceso para combinar estos 1s
se le conoce como agrupamiento.
Agrupamiento de pares (grupos de dos)
La figura 4-12(a) es el mapa K para cierta tabla de verdad de tres variables. Este mapa
contiene un par de 1s que son adyacentes en forma vertical; el primero representa a
ABC y el segundo a ABC. Observe que en estos dos términos, sólo la variable A aparece
SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 135
136 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
tanto en forma normal como complementada (invertida), mientras que B y C perma-
necen sin cambios. Estos dos términos pueden agruparse (combinarse) para obtener
un resultante que elimine la variable A, ya que aparece tanto en forma complementa-
da como no complementada. Es fácil demostrarlo de la siguiente manera:
Este mismo principio se aplica para cualquier par de 1s adyacentes en forma
vertical u horizontal. La figura 4-12(b) muestra un ejemplo de dos 1s adyacentes en
forma horizontal; los cuales pueden agruparse, y la variable C puede eliminarse ya
que aparece tanto en su forma no complementada como en su forma complementa-
da, para obtener un resultante de X  AB.
La figura 4-12(c) muestra otro ejemplo. En un mapa K, la fila superior y la fila
inferior de casillas se consideran adyacentes. Por ende, los dos 1s en este mapa pue-
den agruparse para obtener un resultante de A B C  AB C  B C.
La figura 4-12(d) muestra un mapa K que tiene dos pares de 1s que pueden
agruparse. Los dos 1s en la fila superior son adyacentes en forma horizontal. Los
dos 1s en la fila inferior también son adyacentes ya que, en un mapa K la columna
más a la izquierda y la columna más a la derecha se consideran adyacentes. Cuando
se agrupa el par de 1s de la parte superior se elimina la variable D (ya que aparece
como D y como D) para producir el término A BC. Al agrupar el par de la parte infe-
rior se elimina la variable C para producir el término AB D. Después se aplica una
operación OR a estos dos términos para obtener el resultado final para X.
En resumen:
Al agrupar un par de 1s adyacentes en un mapa K se elimina la variable que
aparece tanto en forma no complementada como en forma complementada.
Agrupamiento de cuádruples (grupos de cuatro)
Un mapa K puede contener un grupo de cuatro 1s que sean adyacentes. A este grupo
se le conoce como cuádruple. La figura 4-13 muestra varios ejemplos de este tipo. En
la figura 4-13(a), los cuatro 1s son adyacentes en forma vertical y en la figura 4-13(b)
son adyacentes en forma horizontal. El mapa K de la figura 4-13(c) contiene cuatro
1s en una casilla y se consideran adyacentes entre sí. Los cuatro 1s de la figura
4-13(d) también son adyacentes, al igual que los de la figura 4-13(e) ya que, como
dijimos antes, las filas superior e inferior se consideran como adyacentes entre sí, al
igual que las columnas más a la izquierda y más a la derecha.
Cuando se agrupa un cuádruple, el término resultante sólo contendrá las varia-
bles que no cambian su forma en todas las casillas del cuádruple. Por ejemplo, en
la figura 4-13(a) las cuatro casillas que contienen un 1 son A BC, ABC, ABC y ABC.
Si examinamos estos términos descubriremos que sólo la variable C permanece sin
cambios (tanto A como B aparecen en forma complementada y no complementada).
Por ende, la expresión resultante para X es tan sólo X  C. Esto puede demostrarse
de la siguiente manera:
= BC(1) = BC
= BC(A + A)
X = ABC + ABC
= C(A + A) = C
= AC + AC
= AC(B + B) + AC(B + B)
X = A BC + ABC + ABC + ABC
0 0 0 0
AB
AB
AB
AB
CD CD CD CD
X = AB
(b)
0 1
0 1
0 1
0 1
AB
AB
AB
AB
C C
(a)
X = C
0 0 0 0
AB
AB
AB
AB
CD CD CD CD
X = BD
(c)
0 0 0 0
0 0 0 0
1 0 0 1
AB
AB
AB
AB
CD CD CD CD
X = AD
(d)
1 0 0 1
0 0 0 0
AB
AB
AB
AB
CD CD CD CD
(e)
X = BD
1 0 0 1
1 1 1 1
0 1 1 0
0 0 0 0
0 0 0 0 0 0 0 0
0 1 1 0
0 0 0 0
1 0 0 1
FIGURA 4-13
Ejemplos de
agrupamiento de
cuádruples.
Como otro ejemplo, considere la figura 4-13(d), en donde las cuatro casillas que
contienen 1s son ABC D, AB C D, ABCD y ABCD. Al analizar estos términos podemos
ver que sólo las variables A y D permanecen sin cambios, de manera que la expre-
sión simplificada para X es
X  AD
Lo que puede demostrarse de la misma forma que se hizo antes. El lector deberá
comprobar cada uno de los otros casos de la figura 4-13 para verificar las expresio-
nes indicadas para X.
En resumen:
Al agrupar un cuádruple de 1s adyacentes se eliminan las dos variables que
aparecen tanto en forma complementada como en forma no complementada.
Agrupamiento de octetos (grupos de ocho)
A un grupo de ocho 1s adyacentes entre sí se le conoce como octeto. La figura 4-14
muestra varios ejemplos de octetos. Cuando se agrupa un octeto en un mapa de cua-
tro variables se eliminan tres de ellas, ya que sólo una permanece sin cambios. Por
ejemplo, si examinamos las ocho casillas agrupadas en la figura 4-14(a) podremos
ver que sólo la variable B se encuentra en la misma forma para las ocho casillas: las
demás variables aparecen en su forma complementada y no complementada. En
consecuencia, para este mapa X  B. El lector puede verificar los resultados para
los demás ejemplos de la figura 4-14.
En resumen:
Al agrupar un octeto de 1s adyacentes se eliminan las tres variables que
aparecen tanto en su forma complementada como en su forma no comple-
mentada.
SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 137
138 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
0 0 0 0
1 1 1 1
AB
AB
AB
AB
CD CD CD CD
1 1 0 0
AB
AB
AB
AB
CD CD CD CD
1 1 1 1
0 0 0 0
AB
AB
AB
AB
CD CD CD CD
1 0 0 1
AB
AB
AB
AB
CD CD CD CD
X = B
(a)
X = C
(b)
X = B
(c)
X = D
(d)
1 1 0 0
1 1 0 0
1 1 0 0
1 0 0 1
1 0 0 1
1 0 0 1
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
FIGURA 4-14
Ejemplos de
agrupamiento
de octetos.
Proceso completo de simplificación
Hemos visto cómo se puede utilizar el agrupamiento de pares, cuádruples y octetos
en un mapa K para obtener una expresión simplificada. Podemos resumir la regla
para los agrupamientos de cualquier tamaño, de la siguiente manera:
Cuando una variable aparece tanto en su forma complementada como no
complementada dentro de un grupo, esa variable se elimina de la expresión.
Las variables que son iguales para todas las casillas del grupo deben apare-
cer en la expresión final.
Debe quedar claro que un agrupamiento mayor de 1s elimina más variables.
Para ser exacto, un agrupamiento de dos elimina una variable, un agrupamiento de
cuatro elimina dos variables y un agrupamiento de ocho elimina tres. Ahora utiliza-
remos este principio para obtener una expresión lógica simplificada a partir de un
mapa K que contenga cualquier combinación de 1s y 0s.
Primero describiremos el procedimiento y después lo aplicaremos en varios
ejemplos. Los siguientes pasos son el procedimiento mediante el uso del método del
mapa K, para simplificar una expresión booleana:
Paso 1 Construya el mapa K y coloque 1s en las casillas que correspondan a los 1s
en la tabla de verdad. Coloque 0s en las demás casillas.
Paso 2 Examine el mapa en busca de 1s adyacentes y marque los que no sean adya-
centes con cualquier otro 1. A éstos se les conoce como 1s aislados.
Paso 3 A continuación busque los 1s que sean adyacentes sólo con otro 1. Agrupe
cualquier par que contenga este tipo de 1s.
Paso 4 Agrupe cualquier octeto, aún y cuando contenga algunos 1s que ya se hayan
agrupado.
Paso 5 Agrupe cualquier cuádruple que contenga uno o más 1s que no se hayan
agrupado ya, asegurándose de utilizar el número mínimo de grupos.
EJEMPLO 4-10
Paso 6 Agrupe cualquier par necesario para incluir todos los 1 que no se hayan agru-
pado todavía, asegurándose de utilizar el número mínimo de agrupamientos.
Paso 7 Forme la suma OR de todos los términos generados, uno por cada grupo.
En los siguientes ejemplos seguiremos al pie de la letra cada uno de estos pasos
y haremos referencia a ellos. En cada caso, la expresión lógica resultante estará en
su forma de suma de productos más simple.
La figura 4-15(a) muestra el mapa K para un problema con cuatro variables. Supon-
dremos que el mapa se obtuvo de la tabla de verdad del problema (paso 1). Las
casillas están numeradas para identificar cada uno de los grupos.
Paso 2 La casilla 4 es la única que contiene un 1 que no es adyacente con cualquier
otro 1. Se agrupa y se identifica como grupo 4.
Paso 3 La casilla 15 es adyacente sólo con la casilla 11. Este par se agrupa y se iden-
tifica como grupo 11, 15.
Paso 4 No hay octetos.
Paso 5 Las casillas 6, 7, 10 y 11 forman un cuádruple. Este cuádruple se agrupa (gru-
po 6, 7, 10, 11). Observe que la casilla 11 se utiliza de nuevo, aun y cuando
forma parte del grupo 11, 15.
FIGURA 4-15
Ejemplos 4-10 al 4-12.
0 0 0 1
0 1 1 0
0 1 1 0
0 0 1 0
AB
AB
AB
AB
CD CD CD CD
0 0 1 0
1 1 1 1
1 1 0 0
0 0 0 0
AB
AB
AB
AB
CD CD CD CD
0 1 0 0
0 1 1 1
1 1 1 0
0 0 1 0
AB
AB
AB
AB
CD CD CD CD
X = ABCD + ACD + BD
grupo 4 grupo
11, 15
grupo 6,
7, 10, 11
X = AB + BC + ACD
grupo 5,
6, 7, 8
grupo 5,
6, 9, 10
grupo
3, 7
X = ABC + ACD + ABC + ACD
9, 10 2, 6 7, 8 11, 15
1 2 3 4
5 6 7 8
9 10 11
13 14 15 16
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
1 2 3 4
5 6 7 8
9 10 11
13 14 15 16
(c)
(b)
(a)
12
12
SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 139
140 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
0 1 0 0
0 1 1 1
0 0 0 1
1 1 0 1
AB
AB
AB
AB
CD CD CD CD
0 1 0 0
0 1 1 1
0 0 0 1
1 1 0 1
AB
AB
AB
AB
CD CD CD CD
X = ABD + BCD + BCD + ABD
(b)
X = ACD + ABC + ABC + ACD
(a)
FIGURA 4-16 El
mismo mapa K con dos
soluciones correctas
similares.
EJEMPLO 4-11
EJEMPLO 4-12
EJEMPLO 4-13
Paso 6 Ya se han agrupado todos los 1s.
Paso 7 Cada grupo genera un término en la expresión para X. El grupo 4 es A BCD.
El grupo 11, 15 es ACD (se elimina la variable B). El grupo 6, 7, 10, 11 es BD
(se eliminan A y C).
Considere el mapa K de la figura 4-15(b). Una vez más podemos suponer que ya se
ha realizado el paso 1.
Paso 2 No hay 1s aislados.
Paso 3 El 1 en la casilla 3 es adyacente sólo con el 1 en la casilla 7. Al agrupar este
par (grupo 3, 7) se produce el término ACD.
Paso 4 No hay octetos.
Paso 5 Hay dos cuádruples: El primero lo forman los cuadros 5, 6, 7 y 8 . Al agrupar
este cuádruple se produce el término AB. El segundo está compuesto por
las casillas 5, 6, 9 y 10. Se debe agrupar este cuádruple, ya que contiene dos
casillas que no se han agrupado antes. Al agruparlo se produce BC.
Paso 6 Ya se han agrupado todos los 1s.
Paso 7 Se aplica la operación OR a los términos generados por los tres grupos y se
obtiene la expresión para X.
Considere el mapa K de la figura 4-15(c):
Paso 2 No hay 1s aislados.
Paso 3 El 1 en la casilla 2 es adyacente sólo para el 1 en la casilla 6. Este par se agru-
pa para producir A CD. De manera similar, la casilla 9 es adyacente sólo con
la casilla 10. Al agrupar este par se produce ABC. De igual forma, los grupos
7, 8 y 11, 15 producen los términos ABC y ACD, en forma correspondiente.
Paso 4 No hay octetos.
Paso 5 Sólo hay un cuádruple formado por las casillas 6, 7, 10 y 11. No obstante, este
cuádruple no se agrupa debido a que todos los 1s que contiene ya se han
incluido en otros grupos.
Paso 6 Ya se han agrupado todos los 1s.
Paso 7 La expresión para X se muestra en la figura.
Considere el mapa K de la figura 4-16(a).
EJEMPLO 4-14
Paso 2 No hay 1s aislados.
Paso 3 No hay 1s que sean adyacentes sólo con otro 1.
Paso 4 No hay octetos.
Paso 5 No hay cuádruples.
Pasos 6 y 7 Hay muchos pares posibles. El agrupamiento debe utilizar el núme-
ro mínimo de grupos para tomar en cuenta a todos los 1s. Para este mapa
hay dos grupos posibles, los cuales requieren sólo cuatro pares agrupados.
La figura 4-16(a) muestra una solución y su expresión resultante. La figura
4-16(b) muestra la otra. Observe que ambas expresiones son de la misma
complejidad, por lo cual ninguna es mejor que la otra.
Cómo llenar un mapa K a partir de una expresión de salida
Cuando la salida deseada se presenta como expresión booleana en vez de tabla de
verdad, el mapa K puede llenarse mediante el uso de los siguientes pasos:
1. Cambie la expresión a su forma SOP, en caso de que no se encuentre ya en esa
forma.
2. Para cada término de productos en la expresión SOP, coloque un 1 en cada casi-
lla del mapa K cuya etiqueta contenga la misma combinación de variables de
entrada. Coloque un 0 en todas las demás casillas.
El siguiente ejemplo ilustra este procedimiento.
Use un mapa K para simplificar la expresión y  C(A B D  D)  ABC  D.
Solución
1. Multiplique el primer término para obtener y  A B C D  CD  ABC  D, que
se encuentra ahora en la forma SOP.
2. Para el término A B C D sólo necesita colocar un 1 en la casilla A B C D del mapa
K (figura 4-17). Para el término CD coloque un 1 en todas las casillas que tengan
CD en sus etiquetas: A B CD, ABCD, ABCD, AB CD. Para el término ABC coloque
un 1 en todas las casillas que tengan un ABC en sus etiquetas: ABCD, ABCD. Para
el término D coloque un 1 en todas las casillas que tengan una D en sus etique-
tas: en todas las casillas de las columnas más a la izquierda y más a la derecha.
Ahora el mapa K está lleno y puede agruparse para simplificar la expresión. Verifi-
que que un agrupamiento apropiado produzca la expresión y  AB  C  D.
1 1 0 1
1 1 0 1
AB
AB
AB
AB
CD CD CD CD
y = AB + C + D
1 1 0 1
1 1 1 1
FIGURA 4-17 Ejemplo
4-14.
SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 141
142 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
EJEMPLO 4-15
Condiciones “No importa”
Algunos circuitos lógicos pueden diseñarse de manera que haya ciertas condiciones
de entrada para las cuales no existan niveles de salida especificados, por lo general,
debido a que estas condiciones de entrada nunca ocurrirán. En otras palabras, habrá
ciertas combinaciones de niveles de entrada en las que “no importa” si la salida está
en ALTO o en BAJO. Esto se ilustra en la tabla de verdad de la figura 4-18(a).
Aquí la salida z no se especifica como 0 o 1 para las condiciones A, B, C  1, 0,
0 y A, B, C  0, 1, 1. En vez de ello se muestra una x para estas condiciones. La x
representa la condición de “no importa”. Este tipo de condición puede surgir debido
a varias razones; es la más común que en algunas situaciones nunca podrán ocurrir
ciertas combinaciones de entradas, por lo que no hay una salida especificada para
estas condiciones.
Un diseñador de circuitos tiene la libertad de hacer que la salida para cualquier
condición de “no importa” sea un 0 o un 1 para producir la expresión de salida más
simple. Por ejemplo, el mapa K para esta tabla de verdad se muestra en la figura
4-18(b), con una x en las casillas AB C y ABC. Aquí la mejor opción para el diseñador
sería cambiar la x de la casilla AB C por un 1 y la x de la casilla ABC por un 0, ya
que esto produciría un cuádruple que puede agruparse para producir z  A, como se
muestra en la figura 4-18(c).
Siempre que ocurran condiciones de “no importa”, debemos decidir cuál x se va
a cambiar por 0 y cuál por 1 para producir el mejor agrupamiento del mapa K (es
decir, el grupo más grande que resulta en la expresión más simple). Esta decisión no
siempre es fácil. Varios de los problemas al final del capítulo le ayudarán a aumen-
tar su experiencia para tratar los casos de “no importa”. He aquí otro ejemplo.
Vamos a diseñar un circuito lógico que controla la puerta de un elevador en un
edificio de tres pisos. El circuito de la figura 4-19(a) tiene cuatro entradas. M es una
señal lógica que indica cuando se mueve el elevador (M  1) o cuando está detenido
(M  0). F1, F2 y F3 son señales indicadoras de cada piso que, por lo general, están
en BAJO, y cambian a ALTO sólo cuando el elevador está posicionado en ese piso.
Por ejemplo, cuando el elevador está alineado con el segundo piso, F2  1 y F1 
F3  0. La salida del circuito es la señal ABIERTO que, por lo general, está en BAJO
y cambia a ALTO cuando se va a abrir la puerta del elevador.
Podemos llenar la tabla de verdad para la salida ABIERTO [Figura 4-19(b)] de la
siguiente manera:
1. Como el elevador no puede alinearse con más de un piso a la vez, sólo una de las
entradas de los pisos puede estar en ALTO en un momento dado. Esto significa
que todos aquellos casos en la tabla de verdad en los que más de una entrada de
piso esté en 1 serán condiciones de “no importa”. Podemos colocar una x en la
FIGURA 4-18 Las
condiciones “No
importa” deben
cambiarse por 0 o 1
para producir un
agrupamiento del
mapa K que genere la
expresión más simple.
0 0
0 x
1 1
x 1
AB
AB
AB
AB
C C
0 0
0 0
1 1
1 1
AB
AB
AB
AB
C C
A
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
C
0
1
0
1
0
1
0
1
z
0
0
0
x
x
1
1
1
“no
importa”
(a) (b) (c)
z = A
F2
0 0 X 0
0 X X X
1 X X X
0 1 X 1
F3 F2F3 F2F3 F2F3
M F1
M F1
M F1
M F1
(c)
F2
0 0 0 0
0 0 0 0
0 1 1 1
F3 F2F3 F2F3 F2F3
M F1
M F1
M F1
M F1
(d)
OPEN = M (F1 + F2 + F3)
(b)
M
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
F1
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
F2
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
F3
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
ABIERTO
0
1
1
X
1
X
X
X
0
0
0
X
0
X
X
X
F3
F2
F1
M
ABIERTO
(a)
1 1 1 1
Moviendo
el elevador
FIGURA 4-19 Ejemplo
4-15.
columna de la salida ABIERTO para los ocho casos en los que más de una entra-
da F es 1.
2. Si analizamos los otros ocho casos, cuando M  1 el elevador se está moviendo,
por lo que ABIERTO debe ser un 0 ya que no deseamos que se abra la puerta del
elevador. Cuando M  0 (el elevador está detenido) queremos que ABIERTO  1
siempre y cuando una de las entradas de piso sea 1. Cuando M  0 y todas las
entradas de piso son 0, el elevador está detenido pero no está alineado en forma
apropiada con ninguno de los pisos, por lo que queremos que ABIERTO  0 para
mantener la puerta cerrada.
Ahora la tabla de verdad está completa y podemos transferir su información
al mapa K de la figura 4-19(c). El mapa sólo tiene tres 1s, pero ocho condiciones
de “no importa”. Al cambiar cuatro de estas casillas de “no importa” por 1s, pode-
mos producir grupos de cuádruples que contengan los 1s originales [Figura 4-19(d)].
Esto es lo mejor que podemos hacer en cuanto a minimizar la expresión de salida.
Verifique que los agrupamientos produzcan la expresión de salida que se muestra
para ABIERTO.
Resumen
El proceso de mapa K tiene varias ventajas en comparación con el método algebrai-
co. El mapeo K es un proceso más ordenado, con pasos bien definidos en comparación
con el proceso de prueba y error que se utiliza algunas veces en la simplificación alge-
braica. Por lo general, el mapeo K requiere menos pasos, en especial para las expre-
siones que contienen muchos términos, y siempre produce una expresión mínima.
SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 143
144 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
PREGUNTAS DE REPASO
Sin embargo, algunos instructores prefieren el método algebraico debido a que
requiere un profundo conocimiento del álgebra booleana y no es tan sólo un pro-
cedimiento mecánico. Cada método tiene sus ventajas y, aunque la mayoría de los
diseñadores lógicos son adeptos en ambos, ser proficiente en uno de ellos es todo lo
que se necesita para producir resultados aceptables.
Existen otras técnicas más complejas que utilizan los diseñadores para mini-
mizar circuitos lógicos con más de cuatro entradas. Estas técnicas se adecuan en
forma especial a los circuitos con grandes cantidades de entradas, en donde no pue-
de considerarse el método algebraico ni el mapeo K. La mayoría de estas técnicas
puede traducirse a un programa de computadora que realizará la minimización con
base en los datos de entrada que suministre la tabla de verdad o la expresión sin
simplificar.
1. Utilice el mapeo K para obtener la expresión del ejemplo 4-7.
2. Utilice el mapeo K para obtener la expresión del ejemplo 4-8. Aquí se debe enfa-
tizar la ventaja del mapeo K para expresiones que contengan muchos términos.
3. Obtenga la expresión del ejemplo 4-9, utilizando un mapa K.
4. ¿Qué es una condición de “no importa”?
4-6 CIRCUITOS OR EXCLUSIVOY NOR EXCLUSIVO
Dos de los circuitos lógicos especiales que se presentan con mucha frecuencia en los
sistemas digitales son el OR exclusivo y el NOR exclusivo.
OR exclusivo
Considere el circuito lógico de la figura 4-20(a). La expresión de salida de este cir-
cuito es
x  AB  AB
FIGURA 4-20
(a) Circuito OR
exclusivo y su tabla
de verdad; (b) símbolo
tradicional de la
compuerta XOR;
(c) símbolo IEEE/ANSI
para la compuerta XOR.
A
0
0
1
1
B
0
1
0
1
x
0
1
1
0
x = A ⊕ B
A
B
= 1
(c)
(b)
x = A ⊕ B
= AB + AB
A
B
A
B
A
B
A
B
AB
x = AB + AB
(a)
AB
Símbolos de compuerta XOR
La tabla de verdad que acompaña a este circuito muestra que x  1 para dos casos:
A  0, B  1 (el término AB) y A  1, B  0 (el término AB). En otras palabras:
Este circuito produce una salida en ALTO siempre que las dos entradas se
encuentran en los niveles opuestos.
Éste es el circuito OR exclusivo, que de aquí en adelante se abreviará como XOR.
Esta combinación específica de compuertas lógicas se produce con mucha fre-
cuencia y es muy útil en ciertas aplicaciones. De hecho, al circuito XOR se le ha
otorgado su propio símbolo, el cual se muestra en la figura 4-20(b). Se asume que este
símbolo contiene toda la lógica dentro del circuito XOR y, por lo tanto, tiene la mis-
ma expresión lógica y la misma tabla de verdad. Por lo general, al circuito XOR se le
conoce como compuerta XOR, y lo consideramos como otro tipo de compuerta lógica.
En la figura 4-20(c) se muestra el símbolo IEEE/ANSI para una compuerta XOR. El
símbolo de notación de dependencia ( 1) dentro del bloque indica que la salida
será activa en ALTO sólo cuando una de las entradas esté en ALTO.
Una compuerta XOR sólo tiene dos entradas; no hay compuertas XOR de tres
ni de cuatro entradas. Las dos entradas se combinan de manera que x  AB  AB.
Una forma abreviada que se utiliza algunas veces para indicar la expresión de salida
XOR es
x  A  B
en donde el símbolo  representa la operación de la compuerta XOR.
A continuación se sintetizan las características de una compuerta XOR:
1. Sólo tiene dos entradas y su salida es
x  AB  AB  A  B
2. Su salida está en ALTO sólo cuando las dos entradas se encuentran en niveles
distintos.
Hay varios CIs disponibles que contienen compuertas XOR. Los que se listan a
continuación son chips que contienen cuatro compuertas XOR.
74LS86 Chip con cuatro compuertas XOR (familia TTL)
74C86 Chip con cuatro compuertas XOR (familia CMOS)
74HC86 XOR (CMOS de alta velocidad)
NOR exclusivo
El circuito NOR exclusivo (que se abrevia como XNOR) opera en forma completa-
mente opuesta al circuito XOR. La figura 4-21(a) muestra un circuito XNOR y su
tabla de verdad correspondiente. La expresión de salida es
x  AB  A B
lo cual indica junto con la tabla de verdad que x será 1 para dos casos: A  B  1 (el
término AB) y A  B  0 (el término A B). En otras palabras:
El circuito XNOR produce una salida en ALTO siempre que las dos entradas
se encuentran en el mismo nivel.
De todo esto podemos deducir que la salida del circuito XNOR es el inverso
exacto de la salida del circuito XOR. El símbolo tradicional para una compuerta
SECCIÓN 4-6/CIRCUITOS OR EXCLUSIVO Y NOR EXCLUSIVO 145
146 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
FIGURA 4-21
(a) Circuito NOR
exclusivo; (b) símbolo
tradicional para la
compuerta XNOR;
(c) símbolo IEEE/ANSI.
Símbolos de compuerta XNOR
A
0
0
1
1
B
0
1
0
1
x
1
0
0
1
x = AB +AB
A B
AB
A
B
B
A
A
B
A
B
(b)
x = A ⊕ B = AB + AB
(c)
x = A ⊕ B
A
B
= 1
(a)
XNOR se obtiene con sólo agregar un pequeño círculo en la salida del símbolo XOR
[figura 4-21(b)]. El símbolo IEEE/ANSI agrega el pequeño triángulo en la salida del
símbolo XOR. Ambos símbolos indican una salida que cambia a su estado de activo
en BAJO cuando sólo una de las entradas está en ALTO.
La compuerta XNOR también tiene sólo dos entradas, y las combina de manera
que su salida sea
x  AB  A B
Una forma abreviada de indicar la expresión de salida de la compuerta XNOR es
x  A  B
la cual es el inverso de la operación XOR. La compuerta XNOR se puede sintetizar
de la siguiente manera:
1. Sólo tiene dos entradas y su salida es
x  AB  A B  A  B
2. Su salida está en ALTO sólo cando las dos entradas se encuentran en el mismo
nivel.
Hay varios CIs disponibles que contienen compuertas XNOR. Los que se listan
a continuación son chips que contienen cuatro compuertas XNOR.
74LS266 Chip con cuatro compuertas XNOR (familia TTL)
74C266 Chip con cuatro compuertas XNOR (CMOS)
74HC266 Chip con cuatro compuertas XNOR (CMOS de alta velocidad)
EJEMPLO 4-16
EJEMPLO 4-17
Sin embargo, cada uno de estos chips consta de circuitos con salida especial que
limita su uso a ciertos tipos especiales de aplicaciones. Es muy común que un dise-
ñador lógico obtenga la función XNOR con sólo conectar la salida de una compuerta
XOR a un INVERSOR.
Determine la forma de onda de salida para las formas de onda de entrada que se
muestran en la figura 4-22.
Solución
La forma de onda de salida se obtiene mediante el hecho de que la salida XOR esta-
rá en ALTO sólo cuando sus entradas se encuentren en distintos niveles. La forma
de onda de salida resultante revela varios puntos interesantes:
1. La forma de onda de x concuerda con la forma de onda de entrada A durante
los intervalos de tiempo en los que B  0. Esto ocurre durante los intervalos de
tiempo t0 a t1 y t2 a t3.
2. La forma de onda de x es el inverso de la forma de onda de entrada A durante los
intervalos de tiempo en los que B  1. Esto ocurre durante el intervalo t1 a t2.
3. Estas observaciones muestran que una compuerta XOR puede utilizarse como
INVERSOR CONTROLADO; es decir, que una de sus entradas puede utilizarse
para controlar si se va a invertir o no la señal de la otra entrada. Esta propiedad
puede ser útil en ciertas aplicaciones.
La notación x1x0 representa un número binario de dos bits que puede tener cual-
quier valor (00, 01, 10 o 11); por ejemplo, cuando x1  1 y x0  0 el número binario es
10, y así sucesivamente. De manera similar, y1y0 representa otro número binario de
dos bits. Diseñe un circuito lógico en el que utilice las entradas x1, x0, y1 y y0, y cuya
salida esté en ALTO sólo cuando los dos números binarios x1x0 y y1y0 sean iguales.
Solución
El primer paso es construir una tabla de verdad para las 16 condiciones de entrada
(tabla 4-4). La salida z debe estar en ALTO siempre que los valores de x1x0 concuer-
den con los valores de y1y0; esto es, siempre que x1  y1 y x0  y0. La tabla muestra
que hay cuatro de esos casos. Ahora podríamos continuar con el procedimiento nor-
mal, que sería obtener una expresión de suma de productos para z, tratar de simpli-
ficarla y después implementar el resultado. No obstante, la naturaleza de este
problema lo hace ideal para que se implemente mediante el uso de compuertas
XNOR, y con un poco de pensamiento se producirá una solución simple con el míni-
mo esfuerzo. Consulte la figura 4-23; en este diagrama lógico, x1 y y1 se alimentan de
FIGURA 4-22 Ejemplo
4-16.
A
B
A
B
x
t0 t1 t2 t3
x
SECCIÓN 4-6/CIRCUITOS OR EXCLUSIVO Y NOR EXCLUSIVO 147
148 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
EJEMPLO 4-18
una compuerta XNOR y x0 y y0 se alimentan a otra compuerta XNOR. La salida de
cada compuerta XNOR estará en ALTO sólo cuando sus entradas sean iguales. Por
ende, para x0  y0 y x1  y1 las salidas de ambas compuertas XNOR estarán en
ALTO. Ésta es la condición que estamos buscando, ya que significa que los dos núme-
ros de dos bits son iguales. La salida de la compuerta AND estará en ALTO sólo para
este caso, con lo cual se producirá el resultado deseado.
Al simplificar la expresión para la salida de un circuito lógico combinacional, tal vez
se encuentre con las operaciones XOR o XNOR cuando esté factorizando. A menudo
esto nos lleva a utilizar compuertas XOR o XNOR en la implementación del circuito
final. Para ilustrar lo anterior, simplifique el circuito de la figura 4-24(a).
Solución
La expresión sin simplificar para el circuito se obtiene como
z  ABCD  A B C D  A D
Podemos factorizar AD de los primeros dos términos:
z  AD(BC  B C)  A D
TABLA 4-4
x1 x0 y1 y0 z (Salida)
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 0 1 1 0
0 1 0 0 0
0 1 0 1 1
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 1
1 0 1 1 0
1 1 0 0 0
1 1 0 1 0
1 1 1 0 0
1 1 1 1 1
FIGURA 4-23 Circuito
para detectar la
igualdad de dos
números binarios de dos
bits.
x1
x0
y1
y0
Número
binario
Número
binario
z
FIGURA 4-24 El ejemplo 4-18, que muestra cómo puede usarse una compuerta XNOR
para simplificar la implementación de un circuito.
A
B
C
D
ABCD
ABCD
AD
z = ABCD + ABCD +AD
(a)
B
C
A
D
(b)
A + D = AD
B ⊕ C
AD(B ⊕ C)
z = AD (B ⊕ C) + AD
PREGUNTAS DE REPASO
A primera instancia podría pensar que la expresión entre paréntesis puede sus-
tituirse por un 1. Pero eso sería cierto sólo si la expresión fuera BC  BC. Debería
reconocer la operación entre paréntesis como la combinación XNOR de B y C. Este
hecho puede usarse para volver a implementar el circuito como se muestra en la
figura 4-24(b). Este circuito es mucho más simple que el original, ya que utiliza com-
puertas con menos entradas y se han eliminado dos INVERSORES.
1. Use álgebra booleana para demostrar que la expresión de salida de la compuer-
ta XNOR es el inverso exacto de la expresión de salida de la compuerta XOR.
2. ¿Cuál es la salida de una compuerta XNOR cuando se conectan a sus entradas
una señal lógica y su inverso exacto?
3. Un diseñador lógico necesita un INVERSOR, y todo lo que hay disponible es
una compuerta XOR de un chip 74HC86. ¿Necesita otro chip?
4-7 GENERADORY COMPROBADOR DE PARIDAD
En el capítulo 2 vimos que un transmisor puede adjuntar un bit de paridad a un
conjunto de bits de datos antes de transmitirlos a un receptor. También vimos cómo
esto permite al receptor detectar cualquier error de un solo bit que pueda haber
ocurrido durante la transmisión. La figura 4-25 muestra un ejemplo de un tipo de
SECCIÓN 4-7/GENERADOR Y COMPROBADOR DE PARIDAD 149
150 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
EJEMPLO 4-19
circuito lógico que se utiliza para la generación de paridad y la comprobación de
paridad. Este ejemplo específico utiliza un grupo de cuatro bits como los datos que
se van a transmitir, y utiliza un bit de paridad par. Puede adaptarse con facilidad
para utilizar paridad impar y cualquier número de bits.
En la figura 4-25(a), el conjunto de datos que se van a transmitir se aplica al
circuito generador de paridad, el cual produce el bit de paridad par P en su salida.
Este bit de paridad se transmite al receptor junto con los bits de datos originales,
formando un total de cinco bits. En la figura 4-25(b), estos cinco bits (datos  pari-
dad) entran en el circuito comprobador de paridad del receptor, el cual produce una
salida de error E que indica si ocurrió o no un error de un solo bit.
No debería sorprendernos demasiado que ambos circuitos empleen compuertas
XOR, si consideramos que una sola compuerta XOR opera de manera que produce
una salida de 1 si un número impar de sus entradas son 1, y una salida de 0 si un
número par de sus entradas son 1.
Determine la salida del generador de paridad para cada uno de los siguientes con-
juntos de datos de entrada, D3D2D1D0: (a) 0111; (b) 1001; (c) 0000; (d) 0100. Consulte
la figura 4-25(a).
Solución
Para cada caso, aplique los niveles de datos a las entradas del generador de paridad
y rastréelas a través de cada compuerta, hacia la salida P. Los resultados son: (a) 1;
(b) 0; (c) 0; y (d) 1. Observe que P es 1 sólo cuando los datos originales contienen un
número impar de 1s. Por ende, el número total de 1s que se envíen al receptor (datos
 paridad) será par.
D3
D2
D1
D0
Datos
originales
D3
D2
D1
D0
P
Del
transmisor
Comprobador de paridad par
Generador de paridad par
(a)
(b)
Paridad (P)
Datos
transmitidos
con el bit
de paridad
Error (E)
{ 1 = error
0 = sin error }
FIGURA 4-25 Compuertas XOR utilizadas para implementar (a) el generador de paridad y
(b) el comprobador de paridad para un sistema con paridad par.
EJEMPLO 4-20 Determine la salida del comprobador de paridad [vea la figura 4-25(b)] para cada
uno de los siguientes conjuntos de datos del transmisor:
P D3 D2 D1 D0
(a) 0 1 0 1 0
(b) 1 1 1 1 0
(c) 1 1 1 1 1
(d) 1 0 0 0 0
Solución
Para cada caso, aplique estos niveles a las entradas del comprobador de paridad
y rastréelos a través de las compuertas hacia la salida E. Los resultados son: (a) 0;
(b) 0; (c) 1; (d) 1. Observe que se produce un 1 en E sólo cuando aparece un número
impar de 1s en las entradas que van hacia el comprobador de paridad. Esto indica
que se ha producido un error, ya que se está utilizando la paridad par.
4-8 CIRCUITOS DE HABILITACIÓN/DESHABILITACIÓN
Cada una de las compuertas lógicas básicas puede utilizarse para controlar el paso
de una señal lógica de entrada hacia la salida. Esto se describe en la figura 4-26,
en donde se aplica una señal lógica A a una entrada de cada una de las compuer-
tas lógicas básicas. La otra entrada de cada compuerta es la entrada de control B.
B = 1
A x = A
HABILITAR
B = 1
A x = A
B = 0
A x = A
B = 0
A x = A
B = 0
A x = 0
DESHABILITAR
B = 0
A x = 1
B = 1
A x = 1
B = 1
A x = 0
FIGURA 4-26 Las cuatro compuertas básicas pueden habilitar o deshabilitar el paso de una
señal de entrada A, por medio del nivel lógico en la entrada de control B.
SECCIÓN 4-8/CIRCUITOS DE HABILITACIÓN/DESHABILITACIÓN 151
152 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
EJEMPLO 4-21
EJEMPLO 4-22
EJEMPLO 4-23
El nivel lógico en esta entrada de control determinará si la señal de entrada está
habilitada para llegar a la salida o deshabilitada para que no pueda llegar a la sali-
da. Esta acción de control explica por qué a estos circuitos se les empezó a llamar
compuertas.
Si examina la figura 4-26 verá que cuando las compuertas no inversoras (AND,
OR) están habilitadas, la salida sigue a la señal A de una manera exacta. En contras-
te, cuando las compuertas inversoras (NAND, NOR) están habilitadas, la salida es el
inverso exacto de la señal A.
Observe también que en la figura las compuertas AND y NOR producen una
salida constante en BAJO cuando se encuentran en la condición deshabilitada. En
contraste, las compuertas NAND y OR producen una salida constante en ALTO
cuando están deshabilitadas.
En el diseño de circuitos digitales se encontrará con muchas situaciones en las
que se habilite o deshabilite el paso de una señal lógica, dependiendo de las condi-
ciones presentes en una o más entradas de control. Los siguientes ejemplos mues-
tran varias de estas situaciones.
Diseñe un circuito lógico que permita que una señal pase a la salida sólo cuando las
entradas de control B y C estén ambas en ALTO; en caso contrario, la salida deberá
permanecer en BAJO.
Solución
Debe usarse una compuerta AND, ya que la señal debe pasarse sin invertir y la con-
dición de salida de deshabilitación es un nivel BAJO. Como la condición de habili-
tación debe ocurrir sólo cuando B  C  1 se debe usar una compuerta AND de tres
entradas, como muestra la figura 4-27(a).
Diseñe un circuito lógico que permita que una señal pase hacia la salida sólo cuando
una (pero no ambas) de sus entradas de control esté en ALTO; en caso contrario, la
salida permanecerá en ALTO.
Solución
El resultado se dibuja en la figura 4-27(b). Se utiliza una compuerta OR porque quere-
mos que la condición de deshabilitación de la salida sea un nivel ALTO, y no queremos
invertir la señal. Las entradas de control B y C se combinan en una compuerta XNOR.
Cuando B y C son distintas, la compuerta XNOR envía un nivel BAJO para habilitar
la compuerta OR. Cuando B y C son iguales, la compuerta XNOR envía un nivel ALTO
para deshabilitar la compuerta OR.
Diseñe un circuito lógico con la señal de entrada A, la entrada de control B y las
salidas X y Y, que opere de la siguiente manera:
1. Cuando B  1, la salida X seguirá a la entrada A y la salida Y será 0.
2. Cuando B  0, la salida X será 0 y la salida Y seguirá a la entrada A.
FIGURA 4-27
Ejemplos 4-21 y 4-22.
B
C
(a)
A
(b)
x
x
A
B
C
PREGUNTAS DE REPASO
Solución
Las dos salidas serán 0 cuando estén deshabilitadas y seguirán a la señal de entrada
cuando estén habilitadas. Por lo tanto, debe utilizarse una compuerta AND para cada
salida. Como X se debe habilitar cuando B  1, su compuerta AND debe estar contro-
lada por B, como muestra la figura 4-28. Como Y se debe habilitar cuando B  0, su
compuerta AND está controlada por B. Al circuito de la figura 4-28 se le conoce como
circuito de dirección de pulso, ya que dirige el pulso de entrada hacia una salida o la
otra, dependiendo de B.
1. Diseñe un circuito lógico con tres entradas A, B, C y una salida que cambie a
BAJO sólo cuando A esté en ALTO mientras que B y C sean distintas.
2. ¿Cuáles compuertas lógicas producen una salida de 1 en el estado deshabili-
tado?
3. ¿Cuáles compuertas lógicas pasan el inverso de la señal de entrada cuando se
habilitan?
4-9 CARACTERÍSTICAS BÁSICAS DE LOS CIS DIGITALES
Los CIs digitales son una colección de resistencias, diodos y transistores fabricados
en una sola pieza de material semiconductor (por lo general, silicio), al cual se le
conoce como sustrato, que por lo común se le denomina chip. El chip está encerrado
en un encapsulado de plástico o cerámica protectora del cual salen terminales para
conectar el CI con otros dispositivos. Uno de los tipos más comunes es el encapsula-
do dual en línea (DIP), el cual se muestra en la figura 4-29(a), y se le llama así debido a
que contiene dos filas paralelas de terminales. Estas terminales se numeran en sen-
tido contrario al de las manecillas del reloj, viéndolas desde la parte superior del
encapsulado con respecto a una muesca o punto de identificación en un extremo
del encapsulado [vea la figura 4-29(b)]. El DIP que se muestra aquí es un encapsula-
do de 14 terminales que mide 0.75 pulg por 0.25 pulg; también se utilizan encapsu-
lados de 16, 20, 24, 28, 40 y 64 terminales.
La figura 4-29(c) muestra que el chip de silicio es mucho más pequeño que el
DIP; por lo general, es de 0.05 pulgadas cuadradas. El chip de silicio se conecta a las
terminales del DIP mediante alambres muy finos [con diámetro de una milésima de
pulgada (1 mil)].
El DIP es tal vez el encapsulado de CI digital más común que se encuentra en
el equipo digital antiguo, pero actualmente se han hecho más populares otros tipos
de encapsulados. El CI que se muestra en la figura 4-29(d) es sólo uno de los muchos
encapsulados comunes en los circuitos digitales modernos. Este tipo específico utili-
za puntas en forma de J que se encorvan por debajo del CI. En el capítulo 8 veremos
otros tipos de encapsulados de CI.
B
A
B
X
Y
0 SI B = 1
0
0
0
SI B = 0
SI B = 1
SI B = 0
FIGURA 4-28 Ejemplo
4-23.
SECCIÓN 4-9/CARACTERÍSTICAS BÁSICAS DE LOS CIS DIGITALES 153
154 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
Muesca
El chip puede tener
un pequeño punto
cerca de la terminal 1
1 2 3 4 5 6 7
14 13 12 11 10 9 8
(a) (b)
Chip de
silicio
Terminal 1
Terminal 8
Terminal 14
(c)
1
2
3
4
5
6
7
14
FIGURA 4-29 (a) Encapsulado dual en línea (DIP); (b) vista superior; (c) el chip de silicio es mucho más pequeño
que el encapsulado protector; (d) encapsulado PLCC.
Esquina biselada
Terminal 1
(d)
A menudo los CIs digitales se clasifican de acuerdo con la complejidad de sus
circuitos, con base en el número de compuertas lógicas equivalentes en el sustrato.
En la actualidad existen seis niveles de complejidad que, por lo común, se definen
como se muestra en la tabla 4-5.
Todos los CIs específicos a los que se hizo referencia en el capítulo 3 y en este
capítulo son chips SSI con un número pequeño de compuertas. En los sistemas digi-
tales modernos, los dispositivos con integración a mediana escala (MSI) e integra-
ción a gran escala (LSI, VLSI, ULSI, GSI) realizan la mayor parte de las funciones
que alguna vez requirieron de varios tableros de circuitos llenos de dispositivos SSI.
No obstante, los chips SSI se siguen utilizando como “interfaz” o “pegamento” entre
estos chips más complejos. Los CIs de pequeña escala facilitan el aprendizaje de los
fundamentos de los sistemas digitales. En consecuencia, muchos cursos basados en
laboratorio utilizan estos CIs para construir y probar pequeños proyectos.
Ahora el mundo industrial de la electrónica digital se ha concentrado en los
dispositivos lógicos programables (PLDs) para implementar un sistema digital de
cualquier tamaño. Algunos PLDs simples están disponibles en encapsulados DIP,
TABLA 4-5
Complejidad Compuertas por chip
Integración a pequeña escala (SSI) Menos de 12
Integración a mediana escala (MSI) De 12 a 99
Integración a gran escala (LSI) De 100 a 9999
Integración a muy grande escala (VLSI) De 10,000 a 99,999
Integración a ultra gran escala (ULSI) De 100,000 a 999,999
Integración a giga escala (GSI) 1,000,000 o más
pero los dispositivos lógicos programables más complejos requieren muchas más ter-
minales de las que están disponibles en los DIPs. Los circuitos integrados más
grandes que tal vez necesiten extraerse de un circuito para sustituirlos, por lo gene-
ral, se fabrican en un encapsulado de soporte de chip de plástico con contactos
(PLCC). La figura 4-29(d) muestra el EPM 7128SLC84 de Altera en un encapsulado
PLCC, el cual es un PLD muy popular que se utiliza en muchos cursos de laboratorio.
Las características clave de este chip son más terminales, un tamaño más compacto,
y terminales alrededor de todo su perímetro. Observe que la terminal 1 no está “en
la esquina” como en el DIP, sino en medio de la parte superior del encapsulado.
CIs bipolares y unipolares
Los CIs digitales también pueden clasificarse de acuerdo con el tipo principal de
componente electrónico utilizado en sus circuitos. Los CIs bipolares se fabrican
mediante el uso del transistor de unión bipolar (NPN y PNP) como elemento princi-
pal del circuito. Los CIs unipolares utilizan el transistor unipolar de efecto de campo
(MOSFETs de canal P y N) como su elemento principal.
La familia lógica de transistor/transistor (TTL) ha sido la familia principal de
CIs digitales bipolares durante más de 30 años. La serie 74 estándar fue la primera
serie de CIs TTL, pero ya no se utiliza en diseños nuevos debido a que fue sustituida
por varias series TTL de mejor desempeño, aunque su arreglo básico de circuitos
forma la base para todos los CIs de las series TTL. Este arreglo de circuitos se mues-
tra en la figura 4-30(a) para el INVERSOR TTL estándar. Observe que el circuito
contiene varios transistores bipolares como elementos principales del circuito.
La familia TTL fue la familia líder de CIs en las categorías SSI y MSI hasta hace
aproximadamente 12 años. Desde entonces la familia de semiconductor metal-óxi-
do complementario (CMOS) ha desplazado gradualmente a la familia TTL de esa
posición. La familia CMOS pertenece a la clase de CIs digitales unipolares, ya que
utiliza MOSFETs de canal P y N como elementos principales del circuito. La figura
4-30(b) es un circuito INVERSOR CMOS estándar. Si comparamos los circuitos TTL
y CMOS de la figura 4-30, es evidente que la versión CMOS utiliza menos componen-
tes. Ésta es una de las principales ventajas de CMOS en comparación con TTL.
+VCC
(14)
Entrada A
(1)
Número
de terminal
Q1
D1
D2
Q2
Q3
Q4
Q1
Q2
Salida
(2)
GND
(7)
(b)
+VDD
(14)
Entrada A
(1)
115 ⍀
R4
1.6 k⍀
R2
3.6 k⍀
R1
1 k⍀
R3
Salida
y (2)
GND(7)
(a)
FIGURA 4-30 (a) Circuito INVERSOR TTL; (b) Circuito INVERSOR CMOS. Los números de terminales se
muestran entre paréntesis.
SECCIÓN 4-9/CARACTERÍSTICAS BÁSICAS DE LOS CIS DIGITALES 155
156 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
Debido a la simpleza y tamaño reducido, así como de otros atributos superiores
de los circuitos CMOS, los CIs modernos a gran escala se fabrican utilizando en su
mayor parte la tecnología CMOS. Los cursos de laboratorio que utilizan dispositivos
SSI y MSI a menudo utilizan TTL debido a su resistencia, aunque algunos utilizan
CMOS también. En el capítulo 8 veremos un estudio detallado de los circuitos y las
características de TTL y CMOS. Por ahora necesitamos conocer sólo algunas de
sus características básicas para poder hablar sobre el diagnóstico de fallas en los
circuitos combinacionales simples.
Familia TTL
La familia lógica TTL consiste en realidad de varias subfamilias o series. La tabla
4-6 lista el nombre de cada serie TTL, junto con la designación de prefijo que se
utiliza para identificar los distintos CIs como parte de esa serie. Por ejemplo, los
CIs que forman parte de la serie TTL estándar tienen un número de identificación
que comienza con 74. Los CIs 7402, 7438 y 74123 son de esta serie. De igual forma,
los CIs que forman parte de la serie TTL Schottky de bajo consumo de energía tie-
nen un número de identificación que comienza con 74LS. Los CIs 74LS02, 74LS38 y
74LS123 son ejemplos de dispositivos de ésta.
Las principales diferencias en las diversas series TTL tienen que ver con sus
características eléctricas tales como la disipación de potencia y la velocidad de con-
mutación. No difieren en cuanto a la distribución de las terminales o las operacio-
nes lógicas realizadas por los circuitos en el chip. Por ejemplo, los CIs 7404, 74S04,
74LS04, 74AS04 y 74ALS04 son circuitos de INVERSORES, cada uno de los cuales
contiene seis INVERSORES en un solo chip.
Familia CMOS
Actualmente existen varias series CMOS, algunas de ellas se listan en la tabla 4-7.
La serie 4000 es la más antigua. Esta serie contiene muchas de las mismas funciones
lógicas que la familia TTL, pero no se diseñó para ser compatible con las terminales
de los dispositivos TTL. Por ejemplo, el chip NOR cuádruple 4001 contiene cuatro
compuertas NOR de dos entradas, al igual que el chip 7402 TTL, pero las entradas
y las salidas de las compuertas en el chip CMOS no tienen los mismos números de
terminales que las señales correspondientes en el chip TTL.
Las series CMOS 74C, 74HC, 74HCT, 74AC y 74ACT son más recientes. Las pri-
meras tres son compatibles con las terminales de los dispositivos TTL con numera-
ciones correspondientes. Por ejemplo, los dispositivos 74C02, 74HC02 y 74HCT02
tienen la misma distribución de terminales que el 7402, 74LS02, y así en lo sucesivo.
Las series 74HC y 74HCT operan a una mayor velocidad que los dispositivos 74C.
La serie 74HCT está diseñada para ser eléctricamente compatible con los dispositi-
vos TTL; esto es, un circuito integrado 74HCT puede conectarse en forma directa
con los dispositivos TTL sin necesidad de circuitos que actúen como interfaz. Las
series 74AC y 74ACT son CIs de desempeño avanzado. Ninguno es compatible con
las terminales de los circuitos TTL. Los dispositivos 74ACT son eléctricamente com-
patibles con los circuitos TTL. En el capítulo 8 exploraremos las diversas series TTL
y CMOS con más detalle.
TABLA 4-6 Varias
series dentro de la
familia lógica TTL.
Serie TTL Prejo CI de ejemplo
TTL estándar 74 7404 (INVERSOR hex)
TTL Schottky 74S 74S04 (INVERSOR hex)
TTL Schottky de bajo consumo de energía 74LS 74LS04 (INVERSOR hex)
TTL Schottky avanzado 74AS 74AS04 (INVERSOR hex)
TTL Schottky avanzado de bajo consumo 74ALS 74ALS04 (INVERSOR hex)
de energía
Alimentación y tierra
Para usar CIs digitales es necesario realizar las conexiones apropiadas a las termina-
les del CI. Las conexiones más importantes son: alimentación de corriente directa(cd)
y tierra. Estas conexiones son requeridas para que los circuitos en el chip operen
en forma correcta. En la figura 4-30 podemos ver que tanto el circuito TTL como
CMOS tienen un voltaje de alimentación de cd conectado a una de sus terminales, y
tierra en la otra. La terminal de voltaje de alimentación se etiqueta como VCC para
el circuito TTL y como VDD para el circuito CMOS. Muchos de los circuitos integra-
dos CMOS más recientes que están diseñados para ser compatibles con los circuitos
integrados TTL también utilizan la designación VCC en dicha terminal.
Si el CI no se conecta al voltaje de alimentación o a tierra, las compuertas lógi-
cas en el chip no responderán en forma apropiada a las entradas lógicas y las com-
puertas no producirán los niveles lógicos de salida esperados.
Intervalos de voltaje de niveles lógicos
Para los dispositivos TTL, el valor nominal de VCC es 5 V. Para los circuitos integra-
dos CMOS, VDD puede variar de 3 a 18V, aunque el valor más común es 5V cuan-
do los circuitos CMOS se utilizan en la misma placa con circuitos integrados TTL.
Para los dispositivosTTL estándar, los intervalos de voltaje de entrada aceptables
para los niveles de 0 lógico y de 1 lógico se definen como muestra la figura 4-31(a).
Un 0 lógico es cualquier voltaje en el intervalo de 0 a 0.8 V; un 1 lógico es cualquier
voltaje de 2 a 5 V. Los voltajes que no se encuentran en ninguno de estos intervalos
se consideran como indeterminados y no deben utilizarse como entradas para un dis-
positivo TTL. Los fabricantes de circuitos integrados no pueden garantizar la manera
en que responderá un circuito TTL a los niveles de entrada que se encuentren en el
intervalo indeterminado (entre 0.8 y 2.0 V).
La figura 4-31(b) muestra los intervalos de voltaje de entrada lógicos para los
circuitos integrados CMOS que operan con VDD  5 V. Los voltajes entre 0 y 1.5 V
se definen como un 0 lógico, y los voltajes desde 3.5 hasta 5 V se definen como un 1
lógico. El intervalo indeterminado comprende los voltajes entre 1.5 y 3.5 V.
Entradas desconectadas (flotantes)
¿Qué ocurre cuando la entrada a un circuito integrado digital se deja desconectada?
Por lo general, a una entrada desconectada se le conoce como entrada flotante. La
respuesta a esta pregunta será distinta para TTL y para CMOS.
TABLA 4-7 Varias
series dentro de la
familia lógica CMOS.
Serie CMOS Prejo CI de ejemplo
CMOS de compuerta de metal 40 4001 (cuatro compuertas NOR)
Compuerta de metal, compatible 74C 74C02 (cuatro
con las terminales de TTL compuertas NOR)
Compuerta de silicio de alta velocidad, 74HC 74HC02 (cuatro
compatible con las terminales TTL compuertas NOR)
Compuerta de silicio de alta velocidad, 74HCT 74HCT02 (cuatro
compatible con las terminales y compuertas NOR)
eléctricamente compatible con la
familia TTL
CMOS con desempeño avanzado, no es 74AC 74AC02 (cuatro
compatible con las terminales ni es compuertas NOR)
eléctricamente compatible
con la familia TTL
CMOS con desempeño avanzado, no es 74ACT 74ACT02 (cuatro
compatible con las terminales de TTL, compuertas NOR)
pero es eléctricamente compatible
SECCIÓN 4-9/CARACTERÍSTICAS BÁSICAS DE LOS CIS DIGITALES 157
158 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
FIGURA 4-31
Intervalos de voltajes de
entrada de los niveles
lógicos para los CIs
digitales (a) TTL y
(b) CMOS.
Una entrada TTL flotante actúa justo igual que un 1 lógico. En otras palabras, el
CI responderá como si se le hubiera aplicado un nivel lógico ALTO. Esta caracterís-
tica se utiliza a menudo cuando se prueba un circuito TTL. Un técnico descuidado
podría dejar ciertas entradas desconectadas en vez de conectarlas a un nivel lógico
ALTO. Aunque esto es “lógicamente” correcto no es una práctica recomendada, en
especial cuando se trata de diseños de circuitos finales, ya que la entrada TTL flo-
tante es muy susceptible de recoger señales de ruido que podrían afectar en forma
adversa la operación del dispositivo.
En algunas compuertas TTL, una entrada flotante puede indicar un nivel de
corriente directa de entre 1.4 y 1.8V, si se comprueba con un voltímetro o un oscilos-
copio. Aun y cuando estos valores se encuentran en el intervalo indeterminado para
TTL, producirá la misma respuesta que un 1 lógico. Es importante tener en cuenta
esta característica de una entrada TTL flotante al diagnosticar fallas en circuitos
TTL ya que puede ser de gran ayuda.
Si una entrada CMOS se deja flotante, pueden producirse resultados desastro-
sos. El CI podría sobrecalentarse y hasta dañarse. Por esta razón, todas las entradas
de un circuito integrado CMOS deben conectarse a un nivel ALTO o BAJO, o a la
salida de otro CI. Una entrada CMOS flotante no se medirá como un voltaje especí-
fico de corriente directa, sino que fluctuará en forma aleatoria a medida que recoja
ruido. Por ende, no actúa como 1 ni como 0 lógico y su efecto sobre la salida es
impredecible. Algunas veces la salida oscilará como resultado del ruido que recoja
la salida flotante.
Muchos de los CIs CMOS más complejos tienen circuitos integrados en las entra-
das, los cuales reducen la probabilidad de cualquier reacción destructiva para una
entrada abierta. Con estos circuitos, a la hora de experimentar con ellos, no es nece-
sario aterrizar cada una de las terminales que no se utilicen en estos CIs grandes. No
obstante, es una buena práctica conectar las entradas no utilizadas al nivel ALTO o
BAJO (lo que sea apropiado) en la implementación del circuito final.
Diagramas de conexiones de circuitos lógicos
Un diagrama de conexiones muestra todas las conexiones eléctricas, números de ter-
minal, números de CI, valores de los componentes, nombres de las señales y voltajes
de alimentación. La figura 4-32 muestra un diagrama de conexiones común para
un circuito lógico simple. Examínelo con cuidado y observe los siguientes puntos
importantes:
1. El circuito utiliza compuertas lógicas de dos CIs distintos. Los dos INVERSO-
RES forman parte de un chip 74HC04, designado como Z1. El 74HC04 contiene
seis INVERSORES; dos de ellos se utilizan en este circuito y cada uno está eti-
quetado como parte del chip Z1. De manera similar, las dos compuertas NAND
son parte de un chip 74HC00 que contiene cuatro compuertas NAND. Todas
1 LÓGICO
0 LÓGICO
Indeterminado
1 LÓGICO
0 LÓGICO
Indeterminado
TTL
(a)
1.5 V . . .
5.0 V . . .
2.0 V . . .
0.8 V . . .
3.5 V . . .
0 V . . .
5.0 V . . .
0 V . . .
*VDD = + 5 V
(b)
CMOS*
FIGURA 4-32
Diagrama de conexiones
de un circuito lógico
común.
las compuertas en este chip están designadas con la etiqueta Z2. Al numerar
cada compuerta como Z1, Z2, Z3 etcétera, podemos llevar el registro de cuál
compuerta forma parte de cada chip. Esto es muy útil en los circuitos más com-
plejos que contienen muchos CIs con varias compuertas por chip.
2. El número de terminal de las entradas y salidas de cada compuerta se indica
en el diagrama. Estos números de terminales y las etiquetas de los CIs se uti-
lizan para facilitar la referencia a cualquier punto en el circuito. Por ejemplo,
la terminal 2 de Z1 se refiere a la terminal de salida del INVERSOR superior.
De manera similar, podemos decir que la terminal 4 de Z1 está conectada a la
terminal 9 de Z2.
3. Las conexiones de alimentación y de tierra para cada CI (no para cada com-
puerta) se muestran en el diagrama. Por ejemplo, la terminal 14 de Z1 está
conectada a 5V, y la terminal 7 de Z1 está conectada a tierra. Estas conexiones
proveen de energía a los seis INVERSORES que forman parte de Z1.
4. Para el circuito mostrado en la figura 4-32, las señales que son entradas están
a la izquierda. Las señales que son salidas están a la derecha. La barra sobre el
nombre de la señal indica que ésta es activa en BAJO. Las burbujas se colocan
también en los símbolos del diagrama para indicar el estado activo en BAJO. En
este caso, es obvio que cada señal es un solo bit.
5. Las señales se definen en forma gráfica en la figura 4-32 como entradas y sali-
das, y la relación entre ellas (la operación del circuito) se describe en forma
gráfica mediante el uso de símbolos lógicos interconectados.
Por lo general, los fabricantes de equipo electrónico suministran diagramas
esquemáticos detallados que utilizan un formato similar al de la figura 4-32. Estos
diagramas de conexiones son virtualmente necesarios cuando se diagnostican fallas
en un circuito defectuoso. Hemos optado por identificar los CIs individuales como
Z1, Z2, Z3, etcétera. Otras designaciones que se utilizan con frecuencia son IC1, IC2,
IC3, … o U1, U2, U3, ….
Para dibujar circuitos lógicos pueden utilizarse computadoras personales con
software para diagramas esquemáticos. Las aplicaciones computacionales que
pueden interpretar estos símbolos gráficos y las conexiones de las señales pue-
den traducirlos en relaciones lógicas, a las cuales por lo común se les conoce como
herramientas de captura de diagramas esquemáticos. El sistema de desarrollo MAX
PLUS de Altera para lógica programable permite al usuario introducir archivos
de diseño gráfico (.gdf) mediante el uso de técnicas de captura de diagramas esque-
máticos. Por ende, el diseño del circuito es tan sencillo como dibujar el diagrama
esquemático en la pantalla de la computadora. Observe que en la figura 4-33 no
hay números de terminales ni designaciones de chips en los símbolos lógicos. Los
circuitos no se implementarán mediante el uso de chips SSI o MSI, sino que la fun-
cionalidad de la lógica equivalente se “programará” en un PLD. Más adelante en
este capítulo explicaremos esto con más detalle.
+5 V
14
2
1
7
RELOJ
+5 V
14
2
1
7
3
SALIDA RELOJ
4
3
DESPLAZAMIENTO
9
10
8
SALIDA DESPLAZAMIENTO
Z1
Z1
Z2
Z2
CARGA
IC
Z1
Z2
Tipo
74HC04 seis inversores
74HC00 cuatro
compuertas NAND
SECCIÓN 4-9/CARACTERÍSTICAS BÁSICAS DE LOS CIS DIGITALES 159
160 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
BARRA_CARGA
ENTRADA
VCC
7
BARRA_RELOJ
ENTRADA
BARRA_RELOJSALIDA
SALIDA
NAND2
9
3
VCC
6
NOT
1
DESPLAZAMIENTO
ENTRADA
BARRA_DESPLSALIDA
SALIDA
NAND2
10
4
VCC
8
NOT
5
FIGURA 4-33 Diagrama lógico que utiliza captura de diagramas esquemáticos.
PREGUNTAS DE REPASO 1. ¿Cuál es el tipo más común de encapsulado de CI digital?
2. Nombre las seis categorías comunes de CIs digitales, de acuerdo con su comple-
jidad.
3. Verdadero o falso: un chip 74S74 contiene la misma lógica y distribución de ter-
minales que el 74LS74.
4. Verdadero o falso: un chip 74HC74 contiene la misma lógica y distribución de
terminales que el 74AS74.
5. ¿Cuál serie CMOS no es compatible con las terminales de TTL?
6. ¿Cuál es el intervalo de voltaje de entrada aceptable de un 0 lógico para TTL?
¿Para un 1 lógico?
7. Repita la pregunta 6 para un CMOS que opera a VDD  5 V.
8. ¿Cómo responde un circuito integrado TTL a una entrada flotante?
9. ¿Cómo responde un circuito integrado CMOS a una entrada flotante?
10. ¿Cuál serie CMOS puede conectarse en forma directa a un TTL sin necesidad de
circuitos de interfaz?
11. ¿Cuál es el propósito de los números de terminales en el diagrama de conexio-
nes de un circuito lógico?
12. ¿Cuáles son las similitudes clave de los archivos de diseño gráfico que se utilizan
para los diagramas de conexiones de circuitos lógicos tradicionales y de lógica
programable?
4-10 DIAGNÓSTICO DE FALLAS DE SISTEMAS DIGITALES
Existen tres pasos básicos para corregir un circuito o sistema digital que tenga una
falla:
1. Detección de fallas. Observe la operación del circuito/sistema y compárela con la
operación correcta esperada.
2. Aislamiento de fallas. Realice pruebas y mediciones para aislar la falla.
3. Corrección de fallas. Sustituya el componente defectuoso, repare la conexión
defectuosa, elimine el corto, o realice la acción pertinente.
Aunque estos pasos pueden parecer bastante obvios y simples, el procedimiento
real de diagnóstico de fallas que se siga dependerá en gran parte del tipo y la com-
+5 V
Sonda
lógica
IC
Tarjeta de
circuito impreso
GND
A VCC
A GND
LEDs
indicadores
APAG
ENC
APAG
X
BAJO
ALTO
INDETERMINADO*
PULSANDO
Rojo Condición lógica
* Incluye condición abierta o flotante
ENC
APAG
APAG
X
Verde
APAG
APAG
APAG
DESTELLANDO
Amarillo
LEDs
FIGURA 4-34 Una sonda lógica se utiliza para monitorear la actividad de los niveles lógicos en la terminal de un
CI o en cualquier punto accesible en un circuito lógico.
plejidad del circuito, y de los tipos de herramientas de diagnóstico de fallas y de la
documentación disponible.
Las buenas técnicas de diagnóstico de fallas sólo pueden aprenderse en un
entorno de laboratorio, por medio de la experimentación y el diagnóstico de fallas
real en circuitos y sistemas defectuosos. No existe en absoluto una forma de con-
vertirse en un técnico de diagnóstico de fallas eficiente que tratar de diagnosticar
fallas en todos los circuitos que sea posible; además, por más libros de texto que lea
no podrá obtener de ellos ese tipo de experiencia. No obstante, podemos ayudarle a
desarrollar las habilidades analíticas que forman la parte más esencial de una téc-
nica eficiente de diagnóstico de fallas. Describiremos los tipos de fallas comunes en
los sistemas compuestos en su mayor parte de CIs digitales y le indicaremos cómo
reconocerlas. Después le presentaremos ejemplos prácticos triviales para ilustrar
los procesos analíticos implicados en el diagnóstico de fallas. Además, habrá pro-
blemas al final del capítulo para que usted tenga la oportunidad de pasar por estos
procesos analíticos para obtener sus propias conclusiones acerca de los circuitos
digitales defectuosos.
Para los análisis y ejercicios sobre diagnóstico de fallas que realizaremos en este
libro, supondremos que el técnico de diagnóstico de fallas tiene a su disposición las
herramientas básicas para este propósito: sonda lógica, osciloscopio y generador de
pulsos lógico. Desde luego que la herramienta de diagnóstico de fallas más impor-
tante y efectiva es el técnico, y ésa es la herramienta que esperamos desarrollar
mediante la presentación de los principios y las técnicas de diagnóstico de fallas,
ejemplos y problemas, tanto aquí como en los capítulos posteriores.
En las siguientes tres secciones sobre diagnóstico de fallas utilizaremos sólo
nuestro cerebro y una sonda lógica tal como la que se muestra en la figura 4-34. La
sonda lógica tiene una punta de metal afilada con la que se toca el punto específico
que deseamos probar. En la figura 4-34 se muestra probando la terminal 3 de un CI.
También puede tocar el trazo de una tarjeta de circuitos impresos, un alambre sin
aislamiento, la terminal de un conector, la terminal de un componente discreto tal
como un transistor o cualquier otro punto conductor en un circuito. El nivel lógico
presente en la punta de la sonda se indicará mediante el estado de sus LEDs indi-
cadores. En la tabla de la figura 4-34 se muestran las cuatro posibilidades. Un nivel
lógico indeterminado no produce luz en los indicadores. Esto incluye la condición en
la que la punta de la sonda toca un punto en un circuito que esté abierto o flotan-
te; esto es, que no esté conectado a ninguna fuente de voltaje. Este tipo de sonda
también cuenta con un LED amarillo para indicar la presencia de un tren de pulsos.
Cualquier transición (de BAJO a ALTO o de ALTO a BAJO) provocará que el LED
amarillo destelle durante una fracción de segundo y después se apague. Si las tran-
siciones ocurren con frecuencia, el LED continuará destellando a una frecuencia
SECCIÓN 4-10/DIAGNÓSTICO DE FALLAS DE SISTEMAS DIGITALES 161
162 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
FIGURA 4-35
(a) Entrada de un CI
cortocircuitada a tierra
en forma interna;
(b) entrada de un CI
en corto con la fuente
de voltaje, de manera
interna. Estos dos tipos
de fallas obligan a que
la señal de entrada en la
terminal cortocircuitada
se quede en el mismo
estado. (c) Salida del CI
cortocircuitada a tierra
de manera interna;
(d) la salida en corto con
la fuente de voltaje, de
manera interna. Estas
dos fallas no afectan
a las señales en las
entradas del CI.
aproximada de 3 Hz. Mediante la observación de los LEDs rojo y verde, junto con el
LED amarillo destellante, podrá saber si la señal está la mayor parte del tiempo en
ALTO o en BAJO.
4-11 FALLAS INTERNAS EN LOS CIRCUITOS INTEGRADOS
DIGITALES
Las fallas internas más comunes en los CIs digitales son:
1. Fallas en los circuitos internos.
2. Entradas o salidas cortocircuitadas a tierra o a VCC.
3. Entradas o salidas sin conectar (circuito abierto).
4. Corto entre dos terminales (que no sean tierra ni VCC).
Ahora describiremos cada uno de estos tipos de fallas.
Fallas en los circuitos internos
Por lo general, estas fallas son ocasionadas debido a que uno de los componentes
internos falla por completo u opera fuera de sus especificaciones. Cuando esto ocu-
rre, las salidas del CI no responden de manera apropiada a las entradas. No hay
forma de predecir lo que harán las salidas, ya que esto depende del componente
interno que esté fallando. Algunos ejemplos de este tipo de fallas serían un corto
tipo base-emisor en el transistor Q4 o un valor de resistencia demasiado grande para
R2 en el INVERSOR TTL de la figura 4-30(a). Este tipo de falla interna del CI no es
tan común como las otras tres.
Entrada internamente cortocircuitada a tierra o a la fuente
de alimentación
Este tipo de falla interna ocasionará que la entrada de un CI se quede atascada en
el estado BAJO o ALTO. La figura 4-35(a) muestra la terminal de entrada 2 de una
compuerta NAND cortocircuitada a tierra dentro del CI. Esto hará que la terminal 2
siempre esté en el estado BAJO. Si esta terminal de entrada se excita mediante una
señal lógica B, sin duda aterrizará B a tierra. Por ende, este tipo de falla afectará
la salida del dispositivo que está generando la señal B.
+5 V
7
14
X
3
1
2
A
B
Corto
interno
+5 V
14
X
3
1
2
A
B
Corto
interno
+5 V
7
14
X
3
1
2
A
B
Corto
interno
(a) (b)
(c) (d)
+5 V
7
14
X
3
1
2
A
B
Corto
interno
EJEMPLO 4-24
De manera similar, la terminal de entrada de un CI podría estar en corto inter-
no con 5 V, como en la figura 4-35(b). Esto mantendría a esa terminal atascada en
el estado ALTO. Si esta terminal de entrada es excitada por una señal lógica A, sin
duda pondría en corto a A con 5 V.
Salida internamente cortocircuitada a tierra o a la fuente de
alimentación
Este tipo de falla interna provocará que la terminal de salida se quede atascada en
el estado BAJO o ALTO. La figura 4-35(c) muestra a la terminal 3 de la compuerta
NAND cortocircuitada a tierra dentro del CI. Esta salida se queda atascada en BAJO
y no responderá a las condiciones que se apliquen a las terminales de entrada 1 y 2.
En otras palabras, las entradas lógicas A y B no tendrán efecto sobre la salida X.
La terminal de salida de un CI también puede quedar en corto con 5 V dentro
del CI, como se muestra en la figura 4-35(d). Esto obliga a que la terminal de salida 3
se quede atascada en ALTO, sin importar el estado de las señales en las terminales
de entrada. Observe que este tipo de falla no tiene efecto sobre las señales lógicas
en las entradas del CI.
Consulte el circuito de la figura 4-36. Un técnico utiliza una sonda lógica para deter-
minar las condiciones de las diversas terminales del CI. Los resultados están registra-
dos en la figura. Examine estos resultados y determine si el circuito está trabajando
en forma apropiada. En caso contrario, sugiera algunas de las posibles fallas.
Solución
La terminal de salida 4 del INVERSOR debe estar pulsando, ya que su entrada está
pulsando. No obstante, los resultados registrados muestran que la terminal 4 está atas-
cada en BAJO. Como esta terminal está conectada a la terminal 1 de Z2, la salida de la
compuerta NAND se mantiene en ALTO. De nuestra discusión anterior podemos listar
tres posibles fallas que podrían producir esta operación.
En primer lugar, podría existir una falla en un componente interno en el INVER-
SOR que no le permita responder en forma apropiada a su entrada. En segundo
lugar, la terminal 4 del INVERSOR podría estar cortocircuitada a tierra en forma
interna para Z1, con lo cual se mantendría en BAJO. En tercer lugar, la terminal 1
de Z2 podría estar cortocircuitada a tierra en forma interna para Z2. Esto evitaría
que cambiara la terminal de salida del INVERSOR.
Además de estas posibles fallas, puede haber cortos externos a tierra en cual-
quier parte de la ruta conductora entre la terminal 4 de Z1 y la terminal 1 de Z2. En
uno de los siguientes ejemplos veremos cómo aislar la verdadera falla.
Entrada o salida sin conectar (circuito abierto)
Algunas veces el alambre conductor tan fino que conecta la terminal de un CI con
los circuitos internos del mismo se rompe, lo cual produce un circuito abierto. La
figura 4-37 del ejemplo 4-25 muestra esta situación para una entrada (terminal 13)
y una salida (terminal 6). Si se aplica una señal a la terminal 13, no llegará a la
FIGURA 4-36 Ejemplo
4-24.
Z1-3
Z1-4
Z2-1
Z2-2
Z2-3
Pulsando
BAJO
BAJO
ALTO
ALTO
Terminal Condición
+5 V
7
14
+5 V
14
Z1
7
X
3
1
2
4
B
3
A
Z2
SECCIÓN 4-11/FALLAS INTERNAS EN LOS CIRCUITOS INTEGRADOS DIGITALES 163
164 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
EJEMPLO 4-25
EJEMPLO 4-26
entrada de la compuerta NAND-1 y, por lo tanto, no tendrá efecto sobre su salida.
La entrada abierta de la compuerta estará en el estado flotante. Como dijimos antes,
los dispositivos TTL responderán como si esta entrada flotante fuera un 1 lógico y los
dispositivos CMOS responderán en forma errática, y tal vez podrían dañarse debido
al sobrecalentamiento.
La abertura en la salida de la compuerta NAND-4 evita que la señal llegue a la
terminal 6 del IC, por lo que no habrá un voltaje estable presente en esa terminal.
Si esta terminal se conecta a la entrada de otro CI, producirá una condición flotante
en esa entrada.
¿Qué indicaría una sonda lógica en la terminal 13 y en la terminal 6 de la figura
4-37?
Solución
En la terminal 13, la sonda lógica indicará el nivel lógico de la señal externa que se
conecta a la terminal 13 (la cual no se muestra en este diagrama). En la terminal 6,
la sonda lógica no tendrá ningún LED encendido para un nivel lógico indetermina-
do, ya que el nivel de salida de la compuerta NAND nunca llegará a la terminal 6.
Consulte el circuito de la figura 4-38 y las indicaciones registradas de la sonda lógica.
¿Cuáles son algunas de las posibles fallas que producirían esos resultados? Suponga
que los CIs son TTL.
Solución
Un análisis de los resultados registrados nos indica que el INVERSOR parece estar
funcionando en forma correcta, pero la salida de la compuerta NAND es inconsis-
tente con sus entradas. La salida NAND debería estar en ALTO, ya que su terminal
de entrada 1 está en BAJO. Este nivel BAJO debería evitar que la compuerta NAND
respondiera a los pulsos en la terminal 2. Es probable que este nivel BAJO no esté lle-
gando a los circuitos internos de la compuerta NAND debido a una abertura interna.
FIGURA 4-37 Un CI
con una entrada abierta
en forma interna no
responderá a las señales
que se apliquen a esa
terminal de entrada.
Una salida abierta en
forma interna producirá
un voltaje impredecible
en esa terminal de
salida.
7
6
5
4
3
2
1
74LS00
14 13 12 11 10 9 8
GND
VCC
1 2
3 4
Abierto
Abierto
FIGURA 4-38 Ejemplo
4-26.
Z1-3
Z1-4
Z2-1
Z2-2
Z2-3
ALTO
BAJO
BAJO
Pulsando
Pulsando
Terminal Condición
Nota: no se muestran las
conexiones a VCC ni
a tierra de los CI
X
Z1
Z2
A
B
1
2
3
4
3
Como el CI esTTL, este circuito abierto produciría el mismo efecto que un nivel ALTO
lógico en la terminal 1. Si el CI hubiera sido CMOS, el circuito abierto interno en la
terminal 1 podría haber generado una salida indeterminada, lo cual podría provocar
un sobrecalentamiento y la destrucción del chip.
De lo antes expuesto en relación con las entradas TTL abiertas, usted podría
haber esperado que el voltaje de la terminal 1 de Z2 estuviera entre 1.4 y 1.8 V,
y que la sonda lógica debería haberlo registrado como indeterminado. Esto hubie-
ra sido cierto si el circuito abierto fuera externo para el chip NAND. Como no hay
circuito abierto entre la terminal 4 de Z1 y la terminal 1 de Z2, el voltaje en la termi-
nal 4 de Z1 sí llega a la terminal 1 de Z2, pero se desconecta dentro del chip NAND.
Corto entre dos terminales
Un corto interno entre dos terminales del CI obligará a que las señales lógicas en
esas terminales siempre sean idénticas. Cada vez que dos señales que se supone
deben ser distintas muestran las mismas variaciones de niveles lógicos, existe una
buena posibilidad de que las señales estén en corto.
Considere el circuito de la figura 4-39, en donde las terminales 5 y 6 de la com-
puerta NOR están en corto de manera interna. Este corto hace que las dos termi-
nales de salida del INVERSOR se conecten entre sí, de manera que las señales en
la terminal 2 de Z1 y la terminal 4 de Z1 deben ser idénticas, aún y cuando las dos
señales de entrada del INVERSOR están tratando de producir diferentes salidas.
Para ilustrar esto, considere las formas de onda de entrada que se muestran en el
diagrama. Aún cuando estas formas de onda de entrada son distintas, las salidas Z1-2
y Z1-4 son iguales.
Durante el intervalo de t1 a t2, ambos INVERSORES tienen una entrada en
ALTO y están tratando de producir una salida en BAJO, por lo que estar en corto
no hace ninguna diferencia. Durante el intervalo de t4 a t5, ambos INVERSORES
tienen una entrada en BAJO y están tratando de producir una salida en ALTO, así
que el estar en corto de nuevo no tiene ningún efecto. No obstante, durante los
intervalos de t2 a t3 y de t3 a t4 un INVERSOR está tratando de producir una salida
en ALTO, mientras que el otro está tratando de producir una salida en BAJO. A esto
se le conoce como colisión de señales, ya que las dos señales están “luchando” una
con la otra. Cuando esto ocurra, el nivel de voltaje real que aparezca en las salidas
en corto dependerá de los circuitos internos del CI. En los dispositivos TTL, por lo
general, será un voltaje en el extremo superior del intervalo del 0 lógico (es decir,
cerca de 0.8 V), aunque también podría estar en el intervalo indeterminado. En los
dispositivos CMOS, por lo general, será un voltaje en el intervalo indeterminado.
X
4
1 2
3
Corto
interno
5
6
4
Z1
A
B
4 V . . .
. . . 4 V
0 V . . .
4 V . . .
0 V . . .
0 V . . .
?
Z1-1
Z1-3
Z1-2
y
Z1-4
t1 t2 t3 t4 t 5
Z1
Z2
FIGURA 4-39 Cuando se ponen en corto dos terminales de entrada en forma interna,
se obliga a las señales que excitan estas terminales a ser idénticas y, por lo general, se
produce una señal con tres niveles distintos.
SECCIÓN 4-11/FALLAS INTERNAS EN LOS CIRCUITOS INTEGRADOS DIGITALES 165
166 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
PREGUNTAS DE REPASO
EJEMPLO 4-27
Siempre que vea una forma de onda como la señal de Z1-2, Z1-4 en la figura
4-39 con tres niveles distintos, será motivo para sospechar que dos señales de salida
pueden estar en corto.
1. Liste las distintas fallas internas en los circuitos integrados.
2. ¿Cuál falla interna de un CI puede producir señales que muestren tres niveles
de voltaje distintos?
3. ¿Qué indicaría una sonda lógica en Z1-2 y Z1-4 de la figura 4-39, si A  0 y
B  1?
4. ¿Qué es la colisión de señales?
4-12 FALLAS EXTERNAS
Hemos visto cómo reconocer los efectos de diversas fallas internas para los CIs digi-
tales. Hay muchas cosas más que pueden salir mal y que son externas para los CIs;
en esta sección describiremos las más comunes.
Líneas de señal abiertas
Esta categoría incluye cualquier falla que produzca una interrupción o discontinui-
dad en la ruta conductora, de tal forma que se evite que un nivel de voltaje o señal
pase de un punto a otro. Algunas de las causas de las líneas de señal abiertas son:
1. Alambre roto.
2. Conexión soldada defectuosamente; conexión de alambre enrollado floja.
3. Grieta o interrupción en la línea de conexión de un circuito impreso (algunas de
éstas son del grueso de un cabello, y se pueden ver sólo con una lupa).
4. Terminal doblada o rota en un CI.
5. Zócalo de CI defectuoso, de tal forma que el CI no haga buen contacto con el
zócalo.
Con frecuencia, este tipo de fallas en los circuitos pueden detectarse mediante una
inspección visual cuidadosa y después verificarse desconectando la alimentación
del circuito y comprobando si hay continuidad (es decir, una ruta de baja resisten-
cia) con un óhmetro entre los dos puntos en cuestión.
Considere el circuito CMOS de la figura 4-40 y las indicaciones de la sonda lógica
que se incluyen. ¿Cuál es la falla más probable del circuito?
Solución
Es probable que el nivel indeterminado en la salida de la compuerta NOR se deba
a la entrada indeterminada en la terminal 2. Como hay un nivel BAJO en Z1-6, tam-
bién debe haber un nivel BAJO en Z2-2. Es evidente que el BAJO de Z1-6 no está
llegando a Z2-2, por lo que debe haber un circuito abierto en la ruta de señal entre
estos dos puntos. La ubicación de este circuito abierto puede determinarse empe-
zando desde Z1-6 con la sonda lógica y rastreando el nivel BAJO a lo largo de la ruta
de la señal hacia Z2-2, hasta que cambie a un nivel indeterminado.
Líneas de señal en corto
Este tipo de falla tiene el mismo efecto que un corto interno entre las terminales
de un CI. Provoca que dos señales sean exactamente la misma (colisión de señales).
Una línea de señal puede estar cortocircuitada a tierra o a VCC en vez de estar en
corto con otra línea de señal. En esos casos se obliga a que la señal permanezca en el
estado BAJO o ALTO. Las principales causas de cortos inesperados entre dos puntos
en un circuito son las siguientes:
1. Alambrado mal instalado. Un ejemplo es cuando se quita demasiado aislante de
los extremos de los cables que están muy cerca uno del otro.
2. Puentes de soldadura. Son salpicaduras de soldadura que ponen en corto dos o
más puntos. Por lo común ocurren entre puntos que están muy cercanos, como
las terminales adyacentes en un chip.
3. Desbaste incompleto. El cobre entre las rutas conductoras adyacentes en una tar-
jeta de circuitos impresos no se desbasta de forma adecuada.
De nuevo, con frecuencia una cuidadosa inspección visual puede descubrir este tipo
de fallas, y la comprobación con un óhmetro puede verificar que los dos puntos en
el circuito están en corto.
Fuente de alimentación defectuosa
Todos los sistemas digitales tienen una o más fuentes de alimentación de corriente
directa, las cuales suministran los voltajes VCC y VDD requeridos por los chips. Una
fuente defectuosa o una sobrecargada (que suministra más de su valor nominal de
corriente) proporcionará voltajes de suministro mal regulados a los CIs, y éstos no
operarán u operarán en forma incorrecta.
Una fuente de alimentación puede dejar de regular el voltaje debido a una falla
en sus circuitos internos, o porque los circuitos que está alimentando consumen más
corriente de la que puede suministrar la fuente. Esto puede ocurrir si un chip o com-
ponente tiene una falla que hace que consuma mucha más corriente de la normal.
Una buena práctica de diagnóstico de fallas es comprobar los niveles de voltaje
en cada una de las fuentes de alimentación en el sistema, para ver si se encuentran
dentro de sus intervalos especificados. También es una buena idea comprobarlas
en un osciloscopio para verificar que no haya una cantidad considerable de rizo de
corriente alterna en los niveles de corriente directa, y para verificar que los niveles
de voltaje permanezcan regulados durante la operación del sistema.
Uno de los signos más comunes de falla en la fuente de alimentación es que uno
o más chips operen en forma incorrecta, o que no operen en lo absoluto. Algunos CIs
son más tolerantes a las variaciones de la fuente de alimentación y pueden operar
en forma apropiada, mientras que otros no. Usted siempre debe comprobar los nive-
les de voltaje de alimentación y de tierra en cada CI que parezca operar en forma
incorrecta.
FIGURA 4-40 Ejemplo
4-27.
Z1-1
Z1-2
Z1-3
Z1-4
Z1-5
Z1-6
Z2-3
Z2-2
Z2-1
Pulsando
ALTO
Pulsando
BAJO
Pulsando
BAJO
Pulsando
Indeterminado
Indeterminado
Terminal Condición
X
Todos
los CIs
son CMOS
Z1: 74HC08
Z2: 74HC02
1
2
3
6
1
2
4
5
A
B
C
D
Z1
Z1
3
Z2
SECCIÓN 4-12/FALLAS EXTERNAS 167
168 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
Los CIs son TTL
Z1: 74LS86
Z2: 74LS00
8
Y
6 10
9
11
Z2
Z2
+5 V
12
13
14
3
4
5
7
X
+5 V
14
7
1
2
A
B
C
Z2
Z1
Z1-1 BAJO
Z1-2 BAJO
Z1-3 ALTO
Z2-4 BAJO
Z2-5 ALTO
Z2-6,10 ALTO
Z2-13 ALTO
Z2-12 ALTO
Z2-9,11 BAJO
Z2-8 ALTO
Terminal Condición
FIGURA 4-41 Ejemplo
4-28.
PREGUNTAS DE REPASO
EJEMPLO 4-28
Carga de salida
Cuando un CI digital tiene su salida conectada a demasiadas entradas de un CI, se
excede el valor nominal de su corriente de salida y el voltaje de salida puede caer
dentro del intervalo indeterminado. A este efecto se le conoce como cargar la señal
de salida (en realidad es sobrecargar la señal de salida) y, por lo general, es el resul-
tado de un mal diseño o de una conexión incorrecta.
1. ¿Cuáles son los tipos más comunes de fallas externas?
2. Liste algunas de las causas de circuitos abiertos en la ruta de la señal.
3. ¿Qué síntomas ocasiona una fuente de alimentación defectuosa?
4. ¿Cómo podría afectar la carga a un nivel de voltaje de salida de un CI?
4-13 EJEMPLO PRÁCTICO DE DIAGNÓSTICO DE FALLAS
El siguiente ejemplo ilustrará los procesos analíticos involucrados en el diagnóstico
de fallas en los circuitos digitales. Aunque el ejemplo es un circuito lógico combi-
nacional bastante simple, el razonamiento y los procedimientos de diagnóstico de
fallas pueden aplicarse a los circuitos digitales más complejos que encontraremos
en los siguientes capítulos.
Considere el circuito de la figura 4-41. Se supone que la salida Y cambiará a ALTO
en cualquiera de las siguientes condiciones:
1. A  1, B  0 sin importar el nivel en C
2. A  0, B  1, C  1
Tal vez desee verificar estos resultados por su cuenta.
Cuando se prueba el circuito, el técnico observa que la salida Y cambia a ALTO
cada vez que A está en ALTO o que C está en ALTO, sin importar el nivel en B. Enton-
ces toma mediciones con la sonda lógica para la condición en la que A  B  0, C  1
y obtiene las indicaciones registradas en la figura 4-41.
Examine los niveles registrados y liste las posibles causas del mal funciona-
miento. Después desarrolle un procedimiento paso a paso para determinar la falla
exacta.
Solución
Todas las salidas de la compuerta NAND son correctas para los niveles presentes en
sus entradas. Sin embargo, la compuerta XOR debería producir un nivel BAJO en
la terminal 3 de salida, ya que dos de sus entradas se encuentran en el mismo nivel
BAJO. Parece que Z1-3 se queda en ALTO, aún y cuando sus entradas deberían pro-
ducir un nivel BAJO. Hay varias causas posibles de esto:
1. Una falla en un componente interno en Z1 que evite que su salida cambie a
BAJO.
2. Un corto externo con VCC desde cualquier punto a lo largo de los conductores
conectados al nodo X (sombreado en el diagrama de la figura).
3. La terminal 3 de Z1 en corto interno con VCC.
4. La terminal 5 de Z2 en corto interno con VCC.
5. La terminal 13 de Z2 en corto interno con VCC.
Todas estas posibilidades (excepto la primera) pondrán en corto directo el nodo X (y
todas las terminales del CI que estén conectadas a él) con VCC.
El siguiente procedimiento puede usarse para aislar la falla. Este procedimien-
to no es el único método que puede utilizarse y, como dijimos antes, el verdadero
procedimiento de diagnóstico de fallas que utiliza un técnico es muy dependiente
del equipo de prueba que tenga disponible.
1. Compruebe los niveles de VCC y de tierra en las terminales apropiadas de Z1.
Aunque es muy poco probable que la ausencia de cualquiera de estas dos seña-
les pueda hacer que Z1-3 se quede en ALTO, es conveniente realizar esta com-
probación en cualquier CI que esté produciendo una salida incorrecta.
2. Desconecte la alimentación del circuito y utilice un óhmetro para comprobar
si hay un corto (resistencia menor de 1 Ω) entre el nodo X y cualquier punto
conectado a VCC (tal como Z1-14 o Z2-14). Si no se indica un corto, podemos
eliminar las últimas cuatro posibilidades en nuestra lista. Esto significa que es
muy probable que Z1 tenga una falla interna y deba sustituirse.
3. Si el paso 2 muestra que hay un corto del nodo X a VCC, realice un examen visual
detallado de la tarjeta del circuito y busque puentes de soldadura, lengüetas
de cobre sin desbastar, alambres sin aislamiento que se toquen unos con otros,
y cualquier otra causa posible de un corto externo con VCC. Un punto probable
para un puente de soldadura sería entre las terminales adyacentes 13 y 14 de
Z2. La terminal 14 se conecta a VCC y la 13 al nodo X. Si se encuentra un corto
externo, elimínelo y realice una comprobación con un óhmetro para verificar
que el nodo X ya no esté en corto con VCC.
4. Si el paso 3 no revela un corto externo, las tres posibilidades que quedan son
cortos internos con VCC y Z1-3, Z2-13 o Z2-5. Una de éstas está poniendo en corto
el nodo X con VCC.
Para determinar cuál de estas terminales del CI es la culpable, debemos desco-
nectar cada una de ellas del nodo X una a la vez y debemos volver a comprobar si
hay un corto con VCC después de cada desconexión. Cuando se desconecte la termi-
nal que esté en corto interno con VCC, el nodo X ya no estará en corto con VCC.
SECCIÓN 4-13/EJEMPLO PRÁCTICO DE DIAGNÓSTICO DE FALLAS 169
170 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
El proceso de desconectar cada una de las terminales sospechosas del nodo X puede
ser fácil o difícil, dependiendo de la manera en que esté construido el circuito. Si
los CIs están en zócalos, todo lo que necesitamos hacer es extraer el CI de su zócalo,
doblar la terminal sospechosa y volver a insertar el CI en su zócalo. Si los CIs están
soldados en una tarjeta de circuitos impresos, tendrá que cortar la línea que está
conectada con la terminal y reparar la línea cortada cuando termine.
Aunque es bastante simple, el ejemplo 4-28 le muestra el tipo de razonamiento
que debe emplear un técnico de diagnóstico de fallas para aislar una falla. Usted
tendrá la oportunidad de comenzar a desarrollar sus propias habilidades de diag-
nóstico de fallas al trabajar en muchos problemas de final de capítulo que hemos
designado con una F para identificarlos como problemas de diagnóstico de fallas.
4-14 DISPOSITIVOS LÓGICOS PROGRAMABLES*
En las secciones anteriores vimos un poco acerca de las clases de CIs conocidas
como dispositivos lógicos programables. En el capítulo 3 presentamos el concepto de
describir la operación de un circuito mediante el uso de un lenguaje de descripción
de hardware. En esta sección exploraremos aún más estos temas y nos prepararemos
para utilizar las herramientas implicadas en el desarrollo y la implementación de
sistemas digitales mediante el uso de PLDs. Desde luego que es imposible com-
prender todos los detalles complejos de cómo funciona un PLD antes de abarcar
los fundamentos de los circuitos digitales. A medida que examinemos nuevos con-
ceptos fundamentales, expandiremos nuestro conocimiento sobre los PLDs y los
métodos de programación. Presentaremos este material de tal forma que cualquiera
que no esté interesado en los PLDs pueda omitir sin problemas estas secciones, sin
perder la continuidad en la cobertura de los principios básicos.
Vamos a repasar el proceso que tratamos antes, en relación con el diseño de
los circuitos digitales combinacionales. Los dispositivos de entrada se identifican y
se les asigna un nombre algebraico tal como A, B, C o CARGA, DESPLAZAMIENTO,
RELOJ. De igual forma, los dispositivos de salida reciben nombres tales como X, Z
o SALIDA_RELOJ, SALIDA_DESPLAZAMIENTO. Después se crea una tabla de ver-
dad que lista todas las posibles combinaciones de entradas e identifica el estado
requerido de las salidas bajo cada condición de entrada. La tabla de verdad es una
manera de describir la forma en que va a operar el circuito. Otra manera de descri-
bir la operación del circuito es mediante una expresión booleana. A partir de este
punto, el diseñador debe encontrar la relación algebraica más simple y seleccionar
CIs digitales que puedan alambrarse en conjunto para implementar el circuito. Tal
vez usted haya experimentado que estos últimos pasos son los más tediosos, los que
consumen más tiempo y los que están más propensos a errores.
Los dispositivos lógicos programables permiten automatizar la mayoría de estos
tediosos pasos mediante una computadora y software de desarrollo para PLDs. El uso
de la lógica programable mejora la eficiencia del proceso de diseño y desarrollo.
En consecuencia, la mayoría de los sistemas digitales modernos se implementan de
esta forma. El trabajo del diseñador de circuitos es identificar entradas y salidas,
especificar la relación lógica de la manera más conveniente y seleccionar un dispo-
sitivo programable que sea capaz de implementar el circuito al costo más bajo. El
concepto detrás de los dispositivos lógicos programables es simple: poner muchas
compuertas lógicas en un solo CI y controlar la interconexión de estas compuertas
mediante electrónica.
Hardware de un PLD
En el capítulo 3 vimos que muchos circuitos digitales de la actualidad se implemen-
tan mediante el uso de dispositivos lógicos programables (PLDs). Estos dispositi-
vos se configuran en forma electrónica y sus circuitos internos están “alambrados”
* Se pueden omitir todas las secciones que tratan acerca de los PLDs sin perder la continuidad en el balan-
ce de los capítulos 1-12.
entre sí mediante electrónica, para formar un circuito lógico. Este alambrado pro-
gramable puede considerarse como miles de conexiones que están conectadas (1) o
desconectadas (0). Es muy tedioso tratar de configurar estos dispositivos en forma
manual, colocando 1s y 0s en una rejilla, por lo que la siguiente pregunta lógica
es: “¿Cómo controlamos la interconexión de compuertas en un PLD por medio de
electrónica?”
Un método común para conectar una de muchas señales que entran en una red
a una de muchas líneas de señal que salen de la red es mediante una matriz de con-
mutación. Consulte la figura 3-44, en donde se introdujo este concepto. Una matriz
es tan sólo una rejilla de conductores (alambres) ordenados en filas y columnas. Las
señales de entrada se conectan a las columnas de la matriz y las salidas se conec-
tan a las filas de la misma. En cada intersección de una fila y una columna hay un
interruptor que puede conectar por medios electrónicos esa fila con esa columna.
Los interruptores que conectan filas con columnas pueden ser interruptores mecá-
nicos, enlaces de fusibles, interruptores electromagnéticos (relevadores) o transis-
tores. Ésta es la estructura general que se utiliza en muchas aplicaciones, la cual
exploraremos con más detalle cuando estudiemos los dispositivos de memoria en el
capítulo 12.
Los PLDs también utilizan una matriz de conmutación, la cual se conoce común-
mente como arreglo programable. Al decidir cuáles intersecciones están conectadas
y cuáles no, podemos “programar” la forma en que las entradas se conectan a las
salidas del arreglo. En la figura 4-42 se utiliza un arreglo programable para selec-
cionar las entradas para cada compuerta AND. Observe que en esta simple matriz
podemos producir cualquier combinación de productos lógicos de las variables A, B
en cualquiera de las salidas de la compuerta AND. Una matriz o arreglo programa-
ble tal como la que se muestra en la figura también puede utilizarse para conectar
las salidas de la compuerta AND con compuertas OR. En el capítulo 13 veremos con
detalle todo lo relacionado con varias arquitecturas de los PLDs.
Programación de un PLD
Existen dos maneras de “programar” un CI de PLD. Programar significa realizar
las conexiones reales en el arreglo. En otras palabras, significa determinar cuáles
A
Producto 1
1
2
B
1 2 3 4
B B A A
Producto 2
3
4
Producto 3
5
6
Producto 4
7
8
Conductores de las columnas
Conductores
de las filas
FIGURA 4-42 Un arreglo programable para seleccionar entradas como términos de
productos.
SECCIÓN 4-14/DISPOSITIVOS LÓGICOS PROGRAMABLES 171
172 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
de esas conexiones se supone deben estar abiertas (0) y cuáles se supone deben
estar cerradas (1). El primer método implica remover el chip de CI del PLD de su
tarjeta de circuito. Después el chip se coloca en un dispositivo especial conocido
como programador, el cual se muestra en la figura 4-43. La mayoría de los progra-
madores modernos se conectan a una computadora personal que ejecuta software
que contiene bibliotecas de información acerca de los diversos tipos de dispositivos
programables disponibles.
El software de programación se invoca (se llama y se ejecuta) en la PC para
establecer la comunicación con el programador. Este software permite al usuario
configurar el programador para el tipo de dispositivo que se va a programar, com-
probar si el dispositivo está en blanco, leer el estado de cualquier conexión progra-
mable en el dispositivo y proveer las instrucciones para que el usuario programe un
chip. En última instancia, la pieza se coloca en un zócalo especial que nos permite
insertar el chip y después sujetar los contactos en las terminales. A éste se le conoce
como zócalo de cero esfuerzo de inserción (ZIF). Diversos fabricantes ofrecen los
programadores universales que pueden manejar cualquier tipo de dispositivo progra-
mable.
Por fortuna, y a medida que las piezas programables empezaron a proliferar, los
fabricantes vieron la necesidad de estandarizar las asignaciones de terminales y
los métodos de programación. Como resultado, se formó el Consejo Común de Inge-
niería de Dispositivos Electrónicos (JEDEC). Uno de los resultados fue el estándar
3 de JEDEC, un formato para transferir datos de programación para PLDs, indepen-
diente del fabricante del PLD o del software de programación. También se estanda-
rizaron las asignaciones de terminales para varios encapsulados de CIs, con lo cual
los programadores universales se hicieron menos complicados. En consecuencia, los
dispositivos de programación pueden programar muchos tipos de PLDs. El software
que permite al diseñador especificar una configuración para un PLD sólo necesita
producir un archivo de salida que se adapte a los estándares de JEDEC. Después,
este archivo JEDEC puede cargarse en cualquier programador de PLDs compatible
con JEDEC que sea capaz de programar el tipo deseado de PLD.
El segundo método se conoce como programación en sistema (ISP). Como su
nombre implica, el chip no necesita extraerse de su circuito para su programación.
El Grupo Común de Acción de Pruebas (JTAG) desarrolló una interfaz estándar para
probar los CIs sin tener que conectar el equipo de prueba a todas las terminales del
CI.También permite la programación interna. Cuatro terminales en el CI se utilizan
como un portal para almacenar datos y recuperar información acerca de la condi-
ción interna del CI. Muchos CIs, incluyendo los PLDs y los microcontroladores, se
fabrican hoy en día para incluir la interfaz JTAG. Un cable de interfaz conecta las
cuatro terminales JTAG en el CI a un puerto de salida (como el puerto de la impre-
sora) de una computadora personal. El software que se ejecuta en la PC establece el
contacto con el CI y carga la información en el formato apropiado.
FIGURA 4-43 Un
sistema de desarrollo
de PLDs.
Cable
serie
Dispositivo de programación
(programador)
Software de
desarrollo
Zócalo
ZIF
Software de
programación
Software de desarrollo
Hasta ahora hemos analizado varios métodos para describir circuitos lógicos, inclu-
yendo la captura de diagramas esquemáticos, las ecuaciones lógicas, las tablas de
verdad y el HDL. También describimos los métodos fundamentales para almacenar
1s y 0s en un CI de PLD para conectar los circuitos lógicos de la manera deseada. El
mayor reto en cuanto a programar un PLD es realizar la conversión desde cualquier
forma de descripción hacia el arreglo de 1s y 0s. Por fortuna, esta tarea se logra con
bastante facilidad mediante una computadora que ejecute un software de desarro-
llo. El software al que haremos referencia y que estaremos utilizando en nuestros
ejemplos es propiedad de Altera, y permite al diseñador introducir la descripción
de un circuito en cualquiera de las distintas formas que hemos visto: archivos de dise-
ño gráfico (diagramas esquemáticos), AHDL y VHDL. También permite el uso de
otro HDL conocido comoVerilog, y la opción de describir el circuito mediante diagra-
mas de tiempos. Los bloques de circuitos descritos por cualquiera de estos métodos
también pueden “conectarse” entre sí para implementar un sistema digital mucho
más grande, como se muestra en la figura 4-44. Cualquier diagrama lógico que se
presente en este libro podrá redibujarse mediante el uso de las herramientas de
introducción de diagramas esquemáticos en el software Altera para crear un archivo
de diseño gráfico. En este libro no nos enfocaremos en la introducción mediante el
diseño gráfico, ya que es bastante sencillo obtener estas habilidades en el laborato-
rio. Enfocaremos nuestros ejemplos en los métodos que nos permiten utilizar el
HDL como un medio alternativo para describir un circuito. Para obtener más infor-
mación sobre el software de Altera, vea el CD que se incluye en este libro y los
manuales de usuario del sitio Web de Altera (http://www.altera.com).
A este concepto de utilizar bloques de construcción de circuitos se le conoce
como diseño jerárquico. Pueden definirse circuitos lógicos pequeños y útiles de la
manera que sea más conveniente (gráfico, HDL, diagrama de tiempos, etc.) y des-
pués se pueden combinar con otros circuitos para formar una selección extensa de
un proyecto. Las secciones pueden combinarse y conectarse con otras secciones para
formar el sistema completo. La figura 4-45 muestra la estructura jerárquica de un
reproductor de CDs mediante el uso de un diagrama de bloques. El cuadro exterior
encierra a todo el sistema. Las líneas punteadas identifican cada una de las subsec-
ciones principales y cada subsección contiene circuitos individuales. Aunque no se
muestra en este diagrama, cada circuito puede estar compuesto de bloques de cons-
FIGURA 4-44
Combinación de los
bloques desarrollados
mediante el uso de
distintos métodos
de descripción. Entradas
del sistema
Bloque esquemático
Bloque de sincronización
Bloque de VHDL
ENTIDAD
.........
ARQUITECTURA
Bloque de AHDL
SUBDISEÑO
INICIO
FIN
Señales
intermedias
Salidas
del sistema
SECCIÓN 4-14/DISPOSITIVOS LÓGICOS PROGRAMABLES 173
174 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
trucción más pequeños de circuitos digitales comunes. El software de desarrollo de
Altera hace que este tipo de diseño y desarrollo modular y jerárquico sea fácil
de lograr.
Proceso de diseño y desarrollo
En la figura 4-46 se muestra otra forma en la que podríamos ver la jerarquía de un
sistema como el reproductor de CDs que acabamos de describir. El nivel superior
representa a todo el sistema completo. Está compuesto de tres subsecciones, cada
una de las cuales está a su vez compuesta de los circuitos más pequeños que se
muestran. Observe que este diagrama no muestra cómo fluyen las señales en todo el
sistema, sino que identifica con claridad los diversos niveles de la estructura jerár-
quica del proyecto.
Este tipo de diagrama condujo al nombre de uno de los métodos más comunes
de diseño: arriba-abajo. Con este enfoque de diseño se comienza con la descripción
general de todo el sistema, como muestra el cuadro superior de la figura 4-46. Des-
pués se definen varias subsecciones que conformarán el sistema. Las subsecciones
FIGURA 4-45 Diagrama de bloques de un reproductor de CDs.
Lazo de control
de posición
Sección de
control del
sistema
Controles del usuario
Decodificador
de pistas
Lazo de control
de la velocidad
del disco
Control
del motor
Decodificación de
trenes de pulsos
Detección
de saltos
Pantalla
Filtro/amplificador
D/A
Filtro digital
Memoria
de saltos
Corrección de
errores de
paridad
Sección del
eje de la unidad
Sección de rastreo del láser
Sección de audio
M
Motor
Detector
láser
Motor de
control
del eje
se refinan aún más en circuitos individuales conectados entre sí. Cada uno de estos
niveles jerárquicos tiene definidas las entradas, las salidas y su comportamiento.
Cada nivel puede probarse en forma individual, antes de conectarlo a los demás.
Después de definir los bloques de arriba-abajo, el sistema se construye desde
abajo hacia arriba. Cada bloque en el diseño de este sistema tiene un archivo de
diseño que lo describe. Para diseñar los bloques de los niveles se abre un archivo
de diseño y se escribe una descripción de su operación. Después el bloque diseñado
se compila mediante el uso de las herramientas de desarrollo. El proceso de compi-
lación determina si usted cometió errores en su sintaxis. La computadora no podrá
traducir su descripción en la forma apropiada sino hasta que la sintaxis esté correc-
ta. Una vez que se haya compilado sin errores de sintaxis, deberá probarse para ver
si opera en forma correcta. Los sistemas de desarrollo ofrecen programas simulado-
res que se ejecutan en la PC y simulan la manera en que su circuito responde a las
entradas. Un simulador es un programa de computadora que calcula los estados lógi-
cos de salida correctos, con base en una descripción del circuito lógico y las entradas
actuales. Se desarrolla un conjunto de entradas hipotéticas y sus correspondientes
salidas correctas, las cuales demostrarán que el bloque funciona de la manera espe-
rada. A menudo a estas entradas hipotéticas se les llama vectores de prueba. Los
procedimientos detallados de prueba durante la simulación incrementan en forma
considerable la probabilidad de que el sistema final funcione de manera confiable.
La figura 4-47 muestra el archivo de simulación para el circuito descrito en la figura
3-13(a) del capítulo 3. Las entradas a, b y c se introdujeron como vectores de prueba
y la simulación produjo la salida y.
Cuando el diseñador está satisfecho de que el diseño funciona, éste puede veri-
ficarse mediante la programación de un chip y la prueba. Para un PLD complejo,
el diseñador puede dejar que el sistema de desarrollo asigne terminales y después
se distribuye la tarjeta del circuito final de manera acorde, o puede especificar las
Lazo de
control de
la velocidad
del disco
Decodificación
de pistas
Sección del eje de la unidad
Control de
posición
Sección de rastreo del láser
Control
del motor
Detector
de saltos
Decodificador
de tren de
pulsos
Sistema de CD
Sección de audio
Memoria
de saltos
Filtro
amplificador
Filtro
digital
D/A
Corrección
de error de
paridad
FIGURA 4-46 Un diagrama de jerarquía organizacional.
Nombre: Valor: 1.0 ms 2.0 ms 3.0 ms 4.0 ms 5.0 ms 6.0 ms 7.0 ms 8.0 ms 9.0 ms 10 ms
c 0
b 0
a 0
y 0
Ref: 0.0 ns
0.0 ns
Tiempo: 0.0 ns Intervalo: 0.0 ns
FIGURA 4-47 Una simulación de sincronización de un circuito descrito en HDL.
SECCIÓN 4-14/DISPOSITIVOS LÓGICOS PROGRAMABLES 175
176 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
PREGUNTAS DE REPASO
terminales para cada señal mediante el uso de las características del software. Si
el compilador asigna las terminales, las asignaciones se pueden encontrar en el
archivo de reporte o en el archivo de distribución de terminales, el cual proporciona
muchos detalles acerca de la implementación del diseño. Si el diseñador especifica
las terminales, es importante conocer las restricciones y limitaciones de la arquitec-
tura del chip. En el capítulo 13 cubriremos estos detalles. El diagrama de flujo de la
figura 4-48 sintetiza el proceso de diseño para desarrollar cada bloque.
Después de probar cada uno de los circuitos en una subsección pueden combi-
narse todos y se puede probar la subsección siguiendo el mismo proceso utilizado
para los circuitos pequeños. Después se combinan las subsecciones y se prueba el
sistema. Este método se presta muy bien para un típico entorno de proyecto, en
donde un equipo de personas trabajan en conjunto y cada uno es responsable de sus
propios circuitos y secciones que al final se reunirán para conformar el sistema.
1. ¿Qué es lo que se “programa” en un PLD?
2. ¿Qué bits (columna, fila) en la figura 4-42 deben conectarse para hacer que el
Producto 1  AB?
3. ¿Qué bits (columna, fila) en la figura 4-42 deben conectarse para hacer que el
Producto 3  AB?
FIGURA 4-48
Diagrama de flujo del
ciclo de desarrollo de un
PLD.
Identificar
error en diseño
Y
Simular
N
Crear archivo de salida
N
Programar PLD
Prueba en circuito
Y
LISTO
¿Funciona?
¿Errores?
¿Problemas?
Editar archivo
de diseño
Y
Diagnóstico de fallas
N
Crear archivo de diseño
Compilar
Diseño
INICIO
EJEMPLO 4-29
TABLA 4-8
Designación de
sistemas numéricos
en HDL.
Patrón Equivalente
Sistema numérico AHDL VHDL de bits decimal
Binario B”101” B”101” 101 5
Hexadecimal H”101” X”101” 100000001 257
Decimal 101 101 1100101 101
SECCIÓN 4-15/REPRESENTACIÓN DE DATOS EN HDL 177
4-15 REPRESENTACIÓN DE DATOS EN HDL
Los datos numéricos pueden representarse de varias formas. Hemos estudiado el
uso del sistema numérico hexadecimal como una forma conveniente de representar
patrones de bits. Por naturaleza preferimos usar el sistema numérico decimal para
los datos numéricos, pero las computadoras y los sistemas digitales sólo pueden
operar con información binaria, como vimos en capítulos anteriores. Cuando escri-
bimos en HDL, a menudo necesitamos utilizar diversos formatos numéricos, y la
computadora debe ser capaz de comprender cuál sistema numérico estamos usando.
Hasta ahora, en este libro, hemos utilizado un subíndice para indicar el sistema
numérico. Por ejemplo, 1012 es binario, 10116 es hexadecimal y 10110 es decimal.
Cada lenguaje de programación y el HDL tienen su propia manera única de identi-
ficar los diversos sistemas numéricos; por lo general, esto se hace mediante un pre-
fijo para indicar el sistema numérico. En la mayoría de los lenguajes un número sin
prefijo se considera como decimal. Cuando leemos una de estas designaciones numé-
ricas, debemos considerarla como un símbolo que representa a un patrón binario de
bits. Estos valores numéricos se conocen como escalares o literales. La tabla 4-8 sin-
tetiza los métodos para especificar valores en binario, hexadecimal y decimal para
AHDL y VHDL.
Exprese el valor numérico del siguiente patrón de bits en binario, hexadecimal y
decimal mediante el uso de la notación de AHDL y VHDL:
11001
Solución
El binario se designa de la misma forma en AHDL y en VHDL: B “11001”.
Si convertimos el binario en hexadecimal, tendremos 1916.
En AHDL: H “19”
En VHDL: X “19”
Si convertimos el binario en decimal, tendremos 2510.
El decimal se designa de la misma forma en AHDL y VHDL: 25.
Arreglos de bits/vectores de bits
En el capítulo 3 declaramos nombres para las entradas y las salidas de un circuito
lógico muy simple. Éstas se definieron como bits, o dígitos binarios individuales.
¿Qué pasaría si quisiéramos representar una entrada, salida o señal compuesta por
varios bits? En un HDL debemos definir el tipo de la señal y su intervalo de valores
válidos.
Para comprender los conceptos utilizados en los HDLs, consideremos primero
algunas convenciones para describir bits de palabras binarias en los sistemas digita-
les comunes. Suponga que tenemos un número de ocho bits que representa la tem-
peratura actual, y que el número está llegando a nuestro sistema digital a través de
un puerto de entrada que hemos identificado como P1, como se muestra en la figura
4-49. Podemos referirnos a los bits individuales de este puerto como el bit 0 de P1
para el bit menos significativo, y hasta el bit 7 de P1 para el bit más significativo.
178 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
EJEMPLO 4-30
EJEMPLO 4-31
También podemos describir este puerto diciendo que su nombre es P1 y sus bits
están numerados del 7 al 0. Los términos arreglo de bits y vector de bits se utilizan
con frecuencia para describir este tipo de estructura de datos. Lo que esto significa
es que la estructura de datos en general (puerto de ocho bits) tiene un nombre (P1)
y que cada elemento individual (bit) tiene un número de índice único (0-7) para des-
cribir la posición de cada bit (y tal vez su peso numérico) en la estructura general.
Los HDLs y los lenguajes de programación de computadora sacan provecho de esta
notación. Por ejemplo, el tercer bit a partir de la derecha se designa como P1[2] y
puede conectarse a otro bit de señal mediante el uso de un operador de asignación.
Suponga que hay un arreglo de ocho bits llamado P1 como se muestra en la figura
4-49, y que hay otro arreglo de cuatro bits llamado P5.
(a) Escriba la designación para el bit más significativo de P1.
(b) Escriba la designación para el bit menos significativo de P5.
(c) Escriba una expresión que haga que el bit menos significativo de P5 controle el
bit más significativo de P1.
Solución
(a) El nombre del puerto es P1 y el bit más significativo es el bit 7. La designación
apropiada para el bit 7 de P1 es P1[7].
(b) El nombre del puerto es P5 y el bit menos significativo es el bit 0. La designa-
ción apropiada para el bit 0 de P5 es P5[0].
(c) La señal controladora se coloca en el lado derecho del operador de asignación y
la señal controlada se coloca a la izquierda: P1[7]  P5[0];.
DECLARACIÓN DE ARREGLOS DE BITS EN AHDL
En AHDL, el puerto p1 de la figura 4-49 se define como un puerto de entrada de ocho
bits y para hacer referencia a el valor en este puerto se puede utilizar cualquier sis-
tema numérico tal como hexadecimal, binario, decimal, etc. La sintaxis para AHDL
utiliza un nombre para el vector de bits, seguido por el intervalo de las designacio-
nes de los índices, las cuales van encerradas entre corchetes. Esta declaración se
incluye en la sección SUBDESIGN. Por ejemplo, para declarar un puerto de entrada
de ocho bits llamado p1, escribiríamos lo siguiente:
p1 [7..0] : INPUT; define un puerto de entrada de 8 bits
Declare una entrada de cuatro bits llamada teclado mediante el uso de AHDL.
Solución
teclado [3..0] : INPUT;
FIGURA 4-49
Notación de arreglo de
bits.
Convertidor A/D
(MSB) (LSB)
P1[7] P1[6] P1[5] P1[4] P1[3] P1[2] P1[1] P1[0]
Puerto de
entrada P1
A
H
D
L
EJEMPLO 4-32
Las variables intermedias también pueden declararse como un arreglo de bits.
Al igual que los bits individuales, se declaran justo después de las declaraciones de
E/S en SUBDESIGN. Como ejemplo, el puerto de temperatura de ocho bits llamado
p1 puede asignarse (conectarse) a un nodo llamado temp, de la siguiente manera:
VARIABLE temp [7..0] :NODE;
BEGIN
temp[]  p1[];
END;
Observe que los datos se aplican al puerto de entrada p1 y que está controlando los
alambres de la señal llamada temp. Podemos considerar el término a la derecha del
signo de igual como el origen de los datos, y el término a la izquierda como la desig-
nación. Los corchetes vacíos [ ] indican que cada uno de los bits correspondientes en
los dos arreglos están conectados.También pueden “conectarse” bits individuales si
se especifican los bits dentro de los corchetes. Por ejemplo, para conectar sólo el bit
menos significativo de p1 con el LSB de temp, la instrucción sería temp[0]  p1[0];.
DECLARACIONES DEVECTORES DE BITS ENVHDL
En VHDL, el puerto p1 de la figura 4-49 se define como un puerto de entrada de
ocho bits y sólo se puede hacer referencia al valor de este puerto mediante el uso
de literales binarias. La sintaxis paraVHDL utiliza un nombre para el vector de bits,
seguido del modo (:IN), el tipo (BIT_VECTOR) y el intervalo de las designaciones
de los índices, que van encerradas entre paréntesis. Esta declaración se incluye en
la sección ENTITY. Por ejemplo, para declarar un puerto de entrada de ocho bits
llamado p1, escribiríamos lo siguiente:
PORT (p1 : IN BIT VECTOR (7 DOWNTO 0);
Declare una entrada de cuatro bits llamada teclado mediante el uso de VHDL.
Solución
PORT(teclado : IN BIT VECTOR (3 DOWNTO 0);
También pueden declararse señales intermedias como un arreglo de bits. Al igual
que los bits individuales, se declaran justo dentro de la definición ARCHITECTU-
RE. Como ejemplo, la temperatura de ocho bits en el puerto p1 puede asignarse
(conectarse) a una señal llamada temp, como se muestra a continuación:
SIGNAL temp : BIT VECTOR (7 DOWNTO 0);
BEGIN
temp 5 p1;
END;
Observe que los datos se aplican al puerto de entrada p1 y que está controlando los
alambres de la señal llamada temp. No se especifican elementos en el vector de bits,
lo cual significa que todos los bits están conectados. También pueden “conectarse”
bits individuales mediante el uso de asignaciones de señales y especificando los
números de los bits entre paréntesis. Por ejemplo, para conectar sólo el bit menos
significativo de p1 con el LSB de temp, la instrucción sería temp(0)   p1(0);.
V
H
D
L
SECCIÓN 4-15/REPRESENTACIÓN DE DATOS EN HDL 179
180 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
VHDL es muy específico con respecto a las definiciones de cada tipo de datos.
El tipo “bit_vector” describe a un arreglo de bits individuales. Esto se interpreta de
manera distinta que un número binario de ocho bits (llamado cantidad escalar), el
cual tiene el tipo integer. Por desgracia,VHDL no nos permite asignar un valor entero
a una señal BIT_VECTOR de forma directa. Los datos pueden representarse median-
te cualquiera de los tipos que se muestran en la figura 4-9, pero las asignaciones de
datos y demás operaciones deben realizarse entre objetos del mismo tipo. Por ejem-
plo, el compilador no le permitirá recibir un número de un teclado declarado como
entero y conectarlo a cuatro LEDs que estén declarados como salidas BIT_VECTOR.
En la tabla 4-9 bajo Posibles valores podrá observar que los objetos individuales de
datos BIT y STD_LOGIC (por ejemplo: señales, variables, entradas y salidas) se desig-
nan mediante comillas, mientras que los valores asignados a los tipos BIT_VECTOR y
STD_LOGIC_VECTOR son cadenas de valores de bits válidos encerradas entre comi-
llas dobles.
VHDL también ofrece ciertos tipos de datos estandarizados que se necesitan al
utilizar funciones lógicas contenidas en las bibliotecas. Como habrá imaginado, las
bibliotecas son simples colecciones de pequeñas piezas de código deVHDL, las cua-
les puede usar en sus descripciones de hardware sin necesidad de empezar desde
cero. A menudo estas bibliotecas ofrecen funciones de uso común conocidas como
macrofunciones, al igual que muchos de los dispositivos TTL estándar que se des-
criben en este libro. En vez de escribir la nueva descripción de un dispositivo TTL
conocido, podemos tan sólo sacar su macrofunción de la biblioteca y utilizarla en
nuestro sistema. Desde luego que necesita que las señales entren y salgan de estas
macrofunciones; además los tipos de las señales en su código deben concordar con
los tipos en las funciones (que alguien más escribió). Esto significa que todos deben
utilizar los mismos tipos de datos estándar.
Cuando el VHDL se estandarizó a través del IEEE, se crearon muchos tipos de
datos a la vez. Lo dos que utilizaremos en este libro son STD_LOGIC, que es equi-
valente al tipo BIT, y STD_LOGIC_VECTOR, que es equivalente a BIT_VECTOR.
Como podrá recordar, el tipo BIT sólo puede tener los valores ‘0’ y ‘1’. Los tipos
lógicos estándar vienen definidos en la biblioteca IEEE y tienen un intervalo más
amplio de valores posibles que sus contrapartes integradas en la biblioteca. Los
posibles valores para un tipo STD_LOGIC o para cualquier elemento en un STD_
LOGIC_VECTOR se muestran en la tabla 4-10. Los nombres de estas categorías ten-
drán mucho más sentido una vez que estudiemos las características de los circuitos
lógicos en el capítulo 8. Por ahora mostraremos ejemplos con el uso de los valores
‘1’ y ‘0’ solamente.
Tipo de datos Declaración de ejemplo Posibles valores Uso
BIT y :OUT BIT; ‘0’ ‘1’ y  ‘0’;
STD LOGIC controlador: STD LOGIC ‘0’ ‘1’ ‘z’ ‘x’ ‘-‘ controlador  ‘z’;
BIT VECTOR datos bcd :BIT VECTOR “0101” “1001” digito  datos bcd;
(3 DOWNTO 0); “0000”
STD LOGIC VECTOR dbus :STD LOGIC VECTOR “0Z1X” IF rd  ‘0’ THEN
(3 DOWNTO 0); dbus  “zzzz”;
INTEGER SIGNAL z:INTEGER RANGE 32..2, 1, 0, 1, 2 . . . 31 IF z  5 THEN . . .
 32 TO 31;
TABLA 4-9 Tipos de datos comunes en VHDL.
PREGUNTAS DE REPASO 1. ¿Cómo declararía un arreglo de entrada de seis bits llamado botones_pulsar en
(a) AHDL o en (b) VHDL?
2. ¿Qué instrucción utilizaría para extraer el MSB del arreglo de la pregunta 1
y colocarlo en un puerto de salida de un solo bit llamado z? Use (a) AHDL o
(b) VHDL.
3. En VHDL, ¿cuál es el tipo estándar IEEE que es equivalente al tipo BIT?
4. En VHDL, ¿cuál es el tipo estándar IEEE que es equivalente al tipo BIT_VEC-
TOR?
4-16 TABLAS DE VERDAD MEDIANTE EL USO DE HDL
Ya hemos aprendido que una tabla de verdad es otra forma de expresar la opera-
ción de un bloque de circuitos. Relaciona la salida del circuito con cada una de las
posibles combinaciones de sus entradas. Como vimos en la sección 4-4, una tabla
de verdad es el punto inicial para que un diseñador defina la manera en que debe
operar el circuito. Después se deriva una expresión booleana de la tabla de verdad y
se simplifica mediante el uso de los mapas K o del álgebra booleana. Por último, el
circuito se implementa a partir de la ecuación booleana final. ¿No sería grandioso
si pudiéramos partir de la tabla de verdad y llegar en forma directa al circuito final,
sin todos esos pasos intermedios? Si utilizamos HDL para introducir la tabla de ver-
dad, podremos hacer justo eso.
TABLAS DEVERDAD MEDIANTE EL USO DE AHDL
El código de la figura 4-50 utiliza AHDL para implementar un circuito y utiliza una
tabla de verdad para describir su operación. La tabla de verdad para este diseño se
presentó en el ejemplo 4-7. El punto clave de este ejemplo es el uso de la palabra
clave TABLE en AHDL. Esta palabra permite al diseñador especificar la operación
del circuito, igual que como se llena una tabla de verdad. En la primera línea des-
pués de TABLE se listan las variables de entrada (a, b, c) de la misma forma como
se crearía un encabezado de columna en una tabla de verdad. Al incluir las tres
variables binarias entre paréntesis, indicamos al compilador que deseamos utilizar
estos tres bits como un grupo y que nos referiremos a ellos como si fueran un núme-
ro binario o un patrón de tres bits. Los valores específicos para este patrón de bits
se listan debajo del grupo y se les denomina literales binarias. El operador especial
(
) se utiliza en las tablas de verdad para separar las entradas de la salida (y).
TABLA 4-10
Valores de STD_LOGIC.
‘1’ 1 lógico (justo igual que el tipo BIT)
‘0’ 0 lógico (justo igual que el tipo BIT)
‘z’ Alta impedancia*
‘-‘ No importa (justo igual que como se utilizó en los mapas K)
‘U’ Sin inicializar
‘X’ Desconocido
‘W’ Desconocido débil
‘L’ ‘0’ débil
‘H’ ‘1’ débil
* En el capítulo 8 estudiaremos la lógica de tres estados.
A
H
D
L
SECCIÓN 4-16/TABLAS DE VERDAD MEDIANTE EL USO DE HDL 181
182 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
% Figura 4 7 en AHDL
Sistemas digitales 10a ed
Neal Widmer
MAYO 23, 2005 %
SUBDESIGN FIG4 50
(
a,b,c :INPUT; dene las entradas del bloque
y :OUTPUT; dene la salida del bloque
)
BEGIN
TABLE
(a,b,c)  y; encabezados de columna
(0,0,0)  0;
(0,0,1)  0;
(0,1,0)  0;
(0,1,1)  1;
(1,0,0)  0;
(1,0,1)  1;
(1,1,0)  1;
(1,1,1)  1;
END TABLE;
END;
FIGURA 4-50 Archivo
de diseño de AHDL para
la figura 4-7.
La instrucción TABLE en la figura 4-50 es para mostrar la relación entre el
código de HDL y una tabla de verdad. Una manera más común de representar los
encabezados de los datos de entrada es mediante el uso de un arreglo de bits para
representar el valor en a, b, c. Este método requiere que se declare el arreglo de bits
en la línea antes de BEGIN, como se muestra a continuación:
VARIABLE bits ent[2..0] :NODE;
Justo antes de la palabra clave TABLE, los bits de entrada pueden asignarse al arre-
glo bits_ent[ ]:
bits ent[ ]  (a, b, c);
Al proceso de agrupar tres bits independientes en un orden como el anterior se
le conoce como concatenación; este proceso se lleva a cabo con frecuencia para
conectar bits individuales con un arreglo de bits. En este caso, el encabezado de la
tabla en los conjuntos de bits de entrada puede representarse mediante bits_ent[ ].
Observe que, a medida que listamos las posibles combinaciones de las entradas,
tenemos varias opciones. Podemos crear un grupo de 1s y 0s entre paréntesis, como
se muestra en la figura 4-50, o podemos representar el mismo patrón de bits utili-
zando el número equivalente en binario, hexadecimal o decimal. El diseñador es el
que decidirá cuál formato es el más apropiado, dependiendo de lo que representen
las variables de entrada.
TABLAS DEVERDAD MEDIANTE EL USO DEVHDL:
ASIGNACIÓN DE SEÑAL SELECCIONADA
El código de la figura 4-51 utilizaVHDL para implementar un circuito mediante una
asignación de señal seleccionada para describir su operación. Esto le permite al
diseñador especificar la operación del circuito, de la misma forma como se llena una
tabla de verdad. En el ejemplo 4-7 se presentó la tabla de verdad para este diseño. El
objetivo principal de este ejemplo es el uso de la instrucción WITH nombre_señal
V
H
D
L
Figura 4 7 en VHDL
Sistemas digitales 10a ed
Neal Widmer
MAYO 23, 2005
ENTITY fig4 51 IS
PORT(
a,b,c :IN BIT; declara bits de entrada individuales
y :OUT BIT);
END fig4 51;
ARCHITECTURE verdad OF g4 51 IS
SIGNAL bits ent : BIT VECTOR(2 DOWNTO 0);
BEGIN
bits ent 5 a  b  c; concatena los bits de entrada en bit vector
WITH bits ent SELECT
y  '0' WHEN 000, Tabla de verdad
'0' WHEN 001,
'0' WHEN 010,
'1' WHEN 011,
'0' WHEN 100,
'1' WHEN 101,
'1' WHEN 110,
'1' WHEN 111;
END verdad;
FIGURA 4-51 Archivo de diseño de VHDL para la figura 4-7.
EJEMPLO 4-33
SELECT en VHDL. Uno de los objetivos secundarios es mostrar cómo se colocan los
datos en un formato que pueda ser utilizado de manera conveniente con la asigna-
ción de la señal seleccionada. Observe que las entradas están definidas en la decla-
ración ENTITY como tres bits independientes a, b y c. Nada en esta declaración
hace que uno de estos bits sea más significativo que los demás. El orden en el que se
listan no importa. Queremos comparar el valor actual de estos bits con cada una de
las posibles combinaciones de entrada que podrían presentarse. Si trazáramos una
tabla de verdad, decidiríamos cuál bit colocar a la izquierda (MSB) y cuál a la dere-
cha (LSB). En VHDL esto se logra mediante la concatenación (conectar en orden)
de las variables de bit para formar un vector de bits. El operador de concatenación
es “”. Se declara una señal como BIT_VECTOR para recibir el conjunto ordenado
de bits de entrada y se utiliza para comparar el valor de entrada con las literales de
cadena encerradas entre comillas. A la salida (y) se le asigna () un valor de bit (‘0’
o ‘1’) cuando (WHEN) bits_ent contiene el valor que se lista entre comillas dobles.
VHDL es muy estricto en cuanto a la forma en que nos permite asignar y com-
parar objetos tales como señales, variables, constantes y literales. La salida y es
un BIT, por lo que se le debe asignar un valor de ‘0’ o de ‘1’. La señal bits_ent es un
BIT_VECTOR de tres bits, por lo que debe compararse con un valor literal de cade-
na de tres bits. VHDL no permitirá que bits_ent (un BIT_VECTOR) se compare con
un número hexadecimal tal como X “5”, o con un número decimal tal como 3. Estas
cantidades escalares serían válidas para la asignación o comparación con enteros.
Declare tres señales en VHDL que sean bits individuales de nombre demasiado_
caliente, demasiado_frio y muy_bien. Combine (concatene) estos tres bits en una
señal de tres bits llamada estado_temp, en donde lo caliente estará a la izquierda y
lo frío a la derecha.
SECCIÓN 4-16/TABLAS DE VERDAD MEDIANTE EL USO DE HDL 183
184 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
PREGUNTAS DE REPASO
Solución
1. Declare primero las señales en la arquitectura (ARCHITECTURE).
SIGNAL demasiado caliente, demasiado frio, muy bien :BIT;
SIGNAL estado temp : BIT VECTOR (2 DOWNTO 0);
2. Escriba instrucciones de asignación concurrentes entre BEGIN y END.
estado temp 5 demasiado caliente  muy bien  demasiado frio;
1. ¿Cómo concatenaría los tres bits x, y y z en un arreglo de tres bits llamado ome-
ga? Use AHDL o VHDL.
2. ¿Cómo se implementan las tablas de verdad en AHDL?
3. ¿Cómo se implementan las tablas de verdad en VHDL?
4-17 ESTRUCTURAS DE CONTROL DE DECISIONES EN HDL
En esta sección examinaremos métodos que nos permiten indicar al sistema digital
cómo realizar decisiones “lógicas”, en forma muy similar al proceso que utilizamos
para hacer decisiones en nuestra vida diaria. En el capítulo 3 vimos que las instruc-
ciones de asignación concurrentes se evalúan de tal forma que el orden en el que se
escriben no tiene efecto sobre el circuito que se está describiendo. Cuando utiliza-
mos estructuras de control de decisiones, el orden en el que hacemos las preguntas
sí es importante. Para resumir este concepto en los términos utilizados en la docu-
mentación del HDL, a las instrucciones que se pueden escribir en cualquier secuen-
cia se les llama concurrentes, y a las instrucciones que se evalúan en la secuencia
en la que se escriben se les llama secuenciales. La secuencia de las instrucciones
secuenciales afecta a la operación del circuito.
Los ejemplos que hemos visto hasta ahora implican el uso de varios bits indi-
viduales. Muchos sistemas digitales requieren entradas que representan un valor
numérico. Consulte de nuevo el ejemplo 4-8, en el cual el objetivo del circuito lógico
es monitorear el voltaje de la batería mediante un convertidor A/D. El valor digital
se representa mediante un número de cuatro bits que proviene del convertidor A/D
y que pasa al circuito lógico. Estas entradas no son variables binarias independien-
tes, sino cuatro dígitos binarios de un número que representa el voltaje de la bate-
ría. Necesitamos dar a estos datos el tipo correcto que nos permita utilizarlos como
un número.
IF/ELSE
Las tablas de verdad son estupendas para listar todas las posibles combinaciones
de variables independientes, pero hay mejores formas de manejar los datos numé-
ricos. Como ejemplo, cuando una persona parte hacia la escuela o su trabajo en la
mañana, debe realizar una decisión lógica para saber si se va a llevar o no un abrigo.
Supongamos que esta persona decide sobre esta cuestión basándose únicamente en
la temperatura actual. ¿Cuántos de nosotros razonaríamos de la siguiente manera?
Utilizaré un abrigo si la temperatura es 0.
Utilizaré un abrigo si la temperatura es 1.
Utilizaré un abrigo si la temperatura es 2….
Utilizaré un abrigo si la temperatura es 13.
No utilizaré un abrigo si la temperatura es 14.
No utilizaré un abrigo si la temperatura es 15.
No utilizaré un abrigo si la temperatura es 16….
No utilizaré un abrigo si la temperatura es 40.
Este método es similar a aquél en el que se utiliza la tabla de verdad para describir
la decisión. Para cada una de las posibles entradas, esta persona decide cuál debe
ser la salida. En realidad, lo que haría para decidirse sería lo siguiente:
Usaré un abrigo si la temperatura es menor de 14 grados.
En caso contrario, no utilizaré un abrigo.
Un HDL nos permite describir los circuitos lógicos mediante este tipo de razo-
namiento. Primero debemos describir las entradas como un número dentro de un
intervalo dado, y después podemos escribir instrucciones que decidan lo que se debe
hacer en las salidas con base en el valor del número entrante. Al igual que en los
HDLs, en la mayoría de los lenguajes de programación de computadoras estos tipos
de decisiones se llevan a cabo mediante el uso de una estructura de control IF/
THEN/ELSE. Cada vez que la decisión está entre realizar una acción o no realizarla,
se utiliza la instrucción IF/THEN. La palabra clave IF va seguida de una instrucción
que es verdadera o falsa. Si (IF) es verdadera, entonces (THEN) se hace lo que esté
especificado. En el caso en el que la instrucción sea falsa, no se realiza ninguna
acción. La figura 4-52(a) muestra en forma gráfica la manera como funciona esta
decisión. La figura de diamante representa la decisión que se está llevando a cabo
mediante la evaluación de la instrucción contenida dentro del diamante. Toda deci-
sión tiene dos posibles resultados: verdadero o falso. En este ejemplo, si la instruc-
ción es falsa no se realiza ninguna acción.
En algunos casos no sólo basta con decidir entre actuar y no actuar, sino que
debemos elegir entre dos acciones distintas. Por ejemplo, en nuestra analogía
sobre la decisión de usar un abrigo, si la persona ya tiene su abrigo puesto cuando
llegue a esta decisión, no se lo quitará. El uso de la lógica IF/THEN supone que de
inicio no está usando su abrigo.
Cuando las decisiones demandan dos posibles acciones, se utiliza la estructura de
control IF/THEN/ELSE como se muestra en la figura 4-52(b). Aquí se evalúa de nuevo
la instrucción como verdadera o falsa. La diferencia es que, cuando la instrucción es
falsa se realiza una acción distinta. Debe realizarse una de las dos acciones con esta
instrucción. Podemos describirla en forma verbal como, “SI (IF) la instrucción es
verdadera, ENTONCES (THEN) hay que hacer esto. EN CASO CONTRARIO (ELSE)
hay que hacer esto otro”. En nuestra analogía del abrigo esta estructura de control
funcionaría, sin importar que la persona haya traído puesto su abrigo o no desde un
principio.
En el ejemplo 4-8 se mostró un ejemplo simple de un circuito lógico que tiene
un valor numérico como entrada, el cual representa el voltaje de la batería de un
convertidor A/D. Las entradas A, B, C, D son en realidad dígitos binarios en un núme-
ro de 4 bits, en donde A es el MSB y D es el LSB. La figura 4-53 muestra el mismo cir-
FIGURA 4-52
Flujo lógico de las
instrucciones
(a) IF/THEN y
(b) IF/THEN/ELSE. ENTONCES
(THEN) hay
que ponerse
un abrigo
Hace
demasiado
frío afuera
(a)
FALSO
VERDADERO
ENTONCES
(THEN) hay
que ponerse
un abrigo
Hace
demasiado
frío afuera
(b)
VERDADERO
FALSO
En caso contrario
(ELSE), hay que
quitarse el abrigo
SECCIÓN 4-17/ESTRUCTURAS DE CONTROL DE DECISIONES EN HDL 185
186 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
FIGURA 4-53 Circuito
lógico similar al del
ejemplo 4-8.
FIGURA 4-54 Versión
en AHDL. SUBDESIGN FIG4 54
(
valor digital[3..0] :INPUT; dene las entradas del bloque
z :OUTPUT; dene la salida del bloque
)
BEGIN
IF valor digital[ ]  6 THEN
z  VCC; la salida es 1
ELSE z  GND; la salida es 0
END IF;
END;
cuito con las entradas etiquetadas en forma de un número de cuatro bits, de nombre
valor_digital. La relación entre los bits es la siguiente:
A valor_digital[3] bit 3 del valor digital (MSB)
B valor_digital[2] bit 2 del valor digital
C valor_digital[1] bit 1 del valor digital
D valor_digital[0] bit 0 del valor digital (LSB)
La entrada puede considerarse como un número decimal entre 0 y 15, si especi-
ficamos el tipo correcto de la variable de entrada.
IF/THEN/ELSE MEDIANTE EL USO DE AHDL
En AHDL, las entradas pueden especificarse como un número binario formado de
varios bits mediante la asignación de un nombre de variable, seguido de una lista
de las posiciones de los bits, como se muestra en la figura 4-54. El nombre es valor_digi-
tal y las posiciones de los bits varían desde 3 hasta 0. Observe lo simple que se vuel-
ve el código al utilizar este método junto con una instrucción IF/ELSE. La palabra
clave IF va seguida de una instrucción que hace referencia al valor completo de la
variable de entrada de cuatro bits y lo compara con el número 6. Desde luego que 6
es la forma decimal de una cantidad escalar y valor_digital[ ] representa en realidad
a un número binario. Como el compilador puede interpretar números en cualquier
sistema, crea un circuito lógico que compara el valor binario de valor_digital con el
número binario correspondiente al 6 decimal y decide si esta instrucción es verda-
dera o falsa. Si es verdadera, ENTONCES (THEN) se utiliza la siguiente instrucción
(z  VCC) para asignar un valor a z. Observe que en AHDL debemos usar VCC para
un 1 lógico y GND para un 0 lógico cuando asignamos un nivel lógico a un bit indi-
vidual. Cuando valor_digital es 6 o menos, va después de la instrucción que sigue de
ELSE (z  GND). La instrucción END IF termina la estructura de control.
Circuito lógico
Convertidor A/D
A
B
C
D
(MSB)
(LSB)
Valor_digital3
Valor_digital2 z
Valor_digital1
Valor_digital0
A
H
D
L
IF/THEN/ELSE MEDIANTE EL USO DEVHDL
En VHDL la cuestión importante es la declaración del tipo de entradas. (Consulte
la figura 4-55.) La entrada se trata como una variable individual llamada valor_digi-
tal. Como su tipo se declara como INTEGER, el compilador sabe que debe tratarla
como un número. Al especificar un intervalo de 0 a 15, el compilador sabe que es un
número de cuatro bits. Observe que RANGE no especifica el número de índice de
un vector de bits, sino los límites del valor numérico del entero. EnVHDL los enteros
se tratan de manera distinta a los arreglos de bits (BIT_VECTOR). Un entero puede
compararse con otros números mediante el uso de operadores de desigualdad. Un
BIT_VECTOR no puede usarse con operadores de desigualdad.
Para utilizar la estructura de control IF/THEN/ELSE, VHDL requiere que el
código se coloque dentro de un proceso (PROCESS). Las instrucciones que ocurren
dentro de un proceso son secuenciales, lo cual significa que el orden en el que se
escriben afecta a la operación del circuito. La palabra clave PROCESS va seguida de
una lista de variables, a la cual se le llama lista de sensibilidad, que es una lista
de variables a las cuales el código del proceso debe responder. Cada vez que valor_
digital cambia, hace que se vuelva a evaluar el código del proceso. Aún y cuando
sabemos que valor_digital es en realidad un número binario de cuatro bits, el com-
pilador lo evaluará como un número entre los valores decimales equivalentes de 0 y
15. Si (IF) la instrucción entre paréntesis es verdadera, entonces (THEN) se aplica
la siguiente instrucción (a z se le asigna el valor de 1 lógico). Si esta instrucción no
es verdadera, la lógica sigue la cláusula ELSE y asigna a z un valor de 0. La instruc-
ción END IF; termina la estructura de control y END PROCESS; termina la evaluación
de las instrucciones secuenciales.
ELSIF
A menudo tenemos que elegir de entre muchas posibles acciones, dependiendo de
la situación. La instrucción IF decide si se va a realizar o no un conjunto de acciones.
La instrucción IF/ELSE selecciona una de dos posibles acciones. Mediante la combi-
nación de las decisiones con IF y ELSE podemos crear una estructura de control que
V
H
D
L
FIGURA 4-55
Versión en VHDL. ENTITY fig4 55 IS
PORT( valor digital :IN INTEGER RANGE 0 TO 15; entrada de 4 bits
z :OUT BIT);
END fig4 55;
ARCHITECTURE decision OF g4 55 IS
BEGIN
PROCESS (valor digital)
BEGIN
IF (valor digital  6) THEN
z  '1';
ELSE
z  '0';
END IF;
END PROCESS ;
END decision;
SECCIÓN 4-17/ESTRUCTURAS DE CONTROL DE DECISIONES EN HDL 187
188 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
se conoce como ELSIF, la cual selecciona uno de muchos resultados posibles. En la
figura 4-56 se muestra la estructura de decisión en forma gráfica.
Observe que, a medida que se evalúa cada condición, se realiza una acción si
es verdadera o en caso contrario pasa a evaluar la siguiente condición. Cada acción
está asociada con una condición y no existe la probabilidad de seleccionar más de
una acción. Observe también que las condiciones que se utilizan para decidir la
acción apropiada pueden ser cualquier expresión que se evalúe como verdadera o
como falsa. Este hecho permite al diseñador utilizar los operadores de desigualdad
para seleccionar una acción con base en un intervalo de valores de entrada. Como
ejemplo de esta aplicación, consideremos el sistema de medición de temperatura
que utiliza un convertidor A/D, como se describe en la figura 4-57. Suponga que
deseamos indicar cuando la temperatura se encuentra en cierto Intervalo, al cual
denominaremos como Demasiado frío, Templado y Demasiado caliente.
La relación entre los valores digitales para la temperatura y las categorías es
Valores digitales Categoría
0000-1000 Demasiado frío
1001-1010 Templado
1011-1111 Demasiado caliente
FIGURA 4-56
Diagrama de flujo para
decisiones múltiples
en las que se utiliza
IF/ELSIF.
Acción 1
IF
V
F
Acción 4
ELSIF
V
F
Acción 5
Acción 2
ELSIF
V
F
Acción 3
ELSIF
V
F
FIGURA 4-57
Circuito indicador
de un intervalo de
temperatura.
Circuito lógico
Convertidor A/D Demasiado frío
Templado
Demasiado caliente
Valor digital
de cuatro bits
Temp
Podemos expresar el proceso de toma de decisiones para este circuito lógico de la
siguiente manera:
Si (IF) el valor digital es menor o igual a 8, entonces (THEN) hay que encender
sólo el indicador “Demasiado frío”.
En caso contrario, si (ELSE IF) el valor digital es mayor que 8 y (AND) menor
que 11, entonces (THEN) hay que encender sólo el indicador “Templado”.
En caso contrario (ELSE) hay que encender sólo el indicador “Demasiado
caliente”.
ELSIF MEDIANTE EL USO DE AHDL
El código de AHDL de la figura 4-58 define las entradas en forma de un número
binario de cuatro bits. Las salidas son tres bits individuales que controlan los tres
indicadores de Intervalo. En este ejemplo se utiliza una variable intermedia (estado),
la cual nos permite asignar un patrón de bits que representa las tres condiciones
de demasiado_frio, templado y demasiado_caliente. La sección secuencial del código
utiliza las instrucciones IF, ELSIF, ELSE para identificar el intervalo en el cual se
encuentra la temperatura y asigna a estado el patrón de bits correcto. En la última
instrucción, los bits de estado se conectan a los bits del puerto de salida real. Estos
bits están ordenados en un grupo que se relaciona con los patrones de bits asignados
a estado[ ]. Esto también podría haberse escrito mediante tres instrucciones concu-
rrentes: demasiado_frio  estado[2]; templado  estado[1]; demasiado_caliente 
estado[0];
ELSIF MEDIANTE EL USO DEVHDL
El código deVHDL en la figura 4-59 define las entradas como un entero de cuatro bits.
Las salidas son tres bits individuales que controlan los tres indicadores de Intervalo.
En este ejemplo se utiliza una señal intermedia (estado), la cual nos permite asignar
un patrón de bits que representa a las tres condiciones demasiado_frio, muy_bien
y demasiado_caliente. La sección de proceso del código utiliza las instrucciones IF,
ELSIF y ELSE para identificar el intervalo en el cual se encuentra la temperatura y
asigna a estado el patrón de bits correcto. En las últimas tres instrucciones, cada bit
de estado se conecta al bit del puerto de salida correspondiente.
A
H
D
L
FIGURA 4-58 Ejemplo de Intervalos de temperatura en AHDL mediante el uso de ELSIF.
SUBDESIGN fig4 58
(
valor digital[3..0] :INPUT; dene las entradas del bloque
demasiado frio, templado, demasiado caliente :OUTPUT; dene las salidas
)
VARIABLE
estado[2..0] :NODE; guarda el estado de demasiado frio, templado, demasiado caliente
BEGIN
IF valor digital[]  8 THEN estado[]  b100;
ELSIF valor digital[]  8 AND valor digital[]  11 THEN
estado[]  b010;
ELSE estado[]  b001;
END IF;
(demasiado frio, templado, demasiado caliente) 5 estado[ ]; actualiza los bits de
salida
END; V
H
D
L
SECCIÓN 4-17/ESTRUCTURAS DE CONTROL DE DECISIONES EN HDL 189
190 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
ENTITY fig4 59 IS
PORT(valor digital: IN INTEGER RANGE 0 TO 15; declara la entrada de 4 bits
demasiado frio, templado, demasiado caliente : OUT BIT);
END fig4 59 ;
ARCHITECTURE quetancaliente OF g4 59 IS
SIGNAL estado :BIT VECTOR (2 downto 0);
BEGIN
PROCESS (valor digital)
BEGIN
IF (valor digital 5 8) THEN estado 5 “100”;
ELSIF (valor digital  8 AND valor digital  11) THEN
estado  010;
ELSE estado  001;
END IF;
END PROCESS ;
demasiado frio  estado(2); asigna los bits de estado a la salida
templado  estado(1);
demasiado caliente  estado(0);
END quetancaliente;
FIGURA 4-59 Ejemplo de Intervalos de temperatura en VHDL mediante el uso de ELSIF.
CASE
Existe otra estructura de control que es útil para elegir acciones con base en las
condiciones actuales. Tiene varios nombres dependiendo del lenguaje de progra-
mación, pero casi siempre se utiliza la palabra CASE. Esta instrucción determina
el valor de una expresión u objeto y después analiza una lista de posibles valores
(casos) para la expresión u objeto que se está evaluando. Cada caso tiene una lista
de acciones que deben llevarse a cabo. Una instrucción CASE es distinta a una ins-
trucción IF/ELSIF debido a que un caso correlaciona un valor único de un objeto
con un conjunto de acciones. Recuerde que una instrucción IF/ELSIF correlaciona
un conjunto de acciones con una aseveración verdadera. Sólo puede haber una coin-
cidencia para una instrucción CASE, mientras que una instrucción IF/ELSIF puede
tener más de una, pero entonces (THEN) realizará solo la acción asociada con la
primera aseveración verdadera que evalúe.
Otro punto importante en los ejemplos que siguen a continuación es la nece-
sidad de combinar cierto número de variables independientes en un conjunto de
bits, al cual se le conoce como vector de bits. Recuerde que a esta acción de enlazar
varios bits en un orden específico se le conoce como concatenación y nos permite
considerar el patrón de bits como un grupo ordenado.
CASE MEDIANTE EL USO DE AHDL
El ejemplo de AHDL en la figura 4-60 muestra el uso de una instrucción CASE para
implementar el circuito de la figura 4-9 (vea también la tabla 4-3). Utiliza bits indi-
viduales como sus entradas. En la primera instrucción después de BEGIN, estos bits
se concatenan y se asignan a la variable intermedia llamada estado. La instrucción
CASE evalúa a la variable estado y busca el patrón de bits (que sigue después de
la palabra clave WHEN) que concuerde con el valor de estado. Después realiza la
acción descrita después del signo . En este ejemplo, sólo asigna un 0 lógico a
la salida para cada uno de los tres casos especificados. Los demás casos producen un 1
lógico en la salida.
A
H
D
L
FIGURA 4-61
Representación de la
figura 4-9 en VHDL.
ENTITY g4 61 IS
PORT( p, q, r :IN bit; declara 3 bits de entrada
s :OUT BIT);
END fig4 61;
ARCHITECTURE copia OF g4 61 IS
SIGNAL estado :BIT VECTOR (2 downto 0);
BEGIN
estado  p  q  r; enlaza los bits en orden.
PROCESS (estado)
BEGIN
CASE estado IS
WHEN 100  s  '0';
WHEN 101  s  '0';
WHEN 110  s  '0';
WHEN OTHERS  s  '1';
END CASE;
END PROCESS;
END copia;
SUBDESIGN fig4 60
(
p, q, r :INPUT; dene las entradas del bloque
s :OUTPUT; dene las salidas
)
VARIABLE
estado[2..0] :NODE;
BEGIN
estado[] (p, q, r); enlaza los bits de entrada en orden
CASE estado[] IS
WHEN b100  s  GND;
WHEN b101  s  GND;
WHEN b110  s  GND;
WHEN OTHERS  s  VCC;
END CASE;
END;
FIGURA 4-60
Representación de la
figura 4-9 en AHDL.
CASE MEDIANTE EL USO DEVHDL
El ejemplo deVHDL en la figura 4-61 demuestra el uso de la instrucción CASE para
implementar el circuito de la figura 4-9 (vea también la tabla 4-3). Utiliza bits indi-
viduales como entradas. En la primera instrucción después de BEGIN, estos bits se
concatenan y se asignan a la variable intermedia llamada estado mediante el uso del
operador . La instrucción CASE evalúa la variable estado y busca el patrón de bits
(que va después de la palabra clave WHEN) que concuerde con el valor de estado.
Después realiza la acción descrita después del signo . En este ejemplo simple,
sólo asigna un 0 lógico a la salida para cada uno de los tres casos especificados. Los
demás casos producen un 1 lógico en la salida.
V
H
D
L
SECCIÓN 4-17/ESTRUCTURAS DE CONTROL DE DECISIONES EN HDL 191
192 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
ENTITY fig4_64 IS
PORT( q, d, n: IN BIT; --veinticinco, diez y cinco centavos
centavos :OUT INTEGER RANGE 0 TO 25); -- valor binario de las monedas
END fig4_64;
ARCHITECTURE detector OF fig4_64 IS
SIGNAL monedas :BIT_VECTOR(2 DOWNTO 0); -- agrupa los sensores de monedas
BEGIN
monedas = (q  d  n); --asigna sensores al grupo
PROCESS (monedas)
BEGIN
CASE (centavos) IS
WHEN “001” = centavos = 5;
WHEN “010” = centavos = 10;
WHEN “100” = centavos = 25;
WHEN OTHERS = centavos = 0;
END CASE;
END PROCESS;
END detector;
FIGURA 4-64 Un detector de monedas en VHDL.
SUBDESIGN fig4_63
(
q, d, n :INPUT; -- define veinticinco, diez y cinco centavos
centavos[4..0] :OUTPUT; -- define el valor binario de las monedas
)
BEGIN
CASE (q, d, n) IS --agrupa las monedas en un conjunto ordenado
WHEN b”001” = centavos[ ] = 5;
WHEN b”010” = centavos[ ] = 10;
WHEN b”100” = centavos[ ] = 25;
WHEN OTHERS = centavos[ ] = 0;
END CASE;
END;
FIGURA 4-63 Un detector de monedas en AHDL.
EJEMPLO 4-34 Un detector en una máquina despachadora acepta monedas de 25, 10 y 5 centavos, y
activa la señal digital correspondiente (Q, D, N) sólo cuando está presente la mone-
da correcta. Físicamente es imposible que haya varias monedas presentes al mismo
tiempo. Un circuito digital debe utilizar las señales Q, D y N como entradas y debe
producir un número binario que represente el valor de la moneda según se muestra
en la figura 4-62. Escriba el código en AHDL y VHDL.
Solución
Ésta es una aplicación ideal de la instrucción CASE para describir la operación
correcta. Las salidas deben declararse como números de cinco bits para poder repre-
sentar hasta 25 centavos. La figura 4-63 muestra la solución en AHDL y la figura 4-64
la solución en VHDL.
FIGURA 4-62 Un
circuito detector de
monedas para una
máquina despachadora.
Insertar moneda
Circuito lógico
Q
centavos[4..0]
Arreglo de cinco bits
que representa el
valor de las monedas
D
N
Cinco
centavos
Diez
centavos
Veinticinco
centavos
A
H
D
L
V
H
D
L
PREGUNTAS DE REPASO 1. ¿Cuál estructura de control decide qué hacer o qué no hacer?
2. ¿Cuál estructura de control decide hacer esto o lo otro?
3. ¿Cuál(es) estructura(s) de control decide(n) la acción específica, entre varias,
que se va a realizar?
4. Declare una entrada llamada conteo que pueda representar una cantidad numé-
rica tan grande como 205. Use AHDL o VHDL.
RESUMEN
1. Las dos formas generales para las expresiones lógicas son la forma de suma de
productos y la forma de producto de sumas.
2. Un método para el diseño de un circuito lógico combinacional es (1) construir
su tabla de verdad, (2) convertir la tabla de verdad en una expresión de suma de
productos, (3) simplificar la expresión mediante álgebra booleana o mapeo K,
(4) implementar la expresión final.
3. El mapa K es un método gráfico para representar la tabla de verdad de un cir-
cuito y generar una expresión simplificada para la salida del circuito.
4. Un circuito OR exclusivo tiene la expresión x  AB  AB. Su salida x estará en
ALTO sólo cuando las entradas A y B estén en niveles lógicos opuestos.
5. Un circuito NOR exclusivo tiene la expresión x  A B  AB. Su salida x estará
en ALTO sólo cuando las entradas A y B estén en el mismo nivel lógico.
6. Cada una de las compuertas básicas (AND, OR, NAND, NOR) pueden usarse
para habilitar o deshabilitar el paso de una señal de entrada hacia su salida.
7. Las principales familias de CIs digitales son las familias TTL y CMOS. Los CIs
digitales están disponibles en una amplia gama de densidades (compuertas por
chip), desde las funciones lógicas básicas hasta las de alta complejidad.
8. Para el diagnóstico de fallas básico se requiere (como mínimo) una comprensión
de la operación del circuito, un conocimiento de los tipos de posibles fallas, un
diagrama de conexiones del circuito lógico completo y una sonda lógica.
9. Un dispositivo lógico programable (PLD) es un CI que contiene un extenso
número de compuertas lógicas cuyas interconexiones pueden ser programadas
por el usuario para generar la relación lógica deseada entre las entradas y las
salidas.
10. Para programar un PLD se necesita un sistema de desarrollo, el cual consiste de
una computadora, software para desarrollo de PLDs y un dispositivo programa-
dor que se encarga de la programación física del chip PLD.
11. El sistema Altera permite técnicas convenientes de diseño jerárquico mediante
el uso de cualquier forma de descripción de hardware.
12. El tipo de los objetos de datos debe especificarse, de manera que el compilador
del HDL conozca el intervalo de números que van a representarse.
13. Las tablas de verdad pueden introducirse de manera directa en el archivo fuen-
te mediante el uso de las características del HDL.
14. Pueden utilizarse las estructuras de control lógicas tales como IF, ELSE y CASE
para describir la operación de un circuito lógico, con lo cual se simplifica aún
más el código y la solución al problema.
RESUMEN 193
194 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
M
x
N
Q
FIGURA 4-65
Problemas 4-2 y 4-3.
TÉRMINOS IMPORTANTES
agrupamiento
arreglo de bits
arriba-abajo
asignación de señal selecta
bibliotecas
BIT_VECTOR
CASE
cero esfuerzo de inserción
(ZIF)
colisión
comprobación de paridad
concatenación
concurrentes
condición de “no importa”
diseño jerárquico
ELSE
ELSIF
encapsulado dual en línea
(DIP)
entero
estructuras de control de
decisiones
flotante
generación de
paridad
habilitar/deshabilitar
IF/THEN
Índice
indeterminado
JEDEC
JTAG
lista de sensibilidad
literales
lógica de transistor/-
transistor (TTL)
macrofunción
mapa de Karnaugh
(mapa K)
NOR exclusivo (XNOR)
objetos
OR exclusivo (XOR)
PROCESS
producto de sumas
(POS)
programador
secuenciales
Semiconductor Metal-
Óxido-complementario
(CMOS)
sonda lógica
SSI, MSI, LSI,VLSI,
ULSI, GSI
STD_LOGIC
STD_LOGIC_VECTOR
suma de productos
(SOP)
vector de bits
vectores de prueba
PROBLEMAS
SECCIONES 4-2 Y 4-3
4-1.*
Simplifique las siguientes expresiones mediante el uso del álgebra boo-
leana.
4-2. Simplifique el circuito de la figura 4-65 mediante el uso del álgebra boo-
leana.
(a)
(b)
(c)
(d)
(e)
(f)
(g)
(h) x = AB(CD) + ABD + B C D
y = (C + D) + ACD + AB C + A BCD + ACD
z = (B + C)(B + C) + A + B + C
x = A B C + ABC + ABC + A B C + ABC
q = RST(R + S + T)
w = ABC + ABC + A
y = (Q + R)(Q + R)
x = ABC + AC
* Encontrará las respuestas a los problemas marcados con un asterisco al nal del libro.
B
B
+5 V
+5 V
Puerta
Motor
+5 V
LED
Abierto
Cerrado
ENC
APAG
+5 V
Luces
ENC
APAG
Circuito
lógico
Alarma
FIGURA 4-66
Problema 4-8.
4-3.* Cambie cada una de las compuertas del problema 4-2 por compuertas NOR
y simplifique el circuito mediante álgebra booleana.
SECCIÓN 4-4
4-4.* Diseñe el circuito lógico que corresponde a la tabla de verdad que se mues-
tra en la tabla 4-11.
4-5. Diseñe un circuito lógico cuya salida esté en ALTO sólo cuando la mayoría
de las entradas A, B y C estén en BAJO.
4-6. Una planta de manufactura necesita tener un sonido de bocina para indicar
la hora de salida. La bocina deberá activarse cuando se cumpla cualquiera
de las siguientes condiciones:
1. Es después de las 5 en punto y todas las máquinas están apagadas.
2. Es viernes, se completó la producción del día y todas las máquinas
están apagadas.
Diseñe un circuito lógico que controle la bocina. (Sugerencia: use cuatro
variables lógicas de entrada para representar las diversas condiciones; por
ejemplo, la entrada A estará en ALTO sólo cuando sean las 5 en punto o más
tarde.)
4-7.* Un número binario de cuatro bits se representa como A3 A2 A1A0, en donde
A3, A2, A1 y A0 representan los bits individuales y Ao es igual al LSB. Diseñe
un circuito lógico que produzca una salida en ALTO cada vez que el número
binario sea mayor que 0010 y menor que 1000.
4-8. La figura 4-66 muestra un diagrama para un circuito de alarma de automóvil
que se utiliza para detectar ciertas condiciones indeseables. Los tres inte-
TABLA 4-11
A B C x
0 0 0 1
0 0 1 0
0 1 0 1
0 1 1 1
1 0 0 1
1 0 1 0
1 1 0 0
1 1 1 1
PROBLEMAS 195
B
B, D
B, D
D
D
D
196 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
rruptores se utilizan para indicar el estado de la puerta del lado del conduc-
tor, el motor y las luces, en forma respectiva. Diseñe el circuito lógico con
estos tres interruptores como entradas, de manera que la alarma se active
cada vez que exista cualquiera de las siguientes condiciones:
■ Las luces estén encendidas mientras que el motor esté apagado.
■ La puerta esté abierta mientras que el motor esté encendido.
4-9.* Implemente el circuito del problema 4-4, utilizando sólo compuertas
NAND.
4-10. Implemente el circuito del problema 4-5, utilizando sólo compuertas
NAND.
SECCIÓN 4-5
4-11. Determine la expresión mínima para cada uno de los mapas K en la figura
4-67. Ponga especial atención al paso 5 para el mapa en (a).
4-12. Para la tabla de verdad que se muestra a continuación, cree un mapa K de
2  2, agrupe los términos y simplifique. Después analice de nuevo la tabla
de verdad para ver si la expresión es verdadera para todas las entradas en la
tabla.
4-13. Empezando con la tabla de verdad en la tabla 4-11, utilice un mapa K para
encontrar la ecuación SOP más simple.
4-14. Simplifique la expresión en (a)* el problema 4-1(e), usando un mapa K.
(b) el problema 4-1(g), usando un mapa K. (c)* el problema 4-1(h), usando
un mapa K.
4-15.* Obtenga la expresión de salida para el problema 4-7, usando un mapa K.
4-16. La figura 4-68 muestra un contador BCD que produce una salida de cuatro
bits, la cual representa el código BCD para el número de pulsos que se han
aplicado a la entrada del contador. Por ejemplo, después de haberse produ-
cido cuatro pulsos, las salidas del contador son DCBA  01002  410. El con-
tador se restablece a 0000 en el décimo pulso y empieza a contar de nuevo.
En otras palabras, las salidas DCBA nunca representarán a un número mayor
de 10012  910.
(a)* Diseñe el circuito lógico que produzca una salida en ALTO cada vez que
el conteo sea 2, 3 o 9. Use el mapeo K y aproveche las condiciones “no
importa”.
(b) Repita el proceso para x  1 cuando DCBA  3, 4, 5, 8.
FIGURA 4-67
Problema 4-11.
AB
AB
AB
AB
CD CD CD CD
(a)*
AB
AB
AB
AB
CD CD CD CD
(b)
1 1
0 0
1 0
1 X
AB
AB
AB
AB
C C
(c)
1 1 1 1
1 1 0 0
0 0 0 1
0 0 1 1
1 0 1 1
1 0 0 1
0 0 0 0
1 0 1 1
A B y
0 0 1
0 1 1
1 0 0
1 1 0
B
B
B
B
B
C,D
B
A
X
1
0
1
0
Tiempo
FIGURA 4-70 Problema
4-20.
4-17.* La figura 4-69 muestra cuatro interruptores que forman parte de los circui-
tos de control en una máquina copiadora. Los interruptores están en varios
puntos a lo largo de la ruta del papel, a medida que éste pasa a través de la
máquina. Cada interruptor está, por lo general, abierto, y a medida que el
papel pasa a través de un interruptor, éste se cierra. Es imposible que los
interruptores SW1 y SW4 estén cerrados al mismo tiempo. Diseñe el circuito
lógico para producir una salida en ALTO cada vez que dos o más interrupto-
res estén cerrados al mismo tiempo. Use el mapeo K y aproveche las condi-
ciones “no importa”.
4-18. El ejemplo 4-3 demostró la simplificación algebraica. El paso 3 produjo la
ecuación SOP z  A B C  A C D  A B C D  ABC. Use un mapa K para
demostrar que esta ecuación puede simplificarse aún más que la respuesta
que se muestra en el ejemplo.
4-19. Utilice el álgebra booleana para llegar al mismo resultado que se obtuvo
mediante el método del mapa K del problema 4-18.
SECCIÓN 4-6
4-20. (a) Determine la forma de onda de salida para el circuito de la figura
4-70.
(b) Repita el proceso con la entrada B mantenida en BAJO.
(c) Repita el proceso con la entrada B mantenida en ALTO.
FIGURA 4-68
Problema 4-16.
D (MSB)
C
B
A
X ALTO sólo cuando
DCBA = 210 , 310, o 910
Contador
BCD
Circuito
lógico
FIGURA 4-69
Problema 4-17.
+5 V
SW4
+5 V
SW3
+5 V
SW2
+5 V
SW1
Circuito
lógico
x ALTO cada vez que
dos o más interruptores
están cerrados*
*SW1 y SW4 nunca estarán
cerrados al mismo tiempo
PROBLEMAS 197
D
B
C
B
198 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
4-21.* Determine las condiciones de entrada necesarias para producir x  1 en la
figura 4-71.
4-22. Diseñe un circuito que produzca una salida en ALTO sólo cuando las tres
entradas estén en el mismo nivel.
(a) Use una tabla de verdad y un mapa K para producir la solución SOP.
(b) Use compuertas XOR de dos entradas y otras compuertas para encon-
trar una solución. (Sugerencia: recuerde la propiedad transitiva del
álgebra… si a  b y b  c entonces a  c.)
4-23.* Un chip 7486 contiene cuatro compuertas XOR. Muestre cómo hacer una
compuerta XNOR utilizando sólo un chip 7486. Sugerencia: vea el ejemplo
4-16.
4-24.* Modifique el circuito de la figura 4-23 para comparar dos números de cuatro
bits y producir una salida en ALTO cuando los dos números concuerden de
manera exacta.
4-25. La figura 4-72 representa un detector de magnitud relativa que toma dos
números binarios de tres bits (x2x1x0 y y2y1y0) y determine si son iguales; en
caso de no ser así, que determine cuál es más grande. Hay tres salidas, que
se definen de la siguiente manera:
1. M  1 sólo si los dos números de entrada son iguales.
2. N  1 sólo si x2x1x0 es mayor que y2y1y0.
3. P  1 sólo si y2y1y0 es mayor que x2x1x0.
Diseñe los circuitos lógicos para este detector. El circuito tiene seis entra-
das y tres salidas, por lo que es demasiado complejo como para manejarlo
mediante el método de la tabla de verdad. Consulte el ejemplo 4-17 como
una sugerencia sobre cómo podría empezar a resolver este problema.
MÁS PROBLEMAS DE DISEÑO
4-26.* La figura 4-73 representa un circuito multiplicador que toma dos números
binarios de dos bits (x1x0 y y1y0) y produce un número binario de salida
z3z2z1z0 que es igual al producto aritmético de los dos números de entrada.
Diseñe el circuito lógico para el multiplicador. (Sugerencia: el circuito lógico
tendrá cuatro entradas y cuatro salidas.)
C
B
A
X
FIGURA 4-71 Problema
4-21.
FIGURA 4-72
Problema 4-25.
y0
LSB
Detector
de magnitud
relativa
Número
binario
y
Número
binario
x
M { x = y }
N { x  y }
P { x  y }
LSB
y1
y2
x0
x1
x2
B
B
B
B
B
C,D
FIGURA 4-74
Problema 4-30.
4-27. Un código BCD se está transmitiendo a un receptor remoto. Los bits son A3,
A2, A1 y A0, en donde A3 es el MSB. Entre los circuitos del receptor incluye
un circuito detector de errores BCD, el cual examina el código recibido para
ver si es un código de BCD legal (es decir, ≤1001). Diseñe este circuito
para producir un nivel ALTO para cualquier condición de error.
4-28.* Diseñe un circuito lógico cuya salida esté en ALTO cada vez que A y B estén
ambas en ALTO, siempre y cuando C y D estén ambas en BAJO o ambas en
ALTO. Trate de hacer esto sin utilizar una tabla de verdad. Después com-
pruebe su resultado construyendo una tabla de verdad a partir de su circui-
to, para ver si concuerda con la declaración del problema.
4-29. Cuatro tanques grandes en una planta química que contienen distintos
líquidos se están calentando. Se utilizan sensores de nivel de líquido para
detectar cuando el tanque A o el tanque B se eleva por encima de un nivel
predeterminado. Los sensores de temperatura en los tanques C y D detectan
cuando la temperatura en cualquiera de estos tanques cae por debajo de un
límite prescrito. Suponga que las salidas A y B del sensor de nivel de líquido
están en BAJO cuando el nivel es satisfactorio y en ALTO cuando el nivel es
demasiado alto. Además, las salidas C y D del sensor de temperatura están
en BAJO cuando la temperatura es satisfactoria y en ALTO cuando la tem-
peratura es demasiado baja. Diseñe un circuito lógico que detecte cada vez
que el nivel en el tanque A o en el tanque B es demasiado alto, al mismo
tiempo que la temperatura en el tanque C o en el tanque D sea demasiado
baja.
4-30.* La figura 4-74 muestra la intersección de una autopista principal con un
camino de acceso secundario. Se colocaron sensores de detección de vehícu-
los a lo largo de los carriles C y D (camino principal) y de los carriles A y B
(camino de acceso). Las salidas de estos sensores están en BAJO (0) cuando
x1
x0
y1
y0 z0
z1
z2
z3
MSB
LSB
LSB
LSB Circuito
multiplicador
FIGURA 4-73 Problema
4-26.
D
B
A
C
S
N
O E
PROBLEMAS 199
D
D
D
C,D
200 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
no hay vehículos presentes, y en ALTO (1) cuando hay vehículos presentes.
El semáforo de la intersección debe controlarse de acuerdo con la siguiente
lógica:
1. El semáforo este-oeste (E-O) se pondrá en verde cada vez que estén
ocupados ambos carriles C y D.
2. El semáforo E-O estará en verde cada vez que C o D estén ocupados,
pero cuando A y B no estén ambos ocupados.
3. El semáforo norte-sur (N-S) se pondrá en verde cada vez que ambos carri-
les A y B estén ocupados, pero cuando C y D no estén ambos ocupados.
4. El semáforo N-S también se pondrá en verde cuando A o B estén ocupa-
dos, mientras que C y D estén ambos vacantes.
5. El semáforo E-O cuando no haya vehículos presentes.
Utilizando las salidas del sensor A, B, C y D como entradas, diseñe un circui-
to lógico para controlar el semáforo. Debe haber dos salidas, N-S y E-O, que
cambien a ALTO cuando la luz correspondiente se vaya a poner en verde.
Simplifique el circuito lo más que se pueda y muestre todos los pasos.
SECCIÓN 4-7
4-31. Rediseñe el generador y comprobador de paridad de la figura 4-25 para que
(a) opere usando paridad impar. (Sugerencia: ¿cuál es la relación entre un bit
de paridad impar y un bit de paridad par para el mismo conjunto de bits de
datos?) (b) Opere con ocho bits de datos.
SECCIÓN 4-8
4-32. (a) ¿Bajo qué condiciones permitirá una compuerta OR que una señal lógi-
ca pase hacia su salida sin modificarla?
(b) Repita el inciso (a) para una compuerta AND.
(c) Repita el proceso para una compuerta NAND.
(d) Repita el proceso para una compuerta NOR.
4-33.* (a) ¿Puede utilizarse un INVERSOR como un circuito de habilitación/des-
habilitación? Explique.
(b) ¿Puede usarse una compuerta XOR como un circuito de habilitación/
deshabilitación? Explique.
4-34. Diseñe un circuito lógico que permita que la señal de entrada A pase hasta
la salida sólo cuando la entrada de control B esté en BAJO, mientras que la
entrada de control C esté en ALTO; en caso contrario, la salida debe estar en
BAJO.
   4-35.* Diseñe un circuito que deshabilite el paso de una señal de entrada sólo cuan-
do las entradas de control B, C y D estén todas en ALTO; la salida deberá
estar en ALTO para la condición deshabilitada.
4-36. Diseñe un circuito lógico que controle el paso de la señal A, de acuerdo con
los siguientes requerimientos:
1. La salida X será igual a A cuando las entradas de control B y C sean
iguales.
2. X permanecerá en ALTO cuando B y C sean distintas.
4-37. Diseñe un circuito lógico que tenga dos señales de entrada A1 y A0, y una
entrada de control S de manera que funcione de acuerdo con los requeri-
mientos descritos en la figura 4-75. (A este tipo de circuito se le conoce como
multiplexor, el cual veremos en el capítulo 9.)
D
B
B
D
D
D
D
4-38.* Use el mapeo K para diseñar un circuito que cumpla con los requerimientos
del ejemplo 4-17. Compare este circuito con la solución en la figura 4-23.
Aquí se recalca que el método del mapa K no puede aprovechar la lógica de
las compuertas XOR y XNOR. El diseñador debe ser capaz de determinar
cuándo pueden utilizarse estas compuertas.
SECCIONES 4-9 A 4-13
4-39. (a) Un técnico que está probando un circuito lógico se da cuenta de que
la salida de cierto INVERSOR está atascada en BAJO mientras que su
entrada esté pulsando. Liste todas las posibles razones que pueda para
esta operación defectuosa.
(b) Repita el inciso (a) para el caso en el que la salida del INVERSOR se
quede atascada en un nivel lógico indeterminado.
   4-40.* Las señales que se muestran en la figura 4-76 se aplican a las entradas del
circuito de la figura 4-32. Suponga que hay un circuito abierto interno en
Z1-4.
(a) ¿Qué indicará una sonda lógica en Z1-4?
(b) ¿Qué lectura de voltaje de corriente directa esperaría en Z1-4? (Recuer-
de que los CIs son TTL.)
(c) Haga un bosquejo de cuál cree usted que será la apariencia de las seña-
les CLKOUT y SHIFTOUT.
(d) En vez del circuito abierto en Z1-4, suponga que las terminales 9 y 10
de Z2 están en corto interno. Haga un bosquejo de las probables seña-
les en Z2-10, CLOCKOUT y SHIFTOUT.
4-41. Suponga que los CIs de la figura 4-32 son CMOS. Describa cómo se vería
afectada la operación del circuito debido a un circuito abierto en el conduc-
tor que conecta a Z2-2 y Z2-10.
4-42. En el ejemplo 4-24 listamos tres posibles fallas para la situación de la figura
4-36. ¿Qué procedimiento seguiría usted para determinar cuál de las fallas
es la que se está produciendo en realidad?
4-43.* Consulte el circuito de la figura 4-38. Suponga que los dispositivos son
CMOS. Suponga además que la indicación de la sonda lógica en Z2-3 es
S
0
1
z
= A0
= A1
S
z
A0
Multiplexor
A1
FIGURA 4-75 Problema
4-37.
CLOCK
LOAD
SHIFT
FIGURA 4-76 Problema
4-40.
* Recuerde que F indica un ejercicio de diagnóstico de fallas.
PROBLEMAS 201
D
F
F
F
F
F
202 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
11
12
13
6
4
5
2
1
7
14
+5 V
PASAJ
CINTP
6
1
2
4
3
CONDUC
CINTC
ENC
7
14
+5 V
ALARMA
9
10
8
Z1: 74LS04
Z2: 74LS00
Z2
Z2
Z2
Z2
FIGURA 4-77 Problemas 4-47, 4-48 y 4-49.
“indeterminado”, en vez de “pulsando”. Liste las posibles fallas y escriba
un procedimiento a seguir para determinar la verdadera falla?
4-44.* Consulte el circuito lógico de la figura 4-41. Recuerde que se supone que la
salida Y debe estar en ALTO para cualquiera de las siguientes condiciones:
1. A  1, B  0, sin importar C
2. A  0, B  1, C  1
Al probar el circuito, el técnico observa que Y cambia a ALTO sólo para la
primera condición, pero permanece en BAJO para todas las demás condi-
ciones de entrada. Considere la siguiente lista de posibles fallas. Para cada
una de ellas, escriba sí o no para indicar si podría o no ser la verdadera falla.
Explique su razonamiento para cada una de las opciones en las que conteste
que no.
(a) Un corto interno a tierra en Z2-13.
(b) Un circuito abierto en la conexión a Z2-13.
(c) Un corto interno con VCC en Z2-11.
(d) Un circuito abierto en la conexión de VCC con Z2.
(e) Un circuito abierto interno en Z2-9.
(f) Un circuito abierto en la conexión de Z2-11 a Z2-9.
(g) Un puente de soldadura entre las terminales 6 y 7 de Z2.
4-45. Desarrolle un procedimiento para aislar la falla que esté produciendo el
funcionamiento defectuoso descrito en el problema 4-44.
4-46.* Suponga que todas las compuertas en la figura 4-41 son CMOS. Cuando el
técnico prueba el circuito descubre que opera en forma correcta, excepto
para las siguientes condiciones:
1. A  1, B  0, C  0
2. A  0, B  1, C  1
Para estas condiciones, la sonda lógica indica niveles indeterminados en
Z2-6, Z2-11 y Z2-8. ¿Cuál cree usted que sea la probable falla en el circuito?
Explique su razonamiento.
4-47. La figura 4-77 es un circuito lógico combinacional que opera una alarma en
un automóvil, cada vez que están ocupados los asientos del conductor y/o
del pasajero y que los cinturones de seguridad no están abrochados cuando
el automóvil arranca. Las señales CONDUC y PASAJ activas en ALTO indican
la presencia del conductor y del pasajero en forma respectiva, y se obtie-
nen mediante interruptores operados por presión en los asientos. La señal
ENC es activa en ALTO cuando el interruptor de encendido está activado.
La señal CINTC es activa en BAJO e indica que el cinturón de seguridad
F
F
F
F
del conductor no está abrochado; CINTP es la señal correspondiente para el
cinturón de seguridad del pasajero. La alarma se activará (BAJO) cada vez
que se encienda el automóvil, que cualquiera de los asientos delanteros esté
ocupado y que su cinturón de seguridad no esté abrochado.
(a) Verifique que el circuito funcione de la manera descrita.
(b) Describa cómo operaría este sistema de alarma si Z1-2 estuviera en
corto interno con tierra.
(c) Describa cómo operaría si hubiera una conexión abierta de Z2-6 a Z2-10.
4-48.* Suponga que el sistema de la figura 4-77 está funcionando de manera que la
alarma se active tan pronto como el conductor o algún pasajero estén senta-
dos y el automóvil esté encendido, sin importar el estado de los cinturones
de seguridad. ¿Cuáles son las posibles fallas? ¿Qué procedimiento seguiría
usted para encontrar la verdadera falla?
   4.49.* Suponga que el sistema de alarma de la figura 4-77 está operando de manera
que la alarma se encienda en forma continua tan pronto como se encienda
el automóvil, sin importar el estado de las demás entradas. Liste las posibles
fallas y escriba un procedimiento para aislar la falla.
PREGUNTAS DE PRÁCTICA SOBRE PLDS (50 A 55)
4-50.* Verdadero o falso:
(a) El diseño de arriba hacia abajo comienza con una descripción general
de todo el sistema y sus especificaciones.
(b) Un archivo JEDEC puede usarse como archivo de entrada para un pro-
gramador.
(c) Si un archivo de entrada se compila sin errores, significa que el circuito
PLD funcionará en forma correcta.
(d) Un compilador puede interpretar código a pesar de los errores de sin-
taxis.
(e) Los vectores de prueba se utilizan para simular y probar un dispositivo.
4-51. ¿Qué son los caracteres % que se utilizan para el archivo de diseño de AHDL?
4-52. ¿Cómo se indican los comentarios en un archivo de diseño de VHDL?
4-53. ¿Qué es un zócalo ZIF?
4-54.* Enliste tres modos de entrada utilizados para introducir la descripción de
un circuito en el software de desarrollo de PLDs.
4-55. ¿Qué significan JEDEC y HDL?
SECCIÓN 4-15
4-56. Declare los siguientes objetos de datos en AHDL o VHDL.
(a)* Un arreglo de ocho bits de salida llamados aparatos.
(b) Un bit individual de salida llamado chicharra.
(c) Un puerto de entrada numérico de 16 bits llamado altitud.
(d) Un bit individual intermedio dentro de un archivo de descripción de
hardware llamado alambre2.
4-57. Exprese los siguientes números literales en hexadecimal, binario y decimal,
utilizando la sintaxis de AHDL o VHDL.
(a)* 15210
(b) 10010101002
(c) 3C416
4-58.* La siguiente definición de E/S que se da para AHDL y para VHDL. Escriba
cuatro instrucciones de asignación concurrentes que conecten las entradas
con las salidas, como se muestra en la figura 4-78.
PROBLEMAS 203
F
F
H,B
H,B
B
B
B
H,B
H,B
H,B
204 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
LIMITE_VACIO
LIMITE_LLENO
ENERGIA_ENC
MOTOR_ENC
1
0
3
2
Bitsent
1
0
3
2
Bitssal
LED_LLENO
MOTOR
LED_VACIO
LED_ENERGIA
FIGURA 4-78
Problema 4-58. SUBDESIGN hw
(
bitsent[3..0] :INPUT;
bitssal[3..0] :OUTPUT;
)
ENTITY hw IS
PORT (
bitsent :IN BIT VECTOR (3 downto 0);
bitssal :OUT BIT VECTOR (3 downto 0)
);
END hw;
SECCIÓN 4-16
4-59. Modifique la tabla de verdad de AHDL de la figura 4-50 para implementar
la ecuación AB  AC  AB.
4-60.* Modifique el diseño de AHDL en la figura 4-54, de manera que z  1 sólo
cuando el valor digital sea menor que 10102.
4-61. Modifique la tabla de verdad de AHDL de la figura 4-51 para implementar
AB  AC  AB.
4-62.* Modifique el diseño de VHDL de la figura 4-55, de manera que z  1 sólo
cuando el valor digital sea menor que 10102.
4-63. Modifique el código de (a) la figura 4-54 o (b) la figura 4-55 de tal forma que
la salida z esté en BAJO sólo cuando valor_digital se encuentre entre 6 y 11
(inclusivo).
4-64. Modifique (a) el diseño de AHDL de la figura 4-60 para implementar la tabla
4-1. (b) el diseño de VHDL de la figura 4-61 para implementar la tabla 4-1.
4-65.* Escriba la ecuación booleana del archivo de diseño de descripción de hard-
ware para implementar el ejemplo 4-9.
4-66. Escriba la ecuación booleana del archivo de diseño de descripción de hard-
ware para implementar un generador de paridad de cuatro bits, como se
muestra en la figura 4-25(a).
PREGUNTA DE PRÁCTICA
4-67. Defina cada uno de los siguientes términos.
(a) Mapa de Karnaugh.
(b) Forma de suma de productos.
(c) Generador de paridad.
(d) Octeto.
H,D
H,D
H,D
H,D
H,B
H,D
H,D
B
(e) Circuito de habilitación.
(f) Condición “no importa”.
(g) Entrada flotante.
(h) Nivel de voltaje indeterminado.
(i) Colisión.
(j) PLD.
(k) TTL.
(l) CMOS.
APLICACIONES DE MICROCOMPUTADORA
4-68. En una microcomputadora, la unidad del microprocesador (MPU) siempre
se está comunicando con uno de los siguientes elementos: (1) memoria de
acceso aleatorio (RAM), la cual almacena los programas y datos que pueden
modificarse con facilidad; (2) memoria de sólo lectura (ROM), la cual alma-
cena programas y datos que nunca se modifican; y (3) dispositivos externos
de entrada/salida (E/S) tales como teclados, pantallas de video, impresoras
y unidades de disco. Al ejecutar un programa, la MPU genera un código de
dirección que selecciona el tipo de dispositivo (RAM, ROM o E/S) con el
que desea comunicarse. La figura 4-79 muestra un arreglo común en donde
la MPU produce como salida un código de dirección de ocho bits (A15 – A8).
En realidad la MPU produce como salida un código de dirección de 16 bits,
pero los bits de menor orden (A7 – A0) no se utilizan en el proceso de selec-
ción de dispositivos. El código de dirección se aplica a un circuito lógico que
lo utiliza para generar las señales de selección de dispositivos: RAM, ROM y
E/S.
Analice este circuito y determine lo siguiente:.
(a)* El intervalo de direcciones de A15 hasta A8 que activa la señal RAM.
(b) El intervalo de direcciones que activa la señal E/S.
(c) El intervalo de direcciones que activa la señal ROM.
Exprese las direcciones en binario y en hexadecimal. Por ejemplo, la res-
puesta para (a) es: A15 a A8  000000002 a 111011112  0016 a EF16.
4-69. En algunas microcomputadoras la MPU puede deshabilitarse por breves perio-
dos mientras que otro dispositivo controla los dispositivos de RAM, ROM y
E/S. Durante estos intervalos, la MPU activa una señal de control especial
(DMA), la cual se utiliza para deshabilitar (desactivar) la lógica de selección
de dispositivos, de manera que las señales RAM, ROM y E/S se encuentren en
su estado inactivo. Modifique el circuito de la figura 4-79, de tal forma que
RAM, ROM y E/S se desactiven cada vez que la señal DMA esté activa, sin
importar el estado del código de dirección.
FIGURA 4-79
Problema 4-68.
RAM
E/S
ROM
MPU
A15
A14
A13
A12
A11
A10
A9
A8
PROBLEMAS 205
C
C,D
206 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES
RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES
SECCIÓN 4-1
1. Sólo (a). 2. Sólo (c).
SECCIÓN 4-3
1. La expresión (b) no se encuentra en la forma de suma de productos debido al signo
de inversión sobre las variables C y D (es decir, el término ACD). La expresión (c) no se
encuentra en la forma de suma de productos debido al término (M  N)P.
3. x  A  B  C
SECCIÓN 4-4
1. x  A B CD  A BCD  ABC D 2. Ocho
SECCIÓN 4-5
1. x  AB  AC  BC 2. x  A  BCD 3. S  P  QR 4. Una condición de
entrada para la cual no haya una condición de salida requerida específica; es decir, tenemos
la libertad de hacerla 1 o 0.
SECCIÓN 4-6
2. Un nivel BAJO constante. 3. No; la compuerta XOR disponible puede utilizarse como
un INVERSOR si se conecta una de sus entradas a un nivel ALTO constante (vea el ejemplo
4-16).
SECCIÓN 4-8
1. x  A(B  C) 2. OR, NAND 3. NAND, NOR
SECCIÓN 4-9
1. DIP 2. SSI, MSI, LSI,VLSI, ULSI, GSI 3.Verdadero. 4.Verdadero.
5. series 40, 74AC y 74ACT 6. De 0 a 0-8 V; de 2.0 a 5-0 V 7. De 0 a 1.5 V; de 3.5
a 5.0 V 8. Como si la entrada estuviera en ALTO. 9. Es impredecible; podría
sobrecalentarse y destruirse. 10. 74HCT y 74ACT 11. Describen la manera exacta
de cómo interconectar los chips para distribuir el circuito y diagnosticar fallas.
12. Se definen las entradas y las salidas, y se describen las relaciones lógicas.
SECCIÓN 4-11
1. Entradas o salidas abiertas; entradas o salidas en corto con VCC; entradas o salidas
cortocircuitadas a tierra; terminales en corto; fallas internas del circuito. 2. Terminales
en corto. 3. Para TTL, un nivel BAJO; para CMOS, indeterminado. 4. Dos o más
salidas conectadas entre sí.
SECCIÓN 4-12
1. Líneas de señal abiertas; líneas de señal en corto; fuente de poder defectuosa; carga en la
salida. 2. Alambres rotos; conexiones de soldadura pobres; grietas o cortes en la tarjeta
de circuito impreso; terminales del CI dobladas o rotas; zócalos de CI defectuosos.
3. Los CIs operan en forma errática o no operan. 4. Nivel lógico indeterminado.
SECCIÓN 4-14
1. Las conexiones controladas por electricidad se programan como abiertas o
cerradas. 2. (4, 1)(2, 2) o (2, 1)(4, 2) 3. (4, 5)(1, 6) o (4, 6)(1, 5)
SECCIÓN 4-15
1. (a) botones_pulsar[5..0] :INPUT; (b) botones_pulsar :IN BIT_VECTOR (5 DOWNTO 0);
2. (a) z  botones_pulsar[5]; (b) z  botones_pulsar(5); 3. STD_LOGIC
4. STD_LOGIC_VECTOR
SECCIÓN 4-16
1. (AHDL) omega[ ]  (x, y, z); (VHDL) omega  x  y  z; 2. Mediante el uso de la
palabra clave TABLE. 3. Mediante el uso de las asignaciones de señal selecta.
SECCIÓN 4-17
1. IF/THEN 2. IF/THEN/ELSE 3. CASE o IF/ELSIF
4. (AHDL) conteo[7..0] :INPUT; (VHDL) conteo: IN INTEGER RANGE 0 TO 205
RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES 207
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
a
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
→ → → → →
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
VARIABLE
ff1 :JKFF;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
% JK circuito flip-flop %
SUBDESIGN fig5_65
(
jent, kent, clkent, preset, clear :INPUT
qsal :OUTPUT;
)
VARIABLE
ff1 :JKFF; -- define este flip flop como de tipo JKFF
BEGIN
ff1.prn preset; -- éstos son opcionales, su valor predeterminado es vcc
ff1.clrn clear;
ff1.j jent; -- conecta primitiva a la señal de entrada
ff1.k kent;
ff1.clk clkent;
qsal ff1.q; -- conecta la terminal de salida a la primitiva
END;
Sistemas_Digitales_Principios_y_Aplicaci.pdf
-- Circuito de Flip-flop JK
ENTITY jk IS
PORT(
clk, j, k, prn, clrn :IN BIT;
q :OUT BIT);
END jk ;
ARCHITECTURE a OF jk IS
SIGNAL qestado :BIT;
BEGIN
PROCESS(clk, prn, clrn) -- responde a cualquiera de estas señales
BEGIN
IF prn '0' THEN qestado  '1'; -- PRESET asíncrono
ELSIF clrn '0' THEN qestado  '0';-- CLEAR asíncrono
ELSIF clk '1' AND clk'EVENT THEN -- en PGT del flanco del reloj
IF j '1' AND k '1' THEN qestado  NOT qestado;
ELSIF j '1' AND k '0' THEN qestado  '1';
ELSIF j '0' AND k '1' THEN qestado  '0';
END IF;
END IF;
END PROCESS;
q  qestado; -- actualiza terminal de salida
END a;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
% Contador de rizos MOD 8 ascendente %
SUBDESIGN fig5_71
(
reloj :INPUT;
q[2..0] :OUTPUT;
)
VARIABLE
q[2..0] :JKFF; -- define tres FFs JK
BEGIN
-- nota: valor determinado de prn, clrn es vcc
q[2..0].j VCC; -- modo de conmutación J K 1 para todos los FFs
q[2..0].k VCC;
q[0].clk !reloj;
q[1].clk !q[0].q;
q[2].clk !q[1].q; -- conecta los relojes en forma de rizo
END;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
→
→
Sistemas_Digitales_Principios_y_Aplicaci.pdf
←
←
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
⊕
Sistemas_Digitales_Principios_y_Aplicaci.pdf
→
Sistemas_Digitales_Principios_y_Aplicaci.pdf
→
→
→
→
→
→ → → →
1
Σ
FIGURA 6-11
(a) Símbolo de bloque
para el sumador en
paralelo de cuatro bits
74HC283; (b) conexión
en cascada de dos CIs
74HC283.
B3 B2 B1 B0
A3 A2 A1 A0
Σ3
sumador en
paralelo de
4 bits 74HC283
C0
C4
(a)
B7 B6 B5 B4
A7 A6 A5 A4
74HC283
(sumador de mayor orden)
C4
C8
B3 B2 B1 B0
A3 A2 A1 A0
C0
primer sumando de 8 bits
sumando de 8 bits
(b)
74HC283
(sumador de menor orden)
Σ2 Σ1 Σ0
Σ7 Σ6 Σ5 Σ4 Σ3 Σ2 Σ1 Σ0
EJEMPLO 6-10
del MSB. Puede usarse como la entrada de acarreo para una tercera etapa de suma-
dor, si se van a sumar números binarios más grandes.
La característica de acarreo adelantado del 74HC283 agiliza la operación de
este sumador de dos etapas, ya que el nivel lógico en C4 (el acarreo de la etapa
de menor orden) se genera con más rapidez que si no hubiera circuitos de acarreo
adelantado en el chip 74HC283. Esto permite que la etapa de mayor orden produzca
sus salidas de suma con más rapidez.
Determine los niveles lógicos en las entradas y las salidas del sumador de ocho bits
en la figura 6-11(b), cuando se suma el 7210 con el 13710.
Solución
Primero se convierte cada número en binario de ocho bits:
137  10001001
72  01001000
SECCIÓN 6-14/SUMADOR EN PARALELO DE CIRCUITO INTEGRADO 327
328 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
PREGUNTAS DE REPASO
Estos dos valores binarios se aplicarán a las entradas A y B; esto es, las entradas
de A serán 10001001 de izquierda a derecha, y las entradas de B serán 01001000 de
izquierda a derecha. El sumador producirá la suma binaria de los dos números:
[A]  10001001
[B]  01001000
[
]  11010001
Las salidas de la suma indicarán 11010001 de izquierda a derecha. Como no hay
desbordamiento hacia el bit C8, quedará como un 0.
1. ¿Cuántos chips 74HC283 se necesitan para sumar dos números de 20 bits?
2. Si un 74HC283 tiene un retraso de propagación máximo de 30 ns de C0 a C4,
¿cuál será el retraso de propagación total de un sumador de 32 bits construido a
partir de chips 74HC283?
3. ¿Cuál será el nivel lógico en C4, en el ejemplo 6-10?
6-15 SISTEMA DE COMPLEMENTO A 2
La mayoría de las computadoras modernas utiliza el sistema de complemento a 2
para representar números negativos y realizar restas. Si utilizamos la forma de com-
plemento a 2 para representar los números negativos sólo será necesario la opera-
ción de suma para realizar las operaciones tanto de suma como de resta de números
con signo.
Suma
Los números positivos y negativos (incluyendo los bits de signo) pueden sumarse en
el circuito sumador en paralelo básico cuando los números negativos se encuentran
en forma de complemento a 2. Esto se ilustra en la figura 6-12 para la suma de 3
y 6. El 3 se representa en su forma de complemento a 2 como 1101, en donde el
primer 1 es el bit de signo; el 6 se representa como 0110, en donde el primer cero
es el bit de signo. Estos números se almacenan en sus correspondientes registros. El
sumador en paralelo de cuatro bits produce salidas de suma de 0011, lo cual repre-
senta un 3. La salida C4 es 1, pero recuerde que en el método de complemento a 2
se descarta.
Resta
Cuando se utiliza el sistema de complemento a 2, el número a restar (el sustraendo)
se cambia por su complemento a 2 y después se suma al minuendo (el número al que se
le está restando el sustraendo). Por ejemplo, podemos suponer que el minuendo ya
está almacenado en el acumulador (registro A). Después el sustraendo se coloca en el
registro B (en una computadora se transferiría a este registro desde la memoria) y se
cambia por su forma de complemento a 2 antes de sumarlo al número que está en el
registro A. Las salidas de suma del circuito sumador ahora representan la diferencia
entre el minuendo y el sustraendo.
El circuito sumador en paralelo del cual hemos estado hablando puede adap-
tarse para realizar la resta que se describe a continuación si proporcionamos un
medio para sacar el complemento a 2 del número en el registro B. Para obtener el
Σ0
B3 B2 B1 B0
Sumador en paralelo
de 4 bits 74LS283 C0
0 0 1 1
0 1 1 0
1 1 0 1
A3 A2 A1 A0
Del registro A
Del registro B
+3
(suma resultante)
0
1
C4
+6
(sumando)
Representación en complemento
a 2 de -3 (primer sumando)
Σ1
Σ2
Σ3
FIGURA 6-12 Sumador
en paralelo que se
utiliza para sumar y
restar números en el
sistema de complemento
a 2.
FIGURA 6-13 Sumador
en paralelo que se
utiliza para restar
(A  B) mediante el
sistema de complemento
a 2. Los bits del
sustraendo (B) están
invertidos, y
C0  1 para producir el
complemento a 2.
Σ0
Σ1
Σ2
Σ3
A3 A2 A1 A0
B3 B2 B1 B0
Sumador en paralelo
de 4 bits 74LS283
Del registro A
C0 = 1
Representa la salida de
DIFERENCIA
Salidas
invertidas
del registro B
C4
(se descarta)
complemento a 2 de un número binario se complementa (invierte) cada bit y des-
pués se suma 1 al LSB. La figura 6-13 muestra cómo lograrlo. Se utilizan las salidas
invertidas del registro B en vez de las salidas normales; esto es, B0, B1, B2 y B3 se
alimentan a las entradas del sumador (recuerde que B3 es el bit de signo). Con esta
operación se complementa cada uno de los bits del número en B. Además C0 se hace
1 lógico, por lo que se suma un 1 adicional al LSB del sumador; esto logra el mismo
efecto que si se suma 1 al LSB del registro B para formar el complemento a 2.
Las salidas 
3 a 
0 representan los resultados de la operación de resta. Desde
luego que 
3 es el bit de signo del resultado e indica si éste es  o . La salida de
acarreo C4 se descarta de nuevo.
Para aclarar mejor esta operación, estudie los siguientes pasos para restar 6
de 4:
1. El 4 se almacena en el registro A como 0100.
2. El 6 se almacena en el registro B como 0110.
3. Las salidas invertidas de los FFs del registro B (1001) se alimentan al sumador.
SECCIÓN 6-15/SISTEMA DE COMPLEMENTO A 2 329
330 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
4. Los circuitos del sumador en paralelo suman [A]  0100 con [B]  1001, junto
con un acarreo C0  1 hacia el LSB. La operación se muestra a continuación:
El resultado en las salidas de suma es 1110. En realidad esto representa el resultado
de la operación de resta, la diferencia entre el número en el registro A y el número en
el registro B; esto es, [A]  [B]. Como el bit de signo  1, es un resultado negativo y
se encuentra en la forma de complemento a 2. Para verificar que 1110 representa el
210 sacamos su complemento a 2 y obtenemos 210:
Combinación de suma y resta
Ahora debe quedar claro que el circuito sumador en paralelo básico puede usarse
para sumar o restar, dependiendo de si el número B se deja sin cambio o se convierte
en su complemento a 2. En la figura 6-14 se muestra un circuito completo que puede
realizar tanto sumas como restas en el sistema de complemento a 2.
Este circuito sumador/restador se controla mediante las dos señales de control
SUMA y RESTA. Cuando el nivel de SUMA es ALTO, el circuito suma los números
almacenados en los registros A y B. Cuando el nivel RESTA es ALTO, el circuito resta
el número en el registro B del número en el registro A. La operación se describe de
la siguiente manera:
1. Suponga que SUMA  1 y que RESTA  0. La condición RESTA  0 deshabilita
(inhibe) las compuertas AND 2, 4, 6 y 8, con lo que sus salidas se mantienen en 0.
La condición SUMA  1 habilita las compuertas AND 1, 3, 5 y 7, con lo cual se
permite que sus salidas pasen los niveles B0, B1, B2 y B3 en forma respectiva.
2. Los niveles B0 a B3 pasan a través de las compuertas OR en el sumador en para-
lelo de cuatro bits, para que se sumen a los bits A0  A3. La suma aparece en las
salidas 
0 a 
3.
3. Observe que RESTA  0 produce un acarreo de C0  0 en el sumador.
4. Ahora suponga que SUMA  0 y RESTA  1. La condición SUMA  0 inhibe las
compuertas AND 1, 3, 5 y 7. La condición RESTA  1 habilita las compuertas 2,
4, 6 y 8, por lo que sus salidas pasan los niveles B0, B1, B2 y B3 respectivamente.
5. Los niveles B0 a B3 pasan a través de las compuertas OR hacia el sumador, para
agregarse a los bits A0  A3. Observe también que C0 ahora es 1. Por lo tanto, el
número en el registro B se ha convertido en su complemento a 2.
6. La diferencia aparece en las salidas 
0 a 
3.
Los circuitos como el sumador/restador de la figura 6-14 se utilizan en compu-
tadoras debido a que proporcionan un medio relativamente sencillo para sumar y
restar números binarios con signo. En la mayoría de las computadoras, las salidas
presentes en las líneas de salida 
 por lo general se transfieren hacia el registro
A (acumulador), por lo que los resultados de la suma o la resta siempre terminan
almacenados en el registro A. Esto se logra aplicando un pulso TRANSFERIR a las
entradas CLK del registro A.
1 ← C0
0100 ← [A]
 1001 ← [ ]
1110 ← [
]  [A]  [B]
B
1110
0001
+ 1
0010 = +210
FIGURA 6-14
Sumador/restador en
paralelo que utiliza el
sistema de complemento
a 2.
74LS283
C4
C0
2
4
8 6
7 5 3 1
SUMA
RESTA
D D D D
CLK
CLK
CLK
CLK
Pulso
Transferir
12 11 10 9
A3 A2 A1 A0
B3 B2 B1 B0
Σ0
Σ1
Σ2
Σ3
A3 A2 A1 A0
B3 B3 B2 B2 B1 B1 B0 B0
Registro B
PREGUNTAS DE REPASO 1. ¿Por qué C0 tiene que ser 1 para poder utilizar el circuito sumador de la figura
6-13 como restador?
2. Suponga que [A]  0011 y [B]  0010 en la figura 6-14. Si SUMA  1 y RESTA
 0, determine los niveles lógicos en las salidas de la compuerta OR.
3. Repita la pregunta 2 para la condición SUMA  0, RESTA  1.
4. Verdadero o falso: cuando el circuito sumador/restador se utiliza para restar, el
complemento a 2 del sustraendo aparece en la entrada del sumador.
6-16 CIRCUITOS INTEGRADOS TIPO ALU
Existen varios circuitos integrados a los que se les conoce como unidades aritmético/
lógicas (ALUs), aún cuando no tienen todas las herramientas de una unidad aritmé-
tica/lógica de computadora. Estos chips ALU son capaces de realizar varias opera-
ciones aritméticas y lógicas con entradas de datos binarios. La operación específica
que debe realizar un CI tipo ALU se determina con base en un código binario espe-
cífico que se aplica en sus entradas de selección de función. Algunos de los CIs tipo
ALU son bastante complejos y se requeriría una gran cantidad de tiempo y espacio
para explicar e ilustrar su operación. En esta sección utilizaremos un chip tipo ALU
SECCIÓN 6-16/CIRCUITOS INTEGRADOS TIPO ALU 331
332 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
S2
S1
S0
CN
B3
B2
B1
B0
B
A3
A2
A1
A0
F0
F2
F1
F3
F
CN+4
(a)
ALU
A
74LS382/
74HC382
OVR
S
0
0
0
0
1
1
1
1
S2
0
0
1
1
0
0
1
1
S1
0
1
0
1
0
1
0
1
S0
Tabla de funciones
(b)
A = número de entrada de 4 bits
B = número de entrada de 4 bits
CN = acarreo hacia la posición del LSB
S = entradas de selección de
operación de 3 bits
F = número de salida de 4 bits
CN+4 = acarreo que proviene de la posición del MSB
OVR = indicador de desbordamiento
BORRAR
B menos A
A menos B
A más B
A ⊕ B
A + B
AB
PRESET
F3F2F1F0 = 0000
Necesita que CN = 0
OR exclusivo
OR
AND
F3F2F1F0 = 1111
Necesita CN = 1
Observaciones: Las entradas S seleccionan la operación
OVR = 1 para el desbordamiento
en números con signo
Entradas
Salidas
Operación Comentarios
FIGURA 6-15 (a) Símbolo de bloque para el chip ALU 74LS382/HC382; (b) tabla de funciones que muestra
cómo las entradas de selección (S) determinan la operación que se va a realizar sobre las entradas A y B.
relativamente simple pero útil, para demostrar los conceptos básicos detrás de todos
los chips tipo ALU. Las ideas que presentamos aquí podrán extenderse después a los
dispositivos más complejos.
El chip ALU 74LS382/HC382
La figura 6-15(a) muestra el símbolo de bloque para una ALU que está disponible
como un 74LS382 (TTL) y como un 74HC382 (CMOS). Este CI de 20 terminales
opera sobre dos números de entrada de cuatro bits (A3A2A1A0 y B3B2B1B0) para pro-
ducir un resultado de salida de cuatro bits (F3F2F1F0). Esta ALU puede realizar ocho
operaciones distintas. En cualquier momento, la operación que se vaya a realizar
dependerá del código de entrada que se aplique a las entradas de selección de fun-
ción S2S1S0. La tabla en la figura 6-15(b) muestra las ocho operaciones disponibles.
Enseguida describiremos cada una de estas operaciones.
OPERACIÓN BORRAR Cuando S2S1S0  000, la ALU borrará todos los bits de
la salida F, de manera que F3F2F1F0  0000.
OPERACIÓN DE SUMA Cuando S2S1S0  011, la ALU sumará A3A2A1A0 y
B3B2B1B0 para producir su suma en F3F2F1F0. Para esta operación, CN es el aca-
rreo hacia la posición del LSB y debe hacerse 0. CN4 es la salida de acarreo
que proviene de la posición del MSB. OVR es la salida indicadora de desborda-
miento; detecta un desbordamiento cuando se utilizan números con signo. OVR
será 1 cuando una operación de suma o de resta produzca un resultado dema-
siado grande como para caber en cuatro bits (incluyendo el bit de signo).
OPERACIONES DE RESTA Cuando S2S1S0  001, la ALU restará el número en
la entrada A del número en la entrada B. Cuando S2S1S0  010, la ALU restará
B de A. En cualquier caso, la diferencia aparecerá en F3F2F1F0. Observe que las
operaciones de resta requieren que la entrada CN sea 1.
EJEMPLO 6-11
OPERACIÓN XOR Cuando S2S1S0  100, la ALU realizará una operación XOR
bit por bit sobre las entradas A y B. Esto se ilustra a continuación para A3A2A1A0
 0110 y B3B2B1B0  1100.
El resultado es F3F2F1F0  1010.
OPERACIÓN OR Cuando S2S1S0  101, la ALU realizará una operación OR bit
por bit sobre las entradas A y B. Por ejemplo, para A3A2A1A0  0110 y B3B2B1B0
 1100 la ALU generará un resultado de F3F2F1F0  1110.
OPERACIÓN AND Cuando S2S1S0  110, la ALU realizará una operación
AND bit por bit sobre las entradas A y B. Por ejemplo, para A3A2A1A0  0110 y
B3B2B1B0  1100 la ALU generará un resultado de F3F2F1F0  1100.
OPERACIONES PRESET Cuando S2S1S0  111, la ALU establecerá todos los
bits de la salida, de manera que F3F2F1F0  1111.
(a) Determine las salidas del 74HC382 para las siguientes entradas: S2S1S0  010,
A3A2A1A0  0100, B3B2B1B0  0001 y CN  1.
(b) Cambie el código de selección a 011 y repita.
Solución
(a) En la tabla de funciones de la figura 6-15(b) podemos ver que 010 selecciona
la operación (A – B). La ALU realizará la resta en complemento a 2; para ello
complementará B y sumará el resultado a A y CN. Observe que se necesita la
condición CN  1 para completar el complemento a 2 de B en forma efectiva.
Como siempre pasa en la resta en complemento a 2, el ACARREO del MSB se
descarta. El resultado correcto de la operación (A  B) aparece en las salidas F.
La salida OVR se determina considerando que los números de entrada son
con signo. Por lo tanto, tenemos que A3A2A1A0  0100  410 y B3B2B1B0  0001
 110. El resultado de la operación de resta es F3F2F1F0  0011  310, el cual
es correcto. Por lo tanto, no se ha producido ningún desbordamiento y OVR  0.
Si el resultado hubiera sido negativo, habría estado en forma de complemento a 2.
(b) Un código de selección de 011 producirá la suma de las entradas A y B. No obs-
tante, como CN  1, habrá un acarreo de 1 que se sumará a la posición del LSB.
Esto producirá un resultado de F3F2F1F0  0110, el cual es 1 mayor que (A 
B). Las salidas CN4 y OVR serán 0. Para que aparezca la suma correcta en F, la
entrada CN deberá ser 0.
A0 { B0 = 0 { 0 = 0 = F0
A1 { B1 = 1 { 0 = 1 = F1
A2 { B2 = 1 { 1 = 0 = F2
A3 { B3 = 0 { 1 = 1 = F3
1 ← C
F3 F2 F1 F0
CN + 4
N
0100 ← A
 1110 ←
10011
B
SECCIÓN 6-16/CIRCUITOS INTEGRADOS TIPO ALU 333
334 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
74HC382
Z2
74HC382
Z1
0
0
1
1
Observaciones: Z1 suma los bits de menor orden.
Z2 suma los bits de mayor orden.
Σ7–Σ 0= suma de 8 bits.
OVR de Z2 es el indicador de
desbordamiento de 8 bits.
B7 B6 B5 B4
A7 A6 A5 A4
S2 S1 S0 CN B3 B2 B1 B0 A3 A2 A1 A0
OVR F2
F3 F1 F0
CN+4
Σ7 Σ6 Σ5 Σ4
B3 B2 B1 B0
A3 A2 A1 A0
S2 S1 S0 CN B3 B2 B1 B0 A3 A2 A1 A0
OVR F2 F1 F0
CN+4
Σ3 Σ2 Σ1 Σ0
F3
FIGURA 6-16 Dos chips ALU 74HC382 conectados como un sumador de ocho bits.
EJEMPLO 6-12
Expansión de la ALU
Un chip 74LS382 o 74HC382 individual opera sobre números de cuatro bits. Pueden
conectarse dos o más de estos chips en conjunto para operar sobre números más
grandes. La figura 6-16 muestra cómo se combinan dos ALUs de cuatro bits para
sumar dos números de ocho bits (B7B6B5B4B3B2B1B0 y A7A6A5A4A3A2A1A0) y produ-
cir la suma de salida ∑7∑6∑5∑4∑3∑2∑1∑0. Estudie el diagrama del circuito y observe los
siguientes puntos:
1. El chip Z1 opera con los cuatro bits de mayor orden de los dos números de
entrada. El chip Z2 opera con los cuatro bits de mayor orden.
2. La suma aparece en las salidas F de Z1 y Z2. Los bits de menor orden aparecen
en Z1 y los bits de mayor orden aparecen en Z2.
3. La entrada CN de Z1 es el acarreo hacia la posición del LSB. Para la suma se
hace 0.
4. La salida de acarreo [CN4] de Z1 se conecta a la entrada de acarreo [CN] de Z2.
5. La salida OVR de Z2 es el indicador de desbordamiento cuando se utilizan núme-
ros de ocho bits con signo.
6. Las entradas de selección correspondientes de los dos chips se conectan entre
sí, de manera que Z1 y Z2 siempre estén realizando la misma operación. Para la
suma, las entradas de selección se muestran como 011.
¿Cómo tendría que cambiarse el arreglo de la figura 6-16 para realizar la resta
(B  A)?
PREGUNTAS DE REPASO
Solución
El código de entrada de selección [consulte la tabla en la figura 6-15(b)] debe cam-
biarse a 001 y la entrada CN de Z1 debe hacerse 1.
Otras ALUs
El chip 74LS181/HC181 es otra ALU de cuatro bits. Tiene cuatro entradas de selec-
ción que pueden elegir cualquiera de 16 operaciones distintas.También tiene un bit
de entrada de modo que puede alternar entre las operaciones lógicas y las aritméti-
cas (sumar y restar). Esta ALU tiene una salida A  B que se utiliza para comparar
las magnitudes de las entradas A y B. Cuando los dos números de entrada sean exac-
tamente iguales, la salida A  B será 1; en caso contrario será 0.
El chip 74LS881/HC881 es similar al chip 181, sólo que tiene la capacidad de
realizar algunas operaciones lógicas adicionales.
1. Aplique las siguientes entradas a la ALU de la figura 6-15 y determine las sali-
das: S2S1S0  001, A3A2A1A0  1100, B3B2B1B0  1001, CN  1.
2. Cambie el código de selección a 011 y CN a 0, y repita la pregunta de repaso 1.
3. Cambie el código de selección a 110 y repita la pregunta 1.
4. Aplique las siguientes entradas al circuito de la figura 6-16 y determine las sali-
das: B  01010011, A  00011000.
5. Cambie el código de selección a 111 y repita la pregunta 4.
6. ¿Cuántos chips 74HC382 se necesitan para sumar dos números de 32 bits?
6-17 EJEMPLO PRÁCTICO DE DIAGNÓSTICO DE FALLAS
Un técnico está probando el sumador/restador que aparece en la figura 6-17 y regis-
tra los siguientes resultados de la prueba para los diversos modos de operación:
Modo 1: SUMA  0, RESTA  0. Las salidas de la suma siempre son iguales al
número en el registro A más uno. Por ejemplo, cuando [A]  0110 la suma es [
]
 0111. Esto es incorrecto, ya que las salidas de la compuerta OR y C0 deben ser
0 en este modo para producir [
]  [A].
Modo 2: SUMA  1, RESTA  0. La suma siempre es 1 más de lo que debe ser.
Por ejemplo, cuando [A]  0010 y [B]  0100 la salida de la suma es 0111 en vez
de 0110.
Modo 3: SUMA  0, RESTA  1. Las salidas 
 siempre son iguales a [A]  [B],
como es de esperarse.
Cuando el técnico examina estos resultados, ve que las salidas de la suma exceden
los resultados esperados por 1 para los primeros dos modos de operación. Al princi-
pio sospecha que hay una posible falla en una de las entradas del LSB para el suma-
dor, pero lo descarta debido a que una falla así también afectaría a la operación de
resta, la cual está funcionando en forma correcta. Más adelante se da cuenta que
hay otra falla que podría agregar un 1 a los resultados para los primeros dos modos
sin provocar un error en el modo de resta.
Recuerde que C0 se hace 1 en el modo de resta como parte de la operación
de complemento a 2 sobre [B]. Para los demás modos, C0 debe ser 0. El técnico
comprueba la conexión entre la señal RESTA y la entrada C0 que va al sumador, y
SECCIÓN 6-17/EJEMPLO PRÁCTICO DE DIAGNÓSTICO DE FALLAS 335
336 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
FIGURA 6-17 Circuito
sumador/restador en
paralelo.
74LS283
sumador en paralelo de cuatro bits
C4
A3 A2 A1 A0
Σ3 Σ2 Σ1 Σ0
C0
B0
B1
B2
B3
12 11 10 9
2
4
8 6
7 5 3 1
SUMA
RESTA
B3 B3 B2 B2 B1 B1 B0 B0
X
EJEMPLO 6-13
descubre que está abierta debido a una mala conexión de soldadura. Esta conexión
abierta explica los resultados observados, ya que el sumador TTL responde como
si C0 fuera un 1 lógico constante, lo cual provoca que se agregue un 1 adicional al
resultado en los modos 1 y 2. La conexión abierta no tendría efecto en el modo 3, ya
que se supone que C0 debe ser 1 de todas formas.
Considere de nuevo el circuito sumador/restador. Suponga que en la figura 6-17 hay
una interrupción en la ruta de conexión entre la entrada RESTA y las compuertas
AND en el punto X. Describa los efectos de esta conexión abierta sobre la operación
del circuito para cada modo.
Solución
Primero hay que tener en cuenta que esta falla producirá un 1 lógico en la entrada
afectada de las compuertas AND 2, 4, 6 y 8, con lo cual se habilitará en forma per-
manente cada una de estas compuertas para pasar su entrada B a la siguiente com-
puerta OR, como se muestra.
Modo 1: SUMA  0, RESTA  0. La falla provocará que el circuito realice una
resta… casi. El complemento a 1 de [B] llegará a las salidas de la compuerta OR
y se aplicará al sumador junto con [A]. Con C0  0 no se completará el comple-
mento a 2 de [B]; le faltará 1. Por lo tanto, el sumador producirá [A] – [B] – 1.
Para ilustrar esto, probemos con [A]  6  0110 y [B]  3  0011. El sumador
realizará la suma de la siguiente manera:
[B]  1100
[A]  0110
 1
冫0010
↑ Se descarta el acarreo.
complemento a 1 de
resultado
El resultado es 0010  2 en vez de 0011  3, como debería ser para la resta
normal.
Modo 2: SUMA  1, RESTA  0. Cuando SUMA  1, las compuertas AND
1, 3, 5 y 7 pasarán las entradas B a la siguiente compuerta OR. Así, cada com-
puerta OR tendrá B y B en sus entradas, con lo cual se producirá una salida de 1.
Por ejemplo, las entradas para la compuerta OR 9 serán B0 que proviene de la
compuerta AND 2 (debido a la falla) y B0 que proviene de la compuerta AND 1
(debido a que SUMA  1). En consecuencia, la compuerta OR 9 producirá una
salida de B0  B0, que siempre será un 1 lógico.
El sumador sumará el 111 que proviene de las compuertas OR con [A] para
producir una suma que será 1 menos que [A]. ¿Por qué? Porque 11112  110.
Modo 3: SUMA  0, RESTA  1. Este modo funcionará de manera correcta,
ya que se supone que RESTA  1 habilita de todas formas las compuertas AND
2, 4, 6 y 8.
6-18 USO DE LAS FUNCIONES DE LA BIBLIOTECA TTL
CON ALTERA
Los CIs sumador y ALU que vimos en este capítulo son sólo unos cuantos de los chips
MSI que han servido como bloques fundamentales de los sistemas digitales durante
décadas. Siempre que una tecnología tiene un tiempo de vida tan largo y útil, deja
un impacto duradero en el campo y en las personas que la utilizan. Es evidente que
los circuitos integrados TTL caen en esta categoría y continúan en varias formas hoy
en día. Los ingenieros y técnicos experimentados están familiarizados con las piezas
estándar. Los diseños existentes pueden refabricarse y actualizarse utilizando los
mismos circuitos básicos si pueden implementarse en un PLD de VLSI. Las hojas
técnicas para estos dispositivos ya están disponibles y el estudiar estas viejas piezas
TTL es una excelente manera de aprender los fundamentos de cualquier sistema
digital.
Por todas esas razones, el sistema de desarrollo de Altera ofrece lo que ellos
denominan como macrofunciones al estilo antiguo. Una macrofunción es una des-
cripción autocontenida de un circuito lógico con todas sus entradas, salidas y carac-
terísticas operacionales definidas. En otras palabras, se han tomado la molestia de
escribir el código necesario para hacer que un PLD emule la operación de muchos
dispositivos MSI TTL convencionales. Todo lo que el diseñador necesita saber es
cómo conectarlo al resto del sistema. En esta sección nos extenderemos en los con-
ceptos de las primitivas lógicas y las bibliotecas que presentamos en el capítulo 5,
para ver cómo podemos usar piezas MSI estándar en nuestros diseños.
La unidad aritmética lógica (ALU) 74382 es un CI bastante sofisticado. La tarea
de describir su operación mediante el uso de código de HDL es un buen reto, pero
ciertamente está dentro de nuestro alcance. Consulte de nuevo los ejemplos de este
CI y su operación, que cubrimos en la sección 6-16. Específicamente analice la figura
6-16, que muestra cómo conectar en cascada dos chips ALU de cuatro bits para for-
mar una ALU de ocho bits que podría servir como el corazón de la unidad central
de procesamiento (CPU) de un microcontrolador. La figura 6-18 muestra el método
gráfico para describir el circuito de ocho bits mediante el archivo de descripción
gráfica de Altera y los bloques de macrofunciones de su biblioteca de componentes.
Los símbolos para el 74382 sólo se eligen de la lista en la biblioteca de macrofuncio-
nes y se colocan en la pantalla. El proceso de conectar con alambres estos chips es
simple e intuitivo.
Es posible conectar piezas MSI de la biblioteca estándar utilizando sólo HDL.
Así como demostramos la conexión de primitivas de flip-flops para formar circuitos
más complejos, podemos conectar CIs tales como el 74382 con otras piezas. Los nom-
bres de todos los puertos de entrada y salida de estas piezas estándar se definen en
SECCIÓN 6-18/USO DE LAS FUNCIONES DE LA BIBLIOTECA TTL CON ALTERA 337
338 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
Modo 0
CIN
OVR
Z2
ALU 74382
Bent 7
Bent 6
Bent 5
Bent 4
Aent 7
Aent 6
Aent 5
Aent 4
acarreo_sal
desborde
sumsal 7
sumsal 6
sumsal 5
sumsal 4
Aent 3
Aent 2
Aent 1
Aent 0
sumsal 3
sumsal 2
sumsal 1
sumsal 0
acarreo_ent
Modo 1
Modo 2
Bent 3
Bent 2
Bent 1
Bent 0
2 S
S 1 S0 A3 B3 A2 B2 A1 B1 A0 B0
CN4 F3 F2 F1 F0
CIN
OVR
Z1
ALU 74382
S2 S1 S0 A3 B3 A2 B2 A1 B1 A0 B0
CN4 F3 F2 F1 F0
FIGURA 6-18 Un archivo de descripción gráfica de Altera para una ALU de ocho bits.
PREGUNTAS DE REPASO
un prototipo de función, el cual podemos encontrar en el menú de ayuda. El proto-
tipo de función que se da para un 74382 es
Prototipo de función en AHDL (el nombre de los puertos y el orden también
se aplican al HDL Verilog):
FUNCTION 74382 (s[2..0], a[3..0], b[3..0], cin)
RETURNS (ovr, cn4, f[3..0]);
1. ¿En dónde podemos encontrar información sobre el uso de un sumador com-
pleto 74283 en nuestro diseño de HDL?
2. ¿Qué es una macrofunción?
6-19 OPERACIONES LÓGICAS CON ARREGLOS DE BITS
En la sección anterior examinamos el uso de las macrofunciones para construir
sistemas a partir de piezas estándar. Ahora necesitamos practicar la escritura de
EJEMPLO 6-14
EJEMPLO 6-15
código de HDL en lugar de usar una macrofunción para crear un sumador similar
al de la figura 6-6. En esta sección extenderemos nuestra comprensión de las técnicas
de HDL en dos áreas principales: especificar grupos de bits en un arreglo y utilizar
operaciones lógicas para combinar arreglos de bits mediante el uso de expresiones
booleanas.
En la sección 6-12 analizamos el concepto de registro, la cual facilita mucho
la descripción del contenido de los registros y las señales que consisten de varios
bits. Los HDLs utilizan arreglos de bits en una notación similar para describir las
señales, como vimos en el capítulo 4. Por ejemplo, en AHDL la señal de cuatro bits
llamada d se define como:
VARIABLE d[3..0] :NODE.
En VHDL, el mismo formato de datos se expresa como:
SIGNAL d :BIT VECTOR (3 DOWNTO 0).
Cada bit en estos tipos de datos se designa en base a un número de elemento. En
este ejemplo de un arreglo de bits llamado d, se puede hacer referencia a los bits
como d3, d2, d1, d0. También se pueden agrupar bits en conjuntos. Por ejemplo, si
queremos hacer referencia a los tres bits más significativos de d como un conjunto,
podemos usar la expresión d[3..1] en AHDL y la expresión d (3 DOWNTO 1) en
VHDL. Una vez que se asigna un valor al arreglo y que se identifica el conjunto
deseado de bits, pueden realizarse operaciones lógicas sobre todo el conjunto com-
pleto de bits. Dos conjuntos pueden combinarse en una expresión lógica siempre
y cuando éstos sean del mismo tamaño (el mismo número de bits), de igual forma
como se combinan las variables individuales en una ecuación booleana. Cada uno de
los pares de bits correspondiente en los dos conjuntos se combina como se declara
en la ecuación lógica. Esto permite que una ecuación describa la operación lógica
que se va a realizar en cada bit de un conjunto.
Suponga que D3, D2, D1, D0 tiene el valor 101 y que G3, G2, G1, G0 tiene el valor 1100.
Vamos a definir Dnum  [D3, D2, D1, D0] y Gnum  [G3, G2, G1, G0]. Definamos tam-
bién Y  [Y3, Y2, Y1, Y0], en donde Y se relaciona con Dnum y Gnum de la siguiente
forma:
Y  Dnum • Gnum;
¿Cuál es el valor de Y después de esta operación?
Solución
Así,Y es un conjunto de cuatro bits con el valor 1000.
Para los valores de los registros descritos en el ejemplo 6-14, declare cada d, g y y.
Después escriba una expresión en la que utilice su HDL favorito, que realice la ope-
ración AND sobre todos los bits.
D3, D2, D1, D0 1 0 1 1
G3, G2, G1, G0 1 1 0 0
Y3, Y2, Y1, Y0 1 0 0 0
↔
↔
↔
↔
↔
↔
↔
↔
Se aplica un AND a cada posición de bit
SECCIÓN 6-19/OPERACIONES LÓGICAS CON ARREGLOS DE BITS 339
340 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
Solución
6-20 SUMADORES EN HDL
En esta sección veremos cómo crear un circuito sumador en paralelo que pueda
utilizarse para sumar arreglos de bits mediante la ecuación lógica para un sumador
completo de un solo bit. La figura 6-19 muestra el diagrama de bloques básico con
las señales etiquetadas para crear un sumador de cuatro bits. Observe que cada uno
de los bits del primer sumando [A], del sumando [B], del acarreo [C] y de la suma [S]
son variables tipo arreglo de bits y tienen números de índice asociados. La ecuación
para la suma si se utiliza la notación de registro es:
Observe que las señales de acarreo entre las etapas no son entradas o salidas
de este circuito en general, sino variables intermedias. Debemos desarrollar una
estrategia para etiquetar los bits de acarreo, de manera que puedan utilizarse en un
arreglo. Hemos optado por dejar que cada bit de acarreo sirva como entrada para su
correspondiente etapa de sumador, como se muestra en la figura 6-19. Por ejemplo,
C0 es una entrada para la etapa del bit 0, C1 es la entrada de acarreo para la etapa
del bit 1, y así en lo sucesivo. Los bits del arreglo de acarreos pueden considerarse
como los “alambres” que conectan a los sumadores. Este arreglo debe tener un aca-
rreo como entrada para cada etapa y también un acarreo como salida para la etapa
del bit más significativo. En este ejemplo habrá cinco bits, etiquetados de C4 a C0,
en el arreglo de acarreos. El conjunto de datos que representa las salidas de acarreo
sería de C4 a C1, y el conjunto de datos que representa las entradas de acarreo sería
de C3 a C0.
Cent  C[3..0]
Csal  C[4..1]
Los HDLs nos permiten especificar cuáles conjuntos de bits que salgan de todo
el arreglo queremos utilizar en una ecuación. Para asegurar que todas las varia-
bles que se están combinando en una ecuación lógica contengan el mismo número
de bits, podemos empezar con la ecuación general para el acarreo de salida de un
sumador de un bit, como se muestra a continuación:
Csal  AB  ACent  BCent
ENTITY and nivelbits IS
PORT(d, g :IN BIT VECTOR (3 DOWNTO 0);
y :OUT BIT VECTOR (3 DOWNTO 0));
END and nivelbits;
ARCHITECTURE a OF and nivelbits IS
BEGIN
y = d AND g;
END a;
SUBDESIGN and nivelbits
( d[3..0], g[3..0] :INPUT;
y[3..0] :OUTPUT;)
BEGIN
y[] = d[]  g[];
END;
[S] = [A] { [B] { [C];
PRIMER SUMANDO A3 A2 A1 A0 A
SUMANDO B3 B2 B1 B0 B
ACARREOent C3 C2 C1 C0 Cent
SUMA S3 S2 S1 S0 S
PRIMER SUMANDO A3 A2 A1 A0 A
SUMANDO B3 B2 B1 B0 B
ACARREOent C3 C2 C1 C0 Cent
ACARREOsal C4 C3 C2 C1 Csal
Genera la suma
S=A ⊕ [B ⊕ Cent]
Genera los bits de acarreo
C3
FA
Bit 3
Csal
B3
A3
S3
C2
FA
Bit 2
B2
A2
S2
C1
FA
Bit 1
B1
A1
S1
FA
Bit 0
B0
A0
S0
Cent
C0
C4
Csal = A•B + A•Cent + B•Cent
FIGURA 6-19 Sumador en paralelo de cuatro bits.
B [3 . .0]
CENT S [3 . .0]
CSAL
1
X
A [3 . .0]
B [3 . .0]
Cent
X
X
X
X
S [3 . .0]
Csal
A [3 . .0]
FIGURA 6-20 Símbolo
de bloque generado por
MAXPLUS de Altera.
Si sustituimos nuestra definición anterior de Cent y Csal, tendremos la siguiente
ecuación para el acarreo de salida del sumador de cuatro bits:
El símbolo gráfico para este dispositivo se muestra en la figura 6-20. Observe
que no muestra el arreglo de acarreos. Es una variable o señal dentro del bloque.
Altera permite que cualquier bloque SUBDESIGN en AHDL o ENTITY en VHDL
(incluso los que usted cree) se represente mediante un símbolo de diagrama de blo-
ques gráfico tal como éste. Todo esto forma parte del esquema de diseño jerárquico
del sistema de desarrollo de Altera (descrito en el capítulo 4).
Para resumir esta información, la figura 6-19 muestra el “interior” del diagrama
de bloques en la figura 6-20 y sintetiza la operación descrita por las dos ecuaciones.
Ahora veamos los archivos basados en texto que pueden usarse para generar un sím-
bolo de bloque como el de la figura 6-20, mediante el uso de AHDL y de VHDL.
C[4..1] = A[3..0]  B[3..0] + A[3..0]  C[3..0] + B[3..0]  C[3..0]
SECCIÓN 6-20/SUMADORES EN HDL 341
342 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
SUBDESIGN fig6_21
(
cent :INPUT; --acarreo de entrada
a[3..0] :INPUT; -- primer sumando
b[3..0] :INPUT; -- sumando
s[3..0] :OUTPUT; -- suma
csal :OUTPUT; -- acarreo de salida
)
VARIABLE
c[4..0] :NODE; -- el arreglo de acarreos es de 5 bits
BEGIN
c[0] = cent;
s[ ] = a[ ] $ b[ ] $ c[3..0]; -- genera la suma
c[4..1] = (a[ ]  b[ ] # (a[ ]  c[3..0]) # (b[ ]  c[3..0]);
csal = c[4]; -- carry out
END;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
FIGURA 6-21 Sumador en AHDL.
SUMADOR DE CUATRO BITS EN AHDL
En las líneas 14 y 15 del código de AHDL de la figura 6-21, observe la sintaxis para
hacer referencia a los arreglos de bits en su totalidad. Se da el nombre, seguido
de [ ]. Si no se designan bits dentro de los corchetes, significa que todos los bits
que se declararon se incluyen en las operaciones. Las líneas 14 y 15 describen por
completo los cuatro circuitos sumadores y calculan la suma. Para poder elegir un
conjunto específico de elementos del arreglo (es decir, un subconjunto del arreglo),
el nombre va seguido del intervalo de números de los elementos entre corchetes. Por
ejemplo, la ecuación de acarreo (línea 15) en sintaxis de AHDL es:
Observe que sólo se están asignando cuatro bits del arreglo de acarreos c[ ], incluso
aunque el arreglo sea de cinco bits. De esta forma, el acarreo que sale de cada suma-
dor de bit individual se asigna como el acarreo que entra a la siguiente etapa.
SUMADOR DE CUATRO BITS ENVHDL
En el código de VHDL de la figura 6-22, observe la sintaxis para hacer referencia
a los arreglos de bits en su totalidad. Sólo se utiliza el nombre sin designaciones
de bits. Las líneas 15 y 16 describen por completo los cuatro circuitos sumadores
que calcularán la suma. Para poder elegir un conjunto específico de elementos del
arreglo (es decir, un subconjunto del arreglo), el nombre va seguido del intervalo de
números de los elementos entre paréntesis. La ecuación del acarreo (línea 16) en
sintaxis de VHDL es:
Observe que sólo se están asignando cuatro bits del arreglo de acarreos c, incluso
aunque el arreglo sea de cinco bits. De esta forma, el acarreo que sale de cada suma-
dor de un solo bit se asigna como el acarreo que entra a la siguiente etapa.
A
H
D
L
c[4..1] = a[]  b[] # a[]  c[3..0] # b[]  c[3..0];
V
H
D
L
c(4 DOWNTO 1) = (a AND b) OR (a AND c(3 DOWNTO 0)) OR (b
AND c(3 DOWNTO 0));
FIGURA 6-22 Sumador en VHDL.
1 ENTITY fig6_22 IS
2 PORT(
3 cent :IN BIT;
4 a :IN BIT_VECTOR(3 DOWNTO 0);
5 b :IN BIT_VECTOR(3 DOWNTO 0);
6 s :OUT BIT_VECTOR (3 DOWNTO 0);
7 csal :OUT BIT);
8 END fig6_22;
9
10 ARCHITECTURE a OF fig6_22 IS
11 SIGNAL c :BIT_VECTOR (4 DOWNTO 0); -- el acarreo requiere un arreglo de 5 bits
12
13 BEGIN
14 c(0) = cent; -- Lee el acarreo que va al arreglo de bits
15 s = a XOR b XOR c(3 DOWNTO 0); -- Genera los bits de suma
16 c(4 DOWNTO 0) = (a AND b)
17 OR (a AND c(3 DOWNTO 0))
18 OR (b AND c(3 DOWNTO 0));
19 csal = c(4); -- sacar el acarreo del MSB.
20 END
PREGUNTAS DE REPASO 1. Si [A]  1001 y [B]  0011, ¿cuál es el valor de (a) [A]  [B]? (b) ¿de [A]  [B]?
(Observe que  significa AND;  significa OR.)
2. Si A[7..0]  1010 1100, ¿cuál es el valor de (a) A[7..4]? ¿de (b) A[5..2]?
3. En AHDL se declara el siguiente objeto: conmuta[7..0]:INPUT. Proporcione
una expresión para los cuatro bits menos significativos, utilizando sintaxis de
AHDL.
4. EnVHDL se declara el siguiente objeto: conmuta :IN BIT_VECTOR (7 DOWNTO 0).
Proporcione una expresión para los cuatro bits menos significativos, utilizando
sintaxis de VHDL.
5. ¿Cuál sería el resultado de aplicar la operación OR a los dos registros del ejem-
plo 6-14?
6. Escriba una instrucción en HDL que aplique una operación OR a los dos objetos
d y g. Utilice su HDL favorito.
7. Escriba una instrucción en HDL que aplique una operación XOR a los dos bits
más significativos de d, con los dos bits menos significativos de g y que coloque
el resultado en los dos bits medios de x.
6-21 EXPANSIÓN DE LA CAPACIDAD DE BITS DE UN CIRCUITO
Una de las formas en que hemos aprendido a aumentar la capacidad de un circuito
es conectar en cascada las etapas, como lo hicimos con el chip ALU 74382 en la sec-
ción anterior. Podemos hacer esto mediante el método del archivo de diseño gráfico
de Altera (como en la figura 6-18) o mediante el método del HDL estructural basado
en texto. Con cualquiera de estos métodos necesitamos especificar todas las entra-
das, salidas e interconexiones entre los bloques. En el caso de este circuito sumador
SECCIÓN 6-21/EXPANSIÓN DE LA CAPACIDAD DE BITS DE UN CIRCUITO 343
344 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
1 CONSTANT numero_de_bits = 8; -- establece el número total de bits
2 CONSTANT n = numero_de_bits – 1; -- n es el índice de bit más alto
3
4 SUBDESIGN fig6_23
5 (
6 suma :INPUT; -- control de suma
7 resta :INPUT; -- control de resta y acarreo entrante LSB
8 a[n..0] :INPUT; -- bits del primer sumando
9 bent[n..0] :INPUT; -- bits del sumando
10 s[n..0] :OUTPUT; -- bits de suma
11 acarrsal :OUTPUT; -- acarreo de SALIDA del MSB
12 )
13 VARIABLE
14 c[n+1..0] :NODE; -- vector de acarreo intermedio
15 b[n..0] :NODE; -- vector de operando intermedio
16 BEGIN
17 b[ ] = bent[ ]  suma # NOT bent[ ]  resta;
18 c[0] = resta; -- Lee acarreo y lo guarda en variable de grupo
19 s[ ] = a[ ] $ b[ ] $ c[n..0]; -- Genera las sumas
20 c[n+1..1] = a[ ]  b[ ] # a[ ]  c[n..0] # (b[ ]  c[n..0]);
21 acarrsal = c[n+1]; -- saca el acarreo del MSB.
22 END;
FIGURA 6-23 Descripción de un sumador/restador de n bits en AHDL.
sería más sencillo empezar con el archivo HDL para un sumador de cuatro bits y sólo
incrementar el tamaño de cada una de las variables de los operandos en la ecuación.
Por ejemplo, si quisiéramos un sumador de ocho bits sólo tendríamos que expandir
a, b y s a ocho bits. El código quedaría casi igual al del sumador de cuatro bits antes
mostrado. Esto es sólo un vistazo de algunas de las mejoras en eficiencia que ofrece
el HDL. No obstante, la forma en que está escrito el código, los índices de cada señal
y cada una de las especificaciones de los arreglos de bits en la ecuación tendrían que
redefinirse también. En otras palabras, el diseñador tendría que examinar el código
con cuidado y cambiar todos los 3s por 7s, todos los 4s por 8s, y así en lo sucesivo.
Uno de los principios importantes en la ingeniería de software es la represen-
tación simbólica de las constantes que se utilizan en el código. Las constantes son
sólo números fijos representados por un nombre (símbolo). Si podemos definir un
símbolo (es decir, idear un nombre) en la parte superior del código fuente que se
asigne al valor para el número total de bits, y después utilizar este símbolo (nombre)
en el código, es mucho más sencillo modificar el circuito. Sólo hay que cambiar una
línea de código para expandir la capacidad del circuito. Los ejemplos que se mues-
tran a continuación agregan esta característica al código y también lo actualizan
para implementar el circuito sumador/restador como el de la figura 6-14. Hay que
recalcar que al expandir la capacidad de un circuito sumador tal como éste también
reducirá la velocidad del circuito, debido a la propagación del acarreo (que descri-
bimos en la sección 6-13). Para poder mantener estos ejemplos simples, no hemos
agregado ningún tipo de lógica para generar un acarreo adelantado.
SUMADOR/RESTADOR EN AHDL
En AHDL es muy fácil usar constantes, como se muestra en las líneas 1 y 2 de la
figura 6-23. La palabra clave CONSTANT va seguida del nombre simbólico y del
A
H
D
L
valor que se le va a asignar. Observe que podemos permitir que el compilador rea-
lice algunos cálculos matemáticos simples para establecer un valor para una cons-
tante con base en otra. También podemos usar esta característica al referirnos a
la constante en el código, como se muestra en las líneas 14, 20 y 21. Por ejemplo,
podemos hacer referencia a c[7] como c[n] y a c[8] como c[n1]. Para expandir el
tamaño de este sumador/restador sólo hay que cambiar el valor de numero_de_bits
por el número de bits deseado y después volver a compilar el programa.
Como mencionamos antes, actualizamos este código del ejemplo anterior
para convertirlo en un sumador/restador como el de la figura 6-14. También hemos
incluido las entradas suma y resta en las líneas 6 y 7, y una nueva variable interme-
dia llamada b[ ] en la línea 15. La primera instrucción concurrente en la línea 17
describe toda la lógica SOP que controla las entradas b para el sumador en la figura
6-14. Primero describe una operación AND lógica entre cada bit de bent[ ] y el nivel
lógico en suma. A este resultado se le aplica un OR (bit por bit) con el resultado de
aplicar un AND al complemento de cada bit de bent[ ] con resta. En otras palabras,
crea la siguiente función booleana para cada bit: b  bent  suma  bent  resta. La
señal b[ ] se utiliza entonces en las ecuaciones del sumador en vez de bent[ ], como
en los ejemplos anteriores. Observe en la línea 18 que también se usa resta para
conectar el LSB del arreglo de acarreos (acarreo hacia el bit 0) con el valor en resta,
que necesita ser 0 cuando se suma y 1 cuando se resta.
SUMADOR/RESTADOR ENVHDL
EnVHDL, utilizar constantes es algo un poco más complicado. Las constantes deben
incluirse en un paquete dentro del bloque PACKAGE, como se muestra en la figura
6-24, líneas 1 a 4. Los paquetes también se utilizan para contener definiciones de
componentes y demás información que debe estar disponible para todas las entida-
des en el archivo de diseño. Observe en la línea 6 que la palabra clave USE indica al
compilador que debe usar las definiciones en este paquete para todo el archivo de
diseño. Dentro del paquete, la palabra clave CONSTANT va seguida del nombre sim-
bólico, su tipo y el valor que se le va a signar por medio del operador :. Observe en
la línea 3 que podemos permitir que el compilador realice algunos cálculos matemá-
ticos simples para establecer un valor de una constante con base en otra. También
podemos usar esta característica al referirnos a las constantes en el código, como
se muestra en las líneas 34 y 37. Por ejemplo, podemos referirnos a c(7) como c(n) y
a c(8) como c(n1). Para expandir el tamaño de este sumador/restador sólo necesi-
tamos cambiar el valor de numero_de_bits por el número de bits deseado y después
volvemos a compilar el programa.
Como mencionamos antes, hemos actualizado el código del ejemplo anterior
para convertirlo en un sumador/restador como el de la figura 6-14. Se han incluido
las entradas suma y resta en las líneas 10 y 11, junto con una nueva señal llamada
b en la línea 20, bnot en la línea 21 y modo en la línea 22. La primera instrucción
concurrente en la línea 24 sirve para crear el complemento a 1 de bent. Los circuitos
SOP en la figura 6-14 que controlan las entradas b para el sumador seleccionan las
entradas bent si suma  1, o el complemento a 1 (bnot) si resta  1. Ésta es una exce-
lente aplicación de la asignación de señal selecta de VHDL, como se muestra en las
líneas 27 a 30. Cuando suma es 1, bent se canaliza hacia b. Cuando resta es 1, bnot
se canaliza a b. La señal b se utiliza entonces en las ecuaciones de los sumadores en
vez de bent, como vimos en los ejemplos anteriores de los sumadores. Observe en la
línea 32 que también se utiliza resta para conectar el LSB del arreglo de acarreos (el
acarreo hacia el bit 0) con el valor en resta, el cual necesita ser 0 cuando se suma y
1 cuando se resta.
V
H
D
L
SECCIÓN 6-21/EXPANSIÓN DE LA CAPACIDAD DE BITS DE UN CIRCUITO 345
346 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
1 PACKAGE const IS
2 CONSTANT numero_de_bits :INTEGER:=8; -- establece el número total de bits
3 CONSTANT n :INTEGET:= numero_de_bits – 1; -- número de índice del MSB
4 END const;
5
6 USE work.const.all;
7
8 ENTITY fig6_24 IS
9 PORT(
10 suma :IN BIT; -- control de suma
11 resta :IN BIT; -- control de resta y acarreo del LSB
12 a :IN BIT_VECTOR(n DOWNTO 0);
13 bent :IN BIT_VECTOR(n DOWNTO 0);
14 s :OUT BIT_VECTOR(n DOWNTO 0);
15 acarrsal :OUT BIT);
16 END fig6_24;
17
18 ARCHITECTURE a OF fig6_24 IS
19 SIGNAL c :BIT_VECTOR (n+1 DOWNTO 0); -- define acarreos intermedios
20 SIGNAL b :BIT_VECTOR (n DOWNTO 0); -- define operando intermedio
21 SIGNAL bnot :BIT_VECTOR (n DOWNTO 0);
22 SIGNAL modo :BIT_VECTOR (1 DOWNTO 0);
23 BEGIN
24 bnot = NOT bent;
25 modo = suma  resta;
26
27 WITH modo SELECT
28 b = bent WHEN “10”, -- suma
29 bnot WHEN “01”, -- resta
30 “0000” WHEN OTHERS;
31
32 c(0) = resta; -- lee el acarr_ent al arreglo de bits
33 s = a XOR b XOR x(n DOWNO 0); -- genera los bits de suma
34 c(n+1 DOWNTO 1) = (a AND b) OR
35 (a AND c(n DOWNTO 0)) OR
36 (b AND c(n DOWNTO 0)); -- genera acarreos
37 acarrsal = c(n+1); -- saca el acarreo del MSB.
38
39 END a;
FIGURA 6-24 Descripción de un sumador/restador de n bits en VHDL.
Instrucción GENERATE de VHDL
Otra manera de crear circuitos que procesen más bits es mediante la instrucción
GENERATE deVHDL. Es una forma muy concisa de indicar al compilador que debe
replicar varios componentes que se conectarán en cascada. Como hemos mostrado,
existen muchas otras formas de lograr lo mismo y si la naturaleza abstracta de este
método le parece difícil, puede usar otro método. Aquí ofrecemos la instrucción
GENERATE por cuestión de cubrir todos los métodos. Los circuitos sumadores que
hemos estado viendo son cadenas en cascada de módulos de sumadores completos
de un solo bit. El código de VHDL para un módulo de sumador completo de un solo
bit se muestra en la figura 6-25. Se deben conectar múltiples instancias de este
1 ENTITY suma1 IS
2 PORT (
3 cent :IN BIT;
4 a :IN BIT;
5 b :IN BIT;
6 s :OUT BIT;
7 csal :OUT BIT;
8 END suma1;
9
10 ARCHITECTURE a OF suma1 IS
11 BEGIN
12
13 s = a XOR b XOR cent;
14 csal = (a AND b) OR (a AND cent) OR (b AND cent);
15 END a;
FIGURA 6-25 Sumador
completo de un solo bit
en VHDL.
módulo entre sí para formar un circuito sumador de n bits. Desde luego que pode-
mos hacerlo mediante el uso de las mismas técnicas de componentes que vimos
antes, pero obtendríamos un código muy extenso.
Para que el código sea más conciso y fácil de modificar se necesita una estrate-
gia para la forma en que se van a etiquetar las entradas y salidas para cada módulo.
Como mencionamos antes, el sumador del bit 0 tiene entradas con un índice de 0
(por ejemplo, a0, b0, c0, s0). El acarreo que sale del bit 0 está etiquetado como c1 y
se convierte en la entrada de acarreo para el módulo del sumador del bit 1. Cada vez
que instanciamos otro componente para el siguiente bit del sumador multibits, el
número de índice de todas las conexiones avanza en 1 (a1, b1, c1, s1). La instrucción
GENERATE nos permite repetir un instanciamiento de un componente n veces,
pues se incrementa el número de índice en 1 para cada instanciamiento hasta n. En
la línea 27 de la figura 6-26 se utiliza la palabra clave GENERATE en un ciclo itera-
tivo (ciclo FOR), lo cual significa que un conjunto de acciones descriptivas (PORT
MAP) se repetirá cierto número de veces. La variable i representa un número de
índice que empieza en 0 (para la primera iteración) y termina en n (la última ite-
ración). Las ventajas de este método son la compactación del código y la facilidad
con la que se puede expandir el número de bits. El código en la figura 6-26 muestra
cómo usar un sumador de un solo bit (figura 6-25) como un componente para gene-
rar un circuito sumador de ocho bits. Recuerde que el archivo para el sumador de
un solo bit (suma1.vhd en la figura 6-25) debe guardarse en la misma carpeta que
el archivo de diseño que lo utiliza, para generar múltiples instancias del sumador
(fig6_26.vhd).
El componente del sumador de un solo bit se define en las líneas 17 a 23 de la
figura 6-26. Para la primera iteración de las líneas 29 y 30 el valor de i es 0, con lo
cual se crea una etapa de sumador para el bit 0. La segunda iteración i se incre-
menta a 1 para formar la etapa de sumador 1. Esto continúa hasta que i sea igual a
n, con lo que se genera cada una de las etapas del sumador de (n  1) bits. Observe
que VHDL nos permite la opción de colocar etiquetas al principio de una línea de
código para ayudarnos a describir su propósito. Por ejemplo, en la línea 27 se utiliza
la etiqueta repetir y en la línea 29 se utiliza la etiqueta casc. Las etiquetas son opcio-
nales pero siempre deben terminar con el signo de dos puntos.
Bibliotecas de módulos parametrizados
Es evidente que el uso de las técnicas de HDL facilita la modificación de la capaci-
dad de bits de un circuito genérico. En este capítulo podemos ver que es fácil cam-
biar de un sumador de cuatro bits a un sumador de ocho, 12 o 16 bits. Cuando Altera
SECCIÓN 6-21/EXPANSIÓN DE LA CAPACIDAD DE BITS DE UN CIRCUITO 347
348 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
FIGURA 6-26 Uso de la instrucción GENERATE de VHDL.
1 PACKAGE const IS
2 CONSTANT numero_de_bits :INTEGER:=8; -- especifica el número de bits
3 CONSTANT n :INTEGER:=numero_de_bits – 1; -- n es el número del bit MSB
4 END const;
5 USE work.const.all;
6 ENTITY fig6_26 IS
7 PORT(
8 acarrent :IN bit;
9 aent :IN BIT_VECTOR (n DOWNTO 0);
10 bent :IN BIT_VECTOR (n DOWNTO 0);
11 ssal :OUT BIT_VECTOR (n DOWNTO 0);
12 acarrsal :OUT bit);
13 END fig6_26;
14
15 ARCHITECTURE a OF fig6_26 IS
16
17 COMPONENT suma1 -- declara un sumador complete de un solo bit
18 PORT (
19 cin :IN BIT;
20 a, b :IN BIT;
21 s :OUT BIT;
22 csal :OUT BIT);
23 END COMPONENT;
24 SIGNAL c :BIT_VECTOR (n+1 DOWNTO 0); -- declara arreglo de bits para acarreos
25 BEGIN
26 c(0) = acarrent; -- coloca el LSB en el arreglo
(acarreo de entrada)
27 repetir:FOR i IN 0 TO n GENERATE -- instancia n+1 sumadores
28 -- los conecta en cascada
29 casc:suma1 PORT MAP (cent = c(i), a= aent(i), b = bent(i),
30 s = ssal(i), csal = c(i+1));
31 END GENERATE;
32 acarrsal = c(n+1); -- saca el acarreo de la etapa del n-esimo bit
33 END a;
creó su biblioteca de funciones útiles, también aprovechó estas técnicas y creó lo
que se conoce como megafunciones, que incluyen una biblioteca de módulos para-
metrizados (LPMs). Estas funciones no tratan de imitar un CI estándar específico
como las macrofunciones al estilo antiguo, sino que ofrecen una solución genérica
para los diversos tipos de circuitos lógicos que son útiles en los sistemas digitales.
Algunos ejemplos de estos circuitos genéricos que hemos visto hasta ahora son las
compuertas lógicas (AND, OR, XOR), los latches, los contadores, los registros de
desplazamiento y los sumadores. El término parametrizados significa que cuando se
instancia una función de la biblioteca, también se especifican ciertos parámetros
para definir ciertos atributos (por ejemplo, la capacidad de bits) para el circuito
que se está describiendo. Puede consultar los diversos LPMs que hay disponibles a
través del menú HELP (AYUDA) bajo megafunctions/LPM (megafunciones/LPM).
Esta documentación describe los parámetros que puede especificar el usuario, así
como las características de los puertos del dispositivo.
PREGUNTAS DE REPASO 1. ¿Qué palabra clave se utiliza para asignar un nombre simbólico a un número
fijo?
2. ¿En dónde se definen las constantes en AHDL? ¿En dónde se definen en
VHDL?
3. ¿Por qué son útiles las constantes?
4. Si la constante val_max tiene un valor de 127, ¿cómo interpretará un compilador
la expresión val_max -5?
5. ¿Para qué se utiliza la instrucción GENERATE en VHDL?
RESUMEN
1. Para representar números con signo en binario se adjunta un bit de signo como
el MSB. Un signo  es un 0 y un signo  es un 1.
2. Para obtener el complemento a 2 de un número binario se complementa cada
bit y después se suma 1 al resultado.
3. En el método de complemento a 2 para representar números binarios con signo,
los números positivos se representan mediante un bit de signo de 0, seguido de
la magnitud en su forma binaria natural. Los números negativos se representan
mediante un bit de signo de 1, seguido de la magnitud en forma de comple-
mento a 2.
4. Para cambiar el signo a un número binario con signo, se obtiene el complemento
a 2 del número, incluyendo el bit de signo.
5. Para restar números binarios con signo se cambia el signo al el sustraendo (com-
plementando a 2) y se suma al minuendo.
6. En la suma BCD se necesita un paso de corrección especial cada vez que la suma
de la posición de un dígito excede de 9 (1001).
7. Cuando se representan números binarios con signo en hexadecimal, el MSD del
número hexadecimal será 8 o mayor cuando el número sea negativo; será 7 o
menor cuando el número sea positivo.
8. La unidad aritmética/lógica (ALU) de una computadora contiene los circuitos
necesarios para realizar operaciones aritméticas y lógicas sobre números bina-
rios almacenados en la memoria.
9. El acumulador es un registro en la ALU. Almacena uno de los números sobre
los que se opera y también es el lugar en donde se almacena el resultado de la
operación en la ALU.
10. Un sumador completo realiza la suma de dos bits más una entrada de acarreo.
Un sumador binario en paralelo está formado por sumadores completos conec-
tados en cascada.
11. El problema de los retrasos excesivos producidos por la propagación del acarreo
puede reducirse mediante un circuito lógico de acarreo adelantado.
12. Los sumadores de CI tales como el 74LS83/HC83 y el 74LS283/HC283 pueden
utilizarse para construir sumadores y restadores en paralelo de alta velocidad.
13. Un circuito sumador de BCD requiere circuitos de corrección especiales.
14. Hay ALUs de circuito integrado disponibles, las cuales pueden combinarse para
realizar una amplia gama de operaciones aritméticas y lógicas sobre dos núme-
ros de entrada.
15. Hay funciones prefabricadas disponibles en las bibliotecas de Altera.
16. Estas piezas de biblioteca y los circuitos de HDL que usted cree pueden interco-
nectarse mediante las técnicas de HDL gráfica o estructural.
RESUMEN 349
350 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
17. Pueden realizarse operaciones lógicas sobre todos los bits en un conjunto
mediante el uso de ecuaciones booleanas.
18. El hábito de practicar buenas técnicas de ingeniería de software, en específico
el uso de símbolos para representar constantes, nos permite modificar y expan-
dir con facilidad el código en cuanto a la capacidad de bits de circuitos tales
como los sumadores completos.
19. Las bibliotecas de módulos parametrizados (LPMs) ofrecen una solución flexi-
ble y que puede modificarse o expandirse con facilidad para muchos tipos de
circuitos digitales.
TÉRMINOS IMPORTANTES
acarreo
acarreo adelantado
biblioteca de funciones
parametrizadas (LPMs)
bit de signo
ciclo FOR
ciclo iterativo
conjuntos
constantes
desbordamiento
GENERATE
macrofunción
megafunciones
minuendo
negación
PACKAGE
primer sumando
propagación de acarreo
prototipo de función
registro acumulador
sistema de complemento
a 2
sistema de
signo-magnitud
sumador completo (FA)
sumador/restador
sumando
sustraendo
unidad aritmética/lógica
(ALU)
PROBLEMAS
SECCIÓN 6-1
6-1. Sume lo siguiente en binario. Compruebe sus resultados realizando la suma
en decimal.
(a)*
1010  1011 (d) 0.1011  0.1111
(b)* 1111  0011 (e) 10011011  10011101
(c)* 1011.1101  11.1 (f) 1010.01  10.111
SECCIÓN 6-2
6-2. Represente cada uno de los siguientes números decimales con signo en el
sistema de complemento a 2. Use un total de ocho bits, incluyendo el bit de
signo.
(a)* 32 (e)* 127 (i) 1 (m) 84
(b)* 14 (f)* 127 (j) 128 (n) 3
(c)* 63 (g)* 89 (k) 169 (o) 3
(d)* 104 (h)* 55 (l) 0 (p) 190
6-3. Cada uno de los siguientes números representa un número decimal con
signo en el sistema de complemento a 2. Determine el valor decimal en
cada caso. (Sugerencia: use la negación para convertir los números negativos
en positivos.)
(a)* 01101 (f) 10000000
(b)* 11101 (g) 11111111
(c)* 01111011 (h) 10000001
(d)* 10011001 (i) 01100011
(e)* 01111111 (j) 11011001
* Encontrará las respuestas a los problemas marcados con asterisco al final del libro.
B
B
B
6-4. (a) ¿Cuál es el intervalo de valores decimales con signo que puede repre-
sentarse utilizando 12 bits, incluyendo el bit de signo?
(b) ¿Cuántos bits se requieren para representar números decimales desde
32,768 hasta 32,767?
6-5.* Liste en orden todos los números con signo que puedan representarse en
cinco bits, usando el sistema de complemento a 2.
6-6. Represente cada uno de los siguientes valores decimales como un valor
binario con signo de ocho bits. Después niegue cada uno de ellos.
(a)* 73 (b) *12 (c) 15 (d) 1 (e) 128 (f) 127
6-7. (a)* ¿Cuál es el intervalo de valores decimales sin signo que puede repre-
sentarse en 10 bits? ¿Cuál es el intervalo de valores decimales con signo
si utilizamos el mismo número de bits?
(b) Repita ambos problemas usando ocho bits.
SECCIONES 6-3 Y 6-4
6-8. La razón por la que el método de signo-magnitud para representar números
con signo no se utiliza en la mayoría de las computadoras puede ilustrarse
mediante lo siguiente:
(a) Represente 12 en ocho bits, utilizando la forma de signo-magnitud.
(b) Represente 12 en ocho bits, utilizando la forma de signo-magnitud.
(c) Sume los dos números binarios y observe que la suma no se parece en
nada a cero.
6-9. Realice las siguientes operaciones en el sistema de complemento a 2. Use
ocho bits (incluyendo el bit de signo) para cada número. Compruebe sus
resultados convirtiendo el resultado binario de vuelta en decimal.
(a)* Sume 9 y 6. (f) Reste 21 de 13.
(b)* Sume 14 y 17. (g) Reste 47 de 47.
(c)* Sume 19 y 24. (h) Reste 36 de 15.
(d)* Sume 48 de 80. (i) Sume 17 y 17.
(e)* Reste 16 de 17. (j) Reste 17 de 17.
6-10. Repita el problema 6-9 para los siguientes casos y demuestre que hay des-
bordamiento en cada uno de ellos.
(a) Sume 37 y 95. (c) Sume 37 y 95.
(b) Reste 37 de 95. (d) Reste 37 de 95.
SECCIONES 6-5 Y 6-6
6-11. Multiplique los siguientes pares de números binarios y compruebe sus resul-
tados realizando la multiplicación en decimal.
(a)* 111  101 (c) 101.101  110.010
(b)* 1011  1011 (d) .1101  .1011
6-12. Realice las siguientes divisiones. Compruebe sus resultados realizando la
división en decimal.
(a)* 1100  100 (c) 10111  100
(b)* 111111  1001 (d) 10110.1101  1.1
PROBLEMAS 351
B
B
352 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
FIGURA 6-27
Problema 6-20.
A
B
HA
ACARREO
ENTRADA
HA
SUMA
ACARREO
SUMA
ACARREO
ACARREO
SALIDA
Sumador completo
SECCIONES 6-7 Y 6-8
6-13. Sume los siguientes números decimales después de convertir cada uno de
ellos en su código BCD.
(a)* 74  23 (d) 385  118
(b)* 58  37 (e) 998003
(c)* 147  380 (f) 623  599
6-14. Encuentre la suma de cada uno de los siguientes pares de números hexade-
cimales.
(a)* 3E91  2F93 (d) 2FFE  0002
(b)* 91B  6F2 (e) FFF  0FF
(c)* ABC  DEF (f) D191  AAAB
6-15. Realice las siguientes restas con los pares de números hexadecimales:
(a)* 3E91 – 2F93 (d) 0200 – 0003
(b)* 91B – 6F2 (e) F000 – EFFF
(c)* 0300 – 005A (f) 2F00 – 4000
6-16. El manual del propietario para una pequeña microcomputadora establece
que la computadora cuenta con ubicaciones de memoria utilizables en las
siguientes direcciones hexadecimales: 0200 a 03FF y 4000 a 7FD0. ¿Cuál es
el número total de ubicaciones de memoria disponibles?
6-17. (a)* Cierta ubicación de memoria de ocho bits almacena los datos hexade-
cimales 77. Si éste representa a un número sin signo, ¿cuál es su valor
decimal?
(b)* Si éste representa a un número con signo, ¿cuál es su valor decimal?
(c) Repita los incisos (a) y (b) si el valor de los datos es E5.
SECCIÓN 6-11
6-18. Convierta todas las compuertas en el circuito FA de la figura 6-8 a compuer-
tas NAND.
6-19.* Escriba la tabla de funciones para un medio sumador (entradas A y B; sali-
das SUMA y ACARREO). A partir de la tabla de funciones, diseñe un cir-
cuito lógico que actúe como medio sumador.
6-20. Un sumador completo puede implementarse en muchas formas distintas.
La figura 6-27 muestra cómo puede construirse uno a partir de dos medios
sumadores. Construya una tabla de funciones para este arreglo y verifique
que opere como un FA.
B
B
B
SECCIÓN 6-12
6-21.* Consulte la figura 6-10. Determine el contenido del registro A después de
la siguiente secuencia de operaciones: [A]  0000, [0100] → [B], [S] → [A],
[1011] → [B], [S] → [A].
6-22. Consulte la figura 6-10. Suponga que cada FF tiene tPLH  tPHL  30 ns y
un tiempo de estabilización de 10 ns, y que cada FA tiene un retraso de
propagación de 40 ns. ¿Cuál es el mínimo tiempo permitido entre la PGT
del pulso CARGAR y la PGT del pulso TRANSFERIR para una operación
apropiada?
6-23. En los circuitos del sumador y del restador que vimos en este capítulo, no
consideramos la posibilidad de desbordamiento. El desbordamiento ocure
cuando los dos números que se van a sumar o a restar producen un resul-
tado que contiene más bits que la capacidad del acumulador. Por ejemplo,
si se utilizan registros de cuatro bits (incluyendo un bit de signo) se pueden
almacenar números que varíen desde 7 hasta 8 (en complemento a 2).
Por lo tanto, si el resultado de una suma o resta se excede de 7 o de 8, se
produce un desbordamiento. Cuando esto ocurre los resultados son inútiles,
ya que no pueden almacenarse en forma correcta en el registro acumulador.
Para ilustrar esto, sume 5 (0101) y 4 (0100), que nos da el resultado de
1001. Este 1001 se interpretaría en forma incorrecta como un número nega-
tivo, ya que hay un 1 en la posición del bit de signo.
En las computadoras y calculadoras, por lo general, hay circuitos que
se utilizan para detectar una condición de desbordamiento. Hay varias for-
mas de hacer esto. Uno de los métodos que pueden utilizarse para el suma-
dor que opera en el sistema de complemento a 2 funciona de la siguiente
manera:
1. Se examinan los bits de signo de los dos números que se van a sumar.
2. Se examina el bit de signo del resultado.
3. Se produce un desbordamiento cuando los números que se van a sumar
son ambos positivos y el bit de signo del resultado es 1, o cuando los
números son ambos negativos y el bit de signo del resultado es 0.
Para verificar este método, probemos varios ejemplos. Los lectores
deberán probar los siguientes casos para aclarar sus propias dudas: (1) 5 
4; (2) 4  (-6); (3) 3  2. Los casos 1 y 2 producirán un desbordamiento y el
caso 3 no. De esta forma, mediante el análisis de los bits de signo podemos
diseñar un circuito lógico que produzca una salida de 1 cada vez que ocurra
la condición de desbordamiento. Diseñe este circuito de desbordamiento
para el sumador de la figura 6-10.
6-24. Agregue los circuitos lógicos necesarios a la figura 6-10 para dar cabida a
la transferencia de datos desde memoria hacia el registro A. Los valores de
datos de la memoria deben entrar al registro A por medio de sus entradas
D en la PGT del primer pulso en TRANSFERIR; los datos de las salidas de
suma de los FAs se cargarán en A cuando ocurra la PGT del segundo pulso en
TRANSFERIR. En otras palabras, se requiere un pulso en CARGAR seguido
de dos pulsos en TRANSFERIR para realizar la secuencia completa de car-
gar el registro B desde memoria, cargar el registro A desde memoria y des-
pués transferir su suma hacia el registro A. (Sugerencia: utilice un flip-flop
X para controlar cuál origen de datos se debe cargar en las entradas D del
acumulador.)
SECCIÓN 6-13
   6-25.* Diseñe un circuito de acarreo adelantado para el sumador de la figura 6-10,
que genere el acarreo C3 que se va a alimentar al FA de la posición del
MSB, con base en los valores de A0, B0, C0, A1, B1, A2 y B2. En otras pala-
bras, derive una expresión para C3 en términos de A0, B0, C0, A1, B1, A2 y B2.
(Sugerencia: comience por escribir la expresión para C1 en términos de A0,
PROBLEMAS 353
D
A, D
A, D
354 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
B0 y C0. Después escriba la expresión para C2 en términos de A1, B1 y C1.
Sustituya la expresión para C1 en la expresión para C2. Después escriba la
expresión para C3 en términos de A2, B2 y C2. Sustituya la expresión para C2
en la expresión para C3. Simplifique la expresión final para C3 y colóquela en
forma de suma de productos. Implemente el circuito.)
SECCIÓN 6-14
6-26. Muestre los niveles lógicos en cada entrada y salida de la figura 6-11(a) al
sumar 3548 con 1038.
SECCIÓN 6-15
6-27. Para el circuito de la figura 6-14, determine las salidas de suma para los
siguientes casos:
(a)* Registro A  0101 (5), registro B  1110 (2); RESTA  1, SUMA  0
(b) Registro A  1100 (4), registro B  1110 (2); RESTA  0, SUMA  1
(c) Repita (b) con SUMA  RESTA  0.
6-28. Para el circuito de la figura 6-14, determine las salidas de suma para los
siguientes casos:
(a) Registro A  1101 (3), registro B  0011 (3), RESTA  1, SUMA  0.
(b) Registro A  1100 (4), registro B  0010 (2), RESTA  0, SUMA  1.
(c) Registro A  1011 (5), registro B  0100 (4), RESTA  1, SUMA  0.
6-29. Para cada uno de los cálculos del problema 6-27, determine si se ha produ-
cido un desbordamiento.
6-30. Para cada uno de los cálculos del problema 6-28, determine si se ha produ-
cido un desbordamiento.
6-31. Muestre cómo pueden implementarse las compuertas de la figura 6-14 utili-
zando tres chips 74HC00.
6-32.* Modifique el circuito de la figura 6-14, de manera que se utilice una sola
entrada de control X en vez de SUMA y RESTA. El circuito deberá funcio-
nar como un sumador cuando X  0 y como restador cuando X  1. Después
simplifique cada conjunto de compuertas. (Sugerencia: observe cómo fun-
ciona cada conjunto de compuertas como un inversor controlado.)
SECCIÓN 6-16
6-33. Determine las salidas F, CN4 y OVR para cada uno de los siguientes conjun-
tos de entradas que se aplican a un 74LS382.
(a)* [S]  011, [A]  0110, [B]  0011, CN  0
(b) [S]  001, [A]  0110, [B]  0011, CN  1
(c) [S]  010, [A]  0110, [B]  0011, CN  1
6-34. Muestre cómo puede usarse el 74HC382 para producir [F]  [A]. (Sugerencia:
recuerde esa propiedad especial de una compuerta XOR.)
6-35. Determine las salidas 
 en la figura 6-16 para los siguientes conjuntos de
entradas.
(a)* [S]  110, [A]  10101100, [B]  00001111
(b) [S]  100, [A]  11101110, [B]  00110010
D
D
B
D
6-36. Agregue la lógica necesaria a la figura 6-16 para producir una salida indi-
vidual en ALTO cada vez que el número binario en A sea exactamente el
mismo que el número binario en B. Aplique el código de entrada de selec-
ción apropiado (pueden usarse tres códigos).
SECCIÓN 6-17
6-37. Considere el circuito de la figura 6-10. Suponga que la salida A2 se queda
atascada en BAJO. Siga la secuencia de operaciones para sumar dos núme-
ros y determine los resultados que aparecerán en el registro A después del
segundo pulso en TRANSFERIR para cada uno de los siguientes casos.
Observe que los números se proporcionan en decimal y que el primer
número es el que se carga en B mediante el primer pulso en CARGAR.
(a)* 2  3
(b)* 3  7
(c) 7  3
(d) 8  3
(e) 9  3
6-38. Un técnico implementa en un tablero experimental el sumador/restador de
la figura 6-14. Durante la prueba descubre que cada vez que se realiza una
suma, el resultado es 1 más de lo que se espera y cuando se realiza una resta,
el resultado es 1 menos más de lo esperado. ¿Cuál es el probable error que
cometió el técnico al conectar este circuito?
6-39.* Describa los síntomas que se producirían en los siguientes puntos en el cir-
cuito de la figura 6-14, si las líneas SUMA y RESTA se pusieran en corto.
(a) Las entradas B[3..0] del CI 74LS283
(b) La entrada C0 del CI 74LS283
(c) Las salidas SUMA (
) [3..0]
(d) C4
SECCIÓN 6-19
Los problemas del 6-40 al 6-45 tratan con los mismos dos arreglos a y b, los cuales
supondremos que se han definido en un archivo fuente de HDL y que tienen los
siguientes valores: [a]  [1001011], [b]  [001010]. El arreglo de salida [z] también
es un arreglo de ocho bits. Resuelva los problemas del 6-40 al 6-45 con base en esta
información. (Suponga que los bits indefinidos en z son 0.)
6-40. Declare estos objetos de datos utilizando su sintaxis favorita de HDL.
6-41. Proporcione el valor de z para cada expresión (se proporcionan expresiones
idénticas para AHDL y VHDL):
(a)* z[ ]  a[ ]  b[ ]; z  a AND b;
(b)* z[ ]  a[ ] # b[ ]; z  a OR b;
(c) z[ ]  a[ ] $ !b[ ]; z  a XOR NOT b;
(d) z[7..4]  a[3..0]  b[3..0]; z(7 DOWNTO 4)  a(3 DOWNTO 0) AND b(3
DOWNTO 0);
(e) z[7..1]  a[6..0]; z[0]  GND; z(7 DOWNTO 1)  a(6 DOWNTO 0); z(0)
 ‘0’;
6-42. ¿Cuál es el valor de cada una de las siguientes variables?
(a) a[3..0] a(3 DOWNTO 0)
(b) b[0] b(0)
(c) a[7] b(7)
PROBLEMAS 355
A, D
F
F
F
B, H
B, H
356 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
6-43. ¿Cuál es el valor de cada una de las siguientes variables?
(a)* a[5] a(5)
(b)* b[2] b(2)
(c)* b[7..1] b(7 DOWNTO 1)
6-44.* Escriba una o más instrucciones en HDL que desplace todos los bits en [a],
una posición a la derecha. EL LSB deberá moverse a la posición del MSB.
Los datos que se roten deberán terminar en z[ ].
6-45. Escriba una o más instrucciones en HDL que tomen el nibble superior de b
y lo coloquen en el nibble inferior de z. El nibble superior de z deberá ser
cero.
6-46. Consulte el problema 6-23. Modifique el código de la figura 6-21 o de la
figura 6-22 para agregar una salida de desbordamiento.
6-47.* Otra forma de detectar el desbordamiento con el complemento a 2 es apli-
car un XOR al acarreo que va hacia el MSB, con el acarreo que sale del MSB
en un sumador/restador. Utilice los mismos números que se dan en el pro-
blema 6-23 para verificar esto. Modifique la figura 6-21 o la figura 6-22 para
detectar un desbordamiento mediante este método.
6-48.* Modifique la figura 6-21 o la figura 6-22 para implementar la figura 6-10.
SECCIÓN 6-20
6-49. Modifique la figura 6-21 o la figura 6-22 para convertirla en un sumador de
12 bits sin usar constantes.
6-50. Modifique la figura 6-21 o la figura 6-22 para convertirla en un módulo
sumador versátil de n bits, con una constante que defina el número de bits.
6-51. Escriba un archivo de HDL para crear el equivalente de una ALU 74382 sin
usar una macrofunción integrada.
PREGUNTA DE PRÁCTICA
6-52. Defina cada uno de los siguientes términos.
(a) Sumador completo (f) Acumulador
(b) Complemento a 2 (g) Sumador en paralelo
(c) Unidad aritmética/lógica (h) Acarreo adelantado
(d) Bit de signo (i) Negación
(e) Desbordamiento (j) Registro B
APLICACIONES DE MICROCOMPUTADORA
6-53.* En una ALU de un microprocesador, por lo general (pero no siempre), los
resultados de todas las operaciones aritméticas se transfieren al registro
acumulador, como en las figuras 6-10, 6-14 y 6-15. En la mayoría de las ALUs
de microprocesador también se utiliza el resultado de cada operación arit-
mética para controlar los estados de varios flip-flops especiales conocidos
como banderas. El microprocesador utiliza estas banderas cuando realiza
decisiones durante la ejecución de ciertos tipos de instrucciones. Las tres
banderas más comunes son:
S (bandera de signo). Este FF siempre se encuentra en el mismo estado
que el signo del último resultado de la ALU.
Z(bandera de cero). Esta bandera se establece en 1 cada vez que el
resultado de una operación de la ALU es igual a 0. En caso contrario se
borra para quedar en 0.
C (bandera de acarreo). Este FF siempre se encuentra en el mismo
estado que el acarreo proveniente del MSB de la ALU.
B, H
H
D, H
D, H, N
D, H
B, H
B, H
D, A, H
A, D
Diseñe el circuito lógico para implementar estas banderas, utilizando el
sumador/restador de la figura 6-14 como la ALU. Las salidas de suma y la
salida C4 deben usarse para controlar el estado al cual cambiará cada ban-
dera al momento en que ocurra el pulso en TRANSFERIR. Por ejemplo, si la
suma es igual a 0 (es decir, 0000) deberá establecerse la bandera Z mediante
la PGT de TRANSFERIR; en caso contrario deberá borrarse.
6-54.* Cuando se trabaja con las microcomputadoras, a menudo es necesario mover
números binarios desde un registro de ocho bits hacia un registro de 16 bits.
Considere los números 01001001 y 10101110, que representan 73 y 82 en
forma respectiva, en el sistema de complemento a 2. Determine las repre-
sentaciones de 16 bits para estos números decimales.
6-55. Compare las representaciones de ocho y 16 bits para el 73 del problema
6-53. Después compare las dos representaciones para el 82. Hay una regla
general que puede usarse para convertir con facilidad de la representación
de ocho bits a la de 16 bits. ¿Puede usted ver cuál es? Tiene algo que ver con
el bit de signo del número de ocho bits.
RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES
SECCIÓN 6-1
1. (a) 11101 (b) 101.111 (c) 10010000
SECCIÓN 6-2
1. (a) 00001101 (b) 11111001 (c) 10000000 2. (a) 29 (b) 64
(c) 126 3. 2048 a 2047 4. Siete 5. 32768 6. (a) 10000
(b) 10000000 (c) 1000 7. Consulte el texto.
SECCIÓN 6-3
1.Verdadero 2. (a) 1000102  -3010 (b) 0000002  010
SECCIÓN 6-4
1. (a) 011112  1510 (b) 111112  -110 2. Mediante la comparación del bit de signo
de la suma con los bits de signo de los números que se van a sumar.
SECCIÓN 6-5
1. 1100010
SECCIÓN 6-7
1. Cuando la suma de al menos una posición de dígito decimal es mayor que 1001 (9).
2. El factor de corrección se suma tanto a los dígitos de las unidades como a los dígitos de las
décadas.
SECCIÓN 6-8
1. 923 2. 3DB 3. 2F, 77EC, 6D
SECCIÓN 6-10
1. Tres; dos 2. (a) S2  0, C3  1 (b) C5  0
SECCIÓN 6-12
1. Uno; cuatro; cuatro 2. 0100
SECCIÓN 6-14
1. Cinco chips 2. 240 ns 3. 1
RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES 357
358 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS
SECCIÓN 6-15
1. Para agregar el 1 que se necesita para completar la representación en complemento
a 2 del número en el registro B 2. 0010 3. 1101 4. Falso; ahí aparece el
complemento a 1.
SECCIÓN 6-16
1. F  1011; OVR  0; CN4  0 2. F  0111; OVR  1; CN4  1
3. F  1000; 
  01101011; CN4  OVR  0; 5. 
  11111111 6. Ocho
SECCIÓN 6-18
1.Vea el menú HELP de MAXPLUS, bajo old-style macrofunctions/adders
2. Una descripción de un CI estándar que puede usarse de la biblioteca.
SECCIÓN 6-19
1. (a) 0001(b) 1011 2 . (a) 1010 (b) 1011 3. conmuta[3..0]
4. conmuta(3 DOWNTO 0) 5. [X]  [1,1,1,1] 6. AHDL:xx[ ]  d[ ] # g[ ]; VHDL:
x  d OR g; 7. AHDL:xx[2..1]  d[3..2] $ g[1..0]; VHDL: x(2 DOWNTO 1) 
d(3 DOWNTO 2) XOR g(1 DOWNTO 0);
SECCIÓN 6-21
1. CONSTANT. 2. En AHDL, cerca de la parte superior del archivo fuente. En VHDL,
en un bloque PACKAGE cerca de la parte superior del archivo fuente. 3. Permiten los
cambios globales del valor de un símbolo que se utiliza en todo el código.
4. val_max 5 representa el número 122. 5. GENERATE se utiliza con una instrucción
FOR iterativa para instanciar módulos de código duplicado que puedan conectarse entre sí o
en cascada.
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Parte 1
7-1 Contadores asíncronos
(de rizo)
7-2 Retraso de propagación
en contadores de rizo
7-3 Contadores síncronos
(en paralelo)
7-4 Contadores con números
MOD  2N
7-5 Contadores síncronos
descendentes y ascendentes/
descendentes
7-6 Contadores preajustables
7-7 Contadores síncronos de CI
7-8 Decodificación de un
contador
7-9 Análisis de contadores
síncronos
7-10 Diseño de un contador
síncrono
7-11 Contadores básicos mediante
el uso de HDL
7-12 Contadores con todas las
características en HDL
■ CONTENIDO
CON TA DORES
Y REG ISTROS
C A P Í T U L O 7
7-13 Cómo alambrar módulos de
HDL en conjunto
7-14 Máquina de estados
Parte 2
7-15 Registros de circuito
integrado
7-16 Entrada en paralelo/salida en
paralelo: 74ALS174/74HC174
7-17 Entrada en serie/salida en
serie: 74ALS166/74HC166
7-18 Entrada en paralelo/salida en
serie: 74ALS165/74HC165
7-19 Entrada en serie/salida en
paralelo: 74ALS164/74HC164
7-20 Contadores de registro de
desplazamiento
7-21 Diagnóstico de fallas
7-22 Registros en HDL
7-23 Contadores de anillo en HDL
7-24 Monoestables en HDL
■ OBJETIVOS
Al terminar este capítulo, usted podrá:
■ Comprender la operación y las características de los contadores síncronos y
asíncronos.
■ Construir contadores con números MOD menores de 2N
.
■ Construir contadores tanto ascendentes como descendentes.
■ Conectar contadores con múltiples etapas.
■ Analizar y evaluar varios tipos de contadores.
■ Diseñar contadores síncronos de secuencia arbitraria.
■ Comprender varios tipos de esquemas utilizados para decodificar distintos
tipos de contadores.
■ Describir circuitos de contadores mediante el uso de distintos niveles
de abstracción en HDL.
■ Comparar las principales diferencias entre los contadores de anillo y Johnson.
■ Reconocer y comprender la operación de varios tipos de registros de CI.
■ Describir los registros de desplazamiento y los contadores de registro de
desplazamiento mediante el uso de HDL.
■ Aplicar las técnicas existentes de diagnóstico de fallas que se utilizan en los
sistemas lógicos combinacionales para diagnosticar fallas en sistemas lógicos
secuenciales.
■ INTRODUCCIÓN
En el capítulo 5 vimos cómo podían conectarse los flip-flops para funcionar
como contadores y registros. En ese momento sólo estudiamos los circuitos
básicos de contadores y registros. Los sistemas digitales emplean muchas
variaciones de estos circuitos básicos, la mayoría en forma de circuitos integrados.
En este capítulo veremos cómo pueden combinarse los FFs y las compuertas
lógicas para producir diferentes tipos de contadores y registros.
Debido al extenso número de temas en este capítulo, lo hemos dividido en dos
partes.En la PARTE 1 cubriremos los principios de la operación de los contadores,los
diversos arreglos de circuitos de contadores y los contadores de CI representativos.
En la PARTE 2 presentaremos varios tipos de registros de CI, contadores de registro
de desplazamiento y el diagnóstico de fallas. Cada parte incluye una sección que
contiene descripciones en HDL de los contadores y registros.
A medida que vaya avanzando en el capítulo tendrá que recurrir con frecuencia
al material que cubrimos en los capítulos anteriores. Regrese y repase el material
que aprendió con anterioridad cada vez que lo necesite.
361
362 CAPÍTULO 7/CONTADORES Y REGISTROS
PARTE 1
7-1 CONTADORES ASÍNCRONOS (DE RIZO)
La figura 7-1 muestra un circuito contador binario de cuatro bits tal como el que
vimos en el capítulo 5. Recuerde los siguientes puntos con respecto a su opera-
ción:
1. Los pulsos de reloj se aplican sólo a la entrada CLK del flip-flop A. En conse-
cuencia, el flip-flop A conmutará (cambiará a su estado opuesto) cada vez que
los pulsos de reloj hagan una transición negativa (de ALTO a BAJO). Observe
que J  K  1 para todos los FFs.
2. La salida normal del flip-flop A actúa como la entrada CLK para el flip-flop B,
por lo que el flip-flop B conmutará cada vez que la salida de A cambie de 1 a 0.
De manera similar, el flip-flop C conmutará cuando B cambie de 1 a 0 y el flip-
flop D conmutará cuando C cambie de 1 a 0.
3. Las salidas de los FFs D, C, B y A representan un número binario de cuatro bits,
en donde D es el MSB. Vamos a suponer que todos los FFs se han borrado para
quedar en el estado 0 (no se muestran las entradas de LIMPIA). Las formas de
onda en la figura 7-1 muestran que se sigue una secuencia de conteo binario
de 0000 a 1111 a medida que se aplican pulsos de reloj en forma continua.
4. Después de que ocurre la NGT (transición negativa) del quinceavo pulso de
reloj, los FFs del contador se encuentran en la condición 1111. En la diecisei-
FIGURA 7-1 Contador asíncrono (de rizo) de cuatro bits.
D
CLK
K
J
D
C
CLK
K
J
C
B
CLK
K
J
B
A
CLK
K
J
A
* Se asume que todas
las entradas J y K son 1.
*
*
RELOJ
A
B
C
D
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 111 0 1111 0000 0010
0001
DCBA
(conteo)
Se recicla a 000
sava NGT el flip-flop A cambia de 1 a 0, lo cual hace que el flip-flop B cambie
de 1 a 0 y así en lo sucesivo, hasta que el contador queda en el estado 0000. En
otras palabras, el contador ha pasado por un ciclo completo (de 0000 a 1111) y
ha reciclado de vuelta a 0000. A partir de este punto empezará un nuevo ciclo
de conteo, a medida que se apliquen los subsiguientes pulsos de reloj.
En este contador, cada salida de los FFs excita la entrada CLK del siguiente FF.
A este tipo de arreglo de contador se le conoce como contador asíncrono, ya que los
FFs no cambian de estado en sincronía exacta con los pulsos de reloj que se aplican;
sólo el flip-flop A responde a los pulsos de reloj. El FF B debe esperar a que el FF
A cambie de estado para poder conmutar; el FF C debe esperar al FF B, y así en
lo sucesivo. Por ende, hay un retraso entre las respuestas de los FFs sucesivos. Por lo
general este retraso es de 5 a 20 ns por cada FF. Como veremos, en algunos casos
este retraso puede ser problemático. A este tipo de contador también se le conoce
comúnmente como contador de rizo debido a la forma en que responden los FFs,
uno después de otro, en un tipo de efecto de rizo. Utilizaremos los términos contador
asíncrono y contador de rizo con el mismo fin, de manera indistinta.
Flujo de la señal
Es una convención en los diagramas esquemáticos dibujar los circuitos (siempre
que sea posible) de manera que el flujo de la señal sea de izquierda a derecha, con
las entradas a la izquierda y las salidas a la derecha. En este capítulo quebranta-
remos con frecuencia esta convención, en especial en los diagramas que muestren
contadores. Por ejemplo, en la figura 7-1 las entradas CLK de cada FF están a la
derecha, las salidas están a la izquierda y la señal de reloj de entrada se muestra
saliendo de la derecha. Utilizaremos este arreglo debido a que facilita la compren-
sión y el seguimiento de la operación del contador (pues el orden de los FFs es el
mismo que el orden de los bits en el número binario que representa el contador).
En otras palabras, el FF A (que es el LSB) es el FF más a la derecha y el FF D (que
es el MSB) es el FF más a la izquierda. Si nos apegáramos al flujo de señal conven-
cional de izquierda a derecha tendríamos que colocar el FF A a la izquierda y el FF
D a la derecha, lo opuesto a sus posiciones en el número binario que representa al
contador. En algunos de los diagramas de contadores que veremos más adelante en
este capítulo emplearemos el flujo de señal convencional de izquierda a derecha,
para que usted pueda acostumbrarse a verlo.
El contador de la figura 7-1 empieza en el estado 0000 y después se aplican pulsos
de reloj. Cierto tiempo después se quitan los pulsos de reloj y los FFs del contador
indican 0011. ¿Cuántos pulsos de reloj han transcurrido?
Solución
La respuesta aparente parece ser 3, ya que 0011 es el equivalente binario de 3. Sin
embargo, con la información que se proporciona no hay manera de saber si el con-
tador ha reciclado o no. Esto significa que podrían haber transcurrido 19 pulsos de
reloj; los primeros 16 regresan el contador de vuelta a 0000 y los últimos 3 lo llevan
hasta 0011. O podrían haber transcurrido 35 pulsos (dos ciclos completos y después
tres conteos más), o 51 pulsos, etcétera.
Número MOD
El contador de la figura 7-1 tiene 16 estados diferentes (de 0000 a 1111). Por ende,
es un contador de rizo MOD 16. Recuerde que, por lo general, el número MOD es
igual al número de estados por los que pasa el contador en cada ciclo completo,
SECCIÓN 7-1/CONTADORES ASÍNCRONOS (DE RIZO) 363
EJEMPLO 7-1
364 CAPÍTULO 7/CONTADORES Y REGISTROS
FIGURA 7-2 Formas de onda del contador que muestran la división entre 2 para cada FF.
RELOJ
A
B
C
D
EJEMPLO 7-2
antes de que recicle de vuelta a su estado inicial. El número MOD puede aumentar-
se con sólo agregar más FFs al contador. Esto es,
Número MOD  2N
(7-1)
en donde N es el número de FFs conectados en el arreglo de la figura 7-1.
Se necesita un contador que cuente el número de elementos que pasan a través de
una banda transportadora. Se utiliza una combinación de fotocelda y fuente de luz
para generar un pulso individual cada vez que un elemento cruza su camino. El con-
tador debe ser capaz de contar hasta mil elementos. ¿Cuántos FFs se requieren?
Solución
Es muy sencillo determinar qué valor de N se necesita para que 2N

 1000. Como
29
 512, 9 FFs no serán suficientes. 210
 1024, por lo que 10 FFs producirían un
contador que podría contar hasta 11111111112  102310. Por lo tanto, utilizaríamos
10 FF; podríamos usar más de 10 pero sería un desperdicio, ya que cualquier FF más
allá del diez no se necesitaría.
División de frecuencia
En el capítulo 5 vimos que en el contador básico cada FF proporciona una forma
de onda de salida que es la mitad exacta de la frecuencia de la forma de onda en
su entrada CLK. Para ilustrar esto, suponga que la señal de reloj en la figura 7.1 es
de 16 kHz. La figura 7.2 muestra las formas de onda de salida. La forma de onda en
la salida A es una onda cuadrada de 8 kHz, en la salida B es de 4 kHz, en la salida C
es de 2 kHz y en la salida D es de 1 kHz. Observe que la salida del flip-flop D tiene
una frecuencia igual a la original del reloj, dividida entre 16. En general,
En cualquier contador, la señal en la salida del último FF (es decir, el MSB)
tendrá una frecuencia igual a la frecuencia del reloj de entrada dividida
entre el número MOD del contador.
Por ejemplo, en un contador MOD-16 la salida del último FF tendrá una frecuencia
igual a 1/16 de la frecuencia del reloj de entrada. Por ende, también se le puede
llamar contador de división entre 16. De igual forma, un contador MOD 8 tiene una
frecuencia de salida igual a 1/8 de la frecuencia de entrada; es un contador de divi-
sión entre 8.
EJEMPLO 7-3
PREGUNTAS DE REPASO
El primer paso relacionado con la construcción de un reloj digital es tomar la señal
de 60 Hz y alimentarla a un circuito de conformación de pulsos tipo monoestable de
Schmitt*
para producir una onda cuadrada, como se ilustra en la figura 7-3. La onda
cuadrada de 60 Hz se aplica después a un contador MOD-60, el cual se utiliza para
dividir la frecuencia de 60 Hz entre un valor exacto de 60 para producir una forma
de onda de 1 Hz. Esta forma de onda de 1 Hz se alimenta a una serie de contadores,
los cuales a su vez se encargan de contar en segundos, minutos, horas, etcétera.
¿Cuántos FFs se requieren para el contador MOD-60?
Solución
No hay una potencia entera de 2 que sea igual a 60. La más cercana es 26
 64. Por lo
tanto, un contador que utilice seis FFs actuará como un contador MOD-64. Es obvio
que esto no cumple con el requerimiento. Parece que no hay solución si se utiliza un
contador del tipo que se muestra en la figura 7-1. En parte esto es verdad; en la sec-
ción 7-4 veremos cómo modificar los contadores binarios básicos para que pueda obte-
nerse casi cualquier número MOD y así no estaremos limitados a los valores de 2N
.
1. Verdadero o falso: en un contador asíncrono todos los FFs cambian de estado al
mismo tiempo.
2. Suponga que el contador en la figura 7-1 tiene el conteo 0101. ¿Cuál será el
conteo después de 27 pulsos de reloj?
3. ¿Cuál sería el número MOD del contador si se agregaran tres FFs más?
7-2 RETRASO DE PROPAGACIÓN EN CONTADORES DE RIZO
Los contadores de rizo son el tipo más simple de contadores binarios, ya que requie-
ren la menor cantidad de componentes para producir una operación de conteo dada.
No obstante tienen una gran desventaja debido a su principio básico de operación:
cada FF se dispara mediante la transición en la salida del FF anterior. Debido al
tiempo de retraso de propagación inherente (tpd) de cada FF, esto significa que el
segundo FF no responderá sino hasta un tiempo tpd después de que el primer FF
reciba una transición activa de reloj; el tercer FF no responderá sino hasta un tiem-
po igual a 2  tpd después de esa transición del reloj; y así en lo sucesivo. En otras
palabras, los retrasos de propagación de los FFs se acumulan de manera que el N-
ésimo FF no puede cambiar de estado sino hasta un tiempo igual a N  tpd después
de que ocurre la transición del reloj. Esto se ilustra en la figura 7-4, en donde se
muestran las formas de onda para un contador de rizo de tres bits.
El primer conjunto de formas de onda en la figura 7-4(a) muestra una situación
en la que se produce un pulso de entrada cada 1000 ns (el periodo del reloj T 
1000 ns) y se supone que cada FF tiene un retraso de propagación de 50 ns (tpd  50
FIGURA 7-3 Ejemplo
7-3. Conformador
de pulsos
60 Hz
60 Hz
Contador
MOD-60
Contadores
pantallas, etc.
1 Hz
* Consulte la sección 5-21.
SECCIÓN 7-2/RETRASO DE PROPAGACIÓN EN CONTADORES DE RIZO 365
366 CAPÍTULO 7/CONTADORES Y REGISTROS
FIGURA 7-4 Formas
de onda de un
contador de rizo de
tres bits, en donde se
ilustran los efectos
de los retrasos de
propagación de los
FFs para distintas
frecuencias del pulso de
entrada.
#1 #2 #3 #4 #5
Entrada
100 ns
A
B
C
#1 #2 #3 #4 #5
Entrada
A
B
C
1000 ns
50 ns
100 ns
150 ns
(a)
50
ns
50
ns
150 ns
La condición
de 100 no
se produce.
(b)
ns). Observe que la salida del flip-flop A conmuta 50 ns después de la NGT de cada
pulso de entrada. De manera similar, B conmuta 50 ns después de que A cambia de
1 a 0 y C conmuta 50 ns después de que B cambia de 1 a 0. Como resultado, cuando
ocurre la cuarta NGT de entrada la salida C cambia a ALTO después de un retraso
de 150 ns. En esta situación el contador opera de manera apropiada en el sentido
en que en cierto momento los FFs llegan a sus estados correctos para representar
el conteo binario. No obstante, la situación se empeora si los pulsos de entrada se
aplican a una frecuencia mucho mayor.
Las formas de onda en la figura 7-4(b) muestran lo que ocurre si los pulsos de
entrada se producen una vez cada 100 ns. De nuevo, cada salida de FF responde 50
ns después de la transición de 1 a 0 en su entrada CLK (observe el cambio en la
escala de tiempo relativa). Es de particular interés la situación después del flanco
de caída del cuarto pulso de entrada, en donde la salida C no cambia a ALTO sino
hasta 150 ns después, que viene siendo el mismo tiempo que transcurre hasta que la
salida A cambia a ALTO en respuesta al quinto pulso de entrada. En otras palabras,
la condición C  1, B  A  0 (conteo de 100) nunca aparece, ya que la frecuencia
de entrada es demasiado alta. Esto podría provocar un grave problema si esta con-
dición fuera a utilizarse para controlar alguna otra operación en un sistema digital.
PREGUNTAS DE REPASO
Se pueden evitar problemas como éste si el periodo entre los pulsos de entrada se
alarga más que el retraso de propagación total del contador. Esto es, para que el
contador opere en forma correcta necesitamos que
Treloj 
 N x tpd (7-2)
en donde N  el número de FFs. Dicho en términos de la frecuencia del reloj
de entrada, la frecuencia máxima que puede utilizarse se da mediante la siguiente
ecuación:
(7-3)
Suponga, por ejemplo, que se construye un contador de rizo de cuatro bits utilizan-
do el flip-flop J-K 74LS112. La tabla 5-2 muestra que el 74LS112 tiene los retrasos
de propagación tPLH  16 ns y tPHL  24 ns de CLK a Q. Para calcular fmáx supondre-
mos el “peor caso”; es decir, utilizaremos tpd  tPLH  24 ns, para que
Es evidente que a medida que aumenta el número de FFs en el contador, se incre-
menta el tiempo de propagación total y se decrementa fmáx. Por ejemplo, un conta-
dor de rizo que utiliza seis FFs 74LS112 tendrá
Por lo tanto, los contadores asíncronos no son útiles a frecuencias muy altas,
en especial para los contadores con grandes números de bits. Otro problema que
ocasionan los retrasos de propagación en los contadores asíncronos ocurre cuando
tratamos de detectar por medio electrónico (decodificar) los estados de salida del
contador. Si analiza con detalle la figura 7-4(a), durante un breve tiempo (50 ns en
nuestro ejemplo) justo después del estado 011 verá que el estado 010 ocurre antes
que el estado 100. Es obvio que ésta no es la secuencia correcta de conteo binario,
y aunque el ojo humano es demasiado lento como para ver este estado temporal,
nuestros circuitos digitales serán lo bastante rápidos como para detectarlo. Estos
patrones de conteo erróneos pueden generar lo que se conoce como deformaciones
en las señales producidas por sistemas digitales que utilizan contadores asíncronos.
A pesar de su simpleza, estos problemas limitan la utilidad de los contadores asín-
cronos en aplicaciones digitales.
1. Explique por qué la limitación de frecuencia máxima de un contador de rizo
disminuye a medida que se agregan más FFs al contador.
2. Cierto flip-flop J-K tiene tpd  12 ns. ¿Cuál es el contador MOD más grande que
puede construirse a partir de estos FFs y que pueda operar hasta 10 MHz?
7-3 CONTADORES SÍNCRONOS (EN PARALELO)
Los problemas que se encuentran en los contadores de rizo son ocasionados por los
retrasos de propagación acumulados en los FF; dicho de otra forma, los FFs no cam-
bian de estado todos al mismo tiempo, en sincronía con los pulsos de entrada. Estas
limitaciones pueden resolverse con el uso de los contadores en paralelo o síncronos,
SECCIÓN 7-3/CONTADORES SÍNCRONOS (EN PARALELO) 367
=
1
4 * 24 ns
= 10.4 MHz
fmáx
=
1
N * tpd
fmáx
=
1
6 * 24 ns
= 6.9 MHz
fmáx
368 CAPÍTULO 7/CONTADORES Y REGISTROS
FIGURA 7-5 Contador MOD-16 síncrono. Cada FF está sincronizado por la NGT de la
señal de entrada de reloj, de manera que todas las transiciones de los FFs ocurran al
mismo tiempo.
(a)
A
CLK
K
CLR
J
B
B
CLK
K
J
D
K
J
Entrada
1
A
B
AB
A
B
C
ABC
D A
CLK
CLR
C
C
CLK
K
J
CLR
CLR
Conteo
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
.
.
.
D
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
1
0
.
.
.
C
0
0
0
0
1
1
1
1
0
0
0
0
1
1
1
1
0
.
.
etc.
B
0
0
1
1
0
0
1
1
0
0
1
1
0
0
1
1
0
.
.
.
A
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
1
0
.
.
.
(b)
en los cuales todos los FFs se disparan al mismo tiempo (en paralelo) mediante los
pulsos de entrada de reloj.
Debido a que los pulsos de entrada se aplican a todos los FFs, debe utilizarse
algún medio para controlar cuándo debe conmutar un FF y cuándo no debe ser
afectado por un pulso de reloj. Esto se logra mediante el uso de las entradas J y K,
y se ilustra en la figura 7-5 para un contador síncrono MOD-16 de cuatro bits.
Si comparamos el arreglo del circuito para este contador síncrono con su contra-
parte asíncrona de la figura 7-1, podremos ver las siguientes diferencias notables:
■ Las entradas CLK de todos los FFs están conectadas en conjunto, de manera
que la señal de reloj de entrada se aplique a cada FF al mismo tiempo.
■ Sólo el flip-flop A, el LSB, tiene sus entradas J y K de manera permanente en
el nivel ALTO. Las entradas J, K de los demás FFs se excitan mediante cierta
combinación de salidas de los FFs.
■ El contador síncrono requiere más circuitos que el contador asíncrono.
Operación del circuito
Para que este circuito pueda contar en forma apropiada, en una NGT dada del reloj
sólo los FFs que se supone deben conmutar en esa NGT tienen la condición J  K
 1 cuando ocurre esa NGT. Analicemos la secuencia de conteo en la figura 7-5(b)
para ver lo que esto significa para cada FF.
La secuencia de conteo muestra que el flip-flop A debe cambiar de estado en
cada NGT. Por esta razón sus entradas J y K se mantienen en ALTO de manera per-
manente, para que conmute en cada NGT de la entrada de reloj.
La secuencia de conteo muestra que el flip-flop B debe cambiar de estado en
cada NGT que se produzca mientras que A  1. Por ejemplo, cuando el conteo es
0001 la siguiente NGT debe conmutar a B al estado 1; cuando el conteo es 0011, la
siguiente NGT debe conmutar a B al estado 0; y así en lo sucesivo. Para lograr esta
operación se conecta la salida de A con las entradas J y K del flip-flop B, de manera
que J  K  1 sólo cuando A  1.
La secuencia de conteo muestra que el flip-flop C debe cambiar de estado en
cada NGT que se produzca mientras que A  B  1. Por ejemplo, cuando el conteo
es 0011 la siguiente NGT debe conmutar a C al estado 1; cuando el conteo es 0111
la siguiente NGT debe conmutar a C al estado 0; y así en lo sucesivo. Al conectar la
señal lógica AB a las entradas J y K del FF C, este FF conmutará sólo cuando A 
B  1.
De manera similar, podemos ver que el flip-flop D debe conmutar en cada NGT
que se produzca mientras que A  B  C  1. Cuando el conteo es 0111, la siguiente
NGT debe conmutar a D al estado 1; cuando el conteo es 1111 la siguiente NGT debe
conmutar a D al estado 0. Al conectar la señal lógica ABC a las entradas J y K del FF
D, este FF conmutará sólo cuando A  B  C  1.
Por lo tanto, podemos establecer el principio básico para construir un contador
de la siguiente manera:
Cada FF deberá tener sus entradas J y K conectadas de manera que estén
en ALTO sólo cuando las salidas de todos los FFs de menor orden se encuen-
tren en el estado ALTO.
Ventaja de los contadores síncronos en comparación con los
contadores asíncronos
En un contador en paralelo todos los FFs cambiarán de estado al mismo tiempo;
esto es, todos están sincronizados con las NGTs de los pulsos de entrada del reloj.
En consecuencia y a diferencia de los contadores asíncronos, los retrasos de propa-
gación de los FFs no se acumulan para producir el retraso total, sino que el tiempo
de respuesta total de un contador síncrono como el de la figura 7-5 es el tiempo que
requiere un FF para conmutar, más el tiempo para que los nuevos niveles lógicos se
propaguen a través de una sola compuerta AND para llegar a las entradas J, K. Por
lo tanto, para un contador síncrono,
retraso total  tpd del FF  tpd de la compuerta AND
Este retraso total es el mismo, sin importar cuántos FFs haya en el contador y, por
lo general, será mucho menor que en un contador asíncrono con el mismo número
de FFs. Por ende, un contador síncrono puede operar a una frecuencia de entrada
mucho más alta. Desde luego que los circuitos del contador síncrono son más com-
plejos que los del contador asíncrono.
CIs reales
Existen muchos contadores de CI síncronos tanto en la familia lógica TTL como en
la CMOS. Algunos de los dispositivos que se utilizan con más frecuencia son:
■ 74ALS160/162, 74HC160/162: contadores síncronos de décadas.
■ 74ALS161/163, 74HC161/163: contadores MOD-16 síncronos.
SECCIÓN 7-3/CONTADORES SÍNCRONOS (EN PARALELO) 369
370 CAPÍTULO 7/CONTADORES Y REGISTROS
EJEMPLO 7-4
PREGUNTAS DE REPASO
(a) Determine el valor de fmáx para el contador de la figura 7-5(a) si el tpd para cada
FF es de 50 ns y el tpd para cada compuerta AND es de 20 ns. Compare este
valor con fmáx para un contador de rizo MOD-16.
(b) ¿Qué debe hacerse para convertir este contador en MOD-32?
(c) Determine el valor de fmáx para el contador MOD-32 en paralelo.
Solución
(a) El retraso total que debe permitirse entre los pulsos de reloj de entrada es igual
al tpd del FF  el tpd de la compuerta AND. Por ende, Treloj 
 50  20  70 ns,
y en consecuencia el contador en paralelo tiene
Un contador de rizo MOD-16 utiliza cuatro FFs con tpd  50 ns. Por lo tanto, la
fmáx para el contador de rizo es
(b) Debe agregarse un quinto FF, ya que 25
 32. La entrada CLK de este FF tam-
bién está enlazada a los pulsos de entrada. Sus entradas J y K se alimentan
mediante la salida de una compuerta AND de cuatro entradas A, B, C y D.
(c) La fmáx se determina igual que en (a), sin importar el número de FFs en el con-
tador en paralelo. Por lo tanto, fmáx sigue siendo 14.3 MHz.
1. ¿Cuál es la ventaja de un contador síncrono, en comparación con un contador
asíncrono? ¿Cuál es la desventaja?
2. ¿Cuántos dispositivos lógicos se requieren para un contador MOD-64 en parale-
lo?
3. ¿Qué señal lógica excita las entradas J, K del flip-flop del MSB para el contador
de la pregunta 2?
7-4 CONTADORES CON NÚMEROS MOD  2N
El contador síncrono básico de la figura 7-5 está limitado a números MOD que sean
iguales a 2N
, en donde N es el número de FFs. En realidad este valor es el número
MOD máximo que puede obtenerse mediante el uso de N flip-flops. El contador
básico puede modificarse para producir números MOD menores que 2N
si se permi-
te al contador omitir estados que, por lo general, forman parte de la secuencia de
conteo. Uno de los métodos más comunes para esto se ilustra en la figura 7-6, en
donde se muestra un contador de tres bits. Si descartamos la compuerta NAND por
un momento, podremos ver que el contador es del tipo binario MOD-8, el cual con-
tará en secuencia desde 0000 hasta 1111. No obstante, la presencia de la compuerta
NAND alterará esta secuencia de la siguiente manera:
1. La salida NAND se conecta a las entradas LIMPIAR asíncronas de cada FF.
Mientras que la salida de la compuerta NAND esté en ALTO no tendrá efecto
sobre el contador. Pero cuando cambie a BAJO borrará todos los FFs, lo cual
provocará que el contador cambie de inmediato al estado 000.
=
1
70 ns
= 14.3 MHz contador en paralelo
fmáx
=
1
4 * 50 ns
= 5 MHz contador de rizo
fmáx
FIGURA 7-6 Contador
MOD-6 que se produce
al borrar un contador
MOD-8 cuando llega a
un conteo de seis (110).
A
CLK
K
CLR
J
B
B
CLK
K
J
1
1
A
CLR
C
C
B
C
CLK
K
J
CLR
1 2 3 4 5 6 7 8 9 10 11 12
A
B
C
0
1
Pulsos de
entrada
Salida
de compuerta
NAND
2. Las entradas de la compuerta NAND son las salidas de los flip-flops B y C, por
lo que la salida de la compuerta NAND cambiará a BAJO siempre que B  C  1.
Esta condición se producirá cuando el contador cambie del estado 101 al 110
en la NGT del pulso de entrada 6. El nivel BAJO en la salida de la compuerta
NAND borrará de inmediato (por lo general, en unos cuantos nanosegundos) el
contador para que quede en el estado 000. Una vez que se hayan borrado los
FFs, la salida de la compuerta NAND cambiará de vuelta al nivel ALTO, ya que
la condición B  C  1 dejó de existir.
3. Por lo tanto, la secuencia de conteo es
CBA
000
001
010
011
100
101
(estado temporal necesario para borrar el contador)
←
→
110
SECCIÓN 7-4/CONTADORES CON NÚMEROS MOD 2N
371
372 CAPÍTULO 7/CONTADORES Y REGISTROS
Aunque el contador cambia al estado 110, permanece ahí sólo durante unos
cuantos nanosegundos antes de reciclarse a 000. Por lo tanto, en esencia pode-
mos decir que este contador cuenta desde 000 (cero) hasta 101 (cinco) y des-
pués se recicla a 000. Omite los estados 110 y 111, de manera que sólo pasa por
seis estados distintos; por lo tanto es un contador MOD-6.
Observe que la forma de onda en la salida de B contiene un pico o deformación
producida por la ocurrencia momentánea del estado 110 antes de que el FF se
borre. Esta deformación es muy estrecha y no producirá ninguna indicación visual
en LEDs indicadores o en pantallas numéricas. No obstante, podría provocar un
problema si la salida B se utilizara para excitar otros circuitos fuera del contador.
Hay que observar también que la salida C tiene una frecuencia igual a un sexto de
la frecuencia de entrada; en otras palabras, este contador MOD-6 ha dividido la
frecuencia de entrada entre seis. La forma de onda en C no es una onda cuadrada
simétrica (ciclo de trabajo del 50 por ciento) debido a que está en ALTO sólo duran-
te dos ciclos de reloj, mientras que está en BAJO durante cuatro ciclos.
Diagrama de transición de estados
La figura 7-7(a) es el diagrama de transición de estados para el contador MOD-6 de
la figura 7-6. En este diagrama se muestra cómo los FFs C, B y A cambian de estado
a medida que se aplican pulsos en la entrada CLK del flip-flop A. Recuerde que
cada círculo representa uno de los posibles estados del contador y que las flechas
indican cómo un estado cambia a otro en respuesta a un pulso de reloj de entrada.
Si suponemos un conteo inicial de 000, el diagrama nos muestra que los estados
del contador cambian, por lo general, en forma ascendente hasta llegar al conteo de
101. Cuando se produce el siguiente pulso de reloj, el contador cambia de manera
temporal al conteo 110 antes de pasar al conteo 000 estable. Las líneas punteadas
indican la naturaleza temporal del estado 110. Como dijimos antes, la duración de
este estado temporal es tan breve que para la mayoría de los fines podemos consi-
derar que el contador cambia en forma directa de 101 a 000 (flecha sólida).
Observe que no hay una flecha que vaya al estado 111, ya que el contador nun-
ca podrá avanzar hasta ese estado. No obstante, puede producirse el estado 111 al
momento de encender el circuito, cuando los FFs prenden en estados aleatorios. Si
esto ocurre, la condición 111 producirá un nivel BAJO en la salida de la compuerta
NAND y de inmediato se borrará el contador para quedar en 000. Por ende, el esta-
do 111 también es una condición temporal que termina en 000.
Visualización de los estados de un contador
Algunas veces durante la operación normal, y con mucha frecuencia durante la
prueba, es necesario tener una pantalla visual de la manera en que el contador
cambia de estados en respuesta a los pulsos de entrada. Más adelante veremos con
detalle varias formas de hacer esto. Por ahora, la figura 7-7(b) muestra uno de los
métodos más simples, en el que se utilizan LEDs indicadores individuales para cada
salida de FF. Cada salida se conecta a un INVERSOR cuya salida proporciona la
ruta de la corriente para el LED. Por ejemplo, cuando la salida A está en ALTO,
la salida del INVERSOR cambia a BAJO y el LED se enciende. Un LED encendido
indica que A  1. Cuando la salida A está en BAJO, la salida del INVERSOR está
en ALTO y el LED se apaga. Cuando pasa esto, nos indica que A  0.
C B A
111 000
001
010
011
100
101
110
Estado
temporal
(a)
(b)
A
CLK
K
CLR
J
B
Cuando el FF está
en ALTO, el LED
está encendido.
B
CLK
K
J
1
1
A
CLR
C
C
B
C
CLK
K
J
CLR
5 V
330 ⍀
330 ⍀
330 ⍀
FIGURA 7-7 (a) Diagrama de transición de estados para el contador MOD-6 de la
figura 7-6. (b) A menudo se utilizan LEDs para visualizar los estados de un contador.
SECCIÓN 7-4/CONTADORES CON NÚMEROS MOD 2N
373
374 CAPÍTULO 7/CONTADORES Y REGISTROS
EJEMPLO 7-6
EJEMPLO 7-6
(a) ¿Cuál será el estado de los LEDs cuando el contador tenga el conteo de cinco?
(b) ¿Qué mostrarán los LEDs cuando el contador esté sincronizado por una entrada
de 1 kHz?
(c) ¿Será visible el estado 110 en los LEDs?
Solución
(a) Como 510  1012, los LEDs 20
y 22
estarán encendidos y el LED 21
estará apa-
gado.
(b) A 1 kHz, los LEDs estarán cambiando entre encendido y apagado tan rápido
que parecerá (al ojo humano) que están encendidos todo el tiempo, con un bri-
llo aproximado a la mitad del normal.
(c) No; el estado 110 persistirá durante sólo unos cuantos nanosegundos, hasta que
el contador se recicle a 000.
Cambiar el número MOD
El contador de las figuras 7-6 y 7-7 es del tipo MOD-6 debido a la elección de entra-
das que van a la compuerta NAND. Si se cambian estas entradas, podrá obtenerse
cualquier número MOD que se desee. Por ejemplo, si utilizamos una compuerta
NAND de tres entradas A, B y C, el contador funcionaría en forma normal hasta
que llegara a la condición 111, punto en el cual se restablecería de inmediato al
estado 000. Si ignoramos la excursión temporal al estado 111, el contador iría de
000 a 110 y después se reciclaría de nuevo a 000, lo cual nos lleva a deducir que es
un contador MOD-7 (7 estados).
Determine el número MOD del contador en la figura 7-8(a). Determine además la
frecuencia en la salida D.
Solución
Éste es un contador de cuatro bits, que, por lo general, contaría desde 0000 hasta
1111. Las entradas NAND son D, C y B, lo cual significa que el contador se reciclará
de inmediato a 0000 cuando se llegue al conteo de 1110 (14 decimal). En consecuen-
cia, el contador en realidad tiene 14 estados estables (de 0000 a 1101) y es, por lo
tanto, del tipo MOD-14. Como la frecuencia de entrada es de 30 kHz, la frecuencia
en la salida D será
Procedimiento general
Para construir un contador que empiece desde 0 y que tenga un número MOD X:
1. Busque el número más pequeño de FFs tal que 2N
≥ X, y conéctelos para formar
un contador. Si 2N
 X, no realice los pasos 2 y 3.
2. Conecte una compuerta NAND a las entradas LIMPIAR asíncronas de todos los
FFs.
3. Determine cuáles FFs estarán en el estado ALTO cuando el conteo sea igual a
X; después conecte las salidas normales de estos FFs a las entradas de la com-
puerta NAND.
30 kHz
14
= 2.14 kHz
FIGURA 7-8 (a) Contador de rizo MOD-14; (b) Contador de rizo MOD-10 (de décadas).
A
CLK
K
CLR
J
B
B
C
D
B
CLK
K
J
D
K
J
30 kHz
1
D A
CLK
CLR
C
C
CLK
K
J
CLR
CLR
(a)
(b)
A
CLK
K
CLR
J
B
B
D
B
CLK
K
J
D
K
J
1 MHz
1
D A
CLK
CLR
C
C
CLK
K
J
CLR
CLR
EJEMPLO 7-7 Construya un contador MOD-10 que vaya desde 0000 (cero) hasta 1001 (9 decimal).
Solución
23
 8 y 24
 16; entonces se requieren cuatro FFs. Como el contador debe tener una
operación estable hasta el conteo de 1001, debe restablecerse a cero cuando llegue
al conteo de 1010. Por lo tanto, las salidas de los FFs D y B deberán conectarse como
entradas para la compuerta NAND. La figura 7-8(b) muestra el arreglo.
Contadores de décadas/contadores BCD
Al contador MOD-10 del ejemplo 7-7 también se le conoce como contador de déca-
das. De hecho, un contador de décadas es cualquiera que tenga 10 estados distintos,
SECCIÓN 7-4/CONTADORES CON NÚMEROS MOD 2N
375
376 CAPÍTULO 7/CONTADORES Y REGISTROS
60 Hz
Q0
Q2
Q0
Q1
Q2
Q3
Q4 Q0
Q3
Q4
Q5
CLK
K
CLR
J
1
CLK
K
CLR
J
CLK
K
CLR
J
CLK
K
CLR
J
CLK
K
CLR
J
CLK
K
CLR
J
Q1
Q2
Q3 Q0 Q1
Q2 Q0 Q1 Q0
Q1
Q2
Q3
Q4
Q5
FIGURA 7-9 Contador MOD-60.
EJEMPLO 7-8
PREGUNTAS DE REPASO
sin importar la secuencia. A un contador de décadas como el de la figura 7-8(b),
que cuenta en secuencia desde 0000 (cero) hasta 1001 (9 decimal), también se le
conoce comúnmente como contador BCD ya que sólo utiliza los 10 grupos de código
BCD 0000, 0001, . . . , 1000, y 1001. Para reiterar, cualquier contador MOD-10 es de
décadas y cualquier contador de décadas que cuente en binario desde 0000 hasta
1001 es del tipo BCD.
Los contadores de décadas (en especial el tipo BCD) tienen un amplio uso en
aplicaciones en las que se van a contar pulsos o eventos y los resultados se mos-
trarán en algún tipo de indicador numérico decimal. Más adelante examinaremos
esto con mayor detalle. Un contador de décadas también se utiliza a menudo para
dividir la frecuencia de un pulso exactamente entre 10. Los pulsos de entrada se
aplican a las entradas de reloj en paralelo, y los pulsos de salida se toman de la
salida del flip-flop D, que tiene una frecuencia igual a un décimo de la frecuencia
de la señal de entrada.
En el ejemplo 7-3 se necesitaba un contador MOD-60 para dividir la frecuencia de
línea de 60 Hz hasta 1 Hz. Construya un contador MOD-60 apropiado.
Solución
25
 32 y 26
 64, por lo que necesitamos seis FFs, como muestra la figura 7-9. El
contador deberá borrarse cuando llegue a 60 (111100). Entonces, las salidas de los
flip-flops Q5, Q4, Q3 y Q2 deberán conectarse a la compuerta NAND. La salida
del flip-flop Q5 tendrá una frecuencia de 1 Hz.
1. ¿Cuáles salidas de los FFs deberán conectarse a la compuerta NAND que se
encarga de borrar los FFs, para formar un contador MOD-13?
2. Verdadero o falso: todos los contadores BCD son de décadas.
3. ¿Cuál es la frecuencia de salida de un contador de décadas que se sincroniza a
partir de una señal de 50 kHz?
A
CLK
K
CLR
J
B
B
CLK
K
J
D
K
J
Entrada
1
AB
A
B
ABC
D A
CLK
CLR
C
C
CLK
K
J
C
CLR
CLR
A
B
Entrada
A
B
C
D
FIGURA 7-10 El contador descendente MOD-16 síncrono y las formas de onda de salida.
7-5 CONTADORES SÍNCRONOS DESCENDENTES
Y ASCENDENTES/DESCENDENTES
En la sección 7-3 vimos que al utilizar la salida de los FFs de menor orden para
controlar la conmutación de cada FF se crea un contador ascendente síncrono.
Un contador descendente síncrono se construye en forma similar, sólo que utili-
zamos las salidas de los FF invertidas para controlar las entradas J, K de mayor
orden. Si comparamos el contador descendente síncrono MOD-16 de la figura 7-10
con el contador ascendente de la figura 7-5 veremos que sólo necesitamos sustituir
la correspondiente salida invertida del FF en vez de las salidas A, B y C. Para una
secuencia de conteo descendente, el FF (A) del LSB aún necesita conmutar con
cada NGT de la señal de entrada del reloj. El flip-flop B debe cambiar de estado
en la siguiente NGT del reloj cuando A  0 (A  1). El flip-flop C cambia de estado
cuando A  B  0 (A  B  1) y el flip-flop D cambia de estado cuando A  B  C  0
(A  B  C  1). Esta configuración del circuito producirá la secuencia de conteo: 15,
14, 13, 12, …, 3, 2, 1, 0, 15, 14…, como se muestra en el diagrama de sincronización.
La figura 7-11(a) muestra cómo formar un contador ascendente/descendente
en paralelo. La entrada de control Arriba/Abajo controla si se alimentan las salidas
normales o las salidas invertidas del FF a las entradas J y K de los FFs sucesivos.
Cuando Arriba/Abajo se mantiene en ALTO se habilitan las compuertas AND 1 y 2
mientras que se deshabilitan las compuertas AND 3 y 4 (observe el inversor). Esto
permite que las salidas A y B pasen a través de las compuertas 1 y 2 a las entradas
J y K de los FFs B y C. Cuando Arriba/Abajo se mantiene en BAJO, las compuertas
AND 1 y 2 se deshabilitan mientras que las compuertas AND 3 y 4 se habilitan. Esto
permite que las salidas A y B invertidas pasen a través de las compuertas 3 y 4 a las
entradas J y K de los FFs B y C. Las formas de onda en la figura 7-11(b) ilustran la
operación. Observe que para los primeros cinco pulsos de reloj, Arriba/Abajo  1 y
el contador cuenta hacia arriba; para los últimos cinco pulsos Arriba/Abajo  0 y el
contador cuenta hacia abajo.
SECCIÓN 7-5/CONTADORES SÍNCRONOS DESCENDENTES Y ASCENDENTES. . . 377
378 CAPÍTULO 7/CONTADORES Y REGISTROS
K
A J
K
J
CLR CLR CLR
K
J
1
CLK
CLK
CLK
RELOJ
A
B
B
C
C
B
A
B
A
2
4
Arriba/Abajo
A
A
1
3
(a)
RELOJ
A
B
C
000 001 010 011 100 101 100 011 010 001 000
Conteo
(CBA)
Arriba/Abajo
(b)
Hacia arriba Hacia abajo
FIGURA 7-11 (a) Contador ascendente/descendente MOD-8 síncrono. (b) El contador cuenta hacia
arriba cuando la entrada de control Arriba/Abajo  1; cuenta hacia abajo cuando la entrada de control
Arriba/Abajo  0.
EJEMPLO 7-9
La nomenclatura utilizada para la señal de control (Arriba/Abajo) se eligió
de manera que nos haga ver claro la forma en que afecta al contador. La operación de
conteo ascendente es activa en ALTO; la operación de conteo descendente es activa
en BAJO.
¿Qué problemas podrían ocasionarse si la señal Arriba/Abajo cambiara de niveles
en la NGT del reloj?
Solución
Los FFs podrían operar en forma impredecible, ya que en algunos de ellos sus entra-
das J y K estarían cambiando casi al mismo tiempo que se produjera una NGT en
su entrada CLK. No obstante, los efectos del cambio en la señal de control deben
propagarse a través de dos compuertas antes de llegar a las entradas J, K, por lo que
es más probable que los FFs respondan en forma predecible a los niveles que hay en
J, K antes de la NGT de CLK.
FIGURA 7-12 Contador síncrono con carga en paralelo asíncrona.
P2 P1 P0
Q0
CLK
K
CLR
J
PRE
Q1
CLK
K
CLR
J
PRE
Q2
CLK
K
CLR
J
PRE
CLK
PL
Carga en paralelo
Entradas de datos en paralelo
1
PREGUNTAS DE REPASO 1. ¿Cuál es la diferencia entre la secuencia de conteo de un contador ascendente
y de un contador descendente?
2. ¿Qué cambios en el circuito convertirán a un contador binario síncrono ascen-
dente en un contador binario descendente?
7-6 CONTADORES PREAJUSTABLES
Muchos contadores síncronos (en paralelo) que están disponibles como CIs están
diseñados para ser preajustables; en otras palabras, pueden preajustarse a cual-
quier conteo inicial deseado, ya sea en forma asíncrona (independiente de la señal
del reloj) o síncrona (en la transición activa de la señal del reloj). A esta operación
de preajuste se le conoce también como carga en paralelo del contador.
La figura 7-12 muestra el circuito lógico para un contador ascendente en parale-
lo preajustable de 3 bits. Las entradas J, K y CLK se conectan para que opere como
un contador ascendente en paralelo. Las entradas asíncronas PRESTABLECER y
LIMPIAR se conectan para realizar un ajuste asíncrono. El contador se carga con
cualquier conteo deseado en cualquier momento mediante el siguiente procedi-
miento:
1. Se aplica el conteo deseado a las entradas de datos en paralelo P2, P1 y P0.
2. Se aplica un pulso BAJO a la entrada de CARGA EN PARALELO (PL).
SECCIÓN 7-6/CONTADORES PREAJUSTABLES 379
380 CAPÍTULO 7/CONTADORES Y REGISTROS
PREGUNTAS DE REPASO
Este procedimiento realizará una transferencia asíncrona de los niveles P2, P1 y
P0 hacia los flip-flops Q2, Q1 y Q0, respectivamente (sección 5-17). Esta transferencia
forzada ocurre de manera independiente de las entradas J, K y CLK. El efecto de la
entrada CLK quedará deshabilitado mientras PL se encuentre en su estado activo
en BAJO, ya que cada FF tendrá activada una de sus entradas asíncronas mientras
PL  0. Una vez que PL regrese a nivel ALTO, los FFs podrán responder con sus
entradas CLK y resumir la operación de conteo ascendente, empezando en la cuen-
ta que se cargó en el contador.
Por ejemplo, digamos que P2  1, P1  0 y P0  1. Mientras PL esté en ALTO,
estas entradas de datos en paralelo no tendrán efecto. Si hay pulsos de reloj presen-
tes, el contador realizará la operación normal de conteo ascendente. Ahora digamos
que PL cambia a BAJO cuando el contador está en el conteo 010 (es decir, Q2  0, Q1
 1 y Q0  0). Este nivel BAJO en PL producirá niveles BAJO en la entrada CLR de
Q1 y en las entradas PRE de Q2 y Q0, de manera que el contador cambiará al conteo
101 sin importar lo que esté ocurriendo en la entrada CLK. El conteo se mantendrá en 101
hasta que PL se desactive (regrese a ALTO); en ese momento el contador seguirá
contando hacia arriba con cada pulso de reloj, empezando desde el conteo de 101.
Este preajuste asíncrono lo utilizan varios contadores de CI, tales como los
chips TTL 74ALS190, 74ALS191, 74ALS192 y 74ALS193, y sus equivalentes en
CMOS, 74HC190, 74HC191, 74HC192 y 74HC193.
Preajuste síncrono
Muchos contadores en paralelo de CI utilizan el preajuste síncrono, en el cual el
contador se prestablece en la transición activa de la misma señal de reloj que se
utiliza para el conteo. El nivel lógico en la entrada de control de carga en paralelo
determina si el contador se va a prestablecer con los datos de entrada aplicados en
la siguiente transición activa del reloj.
Algunos ejemplos de contadores de CI que utilizan el preajuste síncrono son:
De la familia TTL 74ALS160, 74ALS161, 74ALS162 y 74ALS163, y sus equivalentes
en la familia CMOS 74HC160, 74HC161, 74HC162 y 74HC163.
1. ¿Qué queremos decir cuando expresamos que un contador es preajustable?
2. Describa la diferencia entre preajuste asíncrono y síncrono.
7-7 CONTADORES SÍNCRONOS DE CI
La serie 74ALS160-163/74HC160-163
La figura 7-13 muestra el símbolo lógico, el módulo y la tabla de funciones para la
serie 74ALS160 a 74ALS163 de contadores de CI (y sus contrapartes equivalentes
en CMOS, 74HC160 a 74HC163). Estos contadores reciclables de cuatro bits tienen
sus salidas etiquetadas como QD, QC, QB, QA, en donde QA es el LSB y QD es el
MSB. Están sincronizados mediante una señal PGT que se aplica a CLK. Cada uno
de estos circuitos integrados tiene una combinación distinta de dos características
diferentes. Como puede ver en la figura 7-13(b), dos de los contadores son MOD-10
(74ALS160 y 74ALS162), mientras que los otros dos son contadores binarios MOD-
16 (74ALS161 y 74ALS163). La otra variación para estas piezas está en la operación
de la función de limpiar [como se resalta en la figura 7-13(c)]. El 74ALS160 y el
74ALS161 tienen, cada uno, una entrada para limpiar asíncrona. Esto significa que
tan pronto como CLR cambie a BAJO (CLR es activa en BAJO en los circuitos men-
cionados), la salida del contador se restablecerá a 0000. Por otro lado, los contado-
res de CI 74ALS162 y 74ALS163 se borran en forma síncrona. Para ello la entrada
CLR debe estar en BAJO y debe aplicarse una señal PGT a la entrada de reloj. La
entrada limpiar tiene prioridad sobre todas las demás funciones en esta serie de
contadores de CI. Limpiar predominará sobre todas las demás entradas de control,
como se indica mediante las X en la tabla de funciones de la figura 7-13(c).
FIGURA 7-13
Contadores síncronos
de la serie 74ALS160-
74ALS163: (a) símbolo
lógico, (b) módulos;
(c) tabla de funciones.
Tabla de funciones de los CIs 74ALS160-74ALS163
ENP ENT CLK Función Números de parte
74ALS160  74ALS161
X
X
X
X 74ALS162  74ALS163
L
L
H
H
H
H
L
H
H
H
X
X
X
H
L
X
X
H
X
L
X
↑
↑
↑
X
X
Limpiar asíncrona
Limpiar síncrona
Cargar síncrona
Conteo ascendente
Sin cambios
Sin cambios
Todos
Todos
Todos
Todos
(c)
CARGAR
CLR
(a)
CLK
ENT
ENP
CLR
CARGAR
D
A
B
C
QD
QA
QB
QC
RCO
74ALS160-
74ALS163
Número
de pieza
Módulo
74ALS160 10
74ALS161 16
74ALS162 10
74ALS163 16
(b)
La función de segunda prioridad disponible en esta serie de contadores de CI
es la carga en paralelo de datos en los flip-flops del contador. Para prestablecer un
valor de datos, la entrada limpiar se pone inactiva (ALTO), se aplica el valor de
cuatro bits deseado a las terminales de entrada de datos D, C, B, A, (A es el LSB y
D es el MSB), se aplica un nivel BAJO a la entrada CARGAR y después se pone la
señal de reloj al circuito por medio de una PGT. Por lo tanto, la función de carga es
síncrona y tiene prioridad sobre el conteo, por lo que no importa qué niveles lógicos
se apliquen a ENT o ENP. Para contar a partir del estado preestablecido será nece-
sario deshabilitar la carga (con un nivel ALTO) y habilitar la función de conteo. Si
la función de carga está inactiva, no importa lo que se aplique a las terminales de
entrada de datos.
Para habilitar el conteo, la función de menor prioridad, las entradas de control
CLR y CARGAR deben estar inactivas. Además hay dos controles de habilitación
de conteo activos en ALTO, ENT y ENP. En esencia, se aplica una operación AND
a ENT y ENP para controlar la función de conteo. Si cualquiera o ambos controles
de habilitación de conteo están inactivos (BAJO), el contador mantendrá el estado
actual. Por lo tanto, para incrementar el conteo en cada PGT de CLK las cuatro
entradas de control deben estar en ALTO. Al contar, los contadores de décadas
(74ALS160 y 74ALS162) se reciclarán de manera automática a 000 después del
estado 1001 (9) y los contadores binarios (74ALS161 y 74ALS163) se reciclarán de
manera automática después de 1111 (15).
Esta serie de contadores de CI tiene una terminal más de salida: RCO. La
función de esta salida activa en ALTO es detectar (decodificar) el último estado (o
estado terminal) del contador. El estado terminal para un contador de décadas es
1001 (9), mientras que el estado terminal para un contador MOD-16 es 1111 (15). La
entrada de habilitación de conteo primaria ENT también controla la operación de
RCO. ENT debe estar en ALTO para que el contador indique con la salida RCO que
ha llegado a su estado terminal. Esta característica es muy útil para conectar dos
o más circuitos integrados tipo contador entre sí en un arreglo de múltiples etapas
para crear contadores más grandes.
SECCIÓN 7-7/CONTADORES SÍNCRONOS DE CI 381
382 CAPÍTULO 7/CONTADORES Y REGISTROS
CLK
CLR
CARGAR
ENT
ENP
QD
QC
QB
QA
RCO
t0 t1 t2 t3 t4 t6 t7
t5
(b)
(a)
CLK
ENT
ENP
CLR
CARGAR
D
A
B
C
QD
QA
QB
QC
RCO
QD
QA
QB
QC
RCO
74HC163
ENT
ENP
CLR
CARGAR
1
0
0
1
FIGURA 7-14
Ejemplo 7-10.
EJEMPLO 7-10 Consulte la figura 7-14, en donde un 74HC163 tiene las señales de entrada que se
proporcionan en el diagrama de sincronización que se aplica. Las entradas de datos
en paralelo están conectadas en forma permanente como 1100. Suponga que al prin-
cipio el contador se encuentra en el estado 0000 y determine las formas de onda de
salida de éste.
Solución
Al principio (en t0) todos los FFs del contador están en BAJO. Como éste no es
el estado terminal para el contador, la salida RCO también estará en BAJO. La
primera PGT en la entrada CLK ocurre en t1 y, como todas las entradas de control
están en ALTO, el contador se incrementará a 0001. El contador seguirá contando
en forma ascendente con cada PGT hasta t2. En este tiempo, la entrada CLR está en
BAJO. Debido a esto, el contador se restablecerá en forma síncrona al conteo 0000
en t2. Después de t2, la entrada CLR se vuelve inactiva (ALTO), por lo que el con-
tador empezará a contar de nuevo hacia arriba, partiendo desde 0000, con cada
PGT subsiguiente. En t3, la entrada CARGAR está en BAJO. Debido a esto, en t3 se
FIGURA 7-15 Ejemplo 7-11.
(b)
CLK
CLR
CARGAR
ENT
ENP
QD
QC
QB
QA
t0 t1 t3 t4 t5 t6 t7 t8 t9t10
t2
(a)
CLK
ENT
ENP
CLR
CARGAR
D
A
B
C
QD
QA
QB
QC
RCO
QD
QA
QB
QC
RCO
74HC160
ENT
ENP
CLR
CARGAR
0
1
1
1
EJEMPLO 7-11
cargará en forma síncrona el valor de datos 1100 (12) aplicado al contador. Después
de t3 la entrada CARGAR se vuelve inactiva (ALTO), por lo que el contador seguirá
contando hacia arriba, partiendo desde 1100 con cada PGT subsiguiente hasta t4.
La salida del contador no cambia en t4 ni en t5, ya que ENP o ENT (las entradas de
habilitación de conteo) están en BAJO. Esto mantiene el conteo en 1110 (14). En t6
el contador se habilita de nuevo y cuenta hasta 1111 (15), su estado terminal. Como
resultado, ahora la salida RCO cambia a ALTO. En t7 otra PGT en CLK hará que el
contador se recicle a 0000 y RCO regresa al nivel BAJO.
Consulte la figura 7-15, ahí se muestra un 74HC160 al que se le aplican las señales
de entrada indicadas en el diagrama de tiempo. Las entradas de datos en paralelo
se conectan de manera permanente como 0111. Suponga que al principio el conta-
SECCIÓN 7-7/CONTADORES SÍNCRONOS DE CI 383
384 CAPÍTULO 7/CONTADORES Y REGISTROS
(a)
CLK
CTEN
D/U
CARGAR
Máx
/Mín
D
A
B
C
QD
QA
QB
QC
RCO
74ALS190-
74ALS191
(b)
Número
de parte
Módulo
74ALS190 10
74ALS191 16
(c)
Tabla de funciones de los circuitos 74ALS190-74ALS191
CLK Función
L
H
H
H
X
L
L
H
X
L
H
X
X
↑
↑
X
Carga asíncrona
Conteo descendente
Conteo ascendente
Sin cambio
CARGAR CTEN D/U
FIGURA 7-16
Contadores síncronos
de la serie 74ALS190-
74ALS191: (a) símbolo
lógico; (b) módulo;
(c) tabla de funciones.
dor se encuentra en el estado 0000 y determine las formas de onda de salida del
contador.
Solución
Al principio (en t0) los FFs del contador están todos en BAJO. Como éste no es el
estado terminal para el contador BCD, la salida RCO también estará en BAJO. La
primera PGT en la entrada CLK ocurre en t1, y como todas las entradas de control
están en ALTO, el contador se incrementará a 0001. El contador seguirá contando en
forma ascendente con cada PGT hasta t2. La entrada CLR asíncrona cambia a BAJO
en t2, con lo cual el contador se restablecerá de inmediato a 0000 en ese punto. En
t3 la entrada CLR sigue activa (BAJO), por lo que se ignorará la PGT de la entrada
CLK y el contador permanecerá en 0000. Más adelante la entrada CLR se vuelve
inactiva de nuevo y el contador seguirá contando hasta 0001 y después hasta 0010.
En t4 la señal de habilitación de conteo ENP está en BAJO, por lo que el conteo
se mantiene en 0010. En las PGTs subsiguientes de la entrada CLK, el contador se
habilita y cuenta hacia arriba hasta t5. La entrada CARGAR está en bajo para t5.
Esto cargará en forma síncrona el valor de datos aplicado 0111 (7) en el contador, en
t5. En t6 la señal de habilitación de conteo ENT está en BAJO, por lo que el conteo se
mantiene en 0111. Para las dos PGTs subsiguientes después de t6, el contador segui-
rá contando hacia arriba ya que está rehabilitado. En t7, el contador BCD llega a su
estado terminal 1001 (9) y la salida RCO cambia a ALTO. En t8, ENP está en BAJO
y el contador se detiene (se queda en 1001). En t9, mientras ENT esté en BAJO la
salida RCO se deshabilitará, de forma que regrese a BAJO aún y cuando el contador
siga en su estado terminal (1001). Recuerde que sólo ENT controla la salida RCO.
Cuando ENT regresa a ALTO durante el estado terminal del contador, RCO cambia
a ALTO de nuevo. En t10 el contador se habilita y se recicla a 0000, después cuenta
hasta 0001 en la última PGT.
La serie 74ALS190-191/74HC190-191
La figura 7-16 muestra el símbolo lógico, el módulo y la tabla de funciones para las
series de circuitos integrados contadores 74ALS190 y 74ALS191 (y sus equivalentes
en CMOS, 74HC190 y 74HC191). Estos contadores reciclables de cuatro bits tienen
salidas etiquetadas como QD, QC, QB, QA, en donde QA es el LSB y QD es el MSB.
Se sincronizan mediante una señal PGT que se aplica en CLK. La única diferencia
entre dichos circuitos es el módulo del contador. El 74ALS190 es un contador MOD-
10 y el 74ALS191 es un contador binario MOD-16. Ambos circuitos son contadores
ascendentes/descendentes y tienen una entrada de carga asíncrona, activa en
BAJO. Esto significa que, tan pronto como CARGAR cambie a BAJO, el contador
EJEMPLO 7-12
se prestablecerá (en paralelo) con los datos disponibles en las terminales de entra-
da D, C, B, A (A es el LSB y D es el MSB). Si la función de carga está inactiva, no
importa lo que se aplique a las terminales de datos de entrada. La entrada de carga
tiene prioridad sobre la función de conteo.
Para contar, la entrada de control CARGAR debe estar inactiva (ALTO) y la
entrada de control de habilitación de conteo (CTEN) debe estar en BAJO. La direc-
ción del conteo se controla mediante la entrada de control D/U. Si D/U está en
BAJO, el conteo se incrementa con cada PGT de CLK, mientras que un nivel ALTO
en D/U disminuirá el conteo. Ambos contadores se reciclan de manera automática en
cualquier dirección de conteo. El contador de décadas se recicla a 0000 después
del estado 1001 (9) cuando cuenta hacia arriba, o a 1001 después del estado 0000
cuando cuenta hacia abajo. El contador binario se recicla a 0000 después de 1111
(15) cuando cuenta hacia arriba, o a 1111 después del estado 0000 cuando cuenta
hacia abajo.
Estos circuitos tipo contador tienen dos terminales más de salida, MÁX/MÍN y
RCO. La primera es una salida activa en ALTO que detecta (decodifica) el estado
terminal del contador. Como son contadores ascendentes/descendentes, el estado ter-
minal depende de la dirección del conteo. El estado terminal (MÍN) para cualquiera
de los contadores cuando el conteo es descendente es 0000 (0). No obstante, cuando
el conteo es ascendente el estado terminal (MÁX) para un contador de décadas es
1001 (9), mientras que el estado terminal para un contador MOD-16 es 1111 (15).
Observe que MÁX/MÍN sólo detecta un estado en la secuencia de conteo; sólo
depende de si está contando hacia arriba o hacia abajo. La salida RCO activa en
BAJO también detecta el estado terminal apropiado para el contador, pero es más
complicada. En primer lugar, sólo se habilita cuando CTEN está en BAJO. Además,
RCO sólo estará en BAJO mientras que la entrada CLK se encuentre también en
BAJO. Así que, en esencia, RCO imitará la forma de onda de CLK sólo durante el
estado terminal mientras el contador esté habilitado.
Consulte la figura 7-17, en donde se muestra un circuito 74HC190 al que se le
aplican las señales de entrada mostradas en el diagrama de tiempo. Las entradas
de datos en paralelo se conectan de manera permanente como 0111. Suponga que
al principio el contador se encuentra en el estado 0000 y determine las formas de
onda de salida del contador.
Solución
Al principio (en t0) los FFs del contador están todos en BAJO. Como el contador
está habilitado (CTEN  0) y la entrada de control de dirección de conteo D/U  0,
el contador BCD empezará a contar en forma ascendente en la primera señal PGT
que se aplique a CLK en t1, y continuará contando hacia arriba con cada PGT hasta
t2, en donde el conteo ha llegado a 0101. La entrada CARGAR asíncrona cambia a
BAJO en t2 y cargará de inmediato el valor 0111 en el contador en ese punto. En t3
la entrada CARGAR sigue activa (BAJO), por lo que se ignorará la señal PGT en la
entrada CLK y el contador permanecerá en 0111. Más adelante la entrada CARGAR
cambia a ALTO de nuevo y el contador avanzará el conteo ascendente hasta 1000 en
la siguiente PGT. En t4 el contador se incrementa a 1001, que es el estado terminal
para un contador BCD ascendente y en consecuencia la salida MÁX/MÍN cambiará
a ALTO. Durante t5 el contador se encuentra en su estado terminal y la entrada
CLK está en BAJO, por lo que RCO cambia a BAJO. Para las PGTs subsiguientes
de la entrada CLK, el contador se recicla a 0000 y continúa contando hacia arriba
hasta t6. Justo antes de t6, el control D/U cambia al nivel ALTO. Esto hará que el
contador cuente hacia abajo en t6 y de nuevo en t7, en donde quedará en el estado
0000, que ahora es el estado terminal ya que está contando hacia abajo, y MÁX/MÍN
tendrá un nivel ALTO. Durante t8, cuando la entrada CLK cambia a BAJO, la salida
RCO estará de nuevo en BAJO. En t9 el contador se deshabilita con CTEN  1 y
mantendrá el conteo en 1001. Para los siguientes pulsos en CLK, el contador seguirá
contando hacia abajo.
SECCIÓN 7-7/CONTADORES SÍNCRONOS DE CI 385
386 CAPÍTULO 7/CONTADORES Y REGISTROS
(b)
CLK
CARGAR
CTEN
QC
QD
QB
QA
MÁX/MÍN
RCO
t0 t1 t3 t4 t5 t6 t7 t8 t9
t2
D/U
(a)
74HC190
CARGAR
0
1
1
1
CLK
CTEN
D/U
CARGAR
Máx
/Mín
D
A
B
C
QD
QA
QB
QC
RCO
CTEN
D/U
FIGURA 7-17 Ejemplo 7-12.
EJEMPLO 7-13 Compare la operación de dos contadores: uno con carga síncrona y el otro con carga
asíncrona. Consulte la figura 7-18(a), en donde un 74ALS163 y un 74ALS191 se han
conectado en forma similar para contar hacia arriba en binario. Ambos circuitos se
controlan mediante la misma señal de reloj y sus salidas QD y QC están conectadas
a una compuerta NAND para controlar la entrada de control CARGAR respectiva.
Suponga que al principio ambos contadores se encuentran en el estado 0000.
(a) Determine la forma de onda de salida para cada contador.
(b) ¿Cuál es la secuencia de conteo de reciclaje y el módulo para cada contador?
(c) ¿Por qué tienen distintas secuencias de conteo?
(b)
(a)
0
0
0
1
0
0
0
1
0
0
1
1
1
S3
S2
S1
S0
T3
T2
T1
T0
S-LD T-LD
S0
S1
S2
S3
T0
T1
T2
T3
S-LD
T-LD
CLK
CLK
ENT
ENP
CLR
CARGAR
74ALS163
D
A
B
C
QD
QA
QB
QC
RCO
CLK
Máx
/Mín
D/U
CARGAR
D
A
B
C
QD
QA
QB
QC
74ALS191
CTEN RCO
FIGURA 7-18 Ejemplo 7-13.
Solución
(a) Comenzando en el estado 0000, cada contador contará hacia arriba hasta llegar
al estado 1100 (12), como muestra la figura 7-18(b). La salida de cada com-
puerta NAND aplicará un nivel BAJO a la entrada CARGAR respectiva en ese
tiempo. El 74ALS163 tiene una entrada CARGAR síncrona, por lo que esperará
SECCIÓN 7-7/CONTADORES SÍNCRONOS DE CI 387
388 CAPÍTULO 7/CONTADORES Y REGISTROS
FIGURA 7-19 Dos chips 74ALS163 conectados en un arreglo de dos etapas, para extender el rango máximo
de conteo.
74ALS163 74ALS163
1 1
Q0 (LSB)
Q1
Q2
Q3
Q4
Q5
Q6
Q7
D0
D1
D2
D3
D4
D5
D6
D7
EN
CLR
LD
A las etapas
de mayor orden
del contador
A las etapas
de mayor orden
del contador
TC1 TC2
Nibble
menos
significativo
CLK
ENT
ENP
CLR
LOAD
D
A
B
C
QD
QA
QB
QC
RCO
etapa 1
CLK
ENT
ENP
CLR
LOAD
D
A
B
C
QD
QA
QB
QC
RCO
etapa 2
hasta la siguiente PGT en CLK para cargar los datos de entrada 0001 en el con-
tador. El 74ALS191 tiene una entrada CARGAR asíncrona, por lo que cargará
de inmediato los datos de entrada 0001 en el contador. Esto convertirá al estado
1100 en temporal o transiente para el 74ALS191. El estado transiente producirá
algunos picos o deformaciones en algunas de las salidas del contador, debido a
la rápida acción de alternar hacia atrás y hacia delante.
(b) El circuito 74ALS163 tiene una secuencia de conteo de reciclaje de 0001 hasta
1100 y es un contador MOD-12. El circuito 74ALS191 tiene una secuencia de
conteo de reciclaje de 0001 hasta 1011 y es un contador MOD-11. No se incluyen
los estados transientes al determinar el módulo para un contador.
(c) Los circuitos tipo contador tienen distintas secuencias de conteo debido a que
uno de ellos tiene una carga síncrona y el otro tiene una carga asíncrona.
Arreglo de múltiples etapas
Muchos contadores de CI estándar se han diseñado para facilitar la conexión de
varios circuitos integrados en conjunto para crear circuitos con un rango de conteo
más alto. Todos los circuitos tipo contador que se presentan en esta sección pueden
conectarse en un arreglo de múltiples etapas o en cascada. En la figura 7-19, dos
circuitos 74ALS163 se conectan en un arreglo de contadores de dos etapas que
produce una secuencia binaria con reciclaje de 0 a 255, para un módulo máximo
de 256. Al aplicar un nivel BAJO en la entrada CLR se borrarán en forma síncrona
ambas etapas de contador, y al aplicar un nivel BAJO a LD el contador de ocho bits
se prestablecerá en forma síncrona al valor binario en las entradas D7, D6, D5, D4,
D3, D2, D1, D0 (D0  LSB). El bloque a la izquierda (etapa 1) es la etapa de menor
orden y proporciona las salidas menos significativas del contador: Q3, Q2, Q1, Q0
(en donde Q0  LSB). La etapa 2 a la derecha proporciona las salidas más significa-
tivas del contador: Q7, Q6, Q5, Q4 (en donde Q7  MSB).
EN, la entrada de habilitación para el contador de ocho bits, se conecta a la
entrada ENT en la etapa 1. Observe que debemos usar la entrada ENT y no ENP,
ya que sólo ENT controla la salida RCO. El uso de ENT y RCO facilita en forma
considerable la conexión en cascada. Ambos bloques del contador se coordinan en
forma síncrona, pero el bloque a la derecha (etapa 2) está deshabilitado hasta que
el nibble de salida menos significativo haya llegado a su estado terminal, el cual se
indica mediante la salida TC1. Cuando Q3, Q2, Q1, Q0 llegan a 1111 y si EN está en
ALTO, entonces TC1 producirá un nivel ALTO. Esto permitirá que ambas etapas del
contador cuenten uno hacia arriba con la siguiente PGT en el reloj. La etapa 1 se
PREGUNTAS DE REPASO
reciclará de vuelta a 0000 y la etapa 2 se incrementará a partir de su estado de sali-
da anterior. TC1 regresará a un nivel BAJO ya que la etapa 1 no se encuentra más
en su estado terminal. Con los subsiguientes ciclos de reloj, la etapa 1 continuará
contando hacia arriba si EN  1, hasta que llegue de nuevo a 1111 y se repite el
proceso. Cuando el contador de ocho bits llega a 11111111, se reciclará de vuelta a
00000000 en el siguiente pulso de reloj.
De la misma forma, pueden conectarse en cascada circuitos contador 74ALS163
adicionales. TC2 se conectaría al control ENT en el siguiente circuito, y así en lo
sucesivo. TC2 estará en ALTO cuando Q7, Q5, Q4 sea igual a 1111 y TC1 esté en
ALTO, lo cual a su vez significa que Q3, Q2, Q1, Q0 son igual a 1111 y EN está
en ALTO. Esta técnica en cascada funciona para todos los circuitos (familia TTL o
CMOS) en esta serie, incluso para los contadores BCD. La serie 74ALS190-191 (o
74HC190-191) también puede conectarse en cascada de manera similar si se utili-
zan las terminales CTEN y RCO activas en BAJO. Un contador de múltiples etapas
que utilice circuitos 74ALS190-191 conectado de esta forma podrá contar hacia
arriba o hacia abajo.
1. Describa la función de las entradas CARGAR y D, C, B, A.
2. Describa la función de la entrada CLR.
3. Verdadero o falso: el 74HC161 no puede prestablecerse mientras CLR está activa.
4. ¿Qué niveles lógicos deben estar presentes en las entradas de control para que
el 74ALS162 pueda contar pulsos que aparezcan en CLK?
5. ¿Qué niveles lógicos deben estar presentes en las entradas de control para que
el 74HC190 pueda contar hacia abajo con pulsos que aparezcan en CLK?
6. ¿Cuál sería el rango máximo de conteo para un contador de cuatro etapas forma-
do por CIs 74HC163? ¿Cuál es el rango máximo de conteo para CIs 74ALS190?
7-8 DECODIFICACIÓN DE UN CONTADOR
Los contadores digitales se utilizan con frecuencia en aplicaciones en las que el
conteo representado por los estados de los FFs debe determinarse o visualizarse
de alguna forma. Uno de los medios más simples para visualizar el contenido de
un contador implica sólo conectar la salida de cada FF a un pequeño LED indica-
dor [vea la figura 7-7(b)]. De esta manera, los estados de los FFs se representan
en forma visual mediante los LEDs (encendido  1, apagado  0) el conteo se
puede determinar mentalmente, decodificando los estados binarios de los LEDs.
Por ejemplo, suponga que se utiliza este método para un contador BCD y que los
estados de los LEDs son apagado-encendido-encendido-apagado, respectivamente.
Esto representaría el valor 0110, el cual decodificaríamos mentalmente como el 6
decimal. Otras combinaciones de los estados de los LEDs representarían los demás
posibles conteos.
El método del LED indicador se vuelve inconveniente a medida que aumenta
el tamaño (número de bits) del contador, ya que es demasiado difícil decodificar
mentalmente los resultados visualizados. Por esta razón es preferible desarrollar
un medio para decodificar por medios electrónicos el contenido de un contador y
visualizar los resultados en un formato que se reconozca de inmediato y no requiera
operaciones mentales.
Una razón aún más importante para la decodificación electrónica de un conta-
dor se debe a las diversas aplicaciones en las que se utilizan los contadores para
controlar la sincronización o la secuencia de las operaciones en forma automática,
sin intervención humana. Por ejemplo, la operación de cierto sistema tal vez tenga
que iniciarse cuando un contador llegue al estado 101100 (conteo de 4410). Puede
utilizarse un circuito lógico para decodificar o detectar el momento en el que se
presente este conteo específico y después iniciar la operación. En un sistema digi-
SECCIÓN 7-8/DECODIFICACIÓN DE UN CONTADOR 389
390 CAPÍTULO 7/CONTADORES Y REGISTROS
FIGURA 7-20 Uso de compuertas AND para decodificar un contador MOD-8.
1
000 001 010 011 101 110 111
100
CLK
CLK
C B A
C B A
C B A
C B A
C B A
0
1
2
3
4
5
6
7
C K
C J
CLK
B K
B J
CLK
A K
A J
CLK
C B A
C B A
C B A
C B A
C B A
C B A
tal, muchas operaciones tienen que controlarse de esta forma. Es evidente que no
sería conveniente la intervención humana en este proceso, excepto en sistemas en
extremo lentos.
Decodificación activa en ALTO
Un contador MOD-X tiene X estados distintos; cada estado es un patrón específico
de 0s y 1s que se almacenan en los FFs del contador. Una red decodificadora es un
circuito lógico que genera X salidas distintas, cada una detecta (decodifica) la pre-
sencia de un estado específico del contador. Las salidas del decodificador pueden
diseñarse para producir ya sea un nivel ALTO o BAJO cuando ocurre la detección.
Un decodificador activo en ALTO produce salidas en ALTO para indicar la detec-
ción. La figura 7-20 muestra la lógica de decodificación activa en ALTO completa
EJEMPLO 7-14
EJEMPLO 7-15
para un contador MOD-8. El decodificador consiste de ocho compuertas AND de
tres entradas; cada una estas compuertas produce una salida en ALTO para un
estado específico del contador.
Por ejemplo, la compuerta AND 0 tiene como entradas las salidas C, B y A de los
FFs. Por ende, su salida estará en BAJO en todo momento, excepto cuando A  B 
C  0; esto es, en el conteo de 000 (cero). De manera similar, la compuerta AND 5
tiene como entradas las salidas C, B y A de los FFs, por lo que su salida cambiará a
ALTO sólo cuando C  1, B  0 y A  1; esto es, en el conteo de 101 (5 decimal). El
resto de las compuertas AND funciona de la misma forma para los demás posibles
conteos. En cualquier momento dado, sólo la salida de una compuerta AND está en
ALTO: la que está decodificando para el conteo específico presente en el contador.
Las formas de onda de la figura 7-20 muestran esto con claridad.
Las salidas de las ocho compuertas AND pueden utilizarse para controlar ocho
LEDs, los cuales representan los números decimales del 0 al 7. Sólo un LED estará
encendido en cualquier momento dado, indicando el conteo apropiado.
El decodificador de compuerta AND puede extenderse para funcionar con
contadores con cualquier número de estados. Esto se ilustra mediante el siguiente
ejemplo.
¿Cuántas compuertas AND se requieren para decodificar por completo todos los
estados de un contador binario MOD-32? ¿Cuáles son las entradas para la compuer-
ta que decodifica el conteo de 21?
Solución
Un contador MOD-32 tiene 32 posibles estados. Se necesita una compuerta AND para
decodificar para cada estado; por lo tanto, el decodificador requiere 32 compuertas
AND. Como 32  25
, el contador contiene cinco FFs. Por ende, cada compuerta ten-
drá cinco entradas, una de cada FF. Para decodificar el conteo de 21 (esto es, 101012)
se requieren las entradas de E, D, C, B y A en la compuerta AND, en donde E es el
flip-flop del MSB.
Decodificación activa en BAJO
Si se utilizan compuertas NAND en vez de compuertas AND, las salidas del decodi-
ficador producen una señal que está, por lo general, en nivel ALTO, la cual cambia
a BAJO sólo cuando ocurre el número que se está decodificando. Se utilizan ambos
tipos de decodificadores, dependiendo del tipo de circuitos que se van a controlar
mediante las salidas del decodificador.
La figura 7-21 muestra una situación común en la que se utiliza un contador para
generar una forma de onda de control, la cual podría usarse para controlar dispositi-
vos tales como un motor, una válvula solenoide o un calentador. El contador MOD-16
cicla y recicla a través de su secuencia de conteo. Cada vez que llega al conteo de 8
(1000), la compuerta NAND superior produce una salida en BAJO que establece el
flip-flop X para que quede en el estado 1. El flip-flop X permanece en ALTO hasta
que el contador llega al conteo de 14 (1110), tiempo en el cual la compuerta NAND
inferior la decodifica y produce una salida en BAJO para borrar X y que quede en el
estado 0. En consecuencia, la salida X está en ALTO entre los conteos de 8 y 14 para
cada ciclo del contador.
Decodificación de contadores BCD
Un contador BCD tiene 10 estados que pueden decodificarse mediante el uso de
las técnicas antes descritas. Los decodificadores BCD proporcionan 10 salidas que
corresponden a los dígitos decimales del 0 al 9 y se representan mediante los esta-
SECCIÓN 7-8/DECODIFICACIÓN DE UN CONTADOR 391
392 CAPÍTULO 7/CONTADORES Y REGISTROS
D C B A
Contador BCD
Unidad
decodificadora/pantalla
Pulsos de entrada
Salidas de los FFs
Exhibidor de
7 segmentos
FIGURA 7-22 Por lo
general, los contadores
BCD muestran su conteo
en un solo dispositivo
de visualización.
1
CLK
D
_
C
_
B
_
A
0
D
_
A
C
B
0
estado
1000
estado
1110
decodifica
1000
decodifica
1110
1
D K
D J
CLK
C K
C J
CLK
B K
B J
CLK
A K
A J
CLK
CLR
K
X
J
CLK
PRE
X
FIGURA 7-21 Ejemplo 7-15.
dos de los FFs del contador. Estas 10 salidas pueden utilizarse para controlar 10
LEDs indicadores individuales para un despliegue visual. Es más común utilizar un
solo dispositivo de visualización para mostrar los números decimales del 0 al 9 en
lugar de 10 LEDs separados. Una clase de visualizadores decimales contiene siete
pequeños segmentos formados de un material (por lo general, LEDs o pantallas
de cristal líquido) que emiten luz o reflejan la luz ambiental. Las salidas del deco-
dificador BCD controlan qué segmentos se iluminan para producir un patrón que
represente uno de los dígitos decimales.
En el capítulo 9 veremos con más detalle todos estos tipos de decodificadores
y pantallas. No obstante y como los contadores BCD y sus decodificadores y exhibi-
dores asociados son muy comunes, utilizaremos la unidad decodificadora/pantalla
(vea la figura 7-22) para representar los circuitos completos que se utilizan para
mostrar en forma visual el contenido de un contador BCD como un dígito decimal.
FIGURA 7-23 Contador síncrono con distintas entradas de control.
CLK
C K
C J
CLK
B K
B J
CLK
A K
A J
CLK
PREGUNTAS DE REPASO 1. ¿Cuántas compuertas se necesitan para decodificar un contador de seis bits por
completo?
2. Describa la compuerta decodificadora necesaria para producir una salida en
BAJO cuando un contador MOD-64 se encuentra en el conteo de 23.
7-9 ANÁLISIS DE LOS CONTADORES SÍNCRONOS
Los circuitos tipo contador síncrono pueden diseñarse en forma personalizada para
generar cualquier secuencia de conteo deseada. Podemos usar sólo las entradas sín-
cronas que se apliquen a los flip-flops individuales para producir la secuencia del
contador. Si no utilizamos controles asíncronos en los FFs (tales como los controles
para limpiar) para cambiar la secuencia del contador, nunca tendremos que enfren-
tar los estados transitorios y las posibles deformaciones en las formas de onda de
la salida. En la siguiente sección investigaremos el proceso de diseñar contadores
completamente síncronos. Primero veamos cómo analizar el diseño de un contador
de este tipo, prediciendo las entradas de control de los FFs para cada estado del
contador. Una tabla de estado PRESENTE / estado SIGUIENTE es una herramienta
muy útil en este proceso de análisis. El primer paso es escribir la expresión lógica
para cada una de las entradas de control de los FFs. Después se asume un estado
PRESENTE para el contador y se aplica esa combinación de bits a las expresiones
lógicas de control. Las salidas de las expresiones de control nos permitirán prede-
cir los comandos para cada FF y el estado SIGUIENTE resultante para el contador
después de la sincronización por el reloj. Se repite el proceso de análisis hasta
determinar toda la secuencia completa de conteo.
La figura 7-23 es un contador síncrono que tiene entradas J y K un poco distin-
tas a las que vimos en la sección 7-3 para un contador ascendente binario común.
Estos pequeños cambios en los circuitos de control harán que el contador produzca
una secuencia de conteo distinta. Las expresiones de las entradas de control para
este contador son:
Vamos a suponer que el estado PRESENTE para el contador es CBA  000. Si
aplicamos esta combinación a las expresiones de control antes mencionadas se pro-
ducirá la condición JCKC  0 0, JBKB  0 0 y JAKA  1 1. Estas entradas de control
indicarán a los FFs C y B que retengan su estado y al FF A que conmute en la
siguiente NGT de CLK. El estado SIGUIENTE previsto es 001 para CBA. Hemos
JA = KA = C
JB = KB = A
KC = C
JC = A # B
SECCIÓN 7-9/ANÁLISIS DE LOS CONTADORES SÍNCRONOS 393
394 CAPÍTULO 7/CONTADORES Y REGISTROS
CLK
A
B
C
C B A
000
001
010
100
011
110
111
101
(b)
(a)
FIGURA 7-24 (a) Diagrama de transición de estados y (b) diagrama de sincronización para el contador
asíncrono de la figura 7-23.
introducido esta información en la primera línea de la tabla de estado PRESENTE
/ estado SIGUIENTE que se muestra en la tabla 7-1. A continuación podemos utili-
zar el estado 001 como nuestro estado PRESENTE. Si analizamos las expresiones de
control con esta nueva combinación se producirá ahora la condición JCKC  0 0, JBKB
 1 1 y JAKA  1 1, lo cual nos da un comando de retención para el FF C y comandos
de conmutación para los FFs B y A. Esto producirá el estado SIGUIENTE de 010
para CBA, que hemos listado en la segunda línea de la tabla 7-1. Si continuamos con
este proceso se producirá una secuencia de conteo reciclable de 000, 001, 010, 011,
100, 000. Esta sería una secuencia de conteo MOD-5. Podemos predecir los estados
SIGUIENTE para las tres posibles combinaciones de estado restantes de la misma
forma. Al hacerlo podremos determinar si el diseño del contador es autocorregible.
Un contador autocorregible es aquel en el que, por lo general, los estados sin utili-
zar regresarán de alguna forma a la secuencia de conteo normal. Si cualquiera de
estos estados no utilizados no puede regresar a la secuencia normal, se dice que el
contador no es autocorregible. Hemos introducido en la tabla 7-1 nuestras predic-
ciones del estado SIGUIENTE para todos los posibles estados. La información resal-
tada indica que el diseño de este contador es autocorregible. La figura 7-24 muestra
completos el diagrama de transición de estados y el diagrama de tiempos para este
contador.
De igual forma podemos analizar la operación de los circuitos tipo contador
que utilizan flip-flops D para almacenar el estado presente del contador. Por lo
TABLA 7-1
Estado PRESENTE Entradas de control Estado SIGUIENTE
C B A JC KC JB KB JA KA C B A
0 0 0 0 0 0 0 1 1 0 0 1
0 0 1 0 0 1 1 1 1 0 1 0
0 1 0 0 0 0 0 1 1 0 1 1
0 1 1 1 0 1 1 1 1 1 0 0
1 0 0 0 1 0 0 0 0 0 0 0
1 0 1 0 1 1 1 0 0 0 1 1
1 1 0 0 1 0 0 0 0 0 1 0
1 1 1 1 1 1 1 0 0 0 0 1
FIGURA 7-25
Contador síncrono
que utiliza flip-flops D.
general, los circuitos de control para un flip-flop tipo D serán más complejos que
para un contador tipo JK equivalente que produzca la misma secuencia de conteo,
pero también tendremos que controlar la mitad del número de entradas síncronas.
La mayoría de los PLDs utilizan flip-flops D para sus elementos de memoria, por lo
que el análisis de este tipo de circuito contador nos proporcionará algo de detalle
sobre la forma en que se programan los contadores dentro de un PLD.
La figura 7-25 muestra un contador síncrono diseñado con flip-flops D. El pri-
mer paso es escribir las expresiones lógicas para las entradas D:
Después determinaremos la tabla del estado PRESENTE / estado SIGUIENTE
para el circuito contador; para ello debemos suponer un estado y aplicar ese conjun-
to de valores de bits a las expresiones de entrada antes descritas. Si elegimos CBA
 000 para el estado inicial del contador obtendremos como resultado DC  0, DB
 0 y DA  1. Con una PGT en RELOJ los flip-flops “cargarán” el valor 001, que se
convertirá en el estado SIGUIENTE del contador. Si utilizamos 001 como el estado
PRESENTE se producirán entradas de DC  0, DB  1 y DA  0, de manera que 010
será el estado SIGUIENTE, y así en lo sucesivo. La tabla del estado PRESENTE /
estado SIGUIENTE que se muestra en la tabla 7-2 indica que este circuito es un
contador binario MOD-8 reciclable. Si aplicamos un poco de álgebra booleana a las
expresiones de entrada, podremos ver que en realidad hay un patrón de circuito
bastante simple para crear contadores binarios a partir de flip-flops D:
RELOJ
B
B D
CLK
A
A D
CLK
B A
C
DC
DB
DA
C
C D
CLK
DA = A
DB = B A + B A
DC = C B + C A + C B A
DA = A
DB = B A + B A = B { A
= C B A + C (B A) = C { (A B)
DC = C B + C A + C B A = C (B + A) + C B A
Estado PRESENTE Entradas de control Estado SIGUIENTE
C B A DC DB DA C B A
0 0 0 0 0 1 0 0 1
0 0 1 0 1 0 0 1 0
0 1 0 0 1 1 0 1 1
0 1 1 1 0 0 1 0 0
1 0 0 1 0 1 1 0 1
1 0 1 1 1 0 1 1 0
1 1 0 1 1 1 1 1 1
1 1 1 0 0 0 0 0 0
TABLA 7-2
SECCIÓN 7-9/ANÁLISIS DE LOS CONTADORES SÍNCRONOS 395
396 CAPÍTULO 7/CONTADORES Y REGISTROS
PREGUNTAS DE REPASO
Es importante observar que los recursos de compuertas para la mayoría de los
PLDs en realidad consisten de conjuntos de arreglos de circuitos AND-OR y que la
expresión lógica SOP (Suma de Productos) describe con más precisión la implemen-
tación interna del circuito. No obstante, podemos ver que las expresiones se han
simplificado de manera considerable mediante el uso de la función XOR. Esto nos
lleva a predecir de manera correcta que para crear un contador binario MOD-16 con
flip-flops D necesitaríamos un cuarto FF con:
1. ¿Por qué es conveniente evitar tener controles asíncronos en los contadores?
2. ¿Qué herramienta es útil para el análisis de los contadores síncronos?
3. ¿Qué es lo que determina la secuencia de conteo para un circuito tipo conta-
dor?
4. ¿Qué característica del contador se describe diciendo que es autocorregible?
7-10 DISEÑO DE UN CONTADOR SÍNCRONO*
Hay muchos arreglos de contador en forma de CIs: asíncronos, síncronos y combi-
nación de asíncrono/síncrono. La mayoría cuenta con una secuencia binaria nor-
mal o en BCD, aunque sus secuencias de conteo pueden alterarse en cierta forma
mediante los métodos para borrar o cargar que demostramos para las series de CIs
74ALS160-163 y 74ALS190-191. No obstante, hay situaciones en las que se requiere
un contador personalizado que siga una secuencia que no sea un patrón de conteo
binario regular, por ejemplo: 000, 010, 101, 001, 110, 000 ….
Existen varios métodos para diseñar contadores que siguen secuencias arbitra-
rias.Vamos a presentar los detalles para un método común que utiliza flip-flops J-K
en una configuración de contador síncrono. El mismo método puede utilizarse en
diseños con flip-flops D. La técnica es uno de varios procedimientos de diseño que
forman parte de un área del diseño de circuitos digitales, conocida como diseño de
circuitos secuenciales, que, por lo general, es parte de un curso avanzado.
Idea básica
En los contadores síncronos todos los FFs se sincronizan al mismo tiempo. Antes
de cada pulso de reloj, las entradas J y K de cada FF en el contador deben estar en
el nivel correcto para asegurar que el FF cambie al estado correcto. Por ejemplo,
considere la situación en la que el estado 101 para el contador CBA debe ir seguido
del estado 011. Cuando ocurre el siguiente pulso de reloj, las entradas J y K de los
FFs deben estar en los niveles correctos que hagan que el flip-flop C cambie de 1 a
0, que el flip-flop B cambie de 0 a 1 y el flip-flop A de 1 a 1 (es decir, no cambie).
En consecuencia, el proceso de diseñar un contador síncrono se convierte en
el proceso de diseñar los circuitos lógicos que decodifiquen los diversos estados del
contador para suministrar los niveles lógicos apropiados a cada entrada J y K en el
tiempo correcto. Las entradas para estos circuitos decodificadores provendrán de
las salidas de uno o más FFs. Para ilustrar esto, en el contador síncrono de la figura
7-5 la compuerta AND que alimenta las entradas J y K del flip-flop C decodifica los
estados de los flip-flops A y B. De igual forma, la compuerta AND que alimenta las
entradas J y K del flip-flop D decodifica los estados de A, B y C.
DD = D { (A B C)
* Puede omitirse este tema sin afectar la continuidad del resto del libro.
Tabla de excitación J-K
Antes de comenzar el proceso de diseñar los circuitos decodificadores para cada
entrada J y K, primero debemos repasar la operación del flip-flop J-K utilizando un
enfoque distinto, conocido como tabla de excitación (tabla 7-3). La columna más a la
izquierda en esta tabla lista cada posible transición de salida de un FF. Las colum-
nas segunda y tercera listan el estado PRESENTE del FF (simbolizado como Qn) y
el estado SIGUIENTE (simbolizado como Qn1) para cada transición. Las últimas
dos columnas listan los niveles de J y K requeridos para producir cada transición.
Ahora examinemos cada caso.
TRANSICIÓN 0 → 0 El estado PRESENTE del FF es 0 y deberá permanecer
en 0 cuando se aplique un pulso de reloj. De lo que conocemos acerca de la
forma en que funciona un flip-flop J-K, esto puede ocurrir cuando J  K  0
(condición sin cambio) o cuando J  0 y K  1 (condición de limpiar). Por ende,
J debe estar en 0 pero K puede estar en cualquier nivel. La tabla indica esto
con un “0” bajo J y una “X” bajo K. Recuerde que “X” representa la condición
de “no importa”.
TRANSICIÓN 0 → 1 El estado PRESENTE es 0 y va a cambiar a 1, lo cual
puede ocurrir cuando J  1 y K  0 (condición de establecer) o cuando J  K  1
(condición de conmutación). En consecuencia, J debe ser 1 pero K puede estar
en cualquier nivel para que ocurra la transición.
TRANSICIÓN 1 → 0 El estado PRESENTE es 1 y va a cambiar a 0, lo cual
puede ocurrir cuando J  0 y K  1, o cuando J  K  1. Por lo tanto, K debe ser
1 pero J puede estar en cualquier nivel.
TRANSICIÓN 1 → 1 El estado PRESENTE es 1 y va a permanecer en 1, lo cual
puede ocurrir cuando J  K  0 o cuando J  1 y K  0. Por ende, K debe ser 0
mientras que J puede estar en cualquier nivel.
El uso de esta tabla de excitación J-K (tabla 7-3) es una parte imprescindible
del procedimiento de diseño de contadores síncronos.
Procedimiento de diseño
Ahora veremos todo un procedimiento de diseño de un contador síncrono completo.
Aunque lo haremos para una secuencia de conteo específica, pueden seguirse los
mismos pasos para cualquier secuencia deseada.
Paso 1. Determine el número deseado de bits (FFs) y la secuencia de conteo deseada.
Para nuestro ejemplo, diseñaremos un contador de tres bits que pasa por la
secuencia mostrada en la tabla 7-4. Observe que esta secuencia no incluye los esta-
dos 101, 110 y 111. Nos referiremos a éstos como estados indeseables.
Paso 2. Dibuje el diagrama de transición de estados que muestre todos los estados
posibles, incluyendo aquellos que no forman parte de la secuencia de con-
teo deseada.
C B A
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
0 0 0
0 0 1
etc.
TABLA 7-4
TABLA 7-3 Tabla
de excitación de un
flip-flop J-K.
Transición en la Estado PRESENTE Estado SIGUIENTE
salida del FF Qn Qn+1 J K
0 → 0 0 0 0 x
0 → 1 0 1 1 x
1 → 0 1 0 x 1
1 → 1 1 1 x 0
SECCIÓN 7-10/DISEÑO DE UN CONTADOR SÍNCRONO 397
398 CAPÍTULO 7/CONTADORES Y REGISTROS
FIGURA 7-26 Diagrama
de transición de estados para
el ejemplo de diseño de un
contador síncrono.
101
110
111
000
001
010
011
100
Para nuestro ejemplo el diagrama de transición de estados aparece como se
muestra en la figura 7-26. Los estados 000 a 100 se conectan en la secuencia espe-
rada. También hemos incluido un estado SIGUIENTE definido para cada uno de los
estados indeseables. Esto se hizo en caso de que el contador llegue por accidente
a uno de estos estados al momento del encendido o debido al ruido. El diseñador
del circuito puede optar por hacer que cada uno de estos estados indeseables vaya
a cualquier estado al momento en el que se aplique el siguiente pulso de reloj. De
manera alternativa, el diseñador puede optar por no definir la acción del contador
para los estados indeseables. En otras palabras, podríamos no preocuparnos por
el estado SIGUIENTE para cualquier estado indeseable. Por lo general, el uso del
método de diseño “no importa” antes mencionado producirá un diseño más simple,
pero puede ser un problema potencial en la aplicación en donde se vaya a utilizar
este contador. Para nuestro ejemplo de diseño optaremos por hacer que todos los
estados indeseables se vayan al estado 000. Esto hará que nuestro diseño sea auto-
corregible pero algo distinto del ejemplo del contador MOD-5 que analizamos en
la sección 7-9.
Paso 3. Utilice el diagrama de transición de estados para preparar una tabla que
liste todos los estados PRESENTES y sus estados SIGUIENTES.
Para nuestro ejemplo, la tabla 7-5 muestra la información. La porción de la izquier-
da lista todos los posibles estados, aún aquellos que no forman parte de la secuencia.
Vamos a etiquetarlos como los estados PRESENTES. La porción de la derecha lista
el estado SIGUIENTE para cada estado PRESENTE. Éstos se obtienen del diagrama de
transición de estados de la figura 7-26. Por ejemplo, la línea 1 muestra que el estado
TABLA 7-5
Estado PRESENTE Estado SIGUIENTE
C B A C B A
Línea 1 0 0 0 0 0 1
2 0 0 1 0 1 0
3 0 1 0 0 1 1
4 0 1 1 1 0 0
5 1 0 0 0 0 0
6 1 0 1 0 0 0
7 1 1 0 0 0 0
8 1 1 1 0 0 0
PRESENTE 000 tiene el estado SIGUIENTE 001, y la línea 5 muestra que el esta-
do PRESENTE 100 tiene el estado SIGUIENTE 000. Las líneas 6, 7 y 8 muestran
que los estados PRESENTES indeseables 101, 110 y 111 tienen todos el estado
SIGUIENTE 000.
Paso 4. Añada una columna a esta tabla para cada entrada J y K. Para cada esta-
do PRESENTE, indique los niveles requeridos en cada entrada J y K para
poder producir la transición al estado SIGUIENTE.
Nuestro ejemplo de diseño utiliza tres FFs (C, B y A) y cada uno de ellos tiene
una entrada J y K. Por lo tanto, debemos agregar seis nuevas columnas como se
muestra en la tabla 7-6. A esta tabla completa se le conoce como la tabla de exci-
tación del circuito. Las seis nuevas columnas son las entradas J y K de cada FF.
Las entradas bajo cada J y K se obtienen de la tabla 7-3, la tabla de excitación del
flip-flop J-K que desarrollamos antes. Demostraremos esto para varios de los casos
y usted podrá verificar el resto.
Veamos la línea 1 en la tabla 7-6. El estado PRESENTE 000 va a cambiar al
estado SIGUIENTE 001 cuando ocurra un pulso de reloj. Para esta transición de
estado, el flip-flop C cambia de 0 a 0. De la tabla de excitación J-K podemos ver que
JC debe estar en 0 y KC en “X” para que ocurra esta transición. El flip-flop B también
cambia de 0 a 0, por lo que JB  0 y KB  X. El flip-flop A cambia de 0 a 1.También de
la tabla 7-3 podemos ver que JA  1 y KA  x para esta transición.
En la línea 4 de la tabla 7-6, el estado PRESENTE 011 tiene un estado
SIGUIENTE de 100. Para esta transición de estado, el flip-flop C cambia de 0 a 1,
para lo cual requiere que JC  1 y KC  x. Los flip-flops A y B cambian de 1 a 0. La
tabla de excitación J-K indica que estos dos FFs necesitan que J  X y K  1 para
que esto ocurra.
Los niveles requeridos de J y K para las demás líneas de la tabla 7-6 pueden
determinarse de la misma forma.
Paso 5. Diseñe los circuitos lógicos necesarios para generar los niveles requeridos
en cada entrada J y K.
La tabla 7-6 (la tabla de excitación del circuito) lista seis entradas J, K: JC, KC,
JB, KB, JA y KA. Debemos considerar cada una de éstas como una salida de su propio
circuito lógico con entradas de los flip-flops C, B y A. Después debemos diseñar
el circuito para cada una. Vamos a diseñar el circuito para JA.
Para ello, necesitamos analizar los estados PRESENTES de C, B y A, y los nive-
les deseados en JA para cada caso. Hemos extraído esta información de la tabla 7-6 y
la presentamos en la figura 7-27(a). La tabla de verdad muestra los niveles deseados
en JA para cada estado PRESENTE. Desde luego que para algunos de los casos, JA es
TABLA 7-6
Tabla de excitación del
circuito.
Estado PRESENTE Estado SIGUIENTE
C B A C B A JC KC JB KB JA KA
Línea 1 0 0 0 0 0 1 0 x 0 x 1 x
2 0 0 1 0 1 0 0 x 1 x x 1
3 0 1 0 0 1 1 0 x x 0 1 x
4 0 1 1 1 0 0 1 x x 1 x 1
5 1 0 0 0 0 0 x 1 0 x 0 x
6 1 0 1 0 0 0 x 1 0 x x 1
7 1 1 0 0 0 0 x 1 x 1 0 x
8 1 1 1 0 0 0 x 1 x 1 x 1
SECCIÓN 7-10/DISEÑO DE UN CONTADOR SÍNCRONO 399
400 CAPÍTULO 7/CONTADORES Y REGISTROS
FIGURA 7-27 (a) Porción
de la tabla de excitación
del circuito que muestra
a JA para cada estado
PRESENTE; (b) mapa K
utilizado para obtener
la expresión simplificada
para JA.
C
0
0
0
0
1
1
1
1
B
0
0
1
1
0
0
1
1
A
0
1
0
1
0
1
0
1
JA
1
x
1
x
0
x
0
x
PRESENTE
(a)
1 X
1 X
0 X
0 X
C B
C B
C B
C B
A A
C
J =
A
(b)
una condición de “no importa”. Para desarrollar el circuito lógico para JA primero
debemos determinar su expresión en términos de C, B y A. Para ello vamos a trans-
ferir la información de la tabla de verdad a un mapa de Karnaugh de tres variables
y realizaremos la simplificación del mapa K, como se muestra en la figura 7-27(b).
Sólo hay dos 1s en este mapa K, y éstos pueden agruparse para obtener el térmi-
no A C pero si utilizamos las condiciones de “no importa” en A B C y en ABC como
1s, podremos agrupar un cuádruple para obtener el término C más simple. Por ende,
la expresión final es
JA  C
Ahora vamos a considerar a KA. Podemos seguir los mismos pasos que para JA.
No obstante, un análisis de las entradas bajo KA en la tabla de excitación del circui-
to nos muestra sólo valores de 1 y “no importa”. Si cambiamos todos los valores “no
importa” por 1s, entonces KA siempre será 1. Por lo tanto, la expresión final es
KA  1
De manera similar, podemos derivar las expresiones para JC, KC, JB y KB. Los
mapas K para estas expresiones se proporcionan en la figura 7-28. Tal vez usted
quiera confirmar que estén correctos, comparándolos con la tabla de excitación del
circuito.
Paso 6. Implemente las expresiones finales.
Los circuitos lógicos para cada entrada J y K se implementan a partir de las
expresiones que se obtienen del mapa K. El diseño completo del contador síncrono
se implementa en la figura 7-29. Observe que todos los FFs están sincronizados en
paralelo. Tal vez quiera verificar que la lógica para las entradas J y K concuerde con
las figuras 7-27 y 7-28.
FIGURA 7-28
(a) Mapas K para los
circuitos lógicos JB y KB;
(b) mapas K para los
circuitos lógicos JC y KC.
(a)
K = 1
C
0 0
0 1
X X
X X
C B
C B
C B
C B
A A
J = B A
C
X X
X X
1 1
1 1
C B
C B
C B
C B
A A
(b)
0 1
X X
X X
0 0
C B
C B
C B
C B
A A
C A
J =
B
X X
0 1
1 1
X X
C B
C B
C B
C B
A A
K = C + A
B
FIGURA 7-29
Implementación final del
ejemplo del diseño
del contador síncrono.
A
JA
KA
CLK
A
B
JB
KB
CLK
B
C
JC
KC
CLK
C
1
1
RELOJ
AB
FIGURA 7-30 (a) Un contador síncrono suministra las salidas secuenciales apropiadas
para controlar un motor a pasos; (b) diagramas de transición de estados para ambos estados
de la entrada de Dirección, D.
11
10
00
01
(b)
Amplifica-
dores de
corriente
Rotación CCW
D = 1
11
10
00
01
Rotación
CW D = 0
BA
BA
Serpentín 1
2
3
4
Contador
síncrono
A
A
B
B
D
(Entrada
de Dirección)
Paso
(reloj)
Serpentín 1
2
3
4
Motor
a pasos
(a)
Control de un Motor a Pasos
Ahora aplicaremos este procedimiento de diseño a una situación práctica: el control
de un motor a pasos. Este tipo de motor gira en pasos, por lo general, de 15° por paso,
en vez de girar en un movimiento continuo. Los serpentines o devanados magnéti-
cos dentro del motor deben energizarse y desenergizarse en una secuencia especí-
fica para poder producir esta acción de movimiento paso a paso. Por lo general, se
utilizan señales digitales para controlar la corriente en cada uno de los serpentines
del motor. Los motores a pasos se utilizan mucho en situaciones en las que se requie-
re un control preciso de posición, como en el posicionamiento de las cabezas de
lectura/escritura en los discos magnéticos, en el control de las cabezas de impresión
en impresoras, y en los robots.
La figura 7-30(a) es un diagrama de un motor a pasos ordinario con cuatro ser-
pentines. Para que el motor gire en forma apropiada, los serpentines 1 y 2 deben
SECCIÓN 7-10/DISEÑO DE UN CONTADOR SÍNCRONO 401
402 CAPÍTULO 7/CONTADORES Y REGISTROS
JB = DA + DA
0 1
1 0
x x
x x
BA
BA
BA
BA
D D
x x
x x
0 1
1 0
BA
BA
BA
BA
D D
(a)
= D ⊕ A
KB = DA + DA
= D ⊕ A
1 0
x x
x x
0 1
BA
BA
BA
BA
D D
JA = DB + DB
x x
0 1
1 0
x x
BA
BA
BA
BA
D D
(b)
= D ⊕ B
KA = DB + DB
= D ⊕ B
FIGURA 7-31 (a) Mapas
K para JB y KB; (b) mapas K
para JA y KA.
estar siempre en estados opuestos; esto es, cuando el serpentín 1 está energizado,
el serpentín 2 no lo está y viceversa. De igual forma, los serpentines 3 y 4 deben
estar siempre en estados opuestos. Las salidas de un contador síncrono de dos bits
se utilizan para controlar la corriente en los cuatro serpentines; A y A controlan
los serpentines 1 y 2; B y B controlan los serpentines 3 y 4. Los amplificadores de
corriente son necesarios ya que las salidas de los FFs no pueden suministrar la
cantidad de corriente que requieren los serpentines.
Como este motor a pasos puede girar ya sea en sentido a favor de las mane-
cillas del reloj (CW) o en contra de las manecillas del reloj (CCW), tenemos una
entrada de Dirección (D) que se utiliza para controlar la dirección de rotación. Los
diagramas de estado en la figura 7-30(b) muestran los dos casos. Para que ocurra
la rotación CW debemos tener D  0, y el estado del contador BA debe seguir la
secuencia 11, 10, 00, 01, 11, 10,…, y así en lo sucesivo, a medida que se sincroniza
mediante la señal de entrada Paso. Para la rotación CCW, D  1 y el contador debe
seguir la secuencia 11, 01, 00, 10, 11, 01,…., y así en lo sucesivo.
TABLA 7-7
Estado PRESENTE Estado SIGUIENTE Entradas de control
D B A B A JB KB JA KA
0 0 0 0 1 0 x 1 x
0 0 1 1 1 1 x x 0
0 1 0 0 0 x 1 0 x
0 1 1 1 0 x 0 x 1
1 0 0 1 0 1 x 0 x
1 0 1 0 0 0 x x 1
1 1 0 1 1 x 0 1 x
1 1 1 0 1 x 1 x 0
Ahora estamos listos para seguir los seis pasos del procedimiento de diseño
de contadores síncronos. Ya hemos realizado los pasos 1 y 2, por lo que podemos
proceder con los pasos 3 y 4. La tabla 7-7 muestra cada uno de los posibles estados
PRESENTEs de D, B y A, y el estado SIGUIENTE deseado, junto con los niveles
en cada entrada J y K necesarios para lograr las transiciones. En todos los casos,
la entrada de Dirección D no cambia al pasar del estado PRESENTE al estado
SIGUIENTE ya que es una entrada independiente que se mantiene en ALTO o en
BAJO, a medida que el contador avanza a través de su secuencia.
El paso 5 del proceso de diseño se presenta en la figura 7-31, en donde la
información de la tabla 7-7 se ha transferido a los mapas K que muestran cómo
cada señal J y K está relacionada con los PRESENTES estados de D, B y A. Usando
el agrupamiento apropiado se obtienen las expresiones lógicas simplificadas para
cada señal J y K.
El paso final se muestra en la figura 7-32, en donde el contador síncrono de dos
bits se implementa mediante el uso de las expresiones J, K que se obtuvieron de
los mapas K.
Diseño de un contador síncrono con un FF D
Hemos proporcionado un procedimiento detallado para diseñar contadores síncro-
nos mediante flip-flops K. Siempre se han utilizado los flip-flops J-K para implemen-
tar contadores debido a que los circuitos lógicos necesarios para las entradas J y K
son, por lo general, más simples que los circuitos lógicos necesario para controlar un
contador síncrono equivalente mediante flip-flops D. Al diseñar contadores que se
van a implementar en PLDs, en donde, por lo general, hay una cantidad abundante
de compuertas disponibles, es conveniente usar flip-flops D en vez de J-K. Veamos
ahora el diseño de contadores síncronos mediante el uso de FFs D.
Este método de diseño de circuitos contadores es aún más sencillo que utilizar
flip-flops J-K. Para demostrar esto vamos a diseñar un circuito con FFs D que pro-
duzca la misma secuencia de conteo que se muestra en la figura 7-26. Los primeros
tres pasos para el diseño de contadores D síncronos son idénticos a la técnica con
flip-flops J-K. El paso 4 para el diseño con FFs D es trivial, ya que las entradas D
necesarias son las mismas que el estado SIGUIENTE deseado, como puede verse
en la tabla 7-8. El paso 5 es generar las expresiones lógicas a partir de la tabla de
estado PRESENTE / estado SIGUIENTE para las entradas D. La figura 7-33 muestra
Paso
D (Dirección)
B
B
CLK
JB
KB
A
A
CLK
JA
KA
B
B
A
A
A los
amplificadores
de corriente
(Fig. 7-30)
FIGURA 7-32 Contador síncrono implementado a partir de las ecuaciones J, K.
SECCIÓN 7-10/DISEÑO DE UN CONTADOR SÍNCRONO 403
404 CAPÍTULO 7/CONTADORES Y REGISTROS
PREGUNTAS DE REPASO
los mapas K y las expresiones simplificadas. Por último, para el paso 6 puede imple-
mentarse el contador con el circuito que se muestra en la figura 7-34.
1. Liste los seis pasos en el procedimiento para diseñar un contador síncrono.
2. ¿Qué información contiene una tabla de estado PRESENTE / estado SIGUIEN-
TE?
3. ¿Qué información contiene la tabla de excitación del circuito?
4. Verdadero o falso: el procedimiento de diseño de un contador síncrono puede
utilizarse para la siguiente secuencia: 0010, 0011, 0100, 0111, 1010, 1110, 1111 y
se repite.
TABLA 7-8
Estado PRESENTE Estado SIGUIENTE Entradas de control
C B A C B A DC DB DA
0 0 0 0 0 1 0 0 1
0 0 1 0 1 0 0 1 0
0 1 0 0 1 1 0 1 1
0 1 1 1 0 0 1 0 0
1 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0
1 1 1 0 0 0 0 0 0
1 0
1 0
0 0
0 0
C B
C B
C B
C B
A A
0 0
0 1
0 0
0 0
C B
C B
C B
C B
A A
C B A
D =
C
C B A + C B A
D =
B
C A
D =
A
0 1
1 0
0 0
0 0
C B
C B
C B
C B
A A
FIGURA 7-33 Los
mapas K y las
expresiones lógicas
simplificadas para el
diseño de contadores
MOD-5 con flip-flops.
RELOJ
C
C
D
B
B
D
CLK CLK
B
C A
DA
DB
DC
A
A
D
CLK
FIGURA 7-34
Implementación del
circuito del diseño de
un contador MOD-5 con
flip-flops D.
7-11 CONTADORES BÁSICOS MEDIANTE EL USO DE HDL
En el capítulo 5 estudiamos los flip-flops y los métodos que se utilizan con los HDLs
para representar los circuitos con flip-flops. La última sección en el capítulo 5 ilus-
tró cómo conectar componentes de FF de una forma muy parecida a como se conec-
tan los circuitos integrados entre sí. Al conectar la salida Q de un FF con la entrada
de reloj del siguiente FF descubrimos que podía crearse un circuito. Al proceso de
utilizar un HDL para describir las conexiones de los componentes se le conoce como
el nivel estructural de abstracción. Es obvio que sería muy tedioso construir un cir-
cuito complicado mediante el uso de los métodos estructurales; además sería muy
difícil de leer y de interpretar. En esta sección ampliaremos nuestro uso de HDL
para describir circuitos mediante el uso de métodos que se consideran niveles más
altos de abstracción. Este término suena intimidante, pero sólo significa que hay
muchas formas más concisas y sensibles de describir lo que queremos que haga un
contador, sin necesidad de preocuparnos por los detalles acerca de cómo cablear
circuitos de flip-flops para hacerlo.
Aún es vital que comprendamos los principios fundamentales de la operación
de los flip-flops, en comparación con las compuertas lógicas combinacionales. Como
podrá recordar, los flip-flops tienen las siguientes características únicas. Por lo
general, la salida se actualiza de acuerdo con la condición de las entradas de control
síncronas cuando se produce el flanco activo del reloj, lo cual significa que hay un
estado lógico en la salida Q antes del flanco del reloj (estado PRESENTE) y es posi-
ble que haya un estado distinto en la salida Q después del flanco del reloj (estado
SIGUIENTE). Un flip-flop “recuerda” o retiene su estado entre los pulsos de reloj,
sin importar los cambios en las entradas de control síncronas (por ejemplo, J y K).
Los circuitos tipo contador que utilizan HDL se basan en esta comprensión
básica de un circuito que pasa a través de una secuencia de estados en respuesta al
evento de un flanco de reloj. Los contadores de rizo proporcionan un circuito fácil
de analizar y de comprender. También son mucho menos complicados de construir
mediante el uso de flip-flops y compuertas lógicas, en comparación con sus con-
trapartes síncronos. El problema con los contadores de rizo es la combinación del
retraso de tiempo y los estados temporales espurios que ocurren cuando el contador
cambia de estado. Cuando avancemos al siguiente nivel de abstracción y planeemos
usar PLDs para implementar nuestro diseño, ya no nos enfocaremos en las cues-
tiones relacionadas con el cableado, sino en describir la operación del circuito en
forma concisa. En consecuencia, los métodos que utilizamos para describir circuitos
tipo contador mediante el uso de HDL utilizan en su mayor parte técnicas síncro-
nas, en las que todos los flip-flops se actualizan simultáneamente, en respuesta al
mismo evento de reloj.Todos los bits en una secuencia de conteo pasan de su estado
PRESENTE a su estado SIGUIENTE prescrito simultáneamente, previniendo, por
lo tanto, cualquier estado espurio inmediato.
Métodos de descripción de transición de estados
El siguiente método para describir circuitos que necesitamos examinar utiliza
tablas. Este método no se relaciona con la conexión de los puertos de los com-
ponentes, sino con la asignación de valores a objetos tales como puertos, señales
y variables. En otras palabras, describe la manera en que los datos de salida se
relacionan con los datos de entrada en el circuito. Ya hemos utilizado este método
en varios de los circuitos introductorios en los capítulos 3 y 4, en forma de tablas
de verdad. Con los circuitos tipo contador secuencial el equivalente de la tabla de
verdad es la tabla de estado PRESENTE / estado SIGUIENTE, como vimos en la
sección anterior. En esencia, podemos utilizar el HDL para describir la tabla de
estado PRESENTE / estado SIGUIENTE y evitar así los tediosos detalles de generar
las ecuaciones booleanas, como lo hicimos en la sección 7-10 para diseñar usando
dispositivos lógicos estándar.
SECCIÓN 7-11/CONTADORES BÁSICOS MEDIANTE EL USO DE HDL 405
406 CAPÍTULO 7/CONTADORES Y REGISTROS
1 SUBDESIGN fig7 35
2 (
3 reloj :INPUT;
4 q[2..0] :OUTPUT;
5 )
6 VARIABLE
7 conteo[2..0] :DFF; crea un registro de 3 bits
8 BEGIN
9 conteo[].clk  reloj; conecta todos los relojes en paralelo
10
11 CASE conteo[] IS
12 Presente Siguiente
13
14 WHEN 0  conteo[].d  1;
15 WHEN 1  conteo[].d  2;
16 WHEN 2  conteo[].d  3;
17 WHEN 3  conteo[].d  4;
18 WHEN 4  conteo[].d  0;
19 WHEN OTHERS  conteo[].d  0;
20 END CASE;
21 q[]  conteo[]; asigna el registro a las terminales de salida
22 END;
FIGURA 7-35 Contador MOD-5 en AHDL.
DESCRIPCIONES DE ESTADO EN AHDL
Como ejemplo de un circuito contador simple, implementaremos el contador MOD-5
de la figura 7-26 en AHDL. Las entradas y las salidas se definen en la sección
SUBDESIGN de la figura 7-35, como siempre. En la sección VARIABLE de la línea 7
hemos declarado (o instanciado) un arreglo de tres bits de primitivas DFF, las cua-
les reciben el nombre de instancia conteo[ ]. Este arreglo se tratará como un registro
de tres bits en el diseño; en esencia, definiremos qué valor debe almacenarse para
cada estado SIGUIENTE. Como éste es un contador síncrono, necesitamos enlazar
todas las entradas clk de cada DFF con la entrada reloj de SUBDESIGN. Esto se
logra en AHDL mediante la siguiente instrucción en la sección lógica:
conteo[ ].clk  reloj;
Las primitivas de flip-flop que se proporcionan en AHDL tienen entradas y sali-
das estándar, a las cuales se les conoce como “puertos”. Estos puertos se etiquetan
con base en un nombre estándar de puerto que se adjunta al nombre de instancia de
los flip-flops. Como puede ver en la tabla 5-3, el nombre del puerto de reloj es .clk,
una entrada D se llama .d y la salida del FF tiene el nombre .q. Para implementar la
tabla de estado PRESENTE / estado SIGUIENTE se utiliza una instrucción CASE.
Para cada uno de los posibles valores del registro conteo[ ] determinamos el valor
que debe colocarse en las entradas D de los flip-flops, el cual determinará el estado
SIGUIENTE del contador. La instrucción en la línea 21 asigna el valor en conteo[ ]
a las terminales de salida. Sin esta línea el contador quedaría “oculto” en el bloque
SUBDESIGN y no sería visible para el mundo exterior.
En la figura 7-36 se muestra una solución de diseño alternativa. Hay dos modi-
ficaciones de la figura 7-35. La primera se ve en la línea 7, en donde el nombre
del arreglo para los flip-flops D es ahora el mismo que el puerto de salida para el
bloque SUBDESIGN.
A
H
D
L
FIGURA 7-36 Otra
versión del contador
MOD-5 descrito en la
figura 7-26.
1 SUBDESIGN fig7 36
2 (
3 reloj :INPUT;
4 q[2..0] :OUTPUT;
5 )
6 VARIABLE
7 q[2..0] :DFF; crea un registro de 3 bits
8 BEGIN
9 q[].clk  reloj; conecta todos los relojes en paralelo
10 TABLE
11 q[].q  q[].d;
12 0  1;
13 1  2;
14 2  3;
15 3  4;
16 4  0;
17 5  0;
18 6  0;
19 7  0;
20 END TABLE;
21 END;
Esto conectará automáticamente las salidas del flip-flop a las salidas de SUBDESIGN
y eliminará la necesidad de incluir una instrucción de asignación como la línea 21
en la primera solución. La segunda modificación es el uso de una instrucción TABLE
de AHDL en vez de la instrucción CASE utilizada en la figura 7-35. En la línea 11,
el puerto .q en el arreglo DFF q[ ] representa el lado del estado PRESENTE de la
tabla, mientras que el puerto .d para q[ ] representa el estado SIGUIENTE que se
introducirá en el conjunto de entradas D del arreglo, cuando se aplique una PGT
a reloj.
DESCRIPCIONES DE ESTADO ENVHDL
Como ejemplo de un circuito de contador simple, implementaremos el contador
MOD-5 de la figura 7-26 enVHDL. Nuestro fin en este ejemplo es demostrar un con-
tador mediante una estructura de control similar a una tabla de estado PRESENTE /
estado SIGUIENTE. En VHDL se deben realizar dos tareas clave: detectar el flanco
de reloj deseado y asignar el estado SIGUIENTE apropiado al contador. En capí-
tulos anteriores sobre flip-flops vimos que puede usarse un bloque PROCESS para
responder a una transición de una señal de entrada. Además aprendimos que una
instrucción CASE puede evaluar una expresión y, para cualquier valor de entrada
válido, asignar un valor correspondiente a otra señal. El código de la figura 7-37
utiliza una instrucción PROCESS y una instrucción CASE para implementar este
contador. Las entradas y salidas están definidas en la declaración ENTITY, como
en ejemplos pasados.
Cuando se utiliza VHDL para describir un contador, debemos encontrar una
manera de “almacenar” el estado del contador entre los pulsos de reloj (es decir,
la acción de un flip-flop). Esto se hace en una de dos formas: mediante señales
(instrucción SIGNAL) o mediante variables (instrucción VARIABLE). Hemos usado
señales SIGNAL con frecuencia en ejemplos anteriores que operaban en forma concu-
rrente. Una señal en VHDL retiene el último valor que se le asignó, en forma muy
parecida a un flip-flop. En consecuencia, podemos usar una señal como objeto de
datos para representar el valor del contador. Después, esta señal puede usarse para
V
H
D
L
SECCIÓN 7-11/CONTADORES BÁSICOS MEDIANTE EL USO DE HDL 407
408 CAPÍTULO 7/CONTADORES Y REGISTROS
1 ENTITY fig7 37 IS
2 PORT (
3 reloj :IN BIT;
4 q :OUT BIT VECTOR(2 DOWNTO 0)
5 );
6 END fig7 37 ;
7
8 ARCHITECTURE a OF fig7 37 IS
9 BEGIN
10 PROCESS (reloj) responde a la entrada clk
11 VARIABLE conteo: BIT VECTOR(2 DOWNTO 0); crea un registro de 3 bits
12 BEGIN
13 IF (reloj  '1' AND reloj'EVENT) THEN disparo en flanco de subida
14 CASE conteo IS
15 Presente Siguiente
16
17 WHEN 000  conteo : 001;
18 WHEN 001  conteo : 010;
19 WHEN 010  conteo : 011;
20 WHEN 011  conteo : 100;
21 WHEN 100  conteo : 000;
22 WHEN OTHERS  conteo : 000;
23 END CASE;
24 END IF;
25 q  conteo; asigna el registro a las terminales de salida
26 END PROCESS;
27 END a;
FIGURA 7-37 Contador MOD-5 en VHDL.
conectar el valor del contador con cualquier otro elemento en la descripción de la
arquitectura.
En este diseño hemos optado por usar una VARIABLE en lugar de una
señal (SIGNAL) como el objeto de datos que almacena el valor del contador. Las
VARIABLEs no son idénticas a las señales porque no se utilizan para conectar
diversas partes del diseño. En vez de ello se utilizan como una ubicación local para
“almacenar” un valor. Las variables se consideran como objetos de datos locales,
ya que se reconocen sólo dentro del bloque PROCESS en el que se declaran. En la
línea 11 de la figura 7-37 se declara la variable llamada conteo dentro del bloque
PROCESO, antes de la instrucción BEGIN. Su tipo es el mismo que el del puerto de
salida q. La palabra clave PROCESS en la línea 10 va seguida de la lista de sensi-
bilidad que contiene la señal de entrada reloj. Cada vez que reloj cambia de estado
se invoca el bloque PROCESS y se evalúan las instrucciones dentro de PROCESS
para producir un resultado. Un atributo ‘EVENT se evaluará como VERDADERO
si la señal que va antes de él acaba de cambiar de estado. La línea 13 establece
que si reloj acaba de cambiar de estado y justo ahora es ‘1’, entonces sabemos que
fue un flanco de subida. Para implementar la tabla de estado PRESENTE/estado
SIGUIENTE se utiliza una instrucción CASE. Para cada uno de los posibles valores
de la variable conteo determinamos el estado SIGUIENTE del contador. Observe
que se utiliza el operador “” para asignar un valor a una variable. La línea 25
asigna el valor almacenado en conteo a las terminales de salida. Como conteo es
una variable local, esta asignación debe realizarse antes de la instrucción END
PROCESS en la línea 26.
1
1 0 0
Elemento 3
conteo[3]
MSB
Elemento 2
conteo[2]
Elemento 1
conteo[1]
Elemento 0
conteo[0]
LSB
VARIABLE
conteo[3..0] :DFF;
FIGURA 7-38 Los
elementos de un registro
D, en el que se almacena
el número 9.
Descripción del comportamiento
El nivel de abstracción de comportamiento es una manera de describir un circui-
to mediante la descripción de su comportamiento en términos muy similares a la
manera en que podría describirse su operación en español. Piense acerca de
la forma en que podría describirse la operación de un circuito contador por alguien
que no conozca nada acerca de los flip-flops o las compuertas lógicas. Tal vez la
descripción de esa persona sería algo así como: “Cuando la entrada del contador
cambie de BAJO a ALTO, el número en la salida cuenta en forma ascendente por 1”.
Este nivel de descripción se relaciona más con las relaciones de causa y efecto que
con la ruta del flujo de datos o los detalles del cableado. Sin embargo, en realidad
no podemos tan solo utilizar cualquier descripción en español para describir el
comportamiento del circuito. Debe utilizarse la sintaxis apropiada dentro de las
restricciones del HDL.
AHDL
En AHDL, el primer paso importante en este método de descripción es declarar
las terminales de salida del contador en forma apropiada. Deben declararse como
un arreglo de bits, en donde los índices se decrementen de izquierda a derecha y 0
sea el índice menos significativo en el arreglo, algo opuesto a los bits individuales
llamados a, b, c, d, y así en lo sucesivo. De esta forma, el valor numérico asociado
con el nombre del arreglo de bits se interpreta como un número binario con base
en el cual pueden realizarse ciertas operaciones aritméticas. Por ejemplo, el arreglo
de bits conteo que se muestra en la figura 7-38 podría contener los bits 1001, como
se muestra. El compilador de AHDL interpreta este patrón de bits como si tuviera
el valor de 9 en decimal.
Para poder crear nuestro contador MOD-5 en AHDL, necesitaremos un registro
de tres bits que almacene el estado actual del contador. Este arreglo de tres bits, al
cual llamaremos conteo, se declara mediante el uso de flip-flops D en la línea 7 de
la figura 7-39. Si recuerda de la figura 7-36, podemos nombrar el arreglo DFF igual
que el puerto de salida q[2..0] y en consecuencia eliminar la línea 15, pero también
tendríamos que cambiar conteo[ ] por q[ ] en cualquier parte en donde aparezca
dentro de la sección lógica. En otras palabras, la instrucción de la línea 7 puede
cambiarse por
q[2..0] :DFF;.
Si hiciéramos esto, todas las referencias a conteo a partir de ese punto se cambiarían
por q. Esto puede hacer que el código sea más corto, pero no demuestra los con-
ceptos universales de HDL con tanta claridad. En AHDL todos los relojes pueden
especificarse como si estuvieran enlazados entre sí y conectados a una fuente de
reloj común, mediante el uso de la instrucción de la línea 10, conteo[ ].clk  reloj.
En este ejemplo, conteo[ ].clk hace referencia a la entrada de reloj de cada flip-flop
en el arreglo llamado conteo.
La descripción del comportamiento de este contador es muy simple. El estado
actual del contador se evalúa (conteo[ ].q) en la línea 11, y si es menor que el valor
de conteo deseado más alto, utiliza la descripción conteo[ ].d  conteo.q  1 (línea
12). Esto significa que el estado actual de las entradas D debe ser igual a un valor
que sea un conteo mayor que el estado actual de las salidas Q. Cuando el estado
actual del contador ha llegado al estado deseado más alto (o mayor), la prueba de
la instrucción IF será falsa y se producirá un valor de cero en la entrada del estado
A
H
D
L
SECCIÓN 7-11/CONTADORES BÁSICOS MEDIANTE EL USO DE HDL 409
410 CAPÍTULO 7/CONTADORES Y REGISTROS
FIGURA 7-40 Descripción del comportamiento de un contador en VHDL.
1 ENTITY fig7 40 IS
2 PORT( reloj :IN BIT;
3 q :OUT INTEGER RANGE 0 TO 7 );
4 END fig7 40;
5
6 ARCHITECTURE a OF fig7 40 IS
7 BEGIN
8 PROCESS (reloj)
9 VARIABLE conteo: INTEGER RANGE 0 to 7; define una VARIABLE numérica
10 BEGIN
11 IF (reloj  '1' AND reloj'EVENT) THEN flanco ascendente?
12 IF conteo  4 THEN menor que máx?
13 conteo : conteo  1; incrementa el valor
14 ELSE debe estar en máx o mayor
15 conteo : 0; se recicla a cero
16 END IF;
17 END IF;
18 q  conteo; transfiere el contenido del registro a las salidas
19 END PROCESS;
20 END a;
1 SUBDESIGN fig7 39
2 (
3 reloj :INPUT;
4 q[2..0] :OUTPUT; declara arreglo de 3 bits de los bits de salida
5 )
6 VARIABLE
7 conteo[2..0] :DFF; declara un registro de flip flops D.
8
9 BEGIN
10 conteo[].clk  reloj; conecta todos los relojes a la fuente síncrona
11 IF conteo[].q  4 THEN nota; conteo[ ] es lo mismo que conteo[ ].q
12 conteo[].d  conteo[].q  1; incrementa en uno el valor actual
13 ELSE conteo[].d  0; se recicla a cero: fuerza los estados no usados a 0
14 END IF;
15 q[]  conteo[]; transfiere el contenido del registro a las salidas
16 END;
FIGURA 7-39 Descripción del comportamiento de un contador en AHDL
SIGUIENTE (línea 13), con lo cual se reciclará el contador. La última instrucción
en la línea 15 sólo conecta el valor del contador con las terminales de salida del
dispositivo.
VHDL
En VHDL el primer paso importante en este método de descripción es declarar en
forma apropiada el puerto de salida del contador, como se muestra en la figura 7-40.
El tipo de datos del puerto de salida (línea 3) debe concordar con el tipo de la
V
H
D
L
PREGUNTAS DE REPASO
variable del contador (línea 9) y debe ser un tipo que permita operaciones aritmé-
ticas. Recuerde que VHDL trata a los objetos BIT_VECTOR como una cadena de
bits, no como una cantidad numérica binaria. Para poder reconocer la señal como
una cantidad numérica, el objeto de datos debe escribirse como tipo INTEGER. El
compilador busca en la cláusula RANGE 0 TO 7 de la línea 3 y sabe que el contador
necesita tres bits. Se necesita una declaración similar para la variable del registro
en la línea 9, para que cuente hacia arriba. A ésta se le llamará conteo. La primera
instrucción después de BEGIN en el bloque PROCESS responde al flanco de subida del
reloj, como en los ejemplos anteriores. Después utiliza métodos de descripción
del comportamiento para definir la respuesta del contador al flanco del reloj. Si
el contador no ha llegado a su máximo (línea 12) entonces deberá incrementarse
(línea 13). En caso contrario (línea 14) deberá reciclar el contador a cero (línea
15). La última instrucción en la línea 18 sólo conecta el valor del contador con las
terminales de salida del dispositivo.
Simulación de contadores básicos
La simulación de cualquiera de nuestros diseños de contadores MOD-5 es bastante
simple. Los contadores sólo tienen un bit de entrada (reloj) y tres bits de salida (q2
q1 q0) para mostrar en la simulación. La frecuencia de reloj no se ha especificado,
por lo que podemos utilizar cualquier frecuencia que queramos para una simu-
lación funcional; aunque tal vez deberíamos evitar un reloj de alta frecuencia, a
menos que se desee investigar los efectos de los retrasos de propagación. La única
decisión que debemos hacer es cuántos pulsos aplicar. Como el contador es MOD-5,
debemos aplicar por lo menos cinco pulsos de reloj para verificar que el diseño de
HDL tenga la secuencia de conteo correcta y que se recicle. Empezaremos la simu-
lación con el estado inicial 000, ya que los PLDs de Altera tienen una característica
de reinicio de encendido integrada. No podremos probar cualquiera de los estados
no usados, ya que los diseños de HDL no proporcionan la manera de prestablecer
el contador a cualquiera de los estados no usados. En la figura 7-41 se muestran
los resultados que obtuvimos con nuestra simulación para el diseño en HDL de un
contador MOD-5.
1. ¿Qué tipo de tabla se utiliza para describir la operación de un contador?
2. Al diseñar un contador con flip-flops D, ¿qué se aplica a las entradas D para
poder excitarlo hacia el estado SIGUIENTE en el siguiente flanco activo del
reloj?
3. ¿Cómo escribiría la descripción en HDL para disparar un dispositivo de alma-
cenamiento (flip-flop) en un flanco de caída, en vez de un flanco de subida del
reloj?
4. ¿Qué método describe la operación del circuito mediante el uso de relaciones
tipo causa y efecto?
2.0 ms 4.0 ms 6.0 ms 8.0 ms 10.0 ms 12.0 ms 14.0 ms
reloj 1
0
0
0
q0
q1
q2
FIGURA 7-41 Resultados de la simulación para el diseño en HDL de un contador MOD-5.
SECCIÓN 7-11/CONTADORES BÁSICOS MEDIANTE EL USO DE HDL 411
412 CAPÍTULO 7/CONTADORES Y REGISTROS
7-12 CONTADORES CON TODAS LAS CARACTERÍSTICAS EN HDL
Los ejemplos que hemos elegido hasta ahora han sido de contadores muy básicos.
Todo lo que hacen es contar hasta cuatro y luego se regresan a cero. Los contadores
de CI estándar que hemos examinado tienen muchas otras características que los
hacen muy útiles para numerosas aplicaciones digitales. Por ejemplo, considere
los contadores de CI 74161 y 74191 que vimos en la sección 7-7. Estos dispositivos
tienen combinaciones de varias características, incluyendo la habilitación del conteo,
el conteo ascendente/descendente, la carga en paralelo (se prestablece a cualquier
conteo) y el borrado. Además, estos contadores se han diseñado para conectarse en
cascada con facilidad y en forma síncrona para crear contadores más grandes. En esta
sección exploraremos las técnicas que nos permitirán incluir esas características en
un contador de HDL. Vamos a crear un contador que combinará más características
de las que se encuentran ya sea en el 74161 o en el 74191. Utilizaremos este ejemplo
para demostrar los métodos de diseño de un contador con capacidades que se adap-
ten en forma específica a nuestras necesidades. Cuando utilizamos HDLs para crear
diseños digitales, no estamos limitados a las características que suelen incluirse con
cierto CI.
Vamos a revisar las especificaciones para nuestro ejemplo de un contador más
complejo. El contador binario MOD-16 reciclable debe cambiar de estado en el flan-
co de subida de la entrada de reloj cuando el contador esté habilitado en un nivel
ALTO. Una entrada de control de dirección hará que el contador cuente en forma
ascendente cuando esté en BAJO, o que cuente en forma descendente cuando esté
en ALTO. El contador tendrá una señal de limpiar asíncrona, activa en ALTO, para
restablecer el contador de inmediato cuando la entrada de control se active. El con-
tador puede cargarse en forma síncrona con un número en las terminales de entra-
da de datos cuando el control de carga está en ALTO. La prioridad de las funciones
de control de entrada, de mayor a menor, serán borrar, cargar y contar. Por último,
el contador también incluirá una salida activa en ALTO que detecte su estado ter-
minal cuando esté habilitada la función de conteo. Recuerde que el estado terminal
dependerá de la dirección de conteo. Como veremos, la correcta operación de estas
características se determina en base a la forma en que escribimos el código de HDL,
por lo que tendremos que poner mucha atención a los detalles.
CONTADOR CONTODAS LAS CARACTERÍSTICAS EN AHDL
El código de la figura 7-42 implementa todas las características de las que hemos
hablado. Es un contador de cuatro bits, pero puede expandirse en tamaño con
facilidad. Analice las entradas y salidas de las líneas 3 y 4 para asegurarse de com-
prender lo que se supone debe hacer cada una. Si no lo entiende, vuelva a leer los
párrafos anteriores de esta sección. La línea 7 define un registro de cuatro bits con
flip-flops D, el cual servirá como contador. Debemos observar de nuevo aquí que
este registro podría haberse llamado de igual forma que la variable de entrada (q).
El código está escrito con distintos nombres para diferenciar los puertos (entradas
y salidas) del circuito y los dispositivos que operan dentro del mismo. La entrada de
reloj está conectada a todas las entradas clk de todos los flip-flops D en la línea 10.
Todas las entradas borrar activas en BAJO (clrn) que van a la primitiva DFF están
conectadas al complemento de la señal de entrada borrar en la línea 11. Esto hace
que el flip-flop se borre de inmediato cuando la entrada borrar cambia a ALTO,
debido a que las entradas prn y clrn de la primitiva DFF no dependen del reloj (es
decir, son asíncronas).
Para que la función de carga pueda funcionar en forma síncrona deben con-
trolarse las entradas D de los flip-flops, de manera que los datos de entrada (dent)
estén presentes en las entradas D cuando la línea de carga esté en ALTO. De esta
manera, cuando llegue el siguiente flanco activo del reloj los datos se cargarán en
el contador. Esta acción debe ocurrir sin importar que el contador esté habilitado
o no. En consecuencia, la primera decisión condicional (IF) en la línea 12 evalúa la
entrada de carga. Recuerde del capítulo 4 que la estructura de decisión IF/ELSE da
A
H
D
L
1 SUBDESIGN fig7 42
2 (
3 reloj, borrar, cargar, habilcnt, abajo, dent[3..0] :INPUT;
4 q[3..0], term ct :OUTPUT; declara arreglo de 4 bits de salida
5 )
6 VARIABLE
7 conteo[3..0] :DFF; declara un registro de flip flops D
8
9 BEGIN
10 conteo[].clk  reloj; conecta todos los relojes a la fuente de sincronía
11 conteo[].clrn !borrar; conecta para borrar asíncrona activa en ALTO
12 IF cargar THEN conteo[].d  dent[]; carga síncrona
13 ELSIF !habilcnt THEN conteo[].d  conteo[].q; retiene el conteo
14 ELSIF !abajo THEN conteo[].d  conteo[].q  1; incremento
15 ELSE conteo[].d  conteo[].q 1; decremento
16 END IF;
17 IF ((conteo[].q  0)  abajo # (conteo[].q  15)  !abajo) habilcnt
18 THEN ct term  VCC; señal de salida en cascada síncrona
19 ELSE ct term  GND;
20 END IF;
21 q[]  conteo[]; transfiere el contenido del registro a las salidas
22 END;
FIGURA 7-42 Contador con todas las características en AHDL.
precedencia a la primera condición que se encuentra verdadera ya que, una vez que
encuentra una condición verdadera, no sigue evaluando las condiciones en las cláu-
sulas ELSE subsiguientes. En este caso significa que si se activa la línea de carga,
no importa si se habilita el conteo o si está tratando de contar hacia arriba o hacia
abajo, sino que realizará una carga en paralelo en el siguiente flanco del reloj.
Suponiendo que la línea de carga no esté activa, se evalúa la cláusula ELSIF
en la línea 13 para ver si el conteo está deshabilitado. En AHDL es muy importante
tener en cuenta que la salida Q debe retroalimentarse a la entrada D para que en el
siguiente flanco del reloj el registro retenga su valor anterior. Si no se inserta esta
cláusula las entradas D quedarán en cero, con lo cual se restablecerá el contador.
Si el contador está habilitado se evalúa la cláusula ELSIF de la línea 14 y conteo se
incrementa (línea 14) o se decrementa (línea 15). Para resumir estas decisiones, pri-
mero se decide si es tiempo de cargar, después se decide si el conteo debe retenerse
o cambiar, después se decide si se va a contar hacia arriba o hacia abajo.
La siguiente función descrita es la detección (o decodificación) del conteo
terminal. Las líneas 17-20 deciden si se ha llegado al conteo terminal mientras se
cuenta hacia arriba o hacia abajo. El operador de doble signo de igual ( ) es el
símbolo que prueba la igualdad entre las expresiones de cada lado del operador. El
estado del contador que sea el estado terminal depende de la dirección de conteo.
Esto se determina mediante la aplicación de una operación AND entre la detección
apropiada del estado terminal de 0 o 15 y la expresión correcta, abajo o !abajo.
ct_term producirá como salida un nivel ALTO si se ha llegado al estado correcto, en
caso contrario será BAJO. La línea 21 conectará la salida para conteo con las termi-
nales de salida para el bloque SUBDESIGN.
Uno de los conceptos clave acerca del uso de HDLs es que, por lo general, es
muy sencillo expandir el tamaño de un módulo lógico. Veamos ahora los cambios
necesarios a este diseño de AHDL para incrementar el módulo del contador binario
a 256. Como 28
 256, necesitaremos incrementar el número de bits a ocho. Sólo
SECCIÓN 7-12/CONTADORES CON TODAS LAS CARACTERÍSTICAS EN HDL 413
$1¶56-0 $0/5%034 : 3(*45304
1 ENTITY fig7 43 IS
2 PORT( reloj, borrar, cargar, habilcnt, descendente :IN BIT;
3 dent :IN INTEGER RANGE 0 TO 15;
4 q :OUT INTEGER RANGE 0 TO 15;
5 ct term :OUT BIT);
6 END fig7 43;
7
8 ARCHITECTURE a OF fig7 43 IS
9 BEGIN
10 PROCESS ( reloj, borrar, descendente)
11 VARIABLE conteo :INTEGER RANGE 0 to 15; define una señal numérica
12 BEGIN
13 IF borrar  '1' THEN conteo : 0; borrar asíncrona
14 ELSIF (reloj  '1' AND relojʼEVENT) THEN flanco ascendente?
15 IF cargar  '1' THEN conteo : din; carga en paralelo
16 ELSIF habilcnt  '1' THEN habilitado?
17 IF descendente  '0' THEN conteo : conteo  1; incremento
18 ELSE conteo : conteo 1; decremento
19 END IF;
20 END IF;
21 END IF;
22 IF (((conteo  0) AND (descendente  '1')) OR
23 ((conteo  15) AND (descendente  '0'))) AND habilcnt  '1'
24 THEN ct term  '1';
25 ELSE ct term  '0';
26 END IF;
27 q  conteo; transfiere el contenido del registro a las salidas
28 END PROCESS;
29 END a;
'*(63  $POUBEPS DPO UPEBT MBT DBSBDUFSÓTUJDBT FO 7)%-
TF SFRVJFSFO DVBUSP NPEJGJDBDJPOFT B MB GJHVSB  QBSB IBDFS FTUF DBNCJP FO FM
NØEVMP EFM DPOUBEPS
 EF MÓOFB .PEJGJDBDJØO
 EFOU 
 R 
 DPOUFP 
 	DPOUFP R   

#/.4!$/2 #/.4/$!3 ,!3 #!2!#4%2·34)#!3 %.6($,
M DØEJHP EF MB GJHVSB  JNQMFNFOUB UPEBT MBT DBSBDUFSÓTUJDBT EF MBT RVF IFNPT
IBCMBEP T VO DPOUBEPS EF DVBUSP CJUT
 QFSP QVFEF FYQBOEJSTF FO UBNB×P DPO
GBDJMJEBE OBMJDF MBT FOUSBEBT Z TBMJEBT EF MBT MÓOFBT  B MB  QBSB BTFHVSBSTF EF
DPNQSFOEFS MP RVF TF TVQPOF EFCF IBDFS DBEB VOB 4J OP MP FOUJFOEF
 WVFMWB B MFFS
MPT QÈSSBGPT BOUFSJPSFT EF FTUB TFDDJØO -B JOTUSVDDJØO 130$44 FO MB MÓOFB  FT
MB DMBWF QBSB UPEPT MPT DJSDVJUPT TJODSPOJ[BEPT QPS SFMPK RVF TF EFTDSJCFO FO 7)%-
6
(
$
,
pero también juega un papel importante en cuanto a determinar si el circuito res-
ponde en forma síncrona o asíncrona a sus entradas. Queremos que este circuito
responda de inmediato a las transiciones en las entradas reloj, borrar y abajo. Con
estas señales en la lista de sensibilidad nos aseguramos que se evalúe el código
dentro del bloque PROCESS tan pronto como cualquiera de estas entradas cambie de
estado. La variable conteo se define en la línea 11 como tipo INTEGER, de forma
que pueda incrementarse y decrementarse con facilidad. Las variables se declaran
dentro del bloque PROCESS y pueden utilizarse sólo dentro de este bloque.
La entrada clear recibe precedencia al evaluarla con la primera instrucción IF
en la línea 13. Recuerde del capítulo 4 que la estructura de decisión IF/ELSE da
precedencia a la primera condición que se encuentre verdadera, ya que no sigue
evaluando las condiciones en las cláusulas ELSE subsiguientes. En este caso, si la
señal borrar está activa las demás condiciones no importarán. La salida será cero.
Para que la función cargar pueda operar en forma síncrona, debe evaluarse después
de detectar el flanco del reloj. Éste se detecta en la línea 14 y el circuito comprue-
ba de inmediato si cargar está activa. De ser así, el conteo se carga de dent, sin
importar que esté habilitado el conteo o no. En consecuencia, la decisión condicio-
nal (IF) de la línea 15 evalúa la entrada cargar; sólo si está inactiva se evalúa la
línea 16 para ver si el contador está habilitado. Si está habilitado, el conteo se incre-
mentará o decrementará (líneas 17 y 18, respectivamente).
Lo siguiente es detectar el conteo terminal. Las líneas 22 a 25 deciden si se ha
llegado al conteo terminal máximo o mínimo y excitan la salida para que cambie
al nivel apropiado. Aquí, la estructura de toma de decisiones es muy importante ya
que queremos evaluar esta situación, sin importar que el proceso de toma de deci-
siones haya sido invocado por reloj, borrar o abajo. Observe que esta decisión no es
otra ramificación ELSE de las decisiones IF anteriores, sino que se evalúa para cada
señal en la lista de sensibilidad después de que se produce el borrado o el conteo.
Una vez que se realicen todas estas decisiones, conteo deberá tener el valor correcto
en el registro y la línea 27 conectará el registro con las terminales de salida.
Uno de los conceptos clave acerca del uso de HDLs es que, por lo general, es muy
sencillo expandir el tamaño de un módulo lógico.Veamos ahora los cambios necesa-
rios a este diseño de VHDL para incrementar el módulo del contador binario a 256.
Sólo se requieren cuatro modificaciones a la figura 7-42 para hacer este cambio en
el módulo del contador:
# de línea Modificación
3 RANGE 0 TO 15 255
4 RANGE 0 TO 15 255
11 RANGE 0 TO 15 255
23 (conteo  15 255)
Simulación de un contador con todas las características
Para simular nuestro diseño del contador con todas las características requeriremos
de cierta planeación para generar formas de onda de entrada apropiadas. Aunque
tal vez no sea necesario simular a detalle todas las combinaciones de entrada ima-
ginables, sí necesitamos probar la suficiente cantidad de condiciones de entrada
posibles para convencernos de que funciona en forma apropiada. Esto es exacta-
mente lo que debemos hacer también para probar nuestro diseño de prototipo en
el laboratorio. El contador tiene cinco señales de entrada distintas (reloj, borrar,
cargar, habilcnt y dent) y dos señales de salida distintas (q y ct_term) que debemos
visualizar en nuestra simulación. Una de las señales de entrada y una de las señales
de salida son en realidad de cuatro bits. Elegiremos una frecuencia de reloj conve-
niente, ya que no se ha especificado ninguna para nuestra simulación funcional del
contador. Necesitaremos proveer los suficientes pulsos de reloj como para poder
analizar varias condiciones de operación. La simulación deberá evaluar las funcio-
nes de habilitar y deshabilitar el contador, contar hacia arriba y hacia abajo, borrar
SECCIÓN 7-12/CONTADORES CON TODAS LAS CARACTERÍSTICAS EN HDL 415
416 CAPÍTULO 7/CONTADORES Y REGISTROS
t1 t2 t3 t4 t5 t6
1 2 3 4 5 8 9 0
0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 0 F E D C B A 9 8 7 6 5 4 3 2 1 0 5 0 F E
reloj 0
0
0
H8 8 5
1
0
0
H0
borrar
cargar
dent[3..0]
Habilcnt
abajo
ct_term
q[3..0]
100.0us 200.0us 300.0us 400.0us 500.0us 600.0us 700.0us 800.0us 900.0us 1.0ms
FIGURA 7-44 Resultados de la simulación para el diseño en HDL de un contador con todas las
características.
el contador, cargar un valor en el contador y contar a partir de ese valor, y detectar el
estado de conteo terminal.
Hay ciertas cuestiones de simulación en general que debemos considerar al
crear nuestras formas de onda de entrada. Como los PLDs de destino se restablecen
al momento de encenderse, nuestra simulación empezará con el estado de salida
inicial en 0000. Por lo tanto, sería mejor esperar hasta que el contador haya llegado
a otro estado antes de aplicar una entrada para borrarlo, de manera que podamos
ver un cambio en la salida. De igual forma, cargar el mismo valor que el estado
SIGUIENTE del contador no nos convencerá en realidad de que la función cargar
está operando en forma correcta. Si se cambian las señales de control de entrada al
mismo tiempo que se produzca el flanco de reloj se pueden provocar algunos pro-
blemas con el tiempo de establecimiento y se obtendrían resultados cuestionables.
Los controles asíncronos deben aplicarse en un tiempo distinto al del flanco de
reloj apropiado para demostrar con claridad que la acción resultante del circuito
es inmediata y no depende del reloj. En general, debemos usar el sentido común
para crear nuestras formas de onda de entrada y considerar qué es lo que estamos
tratando de verificar con la simulación. Ésta será valiosa en el proceso de diseño
sólo si aplicamos las condiciones de entrada apropiadas y evaluamos los resultados
de manera crítica.
En la figura 7-44 se muestran algunos resultados de la simulación para el con-
tador con todas las características. La entrada dent de cuatro bits y la salida q de
cuatro bits se muestran en hexadecimal. Al principio el contador está habilitado
(habilcnt  1) para contar hacia arriba (abajo  0), y podemos ver que la salida se
incrementa en 0, 1, 2, 3, 4, 5. En t1 el contador responde en forma síncrona (es decir,
en la PGT de reloj) al nivel ALTO que se aplica en la entrada cargar. El contador se
prestablece con el valor de 8 de los datos en paralelo (dent). Esto también muestra
que la carga tiene prioridad sobre el conteo, ya que ambas entradas están activas al
mismo tiempo. Después de t1, la entrada cargar está en BAJO otra vez y el contador
sigue contando en forma ascendente a partir de 8. Una entrada en BAJO para
habilcnt hace que el contador se detenga en el estado 9 durante un ciclo extra de
reloj. El conteo se continúa cuando habilcnt está en ALTO otra vez hasta t2, cuando
el contador se borra en forma asíncrona. Observe el tiempo reducido para el estado de
salida A debido a que el contador se borra de inmediato. En realidad tendríamos que
hacer un acercamiento para ver que se muestra el estado A. También podemos ver
que la función borrar tiene la prioridad más alta cuando los tres controles (borrar,
cargar y habilcnt) están al mismo tiempo en ALTO. La secuencia de conteo ascen-
dente continúa y se recicla a 0 después del estado F, para verificar que el contador
sea un contador binario MOD-16. En t3 el contador llega a su estado terminal F
cuando cuenta hacia arriba, y ct_term produce un nivel ALTO. En t4 el contador
empieza a contar hacia abajo, ya que abajo se cambió a un nivel ALTO. De nuevo,
ct_term produce un nivel ALTO ya que el contador se encuentra ahora en el estado 0,
que es el estado terminal cuando se cuenta hacia abajo. Observe que a través de la
acción de ct_term, el estado terminal para el contador depende de su dirección de
conteo, la cual se controla mediante la entrada abajo. El conteo se retiene en el
PREGUNTAS DE REPASO
estado 0 durante un periodo de reloj adicional cuando habilcnt cambia a BAJO. La
salida ct_term también se deshabilita mientras que habilcnt  0. La secuencia de
conteo descendente continúa en forma correcta cuando habilcnt cambia de nuevo a
ALTO. En t5 el contador carga en forma síncrona el valor de datos en paralelo 5. En
t6 el contador se borra en forma asíncrona. De nuevo se verifica que la función de
cargar o borrar tenga prioridad sobre la función de conteo descendente en t5 y en
t6. ¿Verificamos que nuestro diseño opere en forma correcta, en comparación con
las especificaciones? Hicimos un muy buen trabajo, pero hay un par de condiciones
de prueba que también podrían agregarse para hacer la simulación más completa.
¿Se borró o se cargó el contador cuando habilcnt estaba en BAJO? Parece ser que
no verificamos esos casos. Como puede ver, los diseños complejos pueden requerir
mucho razonamiento para verificar su operación de una manera adecuada median-
te la simulación o la prueba en el laboratorio. ¿Puede pensar en alguna otra prueba
que deberíamos realizar?
1. ¿Cuál es la diferencia entre la función borrar asíncrona y la función cargar sín-
crona?
2. ¿Cómo se crea una función borrar asíncrona en un HDL?
3. ¿Cómo se crea la prioridad de las funciones en una descripción en HDL de un
contador?
7-13 CÓMO ALAMBRAR MÓDULOS DE HDL EN CONJUNTO
En las dos secciones anteriores vimos cómo implementar características comunes de
un contador mediante HDL. También deberíamos investigar cómo podemos conec-
tar estos circuitos tipo contador a otros módulos digitales para crear sistemas más
grandes. El diseño de sistemas digitales extensos se facilita mucho si el sistema se
subdivide en módulos más pequeños y manejables que después se interconectan.
Ésta es la esencia del concepto del diseño jerárquico, del cual veremos sus bene-
ficios mediante proyectos de ejemplo en el capítulo 10. Ahora veamos las técnicas
básicas para alambrar módulos entre sí.
DECODIFICACIÓN DEL CONTADOR MOD-5 EN AHDL
En la sección 7-8 dimos un breve vistazo a la idea de decodificar un contador.
Como recordará, un circuito decodificador detecta un estado de conteo mediante
el patrón de bits único para ese estado. Ahora veamos cómo conectar un circuito
decodificador al diseño del contador MOD-5 de la figura 7-35 (o 7-36). Cambiaremos
el nombre del contador por SUBDESIGN mod5 para ser un poco más descriptivos en el
diagrama de bloques para el circuito general que dibujaremos más adelante. Como
el contador no produce los ocho estados posibles para un contador de tres bits, nues-
tro diseño del decodificador que se muestra en la figura 7-45 sólo decodificará los
estados que se utilicen, de 000 hasta 100. Los tres bits de entrada (c  MSB) que se
declaran en la línea 3 se conectarán más adelante a las salidas del contador MOD5.
En la línea 4, las cinco salidas para el decodificador se llaman estado0 a estado4.
Una instrucción CASE (líneas 7 a 14) describe el comportamiento del decodificador
mediante la comprobación de la combinación de entradas c b a para determinar
cuál de las salidas del decodificador debe estar en ALTO. Cuando la entrada c b a
sea 000 sólo la salida estado0 estará en ALTO, o cuando c b a sea 001 sólo la salida
estado1 estará en ALTO, y así en lo sucesivo. Cualquier valor de entrada mayor de
100, que está cubierto por la instrucción OTHERS y en realidad no debe ocurrir en
esta aplicación, producirá niveles BAJO en todas las salidas.
A
H
D
L
SECCIÓN 7-13/CÓMO ALAMBRAR MÓDULOS DE HDL EN CONJUNTO 417
418 CAPÍTULO 7/CONTADORES Y REGISTROS
1 SUBDESIGN decodifica5
2 (
3 c, b, a :INPUT;
4 estado[0..4] :OUTPUT;
5 )
6 BEGIN
7 CASE (c, b, a) IS -- decodifica el valor binario
8 WHEN B=”000” = estado[ ] = B”10000”;
9 WHEN B=”001” = estado[ ] = B”01000”;
10 WHEN B=”010” = estado[ ] = B”00100”;
11 WHEN B= “011” = estado[ ] = B”00010”;
12 WHEN B= “100” = estado[ ] = B”00001”;
13 WHEN OTHERS = estado[ ] = B”00000”;
14 END CASE;
15 END;
FIGURA 7-45 Módulo decodificador del contador MOD-5 en AHDL.
4
3
SALIDA
clk
5 q[2..0]
q[2..0]
q2
q1
q0
MOD5
DECODIFICA5
a
b estado[0..4] cntr_estado[0..4]
q[2..0]
c
ENTRADA
VCC
SALIDA
reloj
FIGURA 7-46 Diseño de diagrama de bloques para el circuito contador y decodificador MOD-5.
clk
q[2..0]
cntr_estado[0..4]
1.0us 2.0us 3.0us 4.0us 5.0us 6.0us 7.0us 8.0us 9.0us 10.0us 11.0us
000
100
011
010
001
000
0
B 000
B 10000 10000
00001
00010
00100
01000
10000
FIGURA 7-47 Simulación del circuito contador y decodificador MOD-5.
Indicaremos al software de Altera que cree símbolos para nuestros dos archivos
de diseño, mod5 y decodifica5. Esto nos permitirá dibujar un diagrama de bloques
(vea la figura 7-46) para nuestro circuito completo, el cual consistirá de estos dos
módulos, los puertos de entrada y salida, y el cableado entre ellos. Cada símbolo
se etiqueta con su respectivo nombre mod5 o decodifica5 de SUBDESIGN. Observe
que parte del cableado se dibuja con líneas más gruesas. Con el fin de representar
un bus, el cual es una colección de líneas de señal. Las líneas más delgadas son
señales individuales. En los símbolos creados por Altera se dibujarán de manera
automática puertos para indicar si representan señales individuales o buses. Esto se
determinará mediante las declaraciones de las señales en la sección SUBDESIGN.
Los puertos con nombres de grupo se dibujarán como buses. Como el puerto de sali-
da del contador es un bus pero los puertos de entrada del decodificador son seña-
les individuales, será necesario dividir el bus en líneas de señal individuales para
cablear los dos módulos entre sí. Cada vez que se divide un bus, hay que etiquetar
tanto el nombre de la señal de grupo del bus como las señales individuales que se
vayan a utilizar. Nuestro diagrama de bloques tiene un bus etiquetado como q[2..0]
y las correspondientes señales individuales q2, q1 y q0. Los resultados de la simu-
lación para este circuito contador y decodificador se muestran en la figura 7-47.
1 ENTITY decodifica5 IS
2 PORT (
3 c, b, a :IN BIT;
4 estado :OUT BIT_VECTOR (0 TO 4)
5 );
6 END decodifica5;
7
8 ARCHITECTURE a OF decodifica5 IS
9 SIGNAL entrada : BIT_VECTOR (2 DOWNTO 0);
10 BEGIN
11 entrada = (c  b  a); -- combina las entradas en un vector de bits
12 PROCESS (c, b, a)
13 BEGIN
14 CASE entrada IS
15 WHEN “000” = estado = “10000”;
16 WHEN “001” = estado = “01000”;
17 WHEN “010” = estado = “00100”;
18 WHEN “011” = estado = “00010”;
19 WHEN “100” = estado = “00001”;
20 WHEN OTHERS = estado = “00000”;
21 END CASE;
22 END PROCESS;
23 END a;
FIGURA 7-48 Módulo decodificador del contador MOD-5 en VHDL.
DECODIFICACIÓN DEL CONTADOR MOD-5 ENVHDL
En la sección 7-8 dimos un breve vistazo a la idea de decodificar un contador. Como
podrá recordar, un circuito decodificador detecta un estado de conteo mediante
el patrón de bits único para ese estado. Ahora veamos cómo conectar un circuito
decodificador al diseño del contador MOD-5 de la figura 7-37. Cambiaremos el nom-
bre del contador por ENTITY mod5 para facilitar la identificación del módulo en
nuestro circuito en general. Como el contador no produce los ocho estados posibles
para un contador de tres bits, nuestro diseño del decodificador que se muestra en la
figura 7-48 sólo decodificará los estados que se utilicen, de 000 hasta 100. Los tres
bits de entrada (c  MSB) que se declaran en la línea 3 se conectarán más adelante
a las salidas del contador MOD5. En la línea 4, las cinco salidas para el decodifi-
cador se llaman estado, un vector de bits. En la línea 9 se declara una señal tipo
vector de bits interna llamada entrada. Después la línea 11 combina los tres bis de
entrada (c b a) para formar un vector de bits llamado entrada, el cual puede enton-
ces evaluarse mediante la instrucción CASE en las líneas 14-21. Si cualquiera de los
bits de entrada cambia de nivel lógico, se invocará el bloque PROCESS para deter-
minar la salida resultante. Para describir el comportamiento del decodificador, la
instrucción CASE comprueba la combinación de entrada (que representa c b a) para
determinar cuál de las salidas del decodificador debe estar en ALTO. Cuando la
entrada sea 000 sólo la salida estado(0) estará en ALTO; cuando entrada sea 001 sólo
la salida estado(1) estará en ALTO; y así en lo sucesivo. Cualquier valor de entrada
mayor de 100, que está cubierto por la instrucción OTHERS y en realidad no debe
ocurrir en esta aplicación, producirá niveles BAJO en todas las salidas.
Como estamos usando el software de desarrollo de PLDs de Altera, podemos
conectar los dos módulos en forma gráfica. Para ello necesitará instruir al software
para que cree símbolos para nuestros dos archivos de diseño, mod5 y decodifica5.
Esto nos permitirá dibujar un diagrama de bloques (vea la figura 7-46) para nuestro
circuito completo, el cual consistirá de dos módulos, puertos de entrada y salida y
el cableado entre ellos. Observe que parte del cableado se dibuja con líneas más
gruesas. Para representar un bus, el cual es una colección de líneas de señal. Las
líneas más delgadas son señales individuales. En los símbolos creados por Altera
se dibujarán automáticamente puertos para indicar si representan señales indivi-
duales o buses. Esto se determinará mediante las declaraciones del tipo de datos
V
H
D
L
SECCIÓN 7-13/CÓMO ALAMBRAR MÓDULOS DE HDL EN CONJUNTO 419
420 CAPÍTULO 7/CONTADORES Y REGISTROS
FIGURA 7-49 Archivo en VHDL de mayor nivel para conectar mod5 y decodifica5 entre sí.
1 ENTITY mod5decodifica1 IS
2 PORT (
3 clk :IN BIT;
4 q :BUFFER BIT_VECTOR (2 DOWNTO 0);
5 cntr_estado :OUT BIT_VECTOR (0 TO 4)
6 );
7 END mod5decodifica1
8
9 ARCHITECTURE nivelsuperior OF mod5decodifica1 IS
10 COMPONENT mod5
11 PORT (
12 reloj :IN BIT;
13 q :OUT BIT_VECTOR (2 DOWNTO 0)
14 );
15 END COMPONENT;
16 COMPONENT decodifica5
17 PORT (
18 c, b, a :IN BIT;
19 estado :OUT BIT_VECTOR (0 TO 4)
20 );
21 END COMPONENT;
22 BEGIN
23 contador: mod5 PORT MAP (reloj = clk, q = q);
24 decodificador: decodifica5 PORT MAP
25 (c = q(2), b = q(1), a = q(0), estado = cntr_estado);
26 END nivelsuperior;
para cada puerto del bloque ENTITY. Los puertos BIT_VECTOR se dibujarán como
buses y los puertos tipo BIT se dibujarán como líneas de señal individuales. Como
el puerto de salida del contador es un bus pero los puertos de entrada del deco-
dificador son señales individuales, será necesario dividir el bus en líneas de señal
individuales para cablear los dos módulos entre sí. Cada vez que se divide un bus
se debe etiquetar tanto el nombre de la señal de grupo del bus como las señales
individuales que se vayan a utilizar. Nuestro diagrama de bloques tiene un bus eti-
quetado como q[2..0] y las señales individuales correspondientes q2, q1 y q0. Los
resultados de la simulación para este circuito contador y decodificador se muestran
en la figura 7-47.
La técnica de VHDL estándar (y una alternativa con el software de Altera) para
conectar módulos de diseño es utilizarVHDL para describir las conexiones entre los
módulos en un archivo de texto. Se crean instancias de los módulos deseados en un
archivo de diseño de mayor nivel mediante el uso de componentes (COMPONENT),
en los cuales se declaran los puertos (PORT) del módulo. Las conexiones de cablea-
do para cada instancia en donde se utiliza el módulo se listan en una instrucción
PORT MAP. En la figura 7-49 se muestra un archivo deVHDL que conecta los módu-
los mod5 y decodifica5 entre sí. Aún y cuando q es un puerto de salida para nuestro
archivo de diseño de nivel superior, se escribe como BUFFER en la línea 4 debido
al hecho de que es necesario “leer” el arreglo de vectores de bit para una entrada al
componente (COMPONENT) decodifica5 en su mapa de puertos (PORT MAP, línea
25). VHDL no permite utilizar puertos de salida como entradas. La declaración
del tipo de datos BUFFER proporciona un puerto que puede usarse tanto para
entrada como para salida. El módulo mod5 se declara en las líneas 10 a 15 y el
módulo decodifica5 se declara en las líneas 16 a 21. Las descripciones ENTITY/
ARCHITECTURE de mod5 y decodifica5 pueden incluirse dentro del archivo de
diseño de nivel superior, o en su defecto pueden guardarse en la misma carpeta que
el archivo de nivel superior, como lo hicimos aquí. La instrucción PORT MAP para
cada instancia de los módulos se lista en las líneas 23 a 25. La palabra a la izquierda
de los dos puntos es una etiqueta única para cada instancia y el nombre del módulo
va a la derecha, después las palabras clave PORT MAP y por último, entre parén-
tesis, van las asociaciones con nombre entre las señales y los puertos del diseño. El
1 SUBDESIGN mod10
2 (
3 reloj, habilita, borrar :INPUT;
4 contador[3..0], tc :OUTPUT;
5 )
6 VARIABLE
7 contador[3..0] :DFF;
8 BEGIN
9 contador[ ].clk = reloj;
10 IF contador[ ].q == 9  habilita == VCC THEN
11 tc = VCC; -- detecta el conteo terminal
12 ELSE tc = GND;
13 END IF;
14 IF borrar THEN
15 contador[ ].d = B”0000”; -- borrar síncrona
16 ELSIF enable THEN -- borrar tiene prioridad
17 IF contador[ ].q == 9 THEN -- comprueba el último estado
18 contador[ ].d = B”0000”;
19 ELSE
20 contador[ ].d = contador[ ].q + 1; -- incremento
21 END IF;
22 ELSE -- retiene el conteo cuando está deshabilitado
23 contador[ ].d = contador[ ].q;
24 END IF;
25 END;
FIGURA 7-50 Contador BCD MOD-10 en AHDL.
operador
indica qué puertos del módulo (a la izquierda) están conectadas con
cuáles señales del sistema de mayor nivel (a la derecha). Este circuito produce los
resultados de la simulación que se muestran en la figura 7-47.
Contador BCD MOD-100
Deseamos diseñar un contador BCD MOD-100 reciclable que tenga una entrada
borrar asíncrona. La manera más sencilla de hacerlo es crear un módulo de conta-
dor BCD MOD-10 y conectar en cascada de manera síncrona dos de estos módulos
entre sí, en un archivo de diseño de mayor nivel. Las entradas de reloj para los dos
módulos MOD-10 estarán conectadas al reloj del sistema para lograr la conexión
en cascada síncrona de los dos módulos de contador. Recuerde que hay beneficios
considerables en cuanto al uso del diseño de contadores síncronos en vez de las téc-
nicas asíncronas de sincronización por reloj. Además, si no empleáramos la sincroni-
zación por reloj en forma síncrona, la señal borrar síncrona no funcionaría en forma
apropiada. Aún y cuando las especificaciones de diseño no requieren una señal de
habilitación de conteo o la detección del conteo terminal para el contador MOD-
100, será necesario incluir estas características en nuestro diseño. Para poder conec-
tar en cascada en forma síncrona dos contadores, se necesitarán las características
de habilitación y decodificación. La entrada de habilitación de conteo hace que el
contador ignore los flancos del reloj hasta que esté habilitado. La salida de conteo
terminal indica que la secuencia de conteo ha llegado a su límite y volverá a empe-
zar en el siguiente pulso de reloj. Para conectar en cascada las etapas de contadores
en forma síncrona, la salida de conteo terminal se conecta a la entrada de habilita-
ción de la siguiente etapa de mayor orden. Al utilizar la entrada de habilitación de
conteo para controlar también la decodificación del conteo terminal, podemos usar
nuestro módulo MOD-10 para crear contadores BCD aún más grandes.
CONEXIÓN EN CASCADA DE CONTADORES BCD EN AHDL
El bloque SUBDESIGN de nuestro contador BCD MOD-10 se muestra en la figura
7-50. El estado terminal para un contador BCD es 9. Las líneas 10 a 13 detectarán
A
H
D
L
SECCIÓN 7-13/CÓMO ALAMBRAR MÓDULOS DE HDL EN CONJUNTO 421
422 CAPÍTULO 7/CONTADORES Y REGISTROS
FIGURA 7-52 Diseño de diagrama de bloques para un contador BCD MOD-100.
mod10 mod10
reloj
habilita
contador[3..0]
tc
borrar
reloj
habilita
contador[3..0]
tc
borrar
clk
3
6
7
8
ENTRADA
VCC
ENTRADA
VCC
ENTRADA
VCC
en
4
clr
5
SALIDA
dieces[3..0]
unos[3..0]
SALIDA
máx
SALIDA
este estado terminal sólo cuando el contador esté habilitado con un nivel ALTO. Si
se aplica un AND al control habilita en la función de decodificación se permitirá
que dos o más módulos de contador se conecten en cascada de manera síncrona si
es necesario, con lo cual nuestro diseño mod10 será más versátil. La función borrar
operará en forma síncrona en AHDL si se incluye en la instrucción IF, como se mues-
tra en las líneas 14 a 15. Si borrar está inactiva, el contador comprobará mediante
una instrucción IF anidada en las líneas 17 a 21 si se ha llegado al último estado 9.
Después del estado 9 el contador se recicla en forma síncrona a 0. En caso contrario,
el contador se incrementará. Si el contador se deshabilita, las líneas 22 a 23 reten-
drán el valor de conteo actual mediante el proceso de alimentar la salida actual
de regreso a la entrada del contador. Esta acción de retención será necesaria en el
contador MOD-100 en cascada para que el dígito de los 10s retenga su estado actual
mientras que el dígito de los 1s progrese a través de su secuencia de conteo. Una
estrategia de diseño apropiada para nosotros sería simular este módulo para deter-
minar si funciona en forma correcta, antes de usarlo en una aplicación de circuito
más compleja. De los resultados de la simulación para mod10, que se proporcionan
en la figura 7-51, podemos ver que la secuencia de conteo es correcta, la entrada
borrar es síncrona y tiene prioridad, y habilita controla tanto la función de conteo
como la salida de decodificación tc.
Después de crear un símbolo predeterminado para nuestro módulo de contador
mod10, podemos ahora dibujar el diagrama de bloques para la aplicación del conta-
dor BCD MOD-100. También se han agregado los puertos de entrada, los puertos de
salida y el cableado para crear el diseño de la figura 7-52. Observe que las salidas
del contador que representan los dígitos de los 1s y los 10s se dibujan como buses.
Los módulos mod10 están sincronizados por reloj en forma síncrona. Están conecta-
dos en cascada mediante el uso de la salida de conteo terminal del dígito de los 1s
para controlar la entrada de habilitación en el dígito de los 10s. El puerto de entra-
da en controla la habilitación/deshabilitación de todo el circuito completo del conta-
dor MOD-100. El diseño del contador BCD puede expandirse con facilidad mediante
una etapa mod10 adicional, conectando la salida tc con la siguiente entrada habilita
para cada dígito que se necesite. En la figura 7-53 puede verse una muestra de los
resultados de la simulación. Ésta nos muestra que el contador MOD-100 tiene una
secuencia de conteo BCD correcta y que puede borrarse en forma síncrona.
reloj
habilita
borrar
tc
contador[3..0] B 0000
0
0
1
1
5.0ms 10.0ms 15.0ms 20.0ms 25.0ms 30.0ms 35.0ms
001
0001
0000
1001
1000
0111
0110
0101
0100
0011
0010
0001
0000
0010
0001
0000
FIGURA 7-51 Resultados de la simulación del contador MOD-10.
10.0ms
Nombre: Valor:
1
1
0
0
D 0
D 0 1
20.0ms 30.0ms 40.0ms 50.0ms 60.0ms 70.0ms 80.0ms 90.0ms 100.0ms
0
0
2 3 4 5 6 7 8 9 0
1 2 0 1 2
1 2 3 4 5 6 7 8 9 0 1 2 1
0 2 3 4 5 6 7 8 9 0 1 2 3 4 5 7
6 8 9 0 1 2 3 4
clk
en
clr
máx
dieces[3..0]
unos[3..0]
180.0ms
170.0ms
Nombre: Valor:
0
1
0
0
D 5
D 9 1
190.0ms 200.0ms 210.0ms 220.0ms 230.0ms 240.0ms 250.0ms 260.0ms 270.0ms
0
6
2 3 4 5 6 7 8 9 0
7 8 9 0
1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 0
9 1 2 3 4 5 6 7
clk
en
clr
máx
dieces[3..0]
unos[3..0]
FIGURA 7-53 Resultados de la simulación para el diseño del contador BCD MOD-100.
CONEXIÓN EN CASCADA DE CONTADORES BCD EN AHDL
Los bloques ENTITY y ARCHITECTURE para nuestro contador BCD MOD-10 se
muestran en las líneas 26 a 51 de la figura 7-54. El estado terminal para un contador
BCD es 9. Las líneas 38 a 40 detectarán este estado terminal sólo cuando el contador
se habilite con un nivel ALTO. Si se aplica un AND al control habilita en la función
de decodificación se permitirá que se conecten en cascada más de dos módulos de
contador en forma síncrona si es necesario; además, nuestro diseño mod10 será más
versátil. La función borrar será síncrona en VHDL si se coloca en la instrucción IF
anidada (línea 42) una vez que se detecte el flanco de reloj en la línea 41. Si borrar
está inactiva, a continuación revisamos si el contador está habilitado (línea 43). Si
habilita está en ALTO, el contador comprueba mediante otra instrucción IF anidada
en las líneas 44 a 46 para ver si se ha llegado al último estado 9. Después del estado
9 el contador se recicla en forma síncrona a 0. En caso contrario se incrementará
el conteo. Si el contador está deshabilitado,VHDL retendrá en forma automática el
valor de conteo actual. Esta acción de retención será necesaria en el contador MOD-
100 en cascada para que el dígito de los 10s retenga su estado actual mientras que
el dígito de los 1s progresa a través de su secuencia de conteo. Una estrategia de
diseño apropiada para nosotros sería que simuláramos este módulo como un bloque
ENTITY separado para determinar si funciona en forma correcta, antes de usarlo
en una aplicación de circuito más compleja. Los resultados de la simulación para el
bloque ENTITY mod10, que se muestran en la figura 7-51, muestran que la secuen-
cia de conteo es correcta, que la entrada borrar es síncrona y tiene prioridad, y que
habilita controla tanto la función de conteo como la entrada de decodificación.
Tenemos dos opciones para implementar el contador MOD-10. Una técnica es
representar el diseño en forma gráfica en un diagrama de bloques, como puede
verse en la figura 7-52. También hemos agregado los módulos del contador mod10,
los puertos de entrada, de salida y el cableado para crear el contador MOD-100.
Observe que las salidas del contador que representan los dígitos de los 1s y los 10s
se dibujan como buses. Los módulos mod10 se sincronizan por reloj en forma sín-
crona. Están conectados en cascada mediante el uso de la salida de conteo terminal
del dígito de los 1s para controlar la entrada de habilitación en el dígito de los 10s.
El puerto de entrada en controla la habilitación/deshabilitación de todo el circuito
completo del contador MOD-100. El diseño del contador BCD puede expandirse
con facilidad mediante una etapa mod10 adicional, conectando la salida tc con la
V
H
D
L
SECCIÓN 7-13/CÓMO ALAMBRAR MÓDULOS DE HDL EN CONJUNTO 423
424 CAPÍTULO 7/CONTADORES Y REGISTROS
1 ENTITY mod100 IS
2 PORT (
3 clk, en, clr :IN BIT;
4 unos :OUT INTEGER RANGE 0 TO 15;
5 dieces :OUT INTEGER RANGE 0 TO 15;
6 max :OUT BIT
7 );
8 END mod100;
9 ARCHITECTURE nivelsuperior OF mod100 IS
10 COMPONENT mod10
11 PORT (
12 reloj, habilita, borrar :IN BIT;
13 q :OUT INTEGER RANGE 0 TO 15;
14 tc :OUT BIT;
15 );
16 END COMPONENT;
17 SIGNAL rco :BIT;
18 BEGIN
19 digito1: mod10 PORT MAP (reloj = clk, habilita = en,
20 borrar = clr, q = unos, tc = rco);
21 digito2: mod10 PORT MAP (reloj = clk, habilita = rco,
22 borrar = clr, q = dieces, tc = max);
23 END nivelsuperior;
24
25
26 ENTITY mod10 IS
27 PORT (
28 reloj, habilita, borrar :IN BIT;
29 q :OUT INTEGER RANGE 0 TO 15;
30 tc :OUT BIT
31 );
32 END mod10;
33 ARCHITECTURE bloqinf OF mod10 IS
34 BEGIN
35 PROCESS (reloj, habilita)
36 VARIABLE contador :INTEGER RANGE 0 TO 15;
37 BEGIN
38 IF ((contador = 9) AND (habilita = ‘1’)) THEN tc = ‘1’;
39 ELSE tc = ‘0’;
40 END IF;
41 IF (reloj’EVENTO AND reloj = ‘1’) THEN
42 IF (borrar = ‘1’) THEN contador := 0;
43 ELSIF (habilita = ‘1’) THEN
44 IF (contador = 9) THEN contador := 0;
45 ELSE contador := contador + 1;
46 END IF;
47 END IF;
48 END IF;
49 q = contador;
50 END PROCESS;
51 END bloqinf;
FIGURA 7-54 Contador BCD MOD-100 en VHDL.
siguiente entrada habilita para cada dígito que se necesite. En la figura 7-53 puede
verse una muestra de los resultados de la simulación.
La simulación muestra que el contador MOD-100 tiene una secuencia de conteo
BCD correcta y puede borrarse en forma síncrona.
La segunda técnica para crear el contador MOD-100 es hacer las conexiones
necesarias entre los módulos de diseño, describiendo la estructura del circuito con
VHDL. La figura 7-54 muestra el listado para el archivo de diseño de este sistema.
La descripción ENTITY/ARCHITECTURE para el subbloque mod10 está conteni-
PREGUNTAS DE REPASO
da dentro del archivo de diseño mod100 general (pero podría estar en un archivo
separado dentro de la carpeta de este proyecto). El archivo de diseño mod100 sería
el nivel superior para el diseño jerárquico de este sistema. Contiene subbloques
de nivel inferior, los cuales son en realidad dos copias del contador mod10 de nivel
inferior. El bloque COMPONENT de mod10 se declara en este archivo de diseño de
nivel superior (líneas 10 a 16). Las conexiones del cableado para cada instancia en
la que se utiliza el módulo se listan en una instrucción PORT MAP. Como necesita-
mos dos instancias de mod10, hay una instrucción PORT MAP para cada instancia
(líneas 19 a 20 y 21 a 22). Cada instancia debe tener una etiqueta única (digito1 o
digito2) para diferenciarlos una de la otra. Las instrucciones PORT MAP contienen
asociaciones con nombre entre los puertos del módulo de nivel inferior, las cuales se
dan a la izquierda, y las señales de nivel superior a las cuales están conectadas,
se dan ala derecha. Este circuito produce los mismos resultados de simulación que se
muestran en la figura 7-53.
1. Describa cómo conectar módulos de HDL entre sí para crear un sistema digital.
2. ¿Qué es un bus y cómo se representa en un archivo de diseño de diagrama de
bloques gráfico en Altera?
3. ¿Qué características de contador deben incluirse para conectar en cascada
módulos de contador entre sí, en forma síncrona?
7-14 MÁQUINA DE ESTADOS
El término máquina de estados se refiere a un circuito que progresa en secuencia
a través de un conjunto de estados predeterminados, controlado por un reloj y por
otras señales de entrada. Por lo tanto, los circuitos tipo contador que hemos estu-
diado hasta ahora en el capítulo 7 son máquinas de estado. En general, utilizamos el
término contador para los circuitos secuenciales que tienen una secuencia de conteo
numérica regular. Pueden contar hacia arriba o hacia abajo, pueden tener módulos
completos de 2N
o pueden tener un módulo 2N
, o pueden reciclarse o detenerse
en forma automática en cierto estado predeterminado. Como su nombre lo indica,
un contador se utiliza para contar cosas. Las cosas que se cuentan en realidad se
conocen como pulsos de reloj, pero éstos pueden representar muchos tipos de even-
tos. Los pulsos pueden ser los ciclos de una señal para la división de frecuencia o
pueden ser segundos, minutos y horas de un día para un reloj digital. Pueden indi-
car que un elemento se ha desplazado por el transportador en una fábrica o que un
automóvil ha pasado por cierto punto en la autopista.
El término máquina de estados se utiliza con más frecuencia para describir
otros tipos de circuitos secuenciales. Pueden tener un patrón de conteo irregular
tal como nuestro circuito de control de motores a pasos de la sección 7-10. El obje-
tivo para ese diseño fue controlar un motor a pasos, de manera que pudiera girar
en pasos angulares precisos. El circuito de control tenía que producir la secuencia
específica requerida de estados para ese movimiento, en lugar de contar en forma
numérica. También existen muchas aplicaciones en las que no nos importa el valor
binario específico para cada estado, ya que utilizaremos la lógica de decodificación
apropiada para identificar estados específicos de interés y para generar las señales
de salida deseadas. La distinción general entre los dos términos es que un contador
se utiliza, por lo general, para contar eventos, mientras que una máquina de esta-
dos se utiliza por lo común para controlar eventos. El término descriptivo correcto
depende de la manera en que deseamos utilizar el circuito secuencial.
El diagrama de bloques que se muestra en la figura 7-55 puede representar una
máquina de estados o un contador. En la sección 7-10 vimos que el proceso de dise-
ño clásico de un circuito secuencial era averiguar cuántos flip-flops se requerían y
después determinar el circuito combinacional necesario para producir la secuencia
SECCIÓN 7-14/MÁQUINA DE ESTADOS 425
426 CAPÍTULO 7/CONTADORES Y REGISTROS
FIGURA 7-55
Diagrama de bloques
para contadores y
máquinas de estados.
Circuito combinacional
(compuertas)
Memoria
(flip-flops)
Circuito de salida
[Moore: opcional]
Entradas
Reloj
El modelo de Mealy tiene
controles para las salidas
Salidas
Entradas
Ausente en el modelo de Moore
retroalimentación
controles
Circuito secuencial
Modelo de Mealy:
las señales de salida pueden
tener cambios asíncronos
Modelo de Moore:
todas las señales de
salida son síncronas
deseada. La salida producida por un contador o una máquina de estados puede
venir en forma directa de las salidas de los flip-flops o tal vez se requiera de algún
circuito de compuertas, como se indica en el diagrama de bloques. Las dos varia-
ciones se describen ya sea como un modelo de Mealy para un circuito secuencial
o como un modelo de Moore. En el modelo de Mealy las señales de salida también
se controlan mediante señales de entrada adicionales, mientras que el modelo de
Moore no tiene controles externos para las señales de salida generadas. La salida
de Moore es función sólo del estado actual del flip-flop. Un ejemplo de diseño tipo
Moore sería el circuito MOD-5 decodificado de la sección 7-13. Por otro lado, el
diseño del contador BCD en la misma sección sería un diseño tipo Mealy, debido
a la entrada externa (habilita) que controla la salida de decodificación del estado
terminal (tc). Una consecuencia considerable de esta sutil variación del diseño es
que las salidas de un circuito tipo Moore serán por completo síncronas con el reloj
del circuito, mientras que las salidas producidas por un circuito tipo Mealy pueden
cambiar en forma asíncrona. En nuestro diseño MOD-10, la entrada de habilitación
no está sincronizada con el reloj del sistema.
Desde luego que los HDLs pueden hacer que las máquinas de estado sean fáci-
les e intuitivas de describir. Como un ejemplo simplificado en extremo con el que
todos pueden relacionarse, la siguiente descripción de hardware trata con cuatro
estados, a través de los cuales podría progresar una máquina lavadora ordinaria.
Aunque una máquina lavadora real es más compleja que este ejemplo, servirá para
demostrar las técnicas. Esta máquina lavadora está inactiva hasta que se oprime el
botón de arranque, después se llena con agua hasta que la tina está llena y luego
opera el agitador hasta que un temporizador expira; por último gira la tina hasta
que el agua se avienta hacia fuera y después de eso regresa a la inactividad. El
punto de este ejemplo se enfoca en el uso de un conjunto de estados con nombre
para los cuales no hay valores binarios definidos. El nombre de la variable contador
es lavar, la cual puede estar en cualquiera de los siguientes estados con nombre:
inactiva, llenar, agitar o girar.
MÁQUINA DE ESTADOS SIMPLE EN AHDL
El código de AHDL en la figura 7-56 muestra la sintaxis para declarar un contador
con estados con nombre en las líneas 6 y 7. El nombre de este contador es ciclo. La
palabra clave MACHINE se utiliza en AHDL para definir a ciclo como una máquina
de estado. El número de bits necesarios para que este contador produzca los esta-
dos con nombre se determinará mediante el compilador. Observe que en la línea 7
A
H
D
L
FIGURA 7-56 Ejemplo
de una máquina de
estados mediante el uso
de AHDL.
1 SUBDESIGN fig7 56
2 ( reloj, arranque, llena, tiempoagotado, secar :INPUT;
3 valvula agua, modo ag, modo gi :OUTPUT;
4 )
5 VARIABLE
6 ciclo: MACHINE
7 WITH STATES (inactiva, llenar, agitar, girar);
8 BEGIN
9 ciclo.clk  reloj;
10
11 CASE ciclo IS
12 WHEN inactiva IF arranque THEN ciclo  llenar;
13 ELSE ciclo  inactiva;
14 END IF;
15 WHEN llenar IF llena THEN ciclo  agitar;
16 ELSE ciclo  llenar;
17 END IF;
18 WHEN agitar  IF tiempoagotado THEN ciclo  girar;
19 ELSE ciclo  agitar;
20 END IF;
21 WHEN girar  IF secar THEN ciclo  inactiva;
22 ELSE ciclo  girar;
23 END IF;
24 WHEN OTHERS  ciclo  inactiva;
25 END CASE;
26
27 TABLE
28 ciclo  valvula agua, modo ag, modo gi;
29 inactiva  GND, GND, GND;
30 llenar  VCC, GND, GND;
31 agitar  GND, VCC, GND;
32 girar  GND, GND, VCC;
33 END TABLE;
34 END;
los estados tienen nombre, pero el valor binario para cada estado también se deja
para que el compilador lo determine. El diseñador no tiene que preocuparse por
este nivel de detalle. La estructura CASE en las líneas 11 a 25 y la lógica de deco-
dificación que controla las salidas (líneas 27 a 33) hace referencia a los estados por
su nombre. Esto hace que la descripción sea fácil de leer y permite al compilador
más libertad para minimizar los circuitos. Si el diseño requiere que la máquina
de estado también se conecte a un puerto de salida, entonces la línea 6 se puede
cambiar por:
ciclo: MACHINE OF BITS (st [1..0])
y el puerto de salida st[1..0] puede agregarse a la sección SUBDESIGN. Una segun-
da opción de máquina de estado disponible es la habilidad para que el diseñador
defina un valor binario para cada estado. En este ejemplo, esto puede lograrse si se
cambia la línea 7 por:
WITH STATES (inactiva  B”00”, llenar  B”01”, agitar  B”11”, girar
 B”10”);
SECCIÓN 7-14/MÁQUINA DE ESTADOS 427
428 CAPÍTULO 7/CONTADORES Y REGISTROS
1 ENTITY fig7_57 IS
2 PORT( reloj, arranque, llena, tiempoagotado, secar :IN BIT;
3 valvula_agua, modo_ag, modo_gi :OUT BIT);
4 END fig7_57;
5 ARCHITECTURE vhdl OF fig7_57 IS
6 TYPE maquina_estados IS (inactiva, llenar, agitar, girar);
7 BEGIN
8 PROCESS (reloj)
9 VARIABLE ciclo :maquina_estado;
10 BEGIN
11 IF (reloj’EVENT AND reloj = ‘1’) THEN
12 CASE ciclo IS
13 WHEN inactiva =
14 IF arranque = ‘1’ THEN ciclo := llenar;
15 ELSE ciclo := inactiva;
16 END IF;
17 WHEN llenar =
18 IF llena = ‘1’ THEN ciclo := agitar;
19 ELSE ciclo := llenar;
20 END IF;
21 WHEN agitar =
22 IF tiempoagotado = ‘1’ THEN ciclo := girar;
23 ELSE ciclo := agitar;
24 END IF;
25 WHEN girar =
26 IF secar = ‘1’ THEN ciclo := inactiva;
27 ELSE ciclo := girar;
28 END IF;
29 END CASE;
30 END IF;
31 CASE ciclo IS
32 WHEN inactiva = valvula_agua = ‘0’; modo_ag = ‘0’; modo_gi = ‘0’;
33 WHEN llenar= valvula_agua = ‘1’; modo_ag = ‘0’; modo_gi = ‘0’;
34 WHEN agitar= valvula_agua = ‘0’; modo_ag = ‘1’; modo_gi = ‘0’;
35 WHEN girar = valvula_agua = ‘0’; modo_ag = ‘0’; modo_gi = ‘1’;
36 END CASE;
37 END PROCESS;
38 END vhdl;
FIGURA 7-57 Ejemplo de máquina de estados mediante el uso de VHDL.
MÁQUINA DE ESTADOS SIMPLE ENVHDL
El código de VHDL en la figura 7-57 muestra la sintaxis para declarar un contador
con estados con nombre. En la línea 6 se declara un objeto llamado maquina_esta-
dos. Observe la palabra clave TYPE. A esto se le conoce como un tipo enumerado
en VHDL, en el cual el diseñador lista por nombres simbólicos todos los posibles
valores que una señal, variable o puerto que se declara de ese tipo tiene permitido
tener. Observe también que en la línea 6 los estados tienen nombre, pero el valor
binario para cada estado se deja para que el compilador lo determine. El diseñador
no necesita preocuparse por este nivel de detalle. La estructura CASE en las líneas
12 a 29 y la lógica de decodificación que controla las salidas (líneas 31 a 36) hacen
referencia a los estados por su nombre. Esto hace que la descripción sea fácil de
leer y permite al compilador más libertad para minimizar los circuitos.
Al utilizar el simulador para verificar nuestros diseños de HDL se producen
los resultados que muestra la figura 7-58. El simulador de Altera permite también
simular nodos intermedios en nuestros módulos de diseño. La máquina de estado
“oculta” llamada ciclo se ha incluido en la simulación para poder confirmar que
opere en forma correcta. Observe que los resultados para ciclo se proporcionan
dos veces, ya que se mostrará en forma distinta para los dos HDLS. En realidad el
V
H
D
L
2.0 ms 4.0 ms 6.0 ms 8.0 ms 10.0 ms 12.0 ms 14.0 ms 16.0 ms 18.0 ms
reloj
arranque
llena
tiempoagotado
secar
valvula_agua
modo_ag
modo_sp
ciclo_ahdl
ciclo_vhdl
1
0
0
0
0
0
0
0
0 1 2 3 0
inactiva llenar agitar girar inactiva
idle
D O
FIGURA 7-58 Simulación del ejemplo de diseño en HDL de la máquina lavadora para una máquina de
estados.
FIGURA 7-59 Controlador de semáforo.
luz[1. . 0]
reloj
auto
luz[1..0]
restablecer
tprinverde[4..0]
tlateverde[4..0]
cambiar
luz[1 . . 0]
prinambar
prinrojo
prinverde
laterojo
lateambar
lateverde
reloj
habilita
restablecer
control
ctrl_luz
delay
reloj
ENTRADA
VCC
auto
3
4
ENTRADA
VCC
tprinverde[4..0]
ENTRADA
VCC
tlateverde[4..0]
14
15
ENTRADA
VCC
restablecer
13
1
6
2
ENTRADA
VCC
cambiar
SALIDA
16
prinrojo
SALIDA
7
prinambar
SALIDA
8
prinverde
SALIDA
9
laterojo
SALIDA
10
lateambar
SALIDA
11
lateverde
SALIDA
12
luz[1 . . 0]
5
SALIDA
simulador no puede mostrar las simulaciones para AHDL y VHDL al mismo tiempo.
La información del segundo nodo oculto tan sólo se copió y se pegó para obtener
aquí una figura compuesta. En AHDL se muestran los nombres de la máquina de
estados, mientras que en VHDL se muestran en su lugar los valores asignados por
el compilador para los nombres de los estados enumerados.
Máquina de estados del controlador de un semáforo
Vamos a estudiar el diseño de una máquina de estados de un circuito que es más
complicado: un controlador de un semáforo. En la figura 7-59 se muestra el diagrama
de bloques. Nuestro controlador está diseñado para controlar el flujo de tráfico en la
intersección de un camino principal con un camino lateral menos fluido. El tráfico
fluirá sin interrupción en el camino principal con una luz verde, hasta que se detecte un
automóvil en el camino lateral (lo cual se indica mediante la entrada etiquetada como
auto). Después de un lapso que se establece mediante la entrada binaria de cinco bits
etiquetada como tprinverde, la luz del camino principal cambiará a ámbar. El tprin-
verde asegura que el camino principal reciba una luz verde por al menos ese lapso en
SECCIÓN 7-14/MÁQUINA DE ESTADOS 429
430 CAPÍTULO 7/CONTADORES Y REGISTROS
cada ciclo de las luces. La luz ámbar durará una constante de tiempo, el cual se
establece en el diseño de HDL y después realizará la transición a rojo. Cuando la
luz del camino principal cambie a rojo, la luz del camino lateral cambiará a verde.
La luz del camino lateral estará en verde durante un tiempo que se establece
mediante la entrada binaria de cinco bits llamada tlateverde. De nuevo, la luz ámbar
durará la misma constante de tiempo y después el camino lateral regresará a una
luz roja y el camino principal tendrá luz verde de nuevo. El módulo generador de
lapsos controlará los periodos de tiempo para cada una de las luces. Los lapsos
actuales serán iguales al periodo del reloj del sistema multiplicado por el factor de
lapso. El módulo de control determina el estado del controlador de tráfico. Hay
cuatro combinaciones de luces: principal-verde/lateral-rojo, principal-ámbar/late-
ral-rojo, principal-rojo/lateral-verde y principal-rojo/lateral-ámbar; por lo tanto, el
control requerirá cuatro estados. Los estados del semáforo se traducen en los patro-
nes de encendido-apagado apropiados para cada uno de los seis pares de luces,
mediante el módulo ctrl_luz. Las salidas etiquetadas como cambiar y luz se propor-
cionan para fines de diagnóstico. La pata de Restablecer (Reset) se utiliza para ini-
cializar cada uno de los dos circuitos secuenciales.
CONTROLADOR DE SEMÁFORO EN AHDL
Los tres módulos de diseño para nuestro controlador de semáforo en AHDL se mues-
tran juntos en la figura 7-60. En realidad son tres archivos de diseño separados que
se interconectan con el diseño del diagrama de bloques que se muestra en la figura
7-59. El módulo generador de lapsos (líneas1 a 23) es en esencia un contador des-
cendente oculto (línea 20) llamado mach, el cual espera en cero cuando el camino
principal tiene luz verde (luz  0), hasta que se dispara mediante el sensor de autos
(línea 13) para cargar el factor de lapso o retraso tprinverde – 1 en la línea 14. Como
el contador se decrementa hasta cero, se resta uno a cada retraso para hacer que el
módulo del contador de retraso sea igual al valor del retraso. Por ejemplo, si desea-
mos tener un factor de retraso de 25, el contador debe contar en forma descendente
desde 24 hasta 0. La longitud actual de tiempo representada por los factores de
retraso depende de la frecuencia del reloj. Con una frecuencia de reloj de 1-Hz
el periodo sería de 1s, y los factores de retraso estarían en segundos. La línea 22
define una señal de salida llamada cambio, la cual detecta cuando mach es igual a
uno. Cambio estará en ALTO para indicar que la condición de prueba es verdadera,
lo cual a su vez habilitará la máquina de estados en el módulo de control para que
avance a su siguiente estado (luz  1) cuando se sincronice con el reloj, para indicar
una luz ámbar en el camino principal. A medida que el contador de retraso mach
cuente hacia abajo y llegue a cero, la instrucción CASE determinará que luz tiene
un nuevo valor y se cargará el factor de retraso de tiempo fijo de 5 para una luz
ámbar (en realidad se carga uno menos que 5, como dijimos antes) en mach (línea
16), en el siguiente pulso de reloj. El conteo descendente continuará a partir de este
nuevo tiempo de retraso y cambio habilitará de nuevo el módulo de control para que
avance a su siguiente estado (luz  2) cuando mach sea igual a 1; el resultado será
una luz verde para el camino lateral. Cuando mach llegue de nuevo a cero se cargará
en el contador descendente (línea 17) el retraso de tiempo (tlateverde – 1) para una
luz verde en el camino lateral. Cuando cambio se vuelva a activar, luz avanzará al
estado 3 para una luz ámbar en el camino lateral. Mach se reciclará al valor 4 (5-1)
en la línea 18 para el retraso de tiempo fijo para una luz ámbar. Cuando cambio se
active esta vez, el módulo de control regresará al estado luz  0 (luz verde en el
camino principal). Cuando mach se decremente a su estado terminal (0) esta vez,
las líneas 13 a 15 determinarán mediante el estado de la entrada del sensor auto
si debe esperar a otro auto o si debe cargar el factor de retraso para una luz verde
en el camino principal (tprinverde – 1), para empezar el ciclo de nuevo. El camino
principal recibirá una luz verde durante al menos esta longitud de tiempo, aunque
haya un flujo continuo de automóviles en el camino lateral. Es obvio que podríamos
hacer mejoras a este diseño, pero sin duda eso lo complicaría aún más.
A
H
D
L
1 SUBDESIGN retraso
2 ( reloj, auto, luz[1..0], restablecer :INPUT;
3 tprinverde[4..0], tlateverde[4..0] :INPUT;
4 cambio :OUTPUT; )
5 VARIABLE
6 mach[4..0] :DFF;
7 BEGIN
8 mach[ ].clk = reloj; -- con un reloj de 1 Hz, tiempos en segundos
9 mach[ ].crln = restablecer;
10 IF mach[ ] == 0 THEN
11 CASE luz[ ] IS -- comprueba el estado del controlador de luz
12 WHEN 0 =
13 IF !auto THEN mach[ ].d = 0; -- espera auto en camino lateral
14 ELSE mach[ ].d = tprinverde[ ] – 1; -- establece tiempo para luz verde principal
15 END IF;
16 WHEN 1 = mach[ ].d = 5 – 1; -- establece tiempo para luz ambar principal
17 WHEN 2 = mach[ ].d = tlateverde[ ] – 1; -- establece tiempo para luz verde lateral
18 WHEN 3 = mach[ ].d = 5 – 1; -- establece tiempo para luz ambar lateral
19 END CASE;
20 ELSE mach[ ].d = mach[ ].q – 1; -- decrementa contador temporizador
21 END IF;
22 cambio = mach[ ] == 1; -- cambia luces en módulo de control
23 END;
24 -------------------------------------------------------------------------------------------------
25 SUBDESIGN control
26 ( reloj, habilita, restablecer :INPUT;
27 luz[1..0] :OUTPUT; )
28 VARIABLE
29 semaforo: MACHINE OF BITS (luz[1..0]) -- necesita 4 estados para combinaciones de luces
30 WITH STATES (pvrd = B”00”, pamb = B”01”, lvrd = B”10”, lamb = B”11”);
31 BEGIN
32 semaforo.clk = reloj;
33 semaforo.restablecer = !restablecer; -- las máquinas tienen señal restablecer
asíncrona, activa en alto
34 CASE semaforo IS -- espera a que señal de habilitación cambie estados del semáforo
35 WHEN pvrd = IF habilita THEN semaforo = pamb; ELSE semaforo = pvrd; END IF;
36 WHEN pamb = IF habilita THEN semaforo = lvrd; ELSE semaforo = pamb; END IF;
37 WHEN lvrd = IF habilita THEN semaforo = lamb; ELSE semaforo = lvrd; END IF;
38 WHEN lamb = IF habilita THEN semaforo = pvrd; ELSE semaforo = lamb; END IF;
39 END CASE;
40 END;
41 -------------------------------------------------------------------------------------------------
42 SUBDESIGN ctrl_luz
43 ( luz[1..0] :INPUT;
44 prinrojo, prinambar, prinverde :OUTPUT;
45 laterojo, lateambar, lateverde :OUTPUT; )
46 BEGIN
47 CASE luz[ ] IS -- determina cuales luces se van a encender
48 WHEN B”00” = prinverde = VCC; prinambar = GND; prinrojo = GND;
49 lateverde = GND; lateambar = GND; laterojo = VCC;
50 WHEN B”01” = prinverde = GND; prinambar = VCC; prinrojo = GND;
51 lateverde = GND; lateambar = GND; laterojo = VCC;
52 WHEN B”10” = prinverde = GND; prinambar = GND; prinrojo = VCC;
53 lateverde = VCC; lateambar = GND; laterojo = GND;
54 WHEN B”11” = prinverde = GND; prinambar = GND; prinrojo = VCC;
55 lateverde = GND; lateambar = VCC; laterojo = GND;
56 END CASE;
57 END;
FIGURA 7-60 Archivos de diseño de AHDL para el controlador de semáforo.
SECCIÓN 7-14/MÁQUINA DE ESTADOS 431
432 CAPÍTULO 7/CONTADORES Y REGISTROS
El módulo de control (líneas 25 a 40) contiene una máquina de estados llama-
da semaforo, la cual avanzará en secuencia a través de los cuatro estados para las
combinaciones de semáforos. Los bits para la máquina de estados tienen nombre
y están conectados como un puerto de salida para este módulo (líneas 27 y 29).
Los cuatro estados para semaforo se llaman pvrd, pamb, svrd y samb en la línea 30.
Cada estado representa cuál de los caminos (principal o lateral) va a recibir una
luz verde o ámbar. El otro camino tendrá una luz roja. También se han especificado
los valores para cada estado del módulo de control en la línea 30, de manera que
podamos identificarlos como entradas para los otros dos módulos, retraso y ctrl_luz.
La entrada habilita está conectada a la señal de salida cambio, producida por el
módulo de retraso. Cuando se habilite, la máquina de estados semaforo avanzará al
siguiente estado cuando se aplique un pulso de reloj, como se describe mediante
la instrucción CASE y las instrucciones IF anidadas en las líneas 34 a 39. En caso
contrario, semaforo permanecerá en el estado actual.
El módulo ctrl_luz (líneas 42 a 57) tiene como entrada luz[1..0], la cual represen-
ta el estado de la máquina de estados semaforo del módulo de control, y producirá
como salida las señales que enciendan las combinaciones apropiadas de luces ver-
de, ámbar y roja para los caminos principal y lateral. En realidad, cada una de las
salidas del módulo ctrl_luz estará conectada a circuitos controladores de lámparas
para controlar los voltajes y las corrientes con valores más altos, necesarios para los
focos reales en un semáforo. La instrucción CASE en las líneas 47 a 55 determina la
combinación de luces del (camino principal, camino lateral) que se debe encender
para cada estado del semaforo. La función del módulo ctrl_luz es muy parecida a la
de un decodificador. En esencia, decodifica la combinación de cada estado de luz
para encender una luz verde o ámbar para un camino, y una luz roja para el otro.
Para cada estado de entrada se produce una combinación de salida única.
CONTROLADOR DE SEMÁFORO ENVHDL
En la figura 7-61 se muestra el diseño de VHDL para el controlador de semáforo.
El nivel superior del diseño se describe en forma estructural, en las líneas 1 a 34.
Hay que declarar tres módulos COMPONENT (líneas 10 a 24). En las líneas 26 a 33
aparecen las instrucciones PORT MAP, las cuales proporcionan las interconexiones
de cableado entre cada módulo y el diseño de nivel superior.
En esencia, el módulo de retraso (líneas 36 a 66) es un contador descendente
oculto (línea 59), el cual se crea con la variable entera mach que espera en cero
cuando el camino principal tiene luz verde (luz  “00”), hasta que se dispara
mediante el sensor de autos (línea 52) para cargar el factor de retraso tprinverde  1
en la línea 53. Como el contador se decrementa hasta llegar a cero, se resta uno a
cada factor de retraso para hacer que el módulo del contador de retraso sea igual
al valor del factor de retraso. Por ejemplo, si deseamos tener un factor de retraso
de 25, el contador debe contar en forma descendente desde 24 hasta 0. La longitud
actual de tiempo representada por los factores de retraso depende de la frecuencia
del reloj. Con una frecuencia de reloj de 1-Hz el periodo sería de 1 s, y los factores
de retraso estarían en segundos. Las líneas 62-64 definen una señal de salida lla-
mada cambio, la cual detecta cuando mach es igual a uno. Cambio estará en ALTO
para indicar que la condición de prueba es verdadera, lo cual a su vez habilitará la
máquina de estado en el módulo de control para que avance a su siguiente estado
(luz  “01”) cuando se sincronice con el reloj, para indicar una luz ámbar en el
camino principal. Ahora cuando mach llegue a cero, la instrucción CASE determi-
nará que luz tiene un nuevo valor y se cargará el factor de retraso de tiempo fijo
de 5 para una luz ámbar (en realidad se carga uno menos, como dijimos antes) en
mach (línea 55), en el siguiente pulso de reloj. El conteo descendente continuará a
partir de este nuevo tiempo de retraso y cambio habilitará de nuevo el módulo de
control para que avance a su siguiente estado (luz  “10”), con lo cual se obtendrá
una luz verde para el camino lateral. Cuando mach llegue de nuevo a cero se cargará
V
H
D
L
1 ENTITY trafico IS
2 PORT ( reloj, auto, restablecer :IN BIT;
3 tprinverde, rlateverde :IN INTEGER RANGE 0 TO 31;
4 luz :BUFFER INTEGER RANGE 0 TO 3;
5 cambio :BUFFER BIT;
6 prinrojo, prinambar, prinverde :OUT BIT;
7 latrojo, latambar, latverde :OUT BIT);
8 END trafico;
9 ARCHITECTURE nivelsuperior OF trafico IS
10 COMPONENT retraso
11 PORT ( reloj, auto, restablecer :IN BIT;
12 luz :IN INTEGER RANGE 0 TO 3;
13 tprinverde, tlateverde :IN INTEGER RANGE 0 TO 31;
14 cambio :OUT BIT);
15 END COMPONENT;
16 COMPONENT control
17 PORT ( reloj, habilita, restablecer :IN BIT;
18 luz :OUT INTEGER RANGE 0 TO 3);
19 END COMPONENT;
20 COMPONENT ctrl_luz
21 PORT ( luz :IN INTEGER RANGE 0 TO 3;
22 prinrojo, prinambar, prinverde :OUT BIT;
23 latrojo, latambar, latverde :OUT BIT);
24 END COMPONENT;
25 BEGIN
26 modulo1: retraso PORT MAP ( reloj = reloj, auto = auto, restablecer = restablecer,
27 luz = luz, trpinverde = tprinverde, tlateverde = tlateverde,
28 cambio = cambio);
29 modulo2: control PORT MAP (reloj = reloj, habilita = cambio, restablecer = restablecer,
30 luz = luz);
31 modulo3: ctrl_luz PORT MAP (luz = luz, prinrojo = prinrojo, prinambar = prinambar;
32 prinverde = prinverde, latrojo = latrojo, latambar = latambar,
33 latverde = latverde);
34 END nivelsuperior;
35 --------------------------------------------------------------------------------------------
36 ENTITY retraso IS
37 PORT ( reloj, auto, restablecer :IN BIT;
38 luz :IN BIT_VECTOR (1 DOWNTO 0);
39 tprinverde, tlateverde :IN INTEGER RANGE 0 TO 31;
40 cambio :OUT BIT);
41 END retraso;
42 ARCHITECTURE tiempo OF retraso IS
43 BEGIN
44 PROCESS (reloj, restablecer)
45 VARIABLE mach :INTEGER RANGE 0 TO 31;
46 BEGIN
47 IF restablecer = ‘0’ THEN mach := 0;
48 ELSIF (reloj = ‘1’ AND reloj’EVENT) THEN -- con reloj de 1 Hz, tiempo en segundos
49 IF mach = 0 THEN
50 CASE luz IS
51 WHEN “00”
52 IF auto = ‘0’ THEN mach := 0; -- espera auto en camino lateral
53 ELSE mach:= tprinverde – 1; -- establece tiempo para luz verde principal
54 END IF;
55 WHEN “01” = mach := 5 – 1; -- establece tiempo para luz ambar principal
56 WHEN “10” = mach := tlateverde – 1; -- establece tiempo para luz verde lateral
57 WHEN “11” = mach := 5 – 1: -- establece tiempo para luz ambar lateral
58 END CASE;
59 ELSE mach := mach – 1; -- decrementa contador temporizador
60 END IF;
61 END IF;
FIGURA 7-61 Diseño de VHDL para el controlador de semáforo.
SECCIÓN 7-14/MÁQUINA DE ESTADOS 433
434 CAPÍTULO 7/CONTADORES Y REGISTROS
62 IF mach = 1 THEN cambio = ‘1’; -- cambia luces en control
63 ELSE cambio = ‘0’;
64 END IF;
65 END PROCESS;
66 END tiempo;
67 ----------------------------------------------------------------------------------
68 ENTITY control IS
69 PORT ( reloj, habilita, restablecer :IN BIT;
70 luz :OUT BIT_VECTOR (1 DOWNTO 0) );
71 END control;
72 ARCHITECTURE a OF control IS
73 TYPE enumerado IS (pvrd, pamb, lvrd, lamb); -- necesita 4 estados para las
combinaciones de luces
74 BEGIN
75 PROCESS (reloj, restablecer)
76 VARIABLE luces: enumerado;
77 BEGIN
78 IF restablecer = ‘0’ THEN luces := pvrd;
79 ELSIF (reloj = ‘1’ AND reloj’EVENT) THEN
80 IF habilita = ‘1’ THEN -- espera a habilita para cambiar estados de luces
81 CASE luces IS
82 WHEN pvrd = luces := pamb;
83 WHEN pamb = luces := lvrd;
84 WHEN lvrd = luces := lamb;
85 WHEN lamb = luces := pvrd;
86 END CASE;
87 END IF;
88 END IF;
89 CASE luces IS -- patrones para los estados de las luces
90 WHEN pvrd= luz = “00”;
91 WHEN pamb= luz = “01;
92 WHEN lvrd= luz = “10”
93 WHEN lamb= luz = “11”;
94 END CASE;
95 END PROCESS;
96 END a;
97 -----------------------------------------------------------------------------------
98 ENTITY ctrl_luz IS
99 PORT ( luz :IN BIT_VECTOR (1 DOWNTO 0);
100 prinrojo, prinambar, prinverde :OUT BIT;
101 latrojo, latambar, latverde :OUT BIT);
102 END ctrl_luz;
103 ARCHITECTURE patrones OF ctrl_luz IS
104 BEGIN
105 PROCESS (luz)
106 BEGIN
107 CASE luz IS -- el estado de control determina cuales luces encender/apagar
108 WHEN “00” = prinverde = ‘1’; prinambar = ‘0’; prinrojo = ‘0’;
109 latverde = ‘0’; latambar = ‘0’; latrojo = ‘1’;
110 WHEN “01” = prinverde = ‘0’; prinambar = ‘1’; prinrojo = ‘0’;
111 latverde = ‘0’; latambar = ‘0’; latrojo = ‘1’;
112 WHEN “10” = prinverde = ‘0’; prinambar = ‘0’; prinrojo = ‘1’;
113 latverde = ‘1’; latambar = ‘0’; latrojo = ‘0’;
114 WHEN “1” = prinverde = ‘0’; prinambar = ‘0’; prinrojo = ‘1’;
115 latverde = ‘0’; latambar = ‘1’; latrojo = ‘0’;
116 END CASE;
117 END PROCESS;
118 END patrones;
FIGURA 7-61 Continuación
en el contador descendente (línea 56) el retraso de tiempo (tlateverde – 1) para una
luz verde en el camino lateral. Cuando cambio se vuelva a activar, luz avanzará al
estado “11” para una luz ámbar en el camino lateral. Mach se reciclará al valor 4
(5-1) en la línea 57 para el retraso de tiempo fijo para una luz ámbar. Cuando cam-
bio se active esta vez, el módulo de control regresará a luz  “00” (luz verde en el
camino principal). Cuando mach se decremente a su estado terminal (0) esta vez,
las líneas 52 a 54 determinarán mediante el estado de la entrada del sensor auto
si debe esperar a otro auto o si debe cargar el factor de retraso para una luz verde
en el camino principal (tprinverde – 1), para empezar el ciclo de nuevo. El camino
principal recibirá una luz verde durante al menos esta longitud de tiempo, aún si
hay un flujo continuo de automóviles en el camino lateral. Es obvio que podríamos
hacer mejoras a este diseño, pero sin duda eso lo complicaría aún más.
El módulo de control (líneas 68 a 96) contiene una máquina de estado llamada
luces, la cual avanzará en secuencia a través de cuatro estados enumerados para las
combinaciones de luces del semáforo. Los cuatro estados enumerados para luces son
pvrd, pamb, lvrd y lamb (líneas 73 y 76). Cada estado representa el camino (principal
o lateral) que va a recibir una luz verde o ámbar. El otro camino tendrá una luz roja.
La entrada habilita se conecta a la señal de salida cambio que produce el módulo de
retraso. Cuando se habilite, la máquina de estado luces avanzará al siguiente estado
cuando se sincronice por el reloj, como se describe en las instrucciones IF anidada y
CASE de las líneas 79 a 88. En caso contrario, luces permanecerá en el estado actual.
Los patrones de bits para el puerto de salida luz se han especificado para cada
estado de luces mediante la instrucción CASE en las líneas 89-94, para que podamos
identificarlas como entradas para los otros dos módulos: retraso y ctrl_luz.
El módulo ctrl_luz (líneas 98 a 118) tiene como entrada a luz, la cual representa
el estado de la máquina de estados luces del módulo de control, y producirá como
salida las señales que enciendan las combinaciones apropiadas de luces verde,
ámbar y roja para los caminos principal y lateral. Cada salida del módulo ctrl_luz
estará conectada a circuitos controladores de lámparas para suministrar los voltajes
y corrientes necesarios para los focos en un semáforo real. La instrucción CASE en las
líneas 107 a 116, la cual se invoca mediante el bloque PROCESS cuando cambia la
entrada luz, determina cuál combinación de luces del camino principal/camino late-
ral deben encenderse para cada estado de luces. La función del módulo ctrl_luz es
muy parecida a la de un decodificador. En esencia, decodifica cada combinación de
estado de luz para encender una luz verde o ámbar para un camino y una luz roja
para el otro. Para cada estado de entrada se produce una combinación de salida
única.
En estos momentos tal vez usted se esté preguntando: ¿Por qué hay tantas for-
mas de describir los circuitos lógicos? Si una es más sencilla que las demás, ¿por
qué no sólo estudiar esa? Sin duda la respuesta es que cada nivel de abstracción
ofrece ciertas ventajas en comparación con los demás, en ciertos casos. El método
estructural proporciona el control más completo sobre las interconexiones. El uso
de ecuaciones booleanas, tablas de verdad y tablas de estado PRESENTE / estado
SIGUIENTE nos permite describir la manera en que fluyen los datos a través del
circuito, mediante el uso de HDL. Por último, el método de comportamiento per-
mite una descripción más abstracta de la operación del circuito, en términos de
causa y efecto. En la práctica, cada archivo fuente puede tener porciones que se
clasifiquen bajo cada uno de los niveles de abstracción. La acción de seleccionar el
nivel correcto al escribir código no es una cuestión de bueno o malo, sino de estilo
y preferencia.
También hay varias formas de lidiar con cualquier tarea, desde el punto de
vista relacionado con la elección de las estructuras de control. ¿Debemos usar asig-
naciones de señales selectas o ecuaciones booleanas, IF/ELSE o CASE, procesos
secuenciales o instrucciones concurrentes, macrofunciones o megafunciones? ¿O
deberíamos escribir nuestro propio código? Las respuestas a esas preguntas defi-
nirán en última instancia la estrategia personal que usted utilice para resolver el
problema. Sus preferencias y las ventajas que encuentre al utilizar un método en
comparación con otro se establecerán con la práctica y la experiencia.
SECCIÓN 7-14/MÁQUINA DE ESTADOS 435
436 CAPÍTULO 7/CONTADORES Y REGISTROS
PREGUNTAS DE REPASO 1. ¿Cuál es la diferencia fundamental entre un contador y una máquina de estados?
2. ¿Cuál es la diferencia entre describir un contador y describir una máquina de
estados en un HDL?
3. Si los estados binarios actuales para una máquina de estados no se definen en
el código de HDL, ¿cómo se asignan?
4. ¿Cuál es la ventaja de utilizar la descripción de una máquina de estados?
RESUMEN PARTE 1
1. En los contadores asíncronos (de rizo) la señal de reloj se aplica al FF del LSB
y todos los demás FFs se sincronizan mediante la salida del FF anterior.
2. El número MOD de un contador es el número de estados estables en su ciclo de
conteo; también es la proporción máxima de división de frecuencia.
3. El número MOD normal (máximo) de un contador es 2N
. Una manera de modi-
ficar el número MOD de un contador es agregar circuitos que hagan que se
recicle antes de llegar a su último conteo normal.
4. Los contadores pueden conectarse en cascada (encadenarse) para producir ran-
gos de conteo mayores y proporciones de división de frecuencia más altas.
5. En un contador síncrono (en paralelo), todos los FFs se sincronizan en forma
simultánea a partir de la señal de reloj de entrada.
6. La frecuencia de reloj máxima para un contador asíncrono (fmáx) se decrementa
a medida que se incrementa el número de bits. En un contador síncrono fmáx
permanece igual, sin importar el número de bits.
7. Un contador de décadas es cualquier contador MOD-10. Un contador BCD es un
contador de décadas que avanza en secuencia a través de los 10 códigos BCD
(0-9).
8. Un contador preajustable puede cargarse con cualquier conteo inicial que se
desee.
9. Un contador ascendente/descendente puede controlarse para contar hacia arri-
ba o hacia abajo.
10. Las compuertas lógicas pueden utilizarse para decodificar (detectar) uno o
todos los estados de un contador.
11. La secuencia de conteo para un contador síncrono puede determinarse con faci-
lidad mediante el uso de una tabla de estado PRESENTE / estado SIGUIENTE,
en la cual se listen todos los posibles estados, la información de control de
entrada de los flip-flops y los estados SIGUIENTE resultantes.
12. Para implementar los contadores síncronos con secuencias de conteo arbitra-
rias se sigue un procedimiento de diseño estándar.
13. Los contadores pueden describirse de muchas formas distintas mediante el uso
de HDL, incluyendo descripciones de cableado estructurales, tablas de estado
PRESENTE estado SIGUIENTE y descripciones de comportamiento.
14. Todas las características disponibles en los diversos CIs estándar tipo contador
de CI, tales como la carga o el borrado asíncronos o síncronos, la habilitación
del conteo y la decodificación del conteo terminal, pueden describirse median-
te HDL. Los contadores en HDL pueden modificarse con facilidad para números
MOD más altos o cambios en los niveles activos para los controles.
15. Los sistemas digitales pueden subdividirse en módulos o bloques más peque-
ños, los cuales pueden interconectarse como un diseño jerárquico.
16. Las máquinas de estados pueden representarse en HDL mediante el uso de
nombres descriptivos para cada estado, en vez de especificar una secuencia
numérica de estados.
TÉRMINOS IMPORTANTES PARTE 1
carga en paralelo
conexión en cascada
contador ascendente
contador asíncrono
(de rizo)
contador autocorregible
contador BCD
contador de décadas
contador descendente
contadores ascendentes/
descendentes
contadores de múltiples
etapas
contadores
preajustables
contadores síncronos
(en paralelo)
decodificación
deformaciones
diseño de circuitos
secuenciales
diseño jerárquico
habilitación
de conteo
MACHINE
máquina de estados
modelo de Mealy
modelo de Moore
nivel de abstracción
de comportamiento
número MOD
tabla de estado
PRESENTE, estado
SIGUIENTE
tabla de excitación
de circuitos
tabla de excitación J-K
tipo enumerado
VARIABLE
PARTE 2
7-15 REGISTROS DE CIRCUITO INTEGRADO
Los diversos tipos de registros pueden clasificarse de acuerdo con la forma en que
pueden introducirse datos en el registro para su almacenamiento y la forma en
que se envían los datos de salida desde el registro. A continuación se muestra una
lista de las diversas clasificaciones.
1. Entrada en paralelo/Salida en paralelo (PIPO).
2. Entrada en serie/Salida en serie (SISO).
3. Entrada en paralelo/Salida en serie (PISO).
4. Entrada en serie/Salida en paralelo (SIPO).
Cada uno de estos tipos y algunas variaciones de los mismos están disponi-
bles en forma de CI para que un diseñador de lógica digital pueda encontrar con
exactitud lo que se requiere para cierta aplicación. En las siguientes secciones
examinaremos una forma de CI representativa de cada una de las categorías antes
mencionadas.
7-16 ENTRADA EN PARALELO/SALIDA EN PARALELO:
74ALS174/74HC174
El registro tipo entrada en paralelo/salida en paralelo es un grupo de flip-flops que
puede almacenar varios bits al mismo tiempo; en este tipo de registros todos los bits
del valor binario almacenado están disponibles de manera directa. La figura 7-62(a)
muestra el diagrama lógico para el 74ALS174 (también el 74HC174), un registro de
seis bits que tiene las entradas en paralelo D5 a D0 y las salidas en paralelo Q5 a
Q0. Los datos en paralelo se cargan en el registro, en la PGT de la entrada de reloj
CP. Puede utilizarse una entrada maestra MR (Master Reset) para restablecer a 0
en forma asíncrona todos los FFs del registro. La figura 7-62(b) muestra el símbolo
lógico para el 74ALS174. Este símbolo se utiliza en los diagramas de circuitos para
representar los circuitos de la figura 7-62(a).
Por lo general, el 74ALS174 se utiliza para la transferencia síncrona de datos
en paralelo, en donde los niveles lógicos presentes en las entradas D se transfieren
a las salidas Q correspondientes cuando se produce una PGT en la entrada de reloj
CP. No obstante, este CI puede cablearse para la transferencia de datos en serie,
como se mostrará en los siguientes ejemplos.
SECCIÓN 7-16/ENTRADA EN PARALELO/SALIDA EN PARALELO 437
438 CAPÍTULO 7/CONTADORES Y REGISTROS
Q5
D5
Q4
D4
Q3
D3
Q2
D2
Q1
D1
Q0
D0
MR CP
MR
CP
(a)
74ALS174
Q5 Q4 Q3 Q2 Q1 Q0
D5 D4 D3 D2 D1 D0
(b)
D Q
CP
CLR
D Q
CP
CLR
D Q
CP
CLR
D Q
CP
CLR
D Q
CP
CLR
D Q
CP
CLR
FIGURA 7-62 (a) Diagrama del circuito del 74ALS174; (b) símbolo lógico.
EJEMPLO 7-16
EJEMPLO 7-17
Muestre cómo conectar el 74ALS174 de manera que opere como un registro de des-
plazamiento en serie, en donde los datos se desplacen en cada PGT de CP como se
indica a continuación: Entrada en serie → Q5 → Q4 → Q3 → Q2 → Q1 → Q0. En otras
palabras, los datos en serie entrarán en D5 y saldrán en Q0.
Solución
Si analizamos la figura 7-62(a) podremos ver que para conectar los seis FFs como
un registro de desplazamiento en serie, tenemos que conectar la salida Q de uno
a la entrada D del siguiente, de manera que los datos se transfieran de la forma
requerida. La figura 7-63 muestra cómo se realiza esto. Observe que los datos se
desplazan de izquierda a derecha; los datos de entrada se aplican en D5 y los datos
de salida aparecen en Q0.
¿Cómo conectaría dos CIs 74ALS174 para operar como un registro de desplazamien-
to de 12 bits?
Solución
Se conecta un segundo CI 74ALS174 como registro de desplazamiento y se conecta
Q0 del primer CI a D5 del segundo CI. Se conectan las entradas CP de ambos CIs,
de manera que se sincronicen con la misma señal. Además se conectan las entradas
MR juntas si se utiliza la señal de restablecer asíncrona (RESET).
FIGURA 7-63
Ejemplo 7-16: el
74ALS174 cableado
como un registro de
desplazamiento.
74ALS174
D5 D4 D3 D2 D1 D0
Q5 Q4 Q3 Q2 Q1 Q0
CP
MR
Entrada
en serie
Salida
en serie
EJEMPLO 7-18
7-17 ENTRADA EN SERIE/SALIDA EN SERIE:
74ALS166/74HC166
Un registro de desplazamiento del tipo entrada en serie/salida en serie cargará los
datos un bit a la vez. Los datos se desplazarán bit por bit con cada pulso de reloj, a
través del conjunto de flip-flops y hacia el otro extremo del registro. Con los pulsos
de reloj continuos, los datos saldrán del registro uno por uno en el mismo orden
en el que se cargaron. El 74HC166 (y también el 74ALS166) puede utilizarse como
un registro de entrada en serie/salida en serie. La figura 7-64 muestra el diagrama
lógico y el símbolo esquemático para el 74HC166. Es un registro de desplazamiento
de ocho bits, del cual sólo se puede tener acceso al FF QH. Los datos en serie se
introducen en SER y se almacenan en el FF QA. La salida en serie se obtiene en el
otro extremo del registro de desplazamiento, en QH. Como podemos ver en la tabla
de funciones de la figura 7-64(c) a este registro de desplazamiento también se le
pueden cargar datos en paralelo. Si SH/LD  1 la función del registro será despla-
zamiento en serie, mientras que un nivel BAJO indicará datos de carga en paralelo
a través de las entradas A – H. Las funciones síncronas de desplazamiento en serie
y carga en paralelo pueden inhibirse (deshabilitarse) mediante la aplicación de un
nivel ALTO a la entrada de control CLK INH. EL registro también tiene una entrada
borrar asíncrona (CLR) activa en BAJO.
A menudo un registro de desplazamiento se utiliza como una forma de retrasar una
señal digital, con base en cierto número de ciclos de reloj. La señal digital se aplica
a la entrada en serie del registro de desplazamiento y se desplaza a través de éste
mediante pulsos sucesivos de reloj hasta que llega al final del registro de despla-
zamiento, en donde aparece como la señal de salida. Este método para retrasar el
efecto de una señal digital es común en el campo de las comunicaciones digitales.
Por ejemplo, la señal digital podría ser la versión digitalizada de una señal de audio
que debe retrasarse antes de transmitirla. Las formas de onda de entrada que se
muestran en la figura 7-65 se aplican a un 74HC166. Determine la forma de onda
de salida resultante.
Solución
QH empieza en nivel BAJO, ya que al principio todos los flip-flops se borran median-
te el nivel BAJO que se aplica a la entrada CLR asíncrona, en el comienzo del
diagrama de sincronización.
SECCIÓN 7-17/ENTRADA EN SERIE/SALIDA EN SERIE: 74ALS166/74HC166 439
440 CAPÍTULO 7/CONTADORES Y REGISTROS
(a)
CLK
INH
SER
Q
H
SH/LD
CLR
CLK
(b)
(c)
CLK
CLK
INH
SH/LD
SER
QH
QH
74HC166
SH/LD
CLR
CLK
CLK
CLK
INH
CLK
INH
SER
SER
INTERNAS
SALIDAS
ENTRADAS
Q
A
Q
B
Q
H
A
.
.
.
H
SH/LD
CLR
CLR
L
H
H
H
H
H
X
X
L
H
H
X
X
L
L
L
L
H
X
X
X
H
L
X
L
Q
A0
a
H
L
Q
A0
L
Q
B0
b
Q
An
Q
An
Q
B0
L
Q
H0
h
Q
Gn
Q
Gn
Q
H0
X
X
a
.
.
.
h
X
X
X
X
L
↑
↑
↑
↑
A
B
C
D
E
F
G
H
A
B
C
D
E
F
G
H
R
D
C
A
B
C
D
E
F
G
H
R
D
C
R
D
C
R
D
C
R
D
C
R
D
C
R
D
C
R
D
C
EN
PARALELO
FIGURA
7-64
(a)
Diagrama
del
circuito
del
74HC166;
(b)
símbolo
lógico;
(c)
tabla
de
funciones.
CLK
CLK INH
SH/LD
SER QH
QH
74HC166
CLR
CLK
0
SER
1
CLR
A B C D E F G H
0 0 0 0 0 0 0 0
CLK
SER
QH
CLR
t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15
FIGURA 7-65 Ejemplo 7-18.
EJEMPLO 7-19
En t1 el registro de desplazamiento recibirá como entrada el bit que se está apli-
cando a SER en esos momentos. Éste se almacenará en QA. En t2 el primer bit se
desplazará a QB y se almacenará el segundo bit de SER en QA. En t3 el primer bit
se desplazará ahora a QC y el tercer bit de SER se almacenará en QA. Por último, el
primer bit de entrada de datos aparecerá en la salida QH, en t8. Cada bit de entrada
sucesivo en SER llegará a QH, retrasado por ocho ciclos de reloj.
7-18 ENTRADA EN PARALELO/SALIDA EN SERIE:
74ALS165/74HC165
La figura 7-66(a) muestra el símbolo lógico para el 74HC165. Este CI es un registro de
ocho bits, tipo entrada en paralelo/salida en serie. En realidad tiene una entrada
de datos en serie a través de DS y una entrada de datos síncrona en paralelo a tra-
vés de P0 – P7. El registro contiene ocho FFS (Q0 a Q7) conectados en forma interna
como un registro de desplazamiento, pero las únicas salidas accesibles de los FFs
son Q7 y Q7. CP es la entrada de reloj que se utiliza para la operación de desplaza-
miento. La entrada de inhibición de reloj CP INH se utiliza para inhibir el efecto de
la entrada CP. La entrada de desplazamiento/carga, SH/LD, controla qué operación
se está llevando a cabo: desplazamiento o carga en paralelo. La tabla de funciones
en la figura 7-66(b) muestra cómo las diversas combinaciones de entrada determi-
nan cuál operación se está realizando, en caso de haberla. La carga en paralelo es
asíncrona y el desplazamiento en serie es síncrono. La función de desplazamiento
en serie siempre será síncrona, ya que el reloj necesita asegurar que los datos de
entrada se desplacen sólo un bit a la vez, con cada flanco de reloj apropiado.
Examine la tabla de funciones del 74HC165 y determine: (a) las condiciones nece-
sarias para cargar el registro con datos en paralelo; (b) las condiciones necesarias
para la operación de desplazamiento.
SECCIÓN 7-18/ENTRADA EN PARALELO/SALIDA EN SERIE: 74ALS165/74HC165 441
442 CAPÍTULO 7/CONTADORES Y REGISTROS
FIGURA 7-66
(a) Símbolo lógico para
el registro 74HC165 tipo
entrada en paralelo/
salida en serie; (b) tabla
de funciones.
74HC165
Q7
DS
P7
P6
P5
P4
P3
P2
P1
P0
CP
CP INH
SH/LD
Q7
(a)
(b)
SH/LD
L
H
H
H
H
Operación
Carga en paralelo
Sin cambio
Sin cambio
Desplazamiento
Desplazamiento
CP
X
H
X
L
CP INH
X
X
H
L
Entradas
H = nivel alto
L = nivel bajo
X = no importa
= PGT
Tabla de funciones
EJEMPLO 7-20
Solución
(a) La primera entrada en la tabla muestra que la entrada SH/LD tiene que estar
en BAJO para la operación de carga en paralelo. Cuando esta entrada está en
BAJO, los datos presentes en las entradas P se cargan en forma asíncrona en los
FFs del registro, sin importar las entradas CP y CP INH. Desde luego que sólo
las salidas del último FF están disponibles desde el exterior.
(b) La operación de desplazamiento no puede llevarse a cabo sino hasta que la
entrada SH/LD esté en ALTO y se produzca una PGT en CP mientras que CP
INH esté en BAJO [vea la cuarta entrada de la tabla en la figura 7-66(b)]. Un
nivel ALTO en CP INH inhibirá el efecto de cualquier pulso de reloj. Observe
que pueden invertirse los papeles de las entradas CP y CP INH según lo indica
la última entrada en la tabla, ya que dentro del CI se aplica una operación OR
entre estas dos señales.
Determine la señal de entrada en Q7 si conectamos un 74HC165 con DS  0 y CPINH
 0; después aplique las formas de onda de entrada que se muestran en la figura
7-67. P0  P7 representan los datos paralelos en P0P1P2P3P4P5P6P7.
Solución
Hemos dibujado el diagrama de sincronización para los ocho FFs, de manera que
se pueda rastrear su contenido en el tiempo, aún y cuando sólo Q7 estará accesible.
La carga en paralelo es síncrona y ocurrirá tan pronto como SH/LD cambie a BAJO.
Después de que SH/LD regrese al nivel ALTO, los datos almacenados en el registro
se desplazarán un FF a la derecha (hacia Q7) con cada PGT en CP.
FIGURA 7-67 Ejemplo 7-20.
0101 0011 1001 1010
CP
__
SH/LD
(Q0)
(Q1)
(Q2)
(Q3)
(Q4)
(Q5)
(Q6)
Q7
P0 - P7
Registro de
desplazamiento
de 8 bits 74ALS164
MR
(b)
A
B
CP
74ALS164
(a)
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
MR
A
B
CP

Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
D Q
CP
CD
D Q
CP
CD
D Q
CP
CD
D Q
CP
CD
D Q
CP
CD
D Q
CP
CD
D Q
CP
CD
D Q
CP
CD
FIGURA 7-68 (a) Diagrama lógico para el 74ALS164; (b) símbolo lógico.
7-19 ENTRADA EN SERIE/SALIDA EN PARALELO:
74ALS164/74HC164
La figura 7-68(a) muestra el diagrama lógico para el 74ALS164. Es un registro de
desplazamiento de ocho bits tipo entrada en serie/salida en paralelo, en el cual la
salida de cada FF es accesible desde el exterior. En vez de una sola entrada en serie,
una compuerta AND combina las entradas A y B para producir la entrada serial
para el flip-flop Q0.
SECCIÓN 7-19/ENTRADA EN SERIE/SALIDA EN PARALELO: 74ALS164/74HC164 443
444 CAPÍTULO 7/CONTADORES Y REGISTROS
EJEMPLO 7-21
La operación de desplazamiento ocurre en las PGTs de la entrada de reloj CP.
La entrada MR proporciona el restablecimiento asíncrono de todos los FFs, para
que queden en nivel BAJO.
La figura 7-68(b) muestra el símbolo lógico para el 74ALS164. Observe que se
utiliza el símbolo  dentro del bloque para indicar que se aplica una operación
AND entre las entradas A y B dentro del CI, y que el resultado se aplica a la entrada
D de Q0.
Suponga que el contenido inicial del registro 74ALS164 en la figura 7-69(a) es
00000000. Determine la secuencia de estados a medida que se aplican pulsos de
reloj.
Solución
La figura 7-69(b) muestra la secuencia correcta. Cuando A  B  1 la entrada en
serie es 1, por lo que se desplazarán 1s en el registro durante cada PGT de CP.
Debido a que al principio Q7 está en 0, la entrada MR está inactiva.
En el octavo pulso, el registro trata de cambiar al estado 11111111 cuando el
1 de Q6 se desplaza hacia Q7. Este estado ocurre sólo en forma momentánea debido
a que Q7  1 produce un nivel BAJO en MR, con lo cual se restablece de inmediato el
registro de vuelta a 00000000. Después se repite la secuencia en los siguientes ocho
pulsos de reloj.
A continuación se muestra una lista de algunos otros CIs de registro que son
variaciones de los que ya presentamos antes:
■ 74194/ALS194/HC194. Este CI es un registro de desplazamiento universal bidirec-
cional de cuatro bits, el cual puede realizar las operaciones de desplazamiento a
la izquierda, desplazamiento a la derecha, entrada en paralelo y salida en para-
lelo. Estas operaciones se seleccionan mediante un código de selección de modo
de dos bits, el cual se aplica en forma de entradas al dispositivo. (El problema
7-71 le dará la oportunidad de averiguar más acerca de este versátil CI).
■ 74373/ALS373/HC373/HCT373. Este CI es un registro de entrada en paralelo/
salida en paralelo de ocho bits (octal), el cual contiene ocho circuitos de reten-
ción (latches) tipo D con salidas de tercer estado (triestado). Una salida de tercer
estado es un tipo especial de salida que permite enlazar salidas de dispositivos
en forma segura. En el siguiente capítulo veremos las características de los dis-
positivos de tercer estado, tales como el 74373.
■ 74374/ALS374/HC374/HCT374. Este CI es un registro de entrada en paralelo/
salida en paralelo de ocho bits (octal), el cual contiene ocho flip-flops D dispa-
rados por flanco, con salidas triestado.
(a)
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
MR
CP
A
B
1
1 74ALS164

Q7
0
0
0
0
0
0
0
0
1
Q6
0
0
0
0
0
0
0
1
1
Q5
0
0
0
0
0
0
1
1
1
Q4
0
0
0
0
0
1
1
1
1
Q3
0
0
0
0
1
1
1
1
1
Q2
0
0
0
1
1
1
1
1
1
Q1
0
0
1
1
1
1
1
1
1
Q0
0
1
1
1
1
1
1
1
1
0
1
2
3
4
5
6
7
8
Número de
pulso
de entrada
Estado
temporal
(b)
Se recicla
FIGURA 7-69 Ejemplo 7-21.
PREGUNTAS DE REPASO
Los registros de CI que presentamos aquí son representativos de los diversos
tipos que están disponibles en forma comercial. Aunque hay muchas variaciones
de estos registros básicos, en este momento usted podrá entender con facilidad la
mayoría de ellos, mediante la consulta de las hojas técnicas proporcionadas por los
fabricantes.
En los problemas al final del capítulo y en el material que cubriremos en capí-
tulos subsiguientes presentaremos varias aplicaciones de registros.
1. ¿En qué tipo de registro se puede cargar un número binario completo y después
desplazarlo a la salida un bit a la vez?
2. Verdadero o falso: un registro de entrada en serie/salida en paralelo puede mos-
trar todos sus bits al mismo tiempo.
3. ¿En qué tipo de registro se pueden introducir datos sólo un bit a la vez y en el
que todos los bits de datos pueden estar disponibles como salida?
4. ¿En qué tipo de registro podemos almacenar datos un bit a la vez y tener acceso
a sólo un bit de salida a la vez?
5. ¿Qué diferencia hay entre la entrada de datos en paralelo del 74165 y del
74174?
6. ¿Cómo funciona la entrada CP INH del 74ALS165?
7-20 CONTADORES DE REGISTRO DE DESPLAZAMIENTO
En la sección 5-18 vimos cómo conectar FFs en un arreglo de registro de despla-
zamiento para transferir datos de izquierda a derecha o viceversa, un bit a la vez
(en serie). Los contadores de registro de desplazamiento utilizan retroalimentación,
lo cual significa que la salida del último FF en el registro se conecta de regreso al
primer FF.
Contador de anillo
El contador de registro de desplazamiento más sencillo es un registro de desplaza-
miento circular, éste es conectado de tal forma que el último FF desplaza su valor
hacia el primer FF. La figura 7-70 muestra este arreglo, en el cual se utilizan FFs
tipo D (también pueden utilizarse flip-flops J-K). Los FFs se conectan de tal forma
que la información se desplaza de izquierda a derecha y de regreso desde Q0 hasta
Q3. En la mayoría de los casos sólo hay un 1 en el registro, el cual se pone a circular
alrededor del registro mientras se aplican pulsos de reloj. Por esta razón se le cono-
ce como registro de anillo.
Las formas de onda, la tabla de secuencias y el diagrama de estados de la figu-
ra 7-70 muestran los diversos estados de los FFs a medida que se aplican pulsos;
aquí se supone un estado inicial de Q3  1 y Q2  Q1  Q0  0. Después del primer
pulso el 1 se desplaza de Q3 a Q2, de forma tal que el contador se encuentra en
el estado 0100. El segundo pulso produce el estado 0010 y el tercer pulso produce el
estado 0001. En el cuarto pulso de reloj, el 1 de Q0 se transfiere a Q3 para producir
el estado 1000 que es, desde luego, el estado inicial. Los siguientes pulsos hacen que
se repita la secuencia.
Este contador funciona como un contador MOD-4 debido a que tiene cuatro
estados distintos antes de que se repita la secuencia. Aunque este circuito no pro-
gresa por la secuencia de conteo binaria normal, de todas formas se considera un
contador ya que cada conteo corresponde a un conjunto único de estados de los
FFs. Observe que cada una de las formas de onda de salida de los FFs tiene una
frecuencia igual a un cuarto de la frecuencia de reloj, debido a que éste es un con-
tador de anillo MOD-4.
SECCIÓN 7-20/CONTADORES DE REGISTRO DE DESPLAZAMIENTO 445
446 CAPÍTULO 7/CONTADORES Y REGISTROS
1000
0100
0010
0001
(d)
Q3
1
0
0
0
1
0
0
0
.
.
Q2
0
1
0
0
0
1
0
0
.
.
Q1
0
0
1
0
0
0
1
0
.
.
Q0
0
0
0
1
0
0
0
1
.
.
Pulso de
RELOJ
0
1
2
3
4
5
6
7
.
.
(c)
CLK
Q2
Q2
D
CLK
Q1
Q1
D
CLK
Q0
Q0
D
RELOJ
CLK
Q3
Q3
D
(a)
(b)
1 2 3 4 5 6 7 8
RELOJ
Q3
Q2
Q1
Q0
FIGURA 7-70 (a) Contador de anillo de cuatro bits; (b) formas de onda; (c) tabla de
secuencia; (d) diagrama de estado.
Pueden construirse contadores de anillo para cualquier número MOD que se
desee; un contador de anillo MOD-N utiliza N flip-flops conectados en el arreglo
que aparece en la figura 7-70.
En general, un contador de anillo requiere más FFs que un contador binario
para el mismo número MOD; por ejemplo, un contador de anillo MOD-8 requiere
ocho FFs, mientras que un contador binario MOD-8 sólo requiere tres.
A pesar del hecho de que es menos eficiente en el uso de FFs, un contador de
anillo sigue siendo útil debido a que puede decodificarse sin el uso de compuertas
de decodificación. La señal de decodificación para cada estado se obtiene en la salida de
su FF correspondiente. Compare las formas de onda de los FFs del contador de anillo
con las formas de onda de decodificación en la figura 7-20. En algunos casos, un con-
tador de anillo podría ser mejor elección que un contador binario con sus compuertas
de decodificación asociadas. En especial esto es útil en aplicaciones en donde se uti-
liza el contador para controlar la secuencia de operaciones de un sistema.
+VCC
1k
1000 pF
74ALS14
A PRE de Q3 y CLR de
Q2, Q1, y Q0 de la figura 7-70
2
1
FIGURA 7-71 Circuito
para asegurar que el
contador de anillo de la
figura 7-70 inicie en el
estado 1000 al momento
del encendido.
Inicio de un contador de anillo
Para operar en forma apropiada, un contador de anillo debe comenzar con sólo un
FF en el estado 1 y todos los demás en el estado 0. Como los estados iniciales de los FFs
serán impredecibles al momento de encenderlos, el contador debe prestablecerse
en el estado inicial requerido antes de aplicar pulsos de reloj. Una manera de hacer
esto es aplicar un pulso momentáneo a la entrada PRE asíncrona de uno de los
FFs (por ejemplo, Q3 en la figura 7-70) y a la entrada CLR de todos los demás FFs.
La figura 7-71 muestra otro método. Al momento del encendido, el capacitor se car-
gará lentamente hacia VCC. La salida del INVERSOR disparador de Schmitt 1
permanecerá en ALTO y la salida del INVERSOR 2 permanecerá en BAJO hasta
que el voltaje del capacitor se exceda del voltaje de umbral con tendencia positiva
(VT) de la entrada del INVERSOR 1 (un valor aproximado de 1.7 V). Con esto se
retendrá en el estado BAJO las entradas PRE de Q3 y CLR de Q2, Q1 y Q0 el tiempo
suficiente durante el encendido como para asegurar que el contador empiece en
1000.
Contador Johnson
El contador de anillo básico puede modificarse un poco para producir otro tipo de
contador de registro de desplazamiento, el cual tendrá propiedades un poco dis-
tintas. El contador Johnson o de anillo torcido se construye en forma idéntica a un
contador de anillo normal, sólo que la salida invertida del último FF se conecta a
la entrada del primer FF. En la figura 7-72 se muestra un contador Johnson de tres
bits. Observe que la salida Q0 se conecta de regreso a la entrada D de Q2, lo cual
significa que el inverso del nivel almacenado en Q0 se transferirá a Q2 en el pulso
de reloj.
Es fácil analizar la operación del contador Johnson si tenemos en cuenta que en
cada transición positiva del pulso de reloj el nivel en Q2 se desplaza hacia Q1, el nivel
en Q1 se desplaza hacia Q0 y el inverso del nivel en Q0 se desplaza hacia Q2. Si
utilizamos estas ideas y suponemos que todos los FFs están al principio en 0, se pue-
den generar las formas de onda, la tabla de secuencias y el diagrama de estados de
la figura 7-72.
El análisis de las formas de onda y la tabla de secuencias nos revela los siguien-
tes puntos importantes:
1. Este contador tiene seis estados distintos (000, 100, 110, 111, 011 y 001) antes
de repetir la secuencia. Por ende, es un contador Johnson MOD-6. Observe que
no cuenta con una secuencia binaria normal.
2. La forma de onda de cada FF es una onda cuadrada (ciclo de trabajo del 50
por ciento) que tiene una frecuencia igual a un sexto de la frecuencia del reloj.
Además, la forma de onda de cada FF se desplaza por un periodo de reloj, con
respecto a las demás.
El número MOD de un contador Johnson siempre será igual al doble del núme-
ro de FFs. Por ejemplo, si conectamos cinco FFs en el arreglo de la figura 7-72 el
SECCIÓN 7-20/CONTADORES DE REGISTRO DE DESPLAZAMIENTO 447
448 CAPÍTULO 7/CONTADORES Y REGISTROS
FIGURA 7-72
(a) Contador Johnson
MOD-6; (b) forma
de onda; (c) tabla de
secuencias;
(d) diagrama de estados.
Q2
0
1
1
1
0
0
0
1
1
.
.
.
Q1
0
0
1
1
1
0
0
0
1
.
.
.
Q0
0
0
0
1
1
1
0
0
0
.
.
.
Pulso de
RELOJ
0
1
2
3
4
5
6
7
8
.
.
.
(c)
000
001 100
011 110
111
(d)
CLK
Q2
Q2
D
CLK
Q1
Q1
D
CLK
Q0
Q0
D
RELOJ
1 2 3 4 5 6 7
(a)
RELOJ
(b)
Q2
Q1
Q0
resultado será un contador Johnson MOD-10, en donde la forma de onda de salida
de cada FF es una onda cuadrada a un décimo de la frecuencia del reloj. Por ende,
es posible construir un contador MOD-N (en donde N es un número par) mediante
la conexión de N/2 flip-flops en un arreglo de contadores Johnson.
Decodificación de un contador Johnson
Para un número MOD dado, un contador Johnson sólo requiere la mitad del núme-
ro de FFs que requiere un contador de anillo. No obstante, un contador Johnson
requiere compuertas de decodificación, mientras que un contador de anillo no.
Al igual que el contador binario, el de Johnson utiliza una compuerta lógica para
decodificar en cada conteo, pero cada compuerta sólo requiere dos entradas, sin
importar el número de FFs en el contador. La figura 7-73 muestra las compuertas de
decodificación para los seis estados del contador Johnson de la figura 7-72.
FIGURA 7-73 Lógica de decodificación para un contador Johnson MOD-6.
Q2
Q2Q0
Q0
Q2
Q2Q1
Q1
Q1
Q1Q0
Q0
Q2
Q2Q0
Q0
Q2
Q2Q1
Q1
Q1
Q1Q0
Q0
Q2
0
1
1
1
0
0
Q1
0
0
1
1
1
0
Q0
0
0
0
1
1
1
Compuerta
activa
0
1
2
3
4
5
0
1
2
3
4
5
PREGUNTAS DE REPASO
Observe que cada compuerta de decodificación sólo tiene dos entradas aún y
cuando hay tres FFs en el contador, porque para cada conteo dos de los tres FFs se
encuentran en una combinación única de estados. Por ejemplo, la combinación Q2 
Q0  0 sólo ocurre una vez en la secuencia de conteo, en la cuenta de 0. Por lo tanto,
puede utilizarse la compuerta AND 0 con las entradas Q2 y Q0 para decodificar en
este conteo. Esta misma característica la comparten todos los demás estados en la
secuencia, como podrá verificar el lector. De hecho, para un contador Johnson de
cualquier tamaño las compuertas de decodificación sólo tendrán dos entradas.
Los contadores Johnson representan un punto intermedio entre los contadores
de anillo y los contadores binarios. Un contador Johnson requiere menos FFs que
un contador de anillo, pero, por lo general, requiere más que un contador binario;
tiene más circuitos de decodificación que un contador de anillo pero menos que un
contador binario. Por ende, algunas veces representa una buena opción para ciertas
aplicaciones.
Contadores de registro de desplazamiento de CI
Hay muy pocos contadores de anillo o Johnson disponibles como CIs, debido a que
es muy fácil tomar un CI de registro de desplazamiento y cablearlo como un conta-
dor de anillo o como un Johnson. Algunos de los CIs de contador Johnson CMOS son
el 74HC4017 y el 74HC4022, éstos incluyen circuitos de decodificación completos.
1. ¿Cuál contador de registro de desplazamiento requiere la mayor cantidad de
FFs para un número MOD dado?
2. ¿Cuál contador de registro de desplazamiento requiere la mayor cantidad de
circuitos de decodificación?
3. ¿Cómo puede convertirse un contador de anillo en un contador Johnson?
4. Verdadero o falso:
(a) Las salidas de un contador de anillo son siempre ondas cuadradas.
(b) Los circuitos de decodificación para un contador Johnson son más simples
que los de un contador binario.
(c) Los contadores de anillo y Johnson son contadores síncronos.
5. ¿Cuántos FFs se necesitan en un contador de anillo MOD-16? ¿Cuántos se nece-
sitan en un contador Johnson MOD-16?
SECCIÓN 7-20/CONTADORES DE REGISTRO DE DESPLAZAMIENTO 449
450 CAPÍTULO 7/CONTADORES Y REGISTROS
FIGURA 7-74 Ejemplo
7-22.
74ALS161
74ALS00
(a)
QA
QB
QC
QD
1
CLK
15
11
12
13
14
6
9
1
7
10
2
5
4
3
0
1
3
2
CLK
ENT
ENP
CLR
LOAD
D
A
B
C
QD
QA
QB
QC
RCO
(c)
CLK
QB
QC
QA
QD
QD QC QB QA
(b)
0001
0011 0010
0000
EJEMPLO 7-22
7-21 DIAGNÓSTICO DE FALLAS
Los flip-flops, los contadores y los registros son los principales componentes en los
sistemas lógicos secuenciales. Debido a sus dispositivos de almacenamiento, un sistema
lógico secuencial tiene la característica de que sus salidas y la secuencia de las ope-
raciones dependen tanto de las entradas presentes como de las que se produjeron
antes. Aún y cuando los sistemas lógicos secuenciales son, por lo general, más com-
plejos que los combinacionales, los procedimientos esenciales para el diagnóstico
de fallas se aplican con la misma eficacia en ambos tipos de sistemas. Los sistemas
secuenciales sufren de los mismos tipos de fallas (circuitos abiertos, cortos, fallas
internas en los CIs, etcétera) que los combinacionales.
Muchos de los mismos pasos que se utilizan para aislar fallas en un sistema
combinacional pueden aplicarse a los sistemas secuenciales. Una de las técnicas
de diagnóstico de fallas más efectiva comienza desde que el técnico de diagnósti-
co de fallas observa la operación del sistema y, mediante el razonamiento analítico,
determina las posibles causas de la falla en el sistema. Después el técnico utiliza
los instrumentos de prueba disponibles para aislar la falla exacta. Los siguientes
ejemplos demostrarán los tipos de razonamiento analítico que deben ser el paso
inicial al diagnosticar fallas en los sistemas secuenciales. Después de estudiar estos
ejemplos, usted deberá estar preparado para enfrentar los problemas de diagnósti-
co de fallas al final del capítulo.
La figura 7-74(a) muestra un 74ALS161 cableado como un contador MOD-12, pero
produce la secuencia de conteo que se muestra en la figura 7-74(b). Determine la
causa del comportamiento incorrecto del circuito.
Solución
Las salidas QB y QA parecen operar en forma correcta, pero QC y QD permanecen
en BAJO. Nuestra primera opción para la falla es que QC está en corto con tierra,
pero al comprobar con un óhmetro no se confirma esto. El 74ALS161 podría tener
una falla interna que evite que cuente más allá de 0011.Tratamos de extraer el chip
NAND 7400 de su zócalo y ponemos en corto la terminal CLR con un nivel ALTO.
C
D
CLK
DNUP
GN
LDN
B
A
QC
RCON
MXMN
QD
QB
QA
74191
CONTADOR
f0 q0
q0
q1
q2
q3
q4
q5
q6
q7
q1
q2
q3
f1
f2
f3
C
D
CLK
DNUP
NAND2
BAND8
VCC
11
11
GN
LDN
B
A
QC
RCON
MXMN
QD
QB
QA
74191
SALIDA
GND
15
ENTRADA
VCC
ENTRADA
VCC
f[7..0]
3
f[7..0]
ent
8
2
4
1
q[7..0]
q[7..0]
SALIDA
NOT
13
5
12
sal
CONTADOR
f4 q4
q5
q6
q7
f5
f6
f7
VCC
16
FIGURA 7-75 Ejemplo 7-23.
EJEMPLO 7-23
Ahora el contador cuenta en una secuencia MOD-16 regular, por lo que al menos
las salidas del contador parecen estar bien. A continuación decidimos analizar la
terminal CLR volviendo a conectar la compuerta NAND. Al utilizar una sonda lógi-
ca con su “captura de pulsos” encendida, descubrimos que la terminal CLR está
recibiendo pulsos. Al conectar un osciloscopio a las salidas vemos que el contador
produce las formas de onda que se muestran en la figura 7-74(c). Se observa una
deformación en QC cuando el contador debería pasar al estado 0100. Eso indica
que 0100 es un estado transitorio, cuando en realidad el estado transitorio debería
ser 1100. Ahora sospechamos de la conexión entre QD y la compuerta NAND, por lo
que utilizamos la sonda lógica para revisar la terminal 2. En esta terminal no hay
ninguna señal lógica, lo cual nos lleva a la conclusión de que la falla es debido a un
circuito abierto entre la salida QD y la terminal 2 en la compuerta NAND. La entra-
da de la compuerta NAND está flotando en ALTO, lo cual provoca que el circuito
detecte el estado 0100 en vez del 1100, como debería ser.
Un técnico recibe una “orden de reparación” para un tablero de circuitos, en la
cual se indica que el divisor de frecuencia variable opera “algunas veces”. Suena
como uno de los temidos problemas en los que la falla es intermitente; a menudo
uno de lo problemas más difíciles de resolver. Su primer pensamiento es regresar el
tablero con la nota “¡Utilícelo sólo cuando opere en forma correcta!”, pero decide
investigar más, ya que se siente capaz de enfrentar un buen reto. En la figura 7-75 se
muestra el diagrama esquemático para el bloque del circuito. El factor de división
deseado se aplica a la entrada f[7..0] en binario. El contador de ocho bits cuenta en
SECCIÓN 7-21/DIAGNÓSTICO DE FALLAS 451
452 CAPÍTULO 7/CONTADORES Y REGISTROS
forma descendente a partir de este número hasta que llega a cero y después realiza
una carga asíncrona de f[ ] otra vez, convirtiendo al cero en un estado transitorio.
El módulo resultante será igual al valor en f[ ]. Para obtener la señal de frecuencia
de salida se decodifica el estado 00000001, con lo cual la frecuencia de sal se hace
igual a la frecuencia de ent, dividida entre el valor binario f[ ]. En la aplicación, la
frecuencia de ent es 100 kHz. Si se cambia f[ ] se producirá una nueva frecuencia
de salida.
Solución
El técnico decide que necesita obtener algunos resultados de prueba para anali-
zarlos. Elije algunos factores de división sencillos para aplicarlos a f y registra los
resultados que se muestran en la tabla 7-9.
El técnico observa que el circuito produce resultados correctos en algunos casos
de prueba, pero produce resultados incorrectos en otros. El problema no parece ser
intermitente después de todo, sino que parece depender del valor para f. El técnico
decide calcular la relación entre las frecuencias de entrada y de salida para las tres
pruebas que fallaron y obtiene lo siguiente:
100 kHz/398.4 Hz  251
100 kHz/1041.7 Hz  96
100 kHz/9090.9 Hz  11
Cada falla parece un factor de división que es cuatro unidades menor que el valor
que se aplicó a la entrada. Después de analizar otra vez la representación binaria
para f, el técnico observa que todas las fallas ocurrieron cuando f2  1. Sin duda, el
peso para ese bit es cuatro. ¡Eureka! Ese bit no parece estar funcionando; es hora de
hacer una prueba con una sonda lógica en la terminal f2. Asimismo, la sonda lógica
indica que la terminal está en BAJO sin importar el valor para f2.
7-22 REGISTROS EN HDL
En las secciones 7-15 a 7-19 describimos con detalle las diversas opciones de la
transferencia de datos en serie y en paralelo dentro de los registros; además descri-
bimos algunos ejemplos de CIs que realizan estas operaciones. La belleza de utilizar
HDL para describir un registro está en el hecho de que a un circuito se le puede dar
cualquiera de las opciones y se le pueden asignar tantos bits como sean necesarios
con sólo cambiar unas cuantas palabras.
f[ ] (decimal) f[ ] (binario) fsal medida ¿Correcto?
255 11111111 398.4 Hz
240 11110000 416.7 Hz ✓
200 11001000 500.0 Hz ✓
100 01100100 1041.7 Hz
50 00110010 2000.0 Hz ✓
25 00011001 4000.0 Hz ✓
15 00001111 9090.9 Hz
TABLA 7-9
Q3 Q2 Q1 Q0
Datos nuevos que
se van a cargar
Q3 Q2 Q1 Q0
Q3 Q2 Q1 Q0
Ser
ENT
Q3 Q2 Q1 Q0
Q3 Q2 Q1 Q0
Q3 Q2 Q1 Q0
Q3 Q2 Q1 Q0 Ser
IN
PRESENTE
SIGUIENTE
PRESENTE
SIGUIENTE
(a) Carga en paralelo (b) Desplazamiento a la derecha
(c) Desplazamiento a la izquierda (d) Retención de datos
FIGURA 7-76
Transferencias
de datos que se
realizan en registros de
desplazamiento:
(a) carga en paralelo;
(b) desplazamiento
a la derecha;
(c) desplazamiento a la
izquierda; (d) retención
de datos.
Las técnicas de HDL utilizan arreglos de bits para describir los datos de un
registro y transferir esos datos en formato en paralelo o en serie. Para comprender
cómo se desplazan los datos en HDL considere los diagramas de la figura 7-76,
en donde se muestran cuatro flip-flops que realizan operaciones de transferencia
de carga en paralelo, desplazamiento a la derecha, desplazamiento a la izquierda
y retención de datos. Para todos estos diagramas los bits se transfieren en forma
síncrona, lo cual significa que todos se desplazan en forma simultánea en un solo
flanco de reloj. En la figura 7-76(a) los datos que se van a cargar en paralelo en el
registro se presentan en las entradas D, y en el siguiente pulso de reloj se trans-
ferirán a las salidas q. Desplazar los datos a la derecha significa que cada bit se
transfiere hacia la posición del bit que está a su derecha inmediata, mientras que
se transfiere un nuevo bit de entrada en el extremo izquierda y se pierde el último
bit en el extremo derecho. Esta situación se ilustra en la figura 7-76(b). Observe que
el conjunto de datos que queremos en el estado SIGUIENTE está compuesto de la
nueva entrada en serie y tres de los cuatro bits en el arreglo del estado PRESENTE.
Estos datos sólo necesitan desplazarse y sobrescribir los cuatro bits de datos del
registro. La misma operación se produce en la figura 7-76(c), pero los datos se des-
plazan a la izquierda. La clave para desplazar el contenido del registro a la derecha
o a la izquierda es agrupar los tres bits de datos apropiados del estado PRESENTE
en orden correcto con el bit de entrada en serie, de manera que estos cuatro bits
puedan cargarse en paralelo en el registro. Puede utilizarse la concatenación (agru-
pamiento en una secuencia específica) del conjunto deseado de bits de datos para
describir el movimiento de datos necesario para el desplazamiento en serie en
cualquier dirección. A la última posibilidad se le conoce como el modo de retención
de datos y se muestra en la figura 7-76(d). Ésta puede parecer innecesaria, ya que
los registros (flip-flops) retienen los datos por su propia naturaleza. No obstante,
debemos tener en cuenta lo que debe hacerse a un registro para que pueda rete-
ner su valor cuando recibe pulsos de reloj. Las salidas Q deben enlazarse con las
entradas D para cada flip-flop, de manera que los datos anteriores se recarguen en
cada pulso de reloj. Ahora analicemos algunos ejemplos de circuitos de registro de
desplazamiento en HDL.
REGISTRO SISO EN AHDL
La figura 7-77 lista un registro de cuatro bits, tipo entrada en serie/salida en serie
(SISO), en AHDL. En la línea 7 se crea una instancia de un arreglo de cuatro flip-
flops D y se obtiene la salida en serie a partir del último FF q0 (línea 10). Si el
control desplaza está en ALTO, serial_ent se desplazará hacia el registro y los demás
A
H
D
L
SECCIÓN 7-22/REGISTROS EN HDL 453
454 CAPÍTULO 7/CONTADORES Y REGISTROS
1 SUBDESIGN fig7_77
2 (
3 clk, desplaza, serial_ent :INPUT;
4 serial_sal :OUTPUT;
5 )
6 VARIABLE
7 q[3..0] :DFF;
8 BEGIN
9 q[ ].clk = clk; -- envía último bit del registro como salida
10 serial_sal = q0.q;
11 IF (desplaza == VCC) THEN
12 q[3..0].d = (serial_ent, q[3..1].q); -- concatena para el desplazamiento
13 ELSE
14 q[3..0].d = (q[3..0].q); -- retiene los datos
15 END IF;
16 END;
FIGURA 7-77 Registro de entrada en serie/salida en serie mediante el uso de AHDL.
bits se moverán a la derecha (líneas 11 a 15). Al concatenar serial_ent con los bits
de salida de los FFs q3, q2 y q1 en ese orden se crea el patrón de bits apropiado de
entrada de datos de desplazamiento a la derecha (línea 12). Si el control desplaza
está en BAJO, el registro retendrá los datos actuales (línea 14). En la figura 7-78 se
muestran los resultados de la simulación.
REGISTRO SISO ENVHDL
La figura 7-79 lista un registro tipo entrada en serie/salida en serie (SISO) de cuatro
bits en VHDL. En la línea 8 se crea un registro con la declaración de la variable q y
se obtiene la salida en serie mediante el último bit del registro o q(0) (línea 10). Si
el control desplaza está en ALTO, serial_ent se desplazará hacia el registro y los otros
bits se moverán a la derecha (líneas 12 a 14). Al concatenar serial_ent y los bits del
registro q(3), q(2) y q(1) en ese orden se crea el patrón apropiado de bits de entrada
de datos de desplazamiento a la derecha (línea 13). Si el control de desplazamiento
está en BAJO,VHDL supondrá que la variable se queda igual y, por lo tanto, reten-
drá los datos actuales. La figura 7-78 muestra los resultados de la simulación.
FIGURA 7-78 Simulación de un registro SISO.
clk 1
1
0
0
0
0
0
0
desplaza
serial_ent
q3.Q
q2.Q
q1.Q
q0.Q
serial_sal
5.0us 10.0us 15.0us 20.0us 25.0us 30.0us 35.0us 40.0us 45.us
V
H
D
L
FIGURA 7-80 Registro de entrada en paralelo/salida en serie mediante el uso de AHDL.
1 SUBDESIGN fig7_80
2 (
3 clk, desplaza, carga :INPUT;
4 datos[3..0] :INPUT;
5 serial_sal :OUTPUT;
6 )
7 VARIABLE
8 q[3..0] :DFF;
9 BEGIN
10 q[ ].clk = clk;
11 serial_sal = q0.q; -- envía último bit del registro como salida
12 IF (carga ==VCC) THEN q[3..0].d = datos[3..0]; -- carga en paralelo
13 ELSIF (desplaza == VCC) THEN q[3..0].d = (GND, q[3..1].q); -- desplaza
14 ELSE q[3..0].d = q[3..0].q; -- retiene
15 END IF;
16 END;
1 ENTITY fig7_79 IS
2 PORT ( clk, desplaza, serial_ent :IN BIT;
3 serial_sal :OUT BIT );
4 END fig7_79;
5 ARCHITECTURE vhdl OF fig7_79 IS
6 BEGIN
7 PROCESS (clk)
8 VARIABLE q :BIT_VECTOR (3 DOWNTO 0);
9 BEGIN
10 serial_sal = q(0); -- envía último bit del registro como salida
11 IF (clk’EVENT AND clk = ‘1’) THEN
12 IF (desplaza = ‘1’) THEN
13 q := (serial_ent  q(3 DOWNTO 1)); -- concatena para el desplazamiento
14 END IF; -- en caso contrario, retiene los datos
15 END IF;
16 END PROCESS;
17 END vhdl;
FIGURA 7-79 Registro de entrada en serie/salida en serie mediante el uso de VHDL.
REGISTRO PISO EN AHDL
La figura 7-80 lista un registro tipo entrada en paralelo/salida en serie (PISO) de
cuatro bits. En la línea 8 se crea el registro llamado q mediante el uso de cuatro FFs
D y en la línea 11 se describe la salida en serie de q0. El registro cuenta con contro-
les separados de carga (carga) en paralelo y desplazamiento (desplaza) en serie. En
las líneas 12 a 15 se definen las funciones del registro. Si carga está en ALTO, se car-
gará en forma síncrona la entrada externa datos[3..0]. Carga tiene prioridad y debe
estar en BAJO para desplazar en serie el contenido del registro en cada PGT de clk,
cuando desplaza está en ALTO. En la línea 13 se crea el patrón para desplazar datos
a la derecha mediante la concatenación. Observe que un nivel BAJO constante será
la entrada de datos en serie para una operación de desplazamiento. Si ni carga ni
desplaza están en ALTO, el registro retendrá el valor de datos actual (línea 14). La
figura 7-81 muestra los resultados de la simulación.
A
H
D
L
SECCIÓN 7-22/REGISTROS EN HDL 455
456 CAPÍTULO 7/CONTADORES Y REGISTROS
0 9 4 2 1 0 C 6 3 1 0 7 3 1 0 A 5 2 1 0
clk 1
0
0
B 1001 1001 1100 0111 1010
0
H0
carga
desplaza
datos[3..0]
serial_sal
q
10.0us 20.0us 30.0us 40.0us 50.0us 60.0us 70.0us 80.0us 90.0us
FIGURA 7-81 Simulación de un registro PISO.
EJEMPLO 7-24
REGISTRO PISO ENVHDL
La figura 7-82 lista un registro tipo entrada en paralelo/salida en serie (PISO) de
cuatro bits. En la línea 11 se crea el registro con la declaración de la variable q
y en la línea 13 se describe la salida en serie de q(0). El registro tiene controles
separados de carga (carga) y desplazamiento en serie (desplaza). En las líneas 14 a
18 se definen las funciones del registro. Si carga está en ALTO, la entrada externa
datos se cargará en forma síncrona. Carga tiene prioridad y debe estar en BAJO para
desplazar en serie el contenido del registro en cada PGT de clk cuando cambia está
en ALTO. En la línea 16 se crea el patrón para desplazar datos a la derecha median-
te la concatenación. Observe que la entrada de datos en serie será un nivel BAJO
constante para una operación de desplazamiento. Si ni carga ni desplaza están en
ALTO, el registro retendrá el valor actual de datos mediante la operación implícita
de VHDL. La figura 7-81 muestra los resultados de la simulación.
Suponga que deseamos diseñar un registro de desplazamiento de cuatro bits uni-
versal mediante HDL, el cual tenga cuatro modos síncronos de operación: Retener
datos, Desplazar a la izquierda, Desplazar a la derecha y Carga en paralelo. Dos bits
de entrada seleccionarán la operación que deba realizarse en cada flanco de subida
del reloj. Para implementar un registro de desplazamiento podemos utilizar código
V
H
D
L
1 ENTITY fig7_82 IS
2 PORT (
3 clk, desplaza, carga :IN BIT;
4 datos :IN BIT_VECTOR (3 DOWNTO 0);
5 serial_sal :OUT BIT
6 );
7 END fig7_82;
8 ARCHITECTURE vhdl OF fig7_82 IS
9 BEGIN
10 PROCESS (clk)
11 VARIABLE q :BIT_VECTOR (3 DOWNTO 0);
12 BEGIN
13 serial_sal = q(0); -- envía último bit del registro como salida
14 IF (clk’EVENT AND clk = ‘1’) THEN
15 IF (carga = ‘1’) THEN q := datos; -- carga en paralelo
16 ELSIF (desplaza = ‘1’) THEN q:= (‘0’  q[3 DOWNTO 1)); -- desplaza
17 ENDIF; -- en caso contrario retiene
18 END IF;
19 END PROCESS;
20 END vhdl;
FIGURA 7-82 Registro de entrada en paralelo/salida en serie mediante el uso de VHDL.
FIGURA 7-83 Registro de desplazamiento universal en AHDL.
1 SUBDESIGN fig7 83
2 (
3 reloj :INPUT;
4 dent[3..0] :INPUT; datos en paralelo de entrada
5 ser ent :INPUT; datos en serie de entrada, de izquierda o derecha
6 modo [1..0] :INPUT; Selección de MODO: 0  retención,
1  derecha, 2izquierda, 3carga
7 q[3..0] :OUTPUT;
8 )
9 VARIABLE
10 ff[3..0] :DFF; define el conjunto de registros
11 BEGIN
12 ff[].clk  reloj; reloj síncrono
13 CASE modo[] IS
14 WHEN 0  ff[].d  ff[].q; retiene desplazamiento
15 WHEN 1  ff[2..0].d  ff[3..1].q); desplazamiento a la derecha
16 ff[3].d  ser ent; nuevos datos provenientes
de la izquierda
17 WHEN 2  ff[3..1].d  ff[2..0].q; desplazamiento a la izquierda
18 ff[0].d  ser ent; nuevos datos provenientes
de la derecha
19 WHEN 3  ff[].d  dent[]; carga en paralelo
20 END CASE;
21 q[]  ff[]; actualiza las salidas
22 END;
estructural para describir una cadena de flip-flops. Para hacer que el registro de
desplazamiento sea eficiente y nos permita desplazar a la izquierda o a la derecha,
o realizar la carga en paralelo, este archivo se haría bastante largo y por ende difí-
cil de leer y comprender utilizando los métodos estructurales. Un enfoque mucho
más conveniente es utilizar los métodos más abstractos e intuitivos disponibles en
HDL para describir el circuito en forma concisa. Para ello debemos desarrollar una
estrategia para crear la acción de desplazamiento. El concepto es muy similar al
que se presenta en el ejemplo 7-16, en donde se cableó un chip de registro de flip-
flop D (74174) para formar un registro de desplazamiento. En vez de pensar en el
registro de desplazamiento como una cadena en serie de flip-flops, debemos consi-
derarlo como un registro en paralelo cuyo contenido se va a transferir en paralelo a
un conjunto de bits que está desplazado por una posición de un bit. La figura 7-76
demuestra el concepto de cada transferencia necesaria en este diseño.
Solución
Un primer paso muy razonable es definir una entrada de dos bits llamada modo, con
la cual podemos especificar el modo 0, 1, 2 o 3. El siguiente reto es decidir cómo
elegir entre las cuatro operaciones mediante el uso de HDL. Aquí pueden funcionar
varios métodos. Se eligió la estructura CASE debido a que nos permite elegir un
conjunto distinto de instrucciones en HDL para cada uno de todos los posibles valo-
res de modo. No hay prioridad asociada con la comprobación de la configuración
de los modos existentes o de los intervalos traslapados de números de modo, por
lo que no necesitamos las ventajas de la instrucción IF/ELSE. En las figuras 7-83 y
7-84 se muestran las soluciones en HDL. En cada una de las soluciones se definen
las mismas entradas y salidas: un reloj, cuatro bits de datos de carga en paralelo,
un bit individual para la entrada en serie al registro, dos bits para la selección del
modo y cuatro bits de salida.
SECCIÓN 7-22/REGISTROS EN HDL 457
458 CAPÍTULO 7/CONTADORES Y REGISTROS
1 ENTITY fig7_84 IS
2 PORT (
3 reloj :IN BIT;
4 dent :IN BIT_VECTOR (3 DOWNTO 0); -- datos en paralelo de entrada
5 ser_ent :IN BIT; -- datos en serie en Izq o Der
6 modo :IN INTEGER RANGE 0 TO 3; -- 0=retención 1=der 2=izq 3=carga
7 q :OUT BIT_VECTOR (3 DOWNTO 0));
8 END fig7_84;
9 ARCHITECTURE a OF fig7_84 IS
10 BEGIN
11 PROCESS (reloj) -- responde al reloj
12 VARIABLE ff :BIT_VECTOR (3 DOWNTO 0);
13 BEGIN
14 IF (reloj’EVENT AND reloj = ‘1’) THEN
15 CASE modo IS
16 WHEN 0 = ff := ff; -- retiene los datos
17 WHEN 1 = ff(2 DOWNTO 0) := ff(3 DOWNTO 1); -- desplaza a la derecha
18 ff(3) := ser_ent;
19 WHEN 2 = ff(3 DOWNTO 1) := ff(2 DOWNTO 0); -- desplaza a la izquierda
20 f(0) := ser_ent;
21 WHEN 3 = ff := dent; -- carga en paralelo
22 END CASE;
23 END IF;
24 q = ff; -- actualiza las salidas
25 END PROCESS;
26 END a;
FIGURA 7-84 Registro de desplazamiento universal mediante el uso de VHDL.
SOLUCIÓN EN AHDL
La solución en AHDL de la figura 7-83 utiliza un registro de flip-flops D, los cuales
se declaran mediante el nombre ff en la línea 10 para representar el estado actual
del registro. Debido a que todos los flip-flops necesitan recibir pulsos de reloj al
mismo tiempo (en forma síncrona), todas las entradas de reloj se asignan a reloj
en la línea 12. La instrucción CASE selecciona una configuración de transferencia
distinta para cada valor de las entradas modo. El modo 0 (retener datos) utiliza una
transferencia en paralelo directa del estado actual a las mismas posiciones de bit en
las entradas D, para producir el estado SIGUIENTE idéntico. El modo 1 (desplazar
a la derecha), que se describe en las líneas 15 y 16, transfiere los bits 3, 2 y 1 a las
posiciones de bit 2, 1 y 0, en forma respectiva, y carga el bit 3 de la entrada serial. El
modo 2 (desplazar a la izquierda) realiza una operación similar en el sentido opues-
to (vea las líneas 17 y 18). El modo 3 (carga en paralelo) transfiere el valor en las
entradas de datos en paralelo para que se conviertan en el estado SIGUIENTE del
registro. El código crea el circuito que selecciona una de estas operaciones lógicas
en el registro actual y los datos apropiados se transfieren a las terminales de salida en
el siguiente pulso de reloj. Este código se puede reducir si combinamos las líneas
15 y 16 en una sola instrucción que concatene ser_ent con los tres bits de datos y
los agrupe como un conjunto de cuatro bits. La instrucción que puede sustituir las
líneas 15 y 16 es:
WHEN 1  ff[ ].d  (ser ent, ff[3..1].q);
Las líneas 17 y 18 también pueden sustituirse por:
WHEN 2  ff[ ].d  (ff[2..0].q, ser ent);
A
H
D
L
PREGUNTAS DE REPASO
SOLUCIÓN ENVHDL
La solución en VHDL de la figura 7-84 define una variable interna por el nombre ff
en la línea 12, la cual representa el estado actual del registro. Debido a que todas
las operaciones de transferencia necesitan llevarse a cabo en respuesta a un flanco
de subida del reloj, se utiliza un bloque PROCESS en el cual se especifica reloj
en la lista de sensibilidad. La instrucción CASE selecciona una configuración de
transferencia distinta para cada valor de las entradas modo. El modo 0 (retener
datos) utiliza una transferencia en paralelo directa del estado actual a las mismas
posiciones de bit para producir el estado SIGUIENTE idéntico. El modo 1 (despla-
zar a la derecha) transfiere los bits 3, 2 y 1 a las posiciones de bit 2, 1 y 0, en forma
respectiva (línea 17) y carga el bit 3 de la entrada en serie (línea 18). El modo 2
(desplazar a la izquierda) realiza una operación similar en el sentido opuesto. El
modo 3 (carga en paralelo) transfiere el valor en las entradas de datos en paralelo
al estado SIGUIENTE del registro. Después de elegir una de estas operaciones en el
registro actual, los datos se transfieren a las terminales de salida en la línea 24. Este
código puede reducirse si combinamos las líneas 17 y 18 en una sola instrucción que
concatene ser_ent con los tres bits de datos y los agrupe como un conjunto de cuatro
bits. La instrucción que puede sustituir las líneas 17 y 18 es:
WHEN 1  ff : ser ent  ff(3 DOWNTO 1);
Las líneas 19 y 20 también pueden sustituirse por:
WHEN 2  ff : ff(2 DOWNTO 0)  ser ent;
1. Escriba una expresión en HDL para implementar un desplazamiento a la izquier-
da de un arreglo de ocho bits llamado reg[7..0] con la entrada en serie dat.
2. ¿Por qué es necesario recargar los datos actuales durante el modo de retención
de datos en un registro de desplazamiento?
7-23 CONTADORES DE ANILLO EN HDL
En la sección 7-20 utilizamos un registro de desplazamiento para crear un contador
que circula un solo nivel lógico activo a través de todos sus flip-flops. A este tipo de
registro se le conoce como contador de anillo. Una característica de los contadores
de anillo es que el módulo es igual al número de flip-flops en el registro y, por lo
tanto, siempre hay muchos estados sin usar e inválidos.Ya hemos visto las formas de
describir a los contadores mediante el uso de la instrucción CASE para especificar
las transiciones del estado PRESENTE y del estado SIGUIENTE. En esos ejemplos
nos hicimos cargo de los estados inválidos al incluirlos bajo “otros” (OTHERS).
Este método también funciona para los contadores de anillo. No obstante, en esta
sección veremos una manera más intuitiva para describir los contadores de despla-
zamiento.
Estos métodos utilizan las mismas técnicas descritas en la sección 7-22 para que
el registro se desplace una posición en cada pulso de reloj. La principal característi-
ca de este código es el método para completar el “anillo” al dividir la línea ser_ent
del registro de desplazamiento. Con un poco de planeación también deberíamos ser
capaces de asegurar que el contador llegue en algún momento a la secuencia desea-
da, sin importar en qué estado se encuentre al principio. Para este ejemplo recrea-
mos la operación del contador de anillo cuyo diagrama de estado se muestra en la
figura 7-70(d). Para poder hacer que este contador inicie en forma automática sin
utilizar entradas asíncronas, controlamos la línea ser_ent del registro de desplaza-
V
H
D
L
SECCIÓN 7-23/CONTADORES DE ANILLO EN HDL 459
460 CAPÍTULO 7/CONTADORES Y REGISTROS
miento mediante el uso de una instrucción IF/ELSE. Cada vez que detectamos que
los tres bits superiores están en BAJO, suponemos que el bit de menor orden está
en ALTO y en el siguiente ciclo de reloj queremos desplazar un nivel ALTO hacia
ser_ent. Para todos los demás estados (válidos e inválidos) desplazamos un nivel
BAJO. Sin importar el estado con el que se inicialice el contador, en un momento
dado se llenará con ceros; en ese momento nuestra lógica desplazará un nivel ALTO
para comenzar la secuencia de anillo.
CONTADOR DE ANILLO EN AHDL
Para estos momentos, el código de AHDL que se muestra en la figura 7-85 le deberá
ser familiar. Las líneas 11 y 12 controlan la entrada en serie mediante el uso de la
estrategia que acabamos de describir. Observe el uso del operador de doble signo
de igualdad () en la línea 11. Este operador evalúa si las expresiones en cada
lado son iguales o no. Recuerde que el operador de signo de igualdad () asigna
(es decir, conecta) un objeto a otro. La línea 14 implementa la acción de desplaza-
miento a la derecha que describimos en la sección anterior. La figura 7-86 muestra
los resultados de la simulación.
CONTADOR DE ANILLO ENVHDL
Para estos momentos, el código de VHDL que se muestra en la figura 7-87 deberá
serle familiar. Las líneas 12 y 13 controlan la entrada en serie mediante el uso de la
estrategia que acabamos de describir. La línea 16 implementa la acción de despla-
zamiento a la derecha que describimos en la sección anterior. Los resultados de la
simulación se muestran en la figura 7-86.
A
H
D
L
FIGURA 7-85 Contador de anillo de cuatro bits en AHDL.
1 SUBDESIGN fig7 85
2 (
3 clk :INPUT;
4 q[3..0] :OUTPUT;
5 )
6 VARIABLE
7 ff[3..0] :DFF;
8 ser ent :NODE;
9 BEGIN
10 ff[].clk  clk;
11 IF ff[3..1].q  B000 THEN ser ent  VCC; inicio automático
12 ELSE ser ent  GND;
13 END IF;
14 ff[3..0].d  (ser ent, ff[3..1].q); desplaza a la derecha
15 q[]  ff[];
16 END;
clk 1
0
0
0
0
q3
q2
q1
q0
2.0us 4.0us 6.0us 8.0us 10.0us 12.0us 14.0us
FIGURA 7-86
Simulación del contador
de anillo en HDL.
V
H
D
L
1 ENTITY fig7_87 IS
2 PORT ( clk :IN BIT;
3 q :OUT BIT_VECTOR (3 DOWNTO 0));
4 END fig7_87;
5
6 ARCHITECTURE vhdl OF fig7_87 IS
7 SIGNAL ser_ent :BIT;
8 BEGIN
9 PROCESS (clk)
10 VARIABLE ff :BIT_VECTOR (3 DOWNTO 0);
11 BEGIN
12 IF (ff (3 DOWNTO 1) = “000”) THEN ser_ent = ‘1’; -- inicio automático
13 ELSE ser_ent = ‘0’;
14 END IF;
15 IF (clk’EVENT AND clk = ‘1’) THEN
16 ff(3 DOWNTO 0) := (ser_ent  ff(3 DOWNTO 1)); -- desplaza a la derecha
17 END IF;
18 q = ff;
19 END PROCESS;
20 END vhdl;
FIGURA 7-87 Contador de anillo de cuatro bits en VHDL.
PREGUNTAS DE REPASO 1. ¿Qué significa que un contador de anillo inicie en forma automática?
2. ¿Qué líneas de la figura 7-85 aseguran que el contador de anillo inicie en forma
automática?
3. ¿Qué líneas de la figura 7-87 aseguran que el contador de anillo inicie en forma
automática?
7-24 MONOESTABLES EN HDL
Otro circuito importante que hemos estudiado es el circuito monoestable (one-shot).
Podemos aplicar el concepto de un contador para implementar un monoestable
digital mediante el uso de HDL. Si recuerda del capítulo 5, los monoestables son
dispositivos que producen un pulso de una anchura predefinida cada vez que se
activa la entrada de disparo. Un monoestable no redisparable ignora la señal de
disparo siempre y cuando la salida de pulso siga estando activa. Un monoestable
redisparable inicia un pulso en respuesta a una señal de disparo y limpia el tempori-
zador de pulso interno cada vez que ocurre un flanco de disparo subsiguiente, antes
de completar el pulso. El primer ejemplo que investigaremos es un monoestable
digital no redisparable, que se dispara por un nivel ALTO. Los monoestables que
estudiamos en el capítulo 5 utilizaban una resistencia y un capacitor como el meca-
nismo de sincronización de pulso interno. Para poder crear un monoestable median-
te las técnicas de HDL, utilizamos un contador de cuatro bits para determinar la
anchura del pulso. Las entradas son una señal de reloj, disparo, borrar y el valor de
la anchura del pulso. La única salida es la de pulso, Q. La idea es bastante simple.
Cada vez que se detecte un disparo hay que hacer que el pulso cambie a ALTO y
se cargue un contador descendente con un número proveniente de las entradas de
anchura de pulso. Entre mayor sea el número, más tiempo tardará el conteo hasta
cero. La ventaja de este circuito es que la anchura del pulso puede ajustarse con
facilidad si se cambia el valor que se cargó en el contador. A medida que vaya leyen-
do las siguientes secciones, considere la siguiente pregunta: “¿Qué hace que este
circuito sea no redisparable y qué hace que se dispare por nivel?”
SECCIÓN 7-24/MONOESTABLES EN HDL 461
462 CAPÍTULO 7/CONTADORES Y REGISTROS
MONOESTABLES EN AHDL
La figura 7-88 muestra la descripción en AHDL de un monoestable no redisparable,
sensible al nivel. En la línea 8 se crea un registro de cuatro flip-flops y sirve como
el contador para realizar el conteo descendente durante el pulso. La señal reloj
se conecta en paralelo a todos los flip-flops en la línea 10. La función de borrado
(reset) se implementa mediante la conexión de la línea de control reset en forma
directa a la entrada clrn asíncrona de cada flip-flop en la línea 11. Después de estas
asignaciones la primera condición que se prueba es el disparo. Si se activa (ALTO)
en cualquier momento mientras que el valor del conteo sea 0 (es decir, que termine
el pulso anterior), entonces se cargará el valor de retraso en el contador. En la línea
14 se prueba para ver si el pulso ya terminó; para ello se comprueba si el contador
llegó hasta cero o no. Si llegó a cero, entonces el contador no debe reciclarse sino
permanecer en cero. Si el conteo no está en cero, entonces debe estar contando,
por lo que la línea 15 prepara los flip-flops para que se decrementen en el siguien-
te pulso de reloj. Por último, la línea 17 genera el pulso de salida. Esta expresión
booleana puede definirse de la siguiente manera: “Hacer que el pulso (Q) sea ALTO
cuando el conteo sea cualquier número distinto de cero.”
MONOESTABLES SIMPLES ENVHDL
La figura 7-89 muestra la descripción en VHDL de un circuito digital monoestable
no redisparable, sensible al nivel. Las entradas y las salidas se muestran en las
líneas 3 a 5, como se describió antes. En la descripción de la arquitectura se utiliza
un bloque PROCESS (línea 11) para responder a cualquiera de las dos entradas:
reloj o reset. Dentro de este bloque PROCESS se utiliza una variable para repre-
sentar el valor en el contador. La entrada que debería tener precedencia sobre las
demás es la señal reset. Ésta se evalúa primero (línea 14) y si está activa, conteo
se borra de inmediato. Si reset no está activa se evalúa la línea 15 y se busca un
flanco de subida en reloj. La línea 16 comprueba el disparo. Si se activa en cual-
quier momento mientras que el valor del conteo sea 0 (es decir, si terminó el pulso
anterior), entonces se carga el valor de la anchura en el contador. En la línea 18 se
evalúa si el pulso terminó mediante una comprobación para ver si el contador llegó
a cero. Si es así, entonces el contador no deberá reciclarse sino permanecer en cero.
A
H
D
L
FIGURA 7-88
Monoestable no
redisparable en AHDL.
1 SUBDESIGN fig7 88
2 (
3 reloj, disparo, reset : INPUT;
4 retraso[3..0] : INPUT;
5 q : OUTPUT;
6 )
7 VARIABLE
8 conteo[3..0] : DFF;
9 BEGIN
10 conteo[].clk  reloj;
11 conteo[].clrn  reset;
12 IF disparo  conteo[].q  b0000 THEN
13 conteo[].d  retraso[];
14 ELSIF conteo[].q  B0000 THEN conteo[].d  B0000;
15 ELSE conteo[].d  conteo[].q 1;
16 END IF;
17 q  conteo[].q ! B0000; crea el pulso de salida
18 END;
V
H
D
L
1 ENTITY fig7 89 IS
2 PORT (
3 reloj, disparo, reset :IN BIT;
4 retraso :IN INTEGER RANGE 0 TO 15;
5 q :OUT BIT
6 );
7 END fig 7 89;
8
9 ARCHITECTURE vhdl OF fig7 89 IS
10 BEGIN
11 PROCESS (reloj, reset)
12 VARIABLE conteo : INTEGER RANGE 0 TO 15;
13 BEGIN
14 IF restablecer  '0' THEN conteo : 0;
15 ELSIF (reloj EVENT AND reloj  '1' ) THEN
16 IF disparo  '1' AND conteo  0 THEN
17 conteo : retraso; carga el contador
18 ELSIF conteo  0 THEN conteo : 0;
19 ELSE conteo : conteo 1;
20 END IF;
21 END IF;
22 IF conteo / 0 THEN q  '1';
23 ELSE q  '0';
24 END IF;
25 END PROCESS;
26 END vhdl;
FIGURA 7-89 Monoestable no redisparable en VHDL.
Si conteo no está en cero significa que debe estar contando, por lo que la línea 19
prepara los flip-flops para que se decrementen en el siguiente pulso de reloj. Por
último, las líneas 22 y 23 generan el pulso de salida. Esta expresión booleana puede
definirse de la siguiente manera: “Hacer que el pulso (q) sea ALTO cuando el con-
teo sea cualquier número distinto de cero”.
Ahora que revisamos el código que describe a este monoestable, vamos a evaluar
su rendimiento. La conversión de un circuito analógico tradicional en uno digital, por
lo general, ofrece ciertas ventajas y ciertas desventajas. En un CI monoestable están-
dar, el pulso de salida empieza justo después del disparo. Para el monoestable digital
que describimos aquí, el pulso de salida comienza en el siguiente flanco de reloj y
dura todo el tiempo que el contador sea mayor que cero. Esta situación se muestra en
la figura 7-90 durante los primeros ms de la simulación. Observe que el disparo cam-
bia a nivel alto casi 0.5 ms después de que responde la salida q. Si ocurre otro evento
de disparo mientras el contador está contando hacia abajo (como el que ocurre justo
antes de los 3 ms), se ignora. Ésta es la característica no redisparable.
Otro punto a recalcar para este monoestable digital es que el pulso de dispa-
ro debe ser lo bastante largo como para verse como un nivel ALTO en el flanco
de subida del reloj. Casi en la marca de los 4.5 ms se produce un pulso en la entrada de
disparo, pero cambia a BAJO antes del flanco de subida del reloj. Este circuito no
responde a este evento de entrada. Justo después de los 5 ms la entrada de disparo
cambia a ALTO y permanece ahí. El pulso dura exactamente 6 ms, pero debido a
que la entrada de disparo permanece en ALTO, responde con otro pulso de salida un
ciclo de reloj después. La razón de esta situación es que este circuito se dispara por
nivel en vez de dispararse por flanco, como la mayoría de los CIs monoestables
convencionales.
SECCIÓN 7-24/MONOESTABLES EN HDL 463
464 CAPÍTULO 7/CONTADORES Y REGISTROS
NO recargar el contador
a b c d e f
Cargar el contador
Reloj
Disparo
FIGURA 7-91
Detección de flancos.
Monoestables redisparables activados por flanco en HDL
Muchas aplicaciones de los monoestables requieren que el circuito responda a un
flanco en vez de a un nivel. ¿Cómo podemos utilizar código de HDL para hacer que
el circuito responda una vez a cada transición positiva en su entrada de disparo?
La técnica que describiremos aquí se conoce como captura de flancos y ha sido una
herramienta muy útil en la programación de microcontroladores durante años.
Como veremos, también es muy útil para describir el disparo por flanco para un
circuito digital mediante el uso de HDL. En esta sección ilustraremos un ejemplo
de un monoestable redisparable y también demostraremos la captura de flancos,
que puede ser útil en muchas otras situaciones.
La operación general de este monoestable redisparable requiere que responda
a un flanco de subida de la entrada de disparo. Tan pronto como se detecta el flan-
co, debe empezar a sincronizar el pulso. En el monoestable digital esto significa
que debe cargar el contador lo más pronto posible después del flanco de disparo
y debe empezar a contar en forma descendente hasta cero. Si ocurre otro evento de
disparo (flanco de subida) antes de que termine el pulso, el contador se recarga
de inmediato y la sincronización del pulso empieza de nuevo a partir del principio,
con lo cual se sostiene el pulso. Si se activa la señal de reset en cualquier punto se
forzará al contador a regresar a cero y se terminará el pulso. La anchura mínima
del pulso de salida es tan sólo el número que se aplica a la entrada, multiplicado
por el periodo de reloj.
La figura 7-91 demuestra la estrategia de captura de flancos para un monoes-
table. En cada flanco activo del reloj hay dos partes importantes de información.
La primera es el estado de la entrada disparo ahora y la segunda es el estado de
la entrada disparo cuando ocurrió el último flanco activo de reloj. Empiece con el
punto a en el diagrama de la figura 7-91 y determine estos dos valores, después
avance al punto b y así en lo sucesivo. Cuando complete esta tarea llegará a la con-
clusión de que, en el punto c se ha obtenido un resultado único. El disparo está en
ALTO ahora pero estaba en BAJO durante el último flanco activo del reloj. Éste es
el punto en el que detectamos el evento de disparo por flanco.
FIGURA 7-90 Simulación de los monoestables no redisparables.
Nombre: Value: 1.0 ms 2.0 ms 3.0 ms 4.0 ms 5.0 ms 6.0 ms 7.0 ms 8.0 ms 9.0 ms 10 ms
Disparo 0
Reset 1
Reloj 0
q
Ref: 0.0 ns
0.0ns
Tiempo: 3.66 ns Intervalo: 3.66 ns
0
Retraso H6
Conteo H0 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4
6
FIGURA 7-92
Descripción de un
circuito monoestable
redisparable en AHDL,
con disparo por flanco.
1 SUBDESIGN fig7 92
2 (
3 reloj, disparo, restablecer : INPUT;
4 delay[3..0] : INPUT;
5 q : OUTPUT;
6 )
7 VARIABLE
8 conteo[3..0] : DFF;
9 disp era : DFF;
10 BEGIN
11 conteo[].clk  reloj;
12 conteo[].clrn  restablecer;
13 disp era.clk  reloj;
14 disp era.d  disparo;
15
16 IF disparo  !disp era.q THEN
17 conteo[].d  retraso[];
18 ELSIF conteo[].q  B0000 THEN conteo[].d  B0000;
19 ELSE conteo[].d  conteo[].q 1;
20 END IF;
21 q  conteo[].q ! B0000;
22 END;
Para poder saber cuál era el disparo en el último flanco activo del reloj, el sis-
tema debe recordar el último valor que tenía el disparo en ese punto. Para ello hay
que almacenar el valor del bit de disparo en un flip-flop. Recuerde que vimos un
concepto similar en el capítulo 5, cuando hablamos sobre el uso de un flip-flop para
detectar una secuencia. El código para un monoestable se escribe de forma que
el contador se cargue sólo después de detectar un flanco de subida en la entrada
disparo.
MONOESTABLE REDISPARABLE EN AHDL, DISPARADO POR FLANCO
Las primeras cinco líneas de la figura 7-92 son idénticas al ejemplo anterior del
monoestable no redisparable. En AHDL, la única forma de recordar un valor que se
obtuvo en el pasado es almacenarlo en un flip-flop. En esta sección utilizaremos un
flip-flop llamado disp_era (línea 9) para almacenar el valor que había en el disparo,
durante el último flanco activo del reloj. Este flip-flop se conecta de manera que
el disparo esté en su entrada D (línea 14) y el reloj esté conectado a su entrada
clk (línea 13). La salida Q de disp_era recuerda el valor de disparo justo hasta el
siguiente flanco de reloj. En este punto utilizamos la línea 16 para evaluar si se
ha producido un flanco de disparo. Si disparo está en ALTO (ahora) pero estaba en
BAJO (último ciclo de reloj), es tiempo de cargar el contador (línea 17). La línea 18
asegura que una vez que el conteo llegue a cero, permanecerá en cero hasta que se
produzca un nuevo disparo. Si las decisiones permiten evaluar la línea 19, significa
que hay un valor cargado en el contador y no es cero, por lo que necesita decremen-
tarse. Por último, el pulso de salida se cambia a ALTO cada vez que hay un valor
distinto de 000 en el contador, como vimos antes.
A
H
D
L
SECCIÓN 7-24/MONOESTABLES EN HDL 465
$1¶56-0 $0/5%034 : 3(*45304
1 ENTITY fig7 93 IS
2 PORT ( reloj, disparo, reset : IN BIT;
3 retraso : IN INTEGER RANGE 0 TO 15;
4 q : OUT BIT);
5 END fig7 93;
6
7 ARCHITECTURE vhdl OF fig7 93 IS
8 BEGIN
9 PROCESS (reloj, reset)
10 VARIABLE conteo : INTEGER RANGE 0 TO 15;
11 VARIABLE disp era : BIT;
12 BEGIN
13 IF reset  '0' THEN conteo : 0;
14 ELSIF (relojʼEVENT AND reloj  '1' ) THEN
15 IF disparo  '1' AND disp era  '0' THEN
16 conteo : retraso; carga el contador
17 disp era : '1'; recuerda el flanco detectado
18 ELSIF conteo  0 THEN conteo : 0; retiene en 0
19 ELSE conteo : conteo 1; decrementa
20 END IF;
21 IF disparo  '0' THEN disp era : '0';
22 END IF;
23 END IF;
24 IF conteo / 0 THEN q  '1';
25 ELSE q  '0';
26 END IF;
27 END PROCESS;
28 END vhdl;
'*(63  .POPFTUBCMF SFEJTQBSBCMF FO 7)%-
 DPO EJTQBSP QPS GMBODP
$%3#2)0#)¼.6($, $% -/./%34!,% 2%$)30!2!,% $)30!2!$/
0/2 ,!.#/
-B EFTDSJQDJØO /5*5: FO MB GJHVSB  FT JEÏOUJDB BM FKFNQMP BOUFSJPS EFM
NPOPFTUBCMF OP SFEJTQBSBCMF %F IFDIP
 MBT ÞOJDBT EJGFSFODJBT FOUSF FTUF FKFNQMP Z
FM RVF TF NVFTUSB FO MB GJHVSB  FTUÈO SFMBDJPOBEBT DPO MB MØHJDB EFM QSPDFTP
EF EFDJTJØO $VBOEP RVFSFNPT SFDPSEBS VO WBMPS FO 7)%-
 EFCFNPT BMNBDFOBSMP FO
VOB 73*#- 3FDVFSEF RVF QPEFNPT DPOTJEFSBS VO CMPRVF 130$44 DPNP VOB
EFTDSJQDJØO EF MP RVF PDVSSF DBEB WF[ RVF VOB TF×BM FO MB MJTUB EF TFOTJCJMJEBE
DBNCJB EF FTUBEP 6OB 73*#- SFUJFOF FM ÞMUJNP WBMPS RVF TF MF BTJHOB FOUSF
MPT UJFNQPT FO MPT RVF TF JOWPDB FM QSPDFTP O FTUF TFOUJEP BDUÞB DPNP VO GMJQGMPQ
1BSB FM NPOPFTUBCMF OFDFTJUBNPT BMNBDFOBS VO WBMPS RVF OPT JOEJRVF FO RVÏ FTUBEP
TF FODPOUSBCB FM EJTQBSP FO FM ÞMUJNP GMBODP BDUJWP EFM SFMPK -B MÓOFB  EFDMBSB VO
CJU WBSJBCMF QBSB TFSWJS B FTUF GJO -B QSJNFSB EFDJTJØO 	MÓOFB 
 FT MB EF QSFEPNJ
OBODJB RVF DPNQSVFCB Z SFTQPOEF B MB FOUSBEB SFTFU 0CTFSWF RVF ÏTUF FT VO DPOUSPM
BTÓODSPOP
 ZB RVF TF FWBMÞB BOUFT EF RVF TF EFUFDUF FM GMBODP EFM SFMPK FO MB MÓOFB 
TUB MÓOFB EFUFSNJOB RVF TF IB QSPEVDJEP VO GMBODP EF TVCJEB EFM SFMPK
 Z EFTQVÏT
TF FWBMÞB MB MØHJDB QSJODJQBM EF FTUF QSPDFTP FOUSF MBT MÓOFBT  Z 
$VBOEP TF QSPEVDF VO GMBODP EF SFMPK
 FYJTUF VOB EF USFT DPOEJDJPOFT
 4F IB QSPEVDJEP VO GMBODP EF EJTQBSP Z EFCFNPT DBSHBS FM DPOUBEPS
 M DPOUBEPS FTUÈ FO DFSP Z OFDFTJUBNPT NBOUFOFSMP FO DFSP
 M DPOUBEPS OP FTUÈ FO DFSP Z OFDFTJUBNPT DPOUBS VOP IBDJB BCBKP
6
(
$
,
Nombre: Valor: 1.0 ms 2.0 ms 3.0 ms 4.0 ms 5.0 ms 6.0 ms 7.0 ms 8.0 ms 9.0 ms 10 ms
Disp_era.Q 0
Trigger 0
Restablecer 1
Reloj
0.0ns
0
Retraso
0
Conteo
H5
q
H0 4 3 5 4 3 2 1 0 5 4 3 2 1 0
5
0
5
FIGURA 7-94 Simulación del monoestable redisparable, con disparo por flanco.
Recuerde que es muy importante considerar el orden en el que se hacen las pregun-
tas y las asignaciones en las instrucciones PROCESS de VHDL, ya que la secuencia
afecta la operación del circuito que estamos describiendo. El código que actualiza
la variable disp_era debe ocurrir después de la evaluación de su condición anterior.
Por esta razón, las condiciones necesarias para detectar un flanco de subida en dis-
paro se evalúan en la línea 15. Si se produjo un flanco, entonces se carga el contador
(línea 16) y la variable se actualiza (línea 17) para recordar esto para la próxima
vez. Si no se produjo un flanco de disparo, el código se retiene en cero (línea 18)
o cuenta hacia abajo (línea 19). La línea 21 se asegura de que tan pronto como la
entrada de disparo cambie a BAJO, la variable disp_era recuerde esto mediante
la operación reset. Por último, las líneas 24 a 25 se utilizan para crear el pulso de
salida durante el tiempo en el que el contador no sea cero.
Las dos mejoras que se hicieron en este monoestable, en comparación con el
otro ejemplo, son el disparo por flanco y la característica de ser redisparable. La
figura 7-94 evalúa las nuevas características de rendimiento. Observe en el primer
ms del diagrama de sincronización que se detecta un flanco de disparo, pero la res-
puesta no es inmediata. El pulso de salida cambia a nivel alto en el siguiente flanco
del reloj. Ésta es una desventaja para el monoestable digital. La característica de
redisparable se demuestra casi en la marca de los 2 ms. Observe que disparo cambia
a nivel alto y en el siguiente flanco de reloj el conteo empieza de nuevo en 5, con
lo que se sostiene el pulso de salida. Observe además que aún después de que se
termina el pulso de salida q y el disparo se encuentra todavía en ALTO, el circuito
monoestable no dispara otro pulso ya que no se dispara por nivel, sino por flanco.
En la marca de los 6 ms se produce un pulso de disparo corto pero se ignora debido
a que no permanece en ALTO sino hasta el siguiente ciclo de reloj. Por otro lado,
un pulso de disparo aún más corto que se produce justo después de la marca de los
7 ms dispara el monoestable, ya que está presente durante el flanco de subida del
reloj. El pulso de salida resultante dura exactamente cinco ciclos de reloj, ya que
no se producen otros disparos durante este periodo.
Para minimizar los efectos de la respuesta retrasada a los flancos de disparo
y la posibilidad de dejar pasar los flancos de disparo que sean demasiado cortos,
podemos mejorar este circuito de una forma muy sencilla. La frecuencia de reloj
y el número de bits que se utilizan para cargar el valor de retraso pueden incre-
mentarse para proporcionar el mismo rango de anchuras de pulso (con un control
más preciso) al tiempo que se reduce la anchura mínima del pulso de disparo. Para
poder curar este problema por completo, el monoestable debe responder en forma
asíncrona a la entrada de disparo. Esto es posible tanto en AHDL como en VHDL,
pero siempre se producirá un pulso que fluctúe en anchura de hasta un periodo de
reloj.
SECCIÓN 7-24/MONOESTABLES EN HDL 467
468 CAPÍTULO 7/CONTADORES Y REGISTROS
PREGUNTAS DE REPASO 1. ¿Qué señal de entrada de control tiene la prioridad más alta para cada una de
las descripciones de un circuito monoestable?
2. Nombre dos factores que determinen cuánto tiempo durará un pulso de un cir-
cuito monoestable digital.
3. Para los circuitos monoestables que se muestran en esta sección, ¿los contado-
res se cargan en forma síncrona o asíncrona?
4. ¿Cuál es la ventaja de cargar un contador en forma síncrona?
5. ¿Cuál es la ventaja de cargar el contador en forma asíncrona?
6. ¿Cuáles son las dos piezas de información necesarias para detectar un flanco?
RESUMEN PARTE 2
1. Hay numerosos registros de CI disponibles y pueden clasificarse dependiendo
de si sus entradas son en paralelo (todos los bits se introducen en forma simul-
tánea), en serie (un bit a la vez) o ambas. De igual forma, los registros pueden
tener salidas en paralelo (todos los bits disponibles al mismo tiempo) o en serie
(un bit disponible a la vez).
2. Un sistema lógico secuencial utiliza FFs, contadores y registros, además de
compuertas lógicas. Sus salidas y la secuencia de las operaciones dependen
de las entradas presentes y pasadas.
3. El diagnóstico de fallas en un sistema lógico secuencial comienza con la obser-
vación de la operación del sistema, seguida de un razonamiento analítico para
determinar las posibles causas de cualquier falla y por último se realizan medi-
ciones de prueba para aislar la verdadera falla.
4. Un contador de anillo es en realidad un registro de desplazamiento de N bits,
que recircula un solo 1 en forma continua, actuando en consecuencia como un
contador MOD-N. Un contador Johnson es un contador de anillo modificado que
opera como un contador MOD-2N.
5. Para implementar los registros de desplazamiento con HDL se escriben descrip-
ciones personalizadas de su operación.
6. Es muy importante comprender el funcionamiento de los arreglos de bits/vec-
tores de bits y su notación para describir las operaciones de los registros de
desplazamiento.
7. Los contadores de registro de desplazamiento tales como los contadores Johnson
y de anillo pueden implementarse con facilidad en HDL. Es fácil escribir las
características de decodificación e inicio automático en la descripción.
8. Los monoestables digitales se implementan con un contador cargado con un
valor de retraso cuando se detecta la entrada de disparo y cuenta en forma
descendente hasta cero. Durante el tiempo del conteo descendente, el pulso de
salida se mantiene en ALTO.
9. Mediante la colocación estratégica de las instrucciones de descripción de hard-
ware, se puede hacer que los circuitos monoestables en HDL se disparen por
flanco o por nivel, y que sean redisparables o no redisparables, ya que producen
un pulso de salida que responde en forma síncrona o asíncrona al disparo.
TÉRMINOS IMPORTANTES PARTE 2
concatenación
contador de anillo
contador Johnson
(contador de anillo
torcido)
entrada en paralelo/salida
en paralelo
entrada en paralelo/salida
en serie
entrada en serie/salida
en paralelo
entrada en serie/salida
en serie
monoestable digital
registro de desplazamiento
circulante
sistema lógico
secuencial
PROBLEMAS
PARTE 1
SECCIÓN 7-1
7-1.*
Agregue otro flip-flop llamado E al contador de la figura 7-1. La señal de
reloj es una onda cuadrada de 8-MHz.
(a) ¿Cuál será la frecuencia en la salida E? ¿Cuál será el ciclo de trabajo
de esta señal?
(b) Repita el inciso (a) si la señal de reloj tiene un ciclo de trabajo del 20
por ciento.
(c) ¿Cuál será la frecuencia en la salida C?
(d) ¿Cuál es el número MOD de este contador?
7-2. Dibuje un contador binario que convierta una señal de pulso de 64-kHz en
una onda cuadrada de 1-kHz.
7-3.* Suponga que un contador binario de cinco bits comienza en el estado 00000.
¿Cuál será el conteo después de 144 pulsos de entrada?
7-4. A un contador de rizo de 10 bits se le aplica una señal de reloj de 256-kHz.
(a) ¿Cuál es el número MOD de este contador?
(b) ¿Cuál será la frecuencia en la salida del MSB?
(c) ¿Cuál será el ciclo de trabajo de la señal del MSB?
(d) Suponga que el contador empieza en cero. ¿Cuál será el conteo en
hexadecimal después de 1000 pulsos de entrada?
SECCIÓN 7-2
7-5.* Un contador de rizo de cuatro bits se controla mediante una señal de reloj
de 20-MHz. Dibuje las formas de onda en la salida de cada FF si cada uno
tiene un tpd  20 ns. Determine cuáles estados del contador (si es que los
hay) no se producirán debido a los retrasos de propagación.
7-6. (a) ¿Cuál es la máxima frecuencia de reloj que puede utilizarse con el
contador del problema 7-5?
(b) ¿Cuál sería fmáx si el contador se expandiera a seis bits?
SECCIONES 7-3 Y 7-4
7-7.* (a) Dibuje el diagrama del circuito para un contador síncrono MOD-32.
(b) Determine fmáx para este contador si cada FF tiene un tpd  20 ns y
cada compuerta tiene un tpd  10 ns.
7-8. (a) Dibuje el diagrama del circuito para un contador síncrono MOD-64.
(b) Determine fmáx para este contador si cada FF tiene un tpd  20 ns y
cada compuerta tiene un tpd  10 ns.
7-9.* Dibuje las formas de onda para todos los FFs en el contador de décadas de
la figura 7-8(b), en respuesta a una frecuencia de reloj de 1-kHz. Muestre
cualquier deformación que pudiera aparecer en cualquiera de las salidas
de los FFs. Determine la frecuencia en la salida D.
7-10. Repita el problema 7-9 para el contador de la figura 7-8(a).
7-11.* Cambie las entradas para la compuerta NAND de la figura 7-9, de manera
que el contador divida la frecuencia de entrada entre 50.
7-12. Dibuje un contador síncrono que produzca como salida una señal de 10-kHz
cuando se aplica un reloj de 1-MHz.
* Encontrará las respuestas a los problemas marcados con asterisco al nal del libro.
PROBLEMAS 469
B
B
B
B
B
B
B
B
B
B
470 CAPÍTULO 7/CONTADORES Y REGISTROS
SECCIONES 7-5 Y 7-6
7-13.* Dibuje un contador descendente síncrono, MOD-32.
7-14. Dibuje un contador ascendente/descendente síncrono, MOD-16. La direc-
ción de conteo se controla mediante dir (dir  0 para contar hacia arriba).
7-15.* Determine la secuencia de conteo del contador ascendente/descendente en
la figura 7-11, si la salida INVERSOR estuviera forzada en ALTO. Suponga
que el contador empieza en 000.
7-16. Complete el diagrama de sincronización de la figura 7-95 para el contador
preajustable de la figura 7-12. Observe que la condición inicial para el con-
tador se proporciona en el diagrama de sincronización.
SECCIÓN 7.7
7-17.* Complete el diagrama de sincronización de la figura 7-96 para un 74ALS161,
al cual se le aplican las formas de onda de entrada que se indican. Suponga
que el estado inicial es 0000.
FIGURA 7-95 Diagrama de sincronización del problema 7-16.
CLK
101 010
P2P1P0
PL
Q0
Q1
Q2
FIGURA 7-96 Diagrama de sincronización del problema 7-17.
CLK
QD
D C B A 0111 1101
ENP
ENT
QC
QB
QA
RCO
CARGA
CLR
B
B
A, F
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
→ →
→ → → →
→
↑
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
ff[ ].clk !reloj
IF (reloj ?0? AND reloj?EVENT) THEN
reg[ ].d (reg[6..0], dat)
reg : reg (6 DOWNTO 0)  dat
Sistemas_Digitales_Principios_y_Aplicaci.pdf
8-1 Terminología de CIs digitales
8-2 La familia lógica TTL
8-3 Hojas técnicas TTL
8-4 Características
de las series TTL
8-5 Capacidad de carga de la
familia TTL
8-6 Otras características
de la familia TTL
8-7 Tecnología MOS
8-8 Lógica de MOS
complementario
8-9 Características de las series
CMOS
8-10 Tecnología de bajo voltaje
8-11 Salidas de colector abierto/
drenador abierto
■ CONTENIDO
FAMILIAS LÓGICAS
D E CIR CUITOS
INTEG RADOS
C A P Í T U L O 8
8-12 Salidas lógicas triestado
(tres estados)
8-13 Lógica de interfase de bus
de alta velocidad
8-14 La familia ECL de CIs
digitales
8-15 Compuerta de transmisión
CMOS (interruptor
bilateral)
8-16 Interfase de CIs
8-17 Interfase de voltaje
mixto
8-18 Comparadores de voltaje
analógico
8-19 Diagnóstico de fallas
■ OBJETIVOS
Al terminar este capítulo, usted podrá:
■ Leer y comprender la terminología de CIs digitales, según lo especificado
en las hojas técnicas de los fabricantes.
■ Comparar las características de la familia TTL estándar y de las diversas
series TTL.
■ Determinar la capacidad de carga para un dispositivo lógico específico.
■ Utilizar dispositivos lógicos con salidas de colector abierto.
■ Analizar circuitos que contengan dispositivos triestado.
■ Comparar las características de las diversas series CMOS.
■ Analizar circuitos que utilicen un interruptor bilateral de CMOS para
permitir que un sistema digital controle señales analógicas.
■ Describir las principales características y diferencias entre las familias
lógicas TTL, ECL, MOS y CMOS.
■ Citar e implementar las diversas consideraciones requeridas cuando se
integran circuitos digitales de distintas familias lógicas.
■ Utilizar comparadores de voltaje para permitir que un sistema digital se
controle mediante señales analógicas.
■ Utilizar un pulsador lógico y una sonda lógica como herramientas de
diagnóstico de fallas en circuitos digitales.
■ INTRODUCCIÓN
Como se describió en el capítulo 4, la tecnología de CIs digitales ha progresado
con rapidez, desde la integración a pequeña escala (SSI) con menos de 12
compuertas por chip; después la integración a mediana escala (MSI), en la que
se pueden tener de 12 a 99 compuertas equivalentes por chip; más tarde la
integración a gran escala y a muy gran escala (LSI y VLSI, respectivamente),
en las que puede haber decenas de miles de compuertas por chip; y, por último,
la integración a ultragran escala (ULSI), en la que puede haber más de 100,000
compuertas por chip, y la integración a giga escala (GSI), con 1 millón o más
de compuertas.
La mayoría de las razones por las que los sistemas digitales modernos utilizan
circuitos digitales son obvias. Los CI encapsulan mucho más circuitos en un
encapsulado pequeño, por lo que el tamaño total de casi cualquier sistema digital
se reduce. El costo se reduce en forma sustancial debido al ahorro que representa
la producción en masa de grandes volúmenes de dispositivos similares. Algunas de
las otras ventajas no son tan evidentes.
Los CIs han hecho que los sistemas digitales sean más confiables al
reducir el número de interconexiones externas de un dispositivo a otro. Antes
de que tuviéramos los CIs, todas las conexiones en los circuitos eran de un
componente discreto (transistor, diodo, resistencia, etc.) a otro. Ahora la mayoría
de las conexiones son internas en los CIs, en donde están protegidas de malas
489
490 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
soldaduras, quebraduras o cortos en las rutas de conexión en un circuito impreso
(PCB), y demás problemas físicos. Los CIs también han reducido en forma
dramática la cantidad de energía eléctrica necesaria para realizar una función
dada, debido a que sus circuitos en miniatura, por lo general, requieren menos
energía que sus contrapartes discretas. Además de los ahorros en costo por la
fuente de energía, esta reducción en la energía también significa que un sistema
prácticamente no requiere enfriamiento.
Hay algunas cosas que los CIs no pueden hacer: no pueden manejar
corrientes o voltajes muy grandes, ya que el calor generado en espacios tan
pequeños provocaría que la temperatura aumentara más allá de los límites
aceptables. Además, los CIs no pueden implementar con facilidad ciertos
dispositivos eléctricos tales como los inductores, los transformadores y los
capacitores grandes. Por estas razones, el principal uso de los CIs es para realizar
operaciones de circuitos de baja energía, a lo cual se le conoce, por lo general,
como procesamiento de información. Las operaciones que requieren altos niveles de
energía o dispositivos que no pueden integrarse se siguen manejando mediante
componentes discretos.
Con el amplio uso de los CIs viene también la necesidad de conocer y
comprender las características eléctricas de las familias lógicas de los CIs
más comunes. Recuerde que las diversas familias lógicas difieren en cuanto a
los componentes principales que utilizan en sus circuitos. TTL y ECL utilizan
transistores bipolares como su elemento principal en el circuito; PMOS, NMOS y
CMOS utilizan transistores MOSFET unipolares como su componente principal.
En este capítulo presentaremos las características importantes de cada una de
estas familias de CIs y sus subfamilias. El punto más importante es comprender
la naturaleza de los circuitos de entrada y los circuitos de salida para cada
familia lógica. Una vez que comprenda esto, estará mucho mejor preparado para
realizar el análisis, diagnóstico de fallas y cierto diseño de los circuitos digitales
que contengan cualquier combinación de familias de CIs. Estudiaremos el
funcionamiento interno de los dispositivos en cada familia con el circuito más
simple que transmita las características imprescindibles de todos los miembros de
la familia.
8-1 TERMINOLOGÍA DE CIS DIGITALES
Aunque hay muchos fabricantes de CIs digitales, la mayor parte de la nomenclatura
y la terminología están estandarizadas. A continuación definiremos y hablaremos
sobre los términos más útiles.
Parámetros de voltaje y corriente (vea la figura 8-1)
■ VIH(mín): voltaje de entrada en nivel alto. El mínimo nivel de voltaje reque-
rido para un 1 lógico en una entrada. El circuito lógico no aceptará como nivel
ALTO cualquier voltaje que se encuentre por debajo de este nivel.
■ VIL(máx): voltaje de entrada en nivel bajo. El máximo nivel de voltaje reque-
rido para un 0 lógico en una entrada. El circuito lógico no aceptará como nivel
BAJO cualquier voltaje que se encuentre por encima de este nivel.
■ VOH(mín): voltaje de salida en nivel alto. El mínimo nivel de voltaje en la salida
de un circuito lógico en el estado 1, bajo condiciones de carga específicas.
■ VOL(máx): voltaje de salida en nivel bajo. El máximo nivel de voltaje en la salida
de un circuito lógico en el estado 0, bajo condiciones de carga específicas.
■ IIH: corriente de entrada en nivel alto. La corriente que fluye hacia una entrada
cuando se le aplica a ésta un voltaje específico de alto nivel.
■ IIL: corriente de entrada en nivel bajo. La corriente que fluye hacia una
entrada cuando se le aplica a ésta un voltaje específico de bajo nivel.
■ IOH: corriente de salida en nivel alto. La corriente que fluye desde una salida
en el estado 1 lógico, bajo condiciones de carga específicas.
SECCIÓN 8-1/TERMINOLOGÍA DE CIS DIGITALES 491
■ IOL: corriente de salida en nivel bajo. La corriente que fluye desde una salida
en el estado 0 lógico, bajo condiciones de carga específicas.
Nota: la dirección real de la corriente puede ser opuesta a las que se muestran en
la figura 8-1, dependiendo de la familia lógica. Todas las descripciones del flujo de
corriente en este texto se refieren al flujo de corriente convencional (del potencial
mayor al potencial menor). Para concordar con las convenciones de la mayoría de
las hojas de datos, la corriente que fluye hacia dentro un nodo o dispositivo se con-
sidera positiva y la corriente que fluye hacia fuera de un nodo o dispositivo se
considera negativa.
Capacidad de carga
En general, se requiere que la salida de un circuito lógico controle varias entra-
das lógicas. Algunas veces todos los CIs en el sistema digital son de la misma
familia lógica, pero muchos sistemas tienen una mezcla de varias familias lógicas.
La capacidad de carga se define como el número máximo de entradas lógicas que
puede controlar una salida de manera confiable. Por ejemplo, si se especifica que una
compuerta lógica tiene una capacidad de carga de 10, significa que puede manejar
10 entradas lógicas. Si se excede este número, no se pueden garantizar los voltajes
de los niveles lógicos de salida. Es obvio que la capacidad de carga depende de la
naturaleza de los dispositivos de entrada que se conectan a una salida. A menos que
se especifique una familia lógica distinta como el dispositivo de carga, se asume
que la capacidad de carga se refiere a la acción de cargar dispositivos de la misma
familia que la salida reforzadora.
Tiempos de propagación
Una señal lógica siempre experimenta un retraso al pasar a través de un circuito.
Los dos tiempos de propagación se definen de la siguiente manera:
■ tPLH. El tiempo que tarda la compuerta en cambiar del estado de 0 lógico al de
1 lógico (de BAJO a ALTO).
■ tPHL. El tiempo que tarda la compuerta en cambiar del estado de 1 lógico al de
0 lógico (de ALTO a BAJO).
La figura 8-2 ilustra estos tiempos de propagación para un INVERSOR. Observe que
tPHL es el retaso en la respuesta de la salida, al cambiar de ALTO a BAJO. Se mide
entre los 50 puntos porcentuales en las transiciones de entrada y de salida. El valor
tPLH es el retraso en la respuesta de la salida, al cambiar de BAJO a ALTO.
En algunos circuitos lógicos tPHL y tPLH no son el mismo valor, y ambos variarán
dependiendo de las condiciones de carga capacitiva. Los valores de los tiempos de
propagación se utilizan como una medición de la velocidad relativa de los circuitos
lógicos. Por ejemplo, un circuito lógico con valores de 10 ns es mucho más rápido que
un circuito lógico con valores de 20 ns, bajo condiciones de carga específicas.
ALTO BAJO
IOH IIH
VOH VIH
(a)
+ +
– –
IOL IIL
VOL VIL
+ +
– –
+5 V
(b)
FIGURA 8-1 Corrientes y voltajes en los dos estados lógicos.
492 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
0
1
1
0
1
1
0
1
1
+VCC
ICCH
(a)
1
1
1
(b)
+VCC
ICCL
0
0
0
1
1
1
1
1
1
1
1
1
FIGURA 8-3 ICCH e ICCL.
Requerimientos de energía
Todo CI requiere una cierta cantidad de energía eléctrica para operar. Esta energía
se suministra mediante uno o más voltajes de fuente de energía conectados a la(s)
terminal(es) de energía en el chip, las cuales se etiquetan como VCC (para TTL) o
VDD (para los dispositivos MOS).
La cantidad de energía que requiere un CI se determina con base en la corriente
ICC (o IDD) que consume de la fuente VCC (o VDD), y la energía real es el producto ICC
 VCC. Para muchos CIs, la corriente que se consume de la fuente varía con base en
los estados lógicos de los circuitos en el chip. Por ejemplo, la figura 8-3(a) muestra
un chip NAND en el cual todas las salidas de las compuertas están en ALTO. El dre-
nado de corriente en la fuente VCC para este caso se llama ICCH. De igual forma, la
figura 8-3(b) muestra la corriente cuando todas las salidas de las compuertas están en
BAJO. Esta corriente se llama ICCL. Los valores siempre se miden con las salidas
en circuito abierto (sin carga), ya que el tamaño de la carga también tendrá un efecto
sobre ICCH.
En algunos circuitos lógicos ICCH e ICCL tendrán valores distintos. Para estos dis-
positivos, la corriente promedio se calcula con base en la suposición de que las sali-
das de las compuertas están en BAJO la mitad del tiempo, y en ALTO la otra mitad
del tiempo.
Entrada 1
Salida 1
0
0
tPHL tPLH
50%
50%
t
FIGURA 8-2 Tiempos
de propagación.
=
ICCH + ICCL
2
ICC (prom)
SECCIÓN 8-1/TERMINOLOGÍA DE CIS DIGITALES 493
FIGURA 8-4 Márgenes
de ruido de corriente
directa.
VOH (mín)
1
lógico
0
lógico
Intervalos de
voltaje de salida
(a)
Intervalo
no permitido
VOL (máx)
Vo
taje
l
VNH
VIH (mín)
VIL (máx)
Requerimientos de
voltaje de entrada
(b)
1
lógico
0
lógico
Intervalo
indeterminado
Vo
taje
l
VNL
Esta ecuación puede reescribirse para calcular la energía promedio que se disipa:
PD(prom)  ICC(prom  VCC)
Inmunidad al ruido
Los campos eléctricos y magnéticos dispersos pueden inducir voltajes en los conducto-
res que conectan los circuitos lógicos. Estas señales espurias indeseables se conocen
como ruido y algunas veces pueden hacer que el voltaje en la entrada de un circuito
lógico caiga por debajo deVIH(mín) o se eleve por encima deVIL(máx), lo cual podría
producir una operación impredecible. La inmunidad al ruido de un circuito lógico se
refiere a la habilidad de ese circuito para tolerar el ruido sin producir cambios espu-
rios en el voltaje de salida. A una medida cuantitativa de la inmunidad al ruido se
le conoce como margen de ruido, el cual se ilustra en la figura 8-4.
La figura 8-4(a) es un diagrama que muestra el intervalo de voltajes que pueden
aparecer en la salida de un circuito lógico. Cualquier voltaje mayor que VOH(mín)
se considera como un 1 lógico, y cualquier voltaje menor que V0L(máx) se considera
como un 0 lógico. Los voltajes en el intervalo indeterminado no deben aparecer en
la salida de un circuito lógico, bajo condiciones normales. La figura 8-4(b) mues-
tra los requerimientos de voltaje en la entrada de un circuito lógico. Este circuito
responde a cualquier entrada mayor que VIH(mín) como un 1 lógico, y responde a
voltajes menores que VIL(máx) como un 0 lógico. Los voltajes en el intervalo inde-
terminado producen una respuesta impredecible y no deben usarse.
El margen de ruido de estado alto VNH se define como
VNH  VOH(mín)  VIH(mín) (8-1)
y se ilustra en la figura 8-4. VNH es la diferencia entre la menor salida en ALTO
posible y el mínimo voltaje de entrada requerido para un nivel ALTO. Cuando una
salida lógica en ALTO controla la entrada de un circuito lógico, cualquier pico de
voltaje negativo mayor que VNH y que aparezca en la línea de señal, podrá hacer
que el voltaje caiga en el intervalo indeterminado, en donde puede producirse una
operación impredecible.
El margen de ruido de estado bajo VNL se define como
VNL  VIL(máx)  VOL(máx) (8-2)
494 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
EJEMPLO 8-1
y es la diferencia entre la mayor salida en BAJO posible y el máximo voltaje de
entrada requerido para un nivel BAJO. Cuando una salida lógica en BAJO controla
una entrada lógica, cualquier pico de ruido positivo mayor queVNL puede hacer que
el voltaje se eleve hacia el intervalo indeterminado.
Las especificaciones de voltaje de entrada/salida para la familia TTL estándar se
muestran en la tabla 8-1. Utilice estos valores para determinar lo siguiente.
(a) El pico de ruido de máxima amplitud que puede tolerarse cuando una salida en
ALTO maneja una entrada.
(b) El pico de ruido de máxima amplitud que puede tolerarse cuando una salida en
BAJO maneja una entrada.
Solución
(a) Cuando una salida está en ALTO, puede ser tan baja como VOH(mín)  2.4 V. El
mínimo voltaje al que puede responder una entrada como ALTO es VIH(mín) 
2.0 V. Un pico de ruido negativo puede llevar al voltaje actual por debajo de 2.0
V si su amplitud es mayor que
VNH  VOH(mín)  VIH(mín)
 2.4 V  2.0 V  0.4 V
(b) Cuando una salida está en BAJO, puede ser tan alta como VOL(máx)  0.4 V. El
máximo voltaje al que puede responder una entrada como BAJO es VIL(máx)
 0.8 V. Un pico de ruido positivo puede llevar al voltaje actual por encima del
nivel de 0.8 V, si su amplitud es mayor que
VNL  VIL(máx)  VOL(máx)
 0.8 V  0.4 V  0.4 V
Niveles de voltaje inválidos
Para una operación apropiada, los niveles de voltaje de entrada para un circuito
lógico deben mantenerse fuera del intervalo indeterminado que se muestra en la
figura 8-4(b); esto es, deben ser menores queVIL(máx) o mayores queVIH(mín). Para
las especificaciones de TTL estándar que se proporcionan en el ejemplo 8-1, esto sig-
nifica que el voltaje de entrada debe ser menor que 0.8 V o mayor que 2.0 V. Un vol-
taje de entrada entre 0.8V y 2.0V se considera un voltaje inválido que producirá una
respuesta de salida impredecible, por lo cual debe evitarse. En la operación normal,
un voltaje de entrada lógico no caerá dentro de la región inválida debido a que pro-
viene de una salida lógica que se encuentra dentro de las especificaciones estable-
cidas. No obstante, cuando esta salida lógica está fallando o se está sobrecargando
(es decir, se está excediendo su capacidad de carga), entonces su voltaje puede estar
en la región inválida. Los niveles de voltaje inválidos en un circuito digital también
pueden producirse debido a voltajes de la fuente de energía que se encuentran fuera
del intervalo aceptable. Es importante conocer los intervalos de voltaje válidos para
la familia lógica que se está utilizando, de manera que puedan reconocerse las con-
diciones inválidas cuando se hagan pruebas o se diagnostiquen fallas.
TABLA 8-1
Parámetro Mín (V) Típico (V) Máx (V)
VOH 2.4 3.4
VOL 0.2 0.4
VIH 2.0*
VIL 0.8*
*
Por lo general, sólo se proporcionan los valores
de VIH mínimo y VIL máximo.
SECCIÓN 8-1/TERMINOLOGÍA DE CIS DIGITALES 495
Acción de suministro de corriente y drenado de corriente
Las familias lógicas pueden describirse de acuerdo con la forma en que fluye la
corriente entre la salida de un circuito lógico y la entrada de otro. La figura 8-5(a)
ilustra la acción de suministro de corriente. Cuando la salida de la compuerta 1
se encuentra en el estado ALTO, suministra una corriente IIH a la entrada de la
compuerta 2, la cual actúa en esencia como una resistencia a tierra. Por ende,
la salida de la compuerta 1 actúa como un suministro de corriente para la entrada
de la compuerta 1. Podemos considerar esto como si fuera una llave que actúa como
un suministro de agua.
La acción de drenado de corriente se ilustra en la figura 8-5(b). Aquí el circuito
de entrada de la compuerta 2 se representa como una resistencia enlazada a VCC,
la terminal positiva de una fuente de energía. Cuando la salida de la compuerta 1
cambie a su estado BAJO, la corriente fluirá en la dirección que se muestra desde
el circuito de entrada de la compuerta 2, de vuelta a través de la resistencia de la
compuerta 1 hasta tierra. En otras palabras, en el estado BAJO la salida del circuito
que maneja la entrada de la compuerta 2 debe poder drenar una corriente IIL que
proviene de esa entrada. Podemos considerar esto como un lavabo, dentro del cual
fluye el agua.
La distinción entre suministro de corriente y drenado de corriente es impor-
tante, y se volverá más aparente a medida que examinemos las diversas familias
lógicas.
Encapsulados de CI
Los desarrollos y avances en los circuitos integrados continúan a un ritmo acelerado.
Lo mismo se aplica a los encapsulados de CI. Existen diversos tipos de encapsulados,
los cuales difieren en cuanto al tamaño físico, a las condiciones ambientales y de
consumo de energía bajo las cuales el dispositivo puede operar en forma confiable,
y a la manera en que el encapsulado de CI se monta en el circuito impreso. La figura
8-6 muestra cinco encapsulados de CI representativos.
El paquete en la figura 8-6(a) es el DIP (encapsulado dual en línea), el cual ha
estado en operación durante un largo tiempo. Sus terminales (o puntas) caen sobre
los dos lados extensos del encapsulado rectangular. El dispositivo que se muestra es
un DIP de 24 terminales. Observe la presencia de la muesca en un extremo, la cual
se utiliza para localizar la terminal 1. Algunos DIPs utilizan un pequeño punto en la
superficie superior del encapsulado para localizar la terminal 1. Las terminales se
extienden en forma recta hacia fuera del paquete DIP, de manera que el CI pueda
insertarse en un zócalo para CI o en agujeros perforados a través de un circuito
FIGURA 8-5
Comparación de las
acciones de suministro
de corriente y
drenado de corriente.
BAJO
BAJO
+VCC
1
Compuerta reforzadora
VOH
Compuerta de carga
2
IIH
(a)
Suministro
de corriente
La compuerta reforzadora
suministra corriente a
la compuerta de carga
en el estado ALTO.
ALTO
ALTO
+VCC
1
Compuerta reforzadora
VOL
Compuerta de carga
2
IIL
Drenado
de corriente
La compuerta reforzadora
recibe (drena) corriente de
la compuerta de carga
en el estado BAJO.
(b)
496 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
impreso. El espaciamiento entre terminales (distancia entre terminales) es por lo
general de 100 mils (un mils es una milésima de pulgada). Los encapsulados DIP
siguen siendo los más populares para prototipos, tableros de experimentación (brea-
dboards) y experimentos educativos.
Casi todos las nuevas tarjetas de circuitos que se producen mediante el uso
de equipos de fabricación automatizados han dejado de utilizar encapsulados DIP,
cuyas terminales se insertan en agujeros en el tablero. Los nuevos métodos de fabri-
cación utilizan la tecnología de montaje superficial, la cual coloca un CI en almo-
hadillas conductoras en la superficie del tablero. Se mantienen fijos mediante una
pasta de soldadura y todo el tablero se calienta para crear una conexión soldada.
La precisión de la máquina de colocación permite un espaciamiento de las termina-
les muy estrecho. Las terminales en estos encapsulados de montaje superficial se
doblan hacia afuera de la cubierta de plástico, con lo cual se proporciona un área
superficial adecuada para la unión de soldadura. La forma de estas terminales le
ha hecho ganar a este encapsulado el sobrenombre de encapsulado tipo “ala de
gaviota”. Se dispone de muchos encapsulados distintos para los dispositivos de mon-
Terminales en
los cuatro lados Esquina
desportillada
Terminal 2
Terminal 1
Terminal 28
Terminal 24
(c)
PLCC de 28 terminales
(terminal J) montado en
zócalo o en superficie
Muesca
Terminal 1
(a)
DIP de 24 terminales
Terminal 12
Terminales en
los cuatro lados
Terminal 1
(d)
QFP de 48 terminales
(ala de gaviota)
montado en superficie
Terminal 12
Terminal 13
Terminal 48
Terminal 33
Terminal 32
Terminal 1
(b)
SOIC de 16
terminales (ala de gaviota)
montado en superficie
Terminal 8
Bisel
Terminal 9
Terminal 13
6
5
4
3
2
1
A B C D E F G H J K L M N P R T
1
2
3
4
5
6
A B C D E F G H J K L M N P R T
13.5 mm
LFBGA de 98 terminales
montado en superficie
(e)
5.5 mm
0.8 mm
1.5 mm
máx.
FIGURA 8-6 Encapsulados comunes de CI. (Cortesía de Texas Instruments.)
SECCIÓN 8-1/TERMINOLOGÍA DE CIS DIGITALES 497
TABLA 8-2 Encapsulados de CI.
Abreviatura Nombre del encapsulado Altura Distancia entre terminales
DIP Encapsulado dual en línea 200 mils (5.1 mm) 100 mils (2.54 mm)
SOIC Circuito integrado de pequeño contorno 2.65 mm 50 mils (1.27 mm)
SSOP Encapsulado reducido de contorno pequeño 2.0 mm 0.65 mm
TSSOP Encapsulado reducido delgado de contorno pequeño 1.1 mm 0.65 mm
TVSOP Encapsulado delgado de contorno muy pequeño 1.2 mm 0.4 mm
PLCC Portador de chip de plástico con terminales 4.5 mm 1.27 mm
QFP Encapsulado plano de cuatro lados 4.5 mm 0.635 mm
TQFP Encapsulado plano delgado de cuatro lados 1.6 mm 0.5 mm
LFBGA Matriz de rejillas de bolas finas de bajo perfil 1.5 mm 0.8 mm
PREGUNTAS DE REPASO
taje superficial. Algunos de los encapsulados más comunes que se utilizan para los
CIs lógicos se muestran en la figura 8-6. La tabla 8-2 muestra la definición de cada
abreviación, junto con sus dimensiones.
La necesidad de más y más conexiones para un CI complejo ha producido otro
encapsulado muy popular, el cual tiene terminales en los cuatro lados del chip. El
PLCC tiene terminales en forma de J que se acuñan por debajo del CI, como muestra
la figura 8-6(c). Estos dispositivos pueden montarse en la superficie de un circuito
impreso, pero también pueden colocarse en un zócalo especial para PLCC. Este
zócalo se utiliza con frecuencia para componentes con los que existe la posibilidad
de que necesiten reemplazarse para reparación o actualización, como los dispositi-
vos lógicos programables o las unidades centrales de procesamiento en las
computadoras. Los encapsulados QFP y TQFP tienen terminales en los cuatro
lados en un encapsulado de montaje superficial tipo ala de gaviota, como se mues-
tra en la figura 8-6(d). La matriz de rejillas de bolas (BGA) que se muestra en la
figura 8-6(e) es un encapsulado de montaje superficial que ofrece aún más densi-
dad. La matriz de rejillas de terminales (PGA) es un encapsulado similar que se
utiliza cuando los componentes deben estar en un zócalo para que puedan extraerse
con facilidad. El encapsulado PGA tiene una terminal larga en vez de una bola de
contacto (BGA) en cada posición de la rejilla.
La proliferación de equipos portátiles y pequeños para el consumidor, tales como
las cámaras de video, los teléfonos celulares, las computadoras (PDAs), los sistemas
de audio portátiles y demás dispositivos, ha creado la necesidad de colocar circuitos
lógicos en encapsulados muy pequeños. Ahora las compuertas lógicas están disponi-
bles en encapsulados individuales de montaje superficial que contienen una, dos o
tres compuertas (1G, 2G y 3G, en forma respectiva). Estos dispositivos pueden tener
hasta cinco o seis terminales (energía, tierra, de dos a tres entradas y una salida) y
pueden ocupar menos espacio que una sola letra de esta página.
1. Defina cada uno de los siguientes términos: VOH, VIL, IOL, IIH, tPLH, tPHL, ICCL, ICCH.
2. Verdadero o falso: si un circuito lógico tiene una capacidad de carga de 5, el cir-
cuito tiene cinco salidas.
3. Verdadero o falso: el margen de ruido en estado ALTO es la diferencia entre
VIH(mín) y VCC.
4. Describa la diferencia entre drenado de corriente y suministro de corriente.
5. ¿Cuál encapsulado de CI puede insertarse en zócalos?
6. ¿Cuál encapsulado tiene sus terminales dobladas debajo del CI?
7. ¿Qué diferencia hay entre los encapsulados de montaje superficial y los DIPs?
8. ¿Funcionará un dispositivo TTL estándar con un nivel de entrada de 1.7 V?
498 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
Tótem
R4
130 ⍀
R2
1.6 k⍀
R1
4 k⍀
Q3
Q2
Q1
A
B
Entradas
Múltiple
emisor R3
1 k⍀
Q4
Salida
VCC = +5 V
D1
D3
D2
Q1
D4
B
A Q2
R1
4 k⍀
+5 V
(b)
(a)
X
FIGURA 8-7
(a) Compuerta NAND
TTL básica;
(b) equivalente en
diodos para Q1.
8-2 LA FAMILIA LÓGICA TTL
Al momento de escribir este libro, todavía podían obtenerse muchos CIs de pequeña
a mediana escala (SSI y MSI) en las series de la tecnología TTL estándar que han
estado disponibles durante más de 30 años. Estas series originales de dispositivos y
sus descendientes en la familia TTL han tenido una tremenda influencia sobre las
características de todos los dispositivos lógicos en la actualidad. Los dispositivos
TTL aún se utilizan como lógica de “pegamento” que conecta los dispositivos más
complejos en los sistemas digitales. También se utilizan como circuitos de interfase
para dispositivos que requieren una operación con alta corriente. A pesar de que
la familia TTL bipolar ya prácticamente no es utilizada, comenzaremos nuestra dis-
cusión sobre los CIs lógicos con los dispositivos que dieron forma a la tecnología
digital.
El circuito lógico TTL básico es la compuerta NAND, la cual se muestra en la
figura 8-7(a). Aunque la familia TTL estándar está casi obsoleta, podemos aprender
mucho acerca de los miembros más actuales de la familia si estudiamos los circuitos
originales en su forma más simple. Las características de las entradas TTL provie-
nen de la configuración de múltiple emisor (unión de diodos) del transistor Q1. La
polarización directa de cualquiera (o ambas) de estas uniones de diodos encenderá
a Q1. Sólo cuando todas las uniones se polaricen en forma inversa se apagará el
transistor. Este transistor con entrada de múltiple emisor puede tener hasta ocho
emisores para una compuerta NAND de ocho entradas.
Observe además que en el lado de salida del circuito, los transistores Q3 y Q4
están en un arreglo tipo tótem. El tótem está compuesto de dos interruptores de
transistor, Q3 y Q4. El trabajo de Q3 es conectar VCC a la salida para crear un nivel
ALTO lógico. El trabajo de Q4 es conectar la salida a tierra para crear un nivel BAJO
lógico. Como veremos pronto, en la operación normal Q3 o Q4 estarán conduciendo,
dependiendo del estado lógico de la salida.
Operación del circuito: estado BAJO
Aunque el circuito se ve en extremo complejo, podemos simplificar su análisis de
cierta forma si utilizamos el equivalente en diodos del transistor de múltiple emisor
Q1, como se muestra en la figura 8-7(b). Los diodos D2 y D3 representan las dos unio-
nes E-B de Q1, y D4 es la unión colector-base (C-B). En el siguiente análisis utilizare-
mos esta representación para Q4.
APAGADO
APAGADO
ENCENDIDO
ENCENDIDO
ENCENDIDO
APAGADO
Salida en BAJO
(a)
–
0.7 V
–
+
Q4
VOL ⭐ 0.4 V
+
X
D1
Q3
130 V
R4
R2
1.6 k⍀
0.8 V
Q2
+5 V
1 k⍀
R3
D4
Y
4 k⍀
R1
A = +5 V
B = +5 V
D2
D3
IIH = 10 μA (típica)
Condiciones
de entrada
A y B están
ambas en ALTO
(肁 2 V)
Las corrientes
de entrada son
muy bajas
IIH = 10 A
μ
Condiciones
de salida
Q3 APAGADO
Q4 está ENCENDIDO,
por lo que VX está
en BAJO (聿 0.4 V)
APAGADO
ENCENDIDO
APAGADO APAGADO
APAGADO
ENCENDIDO
Salida en ALTO
(b)
–
Q4
VOH 肁 2.4 V
+
X
D1
Q3
130 ⍀
R4
R2
1.6 k⍀
Q2
+5 V
1 k⍀
R3
D4
Y
4 k⍀
R1
A = +5 V
B
D2
D3
IIL = 1.1 mA (típica)
Condiciones
de entrada
A o B o ambas
están en BAJO
(聿 0.8 V)
La corriente fluye
de vuelta a tierra a
través de la terminal
de entrada en BAJO.
IIL = 1.1 mA
Condiciones
de salida
Q4 APAGADO
Q3 actúa como
seguidor de emisor
y VOH 肁 2.4 V,
por lo general 3.5 V
– +
FIGURA 8-8 Compuerta NAND TTL en sus dos estados de salida.
Primero consideremos el caso en el que la salida está en BAJO. La figura 8-8(a)
muestra esta situación con ambas entradas A y B en 5 V. Los 5 V en los cátodos
de D2 y D3 apagarán estos diodos y casi no conducirán corriente. La fuente de 5 V
empujará la corriente a través de R1 y D4 hacia la base de Q2, el cual se encenderá.
La corriente del emisor de Q2 fluirá hacia la base de Q4 y lo encenderá. Al mismo
tiempo, el flujo de la corriente de colector de Q2 producirá una caída de voltaje a
través de R2, con lo que se reducirá el voltaje de colector de Q2 a un valor bajo que
no será suficiente para encender a Q3.
El voltaje en el colector de Q2 se muestra como un valor aproximado a 0.8V. Esto
se debe a que el emisor de Q2 está a 0.7V con respecto a tierra debido al voltaje posi-
tivo en E-B de Q4, y el colector de Q2 está a 0.1 V con respecto a su emisor, debido a
SECCIÓN 8-2/LA FAMILIA LÓGICA TTL 499
500 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
VCE(sat). Estos 0.8 V en la base de Q3 no son suficientes para la polarización directa
de la unión E-B de Q3 y el diodo D1. De hecho, D1 se necesita para mantener a Q3
apagado en esta situación.
Con Q4 encendido, la terminal de salida X estará a un voltaje muy bajo debido
a que la resistencia en el estado ENCENDIDO de Q4 será baja (de 1 a 25 ). En rea-
lidad, el voltaje de salida VOL dependerá de cuánta corriente de colector conduzca
Q4. Con Q3 apagado no hay corriente que provenga de la terminal de 5 V a través
de R4. Como veremos, la corriente de colector de Q4 llegará de las entradas TTL a las
que está conectada la terminal X.
Es importante observar que las entradas en ALTO en A y B tendrán que suminis-
trar sólo una corriente de fuga muy pequeña en el diodo.Por lo general,esta corriente
IIH es tan sólo de un valor aproximado a los 10 μA, a temperatura ambiente.
Operación del circuito: estado ALTO
La figura 8-8(b) muestra la situación en la que la salida del circuito está en ALTO.
Esta situación puede producirse si se conecta una de las entradas (o ambas) a un
nivel BAJO. Aquí, la entrada B está conectada a tierra. Esto producirá la polariza-
ción directa de D3, de forma que la corriente fluirá de la terminal de alimentación
de 5V a través de R1 y D3, y de la terminal B a tierra. El voltaje positivo a través de D3
retendrá el punto Y a un valor aproximado a los 0.7 V. Este voltaje no es suficiente
para polarizar en forma directa a D4 y la unión E-B de Q2 lo necesario como para la
conducción.
Con Q2 apagado no hay corriente base para Q4, por lo cual se apaga. Como no
hay corriente de colector en Q2, el voltaje en la base de Q3 será lo suficientemente
grande como para polarizar en forma directa a Q3 y a D1, de manera que Q3 conducirá.
En realidad, Q3 actúa como un seguidor de emisor, ya que en esencia la terminal de
salida X se encuentra en su emisor. Sin carga conectada del punto X a tierra, VOH
tendrá un valor aproximado entre 3.4 y 3.8 V, ya que se restan dos caídas de 0.7 V
en los diodos (E-B de Q3 y D1) de los 5 V que se aplican a la base de Q3. Este voltaje
disminuirá bajo una carga, ya que ésta drenará la corriente del emisor de Q3, el cual
drena la corriente de la base a través de R2 y, por lo tanto, se incrementa la caída de
voltaje a través de R2.
Es importante observar que hay una corriente sustancial que fluye de vuelta
a través de la terminal de entrada B a tierra, cuando B se mantiene en BAJO. Esta
corriente IIL se determina con base en el valor de la resistencia R1, la cual variará de
serie a serie. Para la familia TTL estándar, es de un valor aproximado a 1.1 mA. La
entrada B en BAJO actúa como un drenador a tierra para esta corriente.
Acción de drenado de corriente
Una salida TTL actúa como un drenador de corriente en el estado BAJO, ya que
recibe corriente de la entrada de la compuerta que está controlando. La figura 8-9
muestra una compuerta TTL que maneja la entrada de otra compuerta (la carga)
para ambos estados de voltaje de salida. En la situación del estado de salida en
BAJO que se describe en la figura 8-9(a), el transistor Q4 de la compuerta reforza-
dora está encendido y en esencia crea un “corto” entre X y tierra. Este BAJO voltaje
en X polariza en forma directa la unión emisor-base de Q1 y la corriente fluye, como
se muestra, de vuelta a través de Q4. Por ende, Q4 está realizando una acción de dre-
nado de corriente, la cual deriva su corriente de la de entrada (IIL) de la compuerta
de carga. Con frecuencia nos referiremos a Q4 como el transistor de drenado de
corriente, o como el transistor de puesta en bajo, ya que reduce el voltaje de salida
hasta su estado BAJO.
Acción de suministro de corriente
En el estado ALTO, una salida TTL actúa como un suministro de corriente. Esto
se muestra en la figura 8-9(b), en donde el transistor Q3 suministra la corriente
de entrada IIH que requiere el transistor Q1 de la compuerta de carga. Como se
dijo antes, ésta es una pequeña corriente de fuga con polarización inversa (por lo
general 10 A). A menudo nos referiremos a Q3 como el transistor de suministro de
corriente o transistor de puesta en alto. En algunas de las series TTL más modernas,
el circuito de puesta en alto está compuesto de dos transistores, en vez de un tran-
sistor y un diodo.
Circuito de salida en forma de tótem
Debemos mencionar varios puntos en relación con el arreglo en forma de tótem del
circuito de salida TTL, como se muestra en la figura 8-9, ya que no está claro por
qué se utiliza. Puede lograrse la misma lógica si se eliminan Q3 y D1, y se conecta la
parte inferior de R4 al colector de Q4. Pero este arreglo significaría que Q4 tendría
que conducir una corriente muy pesada en su estado de saturación (5 V/130  ≈ 40
mA). Con Q3 en el circuito no habrá corriente a través de R4 en el estado de salida
BAJO. Esto es importante ya que mantiene la disipación de energía del circuito en
un nivel bajo.
En el estado de salida ALTO ocurre otra ventaja de este arreglo. Aquí, Q3 actúa
como un seguidor de emisor con su impedancia de salida baja asociada (por lo gene-
ral de 10 ). Esta impedancia de salida baja proporciona una constante de tiempo
corta para cargar cualquier carga capacitiva en la salida. Esta acción, que por lo
general se le conoce como ascenso (pull-up) activo, proporciona formas de onda con
un tiempo de elevación muy rápido en las salidas TTL.
Una desventaja del arreglo de salida en forma de tótem se produce durante
la transición de BAJO a ALTO. Desafortunadamente, Q4 se apaga con más lentitud
que la velocidad con que Q3 se enciende, por lo que hay un periodo de unos cuantos
nanosegundos, durante los cuales ambos transistores están conduciendo y se drena
una corriente relativamente grande (de 30 a 40 mA) de la fuente de 5 V. Esto puede
presentar un problema que examinaremos después.
Salida en
BAJO
APAGADO
ENCEND DO
ENCENDIDO
Circuito de salida de
la compuerta reforzadora
Circuito de entrada de
la compuerta de carga
(a)
VOL
Q4
X
+
–
D1
Q3
R4
130 ⍀
+5 V
IIL
Q1
R1
4 k⍀
+5 V
Salida en
ALTO
ENCENDIDO
APAGADO
APAGADO
Salida de la compuerta
reforzadora
Entrada de la
compuerta de carga
(b)
VOH
Q4
+
–
D1
Q3
R4
+5 V
IIH
Q1
R1
4 k⍀
+5 V
FIGURA 8-9 (a) Cuando la salida TTL se encuentra en el estado BAJO, Q4 actúa como drenador
de corriente y deriva su corriente de la carga. (b) En el estado de salida ALTO, Q3 actúa como suministro de
corriente para la compuerta de carga.
SECCIÓN 8-2/LA FAMILIA LÓGICA TTL 501
502 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
Entrada A
Entrada B Q2
Q4
R5
1 k⍀
Q6
X
Salida
4 k⍀
R2
Q1
Q3 Q5
D1
130 k⍀
R4
1.6 k⍀
R3
4 k⍀
R1
+VCC
FIGURA 8-10 Circuito
TTL de compuerta NOR.
PREGUNTAS DE REPASO
Compuerta NOR TTL
La figura 8-10 muestra el circuito interno para una compuerta NOR TTL. No reali-
zaremos un análisis detallado de este circuito, pero es importante observar cómo
se compara con el circuito NAND de la figura 8-8. En el lado de entrada podemos
ver que el circuito NOR no utiliza un transistor con múltiple emisor; en vez de ello,
cada entrada se aplica al emisor de un transistor separado. En el lado de salida, el
circuito NOR utiliza el mismo arreglo en forma de tótem que el circuito NAND.
Resumen
Todos los circuitos TTL tienen una estructura similar. Las compuertas NAND y AND
utilizan entradas de transistor con múltiple emisor o uniones con varios diodos; las
compuertas NOR y OR utilizan transistores de entrada separados. En cualquier
caso, la entrada será el cátodo (región N) de una unión P-N, por lo que un voltaje
de entrada en ALTO desconectará la unión y sólo fluirá una pequeña corriente de
fuga (IIH). En contraste, un voltaje de entrada en BAJO enciende la unión y en con-
secuencia, fluirá una corriente relativamente grande (IIL) a través de la fuente de la
señal. La mayoría de los circuitos TTL tendrán algún tipo de configuración de salida
en forma de tótem. Hay algunas excepciones que veremos más adelante.
1. Verdadero o falso: una salida TTL actúa como un drenador de corriente en el
estado BAJO.
2. ¿En qué estado de entrada TTL fluye la mayor cantidad de corriente de
entrada?
3. Indique las ventajas y desventajas de una salida en forma de tótem.
4. ¿Cuál transistor TTL es el transistor de puesta en alto en el circuito NAND?
5. ¿Cuál transistor TTL es el transistor de puesta en bajo en el circuito NOR?
6. ¿Qué diferencia hay entre los circuitos TTL NOR y NAND?
8-3 HOJAS TÉCNICAS TTL
En 1964, Texas Instruments Corporation introdujo la primera línea de CIs TTL
estándar. La serie conocida como 54/74 ha sido una de las familias lógicas de CIs más
utilizadas. Nosotros nos referiremos a ella simplemente como la serie 74, ya que la
principal diferencia entre las versiones 54 y 74 es que los dispositivos en la serie 54
pueden operar sobre un intervalo más amplio de temperaturas y voltajes de alimen-
tación. Muchos fabricantes de semiconductores aún producen CIs TTL. Por fortuna
todos utilizan el mismo sistema de numeración, por lo que el número CI básico es
el mismo de en cualquier fabricante. No obstante, cada fabricante, por lo general,
adjunta su propio prefijo especial al número del CI. Por ejemplo,Texas Instruments
utiliza el prefijo SN, Nacional Semiconductor utiliza DM y Signetics utiliza la S. Así,
dependiendo del fabricante, usted podrá ver un chip de compuerta NOR cuádruple
etiquetado como DM7402, SN7402, S7402, o con cualquier otra designación similar.
La parte importante es el número 7402, que es el mismo para todos los fabricantes.
Como vimos en el capítulo 4, hay varias series en la familia TTL de disposi-
tivos lógicos (74, 74LS, 74S, etc.). Los fabricantes ya no recomiendan el uso de la
serie estándar original y sus descendientes inmediatos (74, 74LS, 74S) en los nue-
vos diseños. A pesar de todo hay una demanda en el mercado suficiente como para
mantenerlos en producción. Es vital tener una comprensión de las características
que definen las capacidades y limitaciones de cualquier dispositivo lógico. En esta
sección definiremos esas características mediante el uso de la serie Schottky (ALS)
de baja potencia y le ayudaremos a interpretar una hoja técnica ordinaria. Más ade-
lante introduciremos las demás series TTL y compararemos sus características.
Para encontrar toda la información que necesitemos sobre un CI podemos con-
sultar las hojas técnicas publicadas por el fabricante para esa familia de CIs espe-
cífica. Podemos obtener estas hojas técnicas de los hojas de datos, CD-ROMs o del
sitio Web del fabricante de CIs. La figura 8-11 es la hoja técnica del fabricante para
el CI de compuerta NAND 74ALS00, en la cual se muestran las condiciones de ope-
ración recomendadas, las características eléctricas y las de conmutación. En esta
hoja técnica encontrará la mayoría de los parámetros que veremos en los siguientes
párrafos. A medida que veamos cada una de los parámetros, será conveniente que
consulte esta hoja técnica para que vea de dónde provino la información.
Voltaje de alimentación e intervalo de temperatura
Tanto la serie 74ALS como la serie 54ALS utilizan un voltaje de alimentación nomi-
nal (VCC) de 5 V, pero pueden tolerar una variación en ésta de 4.5 a 5.5 V. La serie
74ALS está diseñada para operar en forma apropiada en temperaturas ambientales
que varían de 0 a 70°C, mientras que la serie 54ALS puede manejar temperaturas
de 5 a 125°C. Debido a su mayor tolerancia a las variaciones en voltaje y tempe-
ratura, la serie 54ALS es más costosa; se emplea sólo en aplicaciones en las que debe
mantenerse una operación confiable sobre una extensa variedad de condiciones.
Algunos ejemplos son las aplicaciones militares y espaciales.
Niveles de voltaje
En la hoja técnica de la figura 8-11 encontrará los niveles de voltaje lógicos de
entrada y salida para la serie 74ALS. La tabla 8-3 los presenta en forma sintetizada.
Los valores mínimo y máximo que se muestran son para las condiciones de la fuente
de energía, temperatura y condiciones de carga para el peor de los casos. Una ins-
pección de la tabla nos revela un voltaje de salida en 0 lógico máximo garantizado
VOL  0.5 V, el cual es 300 mV menor que el voltaje en 0 lógico necesario en la
entrada VIL  0.8 V. Esto significa que el margen de ruido de corriente directa en
estado BAJO garantizado es de 300 mV. Es decir,
De manera similar, se garantiza un valor mínimo de 2.5V en la salida en 1 lógico
VOH, la cual es 500 mV mayor que el voltaje en 1 lógico necesario en la entrada, VIH
 2.0 V. Por lo tanto, el margen de ruido de corriente directa en estado ALTO es de
500 mV.
Por lo tanto, el margen de ruido de corriente directa garantizado para el peor de
los casos para la serie 74ALS es de 300 mV.
VNL = VIL(max) - VOL(max) = 0.8 V - 0.5 V = 0.3 V = 300 mV
´ ´
VNH = VOH(min) - VIH(min) = 2.5 V - 2.0 V = 0.5 V = 500 mV
mín mín
SECCIÓN 8-3/HOJAS TÉCNICAS TTL 503
504 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
condiciones de operación recomendadas
Voltaje de alimentación
Voltaje de entrada de nivel alto
Voltaje de entrada de nivel bajo
Corriente de salida de nivel alto
Corriente de salida de nivel bajo
Temperatura de operación al aire libre
Se aplica sobre el intervalo de temperatura de 55°C a 70°C.
´ ´ ´ ´
´ ´ ´ ´
UNIDAD
UNIDAD
características eléctricas sobre el intervalo de temperatura de operación al aire libre, a menos que se
indique lo contrario
PARÁMETRO CONDICIONES DE PRUEBA
TIP TIP
Todos los valores típicos están a VCC = 5V, TA = 25°C
Se han elegido las condiciones de salida de forma que se produzca una corriente que se aproxime muy de cerca a la mitad de la corriente de salida de corto circuito IOS.
características de conmutación (vea la figura 1)
PARÁMETRO
DESDE
(ENTRADA)
HACIA
(SALIDA) UNIDAD
Para las condiciones que se muestran como MÍN o MÁX, utilice el valor apropiado que se especifica bajo las condiciones de operación recomendada.
MÍN a MÁX
o
a
´ ´ ´ ´
Se aplica sobre el intervalo de temperatura de 70°C a 125°C.
FIGURA 8-11 Hoja técnica para el CI de compuerta NAND 74ALS00. (Cortesía de
Texas Instruments.)
TABLA 8-3 Niveles de
voltaje de la serie 74ALS. Mínimo Típico Máximo
VOL — 0.35 0.5
VOH 2.5 3.4 —
VIL — — 0.8
VIH 2.0 — —
Clasificaciones máximas de voltaje
Los valores de voltaje en la tabla 8-3 no incluyen las clasificaciones máximas abso-
lutas más allá de las cuales puede atrofiarse la vida útil del CI. Por lo general, las
condiciones de operación máximas absolutas se proporcionan en la parte superior
de una hoja técnica (que no se muestra en la figura 8-11). Los voltajes que se aplican
a cualquier entrada del CI de esta serie nunca deben exceder de 7.0 V. Un voltaje
EJEMPLO 8-2
mayor de 7.0 V que se aplique a un emisor de entrada puede provocar un rompi-
miento inverso de la unión E-B de Q1.
También hay un límite en el voltaje máximo negativo que puede aplicarse a una
entrada TTL. Este límite de 0.5 V se produce debido al hecho de que la mayoría de
los circuitos TTL emplean diodos protectores en paralelo en cada entrada. Omitimos
estos diodos a propósito en nuestro análisis anterior, ya que no entran en la operación
normal del circuito. Se conectan de cada entrada a tierra para limitar las excursiones
de voltaje de entrada negativo que ocurren con frecuencia cuando las señales lógicas
tienen sobretiros excesivos. Con estos diodos no debemos aplicar más de 0.5 V a
una entrada, ya que los diodos protectores comenzarían a conducir y drenarían una
cantidad considerable de corriente; tal vez el diodo podría quedar en corto y se pro-
duciría una entrada dañada en forma permanente.
Disipación de potencia
Una compuerta NAND TTL ALS disipa una potencia promedio de 2.4 mW. Esto se
debe a que ICCH  0.85 mA e ICCL  3 mA, lo cual produce ICC(prom)  1.93 A y
PD(prom)  1.93 mA  5V  9.65 mW. Estos 9.65 mW son la potencia total requerida
por las cuatro compuertas en el chip. Por ende, una compuerta NAND requiere una
potencia promedio de 2.4 mW.
Tiempos de propagación
La hoja de datos proporciona los tiempos de propagación mínimo y máximo.
Suponiendo que el valor típico es una cantidad intermedia, tenemos que tPLH  7 ns
y tPHL  5 ns. El retraso de propagación promedio total tpd(prom)  6 ns.
Consulte la hoja de datos para el CI NAND cuádruple de dos entradas 74ALS00 de
la figura 8-11. Determine la máxima disipación de potencia promedio y el máximo
retraso de propagación promedio de una sola compuerta.
Solución
En las características eléctricas busque los valores máximos de ICCH e ICCL. Los valo-
res son 0.85 mA y 3 mA, respectivamente. Por lo tanto, la ICC promedio es de 1.9 mA.
La potencia promedio se obtiene al multiplicar por VCC. La hoja técnica indica que
estos valores de ICC se obtuvieron cuando VCC se encontraba en su valor máximo (5.5V
para la serie 74ALS). Por ende, tenemos que
PD(prom)  1.9 mA  5.5 V  10.45 mW
como la potencia que disipa todo el CI. Podemos determinar la disipación de poten-
cia de una compuerta NAND si dividimos esta cantidad entre 4:
PD(prom)  2.6 mW por compuerta
Como este parámetro se calculó utilizando los valores máximos de corriente y de vol-
taje, es la potencia promedio máxima que disipará una compuerta NAND 74ALS00
bajo las peores condiciones. A menudo los diseñadores utilizan estos valores para
asegurar que sus circuitos funcionen bajo todas las condiciones.
Los tiempos de propagación máximos para una compuerta NAND 74ALS00 se
listan como
tPLH  11 ns tPHL  8 ns
SECCIÓN 8-3/HOJAS TÉCNICAS TTL 505
506 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
así, el tiempo de propagación promedio máximo es
De nuevo, éste es el máximo tiempo de propagación promedio posible para el peor
de los casos.
8-4 CARACTERÍSTICAS DE LAS SERIES TTL
La serie estándar 74 de TTL ha evolucionado a varias series más.Todas ellas ofrecen
una amplia variedad de compuertas y flip-flops en la línea de integración a pequeña
escala (SSI), y contadores, registros, multiplexores, decodificadores/codificadores
y demás funciones lógicas en su línea de integración a mediana escala (MSI). Las
siguientes series TTL (a las que con frecuencia se les llama “subfamilias”) propor-
cionan un amplio intervalo de velocidad y potencia.
TTL estándar, serie 74
En la sección 8-2 hablamos sobre la serie 74 estándar original de la lógica TTL. Estos
dispositivos siguen disponibles, pero en la mayoría de los casos no son una opción
razonable para los nuevos diseños, ya que ahora están disponibles otros dispositivos
con un rendimiento mucho mayor y a un menor costo.
TTL Schottky, serie 74S
La serie 7400 opera mediante el uso de la conmutación saturada, en la cual muchos
de los transistores al conducir estarán en la condición saturada. Esta operación pro-
duce un retraso en el tiempo de almacenamiento tS cuando los transistores cambian
de ENCENDIDO a APAGADO, y limita la velocidad de conmutación del circuito.
La serie 74S reduce este retraso en el tiempo de almacenamiento al no permitir
que el transistor caiga tanto en saturación. Para ello utiliza un diodo de barrera
Schottky (SBD), el cual se conecta entre la base y el colector de cada transistor,
como se muestra en la figura 8-12(a). El SBD tiene un voltaje positivo de sólo 0.25V.
Por ende, cuando la unión C-B se polariza en forma directa al comienzo de la satura-
ción, el SBD conducirá y desviará parte de la corriente de entrada de la base. Esto
reduce el exceso de corriente base y disminuye el retraso de tiempo de almacena-
miento al momento en que el transistor se apague.
Como se muestra en la figura 8-12(a), la combinación de transistor/SBD recibe un
símbolo especial. Este símbolo se utiliza para todos los transistores en el diagrama
del circuito para la compuerta NAND 74S00 que se muestra en la figura 8-12(b).
Esta compuerta NAND 74S00 tiene un retraso de propagación promedio de sólo
3 ns, lo cual es seis veces más rápido que el 7400. Observe la presencia de los diodos
limitadores D1 y D2 para limitar los voltajes de entrada negativos.
Los circuitos en la serie 74S también utilizan valores de resistencias menores
para ayudar a mejorar los tiempos de conmutación. Esto incrementa la disipación
de potencia promedio del circuito a un valor aproximado de 20 mW, casi dos veces
más que la serie 74. Los circuitos 74S también utilizan un par Darlington (Q3 y
Q4) para proveer un tiempo de elevación de salida más corto cuando cambian de
ENCENDIDO a APAGADO.
TTL Schottky de baja potencia, serie 74LS (LS-TTL)
La serie 74LS es una versión de menor velocidad y potencia que la serie 74S. Utiliza
el transistor Schottky-clamped, pero con valores de resistencia más grandes que la
serie 74S. Estos valores de resistencia mayores reducen el requerimiento de energía
del circuito, pero a expensas de un incremento en los tiempos de conmutación. Por
=
11 + 8
2
= 9.5 ns
tpd(prom)
Q6
Q5
370 ⍀
3.5 k⍀
Q4
55 ⍀
760 ⍀
2.8 k⍀
VCC
Q3
Q2
Q1
D2
D1
Entradas
Diodo
Schottky
(a) (b)
Salida
350 ⍀
FIGURA 8-12 (a) Transistor Schottky-clamped; (b) compuerta NAND básica en la serie S-TTL.
TABLA 8-5
74LS 74ALS
Tiempo de propagación 9.5 ns 4 ns
Disipación de potencia 2 mW 1.2 mW
TABLA 8-4
74S 74AS
Tiempo de propagación 3 ns 1.7 ns
Disipación de potencia 20 mW 8 mW
lo general, una compuerta NAND en la serie 74LS tendrá un retraso de propagación
promedio de 9.5 ns y una disipación de potencia promedio de 2 mW.
TTL Schottky avanzado, serie 74AS (AS-TTL)
Las innovaciones en el diseño de circuitos integrados condujeron al desarrollo de
dos series TTL mejoradas: Schottky avanzado (74AS) y Schottky avanzado de baja
potencia (74ALS). La serie 74AS proporciona una mejora considerable en veloci-
dad, en comparación con la serie 74S, con un requerimiento mucho menor de ener-
gía. La tabla 8-4 muestra la comparación para una compuerta NAND en cada serie.
Esta comparación muestra con claridad la ventaja de la serie 74AS: la serie TTL es
más rápida, y su disipación de potencia es mucho menor que la de la serie 74S. La
serie 74AS tiene otras mejoras, incluyendo requerimientos menores de corriente de
entrada (IIL, IIH), lo cual produce una capacidad de carga mayor que el de la serie
74S.
TTL Schottky avanzado de baja potencia, serie 74ALS
Ésta es una versión mejorada de la serie 74LS, tanto en velocidad como en disipa-
ción de potencia, según los números mostrados en la tabla 8-5. La serie 74ALS tiene
la menor disipación de potencia de las compuertas de todas las series TTL.
SECCIÓN 8-4/CARACTERÍSTICAS DE LAS SERIES TTL 507
508 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
EJEMPLO 8-3
EJEMPLO 8-4
74F: TTL rápida
Esta serie utiliza una nueva técnica de fabricación de circuitos integrados para
reducir las capacitancias entre dispositivos y por ende se logra reducir los tiempos
de propagación. Una compuerta NAND ordinaria tiene un tiempo de propagación
promedio de 3 ns y un consumo de energía de 6 mW. Los CIs en esta serie están
designados con la letra F en su número de pieza. Por ejemplo, el 74F04 es un chip
inversor hexadecimal.
Comparación de las características de las series TTL
La tabla 8-6 proporciona los valores típicos para algunas de las características más
importantes de cada una de las series TTL.Todas las clasificaciones de rendimiento,
excepto la clasificación de frecuencia máxima de reloj, son para una compuerta
NAND en cada serie. La frecuencia de reloj máxima se especifica como la máxima
frecuencia que puede utilizarse para conmutar un flip-flop J-K. Esto nos propor-
ciona una medida útil del intervalo de frecuencia a través del cual puede operarse
cada una de las series de CIs.
Utilice la tabla 8-6 para calcular los márgenes de ruido de corriente directa para un
CI 74LS ordinario. ¿Cómo se compara esto con los márgenes de ruido de la familia
TTL estándar?
Solución
¿Cuál de las series TTL puede manejar la mayor cantidad de entradas de dispositi-
vos de la misma serie?
Solución
La serie 74AS tiene la capacidad de carga más alto (40), lo cual significa que una
compuerta NAND 74AS00 puede manejar 40 entradas de otros dispositivos 74AS. SI
TABLA 8-6 Características típicas de las series TTL.
74 74S 74LS 74AS 74ALS 74F
Clasificaciones de rendimiento
Tiempo de propagación (ns) 9 3 9.5 1.7 4 3
Disipación de potencia (mW) 10 20 2 8 1.2 6
Frecuencia máxima de reloj (MHz) 35 125 45 200 70 100
Capacidad de carga (misma serie) 10 20 20 40 20 33
Parámetros de voltaje
VOH(mín) 2.4 2.7 2.7 2.5 2.5 2.5
VOL(máx) 0.4 0.5 0.5 0.5 0.5 0.5
VIH(mín) 2.0 2.0 2.0 2.0 2.0 2.0
VIL(máx) 0.8 0.8 0.8 0.8 0.8 0.8
74LS 74
= 0.3 V
= 0.4 V
= 0.8 V - 0.5 V
VNL = 0.8 V - 0.4 V
VNL = VIL(max) - VOL(max)
= 0.7 V
= 0.4 V
= 2.7 V - 2.0 V
VNH = 2.4 V - 2.0 V
VNH = VOH(min) - VIH(min)
mín mín
´ ´
(a)
ENCENDIDO
APAGADO
Estado BAJO
Q4 VOL
–
+
D1
Q3
R2 R4
+5 V +5 V +5 V
IOL
IIL IIL
(b)
Q4 VOH
–
+
D1
Q3
R2 R4
+5 V +5 V +5 V
IOH IIH IIH
APAGADO
ENCENDIDO
Estado ALTO
FIGURA 8-13 Las corrientes cuando una salida TTL maneja varias entradas.
PREGUNTAS DE REPASO
queremos determinar el número de entradas que puede soportar una salida de una
serie TTL distinta, tendremos que conocer las corrientes de entrada y de salida de
las dos series. En la siguiente sección trataremos este tema.
1. (a) ¿Cuál de las series TTL es la mejor en altas frecuencias?
(b) ¿Cuál de las series TTL tiene el mayor margen de ruido en estado ALTO?
(c) ¿Cuál de las series se ha vuelto en esencia obsoleta en los nuevos diseños?
(d) ¿Cuál de las series utiliza un diodo especial para reducir el tiempo de con-
mutación?
(e) ¿Cuál de las series sería la más adecuada para un circuito operado por bate-
rías que funcione a 10 MHz?
2. Suponiendo que cada chip tiene el mismo costo, ¿por qué preferiría usted usar
un contador 74ALS193 en vez de un 74LS193 o un 74AS193 en un circuito que
opere con un reloj de 40-MHz?
3. Identifique los transistores de puesta en alto y de puesta en bajo para el circuito
74S en la figura 8-12.
8-5 CAPACIDAD DE CARGA DE LA FAMILIA TTL
Es importante comprender qué es lo que determina la capacidad de carga o la capa-
cidad de control de carga de la salida de un CI. La figura 8-13(a) muestra una salida
TTL estándar en el estado BAJO, conectada para manejar varias entradas TTL
estándar. El transistor Q4 está encendido y actúa como drenador de corriente para
una cantidad de corriente IOL que es la suma de las corrientes IIL de cada entrada.
En su estado ENCENDIDO, la resistencia de colector-emisor de Q4 es muy pequeña
pero no es cero, por lo que la corriente IOL producirá una caída de voltaje VOL. Este
voltaje no debe exceder el límite VOL(máx) del CI, el cual limita el valor máximo de
IOL y en consecuencia el número de cargas que pueden manejarse.
SECCIÓN 8-5/CAPACIDAD DE CARGA DE LA FAMILIA TTL 509
510 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
EJEMPLO 8-5
Para ilustrarlo, suponga que los CIs son de la serie 74 y que cada IIL es de 1.6
mA. De la tabla 8-6 podemos ver que la serie 74 tiene VOL(máx)  0.4V y VIL(máx) 
0.8V. Supongamos además que Q4 puede drenar hasta 16 mA antes de que su voltaje
de salida llegue a VOL(máx)  0.4 V. Esto significa que puede drenar la corriente de
hasta 16 mA/1.6mA  10 cargas. Si se conecta a más de 10 cargas, su IOL se incre-
mentará y hará que VOL se incremente por encima de 0.4 V. Por lo general, esto es
indeseable, ya que reduce el margen de ruido en las entradas del CI [recuerde que
VNL  VIL(máx)  VOL(máx)]. De hecho, si VOL se eleva por encima de VIL(máx) 
0.8 V, estará en el intervalo indeterminado.
Una situación similar se presenta en el estado ALTO que se describe en la
figura 8-13(b). Aquí Q3 actúa como un seguidor de emisor que está suministrando
una corriente total IOH, que es la suma de las corrientes IIH de las distintas entradas
TTL. Si se están manejando demasiadas cargas, esta corriente IOH aumentará lo
suficiente como para hacer que las caídas de voltaje a través de R2, la unión emisor-
base de Q3 y D1 lleven a VOH por debajo de VOH(mín). Esto también es indeseable, ya
que reduce el margen de ruido en estado ALTO y podría incluso ocasionar que VOH
caiga en el intervalo indeterminado.
Lo que todo esto significa es que una salida TTL tiene un límite IOL(máx) en
relación con la cantidad de corriente que puede drenar en el estado BAJO.También
tiene un límite IOH(máx) en relación con la cantidad de corriente que puede sumi-
nistrar en el estado ALTO. Estos límites de corriente de salida no deben excederse
si los niveles de voltaje de salida se van a mantener dentro de sus intervalos espe-
cificados.
Determinación de la capacidad de carga
Para determinar cuántas entradas distintas puede controlar la salida de un CI,
necesitamos conocer la capacidad de control de corriente de la salida [es decir,IOL(máx)
e IOH(máx)] y los requerimientos de corriente de cada entrada (es decir, IIL e
IIH). Esta información siempre se presenta de alguna forma en la hoja técnica
del fabricante de CIs. Los siguientes ejemplos ilustrarán un tipo de situación.
¿Cuántas entradas de una compuerta NAND 74ALS00 pueden manejarse mediante
la salida de una compuerta NAND 74ALS00?
Solución
Consideraremos primero el estado BAJO,como se describe en la figura 8-14.Consulte
la hoja técnica del 74ALS00 en la figura 8-11 y busque
IOL(máx)  8 mA
IIL(máx)  0.1 mA
Esto indica que una salida 74ALS00 puede drenar un máximo de 8 mA y que cada
entrada del 74ALS00 suministrará un máximo de 0.1 mA de regreso a través de la
salida de la compuerta. Por ende, el número de entradas que se pueden manejar en
el estado BAJO se obtiene de la siguiente manera:
= 80
=
8 mA
0.1 mA
) =
IOL(max)
IIL(max)
capacidad de carga (BAJO)
´
´
FIGURA 8-14 Ejemplo 8-5.
IIL
IIL
IOL
IIL
*Todas son compuertas NAND 74ALS00.
EJEMPLO 8-6
(Nota: la entrada para IIL es 0.1 mA. El signo negativo se utiliza para indicar que
esta corriente fluye hacia fuera de la terminal de entrada; en este caso podemos
ignorar este signo). El estado ALTO se analiza de la misma forma. Consulte la hoja
técnica para buscar valores para IOH e IIH; ignore los signos negativos.
Por lo tanto, el número de entradas que pueden manejarse en el estado ALTO es
Si la capacidad de carga (BAJO) y la capacidad de carga (ALTO) no son iguales,
como algunas veces pasa, se elije la menor de las dos. Por ende, a la compuerta
NAND 74ALS00 se le pueden conectar hasta 20 compuertas NAND 74ALS00 en su
salida.
Consulte la hoja técnica en el CD ROM de TI (o en la tabla 8-7) y determine cuántas
compuertas NAND 74AS20 pueden controlarse mediante la salida de otro 74AS20.
Solución
La hoja técnica del 74AS20 nos proporciona los siguientes valores:
IIH(max) = 20 mA
IOH(max) = 0.4 mA = 400 mA
´
´
= 20
=
400 mA
20 mA
=
IOH(max)
IIH(max)
´
capacidad de carga (ALTO)
´
IIL(max) = 0.5 mA
IIH(max) = 20 mA
IOL(max) = 20 mA
IOH(max) = 2 mA
´
´
´
´
SECCIÓN 8-5/CAPACIDAD DE CARGA DE LA FAMILIA TTL 511
512 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
TABLA 8-7
Clasificaciones
de corriente de las
compuertas lógicas
de la serie TTL.*
Salidas Entradas
Series TTL IOH IOL IIH IIL
74 0.4 mA 16 mA 40 A 1.6 mA
74S 1 mA 20 mA 50 A 2 mA
74LS 0.4 mA 8 mA 20 A 0.4 mA
74AS 2 mA 20 mA 20 A 0.5 mA
74ALS 0.4 mA 8 mA 20 A 0.1 mA
74F 1 mA 20 mA 20 A 0.6 mA
*
Algunos dispositivos pueden tener distintas clasificaciones
de corriente de entrada o de salida. Consulte siempre la hoja
técnica.
Si consideramos primero el estado ALTO, tenemos que
Para el estado BAJO tenemos que
En este caso se elije la capacidad de carga total de 40, ya que es el menor de los dos
valores. Por ende, un 74AS20 puede manejar otras 40 entradas 74AS20 más.
En equipos antiguos podrá observar que con frecuencia la mayoría de los CIs
lógicos se eligieron de la misma familia lógica. En los sistemas digitales actuales es
mucho más probable que haya una combinación de varias familias lógicas. En con-
secuencia, los cálculos de las cargas y las capacidades de carga no son tan simples
como una vez lo fueron. Un buen método para determinar la carga de cualquier
salida digital es el siguiente:
Paso 1. Sume los valores de IIH de todas las entradas conectadas a una salida. Esta
suma debe ser menor que la especificación de IOH de la salida.
Paso 2. Sume los valores de IIL de todas las entradas conectadas a una salida. Esta
suma debe ser menor que la especificación de IOL de la salida.
La tabla 8-7 muestra las especificaciones limitantes para las corrientes de
entrada y salida en compuertas lógicas simples de las diversas familiasTTL. Observe
que algunos de los valores de corriente se proporcionan como números negativos.
Esta convención se utiliza para mostrar la dirección del flujo de la corriente. Los
valores positivos indican que la corriente fluye hacia el nodo especificado, sea una
entrada o una salida. Los valores negativos indican que la corriente fluye hacia
fuera del nodo especificado. En consecuencia, todos los valores de IOH son negativos
ya que la corriente fluye hacia la salida (corriente de suministro) y todos los valores
de IOL son positivos ya que la corriente de carga fluye hacia la terminal de salida en
su camino a tierra (corriente de drenado). De igual forma, IIH es positiva mientras
que IIL es negativa. Cuando calcule la carga y la capacidad de carga como se descri-
bió antes, deberá ignorar estos signos.
=
2 mA
20 mA
= 100
capacidad de carga (ALTO)
=
20 mA
0.5 mA
= 40
capacidad de carga (BAJO)
EJEMPLO 8-7
EJEMPLO 8-8
EJEMPLO 8-9
La salida de una compuerta NAND 74ALS00 maneja tres entradas de compuertas
74S y una entrada 7406. Determine si hay un problema de carga.
Solución
1. Sume todos los valores de IIH:
3  (IIH para el 74S)  1  (IIH para el 74)
Total  3  (50 A)  1  (40 A)  190 A
El valor de IOH para la salida del 74ALS es de 400 A (máx), que es mayor que
la suma de todas las cargas (190 A). Esto no es problema cuando la salida está
en ALTO.
2. Sume todos los valores de IL:
3  (IL para 74S)  1  (IL para 74)
Total  3  (2 mA)  1  (1.6 mA)  7.6 mA
El valor de IOH para la salida del 74ALS es de 8 mA (máx), lo cual es mayor que
la suma de las cargas (7.6 mA). Esto no representa un problema cuando la salida
está en BAJO.
La salida de la compuerta NAND 74ALS00 del ejemplo 8-7 necesita utilizarse para
manejar algunas entradas 74ALS además de las entradas de carga descritas en el
ejemplo 8-7. ¿Cuántas entradas 74ALS adicionales podría manejar la salida sin
sobrecargarse?
Solución
De los cálculos del ejemplo 8-7, sólo en el estado BAJO estamos cerca de que se
sobrecargue la salida. Una entrada 74ALS tiene una IIL de 0.1 mA. La corriente de
drenado máxima (IOL) es de 8 mA y la corriente de carga es de 7.6 mA (según los
cálculos del ejemplo 8-7). Para encontrar la corriente adicional que puede drenar la
salida hacemos lo siguiente:
Corriente adicional  IOLmáx 2 suma de las cargas(IIL)
 8 mA 2 7.6 mA  0.4 mA
Esta salida puede manejar hasta cuatro entradas 74ALS más, que tengan una IIL
de 0.1 mA.
La salida de un inversor 74AS04 proporciona la señal CLEAR a un registro en para-
lelo, el cual está formado por flip-flops D 74AS74. ¿Cuál es el máximo número de
entradas CLR de FF que puede maneja r esta compuerta?
Solución
Las especificaciones para las entradas de los flip-flops no son siempre las mismas
que para la entrada de una compuerta lógica en la misma familia. Consulte la hoja
técnica del 74AS74 en el CD ROM de TI. Las entradas de reloj y D son similares a
las entradas de las compuertas en la tabla 8-7. No obstante, las entradas PRE y CLR
tienen especificaciones de IIH  40 A e IIL  1.8 mA. El 74AS04 tiene especifica-
ciones de IOH  2 mA e IOL  20 mA.
Número máximo de entradas (ALTO)  2 mA/40 A  50.
Número máximo de entradas (BAJO)  20 mA/1.8 mA  11.11.
Debemos limitar la capacidad de carga a 11 entradas CLR.
SECCIÓN 8-5/CAPACIDAD DE CARGA DE LA FAMILIA TTL 513
514 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
FIGURA 8-15 Tres
formas de manejar las
entradas lógicas sin
utilizar.
x = AB
Desconectada
(flotante)
+5V
(a) (b) (c)
x = AB
1 k⍀
x = AB
A
B
A
B
A
B
PREGUNTAS DE REPASO 1. ¿Qué factores determinan la clasificación de IOL(máx) de un dispositivo?
2. ¿Cuántas entradas 7407 puede manejar un chip 74AS?
3. ¿Qué puede ocurrir si una salida TTL se conecta a más entradas de compuerta
de las que está clasificada para manejar?
4. ¿Cuántas entradas CP 74112 pueden manejarse mediante una salida 74LS04?
¿Mediante una salida 74F00?
8-6 OTRAS CARACTERÍSTICAS DE LA FAMILIA TTL
Debemos conocer varias características más de la lógica TTL si queremos utilizar la
familia TTL con inteligencia en una aplicación de un sistema digital.
Entradas desconectadas (flotantes)
Cualquier entrada de un circuito TTL que se deje desconectada (abierta) actúa en
forma idéntica a un 1 lógico que se aplique a esa entrada, ya que en cualquier caso
la unión base-emisor o diodo en la entrada no se polarizará en forma directa. Esto
significa que en cualquier CI TTL, todas las entradas son 1s si no se conectan con
alguna señal lógica o a tierra. Cuando una entrada se deja desconectada, se dice
que está flotando.
Entradas sin utilizar
Con frecuencia, no todas las entradas en un CI TTL se utilizan en una aplicación
específica. Un ejemplo común es cuando no todas las entradas de una compuerta
lógica se necesitan para la función lógica requerida. Por ejemplo, suponga que nece-
sitamos la operación lógica AB y que estamos usando un chip con una compuerta
NAND de tres entradas. La figura 8-15 muestra las posibles formas de lograr esto.
En la figura 8-15(a) la entrada sin utilizar se deja desconectada, lo cual signi-
fica que actúa como un 1 lógico. Por lo tanto, la salida de la compuerta NAND es
x  A  B  1  A  B, que es el resultado deseado. Aunque la lógica es correcta, no es
muy conveniente dejar una entrada desconectada ya que actuará como una antena,
con la probabilidad de que recoja señales radiadas dispersas, las cuales podrían pro-
vocar que la compuerta opere en forma inapropiada. La figura 8-15(b) muestra una
mejor técnica. Aquí la entrada sin utilizar se conecta a 5V por medio de una resis-
tencia de 1-k, por lo que el nivel lógico es un 1. La resistencia de 1-k se utiliza
sólo por protección contra la corriente de las uniones emisor-base de las entradas
de la compuerta, en el caso de que haya picos en la línea de voltaje de alimentación.
Esta misma técnica puede utilizarse para las compuertas AND, ya que un 1 en una
entrada sin usar no afectará a la salida. Puede haber hasta 30 entradas sin utilizar
que compartan la misma resistencia de 1-k conectada a VCC.
La figura 8-15(c) muestra una tercera posibilidad, en la que la entrada sin usar
se conecta a una entrada que sí se utiliza. Esto es satisfactorio siempre y cuando
el circuito que maneja la entrada B no se vaya a exceder de su capacidad de carga.
1 X
2
3
4
Carga en la salida de la compuerta 1
Corriente
de carga
ALTO
40 μA
20 μA
60 μA
120 μA
Compuerta
2
3
4
Total Total
Corriente
de carga
BAJO
0.4 mA
0.4 mA
1.2 mA
2.0 mA
Compuerta
2
3
4
FIGURA 8-16 Ejemplo 8-10.
EJEMPLO 8-10
Esta técnica puede utilizarse para cualquier tipo de compuerta. En las compuertas
OR y NOR, las entradas sin usar no pueden dejarse desconectadas o conectadas a
5 V, ya que esto produciría un nivel lógico de salida constante (1 para OR, 0 para
NOR) sin importar las demás entradas. Para estas compuertas las entradas sin utili-
zar deben conectarse a tierra (0 V) para un 0 lógico, o conectarse a una entrada que
sí se utilice, como en la figura 8-15(c).
Entradas conectadas entre sí
Cuando dos (o más) entradas TTL en la misma compuerta se conectan entre sí para
formar una entrada común, como en la figura 8-15(c), la entrada común, por lo gene-
ral, representará una carga que es la suma de la clasificación de corriente de carga
de cada entrada individual. La única excepción es para las compuertas NAND y
AND. En estas compuertas, la carga de entrada en estado BAJO será la misma que
una entrada individual sin importar cuántas entradas se conecten entre sí.
Para ilustrar esto, suponga que cada entrada de la compuerta NAND de tres
entradas en la figura 8-15(c) tiene una clasificación de 0.5 mA para IIL y de 20 A
para IIH. Por lo tanto, la entrada común B representará una carga de entrada de 40
μA en el estado ALTO, pero sólo 0.5 mA en el estado BAJO. Lo mismo se aplicaría
si fuera una compuerta AND. Si fuera una compuerta OR o NOR, la entrada común B
presentaría una carga de entrada de 40 μA en el estado ALTO y de 1 mA en el estado
BAJO.
Podemos encontrar la razón de esta característica si analizamos de nuevo el
diagrama del circuito de la compuerta NAND TTL en la figura 8-8(b). La corriente
IIL está limitada por la resistencia R1. Aún si las entradas A y B estuvieran conecta-
das entre sí y aterrizadas, esta corriente no cambiaría; tan sólo se dividiría y fluiría
a través de las rutas paralelas proporcionadas por los diodos D2 y D3. La situación
es distinta para las compuertas OR y NOR, ya que no utilizan transistores con múlti-
ples emisores, sino que tienen un transistor de entrada separado para cada entrada,
como vimos en la figura 8-10.
Determine la carga que maneja la salida X en la figura 8-16. Suponga que cada com-
puerta es un dispositivo de la serie 74LS con IIH  20 A e IIL  0.4 mA.
Solución
La carga en la salida de la compuerta 1 es equivalente a seis cargas de entrada 74LS
en el estado ALTO, pero sólo cinco cargas de entrada 74LS en el estado BAJO, ya que
la compuerta NAND representa sólo una carga de entrada individual en el estado
BAJO.
SECCIÓN 8-6/OTRAS CARACTERÍSTICAS DE LA FAMILIA TTL 515
516 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
EJEMPLO 8-11
Polarización de las entradas TTL en bajo
En ocasiones se produce la situación en la que una entrada TTL debe mantenerse,
por lo general, en BAJO y después se hace que cambie a ALTO por medio de la
actuación de un interruptor mecánico. Esta situación se ilustra en la figura 8-17
para la entrada a un monoestable. Este monoestable se dispara en una transición
positiva que ocurre cuando el interruptor se cierra por un instante. La resistencia R
sirve para mantener la entrada T en BAJO mientras el interruptor está abierto. Hay
que tener cuidado de mantener el valor de R lo bastante bajo como para que el vol-
taje que se desarrolle a través de esta resistencia debido a la corriente IIL que fluye
hacia fuera de la entrada del monoestable hacia tierra no se exceda de VIL(máx).
Así, el valor más grande de R se obtiene mediante
(8-3)
R debe mantenerse por debajo de este valor para asegurar que la entrada del
monoestable se encuentre en un nivel BAJO aceptable mientras el interruptor está
abierto. El valor mínimo de R se determina en base al drenado de corriente en la
alimentación de 5 V cuando el interruptor se cierra. En la práctica, este drenado
de corriente debe minimizarse; para ello hay que mantener a R justo por debajo de
Rmáx.
Determine un valor aceptable para R si el monoestable es un CI TTL 74LS con una
clasificación de IIL de entrada de 0.4 mA.
Solución
El valor de IIL será un máximo de 0.4 mA. Este valor máximo debe usarse para calcu-
lar Rmáx. De la tabla 8-6, VIL(máx)  0.8 V para la serie 74LS. Por lo tanto, tenemos
que
Aquí una buena elección sería R  1.8 k, un valor de resistencia estándar.
Transitorios de corriente
Los circuitos lógicos TTL sufren de transitorios o picos de corriente generados en
forma interna, debido a la estructura de salida en forma de tótem. Cuando la salida
cambia del estado BAJO al estado ALTO (vea la figura 8-18), los dos transistores de
salida cambian de estado: Q3 de APAGADO a ENCENDIDO y Q4 de ENCENDIDO a
APAGADO. Como Q4 está cambiando de la condición saturada, tardará más tiempo
Rmax =
VIL(max)
IIL
IIL * Rmax = VIL(max)
´
´
´
´
+5 V
R IIL
T
Q
OS
Q
Rmáx = –––––––––
VIL (máx)
IIL
FIGURA 8-17
Rmax =
0.8 V
0.4 mA
= 2000 Æ
´
FIGURA 8-18 Un pico grande de corriente se drena de VCC cuando una salida en
forma de tótem cambia de BAJO a ALTO.
+5 V
130 ⍀ ICC
Q3
O → ENCENDIDO
ENCENDIDO→APAGADO
Q4
ICC
VSAL
CCARGA
(a) (b)
t
0
De 30 a 50 mA
3.6 V
ICC
ICCL
0
ICCH
t
VSAL
que Q3 para cambiar de estado. Por lo tanto, hay un intervalo corto de tiempo (cerca
de 2 ms) durante la transición de conmutación cuando ambos transistores están con-
duciendo y se drena una sobretensión bastante grande de corriente (de 30 a 50 mA)
de la alimentación de 5V. La duración de este transitorio de corriente se extiende
por los efectos de cualquier capacitancia de carga en la salida del circuito. Ésta
consiste de la capacitancia dispersa en el conductor y de la capacitancia de entrada
de cualquier circuito de carga, y debe cargarse hasta llegar al voltaje de salida en
estado ALTO. Este efecto en general puede sintetizarse de la siguiente manera:
Cada vez que una salida TTL en forma de tótem cambia de BAJO a ALTO, se
drena un pico de corriente de alta amplitud de VCC.
En un circuito o sistema digital complejo, puede haber muchas salidas TTL que
cambien de estado al mismo tiempo; cada una de ellas drenará un pico estrecho
de corriente de la fuente de energía. El efecto acumulativo de todos estos picos de
corriente será producir un pico de voltaje en la línea común de VCC, en gran parte
debido a la inductancia distribuida en la línea de alimentación [recuerde que V 
L(di/dt) para inductancia, y que di/dt es muy grande para un pico de corriente de 2
ns]. Este pico de voltaje puede producir varias fallas graves durante las transiciones
de conmutación, a menos que se utilice algún tipo de filtrado. La técnica más común
utiliza pequeños capacitores de radiofrecuencia conectados de VCC a TIERRA, en
esencia para “poner en corto” estos picos de alta frecuencia. A esto se le conoce
como desacoplamiento de fuente de poder.
Es práctica común conectar un capacitor de disco de cerámica con baja induc-
tancia de 0.01-F o 0.1-F entre VCC y tierra, cerca de cada CI TTL en un circuito
impreso. Las terminales del capacitor se deben mantener muy cortas para minimi-
zar la inductancia en serie.
También es común conectar un capacitor grande individual (de 2 a 20 F) entre
VCC y tierra en cada tablero para filtrar las variaciones de una frecuencia relati-
vamente baja en VCC, las cuales se producen debido a los grandes cambios en los
niveles de ICC a medida que las salidas cambian de estado.
SECCIÓN 8-6/OTRAS CARACTERÍSTICAS DE LA FAMILIA TTL 517
518 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
PREGUNTAS DE REPASO 1. ¿Cuál será la salida lógica de una compuerta NAND TTL que tiene todas sus
entradas desconectadas?
2. ¿Cuáles son dos formas aceptables de manejar las entradas sin usar de una com-
puerta AND?
3. Repita la pregunta 2 para una compuerta NOR.
4. Verdadero o falso: cuando las entradas de una compuerta NAND se conectan
entre sí, siempre se tratan como una carga individual en la fuente de la señal.
5. ¿Qué es el desacoplamiento de fuentes de energía? ¿Por qué se utiliza?
8-7 TECNOLOGÍA MOS
La tecnología MOS (metal óxido semiconductor) deriva su nombre de la estructura
MOS básica de un electrodo metálico sobre un aislante de óxido, sobre un sustrato
semiconductor. Los transistores de la tecnología MOS son transistores de efecto de
campo, a los cuales se les conoce como MOSFETs. Esto significa que el campo eléc-
trico en el lado del electrodo metálico del aislante de óxido tiene un efecto sobre la
resistencia del sustrato. La mayoría de los CIs digitales MOS están construidos en su
totalidad a partir de MOSFETs y de ningún otro componente.
Las principales ventajas del MOSFET son que su fabricación es relativamente
simple y económica; es pequeño y consume muy poca energía. La fabricación de los
CIs MOS es equivalente a casi una tercera parte de la fabricación de los CIs bipo-
lares (TTL, ECL, etc.). Además, los dispositivos MOS ocupan mucho menos espacio
en un chip que los transistores bipolares; lo que es más importante: los CIs digitales
MOS, por lo general, no utilizan los elementos tipo resistencia de los CIs, que ocupan
la mayor parte del área del chip de los CIs bipolares.
Todo esto significa que los CIs MOS pueden alojar un número mucho mayor de
elementos de circuito en un solo chip, en comparación con los CIs bipolares. Esta
ventaja se ilustra mediante el hecho de que los CIs MOS han dominado a los CIs
bipolares en el área de la integración a gran escala (LSI, VLSI). La alta densidad
de encapsulamiento de los CIs MOS los hace ser en especial muy apropiados para
los CIs complejos, tales como los microprocesadores y los chips de memoria. Las
mejoras en la tecnología de CIs MOS nos han llevado a idear dispositivos que son
más veloces que los dispositivos TTL 74, 74LS y 74ALS, con características de con-
trol de corriente comparables. En consecuencia, los dispositivos MOS (en específico,
CMOS) también se han convertido en parte dominante del mercado SSI y MSI. La
familia TTL 74AS aún sigue siendo tan rápida como los mejores dispositivos CMOS,
pero a costa de una disipación de potencia mucho mayor.
La principal desventaja de los dispositivos MOS es su susceptibilidad al daño
por la electricidad estática. Aunque esto puede minimizarse mediante los proce-
dimientos de manejo apropiados, la familia TTL es mucho más resistente para la
experimentación en el laboratorio. Por consiguiente, es muy probable que usted vea
dispositivos TTL en usos educativos, siempre y cuando estén disponibles.
El MOSFET
Hasta ahora hay dos tipos generales de MOSFETs: de depleción y de enriquecimiento.
Los CIs digitales MOS utilizan sólo MOSFETs de enriquecimiento, por lo que sólo
consideraremos este tipo de MOSFETs en el siguiente análisis. Lo que es más, sólo nos
preocuparemos por la operación de estos MOSFETs en los interruptores de encen-
dido/apagado.
La figura 8-19 muestra los símbolos esquemáticos para los MOSFETs de enri-
quecimiento de canal N y canal P, en donde la dirección de la flecha indica ya sea
el canal P o el canal N. Los símbolos muestran una línea quebrada entre la fuente
FIGURA 8-19 Símbolos
esquemáticos para
los MOSFETs de
enriquecimiento.
Drenador
Compuerta
Fuente
Canal N
Drenador
Compuerta
Fuente
Canal P
FIGURA 8-20
MOSFET de canal N
que se utiliza como un
interruptor: (a) símbolo;
(b) modelo del circuito;
(c) operación de un
inversor N-MOS.
APAGADO
+5 V
+5 V
SÍMBOLO
MODELO DEL
CIRCUITO
IDS
G
S S
D
0 V 1010
⍀ APAGADO
R
ALTO
ALTO
G
D
N
BAJO
BAJO
100 k⍀
+5 V
+5 V
IDS
S
ENCENDIDO ENCENDIDO
10
3
⍀
+5 V
R
G
D
N
100 k⍀
VDD
VGS
+
–
G
S
D
(a) (b) (c)
y el drenador para indicar que por lo general no hay un canal conductor entre estos
dos electrodos. El símbolo también muestra una separación entre la compuerta y
las demás terminales para indicar la resistencia muy alta (por lo general, alrededor
de 1012
) de la capa de óxido entre la compuerta y el canal, la cual se forma en el
sustrato.
Interruptor MOSFET básico
La figura 8-20 muestra la operación de conmutación de un MOSFET de canal N, el
elemento básico en una familia de dispositivos conocida como N-MOS. Para el dispo-
sitivo de canal N, el drenador siempre se polariza en forma directa con respecto a la
fuente. El voltaje de compuerta a fuente VGS es el de entrada, el cual se utiliza para
controlar la resistencia entre drenador y fuente (es decir, la resistencia del canal), y
por lo tanto determina si el dispositivo está encendido o apagado.
Cuando VGS  0, no hay un canal conductor entre fuente y drenador, y el disposi-
tivo está apagado como se muestra en la figura 8-20(b). Por lo general, la resistencia
del canal en este estado APAGADO es de 1010
, que para la mayoría de los fines
es un circuito abierto. El MOSFET permanecerá apagado siempre y cuando VGS sea
cero o negativo. A medida que VGS se hace positivo (compuerta positiva, relativa a la
fuente) se llega a un voltaje de umbral (VT), punto en el cual se comienza a formar
SECCIÓN 8-7/TECNOLOGÍA MOS 519
520 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
FIGURA 8-21
MOSFET de canal P
utilizado como un
interruptor: (a) símbolo;
(b) modelo del circuito
para ENCENDIDO y
APAGADO; (c) circuito
inversor P-MOS.
APAGADO APAGADO
+5
IDS
G
D D
S
10
10
⍀ ALTO
ALTO
G
S
P
BAJO
R 100 k⍀
5 V
–
–
(b)
(a) (c)
VGS = 0
+
ENCENDIDO ENCENDIDO
+5
IDS
G
D D
S
103
⍀
G
S
P
BAJO
R 100 k⍀
0 V
0 V
VGS = –5 V
+
+ V
VG
+
–
G
D
S
VGS
–
+
+5 V V
V
+5 V
un canal conductor entre la fuente y el drenador. Por lo general, VT  1.5V para un
N-MOSFET y, por lo tanto, cualquier VGS 
 1.5V hará que el MOSFET conduzca. Por
lo general, se utiliza un valor de VGS mucho mayor que VT para encender el MOSFET
en forma más completa. Como se muestra en la figura 8-20(b), cuando VGS  5 V
la resistencia del canal entre fuente y drenador cae hasta llegar a un valor de RON
 1000 .
En esencia, el N-MOS cambiará de una resistencia muy alta a una baja a medida
que el voltaje de la compuerta cambie de BAJO a ALTO. Es útil tan sólo pensar en el
MOSFET como un interruptor que está abierto o cerrado entre la fuente y el drena-
dor. La figura 8-20(c) muestra cómo puede formarse un inversor mediante el uso de
un transistor N-MOS como un interruptor. Los primeros dispositivos lógicos N-MOS
se construyeron con base en este método. La desventaja de este circuito (al igual
que en TTL) es que cuando el transistor está ENCENDIDO, siempre habrá corriente
fluyendo de la fuente hacia tierra, con lo que se producirá calor.
El MOSFET de canal P (o P-MOS) que se muestra en la figura 8-21(a) opera en
forma idéntica al de canal N, sólo que utiliza voltajes de polaridad opuesta. Para
los MOSFETs el drenador está conectado al lado inferior del circuito, por lo que se
polariza con un voltaje más negativo en forma relativa a la fuente. Para ENCENDER
el P-MOSFET, debe aplicarse a la compuerta un voltaje inferior al de la fuente por
VT, lo cual significa que el voltaje en la compuerta, con respecto a la fuente, debe
ser negativo.
La figura 8-21(b) muestra que cuando la compuerta está a 5 V con respecto a
tierra (el mismo voltaje que se aplica a la fuente), el transistor está APAGADO y
tiene una resistencia muy alta de drenador a fuente. Cuando la compuerta está a 0 V
(con respecto a tierra), entonces el voltaje de compuerta a fuente VGS  5 V y
ENCIENDE el transistor, con lo cual se reduce su resistencia de drenador a fuente.
El circuito de la figura 8-20(c) muestra la acción de conmutación de un inversor que
utiliza lógica P-MOS.
La tabla 8-8 sintetiza las características de conmutación de los MOSFETs con
canal P y N.
Q1
Q2
N
P
G
+VDD
S
+
G
D
D
VSAL
–
S
VENT Q1 Q2 VSAL
+VDD
(1 lógico)
0 V
(0 lógico)
APAGADO
RAPAG = 1010 ⍀
ENCENDIDO
RENC = 1 k⍀
ENCENDIDO
RENC = 1 k⍀
APAGADO
RAPAG = 1010 ⍀
0 V
+VDD
VSAL = VENT
VENT
FIGURA 8-22
INVERSOR CMOS
básico.
8-8 LÓGICA DE MOS COMPLEMENTARIO
Los circuitos lógicos P-MOS y N-MOS utilizan menos componentes y son mucho más
simples de fabricar que los circuitos TTL. Como resultado, comenzaron a dominar
los mercados LSI y VLSI en las décadas de 1970 y 1980. Durante esta era surgió
una nueva tecnología que utilizaba tanto transistores P-MOS (como interruptores
del lado alto) como N-MOS (como interruptores del lado bajo) en el mismo circuito
lógico. A esta tecnología se le conoce como MOS complementario, o CMOS. Los cir-
cuitos lógicos CMOS no son tan simples y fáciles de fabricar como un P-MOS o un
N-MOS, pero son más rápidos, utilizan mucho menos energía y son la tecnología
dominante en el mercado actual.
Inversor CMOS
La figura 8-22 muestra el circuito para el INVERSOR CMOS básico. Para este
diagrama y los siguientes, hemos sustituido los símbolos estándar para el MOSFET
por bloques etiquetados como P y N para indicar un P-MOS y un N-MOS, respecti-
vamente. Esto se hace sólo por conveniencia al analizar los circuitos. El INVERSOR
CMOS tiene dos MOSFETs en serie, de manera que el dispositivo de canal P tiene
conectada su fuente a VDD (un voltaje positivo) y el dispositivo de canal N tiene su
fuente conectada a tierra.*
Las compuertas de los dos dispositivos se conectan entre
sí para formar una entrada común. Los drenadores de los dos dispositivos se conec-
tan entre sí para formar la salida común.
Polarización Voltaje de compuerta
de drenador a fuente (VGS) necesario
a fuente para la conducción RENC () RAPAG ()
Canal P Negativa Por lo general, más 1000 1010
negativo que 1.5 V (típico)
Canal N Positiva Por lo general, más 1000 1010
positivo que +1.5 V (típico)
TABLA 8-8
* La mayoría de los fabricantes etiqueta esta terminal como VSS.
SECCIÓN 8-8/LÓGICA DE MOS COMPLEMENTARIO 521
522 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
A
BAJO
BAJO
ALTO
ALTO
B
BAJO
ALTO
BAJO
ALTO
X
ALTO
ALTO
ALTO
BAJO
+VDD
S
G
A P
D
P
S
D
G
X = AB
S
D
G
N
S
N
B
G
D
FIGURA 8-23
Compuerta NAND
CMOS.
Los niveles lógicos para CMOS son VDD para el 1 lógico y 0 V para el 0 lógico.
Considere primero el caso en el que VENT  VDD. En esta situación, la compuerta
de Q1 (canal P) está a 0 V con respecto a la fuente de Q1. Por ende, Q1 estará en el
estado APAGADO con RAPAG 艐 1010
. La compuerta de Q2 (canal N) estará a VDD
con respecto a su fuente. Por ende, Q2 estará encendido con un valor típico de RENC
 1 k. El divisor de voltaje entre RAPAG de Q1 y RENC de Q2 producirá VSAL 艐 0 V.
Ahora considere el caso en el que VENT  0V. Q1 ahora tiene su compuerta en un
potencial negativo con respecto a su fuente, mientras que Q2 tiene VGS  0 V. Por lo
tanto, Q1 estará encendido con RENC  1 k y Q2 estará apagado con RAPAG  1010
,
y producirá en VSAL un valor aproximado a  VDD. En la tabla de la figura 8-22 se
sintetizan estos dos estados de operación, en donde se muestra que el circuito actúa
como un INVERSOR lógico.
Compuerta NAND CMOS
Pueden construirse otras funciones lógicas si se modifica el INVERSOR básico. La
figura 8-23 muestra una compuerta NAND que se forma al agregar un MOSFET
de canal P en paralelo y un MOSFET de canal N en serie al INVERSOR básico.
Para analizar este circuito, es útil tener en cuenta que una entrada de 0 V enciende
su correspondiente P-MOS y apaga su correspondiente N-MOS, y viceversa, para
una entrada de VDD. Así, podemos ver que la única ocasión en que se producirá una
salida en BAJO será cuando las entradas A y B estén ambas en ALTO (VDD) para
encender ambos N-MOSFETs, con lo cual se proporciona una resistencia baja de
la terminal de salida a tierra. Para todas las demás condiciones de entrada, por lo
menos, habrá un P-MOS encendido mientras que al menos un N-MOS estará apa-
gado. Esto produce una salida en ALTO.
Compuerta NOR CMOS
Para formar una compuerta NOR CMOS se agrega un P-MOS en serie y un N-MOS
en paralelo al INVERSOR básico, como se muestra en la figura 8-24. Una vez más,
este circuito puede analizarse si se toma en cuenta que un nivel BAJO en cualquiera
de las entradas encenderá su P-MOS correspondiente y apagará su N-MOS corres-
A
BAJO
BAJO
ALTO
ALTO
B
BAJO
ALTO
BAJO
ALTO
X
ALTO
BAJO
BAJO
BAJO
+VDD
A
G
P
S
D
G
P
S
D
G
N
S
D
B
S
G
N
D
X = A + B
FIGURA 8-24
Compuerta NOR CMOS.
PREGUNTAS DE REPASO
pondiente, y viceversa, para una entrada en ALTO. Dejaremos al lector la opción de
verificar que este circuito opere como una compuerta NOR.
Para formar compuertas AND y OR CMOS se combinan las compuertas NAND
y NOR con INVERSORes.
FF SET-RESET CMOS
Dos compuertas NOR o NAND CMOS pueden acoplarse en cruz para formar un latch
SET-RESET simple. Se utilizan circuitos de compuertas adicionales para convertir
el latch SET-RESET básico en flip-flops sincronizados por reloj en D y en J-K.
1. ¿Qué diferencia hay entre los circuitos internos CMOS y los N-MOS?
2. ¿Cuántos MOSFETs de canal P hay en un INVERSOR CMOS?
3. ¿Cuántos MOSFETs hay en una compuerta AND CMOS de tres entradas?
8-9 CARACTERÍSTICAS DE LAS SERIES CMOS
Los CIs CMOS no sólo proporcionan todas las mismas funciones lógicas están disponi-
bles en TTL, sino también varias funciones de propósito especial que no proporciona
TTL. Con el paso de los años se han desarrollado varias series CMOS distintas, ya que
los fabricantes han buscado mejorar las características de rendimiento. Antes de anali-
zar las diversas series CMOS, será útil definir unos cuantos términos que se utilizan
SECCIÓN 8-9/CARACTERÍSTICAS DE LAS SERIES CMOS 523
524 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
cuando se van a utilizar CIs de distintas familias o series en conjunto, o como reem-
plazo por otro.
■ Compatibilidad de terminales. Dos CIs tienen terminales compatibles cuando
sus configuraciones de terminales son iguales. Por ejemplo, la terminal 7 en
ambos CIs es TIERRA, la terminal 1 en ambos es una entrada para el primer
INVERSOR, y así en lo sucesivo.
■ Equivalente funcional. Dos CIs son equivalentes funcionales si las funciones
lógicas que realizan son idénticas. Por ejemplo, ambos contienen cuatro com-
puertas NAND de dos entradas, o ambos contienen seis flip-flops D con disparo
en el flanco positivo del reloj.
■ Compatible eléctricamente. Dos CIs son compatibles eléctricamente cuando
pueden conectarse en forma directa uno con el otro, sin necesidad de tomar
medidas especiales para asegurar su operación correcta.
Series 4000/14000
La serie CMOS más antigua es la serie 4000, introducida por primera vez por RCA,
y su equivalente funcional, la serie 14000 de Motorola. Los dispositivos en las series
4000/14000 tienen una disipación de potencia muy baja y pueden operar sobre un
amplio intervalo de voltajes de alimentación de energía (de 3 a 15 V). Son muy
lentos si se les compara con dispositivos TTL y las demás series CMOS, y tienen
capacidades de corriente de salida muy bajas. No son compatibles en las termina-
les ni compatibles eléctricamente con las series TTL. Los dispositivos de las series
4000/14000 raras veces se utilizan en los nuevos diseños, excepto cuando hay un CI
de propósito especial disponible, que no se encuentre disponible en otras series.
74HC/HCT (CMOS de alta velocidad)
La serie 74HC tiene un incremento de 10 veces la velocidad de conmutación, en
comparación con la de los dispositivos 74LS, y una capacidad de corriente de salida
mucho mayor que los primeros CIs de la serie 7400 CMOS. Los CIs 74HC/HCT son
compatibles en terminales y equivalentes funcionales de los CIs TTL con el mismo
número de dispositivo. Los dispositivos 74HCT son compatibles eléctricamente con
TTL,perolosdispositivos74HCno.Porejemplo,estosignificaqueunchipINVERSOR
hexadecimal 74HCT04 puede sustituir un chip 74LS04, y viceversa. También signi-
fica que un CI 74HCT puede conectarse directamente a cualquier CI TTL.
74AC/ACT (CMOS avanzado)
A esta serie se le conoce por lo común como ACL, por lógica CMOS avanzada. La
serie es equivalente funcional de las diversas series TTL, pero no es compatible
en terminales con TTL ya que las posiciones de las terminales en los chips 74AC o
74ACT se eligieron de manera que se mejorara la inmunidad al ruido, por lo que las
entradas de los dispositivos son menos sensibles a los cambios de señal que ocurren
en las terminales de otros CIs. Los dispositivos 74AC no son compatibles eléctrica-
mente con TTL; los dispositivos 74ACT pueden conectarse directamente a los dispo-
sitivos TTL. ACL ofrece ciertas ventajas sobre la serie HC en cuanto a inmunidad al
ruido, tiempos de propagación y velocidad máxima del reloj.
La numeración de los dispositivos para esta serie difiere un poco de la corres-
pondiente para las series TTL, 74C y 74HC/HCT, ya que utiliza un número de dispo-
sitivo de cinco dígitos, el cual comienza con los dígitos 11. Los siguientes ejemplos
ilustran esto:
74ACT11 293 K 74HCT 293
74AC11 004 K 74HC 04
74AHC/AHCT (CMOS avanzado de alta velocidad)
Esta serie de dispositivos CMOS ofrece una ruta de migración natural de la serie HC
a las aplicaciones más rápidas, de menor potencia y de control bajo. Los dispositivos
en esta serie son tres veces más rápidos y pueden utilizarse como reemplazos direc-
tos para los dispositivos de la serie HC. Ofrecen una inmunidad al ruido similar a
la serie HC, sin los problemas de sobredisparo/subdisparo que a menudo se asocian
con las características de control más altas requeridas para una velocidad compa-
rable.
Lógica BiCMOS de 5V
Varios fabricantes de CIs han desarrollado series lógicas que combinan las mejo-
res características de las lógicas bipolar y CMOS; a esto se le conoce como lógica
BiCMOS. Las características de baja potencia de CMOS y las características de alta
velocidad de los circuitos bipolares se integran para producir una familia lógica
con una potencia extremadamente baja y una velocidad en extremo alta. Los CIs
BiCMOS no están disponibles en la mayoría de las funciones SSI y MSI, sino que
se limitan a funciones que se utilizan en aplicaciones de microprocesadores y de
interfase de bus tales como latches, búferes, reforzadores y transceptores. La serie
74BCT (tecnología de interfase de bus BiCMOS) ofrece una reducción del 75 por
ciento en consumo de energía en comparación con la familia 74F, mientras mantiene
una velocidad y características de control similares. Las piezas en esta serie son
compatibles en terminales con las piezas TTL estándar de la industria y operan con
niveles lógicos de 5 V estándar. La serie 74ABT (tecnología BiCMOS avanzada) es la
segunda generación de dispositivos de interfase de bus BiCMOS. En la sección 8-13
presentaremos los detalles sobre la lógica de la interfase de bus.
Voltaje de alimentación
Los dispositivos de las series 4000/14000 y 74C operan con valores de VDD que varían
entre 3 y 15V, lo cual los hace muy versátiles. Pueden utilizarse en circuitos de bajo
voltaje operados por baterías, en circuitos de 5 V estándar y en circuitos en los que
se utiliza un voltaje de alimentación más alto para obtener los márgenes de ruido
requeridos para su operación en un ambiente con mucho ruido. Las series 74HC/
HCT, 74AC/ACT y 74AHC/AHCT operan a través de un intervalo mucho más estre-
cho de voltajes de alimentación, por lo general entre 2 y 6 V.
También hay disponibles series lógicas que están diseñadas para operar a vol-
tajes menores (por ejemplo, 2.5 o 3.3 V). Cada vez que se interconectan dispositivos
que utilizan distintos voltajes de alimentación en el mismo sistema digital, hay que
tomar medidas especiales. En la sección 8-10 veremos los dispositivos de bajo vol-
taje y las técnicas de integración especiales.
Niveles lógicos de voltaje
Los niveles de voltaje de entrada y salida son distintos para las diversas series
CMOS. La tabla 8-9 lista estos valores de voltaje para las diversas series CMOS, así
como para las series TTL. Los valores listados en la tabla suponen que todos los dis-
positivos están operando a partir de un voltaje de alimentación de 5 V y que todas
las salidas de los dispositivos manejan entradas de la misma familia lógica.
Un análisis de esta tabla nos muestra ciertos puntos importantes. En primer
lugar, observe que VOL para los dispositivos CMOS está muy cerca de 0 V, y que VOH
está muy cerca de 5 V. La razón se debe a que las salidas CMOS no tienen que sumi-
nistrar o drenar ninguna cantidad considerable de corriente cuando manejan entra-
das CMOS con su resistencia de entrada extremadamente alta (1012
). Observe
además que, con excepción de las series 74HCT y 74ACT, los niveles de voltaje de
entrada requeridos son mayores para CMOS que para TTL. Recuerde que las series
SECCIÓN 8-9/CARACTERÍSTICAS DE LAS SERIES CMOS 525
526 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
74HCT y 74ACT están diseñadas para ser compatibles eléctricamente con TTL, por
lo que deben poder aceptar los mismos niveles de voltaje de entrada que TTL.
Márgenes de ruido
En la tabla 8-9 también se proporcionan los márgenes de ruido para cada serie; los
cuales se calculan de la siguiente forma:
VNH  VOH(mín)  VIH(mín)
VNL  VIL(máx)  VOL(máx)
Observe que, en general, los dispositivos CMOS tienen mayores márgenes de ruido
que TTL. La diferencia sería aún mayor si los dispositivos CMOS se operaran a un
voltaje de alimentación mayor de 5 V.
Disipación de potencia
Cuando un circuito lógico CMOS se encuentra en un estado estático (que no cam-
bia), su disipación de potencia es en extremo baja. Para ver la razón por la que
hay que analizar cada uno de los circuitos de las figuras 8-22 a 8-24. Observe que,
sin importar el estado de la salida, siempre hay una resistencia muy alta entre la
terminal VDD y tierra debido a que siempre hay un MOSFET apagado en la ruta de
la corriente. Esto produce una disipación de potencia de corriente directa típica en
el CMOS de sólo 2.5 nW por compuerta cuando VDD  5 V; aún con VDD  10 V, esta
potencia se incrementa sólo a 10 nW. Con estos valores para PD es fácil ver por qué
CMOS se adapta en forma ideal a las aplicaciones en las que se utiliza energía por
medio de baterías o energía de respaldo de baterías.
PD se incrementa con la frecuencia
La disipación de potencia de un CI CMOS sería muy baja siempre y cuando se
encuentre en una condición de corriente directa. Desafortunadamente, PD se incre-
mentará en proporción con la frecuencia en la que los circuitos cambian de estado.
Por ejemplo, una compuerta NAND CMOS que tiene PD  10 nW bajo condiciones
de corriente directa tendrá PD  0.1 mW a una frecuencia de 100 kpps, y de 1 mW
a 1 MHz. La razón de esta dependencia en relación con la frecuencia se ilustra en
la figura 8-25.
Cada vez que una salida CMOS cambia de BAJO a ALTO debe suministrarse una
corriente de carga transitoria a la capacitancia de carga, la cual consiste de las capa-
citancias de entrada combinadas de todas las cargas que se estén manejando y de
la propia capacitancia de salida del dispositivo. Estos picos estrechos de corriente
se suministran a través de VDD; pueden tener una amplitud típica de 5 mA y una
duración de 20 a 30 ns. Es evidente que a medida que aumenta la frecuencia de
TABLA 8-9 Niveles de voltaje de entrada/salida (en volts) con VDD  VCC  5 V.
CMOS TTL
Parámetro 4000B 74HC 74HCT 74AC 74ACT 74AHC 74AHCT 74 74LS 74AS 74ALS
VIH(mín) 3.5 3.5 2.0 3.5 2.0 3.85 2.0 2.0 2.0 2.0 2.0
VIL(máx) 1.5 1.0 0.8 1.5 0.8 1.65 0.8 0.8 0.8 0.8 0.8
VOH(mín) 4.95 4.9 4.9 4.9 4.9 4.4 3.15 2.4 2.7 2.7 2.5
VOL(máx) 0.05 0.1 0.1 0.1 0.1 0.44 0.1 0.4 0.5 0.5 0.5
VNH 1.45 1.4 2.9 1.4 2.9 0.55 1.15 0.4 0.7 0.7 0.7
VNL 1.45 0.9 0.7 1.4 0.7 1.21 0.7 0.4 0.3 0.3 0.4
P
N
+
VENT
–
ENCENDIDO
APAGADO
+5 V
ID
VSAL
CCARGA
5 V
0 V
5 V
0 V
VENT
VSAL
ID
0
FIGURA 8-25 Los
picos de corriente
se drenan de la
alimentación VDD cada
vez que la salida cambia
de BAJO a ALTO. Esto
se debe en su mayor
parte a la corriente de
carga de la capacitancia
de carga.
1 5 pF
5 pF
A las demás cargas
La salida de la
compuerta 1 maneja
una CCARGA total de N x 5 pF
FIGURA 8-26 Cada
entrada CMOS se suma
a la capacitancia de
carga total que ve la
salida de la compuerta
reforzadora.
conmutación, se producirán más de estos picos de corriente por segundo, y se incre-
mentará la corriente actual promedio de VDD. Aún con cargas capacitivas muy bajas
hay un punto breve en la transición de BAJO a ALTO o de ALTO a BAJO cuando los
dos transistores de salida se encienden en forma parcial. Esto reduce efectivamente
la resistencia del voltaje de alimentación a tierra, con lo que se produce también un
pico de corriente.
Por ende, a frecuencias mayores el circuito CMOS empieza a perder algunas
de sus ventajas en comparación con otras familias lógicas. Como regla general, una
compuerta C-MOS tendrá la misma PD promedio que una compuerta 74LS a frecuen-
cias cercanas de 2 a 3 MHz. Por encima de estas frecuencias también se incrementa la
potencia de TTL con la frecuencia, debido a la corriente requerida para invertir
la carga en la capacitancia de carga. Para los chips MSI, la situación es algo más
compleja de como la describimos aquí, por lo que un diseñador lógico tendrá que
realizar un análisis detallado para determinar si CMOS tiene o no una ventaja en
cuanto a la disipación de potencia a una frecuencia de operación específica.
Capacidad de carga
Al igual que N-MOS y P-MOS, las entradas CMOS tienen una resistencia en extremo
grande (1012
), la cual en esencia no drena corriente de la alimentación de la señal.
No obstante, cada entrada CMOS presenta, por lo general, una carga de 5 pF a tie-
rra. Esta capacitancia de entrada limita el número de entradas CMOS que puede
SECCIÓN 8-9/CARACTERÍSTICAS DE LAS SERIES CMOS 527
528 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
manejar una salida CMOS (vea la figura 8-26). La salida CMOS debe cargar y des-
cargar la combinación en paralelo de todas las capacitancias de entrada, de forma
que se incremente el tiempo de conmutación de la salida en proporción al número de
cargas que se controlan. Por lo general, cada carga CMOS incrementa el tiempo
de propagación del circuito reforzador por 3 ns. Por ejemplo, la compuerta NAND 1
en la figura 8-26 podría tener un tPLH de 25 ns si no manejara cargas; esto se incre-
mentaría a 25 ns  20(3 ns)  85 ns si tuviera veinte cargas.
Así, la capacidad de carga CMOS depende del máximo tiempo de propagación
permisible. Por lo general, las salidas CMOS están limitadas a una capacidad de
carga de 50 para la operación en baja frecuencia (1 MHz). Desde luego que para la
operación a frecuencias más altas, la capacidad de carga tendría que ser menor.
Velocidad de conmutación
Aunque los dispositivos CMOS al igual que N-MOS y P-MOS, tienen que controlar
capacitancias de carga relativamente grandes, su velocidad de conmutación es un
poco más rápida debido a su baja resistencia de salida en cada estado. Una salida N-
MOS debe cargar la capacitancia de carga a través de una resistencia relativamente
grande (100-k). En el circuito CMOS, la resistencia de salida en el estado ALTO es
la RENC del P-MOSFET, que, por lo general, es de 1 k o menor. Esto permite una
carga más rápida de la capacitancia de carga.
Por lo general, una compuerta NAND de la serie 4000 tiene un tpd promedio de 50 ns
a VDD  5 V, y de 25 ns a VDD  10 V. La razón de la mejora en tpd a medida que se
incrementa VDD es que la RENC en los MOSFETs se reduce en forma considerable a
voltajes de alimentación más alto. Por lo tanto, parece ser que VDD debería hacerse
lo más grande posible para la operación a frecuencias más altas. No obstante, el
valor de VDD más grande producirá un aumento en la disipación de potencia.
Una compuerta NAND ordinaria en la serie 74HC o 74HCT tiene un tpd prome-
dio aproximado de 8 ns cuando se opera a VDD  5 V. Una compuerta NAND 74AC/
ACT tiene un tpd promedio aproximado de 4.7 ns. Una compuerta NAND 74AHC
tiene un tpd promedio aproximado de 4.3 ns.
Entradas sin utilizar
Las entradas CMOS nunca se deben dejar desconectadas. Todas las entra-
das CMOS deben conectarse ya sea a un nivel de voltaje fijo (0 V o VDD) o
a otra entrada.
Esta regla se aplica incluso a las entradas de las compuertas lógicas adicionales que
no se utilicen en un chip. Una entrada CMOS desconectada está susceptible al ruido
y las cargas estáticas que podrían polarizar fácilmente los MOSFETs de canal P y
de canal N en el estado conductivo, lo cual produciría un aumento en la disipación de
potencia y un posible sobrecalentamiento.
Sensibilidad estática
Todos los dispositivos electrónicos, en mayor o menor grado, son sensibles al daño
debido a la electricidad estática. El cuerpo humano es un excelente almacén de
cargas electrostáticas. Por ejemplo, cuando usted camina a lo largo de una carpeta
puede acumularse en su cuerpo una carga estática de más de 30,000 V. Si después
toca un dispositivo electrónico, parte de esta carga puede llegar a transferirse al
dispositivo. Las familias lógicas MOS (y todos los MOSFETs) son en especial sus-
ceptibles al daño por carga electrostática. Toda esta diferencia de potencial (carga
estática) que se aplica a través de la película de óxido sobrepasa la capacidad de
aislamiento dieléctrico de la película. Cuando se rompe, el flujo de corriente resul-
tante (descarga) es como un golpe de rayo, el cual hace un hoyo en la capa de óxido
y daña el dispositivo en forma permanente.
La descarga electrostática (ESD) es responsable de los billones de dólares
de daños a equipos electrónicos que se gastan por año, por lo que los fabricantes de
equipo han dedicado una gran parte de su atención al desarrollo de procedimientos
de manejo especial para todos los dispositivos y circuitos electrónicos. Aún y cuando
la mayoría de los CIs modernos tienen redes de resistencias-diodos dentro del chip
para proteger las entradas y las salidas de los efectos de la ESD, la mayoría de los
laboratorios de ingeniería, las instalaciones de producción y los departamentos de
servicio en el campo utilizan las siguientes precauciones:
1. Conecte el chasis de todos los instrumentos de prueba, las puntas de los cauti-
nes y su banco de trabajo (si es de metal) a tierra física (es decir, la terminal
redonda en el enchufe de 120 VAC). Esto evita la acumulación de carga estática
en estos dispositivos, la cual podría transferirse a cualquier tablero de circuitos
o CI con el que pudieran tener contacto.
2. Conéctese usted mismo a tierra física con una muñequera especial. Esto permi-
tirá que las cargas potencialmente dañinas de su cuerpo se descarguen a tierra.
La muñequera contiene una resistencia de 1-M que limita la corriente a un
valor no letal, en caso de que usted toque por accidente un voltaje “vivo” mien-
tras trabaja con el equipo.
3. Mantenga los CIs (en especial los MOS) en espuma conductora o en papel alu-
minio. Esto mantendrá todas las terminales del CI en corto, de manera que no
puedan desarrollarse voltajes peligrosos entre dos terminales cualesquiera.
4. Evite tocar las terminales del CI e insértelo en el circuito justo después de
removerlo de la caja protectora.
5. Coloque cintas para poner en corto los conectores de los bordes de las tarjetas
de PC cuando los cargue o los transporte. Evite tocar los conectores del borde.
Almacene los tableros de PC en plástico conductor o en sobres metálicos.
6. No deje entradas de CI sin usar desconectadas, ya que las entradas abiertas
tienden a atraer cargas estáticas dispersas.
Efecto de cierre
Debido a la existencia inevitable de transistores PNP y NPN parásitos (indeseables)
integrados en el sustrato de los CIs CMOS, puede producirse una condición cono-
cida como efecto de cierre bajo ciertas circunstancias. Si estos transistores parásitos
en un chip CMOS se disparan y empiezan a conducir, se cerrarán (permanecerán
ENCENDIDOS en forma permanente) y podría fluir una corriente muy grande, con
lo que se destruiría el CI. La mayoría de los CIs CMOS modernos están diseña-
dos con circuitos de protección que ayudan a prevenir el efecto de cierre, pero de
todas formas puede llegar a ocurrir cuando se exceden las clasificaciones de vol-
taje máximo del dispositivo. El efecto de cierre puede dispararse mediante picos de
alto voltaje o sobretiros de voltaje en las entradas y salidas del dispositivo. Pueden
conectarse diodos fijadores de nivel de manera externa para proteger el dispositivo
contra los transitorios, en especial cuando los CIs se utilizan en ambientes indus-
triales en los que se lleva a cabo la conmutación de cargas en alto voltaje y/o alta
corriente (controladores de motores, relevadores, etc.). Una fuente de energía bien
regulada minimizará los picos en la línea VDD; si la fuente también tiene limitación
de corriente, limitará la corriente en caso de que ocurra el efecto de cierre. Las
técnicas de fabricación de CMOS modernas han reducido en forma considerable la
susceptibilidad del CI al efecto de cierre.
SECCIÓN 8-9/CARACTERÍSTICAS DE LAS SERIES CMOS 529
530 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
PREGUNTAS DE REPASO 1. ¿Cuál de las series CMOS tiene compatibilidad de terminales con TTL?
2. ¿Cuál de las series CMOS es compatible eléctricamente con TTL?
3. ¿Cuál de las series CMOS es equivalente funcional de TTL?
4. ¿Qué familia lógica combina las mejores características de las lógicas CMOS y
bipolar?
5. ¿Qué factores determinan la capacidad de carga de CMOS?
6. ¿Qué precauciones hay que tomar cuando se manejan CIs CMOS?
7. ¿Cuál de las familias de CIs (CMOS,TTL) es la que mejor se adapta a las aplica-
ciones operadas por baterías?
8. Verdadero o falso:
(a) El drenado de energía de CMOS aumenta con la frecuencia de operación.
(b) Las entradas CMOS que no se utilicen pueden dejarse desconectadas.
(c) TTL se adapta mejor que CMOS para la operación en ambientes con mucho
ruido.
(d) La velocidad de conmutación de CMOS aumenta con la frecuencia de ope-
ración.
(e) La velocidad de conmutación de CMOS aumenta con el voltaje de alimenta-
ción.
(f) La condición de efecto de cierre es una ventaja de CMOS sobre TTL.
8-10 TECNOLOGÍA DE BAJO VOLTAJE
Los fabricantes de CIs están continuamente buscando formas de colocar dispositi-
vos semiconductores (diodos, resistencias, transistores, etc.) lo más junto posible
en un chip; es decir, buscan incrementar la densidad del chip. Esta mayor densidad
tiene cuando menos dos beneficios principales. En primer lugar, permite encapsular
más circuitos en el chip; en segundo lugar, como los circuitos están más cerca unos
de otros, el tiempo para que las señales se propaguen de un circuito a otro dismi-
nuirá, con lo cual se mejorará la velocidad de operación del circuito en general.
También hay desventajas en cuanto a tener una mayor densidad de chip. Cuando los
circuitos se colocan más juntos, el material aislante que separa un circuito de otro
es más estrecho. Esto reduce la cantidad de voltaje que puede soportar el circuito
antes de que se produzca un rompimiento dieléctrico. Al aumentar la densidad del
chip se aumenta la disipación de potencia total del chip, con lo cual se puede elevar
la temperatura del chip por encima del máximo nivel permitido para una operación
confiable.
Estas desventajas se pueden neutralizar si el chip se opera a niveles de voltaje
mejores, con lo cual se reduce la disipación de potencia. Varias series lógicas en el
mercado operan con 3.3 V. Las series más recientes están optimizadas para operar
con 2.5 V. Esta tecnología de bajo voltaje podría muy bien significar el comienzo de
una transición gradual en el campo de equipos digitales, en la que en un momento
dado todos los CIs digitales operarán a partir de un nuevo estándar de bajo voltaje.
En la actualidad, los dispositivos de bajo voltaje están diseñados para aplicacio-
nes que varían desde los juegos electrónicos hasta las estaciones de trabajo de inge-
niería. Las CPUs más recientes son dispositivos de 2.5V, y los chips de RAM dinámica
de 3.3 V se utilizan en módulos de memoria para computadoras personales.
Actualmente existen varias series lógicas de bajo voltaje; desafortunadamente
no nos es posible cubrir aquí todas las familias y series de todos los fabricantes, por
lo que sólo describiremos las que ofrece actualmente Texas Instruments.
Familia CMOS
■ La serie 74VLC (CMOS de bajo voltaje) contiene el surtido más amplio de las
conocidas compuertas SSI y funciones MSI de las familias de 5 V, junto con
muchos dispositivos de interfase de bus tales como búferes, latches, reforzado-
res, etcétera. Esta serie puede manejar niveles lógicos de 5-V en sus entradas,
por lo que puede realizar conversiones de sistemas de 5-V a sistemas d 3-V.
Siempre y cuando el control de corriente se mantenga lo suficientemente bajo
como para mantener el voltaje de salida dentro de los límites aceptables, la
serie 74VLC también podrá manejar entradas TTL de 5 V. Los requerimientos
de entrada de VIH de piezas CMOS de 5-V tales como la serie 74HC/AHC no per-
miten que los dispositivos LVC los controlen.
■ En la actualidad, la serie 74ALVC (CMOS avanzado de bajo voltaje) ofrece el ren-
dimiento más alto. Los dispositivos de esta serie están diseñados principalmente
para aplicaciones de interfase de bus en las que se utilice sólo lógica de 3.3 V.
■ La serie 74LV (Bajo voltaje) ofrece tecnología CMOS y muchas de las compuertas
SSI y funciones lógicas MSI comunes, junto con algunos búferes octales populares,
latches y flip-flops. Está diseñada para operar sólo con otros dispositivos de 3.3V.
■ La serie 74AVC (CMOS avanzado de muy bajo voltaje) se introdujo teniendo en
mente los sistemas del mañana. Está optimizada para sistemas de 2.5 V, pero
puede operar con voltajes de alimentación con valores tan bajos como 1.2 V o
de hasta 3.3 V. Este amplio intervalo de voltaje de alimentación la hace útil en
sistemas con voltajes mixtos.Tiene tiempos de propagación de menos de 2 ns, lo
cual hace de esta serie un digno rival de los dispositivos bipolares 74AS. Tiene
muchas de las características de interfase de bus de las series BiCMOS que la
harán útil en futuras generaciones de estaciones de trabajo de bajo voltaje, PCs,
redes y equipo de telecomunicaciones.
■ La serie 74AUC (CMOS avanzado de ultra bajo voltaje) está optimizada para ope-
rar a niveles lógicos de 1.8 V.
■ La serie 74AUP (Ultra baja potencia avanzada) es la serie lógica de menor poten-
cia de la industria y se utiliza en aplicaciones portátiles, operadas por baterías.
■ La serie 74CBT (Tecnología de interconexión cruzada) ofrece circuitos de interfase
de bus de alta velocidad que pueden conmutar con rapidez cuando se habilitan,
y no cargan el bus cuando se deshabilitan.
■ La serie 74CBTLV (Tecnología transversal de bajo voltaje) es el complemento de
3.3 V para la serie 74CBT.
■ La serie 74GTLP (Lógica de transceptor de disparo Plus) está hecha para aplicacio-
nes de segundo plano en paralelo de alta velocidad. Veremos esta serie en una
sección posterior del libro.
■ La serie 74SSTV (Lógica terminada en series de acomplamiento) es útil en los sis-
temas de memoria avanzada de alta velocidad de las computadoras modernas.
■ La serie Interruptor TS (Interruptor de señal TI) está hecha para aplicaciones de
señales mixtas y ofrece algunas soluciones de conmutación analógica y digital,
y de multiplexeo.
■ La serie 74TVC (Circuito de sujeción de traducción de voltaje ) se utiliza para pro-
teger las entradas y salidas de los dispositivos sensibles contra el exceso de
voltaje en las líneas de bus.
Familia BiCMOS
■ La serie 74LVT (Tecnología BiCMOS de bajo voltaje) contiene piezas BiCMOS que
están diseñadas para aplicaciones de interfase de bus de 8 bits y de 16 bits. Al
igual que en la serie LVC, las entradas pueden manejar niveles lógicos de 5 V
y sirven como un traductor de 5 V a 3 V. Como los niveles de salida [VOH(mín) y
VOL(máx)] son equivalentes a los niveles TTL, son totalmente compatibles eléc-
tricamente con TTL. La tabla 8-10 compara las diversas características.
■ La serie 74ALVT (Tecnología BiCMOS avanzada de bajo voltaje) es una mejora
en relación con la serie LVT. Ofrece la operación con 3.3 V o 2.2 V a 3 ns y sus
terminales son compatibles con las de las series ABT y LVT existentes.También
está diseñada para aplicaciones de interfase de bus.
SECCIÓN 8-10/TECNOLOGÍA DE BAJO VOLTAJE 531
532 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
Introducción
AUP
TS Switch
AUC
SSTV
Little Logic
TVC
CBTLV
AHC
LVT
ABT
VME
GTLP
AVC
ALVT
ALVC
LVC
LV
CBT
ACL
FCT
HC CD4000
BCT
ALS
F
AS
LS
TTL
S
Crecimiento
2005 1996 1985 1981 1964
Madurez Decaimiento Obsolescencia
Bipolar
CMOS
BiCMOS
FIGURA 8-27 Ciclo de vida de los productos lógicos. (Cortesía de Texas Instruments.)
■ La serie 74ALB (BiCMOS avanzada de bajo voltaje) está diseñada para aplicacio-
nes de interfase de bus de 3.3 V. Proporciona un control de salida de 25 mA y
tiempos de propagación de sólo 2.2 ns.
■ La serie 74VME (Módulo VERSA Eurocard) está diseñada para operar con la tec-
nología de bus VME estándar.
Los técnicos e ingenieros en servicios digitales ya no pueden suponer que todos
los CIs en un circuito, sistema o pieza de equipo digital está operando a 5, y deben
estar preparados para tratar con las consideraciones de interfase necesarias en los
sistemas de voltajes mixtos. Las habilidades de integración que usted aprenderá en
este capítulo le permitirán lograr esto, sin importar lo que se desarrolle a medida
que se vuelvan más comunes los sistemas de bajo voltaje.
El continuo desarrollo de la tecnología de bajo voltaje promete provocar una
completa revolución desde el sistema original de 5 V, a los sistemas de voltajes mix-
tos y, finalmente, a los sistemas digitales puros de 3.3V, de 2.5V o incluso de voltajes
más bajos. Para poner todo esto en perspectiva, en la figura 8-27 se muestra la per-
cepción de Texas Instruments del ciclo de vida de las diversas familias lógicas.
TABLA 8-10 Características de las series de bajo voltaje.
LV ALVC AVC ALVT ALB
VCC (recomendado) 2.7–3.6 2.3–3.6 1.65–3.6 2.3–2.7 3–3.6
TPD (ns) 18 3 1.9 3.5 2
VIH (V) De 2 a VCC  0.5 De 2 a 4.6 De 1.2 a 4.6 De 2 a 7 D 2.2 a 4.6
VIL (V) 0.8 0.8 0.7 0.8 0.6
IOH (mA) 6 12 8 32 25
IOL (mA) 6 12 8 32 25
PREGUNTAS DE REPASO 1. ¿Cuáles son las dos ventajas de los CIs de mayor densidad?
2. ¿Cuáles son las desventajas?
3. ¿Cuál es el mínimo voltaje en ALTO en la entrada de un 74LVT?
4. ¿Cuál de las series de bajo voltaje puede trabajar sólo con otros CIs de series de
bajo voltaje?
5. ¿Cuál de las series de bajo voltaje es totalmente compatible eléctricamente con
TTL?
8-11 SALIDAS DE COLECTOR ABIERTO/DRENADOR ABIERTO
Algunas veces, varios dispositivos digitales comparten el uso de un solo conductor
para poder transmitir una señal hacia algún dispositivo de destino, en forma muy
parecida a como los vecinos comparten la misma calle. Esto significa que varios dis-
positivos deben tener sus salidas conectadas al mismo conductor, lo que en esencia
los conecta a unos con otros. Para todos los dispositivos lógicos que hemos conside-
rado hasta ahora, esto representa un problema. Cada salida tiene dos estados, ALTO
y BAJO. Cuando una salida está en ALTO mientras la otra está en BAJO y cuando se
conectan juntas tenemos un conflicto ALTO/BAJO. ¿Cuál de los dos ganará? Al igual
que las vencidas, el más fuerte de los dos es el que ganará. En este caso, el circuito
de transistores cuyo transistor de salida tenga la resistencia en “ENCENDIDO” más
baja arrastrará el voltaje de salida hacia su dirección.
La figura 8.28 muestra un diagrama de bloques genérico de dos dispositivos lógicos
con sus salidas conectadas a un conductor común. Si los dos dispositivos lógicos fue-
ran CMOS, entonces la resistencia en ENCENDIDO del circuito de puesta en alto
que produzca el nivel ALTO como salida sería aproximadamente igual a la resisten-
cia en ENCENDIDO del circuito de puesta en bajo que produzca el nivel BAJO como
salida. El voltaje en el conductor común será de un valor aproximado a la mitad del
voltaje de alimentación. Este voltaje se encuentra en el intervalo indeterminado
para la mayoría de las series CMOS y es inaceptable para manejar una entrada
CMOS. Lo que es más, la corriente a través de los dos MOSFETs conductores será
mucho mayor de lo normal, en especial con valores más altos de VDD, y podría
dañar los CIs.
Las salidas CMOS convencionales nunca deben conectarse juntas.
Si los dos dispositivos fueran salidas TTL en forma de tótem como se muestra
en la figura 8-29, se produciría una situación similar pero con distintos resultados
Puesta en alto
ENCENDIDO
APAGADO
Puesta en bajo
ENCENDIDO
APAGADO
+V +V
Compuerta A Compuerta B
Llevando el conductor
a ALTO
Conductor
común
Arrastrando el
conductor a BAJO
S
o
n
d
a
l
ó
g
i
c
a
I
n
d
e
t
e
r
m
i
n
a
d
o
FIGURA 8-28 Dos
salidas que luchan
por el control de un
conductor.
SECCIÓN 8-11/SALIDAS DE COLECTOR ABIERTO/DRENADOR ABIERTO 533
534 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
FIGURA 8-29 Las
salidas en forma de
tótem que se conectan
juntas pueden producir
una corriente dañina a
través de Q4.
COMPUERTA A
Q4A
Q3A
ENCENDIDO
130 ⍀
+5 V
APAGADO
APAGADO
ENCENDIDO
Q4B
Q3B
COMPUERTA A
+5 V
X
debido a la diferencia en los circuitos de salida. Suponga que la salida de la com-
puerta A se encuentra en el estado ALTO (Q3A ENCENDIDO, Q4A APAGADO) y que
la salida de la compuerta B se encuentra en el estado BAJO (Q3B APAGADO, Q4B
ENCENDIDO). En esta situación, Q4B representa una carga de muy baja resistencia
en Q3A y drenará una corriente mucho mayor de la que está clasificado para manejar.
Esta corriente podría no dañar de inmediato a Q3A o Q3B, pero durante un periodo
de tiempo podría causar un sobrecalentamiento y deterioro en el rendimiento, con
la eventual falla del dispositivo.
Otro problema que se produce por esta corriente relativamente alta que fluye
a través de Q4B es que producirá una caída mayor de voltaje a través del colector
emisor del transistor y el valor de VOL estaría entre 0.5 y 1 V. Esto es mayor que el
VOL(máx) permisible. Por estas razones:
Las salidas TTL en forma de tótem nunca deben conectarse juntas.
Salidas de colector abierto/drenador abierto
Una solución al problema de compartir un conductor común entre compuertas es
remover el transistor de puesta en alto activo del circuito de salida de cada com-
puerta. De esta forma, ninguna de las compuertas tratará siquiera de asegurar un
nivel ALTO lógico. Las salidas TTL que están modificadas de esta forma se llaman
salidas de colector abierto. Los circuitos CMOS de salida que se modifican de esta
forma se llaman salidas de drenador abierto. La salida se toma en el drenador del
MOSFET de puesta en bajo de canal N, el cual es un circuito abierto (es decir, no
está conectado a ningún otro circuito).
El equivalente de TTL se llama salida de colector abierto ya que el colector del
transistor inferior en el tótem se conecta en forma directa a la terminal de salida y
en ninguna otra parte, como se muestra en la figura 8-30(a). La estructura de colec-
tor abierto elimina los transistores de puesta en alto Q3, D1 y R4. En el estado BAJO
de salida, Q4 está ENCENDIDO (tiene corriente de base y en esencia es un corto
entre colector y emisor); en el estado ALTO de salida, Q4 está APAGADO (no tiene
corriente de base y es en esencia un circuito abierto entre colector y emisor). Como
este circuito no tiene una forma interna de elevar la salida a ALTO, el diseñador del
circuito debe conectar una resistencia de puesta en alto externa RP a la salida, como
se muestra en la figura 8-30(b).
Cuando Q4 está ENCENDIDO, lleva el voltaje de salida a BAJO. Cuando Q4 está
APAGADO, RP lleva la salida de la compuerta a ALTO. Observe que sin la resistencia
FIGURA 8-30 (a) Circuito TTL de colector abierto; (b) con resistencia de puesta en alto externa.
Salida
RP
(externa)
+5 V
Q4
–
Salida
Q4
Q2
R2
+5 V
R3
Q1
R1
+
Estados de operación
Q4 ENCENDIDO → VO = VOL聿 0.4V
(b)
(a)
VO
Q4 APAGADO → VO =VOH = +5 V
+5 V
10 k⍀
A
B
C
Salida = A • B • C
A
B
C
Simboliza la conexión
AND alambrada
74LS05 (colector abierto)
o
74HC05 (drenador abierto)
FIGURA 8-31
Operación AND
alambrado mediante el
uso de compuertas de
colector abierto.
de puesta en alto, el voltaje de salida sería indeterminado (flotante). El valor de la
resistencia RP se elije, por lo general, de forma que sea 10 k. Este valor es lo bas-
tante pequeño como para que, en el estado ALTO, la caída de voltaje a través de la
resistencia debido a la corriente de carga no reducirá el voltaje de salida por debajo
del VOH mínimo. Es lo bastante grande como para que, en el estado BAJO, limite la
corriente que pasa a través de Q4 a un valor por debajo de IOL(máx).
Cuando varias compuertas de colector abierto o de drenador abierto comparten
una conexión común, como se muestra en la figura 8-31, el conductor común está en
ALTO de manera predeterminada, debido a la resistencia de puesta en alto. Cuando
cualquiera (una o más) de las salidas de las compuertas lo lleva a BAJO, los 5V caen
SECCIÓN 8-11/SALIDAS DE COLECTOR ABIERTO/DRENADOR ABIERTO 535
536 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
J
CLK
K
Q
Q
74LS112
*El transistor se muestra
para fines ilustrativos
7406
*
+24 V
24 V, 25 mA
+
–
VO
FIGURA 8-32 Un
búfer/reforzador
de colector abierto
controla una carga con
alta corriente y alto
voltaje.
a través de RP y la conexión común se encuentra en el estado BAJO. Como la salida
común está en ALTO sólo cuando todas las salidas se encuentran en el estado ALTO,
si se conectan las salidas de esta forma se implementa en forma básica la función
AND lógica. A ésta se le conoce como conexión AND alambrada y se muestra en
forma simbólica mediante el símbolo de compuerta AND punteado. En realidad ahí
no hay una compuerta AND. Una compuerta AND alambrada sólo puede implemen-
tarse con dispositivos lógicos TTL de colector abierto y CMOS de drenador abierto.
Para sintetizar, los circuitos de colector abierto/drenador abierto no pueden
hacer que sus salidas estén en ALTO; sólo pueden llevarlas a BAJO. Podemos uti-
lizar esta característica para permitir que varios dispositivos compartan el mismo
conductor para transmitir un nivel lógico a otro dispositivo, o para combinar las
salidas de los dispositivos con efectividad, en una función AND lógica. Como dijimos
antes, el propósito del transistor de puesta en alto activo en el circuito de salida de
las compuertas convencionales es cargar con rapidez la capacitancia de carga y per-
mitir una conmutación más rápida. Los dispositivos de colector abierto y drenador
abierto tienen una velocidad de conmutación mucho más lenta de BAJO a ALTO y
en consecuencia no se utilizan en aplicaciones de alta velocidad.
Búfer/Reforzadores de colector abierto/drenador abierto
Las aplicaciones de las salidas de colector/drenador abierto que hemos descrito se
utilizaban más en los primeros días de los circuitos lógicos de lo que se emplean
actualmente. Un uso más común de estos circuitos ahora es como un búfer/reforza-
dor. Un búfer o reforzador es un circuito lógico que está diseñado para tener una
mayor capacidad de corriente y/o voltaje de salida que un circuito lógico ordinario.
Estos dispositivos permiten que un circuito de salida más débil controle una carga
pesada. Los circuitos de colector/drenador abierto ofrecen cierta flexibilidad única
como búfer/reforzadores.
Debido a sus especificaciones altas de IOL y VOH, el 7406 y el 7407 son los únicos
dispositivosTTL estándar que aún se recomiendan para nuevos diseños. El 7406 es un
CI búfer/reforzador de colector abierto, que contiene seis INVERSORes con salida
de colector abierto que pueden drenar hasta 40 mA en el estado BAJO. Además, el
7406 puede manejar voltajes de salida de hasta 30 V en el estado ALTO. Esto signi-
fica que la salida puede conectarse a una carga que opere con un voltaje mayor de 5V.
En la figura 8-32 se ilustra este caso, en donde se utiliza un 7406 como búfer entre
un flip-flop 74LS112 y una lámpara incandescente con valores nominales de 24V, 25
mA. El 7406 controla el estado ENCENDIDO/APAGADO de la lámpara para indicar
el estado de la salida Q del FF. Observe que la lámpara se energiza a través de 24V
y actúa como resistencia de puesta en alto para la salida de colector abierto.
Cuando Q  1 la salida del 7406 cambia a BAJO, su transistor de salida drena
los 25 mA de corriente de la lámpara que suministra la fuente de 24 V y la lámpara
se enciende. Cuando Q  0 el transistor de salida del 7406 se apaga; no hay camino
para la corriente y la lámpara se apaga. En este estado aparecerán todos los 24 V a
FIGURA 8-34 Notación IEEE/ANSI
para salidas de colector abierto y
drenador abierto.
74LS01
7406
través del transistor de salida APAGADO, de manera que VOH  24V, un valor menor
que la clasificación máxima de VOH para el 7406.
Las salidas de colector abierto se utilizan con frecuencia para controlar LEDs
indicadores, como se muestra en la figura 8-33(a). La resistencia se utiliza para limi-
tar la corriente a un valor seguro. Cuando la salida del INVERSOR está en BAJO,
su transistor de salida proporciona una ruta de baja resistencia a tierra para la
corriente del LED, por lo que éste se enciende. Cuando la salida del INVERSOR
está en ALTO, su transistor de salida está apagado y no hay ruta para la corriente
del LED; en este estado, el LED se apaga.
El 7407 es un búfer no inversor de colector abierto, con las mismas clasificacio-
nes de voltaje y corriente que un 7406.
El 74HC05 es un inversor hexadecimal de colector abierto con capacidad de
drenar 25 mA de corriente. La figura 8-33(b) muestra una forma de integrar un FF-
D 74AHC74 con un relevador de control, el cual es un interruptor electromagnético.
Los contactos se cierran magnéticamente cuando la corriente nominal fluye a través
de la bobina. El 74HC05 puede manejar el voltaje y corriente relativamente altos
del relevador, de manera que la salida del 74AHC74 pueda encender y apagar el
relevador.
Símbolo IEEE/ANSI para salidas de colector/drenador
abierto
La nueva simbología IEEE/ANSI utiliza una notación distinta para identificar sali-
das de colector/drenador abierto. La figura 8-34 muestra la designación IEEE/ANSI
estándar para una salida de colector/drenador abierto. Es un diamante subrayado.
Aunque por lo general no utilizaremos la simbología IEEE/ANSI completa en este
libro, sí usaremos este diamante subrayado para indicar salidas de colector abierto
y drenador abierto.
FIGURA 8-33
(a) Una salida de
colector abierto puede
usarse para controlar
un indicador de LED;
(b) una salida CMOS
de colector abierto.
+5 V
RS
7406
Q
D
Q
74HCT74
(a)
+12 V
74HC05
Q
D
Q
74AHC74
(b)
12 V
20 mA
Bobina
SECCIÓN 8-11/SALIDAS DE COLECTOR ABIERTO/DRENADOR ABIERTO 537
538 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
PREGUNTAS DE REPASO 1. ¿Cuándo ocurre un conflicto ALTO/BAJO?
2. ¿Por qué no deben conectarse juntas las salidas en forma de tótem?
3. ¿Qué diferencia hay entre las salidas de colector abierto y las salidas en forma
de tótem?
4. ¿Por qué las salidas de colector abierto necesitan una resistencia de puesta en
alto?
5. ¿Cuál es la expresión lógica para la conexión AND alambrada de seis salidas de
7406?
6. ¿Por qué las salidas de colector abierto son, por lo general, más lentas que las
salidas en forma de tótem?
7. ¿Cuál es el símbolo IEEE/ANSI para las salidas de colector abierto?
8-12 SALIDAS LÓGICAS TRIESTADO (TRES ESTADOS)
La configuración triestado es un tercer tipo de circuitos de salida que se utilizan
en las familias TTL y CMOS. Aprovechan la operación de alta velocidad del arreglo
de salida puesta en alto/puesta en bajo, al tiempo que permite conectar las salidas
juntas para compartir un conductor común. Se llama triestado porque permite tres
posibles los estados de salida: ALTO, BAJO y alta impedancia (Hi-Z). El estado Hi-Z
es una condición en la que tanto el transistor de puesta en alto como el de puesta en
bajo se APAGAN, de forma que la terminal de salida sea una alta impedancia tanto
para tierra como para el voltaje de alimentación V. La figura 8-35 ilustra estos tres
estados para un circuito inversor simple.
Los dispositivos con salidas triestado tienen una entrada de habilitación.A menudo
esta entrada se etiqueta como E (habilita) o como OE (habilita salida).
Cuando OE  1, como se muestra en las figuras 8-35(a) y (b), el circuito opera
como INVERSOR normal, ya que el nivel lógico ALTO en OE habilita la salida. Ésta
se encontrará en ALTO o en BAJO, dependiendo del nivel de entrada. Cuando OE  0,
como se muestra en la figura 8-35(c), la salida del circuito se deshabilita. Cambia a
su estado Hi-Z con ambos transistores en el estado no conductor. En este estado, la
terminal de salida es en esencia un circuito abierto (no está conectada a nada).
Ventaja de las salidas triestado
Las salidas de los CIs triestado pueden conectarse juntas (comparten el uso de un
conductor común) sin sacrificar la velocidad de conmutación, ya que cuando se habi-
lita una salida triestado opera como una salida en forma de tótem para TTL, o como
ALTO
BAJO
+V
OE = 1
habilitada
(a)
BAJO
ALTO
OE = 1
habilitada
(b)
Hi-Z
ALTO
o
BAJO
OE = 0
deshabilitada
(c)
+V +V
APA-
GADO
ENCEN-
DIDO
APA-
GADO
ENCEN-
DIDO
APA-
GADO
APA-
GADO
FIGURA 8-35 Las tres posibles condiciones de una salida triestado.
x
A
E
(a)
74LS125
x
A
E
74LS126
E x
0
1
A
Hi-Z
(b)
E x
0
1
Hi-Z
A
FIGURA 8-36 Búferes
triestado no inversores.
una salida CMOS de puesta en alto/puesta en bajo activa con sus características
asociadas de alta impedancia y alta velocidad. No obstante, es importante tener en
cuenta que cuando las salidas triestado se conectan juntas, sólo una de ellas debe
estar habilitada en un momento dado. En caso contrario, dos salidas activas podrían
luchar por el control del conductor común, como vimos antes, con lo cual fluirían
corrientes dañinas y se producirían niveles lógicos inválidos.
Al hablar sobre los circuitos de colector/drenador abierto y triestado, nos hemos
referido a casos en los que las salidas de varios dispositivos deben compartir un solo
conductor para transmitir la información a otro dispositivo. A ese conductor com-
partido se le conoce como línea de bus. Un bus completo está compuesto de varios
líneas conductoras que se utilizan para transportar información digital entre dos o
más dispositivos que comparten el uso del bus.
Búferes triestado
Un búfer triestado es un circuito que se utiliza para controlar el paso de una señal lógica
de la entrada a la salida. Algunos búferes triestado también invierten la señal a
medida que va pasando. A los circuitos de la figura 8-35 se les puede llamar búferes
triestado inversores.
Dos de los CIs de búfer triestado que se utilizan comúnmente son el 74LS125 y
el 74LS126. Ambos contienen cuatro búferes triestado no inversores, como los que
se muestran en la figura 8-36. El 74LS125 y el 74LS126 difieren sólo en el estado
activo de sus entradas HABILITAR (ENABLE). El 74LS125 permite que la señal de
entrada A llegue a la salida cuando E  0, mientras que el 74LS126 pasa la entrada
cuando E  1.
Los búferes triestado tienen muchas aplicaciones en circuitos en los que se
conectan varias señales a líneas comunes (buses). En el capítulo 9 examinaremos
algunas de estas aplicaciones, pero podemos darnos una idea básica a través de la
figura 8-37(a). Aquí tenemos tres señales lógicas A, B y C, las cuales se conectan a
una línea de bus común a través de búferes triestado 74AHC126. Este arreglo nos
permite transmitir cualquiera de estas señales a través de la línea del bus hacia
otros circuitos; para ello hay que habilitar el búfer apropiado.
Por ejemplo, considere la situación en la figura 8-37(b), en donde EB  1 y EA 
EC  0. Esto deshabilita los búferes superior e inferior, de manera que sus salidas se
encuentran en el estado Hi-Z y se desconectan del bus. Esto se simboliza mediante
las letras X en el diagrama. El búfer medio se habilita de manera que su entrada B
pase hacia su salida y hacia el bus, del cual se enruta hacia otros circuitos conec-
tados al bus. Cuando se conectan salidas triestado juntas como en la figura 8-37,
es importante recordar que no debe habilitarse más de una salida a la vez. En caso
contrario se conectarían dos o más salidas en forma de tótem, lo cual podría pro-
ducir corrientes dañinas. Aún si no se provocaran daños, esta situación produciría
SECCIÓN 8-12/SALIDAS LÓGICAS TRIESTADO (TRES ESTADOS) 539
540 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
A otros
circuitos
(a)
A
B
C
EC
Bus
común
EB
EA
74AHC126
A otros
circuitos
(b)
A
B
C
EC
EB
EA
74AHC126
Deshabilitado
Habilitado
Deshabilitado
+5 V
FIGURA 8-37
(a) Búferes triestado
que se utilizan para
conectar varias señales
a un bus común;
(b) condiciones para
transmitir B al bus.
V DD
0
V DD
0
V DD
V DD
2
0
Entrada A
Entrada B
Bus
común
FIGURA 8-38 SI
dos salidas CMOS
habilitadas se conectan
juntas, el bus estará a
un voltaje aproximado
a VDD/2 cuando las
salidas estén tratando
de ser distintas.
una señal en el bus, la cual es una combinación de dos o más señales. A esto se le
conoce comúnmente como colisión de bus. La figura 8-38 muestra el efecto de habi-
litar las salidas A y B en forma simultánea. En la figura 8-37, cuando las entradas A
y B se encuentran en estados opuestos, contienden por el control del bus. El voltaje
resultante en el bus es un estado lógico inválido. En los sistemas de bus triestado, el
diseñador debe asegurarse que las señales de habilitación no permitan la colisión
de bus.
CIs triestado
Además de los búferes triestado, muchos CIs están diseñados con salidas triestado. Por
ejemplo, el 74LS374 es un CI de registro octal de FFs tipo D con salidas triestado.
Esto significa que es un registro de ocho bits compuesto de FFs tipo D, cuyas salidas
están conectadas a búferes triestado. Este tipo de registro puede conectarse a líneas
de bus comunes junto con las salidas de otros dispositivos similares para permitir la
transferencia eficiente de datos a través del bus. En el capítulo 9 examinaremos este
arreglo de bus de datos triestado. Entre otros tipos de dispositivos lógicos que están
disponibles con salidas triestado están los decodificadores, los multiplexores, los
convertidores analógicos/digitales, los chips de memoria y los microprocesadores.
PREGUNTAS DE REPASO
Símbolo IEEE/ANSI para salidas triestado
La simbología lógica tradicional no tiene una notación especial para las salidas tries-
tado. La figura 8-39 muestra la notación que se utiliza en la simbología IEEE/ANSI
para indicar una salida triestado. Es un triángulo que apunta hacia abajo. Aunque
no forma parte de la simbología tradicional, utilizaremos este triángulo para desig-
nar las salidas triestado durante el resto del libro.
1. ¿Cuáles son los tres estados posibles de una salida triestado?
2. ¿Cuál es el estado de una salida triestado cuando está deshabilitada?
3. ¿Qué es la colisión de bus?
4. ¿Qué condiciones son necesarias para transmitir la señal C al bus en la figura
8-37?
5. ¿Cuál es la designación IEEE/ANSI para las salidas triestado?
8-13 LÓGICA DE INTERFASE DE BUS DE ALTA VELOCIDAD
Muchos sistemas digitales utilizan un bus compartido para transferir señales y datos
digitales entre los diversos componentes del sistema. Como puede ver de nuestra
discusión sobre el desarrollo de la tecnología CMOS, los sistemas se están haciendo
cada vez más rápidos. Muchas de las series lógicas de alta velocidad más recientes
están diseñadas de manera específica para integrarse a un sistema de bus triestado.
Los componentes en estas series son principalmente búferes triestado, transcepto-
res bidireccionales, latches y reforzadores de línea de alta corriente.
A menudo hay una distancia considerable para separar físicamente los compo-
nentes en estos sistemas. Si esta distancia es mayor a unas 4 pulgadas, los conduc-
tores del bus entre ellos necesitan verse como una línea de transmisión. Aunque la
teoría sobre la línea de transmisión podría ocupar todo un libro y se encuentra más
allá del alcance de este texto, la idea general es bastante simple. Los conductores
tienen inductancia, capacitancia y resistencia, lo cual significa que para las seña-
les cambiantes (corriente alterna) tienen una impedancia característica que puede
afectar a una señal que se coloca en un extremo y distorsionarla cuando llega al otro
extremo. A las altas velocidades de las que estamos hablando, el tiempo de recorrido
a través del conductor, los efectos de las ondas reflejadas (como ecos) y la sobreosci-
lación se vuelven preocupaciones reales. Existen varias formas de combatir los pro-
blemas asociados con las líneas de transmisión. Para poder evitar las ondas de pulso
reflejadas, el extremo del bus se debe terminar con una resistencia que sea igual a
la impedancia de la línea (cerca de 50 ), como se muestra en la figura 8-40(a). Este
método no es factible, ya que se requiere demasiada corriente para mantener los
voltajes de los niveles lógicos a través de una resistencia de ese tamaño. Otra téc-
nica utiliza un capacitor para bloquear la corriente directa cuando la línea no está
cambiando, pero en efecto aparece justo como una resistencia al pulso de elevación
o de caída. En la figura 8-40(b) se muestra este método.
Si se utiliza un divisor de voltaje como en la figura 8-40(c), con resistencias más
grandes que la de la línea, la impedancia ayuda a reducir las reflexiones pero con
cientos de líneas de bus individuales es obvio que representa una carga pesada en
la fuente de energía del sistema. La terminación con diodo que se muestra en la
X
A
E
74LS125
X
A
E
74LS126
FIGURA 8-39 Notación
IEEE/ANSI para las
salidas triestado.
SECCIÓN 8-13/LÓGICA DE INTERFASE DE BUS DE ALTA VELOCIDAD 541
542 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS
FIGURA 8-40 Técnicas
de terminación de bus.
Impedancia de línea
D L
Carga
R
(a)
Impedancia de línea
D L
R
(b)
C
Impedancia de línea
D L
+VCC
(c)
Impedancia de línea
D L
(d)
VCC
Impedancia de línea
D L
(e)
R
Reforzador
R1
R2
PREGUNTAS DE REPASO
figura 8-40(d) sólo recorta o fija el sobredisparo/subdisparo de la sobreoscilación
ocasionada por la naturaleza LC reactiva de la línea. La terminación en serie en la
fuente, como se muestra en la figura 8-40(e), reduce la velocidad de conmutación
y por consecuencia reduce los límites de frecuencia del bus, pero mejora en forma
considerable la confiabilidad de las señales de bus.
Como puede ver, ninguno de estos métodos es ideal. Los fabricantes de CIs están
diseñando nuevas series de circuitos lógicos que pueden sobrepasar muchos de estos
problemas. La serie lógica de interfase de bus de Texas Instruments ofrece circuitos
de salida que reducen en forma dinámica la impedancia de salida durante el estado
estable (como una terminación en serie) para amortiguar cualquier sobreoscilación
y reducir las reflexiones en la línea de bus. La serie GTLP (Lógica de transceptor
de disparo Plus) de dispositivos de interfase de bus está diseñada especialmente
para reforzar los buses relativamente extensos que conectan módulos de un sistema
digital grande. El segundo plano se refiere a las interconexiones entre los módulos
en la parte posterior de un sistema de montaje en bastidor de 19 pulgadas, estándar en
la industria.
Otro de los principales participantes en el área de la interfase de bus de alta velo-
cidad es la denominada señalización diferencial de bajo voltaje (LVDS), la cual uti-
liza dos conductores para cada señal; señalización diferencial significa que responde
a la diferencia entre los dos conductores. Por lo general se presentan señales de ruido
indeseables en ambas líneas, las cuales no tienen efecto sobre la diferencia entre las
dos señales. Para representar los dos estados lógicos, la LVDS utiliza una oscilación
de bajo voltaje pero cambia de polaridad para distinguir con claridad un 1 de un 0.
1. ¿Qué tan cerca necesitan estar los componentes unos de otros para ignorar los
efectos de la “línea de transmisión”?
2. ¿Cuáles son las tres características de los conductores reales que se agregan
para distorsionar señales que pasan a través de ellos?
3. ¿Cuál es el propósito de las terminaciones de bus?
8-14 LA FAMILIA ECL DE CIS DIGITALES
La familia TTL utiliza transistores que operan en el modo saturado. Como resultado,
su velocidad de conmutación está limitada en base al tiempo de retraso de almace-
namiento asociado con un transistor que se lleva a saturación. Existe otra familia
lógica bipolar que evita la saturación del transistor, con lo que se incrementa la
velocidad de conmutación en general. A esta familia lógica se le conoce como lógica
de acoplamiento por emisor (ECL), la cual opera en base al principio de conmuta-
ción de corriente, en el cual una corriente de polarización fija menor que IC(sat)
se cambia del colector de un transistor a otro. Debido a esta operación en modo de
corriente, a esta forma lógica también se le conoce como lógica en modo de corriente
(CML).
Circuito ECL básico
El circuito básico para la lógica de acoplamiento por emisor es en esencia la con-
figuración del amplificador diferencial de la figura 8-41(a). El voltaje de alimenta-
ción VEE produce una corriente IE básicamente fija, la cual permanece alrededor de los
3 mA durante la operación normal. A esta corriente se le permite fluir a través de Q1
o de Q2, dependiendo del nivel de voltaje en VENT. En otras palabras, esta corriente
cambia entre el colector de Q1 y el colector de Q2 a medida que VENT cam
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas_Digitales_Principios_y_Aplicaci.pdf

Más contenido relacionado

PDF
Dispositivos electrónicos 8va Edición Thomas L. Floyd.pdf
PDF
System smoke detectors_appguide_spag91
PDF
Sistemas_Digitales_Principios_y_Aplicaci.pdf
PDF
Sistemas digitales
DOCX
Hdl lenguaje descriptivo de hardware
DOCX
Hdl lenguaje descriptivo de hardware
PDF
"Dispositivos Electrónicos" - Octava Edición - Floyd
DOCX
Hdl lenguaje descriptivo de hardware
Dispositivos electrónicos 8va Edición Thomas L. Floyd.pdf
System smoke detectors_appguide_spag91
Sistemas_Digitales_Principios_y_Aplicaci.pdf
Sistemas digitales
Hdl lenguaje descriptivo de hardware
Hdl lenguaje descriptivo de hardware
"Dispositivos Electrónicos" - Octava Edición - Floyd
Hdl lenguaje descriptivo de hardware

Similar a Sistemas_Digitales_Principios_y_Aplicaci.pdf (20)

PDF
PDF
introduccioned electrónica analógica va digital básica (2).pdf
DOCX
Vhd(sistemas digitales ii trabajo)
PDF
Dise_o_digital_3ra_Edici_n_M_Morris_Mano.pdf
DOCX
Unidad 4 lenguaje hdl ISC J3 - A JP
PDF
Sistemas digitale 2009
PDF
Electrónica digital: Sistemas digitales
PDF
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
PDF
Introduccion eda
PDF
DOC
Actividades digital u_2
DOC
Actividades digital u_2
DOC
Actividades digital u_2
DOC
Actividades digital u_2
DOC
Actividades digital u_2
DOC
Actividades digital u_2
DOC
Actividades digital u_2
DOC
Actividades digital u_2
DOC
Actividades digital solucionada
DOC
Actividades digital u_2
introduccioned electrónica analógica va digital básica (2).pdf
Vhd(sistemas digitales ii trabajo)
Dise_o_digital_3ra_Edici_n_M_Morris_Mano.pdf
Unidad 4 lenguaje hdl ISC J3 - A JP
Sistemas digitale 2009
Electrónica digital: Sistemas digitales
Electrónica digital: VHDL el arte de programar sistemas digitales por David G...
Introduccion eda
Actividades digital u_2
Actividades digital u_2
Actividades digital u_2
Actividades digital u_2
Actividades digital u_2
Actividades digital u_2
Actividades digital u_2
Actividades digital u_2
Actividades digital solucionada
Actividades digital u_2
Publicidad

Último (20)

PDF
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
PPT
357161027-seguridad-industrial-diapositivas-ppt.ppt
PPTX
OPERACION DE MONTACARGAS maneji seguro de
PPTX
MODULO 1.SEGURIDAD Y SALUD CONCEPTOS GENERALES.pptx
PDF
HISTORIA DE LA GRÚAA LO LARGO DE LOS TIEMPOSpdf
PDF
Pensamiento Politico Siglo XXI Peru y Mundo.pdf
PDF
Durabilidad del concreto en zonas costeras
PDF
prg2_t01_p01_Fundamentos POO - parte1.pdf
PDF
Primera formulación de cargos de la SEC en contra del CEN
DOCX
CONCEPTOS BASICOS DE LA PROGRAMACION STEP
PDF
Oficio SEC 293416 Comision Investigadora
PPT
tema DISEÑO ORGANIZACIONAL UNIDAD 1 A.ppt
DOCX
Cumplimiento normativo y realidad laboral
PPTX
Introduccion quimica del fuego.ffffffffffpptx
PDF
fulguracion-medicina-legal-418035-downloable-2634665.pdf lesiones por descarg...
PPTX
Presentacion_Palcoma_Alta energia solar eolica
PDF
presentacion sobre los polimeros, como se conforman
PDF
LIBRO UNIVERSITARIO SISTEMAS PRODUCTIVOS BN.pdf
PDF
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
PDF
S15 Protección de redes electricas 2025-1_removed.pdf
Informe Comision Investigadora Final distribución electrica años 2024 y 2025
357161027-seguridad-industrial-diapositivas-ppt.ppt
OPERACION DE MONTACARGAS maneji seguro de
MODULO 1.SEGURIDAD Y SALUD CONCEPTOS GENERALES.pptx
HISTORIA DE LA GRÚAA LO LARGO DE LOS TIEMPOSpdf
Pensamiento Politico Siglo XXI Peru y Mundo.pdf
Durabilidad del concreto en zonas costeras
prg2_t01_p01_Fundamentos POO - parte1.pdf
Primera formulación de cargos de la SEC en contra del CEN
CONCEPTOS BASICOS DE LA PROGRAMACION STEP
Oficio SEC 293416 Comision Investigadora
tema DISEÑO ORGANIZACIONAL UNIDAD 1 A.ppt
Cumplimiento normativo y realidad laboral
Introduccion quimica del fuego.ffffffffffpptx
fulguracion-medicina-legal-418035-downloable-2634665.pdf lesiones por descarg...
Presentacion_Palcoma_Alta energia solar eolica
presentacion sobre los polimeros, como se conforman
LIBRO UNIVERSITARIO SISTEMAS PRODUCTIVOS BN.pdf
LIBRO UNIVERSITARIO DESARROLLO ORGANIZACIONAL BN.pdf
S15 Protección de redes electricas 2025-1_removed.pdf
Publicidad

Sistemas_Digitales_Principios_y_Aplicaci.pdf

  • 1. Sistemas Digitales Principios y Aplicaciones 2/.!,$*4/##) .%!,37)$-%2 '2%'/29,-/33 DÉCIMA EDICIÓN
  • 5. Sistemas digitales Principios y aplicaciones Ronald J. Tocci Monroe Community College Neal S. Widmer Purdue University Gregory L. Moss Purdue University DÉCIMA EDICIÓN Reynaldo Félix Acuña Profesor investigador Departamento de Ingeniería Eléctrica y Electrónica InstitutoTecnológico y de Estudios Superiores de Monterrey Campus Estado de México Marcos de Alba Profesor investigador Departamento de Ingeniería Eléctrica y Electrónica InstitutoTecnológico y de Estudios Superiores de Monterrey Campus Estado de México Revisión técnica Traducción Alfonso Vidal Romero Elizondo Ingeniero en Electrónica y Comunicación InstitutoTecnológico y de Estudios Superiores de Monterrey - Campus Monterrey
  • 6. Authorized traslation from the English language edition, entitled Digital systems: principles and applications by Ronald J. Tocci, Neal S. Widmer and Gregory L. Moss, published by Pearson Education, Inc., publishing as Prentice Hall, Inc., Copyright ©2007, All rights reserved. ISBN 0131725793 Traducción autorizada de la edición en idioma inglés titulada Digital systems: principles and applications por Ronald J. Tocci, Neal S. Widmer and Gregory L. Moss, publicada por Pearson Education, Inc., publicada como Prentice Hall Inc., Copyright ©2007. Todos los derechos reservados. Edición en español Editor: Luis Miguel Cruz Castillo e-mail: luis.cruz@pearsoned.com Editor de desarrollo: Bernardino Gutiérrez Hernández Supervisor de producción: Adriana Rida Montes DÉCIMA EDICIÓN, 2007 D.R. © 2007 por Pearson Educación de México, S.A. de C.V. Atlacomulco 500-5o. piso Industrial Atoto 53519, Naucalpan de Juárez, Edo. de México Cámara Nacional de la Industria Editorial Mexicana. Reg. Núm. 1031. Prentice Hall es una marca registrada de Pearson Educación de México, S.A. de C.V. Reservados todos los derechos. Ni la totalidad ni parte de esta publicación pueden reproducirse, registrarse o transmitirse, por un sistema de recuperación de información, en ninguna forma ni por ningún medio, sea electrónico, mecánico, fotoquímico, magnético o electroóptico, por fotocopia, grabación o cualquier otro, sin permiso previo por escrito del editor. El préstamo, alquiler o cualquier otra forma de cesión de uso de este ejemplar requerirá también la autorización del editor o de sus representantes. ISBN 10: 970-26-0970-4 ISBN 13: 978-970-26-0970-4 Impreso en México. Printed in Mexico. 1 2 3 4 5 6 7 8 9 0 - 10 09 08 07 TOCCI, RONALD J., NEAL S. WIDMER, GREGORY L. MOSS Sistemas digitales. Principios y aplicaciones Décima edición Pearson Educación, México, 2007 ISBN: 978-970-26-0970-4 Área: Ingeniería Formato: 21 27 cm Páginas: 968
  • 7. A ti, Cap, por amarme tanto tiempo; y por las mil y una maneras de iluminar las vidas de todos los que tocas. —RJT A mi esposa Kris y a nuestros hijos John, Brad, Blake, Matt y Katie: por prestarme el tiempo y atención que les quité al realizar esta revisión. —NSW A mi familia: Marita, David y Ryan. —GLM
  • 9. PR EFACIO Este libro es un estudio completo sobre los principios y las técnicas de los siste- mas digitales modernos. Enseña los principios fundamentales sobre los sistemas digitales y cubre con amplitud los métodos tradicional y moderno para aplicar las técnicas de diseño y desarrollo digital, incluyendo cómo administrar un proyecto a nivel de sistemas. El libro está planeado para utilizarse en programas de dos y cuatro años relacionados con tecnología, ingeniería y ciencias computacionales. Aunque sería de utilidad tener conocimientos sobre electrónica básica, la mayor parte del material no lo requiere. Se pueden omitir las partes del texto en las que se utilizan conceptos sobre electrónica sin peligro de afectar la comprensión de los principios de lógica. Mejoras generales La décima edición de Sistemas digitales refleja los puntos de vista de los autores en relación con la dirección de la electrónica digital moderna. En la industria actual podemos ver la importancia de liberar un producto en el mercado lo más rápido posible. El uso de herramientas de diseño modernas, dispositivos lógicos programa- bles complejos, CPLD, y arreglos de compuertas programables por campo (FPGA) permite a los ingenieros progresar de los conceptos al silicón funcional con mucha rapidez. Los microcontroladores se están haciendo cargo de muchas aplicaciones que antes se implementaban mediante circuitos digitales, por lo que se ha estado usando la DSP para sustituir muchos circuitos análogos. Es sorprendente que los microcontroladores, la DSP y todos los componentes lógicos necesarios puedan ahora consolidarse en una sola FPGA mediante el uso de un lenguaje de descrip- ción de hardware con herramientas de desarrollo avanzadas. Ahora, los estudiantes deben estar expuestos a estas modernas herramientas, inclusive hasta en un curso introductorio. Es responsabilidad de cada educador encontrar la mejor forma de preparar a los graduandos para el trabajo que encontrarán en su vida profesional. Las piezas SSI y MSI estándar que han servido como “ladrillos y mortero” en la construcción de sistemas digitales durante más de 40 años ahora se están vol- viendo obsoletas. Muchas de las técnicas que se han enseñado se enfocan en la optimización de circuitos que se crean a partir de estos dispositivos fuera de moda. Los temas que se adaptan en forma única a la aplicación de la antigua tecnología pero que no contribuyen a una comprensión de la nueva tecnología deben eliminarse del currículum. No obstante y desde un punto de vista educativo, estos pequeños vii
  • 10. VIII PREFACIO circuitos integrados (CI) ofrecen una forma de estudiar los circuitos digitales sim- ples, además de que el cableado de circuitos mediante el uso de “breadboards” (tarjetas experimentales o tableros experimentales) es un ejercicio pedagógico valioso. Estos ejercicios nos ayudan a reforzar conceptos tales como las entradas y salidas binarias, la operación de un dispositivo físico y las limitaciones prácticas, mediante el uso de una plataforma muy simple. En consecuencia hemos optado por seguir presentando las descripciones conceptuales de los circuitos digitales y ofrecer ejemplos en los que se utilicen piezas lógicas estándar convencionales. Para los instructores que deseen seguir enseñando los fundamentos mediante el uso de circuitos SSI y MSI, este libro retiene esas cualidades que han provocado una amplia aceptación de las ediciones pasadas. Incluso muchas herramientas de diseño de hardware proporcionan una técnica introductoria de diseño fácil de usar, en la que se emplea la funcionalidad de las piezas estándar convencionales con la flexibilidad de los dispositivos lógicos programables. Un diseño digital puede describirse mediante el uso de un dibujo esquemático con bloques de construcción predefinidos, los cuales son equivalentes a las piezas estándar convencionales, que pueden compilarse y después programarse directamente en un PLD de destino con la capacidad adicional de poder simular con facilidad el diseño dentro de la misma herramienta de desarrollo. Creemos que los graduandos podrán aplicar los conceptos que se presentan en este libro mediante el uso de métodos de descripción de nivel superior y disposi- tivos programables más complejos. El cambio más importante en el campo es una mayor necesidad de comprender los métodos de descripción, en vez de enfocarse en la arquitectura de un dispositivo específico. Las herramientas de software han evolucionado a un punto en el que hay muy poca necesidad de preocuparse por el funcionamiento interno del hardware y es mucho más necesario enfocarse en qué es lo que entra, qué es lo que sale y cómo puede el diseñador describir lo que se supone debe hacer el dispositivo. También creemos que los graduandos se involu- crarán con proyectos en los que se utilice lo más nuevo en herramientas de diseño y soluciones de hardware. Este libro ofrece una ventaja estratégica para enseñar el nuevo y vital tema de los lenguajes de descripción de hardware a los principiantes en el campo digital. En estos momentos, VHDL es sin duda un lenguaje estándar en la industria, pero también es muy complejo y con una curva de aprendizaje bastante pronunciada. A menudo los estudiantes principiantes se desalientan debido a los rigurosos reque- rimientos de diversos tipos de datos, y luchan por comprender los eventos de dispa- ro por borde que se utilizan en VHDL. Por fortuna Altera ofrece el AHDL, un lenguaje menos exigente que utiliza los mismos conceptos básicos que el VHDL pero más sencillo de dominar para los principiantes. Así, los instructores pueden optar por utilizar AHDL para enseñar a los estudiantes principiantes, o VHDL para las clases más avanzadas. Esta edición ofrece más de 40 ejemplos con AHDL, otros tantos conVHDL y muchos ejemplos de prueba de simulación.Todos estos archivos de diseño están disponibles en el CD-ROM que acompaña al libro. El sistema de desarrollo de software más reciente de Altera es Quartus II. El software MAX+ PLUS II que se ha utilizado durante muchos años aún sigue siendo popular en la industria y cuenta con soporte por parte de Altera. Su principal des- ventaja es que no programa los dispositivos más recientes. El material de este texto no está enfocado a enseñar una plataforma específica de hardware ni los detalles acerca del uso de un sistema de desarrollo de software. Las nuevas revisiones de software aparecen con tanta frecuencia que un libro de texto no podría mantenerse actualizado si tratara de describir todos los detalles. Hemos tratado de demostrar lo que esta herramienta puede hacer, en vez de enseñar al lector cómo utilizarla. Sin embargo, en el CD-ROM que viene con este libro hemos incluido tutoriales para facilitar el aprendizaje de cualquiera de estos dos paquetes de software. Los ejem- plos de AHDL y VHDL son compatibles con los sistemas Quartus o MAX+ PLUS. Las simulaciones de temporización se desarrollaron mediante el uso de MAX+ PLUS, pero también pueden realizarse con Quartus. Hay muchas opciones de hardware de laboratorio disponibles para los usua- rios de este libro. Existen muchas tarjetas de desarrollo CPLD y FPGA para que
  • 11. PREFACIO IX los estudiantes puedan usarlas en el laboratorio. También se dispone de varias tarjetas de generaciones anteriores que son similares a la UP2 de Altera y que contienen CPLDs de la familia MAX7000. Un ejemplo más reciente de una de las tarjetas disponibles es la tarjeta UP3 del programa universitario de Altera (vea la figura P-1), que contiene una FPGA más grande, proveniente de la familia Cyclone. La tarjeta DE2 es una de las más reciente de Altera (vea la figura P-2), la cual cuenta con una nueva y poderosa FPGA Cyclone II de 672 terminales y una varie- dad de características básicas tales como interruptores, LEDs y pantallas, así como muchas características adicionales para proyectos más avanzados. Cada año entran al mercado más tarjetas de desarrollo, y muchas de ellas tienen un costo realmente bajo. Estas tarjetas, junto con el poderoso software educativo, ofrecen una excelen- te manera de enseñar y demostrar la implementación práctica de los conceptos que presentamos en este texto. Las mejoras más considerables en esta décima edición se encuentran en el capítulo 7. Aunque los contadores asincrónicos (ondulación) ofrecen una buena introducción a los circuitos secuenciales, en el mundo real se utilizan los circuitos contadores sincrónicos. Hemos rediseñado el capítulo 7 y los ejemplos subsiguientes FIGURA P-1 La tarjeta de desarrollo UP3 de Altera. FIGURA P-2 La tarjeta de desarrollo DE2 de Altera.
  • 12. X PREFACIO para enfatizar los CIs de contadores sincrónicos e incluimos técnicas para analizar- los, conectarlos en cascada y utilizar HDL para describirlos.También se ha agregado una sección para mejorar la cobertura de las máquinas de estado y las característi- cas de HDL que se utilizan para describirlas. Otras de las mejoras son: la inclusión de técnicas de análisis para los circuitos combinacionales, la cobertura expandida de aplicaciones del temporizador 555 y una mejor cobertura de los números binarios con signo. Nuestro enfoque sobre el HDL y los PLDs proporciona a los instructores varias opciones: 1. El material relacionado con el HDL puede omitirse por completo sin afectar la continuidad del texto. 2. El HDL puede enseñarse como un tema separado si se omite el material inicial y después se regresa a las últimas secciones de los capítulos 3, 4, 5, 6, 7 y 9, para después cubrir el 10. 3. Los temas relacionados con el HDL y el uso de los PLDs pueden cubrirse a medida que se desarrolle el curso (capítulo por capítulo) y pueden irse entre- mezclando en las prácticas de laboratorio o las lecturas. De entre todos los lenguajes de descripción de hardware específicos, es evi- dente que VHDL es el estándar en la industria, por lo cual es muy probable que los graduandos lo vayan a utilizar en sus profesiones. No obstante, siempre hemos creído que es muy pesado tratar de enseñar VHDL en un curso introductorio. La naturaleza de la sintaxis, las sutiles distinciones en los tipos de objetos y los mayo- res niveles de abstracción pueden convertirse en obstáculos para un principiante. Por esta razón hemos incluido el AHDL de Altera como el lenguaje de introducción recomendado para los cursos de primero y segundo años. También hemos incluido el VHDL como lenguaje recomendado para clases más avanzadas o cursos intro- ductorios que se ofrecen a estudiantes con más madurez. No recomendamos tratar de cubrir ambos lenguajes en el mismo curso. Las secciones del texto que cubren los detalles específicos de un lenguaje se identifican claramente con una barra gris en el margen. Sin duda hemos creado un libro que puede usarse en múltiples cursos y que servirá como una excelente referencia después de que se gradúen los estudiantes. Organización de los capítulos Es raro que un instructor utilice los capítulos de un libro de texto en la secuencia en la que se presentan. Este libro se escribió de manera que, en su mayor parte, cada capítulo se basa en el material anterior, pero es posible alterar la secuencia de capítulos hasta cierto punto. La primera parte del capítulo 6 puede cubrirse justo después del capítulo 2, aunque esto significa que habrá un largo intervalo antes de llegar a los circuitos aritméticos del capítulo 6. La mayor parte del mate- rial del capítulo 8 puede cubrirse antes (por ejemplo, después del capítulo 4 o 5) sin problemas graves. Este libro puede utilizarse ya sea en un curso de un solo ciclo escolar o en una secuencia de dos ciclos. En un curso de un ciclo escolar tal vez haya que omitir algunos temas, debido a los límites en cuanto a las horas de clase disponibles. Es obvio que la elección de los temas a eliminar dependerá de factores tales como los objetivos del programa o del curso y los antecedentes de los estudiantes. A conti- nuación se muestra una lista de las secciones y capítulos que pueden eliminarse con la menor probabilidad de trastornos: ■ Capítulo 1: Todo. ■ Capítulo 2: Sección 6. ■ Capítulo 3: Secciones 15 a 20. ■ Capítulo 4: Secciones 7, 10 a 13.
  • 13. PREFACIO XI ■ Capítulo 5: Secciones 3, 23 a 27. ■ Capítulo 6: Secciones 5 a 7, 11, 13, 16 a 23. ■ Capítulo 7: Secciones 9 a 14, 21 a 24. ■ Capítulo 8: Secciones 10, 14 a 19. ■ Capítulo 9: Secciones 5, 9, 15 a 20. ■ Capítulo 10: Todo. ■ Capítulo 11: Secciones 7, 14 a 17. ■ Capítulo 12: Secciones 17 a 21. ■ Capítulo 13: Todo. CONJUNTOS DE PROBLEMAS En esta edición se incluyen seis categorías de problemas: básicos (B), avanzados (A), diagnóstico de fallas (F), nuevos (N), diseño (D) y HDL (H). Los problemas sin designación se consideran como de dificultad intermedia, entre los básicos y los avanzados. Los problemas para los cuales se imprime la solución al final del libro o en el CD-ROM incluido están marcados con un asterisco (vea la figura P-3). ADMINISTRACIÓN DE PROYECTOS Y DISEÑO A NIVEL DE SISTEMA En el capítulo 10 se incluyen varios ejemplos reales para describir las técnicas que se utilizan para administrar proyectos. Por lo general, estas aplicaciones son familiares para la mayoría de los estudiantes de electrónica, y el primer ejemplo de un reloj digital es familiar para todos. Muchos textos hablan sobre el diseño de arriba-abajo, pero este texto demuestra las características clave de este método y cómo utilizar las modernas herramientas para desarrollarlo. HOJAS TÉCNICAS Hemos eliminado el CD-ROM que contenía hojas técnicas de Texas Instruments de la novena edición. La información que contenía este CD-ROM se encuentra ahora disponible en línea. ARCHIVOS DE SIMULACIÓN En esta edición también se incluyen archivos de simulación que pueden cargarse en el programa Electronics Workbench Multisim® . Los diagramas esquemáticos de los circuitos de muchas de las figuras que se mues- tran en el texto se han capturado como archivos de entrada para esta popular herra- mienta de simulación. Cada archivo demuestra en cierta forma la operación del circuito o refuerza un concepto. En muchos casos se adjuntan instrumentos al cir- cuito y se aplican secuencias de entrada para demostrar el concepto presentado en una de las figuras del texto. Estos circuitos pueden modificarse según se desee para profundizar sobre los temas o crear asignaturas y tutoriales para los estudiantes. FIGURA P-3 Las letras denotan categorías de problemas, y los asteriscos indican que se proporcionan las soluciones correspondientes al final del texto. 02/,%-!3 3%##)¼. $POTVMUF MB GJHVSB %FUFSNJOF MPT OJWFMFT FO MB TBMJEB EF DBEB EFDPEJGJ DBEPS QBSB MPT TJHVJFOUFT DPOKVOUPT EF DPOEJDJPOFT EF FOUSBEB B 5PEBT MBT FOUSBEBT FO #+0 C 5PEBT MBT FOUSBEBT FO CBKP FYDFQUP -50 D 5PEBT MBT FOUSBEBT FO -50 FYDFQUP #+0 E 5PEBT MBT FOUSBEBT FO -50 {$VÈM FT FM OÞNFSP EF FOUSBEBT Z TBMJEBT EF VO EFDPEJGJDBEPS RVF BDFQUB EJTUJOUBT DPNCJOBDJPOFT EF FOUSBEB %NCONTRARÈ LAS RESPUESTAS A LOS PROBLEMAS MARCADOS CON UN ASTERISCO AL lNAL DEL LIBRO # #
  • 14. XII PREFACIO Todas las figuras en el texto que tienen su correspondiente archivo de simulación en el CD-ROM se identifican mediante el icono que se muestra en la figura P-4. TECNOLOGÍA DE CI Esta nueva edición continúa la práctica que empezamos con las últimas tres ediciones que se refiere a dar más prominencia a la tecnología CMOS como principal tecnología de CI en aplicaciones de integración de pequeña y media escala. Hemos logrado esta profundidad en la cobertura, al mismo tiempo que pudimos retener una amplia cobertura de la lógica TTL. Cambios específicos A continuación se muestran los principales cambios en la cobertura de los temas: ■ Capítulo 1 Hemos actualizado y mejorado muchas explicaciones que tratan sobre cuestiones análogas/digitales. ■ Capítulo 2 Eliminamos el sistema numérico octal y agregamos el código de Gray. Incluimos una tabla de códigos ASCII estándar completa, junto con nue- vos ejemplos relacionados con los caracteres ASCII, la representación hexa- decimal y los archivos de transferencia de código objeto de las computadoras. También agregamos nuevo material sobre las tramas de caracteres ASCII para la transferencia asincrónica de datos. ■ Capítulo 3 Además de algunos nuevos ejemplos prácticos de funciones lógicas, la principal mejora en el capítulo 3 es una nueva técnica de análisis que utiliza tablas para evaluar puntos intermedios en el circuito lógico. ■ Capítulo 4 En el capítulo 4 sólo fue necesario realizar unos cuantos cambios. ■ Capítulo 5 Hay una nueva sección que trata acerca de los pulsos digitales y las definiciones asociadas, tales como: anchura de pulso, periodo, tiempo de eleva- ción y tiempo de caída. Se modificó la terminología utilizada para las entradas de los circuitos de latch, de Clear (Borrar) a Reset (Restablecer) para que fuera compatible con las descripciones de los componentes de Altera. También se eliminó la definición de un flip-flop maestro/esclavo. Se mejoró la explicación sobre las aplicaciones de circuitos disparadores de Schmitt (Schmitt trigger) para enfatizar su papel en cuanto a la eliminación de los efectos del ruido. Ahora se explica el funcionamiento interno del temporizador 555 y se proponen ciertos circuitos de temporización mejorados que hacen que el dispositivo sea más versátil. Se rediseñó la cobertura sobre el HDL para los latches SR y D, para utilizar una descripción más descriptiva de su comportamiento, y se modi- ficó la cobertura de los contadores para enfocarse en las técnicas estructurales para interconectar bloques de flip-flops. ■ Capítulo 6 En esta edición se cubren con más detalle los números con signo, en especial todo lo relacionado con la extensión de signo en los números con complemento a 2 y el desbordamiento aritmético. Una nueva sugerencia de calculadora simplifica la negación de números binarios representados en hexa- decimal. Se utiliza un modelo de círculo de números para comparar los formatos FIGURA P-4 El icono denota que la figura tiene su correspondiente archivo de simulación en el CD-ROM. '*(63 %JBHSBNB HFOFSBM EF VO EFDPEJGJDBEPS
  • 15. PREFACIO XIII de números con y sin signo, lo cual ayuda a los estudiantes para que visualicen la operación de suma/resta mediante el uso de ambos formatos. ■ Capítulo 7 Este capítulo se revisó con mucho detalle para enfatizar los circui- tos de contadores sincrónicos. Se siguen introduciendo los contadores de ondu- lación simple para proporcionar una comprensión básica del concepto de conteo y la conexión en cascada asincrónica. Después de examinar las limitacio- nes de los contadores de ondulación en la sección 2, se presentan los contadores sincrónicos en la sección 3 y se utilizan en todos los ejemplos subsiguientes a lo largo del texto. Los contadores de CI que se presentan son: 74160, ’161, ’162 y ’163. Estos dispositivos comunes ofrecen una excelente diversidad de caracte- rísticas que enseñan la diferencia entre las entradas de control sincrónicas y asincrónicas, y las técnicas de conexión en cascada. Los circuitos 74190 y ’191 se utilizan como ejemplo de un CI de contador sincrónico arriba/abajo, con lo cual se refuerzan aún más las técnicas requeridas para la conexión sincrónica en cascada. Hay una nueva sección dedicada a las técnicas de análisis para cir- cuitos sincrónicos mediante el uso de flip-flops JK y D. Las técnicas de diseño sincrónico ahora incluyen también el uso de registros de flip-flop D que repre- sentan la mejor manera en que se implementan los circuitos secuenciales en la tecnología PLD moderna. Se mejoraron las secciones sobre HDL para demos- trar la implementación de las operaciones sincrónicas/asincrónicas de cargar, borrar y conectar en cascada. Otra de las novedades es un énfasis en la simulación y la prueba de los módulos de HDL. Ahora las máquinas de estado se presentan como un tema, se definen los modelos tradicionales de Mealy y Moore y se pre- senta un nuevo sistema de control de semáforos como ejemplo. También se hicieron pequeñas mejoras en la segunda mitad del capítulo 7 y se rediseñaron todos los problemas al final del capítulo 7 para reforzar los conceptos. ■ Capítulo 8 Este capítulo sigue siendo una descripción muy técnica de la tecno- logía disponible en las familias lógicas estándar y los componentes digitales. Se mejoraron las secciones de interfaz de voltaje mixto para cubrir la tecnología de bajo voltaje. La curva de ciclo de vida más reciente de Texas Instruments muestra el historial y la posición actual de diversas series lógicas, desde su introducción hasta su obsolescencia. También se presenta la señalización dife- rencial de bajo voltaje (LVDS). ■ Capítulo 9 Este capítulo trata todavía acerca de los fundamentos de los siste- mas digitales y su demostración mediante el uso de HDL. También se introdu- cen muchas otras técnicas de HDL, como las salidas de tres estados y diversas estructuras de control de HDL. Se describe un circuito 74ALS148 como otro ejemplo de codificador. Se actualizaron todos los ejemplos de sistemas que uti- lizan contadores para la operación sincrónica. En especial, se mejoró el sistema de transmisión en serie mediante el uso de MUX y DEMUX. Se explica la téc- nica de cómo utilizar un MUX para implementar expresiones SOP en una forma más estructurada, como un ejercicio de estudio independiente en los problemas al final del capítulo. ■ Capítulo 10 Este capítulo, que se introdujo como novedad en la novena edi- ción, no sufrió cambios considerables. ■ Capítulo 11 Se mejoró el material sobre DACs bipolares, y se presentó un ejemplo sobre el uso de DACs como control de amplitud digital para formas de onda analógicas. En esta edición se explica la especificación de precisión de convertidores A/D más común en forma de / LSB. ■ Capítulo 12 Se realizaron pequeñas mejoras en este capítulo para consolidar y comprimir algo del material sobre tecnologías antiguas de memoria, tales como la UV EPROM. Aún se presenta la tecnología flash mediante el uso de un ejemplo de primera generación, pero también se describen las mejoras más recientes, así como algunas de las aplicaciones de la tecnología flash en los dispositivos modernos disponibles para el consumidor. ■ Capítulo 13 Este capítulo, nuevo en la novena edición, se actualizó para intro- ducir la nueva familia Cyclone de PLDs.
  • 16. XIV PREFACIO Características que se retuvieron Esta edición retiene todas las características que contribuyeron a la amplia acep- tación de las ediciones anteriores. Utiliza un enfoque de diagrama de bloques para enseñar las operaciones lógicas básicas sin confundir al lector con los detalles de su operación interna. Se conservan todas las características eléctricas de los CIs lógicos, excepto las más básicas, hasta que el lector cuente con una sólida com- prensión de los principios lógicos. En el capítulo 8 se introducen los CI internos. En ese punto, el lector podrá interpretar las características de entrada y salida de un bloque lógico y “ajustarlo” en forma apropiada a un sistema completo. Por lo general, el tratamiento de cada nuevo tema o dispositivo sigue estos pasos: se presenta el principio de operación; se presentan ejemplos y aplicaciones con una explicación detallada, a menudo mediante el uso de CIs reales; se plan- tean preguntas cortas de repaso al final de la sección; y por último se presentan problemas a profundidad al final del capítulo. Estos problemas, que van desde lo más simple hasta lo más complejo, ofrecen a los instructores una amplia elección para los estudiantes. El principal objetivo de estos problemas es reforzar el mate- rial pero no sólo con repetir los principios, ya que requieren que los estudiantes demuestren la comprensión de estos principios al aplicarlos a distintas situaciones. Este enfoque también ayuda a los estudiantes a desarrollar confianza y a expandir su conocimiento sobre el material. El material relacionado con los PLDs y HDLs se distribuye a lo largo del texto, con ejemplos en los que se enfatizan las características clave en cada aplicación. Estos temas aparecen al final de cada capítulo, lo que facilita relacionar cada tema con el texto general al principio del capítulo, o se puede analizar por separado el material que trata sobre los conceptos de PLD/HDL. La extensa cobertura relacionada con la detección y solución de problemas se extiende desde el capítulo 4 hasta el 12, incluyendo la presentación de los prin- cipios y las técnicas de detección y solución de problemas, ejemplos prácticos, 25 ejemplos de detección y solución de problemas, y además, 60 problemas reales relacionados con este mismo tema. Si se complementa con los ejercicios prácticos de laboratorio, este material puede ayudar a impulsar el desarrollo de buenas habi- lidades para la detección y solución de problemas. La décima edición ofrece más de 200 ejemplos resueltos, más de 400 preguntas de repaso y más de 450 problemas/ejercicios de capítulo. Algunos de estos proble- mas son aplicaciones que muestran cómo se utilizan en un típico sistema de micro- computadora los dispositivos lógicos presentados en el capítulo. Después del Glosario están las respuestas a la mayoría de los problemas. El Glosario provee definiciones concisas de todos los términos que están resaltados en el texto, en negritas. Al final del libro hay un índice de CIs para ayudar a que los lectores localicen con facilidad el material sobre cualquier CI citado o utilizado en el texto. Las últi- mas hojas del libro contienen tablas de los teoremas de álgebra Booleana más usa- dos, síntesis de compuertas lógicas y tablas de verdad de flip-flops para una rápida referencia al resolver problemas o trabajar en el laboratorio. Suplementos (en inglés) Para acompañar a este libro de texto se ha desarrollado un detallado complemento con herramientas de enseñanza y aprendizaje. Cada componente provee una función única, y cada uno de ellos puede usarse ya sea en forma independiente o en conjun- to con los demás. CD-ROM Cada libro incluye un CD-ROM, con lo siguiente: ■ MAX+PLUS® II, software versión Educativa de Altera. Éste es un entorno integrado de desarrollo completamente funcional, de calidad profesional para sistemas digitales, el cual se ha utilizado durante muchos años y sigue teniendo soporte por parte de Altera. Los estudiantes pueden utilizarlo para escribir,
  • 17. PREFACIO XV compilar y simular sus diseños en casa, antes de ir al laboratorio. Pueden usar el mismo software para programar y probar un CPLD de Altera. ■ Quartus II, software Versión Web de Altera. Éste es el software de sistema de desarrollo más reciente de Altera, el cual ofrece características más avanzadas y soporta los nuevos dispositivos PLD, tales como la familia Cyclone de FPGAs, que se encuentran en muchas de las tarjetas educacionales más recientes. ■ Tutoriales. Gregory Moss ha desarrollado tutoriales que se han utilizado con éxito durante varios años para enseñar a los estudiantes principiantes a utilizar el software MAX+PLUS II de Altera. Estos tutoriales están disponibles en los formatos PDF y PPT (presentación de Microsoft® PowerPoint® ), y también se han adaptado para enseñar Quartus II. Con la ayuda de estos tutoriales, cual- quiera puede aprender a modificar y probar todos los ejemplos que se presen- tan en este texto, así como a desarrollar sus propios diseños. ■ Archivos de diseño de las figuras del libro de texto. Hay más de 40 archivos de diseño en cada lenguaje que se presenta en figuras a lo largo del texto. Los estudiantes pueden cargar estos archivos en el software de Altera y probarlos. ■ Soluciones a problemas selectos: archivos de diseño de HDL. Algunas de las soluciones a los problemas al final del capítulo se encuentran disponibles (en inglés) para los estudiantes. (Todas las soluciones de HDL están disponibles para los instructores en el Manual para el instructor.) Las soluciones para los problemas del capítulo 7 incluyen algunos archivos de gráficos extensos y de HDL que no se publican en el libro, pero están disponibles en el CD-ROM. ■ Circuitos del texto modelizados en Multisim® . Es posible abrir y trabajar en forma interactiva con cerca de 100 circuitos para incrementar su comprensión de los conceptos y prepararse para las actividades de laboratorio. Se propor- cionan archivos de circuitos Multisim para cualquiera que tenga este software. Quienes no tengan el software Multisim y deseen comprarlo para usar los archi- vos de circuitos pueden ordenarlo en el sitio Web www.prenhall.com/ewb. ■ Material suplementario de introducción a los microprocesadores y los microcontroladores. Para tener flexibilidad al dar servicio a las diversas necesidades de las distintas escuelas, se presenta una introducción a este tema como una conveniente interfaz entre un curso de sistemas digitales y un curso de introducción a los microprocesadores/microcontroladores. RECURSOS PARA LOS ESTUDIANTES (en inglés) ■ Sitio Web complementario (www.pearsoneducacion.net/tocci). Este sitio ofre- ce a los estudiantes una guía de estudio en línea gratuita, con la cual pueden revisar el material tratado en el texto y comprobar su comprensión de los temas clave. RECURSOS PARA EL INSTRUCTOR (en inglés) ■ Manual para el instructor. Este manual contiene las soluciones para todos los problemas de final de capítulo que vienen en este libro de texto. ■ Manual de soluciones de laboratorio. Se incluyen los resultados de ambos manuales de laboratorio. ■ Presentaciones en PowerPoint® . Las figuras del texto, además de Notas para el orador para cada capítulo. ■ TestGen. Hay un banco de pruebas computarizado.
  • 18. XVI PREFACIO Para acceder a los materiales suplementarios en línea, los instructores deberán solicitar un código de acceso, luego ir a www.pearsoneducacion.net/tocci, haga clic en el vínculo Instructor Resource Center y después haga clic en Register para obte- ner un código de acceso de instructor. Después de registrarse, en un plazo no mayor a 48 horas recibirá un correo electrónico de confirmación en el que se incluirá el código de acceso. Cuando haya recibido su código, vaya al sitio e inicie sesión para obtener las instrucciones completas sobre cómo descargar los materiales que desee utilizar. AGRADECIMIENTOS Agradecemos a todas aquellas personas que evaluaron la novena edición y propor- cionaron respuestas para un extenso cuestionario: Ali Khabari, Wentworth Institute of Technology; Al Knebel, Monroe Community College; Rex Fisher, Brigham Young University; Alan Niemi, LeTourneau University; y Roger Sash, University of Nebraska. Se tomaron muy en cuenta sus comentarios, críticas y sugerencias, cuyo incalculable valor nos fue de utilidad para determinar el formato final de la décima edición. También estamos muy agradecidos con el profesor Frank Ambrosio, Monroe Community College, por su usual labor de alta calidad en los índices y en el Manual de recursos para el instructor; con Thomas L. Robertson, Purdue University, por pro- veer su sistema de levitación magnética como ejemplo; y con los profesores Russ Aubrey y Gene Harding, Purdue University, por la revisión técnica de los temas y muchas sugerencias para realizar mejoras. Apreciamos la cooperación de Mike Phipps y de Altera Corporation por su apoyo al otorgar el permiso para usar su paquete de software y las figuras de sus publicaciones técnicas. Un proyecto de esta magnitud requiere de un soporte editorial exhaustivo y profesional, y una vez más Prentice Hall logró su cometido con excelencia. Agradecemos al personal en Prentice Hall y TechBooks/GTS por su ayuda para hacer que esta publicación sea un éxito. Por último, queremos hacer saber a nuestras esposas e hijos cuánto apreciamos su apoyo y su comprensión. Esperamos poder reponer gradualmente todas las horas que pasamos alejados de ellos mientras trabajábamos en esta revisión. Ronald J. Tocci Neal S. Widmer Gregory L. Moss
  • 19. R ES UMEN DE CO NTENIDO CAPÍTULO 1 Conceptos introductorios 2 CAPÍTULO 2 Sistemas y códigos numéricos 24 CAPÍTULO 3 Descripción de los circuitos lógicos 54 CAPÍTULO 4 Circuitos lógicos combinacionales 118 CAPÍTULO 5 Flip-flops y dispositivos relacionados 208 CAPÍTULO 6 Aritmética digital: operaciones y circuitos 296 CAPÍTULO 7 Contadores y registros 360 CAPÍTULO 8 Familias lógicas de circuitos integrados 488 CAPÍTULO 9 Circuitos lógicos MSI 576 CAPÍTULO 10 Proyectos de sistemas digitales mediante el uso de HDL 676 CAPÍTULO 11 Interface con el mundo analógico 718 CAPÍTULO 12 Dispositivos de memoria 784 CAPÍTULO 13 Arquitecturas de los dispositivos lógicos programables 868 Glosario 898 Respuestas a los problemas seleccionados 911 Índice de CIs 919 Índice 922 xvii
  • 21. CO N TENIDO CAPÍTULO 1 Conceptos introductorios 2 1-1 Representaciones numéricas 4 1-2 Sistemas digitales y analógicos 5 1-3 Sistemas numéricos digitales 10 1-4 Representación de cantidades binarias 13 1.5 Circuitos digitales/circuitos lógicos 15 1-6 Transmisión en paralelo y en serie 17 1-7 Memoria 18 1-8 Computadoras digitales 19 CAPÍTULO 2 Sistemas y códigos numéricos 24 2-1 Conversiones de binario a decimal 26 2-2 Conversiones de decimal a binario 26 2-3 Sistema numérico hexadecimal 29 2-4 Código BCD 33 2-5 Código gray 35 2-6 Integración de los sistemas numéricos 37 2-7 Byte, nibble y palabra 37 2-8 Códigos alfanuméricos 39 2-9 Método de paridad para la detección de errores 41 2-10 Aplicaciones 44 xix
  • 22. CAPÍTULO 3 Descripción de los circuitos lógicos 54 3-1 Constantes y variables booleanas 57 3-2 Tablas de verdad 57 3-3 Operación OR con compuertas OR 58 3-4 Operación AND con compuertas AND 62 3-5 Operación NOT 65 3-6 Descripción de circuitos lógicos en forma algebraica 66 3-7 Evaluación de las salidas de circuitos lógicos 68 3-8 Implementación de circuitos a partir de expresiones booleanas 71 3-9 Compuertas NOR y NAND 73 3-10 Teoremas booleanos 76 3-11 Teoremas de DeMorgan 80 3-12 Universalidad de las compuertas NAND y NOR 83 3-13 Representaciones alternas de compuertas lógicas 86 3-14 Cuál representación de compuerta se debe usar 89 3-15 Símbolos lógicos del estándar IEEE/ANSI 95 3-16 Resumen de los métodos para describir circuitos lógicos 96 3-17 Comparación entre lenguajes de descripción y lenguajes de programación 98 3-18 Implementación de circuitos lógicos con PLDS 100 3-19 Formato y sintaxis del HDL 102 3-20 Señales intermedias 105 CAPÍTULO 4 Circuitos lógicos combinacionales 118 4-1 Forma de suma de productos 120 4-2 Simplificación de circuitos lógicos 121 4-3 Simplificación algebraica 121 4-4 Diseño de circuitos lógicos combinacionales 127 4-5 Método de mapas de Karnaugh 133 4-6 Circuitos OR exclusivo y NOR exclusivo 144 4-7 Generador y comprobador de paridad 149 4-8 Circuitos de habilitación/deshabilitación 151 4-9 Características básicas de los CIS digitales 153 4-10 Diagnóstico de fallas de sistemas digitales 160 4-11 Fallas internas en los circuitos integrados digitales 162 4-12 Fallas externas 166 4-13 Ejemplo práctico de diagnóstico de fallas 168 4-14 Dispositivos lógicos programables 170 4-15 Representación de datos en HDL 177 4-16 Tablas de verdad mediante el uso de HDL 181 4-17 Estructuras de control de decisiones en HDL 184 XX CONTENIDO
  • 23. CAPÍTULO 5 Flip-flops y dispositivos relacionados 208 5-1 Latch de compuerta NAND 211 5-2 Latch de compuerta NOR 216 5-3 Ejemplo práctico de diagnóstico de fallas 219 5-4 Pulsos digitales 220 5-5 Señales de reloj y flip-flops sincronizados por reloj 221 5-6 Flip-flop sincronizado por reloj en S-R 224 5-7 Flip-flop sincronizado por reloj en J-K 227 5-8 Flip-flop sincronizado por reloj en D 230 5-9 Latch D (latch transparente) 232 5-10 Entradas asíncronas 233 5-11 Símbolos IEEE/ANSI 236 5-12 Consideraciones de sincronización de los flip-flops 238 5-13 Problema potencial de sincronización en circuitos con FF 241 5-14 Aplicaciones de los flip-flops 243 5-15 Sincronización de los flip-flops 243 5-16 Detección de una secuencia de entrada 244 5-17 Almacenamiento y transferencia de datos 245 5-18 Transferencia de datos en serie: registros de desplazamiento 247 5-19 División y conteo de frecuencia 250 5-20 Aplicación de microcomputadora 254 5-21 Dispositivos disparadores de Schmitt 256 5-22 One-shot (multivibrador monoestable) 256 5-23 Circuitos generadores de reloj 260 5-24 Diagnóstico de fallas en circuitos con flip-flops 264 5-25 Circuitos secuenciales mediante el uso de HDL 268 5-26 Dispositivos disparados por flanco 272 5-27 Circuitos de HDL con varios componentes 277 CAPÍTULO 6 Aritmética digital: operaciones y circuitos 296 6-1 Suma binaria 298 6-2 Representación de números con signo 299 6-3 Suma en el sistema de complemento a 2 306 6-4 Resta en el sistema de complemento a 2 307 6-5 Multiplicación de números binarios 310 6-6 División binaria 311 6-7 Suma BCD 312 6-8 Aritmética hexadecimal 314 6-9 Circuitos aritméticos 317 6-10 Sumador binario en paralelo 318 6-11 Diseño de un sumador completo 320 CONTENIDO XXI
  • 24. 6-12 Sumador completo en paralelo con registros 323 6-13 Propagación del acarreo 325 6-14 Sumador en paralelo de circuito integrado 326 6-15 Sistema de complemento a 2 328 6-16 Circuitos integrados tipo ALU 331 6-17 Ejemplo práctico de diagnóstico de fallas 335 6-18 Uso de las funciones de la biblioteca TTL con Altera 337 6-19 Operaciones lógicas con arreglos de bits 338 6-20 Sumadores en HDL 340 6-21 Expansión de la capacidad de bits de un circuito 343 CAPÍTULO 7 Contadores y registros 360 7-1 Contadores asíncronos (de rizo) 362 7-2 Retraso de propagación en contadores de rizo 365 7-3 Contadores síncronos (en paralelo) 367 7-4 Contadores con números mod 2N 370 7-5 Contadores síncronos descendentes y ascendentes/descendentes 377 7-6 Contadores preajustables 379 7-7 Contadores síncronos de CI 380 7-8 Decodificación de un contador 389 7-9 Análisis de los contadores síncronos 393 7-10 Diseño de un contador síncrono 396 7-11 Contadores básicos mediante el uso de HDL 405 7-12 Contadores con todas las características en HDL 412 7-13 Cómo alambrar módulos de HDL en conjunto 417 7-14 Máquina de estados 425 7-15 Registros de circuito integrado 437 7-16 Entrada en paralelo/salida en paralelo: 74ALS174/74HC174 437 7-17 Entrada en serie/salida en serie: 74ALS166/74HC166 439 7-18 Entrada en paralelo/salida en serie: 74ALS165/74HC165 441 7-19 Entrada en serie/salida en paralelo: 74ALS164/74HC164 443 7-20 Contadores de registro de desplazamiento 445 7-21 Diagnóstico de fallas 450 7-22 Registros en HDL 452 7-23 Contadores de anillo en HDL 459 7-24 Monoestables en HDL 461 CAPÍTULO 8 Familias lógicas de circuitos integrados 488 8-1 Terminología de CIS digitales 490 8-2 La familia lógica TTL 498 8-3 Hojas técnicas TTL 502 8-4 Características de las series TTL 506 XXII CONTENIDO
  • 25. 8-5 Capacidad de carga de la familia TTL 509 8-6 Otras características de la familia TTL 514 8-7 Tecnología MOS 518 8-8 Lógica de MOS complementario 521 8-9 Características de las series CMOS 523 8-10 Tecnología de bajo voltaje 530 8-11 Salidas de colector abierto/drenador abierto 533 8-12 Salidas lógicas triestado (tres estados) 538 8-13 Lógica de interfase de bus de alta velocidad 541 8-14 La familia ECL de CIS digitales 543 8-15 Compuerta de transmisión CMOS (interruptor bilateral) 546 8-16 Interfase de CIS 548 8-17 Interfase de voltaje mixto 553 8-18 Comparadores de voltaje analógico 554 8-19 Diagnóstico de fallas 556 CAPÍTULO 9 Circuitos lógicos MSI 576 9-1 Decodificadores 577 9-2 Decodificadores/controladores de BCD a 7 segmentos 584 9-3 Pantallas de cristal líquido 587 9-4 Codificadores 591 9-5 Diagnóstico de fallas 597 9-6 Multiplexores (selectores de datos) 599 9-7 Aplicaciones de los multiplexores 604 9-8 Demultiplexores (distribuidores de datos) 610 9-9 Más diagnóstico de fallas 617 9-10 Comparador de magnitud 621 9-11 Convertidores de código 624 9-12 Buses de datos 628 9-13 El registro triestado 74ALS173/HC173 629 9-14 Operación del bus de datos 632 9-15 Decodificadores mediante el uso de HDL 638 9-16 El decodificador/controlador de 7 segmentos en HDL 642 9-17 Codificadores mediante el uso de HDL 645 9-18 Multiplexores y demultiplexores en HDL 648 9-19 Comparadores de magnitud en HDL 652 9-20 Convertidores de código en HDL 653 CAPÍTULO 10 Proyectos de sistemas digitales mediante el uso de HDL 676 10-1 Administración de pequeños proyectos 678 10-2 Proyecto de controlador de motor de pasos 679 10-3 Proyecto de codificador de teclado numérico 687 CONTENIDO XXIII
  • 26. 10-4 Proyecto de reloj digital 693 10-5 Proyecto de contador de frecuencia 710 CAPÍTULO 11 Interface con el mundo analógico 718 11-1 Repaso de la comparación entre digital y analógico 719 11-2 Conversión digital-analógica (DAC) 721 11-3 Circuitos convertidores D/A 728 11-4 Especificaciones de un DAC 733 11-5 Un DAC de circuito integrado 735 11-6 Aplicaciones de los DACS 736 11-7 Diagnóstico de fallas en los DACS 738 11-8 Conversión analógica-digital (ADC) 739 11-9 ADC de rampa digital 740 11-10 Adquisición de datos 745 11-11 ADC de aproximaciones sucesivas 749 11-12 ADCS tipo flash 755 11-13 Otros métodos de conversión A/D 757 11-14 Circuitos de muestreo y retención 761 11-15 Multiplexaje 762 11-16 Osciloscopio de almacenamiento digital 764 11-17 Procesamiento digital de señales (DSP) 765 CAPÍTULO 12 Dispositivos de memoria 784 12-1 Terminología de memoria 786 12.2 Operación general de la memoria 790 12-3 Conexiones entre CPU y memoria 793 12-4 Memorias de sólo lectura 795 12-5 Arquitectura de la ROM 796 12-6 Sincronización de la ROM 799 12-7 Tipos de ROMS 800 12-8 Memoria flash 808 12-9 Aplicaciones de la ROM 811 12-10 RAM semiconductora 814 12-11 Arquitectura de la RAM 815 12-12 RAM estática (SRAM) 818 12-13 RAM dinámica (DRAM) 823 12-14 Estructura y operación de la RAM dinámica 824 12-15 Ciclos de lectura/escritura de la DRAM 829 12-16 Refresco de la DRAM 831 12-17 Tecnología de la DRAM 834 12-18 Expansión de tamaño de palabra y capacidad 836 12-19 Funciones especiales de la memoria 844 XXIV CONTENIDO
  • 27. 12-20 Diagnóstico de fallas en sistemas de RAM 847 12-21 Prueba de la ROM 852 CAPÍTULO 13 Arquitecturas de los dispositivos lógicos programables 868 13-1 Árbol familiar de los sistemas digitales 870 13-2 Fundamentos de los circuitos de un PLD 875 13-3 Arquitecturas de PLDS 877 13-4 El GAL 16V8 (matriz lógica genérica) 881 13-5 El CPLD EPM7128S de Altera 885 13-6 La familia FLEX10K de Altera 890 13-7 La familia Cyclone de Altera 894 Glosario 898 Respuestas a los problemas seleccionados 911 Índice de CIs 919 Índice 922 CONTENIDO XXV
  • 30. 1-1 Representaciones numéricas 1-2 Sistemas digitales y analógicos 1-3 Sistemas numéricos digitales 1-4 Representación de cantidades binarias ■ CONTENIDO CON CEPTOS INTRODUCTORIOS C A P Í T U L O 1 1-5 Circuitos digitales/circuitos lógicos 1-6 Transmisión en paralelo y en serie 1-7 Memoria 1-8 Computadoras digitales
  • 31. 3 ■ OBJETIVOS Al terminar este capítulo, usted podrá: ■ Diferenciar entre la representación analógica y la digital. ■ Citar las ventajas y desventajas de las técnicas digitales en comparación con las analógicas. ■ Comprender la necesidad de los convertidores analógicos-digitales (ADC) y los convertidores digitales-analógicos (DAC). ■ Reconocer las características básicas del sistema número binario. ■ Convertir un número binario en su equivalente decimal. ■ Contar en el sistema numérico binario. ■ Identificar las señales digitales comunes. ■ Identificar un diagrama de tiempos. ■ Establecer las diferencias entre la transmisión en paralelo y la transmisión en serie. ■ Describir las propiedades de las memorias. ■ Describir las partes principales de una computadora digital y comprender sus funciones. ■ Diferenciar entre microcomputadoras, microprocesadores y microcontroladores. ■ INTRODUCCIÓN En el mundo actual, el término digital se ha convertido en parte de nuestro vocabulario común, debido a la dramática forma en que los circuitos y las técnicas digitales se han vuelto tan utilizados en casi todas las áreas de la vida: computadoras, automatización, robots, ciencia médica y tecnología, transporte, telecomunicaciones, entretenimiento, exploración en el espacio, etcétera. Usted está a punto de empezar un emocionante viaje educativo, en el cual descubrirá los principios fundamentales, conceptos y operaciones que son comunes para todos los sistemas digitales, desde el interruptor de encendido/apagado más simple hasta la computadora más compleja. Si el libro logra su cometido, usted deberá tener una comprensión detallada de la manera en que funcionan todos los sistemas digitales, y deberá ser capaz de aplicar este conocimiento en el análisis y la detección de fallas en cualquier sistema digital. Primero presentaremos algunos conceptos subyacentes que forman una parte vital de la tecnología digital (estos conceptos se ampliarán a medida que se requieran más adelante en el libro). Además, presentaremos parte de la terminología que se necesita cuando uno inicia un nuevo campo de estudio, para agregarla a la lista de términos importantes de cada capítulo.
  • 32. 4 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS 1-1 REPRESENTACIONES NUMÉRICAS En los campos de la ciencia, la tecnología, los negocios y en la mayoría de los cam- pos de trabajo, constantemente tratamos con cantidades. Estas cantidades se miden, se monitorean, se manipulan en forma aritmética, se observan, o de alguna otra forma se utilizan en los sistemas físicos. Es importante que al tratar con varias can- tidades se puedan representar sus valores con eficiencia y precisión. Básicamente existen dos maneras de representar el valor numérico de las cantidades: analógica y digital. Representaciones analógicas En la representación analógica una cantidad se representa mediante un indica- dor proporcional que varía en forma continua. Un ejemplo es el velocímetro de los automóviles clásicos de las décadas de 1960 o 1970. La deflexión de la aguja es proporcional a la velocidad del automóvil y sigue cualquier cambio que se produz- ca a medida que el vehículo aumente o reduzca su velocidad. En los automóviles antiguos se utilizaba un eje mecánico flexible para conectar la transmisión con el velocímetro en el tablero. Es interesante observar que en automóviles recientes, por lo general, se prefiere la representación analógica, aun y cuando la velocidad ahora se mide en forma digital. Los termómetros anteriores a la revolución digital utilizaban la representación analógica para medir la temperatura, y muchos de ellos todavía se usan actualmen- te. Esos termómetros utilizan una columna de mercurio, cuya altura es proporcional a la temperatura. Estos dispositivos están desapareciendo del mercado debido a problemas con el medio ambiente, pero sin duda son un excelente ejemplo de la representación analógica. Otro ejemplo es el termómetro de exteriores, en el cual la posición del apuntador gira alrededor de un disco a medida que un serpentín de metal se expande y se contrae con base en los cambios de temperatura. La posición del apuntador es proporcional a la temperatura. Sin importar qué tan pequeño sea el cambio en la temperatura, habrá un cambio proporcional en el indicador. En estos dos ejemplos las cantidades físicas (velocidad y temperatura) se aco- plan a un indicador a través de un medio mecánico solamente. En los sistemas analó- gicos eléctricos, la cantidad física que se mide o se procesa se convierte en un voltaje o corriente proporcional (señal eléctrica). Entonces el sistema utiliza este voltaje o corriente para fines de visualización, procesamiento o control. El sonido es un ejemplo de una cantidad física que puede representarse median- te una señal analógica eléctrica. Un micrófono es un dispositivo que genera un vol- taje de salida proporcional a la amplitud de las ondas sonoras que lo golpean. Las ondas sonoras producen variaciones en el voltaje de salida del micrófono. De esta manera, las grabaciones en cinta pueden almacenar ondas sonoras mediante el uso del voltaje de salida del micrófono para cambiar en forma proporcional el campo magnético en la cinta. Las cantidades analógicas como las antes mencionadas tienen una importan- te característica: sin importar cómo se representen: pueden variar a través de un intervalo continuo de valores. La velocidad de un automóvil puede tener cualquier valor entre 0 y 100 km/hora, por ejemplo. De manera similar, la salida del micrófono podría tener cualquier valor dentro del intervalo de 0 a 10 mV (por ejemplo: 1 mV, 2.3724 mV, 9.9999 mV). Representaciones digitales En la representación digital las cantidades se representan no mediante indicadores que varían en forma continua, sino mediante símbolos llamados dígitos. Considere como ejemplo el reloj digital, que indica la hora del día en forma de dígitos decima- les que representan horas y minutos (y algunas veces segundos). Como es sabido, la hora del día cambia en forma continua pero la lectura del reloj digital no cambia así, sino que cambia en intervalos de uno por minuto (o por segundo). En otras pala- bras, esta representación digital de la hora del día cambia en incrementos discretos,
  • 33. PREGUNTAS DE REPASO * en comparación con la representación de la hora que proporciona un reloj de pared operado mediante corriente alterna analógica, en donde la lectura de la carátula cambia en forma continua. Así, la principal diferencia entre las cantidades analógicas y digitales puede plantearse de la siguiente manera: analógica ⬅ continua digital ⬅ discreta (paso por paso) Debido a la naturaleza discreta de las representaciones digitales, no existe ambi- güedad cuando se lee el valor de una cantidad digital, mientras que el valor de una cantidad analógica, por lo general, se deja abierto a la interpretación. En la prácti- ca, cuando se mide una cantidad analógica, siempre se “redondea” a un nivel de pre- cisión conveniente. En otras palabras, se digitaliza la cantidad. La representación digital es el resultado de asignar un número de precisión limitada a una cantidad que varía en forma continua. Por ejemplo, cuando usted toma su temperatura con un termómetro analógico, es común que la columna de mercurio se encuentre entre dos líneas de graduación, pero usted elije la línea más cercana y le asigna un número, por decir, 36.7 °C (98.6 °F). ¿Cuáles de las siguientes cantidades son analógicas y cuáles son digitales? (a) Un interruptor de diez posiciones. (b) La corriente que fluye a través de un contacto eléctrico. (c) La temperatura de una habitación. (d) Granos de arena en la playa. (e) El medidor de combustible de un automóvil. Solución (a) Digital. (b) Analógica. (c) Analógica. (d) Digital, ya que el número de granos sólo puede tener ciertos valores discretos (enteros) y no cualquier valor posible en un rango continuo. (e) Analógico, en caso de ser del tipo con aguja; digital, si tiene indicador numérico o de barra de gráficos. 1. Describa en forma concisa la principal diferencia entre las cantidades analógi- cas y digitales. 1-2 SISTEMAS DIGITALESY ANALÓGICOS Un sistema digital es la combinación de dispositivos diseñados para manipular infor- mación lógica o cantidades físicas que se representan en forma digital; es decir, las cantidades sólo pueden tener valores discretos. Estos dispositivos, por lo general, son EJEMPLO 1-1 * Las respuestas a las preguntas de repaso se encuentran al nal del capítulo correspondiente. SECCIÓN 1-2/SISTEMAS DIGITALES Y ANALÓGICOS 5
  • 34. 6 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS electrónicos, pero también pueden ser mecánicos, magnéticos o neumáticos.Algunos de los sistemas digitales más comunes son las computadoras y las calculadoras digi- tales, los equipos de audio y video digital, y el sistema telefónico (el sistema digital más grande del mundo). Un sistema analógico contiene dispositivos que manipulan cantidades físicas que se representan en forma analógica. En un sistema analógico, las cantidades pueden variar sobre un intervalo continuo de valores. Por ejemplo, la amplitud de la señal de salida a la bocina en un receptor de radio puede tener cualquier valor entre cero y su límite máximo. Otros sistemas analógicos comunes son los amplificadores de audio, los equipos de grabación y reproducción de cintas magnéticas, y un simple interruptor regulador de luz. Ventajas de las técnicas digitales Cada vez hay más aplicaciones en la electrónica, al igual que en la mayoría de las otras tecnologías, que utilizan técnicas digitales para hacer operaciones que antes se realizaban mediante métodos analógicos. Las razones principales del cambio hacia la tecnología digital son: 1. Generalmente los sistemas digitales son más fáciles de diseñar. Los circuitos que se utilizan en los sistemas digitales son circuitos de conmutación, en donde no importan los valores exactos de voltaje o de corriente, sino sólo el intervalo (ALTO o BAJO) en el que se encuentren. 2. Es fácil almacenar información. Esto se logra mediante dispositivos y circuitos especiales que pueden fijar la información digital y almacenarla durante el tiempo que sea necesario, y las técnicas de almacenamiento masivo pueden guardar miles de millones de bits de información en un espacio físico relativa- mente pequeño. En contraste, la capacidad de almacenamiento de las técnicas analógicas es extremadamente limitada. 3. Es más fácil mantener la precisión y la exactitud en todo el sistema. Una vez que se digitaliza una señal, la información que contiene no se deteriora a medida que se procesa. En los sistemas analógicos, las señales de voltaje y de corriente tienden a distorsionarse debido a los efectos de temperatura, humedad y por variaciones de tolerancia de los componentes en los circuitos que procesan la señal. 4. La operación puede programarse. Es bastante sencillo diseñar sistemas digitales cuya operación esté controlada por un conjunto de instrucciones almacenadas, a lo cual se le conoce como programa. Los sistemas analógicos también pueden programarse, pero la variedad y la complejidad de las operaciones disponibles son muy limitadas. 5. Los circuitos digitales son más resistentes al ruido. Las fluctuaciones espurias en el voltaje (ruido) no son tan críticas en los sistemas digitales, ya que el valor exacto del voltaje no es importante, siempre y cuando el ruido no sea tan fuerte como para evitar que podamos distinguir entre un nivel ALTO y un nivel BAJO. 6. Pueden fabricarse más circuitos digitales en los chips de CI. Es cierto que los circui- tos analógicos también se han beneficiado con el desarrollo de la tecnología de los circuitos integrados, pero su complejidad relativa y uso de dispositivos que no pueden integrarse de manera económicamente conveniente (capacitores de alto valor, resistencias de precisión, inductancias, transformadores) han hecho imposible alcanzar el mismo grado de integración en los sistemas analógicos. Limitaciones de las técnicas digitales En realidad existen muy pocas desventajas al utilizar técnicas digitales. Los dos problemas principales son: El mundo real es analógico. El procesamiento de las señales digitales lleva tiempo.
  • 35. La mayoría de las cantidades físicas son analógicas por naturaleza, y a menudo estas cantidades son las entradas y salidas que un sistema monitorea, opera o controla. Algunos ejemplos son: temperatura, presión, posición, velocidad, nivel de líquido y flujo, entre otros. Estamos habituados a expresar estas cantidades en forma digital, como cuando decimos que la temperatura es de 32° (31.8° si queremos ser más pre- cisos), pero en realidad estamos haciendo una aproximación digital de una cantidad que es sin duda analógica. Para aprovechar las técnicas digitales al procesar entradas y salidas analógicas, se deben seguir cuatro pasos: 1. Convertir la variable física en una señal eléctrica (analógica). 2. Convertir la señal eléctrica (analógica) a su forma digital. 3. Procesar (operar con) la información digital. 4. Convertir las salidas digitales nuevamente a la forma analógica del mundo real. Se podría escribir todo un libro únicamente para explicar el paso 1. Existen muchos tipos de dispositivos que convierten diversas variables físicas en señales eléc- tricas analógicas (sensores). Éstos se utilizan para medir cosas que se encuentran en nuestro mundo analógico “real”. Tan sólo en un automóvil hay sensores de nivel de líquido (tanque de gasolina), temperatura (control del clima y del motor), velocidad (velocímetro), aceleración (detección de colisión con bolsa de aire), presión (aceite, múltiple de admisión) y flujo (combustible), por mencionar unos cuantos. Para ilustrar un sistema típico que utiliza este enfoque, la figura 1-1 describe un sistema de precisión para regulación de temperatura. Un usuario oprime botones para aumentar o reducir la temperatura en incrementos de 0.1° (representación digital). Un sensor de temperatura en el espacio que se está calentando convierte la temperatura medida en un voltaje proporcional. Este voltaje analógico se convierte en una cantidad digital mediante un convertidor analógico-digital (ADC). Después, este valor se compara con el valor deseado y se utiliza para determinar un valor digital que representa cuánto calor se necesita. El valor digital se convierte en una cantidad analógica (voltaje) mediante un convertidor digital-analógico (DAC). Este voltaje se aplica a un elemento de calentamiento, el cual producirá el calor corres- pondiente al voltaje aplicado y afectará la temperatura del espacio. Otro buen ejemplo en donde se lleva a cabo la conversión entre valores analógi- cos y digitales es en la grabación de audio. Los discos compactos (CD) han sustituido a las cintas magnéticas debido a que proporcionan un medio mucho más conveniente FIGURA 1-1 Diagrama de bloques de un sistema digital de precisión para control de temperatura. Espacio con temperatura controlada Entrada digital: Establece la temperatura deseada Procesador digital Conversión digital-analógica Conversión analógico-digital Calor Sensor Señal analógica que representa la temperatura actual Señal digital que representa la temperatura actual Señal digital que representa la potencia (voltaje) para el calentador SECCIÓN 1-2/SISTEMAS DIGITALES Y ANALÓGICOS 7
  • 36. 8 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS para la grabación y reproducción de música. El proceso funciona más o menos así: (1) los sonidos provenientes de los instrumentos y de las voces humanas producen una señal analógica de voltaje en un micrófono; (2) esta señal analógica se convierte en un formato digital mediante el uso de un proceso de conversión analógico-digital; (3) la información digital se almacena en la superficie del CD; (4) durante la repro- ducción, el reproductor de CD toma la información digital de la superficie del CD y la convierte en una señal analógica, que a su vez se amplifica y se alimenta a una bocina, en donde puede ser detectada por el oído humano. La segunda desventaja de los sistemas digitales es que se requiere tiempo para procesar las señales digitalizadas (listas de números). Además es necesario realizar conversiones entre las formas analógica y digital de la información, lo cual hace que el sistema sea más complejo y costoso. Entre más precisos necesiten ser los números, más tiempo se requerirá para procesarlos. En muchas aplicaciones, estos aspectos se minimizan con las numerosas ventajas del uso de las técnicas digitales, por lo cual la conversión entre cantidades analógicas y digitales se ha vuelto bastante común en la tecnología actual. No obstante, existen situaciones en las que es más sencillo o económico utilizar técnicas analógicas. Por ejemplo, hace varios años un colega (Tom Robertson) deci- dió crear una demostración de un sistema de control para los grupos de visitantes. Planeaba suspender un objeto metálico en un campo magnético, como se muestra en la figura 1-2. Para implementar un electroimán enredó alambre en una bobina, al tiempo que controlaba la cantidad de corriente que pasaba a través de ésta. Para medir la posición del objeto metálico pasaba un rayo de luz infrarroja a través del campo magnético. A medida que el objeto se acercaba al electroimán, empezaba a bloquear el rayo de luz. Para controlar el campo magnético se medían los pequeños cambios en el nivel de luz, logrando así mantener el objeto metálico flotando y esta- cionario, sin usar cordones. Todos los intentos por utilizar una microcomputadora para medir estos cambios tan pequeños, realizar los cálculos de control y excitar el electroimán resultaban demasiado lentos, aún y cuando se utilizaba la PC más rápida y potente disponible en ese entonces. En la solución final sólo utilizó un par de amplificadores operacionales y otros componentes que costaron sólo unos cuantos dólares: un método completamente analógico. Hoy en día tenemos acceso a procesadores que son lo suficientemente veloces y a técnicas de medición lo bastan- te precisas como para lograr esta hazaña, pero la solución más simple sigue siendo analógica. Es común ver que se emplean técnicas tanto analógicas como digitales dentro del mismo sistema para beneficiarse de las ventajas de ambas. En estos sistemas híbridos, una de las partes más importantes de la fase de diseño implica determinar cuáles partes del sistema deben ser analógicas y cuáles digitales. La tendencia en (a) (b) FIGURA 1-2 Un sistema de levitación magnético suspendiendo: (a) un globo terráqueo con una placa de acero incrustada, y (b) un martillo.
  • 37. PREGUNTAS DE REPASO la mayoría de los sistemas es digitalizar la señal lo más pronto posible y convertirla de nuevo en analógica lo más tarde posible, a medida que las señales fluyen a través del sistema. El futuro es digital Los avances en la tecnología digital durante las últimas tres décadas han sido feno- menales, y hay razones fuertes para creer que todavía hay más por venir. Piense en los artículos de uso diario que han cambiado del formato analógico al digital en el transcurso de su vida. Ahora puede comprar un termómetro digital inalámbrico para interiores/exteriores por menos de 10.00 dólares. Los automóviles han pasado de tener muy pocos controles electrónicos a ser vehículos controlados en su mayor parte por la tecnología digital. El audio digital nos ha llevado a usar el disco com- pacto y el reproductor MP3. El video digital trajo consigo al DVD. Las cámaras de video y fotográficas digitales para el hogar; la grabación digital con sistemas como TiVo; los teléfonos celulares digitales y el tratamiento digital de imágenes en los rayos X; el tratamiento de imágenes de resonancia magnética (MRI) y los sistemas de ultrasonido en los hospitales son sólo unas cuantas de las aplicaciones que han sido invadidas por la revolución digital. Tan pronto como se cuente con la infraes- tructura apropiada, los sistemas de teléfono y televisión se harán digitales. La tasa de crecimiento en el ámbito digital continúa sorprendiendo. Tal vez su automóvil esté equipado con un sistema tal como On Star de GM, el cual convierte el table- ro en un centro de comunicación, información y navegación inalámbrica. Tal vez ya esté utilizando comandos de voz para enviar o recibir correo electrónico, pedir un reporte de tráfico, revisar las necesidades de mantenimiento del automóvil o sólo cambiar de estación de radio o de CD; todo sin necesidad de quitar sus manos del volante o su vista del camino. Los automóviles pueden reportar su posición exacta en caso de emergencia o de una falla mecánica. En los años por venir la comunica- ción inalámbrica seguirá expandiendo su cobertura para ofrecerle conectividad en donde quiera que se encuentre. Los teléfonos podrán recibir, ordenar y tal vez res- ponder a las llamadas entrantes, al igual que una secretaria altamente capacitada. La revolución de la televisión digital le proveerá no sólo de una mayor definición de la imagen, sino también mucha más flexibilidad en la programación. Usted podrá seleccionar el programa que desea ver y cargarlo en la memoria de su televisor, con lo cual podrá congelar la imagen o reproducir escenas a placer, como si estuviera viendo un DVD. A medida que la realidad virtual continúe mejorando, usted podrá interactuar con la materia que esté estudiando. Tal vez esto no suene tan emocio- nante cuando se estudia electrónica, pero imagine estudiar la historia como si fuera un participante, o aprender las técnicas apropiadas para todo lo relacionado con temas que vayan desde el atletismo hasta la cirugía, por medio de simulaciones basadas en su desempeño actual. La tecnología digital continuará su incursión de alta velocidad en las activi- dades diarias de nuestras vidas, además de que abrirá nuevas fronteras en formas que tal vez nunca hayamos imaginado. Estas aplicaciones (y muchas más) se basan en los principios que presentamos en este libro. Las herramientas de software para desarrollar sistemas complejos se actualizan constantemente y están disponibles para cualquier persona a través de la Web. También estudiaremos los fundamentos técnicos necesarios para comunicarnos con cualquiera de estas herramientas y lo prepararemos para que pueda disfrutar de una carrera fascinante y llena de satis- facciones. 1. ¿Cuáles son las ventajas de las técnicas digitales, en comparación con las analó- gicas? 2. ¿Cuál es la principal limitación en cuanto al uso de las técnicas digitales? SECCIÓN 1-2/SISTEMAS DIGITALES Y ANALÓGICOS 9
  • 38. 10 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS 1-3 SISTEMAS NUMÉRICOS DIGITALES En la tecnología digital se utilizan muchos sistemas numéricos. Los más comunes son los siguientes: decimal, binario, octal y hexadecimal. Evidentemente el sistema decimal es el más conocido, ya que es el que utilizamos a diario. Analicemos algunas de sus características para ayudarnos a comprender los demás sistemas numéricos. Sistema decimal El sistema decimal está compuesto de 10 números o símbolos. Estos 10 símbolos son: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9; al utilizar estos símbolos como dígitos de un número, podemos expresar cualquier cantidad. El sistema decimal se conoce también como sistema de base 10 ya que tiene 10 dígitos, y ha evolucionado en forma natural debido al hecho de que las personas tenemos 10 dedos. De hecho, la palabra dígito se deriva de la palabra “dedo”. El decimal es un sistema de valor posicional, en el cual el valor de un dígito depende de su posición. Por ejemplo, considere el número decimal 453. Por la posi- ción de los dígitos sabemos que el 4 en realidad representa 4 centenas, el 5 represen- ta 5 decenas y el 3 representa 3 unidades. En esencia, el 4 lleva el mayor peso de los tres dígitos y se le conoce como el dígito más significativo (MSD) mientras que el 3 lleva el menor peso y se le conoce como el dígito menos significativo (LSD). Considere otro ejemplo, 27.35. Este número en realidad es igual a 2 decenas más 7 unidades más 3 décimas más 5 centésimas, o bien 2 10 7 1 3 0.1 5 0.01. El punto decimal se utiliza para separar las partes entera y fraccional del número. Dicho de forma más rigurosa, las diversas posiciones relativas al punto decimal llevan pesos que pueden expresarse como potencias de 10. Esto se ilustra en la figura 1-3, en donde se representa el número 2745.214. El punto decimal separa las potencias positivas de 10 de las potencias negativas. El número 2745.214 es, por lo tanto, igual a: En general, cualquier número es sólo la suma de los productos del valor de cada dígito y su valor posicional. Conteo decimal Al contar en el sistema decimal, empezamos con 0 en la posición de las unidades y tomamos cada símbolo (dígito) en forma progresiva hasta llegar al 9. Luego agrega- mos un 1 a la siguiente posición más alta y empezamos de nuevo con 0 en la prime- 103 102 2 7 4 5 . 2 1 4 101 100 10–3 10–2 10–1 Valores posicionales (pesos) Punto decimal MSD LSD FIGURA 1-3 Valores de posición decimal como potencias de 10. + (2 * 10-1 ) + (1 * 10-2 ) + (4 * 10-3 ) (2 * 10+3 ) + (7 * 10+2 ) + (4 * 101 ) + (5 * 100 )
  • 39. ra posición (vea la figura 1-4). Este proceso continúa hasta llegar al conteo de 99. Después agregamos un 1 a la tercera posición y continuamos de nuevo con 0s en las primeras dos posiciones. El mismo patrón se sigue hasta llegar al número que deseamos contar. Es importante observar que en el conteo decimal, la posición de las unidades (LSD) cambia hacia arriba con cada paso en el conteo, la posición de las decenas cambia hacia arriba cada 10 pasos en el conteo, la posición de las centenas cambia hacia arriba cada 100 pasos en el conteo, y así sucesivamente. Otra característica del sistema decimal es que si utilizamos sólo dos lugares decimales, podemos contar hasta 102 100 números distintos (0 a 99).* Con tres lugares podemos contar hasta 103 1000 números (0 a 999), y así sucesivamente. En general, con N lugares o dígitos podemos contar hasta 10N números distintos. Empe- zando con cero, el número más grande siempre será 10N 1. Sistema binario Desafortunadamente, el sistema numérico decimal no se presta para una imple- mentación conveniente en los sistemas digitales. Por ejemplo, es muy difícil diseñar equipo electrónico de manera que pueda trabajar con 10 niveles de voltaje distin- tos (cada uno representando un carácter decimal, del 0 al 9). Por otro lado, es muy sencillo diseñar circuitos electrónicos simples y precisos que operen sólo con dos niveles de voltaje. Por esta razón casi cualquier sistema digital utiliza el sistema numérico binario (base 2) como el sistema numérico básico de sus operaciones. Fre- cuentemente se utilizan otros sistemas numéricos para interpretar o representar cantidades binarias, para ayudar a las personas que trabajan con estos sistemas digitales y los utilizan. En el sistema binario sólo hay dos símbolos o posibles valores de dígitos: 0 y 1. Aún así, este sistema de base 2 puede usarse para representar cualquier cantidad que pueda representarse en decimal o en otros sistemas numéricos. Sin embargo, se requeriría de un mayor número de dígitos binarios para expresar una determinada cantidad. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 99 100 101 102 103 199 200 999 1000 FIGURA 1-4 Conteo decimal. * El cero se cuenta como número. SECCIÓN 1-3/SISTEMAS NUMÉRICOS DIGITALES 11
  • 40. 12 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS Todas las aseveraciones mencionadas con respecto al sistema decimal pueden aplicarse de igual forma al sistema binario. Este sistema también es de valor posi- cional, en donde cada dígito binario tiene su propio peso expresado como potencia de 2. Esto se ilustra en la figura 1-5, donde los lugares a la izquierda del punto bina- rio (contraparte del punto decimal) son potencias positivas de 2, y los lugares a la derecha son potencias negativas de 2. El número 1101.101 se representa en la figura. Para encontrar su equivalente en el sistema decimal, sólo tomamos la suma de los productos del valor de cada dígito (0 o 1) y su valor posicional. En la operación anterior podemos observar que se utilizaron subíndices (2 y 10) para indicar la base en la cual se expresa el número. Esta convención evita la confu- sión que se crea siempre que se emplea más de un sistema numérico. En el sistema binario es muy común que el término dígito binario se abrevie con el término bit, el cual utilizaremos a partir de ahora. Por ende, en el número expresado en la figura 1-5 hay cuatro bits a la izquierda del punto binario, los cuales representan la parte entera del número, y tres bits a la derecha del punto binario, los cuales representan la parte fraccional. El bit más significativo (MSB) es el bit más a la izquierda (de mayor peso). El bit menos significativo (LSB) es el bit más a la derecha (de menor peso). Éstos se indican en la figura 1-5. Aquí, el MSB tiene un peso de 23 y el LSB tiene un peso de 23 . Conteo binario Al tratar con números binarios, por lo general, nos restringimos a un número especí- fico de bits. Esta restricción se basa en los circuitos que utilicemos para representar los números binarios. Utilicemos números binarios de cuatro bits para ilustrar el método para contar en binario. La secuencia que se muestra en la figura 1-6, comienza con todos los bits en 0; a esto se le conoce como cuenta cero. Para cada cuenta sucesiva se alterna la posición de las unidades (20 ); es decir, cambia de un valor binario al otro. Cada vez que el bit de las unidades cambie de 1 a 0 se alternará la posición de los dos (21 ), es decir, cambiará de estado. Cada vez que la posición de los dos cambie de 1 a 0, se alternará la posición de los cuatros (22 ) (cambiará de estado). De igual forma, cada vez que la posición de los cuatros pase de 1 a 0, se alternará la posición de los ochos (23 ). Si el número binario tuviera más de cuatro bits, este mismo proceso continuaría para las posiciones de los bits de mayor orden. La secuencia de conteo binario tiene una característica importante, como se muestra en la figura 1-6. El bit de las unidades (LSB) cambia ya sea de 0 a 1 o de 1 a 0 con cada conteo. El segundo bit (posición de los dos) permanece en 0 durante dos conteos, después en 1 durante dos conteos, después en 0 durante dos conteos, y así sucesivamente. El tercer bit (posición de los cuatros) permanece en 0 durante 23 22 1 0 1 1 1 0 1 21 20 2–3 2–2 2–1 Valores posicionales Punto binario MSB LSB FIGURA 1-5 Los valores posicionales binarios como potencias de 2. = 11.62510 = 8 + 0 + 2 + 1 + 0.5 + 0 + 0.125 + (1 * 2-1 ) + (0 * 2-2 ) + (1 * 2-3 ) 1011.1012 = (1 * 23 ) + (0 * 22 ) + (1 * 21 ) + (1 * 20 )
  • 41. PREGUNTAS DE REPASO cuatro conteos, después en 1 durante cuatro conteos, y así sucesivamente. El cuar- to bit (posición de los ochos) permanece en 0 durante ocho conteos, después en 1 durante ocho conteos. Si quisiéramos contar aún más, agregaríamos más lugares y este patrón continuaría con los 1s y los 0s alternando en grupos de 2N1 . Por ejem- plo, si utilizamos un quinto lugar binario, el quinto bit alternaría dieciséis 0s, des- pués dieciséis 1s, y así en lo sucesivo. Al igual que para el sistema decimal, para el sistema binario también aplica que si se utilizan N bits o lugares, podemos realizar 2N conteos. Por ejemplo, con dos bits podemos realizar 22 4 conteos (de 002 hasta 112); con cuatro bits podemos realizar 24 16 conteos (de 00002 hasta 11112); y así sucesivamente. En la última cuenta todos los bits serán 1s y será igual a 2N –1 en el sistema decimal. Por ejemplo, si se utilizan cuatro bits, el último número será 11112 24 1 1510. ¿Cuál es el mayor número que se puede representar si se utilizan ocho bits? Solución Ésta fue una breve introducción al sistema numérico binario y su relación con el sistema decimal. En el siguiente capítulo invertiremos mucho más tiempo en estos dos sistemas numéricos y otros más. 1. ¿Cuál es el equivalente decimal de 11010112? 2. ¿Cuál es el binario que sigue al 101112 en la secuencia de conteo? 3. ¿Cuál es el mayor valor decimal que se puede representar si se utilizan 12 bits? 1-4 REPRESENTACIÓN DE CANTIDADES BINARIAS En los sistemas digitales, la información que se procesa, por lo general, está presente en formato binario. Las cantidades binarias pueden representarse mediante cual- quier dispositivo que sólo tenga dos estados de operación o condiciones posibles. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Pesos Equivalente decimal 23 = 8 22 = 4 21 = 2 20 = 1 LSB FIGURA 1-6 Secuencia de conteo binario. EJEMPLO 1-2 2N -1 = 28 -1 = 25510 = 111111112. SECCIÓN 1-4/REPRESENTACIÓN DE CANTIDADES BINARIAS 13
  • 42. 14 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS Por ejemplo, un interruptor sólo tiene dos estados: abierto o cerrado. De manera arbitraria podemos permitir que un interruptor abierto represente el 0 binario y que un interruptor cerrado represente el 1 binario. Con esta asignación podemos ahora representar cualquier número binario. La figura 1-7(a) muestra un número en código binario para un dispositivo de apertura de puertas de garaje. Los pequeños interruptores están ajustados para formar el número binario 1000101010. La puerta se abrirá sólo si coinciden los patrones de bits en el receptor y en el transmisor . La figura 1-7(b) muestra otro ejemplo, en el cual se almacenan números binarios en un CD. La superficie interior (debajo de una capa de plástico transparente) se recubre con una capa de aluminio con alta capacidad de reflexión. Se queman hoyos a través de esta cubierta reflectora para formar “pozos” que no reflejan la luz de la misma manera que las áreas no quemadas. Estas áreas en las que se queman los pozos se consideran como “1s” y las áreas reflectoras son “0s”. Existen muchos otros dispositivos que sólo tienen dos estados de operación, o que pueden operarse en dos condiciones extremas. Entre ellos están: la bombilla de luz (brillante u oscura), el diodo (conductor o no conductor), el electroimán (energi- zado o desenergizado), el transistor (en corte o saturado), la fotocelda (iluminada u oscura), el termostato (abierto o cerrado), el embrague mecánico (enganchado o des- enganchado), y un área en un disco magnético (magnetizada o desmagnetizada). En los sistemas digitales electrónicos la información binaria se representa mediante voltajes (o corrientes) que están presentes en las entradas y salidas de los diversos circuitos. Por lo general, el 0 y el 1 binarios se representan mediante dos niveles de voltaje nominal. Por ejemplo, cero Volts (0 V) podrían representar el 0 binario y 5 V podrían representar el 1 binario. En realidad y debido a las variacio- nes en los circuitos, el 0 y el 1 se representan mediante intervalos de voltaje. Esto se ilustra en la figura 1-8(a), en donde cualquier voltaje entre 0 y 0.8V representa un 0 y cualquier voltaje entre 2 y 5V representa un 1. Por lo general, todas las señales de entrada y salida se encuentran dentro de alguno de estos intervalos, excepto duran- te las transiciones de un nivel a otro. Ahora podemos notar otra diferencia importante entre los sistemas digitales y los analógicos. En los sistemas digitales, el valor exacto de un voltaje no es impor- FIGURA 1-7 (a) Opciones de configuración binaria para un dispositivo de apertura de puertas de garaje. (b) Audio digital en un CD. (a) (b)
  • 43. tante; por ejemplo, para las asignaciones de voltaje de la figura 1-8(a) un voltaje de 3.6 V significa lo mismo que un voltaje de 4.3 V. En los sistemas analógicos el valor exacto de un voltaje es importante. Por ejemplo, si el voltaje analógico es proporcio- nal a la temperatura medida por un transductor, 3.6 V representaría una tempera- tura distinta que 4.3 V. En otras palabras, la magnitud del voltaje lleva información importante. Dicha característica significa que, por lo general, es más difícil diseñar circuitos analógicos precisos que circuitos digitales, debido a la manera en la que se ven afectados los valores exactos de voltaje por las variaciones en los valores de los componentes, la temperatura y el ruido (fluctuaciones aleatorias de voltaje). Las señales digitales y los diagramas de tiempos La figura 1-8(b) muestra una señal digital común y la forma en que ésta varía a tra- vés del tiempo. En realidad es un gráfico de voltaje contra tiempo (t) y se le conoce como diagrama de tiempos. La escala de tiempo horizontal está graduada en inter- valos regulares que comienzan desde t0 y avanzan hasta t1, t2 y así sucesivamente. Para el ejemplo del diagrama de tiempos que se muestra aquí, la señal empieza en 0 V (un 0 binario) en el tiempo t0 y permanece ahí hasta el tiempo t1. En t1 la señal realiza una transición (salto) hasta 4 V (un 1 binario). En t2 regresa a 0 V. En t3 y t5 ocurren transiciones similares. Observe que la señal no cambia en t4, sino que per- manece en 4 V desde t3 hasta t5. Las transiciones en este diagrama de tiempos se dibujan como líneas verticales, por lo que parecen ser instantáneas cuando en realidad no lo son. Sin embargo, en muchas situaciones los tiempos de transición son tan cortos en comparación con los tiempos entre transiciones que podemos mostrarlos en el diagrama como líneas verticales. Más adelante nos encontraremos con situaciones en las que será nece- sario mostrar las transiciones con más precisión, en una escala de tiempo a mayor detalle. Los diagramas de tiempos se utilizan mucho para mostrar cómo cambian las señales digitales con el tiempo, y en especial para mostrar la relación entre dos o más señales digitales en el mismo circuito o sistema. Al mostrar una o más señales digitales en un osciloscopio o analizador lógico podemos comparar las señales con sus diagramas de tiempos esperados. Ésta es una parte muy importante de los procedi- mientos de prueba y detección de fallas que se utilizan en los sistemas digitales. 1.5 CIRCUITOS DIGITALES/CIRCUITOS LÓGICOS Los circuitos digitales están diseñados para producir voltajes de salida que se encuentran dentro de los intervalos de voltaje prescritos para 0 y 1, como los que se definen en la figura 1-8. De igual forma, los circuitos digitales están diseñados para responder en forma predecible a los voltajes de entrada que se encuentran No utilizado (a) 5 V 2 V 0.8 V 0 V (b) Volts 4 V 0 V t 1 0 1 0 1 binario 0 binario t0 t1 t2 t3 t4 t5 Voltajes inválidos FIGURA 1-8 (a) Asignaciones comunes de voltaje en un sistema digital; (b) diagrama común de sincronización de una señal digital. SECCIÓN 1-5/CIRCUITOS DIGITALES/CIRCUITOS LÓGICOS 15
  • 44. 16 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS dentro de los intervalos definidos de 0 y 1. Esto significa que un circuito digital responderá de igual forma a todos los voltajes de entrada que se encuentren dentro de los valores permitidos para 0; de manera similar, no habrá distinción entre los voltajes de entrada que se encuentren dentro del intervalo permitido para 1. La figura 1-9 representa un circuito digital típico con una entrada vi y una sali- da vo. La salida se muestra para dos formas de onda de señal de entrada distintas. Observe que vo es igual para ambos casos, pues aunque las dos formas de onda de entrada difieren en sus niveles exactos de voltaje, se encuentran en los mismos nive- les binarios. Circuitos lógicos La forma en que un circuito digital responde a una entrada se conoce como lógica del circuito. Cada tipo de circuito digital obedece un cierto conjunto de reglas lógi- cas. Por esta razón a los circuitos digitales se les conoce también como circuitos lógicos. A lo largo del libro utilizaremos ambos términos sin distinción. En el capítu- lo 3 veremos con mayor claridad el significado del término “lógica” de un circuito. Vamos a estudiar todos los tipos de circuitos lógicos que se utilizan en la actua- lidad en los sistemas digitales. Primero enfocaremos nuestra atención sólo en la operación lógica que realizan estos circuitos; es decir, la relación entre las entradas y las salidas del circuito. Dejaremos pendiente cualquier discusión acerca de la ope- ración interna de los circuitos lógicos hasta que hayamos entendido completamente su operación lógica. Circuitos digitales integrados Casi todos los circuitos digitales que se utilizan en los sistemas digitales moder- nos son circuitos integrados (CI). La amplia variedad de circuitos integrados lógicos disponibles, ha hecho posible la construcción de sistemas digitales complejos que son más pequeños y confiables que sus contrapartes fabricados con componentes discretos. Existen varias tecnologías de fabricación de circuitos integrados utilizadas para producir circuitos integrados digitales, de las cuales las más comunes son CMOS, TTL, NMOS y ECL. Cada una difiere en cuanto al tipo de circuito utilizado para pro- porcionar la operación lógica deseada. Por ejemplo,TTL (lógica de transistor-transis- tor) utiliza el transistor bipolar como el elemento principal en el circuito, mientras que CMOS (semiconductor de metal óxido complementario) utiliza el MOSFET en modo mejorado como el elemento principal del circuito. Aprenderemos sobre las diversas tecnologías de CIs, sus características, ventajas y desventajas a medida que vayamos dominando los tipos básicos de circuitos lógicos. Circuito digital vi vo 0 V 0.5 V 4 V 0 V t 3.7 V 5 V t Caso I Caso II 4 V vi vo vi vo 0 V FIGURA 1-9 Un circuito digital responde a un nivel binario de entrada (0 o 1) y no a su voltaje real.
  • 45. PREGUNTAS DE REPASO 1. Verdadero o falso: El valor exacto de un voltaje de entrada es imprescindible para un circuito digital. 2. ¿Puede un circuito digital producir el mismo voltaje de salida para distintos valores del voltaje de entrada? 3. Un circuito digital también se conoce como circuito __________. 4. Un gráfico que muestra cómo cambian una o más señales digitales a través del tiempo se llama ___________. 1-6 TRANSMISIÓN EN PARALELOY EN SERIE Una de las operaciones más comunes que ocurre en cualquier sistema digital es la transmisión de información de un lugar a otro. La información puede transmitirse a través de una distancia tan pequeña como una fracción de un centímetro en la misma tarjeta de circuitos, o a través de muchos kilómetros cuando el operador de una terminal de computadora se comunica con una ubicada en otra ciudad. La información que se transmite se encuentra en formato binario y, por lo general, se representa como voltajes en las salidas de un circuito emisor, las cuales se conectan a las entradas de un circuito receptor. La figura 1-10 ilustra los dos métodos básicos para la transmisión de información digital: en paralelo y en serie. La figura 1-10(a) demuestra el uso de la transmisión de datos en paralelo desde una computadora hacia una impresora mediante el uso del puerto paralelo de impresora (LPT1) de la computadora. En este escenario vamos a suponer que queremos imprimir “H” MSB LSB 0 1 0 0 1 0 0 0 “i” 0 1 1 0 1 0 0 1 “H” 00010010 “i” 10010110 LSB MSB LSB MSB FIGURA 1-10 (a) La transmisión en paralelo utiliza una línea de conexión por bit, y todos los bits se transmiten al mismo tiempo; (b) la transmisión en serie utiliza sólo una línea de señal y los bits individuales se transmiten en forma consecutiva (uno a la vez). (a) (b) SECCIÓN 1-6/TRANSMISIÓN EN PARALELO Y EN SERIE 17
  • 46. 18 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS PREGUNTAS DE REPASO la palabra “Hi” en la computadora. El código binario para la “H” es 01001000 y el códi- go binario para la “i” es 01101001. Cada carácter (la “H” y la “i”) está formado de ocho bits. Mediante el uso de la transmisión en paralelo, los ocho bits se envían al mismo tiempo a través de ocho alambres. La “H” se envía primero, seguida de la “i”. La figura 1-10(b) demuestra el uso de la transmisión en serie como cuando se utiliza un puerto COM serial en la computadora para enviar datos a un módem, o cuando se utiliza un puerto USB (Bus Serie Universal) para enviar datos a una impresora. Aunque los detalles acerca de los formatos de los datos y la velocidad de la transmisión son bastante distintos entre un puerto COM y un puerto USB, los datos en sí se envían de la misma forma: un bit a la vez, a través de un solo alambre. Los bits se muestran en el diagrama como si en realidad se desplazaran sobre el alambre en el orden mostrado. El bit menos significativo de la “H” se envía primero y el bit más significativo de la “i” se envía al último. Desde luego que en la realidad sólo puede haber un bit en el alambre en cualquier instante y, por lo general, el tiempo se dibuja empezando por la izquierda y avanzando hacia la derecha. Esto produce un gráfico de bits lógicos contra tiempo de la transmisión en serie, al cual se le conoce como diagrama de tiempos. Observe que en esta presentación el bit menos significativo se muestra a la izquierda, ya que se envió primero. La principal diferencia entre las representaciones en paralelo y en serie es la pérdida de velocidad a cambio de simpleza en el circuito. La transmisión de datos binarios desde una parte del sistema digital a otra puede realizarse con más rapi- dez si se utiliza el método en paralelo ya que todos los bits se transmiten al mismo tiempo, mientras que en el método serie se transmite un bit a la vez. Por otro lado, la transmisión en paralelo requiere más líneas de señal conectadas entre el emisor y el receptor de los datos binarios que la transmisión en serie. En otras palabras, la transmisión en paralelo es más rápida y la transmisión en serie requiere menos líneas de señal. A lo largo del libro encontraremos muchas veces esta comparación entre los métodos paralelo y serie para representar información binaria. 1. Describa las ventajas de la transmisión de datos binarios en paralelo y en serie. 1-7 MEMORIA Cuando se aplica una señal de entrada a la mayoría de los dispositivos o circuitos, la salida cambia de cierta forma en respuesta a la entrada, y cuando se elimina la señal de entrada la salida regresa a su estado original. Estos circuitos no exhiben la propiedad de la memoria debido a que sus salidas regresan a su estado normal. En los circuitos digitales, ciertos tipos de dispositivos y circuitos tienen memoria. Cuando se aplique una entrada a dicho circuito la salida cambiará su estado, pero permanecerá en el nuevo estado aún y cuando se elimine la entrada que lo provocó. Esta propiedad de retener su respuesta a una entrada momentánea se conoce como memoria. La figura 1-11 ilustra las operaciones con y sin memoria. Circuito con memoria Circuito sin memoria FIGURA 1-11 Comparación entre la operación sin memoria y con memoria.
  • 47. Datos, Artmética- lógica Entrada Memoria Salida Control Datos, información Unidad central de procesamiento (CPU) C Señales de control D Datos o información FIGURA 1-12 Diagrama funcional de una computadora digital. Los circuitos y dispositivos de memoria juegan un importante papel en los siste- mas digitales, ya que proporcionan los medios para almacenar números binarios ya sea en forma temporal o permanente, con la habilidad de modificar la información almacenada en determinado momento. Como veremos, los diversos elementos de memoria incluyen los de tipo magnético y óptico, y aquellos que utilizan circuitos de fijación electrónica (llamados latches y flip-flops). 1-8 COMPUTADORAS DIGITALES Las técnicas digitales han encontrado aplicación en una innumerable variedad de áreas de tecnología, pero el de las computadoras digitales automáticas es hasta aho- ra la más notable y extensa. Aunque las computadoras digitales afectan en alguna forma la vida de todos nosotros, es poco probable que todos sepamos con exactitud qué es lo que hace una computadora. En términos simples, una computadora es un sistema de hardware que realiza operaciones aritméticas, manipula datos (por lo general en formato binario) y realiza decisiones. En su mayoría los humanos podemos hacer todo lo que hacen las computadoras, pero éstas lo hacen con mucha más velocidad y precisión, a pesar del hecho de que las computadoras realizan todos sus cálculos y operaciones un paso a la vez. Por ejemplo, un ser humano puede tomar una lista de 10 números y encontrar la suma en una sola operación, con sólo colocar los números uno sobre otro y sumarlos colum- na por columna. Por otro lado, una computadora sólo puede sumar dos números a la vez, por lo que para sumar esa misma lista de números tendría que realizar nueve pasos. Desde luego el hecho de que la computadora sólo requiera de unos cuantos nanosegundos por cada paso es algo que compensa su aparente ineficiencia. Una computadora es mucho más veloz y precisa que las personas pero, a diferen- cia de nosotros, debe recibir un conjunto completo de instrucciones que le indiquen con exactitud qué debe hacer en cada paso. Este conjunto de instrucciones, llamado programa, lo preparan una o más personas para cada trabajo que la computadora debe realizar. Los programas se colocan en la unidad de memoria de la computado- ra, en formato codificado en binario, y cada instrucción tiene un código único. La computadora toma estos códigos de instrucción de la memoria uno por uno y realiza la operación designada. Principales partes de una computadora Existen varios tipos de sistemas computacionales, pero cada uno puede descompo- nerse en las mismas unidades funcionales. Cada unidad realiza funciones específi- cas, y todas las unidades funcionan en conjunto para llevar a cabo las instrucciones que se dan en el programa. La figura 1-12 muestra las cinco partes funcionales prin- SECCIÓN 1-8/COMPUTADORAS DIGITALES 19
  • 48. 20 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS cipales de una computadora digital y su interacción. Las líneas sólidas con flechas representan el flujo de datos e información. Las líneas punteadas con flechas repre- sentan el flujo de sincronización y las señales de control. Las principales funciones de cada unidad son: 1. Unidad de entrada. A través de esta unidad se alimenta un conjunto completo de instrucciones y datos al sistema computacional y la unidad de memoria, para almacenarlos hasta que se requieran. Por lo general, la información se introduce a la unidad de entrada desde un teclado o un disco. 2. Unidad de memoria. La memoria almacena las instrucciones y los datos que se reciben de la unidad de entrada. Almacena los resultados de las operaciones aritméticas que se reciben de la unidad aritmética. También suministra infor- mación a la unidad de salida. 3. Unidad de control. Esta unidad recibe instrucciones de la unidad de memo- ria, una por una y las interpreta. Después envía las señales de sincronización y control apropiadas a todas las demás unidades para hacer que se ejecute una determinada instrucción. 4. Unidad aritmética-lógica. En esta unidad se realizan todos los cálculos aritméti- cos y las decisiones lógicas, para después almacenar los resultados en la unidad de memoria. 5. Unidad de salida. Esta unidad recibe los datos de la unidad de memoria y los imprime, los muestra en pantalla o los presenta de cualquier otra forma al ope- rador (o proceso, en caso de una computadora de control de procesos). Unidad central de procesamiento (CPU) Como se muestra en el diagrama de la figura 1-12, por lo general, las unidades de con- trol y aritmética-lógica se consideran como una sola unidad, a la cual se le conoce como unidad central de procesamiento (CPU). La CPU contiene todos los circuitos requeri- dos para obtener e interpretar las instrucciones y para controlar y realizar las diversas operaciones que requieren las instrucciones. TIPOS DE COMPUTADORAS Todas las computadoras están compuestas por las unidades básicas antes descritas, pero pueden diferir en cuanto al tamaño físico, la velocidad de operación, la capacidad de memoria y la capacidad de cómputo, entre otras características. Hoy en día los sistemas computacionales están configurados en muchas y muy diversas formas, con muchas características comunes y también diferencias. Tanto empresas como universidades utilizan sistemas computacionales grandes instalados de manera permanente en varios gabinetes, para el soporte de tecnología de información. Las computadoras personales de escritorio se utilizan en nuestros hogares y oficinas para ejecutar programas útiles que mejoran nuestras vidas y proporcionan comunicación con otras computadoras. En los PDA se utilizan computadoras portátiles, y en los sistemas de videojuegos se utilizan computado- ras especializadas. La forma más prevalente de computadoras se encuentra reali- zando tareas de rutina dedicadas en electrodomésticos y demás sistemas a nuestro alrededor. En la actualidad, todos los sistemas con excepción de los más grandes, utilizan tecnología que ha evolucionado a partir de la invención del microprocesador. Este componente es en esencia una unidad central de procesamiento (CPU) en un circui- to integrado, el cual puede conectarse a los demás bloques de un sistema compu- tacional. Por lo general, a las computadoras que utilizan un microprocesador como CPU se les denomina microcomputadoras. Las microcomputadoras de propósito general (por ejemplo: las PC, las PDA, etc.) realizan una variedad de tareas en una amplia gama de aplicaciones, dependiendo del software (programas) que ejecuten. En contraste tenemos a las computadoras dedicadas que realizan actividades tales como operar el motor de un automóvil, controlar el sistema de frenos antibloqueo u operar el horno de microondas. El usuario no puede programar estas computadoras ya que sólo realizan una tarea de control: se les conoce como microcontroladores.
  • 49. PREGUNTAS DE REPASO Como estos microcontroladores son una parte integral de un sistema más grande y sirven un propósito dedicado, también se les llama controladores embebidos. Por lo general, los microcontroladores tienen todos los elementos de una computadora completa (CPU, memoria y puertos de entrada/salida), todo lo cual está contenido dentro de un solo circuito integrado. Los microcontroladores embebidos se encuen- tran en los electrodomésticos de su cocina, en el equipo de entretenimiento, en las fotocopiadoras, en los cajeros automáticos del banco, en el equipo automatizado de fabricación, en la instrumentación médica, entre muchas otras aplicaciones. Como puede ver, aún las personas que no tienen una PC o que no utilizan una en la escuela o el trabajo utilizan a diario microcomputadoras, ya que muchos dis- positivos electrónicos, electrodomésticos, equipo de oficina y muchos otros aparatos están fabricados con base en microcontroladores embebidos (integrados). En esta era digital, si usted trabaja, juega o va a la escuela, no podrá escapar: con toda segu- ridad en alguna parte estará utilizando una microcomputadora. 1. Explique la diferencia ente un circuito digital con memoria y uno sin memoria. 2. Nombre las cinco unidades funcionales principales de una computadora. 3. ¿Cuáles son las dos unidades que conforman la CPU? 4. Un chip de CI que contiene un CPU se llama __________. RESUMEN 1. Las dos formas básicas de representar el valor numérico de las cantidades físi- cas son la analógica (continua) y la digital (discreta). 2. La mayoría de las cantidades en el mundo real son analógicas, pero, por lo gene- ral, las técnicas digitales son superiores a las técnicas analógicas, y se pronosti- ca que la mayor parte de los avances estarán en el ámbito digital. 3. El sistema numérico binario (0 y 1) es el sistema básico que se utiliza en la tec- nología digital. 4. Los circuitos digitales o lógicos operan con voltajes que se encuentran dentro de intervalos prescritos, los cuales representan ya sea un 0 o un 1 binario. 5. Las dos formas básicas de transferir información digital son: en paralelo (todos los bits simultáneamente) y en serie (un bit a la vez). 6. Las partes principales de todas las computadoras son las unidades: de entrada, de control, de memoria, de aritmética-lógica y de salida. 7. La CPU es la combinación de la unidad aritmética-lógica y la unidad de con- trol. 8. Por lo general, una microcomputadora tiene una CPU que se encuentra en un solo chip, y se le llama microprocesador. 9. Un microcontrolador es una microcomputadora diseñada de manera especial para aplicaciones de control dedicadas (no de propósito general). TÉRMINOS IMPORTANTES* bit circuitos digitales/circuitos lógicos computadoras digitales microcomputadoras microcontroladores microprocesador programa sistema digital transmisión en paralelo transmisión en serie unidad aritmética-lógica * Encontrará estos términos en negritas a lo largo del capítulo; además están deÀnidos en el Glosario al Ànal del libro. Esto aplica en todos los capítulos. TÉRMINOS IMPORTANTES 21
  • 50. 22 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS PROBLEMAS SECCIÓN 1-2 1-1.* ¿Cuáles de las siguientes cantidades son analógicas y cuáles digitales? (a) El número de átomos en una muestra de material. (b) La altitud de una aeronave. (c) La presión en la llanta de una bicicleta. (d) La corriente que pasa a través de una bocina. (e) La configuración del temporizador en un horno de microondas. 1-2. ¿Cuáles de las siguientes cantidades son analógicas y cuáles digitales? (a) La anchura de una pieza de madera. (b) La cantidad de tiempo transcurrido antes de que se apague el timbre. (c) La hora del día que se muestra en un reloj de cuarzo. (d) La altitud por encima del nivel del mar, si se mide desde una escalera. (e) La altitud por encima del nivel del mar, si se mide desde una rampa. SECCIÓN 1-3 1-3.* Convierta los siguientes números binarios a sus valores decimales equiva- lentes. (a) 110012 (b) 1001.10012 (c) 10011011001.101102 1-4. Convierta los siguientes números binarios a decimal. (a)    100112 (b)    1100.0101 (c)    10011100100.10010 1-5.* Muestre la secuencia de conteo binario de 000 a 111, usando tres bits. 1-6. Muestre la secuencia de conteo binario de 000000 a 111111, usando seis bits. 1-7.* ¿Cuál es el máximo número que podemos contar si utilizamos 10 bits? 1-8. ¿Cuál es el máximo número que podemos contar si utilizamos 14 bits?      1-9.* ¿Cuántos bits se necesitan para contar hasta 511? 1-10. ¿Cuántos bits se necesitan para contar hasta 63? SECCIÓN 1-4 1-11.* Dibuje el diagrama de tiempos para una señal digital que alterne en forma continua entre 0.2 V (0 binario) durante 2 ms y 4.4 V (1 binario) durante 4 ms. 1-12. Dibuje el diagrama de tiempos para una señal que alterne entre 0.3 V (0 binario) durante 5 ms y 3.9 V (1 binario) durante 2 ms. convertidor analógico- digital (ADC) convertidor digital- analógico (DAC) diagrama de tiempos memoria representación analógica representación digital sistema analógico sistema binario sistema decimal unidad central de procesamiento (CPU) unidad de control unidad de entrada unidad de memoria unidad de salida * Encontrará las respuestas a los problemas marcados con un asterisco al Ànal del libro.
  • 51. SECCIÓN 1-6 1-13.* Suponga que se van a transmitir en binario los valores enteros decimales desde el 0 hasta el 15. (a) ¿Cuántas líneas se necesitan si se utiliza la representación en paralelo? (b) ¿Cuántas líneas se necesitan si se utiliza la representación en serie? SECCIONES 1-7 Y 1-8 1-14. ¿Cuál es la diferencia entre un microprocesador y una microcomputadora? 1-15. ¿Cuál es la diferencia entre un microcontrolador y una microcomputadora? RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES SECCIÓN 1-1 1. Las cantidades analógicas pueden tomar cualquier valor sobre un intervalo continuo; las cantidades digitales sólo pueden tomar valores discretos. SECCIÓN 1-2 1. Es más fácil de diseñar; es más fácil de almacenar información; tiene mayor precisión; capacidad de programación; se ve menos afectado por el ruido; tiene un mayor grado de integración. 2. Las cantidades físicas del mundo real son analógicas. El procesamiento digital requiere tiempo. SECCIÓN 1-3 1. 10710 2. 110002 3. 409510 SECCIÓN 1-5 1. Falso. 2. Sí, siempre y cuando los dos voltajes de entrada estén dentro del mismo intervalo de niveles lógicos. 3. Lógico. 4. Diagrama de tiempos. SECCIÓN 1-6 1. La transmisión en paralelo es más rápida; la transmisión en serie sólo requiere una línea de señal. SECCIÓN 1-8 1. Si hay un cambio instantáneo en la señal de entrada, el circuito que tiene memoria cambiará su salida y permanecerá con ese cambio. 2. Entrada, salida, memoria, aritmética-lógica, de control. 3. Unidad de control y unidad aritmética-lógica. 4. Microprocesador. RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES 23
  • 52. 2-1 Conversiones de binario a decimal 2-2 Conversiones de decimal a binario 2-3 Sistema numérico hexadecimal 2-4 Código BCD 2-5 Código Gray ■ CONTENIDO S ISTEMAS Y CÓDIGOS N UMÉRICOS C A P Í T U L O 2 2-6 Integración de los sistemas numéricos 2-7 Byte, nibble y palabra 2-8 Códigos alfanuméricos 2-9 Método de paridad para la detección de errores 2-10 Aplicaciones
  • 53. ■ OBJETIVOS Al terminar este capítulo, usted podrá: ■ Convertir un número de un sistema numérico (decimal, binario, hexadecimal) a su equivalente en uno de los otros sistemas numéricos. ■ Citar las ventajas del sistema numérico hexadecimal. ■ Contar en hexadecimal. ■ Representar números decimales mediante el código BCD; y citar las ventajas y desventajas en cuanto al uso del código BCD. ■ Comprender la diferencia entre BCD y binario directo. ■ Entender el propósito de los códigos alfanuméricos tales como el código ASCII. ■ Explicar el método de paridad para la detección de errores. ■ Determinar el bit de paridad que se adjuntará a una cadena de datos digitales. ■ INTRODUCCIÓN El sistema numérico binario es el más importante en los sistemas digitales, aunque también hay otros que son importantes. El sistema decimal es importante ya que se utiliza de manera universal para representar cantidades fuera de un sistema digital. Esto significa que habrá situaciones en las que los valores decimales deban convertirse en valores binarios antes de introducirse en el sistema digital. Por ejemplo, cuando oprime un número decimal en su calculadora de bolsillo (o computadora), los circuitos en el interior de la máquina convierten el número decimal en un valor binario. De igual forma, habrá situaciones en las que los valores binarios en las salidas de un sistema digital deberán convertirse en valores decimales para presentarlos al mundo exterior. Por ejemplo, su calculadora (o computadora) utiliza números binarios para calcular la solución a un problema y después convierte los resultados en dígitos decimales antes de mostrarlos en pantalla. Como verá más adelante, no es fácil ver un número binario y convertirlo en su valor decimal equivalente. Resulta muy tedioso tener que introducir una larga secuencia de unos (1s) y ceros (0s) en un teclado numérico, o escribir números binarios extensos en papel. En especial es difícil tratar de comunicar una cantidad binaria cuando se habla con otra persona. El sistema numérico hexadecimal (base 16) se ha convertido la forma estándar de comunicar valores numéricos en los sistemas digitales. La gran ventaja es que los números hexadecimales pueden convertirse con facilidad a binario y viceversa. Se han ideado otros métodos para representar cantidades decimales con dígitos codificados en binario, los cuales no son en sí verdaderos sistemas numéricos, pero ofrecen la facilidad de conversión entre el código binario y el sistema numérico decimal. A esto se le conoce como decimal codificado en binario. Es muy importante que usted pueda interpretar los valores en cualquier sistema y realizar conversiones entre cualquiera de estas representaciones numéricas, ya 25
  • 54. 26 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS PREGUNTAS DE REPASO que las cantidades y los patrones de bits podrían estar representadas mediante cualquiera de estos métodos en cualquier sistema dado y en todo el material escrito de soporte para esos sistemas. También cubriremos otros códigos que utilizan 1s y 0s para representar cosas tales como caracteres alfanuméricos, ya que son muy comunes en los sistemas digitales. 2-1 CONVERSIONES DE BINARIO A DECIMAL Como se explicó en el capítulo 1, el sistema numérico binario es un sistema posicio- nal, en el cual cada dígito binario (bit) lleva un cierto peso basado en su posición relativa al LSB. Cualquier número binario puede convertirse en su equivalente deci- mal con sólo sumar todos los pesos de las diversas posiciones en el número binario que contengan 1. Para ilustrar esto, vamos a convertir el número 110112 a su equi- valente decimal. Hagamos ahora otro ejemplo con un mayor número de bits: Observe que el procedimiento es encontrar los pesos (es decir, potencias de 2) para cada posición de bit que contenga un 1, y después hay que sumarlos. Observe también que el MSB tiene un peso de 27 , aun y cuando es el octavo bit; esto se debe a que el LSB es el primer bit y tiene un peso de 20 . 1. Convierta el número 1000110110112 en su equivalente decimal. 2. ¿Cuál es el peso del MSB de un número de 16 bits? 2-2 CONVERSIONES DE DECIMAL A BINARIO Existen dos métodos para convertir un número entero decimal en su representación equivalente en el sistema binario. El primer método es el proceso inverso al que se describió en la sección 2-1. El número decimal tan sólo se expresa como una suma de potencias de 2, y después se escriben 1s y 0s en las posiciones de bit apropiadas. Para ilustrar lo anterior veamos lo siguiente: Observe que se coloca un 0 en las posiciones 21 y 24 , ya que todas las posiciones deben tomarse en cuenta.Veamos otro ejemplo: 1 1 0 1 12 24 ⫹ 23 ⫹ 0 ⫹ 21 ⫹ 20 ⫽ 16 ⫹ 8 ⫹ 2 ⫹ 1 ⫽ 2710 1 0 1 1 0 1 0 12 27 0 25 24 0 22 0 20 18110 4510 32 8 4 1 25 0 23 22 0 20 1 0 1 1 0 12 7610 64 8 4 26 0 0 23 22 0 0 1 0 0 1 1 0 02.
  • 55. División repetida El segundo método para convertir enteros decimales a binario es el que utiliza la división entre 2. Para la conversión, que se muestra a continuación para el número 2510, se requiere dividir en forma repetida el número decimal entre 2 y anotar el residuo después de cada división hasta que se obtenga un cociente de 0. El resul- tado binario se obtiene al escribir el primer residuo como el LSB y el último como el MSB. Este proceso, que se ilustra en el diagrama de flujo de la figura 2-1, puede usarse también para convertir de decimal a cualquier otro sistema numérico, como veremos más adelante. SECCIÓN 2-2/CONVERSIONES DE DECIMAL A BINARIO 27 2 2 5 residuo de 1 LSB 6 residuo de 0 6 2 3 residuo de 0 3 2 1 residuo de 1 1 2 0 residuo de 1 MSB 2510 1 1 0 0 12 12 2 12 ↑ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ↑ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ↑ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ↑ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ↑ ⏐ ⏐ ⏐ ⏐ ⎯⎯⎯⎯ ⎯ ⎯ ⎯ ↓ ⏐ ⎯⎯⎯⎯ ⎯ ↓ ⏐ ⎯⎯⎯⎯ ⎯ ↓ ⏐ ⎯⎯⎯⎯ ⎯ ↓ Reunir los residuos (R) para formar el número binario deseado, en donde el primer R es el LSB y el último R es el MSB ¿Es Q 0? Registrar cociente (Q) y residuo (R) Dividir entre 2 INICIO FIN NO SÍ FIGURA 2-1 Diagrama de flujo para el método de división repetida de la conversión de enteros decimales a binarios. Puede usarse el mismo proceso para convertir un entero decimal a cualquier otro sistema numérico.
  • 56. 28 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS Convierta el número 3710 en binario. Trate de resolverlo por su cuenta antes de ver la solución. Solución Por lo tanto, 3710 1001012. Alcance de conteo Recuerde que si utilizamos N bits, podemos contar hasta 2N números decimales dis- tintos que van desde 0 hasta 2N 1. Por ejemplo, para N 4 podemos contar desde 00002 hasta 11112, 010 hasta 1510, para un total de 16 números distintos. Aquí, el valor decimal más grande es 24 1 15, y hay 24 números distintos. Entonces, en general, podemos decir que: Si utilizamos N bits, podemos representar números decimales que van desde 0 hasta 2N 1, un total de 2N números distintos. (a) ¿Cuál es el intervalo de valores decimales que pueden representarse en ocho bits? (b) ¿Cuántos bits se necesitan para representar valores decimales que van desde 0 hasta 12,500? Solución (a) Aquí tenemos que N 8. Por ende, podemos representar números decimales desde 0 hasta 28 1 255. Para verificar lo anterior podemos comprobar si 111111112 se convierte en 25510. SUGERENCIA PARA EL USO DE CALCULADORA: Si utiliza una calculadora para realizar las divisiones entre 2, podrá saber si el re- siduo es 0 o 1 y si el resultado tiene o no una parte fraccionaria. Por ejemplo, 25/2 produciría 12.5. Como hay una parte fraccionaria (.5), el residuo es un 1. Si no hu- biera parte fraccionaria, como en 12/2 6, entonces el residuo sería 0. El siguiente ejemplo demuestra esto. EJEMPLO 2-1 3 2 7 5 ⎯→ residuo de 1 (LSB) 9.0 ⎯→ 0 9 2 4.5 ⎯→ 1 4 2 2.0 ⎯→ 0 2 2 1.0 ⎯→ 0 1 2 0.5 ⎯→ 1 (MSB) 18 2 18. ↑ EJEMPLO 2-2
  • 57. PREGUNTAS DE REPASO (b) Con 13 bits podemos contar desde el 0 decimal hasta 213 – 1 8191. Con 14 bits podemos contar desde 0 hasta 214 – 1 16,383. Es evidente que no son suficien- tes 13 bits, pero 14 bits nos llevarán más allá de 12,500. Por ende, el número de bits requerido es 14. 1. Convierta 8310 en binario usando ambos métodos. 2. Convierta 72910 en binario usando ambos métodos. Revise su respuesta y con- vierta el resultado de vuelta en decimal. 3. ¿Cuántos bits se requieren para contar hasta 1 millón decimal? 2-3 SISTEMA NUMÉRICO HEXADECIMAL El sistema numérico hexadecimal utiliza la base 16. En consecuencia, tiene 16 sím- bolos posibles para los dígitos. Utiliza los dígitos del 0 al 9 más las letras A, B, C, D, E y F como símbolos para los 16 dígitos. Las posiciones de los dígitos se ponderan como potencias de 16, como se muestra a continuación, en lugar de ponderarse como potencias de 10, como en el sistema decimal. La tabla 2-1 muestra las relaciones entre hexadecimal, decimal y binario. Observe que cada dígito hexadecimal representa un grupo de cuatro dígitos binarios. Es importante recordar que los dígitos hex (abreviación de “hexadecimal”) de la A a la F son equivalentes a los valores decimales del 10 al 15. Conversión de hexadecimal a decimal Es posible convertir un número hexadecimal a su equivalente decimal gracias a que la posición de cada dígito hexadecimal tiene un peso equivalente a una potencia 164 163 162 161 160 161 162 163 164 Punto hexadecimal TABLA 2-1 Hexadecimal Decimal Binario 0 0 0000 1 1 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001 A 10 1010 B 11 1011 C 12 1100 D 13 1101 E 14 1110 F 15 1111 SECCIÓN 2-3/SISTEMA NUMÉRICO HEXADECIMAL 29
  • 58. 30 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS de 16. El LSD tiene un peso de 160 1; la siguiente posición de dígito tiene un peso de 161 16; la siguiente tiene un peso de 162 256; y así sucesivamente. En el siguiente ejemplo demostraremos el proceso de conversión. Observe que en el segundo ejemplo, el valor 10 se sustituyó por A y el valor 15 por F en la conversión a decimal. Para practicar, verifique que 1BC216 sea igual a 710610. Conversión de decimal a hexadecimal Recuerde que para realizar la conversión de decimal a binario utilizamos la divi- sión repetida entre 2. De igual forma, la conversión de decimal a hexadecimal puede realizarse mediante el uso de la división repetida entre 16 (figura 2-1). El siguiente ejemplo contiene dos casos de esta conversión. (a) Convierta 42310 a hexadecimal. Solución (b) Convierta 21410 a hexadecimal. Solución SUGERENCIA PARA EL USO DE CALCULADORA: Puede usar la función yx de la calculadora para evaluar las potencias de 16. 2AF16 2 162 10 161 15 160 512 160 15 68710 35616 3 162 5 161 6 160 768 80 6 85410 EJEMPLO 2-3 4 1 2 6 3 residuo de 7 1 residuo de 10 1 1 6 0 residuo de 1 42310 1A716 26 16 26 ↑ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ↑ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ↑ ⏐ ↑ ↑ 2 1 1 6 4 13 residuo de 6 1 1 3 6 0 residuo de 13 21410 D616 ↑ ⏐ ⏐ ⏐ ⏐ ⏐ ↑ ⏐ ⏐ ↑
  • 59. Observe de nuevo que los residuos de los procesos de división forman los dígitos del número hexadecimal. Observe también que cualquier residuo mayor de 9 se representa por las letras de la A a la F. Conversión de hexadecimal a binario El sistema numérico hexadecimal se utiliza principalmente como método “abrevia- do” para representar números binarios. En realidad es muy sencillo convertir un número hexadecimal en binario. Cada dígito hexadecimal se convierte en su equiva- lente binario de cuatro bits (tabla 2-1). Esto se ilustra a continuación para el número 9F216. Para practicar, verifique que BA616 1011101001102. Conversión de binario a hexadecimal Esta conversión es sólo el inverso del proceso antes mencionado. El número binario se separa en grupos de cuatro bits, y cada grupo se convierte en su dígito hexadeci- mal equivalente. Se agregan ceros (los que se muestran ensombrecidos) según sea necesario para completar un grupo de cuatro bits en el MSD. Para hacer las conversiones entre hexadecimal y binario es necesario conocer los números binarios de cuatro bits (del 0000 hasta el 1111) y sus dígitos hexadeci- males correspondientes. Una vez que memorize, la conversión podrá realizarse con rapidez sin necesidad de hacer cálculos. Esto explica por qué el sistema hexadeci- mal es tan útil para representar números binarios extensos. Para practicar, verifique que 1010111112 15F16. Conteo en hexadecimal Al contar en hexadecimal, puede incrementarse (en 1) la posición de cada dígito, des- de el 0 hasta la F. Una vez que la posición de un dígito llega al valor F, se restablece SUGERENCIA PARA EL USO DE CALCULADORA: Si utiliza una calculadora para realizar las divisiones en el proceso de conversión, los resultados incluirán una fracción decimal en vez de un residuo. Para obtener el residuo multiplique la fracción por 16. En el ejemplo 2-3(b) la calculadora habría producido lo siguiente: El residuo se convierte en (0.375) 16 6. 214 16 = 13.375 9F216 9 F 2 ↓ ↓ ↓ 1 0 0 1 1 1 1 1 0 0 1 0 1001111100102 1 1 1 0 1 0 0 1 1 02 1 1 1 0 1 0 0 1 1 0 3 A 6 3A616 0 0 ⎫ ⎪ ⎬ ⎪ ⎭ ⎭ ⎭ ⎫ ⎪ ⎬ ⎪ ⎫ ⎪ ⎬ ⎪ SECCIÓN 2-3/SISTEMA NUMÉRICO HEXADECIMAL 31
  • 60. 32 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS a 0 y se incrementa la posición del siguiente dígito. En las siguientes secuencias de conteo hexadecimal se ilustra esto: (a) 38, 39, 3A, 3B, 3C, 3D, 3F, 40, 41, 42 (b) 6F8, 6F9, 6FA, 6FB, 6FC, 6FD, 6FE, 6FF, 700 Observe que cuando hay un 9 en la posición de un dígito, se convierte en A cuando se incrementa. Con N posiciones de dígitos hexadecimales podemos contar desde el 0 decimal hasta 16N 1, para un total de 16N valores distintos. Por ejemplo, con tres dígitos hexadecimales podemos contar desde 00016 hasta FFF16, 010 hasta 409510, para un total de 4096 163 valores distintos. Utilidad de los números hexadecimales Los números hexadecimales se utilizan a menudo en un sistema digital como una manera “abreviada” de representar cadenas de bits. Al trabajar con las computado- ras, es muy común usar cadenas de hasta 64 bits. Estas cadenas binarias no siempre representan un valor numérico, sino que, como veremos más adelante, pueden indi- car algún tipo de código que conlleve información no numérica. Al trabajar con un número extenso de bits es más conveniente y menos errático escribir los números binarios en hexadecimal, ya que, como hemos visto, es bastante sencillo realizar conversiones entre hexadecimal y binario, o viceversa. Para ilustrar la ventaja de la representación hexadecimal de una cadena binaria, suponga que tiene en su poder una impresión del contenido de 50 ubicaciones de memoria, cada una de las cua- les es un número de 16 bits y usted tiene que revisarlas comparándolas con una lista. ¿Qué preferiría revisar, 50 números como éste: 0110111001100111, o 50 núme- ros como éste: 6E67? ¿Y con cuál sería más probable equivocarse? No obstante, es importante tener en cuenta que todos los circuitos digitales trabajan en binario. Los números hexadecimales sólo se utilizan como una conveniencia para los humanos involucrados. Sería conveniente que memorizara el patrón binario de 4 bits para cada dígito hexadecimal. Sólo entonces se dará cuenta de la utilidad de esta herra- mienta en los sistemas digitales. Convierta el número 378 decimal en un número binario de 16 bits, primero convir- tiendo el número en hexadecimal. Solución Por lo tanto, 37810 17A16. Este valor hexadecimal puede convertirse con facilidad en el número binario 000101111010. Por último, podemos expresar el número 37810 como un número de 16 bits si le agregamos cuatro 0s a la izquierda: 37810 0000 0001 0111 10102 EJEMPLO 2-4 3 1 7 6 8 23 residuo de 10 A 2 1 3 6 1 residuo de 7 1 1 6 0 residuo de 1 ↑ ↑ 16 10
  • 61. PREGUNTAS DE REPASO Convierta el número B2F16 en decimal. Solución Resumen de las conversiones En estos momentos es probable que su cabeza esté dando vueltas a medida que trata de mantener el sentido con todas estas distintas conversiones de un sistema numérico a otro. Tal vez se haya dado cuenta que muchas de estas conversiones pueden realizarse en forma automática en su calculadora con sólo oprimir una tecla, pero es importante que las domine para que pueda comprender el proceso. Además, ¿qué pasaría si su calculadora se quedara sin energía en un momento crucial y no tuviera un reemplazo a la mano? El siguiente resumen le ayudará, pero nada se compara con la práctica continua. 1. Al convertir de binario (o hexadecimal) a decimal, utilice el método de tomar la suma ponderada de la posición de cada bit. 2. Al convertir de decimal a binario (o hexadecimal), utilice el método de la divi- sión repetida entre 2 (o 16) y recolectar los residuos (figura 2-1). 3. Al convertir de binario a hexadecimal, divida el número en grupos de cuatro bits y convierta cada grupo en el dígito hexadecimal correcto. 4. Al convertir de hexadecimal a binario, convierta cada dígito en su equivalente de cuatro bits. 1. Convierta el número 24CE16 en decimal. 2. Convierta el número 311710 en hexadecimal y después de hexadecimal a binario. 3. Convierta el número 10010111101101012 en hexadecimal. 4. Escriba los siguientes cuatro números en esta secuencia de conteo hexadecimal: E9A, E9B, E9C, E9D, _____, _____, _____, _____. 5. Convierta el número 352716 en binario. 6. ¿Qué rango de valores decimales puede representarse mediante un número hexa- decimal de cuatro dígitos? 2-4 CÓDIGO BCD Cuando se representan números, letras o palabras mediante un grupo especial de símbolos, decimos que están siendo codificados, y al grupo de símbolos se le llama código.Tal vez uno de los códigos más conocidos sea el Morse, en el cual una seria de puntos y rayas representan las letras del alfabeto. Hemos visto que cualquier número decimal puede representarse mediante un número binario equivalente. El grupo de 1s y 0s en el número binario puede consi- derarse como un código que representa el número decimal. Cuando un número deci- mal se representa por su número binario equivalente, le llamamos código binario directo. EJEMPLO 2-5 = 286310 = 11 * 256 + 2 * 16 + 15 B2F16 = B * 162 + 2 * 161 + F * 160 SECCIÓN 2-4/CÓDIGO BCD 33
  • 62. 34 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS Todos los sistemas digitales utilizan cierta forma de números binarios para su operación interna, pero el mundo externo es decimal por naturaleza. Esto significa que con frecuencia se realizan conversiones entre los sistemas decimal y binario. Hemos visto que las conversiones entre decimal y binario pueden volverse extensas y complicadas cuando se manejan números grandes. Por esta razón, en ciertas situa- ciones se utiliza un medio para codificar números decimales que combina algunas características tanto del sistema decimal como del sistema binario. Código decimal codificado en binario Si cada dígito de un número decimal se representa mediante su equivalente binario, el resultado es un código que se conoce como decimal codificado en binario (que en lo sucesivo abreviaremos como BCD). Como un dígito decimal puede llegar hasta el 9, se requieren cuatro bits para codificar cada dígito (el código binario para el 9 es 1001). Para ilustrar el código BCD, considere como ejemplo el número decimal 874. Cada dígito se cambia a su equivalente binario de la siguiente manera: Como segundo ejemplo, vamos a cambiar el número 943 a su representación en código BCD: Una vez más, cada dígito decimal se cambia a su equivalente binario directo. Observe que siempre se utilizan cuatro bits para cada dígito. Así, el código BCD representa cada dígito del número decimal mediante un número binario de cuatro bits. Es evidente que sólo se utilizan los números binarios de cuatro bits del 0000 al 1001. El código BCD no utiliza los números 1010, 1011, 1100, 1101, 1110 y 1111. En otras palabras, sólo se utilizan 10 de los 16 posibles grupos de código binario de cuatro bits. Si llega a aparecer uno de los números “pro- hibidos” de cuatro bits en una máquina que utilice el código BCD, por lo general, es una indicación de que se produjo un error. Convierta el número 0110100000111001 (BCD) en su equivalente decimal. Solución Divida el número BCD en grupos de cuatro bits y convierta cada grupo en decimal. Convierta el número BCD 011111000001 en su equivalente decimal. Solución 8 7 4 (decimal) ↓ ↓ ↓ 1000 0111 0100 (BCD) 9 4 3 (decimal) ↓ ↓ ↓ 1001 0100 0011 (BCD) 0110 1000 0011 1001 6 8 3 9 ⎫ ⎫ ⎫ ⎫ ⎫ ⎬ ⎫ ⎬ ⎫ ⎬ ⎫ ⎬ 0111 1100 0001 7 ↓ 1 El grupo con el código prohibido indica un error en el número BCD ⎫ ⎬ ⎫ ⎫ ⎫ ⎬ EJEMPLO 2-6 EJEMPLO 2-7
  • 63. PREGUNTAS DE REPASO Comparación entre BCD y binario Es importante entender que BCD no es otro sistema numérico como el binario, el decimal o el hexadecimal. De hecho, se utiliza el sistema decimal pero cada dígito está codificado en su equivalente binario. También es importante comprender que un número BCD no es lo mismo que un número binario directo. Un número binario directo toma el número decimal completo y lo representa en binario; el código BCD convierte cada dígito decimal en binario de manera individual. Para ilustrar esto, tome el número 137 y compare sus códigos binario directo y BCD: 13710 100010012 (binario) 13710 0001 0011 0111 (BCD) Para representar el 137, el código BCD requiere 12 bits, mientras que el código bina- rio directo sólo requiere de ocho bits. El código BCD requiere más bits que el binario directo para representar números decimales de más de un dígito, ya que no utiliza todos los grupos de cuatro bits posibles, como se indicó antes, y es, por lo tanto, algo ineficiente. La principal ventaja del código BCD es la relativa facilidad de convertir BCD en decimal y viceversa. Sólo necesitan recordarse los grupos de código de cuatro bits para los dígitos decimales del 0 al 9. Esta facilidad de conversión es muy importante desde el punto de vista del hardware, ya que en un sistema digital son los circuitos lógicos los que realizan las conversiones hacia y desde decimal. 1. Represente el valor decimal 178 mediante su equivalente binario directo. Luego codifique el mismo número decimal en BCD. 2. ¿Cuántos bits se requieren para representar un número decimal de ocho dígitos en BCD? 3. ¿Cuál es la ventaja de codificar un número decimal en BCD, en lugar de hacerlo en binario directo? ¿Cuál es la desventaja? 2-5 CÓDIGO GRAY Los sistemas digitales operan a velocidades muy elevadas y responden a los cambios que se producen en las entradas digitales. Al igual que en la vida real, cuando varias condiciones de entrada están cambiando al mismo tiempo la situación puede malin- terpretarse, con lo cual se puede llegar a producir una reacción errónea. Cuando se ven los bits en una secuencia de conteo binario, a menudo hay varios bits que deben cambiar estados al mismo tiempo. Por ejemplo, considere cuando el número binario de tres bits correspondiente al 3 decimal cambia a 4: los tres bits deben cambiar de estado. Para reducir la probabilidad de que un circuito digital malinterprete una entra- da cambiante, se desarrolló el código Gray como una manera de representar una secuencia de números. El aspecto único del código Gray es que, entre dos números sucesivos en la secuencia sólo un bit cambia. La tabla 2-2 muestra la traducción entre el valor del código binario de tres bits y el código Gray. Para convertir de bina- rio a Gray sólo hay que empezar en el bit más significativo y usarlo como el MSB de Gray, como muestra la figura 2-2(a). Después se compara el MSB binario con el siguiente bit binario (B1). Si son iguales, entonces G1 0; si son distintos, entonces G1 1. Para encontrar G0 se compara B1 con B0. SECCIÓN 2-5/CÓDIGO GRAY 35
  • 64. 36 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS La figura 2-2(b) muestra la conversión del código Gray a binario. Observe que el MSB en Gray siempre es el mismo que el MSB en binario. El siguiente bit binario se encuentra comparando el bit binario a la izquierda con el bit correspondiente en código Gray. Los bits similares producen un 0 y los bits distintos un 1. La aplicación más común del código Gray es en los codificadores de posición de eje, como muestra la figura 2-3. Estos dispositivos producen un valor binario que representa la posición de un eje mecánico giratorio. Un codificador de eje práctico utiliza mucho más de tres bits y divide la rotación en mucho más de ocho segmentos, por lo que puede detectar incrementos de rotación mucho más pequeños. TABLA 2-2 Equivalencia entre el código binario de tres bits y el código Gray. B2 B1 B0 G2 G1 G0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 0 1 1 0 1 0 1 0 0 1 1 0 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 0 0 B2 B1 B0 G2 G1 Gray (a) Binario MSB LSB G0 ¿Diferente? ¿Diferente? G2 G1 G0 B2 B1 Binario (b) Gray MSB LSB B0 ¿Diferente? ¿Diferente? FIGURA 2-2 Conversión de (a) binario a Gray y de (b) Gray a binario. G2 G1 G0 FIGURA 2-3 Un codificador de eje de ocho posiciones y tres bits.
  • 65. PREGUNTAS DE REPASO 1. Convierta el número 0101 (binario) en su equivalente en código de Gray. 2. Convierta el número 0101 (código de Gray) en su número binario equivalente. 2-6 INTEGRACIÓN DE LOS SISTEMAS NUMÉRICOS La tabla 2-3 muestra la representación de los números decimales del 1 al 15 en los sistemas numéricos binario y hexadecimal, y también en los códigos BCD y Gray. Examine esta tabla con cuidado y asegúrese de comprender de dónde proviene. Observe en especial cómo la representación en BCD siempre usa cuatro bits para cada dígito decimal. 2-7 BYTE, NIBBLE Y PALABRA Bytes La mayoría de las microcomputadoras maneja y almacena datos binarios e infor- mación en grupos de ocho bits, por lo que una cadena de ocho bits tiene un nombre especial: byte. Un byte consiste de ocho bits y puede representar cualquier tipo de datos o de información. Los siguientes ejemplos ilustrarán este punto. ¿Cuántos bytes hay en una cadena de 32 bits? Solución 32/8 4; por lo tanto, hay cuatro bytes en una cadena de 32 bits. TABLA 2-3 Decimal Binario Hexadecimal BCD GRAY 0 0 0 0000 0000 1 1 1 0001 0001 2 10 2 0010 0011 3 11 3 0011 0010 4 100 4 0100 0110 5 101 5 0101 0111 6 110 6 0110 0101 7 111 7 0111 0100 8 1000 8 1000 1100 9 1001 9 1001 1101 10 1010 A 0001 0000 1111 11 1011 B 0001 0001 1110 12 1100 C 0001 0010 1010 13 1101 D 0001 0011 1011 14 1110 E 0001 0100 1001 15 1111 F 0001 0101 1000 EJEMPLO 2-8 SECCIÓN 2-7/BYTE, NIBBLE Y PALABRA 37
  • 66. 38 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS ¿Cuál es el valor decimal más grande que puede representarse en binario si se uti- lizan dos bytes? Solución Dos bytes son 16 bits, por lo que el valor binario más grande será equivalente al número decimal 216 1 65,535. ¿Cuántos bytes se necesitan para representar el valor decimal 846,569 en BCD? Solución Cada dígito decimal se convierte en un código BCD de cuatro bits. Por ende, un número decimal de seis dígitos requiere 24 bits. Esos 24 bits corresponden a tres bytes. El diagrama para este caso se muestra a continuación: Nibbles A menudo los números binarios se descomponen en grupos de cuatro bits, como hemos visto con los códigos BCD y las conversiones a números hexadecimales. En los primeros días de los sistemas digitales surgió un término para describir un grupo de cuatro bits. Como abarca la mitad de un byte, se le denominó nibble. Los siguientes ejemplos ilustran el uso de este término. ¿Cuántos nibbles hay en un byte? Solución 2 ¿Cuál es el valor hexadecimal del nibble menos significativo del número binario 1001 0101? Solución 1001 0101 El nibble menos significativo es 0101 5. Palabras Los términos bit, nibble y byte representan un número fijo de dígitos binarios. A medida que los sistemas han ido creciendo a través de los años, también ha crecido EJEMPLO 2-9 EJEMPLO 2-10 8 4 6 5 6 9 (decimal) 1000 0100 0110 0101 0110 1001 (BCD) byte1 byte2 byte3 ⎫ ⎪ ⎫ ⎪ ⎫ ⎪ ⎫ ⎪ ⎫ ⎪ ⎫ ⎪ ⎬ ⎬ ⎬ EJEMPLO 2-11 EJEMPLO 2-12
  • 67. PREGUNTAS DE REPASO su capacidad (¿apetito?) de manejar datos binarios. Una palabra es un grupo de bits que representa una cierta unidad de información. El tamaño de la palabra depende del tamaño de la ruta de datos en el sistema que utiliza la información. El tamaño de palabra puede definirse como el número de bits en la palabra binaria con el que opera un sistema digital. Por ejemplo, tal vez la computadora en su horno de micro- ondas sólo pueda manejar un byte a la vez.Tiene un tamaño de palabra de ocho bits. Por otro lado, la computadora personal en su escritorio puede manejar ocho bytes a la vez, por lo que tiene un tamaño de palabra de 64 bits. 1. ¿Cuántos bytes se necesitan para representar el número 23510 en binario? 2. ¿Cuál es el valor decimal más grande que puede representarse en BCD, si se utilizan dos bytes? 3. ¿Cuántos dígitos hexadecimales puede representar un nibble? 4. ¿Cuántos nibbles hay en un dígito BCD? 2-8 CÓDIGOS ALFANUMÉRICOS Además de los datos numéricos, una computadora debe ser capaz de manejar infor- mación no numérica. En otras palabras, una computadora debe reconocer códigos que representen letras del alfabeto, signos de puntuación y otros caracteres especia- les, además de los números. A estos códigos se les denomina códigos alfanuméricos. Un código alfanumérico completo debe incluir las 26 letras minúsculas, las 26 letras mayúsculas, los 10 dígitos numéricos, 7 signos de puntuación y de 20 a 40 caracteres adicionales, como , /, #, %, *, y así sucesivamente. Podemos decir que un código alfanumérico representa a todos los caracteres y funciones que se encuentran en el teclado de una computadora. Código ASCII El código alfanumérico más utilizado es el Código estándar estadounidense para el intercambio de información (ASCII). Este código es de siete bits, por lo cual tiene 27 128 código posibles. Más que suficiente para representar todos los caracteres estándar del teclado, así como las funciones de control tales como retorno de carro (RETURN) y avance de línea (LINEFEED). La tabla 2-4 muestra un listado del códi- go ASCII estándar de siete bits. La tabla proporciona los equivalentes en hexadeci- mal y decimal. Para obtener el código binario de siete bits para cada carácter hay que convertir el valor hexadecimal en binario. Use la tabla 2-4 para encontrar el código ASCII de siete bits para el carácter de barra diagonal inversa (). Solución El valor hexadecimal que aparece en la tabla 2-4 es 5C. Al traducir cada dígito hexa- decimal en código binario de cuatro bits produce el valor 0101 1100. Los siete bits de menor peso representan el código ASCII para , o 1011100. EJEMPLO 2-13 SECCIÓN 2-8/CÓDIGOS ALFANUMÉRICOS 39
  • 68. 40 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS TABLA 2-4 Código ASCII estándar. Caracter HEX Decimal Caracter HEX Decimal Caracter HEX Decimal Caracter HEX Decimal NUL (nulo) 0 0 Espacio 20 32 @ 40 64 . 60 96 Inicio del encabezado 1 1 ! 21 33 A 41 65 a 61 97 Inicio del texto 2 2 “ 22 34 B 42 66 b 62 98 Fin del texto 3 3 # 23 35 C 43 67 c 63 99 Fin de la transmisión 4 4 $ 24 36 D 44 68 d 64 100 Consulta 5 5 % 25 37 E 45 69 e 65 101 Reconocimiento 6 6 26 38 F 46 70 f 66 102 Timbre 7 7 ` 27 39 G 47 71 g 67 103 Retroceso 8 8 ( 28 40 H 48 72 h 68 104 Tabulación horizontal 9 9 ) 29 41 I 49 73 i 69 105 Avance de línea A 10 * 2A 42 J 4A 74 j 6A 106 Tabulación vertical B 11 + 2B 43 K 4B 75 k 6B 107 Avance de hoja de impresión C 12 , 2C 44 L 4C 76 l 6C 108 Retorno de carro D 13 - 2D 45 M 4D 77 m 6D 109 Mayúsculas desactivadas E 14 . 2E 46 N 4E 78 n 6E 110 Mayúsculas activadas F 15 / 2F 47 O 4F 79 o 6F 111 Escape de enlace de datos 10 16 0 30 48 P 50 80 p 70 112 Control directo 1 11 17 1 31 49 Q 51 81 q 71 113 Control directo 2 12 18 2 32 50 R 52 82 r 72 114 Control directo 3 13 19 3 33 51 S 53 83 s 73 115 Control directo 4 14 20 4 34 52 T 54 84 t 74 116 ACK (reconocimiento) negativo 15 21 5 35 53 U 55 85 u 75 117 Sincronía en estado inactivo 16 22 6 36 54 V 56 86 v 76 118 Fin de Bloque de Transmisión 17 23 7 37 55 W 57 87 w 77 119 Cancelar 18 24 8 38 56 X 58 88 x 78 120 Fin de medio 19 25 9 39 57 Y 59 89 y 79 121 Sustituir 1A 26 : 3A 58 Z 5A 90 z 7A 122 Escape 1B 27 ; 3B 59 [ 5B 91 { 7B 123 Separador de formas 1C 28 3C 60 5C 92 | 7C 124 Separador de grupos 1D 29 = 3D 61 ] 5D 93 } 7D 125 Separador de registros 1E 30 3E 62 ^ 5E 94 ~ 7E 126 Separador de unidades 1F 31 ? 3F 63 5F 95 Suprimir 7F 127
  • 69. PREGUNTAS DE REPASO El código ASCII se utiliza para la transferencia de información alfanumérica entre una computadora y los dispositivos externos, tales como una impresora u otra computadora. La computadora también utiliza ASCII en forma interna para alma- cenar la información que escribe un operador en el teclado. El siguiente ejemplo ilustra lo anterior. Un operador está escribiendo un programa en lenguaje C en el teclado de cierta microcomputadora, la cual convierte cada pulsación de tecla en su código ASCII, y lo almacena como un byte en memoria. Determine las cadenas binarias que se intro- ducirán en memoria cuando el operador escriba la siguiente instrucción en C: if (x3) Solución Localice cada carácter (incluyendo el espacio) en la tabla 2-4 y escriba su código ASCII. i 69 0110 1001 f 66 0110 0110 espacio 20 0010 0000 ( 28 0010 1000 x 78 0111 1000 3E 0011 1110 3 33 0011 0011 ) 29 0010 1001 Observe que se agregó un 0 al bit más a la izquierda de cada código ASCII, ya que los códigos deben almacenarse como bytes (ocho bits). A este proceso de agregar un bit adicional se le denomina rellenar con 0s. 1. Codifique el siguiente mensaje en código ASCII utilizando la representación hexadecimal: “COSTO $72.” 2. El siguiente mensaje en código ASCII con bits de relleno se almacena en ubica- ciones contiguas de memoria en una computadora: 01010011 01010100 01001111 01010000 ¿Cuál es el mensaje? 2-9 MÉTODO DE PARIDAD PARA LA DETECCIÓN DE ERRORES El movimiento de datos binarios y códigos de un lugar a otro es la operación más frecuente que se realiza con los sistemas digitales.A continuación se listan solo unos cuantos ejemplos: ■ La transmisión de voz digitalizada a través de un enlace de microondas. ■ El almacenamiento de datos y la recuperación de los mismos desde dispositivos de memoria externos, como el disco magnético y el disco óptico. ■ La transmisión de datos digitales desde una computadora hacia otra computado- ra remota, a través de líneas telefónicas (mediante el uso de un módem). Ésta es una de las principales formas de enviar y recibir información en Internet. Siempre que se transmite información desde un dispositivo (el transmisor) has- ta otro (el receptor), existe la posibilidad de que puedan producirse errores tales EJEMPLO 2-14 SECCIÓN 2-9/MÉTODO DE PARIDAD PARA LA DETECCIÓN DE ERRORES 41
  • 70. 42 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS que causen que el receptor no reciba la información idéntica tal y como la envió el transmisor. La principal causa de errores de transmisión es el ruido eléctrico, el cual consiste en fluctuaciones espurias en el voltaje o en la corriente, dichas señales de ruido están presentes en todos los sistemas electrónicos en diversos grados. La figu- ra 2-4 es una ilustración simplificada de un tipo de error de transmisión. El transmisor envía una señal digital en serie que está relativamente libre de ruido, a través de una línea de señal hacia un receptor. No obstante, para cuando la señal llega al receptor contiene un cierto grado de ruido acumulado a la señal original. En ocasiones, el ruido es tan grande en amplitud que altera el nivel lógico de la señal, como se ve en el punto x. Cuando esto ocurre, el receptor puede inter- pretar en forma incorrecta ese bit como un 1 lógico, que no corresponde con lo que el transmisor ha enviado. La mayoría del equipo digital moderno está diseñado relativamente libre de errores, y la probabilidad de que ocurran errores como el que se muestra en la figura 2-4 es muy baja. No obstante, debemos considerar que los sistemas digitales fre- cuentemente transmiten miles, incluso millones de bits por segundo, por lo que incluso hasta una relación muy baja de ocurrencia de errores puede producir un error ocasional que podría llegar a ser molesto, si no es que desastroso. Por esta razón, muchos sistemas digitales emplean algún método para la detección (y en ocasiones corrección) de errores. Uno de los esquemas más simples y utilizados para este fin es el método de paridad. Bit de paridad Un bit de paridad es un bit que se agrega al grupo de bits del código que se está transfiriendo de un lugar a otro. El bit de paridad se hace 0 o 1, dependiendo del número de 1s que contenga el grupo de bits del código. Se utilizan dos métodos dis- tintos. En el método de paridad par, el valor del bit de paridad se elije de manera que el número total de 1s en el grupo de bits del código, incluyendo el bit de paridad, sea par. Por ejemplo, suponga que el grupo es 1000011. Éste es el carácter “C” en ASCII. El código tiene tres 1s. Por ende, agregaremos un bit de paridad de 1 para que el número total de 1s sea par. El nuevo código incluyendo el bit de paridad sería entonces: Si el grupo de bits del código contiene un número par de 1s para empezar, el bit de paridad recibe un valor de 0. Por ejemplo, si el código fuera 1000001 (el código ASCII para la “A”), el bit de paridad asignado sería 0 y el nuevo código incluyendo el bit de paridad sería 01000001. El método de paridad impar se utiliza de la misma forma, sólo que el bit de pari- dad se elije de manera que el número total de 1s, incluyendo el bit de paridad, sea impar. Por ejemplo, para el código 1000001, el bit de paridad asignado sería un 1. Para el código 1000011, el bit de paridad sería un 0. FIGURA 2-4 Ejemplo del ruido que produce un error en la transmisión de datos digitales. Transmisor Receptor x 1 0 0 0 0 1 1 ↑ 1 bit de paridad agregado* * El bit de paridad puede colocarse en cualquier extremo del grupo de código, pero, por lo general, se coloca a la izquierda del MSB.
  • 71. Ya sea que se utilice la paridad par o impar, el bit de paridad se convierte en parte de la palabra de código. Por ejemplo, al agregar un bit de paridad al código ASCII de siete bits se produce un código de ocho bits. Por lo tanto, el bit de paridad se trata justo igual que cualquier otro bit en el código. El bit de paridad se transmite para detectar cualquier error de un solo bit que ocurra durante la transmisión de un código de un lugar a otro. Por ejemplo, supon- ga que el carácter “A” se va a transmitir y se va a utilizar paridad impar. El código transmitido sería Cuando el circuito receptor reciba el código, verificará que éste contenga un núme- ro impar de 1s, incluyendo el bit de paridad. De ser así, el receptor supondrá que el código se ha recibido de manera correcta. Ahora suponga que debido a cierto ruido o falla el receptor en realidad recibe el siguiente código: El receptor descubrirá que este código tiene un número par de 1s. Esto indica al receptor que debe haber un error en el código, ya que se presume que el transmisor y el receptor han acordado utilizar paridad impar. Sin embargo, no hay forma de que el receptor sepa cuál bit tiene error, ya que no sabe cuál se supone que va a ser el código. Podemos asumir que este método de paridad no funciona si dos bits tienen error, ya que dos errores no cambiarían la característica de “par” o “impar” en el número de 1s en el código. En la práctica, el método de paridad se utiliza sólo en situaciones en las que la probabilidad de un solo error es muy baja y la probabilidad de doble error es prácticamente cero. Cuando se utiliza el método de paridad, el transmisor y el receptor deben acor- dar antes de la transmisión si se va a utilizar la paridad par o impar. No hay ventaja de un método sobre el otro, aunque parece que la paridad par se utiliza más a menudo. El transmisor debe agregar el bit de paridad apropiado a cada unidad de información que transmita. Por ejemplo, si el transmisor está enviando datos codi- ficados en ASCII, deberá agregar el bit de paridad a cada grupo de código ASCII de siete bits. Cuando el receptor examine los datos que reciba del transmisor, compro- bará cada grupo de código para ver si el número total de 1s, incluyendo el bit de paridad, es consistente con el tipo de paridad acordado. A esto se le conoce común- mente como comprobar la paridad de los datos. En caso de que detecte un error, el receptor puede enviar un mensaje al transmisor para pedirle que vuelva a transmi- tir el último conjunto de datos. El procedimiento a seguir cuando se detecta un error depende de cada sistema. Es común que las computadoras se comuniquen con otros equipos remotos a través de líneas telefónicas. Así es como se lleva a cabo la comunicación por acceso telefó- nico a través de Internet. Cuando una computadora transmite un mensaje a otra, esa información, por lo general, se codifica en ASCII. ¿Cuáles serían las cadenas de bits que transmitiría una computadora para enviar el mensaje HOLA, utilizando ASCII con paridad par? Solución Primero, vea los códigos ASCII para cada carácter del mensaje. Después, para cada código cuente el número de 1s. Si es un número par añada un 0 como el MSB, o un 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 EJEMPLO 2-15 SECCIÓN 2-9/MÉTODO DE PARIDAD PARA LA DETECCIÓN DE ERRORES 43
  • 72. 44 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS PREGUNTAS DE REPASO si es un número impar. Por ende, los códigos de ocho bits (bytes) resultantes tendrán un número par de 1s (incluyendo la paridad). bits de paridad agregados T H 0 1 0 0 1 0 0 0 O 1 1 0 0 0 1 0 1 L 1 1 0 0 1 1 0 0 A 0 1 0 0 0 0 0 1 1. Agregue un bit de paridad impar al código ASCII para el símbolo $ y exprese el resultado en hexadecimal. 2. Adjunte un bit de paridad par al código BCD para el 69 decimal. 3. ¿Por qué el método de paridad no puede detectar un doble error en los datos transmitidos? 2-10 APLICACIONES A continuación se presentan algunas aplicaciones que servirán como repaso de algu- nos conceptos que vistos en este capítulo. El objetivo de estas aplicaciones es que usted se dé una idea de cómo se utilizan los diversos sistemas y códigos numéricos en el mundo digital. En los problemas al final del capítulo presentaremos más apli- caciones. Un CD-ROM ordinario puede almacenar 650 megabytes de datos digitales. Como mega 220 , ¿cuántos bits de datos puede almacenar un CD-ROM? Solución Recuerde que un byte tiene ocho bits. Por lo tanto, 650 megabytes son 650 220 8 5,452,595,200 bits. Para poder programar la mayoría de microcontroladores, las instrucciones binarias se almacenan en un archivo de una computadora personal, de una manera especial que se conoce como Formato Hexadecimal Intel. La información hexadecimal se codifica en caracteres ASCII, de manera que pueda mostrarse con facilidad en la pantalla de una PC, imprimirse o transmitirse de una manera sencilla, carácter por carácter, a través de un puerto COM serial de la PC. A continuación se muestra una línea de un archivo en Formato Hexadecimal Intel: :10002000F7CFFFCF1FEF2FEF2A95F1F71A95D9F7EA El primer carácter enviado es el código ASCII correspondiente a los dos puntos, seguido de un 1. A cada uno se le adjunta un bit de paridad como el bit más signi- ficativo. Un instrumento de prueba captura el patrón binario de bits a medida que pasa a través del cable hacia el microcontrolador. (a) ¿Qué apariencia debe tener el patrón binario de bits incluyendo la paridad? (MSB-LSB.) APLICACIÓN 2-1 APLICACIÓN 2-2
  • 73. (b) El valor 10, que va después de los dos puntos, representa en número hexadeci- mal el total de bytes que se van a cargar en la memoria del microcontrolador. ¿Cuál es el número decimal de bytes que se van a cargar? (c) El número 0020 es un valor hexadecimal de cuatro dígitos que representa la dirección en la que se va a almacenar el primer byte. ¿Cuál es la mayor direc- ción posible? ¿Cuántos bits se requerirían para representar esta dirección? (d) El valor del primer byte de datos es F7. ¿Cuál es el valor (en binario) del nibble menos significativo de este byte? FFFF 1111 1111 1111 1111 16 bits Solución (a) Los códigos ASCII son 3A (para el :) y 31 (para el 1) 00111010 10110001 bit de paridad par (b) 10 hex 1 16 0 1 16 bytes decimales. (c) FFFF es el mayor valor posible. Cada dígito hexadecimal es de 4 bits, por lo que necesitamos 16 bits. (d) El nibble menos significativo (4 bits) se representa mediante el 7 hexadecimal. En binario sería 0111. Una pequeña computadora de control de procesos utiliza códigos hexadecimales para representar sus direcciones de 16 bits de memoria. (a) ¿Cuántos dígitos hexadecimales se requieren? (b) ¿Cuál es el intervalo de direcciones en hexadecimal? (c) ¿Cuántas localidades de memoria hay? Solución (a) Como 4 bits se convierten en un dígito hexadecimal, se necesitan 16/4 4 dígi- tos hexadecimales. (b) El intervalo binario es de 00000000000000002 a 11111111111111112. En hexade- cimal sería de 000016 a FFFF16. (c) Con 4 dígitos hexadecimales, el número total de direcciones es 164 65,536. En un sistema basado en microcontrolador, los números se introducen en BCD pero se almacenan en binario directo. Como programador, usted debe decidir si necesita una ubicación de almacenamiento de un byte o de dos bytes. (a) ¿Cuántos bytes necesita si el sistema recibe una entrada decimal de dos dígi- tos? (b) ¿Qué pasaría si tuviera que introducir tres dígitos? Solución (a) Con dos dígitos puede introducir valores hasta el 99 (1001 1001BCD). En binario este valor es 01100011, el cual cabe en una ubicación de memoria de ocho bits. También puede utilizar un solo bit. (b) Tres dígitos pueden representar hasta 999 (1001 1001 1001). En binario este valor es 1111100111 (10 bits). Por lo tanto, no puede usar un solo byte; necesita dos bytes. APLICACIÓN 2-3 APLICACIÓN 2-4 SECCIÓN 2-10/APLICACIONES 45
  • 74. 46 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS Cuando hay que transmitir caracteres ASCII entre dos sistemas independientes (como una computadora y un módem), debe haber una manera de indicar al receptor cuándo va a llegar un nuevo carácter. A menudo también se tiene la necesidad de detectar errores en la transmisión. El método de transferencia se llama comunica- ción asíncrona de datos. El estado normal de inactividad de la línea de transmisión es un 1 lógico. Cuando el transmisor envía un carácter ASCII, debe “encapsularse” para que el receptor sepa en dónde comienzan y terminan los datos. El primer bit debe ser siempre un bit de inicio (0 lógico). A continuación se envía el código ASCII, en donde el LSB va primero y el MSB al último. Después del MSB se adjunta un bit de paridad para comprobar errores en la transmisión. Para terminar la transmisión se envía un bit de paro (1 lógico). En la figura 2-5 se muestra una transmisión asíncro- na ordinaria del código ASCII de siete bits para el signo # (23 Hex) con paridad par. RESUMEN 1. El sistema numérico hexadecimal se utiliza en los sistemas y las computadoras digitales como una manera eficiente de representar cantidades binarias. 2. En las conversiones entre hexadecimal y binario, cada dígito hexadecimal corresponde a cuatro bits. 3. El método de división repetida se utiliza para convertir números decimales en binario o hexadecimal. 4. Mediante el uso de un número binario de N bits podemos representar valores decimales desde el 0 hasta 2N – 1. 5. Para formar el código BCD de un número decimal se convierte cada dígito del número decimal en su equivalente binario de cuatro bits. 6. El código Gray define una secuencia de patrones de bits, en los que sólo un bit cambia entre patrones sucesivos en la secuencia. 7. Un byte es una cadena de ocho bits. Un nibble es de cuatro bits. El tamaño de una palabra depende del sistema. 8. Un código alfanumérico utiliza grupos de bits para representar a todos los carac- teres y funciones que forman parte del teclado ordinario de una computadora. El código ASCII es el código alfanumérico más utilizado. 9. En el método de paridad para la detección de errores se adjunta un bit de pari- dad especial a cada grupo de bits que se transmite. APLICACIÓN 2-5 I N I C I O D 1 D 0 L S B D 2 D 3 D 5 D 4 D 6 M S B P a r i d a d P A R O inactiva inactiva FIGURA 2-5 Datos seriales asíncronos con paridad par.
  • 75. TÉRMINOS IMPORTANTES PROBLEMAS SECCIONES 2-1 Y 2-2 2-1. Convierta los siguientes números binarios en decimales. (a)* 10110 (d) 01101011 (g)* 1111010111 (b) 10010101 (e)* 11111111 (h) 11011111 (c)* 100100001001 (f) 01101111 2-2. Convierta los siguientes valores decimales en binarios. (a)* 37 (d) 1000 (g)* 205 (b) 13 (e)* 77 (h) 2133 (c)* 189 (f) 390 (i)* 511 2-3. ¿Cuál es el valor decimal más grande que puede representarse mediante (a)* un número binario de ocho bits? (b) un número de 16 bits? SECCIÓN 2-4 2-4. Convierta cada número hexadecimal en su equivalente decimal. (a)* 743 (d) 2000 (g)* 7FF (b) 36 (e)* 165 (h) 1204 (c)* 37FD (f) ABCD 2-5. Convierta cada uno de los siguientes números decimales en hexadecima- les. (a)* 59 (d) 1024 (g)* 65,536 (b) 372 (e)* 771 (h) 255 (c)* 919 (f) 2313 2-6. Convierta cada uno de los valores hexadecimales del problema 2-4 en núme- ros binarios. 2-7. Convierta los números binarios del problema 2-1 en hexadecimales. 2-8. Liste los números hexadecimales en secuencia, desde 19516 hasta 28016. 2-9. Cuando se va a convertir un número decimal grande en binario, algunas veces es más fácil convertirlo primero en hexadecimal y después en binario. Pruebe este procedimiento para el número 213310 y compárelo con el proce- dimiento usado en el problema 2-2(h). 2-10. ¿Cuántos dígitos hexadecimales se requieren para representar los números decimales del 0 hasta el 20,000? 2-11. Convierta los siguientes valores hexadecimales en decimales. (a)* 92 (d) ABCD (g)* 2C0 (b) 1A6 (e)* 000F (h) 7FF (c)* 37FD (f) 55 bit de paridad byte códigos alfanuméricos código binario directo código decimal codificado en binario (BCD) Código estándar estadounidense para el intercambio de información (ASCII) código Gray método de paridad nibble palabra sistema numérico hexadecimal tamaño de palabra * Encontrará las respuestas a los problemas marcados con un asterisco al nal del libro. PROBLEMAS 47
  • 76. 48 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS 2-12. Convierta los siguientes valores decimales en hexadecimales. (a)* 75 (d) 24 (g)* 25,619 (b) 314 (e)* 7245 (h) 4095 (c)* 2048 (f) 498 2-13. Tome cada número binario de cuatro bits en el orden en el que están escri- tos y escriba el dígito hexadecimal equivalente sin realizar ningún cálculo manual o mediante la calculadora. (a) 1001 (e) 1111 (i) 1011 (m) 0001 (b) 1101 (f) 0010 (j) 1100 (n) 0101 (c) 1000 (g) 1010 (k) 0011 (o) 0111 (d) 0000 (h) 1001 (l) 0100 (p) 0110 2-14. Tome cada dígito hexadecimal y escriba su valor binario de cuatro bits sin realizar ningún cálculo manual ni mediante la calculadora. (a) 6 (e) 4 (i) 9 (m) 0 (b) 7 (f) 3 (j) A (n) 8 (c) 5 (g) C (k) 2 (o) D (d) 1 (h) B (l) F (p) 9 2-15.* Convierta los números binarios del problema 2-1 en hexadecimales. 2-16.* Convierta los valores hexadecimales del problema 2-11 en binarios. 2-17.* Liste los números hexadecimales en secuencia, desde 280 hasta 2A0. 2-18. ¿Cuántos dígitos hexadecimales se requieren para representar números deci- males hasta 1 millón? SECCIÓN 2-5 2-19. Codifique los siguientes números decimales en BCD. (a)* 47 (d) 6727 (g)* 89,627 (b) 962 (e)* 13 (h) 1024 (c)* 187 (f) 529 2-20. ¿Cuántos bits se requieren para representar los números decimales en el intervalo de 0 a 999 si se utiliza: (a) código binario directo, y (b) código BCD? 2-21. Los siguientes números están en BCD. Conviértalos en decimales. (a)* 1001011101010010 (d) 0111011101110101 (b) 000110000100 (e)* 010010010010 (c)* 011010010101 (f) 010101010101 SECCIÓN 2-7 2-22.* (a) ¿Cuántos bits hay en ocho bytes? (b) ¿Cuál es el número hexadecimal más grande que puede representarse en cuatro bytes? (c) ¿Cuál es el valor decimal codificado en BCD más grande que puede representarse en tres bytes? 2-23. (a) Consulte la tabla 2-4. ¿Cuál es el nibble más significativo del código ASCII para la letra X? (b) ¿Cuántos nibbles pueden almacenarse en una palabra de 16 bits? (c) ¿Cuántos bytes se requieren para formar una palabra de 24 bits?
  • 77. SECCIONES 2-8 Y 2-9 2-24. Represente la instrucción “X 3 Y” en código ASCII. Adjunte un bit de paridad impar. 2-25.* Adjunte un bit de paridad par a cada uno de los códigos ASCII del problema 2-24, y muestre los resultados en hexadecimal. 2-26. Los siguientes bytes (mostrados en hexadecimal) representan el nombre de una persona según como se almacenaría en la memoria de una computado- ra. Cada byte es código ASCII con relleno. Determine el nombre de cada persona. (a)* 42 45 4E 20 53 4D 49 54 48 (b) 4A 6F 65 20 47 72 65 65 6E 2-27. Convierta los siguientes números decimales en código BCD y después adjun- te un bit de paridad impar. (a)* 74 (c)* 8884 (e)* 165 (b) 38 (d) 275 (f) 9201 2-28.* En cierto sistema digital, los números decimales del 000 al 999 se repre- sentan en código BCD. También se incluye un bit de paridad impar al final de cada grupo. Examine cada uno de los códigos que se muestran a conti- nuación y suponga que cada uno acaba de transferirse de un lugar a otro. Algunos de los grupos contienen errores. Suponga que no se han producido más de dos errores en cada grupo. Determine cuáles de los siguientes casos tienen un solo error y cuáles tienen en definitiva un error doble. (Sugerencia: recuerde que éste es código BCD). (a) 1001010110000 bit de paridad (b) 0100011101100 (c) 0111110000011 (d) 1000011000101 2-29. Suponga que el receptor recibió los siguientes datos del transmisor del ejem- plo 2-16: 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 ¿Qué errores puede determinar el receptor en los datos que recibió? PREGUNTAS DE PRÁCTICA 2-30.* Realice cada una de las siguientes conversiones. Si desea puede probar varios métodos en algunas de ellas para ver con cuál se adapta mejor. Por ejemplo, una conversión de binario a decimal puede realizarse en forma directa, o también mediante una conversión de binario a hexadecimal segui- da de una conversión de hexadecimal a decimal. (a) 141710 ______2 (b) 25510 ______2 (c) 110100012 ______10 (d) 11101010001001112 ______10 PROBLEMAS 49
  • 78. 50 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS (e) 249710 ______16 (f) 51110 ______ (BCD) (g) 23516 ______10 (h) 431610 ______16 (i) 7A916 ______10 (j) 3E1C16 ______10 (k) 160010 ______16 (l) 38,18710 ______16 (m) 86510 ______ (BCD) (n) 100101000111 (BCD) ______10 (o) 46516 ______2 (p) B3416 ______2 (q) 01110100 (BCD) ______2 (r) 1110102 ______ (BCD) 2-31.* Represente el valor decimal 37 en cada una de las siguientes formas. (a) Binario directo. (b) BCD. (c) Hexadecimal. (d) ASCII (es decir, trate cada dígito como un carácter). 2-32.* Llene los espacios en blanco con la palabra o palabras correctas. (a) Para convertir de decimal a _________ se requiere de la división repeti- da entre 16. (b) Para convertir de decimal a binario se requiere de la división repetida entre __________. (c) En el código BCD, cada ______ se convierte en su equivalente binario de cuatro bits. (d) El código ______ tiene la característica de que sólo cambia un bit al avanzar de un paso al siguiente. (e) Un transmisor adjunta un _______ a un código para permitir que el receptor detecte _________. (f) El código _______ es código alfanumérico más común que se utiliza en los sistemas computacionales. (g) ________ se utiliza a menudo como una manera conveniente de repre- sentar números binarios extensos. (h) Una cadena de ocho bits se llama _________. 2-33. Escriba el número binario que se produce cuando cada uno de los siguientes números se incrementa en uno. (a)* 0111 (b) 010011 (c) 1011 2-34. Decremente cada uno de los siguientes números binarios. (a)* 1110 (b) 101000 (c) 1110 2-35. Escriba el número que se produce cuando se incrementa cada una de las siguientes cifras. (a)* 777916 (c)* 0FFF16 (e)* 9FF16 (b) 999916 (d) 200016 (f) 100A16 2-36.* Repita el problema 2-35 para la operación de decremento.
  • 79. EJERCICIOS AVANZADOS 2-37.* En una microcomputadora, las direcciones de las localidades de memoria son números binarios que identifican cada uno de los circuitos de memoria en donde se almacena un byte. El número de bits que forman cada dirección depende de cuántas localidades de memoria haya. Como el número de bits puede ser muy extenso, a menudo las direcciones se especifican en hexade- cimal, en lugar de binario. (a) Si una microcomputadora utiliza una dirección de 20 bits, ¿cuántas loca- lidades de memoria distintas hay? (b) ¿Cuántos dígitos hexadecimales se necesitan para representar la direc- ción de una localidad de memoria? (c) ¿Cuál es la dirección hexadecimal de la localidad de memoria número 256? (Nota: la primera dirección siempre es 0.) 2-38. En un CD de audio, la señal de voltaje de audio, por lo general, se muestrea aproximadamente 44,000 veces por segundo, y el valor de cada muestra se graba en la superficie del CD como número binario. En otras palabras, cada número binario que se graba representa un punto de voltaje individual en la forma de onda de la señal de audio. (a) Si los números binarios tienen una longitud de seis bits, ¿cuántos valo- res de voltaje distintos pueden representarse mediante un solo número binario? Repita para ocho y diez bits. (b) Si se utilizan números de diez bits, ¿cuántos bits se grabarán en el CD en un segundo? (c) Si un CD puede almacenar, por lo general, 5 mil millones de bits, cuántos segundos de audio pueden grabarse si se utilizan diez bits? 2-39.* Una cámara digital en blanco y negro coloca una rejilla fina sobre una ima- gen para después medir y registrar un número binario que representa el nivel de gris que ve en cada celda de la rejilla. Por ejemplo, si se utilizan números de cuatro bits el valor de negro se establece en 0000 y el valor de blanco en 1111, y cualquier nivel de gris puede tener algún valor entre 0000 y 1111. Si se utilizan números de seis bits, el negro es 000000 y el blanco es 111111, y todos los grises se encuentran entre estos dos valores. Suponga que queremos diferenciar entre 254 niveles de gris dentro de cada una de las celdas de la rejilla. ¿Cuántos bits necesitaríamos usar para repre- sentar estos niveles de gris? 2-40. Una cámara digital de 3 megapixeles almacena un número de ocho bits para el brillo de cada uno de los colores primarios (rojo, verde, azul) que se encuen- tran en cada elemento de imagen (pixel). Si se almacenan todos los bits, sin compresión de datos, ¿cuántas imágenes pueden almacenarse en una tarjeta de memoria de 128 Megabytes? (Nota: en los sistemas digitales, Mega signifi- ca 220 ). 2-41. Construya una tabla que muestre las representaciones en binario, hexadeci- mal y BCD de todos los números decimales del 0 al 15. Compare sus resulta- dos con la tabla 2-3. RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES SECCIÓN 2-1 1. 2267 2. 32768 SECCIÓN 2-2 1. 1010011 2. 1011011001 3. 20 bits RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES 51
  • 80. 52 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS SECCIÓN 2-3 1. 9422 2. C2D; 110000101101 3. 97B5 4. E9E, E9F, EA0, EA1 5. 11010100100111 6. 0 a 65,535 SECCIÓN 2-4 1. 1011001092; 000101111000 (BCD) 2. 32 3.Ventaja: facilidad de conver- sión. Desventaja: el código BCD requiere más bits. SECCIÓN 2-5 1. 0111 2. 0110 SECCIÓN 2-7 1. Uno 2. 9999 3. Uno 4. Uno SECCIÓN 2-8 1. 43, 4F, 53, 54, 20, 3D, 20, 24, 37, 32 2. STOP SECCIÓN 2-9 1. A4 2. 001101001 3. Dos errores en los datos no cambiarían la caracte- rística impar o par del número de 1s en los datos.
  • 82. 3-1 Constantes y variables booleanas 3-2 Tablas de verdad 3-3 Operación OR con compuertas OR 3-4 Operación AND con compuertas AND 3-5 Operación NOT 3-6 Descripción de circuitos lógicos en forma algebraica 3-7 Evaluación de las salidas de circuitos lógicos 3-8 Implementación de circuitos a partir de expresiones booleanas 3-9 Compuertas NOR y NAND 3-10 Teoremas booleanos 3-11 Teoremas de DeMorgan ■ CONTENIDO D ES CRIPCIÓN DE LOS CIR CUITOS LÓGICOS C A P Í T U L O 3 3-12 Universalidad de las compuertas NAND y NOR 3-13 Representaciones alternas de compuertas lógicas 3-14 Cuál representación de compuerta se debe usar 3-15 Símbolos lógicos del estándar IEEE/ANSI 3-16 Resumen de los métodos para describir circuitos lógicos 3-17 Comparación entre lenguajes de descripción y lenguajes de programación 3-18 Implementación de circuitos lógicos con PLDs 3-19 Formato y sintaxis del HDL 3-20 Señales intermedias
  • 83. ■ OBJETIVOS Al terminar este capítulo, usted podrá: ■ Realizar las tres operaciones lógicas básicas. ■ Describir la operación y construir las tablas de verdad para las compuertas AND, NAND, OR y NOR, y el circuito NOT (INVERSOR). ■ Dibujar diagramas de tiempos para las diversas compuertas de los circuitos lógicos. ■ Escribir la expresión booleana para las compuertas lógicas y combinaciones de compuertas lógicas. ■ Implementar circuitos lógicos mediante el uso de compuertas AND, OR y NOT. ■ Apreciar el potencial del álgebra booleana para simplificar circuitos lógicos complejos. ■ Usar los teoremas de DeMorgan para simplificar las expresiones lógicas. ■ Usar cualquiera de las compuertas universales (NAND y NOR) para implementar un circuito representado por una expresión booleana. ■ Explicar las ventajas de construir un diagrama de circuitos lógicos mediante el uso de los símbolos alternos de las compuertas, en comparación con los símbolos estándar de las compuertas lógicas. ■ Describir el concepto de las señales lógicas, activa en BAJO y activa en ALTO. ■ Dibujar e interpretar los símbolos de las compuertas lógicas del estándar IEEE/ANSI. ■ Usar varios métodos para describir la operación de los circuitos lógicos. ■ Interpretar circuitos simples definidos mediante un lenguaje de descripción de hardware (HDL). ■ Explicar la diferencia entre un HDL y un lenguaje de programación de computadoras. ■ Crear un archivo de HDL para una compuerta lógica simple. ■ Crear un archivo de HDL para circuitos combinacionales con variables intermedias. ■ INTRODUCCIÓN En los capítulos 1 y 2 presentamos los conceptos de niveles lógicos y circuitos lógicos. En circuitos lógicos sólo existen dos posibles condiciones para cualquier entrada o salida: verdadero o falso. El sistema numérico binario utiliza sólo dos dígitos: 1 y 0, por lo que es perfecto para representar relaciones lógicas. Los circuitos lógicos digitales utilizan intervalos de voltaje predefinidos para representar estos estados binarios. Si utilizamos estos conceptos podemos crear circuitos compuestos de algo más que arena de playa procesada y alambre, con lo cual se pueden realizar decisiones lógicas consistentes e inteligentes. Es muy importante que tengamos un método para describir las decisiones lógicas que realizan estos circuitos. En otras palabras, debemos describir la forma en que operan. En este capítulo estudiaremos muchas formas para describir su operación. 55
  • 84. 56 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS Cada uno de estos métodos de descripción es importante, ya que todos los métodos aparecen muchas veces en la literatura técnica y la documentación de sistemas, y se utilizan en conjunto con las herramientas modernas de diseño y desarrollo. La vida está llena de ejemplos de casos que se encuentran en un estado o en otro. Por ejemplo, una criatura puede estar viva o muerta, una luz puede estar encendida o apagada, una puerta puede estar cerrada o abierta, y puede estar lloviendo o no. En 1854, un matemático llamado George boole escribió el libro Una investigación sobre las leyes del pensamiento, en donde describía la manera en que realizamos decisiones lógicas con base en circunstancias verdaderas o falsas. Los métodos que describió se conocen actualmente como lógica booleana, y el sistema de usar símbolos y operadores para describir estas decisiones se llama álgebra booleana. De la misma forma que utilizamos símbolos tales como x y y para representar valores numéricos desconocidos en el álgebra tradicional, el álgebra booleana utiliza símbolos para representar una expresión lógica que tiene uno de dos valores posibles: verdadero o falso. La expresión lógica podría ser puerta está cerrada, botón está oprimido, o nivel de combustible está bajo. Es muy tedioso escribir estas expresiones, por lo que se acostumbra sustituirlas por símbolos tales como A, B y C. El propósito principal de estas expresiones lógicas es describir la relación entre la salida de un circuito lógico (la decisión) y sus entradas (las condiciones). En este capítulo estudiaremos los circuitos lógicos más básicos (compuertas lógicas), que son los elementos a partir de los cuales se construyen todos los demás circuitos lógicos y sistemas digitales.Veremos cómo la operación de las distintas compuertas lógicas y los circuitos más complejos formados por combinaciones de compuertas lógicas pueden describirse y analizarse mediante el uso del álgebra booleana. También veremos un breve adelanto sobre cómo puede usarse dicha álgebra para simplificar una expresión booleana de un circuito determinado, de manera que éste pueda reconstruirse con menos compuertas lógicas y/o menos conexiones. En el capítulo 4 veremos mucho más acerca de la simplificación de circuitos. El álgebra booleana no sólo se utiliza como herramienta para analizar y simplificar sistemas lógicos. También puede usarse como herramienta para crear un circuito lógico con una relación de entrada/salida deseada. Por lo general, este proceso se conoce como síntesis de circuitos lógicos, en vez de análisis. Se han utilizado otras técnicas en el análisis, síntesis y documentación de sistemas y circuitos lógicos, como tablas de verdad, símbolos esquemáticos, diagramas de tiempos y (por último, pero no menos importante) el lenguaje. Para categorizar estos métodos, podríamos decir que el álgebra booleana es una herramienta matemática, las tablas de verdad son herramientas para organización de datos, los símbolos esquemáticos son herramientas de representación gráfica, los diagramas de tiempos son herramientas para graficar la respuesta y el lenguaje es la herramienta universal de descripción. Actualmente puede usarse cualquiera de estas herramientas para proporcionar la entrada a una computadora. Éstas pueden utilizarse para simplificar y traducir entre estas diversas formas de descripción y, en última instancia, proveer una salida en la forma necesaria para implementar un sistema digital. Para aprovechar los poderosos beneficios del software computacional, primero debemos comprender por completo las formas aceptables para describir estos sistemas en términos que la computadora pueda entender. En este capítulo veremos las bases para un estudio más detallado de estas herramientas vitales para la síntesis y el análisis de los sistemas digitales. Es evidente que las herramientas que describiremos aquí son invaluables para describir, analizar, diseñar e implementar circuitos digitales. El estudiante que tenga la expectativa de trabajar en el campo digital deberá esforzarse mucho por comprender y familiarizarse con el álgebra booleana (aunque no lo crea, es mucho más sencilla que el álgebra convencional) y con todas las demás herramientas. Resuelva todos los ejemplos, ejercicios y problemas, incluso los que no le asigne su instructor. Cuando acabe con todos ellos, haga los suyos. Bien valdrá la pena el tiempo que invierta en ello, ya que usted verá cómo mejoran sus habilidades y aumenta su confianza.
  • 85. 3-1 CONSTANTESY VARIABLES BOOLEANAS El álgebra booleana difiere en gran medida del álgebra ordinaria, ya que a las cons- tantes y variables booleanas sólo se les permite tener dos valores posibles: 0 y 1. Una variable booleana es una cantidad que puede ser (en distintas ocasiones) igual a 0 o a 1. Las variables booleanas se utilizan a menudo para representar el nivel de voltaje presente en un alambre o en las terminales de entrada/salida de un circuito. Por ejemplo, en cierto sistema digital el valor booleano 0 podría asignarse a cual- quier voltaje en el intervalo de 0 a 0.8 V, mientras que el valor booleano 1 podría asignarse a cualquier voltaje entre 2 y 5 V.* Por lo tanto, el 0 y el 1 booleanos no representan números reales, sino el estado de una variable de voltaje, o lo que se conoce como su nivel lógico. Se dice que un voltaje en un circuito digital está en el nivel 0 lógico o en el nivel 1 lógico, depen- diendo de su valor numérico actual. En la lógica digital se utilizan otros términos más como sinónimos de 0 y 1. La tabla 3-1 muestra algunos de los más comunes. La mayor parte del tiempo utilizaremos las designaciones 0/1 y BAJO/ALTO. SECCIÓN 3-2/TABLAS DE VERDAD 57 Como dijimos en la introducción, el álgebra booleana es el medio para expresar la relación entre las entradas y las salidas de un circuito lógico. Las entradas se con- sideran variables lógicas cuyos niveles lógicos en cualquier momento determinan los niveles de salida. En todo el trabajo que veremos utilizaremos símbolos de letras para representar variables lógicas. Por ejemplo, la letra A podría representar una cierta entrada o salida de un circuito digital, y en un determinado momento debe- mos tener A 0 o A 1; alguno de los dos estados. Como sólo dos valores son posibles, en realidad es muy sencillo trabajar con el álgebra booleana en comparación con el álgebra ordinaria. En el álgebra booleana no hay fracciones, decimales, números negativos, raíces cuadradas, raíces cúbicas, logaritmos, números imaginarios, etc. De hecho, en el álgebra booleana sólo hay tres operaciones básicas: OR, AND y NOT. A estas operaciones básicas se les conoce como operaciones lógicas. Los circuitos digitales, llamados compuertas lógicas, pueden construirse a partir de diodos, transis- tores y resistencias conectados de manera que la salida del circuito sea el resultado de una operación lógica básica (OR, AND, NOT) que se lleva a cabo con las entradas. Utilizaremos primero el álgebra booleana para describir y analizar las compuertas lógicas básicas, y después para analizar y diseñar combinaciones de compuertas lógi- cas conectadas para formar circuitos lógicos. 3-2 TABLAS DE VERDAD Una tabla de verdad es una herramienta para describir la forma en que la salida de un circuito lógico depende de los niveles lógicos presentes en las entradas del circuito. La figura 3-1(a) muestra una tabla de verdad para un tipo de circuito lógico de dos entradas. La tabla lista todas las posibles combinaciones de niveles lógicos TABLA 3-1 0 lógico 1 lógico Falso Verdadero Apagado Encendido Bajo Alto No Sí Interruptor abierto Interruptor cerrado * Los voltajes entre 0.8 y 2 V están indenidos (no son 0 ni 1) y bajo circunstancias normales no deben presentarse.
  • 86. 58 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS PREGUNTAS DE REPASO Entradas Salida A B (a) (b) (c) ? x A 0 0 1 1 B 0 1 0 1 x 1 0 1 0 A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 x 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 x 0 1 1 0 0 0 0 1 presentes en las entradas A y B, junto con el correspondiente nivel en la salida x. La primera entrada en la tabla muestra que cuando A y B se encuentran en el nivel 0, la salida x se encuentra en el nivel 1 o, de manera equivalente, en el estado 1. La segunda entrada muestra que cuando la entrada B se cambia al estado 1, de manera que A 0 y B 1, la salida x se vuelve un 0. De manera similar, la tabla muestra qué ocurre con el estado de salida para cualquier conjunto de condiciones de entrada. Las figuras 3-1(b) y (c) muestran ejemplos de tablas de verdad para circuitos lógicos de tres y cuatro entradas. De nuevo, cada tabla enlista todas las posibles combinaciones de niveles lógicos de las entradas a la izquierda, con el nivel lógico resultante para la salida x a la derecha. Desde luego que los valores reales para x dependerán del tipo de circuito lógico. Observe que hay 4 combinaciones para la tabla de verdad de dos entradas, 8 combinaciones para una tabla de verdad de tres entradas y 16 combinaciones para la tabla de verdad de cuatro entradas. El número de combinaciones de entrada será igual a 2N para una tabla de verdad con N entradas. Observe también que la lista de todas las posibles combinaciones de entrada va de acuerdo con la secuencia de conteo binario, por lo que es fácil anotar todas las combinaciones sin que falte una. 1. ¿Cuál es el estado de salida del circuito de cuatro entradas representado en la figura 3-1(c) cuando todas las entradas excepto B son 1? 2. Repita la pregunta 1 para las siguientes condiciones de entrada: A 1, B 0, C 1, D 0. 3. ¿Cuántas combinaciones se necesitan en la tabla para un circuito de cinco entradas? 3-3 OPERACIÓN OR CON COMPUERTAS OR La operación OR (O) es la primera de las tres operaciones booleanas básicas que estudiaremos. El horno de cocina es un buen ejemplo. La luz dentro del horno debe encenderse si el interruptor de la luz del horno está encendido “O” si la puerta está abierta. La letra A podría usarse para representar la condición interruptor de la luz del horno encendido y B podría representar la condición puerta abierta. La letra x podría representar la condición luz encendida. La tabla de verdad de la figura 3-2(a) muestra lo que ocurre cuando se combinan dos entradas lógicas (A y B) mediante el uso de la operación OR para producir la salida x. La tabla muestras que x es un 1 lógico para cada una de las combinaciones de niveles de entrada en donde una o más entradas sea 1. El único caso en el que x es un 0 es cuando ambas entradas son 0. FIGURA 3-1 Ejemplo de tablas de verdad para circuitos de (a) dos entradas, (b) tres entradas y (c) cuatro entradas.
  • 87. La expresión booleana para la operación OR es x A B En esta expresión, el signo no indica la suma ordinaria; indica la operación OR. Esta operación es similar a la suma ordinaria, excepto para el caso en el que tanto A como B son 1; la operación OR produce 1 1 1, no 1 1 2. En el álgebra boolea- na 1 es el valor más alto, por lo que nunca tendremos un resultado mayor que 1. Lo mismo aplica cuando se combinan tres entradas mediante el uso de la operación OR. Aquí tenemos que x A B C. Si consideramos el caso en el que las tres entradas son 1, tenemos x 1 1 1 1 La expresión x A B se lee como “x es igual a A OR B”, lo cual significa que x será 1 cuando A o B o ambas sean 1. De igual forma, la expresión x A B C se lee como “x es igual a A OR B OR C”, lo cual significa que x será 1 cuando A o B o C o cualquier combinación de ellas sean 1. Para describir este circuito en el idioma español podríamos decir que x es verdadera (1) CUANDO A es verdadera (1) OR B es verdadera (1) OR C es verdadera (1). Compuerta OR En los circuitos digitales, una compuerta OR* es un circuito que tiene dos o más entradas y cuya salida es igual a la combinación OR de las entradas. La figura 3-2(b) muestra el símbolo lógico para una compuerta OR de dos entradas. Las entradas A y B son niveles lógicos de voltaje y la salida x es un nivel lógico de voltaje cuyo valor es el resultado de la operación OR sobre A y B; es decir, x A B. En otras palabras, la compuerta OR opera de manera que su salida esté en ALTO, 1 lógico, si cualquiera de las entradas A o B o ambas se encuentran en el nivel 1 lógico. La salida de la com- puerta OR estará en BAJO, 0 lógico, sólo si todas sus entradas están en 0 lógico. Esta misma idea puede extenderse a más de dos entradas. La figura 3-3 muestra una compuerta OR de tres entradas y su tabla de verdad. Si examinamos esta tabla de verdad podremos ver de nuevo que la salida será 1 para cada caso en el que una o más entradas sean 1. Este principio general es el mismo para las compuertas OR con cualquier número de entradas. * El término compuerta proviene de la operación de inhibición/habilitación que se describe en el capítulo 4. SECCIÓN 3-3/OPERACIÓN OR CON COMPUERTAS OR 59 A 0 0 1 1 B 0 1 0 1 x = A + B 0 1 1 1 x = A + B (a) A B Compuerta OR (b) OR FIGURA 3-2 (a) Tabla de verdad que define la operación OR; (b) símbolo del circuito para una compuerta OR de dos entradas. x = A + B + C A C B A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 x = A + B + C 0 1 1 1 1 1 1 1 FIGURA 3-3 Símbolo y tabla de verdad para una compuerta OR de tres entradas.
  • 88. 60 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS Si utilizamos el lenguaje del álgebra booleana, la salida x podemos expresarla como x A B C, en donde hay que enfatizar otra vez que el símbolo repre- senta la operación OR. Así, la salida de cualquier compuerta OR puede expresarse como la combinación OR de sus diversas entradas. Pondremos esto en práctica a la hora de analizar los circuitos lógicos. Resumen de la operación OR Los puntos importantes que debemos recordar en relación con la operación OR y las compuertas OR son: 1. La operación OR produce un resultado (salida) de 1 siempre que cualquiera de sus entradas sea 1. En cualquier otro caso, la salida será 0. 2. Una compuerta OR es un circuito lógico que realiza una operación OR sobre las entradas del circuito. 3. La expresión x A B se lee como “x es igual a A OR B”. En muchos sistemas de control industriales se requiere activar una función de salida cada vez que se activa una de varias entradas. Por ejemplo, en un proceso químico tal vez sea conveniente que se active una alarma cada vez que la temperatura del proce- so exceda un valor máximo O cada vez que la presión pase cierto límite. La figura 3-4 es un diagrama de bloques del caso descrito. El circuito transductor de temperatura produce un voltaje de salida proporcional a la temperatura del proceso. Este voltaje VT se compara con un voltaje de referencia de temperatura VTR en un circuito com- parador de voltajes. Por lo general, la salida del comparador TH es de un voltaje bajo (0 lógico) pero cambia a un voltaje alto (1 lógico) cuando VT excede a VTR, lo cual indica que la temperatura del proceso es demasiado alta. Para la medición de pre- sión se utiliza un arreglo similar, de manera que su salida asociada del comparador PH cambie de BAJO a ALTO cuando la presión es demasiado alta. Dado que se quiere que la alarma se active cuando la temperatura o la presión estén demasiado altas, es indudable que las dos salidas del comparador pueden alimen- tarse a una compuerta OR. Por ende, la salida de la compuerta OR cambia a ALTO (1) para cualquiera de las dos condiciones de alarma activándola. Es obvio que esta misma idea puede extenderse a situaciones con más de dos variables del proceso. EJEMPLO 3-1 FIGURA 3-4 Ejemplo del uso de una compuerta OR en un sistema de alarma. Transductor de presión Proceso químico Comparador Alarma VT VTR VP VPR Comparador TH PH Transductor de temperatura
  • 89. Determine la salida de la compuerta OR de la figura 3-5. Las entradas A y B de la compuerta OR están variando de acuerdo con los diagramas de tiempos que se muestran. Por ejemplo, A empieza en nivel BAJO en el tiempo t0, cambia a ALTO en t1, regresa a BAJO en t3 y así sucesivamente. Solución La salida de la compuerta OR estará en ALTO siempre que cualquiera de las entra- das esté en ALTO. Entre los tiempos t0 y t1 ambas entradas están en BAJO, por lo cual SALIDA BAJO. En t1 la entrada A cambia a ALTO mientras que la entrada B permanece en BAJO. Esto hace que SALIDA cambie a ALTO en t1 y permanezca así hasta t4, ya que durante este intervalo una o ambas entradas están en ALTO. En t4 la entrada B cambia de 1 a 0, por lo que ambas entradas están en BAJO haciendo que SALIDA cambie nuevamente a BAJO. En t5 A cambia a ALTO, con lo cual SALIDA regresa a BAJO y permanece así durante el resto del tiempo mostrado. Para la situación que se describe en la figura 3-6, determine la forma de onda en la salida de la compuerta OR. Solución Las tres entradas A, B y C de la compuerta OR están variando, según se muestra en sus diagramas de tiempos. La salida de la compuerta OR se determina concluyendo EJEMPLO 3-2 Salida=A + B A t0 t1 t2 t3 t4 t5 t6 t7 Tiempo A B 1 0 Salida 1 0 0 1 B FIGURA 3-5 Ejemplo 3-2. EJEMPLO 3-3A FIGURA 3-6 Ejemplos 3-3A y B. A + B + C A C B Tiempo SAL A B C 0 SAL 1 0 1 0 1 0 1 t1 SECCIÓN 3-3/OPERACIÓN OR CON COMPUERTAS OR 61
  • 90. 62 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS PREGUNTAS DE REPASO que estará en ALTO cada vez que al menos una de las tres entradas esté en un nivel ALTO. Si utilizamos este razonamiento, la forma de onda de la salida de la compuer- ta OR es como se muestra en la figura. Se debe poner especial atención a lo que ocurre en el tiempo t1. El diagrama muestra que, en ese instante, la entrada A está cambiando de ALTO a BAJO mientras que la entrada B está cambiando de BAJO a ALTO. Como estas entradas están realizando sus transiciones casi al mismo tiempo, y como estas transiciones tardan cierta cantidad de tiempo, hay un pequeño inter- valo durante el cual estas entradas de la compuerta OR se encuentran en la región indefinida entre 0 y 1. Cuando esto ocurre, la salida de la compuerta OR también adquiere un valor en este intervalo, como se puede ver por la deformación o pico en la forma de onda de salida en t1. La ocurrencia de esta deformación y su tamaño (amplitud y anchura) dependen de la velocidad con la que ocurren las transiciones de entrada. ¿Qué le pasaría a la deformación en la salida de la figura 3-6 si la entrada C se asen- tara en el estado ALTO mientras que A y B estuvieran cambiando en el tiempo t1? Solución Con la entrada C en nivel ALTO en t1 la salida de la compuerta OR permanecerá en ese estado sin importar lo que ocurra en las otras entradas, ya que cualquier entrada en ALTO mantendrá la salida de la compuerta OR en ALTO. Por lo tanto, la deforma- ción no aparecerá en la salida. 1. ¿Cuál es el único conjunto de condiciones de entrada que producirá una salida en BAJO para cualquier compuerta OR? 2. Escriba la expresión booleana para una compuerta OR de seis entradas. 3. Si la entrada A en la figura 3-6 se mantiene de manera permanente en el nivel 1, ¿cuál será la forma de onda de salida? 3-4 OPERACIÓN AND CON COMPUERTAS AND La operación AND es la segunda operación booleana básica. Como ejemplo del uso de la lógica AND, considere una secadora de ropa ordinaria: seca ropa (calienta y gira) sólo si el temporizador está por encima de cero “Y” la puerta está cerrada.Vamos a asignar A para representar cuando el temporizador está activado, B para representar cuando la puerta está cerrada y x puede representar cuando el calentador y el motor están encendidos. La tabla de verdad de la figura 3-7(a) muestra lo que ocurre cuando dos entradas lógicas A y B se combinan mediante el uso de la operación AND para producir la salida x. La tabla muestra que x es un 1 lógico sólo cuando A y B están en el nivel 1 lógico. Para cualquier caso en el que una de las entradas sea 0, la salida será 0. La expresión booleana para la operación AND es x A B En esta expresión, el signo indica la operación AND booleana y no la operación de multiplicación. No obstante, la operación AND sobre variables booleanas opera de la misma forma que la multiplicación ordinaria según nos muestra el análisis de la tabla de verdad, por lo que podemos considerarlas como iguales. Esta característica puede ser útil al evaluar expresiones lógicas que contengan operaciones AND. EJEMPLO 3-3B
  • 91. La expresión x A B se lee como “x es igual a A AND B”, lo cual significa que x será 1 sólo cuando A y B sean 1. Por lo general, se omite el signo de manera que la expresión se vuelve x AB. Para el caso en el que se aplica la operación AND con tres entradas, tenemos que x A B C ABC. Esto se lee como “x es igual a A AND B AND C”, lo cual significa que x será 1 sólo cuando A y B y C sean todas 1. Compuerta AND La figura 3-7(b) muestra el símbolo lógico para una compuerta AND de dos entradas. La salida de la compuerta AND es igual al producto AND de las entradas lógicas; es decir, x AB. En otras palabras, la compuerta AND es un circuito que opera de manera que su salida esté en ALTO sólo cuando todas sus entradas se encuentren en ALTO. Para todos los demás casos, la salida de la compuerta AND estará en BAJO. Esta misma operación es característica de compuertas AND con más de dos entradas. Por ejemplo, la figura 3-8 muestra una compuerta AND de tres entradas y su tabla de verdad correspondiente. Una vez más, observe que la salida de la com- puerta es 1 sólo para el caso en el que A B C 1. La expresión para la salida es x ABC. Para una compuerta AND de cuatro entradas, la salida es x ABCD, y así sucesivamente. Observe la diferencia entre los símbolos para la compuerta AND y la compuer- ta OR. Cada vez que vea el símbolo AND en el diagrama de un circuito lógico, le indicará que la salida estará en ALTO sólo cuando todas las entradas estén en ALTO. Cada vez que vea el símbolo OR, le indicará que la salida estará en ALTO cuando cualquiera de sus entradas esté en ALTO. Resumen de la operación AND 1. La operación AND se realiza de la misma forma que la multiplicación ordinaria de 1s y 0s. 2. Una compuerta AND es un circuito lógico que realiza la operación AND sobre las entradas. 3. La salida de una compuerta AND será 1 sólo para el caso en el que todas las entradas sean 1; para todos los demás casos la salida será 0. 4. La expresión x AB se lee como “x es igual a A AND B”. A 0 0 1 1 B 0 1 0 1 x = A • B 0 0 0 1 A B (a) (b) x = AB AND Compuerta AND FIGURA 3-7 (a) Tabla de verdad para la operación AND; (b) símbolo de la compuerta AND. SECCIÓN 3-4/OPERACIÓN AND CON COMPUERTAS AND 63 FIGURA 3-8 Tabla de verdad y símbolo para una compuerta AND de tres entradas. A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 x = ABC 0 0 0 0 0 0 0 1 A C x = ABC B
  • 92. 64 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS Determine la salida x de la compuerta AND en la figura 3-9, para las formas de onda de entrada dadas. Solución La salida de una compuerta AND se determina con base en la consideración de que estará en ALTO sólo cuando todas las entradas se encuentren en ALTO al mis- mo tiempo. Para las formas de onda de entrada dadas, la condición se cumple sólo durante los intervalos t2 t3 y t6t7. En todos los demás intervalos, sólo una o más de las entradas son 0, con lo cual se produce una salida en BAJO. Observe que los cambios en el nivel de entrada que se producen mientras la otra entrada está en BAJO no tienen efecto sobre la salida. Determine la forma de onda de salida para la compuerta AND que se muestra en la figura 3-10. Solución La salida x será 1 sólo cuando A y B se encuentren en ALTO al mismo tiempo. Si nos basamos en este hecho podemos determinar la forma de onda de x como se muestra en la figura. Observe que la forma de onda de x es 0 siempre que B es 0, sin importar el nivel de la señal en A. Observe también que siempre que B es 1, la forma de onda de x es igual que la de A. En consecuencia podemos considerar la entrada B como una entra- da de control cuyo nivel lógico determina si la forma de onda de A pasa o no hacia la salida x. En esta situación, la compuerta AND se utiliza como un circuito inhibidor. Podemos decir que B 0 es la condición de inhibición que produce una salida de 0. Por otro lado, B 1 es la condición de habilitación, la cual permite que A llegue a la salida. Esta operación de inhibición es una aplicación importante de las compuertas AND, que veremos más adelante con mayor detalle. ¿Cómo se modifica la forma de onda de la salida x en la figura 3-10 si la entrada B se mantiene en el nivel 0? Solución Con B en BAJO, la salida x también permanecerá en BAJO. Esto puede razonarse de dos maneras distintas. Primero, con B 0 tenemos que x AB A0 0, ya que EJEMPLO 3-4 FIGURA 3-9 EJEMPLO 3-4. A B x = AB t0 t1 t2 t3 0 1 0 1 0 1 A B x t4 t5 t6 t7 EJEMPLO 3-5A A B A B x x FIGURA 3-10 Ejemplos 3-5A y 3-5B. EJEMPLO 3-5B
  • 93. PREGUNTAS DE REPASO cualquier cosa que se multiplique por 0 (AND) será igual a 0. Otra manera de ver esto es que una compuerta AND requiere que todas las entradas estén en ALTO para que la salida esté en ALTO, y esto no puede ocurrir si B se mantiene en BAJO. 1. ¿Cuál es la única combinación de entrada que producirá un nivel ALTO en la salida de una compuerta AND de cinco entradas? 2. ¿Qué nivel lógico debe aplicarse a la segunda entrada de una compuerta AND de dos entradas si se desea inhibir la señal lógica en la primera entrada para evitar que llegue a la salida? 3. Verdadero o falso: la salida de una compuerta AND siempre será distinta de la salida de una compuerta OR para las mismas condiciones de entrada. 3-5 OPERACIÓN NOT La operación NOT es distinta de las operaciones OR y AND, ya que puede realizarse sobre una sola variable de entrada. Por ejemplo, si la variable A está sujeta a la ope- ración NOT, el resultado x puede expresarse así: x A En donde la barra superior representa la operación NOT. Esta expresión se lee como “x es igual a NOT A” o “x es igual al inverso de A” o “x es igual al complemento de A”. Cada una de estas expresiones es de uso común y todas indican que el valor lógico de x A es el opuesto del valor lógico de A. La tabla de verdad de la figura 3-11(a) aclara esto para los dos casos en que A 0 y A 1. Esto es, 0 1 porque 0 no es 1 y 1 0 porque 1 no es 0 La operación NOT también se conoce como inversión o complementación, términos que utilizaremos de manera indistinta en este libro. Aunque siempre utilizaremos el indicador de barra superior para representar la inversión, es importante mencionar que el símbolo primo () es otro indicador para la inversión. Esto es, A A Ambos deben reconocerse como símbolos que indican la operación de inversión. FIGURA 3-11 (a) Tabla de verdad; (b) símbolo para el INVERSOR (compuerta NOT); (c) ejemplos de formas de onda. A 0 1 x = A 1 0 1 0 A 1 0 x (c) La presencia de un círculo pequeño siempre denota la inversión (b) A x = A (a) NOT NOT SECCIÓN 3-5/OPERACIÓN NOT 65
  • 94. 66 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS PREGUNTAS DE REPASO Circuito NOT (INVERSOR) La figura 3-11(b) muestra el símbolo para un circuito NOT, al cual se le conoce más comúnmente como INVERSOR. Este circuito siempre tiene una sola entrada y su nivel lógico de salida siempre es opuesto al nivel lógico de esta entrada. La figura 3-11(c) muestra la forma en que el INVERSOR afecta a una señal de entrada. Invier- te (complementa) la señal de entrada en todos los puntos de la forma de onda, por lo que siempre que la entrada 0, la salida 1, y viceversa. La figura 3-12 muestra una aplicación ordinaria de la compuerta NOT. El botón está cableado para producir un 1 lógico (verdadero) cuando se oprime. Algunas veces es conveniente saber si el botón no está oprimido, por lo que este circuito proporciona una expresión que es verdadera cuando el botón no está oprimido. Resumen de las operaciones booleanas Las reglas para las operaciones OR, AND y NOT pueden resumirse de la siguiente manera: OR AND NOT 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 1 1 1 1. La salida del INVERSOR de la figura 3-11 está conectada a la entrada de un segundo INVERSOR. Determine el nivel de salida del segundo INVERSOR para cada nivel de entrada A. 2. La salida de la compuerta AND de la figura 3-7 está conectada a la entrada de un INVERSOR. Escriba la tabla de verdad que muestre la salida, y, del INVER- SOR para cada combinación de entradas A y B. 3-6 DESCRIPCIÓN DE CIRCUITOS LÓGICOS EN FORMA ALGEBRAICA Cualquier circuito lógico, sin importar qué tan complejo sea, puede describirse por completo mediante el uso de las tres operaciones booleanas básicas ya que las com- puertas OR, AND y el circuito NOT son los bloques fundamentales para la construc- APLICACIÓN 3-1 Nivel lógico 1 (verdadero) cuando está oprimido (falso cuando el botón no está oprimido). Oprimido +5 V Botón No oprimido Nivel lógico 1 (verdadero) cuando no está oprimido (falso cuando el botón está oprimido). FIGURA 3-12 Una compuerta NOT que indica que un botón no está oprimido cuando su salida es verdadera.
  • 95. ción de sistemas digitales. Por ejemplo, considere el circuito de la figura 3-13(a), el cual tiene tres entradas A, B y C, y una sola salida x. Si utilizamos la expresión booleana para cada compuerta podemos determinar con facilidad la expresión para la salida. La expresión para la salida de la compuerta AND se escribe como A B. Esta salida AND está conectada como entrada para la compuerta OR junto con C, otra entrada. La compuerta OR opera sobre sus entradas de manera que su salida es la suma OR de las entradas. Por lo tanto, podemos expresar la salida OR como x AB C. Esta expresión final podría haberse escrito también como x C AB, ya que no importa cuál término de la suma OR se escriba primero. Precedencia de operadores En ocasiones puede haber confusión acerca de cuál operación debe llevarse a cabo primero en una expresión. La expresión A B C puede interpretarse de dos mane- ras: (1) Se aplica un OR entre A B y el término C; o (2) Se aplica un AND entre A y el término B C. Para evitar esta confusión debe quedar claro que si una expre- sión contiene las operaciones AND y OR, la operación AND se realiza primero, a menos que haya paréntesis en la expresión, en cuyo caso la operación encerrada entre paréntesis es la que se debe realizar primero. Esta regla es la misma que se utiliza en el álgebra ordinaria para determinar el orden de las operaciones. Para ilustrar mejor este concepto, considere el circuito de la figura 3-13(b). La expresión para la salida de la compuerta OR es A B. Esta salida sirve como entra- da para la compuerta AND junto con otra entrada C. Por ende, expresamos la salida de la compuerta AND como x (A B) C. Observe el uso de los paréntesis aquí para indicar que primero se aplica la operación OR entre A y B, antes de que a su suma OR se le aplique un AND con C. Sin los paréntesis se interpretaría de manera incorrecta, ya que A BC significa que a la entrada A se le aplica un OR con el producto B C. Circuitos que contienen INVERSORES Siempre que haya un INVERSOR presente en el diagrama de un circuito lógico, la expresión de su salida es en sí igual a la expresión de la entrada con una barra sobre ella. La figura 3-14 muestra dos ejemplos que utilizan INVERSORES. En la figura 3-14(a) la entrada A se alimenta a través de un INVERSOR, cuya salida es, por lo tanto A. La salida del INVERSOR se alimenta a una compuerta OR junto con B, de manera que la salida OR es igual a A B. Observe que la barra sólo está sobre A, lo cual indica que A primero se invierte y después se alimenta a la compuerta OR junto con B. SECCIÓN 3-6/DESCRIPCIÓN DE CIRCUITOS LÓGICOS EN FORMA ALGEBRAICA 67 A B x = A • B + C C A • B (a) A B x = (A + B) • C C A + B (b) FIGURA 3-13 (a) Circuito lógico con su expresión booleana. (b) Circuito lógico cuya expresión requiere paréntesis. A B A B x = A + B A + B (b) (a) x = A + B A FIGURA 3-14 Circuitos que utilizan INVERSORES.
  • 96. 68 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS PREGUNTAS DE REPASO En la figura 3-14(b) la salida de la compuerta OR es igual a A B y se ali- menta a través de un INVERSOR. Por lo tanto, la salida del INVERSOR es igual a (A B) ya que invierte toda la expresión de entrada. Observe que la barra cubre toda la expresión (A B). Esto es importante ya que, como veremos más adelante, las expresiones (A B) y (A B) no son equivalentes. La expresión (A B) indica que primero se aplica un OR entre A y B, y después su suma OR se invierte, mientras que la expresión (A B) indica que primero se invierten A y B, y después se aplica un OR a los resultados de las dos inversiones. La figura 3-15 muestra dos ejemplos más, que deben estudiarse con cuidado. Note el uso de dos conjuntos separados de paréntesis en la figura 3-15(b). Observe además en la figura 3-15(a) que la variable de entrada A está conectada como entra- da para dos compuertas distintas. 1. En la figura 3-15(a) cambie cada compuerta AND por una compuerta OR, y cam- bie la compuerta OR por una compuerta AND. Después escriba la expresión para la salida x. 2. En la figura 3-15(b) cambie cada compuerta AND por una compuerta OR y cada compuerta OR por una compuerta AND. Después escriba la expresión para la salida x. 3-7 EVALUACIÓN DE LAS SALIDAS DE CIRCUITOS LÓGICOS Una vez que tengamos la expresión booleana para un circuito lógico, podremos obte- ner el nivel lógico de salida para cualquier conjunto de niveles de entrada. Por ejemplo, suponga que deseamos conocer el nivel lógico de la salida x del circuito de la figura 3-15(a), para el caso en el que A 0, B 1, C 1 y D 1. Como en el álgebra ordinaria, podemos encontrar el valor de x si “conectamos” los valores de A B C A D A B C D E A + B A + D A ABC A + D (a) x = ABC ( A + D) (A + B)C (A + B)C (b) D + (A + B)C x = [D + (A + B)C] • E FIGURA 3-15 Más ejemplos.
  • 97. las variables en la expresión y realizamos las operaciones indicadas como se mues- tra a continuación: Como otro ejemplo, vamos a evaluar la salida del circuito de la figura 3-15(b) para A 0, B 0, C 0, D 1 y E 1. En general, siempre debemos seguir las siguientes reglas cuando se evalúa una expresión booleana: 1. Primero realice todas las inversiones de términos individuales; es decir, 0 1 o 1 0. 2. Después realice todas las operaciones que estén encerradas entre paréntesis. 3. Realice una operación AND antes de una operación OR, a menos que haya paréntesis que indiquen lo contrario. 4. Si una expresión tiene una barra sobre ella, primero realice las operaciones dentro de la expresión y después invierta el resultado. Como práctica, determine las salidas de ambos circuitos de la figura 3-15 para el caso en el que todas las entradas sean 1. Las respuestas son x 0 y x 1, respec- tivamente. Análisis mediante el uso de una tabla Siempre que tenga un circuito lógico combinacional y desee saber cómo funciona, la mejor manera de analizarlo es mediante el uso de una tabla de verdad. Las ventajas de este método son: Le permite analizar una compuerta o combinación lógica a la vez. Le facilita una segunda comprobación de su trabajo. Cuando termine tendrá una tabla que será de un beneficio incalculable cuando se busquen fallas en el circuito lógico. Recuerde que una tabla de verdad lista todas las posibles combinaciones de las entradas en orden numérico. Para cada combinación posible de entrada, podemos determinar el estado lógico en cada punto (nodo) del circuito lógico, incluyendo la salida. Consulte la figura 3-16(a). Hay varios nodos intermedios en este circuito, los cuales no son entradas ni salidas. Tan sólo son conexiones entre la salida de una compuerta y la entrada de otra. En este diagrama se han etiquetado como u, v y w. El primer paso después de listar todas las combinaciones de entradas es crear una columna en la tabla de verdad para cada señal intermedia (nodo), como se muestra en la figura 3-16(b). El nodo u se ha llenado como el complemento de A. = 0 = 1 # 1 # 1 # 0 = 1 # 1 # 1 # (1) = 1 # 1 # 1 # (0 + 1) = 0 # 1 # 1 # (0 + 1) x = ABC(A + D) = 1 = 1 # 1 = [1 + 1] # 1 = [1 + 0] # 1 = [1 + 0 # 1] # 1 = [1 + (0 + 0) # 1] # 1 x = [D + (A + B)C] # E SECCIÓN 3-7/EVALUACIÓN DE LAS SALIDAS DE CIRCUITOS LÓGICOS 69
  • 98. 70 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS u = A v = AB x A B C w = BC A B C u= A v= AB w= BC x= v+w 0 0 1 0 0 1 0 1 1 0 1 1 1 0 0 1 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 0 (b) A B C u= A v= AB w= BC x= v+w (c) 0 0 0 1 0 0 0 1 1 0 0 1 0 1 1 0 1 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 A B C u= A v= AB w= BC x= v+w 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 1 1 1 0 0 1 (d) 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 1 1 1 1 1 1 0 0 0 0 0 1 1 A B C u= A v= AB w= BC x= v+w (e) (a) El siguiente paso es llenar los valores para la columna v, como se muestra en la figura 3-16(c). Del diagrama podemos ver que v AB. El nodo v debe estar en ALTO cuando A (nodo u) está en ALTO Y B está en ALTO. Esto ocurre cada vez que A está en BAJO Y B está en ALTO. El tercer paso es predecir los valores en el nodo w, que es el producto lógico de BC. Esta columna está en ALTO cada vez que B está en ALTO Y C está en ALTO, como se muestra en la figura 3-16(d). El último paso es combinar en forma lógica las columnas v y w para predecir la salida x. Como x v w, la salida x estará en ALTO cuando v esté en ALTO O w esté en ALTO, como se muestra en la figura 3-16(e). Si usted construyera este circuito y no se produjera la salida correcta para x bajo todas las condiciones, podría utilizar esta tabla para encontrar el problema. El procedimiento general es probar el circuito bajo cada combinación de entradas. Si cualquier combinación de entradas produce una salida incorrecta (es decir, una falla), compare el estado lógico actual de cada nodo intermedio en el circuito con el valor teórico correcto en la tabla mientras aplica esa condición de entrada. Si el estado lógico para un nodo intermedio es correcto, el problema debe estar más a la derecha de ese nodo. Si el estado lógico de un nodo intermedio es incorrecto, el pro- blema debe estar a la izquierda de ese nodo (o ese nodo está en corto con algo). En el capítulo 4 veremos con más detalle los procedimientos de detección de errores y las posibles fallas en los circuitos. FIGURA 3-16 Análisis de un circuito lógico mediante el uso de tablas de verdad.
  • 99. PREGUNTAS DE REPASO Analice la operación de la figura 3-15(a) mediante la creación de una tabla que muestre el estado lógico en cada nodo del circuito. Solución Para llenar la columna t, escriba un 1 para todas las entradas en las que A 0 Y B 1 y C 1. Para llenar la columna u, escriba un 1 para todas las entradas en las que A 1 O D 1. Para llenar la columna v, complete todas las entradas de la columna u. Para llenar la columna x, escriba un 1 para todas las entradas en las que t 1 y v 1. 1. Use la expresión de x para determinar la salida del circuito de la figura 3-15(a), para las condiciones en que A 0, B 1, C 1 y D 0. 2. Use la expresión de x para determinar la salida del circuito de la figura 3-15(b), para las condiciones en que A B E 1 y C D 0. 3. Determine las respuestas a las preguntas 1 y 2 encontrando los niveles lógicos presentes en la salida de cada compuerta mediante el uso de una tabla, como en la figura 3-16. 3-8 IMPLEMENTACIÓN DE CIRCUITOS A PARTIR DE EXPRESIONES BOOLEANAS Cuando la operación de un circuito se define mediante una expresión booleana, podemos dibujar el diagrama de un circuito lógico de manera directa a partir de esa expresión. Por ejemplo, si necesitáramos un circuito que estuviera definido por x A B C, de inmediato sabríamos que todo lo que se requiere es una compuerta AND de tres entradas. Si necesitáramos un circuito definido por x A B, utilizaríamos una compuerta OR de dos entradas con un INVERSOR en una de ellas. El mismo razonamiento que se utiliza para estos casos puede extenderse hacia circuitos más complejos. EJEMPLO 3-6 A B C D t u A D v x tv 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 0 1 0 0 1 1 0 1 0 1 0 0 1 1 1 0 0 1 0 0 1 1 1 1 0 1 0 0 A D ABC SECCIÓN 3-8/IMPLEMENTACIÓN DE CIRCUITOS A PARTIR DE EXPRESIONES. . . 71
  • 100. 72 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS Suponga que deseamos construir un circuito cuya salida sea y AC BC ABC. Esta expresión booleana contiene tres términos (AC, BC, ABC), a los cuales se les aplica una operación OR. Esto nos indica que se requiere una compuerta OR de tres entradas, en donde éstas son iguales a AC, BC y ABC. En la figura 3-17(a) se ilustra esto, en donde está dibujada una compuerta OR de tres entradas etiquetadas como AC, BC y ABC. Cada entrada de la compuerta OR es un término del producto de AND, lo cual significa que puede usarse una compuerta AND con las entradas apropiadas para generar cada uno de estos términos. Esto se muestra en la figura 3-17(b), que corres- ponde al diagrama del circuito final. Observe el uso de INVERSORES para producir los términos A y C requeridos en la expresión. Siempre puede seguirse este mismo enfoque general, aunque más adelante veremos que existen técnicas más inteligentes y eficientes. No obstante, por ahora utilizaremos este método simple y directo para minimizar el número de elementos nuevos que deberá aprender. Dibuje el diagrama del circuito para implementar la expresión x (A B)(B C). Solución Esta expresión muestra que los términos A B y B C son entradas para una com- puerta AND, y cada uno de estos términos se genera a partir de una compuerta OR separada. La figura 3-18 muestra un dibujo del resultado. AC ABC BC y = AC + BC + ABC (a) y = AC + BC + ABC A B C C A B AC ABC BC (b) C C B FIGURA 3-17 Construcción de un circuito lógico a partir de una expresión booleana. EJEMPLO 3-7 A B C A + B B + C B x = (A + B)(B + C) FIGURA 3-18 Ejemplo 3-7.
  • 101. PREGUNTAS DE REPASO 1. Dibuje el diagrama del circuito que implemente la expresión x ABC(A D) mediante el uso de compuertas con no más de tres entradas. 2. Dibuje el diagrama del circuito para la expresión y AC BC ABC. 3. Dibuje el diagrama del circuito para x [D (A B)C)] E. 3-9 COMPUERTAS NORY NAND En los circuitos digitales se utilizan mucho otros dos tipos de compuertas lógicas: NOR y NAND. Estas compuertas combinan las operaciones básicas AND, OR y NOT, por lo que es muy sencillo escribir sus expresiones booleanas. Compuerta NOR La figura 3-19(a) muestra el símbolo para una compuerta NOR de dos entradas. Es igual que el símbolo de la compuerta OR, sólo que tiene un pequeño círculo en la salida. El pequeño círculo representa la operación de inversión. Por ello, la compuer- ta NOR opera de manera similar a una compuerta OR seguida de un INVERSOR, de manera que los circuitos en las figuras 3-19(a) y (b) son equivalentes, y la expresión de salida para la compuerta NOR es x A B. La tabla de verdad de la figura 3-19(c) muestra que la salida de la compuerta NOR es el inverso exacto de la salida de la compuerta OR para todas las posibles condiciones de entrada. La salida de una compuerta OR cambia a ALTO cuando cual- quiera de sus entradas se encuentra en ALTO; la salida de la compuerta NOR cambia a BAJO cuando cualquiera de sus entradas se encuentra en ALTO. Esta misma opera- ción puede aplicarse a las compuertas NOR con más de dos entradas. A 0 0 1 1 B 0 1 0 1 A + B 0 1 1 1 A + B 1 0 0 0 A B Indica inversión (a) (b) OR NOR (c) x = A + B A + B A B x = A + B FIGURA 3-19 (a) símbolo NOR; (b) circuito equivalente; (c) tabla de verdad. SECCIÓN 3-9/COMPUERTAS NOR Y NAND 73
  • 102. 74 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS Determine la forma de onda en la salida de una compuerta NOR para las formas de onda de entrada que se muestran en la figura 3-20. Solución Una manera de determinar la forma de onda de salida NOR es encontrando primero la forma de onda de salida OR y luego invirtiéndola (cambiar todos los 1s por 0s y viceversa). Otro sistema utiliza el hecho de que la salida de una compuerta NOR estará en ALTO sólo cuando todas sus entradas estén en BAJO. Por lo tanto, pue- de examinar las formas de onda de entrada, encontrar esos intervalos en los que todas están en BAJO, y hacer que la salida de la compuerta NOR esté en ALTO para esos intervalos. La salida de la compuerta NOR estará en BAJO para todos los demás intervalos. La figura muestra la forma de onda de salida resultante. Determine la expresión booleana para una compuerta NOR de tres entradas, segui- da de un INVERSOR. Solución Consulte la figura 3-21, en donde se muestra el diagrama del circuito. La expresión en la salida de la compuerta NOR es (A B C), la cual se alimenta después a tra- vés de un INVERSOR para producir La presencia de los signos de doble inversión indica que se invirtió la cantidad (A B C) y se invirtió una vez más. Debe quedar claro que esto sólo hace que la expre- sión (A B C) permanezca sin cambios. Esto es, Siempre que hay dos barras de inversión sobre la misma variable o cantidad, una cancela a la otra, como en el ejemplo anterior. No obstante, en casos tales como A B las barras de inversión no se cancelan. Esto se debe a que las barras de inver- sión más pequeñas invierten las variables individuales A y B, mientras que la barra larga invierte la cantidad (A B). En consecuencia, A B A B. De manera similar, A B AB. EJEMPLO 3-8 EJEMPLO 3-9 x = (A + B + C) x = (A + B + C) = (A + B + C) FIGURA 3-21 Ejemplo 3-9. A C B A + B + C x = A + B + C = A + B + C FIGURA 3-20 Ejemplo 3-8. A B x = A + B 1 0 A 1 0 B 1 0 x
  • 103. Compuerta NAND La figura 3-22(a) muestra el símbolo para una compuerta NAND de dos entradas. Es el mismo que el de la compuerta AND más un pequeño círculo en la salida. De nue- vo, este pequeño círculo denota la operación de inversión. Así, la compuerta NAND opera igual que una compuerta AND seguida de un INVERSOR, de manera que los circuitos de la figura 3-22(a) y (b) son equivalentes y la expresión de salida para la compuerta NAND es x AB. La tabla de verdad de la figura 3-22(c) muestra que la salida de la compuerta NAND es el inverso exacto de la compuerta AND para todas las posibles condicio- nes de entrada. La salida AND cambia a nivel ALTO sólo cuando todas las entradas se encuentran en ALTO, mientras que la salida NAND cambia a BAJO sólo cuando todas las entradas se encuentran en ALTO. Esta misma característica puede aplicar- se a las compuertas NAND que tienen más de dos entradas. Determine la forma de onda de salida de una compuerta NAND que tiene las entra- das que se muestran en la figura 3-23. Solución Una manera es dibujar primero la forma de onda de salida para una compuerta AND y después invertirla. Otra técnica utiliza el hecho de que una salida NAND estará en BAJO sólo cuando todas las entradas estén en ALTO. De esta forma, puede encontrar todos esos intervalos durante los cuales todas las entradas están en ALTO y hacen que la salida NAND esté en BAJO para esos intervalos. La salida estará en ALTO en todos los demás tiempos. EJEMPLO 3-10 A 0 0 1 1 B 0 1 0 1 AB 0 0 0 1 (c) AB 1 1 1 0 AND NAND A B Indica inversión (a) (b) x = AB A B AB AB FIGURA 3-22 (a) Símbolo NAND; (b) circuito equivalente; (c) tabla de verdad. SECCIÓN 3-9/COMPUERTAS NOR Y NAND 75 A B x x = AB A B FIGURA 3-23 Ejemplo 3-10.
  • 104. 76 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS PREGUNTAS DE REPASO Implemente el circuito lógico que tiene la expresión x AB (C D) utilizando sólo compuertas NOR y NAND. Solución El término (C D) es la expresión para la salida de una compuerta NOR. A este tér- mino se le aplica la operación NAND junto con A y B, y el resultado se invierte; ésta es, desde luego, la operación NAND. Así, el circuito se implementa como se muestra en la figura 3-24. Observe que la compuerta NAND primero aplica un AND a los tér- minos A, B y (C D), y después invierte todo el resultado. Determine el nivel de salida de la figura 3-24 cuando A B C 1 y D 0. Solución En el primer método utilizamos la expresión para x. En el segundo método, anotamos los niveles lógicos de entrada en el diagrama del circuito (los cuales se muestran en gris en la figura 3-24) y seguimos estos niveles a través de cada compuerta, hasta la salida final. La compuerta NOR tiene entradas de 1 y 0 para producir una salida de 0 (un OR hubiera producido una salida de 1). Entonces la compuerta NAND tiene niveles de entrada de 0, 1 y 1 para producir una salida de 1 (al igual que AND hubiera producido una salida de 0). 1. ¿Cuál es el único conjunto de condiciones de entrada que producirá una salida en ALTO en una compuerta NOR de tres entradas? 2. Determine el nivel de salida en la figura 3-24 cuando A B 1, C D 0. 3. Cambie la compuerta NOR de la figura 3-24 por una compuerta NAND y cam- bie la compuerta NAND por una compuerta NOR. ¿Cuál es la nueva expresión para x? 3-10 TEOREMAS BOOLEANOS Hemos visto cómo puede utilizarse el álgebra booleana para ayudar a analizar un cir- cuito lógico y expresar su operación en forma matemática. Para continuar con nues- tro estudio del álgebra booleana vamos a investigar los diversos teoremas booleanos (también conocidos como reglas booleanas) que pueden ayudarnos a simplificar las EJEMPLO 3-11 C D 1 0 C + D x = AB(C + D) 1 1 1 0 B A FIGURA 3-24 Ejemplos 3-11 y 3-12. EJEMPLO 3-12 = 0 = 1 = 1 # 1 # 0 = 1 # 1 # (1) = 1 # 1 # (1 + 0) x = AB(C + D)
  • 105. expresiones lógicas y los circuitos lógicos. El primer grupo de teoremas se muestra en la figura 3-25. En cada teorema, x es una variable lógica que puede ser un 0 o un 1. Cada teorema se acompaña por el diagrama de un circuito lógico que demuestra su validez. El teorema (1) establece que si se aplica un AND entre cualquier variable y 0, el resultado es 0. Esto es fácil de recordar ya que la operación AND es como la mul- tiplicación ordinaria, en donde sabemos que cualquier cantidad multiplicada por 0 es igual a 0. También sabemos que la salida de una compuerta AND será 0 siempre que una entrada sea 0, sin importar el nivel en la otra entrada. El teorema (2) también es obvio si se le compara con la multiplicación ordinaria. El teorema (3) puede demostrarse si se prueba cada caso. Si x 0, entonces 0 0 0; si x 1 entonces 11 1. Por lo tanto, xx x. El teorema (4) puede probarse de la misma forma. No obstante, también pode- mos razonar que en cualquier momento ya sea x o su inverso, x, deben estar en el nivel 0 y, por lo tanto, su producto AND siempre será 0. El teorema (5) es bastante directo, ya que cualquier cantidad que se sume con 0 no afecta su valor, ya sea en la suma ordinaria o en la operación OR. El teorema (6) establece que si se aplica un OR entre cualquier variable y 1, el resultado siempre será 1. Comprobamos esto para ambos valores de x: 0 1 1 y 1 1 1.También es importante recordar que la salida de una compuerta OR será 1 cuando cualquiera de sus entradas sea 1, sin importar el valor de la otra entrada. El teorema (7) puede probarse si se comprueban ambos valores de x: 0 0 0 y 1 1 1. El teorema (8) puede probarse de manera similar, o basta con razonar que en cualquier momento ya sea x o x estará en el nivel 1, de manera que siempre se esté aplicando un OR entre 0 y 1, lo cual siempre produce un 1. Antes de presentar más teoremas, debemos recalcar que cuando se aplican los teoremas (1) a (8) la variable x puede llegar a representar una expresión que con- tiene más de una variable. Por ejemplo, si tenemos que AB(AB), podemos invocar el teorema (4) si hacemos que x AB. Por ende, podemos decir que AB(AB). Esta misma idea puede aplicarse al uso de cualquiera de los teoremas. Teoremas con múltiples variables Los teoremas que presentamos a continuación involucran más de una variable: 0 x x 0 x 1 x 1 x x 1 x 0 x x x 1 x x 0 (1) x • 0 = 0 (2) x • 1 = x (3) x • x = x (4) x • x = 0 (5) x + 0 = x (6) x + 1 = 1 (7) x + x = x (8) x + x = 1 FIGURA 3-25 Teoremas con una sola variable. (9) x y y x (10) x # y = y # x SECCIÓN 3-10/TEOREMAS BOOLEANOS 77
  • 106. 78 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS Los teoremas (9) y (10) se conocen como leyes conmutativas, ya que indican que el orden en el que se aplican las operaciones OR y AND a dos variables no importa; el resultado es el mismo. Los teoremas (11) y (12) son las leyes asociativas, las cuales establecen que pode- mos agrupar las variables en una expresión AND o en una expresión OR de cual- quier forma que necesitemos. El teorema (13) es la ley distributiva, la cual establece que para expandir una expresión se multiplica término por término, de igual forma que en el álgebra ordi- naria. Este teorema también indica que podemos factorizar una expresión. Esto es, si tenemos una suma de dos (o más) términos, cada uno de los cuales contiene una variable común, esta variable común puede factorizarse de igual forma que en el álgebra ordinaria. Por ejemplo, si tenemos la expresión ABC A B C podemos facto- rizar la variable B: Como otro ejemplo, considere la expresión ABC ABD. Aquí los dos términos tienen en común las variables A y B, por lo que AB puede factorizarse de ambos términos. Esto es, Los teoremas (9) a (13) son fáciles de recordar y de utilizar, ya que son idénticos a los del álgebra ordinaria. Por otro lado, los teoremas (14) y (15) no tienen contra- partes en el álgebra ordinaria. Para demostrar cada uno de ellos hay que probar todos los casos posibles para x y y. Para ilustrar lo anterior (para el teorema 14) vamos a crear una tabla de análisis para la ecuación x xy, como se muestra a con- tinuación: Observe que el valor de toda la expresión (x xy) es siempre el mismo que para x. El teorema (14) también puede demostrarse mediante la factorización y el uso de los teoremas (6) y (2), como se muestra a continuación: x xy x(1 y) x 1 [usando el teorema (6)] x [usando el teorema (2)] Todos estos teoremas booleanos pueden ser útiles para simplificar una expre- sión lógica; es decir, para reducir el número de términos en la expresión. Con esto, la expresión reducida produce un circuito que es menos complejo que el que habría producido la expresión original. Una buena porción del siguiente capítulo estará dedicada al proceso de simplificación de los circuitos. Por ahora, los siguientes (11) x (y z) (x y) z x y z (12) x(yz) (xy)z xyz (13a) x(y z) xy xz (13b) (w x)(y z) wy xy wz xz (14) x xy x (15a) (15b) x + xy = x + y x + xy = x + y ABC + A BC = B(AC + A C) ABC ABD AB(C D) x y xy x xy 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1
  • 107. ejemplos servirán para ilustrar cómo pueden aplicarse los teoremas booleanos. Nota: encontrará todos los teoremas booleanos en la parte interior de la cubierta posterior del libro. Simplifique la expresión y ABD AB D. Solución Factorice las variables comunes AB mediante el uso del teorema (13): y AB(D D) Si utilizamos el teorema (8), el término entre paréntesis es equivalente a 1. Así, y AB 1 AB [utilizando el teorema (2)] Simplifique la expresión z (A B)(A B). Solución Podemos expandir la expresión si multiplicamos los términos [teorema (13)]: z A A A B B A B B Si invocamos el teorema (4), el término A A 0. Además, B B B [teorema (13)]: z 0 A B B A B AB AB B Si factorizamos la variable B [teorema (13)] tenemos que: z B(A A 1) Por último, utilizando los teoremas (2) y (6), z B Simplifique x ACD ABCD. Solución Si factorizamos las variables comunes CD, tenemos que x CD(A AB) Utilizando el teorema (15a) podemos sustituir A AB por A B, de manera que x CD(A B) ACD BCD EJEMPLO 3-13 EJEMPLO 3-15 EJEMPLO 3-14 SECCIÓN 3-10/TEOREMAS BOOLEANOS 79
  • 108. 80 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS PREGUNTAS DE REPASO 1. Use los teoremas (13) y (14) para simplificar y AC ABC. 2. Use los teoremas (13) y (8) para simplificar y A B C D A B C D. 3. Use los teoremas (13) y (15b) para simplificar y AD ABD. 3-11 TEOREMAS DE DEMORGAN Dos de los teoremas más importantes del álgebra booleana fueron aportación de un gran matemático apellidado DeMorgan. Los teoremas de DeMorgan son extremada- mente útiles para simplificar expresiones en las cuales se invierte un producto o la suma de variables. Los dos teoremas son: (16) (x y) x y (17) (x y) x y El teorema (16) establece que cuando se invierte la suma OR de dos variables, es lo mismo que invertir cada variable en forma individual y después aplicar una operación AND a estas dos variables invertidas. El teorema (17) establece que cuando se invierte el producto AND de dos variables, es lo mismo que invertir cada varia- ble en forma individual y después aplicar una operación OR a estas dos variables. Cada uno de los teoremas de DeMorgan puede demostrarse con facilidad si se com- prueban todas las posibles combinaciones para x y y. Dejaremos esta comprobación como un ejercicio de final de capítulo. Aunque estos teoremas están declarados en términos de las variables indivi- duales x e y, son también válidos en situaciones en las que x y/o y son expresiones que contienen más de una variable. Por ejemplo, vamos a aplicarlas a la expresión (AB C) como se muestra a continuación: Aquí utilizamos el teorema (16) y tratamos a AB como x y a C como y. El resultado puede simplificarse aún más ya que tenemos un producto AB que está invertido. Si utilizamos el teorema (17), la expresión se convierte en Ahora, si sustituimos B por B, al final nos queda Este resultado final sólo contiene signos de inversión para invertir una sola variable. Simplifique la expresión z (A C) (B D) en una en la que sólo haya variables individuales invertidas. Solución Si utilizamos el teorema (17) y tratamos a (A C) como x y a (B D) como y, tene- mos que EJEMPLO 3-16 (AB + C) = (AB) # C AB # C = (A + B) # C (A + B) # C = AC + BC z = (A + C) + (B + D)
  • 109. En esta expresión se partió el signo inversor grande a la mitad y se cambió el signo AND () por un signo OR ().Ahora el término (A C) puede simplificarse mediante la aplicación del teorema (16). El término (B D) también puede simplificarse: Aquí se partieron los signos inversores grandes de cada expresión a la mitad y se cambiaron los () por (). Cancelando las dobles inversiones nos queda por último El punto clave en el ejemplo 3-16 es que cuando se utilizan los teoremas de DeMorgan para reducir una expresión, podemos descomponer un signo inversor en cualquier punto de la expresión y cambiar el signo del operador en ese punto por su opuesto ( se cambia por , y viceversa). Este procedimiento se continúa hasta que la expresión se reduce a una en la que sólo haya variables individuales invertidas. A continuación se proporcionan dos ejemplos más. Ejemplo 1 Ejemplo 2 Los teoremas de DeMorgan pueden extenderse fácilmente a más de dos varia- bles. Por ejemplo, puede demostrarse que Aquí podemos ver que el signo inversor grande se descompone en dos puntos de la expresión y que el signo del operador se cambia por su opuesto. Esto puede exten- derse a cualquier número de variables. De nuevo, debemos tener en cuenta que las variables en sí pueden ser expresiones, en lugar de variables individuales. A conti- nuación se muestra otro ejemplo. Implicaciones de los teoremas de DeMorgan Examinemos los teoremas (16) y (17) desde el punto de vista de los circuitos lógicos. Primero vamos a considerar el teorema (16): El lado izquierdo de la ecuación puede considerarse como la salida de una compuer- ta NOR cuyas entradas son x y y. Por otra parte, el lado derecho de la ecuación es el = (A # C) + B # D z = (A + C) + (B + D) z = AC + BD = AB + AC + DE + DF = [A # (B + C)] + [D # (E + F)] = A # (B + C) = (A # BC) + (D # EF) = A # (B + C) = (A + BC) + (D + EF) = A # (B # C) 1A + BC2 1D + EF2 z = A + B # C x # y # z = x + y + z x + y + z = x # y # z AB CD EF = AB + CD + EF x = AB # CD # EF x + y = x # y SECCIÓN 3-11/TEOREMAS DE DEMORGAN 81
  • 110. 82 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS resultado de primero invertir ambas variables x y y, y después pasarlas a través de una compuerta AND. Estas dos representaciones son equivalentes y se ilustran en la figura 3-26(a), lo que significa que una compuerta AND con INVERSORES en cada una de sus entradas es equivalente a una compuerta NOR. De hecho, ambos símbo- los se utilizan para representar a la función NOR. Cuando se utiliza la compuerta AND con entradas invertidas para representar a la función NOR, por lo general, se dibuja en la forma que se muestra en la figura 3-26(b), en donde los pequeños círcu- los en las entradas representan la operación de inversión. Ahora consideremos el teorema (17): Podemos implementar el lado izquierdo de la ecuación mediante una compuer- ta NAND con entradas x y y. Para implementar primero el lado derecho se invierten las entradas x e y, y después se pasan a través de una compuerta OR. En la figura 3-27(a) se muestran estos dos símbolos equivalentes. La compuerta OR con INVER- SORES en cada una de sus entradas es equivalente a la compuerta NAND.También ambas representaciones se utilizan para la función NAND. Cuando se utiliza la com- puerta OR con entradas invertidas para representar a la función NAND, por lo gene- ral, se dibuja en la forma que se muestra en la figura 3-27(b), en donde los círculos en las entradas nuevamente representan la operación de inversión. Determine la expresión de salida para el circuito de la figura 3-28 y simplifíquelo mediante el uso de los teoremas de DeMorgan. FIGURA 3-26 (a) Circuitos equivalentes implicados por el teorema (16); (b) símbolo alternativo para la función NOR. (b) x y x • y = x + y x y (a) x y x y x + y x • y = x + y x # y = x + y (b) x y x + y = xy x y x + y = xy xy (a) x y x y FIGURA 3-27 (a) Circuitos equivalentes implicados por el teorema (17); (b) símbolo alternativo para la función NAND. EJEMPLO 3-17 A B C z = A • B • C = A + B + C = A + B + C C FIGURA 3-28 Ejemplo 3-17.
  • 111. PREGUNTAS DE REPASO Solución La expresión para z es z ABC. Utilizamos el teorema de DeMorgan para descompo- ner el signo de inversión grande: Ahora cancelamos la doble inversión en C para obtener 1. Utilice los teoremas de DeMorgan para convertir la expresión z (A B) C por una que sólo tenga inversiones de variables individuales. 2. Repita la pregunta 1 para la expresión y RST Q. 3. Implemente un circuito que tenga la expresión de salida z A B C utilizando sólo una compuerta NOR y un INVERSOR. 4. Use los teoremas de DeMorgan para convertir y A B CD en una expresión que contenga sólo inversiones de variables individuales. 3-12 UNIVERSALIDAD DE LAS COMPUERTAS NANDY NOR Todas las expresiones booleanas consisten de varias combinaciones de las opera- ciones básicas de OR, AND e INVERSOR. Por lo tanto, cualquier expresión pue- de implementarse mediante el uso de combinaciones de compuertas OR, AND e INVERSOR. No obstante, es posible implementar cualquier expresión lógica utili- zando sólo compuertas NAND. Esto se debe a que si las compuertas NAND se com- binan en forma apropiada, pueden usarse para realizar cada una de las operaciones booleanas OR, AND e INVERSOR. La figura 3-29 demuestra este concepto. z = A + B + C z = A + B + C FIGURA 3-29 Las compuertas NAND pueden usarse para implementar cualquier función booleana. A A B A B A INVERSOR AND OR A A B B 1 2 3 1 2 (a) (b) (c) x = A • A = A AB A B x = AB x = A B = A + B SECCIÓN 3-12/UNIVERSALIDAD DE LAS COMPUERTAS NAND Y NOR 83
  • 112. 84 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS En primer lugar, en la figura 3-29(a) tenemos una compuerta NAND de dos entradas, las cuales se conectaron juntas a propósito, de manera que la variable A se aplique a ambas. En esta configuración, la compuerta NAND actúa tan sólo como INVERSOR, ya que su salida es x A A A. En la figura 3-29(b) tenemos dos compuertas NAND conectadas de manera que se realice la operación AND. La compuerta NAND 2 se utiliza como INVERSOR para cambiar AB por AB AB, que es la función AND deseada. Para implementar la operación OR se pueden utilizar compuertas NAND conec- tadas como se muestra en la figura 3-29(c). Aquí las compuertas NAND 1 y 2 se utilizan como INVERSORES para las entradas, de manera que la salida final sea x A B, lo cual puede simplificarse como x A B mediante el uso del teorema de DeMorgan. De una manera similar, podemos demostrar que se pueden crear arreglos de compuertas NOR para implementar cualquiera de las operaciones booleanas. Esto se ilustra en la figura 3-30. La parte (a) muestra que una compuerta NOR con sus entradas conectadas entre sí se comporta como un INVERSOR, debido a que la sali- da es x A A A. En la figura 3-30(b) hay dos compuertas NOR conectadas de tal forma que se lleve a cabo la operación OR. La compuerta NOR 2 se utiliza como un INVERSOR para cambiar A B por A B A B, que es la función OR deseada. La operación AND puede implementarse con compuertas NOR, como se muestra en la figura 3-30(c). Aquí las compuertas NOR 1 y 2 se utilizan como INVERSORES para las entradas de manera que la salida final sea x A B, que puede simplificar- se, mediante el uso del teorema de DeMorgan, como x A B. Como cualquiera de las operaciones booleanas pueden implementarse con sólo utilizar compuertas NAND, puede construirse cualquier circuito si se utilizan sólo com- puertas NAND. Lo mismo aplica para las compuertas NOR. Esta característica de las compuertas NAND y NOR puede ser muy útil en el diseño de circuitos lógicos, como se muestra en el ejemplo 3-18. En cierto proceso de manufactura, una banda transportadora se apaga cada vez que ocurren determinadas condiciones, las cuales se supervisan y reflejan con base en EJEMPLO 3-18 A INVERSOR A B OR A B AND A A A B B (a) (b) (c) A B x = A+ B = AB x = A + A = A A + B A + B 2 3 1 1 2 FIGURA 3-30 Las compuertas NOR pueden utilizarse para implementar cualquier operación booleana.
  • 113. los estados de cuatro señales lógicas de la siguiente manera: la señal A estará en ALTO siempre que la velocidad de la banda transportadora sea demasiado alta; la señal B estará en ALTO cada vez que el recipiente recolector al final de la banda se encuentre lleno; la señal C estará en ALTO cuando la tensión de la banda esté demasiado alta; la señal D estará en ALTO cuando esté desconectado el sobrepaso manual. Se necesita un circuito lógico para generar una señal x que cambie a ALTO siempre que las condiciones A y B se presenten al mismo tiempo, o cada vez que las condiciones C y D se presenten al mismo tiempo. Podemos deducir que la expresión lógica para x es x AB CD. El circuito debe implementarse con la menor cantidad de circuitos integrados que sea posible. Los circuitos integrados TTL que se mues- tran en la figura 3-31 están disponibles. Cada CI es cuádruple, lo que significa que contiene cuatro compuertas idénticas en un solo chip. Solución El método directo para implementar la expresión obtenida utiliza dos compuertas AND y una compuerta OR, como se muestra en la figura 3-32(a). Esta implementa- ción utiliza dos compuertas del CI 74LS08 y una sola compuerta del CI 74LS32. Los números entre paréntesis en cada entrada y salida son los números de terminal del CI respectivo, los cuales siempre se muestran en cualquier diagrama de cableado de circuitos lógicos. Para nuestros fines, la mayoría de los diagramas lógicos no mos- trarán los números de terminal a menos que se necesiten en la descripción de la operación del circuito. Se puede lograr otra implementación si se toma el circuito de la figura 3-32(a) y se sustituye cada compuerta AND y OR por la implementación equivalente con la compuerta NAND de la figura 3-29. El resultado se muestra en la figura 3-32(b). A primera vista, este nuevo circuito parece requerir siete compuertas NAND. No obstante, las compuertas NAND 3 y 5 están conectadas como INVERSORES en serie y pueden eliminarse del circuito, ya que realizan una doble inversión de la señal que sale de la compuerta NAND 1. De manera similar, las compuertas NAND 4 y 6 pueden eliminarse. En la figura 3-32(c) se muestra el circuito final, después de eliminar los dobles INVERSORES. Este circuito final es más eficiente que el de la figura 3-32(a), ya que utiliza tres compuertas NAND de dos entradas que están incluidas en un solo CI, el 74LS00. 7 6 5 4 3 2 1 74LS00 14 13 12 11 10 9 8 GND VCC 7 6 5 4 3 2 1 74LS08 14 13 12 11 10 9 8 GND VCC 7 6 5 4 3 2 1 74LS32 14 13 12 11 10 9 8 GND VCC FIGURA 3-31 Circuitos integrados disponibles para el ejemplo 3-18. SECCIÓN 3-12/UNIVERSALIDAD DE LAS COMPUERTAS NAND Y NOR 85
  • 114. 86 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS PREGUNTAS DE REPASO 1. ¿Cuántas maneras tenemos ahora para implementar la operación de inversión en un circuito lógico? 2. Implemente la expresión x (A B)(C D) mediante el uso de compuertas OR y AND. Implemente después la expresión utilizando sólo compuertas NOR, con- virtiendo cada compuerta OR y AND a su implementación con NOR de la figura 3-30. ¿Cuál circuito es más eficiente? 3. Escriba la expresión de salida para el circuito de la figura 3-32(c) y utilice los teoremas de DeMorgan para demostrar que es equivalente a la expresión para el circuito de la figura 3-32(a). 3-13 REPRESENTACIONES ALTERNAS DE COMPUERTAS LÓGICAS Hemos presentado las cinco compuertas lógicas básicas (AND, OR, INVERSOR, NAND y NOR) y los símbolos estándar que se utilizan para representarlas en los diagramas de circuitos lógicos. Aunque tal vez algunos diagramas de circuitos aún C D A B 74LS00 74LS00 (8) x (9) 74LS00 (10) (3) (6) (1) (2) (4) (5) (c) (b) C D A B 74LS08 74LS08 (3) x = AB + CD (1) (2) (3) (6) (1) (2) (4) (5) C D A B x 74LS32 AND OR AND Después de eliminar las inversiones dobles 7 (a) 1 2 3 5 4 6 FIGURA 3-32 Posibles implementaciones para el ejemplo 3-18.
  • 115. utilicen estos símbolos estándar de manera exclusiva, cada vez es más común encon- trar diagramas de circuitos en los que se emplean los símbolos lógicos alternativos además de los símbolos estándar. Antes de hablar sobre las razones para utilizar un símbolo alternativo para una compuerta lógica, presentaremos los símbolos alternativos para cada compuerta y demostraremos que son equivalentes a los símbolos estándar. Consulte la figura 3-33; el lado izquierdo muestra el símbolo estándar para cada compuerta lógica y el lado derecho muestra el símbolo alternativo. El símbolo alternativo para cada com- puerta se obtiene a partir del símbolo estándar mediante el siguiente proceso: 1. Invertir cada entrada y salida del símbolo estándar. Para ello se agregan bur- bujas (pequeños círculos) en las entradas y salidas que no tienen burbujas y se quitan las de las entradas y salidas que si tienen. 2. Cambiar el símbolo de la operación de AND a OR, o de OR a AND. En el caso especial del INVERSOR, el símbolo de la operación no se cambia. Por ejemplo, el símbolo NAND estándar es un símbolo AND con una burbuja en su salida. Siguiendo los pasos antes mencionados, eliminamos la burbuja de la salida y agregamos una en cada entrada. Después cambiamos el símbolo AND por un símbolo OR. El resultado es un símbolo OR con burbujas en sus entradas. Podemos demostrar con facilidad que este símbolo alternativo es equivalente al símbolo estándar mediante el uso de los teoremas de DeMorgan y recordando que la burbuja representa una operación de inversión. La expresión de salida del símbolo NAND estándar es AB A B, que es lo mismo que la expresión de salida para el símbolo alterno. Podemos seguir este mismo procedimiento para cada par de símbolos de la figura 3-33. Debemos recalcar varios puntos en relación con las equivalencias de los símbo- los lógicos: 1. Las equivalencias pueden extenderse a las compuertas con cualquier número de entradas. 2. Ninguno de los símbolos estándar tiene burbujas en sus entradas, y todos los símbolos alternativos sí. A B A B A B A B A B A B A B A B A A A • B A + B AB A + B A A A • B = A + B A + B = AB A + B = AB A • B = A + B AND OR NAND NOR INV FIGURA 3-33 Símbolos estándar y alternativos para varias compuertas lógicas y para el inversor. SECCIÓN 3-13/REPRESENTACIONES ALTERNAS DE COMPUERTAS LÓGICAS 87
  • 116. 88 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS 3. Los símbolos estándar y alternativos para cada compuerta representan el mismo circuito físico; no hay diferencia en los circuitos representados por los dos símbolos. 4. Las compuertas NAND y NOR son inversoras, por lo que tanto los símbolos estándar como los alternativos para estas compuertas tendrán una burbuja ya sea en la entrada o en la salida. Las compuertas AND y OR son no inversoras, por lo que los símbolos alternativos para cada una de ellas tendrá burbujas tanto en las entradas como en las salidas. Interpretación de los símbolos lógicos Cada uno de los símbolos de las compuertas lógicas de la figura 3-33 ofrece una inter- pretación única de la manera en que opera la compuerta. Antes de demostrar estas interpretaciones debemos establecer el concepto de los niveles lógicos activos. Cuando una línea de entrada o de salida en el símbolo de un circuito lógico no tiene burbuja, se dice que está activa en ALTO. Cuando una línea de entrada o de salida tiene una burbuja, se dice que está activa en BAJO. Por lo tanto, la presencia o ausencia de una burbuja determina el estado activo en BAJO /activo en ALTO res- pectivamente, de las entradas y la salida de un circuito, y se utiliza para interpretar la operación del mismo. Para ilustrar lo anterior, la figura 3-34(a) muestra el símbolo estándar para una compuerta NAND. Este símbolo estándar tiene una burbuja en su salida y no tiene burbujas en sus entradas. Por lo tanto, tiene una salida activa en BAJO y entradas activas en ALTO. En consecuencia, la operación lógica que representa este símbolo puede interpretarse de la siguiente manera: La salida cambia a BAJO sólo cuando todas las entradas están en ALTO. Observe que esto dice que la salida cambiará a su estado activo sólo cuando todas las entradas se encuentren en sus estados activos. Se utiliza la palabra todas debido al símbolo AND. El símbolo alterno para una compuerta NAND que se muestra en la figura 3-34(b) tiene una salida activa en ALTO y entradas activas en BAJO, por lo que su operación puede declararse así: La salida cambia a ALTO cuando cualquier entrada está en BAJO. Esto quiere decir que la salida estará en su estado activo cuando cualquiera de las entradas se encuentre en su estado activo. Se utiliza la palabra cualquiera debido al símbolo OR. Si lo analiza un poco, podrá ver que las dos interpretaciones para los símbolos NAND de la figura 3-34 son maneras distintas de decir lo mismo. A B AB A B Activa en ALTO El estado BAJO es el estado activo. (a) La salida cambia a BAJO sólo cuando todas las entradas están en ALTO. Activa en BAJO El estado ALTO es el estado activo. (b) La salida está en ALTO cuando cualquier entrada está en BAJO. A + B = AB FIGURA 3-34 Interpretación de los dos símbolos de compuertas NAND.
  • 117. PREGUNTAS DE REPASO Resumen En estos momentos tal vez se esté preguntando por qué la necesidad de tener dos símbolos e interpretaciones distintas para cada una de las compuertas lógicas. Espe- ramos que las razones para ello se aclaren después de que lea la siguiente sección. Por ahora vamos a resumir los puntos importantes en relación con las representacio- nes de las compuertas lógicas. 1. Para obtener el símbolo alternativo para una compuerta lógica, tome el símbolo estándar y cambie su símbolo de operación (OR a AND, o AND a OR). Cambie también las burbujas tanto en las entradas como en la salida (es decir, elimine las burbujas que estén presentes y agregue otras en donde no haya). 2. Para interpretar la operación de una compuerta lógica, primero observe cuál estado lógico (0 o 1) es el activo para las entradas y cuál es el activo para la sali- da. Después tome en cuenta que el estado activo de la salida se produce al tener todas las entradas en su estado activo (si se utiliza un símbolo AND) o cualquiera de las entradas en su estado activo (si se utiliza un símbolo OR). Proporcione la interpretación de los dos símbolos de compuerta OR. Solución Los resultados se muestran en la figura 3-35. Observe que se utiliza la palabra cual- quiera cuando el símbolo de operación es un OR y la palabra todas cuando se usa un AND. 1. Escriba la interpretación de la operación que realiza el símbolo estándar de la compuerta NOR de la figura 3-33. 2. Repita la pregunta 1 para el símbolo alternativo de la compuerta NOR. 3. Repita la pregunta 1 para el símbolo alternativo de la compuerta AND. 4. Repita la pregunta 1 para el símbolo estándar de la compuerta AND. 3-14 CUÁL REPRESENTACIÓN DE COMPUERTA SE DEBE USAR Algunos diseñadores de circuitos lógicos y algunos libros de texto sólo utilizan los símbolos estándar de las compuertas lógicas en los diagramas esquemáticos de sus circuitos. Aunque esta práctica es correcta, no facilita el seguimiento de la opera- ción del circuito. El uso apropiado de los símbolos de compuerta alternativos en el EJEMPLO 3-19 A B A • B = A + B A B A + B Activa en ALTO El estado ALTO es el estado activo. (a) La salida cambia a ALTO cuando cualquiera de sus entradas se encuentra en ALTO. La salida cambia a BAJO sólo cuando todas sus entradas están en BAJO. Activa en BAJO El estado BAJO es el estado activo. (b) FIGURA 3-35 Interpretación de los dos símbolos de compuerta OR. SECCIÓN 3-14/CUÁL REPRESENTACIÓN DE COMPUERTA SE DEBE USAR 89
  • 118. 90 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS diagrama puede hacer mucho más clara la operación del circuito. Para ilustrar lo anterior consideremos el ejemplo que se muestra en la figura 3-36. El circuito de la figura 3-36(a) contiene tres compuertas NAND conectadas para producir una salida Z que depende de las entradas A, B, C y D. El diagrama del cir- cuito utiliza el símbolo estándar para cada una de las compuertas NAND. Aunque la lógica de este diagrama es correcta, no facilita una comprensión de la manera en que funciona el circuito. Sin embargo, las representaciones que se muestran en las figuras 3-36(b) y (c) pueden analizarse con más facilidad para determinar la opera- ción del circuito. La representación de la figura 3-36(b) se obtiene a partir del diagrama del cir- cuito original, sustituyendo la compuerta NAND 3 con su símbolo alternativo. En este diagrama la salida Z se toma del símbolo de una compuerta NAND que tiene una salida activa en ALTO. Por ende, podemos decir que Z cambiará a ALTO cuando X o Y estén en BAJO. Ahora, como X y Y aparecen cada una en la salida de símbolos NAND que tienen salidas activas en BAJO, podemos decir que X cambiará a BAJO sólo si A B 1, y que Y cambiará a BAJO sólo si C D 1. Ahora podemos descri- bir la operación del circuito de la siguiente manera: La salida Z cambiará a ALTO siempre que A B 1 o cuando C D 1 (o en ambos casos). Esta descripción puede traducirse al formato de tablas de verdad si se estable- ce Z 1 para aquellos casos en los que A B 1 y para aquellos casos en los que C D 1. Para todos los demás casos, Z se hace 0. La tabla de verdad resultante se muestra en la figura 3-36(d). La representación de la figura 3-36(c) se obtiene a partir del diagrama del circui- to original, sustituyendo las compuertas NAND 1 y 2 por sus símbolos alternativos. (d) A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 Z 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 1 A B Z C D A B C D A B C D 1 2 3 (a) (b) (c) 1 2 Z X Y Activa en ALTO Z Activa en BAJO X Y 3 3 1 2 FIGURA 3-36 (a) Circuito original que utiliza símbolos NAND estándar; (b) representación equivalente en la cual la salida Z es activa en ALTO; (c) representación equivalente en la cual la salida Z es activa en BAJO; (e) tabla de verdad.
  • 119. En esta representación equivalente, la salida Z se toma de una compuerta NAND en la cual su salida sea activa en BAJO. Por lo tanto, podemos decir que Z cambiará a BAJO sólo cuando X Y 1. Como X y Y son salidas activas en ALTO, podemos decir que X cambiará a ALTO cuando A o B estén en BAJO, y que Y cambiará a ALTO cuando C o D estén en BAJO. De todo esto podemos concluir que la operación del circuito es la siguiente: La salida Z cambiará a BAJO sólo cuando A o B estén en BAJO y C o D estén en BAJO. Esta descripción puede traducirse al formato de tablas de verdad si hacemos que Z 0 para todos los casos en los que cuando menos una de las entradas A o B esté en BAJO al mismo tiempo que cuando menos una de las entradas C o D esté en BAJO. Para todos los demás casos, Z se hace 1. La tabla de verdad resultante es la misma que la que obtuvimos para el diagrama del circuito de la figura 3-36(b). ¿Cuál diagrama de circuito debe usarse? La respuesta a esta pregunta depende de la función específica que vaya a realizar la salida del circuito. Si se va a utilizar para producir cierta acción (por ejemplo, encen- der un LED o activar otro circuito lógico) cuando la salida Z cambia al estado 1, entonces decimos que Z debe ser activa en ALTO, y debemos usar el diagrama del circuito de la figura 3-36(b). Por otro lado, si el circuito se va a utilizar para pro- ducir cierta acción cuando Z cambia al estado 0, entonces Z debe ser activa en BAJO, y debemos usar el diagrama de la figura 3-36(c). Desde luego que habrá situaciones en las que se utilicen ambos estados de la salida para producir distintas acciones, y cualquiera de ellos podría considerarse como el estado activo. Para estos casos puede utilizarse cualquiera de las dos repre- sentaciones del circuito. Colocación de las burbujas Consulte la representación del circuito de la figura 3-36(b) y observe que se seleccio- naron los símbolos para las compuertas NAND 1 y 2 de manera que tengan salidas activas en BAJO, para hacer que coincidan con las entradas activas en BAJO de la compuerta NAND 3. Consulte la representación del circuito de la figura 3-36(c) y observe que se seleccionaron los símbolos para las compuertas NAND 1 y 2 de mane- ra que tengan salidas activas en ALTO, para hacer que coincidan con las entradas activas en ALTO de la compuerta NAND 3. Esto nos conduce a la siguiente regla general para preparar diagramas esquemáticos de circuitos lógicos: Siempre que sea posible, seleccione símbolos de compuerta de manera que las salidas con burbuja se conecten a las entradas con burbuja, y las salidas sin burbuja se conecten a las entradas sin burbuja. Los siguientes ejemplos demostrarán cómo aplicar esta regla. El circuito lógico de la figura 3-37(a) se utiliza para activar una alarma cuando la salida Z cambie a ALTO. Modifique el diagrama del circuito de manera que repre- sente la operación del mismo de una manera más eficiente. EJEMPLO 3-20 A B C D 2 1 Z A B C D 2 1 Z (a) (b) ALARMA ALARMA FIGURA 3-37 Ejemplo 3-20. SECCIÓN 3-14/CUÁL REPRESENTACIÓN DE COMPUERTA SE DEBE USAR 91
  • 120. 92 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS Solución Como la condición Z 1 activa la alarma, Z debe ser activa en ALTO. Por ende, el símbolo de la compuerta AND 2 no tiene que cambiarse. El símbolo de la compuerta NOR debe cambiarse por su símbolo alternativo con una salida sin burbuja (activa en ALTO) para que concuerde con la entrada sin burbuja de la compuerta AND 2, como se muestra en la figura 3-37(b). Observe que ahora el circuito tiene salidas sin burbuja conectadas a las entradas sin burbuja de la compuerta 2. Cuando la salida del circuito lógico de la figura 3-38(a) cambia a BAJO, activa otro circuito lógico. Modifique el diagrama del circuito para representar la operación del mismo más eficazmente. Solución Como Z debe ser activa en BAJO, debemos cambiar el símbolo para la compuerta OR 2 por su símbolo alterno, como se muestra en la figura 3-38(b). El nuevo símbolo de la compuerta OR 2 tiene entradas con burbujas, por lo que los símbolos de la compuerta AND y de la compuerta OR 1 deben cambiarse por símbolos que tengan salidas con burbuja, como se muestra en la figura 3-38(b). El INVERSOR ya tiene una salida con burbuja. Ahora el circuito tiene todas sus salidas con burbuja conec- tadas a las entradas con burbuja de la compuerta OR 2. Análisis de circuitos Cuando se dibuja el diagrama esquemático de un circuito lógico utilizando las reglas que hemos seguido en estos ejemplos, es mucho más fácil para un ingeniero, técnico o estudiante seguir el flujo de la señal a través del circuito y determinar las condi- ciones de entrada necesarias para activar la salida. Ilustraremos esto en los siguien- tes ejemplos que, por coincidencia, utilizan diagramas de circuitos tomados de los diagramas esquemáticos lógicos de una microcomputadora real. El circuito lógico de la figura 3-39 genera una salida llamada MEM que se utili- za para activar los circuitos integrados de memoria en cierta microcomputadora. Determine las condiciones de entrada necesarias para activar a MEM. EJEMPLO 3-21 E D C B A 1 2 Z (b) E D C B A Z (a) 1 2 FIGURA 3-38 Ejemplo 3-21. EJEMPLO 3-22
  • 121. Solución Una manera de hacerlo sería escribir la expresión para MEM en términos de las entradas RD, ROM-A, ROM-B y RAM, y evaluarla para las 16 combinaciones posibles de estas entradas. Aunque este método sí funcionaría, se requeriría mucho más tra- bajo del necesario. Un método más eficiente es interpretar el diagrama del circuito utilizando las ideas que hemos desarrollado en las últimas dos secciones. Éstos son los pasos: 1. MEM es activa en BAJO y cambará a BAJO sólo cuando X y Y estén en ALTO. 2. X estará en ALTO sólo cuando RD 0. 3. Y estará en ALTO cuando W o V estén en ALTO. 4. V estará en ALTO cuando RAM 0. 5. W estará en ALTO cuando ROM-A o ROM-B 0. 6. Con todo esto podemos deducir que MEM cambiará a BAJO sólo cuando RD 0 y cuando menos una de las tres entradas ROM-A, ROM-B o RAM esté en BAJO. El circuito lógico de la figura 3-40 se utiliza para controlar el motor de control del eje de una unidad de disco flexible cuando la microcomputadora envía o recibe datos hacia o desde el disco. El circuito encenderá el motor cuando UNIDAD 1. Determine las condiciones necesarias de entrada para encender el motor. EJEMPLO 3-23 MEM Y X V W RD ROM-A ROM-B RAM FIGURA 3-39 Ejemplo 3-22. Nota: Todas las compuertas son CMOS UNIDAD Y W 74HC30 74HC32 74HC02 A1 A2 A3 A4 A5 A6 A7 ENTRADA SALIDA A0 X 74HC02 FIGURA 3-40 Ejemplo 3-23. SECCIÓN 3-14/CUÁL REPRESENTACIÓN DE COMPUERTA SE DEBE USAR 93
  • 122. 94 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS Solución Una vez más, interpretaremos el diagrama paso por paso: 1. UNIDAD estará activa en BAJO y cambiará a ALTO sólo cuando X Y 0. 2. X estará en BAJO cuando ENTRADA o SALIDA estén en ALTO. 3. Y estará en BAJO sólo cuando W 0 y A0 0. 4. W estará en BAJO sólo cuando todas las entradas de la A1 a la A7 estén en ALTO. 5. De todo esto podemos deducir que UNIDAD estará en ALTO cuando A1 A2 A3 A4 A5 A6 A7 1 y A0 0, y cuando ni ENTRADA o SALIDA ni ambas estén en 1. ObserveelextrañosímboloparalacompuertaNANDCMOSdeochoentradas(74HC30); observe además que la señal A7 está conectada a dos de las entradas NAND. Niveles asignados Hemos estado describiendo las señales lógicas como activas en BAJO o activas en ALTO. Por ejemplo, la salida MEM en la figura 3-39 es activa en BAJO y la salida UNIDAD en la figura 3-40 es activa en ALTO, ya que son los estados de salida que hacen que ocurra algo. De manera similar, la figura 3-40 tiene las entradas de la A0 a la A7 activas en ALTO y la entrada A0 activa en BAJO. Cuando una señal lógica se encuentra en su estado activo, podemos decir que está asignada. Por ejemplo, cuando decimos que la entrada A0 está asignada, signifi- ca que se encuentra en su estado de activa en BAJO. Cuando una señal no se encuen- tra en su estado activo, se dice que está no asignada. Por ende, cuando decimos que UNIDAD está no asignada, significa que se encuentra en su estado inactivo (bajo). Es evidente que los términos asignado y no asignado son sinónimos de activo e inactivo, respectivamente: asignado activo no asignado inactivo Ambos conjuntos de términos son de uso común en el campo digital, por lo que usted debe ser capaz de reconocer ambas formas de describir el estado activo de una señal lógica. Etiquetado de señales lógicas activas en BAJO El uso de una barra superior para etiquetar las señales activas en BAJO se ha con- vertido en práctica común. La barra superior sirve como otra indicación de que la señal es activa en BAJO; desde luego que la ausencia de una barra superior indica que la señal es activa en ALTO. Como ejemplo, todas las señales de la figura 3-39 son activas en BAJO y pueden etiquetarse de la siguiente manera: Recuerde que la barra superior es sólo una manera de enfatizar que estas seña- les son activas en BAJO. Emplearemos esta convención para etiquetar las señales lógicas siempre que sea apropiado. Etiquetado de señales biestado Es muy común que una señal de salida tenga dos estados activos; es decir, que tiene una función importante en el estado ALTO y otra en el estado BAJO. Es costumbre etiquetar dichas señales de manera que ambos estados activos sean aparentes. Un ejemplo común es la señal de lectura/escritura RD/WR, la cual se interpreta de la siguiente manera: cuando esta señal está en ALTO se realiza la operación de lectura (RD); cuando está en BAJO se realiza la operación de escritura (WR). , , , , MEM RAM ROM-B ROM-A RD
  • 123. PREGUNTAS DE REPASO 1. Use el método de los ejemplos 3-22 y 3-23 para determinar las condiciones de entrada necesarias para activar la salida del circuito de la figura 3-37(b). 2. Repita la pregunta 1 para el circuito de la figura 3-38(b). 3. ¿Cuántas compuertas NAND se muestran en la figura 3-39? 4. ¿Cuántas compuertas NOR se muestran en la figura 3-40? 5. ¿Cuál será el nivel de salida en la figura 3-38(b) cuando todas las entradas estén asignadas? 6. ¿Qué entradas se requieren para asignar la salida de alarma en la figura 3-37(b)? 7. ¿Cuál de las siguientes señales es activa en BAJO: RD, W, R/W? 3-15 SÍMBOLOS LÓGICOS DEL ESTÁNDAR IEEE/ANSI Los símbolos lógicos que hemos utilizado hasta ahora en este capítulo son los símbo- los estándar tradicionales utilizados en la industria digital durante muchos, muchos años. Estos símbolos tradicionales utilizan una forma distintiva para cada compuer- ta lógica. En 1984 se desarrolló un estándar más reciente para los símbolos lógicos; a éste se le conoce como Estándar IEEE/ANSI 91-1984 para símbolos lógicos. El estándar IEEE/ANSI utiliza símbolos rectangulares para representar todas las com- puertas y circuitos lógicos. Una notación de dependencia especial dentro del símbolo rectangular indica cómo dependen las salidas del dispositivo de sus entradas. La figura 3-41 muestra los símbolos IEEE/ANSI a un lado de los símbolos tradicionales para las compuertas lógicas básicas. Observe los siguientes puntos: 1. Los símbolos rectangulares utilizan un pequeño triángulo rectángulo ( ) en lugar de la pequeña burbuja de los símbolos tradicionales para indicar la inver- sión del nivel lógico. La presencia o ausencia del triángulo también indica si una entrada o salida es activa en nivel BAJO o ALTO. SECCIÓN 3-15/SÍMBOLOS LÓGICOS DEL ESTÁNDAR IEEE/ANSI 95 x x x x x A B A B A B A B A A B A B A B A B A x x x x x (b) (a) NOR NAND OR AND NOT 1 ≥1 ≥1 FIGURA 3-41 Símbolos lógicos estándar: (a) tradicionales; (b) IEEE/ANSI.
  • 124. 96 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS PREGUNTAS DE REPASO 2. Una notación especial dentro de cada símbolo rectangular describe la relación lógica entra las entradas y la salida. El “1” dentro del símbolo INVERSOR deno- ta un dispositivo con sólo una entrada; el triángulo en la salida indica que ésta cambiará al estado activo en BAJO cuando la entrada se encuentre en su estado activo en ALTO. El “” dentro del símbolo AND significa que la salida cambia- rá a su estado activo en ALTO cuando todas las entradas se encuentren en el estado activo en ALTO. El “ ” dentro de la compuerta OR indica que la salida cambiará a su estado activo (ALTO) siempre que cualquiera de las entradas se encuentre en su estado activo (ALTO). 3. Los símbolos rectangulares para las compuertas NAND y NOR son los mismos que para las compuertas AND y OR, respectivamente, con la adición del peque- ño triángulo inversor en la salida. ¿Tradicional o IEEE/ANSI? El estándar IEEE/ANSI no ha sido muy aceptado todavía en el campo digital, aunque tal vez se encuentre con él en algunos diagramas esquemáticos de equipos recientes. La mayoría de los libros de datos de CI digitales incluyen los símbolos tradicionales y también los de IEEE/ANSI, ya que es posible que este estándar, más reciente, se uti- lice cada vez más. En la mayoría de los diagramas de circuitos de este libro emplea- remos los símbolos tradicionales. 1. Dibuje todas las compuertas lógicas básicas tanto con los símbolos tradicionales como con los símbolos IEEE/ANSI. 2. Dibuje el símbolo IEEE/ANSI para una compuerta NOR con la salida activa en ALTO. 3-16 RESUMEN DE LOS MÉTODOS PARA DESCRIBIR CIRCUITOS LÓGICOS Los temas que hemos visto en este capítulo están centrados alrededor de sólo tres funciones lógicas simples que conocemos como AND, OR y NOT. El concepto no es nuevo, ya que todos usamos estas funciones lógicas en nuestra vida diaria cuando tomamos decisiones. He aquí algunos ejemplos lógicos. Si está lloviendo O (OR) el periódico dice que podría llover, entonces llevaré mi paraguas. Si recibo mi cheque de nómina hoyY (AND) llego al banco, entonces tendré dinero para gastar esta tarde. Si tengo una calificación aprobatoria en teoría Y (AND) NO (NOT) he fallado en el laboratorio, entonces aprobaré mi clase de circuitos digitales. En estos momentos tal vez usted se pregunte por qué hemos invertido tantos esfuerzos para describir estos conceptos familiares. La respuesta puede resumirse en dos puntos clave: 1. Debemos ser capaces de representar estas decisiones lógicas. 2. Debemos ser capaces de combinar estas funciones lógicas y de implementar un sistema de toma de decisiones. Hemos aprendido a representar cada una de las funciones lógicas básicas mediante el uso de: Declaraciones lógicas en nuestro propio lenguaje. Tablas de verdad. Símbolos lógicos gráficos tradicionales.
  • 125. Símbolos lógicos del estándar IEEE/ANSI. Expresiones de álgebra booleana. Diagramas de tiempos. La siguiente expresión describe la manera en que un circuito lógico necesita operar para poder controlar un indicador de advertencia del cinturón de seguridad de un automóvil. Si el conductor está presente Y (AND) el conductor NO (NOT) tiene el cinturón enganchado Y (AND) el interruptor de encendido está activado, ENTONCES encender la luz de advertencia. Describa el circuito utilizando álgebra booleana, diagramas esquemáticos con sím- bolos lógicos, tablas de verdad y diagramas de tiempos. Solución Vea la figura 3-42. EJEMPLO 3-24 Expresión booleana luz_advertencia 5 conductor_presente • cinturon_enganchado • interruptor_encendido (a) Diagrama esquemático conductor_presente cinturon_enganchado interruptor_encendido (b) Tabla de verdad conductor_presente 0 0 0 0 1 1 1 1 cinturon_enganchado 0 0 1 1 0 0 1 1 interruptor_encendido 0 1 0 1 0 1 0 1 Luz_advertencia 0 0 0 0 0 1 0 0 (c) Diagrama de tiempos Nombre ignition_on buckled_up driver_present warning_light 0 0 1 0 Val 1.0 ms 2.0 ms 3.0 ms 4.0 ms 5.0 ms 6.0 ms 7.0 ms 8.0 ms 9.0 ms 10 m (d) Luz_advertencia FIGURA 3-42 Métodos para describir circuitos lógicos: (a) expresión booleana; (b) diagrama esquemático; (c) tablas de verdad; (d) diagrama de tiempos. SECCIÓN 3-16/RESUMEN DE LOS MÉTODOS PARA DESCRIBIR CIRCUITOS. . . 97
  • 126. 98 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS PREGUNTAS DE REPASO La figura 3-42 muestra cuatro maneras distintas de representar el circuito lógico que se describió verbalmente en el problema del ejemplo 3-24. Hay muchas otras formas en que podríamos representar la lógica para esta decisión. Como ejemplo podríamos idear todo un conjunto nuevo de símbolos gráficos, o enunciar la relación lógica en un idioma diferente como francés o japonés. Desde luego que no podemos cubrir todas las formas posibles de describir un circuito lógico, pero debemos comprender los métodos más comunes para poder comunicarnos con otras personas en esta pro- fesión. Lo que es más, ciertas situaciones son más fáciles de describir si utilizamos un método en lugar de otro. En algunos casos una imagen vale más que mil palabras; en otros las palabras son lo bastante concisas y se comunican con más facilidad a los demás. El punto importante aquí es que necesitamos formas de describir y comuni- car la operación de los sistemas digitales. 1. Nombre cinco formas de describir la operación de los circuitos lógicos. 3-17 COMPARACIÓN ENTRE LENGUAJES DE DESCRIPCIÓN Y LENGUAJES DE PROGRAMACIÓN* Las tendencias recientes en el campo de los sistemas digitales están a favor de la descripción de los circuitos digitales mediante el lenguaje basado en texto. Tal vez usted haya notado que cada método de descripción de la figura 3-42 presenta obs- táculos para introducir los datos a la computadora, ya sea por las barras superiores, los símbolos, el formato o el dibujo de líneas. En esta sección empezaremos a cono- cer algunas de las herramientas más avanzadas que utilizan los profesionales en el área de sistemas digitales para describir los circuitos que implementan sus ideas. A estas herramientas se les conoce como lenguajes de descripción de hardware (HDL). Aún con las poderosas computadoras que tenemos actualmente, no es posible des- cribir un circuito lógico en lenguaje común (como español o inglés) y esperar que la computadora lo entienda. Las computadoras necesitan un lenguaje definido con más rigidez. En este libro nos enfocaremos en dos lenguajes: el lenguaje de descrip- ción de hardware de Altera (AHDL) y el lenguaje de descripción de hardware para circuitos integrados de muy alta velocidad (VHDL). VHDL y AHDL VHDL no es un lenguaje nuevo. El Departamento de Defensa de los Estados Unidos lo desarrolló a principios de la década de 1980 como una forma concisa de docu- mentar los diseños en el proyecto de circuitos integrados de muy alta velocidad (VHSIC). Como era demasiado adjuntar HDL a este acrónimo (incluso hasta para los militares), el lenguaje se abrevió como VHDL. Se desarrollaron programas de computadora para tomar los archivos de lenguaje VHDL y simular la operación de los circuitos. Con el crecimiento de los dispositivos lógicos programables com- plejos en los sistemas digitales, VHDL ha evolucionado para convertirse en uno de los principales lenguajes de descripción de hardware de alto nivel para diseñar e implementar circuitos digitales (síntesis). El IEEE estandarizó este lenguaje, con lo cual se hizo atractivo para los ingenieros, así como para los fabricantes de herra- mientas de software que traducen los diseños a los patrones de bits utilizados para programar los dispositivos reales. AHDL es un lenguaje desarrollado por Altera Corporation para ofrecer una for- ma conveniente de configurar los dispositivos lógicos que ofrecen. Altera fue una de las primeras compañías en introducir dispositivos lógicos que pueden reconfigurarse * Se pueden omitir todas las secciones que hablan sobre los lenguajes de descripción de hardware sin perder la continuidad en el balance de los capítulos del 1 al 12.
  • 127. mediante electrónica. A estos dispositivos se les conoce como dispositivos lógicos pro- gramables (PLDs).A diferencia delVHDL, este lenguaje no está diseñado para usarse como un lenguaje universal para describir cualquier circuito lógico, sino para progra- mar sistemas digitales complejos en PLDs de Altera, en un lenguaje que se perciba en general como más sencillo de aprender, pero que es muy similar alVHDL.También cuenta con características que aprovechan por completo la arquitectura de los dispo- sitivos de Altera. En todos los ejemplos de este libro utilizaremos el software Altera MAX PLUS II o Quartus II para desarrollar archivos de diseño en AHDL y VHDL. Podrá ver la ventaja de usar el sistema de desarrollo de Altera para ambos lenguajes cuando programe un dispositivo real. El sistema de Altera facilita el desarrollo de circuitos en forma considerable; además, contiene todas las herramientas necesarias para traducir el archivo de diseño de HDL a uno listo para cargarse en un PLD de Alte- ra.También le permite desarrollar bloques de construcción mediante la introducción de diagramas esquemáticos, AHDL,VHDL y otros métodos, para después interconec- tar esos bloques y formar un sistema completo. Hay otros HDLs disponibles que son más adecuados para programar disposi- tivos lógicos más simples. Después de que, con la ayuda de este libro, aprenda los fundamentos de AHDL o VHDL, le parecerá fácil utilizar cualquiera de los otros lenguajes. Lenguajes de programación de computadoras Es importante diferenciar entre los lenguajes de descripción de hardware, que están diseñados para describir la configuración de hardware de un circuito, y los lengua- jes de programación que representan una secuencia de instrucciones que deben ser llevadas a cabo por una computadora para realizar cierta tarea. En ambos casos utilizamos un lenguaje para programar un dispositivo. No obstante, las computado- ras son sistemas digitales complejos que se fabrican a partir de circuitos lógicos. Las computadoras operan mediante el seguimiento de una lista de tareas (es decir, instrucciones o “el programa”), cada una de las cuales debe realizarse en un orden secuencial. La velocidad de operación se determina con base en la rapidez de la computadora para ejecutar cada instrucción. Por ejemplo, si una computadora fuera a responder a cuatro entradas distintas, requeriría cuando menos cuatro instruccio- nes (tareas secuenciales) para detectar e identificar cuál entrada cambió de estado. Por otro lado, la velocidad de un circuito lógico digital está limitada sólo por la rapi- dez con la que la circuitería pueda cambiar las salidas en respuesta a los cambios en las entradas. Supervisa todas las entradas en forma concurrente (al mismo tiempo) y responde a cualquier cambio. La siguiente analogía le ayudará a comprender la diferencia entre la operación de una computadora y la operación de un circuito lógico digital, junto con el papel de los elementos de lenguaje que se utilizan para describir lo que hacen los sistemas. Considere el reto de describir lo que se le hace a un auto de carreras durante una parada en los pits. Si una sola persona realizara todas las tareas necesarias, una por una, tendría que ser muy rápida. Ésta es la forma en la que opera una computado- ra: una tarea a la vez, pero con mucha rapidez. Desde luego que en las competencias de autos hay todo un equipo de mecánicos en los pits que invade el auto, y cada miembro realiza su tarea mientras los demás realizan la suya.Todos los miembros del equipo operan en forma concurrente, al igual que los elementos de un circuito digi- tal. Ahora considere la forma en que usted describiría a alguien más lo que se está haciendo al auto de carreras durante la parada en los pits, utilizando (1) el enfoque del mecánico individual o (2) el enfoque del equipo de mecánicos. ¿No serían muy similares las dos descripciones verbales de lo que se está haciendo? Como veremos, los lenguajes que se utilizan para describir el hardware digital (HDL) son muy simi- lares a los lenguajes que describen los programas de computadora (por ejemplo, BASIC, C, JAVA), aún y cuando la implementación resultante opera en formas muy distintas. No es necesario conocer cualquiera de estos lenguajes de programación para comprender el HDL. Lo importante es que cuando usted haya aprendido a usar tanto el HDL como un lenguaje de computadora, deberá comprender el papel particu- lar de cada uno en los sistemas digitales. SECCIÓN 3-17/COMPARACIÓN ENTRE LENGUAJES DE DESCRIPCIÓN Y. . . 99
  • 128. 100 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS PREGUNTAS DE REPASO Compare la operación de una computadora y un circuito lógico al realizar la opera- ción lógica simple de y AB. Solución El circuito lógico es una simple compuerta AND. La salida y estará en ALTO dentro de un lapso aproximado de 10 nanosegundos después del punto en el que A y B estén en ALTO al mismo tiempo. La salida y estará en BAJO dentro de un lapso aproximado de 10 nanosegundos después de que cualquiera de las entradas cambie a BAJO. La computadora debe ejecutar un programa de instrucciones que realice deci- siones. Suponga que cada instrucción toma 20 ns (bastante rápido). Cada figura del diagrama de flujo que se muestra en la figura 3-43 representa una instrucción. Es evidente que se requerirá un mínimo de dos o tres instrucciones (40-60 ns) para res- ponder a los cambios en las entradas. 1. ¿Qué significa HDL? 2. ¿Cuál es el propósito de un HDL? 3. ¿Cuál es el propósito de un lenguaje de programación de computadoras? 4. ¿Cuál es la diferencia clave entre el HDL y los lenguajes de programación de computadoras? 3-18 IMPLEMENTACIÓN DE CIRCUITOS LÓGICOS CON PLDS En la actualidad, muchos circuitos digitales se implementan mediante el uso de dispositivos lógicos programables (PLDs). Estos dispositivos no son como las micro- computadoras o los microcontroladores, los cuales “ejecutan” un programa de ins- trucciones. En vez de ello se configuran en forma electrónica y sus circuitos internos están “alambrados” entre sí en forma electrónica para formar un circuito lógico. Este alambrado programable puede considerarse como miles de conexiones que están conectadas (1) o no conectadas (0). La figura 3-44 muestra una pequeña área de conexiones programables. Cada cruce de una fila (alambre horizontal) y una columna (alambre vertical) es una conexión programable. Es fácil imaginar lo difícil EJEMPLO 3-25 FIGURA 3-43 El proceso de decisiones de un programa de computadora. Regresar y repetir Hacer que y cambie a BAJO Hacer que y cambie a BAJO Hacer que y cambie a ALTO ¿Está B en ALTO? ¿Está A en ALTO? No Sí No Sí
  • 129. PREGUNTAS DE REPASO A B C D E F G H Matriz de conexiones programables Circuitos lógicos ENTRADAS digitales que sería tratar de configurar estos dispositivos mediante la colocación de 1s y 0s en una matriz en forma manual (que es como se hacía en la década de 1970). El papel del lenguaje de descripción de hardware es proporcionar una manera concisa y conveniente para que el diseñador describa la operación del circuito en un formato que una computadora personal pueda manejar y almacenar adecuada- mente. La computadora ejecuta una aplicación de software especial llamada com- pilador para traducir el lenguaje de descripción de hardware en la matriz de 1s y 0s que pueden cargarse en el PLD. Si una persona puede dominar el lenguaje de descripción de hardware de mayor nivel, le será más fácil programar los PLDs que tratar de usar álgebra booleana, dibujos esquemáticos o tablas de verdad. En for- ma muy parecida a como aprendemos un idioma, empezaremos por expresar cosas simples y poco a poco iremos aprendiendo los aspectos más complicados de estos lenguajes. Nuestro objetivo es que aprenda lo suficiente sobre HDL como para que se comunique con los demás y realice tareas simples. La total comprensión de todos los detalles sobre estos lenguajes es algo que está fuera del alcance de este libro, ya que sólo puede dominarse mediante la práctica regular. En las secciones de este libro que tratan acerca de los HDLs presentaremos tanto a AHDL como aVHDL en un formato que le permita omitir un lenguaje y con- centrarse en el otro sin perderse de información importante. Desde luego que esto implica que habrá cierta información redundante presente si usted opta por leer sobre ambos lenguajes. Sentimos que esta redundancia vale el esfuerzo de propor- cionarle la flexibilidad de enfocarse en cualquiera de los dos lenguajes, o de apren- der ambos al comparar y contrastar ejemplos similares. La forma recomendada de utilizar el libro es enfocarse en un lenguaje. Es cierto que la manera más sencilla de volverse bilingüe y eficiente en ambos lenguajes es crecer en un entorno en el que ambos lenguajes se hablen de manera rutinaria. No obstante, también es muy fácil confundir los detalles, por lo que mantendremos los ejemplos específicos sepa- rados e independientes. Esperamos que este formato le brinde la oportunidad de aprender un lenguaje ahora y, más adelante, utilizar este libro como referencia, en caso de que necesite aprender el segundo lenguaje. 1. ¿Qué significa PLD? 2. ¿Cómo se reconfiguran los circuitos en forma electrónica en un PLD? 3. ¿Qué hace un compilador? FIGURA 3-44 Configuración de las conexiones de hardware con los dispositivos lógicos programables. SECCIÓN 3-18/IMPLEMENTACIÓN DE CIRCUITOS LÓGICOS CON PLDS 101
  • 130. 102 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS 3-19 FORMATOY SINTAXIS DEL HDL Todos los lenguajes tienen sus propiedades particulares, sus similitudes con otros lenguajes y su propia sintaxis. Cuando estudiamos gramática en la escuela, apren- demos convenciones tales como el orden de las palabras como elementos en una oración y la puntuación apropiada. A esto se le conoce como la sintaxis del lengua- je. Un lenguaje diseñado para que la computadora lo interprete debe seguir reglas estrictas de sintaxis. Una computadora es tan sólo un conjunto de alambre y arena de playa procesada (silicio) que no tiene idea de lo que uno “quiere” darle a enten- der, por lo que debemos presentar las instrucciones usando la sintaxis exacta que el lenguaje de computadora espera y comprende. El formato básico de la descripción de cualquier circuito de hardware, en cualquier lenguaje, implica dos elementos vitales: 1. La definición de lo que entra al circuito y lo que sale de éste, es decir las espe- cificaciones de entradas/salidas. 2. La definición de la forma en que las salidas responden a las entradas, es decir su operación. Un ingeniero o técnico competente podría leer un diagrama esquemático como el de la figura 3-45, ya que ambos comprenderían el significado de cada uno de los símbolos en el dibujo. Si usted comprende cómo funciona cada elemento y cómo se conectan los elementos entre sí, podrá comprender la forma en que opera el circuito. En el lado izquierdo del diagrama está el conjunto de entradas y a la derecha está el conjunto de salidas. Los símbolos del centro definen su operación. El lenguaje basado en texto debe transmitir la misma información. Todos los HDLs utilizan el formato que se muestra en la figura 3-46. En un lenguaje basado en texto, el circuito que se describe debe tener un nom- bre. Se deben asignar nombres a las entradas y las salidas (algunas veces llamadas puertos), y se deben definir de acuerdo con la naturaleza del puerto. ¿Es un bit individual de un interruptor? ¿O es un número de cuatro bits que proviene de un teclado numérico? El lenguaje basado en texto debe transmitir de alguna forma la naturaleza de estas entradas y salidas. El modo de un puerto define si es de entrada, de salida o de entrada/salida. El tipo se refiere al número de bits y la manera en que éstos se agrupan y se interpretan. Si el tipo de entrada es de un solo bit, entonces sólo puede tener dos valores posibles: 0 y 1. Si el tipo de entrada es un número bina- rio de cuatro bits que proviene de un teclado numérico, puede tener cualquiera de 16 valores distintos (00002 11112). El tipo determina el intervalo de valores posi- bles. En un lenguaje basado en texto, la definición de la operación del circuito está FIGURA 3-45 Descripción de un diagrama esquemático. y SALIDA a ENTRADA b AND2 ENTRADA Descripción funcional Definiciones de E/S Documentación FIGURA 3-46 Formato de los archivos de HDL.
  • 131. PREGUNTAS DE REPASO contenida dentro de un conjunto de instrucciones que van después de la definición de entrada/salida (E/S) del circuito. En las siguientes dos secciones describiremos el circuito simple de la figura 3-45 e ilustraremos los elementos críticos del AHDL y del VHDL. DESCRIPCIÓN BOOLEANA MEDIANTE EL USO DE AHDL Consulte la figura 3-47. La palabra clave SUBDESIGN asigna un nombre al bloque del circuito, que en este caso es compuerta_and. El nombre del archivo también debe ser compuerta_and.tdf. Observe que la palabra clave SUBDESIGN está en mayúscu- las. El software no lo requiere, pero el uso de un estilo consistente en cuanto a las mayúsculas y minúsculas facilita en forma considerable la lectura del código. La guía de estilo que se incluye con el compilador de Altera para AHDL sugiere el uso de letras mayúsculas para las palabras clave del lenguaje. Las variables que nombre el diseñador deben estar en minúsculas. La sección SUBDESIGN define las entradas y salidas del bloque del circuito lógico. Algo debe encerrar al circuito que estamos tratando de describir, al igual que un diagrama de bloques encierra a todo lo que forma parte del diseño. En AHDL, esta definición de entrada/salida se encierra entre paréntesis. La lista de variables utilizadas como entradas para este bloque se separa mediante comas y va seguida de :INPUT;. En AHDL se asume el uso del tipo bit individual, a menos que la varia- ble se designe como varios bits. El bit de salida individual se declara con el modo :OUTPUT;. Aprenderemos la forma correcta de describir otros tipos de entradas, salidas y variables a medida que lo vayamos necesitando. El conjunto de instrucciones que describe la operación del circuito en AHDL está contenido en la sección lógica, entre las palabras clave BEGIN y END. En este ejemplo, la operación de hardware se describe mediante una ecuación de álgebra booleana muy simple, la cual establece que a la salida (y) se le debe asignar () el nivel lógico producido por a AND b. A esta ecuación de álgebra booleana se le cono- ce como instrucción de asignación concurrente. Cualquier instrucción (sólo hay una en este ejemplo) entre BEGIN y END se evaluará en forma constante y concurrente. El orden en el que se listen no tiene nada que ver. Los operadores booleanos básicos son: AND # OR ! NOT $ XOR 1. ¿Qué aparece dentro de los paréntesis ( ) después de SUBDESIGN? 2. ¿Qué aparece entre BEGIN y END? FIGURA 3-47 Elementos esenciales en AHDL. SUBDESIGN compuerta and ( a, b :INPUT; y :OUTPUT; ) BEGIN y a b; END; A H D L SECCIÓN 3-19/FORMATO Y SINTAXIS DEL HDL 103
  • 132. 104 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS PREGUNTAS DE REPASO DESCRIPCIÓN BOOLEANA MEDIANTE EL USO DEVHDL Consulte la figura 3-48. La palabra clave ENTITY asigna un nombre al bloque del circuito, que en este caso es compuerta_and. Observe que la palabra ENTITY está en mayúsculas pero compuerta_and no. El software no requiere esto, pero el uso de un estilo consistente en cuanto a las mayúsculas y minúsculas facilita en forma considerable la lectura del código. La guía de estilo que se incluye con el compilador de Altera paraVHDL sugiere el uso de letras mayúsculas para las palabras clave del lenguaje. Las variables que nombra el diseñador deben estar en minúsculas. La declaración ENTITY puede considerarse como la descripción de un bloque. Algo debe encerrar al circuito que estamos tratando de describir, al igual que un diagrama de bloques encierra a todo lo que forma parte del diseño. En VHDL, la palabra clave PORT indica al compilador que estamos definiendo entradas y salidas para el bloque de este circuito. Se listan los nombres utilizados para las entradas (separados por comas) y se termina con un punto y coma, junto con una descripción del modo y del tipo de entrada (:IN BIT). EnVHDL, la descripción BIT indica al com- pilador que cada una de las variables en la lista es un bit individual. Aprenderemos la forma apropiada de describir otros tipos de entradas, salidas y variables a medida que lo vayamos necesitando. La línea que contiene END compuerta_and; termina la declaración ENTITY. La declaración ARCHITECTURE se utiliza para describir la operación de todo lo que se encuentra dentro del bloque. El diseñador inventa un nombre para esta descripción arquitectónica del funcionamiento interno del bloque ENTITY (ckt en este ejemplo). Todo bloque ENTITY debe tener cuando menos una declaración ARCHITECTURE asociada a él. Las palabras OF e IS son palabras clave en esta declaración. El cuerpo de la descripción de la arquitectura va encerrado entre las palabras clave BEGIN y END. END va seguida del nombre que se asignó a esta arqui- tectura. Dentro del cuerpo (entre BEGIN y END) está la descripción de la operación del bloque. En este ejemplo, la operación del hardware se describe mediante una ecuación de álgebra booleana muy simple, la cual establece que a la salida (y) se le debe asignar () el nivel lógico producido por a AND b. A esto se le conoce como una instrucción de asignación concurrente, lo cual significa que todas las instruc- ciones (sólo hay una en este ejemplo) entre BEGIN y END se evaluarán en forma constante y concurrente. El orden en el que se listen no es relevante. 1. ¿Cuál es la función de la declaración ENTITY? 2. ¿Qué sección clave define la operación del circuito? 3. ¿Cuál es el operador de asignación que se utiliza para asignar un valor a una señal lógica? V H D L FIGURA 3-48 Elementos esenciales en VHDL. ENTITY compuerta and IS PORT ( a, b :IN BIT; y :OUT BIT); END compuerta and; ARCHITECTURE ckt OF compuerta and IS BEGIN y = a AND b; END ckt;
  • 133. 3-20 SEÑALES INTERMEDIAS En muchos diseños se tiene la necesidad de definir puntos de señal “dentro” del bloque del circuito. Son puntos en el circuito que no son entradas ni salidas para el bloque, pero que pueden ser útiles como punto de referencia. Puede ser una señal que necesite conectarse a muchos otros lugares dentro del bloque. En un diagrama esquemático analógico o digital se llamarían puntos de prueba o nodos. En un HDL se conocen como nodos ocultos o señales locales. La figura 3-49 muestra un circuito muy simple que utiliza una señal intermedia llamada m. En el HDL estos nodos (señales) no se definen con las entradas y salidas, sino en la sección que describe la operación del bloque. Las entradas y salidas están disponibles para otros bloques de circuito en el sistema, pero estas señales locales se reconocen sólo dentro de este bloque. En el código de ejemplo que viene a continuación, observe la información en la parte superior. El propósito de esta información es sólo con fines de documentación. En definitiva es imprescindible que el diseño se documente con todos los detalles posibles. Como mínimo, debe describir el proyecto en el que se está usando, quién lo escribió y la fecha. Por lo general, a esta información se le conoce como el encabeza- do. En este libro vamos a mantener nuestros encabezados breves para que sea más ligero cuando lo lleve a su clase, pero recuerde que el espacio en memoria casi no cuesta y la información es valiosa, así que no tenga miedo de documentar sus proyectos con todo el detalle posible. También hay comentarios enseguida de instrucciones en el código. Estos comentarios sirven al diseñador para recordar lo que estaba tratan- do de hacer, además ayudan a que cualquier otra persona comprenda el significado del código. NODOS OCULTOS EN AHDL El Código AHDL que describe el circuito de la figura 3-49 se muestra en la figura 3-50. Los comentarios en AHDL pueden ir encerrados entre caracteres %, como podemos ver entre las líneas 1 y 4. Esta sección del código permite al diseñador escribir muchas líneas de información que serán ignoradas por los programas de computadora que utilicen este archivo, pero para cualquier persona que trate de descifrar el código serán muy útiles. Observe que los comentarios al final de las líneas 9, 10, 13, 15 y 16 van precedidos por dos guiones cortos (--). El texto des- pués de los guiones cortos es sólo para documentación. Puede usarse cualquiera de estos símbolos para comentarios, pero los signos de porcentaje deben usarse en pares para abrir y cerrar un comentario. Los dos guiones cortos indican un comenta- rio que se extiende hasta el final de la línea. En AHDL las señales locales se declaran en la sección VARIABLE, la cual se coloca entre la sección SUBDESIGN y la sección lógica. La señal intermedia m se define en la línea 11, después de la palabra clave VARIABLE. La palabra clave NODE designa la naturaleza de la variable. Observe que un signo de dos puntos a ENTRADA b y SALIDA c m Señal intermedia m ENTRADA ENTRADA FIGURA 3-49 Diagrama de un circuito lógico con una variable intermedia. A H D L SECCIÓN 3-20/SEÑALES INTERMEDIAS 105
  • 134. 106 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS PREGUNTAS DE REPASO separa el nombre de la variable de su designación de nodo. En la descripción de hardware de la línea 13, la variable intermedia se asigna (se conecta) a un valor (m a b;) y después m se utiliza en la segunda instrucción en la línea 14 para asignar (conectar) un valor a y (y m # c;). Recuerde que las instrucciones de asig- nación son concurrentes y por ende no importa el orden en el que se proporcionan. Para que los humanos podamos leerlas, es más lógico asignar valores a variables intermedias antes de usarlas en otras instrucciones de asignación, tal y como se muestra en este ejemplo. 1. ¿Cuál es la designación que se utiliza para las variables intermedias? 2. ¿En dónde se declaran estas variables? 3. ¿Importa si la ecuación m o y se declara primero? 4. ¿Qué carácter se utiliza para limitar un bloque de comentarios? 5. ¿Qué caracteres se utilizan para comentar una sola línea? SEÑALES LOCALES DEVHDL El código de VHDL que describe el circuito de la figura 3-49 se muestra en la figura 3-51. Los comentarios en VHDL van después de dos guiones cortos (--). Al escribir dos guiones cortos sucesivos, el diseñador puede escribir información desde ese punto hasta el final de la línea. La información que vaya después de estos dos guio- nes será ignorada por los programas de computadora que utilicen este archivo, pero cualquier persona que trate de descifrar el código podrá leerla. La señal intermedia m se define en la línea 13, después de la palabra clave SIG- NAL. La palabra clave BIT designa el tipo de la señal. Observe que un signo de dos puntos separa el nombre de la señal de su designación de tipo. En la descripción de hardware de la línea 16, la señal intermedia se asigna (se conecta) a un valor (m a AND b;) y después m se utiliza en la instrucción de la línea 17 para asignar (conec- tar) un valor a y (y m OR c;). Recuerde que las instrucciones de asignación son V H D L FIGURA 3-50 Las variables intermedias en AHDL, descritas en la figura 3-49. 1 % Variables intermedias en AHDL (Figura 3 49) 2 Sistemas digitales 10a ed 3 NS Widmer 4 MAYO 23, 2005 % 5 SUBDESIGN fig3 50 6 ( 7 a,b,c :INPUT; define las entradas del bloque 8 y :OUTPUT; define la salida del bloque 9 ) 10 VARIABLE 11 m :NODE; nombra una señal intermedia 12 BEGIN 13 m a b; genera término de producto oculto 14 y m # c; genera suma en la salida 15 END;
  • 135. PREGUNTAS DE REPASO concurrentes y no importa el orden en el que se proporcionen. Para que los humanos podamos leerlas, es más lógico asignar valores a las señales intermedias antes de utilizarlas en otras instrucciones de asignación, como se muestra aquí. 1. ¿Cuál es la designación utilizada para las señales intermedias? 2. ¿En dónde se declaran estas señales? 3. ¿Importa si la ecuación m o y se declara primero? 4. ¿Qué caracteres se utilizan para comentar una sola línea? RESUMEN 1. El álgebra booleana es una herramienta matemática que se utiliza en el análisis y diseño de circuitos digitales. 2. Las operaciones booleanas básicas son OR, AND y NOT. 3. Una compuerta OR produce una salida en ALTO cuando cualquier entrada está en ALTO. Una compuerta AND produce una salida en ALTO sólo cuando todas las entradas están en ALTO. Un circuito NOT (INVERSOR) produce una salida que es el nivel lógico opuesto al de la entrada. 4. Una compuerta NOR es igual que una compuerta OR con su salida conectada a un INVERSOR. Una compuerta NAND es igual que una compuerta AND con su salida conectada a un INVERSOR. FIGURA 3-51 Señales intermedias en VHDL, descritas en la figura 3-49. 1 Variables intermedias en VHDL (Figura 3 49) 2 Sistemas digitales 10a ed 3 NS Widmer 4 MAYO 23, 2005 5 6 ENTITY fig3 51 IS 7 PORT( a, b, c :IN BIT; define las entradas del bloque 8 y :OUT BIT); define la salida del bloque 9 END fig3 51; 10 11 ARCHITECTURE ckt OF fig3 51 IS 12 13 SIGNAL m :BIT; nombra una señal intermedia 14 15 BEGIN 16 m = a AND b; genera término de producto oculto 17 y = m OR c; genera suma en la salida 18 END ckt; RESUMEN 107
  • 136. 108 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS 5. Los teoremas y las reglas booleanas pueden usarse para simplificar la expresión de un circuito lógico y pueden producir una manera más simple de implementar el circuito. 6. Las compuertas NAND pueden usarse para implementar cualquiera de las opera- ciones booleanas básicas. Las compuertas NOR pueden usarse en forma similar. 7. Pueden usarse los símbolos alternativos o estándar para cada compuerta lógica, dependiendo de si la salida va a ser activa en ALTO o activa en BAJO. 8. El estándar IEEE/ANSI para los símbolos lógicos utiliza símbolos rectangulares para cada dispositivo lógico, con notaciones especiales dentro de los rectángulos para mostrar cómo dependen las salidas de las entradas. 9. Los lenguajes de descripción de hardware se han convertido en un método importante para describir circuitos digitales. 10. El código HDL siempre debe contener comentarios que documenten sus carac- terísticas más importantes, de manera que cualquier persona que lo lea después pueda comprender lo que hace. 11. Toda descripción de un circuito en HDL contiene una definición de las entradas y salidas, seguida de una sección que describe la operación del circuito. 12. Además de las entradas y salidas, pueden definirse conexiones intermedias inac- cesibles desde fuera del circuito. A estas conexiones intermedias se les conoce como nodos ocultos o señales locales. TÉRMINOS IMPORTANTES activa en ALTO activa en BAJO AHDL –lenguaje de descripción de hardware de Altera álgebra booleana ARCHITECTURE asignada BIT circuito NOT (INVERSOR) compilador compuerta AND compuerta NAND compuerta NOR compuerta OR concurrente ENTITY HDLs –lenguajes de descripción de hardware IEEE/ANSI instrucción de asignación concurrente inversión (complementación) modo nivel lógico niveles lógicos activos no asignado NODE nodos ocultos (señales locales) operación AND operación NOT operación OR PLDs –dispositivos lógicos programables símbolos lógicos alternativos sintaxis SUBDESIGN tabla de verdad teoremas booleanos teoremas de DeMorgan tipo VARIABLE VHDL –lenguaje de descripción de hardware para circuitos integrados de muy alta velocidad (VHSIC) PROBLEMAS Las letras en gris que van antes de algunos de los problemas se utilizan para indicar la naturaleza o el tipo de éstos, como se indica a continuación: B problema básico. F problema de diagnóstico de fallas. D problema de diseño o modificación de circuito. N nuevo concepto o técnica que no se cubre en el libro. A problema avanzado. H problema de HDL.
  • 137. SECCIÓN 3-3 3-1.* Dibuje la forma de onda de salida para la compuerta OR de la figura 3-52. 3-2. Suponga que la entrada A en la figura 3-52 se conectó a tierra en forma inad- vertida (es decir, A 0). Dibuje la forma de onda de salida resultante. 3-3.* Suponga que la entrada A en la figura 3-52 se pone en corto en forma inad- vertida con la línea de suministro de 5 V (es decir, A 1). Dibuje la forma de onda de salida resultante. 3-4. Lea las siguientes aseveraciones con respecto a una compuerta OR. Al prin- cipio tal vez parezcan válidas, pero después de analizarlas se dará cuenta que ninguna es verdadera siempre. Demuestre esto mediante un ejemplo específico para refutar cada aseveración. (a) Si la forma de onda de salida de una compuerta OR es igual que la forma de onda en una de sus entradas, la otra entrada se mantendrá de manera permanente en BAJO. (b) Si la forma de onda de salida de una compuerta OR siempre está en ALTO, una de sus entradas se mantendrá de manera permanente en ALTO. 3-5. ¿Cuántas combinaciones distintas de condiciones de entrada producirán una salida en ALTO en una compuerta OR de cinco entradas? SECCIÓN 3-4 3-6. Cambie la compuerta OR en la figura 3-52 por una compuerta AND. (a)* Dibuje la forma de onda de salida. (b) Dibuje la forma de onda de salida si la entrada A se conecta de manera permanente a tierra. (c) Dibuje la forma de onda de salida si A se pone en corto de manera per- manente con 5 V. 3-7.* Consulte la figura 3-4. Modifique el circuito de manera que la alarma se active sólo cuando la presión y la temperatura excedan sus límites máximos al mismo tiempo. 3-8.* Cambie la compuerta OR en la figura 3-6 por una compuerta AND y dibuje la forma de onda de la salida. 3-9. Suponga que tiene una compuerta desconocida de dos entradas, que puede ser OR o AND. ¿Qué combinación de niveles de entrada debe aplicar a las entradas para determinar qué tipo de compuerta es? 3-10. Verdadero o falso: sin importar cuántas entradas tenga, una compuerta AND producirá una salida en ALTO para sólo una combinación de niveles de entrada. B B B C B B D B B B FIGURA 3-52 A B C x A B C * Encontrará las respuestas a los problemas marcados con un asterisco al nal del libro. PROBLEMAS 109
  • 138. 110 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS SECCIONES 3-5 A 3-7 3-11. Aplique la forma de onda A de la figura 3-23 a la entrada de un INVER- SOR. Dibuje la forma de onda de salida. Repita el proceso para la forma de onda B. 3-12. (a)* Escriba la expresión booleana para la salida x en la figura 3-53(a). Determine el valor de x para todas las posibles condiciones de entrada y liste los valores en una tabla de verdad. (b) Repita el proceso para el circuito de la figura 3-53(b). 3-13.* Cree una tabla de análisis completa para el circuito de la figura 3-15(b); para ello encuentre los niveles lógicos presentes en la salida de cada com- puerta, para todas las 32 posibles combinaciones de entrada. 3-14. (a)* Cambie cada compuerta OR por una compuerta AND y cada compuerta AND por una compuerta OR en la figura 3-15(b). Después escriba la expresión para la salida. (b) Complete una tabla de análisis. 3-15. Cree una tabla de análisis completa para el circuito de la figura 3-16; para ello encuentre los niveles lógicos presentes en la salida de cada compuerta, para todas las 16 posibles combinaciones de niveles de entrada. SECCIÓN 3-8 3-16. Para cada una de las siguientes expresiones, construya el circuito lógico correspondiente utilizando compuertas AND y OR e INVERSORES. (a)* x AB(C D) (b)* z A B CDE) BCD (c) y (M N PQ) FIGURA 3-53 A (a) x B C (b) A B C D x B B B B B B
  • 139. (d) x W PQ (e) z MN(P N) (f) x (A B)(A B) SECCIÓN 3-9 3-17.* (a) Aplique las formas de onda de entrada de la figura 3-54 a una compuer- ta NOR y dibuje la forma de onda de salida. (b) Repita el procedimiento manteniendo C de manera permanente en BAJO. (c) Repita el procedimiento manteniendo C en ALTO. 3-18. Repita el problema 3-17 para una compuerta NAND. 3.19.* Escriba la expresión para la salida de la figura 3-55 y utilícela para deter- minar la tabla de verdad completa. Después aplique las formas de onda de la figura 3-54 a las entradas del circuito y dibuje la forma de onda de salida resultante. 3-20. Determine la tabla de verdad para el circuito de la figura 3-24. 3-21. Modifique los circuitos que se construyeron en el problema 3-16 de manera que se utilicen compuertas NAND y NOR en donde sea apropiado. SECCIÓN 3-10 3-22. Demuestre los teoremas (15a) y (15b) probando todos los casos posibles. 3-23.* PREGUNTA DE EJERCICIO Complete cada una de las expresiones. (a) A 1 __________ (b) A A __________ (c) B B __________ (d) C C __________ (e) x 0 __________ (f) D 1 __________ (g) D 0 __________ (h) C C __________ (i) G GF __________ (j) y wy __________ A B C FIGURA 3-54 X A B C FIGURA 3-55 PROBLEMAS 111 B B C B B C B
  • 140. 112 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS 3-24. (a)* Simplifique la siguiente expresión usando los teoremas (13b), (3) y (4): x (M N)(M P)(N P) (b) Simplifique la siguiente expresión utilizando los teoremas (13a), (8) y (6): z ABC ABC BCD SECCIONES 3-11 Y 3-12 3-25. Demuestre los teoremas de DeMorgan probando todos los casos posibles. 3-26. Simplifique cada una de las siguientes expresiones usando los teoremas de DeMorgan. (a)* ABC (d) A B (g)* A(B C)D (b) A BC (e)* AB (h) (M N)(M N) (c)* ABCD (f) A C D (i) ABCD 3-27.* Use los teoremas de DeMorgan para simplificar la expresión de salida de la figura 3-55. 3-28. Convierta el circuito de la figura 3-53(b) en uno que utilice sólo compuertas NAND. Después escriba la expresión de salida para el nuevo circuito, simpli- fíquelo utilizando los teoremas de DeMorgan y compárelo con la expresión para el circuito original. 3-29. Convierta el circuito de la figura 3-53(a) en uno que utilice sólo compuer- tas NOR. Después escriba la expresión para el nuevo circuito, simplifíquelo utilizando los teoremas de DeMorgan y compárelo con la expresión para el circuito original. 3-30. Muestre cómo puede construirse una compuerta NAND de dos entradas a partir de dos compuertas NOR de dos entradas. 3-31. Muestre cómo puede construirse una compuerta NOR de dos entradas a partir de compuertas NAND de dos entradas. 3-32. Un jet emplea un sistema para monitorear los valores de revoluciones por minuto (rpm), presión y temperatura de sus motores mediante el uso de motores que operan de la siguiente manera: salida del sensor de RPM 0 sólo cuando la velocidad 4800 rpm salida del sensor P 0 sólo cuando la presión 220 psi salida del sensor T 0 sólo cuando la temperatura 200° F La figura 3-56 muestra el circuito lógico que controla una luz de advertencia en cabina para ciertas combinaciones de condiciones del motor. Suponga que un nivel ALTO en la salida W activa la luz de advertencia. (a)* Determine qué condiciones del motor darán una advertencia al piloto. (b) Cambie este circuito por uno que utilice sólo compuertas NAND. Luz de advertencia W P T R Sensor de temperatura Sensor de presión Sensor de RPM FIGURA 3-56 C C B B C C B B C
  • 141. SECCIONES 3-13 Y 3-14 3-33. Para cada una de las siguientes instrucciones, dibuje el símbolo de com- puerta lógica (estándar o alternativo) apropiado para la operación dada. (a) Una salida en ALTO ocurre sólo cuando las tres entradas están en BAJO. (b) Una salida en BAJO ocurre cuando alguna de las cuatro entradas está en BAJO. (c) Una salida activa en BAJO ocurre sólo cuando las ocho entradas están en ALTO. 3-34. Dibuje las representaciones estándar para cada una de las compuertas lógi- cas básicas. Después dibuje las representaciones alternativas. 3-35. Suponga que el circuito de la figura 3-55 es un candado de combinación digital simple, cuya salida generará una señal ABRIR activa en BAJO para sólo una combinación de entradas. (a)* Modifique el diagrama del circuito de tal forma que represente la ope- ración del circuito de una manera más efectiva. (b) Use el nuevo diagrama del circuito para determinar la combinación de entradas que activará la salida. Para ello, trabaje regresando desde la salida y utilizando la información que proporcionan los símbolos de las compuertas, como se hizo en los ejemplos 3-22 y 3-23. Compare los resultados con la tabla de verdad que se obtuvo en el problema 3-19. 3-36. (a) Determine las condiciones de entrada necesarias para activar la sali- da Z en la figura 3-37(b). Para ello, trabaje regresando desde la salida, como se hizo en los ejemplos 3-22 y 3-23. (b) Suponga que el estado BAJO de Z es el que debe activar la alarma. Cambie el diagrama del circuito para reflejar lo anterior y después uti- lice el diagrama revisado para determinar las condiciones de entrada necesarias para activar la alarma. 3-37. Modifique el circuito de la figura 3-40, de manera que se necesite que A1 0 para producir UNIDAD 1, en lugar de A1 1. 3-38.* Determine las condiciones de entrada necesarias para hacer que la salida en la figura 3-57 cambie a su estado activo. 3-39.* ¿Cuál es el estado asignado para la salida de la figura 3-57?, ¿para la salida de la figura 3-36(c)? 3-40. Use los resultados del problema 3-38 para obtener la tabla de verdad com- pleta para el circuito de la figura 3-57. 3-41.* La figura 3-58 muestra una aplicación de compuertas lógicas que simula un interruptor de dos vías, como los que utilizamos en nuestros hogares para encender o apagar una luz desde dos interruptores distintos. Aquí la luz FIGURA 3-57 x A B C D E PROBLEMAS 113 B B C C D B B B N
  • 142. 114 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS es un LED que estará ENCENDIDO (en conducción) cuando la salida de la compuerta NOR esté en BAJO. Observe que esta salida está etiquetada como LUZ para indicar que es activa en BAJO. Determine las condiciones de entrada necesarias para encender el LED. Después verifique que el circuito opere como un interruptor de dos vías, utilizando los interruptores A y B. (En el capítulo 4 aprenderá a diseñar circuitos como éste para producir una relación dada entre las entradas y las salidas.) SECCIÓN 3-15 3-42. Vuelva a dibujar los circuitos de (a)* la figura 3-57 y (b) la figura 3-58 mediante el uso de los símbolos IEEE/ANSI. SECCIÓN 3-17 PREGUNTAS DE PRÁCTICA DE HDL 3.-43.* Verdadero o falso: (a) VHDL es un lenguaje de programación de computadoras. (b) VHDL puede hacer lo mismo que AHDL. (c) AHDL es un lenguaje del estándar IEEE. (d) Cada intersección en una matriz de conmutación puede programarse como un circuito abierto o cerrado, entre un alambre de fila con uno de columna. (e) El primer elemento que aparece en la parte superior de un listado de HDL es la descripción funcional. (f) El tipo de un objeto indica si es una entrada o una salida. (g) El modo de un objeto determina si es una entrada o una salida. (h) Los nodos ocultos son nodos que se han eliminado y que nunca se utili- zarán de nuevo. (i) Las señales locales son otro nombre para las variables intermedias. (j) El encabezado es un bloque de comentarios que documentan informa- ción vital sobre el proyecto. SECCIÓN 3-18 3-44. Vuelva a dibujar la matriz de conexiones programable de la figura 3-44. Etiquete las señales de salida (líneas horizontales) de la matriz de conexión FIGURA 3-58 +5 V LUZ +5 V +5 V A B B H B
  • 143. (desde la fila superior hasta la fila inferior) de la siguiente manera: AAA- BADHE. Dibuje una X en las intersecciones apropiadas para poner en corto circuito una fila con una columna y crear estas conexiones hacia el circuito lógico.    3-45.* Escriba el código de HDL en el lenguaje de su preferencia, para que produz- ca las siguientes funciones de salida: 3-46. Escriba el código de HDL en el lenguaje de su preferencia, para implemen- tar el circuito lógico de la figura 3-39. (a) Use una sola ecuación booleana. (b) Use las variables intermedias V, W, X y Y. APLICACIÓN DE MICROCOMPUTADORA 3-47.* Consulte la figura 3-40 en el ejemplo 3-23. Las entradas de A7 a A0 son entra- das de dirección que se suministran a este circuito desde las salidas del microprocesador de una microcomputadora. El código de dirección de ocho bits A7 – A0 selecciona cuál dispositivo desea activar el microprocesador. En el ejemplo 3-23, el código de dirección requerido para activar la unidad de disco era A7 a A0 111111102 FE16. Modifique el circuito de manera que el microprocesador deba enviar un código de dirección de 4A16 para activar la unidad de disco. EJERCICIOS AVANZADOS 3-48. Muestre cómo puede implementarse x ABC con una compuerta NOR de dos entradas y una compuerta NAND de dos entradas. 3-49.* Implemente y ABCD usando sólo compuertas NAND de dos entradas. RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES SECCIÓN 3-2 1. x 1 2. x 0 3. 32 SECCIÓN 3-3 1. Las entradas en BAJO. 2. x A B C D E F 3. Nivel ALTO constante. SECCIÓN 3-4 1. Todas las cinco entradas 1. 2. Una entrada en BAJO mantendrá la salida en BAJO. 3. Falso; vea la tabla de verdad para cada compuerta. SECCIÓN 3-5 1. La salida del segundo INVERSOR será igual que la entrada A. 2. y estará en BAJO sólo para A B 1. SECCIÓN 3-6 1. x A B C AD 2. x D(AB C) E X A B Y AB Z A B C RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES 115 H H C C C
  • 144. 116 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS SECCIÓN 3-7 1. x 1 2. x 1 3. x 1 para ambos casos. SECCIÓN 3-8 1.Vea la figura 3-15(a). 2.Vea la figura 3-17(b). 3.Vea la figura 3-15(b). SECCIÓN 3-9 1. Todas las entradas en BAJO. 2. x 0 3. x A B CD SECCIÓN 3-10 1. y AC 2. y A B D 3. y AD BD SECCIÓN 3-11 1. z AB C 2. y (R S T)Q 3. Igual que la figura 3-28, sólo que la compuerta NAND se sustituye por una compuerta NOR. 4. y AB(C D) SECCIÓN 3-12 1. Tres. 2. El circuito NOR es más eficiente, ya que puede implementarse con solo un CI 74LS02. 3. x (AB)(CD) AB (CD) AB CD SECCIÓN 3-13 1. La salida cambia a BAJO cuando cualquier entrada está en ALTO. 2. La salida cambia a ALTO sólo cuando todas las entradas están en BAJO. 3. La salida cambia a BAJO cuando cualquier entrada está en BAJO. 4. La salida cambia a ALTO sólo cuando todas las entradas están en ALTO. SECCIÓN 3-14 1. Z cambiará a ALTO cuando A B 0 y C D 1. 2. Z cambiará a BAJO cuando A B 0, E 1 y C o D o ambas sean 1. 3. Dos. 4. Dos. 5. BAJO. 6. A B 0, C D 1 7. W SECCIÓN 3-15 1.Vea la figura 3-41. 2. Rectángulo con en su interior y triángulos en las entradas. SECCIÓN 3-16 1. Ecuación booleana, tabla de verdad, diagrama lógico, diagrama de tiempos, lenguaje. SECCIÓN 3-17 1. Lenguaje de descripción de hardware. 2. Para describir un circuito digital y su ope- ración. 3. Para dar a una computadora una lista secuencial de tareas. 4. El HDL describe los circuitos concurrentes de hardware; las instrucciones de computadora se ejecu- tan una a la vez. SECCIÓN 3-18 1. Dispositivo lógico programable. 2. Se cierran y se abren conexiones en una matriz de conmutación. 3. Traduce el código de HDL en un patrón de bits para configurar la matriz de conmutación. SECCIÓN 3-19 AHDL 1. Las definiciones de entrada y de salida. 2. La descripción de la forma en que opera.
  • 145. VHDL 1. Para dar un nombre al circuito y definir sus entradas y salidas. 2. La descripción ARCHITECTURE. 3. SECCIÓN 3-20 AHDL 1. NODE. 2. Después de la definición de E/S y antes de BEGIN. 3. No. 4. %. 5. -- VHDL 1. SIGNAL. 2. Dentro de ARCHITECTURE, antes de BEGIN. 3. No. 4. -- RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES 117
  • 146. 4-1 Forma de suma de productos 4-2 Simplificación de circuitos lógicos 4-3 Simplificación algebraica 4-4 Diseño de circuitos lógicos combinacionales 4-5 Método de mapas de Karnaugh 4-6 Circuitos OR exclusivo y NOR exclusivo 4-7 Generador y comprobador de paridad 4-8 Circuitos de habilitación/ deshabilitación 4-9 Características básicas de los CIs digitales ■ CONTENIDO CIR CUITOS LÓGICOS COMBINACIONALES C A P Í T U L O 4 4-10 Diagnóstico de fallas en sistemas digitales 4-11 Fallas internas en los circuitos integrados digitales 4-12 Fallas externas 4-13 Ejemplo práctico de diagnóstico de fallas 4-14 Dispositivos lógicos programables 4-15 Representación de datos en HDL 4-16 Tablas de verdad mediante el uso de HDL 4-17 Estructuras de control de decisiones en HDL
  • 147. ■ OBJETIVOS Al terminar este capítulo, usted podrá: ■ Convertir una expresión lógica en una expresión de suma de productos. ■ Realizar los pasos necesarios para reducir una expresión de suma de productos a su forma más simple. ■ Utilizar el álgebra booleana y el mapa de Karnaugh como herramientas para simplificar y diseñar circuitos lógicos. ■ Explicar la operación de los circuitos OR exclusivo y NOR exclusivo. ■ Diseñar circuitos lógicos simples sin la ayuda de una tabla de verdad. ■ Implementar circuitos de habilitación. ■ Citar las características básicas de los CIs digitales TTL y CMOS. ■ Utilizar las reglas básicas de diagnóstico de fallas de los sistemas digitales. ■ Deducir las fallas a partir de los resultados observados en circuitos lógicos combinacionales. ■ Describir la idea fundamental de los dispositivos lógicos programables (PLDs). ■ Describir los pasos implicados en la programación de un PLD para realizar una función lógica combinacional simple. ■ Consultar los manuales de usuario de Altera para adquirir la información necesaria para realizar un experimento de programación simple en el laboratorio. ■ Describir los métodos de diseño jerárquico. ■ Identificar los tipos de datos apropiados para las variables con valores de un solo bit, arreglos de bits y numéricas. ■ Describir los circuitos lógicos mediante el uso de las estructuras de control de HDL IF/ELSE, IF/ELSIF y CASE. ■ Seleccionar la estructura de control apropiada para un problema dado. ■ INTRODUCCIÓN En el capítulo 3 estudiamos la operación de todas las compuertas lógicas básicas, y utilizamos el álgebra booleana para describir y analizar circuitos formados de combinaciones de compuertas lógicas. Estos circuitos pueden clasificarse como circuitos lógicos combinacionales ya que, en cualquier momento, el nivel lógico de la salida depende de la combinación de los niveles lógicos presentes en las entradas. Un circuito combinacional no tiene característica de memoria, por lo que su salida depende sólo del valor actual de sus entradas. En este capítulo continuaremos con nuestro estudio de los circuitos combinacionales. Para empezar, veremos más detalles sobre la simplificación de los circuitos lógicos. Analizaremos dos métodos: el primero utiliza los teoremas del álgebra booleana; el segundo utiliza una técnica de mapeo. Además, 119
  • 148. 120 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES estudiaremos técnicas simples de diseño de circuitos lógicos combinacionales para satisfacer un conjunto dado de requerimientos. El estudio completo del diseño de circuitos lógicos no es uno de nuestros objetivos, pero los métodos que presentaremos le brindarán una excelente introducción al diseño lógico. Una buena porción de este capítulo está dedicada al diagnóstico de fallas de los circuitos combinacionales. Con esta primera exposición al diagnóstico de fallas, usted podrá empezar a desarrollar el tipo de habilidades analíticas necesarias para tener éxito al realizar sus diagnósticos de fallas. Para que este material sea lo más práctico posible, primero presentaremos algunas de las características básicas de los CIs de compuertas lógicas en las familias lógicas TTL y CMOS, junto con una descripción de los tipos más comunes de fallas que se encuentran en los circuitos integrados digitales. En las últimas secciones de este capítulo ampliaremos nuestro conocimiento sobre los dispositivos lógicos programables y los lenguajes de descripción de hardware. Reforzaremos el concepto de las conexiones de hardware programables y brindaremos más detalles en relación con la función del sistema de desarrollo. Usted conocerá los pasos que se siguen actualmente para el diseño y desarrollo de los sistemas digitales. Le proporcionaremos suficiente información para que pueda elegir los tipos de datos correctos para usarlos en proyectos simples que presentaremos más adelante en este capítulo. Por último explicaremos varias estructuras de control, junto con algunas instrucciones relacionadas con su uso apropiado. 4-1 FORMA DE SUMA DE PRODUCTOS Los métodos de simplificación y diseño de circuitos lógicos que estudiaremos requie- ren que la expresión lógica se encuentre en forma de suma de productos (SOP). Algunos ejemplos de esta forma son: Cada una de estas expresiones de suma de productos consiste de dos o más térmi- nos AND (productos) a los que se les aplica la operación OR. Cada término AND consiste de una o más variables que aparecen de manera individual, ya sea en for- ma complementada o no complementada. Por ejemplo, en la expresión de suma de productos ABC ABC el primer producto AND contiene las variables A, B y C en su forma no complementada (no invertida). El segundo término AND contiene a A y C en su forma complementada (invertida). En una expresión de suma de productos, un signo de inversión no puede cubrir más de una variable en un término (por ejemplo, no podemos tener ABC o RST). Producto de las sumas Algunas veces se utiliza otra forma general para las expresiones lógicas en el dise- ño de circuitos lógicos. A esta forma se le llama producto de las sumas (POS) y con- siste de dos o más términos OR (sumas) a los que se les aplica una operación AND. Cada término OR consiste de una o más variables en su forma complementada o no complementada. He aquí algunas expresiones de producto de sumas: Los métodos de simplificación y diseño de circuitos que utilizaremos se basan en la forma de suma de productos (SOP), por lo que no veremos muchos ejemplos 1. 2. 3. AB + CD + EF + GK + HL AB + ABC + C D + D ABC + ABC 1. 2. 3. (A + C)(B + D)(B + C)(A + D + E) (A + B)(C + D)F (A + B + C)(A + C)
  • 149. PREGUNTAS DE REPASO con la forma de producto de sumas (POS). No obstante, de vez en cuando se presen- tará esta forma para algunos circuitos lógicos que tengan una cierta estructura. 1. ¿Cuál de las siguientes expresiones se encuentra en la forma SOP? (a) AB CD E (b) AB(C D) (c) (A B)(C D F) (d) MN PQ 2. Repita la pregunta 1 para la forma POS. 4-2 SIMPLIFICACIÓN DE CIRCUITOS LÓGICOS Una vez que se obtiene la expresión para un circuito lógico, podemos reducirla a una forma más simple que contenga menos términos, o menos variables en uno o más tér- minos. Así, la nueva expresión puede utilizarse para implementar un circuito equiva- lente al circuito original, pero que contenga menos compuertas y conexiones. Para ilustrar esto, el circuito de la figura 4-1(a) puede simplificarse para produ- cir el circuito de la figura 4-1(b). Ambos circuitos realizan la misma lógica, por lo que debe ser obvio que el más simple es más conveniente, ya que contiene menos compuertas y, por lo tanto, será más pequeño y económico que el original. Lo que es más, la confiabilidad del circuito aumentará, ya que hay menos interconexiones que pueden provocar fallas potenciales en el circuito. En las siguientes secciones estudiaremos dos métodos para simplificar los cir- cuitos lógicos. Uno de ellos utiliza los teoremas de álgebra booleana y, como vere- mos, depende mucho de la inspiración y la experiencia. El otro método (mapeo de Karnaugh) tiene un enfoque sistemático, paso a paso. Tal vez algunos instructores deseen omitir este último método debido a que es algo mecánico y es posible que no contribuya a una mejor comprensión del álgebra booleana. Esto puede hacerse sin afectar la continuidad o la claridad del resto del libro. 4-3 SIMPLIFICACIÓN ALGEBRAICA Podemos utilizar los teoremas de álgebra booleana que estudiamos en el capítulo 3 para que nos ayuden a simplificar la expresión para un circuito lógico. Desafortu- nadamente, no siempre es obvio cuáles teoremas deben aplicarse para producir SECCIÓN 4-3/SIMPLIFICACIÓN ALGEBRAICA 121 FIGURA 4-1 A menudo es posible simplificar un circuito lógico de tal forma que en la parte (a) se produzca una implementación más eficiente, la cual se muestra en (b). A B BC (a) C x = A B C C A B C (b) A + BC x = A B(A + BC)
  • 150. 122 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES EJEMPLO 4-1 el resultado más simple. Lo que es más, no hay una manera sencilla de saber si la expresión simplificada se encuentra en su forma más simple o si todavía puede sim- plificarse más. Por ende, la simplificación algebraica se vuelve a menudo un proceso de prueba y error. Sin embargo, con experiencia uno puede volverse un adepto para obtener resultados bastante razonables. Los ejemplos que se muestran a continuación ilustrarán muchas de las maneras en las que pueden aplicarse los teoremas booleanos para tratar de simplificar una expresión. Estos ejemplos contienen dos pasos esenciales: 1. La expresión original se coloca en forma SOP mediante la aplicación repetida de los teoremas de DeMorgan y la multiplicación de los términos. 2. Una vez que la expresión original se encuentre en la forma SOP, se comprueba si hay factores comunes en los términos de productos y se lleva a cabo la fac- torización en donde sea posible. Este proceso de factorización deberá ayudar a eliminar uno o más términos. Simplifique el circuito lógico que se muestra en la figura 4-2(a). Solución El primer paso es determinar la expresión para la salida, utilizando el método que se presentó en la sección 3-6. El resultado es z ABC AB (A C) Una vez que se obtiene la expresión, por lo general, es conveniente descomponer todos los signos inversores grandes mediante el uso de los teoremas de DeMorgan, y después multiplicar todos los términos. z ABC AB(A C) [teorema (17)] ABC AB(A C) [se cancelan las inversiones dobles] ABC ABA ABC [se realizan las multiplicaciones] ABC AB ABC [A A A] z = ABC + AB(AC) A C B A A C A B C B (a) A A B(A C) (b) z = A(B + C) B + C A B C FIGURA 4-2 Ejemplo 4-1.
  • 151. EJEMPLO 4-2 Ahora que la expresión se encuentra en la forma SOP, debemos buscar variables comunes entre los diversos términos con la intención de factorizar. Los términos primero y tercero de arriba tienen a AC en común, lo cual puede factorizarse: Como B B 1, entonces Ahora podemos factorizar A, lo cual produce Este resultado ya no puede simplificarse más. En la figura 4-2(b) se muestra la implementación de su circuito. Es fácil observar que el circuito de la figura 4-2(b) es mucho más simple que el de la figura 4-2(a). Simplifique la expresión z AB C ABC ABC. Solución La expresión ya se encuentra en la forma SOP. Método 1: Los primeros dos términos de la expresión tienen el producto AB en común. Por lo tanto, Podemos factorizar la variable A de ambos términos: Utilizando el teorema (15b): Método 2: La expresión original es z AB C ABC ABC. Los primeros dos términos tienen a AB en común. Los últimos dos tienen a AC en común. ¿Cómo podemos saber si debemos factorizar AB de los primeros dos términos, o AC de los últimos dos términos? En realidad podemos hacer ambas cosas si utilizamos el término ABC dos veces. En otras palabras, podemos reformular la expresión de la siguiente manera: en donde hemos agregado un término ABC. Esto es válido y no cambia el valor de la expresión, ya que ABC ABC ABC [(teorema (7)]. Ahora podemos factorizar AB de los primeros dos términos y AC de los últimos dos: z = AC(B + B) + AB = AC + AB z = AC(1) + AB z = A(C + B) = AB + ABC = AB(1) + ABC z = AB(C + C) + ABC z = A(B + BC) z = AB C + ABC + ABC + ABC = AB + AC = A(B + C) = AB # 1 + AC # 1 z = AB(C + C) + AC(B + B) SECCIÓN 4-3/SIMPLIFICACIÓN ALGEBRAICA 123 z = A(B + C)
  • 152. 124 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES EJEMPLO 4-3 Desde luego que este resultado es el mismo que se obtuvo con el método 1. Este truco de usar el mismo término dos veces puede usarse siempre. De hecho, el mismo término puede usarse más veces si es necesario. Simplifique z AC(ABD) ABC D ABC. Solución Primero, utilizamos el teorema de DeMorgan en el primer término: z AC(A B D) ABC D ABC (paso 1) La multiplicación produce lo siguiente: z ACA ACB ACD ABC D ABC (2) Como A A 0, se elimina el primer término: z A BC ACD ABC D ABC (3) Ésta es la forma SOP deseada. Ahora debemos buscar factores comunes de entre los diversos términos de productos. La idea es buscar el factor común más grande entre dos o más términos de productos. Por ejemplo, los términos primero y último tienen el factor común BC y los términos segundo y tercero tienen el factor común A D. Podemos factorizar estos términos de la siguiente manera: z BC(A A) A D(C BC) (4) Ahora, como A A 1, y C BC C B [teorema (15a)], tenemos que z BC A D(B C) (5) Este mismo resultado podría obtenerse si eligiéramos otros términos para la fac- torización. Por ejemplo, podríamos haber factorizado C de los términos de productos primero, segundo y cuarto, en el paso 3, para obtener: z C(A B A D AB) ABC D La expresión dentro de los paréntesis puede factorizarse aún más: z C(B[A A] A D) ABC D Y como A A 1, esta expresión se convierte en: z C(B A D) ABC D Después de multiplicar, nos queda z BC AC D ABC D
  • 153. EJEMPLO 4-4 Ahora podemos factorizar A D de los términos segundo y tercero para obtener z BC A D(C BC) Si utilizamos el teorema (15a), la expresión entre paréntesis se convierte en B C. Por lo tanto, queda z BC A D(B C) Este resultado es el mismo que obtuvimos antes, pero nos llevó muchos más pasos. Aquí se ilustra el porqué debemos buscar los factores comunes más grandes: por lo general, nos llevará a la expresión final en menos pasos. El ejemplo 4-3 ilustra la frustración que se encuentra a menudo en la simplifi- cación booleana. Como hemos llegado a la misma ecuación (que parece irreducible) por dos métodos distintos, podría parecer razonable concluir que esta ecuación final es la forma más simple. De hecho, la forma más simple de esta ecuación es z ABD BC Pero no hay una manera aparente de reducir el paso (5) para llegar a esta versión más simple. En este caso nos faltó una operación en el proceso, la cual nos podría haber conducido a la forma más simple. La pregunta es, “¿Cómo hubiéramos podido saber que omitimos un paso?” Más adelante examinaremos una técnica de mapeo que siempre nos llevará a la forma SOP más simple. Simplifique la expresión x (A B)(A B D)D. Solución La expresión puede colocarse en la forma de suma de productos mediante la multi- plicación de todos los términos. El resultado es x AAD ABD ADD BAD BBD BDD El primer término puede eliminarse, ya que AA 0. De igual forma, los términos tercero y sexto pueden eliminarse debido a que DD 0. El quinto término puede simplificarse a BD, ya que BB B. Esto nos da x ABD ABD BD Podemos factorizar BD de cada término para obtener x BD(A A 1) Es evidente que el término dentro de los paréntesis siempre es 1, por lo que al últi- mo nos queda x BD SECCIÓN 4-3/SIMPLIFICACIÓN ALGEBRAICA 125
  • 154. 126 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES EJEMPLO 4-5 EJEMPLO 4-6 PREGUNTAS DE REPASO Simplifique el circuito de la figura 4-3(a). Solución La expresión para la salida z es z (A B)(A B) Si multiplicamos para obtener la forma de suma de productos, obtenemos z AA A B BA BB Podemos eliminar AA 0 y BB 0 para terminar con z A B AB Esta expresión se implementa en la figura 4-3(b), y si la comparamos con el circuito original veremos que ambos circuitos contienen el mismo número de compuertas y conexiones. En este caso, el proceso de simplificación produjo un circuito equiva- lente pero más simple. Simplifique x ABC ABD C D. Solución Inténtelo, pero no podrá simplificar más esta expresión. 1. Indique cuáles de las siguientes expresiones no se encuentran en la forma de suma de productos: (a) RST RST T (b) ADC ADC (c) MNP (M N)P (d) AB ABC A B C D 2. Simplifique el circuito de la figura 4-1(a) para obtener el circuito de la figura 4-1(b). 3. Cambie cada compuerta AND en la figura 4-1(a) por una compuerta NAND. Determine la nueva expresión para x y simplifíquela. FIGURA 4-3 Ejemplo 4-5. A B (a) z (b) A B z
  • 155. 4-4 DISEÑO DE CIRCUITOS LÓGICOS COMBINACIONALES Cuando se da el nivel de salida deseado de un circuito lógico para todas las posibles condiciones de entrada, los resultados pueden mostrarse de manera conveniente en una tabla de verdad. La expresión booleana para el circuito requerido puede entonces derivarse de la tabla de verdad. Por ejemplo, considere la figura 4-4(a), en donde se muestra la tabla de verdad para un circuito que tiene dos entradas A y B, y la salida x. La tabla muestra que la salida x estará en el nivel 1 sólo para el caso en el que A 0 y B 1. Ahora lo que resta es determinar qué circuito lógico produci- rá esta operación deseada. Debería ser evidente que una de las posibles soluciones es la que se muestra en la figura 4-4(b). Aquí se utiliza una compuerta AND con las entradas A y B, de manera que x A B. Es obvio que x será 1 sólo si ambas entradas de la compuerta AND son 1, a saber, A 1 (lo cual significa que A 0) y B 1. Para todos los demás valores de A y B, la salida x será 0. Puede usarse un enfoque similar para las demás condiciones de entrada. Por ejemplo, si x fuera a estar en nivel alto sólo para la condición A 1, B 0, el cir- cuito resultante sería una compuerta AND con entradas A y B. En otras palabras, para cualquiera de las cuatro posibles condiciones de entrada, podemos generar una salida x en nivel alto mediante el uso de una compuerta AND con las entradas apropiadas para generar el producto AND requerido. En la figura 4-5 se muestran los cuatro casos. Cada una de las compuertas AND que se muestran genera una salida que es 1 sólo para una condición de entrada dada y la salida es 0 para todas las demás condiciones. Hay que recalcar que las entradas AND son invertidas o no invertidas, dependiendo de los valores que tengan las variables para la condición dada. Si la variable es 0 para la condición dada, se invierte antes de entrar a la com- puerta AND. Ahora consideremos el caso que se muestra en la figura 4-6(a), en donde tene- mos una tabla de verdad que indica que la salida x debe ser 1 para dos casos dis- tintos: A 0, B 1 y A 1, B 0. ¿Cómo puede implementarse esto? Sabemos que el término AND A B generará un 1 sólo para la condición A 0, B 1, y que el término AND A · B generará un 1 para la condición A 1, B 0. Como x debe estar A 0 0 1 1 B 0 1 0 1 x 0 1 0 0 (a) (b) A x = AB B A FIGURA 4-4 Circuito que produce una salida de 1 sólo para la condición en la que A 0 y B 1. FIGURA 4-5 Una compuerta AND con las entradas apropiadas puede usarse para producir una salida de 1 para un conjunto específico de niveles de entrada. AB A B AB A B AB A B AB A B ALTO sólo cuando A = 0, B = 0 ALTO sólo cuando A = 0, B = 1 ALTO sólo cuando A = 1, B = 0 ALTO sólo cuando A = 1, B = 1 SECCIÓN 4-4/DISEÑO DE CIRCUITOS LÓGICOS COMBINACIONALES 127
  • 156. 128 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES en ALTO para cualquiera de esas condiciones, debe quedar claro que se debe aplicar una operación OR a estos términos para producir la salida x deseada. Esta imple- mentación se muestra en la figura 4-6(b), en donde la expresión resultante para la salida es x AB AB. En este ejemplo se genera un término AND para cada caso en la tabla donde la salida x va a ser un 1. Después se aplica un OR a las salidas de la compuerta AND para producir la salida total x, que será 1 cuando cualquiera de los términos de la operación AND sea 1. Este mismo procedimiento puede extenderse a los ejemplos con más de dos entradas. Considere la tabla de verdad para un circuito de tres entra- das (tabla 4-1). Aquí hay tres casos en donde la salida x debe ser 1. Se muestra el término AND requerido para cada uno de estos casos. Observe nuevamente que para cada caso en el que una variable es 0, ésta aparece invertida en el término AND. La expresión de suma de productos para x se obtiene aplicando una operación OR a los tres términos AND. x ABC ABC ABC Procedimiento completo de diseño Cualquier problema lógico puede resolverse mediante el uso del siguiente procedi- miento: 1. Interprete el problema y establezca una tabla de verdad para describir su ope- ración. 2. Escriba el término AND (producto) para cada caso en el que la salida sea 1. 3. Escriba la expresión de suma de productos (SOP) para la salida. 4. Simplifique la expresión de salida, si es posible. 5. Implemente el circuito para la expresión final simplificada. FIGURA 4-6 Cada conjunto de condiciones de entrada que debe producir una salida en ALTO se implementa mediante una compuerta AND separada. Se aplica una operación OR a las salidas de la compuerta AND para producir la salida final. A 0 0 1 1 B 0 1 0 1 x 0 1 1 0 x = AB + AB AB AB (b) A B A B (a) TABLA 4-1 A B C x 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 : ABC : ABC : ABC
  • 157. EJEMPLO 4-7 El siguiente ejemplo ilustra el procedimiento completo de diseño. Diseñe un circuito lógico que tenga tres entradas A, B y C, y cuya salida esté en ALTO sólo cuando la mayoría de sus entradas estén en ALTO. Solución Paso 1. Establezca la tabla de verdad. Con base en el enunciado del problema, la salida x deberá ser 1 siempre que dos o más entradas sean 1; para todos los demás casos, la salida deberá ser 0 (tabla 4-2). Paso 2. Escriba el término AND para cada caso en el que la salida sea un 1. Hay cuatro casos así. Los términos AND se muestran enseguida de la tabla de ver- dad (tabla 4-2). Observe de nuevo que cada término AND contiene cada variable de entrada en su forma invertida o no invertida. Paso 3. Escriba la expresión de suma de productos para la salida. x ABC ABC ABC ABC Paso 4. Simplifique la expresión de salida. Esta expresión puede simplificarse de varias formas.Tal vez la más rápida sea consi- derar que el último término ABC tiene dos variables en común con cada uno de los otros términos. Por ende, podemos usar el término ABC para factorizarlo con cada uno de los demás términos. La expresión se reformula de manera que el término ABC ocurra tres veces (recuerde del ejemplo 4-2 que es posible hacer esto en el álgebra booleana): x ABC ABC ABC ABC ABC ABC Si factorizamos los pares de términos apropiados, tenemos que x BC(A A) AC(B B) AB(C C) Cada término en paréntesis es igual a 1, por lo que nos queda x BC AC AB TABLA 4-2 A B C x 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 : ABC : ABC : ABC : ABC SECCIÓN 4-4/DISEÑO DE CIRCUITOS LÓGICOS COMBINACIONALES 129
  • 158. 130 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES EJEMPLO 4-8 Paso 5. Implemente el circuito para la expresión final. Esta expresión se implementa en la figura 4-7. Como la expresión se encuentra en la forma SOP, el circuito consiste de un grupo de compuertas AND conectadas con una sola compuerta OR. Consulte la figura 4-8(a), en donde un convertidor analógico-digital está monito- reando el voltaje de corriente directa de una batería de almacenamiento de 12 V en una nave espacial en órbita. La salida del convertidor es un número binario de 4 bits identificado como ABCD, que corresponde al voltaje de la batería en interva- los de 1V, en donde A es el MSB. Las salidas binarias del convertidor se alimentan a un circuito lógico que debe producir una salida en ALTO siempre y cuando el valor binario sea mayor que 01102 610; esto es, que el voltaje de la batería sea mayor que 6 V. Diseñe este circuito lógico. Solución La tabla de verdad se muestra en la figura 4-8(b). Para cada caso en la tabla de ver- dad hemos indicado el equivalente decimal del número binario representado por la combinación ABCD. La salida z es igual a 1 para todos aquellos casos en los que el número binario sea mayor que 0110. Para todos los demás casos, z es igual a 0. Esta tabla de verdad nos da la siguiente expresión de suma de productos: FIGURA 4-8 Ejemplo 4-8. (b) A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 (0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) A B C D MSB LSB Circuito lógico (a) z z = A + BCD (c) A B C D Convertidor analógico- digital VB A B C D z 0 0 0 0 0 0 0 1→ ABCD 1→ ABCD 1→ ABCD 1→ ABCD 1→ ABCD 1→ ABCD 1→ ABCD 1→ ABCD 1→ ABCD + ABCD + ABCD + ABCD z = ABCD + AB C D + AB CD + ABCD + ABCD + ABC D A B C BC AB AC x = BC + AC + AB FIGURA 4-7 Ejemplo 4-7.
  • 159. P AND OR Q R S P Q R S = P + QR (d) (c) S = P + QR P Q R (b) Sensor de bandeja alimentadora 1 k⍀ +5 V P Q R Interruptores para detección del papel S (a) 1 k⍀ Circuito lógico FIGURA 4-9 Ejemplo 4-9. EJEMPLO 4-9 La simplificación de esta expresión será una formidable tarea, pero con un poco de cuidado puede lograrse. El proceso paso a paso implica factorizar y eliminar térmi- nos de la forma A A: Esta expresión puede reducirse aún más si aplicamos el teorema (15a), el cual nos dice que x xy x y. En este caso x A y y BCD. Por lo tanto, Esta expresión final se implementa en la figura 4-8(c). Como lo demuestra este ejemplo, el método de simplificación algebraica puede ser bastante largo cuando la expresión original contiene un gran número de tér- minos. Ésta es una limitación que no comparte el método de mapeo de Karnaugh, como veremos más adelante. Observe la figura 4-9(a). En una copiadora simple, se debe generar una señal de paro S para detener la operación de la máquina y encender una luz indicadora cada vez que exista una de las siguientes condiciones: (1) que no haya papel en la bandeja alimentadora; o (2) que se activen los dos microinterruptores en la ruta del papel, lo cual indica un atasco. La presencia de papel en la bandeja alimentadora se indica = ABCD + A = ABCD + A(B + B) = ABCD + AB + AB = ABCD + AB(C + C) + AB(C + C) = ABCD + AB C + ABC + ABC + ABC z = ABCD + AB C(D + D) + ABC(D + D) + ABC(D + D) + ABC(D + D) z = ABCD + A = BCD + A SECCIÓN 4-4/DISEÑO DE CIRCUITOS LÓGICOS COMBINACIONALES 131
  • 160. 132 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES mediante un nivel ALTO en la señal lógica P. Cada microinterruptor produce una señal lógica (Q y R, respectivamente) que cambia a ALTO cada vez que el papel pasa por el interruptor y lo activa. Diseñe el circuito lógico para producir un nivel ALTO en la señal de salida S para las condiciones antes mencionadas, e impleméntelo uti- lizando el chip con cuatro compuertas NAND de dos entradas 74HC00 CMOS. Solución Utilizaremos el proceso de cinco pasos indicado en el ejemplo 4-7. La tabla de ver- dad se muestra en la figura 4-3. La salida S será un 1 lógico siempre que P 0, ya que esto indica que no hay papel en la bandeja alimentadora. S también será un 1 para los dos casos en los que Q y R sean ambas 1, lo cual indica un atasco de papel. Como la tabla indica, hay cinco condiciones de entrada distintas que producen una salida en ALTO. (Paso 1) Se muestran los términos AND para cada uno de estos casos. (Paso 2) La expresión de suma de productos sería S P Q R P QR PQR PQR PQR (Paso 3) Podemos empezar la simplificación factorizando P Q de los términos 1 y 2, y factori- zando PQ de los términos 3 y 4: S P Q(R R) PQ(R R) PQR (Paso 4) Ahora podemos eliminar los términos R R ya que son iguales a 1: S P Q PQ PQR Si factorizamos P de los términos 1 y 2 podemos eliminar Q: S P PQR Aquí, podemos aplicar el teorema (15b) (x xy x y) para obtener S P QR Como una comprobación adicional de esta ecuación booleana simplificada, vea- mos si concuerda con la tabla de verdad con la que comenzamos. Esta ecuación dice que la salida S estará en ALTO siempre que P esté en BAJO OR cuando Q AND R estén en ALTO. Consulte la tabla 4-3 y observe que la salida está en ALTO para los cuatro casos en los que P está en BAJO. S también está en ALTO cuando Q AND R TABLA 4-3 P Q R S 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 PQR PQR PQR PQR PQR
  • 161. FIGURA 4-10 Circuito para la figura 4-9(d) implementado mediante el uso del chip NAND 74HC00. PREGUNTAS DE REPASO están ambas en ALTO, sin importar el estado de P. Lo anterior concuerda con la ecuación. La implementación AND/OR para este circuito se muestra en la figura 4-9(b). (Paso 5) Para implementar este circuito usando el chip NAND de dos entradas 74HC00, debemos convertir cada una de las compuertas y el INVERSOR en sus compuertas NAND equivalentes (con base en la sección 3-12). Esto se muestra en la figura 4-9(c). Es evidente que podemos eliminar los inversores dobles para producir la implemen- tación con compuertas NAND que se muestra en la figura 4-9(d). El circuito alambrado final se obtiene mediante la conexión de dos de las com- puertas NAND en el chip 74HC00. Este chip CMOS tiene la misma configuración de compuertas y los mismos números de terminales que el chip 74LS00 TTL de la figura 3-31. La figura 4-10 muestra el circuito alambrado con números de terminales, inclu- yendo las terminales 5 V y tierra (GND). También incluye un transistor excitador de salida y un LED para indicar el estado de la salida S. 1. Escriba la expresión de suma de productos para un circuito con cuatro entradas y una salida que debe estar en ALTO sólo cuando la entrada A esté en BAJO al mismo tiempo que dos de las otras entradas estén en BAJO. 2. Implemente la expresión de la pregunta 1 utilizando sólo compuertas NAND de cuatro entradas. ¿Cuántas se requieren? 4-5 MÉTODO DE MAPAS DE KARNAUGH El mapa de Karnaugh (mapa K) es una herramienta gráfica que se utiliza para simpli- ficar una ecuación lógica o convertir una tabla de verdad en su correspondiente cir- cuito lógico mediante un proceso simple y ordenado.Aunque un mapa K puede usarse para problemas en los que se involucre cualquier número de variables de entrada, su utilidad práctica está limitada a cinco o seis variables. Los siguientes problemas estarán limitados a un máximo de cuatro entradas, ya que los problemas con cinco o más entradas son demasiado complicados y se resuelven mejor mediante el uso de un programa de computadora. P Q R (e) 1 2 3 4 5 6 7 14 S 33 k⍀ 100 ⍀ +5 V 74HC00 74HC00 Nota: las otras dos compuertas en el chip no están conectadas. SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 133
  • 162. 134 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES FIGURA 4-11 Mapas de Karnaugh y tablas de verdad para (a) dos, (b) tres y (c) cuatro variables. Formato del mapa de Karnaugh Al igual que una tabla de verdad, el mapa K es un medio para mostrar la relación entre las entradas lógicas y la salida deseada. La figura 4-11 muestra tres ejemplos de mapas K para dos, tres y cuatro variables, junto con sus correspondientes tablas de verdad. Estos ejemplos ilustran los siguientes puntos importantes: 1. La tabla de verdad proporciona el valor de la salida X para cada combinación de valores de entrada. El mapa K proporciona la misma información en un for- mato distinto. Cada caso en la tabla de verdad corresponde a una casilla en el mapa K. Por ejemplo, en la figura 4-11(a) la condición A 0, B 0 corresponde la casilla A B en el mapa K. Como la tabla de verdad muestra X 1 para este caso, se coloca un 1 en la casilla A B del mapa K. De manera similar, la condición A 1, B 1 en la tabla de verdad corresponde a la casilla AB del mapa K. Como X 1 para este caso, se coloca un 1 en la casilla AB. Todas las demás casillas se llenan con 0s. Esta misma idea se utiliza en los mapas con tres y cuatro variables que se muestran en la figura. 2. Las casillas del mapa K se etiquetan de manera que las casillas adyacentes en forma horizontal difieran sólo por una variable. Por ejemplo, la casilla de la esquina superior izquierda en el mapa de cuatro variables es A B C D, mientras que la casilla que se encuentra justo a su derecha es A B C D (sólo la variable D es distinta). De manera similar, las casillas adyacentes verticalles sólo difie- A 0 0 1 1 B 0 1 0 1 X 1 → AB 0 0 1 → AB A 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 B 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 C 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 D 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 X 0 1 → ABCD 0 0 0 1 → ABCD 0 0 0 0 0 0 0 1 → ABCD 0 1 → ABCD A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 X 1 → ABC 1 → ABC 1 → ABC 0 0 0 1 → ABC 0 X = ABCD + ABCD + ABCD + ABCD X = ABC + ABC + ABC + ABC 0 1 0 0 1 1 1 0 1 0 0 0 AB AB AB AB AB AB AB AB CD CD CD CD C C (c) (b) (a) x = AB + AB A 1 0 B 1 0 A B 0 1 0 0 0 0 0 0 0 1 1 0
  • 163. 0 0 1 0 1 0 0 0 AB AB AB AB C C (a) X = ABC + ABC = BC 1 0 0 0 0 0 1 0 AB AB AB AB C C (c) X = ABC + ABC = BC 0 0 1 1 AB AB AB AB CD CD CD CD (d) ABC ABD X = ABCD + ABCD + ABCD + ABCD = ABC + ABD 0 0 1 1 0 0 0 0 AB AB AB AB C C (b) X = ABC + ABC = AB 0 0 0 0 1 0 0 1 0 0 0 0 FIGURA 4-12 Ejemplos de agrupamientos de pares de 1s adyacentes. ren por una variable. Por ejemplo, la casilla de la esquina superior izquierda es A B C D, mientras que la casilla que está justo debajo es A B C D (sólo la variable B es distinta). Observe que cada casilla en la fila superior se considera como adyacente a una casilla correspondiente en la fila inferior. Por ejemplo, la casilla A BCD en la fila superior es adyacente a la casilla ABCD en la fila inferior, ya que sólo difieren por la variable A. Podemos considerar que la parte superior del mapa se dobla para tocar su parte inferior. De manera similar, las casillas de la columna más a la izquierda son adyacentes a las correspondientes en la columna más a la derecha. 3. Para que las casillas adyacentes en forma vertical y horizontal difieran sólo por una variable, el etiquetado de arriba hacia abajo debe realizarse en el orden mostrado: A B, AB, AB, AB. Lo mismo aplica para el etiquetado de izquierda a derecha: C D, CD, CD, CD. 4. Una vez que se ha llenado un mapa K con 0s y 1s, puede obtenerse la expresión de suma de productos para la salida X mediante la aplicación de la operación OR a todas las casillas que contengan un 1. En el mapa de tres variables de la figura 4-11(b), las casillas A B C, A BC, ABC y ABC contienen un 1, de manera que X A B C A BC ABC ABC. Agrupamiento La expresión para la salida X puede simplificarse mediante la combinación apropia- da de las casillas en el mapa K que contengan 1s. Al proceso para combinar estos 1s se le conoce como agrupamiento. Agrupamiento de pares (grupos de dos) La figura 4-12(a) es el mapa K para cierta tabla de verdad de tres variables. Este mapa contiene un par de 1s que son adyacentes en forma vertical; el primero representa a ABC y el segundo a ABC. Observe que en estos dos términos, sólo la variable A aparece SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 135
  • 164. 136 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES tanto en forma normal como complementada (invertida), mientras que B y C perma- necen sin cambios. Estos dos términos pueden agruparse (combinarse) para obtener un resultante que elimine la variable A, ya que aparece tanto en forma complementa- da como no complementada. Es fácil demostrarlo de la siguiente manera: Este mismo principio se aplica para cualquier par de 1s adyacentes en forma vertical u horizontal. La figura 4-12(b) muestra un ejemplo de dos 1s adyacentes en forma horizontal; los cuales pueden agruparse, y la variable C puede eliminarse ya que aparece tanto en su forma no complementada como en su forma complementa- da, para obtener un resultante de X AB. La figura 4-12(c) muestra otro ejemplo. En un mapa K, la fila superior y la fila inferior de casillas se consideran adyacentes. Por ende, los dos 1s en este mapa pue- den agruparse para obtener un resultante de A B C AB C B C. La figura 4-12(d) muestra un mapa K que tiene dos pares de 1s que pueden agruparse. Los dos 1s en la fila superior son adyacentes en forma horizontal. Los dos 1s en la fila inferior también son adyacentes ya que, en un mapa K la columna más a la izquierda y la columna más a la derecha se consideran adyacentes. Cuando se agrupa el par de 1s de la parte superior se elimina la variable D (ya que aparece como D y como D) para producir el término A BC. Al agrupar el par de la parte infe- rior se elimina la variable C para producir el término AB D. Después se aplica una operación OR a estos dos términos para obtener el resultado final para X. En resumen: Al agrupar un par de 1s adyacentes en un mapa K se elimina la variable que aparece tanto en forma no complementada como en forma complementada. Agrupamiento de cuádruples (grupos de cuatro) Un mapa K puede contener un grupo de cuatro 1s que sean adyacentes. A este grupo se le conoce como cuádruple. La figura 4-13 muestra varios ejemplos de este tipo. En la figura 4-13(a), los cuatro 1s son adyacentes en forma vertical y en la figura 4-13(b) son adyacentes en forma horizontal. El mapa K de la figura 4-13(c) contiene cuatro 1s en una casilla y se consideran adyacentes entre sí. Los cuatro 1s de la figura 4-13(d) también son adyacentes, al igual que los de la figura 4-13(e) ya que, como dijimos antes, las filas superior e inferior se consideran como adyacentes entre sí, al igual que las columnas más a la izquierda y más a la derecha. Cuando se agrupa un cuádruple, el término resultante sólo contendrá las varia- bles que no cambian su forma en todas las casillas del cuádruple. Por ejemplo, en la figura 4-13(a) las cuatro casillas que contienen un 1 son A BC, ABC, ABC y ABC. Si examinamos estos términos descubriremos que sólo la variable C permanece sin cambios (tanto A como B aparecen en forma complementada y no complementada). Por ende, la expresión resultante para X es tan sólo X C. Esto puede demostrarse de la siguiente manera: = BC(1) = BC = BC(A + A) X = ABC + ABC = C(A + A) = C = AC + AC = AC(B + B) + AC(B + B) X = A BC + ABC + ABC + ABC
  • 165. 0 0 0 0 AB AB AB AB CD CD CD CD X = AB (b) 0 1 0 1 0 1 0 1 AB AB AB AB C C (a) X = C 0 0 0 0 AB AB AB AB CD CD CD CD X = BD (c) 0 0 0 0 0 0 0 0 1 0 0 1 AB AB AB AB CD CD CD CD X = AD (d) 1 0 0 1 0 0 0 0 AB AB AB AB CD CD CD CD (e) X = BD 1 0 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 FIGURA 4-13 Ejemplos de agrupamiento de cuádruples. Como otro ejemplo, considere la figura 4-13(d), en donde las cuatro casillas que contienen 1s son ABC D, AB C D, ABCD y ABCD. Al analizar estos términos podemos ver que sólo las variables A y D permanecen sin cambios, de manera que la expre- sión simplificada para X es X AD Lo que puede demostrarse de la misma forma que se hizo antes. El lector deberá comprobar cada uno de los otros casos de la figura 4-13 para verificar las expresio- nes indicadas para X. En resumen: Al agrupar un cuádruple de 1s adyacentes se eliminan las dos variables que aparecen tanto en forma complementada como en forma no complementada. Agrupamiento de octetos (grupos de ocho) A un grupo de ocho 1s adyacentes entre sí se le conoce como octeto. La figura 4-14 muestra varios ejemplos de octetos. Cuando se agrupa un octeto en un mapa de cua- tro variables se eliminan tres de ellas, ya que sólo una permanece sin cambios. Por ejemplo, si examinamos las ocho casillas agrupadas en la figura 4-14(a) podremos ver que sólo la variable B se encuentra en la misma forma para las ocho casillas: las demás variables aparecen en su forma complementada y no complementada. En consecuencia, para este mapa X B. El lector puede verificar los resultados para los demás ejemplos de la figura 4-14. En resumen: Al agrupar un octeto de 1s adyacentes se eliminan las tres variables que aparecen tanto en su forma complementada como en su forma no comple- mentada. SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 137
  • 166. 138 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES 0 0 0 0 1 1 1 1 AB AB AB AB CD CD CD CD 1 1 0 0 AB AB AB AB CD CD CD CD 1 1 1 1 0 0 0 0 AB AB AB AB CD CD CD CD 1 0 0 1 AB AB AB AB CD CD CD CD X = B (a) X = C (b) X = B (c) X = D (d) 1 1 0 0 1 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 FIGURA 4-14 Ejemplos de agrupamiento de octetos. Proceso completo de simplificación Hemos visto cómo se puede utilizar el agrupamiento de pares, cuádruples y octetos en un mapa K para obtener una expresión simplificada. Podemos resumir la regla para los agrupamientos de cualquier tamaño, de la siguiente manera: Cuando una variable aparece tanto en su forma complementada como no complementada dentro de un grupo, esa variable se elimina de la expresión. Las variables que son iguales para todas las casillas del grupo deben apare- cer en la expresión final. Debe quedar claro que un agrupamiento mayor de 1s elimina más variables. Para ser exacto, un agrupamiento de dos elimina una variable, un agrupamiento de cuatro elimina dos variables y un agrupamiento de ocho elimina tres. Ahora utiliza- remos este principio para obtener una expresión lógica simplificada a partir de un mapa K que contenga cualquier combinación de 1s y 0s. Primero describiremos el procedimiento y después lo aplicaremos en varios ejemplos. Los siguientes pasos son el procedimiento mediante el uso del método del mapa K, para simplificar una expresión booleana: Paso 1 Construya el mapa K y coloque 1s en las casillas que correspondan a los 1s en la tabla de verdad. Coloque 0s en las demás casillas. Paso 2 Examine el mapa en busca de 1s adyacentes y marque los que no sean adya- centes con cualquier otro 1. A éstos se les conoce como 1s aislados. Paso 3 A continuación busque los 1s que sean adyacentes sólo con otro 1. Agrupe cualquier par que contenga este tipo de 1s. Paso 4 Agrupe cualquier octeto, aún y cuando contenga algunos 1s que ya se hayan agrupado. Paso 5 Agrupe cualquier cuádruple que contenga uno o más 1s que no se hayan agrupado ya, asegurándose de utilizar el número mínimo de grupos.
  • 167. EJEMPLO 4-10 Paso 6 Agrupe cualquier par necesario para incluir todos los 1 que no se hayan agru- pado todavía, asegurándose de utilizar el número mínimo de agrupamientos. Paso 7 Forme la suma OR de todos los términos generados, uno por cada grupo. En los siguientes ejemplos seguiremos al pie de la letra cada uno de estos pasos y haremos referencia a ellos. En cada caso, la expresión lógica resultante estará en su forma de suma de productos más simple. La figura 4-15(a) muestra el mapa K para un problema con cuatro variables. Supon- dremos que el mapa se obtuvo de la tabla de verdad del problema (paso 1). Las casillas están numeradas para identificar cada uno de los grupos. Paso 2 La casilla 4 es la única que contiene un 1 que no es adyacente con cualquier otro 1. Se agrupa y se identifica como grupo 4. Paso 3 La casilla 15 es adyacente sólo con la casilla 11. Este par se agrupa y se iden- tifica como grupo 11, 15. Paso 4 No hay octetos. Paso 5 Las casillas 6, 7, 10 y 11 forman un cuádruple. Este cuádruple se agrupa (gru- po 6, 7, 10, 11). Observe que la casilla 11 se utiliza de nuevo, aun y cuando forma parte del grupo 11, 15. FIGURA 4-15 Ejemplos 4-10 al 4-12. 0 0 0 1 0 1 1 0 0 1 1 0 0 0 1 0 AB AB AB AB CD CD CD CD 0 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 AB AB AB AB CD CD CD CD 0 1 0 0 0 1 1 1 1 1 1 0 0 0 1 0 AB AB AB AB CD CD CD CD X = ABCD + ACD + BD grupo 4 grupo 11, 15 grupo 6, 7, 10, 11 X = AB + BC + ACD grupo 5, 6, 7, 8 grupo 5, 6, 9, 10 grupo 3, 7 X = ABC + ACD + ABC + ACD 9, 10 2, 6 7, 8 11, 15 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 5 6 7 8 9 10 11 13 14 15 16 (c) (b) (a) 12 12 SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 139
  • 168. 140 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES 0 1 0 0 0 1 1 1 0 0 0 1 1 1 0 1 AB AB AB AB CD CD CD CD 0 1 0 0 0 1 1 1 0 0 0 1 1 1 0 1 AB AB AB AB CD CD CD CD X = ABD + BCD + BCD + ABD (b) X = ACD + ABC + ABC + ACD (a) FIGURA 4-16 El mismo mapa K con dos soluciones correctas similares. EJEMPLO 4-11 EJEMPLO 4-12 EJEMPLO 4-13 Paso 6 Ya se han agrupado todos los 1s. Paso 7 Cada grupo genera un término en la expresión para X. El grupo 4 es A BCD. El grupo 11, 15 es ACD (se elimina la variable B). El grupo 6, 7, 10, 11 es BD (se eliminan A y C). Considere el mapa K de la figura 4-15(b). Una vez más podemos suponer que ya se ha realizado el paso 1. Paso 2 No hay 1s aislados. Paso 3 El 1 en la casilla 3 es adyacente sólo con el 1 en la casilla 7. Al agrupar este par (grupo 3, 7) se produce el término ACD. Paso 4 No hay octetos. Paso 5 Hay dos cuádruples: El primero lo forman los cuadros 5, 6, 7 y 8 . Al agrupar este cuádruple se produce el término AB. El segundo está compuesto por las casillas 5, 6, 9 y 10. Se debe agrupar este cuádruple, ya que contiene dos casillas que no se han agrupado antes. Al agruparlo se produce BC. Paso 6 Ya se han agrupado todos los 1s. Paso 7 Se aplica la operación OR a los términos generados por los tres grupos y se obtiene la expresión para X. Considere el mapa K de la figura 4-15(c): Paso 2 No hay 1s aislados. Paso 3 El 1 en la casilla 2 es adyacente sólo para el 1 en la casilla 6. Este par se agru- pa para producir A CD. De manera similar, la casilla 9 es adyacente sólo con la casilla 10. Al agrupar este par se produce ABC. De igual forma, los grupos 7, 8 y 11, 15 producen los términos ABC y ACD, en forma correspondiente. Paso 4 No hay octetos. Paso 5 Sólo hay un cuádruple formado por las casillas 6, 7, 10 y 11. No obstante, este cuádruple no se agrupa debido a que todos los 1s que contiene ya se han incluido en otros grupos. Paso 6 Ya se han agrupado todos los 1s. Paso 7 La expresión para X se muestra en la figura. Considere el mapa K de la figura 4-16(a).
  • 169. EJEMPLO 4-14 Paso 2 No hay 1s aislados. Paso 3 No hay 1s que sean adyacentes sólo con otro 1. Paso 4 No hay octetos. Paso 5 No hay cuádruples. Pasos 6 y 7 Hay muchos pares posibles. El agrupamiento debe utilizar el núme- ro mínimo de grupos para tomar en cuenta a todos los 1s. Para este mapa hay dos grupos posibles, los cuales requieren sólo cuatro pares agrupados. La figura 4-16(a) muestra una solución y su expresión resultante. La figura 4-16(b) muestra la otra. Observe que ambas expresiones son de la misma complejidad, por lo cual ninguna es mejor que la otra. Cómo llenar un mapa K a partir de una expresión de salida Cuando la salida deseada se presenta como expresión booleana en vez de tabla de verdad, el mapa K puede llenarse mediante el uso de los siguientes pasos: 1. Cambie la expresión a su forma SOP, en caso de que no se encuentre ya en esa forma. 2. Para cada término de productos en la expresión SOP, coloque un 1 en cada casi- lla del mapa K cuya etiqueta contenga la misma combinación de variables de entrada. Coloque un 0 en todas las demás casillas. El siguiente ejemplo ilustra este procedimiento. Use un mapa K para simplificar la expresión y C(A B D D) ABC D. Solución 1. Multiplique el primer término para obtener y A B C D CD ABC D, que se encuentra ahora en la forma SOP. 2. Para el término A B C D sólo necesita colocar un 1 en la casilla A B C D del mapa K (figura 4-17). Para el término CD coloque un 1 en todas las casillas que tengan CD en sus etiquetas: A B CD, ABCD, ABCD, AB CD. Para el término ABC coloque un 1 en todas las casillas que tengan un ABC en sus etiquetas: ABCD, ABCD. Para el término D coloque un 1 en todas las casillas que tengan una D en sus etique- tas: en todas las casillas de las columnas más a la izquierda y más a la derecha. Ahora el mapa K está lleno y puede agruparse para simplificar la expresión. Verifi- que que un agrupamiento apropiado produzca la expresión y AB C D. 1 1 0 1 1 1 0 1 AB AB AB AB CD CD CD CD y = AB + C + D 1 1 0 1 1 1 1 1 FIGURA 4-17 Ejemplo 4-14. SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 141
  • 170. 142 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES EJEMPLO 4-15 Condiciones “No importa” Algunos circuitos lógicos pueden diseñarse de manera que haya ciertas condiciones de entrada para las cuales no existan niveles de salida especificados, por lo general, debido a que estas condiciones de entrada nunca ocurrirán. En otras palabras, habrá ciertas combinaciones de niveles de entrada en las que “no importa” si la salida está en ALTO o en BAJO. Esto se ilustra en la tabla de verdad de la figura 4-18(a). Aquí la salida z no se especifica como 0 o 1 para las condiciones A, B, C 1, 0, 0 y A, B, C 0, 1, 1. En vez de ello se muestra una x para estas condiciones. La x representa la condición de “no importa”. Este tipo de condición puede surgir debido a varias razones; es la más común que en algunas situaciones nunca podrán ocurrir ciertas combinaciones de entradas, por lo que no hay una salida especificada para estas condiciones. Un diseñador de circuitos tiene la libertad de hacer que la salida para cualquier condición de “no importa” sea un 0 o un 1 para producir la expresión de salida más simple. Por ejemplo, el mapa K para esta tabla de verdad se muestra en la figura 4-18(b), con una x en las casillas AB C y ABC. Aquí la mejor opción para el diseñador sería cambiar la x de la casilla AB C por un 1 y la x de la casilla ABC por un 0, ya que esto produciría un cuádruple que puede agruparse para producir z A, como se muestra en la figura 4-18(c). Siempre que ocurran condiciones de “no importa”, debemos decidir cuál x se va a cambiar por 0 y cuál por 1 para producir el mejor agrupamiento del mapa K (es decir, el grupo más grande que resulta en la expresión más simple). Esta decisión no siempre es fácil. Varios de los problemas al final del capítulo le ayudarán a aumen- tar su experiencia para tratar los casos de “no importa”. He aquí otro ejemplo. Vamos a diseñar un circuito lógico que controla la puerta de un elevador en un edificio de tres pisos. El circuito de la figura 4-19(a) tiene cuatro entradas. M es una señal lógica que indica cuando se mueve el elevador (M 1) o cuando está detenido (M 0). F1, F2 y F3 son señales indicadoras de cada piso que, por lo general, están en BAJO, y cambian a ALTO sólo cuando el elevador está posicionado en ese piso. Por ejemplo, cuando el elevador está alineado con el segundo piso, F2 1 y F1 F3 0. La salida del circuito es la señal ABIERTO que, por lo general, está en BAJO y cambia a ALTO cuando se va a abrir la puerta del elevador. Podemos llenar la tabla de verdad para la salida ABIERTO [Figura 4-19(b)] de la siguiente manera: 1. Como el elevador no puede alinearse con más de un piso a la vez, sólo una de las entradas de los pisos puede estar en ALTO en un momento dado. Esto significa que todos aquellos casos en la tabla de verdad en los que más de una entrada de piso esté en 1 serán condiciones de “no importa”. Podemos colocar una x en la FIGURA 4-18 Las condiciones “No importa” deben cambiarse por 0 o 1 para producir un agrupamiento del mapa K que genere la expresión más simple. 0 0 0 x 1 1 x 1 AB AB AB AB C C 0 0 0 0 1 1 1 1 AB AB AB AB C C A 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 z 0 0 0 x x 1 1 1 “no importa” (a) (b) (c) z = A
  • 171. F2 0 0 X 0 0 X X X 1 X X X 0 1 X 1 F3 F2F3 F2F3 F2F3 M F1 M F1 M F1 M F1 (c) F2 0 0 0 0 0 0 0 0 0 1 1 1 F3 F2F3 F2F3 F2F3 M F1 M F1 M F1 M F1 (d) OPEN = M (F1 + F2 + F3) (b) M 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 F1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 F2 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 F3 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 ABIERTO 0 1 1 X 1 X X X 0 0 0 X 0 X X X F3 F2 F1 M ABIERTO (a) 1 1 1 1 Moviendo el elevador FIGURA 4-19 Ejemplo 4-15. columna de la salida ABIERTO para los ocho casos en los que más de una entra- da F es 1. 2. Si analizamos los otros ocho casos, cuando M 1 el elevador se está moviendo, por lo que ABIERTO debe ser un 0 ya que no deseamos que se abra la puerta del elevador. Cuando M 0 (el elevador está detenido) queremos que ABIERTO 1 siempre y cuando una de las entradas de piso sea 1. Cuando M 0 y todas las entradas de piso son 0, el elevador está detenido pero no está alineado en forma apropiada con ninguno de los pisos, por lo que queremos que ABIERTO 0 para mantener la puerta cerrada. Ahora la tabla de verdad está completa y podemos transferir su información al mapa K de la figura 4-19(c). El mapa sólo tiene tres 1s, pero ocho condiciones de “no importa”. Al cambiar cuatro de estas casillas de “no importa” por 1s, pode- mos producir grupos de cuádruples que contengan los 1s originales [Figura 4-19(d)]. Esto es lo mejor que podemos hacer en cuanto a minimizar la expresión de salida. Verifique que los agrupamientos produzcan la expresión de salida que se muestra para ABIERTO. Resumen El proceso de mapa K tiene varias ventajas en comparación con el método algebrai- co. El mapeo K es un proceso más ordenado, con pasos bien definidos en comparación con el proceso de prueba y error que se utiliza algunas veces en la simplificación alge- braica. Por lo general, el mapeo K requiere menos pasos, en especial para las expre- siones que contienen muchos términos, y siempre produce una expresión mínima. SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 143
  • 172. 144 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES PREGUNTAS DE REPASO Sin embargo, algunos instructores prefieren el método algebraico debido a que requiere un profundo conocimiento del álgebra booleana y no es tan sólo un pro- cedimiento mecánico. Cada método tiene sus ventajas y, aunque la mayoría de los diseñadores lógicos son adeptos en ambos, ser proficiente en uno de ellos es todo lo que se necesita para producir resultados aceptables. Existen otras técnicas más complejas que utilizan los diseñadores para mini- mizar circuitos lógicos con más de cuatro entradas. Estas técnicas se adecuan en forma especial a los circuitos con grandes cantidades de entradas, en donde no pue- de considerarse el método algebraico ni el mapeo K. La mayoría de estas técnicas puede traducirse a un programa de computadora que realizará la minimización con base en los datos de entrada que suministre la tabla de verdad o la expresión sin simplificar. 1. Utilice el mapeo K para obtener la expresión del ejemplo 4-7. 2. Utilice el mapeo K para obtener la expresión del ejemplo 4-8. Aquí se debe enfa- tizar la ventaja del mapeo K para expresiones que contengan muchos términos. 3. Obtenga la expresión del ejemplo 4-9, utilizando un mapa K. 4. ¿Qué es una condición de “no importa”? 4-6 CIRCUITOS OR EXCLUSIVOY NOR EXCLUSIVO Dos de los circuitos lógicos especiales que se presentan con mucha frecuencia en los sistemas digitales son el OR exclusivo y el NOR exclusivo. OR exclusivo Considere el circuito lógico de la figura 4-20(a). La expresión de salida de este cir- cuito es x AB AB FIGURA 4-20 (a) Circuito OR exclusivo y su tabla de verdad; (b) símbolo tradicional de la compuerta XOR; (c) símbolo IEEE/ANSI para la compuerta XOR. A 0 0 1 1 B 0 1 0 1 x 0 1 1 0 x = A ⊕ B A B = 1 (c) (b) x = A ⊕ B = AB + AB A B A B A B A B AB x = AB + AB (a) AB Símbolos de compuerta XOR
  • 173. La tabla de verdad que acompaña a este circuito muestra que x 1 para dos casos: A 0, B 1 (el término AB) y A 1, B 0 (el término AB). En otras palabras: Este circuito produce una salida en ALTO siempre que las dos entradas se encuentran en los niveles opuestos. Éste es el circuito OR exclusivo, que de aquí en adelante se abreviará como XOR. Esta combinación específica de compuertas lógicas se produce con mucha fre- cuencia y es muy útil en ciertas aplicaciones. De hecho, al circuito XOR se le ha otorgado su propio símbolo, el cual se muestra en la figura 4-20(b). Se asume que este símbolo contiene toda la lógica dentro del circuito XOR y, por lo tanto, tiene la mis- ma expresión lógica y la misma tabla de verdad. Por lo general, al circuito XOR se le conoce como compuerta XOR, y lo consideramos como otro tipo de compuerta lógica. En la figura 4-20(c) se muestra el símbolo IEEE/ANSI para una compuerta XOR. El símbolo de notación de dependencia ( 1) dentro del bloque indica que la salida será activa en ALTO sólo cuando una de las entradas esté en ALTO. Una compuerta XOR sólo tiene dos entradas; no hay compuertas XOR de tres ni de cuatro entradas. Las dos entradas se combinan de manera que x AB AB. Una forma abreviada que se utiliza algunas veces para indicar la expresión de salida XOR es x A B en donde el símbolo representa la operación de la compuerta XOR. A continuación se sintetizan las características de una compuerta XOR: 1. Sólo tiene dos entradas y su salida es x AB AB A B 2. Su salida está en ALTO sólo cuando las dos entradas se encuentran en niveles distintos. Hay varios CIs disponibles que contienen compuertas XOR. Los que se listan a continuación son chips que contienen cuatro compuertas XOR. 74LS86 Chip con cuatro compuertas XOR (familia TTL) 74C86 Chip con cuatro compuertas XOR (familia CMOS) 74HC86 XOR (CMOS de alta velocidad) NOR exclusivo El circuito NOR exclusivo (que se abrevia como XNOR) opera en forma completa- mente opuesta al circuito XOR. La figura 4-21(a) muestra un circuito XNOR y su tabla de verdad correspondiente. La expresión de salida es x AB A B lo cual indica junto con la tabla de verdad que x será 1 para dos casos: A B 1 (el término AB) y A B 0 (el término A B). En otras palabras: El circuito XNOR produce una salida en ALTO siempre que las dos entradas se encuentran en el mismo nivel. De todo esto podemos deducir que la salida del circuito XNOR es el inverso exacto de la salida del circuito XOR. El símbolo tradicional para una compuerta SECCIÓN 4-6/CIRCUITOS OR EXCLUSIVO Y NOR EXCLUSIVO 145
  • 174. 146 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES FIGURA 4-21 (a) Circuito NOR exclusivo; (b) símbolo tradicional para la compuerta XNOR; (c) símbolo IEEE/ANSI. Símbolos de compuerta XNOR A 0 0 1 1 B 0 1 0 1 x 1 0 0 1 x = AB +AB A B AB A B B A A B A B (b) x = A ⊕ B = AB + AB (c) x = A ⊕ B A B = 1 (a) XNOR se obtiene con sólo agregar un pequeño círculo en la salida del símbolo XOR [figura 4-21(b)]. El símbolo IEEE/ANSI agrega el pequeño triángulo en la salida del símbolo XOR. Ambos símbolos indican una salida que cambia a su estado de activo en BAJO cuando sólo una de las entradas está en ALTO. La compuerta XNOR también tiene sólo dos entradas, y las combina de manera que su salida sea x AB A B Una forma abreviada de indicar la expresión de salida de la compuerta XNOR es x A B la cual es el inverso de la operación XOR. La compuerta XNOR se puede sintetizar de la siguiente manera: 1. Sólo tiene dos entradas y su salida es x AB A B A B 2. Su salida está en ALTO sólo cando las dos entradas se encuentran en el mismo nivel. Hay varios CIs disponibles que contienen compuertas XNOR. Los que se listan a continuación son chips que contienen cuatro compuertas XNOR. 74LS266 Chip con cuatro compuertas XNOR (familia TTL) 74C266 Chip con cuatro compuertas XNOR (CMOS) 74HC266 Chip con cuatro compuertas XNOR (CMOS de alta velocidad)
  • 175. EJEMPLO 4-16 EJEMPLO 4-17 Sin embargo, cada uno de estos chips consta de circuitos con salida especial que limita su uso a ciertos tipos especiales de aplicaciones. Es muy común que un dise- ñador lógico obtenga la función XNOR con sólo conectar la salida de una compuerta XOR a un INVERSOR. Determine la forma de onda de salida para las formas de onda de entrada que se muestran en la figura 4-22. Solución La forma de onda de salida se obtiene mediante el hecho de que la salida XOR esta- rá en ALTO sólo cuando sus entradas se encuentren en distintos niveles. La forma de onda de salida resultante revela varios puntos interesantes: 1. La forma de onda de x concuerda con la forma de onda de entrada A durante los intervalos de tiempo en los que B 0. Esto ocurre durante los intervalos de tiempo t0 a t1 y t2 a t3. 2. La forma de onda de x es el inverso de la forma de onda de entrada A durante los intervalos de tiempo en los que B 1. Esto ocurre durante el intervalo t1 a t2. 3. Estas observaciones muestran que una compuerta XOR puede utilizarse como INVERSOR CONTROLADO; es decir, que una de sus entradas puede utilizarse para controlar si se va a invertir o no la señal de la otra entrada. Esta propiedad puede ser útil en ciertas aplicaciones. La notación x1x0 representa un número binario de dos bits que puede tener cual- quier valor (00, 01, 10 o 11); por ejemplo, cuando x1 1 y x0 0 el número binario es 10, y así sucesivamente. De manera similar, y1y0 representa otro número binario de dos bits. Diseñe un circuito lógico en el que utilice las entradas x1, x0, y1 y y0, y cuya salida esté en ALTO sólo cuando los dos números binarios x1x0 y y1y0 sean iguales. Solución El primer paso es construir una tabla de verdad para las 16 condiciones de entrada (tabla 4-4). La salida z debe estar en ALTO siempre que los valores de x1x0 concuer- den con los valores de y1y0; esto es, siempre que x1 y1 y x0 y0. La tabla muestra que hay cuatro de esos casos. Ahora podríamos continuar con el procedimiento nor- mal, que sería obtener una expresión de suma de productos para z, tratar de simpli- ficarla y después implementar el resultado. No obstante, la naturaleza de este problema lo hace ideal para que se implemente mediante el uso de compuertas XNOR, y con un poco de pensamiento se producirá una solución simple con el míni- mo esfuerzo. Consulte la figura 4-23; en este diagrama lógico, x1 y y1 se alimentan de FIGURA 4-22 Ejemplo 4-16. A B A B x t0 t1 t2 t3 x SECCIÓN 4-6/CIRCUITOS OR EXCLUSIVO Y NOR EXCLUSIVO 147
  • 176. 148 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES EJEMPLO 4-18 una compuerta XNOR y x0 y y0 se alimentan a otra compuerta XNOR. La salida de cada compuerta XNOR estará en ALTO sólo cuando sus entradas sean iguales. Por ende, para x0 y0 y x1 y1 las salidas de ambas compuertas XNOR estarán en ALTO. Ésta es la condición que estamos buscando, ya que significa que los dos núme- ros de dos bits son iguales. La salida de la compuerta AND estará en ALTO sólo para este caso, con lo cual se producirá el resultado deseado. Al simplificar la expresión para la salida de un circuito lógico combinacional, tal vez se encuentre con las operaciones XOR o XNOR cuando esté factorizando. A menudo esto nos lleva a utilizar compuertas XOR o XNOR en la implementación del circuito final. Para ilustrar lo anterior, simplifique el circuito de la figura 4-24(a). Solución La expresión sin simplificar para el circuito se obtiene como z ABCD A B C D A D Podemos factorizar AD de los primeros dos términos: z AD(BC B C) A D TABLA 4-4 x1 x0 y1 y0 z (Salida) 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 1 FIGURA 4-23 Circuito para detectar la igualdad de dos números binarios de dos bits. x1 x0 y1 y0 Número binario Número binario z
  • 177. FIGURA 4-24 El ejemplo 4-18, que muestra cómo puede usarse una compuerta XNOR para simplificar la implementación de un circuito. A B C D ABCD ABCD AD z = ABCD + ABCD +AD (a) B C A D (b) A + D = AD B ⊕ C AD(B ⊕ C) z = AD (B ⊕ C) + AD PREGUNTAS DE REPASO A primera instancia podría pensar que la expresión entre paréntesis puede sus- tituirse por un 1. Pero eso sería cierto sólo si la expresión fuera BC BC. Debería reconocer la operación entre paréntesis como la combinación XNOR de B y C. Este hecho puede usarse para volver a implementar el circuito como se muestra en la figura 4-24(b). Este circuito es mucho más simple que el original, ya que utiliza com- puertas con menos entradas y se han eliminado dos INVERSORES. 1. Use álgebra booleana para demostrar que la expresión de salida de la compuer- ta XNOR es el inverso exacto de la expresión de salida de la compuerta XOR. 2. ¿Cuál es la salida de una compuerta XNOR cuando se conectan a sus entradas una señal lógica y su inverso exacto? 3. Un diseñador lógico necesita un INVERSOR, y todo lo que hay disponible es una compuerta XOR de un chip 74HC86. ¿Necesita otro chip? 4-7 GENERADORY COMPROBADOR DE PARIDAD En el capítulo 2 vimos que un transmisor puede adjuntar un bit de paridad a un conjunto de bits de datos antes de transmitirlos a un receptor. También vimos cómo esto permite al receptor detectar cualquier error de un solo bit que pueda haber ocurrido durante la transmisión. La figura 4-25 muestra un ejemplo de un tipo de SECCIÓN 4-7/GENERADOR Y COMPROBADOR DE PARIDAD 149
  • 178. 150 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES EJEMPLO 4-19 circuito lógico que se utiliza para la generación de paridad y la comprobación de paridad. Este ejemplo específico utiliza un grupo de cuatro bits como los datos que se van a transmitir, y utiliza un bit de paridad par. Puede adaptarse con facilidad para utilizar paridad impar y cualquier número de bits. En la figura 4-25(a), el conjunto de datos que se van a transmitir se aplica al circuito generador de paridad, el cual produce el bit de paridad par P en su salida. Este bit de paridad se transmite al receptor junto con los bits de datos originales, formando un total de cinco bits. En la figura 4-25(b), estos cinco bits (datos pari- dad) entran en el circuito comprobador de paridad del receptor, el cual produce una salida de error E que indica si ocurrió o no un error de un solo bit. No debería sorprendernos demasiado que ambos circuitos empleen compuertas XOR, si consideramos que una sola compuerta XOR opera de manera que produce una salida de 1 si un número impar de sus entradas son 1, y una salida de 0 si un número par de sus entradas son 1. Determine la salida del generador de paridad para cada uno de los siguientes con- juntos de datos de entrada, D3D2D1D0: (a) 0111; (b) 1001; (c) 0000; (d) 0100. Consulte la figura 4-25(a). Solución Para cada caso, aplique los niveles de datos a las entradas del generador de paridad y rastréelas a través de cada compuerta, hacia la salida P. Los resultados son: (a) 1; (b) 0; (c) 0; y (d) 1. Observe que P es 1 sólo cuando los datos originales contienen un número impar de 1s. Por ende, el número total de 1s que se envíen al receptor (datos paridad) será par. D3 D2 D1 D0 Datos originales D3 D2 D1 D0 P Del transmisor Comprobador de paridad par Generador de paridad par (a) (b) Paridad (P) Datos transmitidos con el bit de paridad Error (E) { 1 = error 0 = sin error } FIGURA 4-25 Compuertas XOR utilizadas para implementar (a) el generador de paridad y (b) el comprobador de paridad para un sistema con paridad par.
  • 179. EJEMPLO 4-20 Determine la salida del comprobador de paridad [vea la figura 4-25(b)] para cada uno de los siguientes conjuntos de datos del transmisor: P D3 D2 D1 D0 (a) 0 1 0 1 0 (b) 1 1 1 1 0 (c) 1 1 1 1 1 (d) 1 0 0 0 0 Solución Para cada caso, aplique estos niveles a las entradas del comprobador de paridad y rastréelos a través de las compuertas hacia la salida E. Los resultados son: (a) 0; (b) 0; (c) 1; (d) 1. Observe que se produce un 1 en E sólo cuando aparece un número impar de 1s en las entradas que van hacia el comprobador de paridad. Esto indica que se ha producido un error, ya que se está utilizando la paridad par. 4-8 CIRCUITOS DE HABILITACIÓN/DESHABILITACIÓN Cada una de las compuertas lógicas básicas puede utilizarse para controlar el paso de una señal lógica de entrada hacia la salida. Esto se describe en la figura 4-26, en donde se aplica una señal lógica A a una entrada de cada una de las compuer- tas lógicas básicas. La otra entrada de cada compuerta es la entrada de control B. B = 1 A x = A HABILITAR B = 1 A x = A B = 0 A x = A B = 0 A x = A B = 0 A x = 0 DESHABILITAR B = 0 A x = 1 B = 1 A x = 1 B = 1 A x = 0 FIGURA 4-26 Las cuatro compuertas básicas pueden habilitar o deshabilitar el paso de una señal de entrada A, por medio del nivel lógico en la entrada de control B. SECCIÓN 4-8/CIRCUITOS DE HABILITACIÓN/DESHABILITACIÓN 151
  • 180. 152 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES EJEMPLO 4-21 EJEMPLO 4-22 EJEMPLO 4-23 El nivel lógico en esta entrada de control determinará si la señal de entrada está habilitada para llegar a la salida o deshabilitada para que no pueda llegar a la sali- da. Esta acción de control explica por qué a estos circuitos se les empezó a llamar compuertas. Si examina la figura 4-26 verá que cuando las compuertas no inversoras (AND, OR) están habilitadas, la salida sigue a la señal A de una manera exacta. En contras- te, cuando las compuertas inversoras (NAND, NOR) están habilitadas, la salida es el inverso exacto de la señal A. Observe también que en la figura las compuertas AND y NOR producen una salida constante en BAJO cuando se encuentran en la condición deshabilitada. En contraste, las compuertas NAND y OR producen una salida constante en ALTO cuando están deshabilitadas. En el diseño de circuitos digitales se encontrará con muchas situaciones en las que se habilite o deshabilite el paso de una señal lógica, dependiendo de las condi- ciones presentes en una o más entradas de control. Los siguientes ejemplos mues- tran varias de estas situaciones. Diseñe un circuito lógico que permita que una señal pase a la salida sólo cuando las entradas de control B y C estén ambas en ALTO; en caso contrario, la salida deberá permanecer en BAJO. Solución Debe usarse una compuerta AND, ya que la señal debe pasarse sin invertir y la con- dición de salida de deshabilitación es un nivel BAJO. Como la condición de habili- tación debe ocurrir sólo cuando B C 1 se debe usar una compuerta AND de tres entradas, como muestra la figura 4-27(a). Diseñe un circuito lógico que permita que una señal pase hacia la salida sólo cuando una (pero no ambas) de sus entradas de control esté en ALTO; en caso contrario, la salida permanecerá en ALTO. Solución El resultado se dibuja en la figura 4-27(b). Se utiliza una compuerta OR porque quere- mos que la condición de deshabilitación de la salida sea un nivel ALTO, y no queremos invertir la señal. Las entradas de control B y C se combinan en una compuerta XNOR. Cuando B y C son distintas, la compuerta XNOR envía un nivel BAJO para habilitar la compuerta OR. Cuando B y C son iguales, la compuerta XNOR envía un nivel ALTO para deshabilitar la compuerta OR. Diseñe un circuito lógico con la señal de entrada A, la entrada de control B y las salidas X y Y, que opere de la siguiente manera: 1. Cuando B 1, la salida X seguirá a la entrada A y la salida Y será 0. 2. Cuando B 0, la salida X será 0 y la salida Y seguirá a la entrada A. FIGURA 4-27 Ejemplos 4-21 y 4-22. B C (a) A (b) x x A B C
  • 181. PREGUNTAS DE REPASO Solución Las dos salidas serán 0 cuando estén deshabilitadas y seguirán a la señal de entrada cuando estén habilitadas. Por lo tanto, debe utilizarse una compuerta AND para cada salida. Como X se debe habilitar cuando B 1, su compuerta AND debe estar contro- lada por B, como muestra la figura 4-28. Como Y se debe habilitar cuando B 0, su compuerta AND está controlada por B. Al circuito de la figura 4-28 se le conoce como circuito de dirección de pulso, ya que dirige el pulso de entrada hacia una salida o la otra, dependiendo de B. 1. Diseñe un circuito lógico con tres entradas A, B, C y una salida que cambie a BAJO sólo cuando A esté en ALTO mientras que B y C sean distintas. 2. ¿Cuáles compuertas lógicas producen una salida de 1 en el estado deshabili- tado? 3. ¿Cuáles compuertas lógicas pasan el inverso de la señal de entrada cuando se habilitan? 4-9 CARACTERÍSTICAS BÁSICAS DE LOS CIS DIGITALES Los CIs digitales son una colección de resistencias, diodos y transistores fabricados en una sola pieza de material semiconductor (por lo general, silicio), al cual se le conoce como sustrato, que por lo común se le denomina chip. El chip está encerrado en un encapsulado de plástico o cerámica protectora del cual salen terminales para conectar el CI con otros dispositivos. Uno de los tipos más comunes es el encapsula- do dual en línea (DIP), el cual se muestra en la figura 4-29(a), y se le llama así debido a que contiene dos filas paralelas de terminales. Estas terminales se numeran en sen- tido contrario al de las manecillas del reloj, viéndolas desde la parte superior del encapsulado con respecto a una muesca o punto de identificación en un extremo del encapsulado [vea la figura 4-29(b)]. El DIP que se muestra aquí es un encapsula- do de 14 terminales que mide 0.75 pulg por 0.25 pulg; también se utilizan encapsu- lados de 16, 20, 24, 28, 40 y 64 terminales. La figura 4-29(c) muestra que el chip de silicio es mucho más pequeño que el DIP; por lo general, es de 0.05 pulgadas cuadradas. El chip de silicio se conecta a las terminales del DIP mediante alambres muy finos [con diámetro de una milésima de pulgada (1 mil)]. El DIP es tal vez el encapsulado de CI digital más común que se encuentra en el equipo digital antiguo, pero actualmente se han hecho más populares otros tipos de encapsulados. El CI que se muestra en la figura 4-29(d) es sólo uno de los muchos encapsulados comunes en los circuitos digitales modernos. Este tipo específico utili- za puntas en forma de J que se encorvan por debajo del CI. En el capítulo 8 veremos otros tipos de encapsulados de CI. B A B X Y 0 SI B = 1 0 0 0 SI B = 0 SI B = 1 SI B = 0 FIGURA 4-28 Ejemplo 4-23. SECCIÓN 4-9/CARACTERÍSTICAS BÁSICAS DE LOS CIS DIGITALES 153
  • 182. 154 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES Muesca El chip puede tener un pequeño punto cerca de la terminal 1 1 2 3 4 5 6 7 14 13 12 11 10 9 8 (a) (b) Chip de silicio Terminal 1 Terminal 8 Terminal 14 (c) 1 2 3 4 5 6 7 14 FIGURA 4-29 (a) Encapsulado dual en línea (DIP); (b) vista superior; (c) el chip de silicio es mucho más pequeño que el encapsulado protector; (d) encapsulado PLCC. Esquina biselada Terminal 1 (d) A menudo los CIs digitales se clasifican de acuerdo con la complejidad de sus circuitos, con base en el número de compuertas lógicas equivalentes en el sustrato. En la actualidad existen seis niveles de complejidad que, por lo común, se definen como se muestra en la tabla 4-5. Todos los CIs específicos a los que se hizo referencia en el capítulo 3 y en este capítulo son chips SSI con un número pequeño de compuertas. En los sistemas digi- tales modernos, los dispositivos con integración a mediana escala (MSI) e integra- ción a gran escala (LSI, VLSI, ULSI, GSI) realizan la mayor parte de las funciones que alguna vez requirieron de varios tableros de circuitos llenos de dispositivos SSI. No obstante, los chips SSI se siguen utilizando como “interfaz” o “pegamento” entre estos chips más complejos. Los CIs de pequeña escala facilitan el aprendizaje de los fundamentos de los sistemas digitales. En consecuencia, muchos cursos basados en laboratorio utilizan estos CIs para construir y probar pequeños proyectos. Ahora el mundo industrial de la electrónica digital se ha concentrado en los dispositivos lógicos programables (PLDs) para implementar un sistema digital de cualquier tamaño. Algunos PLDs simples están disponibles en encapsulados DIP, TABLA 4-5 Complejidad Compuertas por chip Integración a pequeña escala (SSI) Menos de 12 Integración a mediana escala (MSI) De 12 a 99 Integración a gran escala (LSI) De 100 a 9999 Integración a muy grande escala (VLSI) De 10,000 a 99,999 Integración a ultra gran escala (ULSI) De 100,000 a 999,999 Integración a giga escala (GSI) 1,000,000 o más
  • 183. pero los dispositivos lógicos programables más complejos requieren muchas más ter- minales de las que están disponibles en los DIPs. Los circuitos integrados más grandes que tal vez necesiten extraerse de un circuito para sustituirlos, por lo gene- ral, se fabrican en un encapsulado de soporte de chip de plástico con contactos (PLCC). La figura 4-29(d) muestra el EPM 7128SLC84 de Altera en un encapsulado PLCC, el cual es un PLD muy popular que se utiliza en muchos cursos de laboratorio. Las características clave de este chip son más terminales, un tamaño más compacto, y terminales alrededor de todo su perímetro. Observe que la terminal 1 no está “en la esquina” como en el DIP, sino en medio de la parte superior del encapsulado. CIs bipolares y unipolares Los CIs digitales también pueden clasificarse de acuerdo con el tipo principal de componente electrónico utilizado en sus circuitos. Los CIs bipolares se fabrican mediante el uso del transistor de unión bipolar (NPN y PNP) como elemento princi- pal del circuito. Los CIs unipolares utilizan el transistor unipolar de efecto de campo (MOSFETs de canal P y N) como su elemento principal. La familia lógica de transistor/transistor (TTL) ha sido la familia principal de CIs digitales bipolares durante más de 30 años. La serie 74 estándar fue la primera serie de CIs TTL, pero ya no se utiliza en diseños nuevos debido a que fue sustituida por varias series TTL de mejor desempeño, aunque su arreglo básico de circuitos forma la base para todos los CIs de las series TTL. Este arreglo de circuitos se mues- tra en la figura 4-30(a) para el INVERSOR TTL estándar. Observe que el circuito contiene varios transistores bipolares como elementos principales del circuito. La familia TTL fue la familia líder de CIs en las categorías SSI y MSI hasta hace aproximadamente 12 años. Desde entonces la familia de semiconductor metal-óxi- do complementario (CMOS) ha desplazado gradualmente a la familia TTL de esa posición. La familia CMOS pertenece a la clase de CIs digitales unipolares, ya que utiliza MOSFETs de canal P y N como elementos principales del circuito. La figura 4-30(b) es un circuito INVERSOR CMOS estándar. Si comparamos los circuitos TTL y CMOS de la figura 4-30, es evidente que la versión CMOS utiliza menos componen- tes. Ésta es una de las principales ventajas de CMOS en comparación con TTL. +VCC (14) Entrada A (1) Número de terminal Q1 D1 D2 Q2 Q3 Q4 Q1 Q2 Salida (2) GND (7) (b) +VDD (14) Entrada A (1) 115 ⍀ R4 1.6 k⍀ R2 3.6 k⍀ R1 1 k⍀ R3 Salida y (2) GND(7) (a) FIGURA 4-30 (a) Circuito INVERSOR TTL; (b) Circuito INVERSOR CMOS. Los números de terminales se muestran entre paréntesis. SECCIÓN 4-9/CARACTERÍSTICAS BÁSICAS DE LOS CIS DIGITALES 155
  • 184. 156 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES Debido a la simpleza y tamaño reducido, así como de otros atributos superiores de los circuitos CMOS, los CIs modernos a gran escala se fabrican utilizando en su mayor parte la tecnología CMOS. Los cursos de laboratorio que utilizan dispositivos SSI y MSI a menudo utilizan TTL debido a su resistencia, aunque algunos utilizan CMOS también. En el capítulo 8 veremos un estudio detallado de los circuitos y las características de TTL y CMOS. Por ahora necesitamos conocer sólo algunas de sus características básicas para poder hablar sobre el diagnóstico de fallas en los circuitos combinacionales simples. Familia TTL La familia lógica TTL consiste en realidad de varias subfamilias o series. La tabla 4-6 lista el nombre de cada serie TTL, junto con la designación de prefijo que se utiliza para identificar los distintos CIs como parte de esa serie. Por ejemplo, los CIs que forman parte de la serie TTL estándar tienen un número de identificación que comienza con 74. Los CIs 7402, 7438 y 74123 son de esta serie. De igual forma, los CIs que forman parte de la serie TTL Schottky de bajo consumo de energía tie- nen un número de identificación que comienza con 74LS. Los CIs 74LS02, 74LS38 y 74LS123 son ejemplos de dispositivos de ésta. Las principales diferencias en las diversas series TTL tienen que ver con sus características eléctricas tales como la disipación de potencia y la velocidad de con- mutación. No difieren en cuanto a la distribución de las terminales o las operacio- nes lógicas realizadas por los circuitos en el chip. Por ejemplo, los CIs 7404, 74S04, 74LS04, 74AS04 y 74ALS04 son circuitos de INVERSORES, cada uno de los cuales contiene seis INVERSORES en un solo chip. Familia CMOS Actualmente existen varias series CMOS, algunas de ellas se listan en la tabla 4-7. La serie 4000 es la más antigua. Esta serie contiene muchas de las mismas funciones lógicas que la familia TTL, pero no se diseñó para ser compatible con las terminales de los dispositivos TTL. Por ejemplo, el chip NOR cuádruple 4001 contiene cuatro compuertas NOR de dos entradas, al igual que el chip 7402 TTL, pero las entradas y las salidas de las compuertas en el chip CMOS no tienen los mismos números de terminales que las señales correspondientes en el chip TTL. Las series CMOS 74C, 74HC, 74HCT, 74AC y 74ACT son más recientes. Las pri- meras tres son compatibles con las terminales de los dispositivos TTL con numera- ciones correspondientes. Por ejemplo, los dispositivos 74C02, 74HC02 y 74HCT02 tienen la misma distribución de terminales que el 7402, 74LS02, y así en lo sucesivo. Las series 74HC y 74HCT operan a una mayor velocidad que los dispositivos 74C. La serie 74HCT está diseñada para ser eléctricamente compatible con los dispositi- vos TTL; esto es, un circuito integrado 74HCT puede conectarse en forma directa con los dispositivos TTL sin necesidad de circuitos que actúen como interfaz. Las series 74AC y 74ACT son CIs de desempeño avanzado. Ninguno es compatible con las terminales de los circuitos TTL. Los dispositivos 74ACT son eléctricamente com- patibles con los circuitos TTL. En el capítulo 8 exploraremos las diversas series TTL y CMOS con más detalle. TABLA 4-6 Varias series dentro de la familia lógica TTL. Serie TTL Prejo CI de ejemplo TTL estándar 74 7404 (INVERSOR hex) TTL Schottky 74S 74S04 (INVERSOR hex) TTL Schottky de bajo consumo de energía 74LS 74LS04 (INVERSOR hex) TTL Schottky avanzado 74AS 74AS04 (INVERSOR hex) TTL Schottky avanzado de bajo consumo 74ALS 74ALS04 (INVERSOR hex) de energía
  • 185. Alimentación y tierra Para usar CIs digitales es necesario realizar las conexiones apropiadas a las termina- les del CI. Las conexiones más importantes son: alimentación de corriente directa(cd) y tierra. Estas conexiones son requeridas para que los circuitos en el chip operen en forma correcta. En la figura 4-30 podemos ver que tanto el circuito TTL como CMOS tienen un voltaje de alimentación de cd conectado a una de sus terminales, y tierra en la otra. La terminal de voltaje de alimentación se etiqueta como VCC para el circuito TTL y como VDD para el circuito CMOS. Muchos de los circuitos integra- dos CMOS más recientes que están diseñados para ser compatibles con los circuitos integrados TTL también utilizan la designación VCC en dicha terminal. Si el CI no se conecta al voltaje de alimentación o a tierra, las compuertas lógi- cas en el chip no responderán en forma apropiada a las entradas lógicas y las com- puertas no producirán los niveles lógicos de salida esperados. Intervalos de voltaje de niveles lógicos Para los dispositivos TTL, el valor nominal de VCC es 5 V. Para los circuitos integra- dos CMOS, VDD puede variar de 3 a 18V, aunque el valor más común es 5V cuan- do los circuitos CMOS se utilizan en la misma placa con circuitos integrados TTL. Para los dispositivosTTL estándar, los intervalos de voltaje de entrada aceptables para los niveles de 0 lógico y de 1 lógico se definen como muestra la figura 4-31(a). Un 0 lógico es cualquier voltaje en el intervalo de 0 a 0.8 V; un 1 lógico es cualquier voltaje de 2 a 5 V. Los voltajes que no se encuentran en ninguno de estos intervalos se consideran como indeterminados y no deben utilizarse como entradas para un dis- positivo TTL. Los fabricantes de circuitos integrados no pueden garantizar la manera en que responderá un circuito TTL a los niveles de entrada que se encuentren en el intervalo indeterminado (entre 0.8 y 2.0 V). La figura 4-31(b) muestra los intervalos de voltaje de entrada lógicos para los circuitos integrados CMOS que operan con VDD 5 V. Los voltajes entre 0 y 1.5 V se definen como un 0 lógico, y los voltajes desde 3.5 hasta 5 V se definen como un 1 lógico. El intervalo indeterminado comprende los voltajes entre 1.5 y 3.5 V. Entradas desconectadas (flotantes) ¿Qué ocurre cuando la entrada a un circuito integrado digital se deja desconectada? Por lo general, a una entrada desconectada se le conoce como entrada flotante. La respuesta a esta pregunta será distinta para TTL y para CMOS. TABLA 4-7 Varias series dentro de la familia lógica CMOS. Serie CMOS Prejo CI de ejemplo CMOS de compuerta de metal 40 4001 (cuatro compuertas NOR) Compuerta de metal, compatible 74C 74C02 (cuatro con las terminales de TTL compuertas NOR) Compuerta de silicio de alta velocidad, 74HC 74HC02 (cuatro compatible con las terminales TTL compuertas NOR) Compuerta de silicio de alta velocidad, 74HCT 74HCT02 (cuatro compatible con las terminales y compuertas NOR) eléctricamente compatible con la familia TTL CMOS con desempeño avanzado, no es 74AC 74AC02 (cuatro compatible con las terminales ni es compuertas NOR) eléctricamente compatible con la familia TTL CMOS con desempeño avanzado, no es 74ACT 74ACT02 (cuatro compatible con las terminales de TTL, compuertas NOR) pero es eléctricamente compatible SECCIÓN 4-9/CARACTERÍSTICAS BÁSICAS DE LOS CIS DIGITALES 157
  • 186. 158 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES FIGURA 4-31 Intervalos de voltajes de entrada de los niveles lógicos para los CIs digitales (a) TTL y (b) CMOS. Una entrada TTL flotante actúa justo igual que un 1 lógico. En otras palabras, el CI responderá como si se le hubiera aplicado un nivel lógico ALTO. Esta caracterís- tica se utiliza a menudo cuando se prueba un circuito TTL. Un técnico descuidado podría dejar ciertas entradas desconectadas en vez de conectarlas a un nivel lógico ALTO. Aunque esto es “lógicamente” correcto no es una práctica recomendada, en especial cuando se trata de diseños de circuitos finales, ya que la entrada TTL flo- tante es muy susceptible de recoger señales de ruido que podrían afectar en forma adversa la operación del dispositivo. En algunas compuertas TTL, una entrada flotante puede indicar un nivel de corriente directa de entre 1.4 y 1.8V, si se comprueba con un voltímetro o un oscilos- copio. Aun y cuando estos valores se encuentran en el intervalo indeterminado para TTL, producirá la misma respuesta que un 1 lógico. Es importante tener en cuenta esta característica de una entrada TTL flotante al diagnosticar fallas en circuitos TTL ya que puede ser de gran ayuda. Si una entrada CMOS se deja flotante, pueden producirse resultados desastro- sos. El CI podría sobrecalentarse y hasta dañarse. Por esta razón, todas las entradas de un circuito integrado CMOS deben conectarse a un nivel ALTO o BAJO, o a la salida de otro CI. Una entrada CMOS flotante no se medirá como un voltaje especí- fico de corriente directa, sino que fluctuará en forma aleatoria a medida que recoja ruido. Por ende, no actúa como 1 ni como 0 lógico y su efecto sobre la salida es impredecible. Algunas veces la salida oscilará como resultado del ruido que recoja la salida flotante. Muchos de los CIs CMOS más complejos tienen circuitos integrados en las entra- das, los cuales reducen la probabilidad de cualquier reacción destructiva para una entrada abierta. Con estos circuitos, a la hora de experimentar con ellos, no es nece- sario aterrizar cada una de las terminales que no se utilicen en estos CIs grandes. No obstante, es una buena práctica conectar las entradas no utilizadas al nivel ALTO o BAJO (lo que sea apropiado) en la implementación del circuito final. Diagramas de conexiones de circuitos lógicos Un diagrama de conexiones muestra todas las conexiones eléctricas, números de ter- minal, números de CI, valores de los componentes, nombres de las señales y voltajes de alimentación. La figura 4-32 muestra un diagrama de conexiones común para un circuito lógico simple. Examínelo con cuidado y observe los siguientes puntos importantes: 1. El circuito utiliza compuertas lógicas de dos CIs distintos. Los dos INVERSO- RES forman parte de un chip 74HC04, designado como Z1. El 74HC04 contiene seis INVERSORES; dos de ellos se utilizan en este circuito y cada uno está eti- quetado como parte del chip Z1. De manera similar, las dos compuertas NAND son parte de un chip 74HC00 que contiene cuatro compuertas NAND. Todas 1 LÓGICO 0 LÓGICO Indeterminado 1 LÓGICO 0 LÓGICO Indeterminado TTL (a) 1.5 V . . . 5.0 V . . . 2.0 V . . . 0.8 V . . . 3.5 V . . . 0 V . . . 5.0 V . . . 0 V . . . *VDD = + 5 V (b) CMOS*
  • 187. FIGURA 4-32 Diagrama de conexiones de un circuito lógico común. las compuertas en este chip están designadas con la etiqueta Z2. Al numerar cada compuerta como Z1, Z2, Z3 etcétera, podemos llevar el registro de cuál compuerta forma parte de cada chip. Esto es muy útil en los circuitos más com- plejos que contienen muchos CIs con varias compuertas por chip. 2. El número de terminal de las entradas y salidas de cada compuerta se indica en el diagrama. Estos números de terminales y las etiquetas de los CIs se uti- lizan para facilitar la referencia a cualquier punto en el circuito. Por ejemplo, la terminal 2 de Z1 se refiere a la terminal de salida del INVERSOR superior. De manera similar, podemos decir que la terminal 4 de Z1 está conectada a la terminal 9 de Z2. 3. Las conexiones de alimentación y de tierra para cada CI (no para cada com- puerta) se muestran en el diagrama. Por ejemplo, la terminal 14 de Z1 está conectada a 5V, y la terminal 7 de Z1 está conectada a tierra. Estas conexiones proveen de energía a los seis INVERSORES que forman parte de Z1. 4. Para el circuito mostrado en la figura 4-32, las señales que son entradas están a la izquierda. Las señales que son salidas están a la derecha. La barra sobre el nombre de la señal indica que ésta es activa en BAJO. Las burbujas se colocan también en los símbolos del diagrama para indicar el estado activo en BAJO. En este caso, es obvio que cada señal es un solo bit. 5. Las señales se definen en forma gráfica en la figura 4-32 como entradas y sali- das, y la relación entre ellas (la operación del circuito) se describe en forma gráfica mediante el uso de símbolos lógicos interconectados. Por lo general, los fabricantes de equipo electrónico suministran diagramas esquemáticos detallados que utilizan un formato similar al de la figura 4-32. Estos diagramas de conexiones son virtualmente necesarios cuando se diagnostican fallas en un circuito defectuoso. Hemos optado por identificar los CIs individuales como Z1, Z2, Z3, etcétera. Otras designaciones que se utilizan con frecuencia son IC1, IC2, IC3, … o U1, U2, U3, …. Para dibujar circuitos lógicos pueden utilizarse computadoras personales con software para diagramas esquemáticos. Las aplicaciones computacionales que pueden interpretar estos símbolos gráficos y las conexiones de las señales pue- den traducirlos en relaciones lógicas, a las cuales por lo común se les conoce como herramientas de captura de diagramas esquemáticos. El sistema de desarrollo MAX PLUS de Altera para lógica programable permite al usuario introducir archivos de diseño gráfico (.gdf) mediante el uso de técnicas de captura de diagramas esque- máticos. Por ende, el diseño del circuito es tan sencillo como dibujar el diagrama esquemático en la pantalla de la computadora. Observe que en la figura 4-33 no hay números de terminales ni designaciones de chips en los símbolos lógicos. Los circuitos no se implementarán mediante el uso de chips SSI o MSI, sino que la fun- cionalidad de la lógica equivalente se “programará” en un PLD. Más adelante en este capítulo explicaremos esto con más detalle. +5 V 14 2 1 7 RELOJ +5 V 14 2 1 7 3 SALIDA RELOJ 4 3 DESPLAZAMIENTO 9 10 8 SALIDA DESPLAZAMIENTO Z1 Z1 Z2 Z2 CARGA IC Z1 Z2 Tipo 74HC04 seis inversores 74HC00 cuatro compuertas NAND SECCIÓN 4-9/CARACTERÍSTICAS BÁSICAS DE LOS CIS DIGITALES 159
  • 188. 160 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES BARRA_CARGA ENTRADA VCC 7 BARRA_RELOJ ENTRADA BARRA_RELOJSALIDA SALIDA NAND2 9 3 VCC 6 NOT 1 DESPLAZAMIENTO ENTRADA BARRA_DESPLSALIDA SALIDA NAND2 10 4 VCC 8 NOT 5 FIGURA 4-33 Diagrama lógico que utiliza captura de diagramas esquemáticos. PREGUNTAS DE REPASO 1. ¿Cuál es el tipo más común de encapsulado de CI digital? 2. Nombre las seis categorías comunes de CIs digitales, de acuerdo con su comple- jidad. 3. Verdadero o falso: un chip 74S74 contiene la misma lógica y distribución de ter- minales que el 74LS74. 4. Verdadero o falso: un chip 74HC74 contiene la misma lógica y distribución de terminales que el 74AS74. 5. ¿Cuál serie CMOS no es compatible con las terminales de TTL? 6. ¿Cuál es el intervalo de voltaje de entrada aceptable de un 0 lógico para TTL? ¿Para un 1 lógico? 7. Repita la pregunta 6 para un CMOS que opera a VDD 5 V. 8. ¿Cómo responde un circuito integrado TTL a una entrada flotante? 9. ¿Cómo responde un circuito integrado CMOS a una entrada flotante? 10. ¿Cuál serie CMOS puede conectarse en forma directa a un TTL sin necesidad de circuitos de interfaz? 11. ¿Cuál es el propósito de los números de terminales en el diagrama de conexio- nes de un circuito lógico? 12. ¿Cuáles son las similitudes clave de los archivos de diseño gráfico que se utilizan para los diagramas de conexiones de circuitos lógicos tradicionales y de lógica programable? 4-10 DIAGNÓSTICO DE FALLAS DE SISTEMAS DIGITALES Existen tres pasos básicos para corregir un circuito o sistema digital que tenga una falla: 1. Detección de fallas. Observe la operación del circuito/sistema y compárela con la operación correcta esperada. 2. Aislamiento de fallas. Realice pruebas y mediciones para aislar la falla. 3. Corrección de fallas. Sustituya el componente defectuoso, repare la conexión defectuosa, elimine el corto, o realice la acción pertinente. Aunque estos pasos pueden parecer bastante obvios y simples, el procedimiento real de diagnóstico de fallas que se siga dependerá en gran parte del tipo y la com-
  • 189. +5 V Sonda lógica IC Tarjeta de circuito impreso GND A VCC A GND LEDs indicadores APAG ENC APAG X BAJO ALTO INDETERMINADO* PULSANDO Rojo Condición lógica * Incluye condición abierta o flotante ENC APAG APAG X Verde APAG APAG APAG DESTELLANDO Amarillo LEDs FIGURA 4-34 Una sonda lógica se utiliza para monitorear la actividad de los niveles lógicos en la terminal de un CI o en cualquier punto accesible en un circuito lógico. plejidad del circuito, y de los tipos de herramientas de diagnóstico de fallas y de la documentación disponible. Las buenas técnicas de diagnóstico de fallas sólo pueden aprenderse en un entorno de laboratorio, por medio de la experimentación y el diagnóstico de fallas real en circuitos y sistemas defectuosos. No existe en absoluto una forma de con- vertirse en un técnico de diagnóstico de fallas eficiente que tratar de diagnosticar fallas en todos los circuitos que sea posible; además, por más libros de texto que lea no podrá obtener de ellos ese tipo de experiencia. No obstante, podemos ayudarle a desarrollar las habilidades analíticas que forman la parte más esencial de una téc- nica eficiente de diagnóstico de fallas. Describiremos los tipos de fallas comunes en los sistemas compuestos en su mayor parte de CIs digitales y le indicaremos cómo reconocerlas. Después le presentaremos ejemplos prácticos triviales para ilustrar los procesos analíticos implicados en el diagnóstico de fallas. Además, habrá pro- blemas al final del capítulo para que usted tenga la oportunidad de pasar por estos procesos analíticos para obtener sus propias conclusiones acerca de los circuitos digitales defectuosos. Para los análisis y ejercicios sobre diagnóstico de fallas que realizaremos en este libro, supondremos que el técnico de diagnóstico de fallas tiene a su disposición las herramientas básicas para este propósito: sonda lógica, osciloscopio y generador de pulsos lógico. Desde luego que la herramienta de diagnóstico de fallas más impor- tante y efectiva es el técnico, y ésa es la herramienta que esperamos desarrollar mediante la presentación de los principios y las técnicas de diagnóstico de fallas, ejemplos y problemas, tanto aquí como en los capítulos posteriores. En las siguientes tres secciones sobre diagnóstico de fallas utilizaremos sólo nuestro cerebro y una sonda lógica tal como la que se muestra en la figura 4-34. La sonda lógica tiene una punta de metal afilada con la que se toca el punto específico que deseamos probar. En la figura 4-34 se muestra probando la terminal 3 de un CI. También puede tocar el trazo de una tarjeta de circuitos impresos, un alambre sin aislamiento, la terminal de un conector, la terminal de un componente discreto tal como un transistor o cualquier otro punto conductor en un circuito. El nivel lógico presente en la punta de la sonda se indicará mediante el estado de sus LEDs indi- cadores. En la tabla de la figura 4-34 se muestran las cuatro posibilidades. Un nivel lógico indeterminado no produce luz en los indicadores. Esto incluye la condición en la que la punta de la sonda toca un punto en un circuito que esté abierto o flotan- te; esto es, que no esté conectado a ninguna fuente de voltaje. Este tipo de sonda también cuenta con un LED amarillo para indicar la presencia de un tren de pulsos. Cualquier transición (de BAJO a ALTO o de ALTO a BAJO) provocará que el LED amarillo destelle durante una fracción de segundo y después se apague. Si las tran- siciones ocurren con frecuencia, el LED continuará destellando a una frecuencia SECCIÓN 4-10/DIAGNÓSTICO DE FALLAS DE SISTEMAS DIGITALES 161
  • 190. 162 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES FIGURA 4-35 (a) Entrada de un CI cortocircuitada a tierra en forma interna; (b) entrada de un CI en corto con la fuente de voltaje, de manera interna. Estos dos tipos de fallas obligan a que la señal de entrada en la terminal cortocircuitada se quede en el mismo estado. (c) Salida del CI cortocircuitada a tierra de manera interna; (d) la salida en corto con la fuente de voltaje, de manera interna. Estas dos fallas no afectan a las señales en las entradas del CI. aproximada de 3 Hz. Mediante la observación de los LEDs rojo y verde, junto con el LED amarillo destellante, podrá saber si la señal está la mayor parte del tiempo en ALTO o en BAJO. 4-11 FALLAS INTERNAS EN LOS CIRCUITOS INTEGRADOS DIGITALES Las fallas internas más comunes en los CIs digitales son: 1. Fallas en los circuitos internos. 2. Entradas o salidas cortocircuitadas a tierra o a VCC. 3. Entradas o salidas sin conectar (circuito abierto). 4. Corto entre dos terminales (que no sean tierra ni VCC). Ahora describiremos cada uno de estos tipos de fallas. Fallas en los circuitos internos Por lo general, estas fallas son ocasionadas debido a que uno de los componentes internos falla por completo u opera fuera de sus especificaciones. Cuando esto ocu- rre, las salidas del CI no responden de manera apropiada a las entradas. No hay forma de predecir lo que harán las salidas, ya que esto depende del componente interno que esté fallando. Algunos ejemplos de este tipo de fallas serían un corto tipo base-emisor en el transistor Q4 o un valor de resistencia demasiado grande para R2 en el INVERSOR TTL de la figura 4-30(a). Este tipo de falla interna del CI no es tan común como las otras tres. Entrada internamente cortocircuitada a tierra o a la fuente de alimentación Este tipo de falla interna ocasionará que la entrada de un CI se quede atascada en el estado BAJO o ALTO. La figura 4-35(a) muestra la terminal de entrada 2 de una compuerta NAND cortocircuitada a tierra dentro del CI. Esto hará que la terminal 2 siempre esté en el estado BAJO. Si esta terminal de entrada se excita mediante una señal lógica B, sin duda aterrizará B a tierra. Por ende, este tipo de falla afectará la salida del dispositivo que está generando la señal B. +5 V 7 14 X 3 1 2 A B Corto interno +5 V 14 X 3 1 2 A B Corto interno +5 V 7 14 X 3 1 2 A B Corto interno (a) (b) (c) (d) +5 V 7 14 X 3 1 2 A B Corto interno
  • 191. EJEMPLO 4-24 De manera similar, la terminal de entrada de un CI podría estar en corto inter- no con 5 V, como en la figura 4-35(b). Esto mantendría a esa terminal atascada en el estado ALTO. Si esta terminal de entrada es excitada por una señal lógica A, sin duda pondría en corto a A con 5 V. Salida internamente cortocircuitada a tierra o a la fuente de alimentación Este tipo de falla interna provocará que la terminal de salida se quede atascada en el estado BAJO o ALTO. La figura 4-35(c) muestra a la terminal 3 de la compuerta NAND cortocircuitada a tierra dentro del CI. Esta salida se queda atascada en BAJO y no responderá a las condiciones que se apliquen a las terminales de entrada 1 y 2. En otras palabras, las entradas lógicas A y B no tendrán efecto sobre la salida X. La terminal de salida de un CI también puede quedar en corto con 5 V dentro del CI, como se muestra en la figura 4-35(d). Esto obliga a que la terminal de salida 3 se quede atascada en ALTO, sin importar el estado de las señales en las terminales de entrada. Observe que este tipo de falla no tiene efecto sobre las señales lógicas en las entradas del CI. Consulte el circuito de la figura 4-36. Un técnico utiliza una sonda lógica para deter- minar las condiciones de las diversas terminales del CI. Los resultados están registra- dos en la figura. Examine estos resultados y determine si el circuito está trabajando en forma apropiada. En caso contrario, sugiera algunas de las posibles fallas. Solución La terminal de salida 4 del INVERSOR debe estar pulsando, ya que su entrada está pulsando. No obstante, los resultados registrados muestran que la terminal 4 está atas- cada en BAJO. Como esta terminal está conectada a la terminal 1 de Z2, la salida de la compuerta NAND se mantiene en ALTO. De nuestra discusión anterior podemos listar tres posibles fallas que podrían producir esta operación. En primer lugar, podría existir una falla en un componente interno en el INVER- SOR que no le permita responder en forma apropiada a su entrada. En segundo lugar, la terminal 4 del INVERSOR podría estar cortocircuitada a tierra en forma interna para Z1, con lo cual se mantendría en BAJO. En tercer lugar, la terminal 1 de Z2 podría estar cortocircuitada a tierra en forma interna para Z2. Esto evitaría que cambiara la terminal de salida del INVERSOR. Además de estas posibles fallas, puede haber cortos externos a tierra en cual- quier parte de la ruta conductora entre la terminal 4 de Z1 y la terminal 1 de Z2. En uno de los siguientes ejemplos veremos cómo aislar la verdadera falla. Entrada o salida sin conectar (circuito abierto) Algunas veces el alambre conductor tan fino que conecta la terminal de un CI con los circuitos internos del mismo se rompe, lo cual produce un circuito abierto. La figura 4-37 del ejemplo 4-25 muestra esta situación para una entrada (terminal 13) y una salida (terminal 6). Si se aplica una señal a la terminal 13, no llegará a la FIGURA 4-36 Ejemplo 4-24. Z1-3 Z1-4 Z2-1 Z2-2 Z2-3 Pulsando BAJO BAJO ALTO ALTO Terminal Condición +5 V 7 14 +5 V 14 Z1 7 X 3 1 2 4 B 3 A Z2 SECCIÓN 4-11/FALLAS INTERNAS EN LOS CIRCUITOS INTEGRADOS DIGITALES 163
  • 192. 164 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES EJEMPLO 4-25 EJEMPLO 4-26 entrada de la compuerta NAND-1 y, por lo tanto, no tendrá efecto sobre su salida. La entrada abierta de la compuerta estará en el estado flotante. Como dijimos antes, los dispositivos TTL responderán como si esta entrada flotante fuera un 1 lógico y los dispositivos CMOS responderán en forma errática, y tal vez podrían dañarse debido al sobrecalentamiento. La abertura en la salida de la compuerta NAND-4 evita que la señal llegue a la terminal 6 del IC, por lo que no habrá un voltaje estable presente en esa terminal. Si esta terminal se conecta a la entrada de otro CI, producirá una condición flotante en esa entrada. ¿Qué indicaría una sonda lógica en la terminal 13 y en la terminal 6 de la figura 4-37? Solución En la terminal 13, la sonda lógica indicará el nivel lógico de la señal externa que se conecta a la terminal 13 (la cual no se muestra en este diagrama). En la terminal 6, la sonda lógica no tendrá ningún LED encendido para un nivel lógico indetermina- do, ya que el nivel de salida de la compuerta NAND nunca llegará a la terminal 6. Consulte el circuito de la figura 4-38 y las indicaciones registradas de la sonda lógica. ¿Cuáles son algunas de las posibles fallas que producirían esos resultados? Suponga que los CIs son TTL. Solución Un análisis de los resultados registrados nos indica que el INVERSOR parece estar funcionando en forma correcta, pero la salida de la compuerta NAND es inconsis- tente con sus entradas. La salida NAND debería estar en ALTO, ya que su terminal de entrada 1 está en BAJO. Este nivel BAJO debería evitar que la compuerta NAND respondiera a los pulsos en la terminal 2. Es probable que este nivel BAJO no esté lle- gando a los circuitos internos de la compuerta NAND debido a una abertura interna. FIGURA 4-37 Un CI con una entrada abierta en forma interna no responderá a las señales que se apliquen a esa terminal de entrada. Una salida abierta en forma interna producirá un voltaje impredecible en esa terminal de salida. 7 6 5 4 3 2 1 74LS00 14 13 12 11 10 9 8 GND VCC 1 2 3 4 Abierto Abierto FIGURA 4-38 Ejemplo 4-26. Z1-3 Z1-4 Z2-1 Z2-2 Z2-3 ALTO BAJO BAJO Pulsando Pulsando Terminal Condición Nota: no se muestran las conexiones a VCC ni a tierra de los CI X Z1 Z2 A B 1 2 3 4 3
  • 193. Como el CI esTTL, este circuito abierto produciría el mismo efecto que un nivel ALTO lógico en la terminal 1. Si el CI hubiera sido CMOS, el circuito abierto interno en la terminal 1 podría haber generado una salida indeterminada, lo cual podría provocar un sobrecalentamiento y la destrucción del chip. De lo antes expuesto en relación con las entradas TTL abiertas, usted podría haber esperado que el voltaje de la terminal 1 de Z2 estuviera entre 1.4 y 1.8 V, y que la sonda lógica debería haberlo registrado como indeterminado. Esto hubie- ra sido cierto si el circuito abierto fuera externo para el chip NAND. Como no hay circuito abierto entre la terminal 4 de Z1 y la terminal 1 de Z2, el voltaje en la termi- nal 4 de Z1 sí llega a la terminal 1 de Z2, pero se desconecta dentro del chip NAND. Corto entre dos terminales Un corto interno entre dos terminales del CI obligará a que las señales lógicas en esas terminales siempre sean idénticas. Cada vez que dos señales que se supone deben ser distintas muestran las mismas variaciones de niveles lógicos, existe una buena posibilidad de que las señales estén en corto. Considere el circuito de la figura 4-39, en donde las terminales 5 y 6 de la com- puerta NOR están en corto de manera interna. Este corto hace que las dos termi- nales de salida del INVERSOR se conecten entre sí, de manera que las señales en la terminal 2 de Z1 y la terminal 4 de Z1 deben ser idénticas, aún y cuando las dos señales de entrada del INVERSOR están tratando de producir diferentes salidas. Para ilustrar esto, considere las formas de onda de entrada que se muestran en el diagrama. Aún cuando estas formas de onda de entrada son distintas, las salidas Z1-2 y Z1-4 son iguales. Durante el intervalo de t1 a t2, ambos INVERSORES tienen una entrada en ALTO y están tratando de producir una salida en BAJO, por lo que estar en corto no hace ninguna diferencia. Durante el intervalo de t4 a t5, ambos INVERSORES tienen una entrada en BAJO y están tratando de producir una salida en ALTO, así que el estar en corto de nuevo no tiene ningún efecto. No obstante, durante los intervalos de t2 a t3 y de t3 a t4 un INVERSOR está tratando de producir una salida en ALTO, mientras que el otro está tratando de producir una salida en BAJO. A esto se le conoce como colisión de señales, ya que las dos señales están “luchando” una con la otra. Cuando esto ocurra, el nivel de voltaje real que aparezca en las salidas en corto dependerá de los circuitos internos del CI. En los dispositivos TTL, por lo general, será un voltaje en el extremo superior del intervalo del 0 lógico (es decir, cerca de 0.8 V), aunque también podría estar en el intervalo indeterminado. En los dispositivos CMOS, por lo general, será un voltaje en el intervalo indeterminado. X 4 1 2 3 Corto interno 5 6 4 Z1 A B 4 V . . . . . . 4 V 0 V . . . 4 V . . . 0 V . . . 0 V . . . ? Z1-1 Z1-3 Z1-2 y Z1-4 t1 t2 t3 t4 t 5 Z1 Z2 FIGURA 4-39 Cuando se ponen en corto dos terminales de entrada en forma interna, se obliga a las señales que excitan estas terminales a ser idénticas y, por lo general, se produce una señal con tres niveles distintos. SECCIÓN 4-11/FALLAS INTERNAS EN LOS CIRCUITOS INTEGRADOS DIGITALES 165
  • 194. 166 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES PREGUNTAS DE REPASO EJEMPLO 4-27 Siempre que vea una forma de onda como la señal de Z1-2, Z1-4 en la figura 4-39 con tres niveles distintos, será motivo para sospechar que dos señales de salida pueden estar en corto. 1. Liste las distintas fallas internas en los circuitos integrados. 2. ¿Cuál falla interna de un CI puede producir señales que muestren tres niveles de voltaje distintos? 3. ¿Qué indicaría una sonda lógica en Z1-2 y Z1-4 de la figura 4-39, si A 0 y B 1? 4. ¿Qué es la colisión de señales? 4-12 FALLAS EXTERNAS Hemos visto cómo reconocer los efectos de diversas fallas internas para los CIs digi- tales. Hay muchas cosas más que pueden salir mal y que son externas para los CIs; en esta sección describiremos las más comunes. Líneas de señal abiertas Esta categoría incluye cualquier falla que produzca una interrupción o discontinui- dad en la ruta conductora, de tal forma que se evite que un nivel de voltaje o señal pase de un punto a otro. Algunas de las causas de las líneas de señal abiertas son: 1. Alambre roto. 2. Conexión soldada defectuosamente; conexión de alambre enrollado floja. 3. Grieta o interrupción en la línea de conexión de un circuito impreso (algunas de éstas son del grueso de un cabello, y se pueden ver sólo con una lupa). 4. Terminal doblada o rota en un CI. 5. Zócalo de CI defectuoso, de tal forma que el CI no haga buen contacto con el zócalo. Con frecuencia, este tipo de fallas en los circuitos pueden detectarse mediante una inspección visual cuidadosa y después verificarse desconectando la alimentación del circuito y comprobando si hay continuidad (es decir, una ruta de baja resisten- cia) con un óhmetro entre los dos puntos en cuestión. Considere el circuito CMOS de la figura 4-40 y las indicaciones de la sonda lógica que se incluyen. ¿Cuál es la falla más probable del circuito? Solución Es probable que el nivel indeterminado en la salida de la compuerta NOR se deba a la entrada indeterminada en la terminal 2. Como hay un nivel BAJO en Z1-6, tam- bién debe haber un nivel BAJO en Z2-2. Es evidente que el BAJO de Z1-6 no está llegando a Z2-2, por lo que debe haber un circuito abierto en la ruta de señal entre estos dos puntos. La ubicación de este circuito abierto puede determinarse empe- zando desde Z1-6 con la sonda lógica y rastreando el nivel BAJO a lo largo de la ruta de la señal hacia Z2-2, hasta que cambie a un nivel indeterminado.
  • 195. Líneas de señal en corto Este tipo de falla tiene el mismo efecto que un corto interno entre las terminales de un CI. Provoca que dos señales sean exactamente la misma (colisión de señales). Una línea de señal puede estar cortocircuitada a tierra o a VCC en vez de estar en corto con otra línea de señal. En esos casos se obliga a que la señal permanezca en el estado BAJO o ALTO. Las principales causas de cortos inesperados entre dos puntos en un circuito son las siguientes: 1. Alambrado mal instalado. Un ejemplo es cuando se quita demasiado aislante de los extremos de los cables que están muy cerca uno del otro. 2. Puentes de soldadura. Son salpicaduras de soldadura que ponen en corto dos o más puntos. Por lo común ocurren entre puntos que están muy cercanos, como las terminales adyacentes en un chip. 3. Desbaste incompleto. El cobre entre las rutas conductoras adyacentes en una tar- jeta de circuitos impresos no se desbasta de forma adecuada. De nuevo, con frecuencia una cuidadosa inspección visual puede descubrir este tipo de fallas, y la comprobación con un óhmetro puede verificar que los dos puntos en el circuito están en corto. Fuente de alimentación defectuosa Todos los sistemas digitales tienen una o más fuentes de alimentación de corriente directa, las cuales suministran los voltajes VCC y VDD requeridos por los chips. Una fuente defectuosa o una sobrecargada (que suministra más de su valor nominal de corriente) proporcionará voltajes de suministro mal regulados a los CIs, y éstos no operarán u operarán en forma incorrecta. Una fuente de alimentación puede dejar de regular el voltaje debido a una falla en sus circuitos internos, o porque los circuitos que está alimentando consumen más corriente de la que puede suministrar la fuente. Esto puede ocurrir si un chip o com- ponente tiene una falla que hace que consuma mucha más corriente de la normal. Una buena práctica de diagnóstico de fallas es comprobar los niveles de voltaje en cada una de las fuentes de alimentación en el sistema, para ver si se encuentran dentro de sus intervalos especificados. También es una buena idea comprobarlas en un osciloscopio para verificar que no haya una cantidad considerable de rizo de corriente alterna en los niveles de corriente directa, y para verificar que los niveles de voltaje permanezcan regulados durante la operación del sistema. Uno de los signos más comunes de falla en la fuente de alimentación es que uno o más chips operen en forma incorrecta, o que no operen en lo absoluto. Algunos CIs son más tolerantes a las variaciones de la fuente de alimentación y pueden operar en forma apropiada, mientras que otros no. Usted siempre debe comprobar los nive- les de voltaje de alimentación y de tierra en cada CI que parezca operar en forma incorrecta. FIGURA 4-40 Ejemplo 4-27. Z1-1 Z1-2 Z1-3 Z1-4 Z1-5 Z1-6 Z2-3 Z2-2 Z2-1 Pulsando ALTO Pulsando BAJO Pulsando BAJO Pulsando Indeterminado Indeterminado Terminal Condición X Todos los CIs son CMOS Z1: 74HC08 Z2: 74HC02 1 2 3 6 1 2 4 5 A B C D Z1 Z1 3 Z2 SECCIÓN 4-12/FALLAS EXTERNAS 167
  • 196. 168 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES Los CIs son TTL Z1: 74LS86 Z2: 74LS00 8 Y 6 10 9 11 Z2 Z2 +5 V 12 13 14 3 4 5 7 X +5 V 14 7 1 2 A B C Z2 Z1 Z1-1 BAJO Z1-2 BAJO Z1-3 ALTO Z2-4 BAJO Z2-5 ALTO Z2-6,10 ALTO Z2-13 ALTO Z2-12 ALTO Z2-9,11 BAJO Z2-8 ALTO Terminal Condición FIGURA 4-41 Ejemplo 4-28. PREGUNTAS DE REPASO EJEMPLO 4-28 Carga de salida Cuando un CI digital tiene su salida conectada a demasiadas entradas de un CI, se excede el valor nominal de su corriente de salida y el voltaje de salida puede caer dentro del intervalo indeterminado. A este efecto se le conoce como cargar la señal de salida (en realidad es sobrecargar la señal de salida) y, por lo general, es el resul- tado de un mal diseño o de una conexión incorrecta. 1. ¿Cuáles son los tipos más comunes de fallas externas? 2. Liste algunas de las causas de circuitos abiertos en la ruta de la señal. 3. ¿Qué síntomas ocasiona una fuente de alimentación defectuosa? 4. ¿Cómo podría afectar la carga a un nivel de voltaje de salida de un CI? 4-13 EJEMPLO PRÁCTICO DE DIAGNÓSTICO DE FALLAS El siguiente ejemplo ilustrará los procesos analíticos involucrados en el diagnóstico de fallas en los circuitos digitales. Aunque el ejemplo es un circuito lógico combi- nacional bastante simple, el razonamiento y los procedimientos de diagnóstico de fallas pueden aplicarse a los circuitos digitales más complejos que encontraremos en los siguientes capítulos. Considere el circuito de la figura 4-41. Se supone que la salida Y cambiará a ALTO en cualquiera de las siguientes condiciones: 1. A 1, B 0 sin importar el nivel en C 2. A 0, B 1, C 1 Tal vez desee verificar estos resultados por su cuenta.
  • 197. Cuando se prueba el circuito, el técnico observa que la salida Y cambia a ALTO cada vez que A está en ALTO o que C está en ALTO, sin importar el nivel en B. Enton- ces toma mediciones con la sonda lógica para la condición en la que A B 0, C 1 y obtiene las indicaciones registradas en la figura 4-41. Examine los niveles registrados y liste las posibles causas del mal funciona- miento. Después desarrolle un procedimiento paso a paso para determinar la falla exacta. Solución Todas las salidas de la compuerta NAND son correctas para los niveles presentes en sus entradas. Sin embargo, la compuerta XOR debería producir un nivel BAJO en la terminal 3 de salida, ya que dos de sus entradas se encuentran en el mismo nivel BAJO. Parece que Z1-3 se queda en ALTO, aún y cuando sus entradas deberían pro- ducir un nivel BAJO. Hay varias causas posibles de esto: 1. Una falla en un componente interno en Z1 que evite que su salida cambie a BAJO. 2. Un corto externo con VCC desde cualquier punto a lo largo de los conductores conectados al nodo X (sombreado en el diagrama de la figura). 3. La terminal 3 de Z1 en corto interno con VCC. 4. La terminal 5 de Z2 en corto interno con VCC. 5. La terminal 13 de Z2 en corto interno con VCC. Todas estas posibilidades (excepto la primera) pondrán en corto directo el nodo X (y todas las terminales del CI que estén conectadas a él) con VCC. El siguiente procedimiento puede usarse para aislar la falla. Este procedimien- to no es el único método que puede utilizarse y, como dijimos antes, el verdadero procedimiento de diagnóstico de fallas que utiliza un técnico es muy dependiente del equipo de prueba que tenga disponible. 1. Compruebe los niveles de VCC y de tierra en las terminales apropiadas de Z1. Aunque es muy poco probable que la ausencia de cualquiera de estas dos seña- les pueda hacer que Z1-3 se quede en ALTO, es conveniente realizar esta com- probación en cualquier CI que esté produciendo una salida incorrecta. 2. Desconecte la alimentación del circuito y utilice un óhmetro para comprobar si hay un corto (resistencia menor de 1 Ω) entre el nodo X y cualquier punto conectado a VCC (tal como Z1-14 o Z2-14). Si no se indica un corto, podemos eliminar las últimas cuatro posibilidades en nuestra lista. Esto significa que es muy probable que Z1 tenga una falla interna y deba sustituirse. 3. Si el paso 2 muestra que hay un corto del nodo X a VCC, realice un examen visual detallado de la tarjeta del circuito y busque puentes de soldadura, lengüetas de cobre sin desbastar, alambres sin aislamiento que se toquen unos con otros, y cualquier otra causa posible de un corto externo con VCC. Un punto probable para un puente de soldadura sería entre las terminales adyacentes 13 y 14 de Z2. La terminal 14 se conecta a VCC y la 13 al nodo X. Si se encuentra un corto externo, elimínelo y realice una comprobación con un óhmetro para verificar que el nodo X ya no esté en corto con VCC. 4. Si el paso 3 no revela un corto externo, las tres posibilidades que quedan son cortos internos con VCC y Z1-3, Z2-13 o Z2-5. Una de éstas está poniendo en corto el nodo X con VCC. Para determinar cuál de estas terminales del CI es la culpable, debemos desco- nectar cada una de ellas del nodo X una a la vez y debemos volver a comprobar si hay un corto con VCC después de cada desconexión. Cuando se desconecte la termi- nal que esté en corto interno con VCC, el nodo X ya no estará en corto con VCC. SECCIÓN 4-13/EJEMPLO PRÁCTICO DE DIAGNÓSTICO DE FALLAS 169
  • 198. 170 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES El proceso de desconectar cada una de las terminales sospechosas del nodo X puede ser fácil o difícil, dependiendo de la manera en que esté construido el circuito. Si los CIs están en zócalos, todo lo que necesitamos hacer es extraer el CI de su zócalo, doblar la terminal sospechosa y volver a insertar el CI en su zócalo. Si los CIs están soldados en una tarjeta de circuitos impresos, tendrá que cortar la línea que está conectada con la terminal y reparar la línea cortada cuando termine. Aunque es bastante simple, el ejemplo 4-28 le muestra el tipo de razonamiento que debe emplear un técnico de diagnóstico de fallas para aislar una falla. Usted tendrá la oportunidad de comenzar a desarrollar sus propias habilidades de diag- nóstico de fallas al trabajar en muchos problemas de final de capítulo que hemos designado con una F para identificarlos como problemas de diagnóstico de fallas. 4-14 DISPOSITIVOS LÓGICOS PROGRAMABLES* En las secciones anteriores vimos un poco acerca de las clases de CIs conocidas como dispositivos lógicos programables. En el capítulo 3 presentamos el concepto de describir la operación de un circuito mediante el uso de un lenguaje de descripción de hardware. En esta sección exploraremos aún más estos temas y nos prepararemos para utilizar las herramientas implicadas en el desarrollo y la implementación de sistemas digitales mediante el uso de PLDs. Desde luego que es imposible com- prender todos los detalles complejos de cómo funciona un PLD antes de abarcar los fundamentos de los circuitos digitales. A medida que examinemos nuevos con- ceptos fundamentales, expandiremos nuestro conocimiento sobre los PLDs y los métodos de programación. Presentaremos este material de tal forma que cualquiera que no esté interesado en los PLDs pueda omitir sin problemas estas secciones, sin perder la continuidad en la cobertura de los principios básicos. Vamos a repasar el proceso que tratamos antes, en relación con el diseño de los circuitos digitales combinacionales. Los dispositivos de entrada se identifican y se les asigna un nombre algebraico tal como A, B, C o CARGA, DESPLAZAMIENTO, RELOJ. De igual forma, los dispositivos de salida reciben nombres tales como X, Z o SALIDA_RELOJ, SALIDA_DESPLAZAMIENTO. Después se crea una tabla de ver- dad que lista todas las posibles combinaciones de entradas e identifica el estado requerido de las salidas bajo cada condición de entrada. La tabla de verdad es una manera de describir la forma en que va a operar el circuito. Otra manera de descri- bir la operación del circuito es mediante una expresión booleana. A partir de este punto, el diseñador debe encontrar la relación algebraica más simple y seleccionar CIs digitales que puedan alambrarse en conjunto para implementar el circuito. Tal vez usted haya experimentado que estos últimos pasos son los más tediosos, los que consumen más tiempo y los que están más propensos a errores. Los dispositivos lógicos programables permiten automatizar la mayoría de estos tediosos pasos mediante una computadora y software de desarrollo para PLDs. El uso de la lógica programable mejora la eficiencia del proceso de diseño y desarrollo. En consecuencia, la mayoría de los sistemas digitales modernos se implementan de esta forma. El trabajo del diseñador de circuitos es identificar entradas y salidas, especificar la relación lógica de la manera más conveniente y seleccionar un dispo- sitivo programable que sea capaz de implementar el circuito al costo más bajo. El concepto detrás de los dispositivos lógicos programables es simple: poner muchas compuertas lógicas en un solo CI y controlar la interconexión de estas compuertas mediante electrónica. Hardware de un PLD En el capítulo 3 vimos que muchos circuitos digitales de la actualidad se implemen- tan mediante el uso de dispositivos lógicos programables (PLDs). Estos dispositi- vos se configuran en forma electrónica y sus circuitos internos están “alambrados” * Se pueden omitir todas las secciones que tratan acerca de los PLDs sin perder la continuidad en el balan- ce de los capítulos 1-12.
  • 199. entre sí mediante electrónica, para formar un circuito lógico. Este alambrado pro- gramable puede considerarse como miles de conexiones que están conectadas (1) o desconectadas (0). Es muy tedioso tratar de configurar estos dispositivos en forma manual, colocando 1s y 0s en una rejilla, por lo que la siguiente pregunta lógica es: “¿Cómo controlamos la interconexión de compuertas en un PLD por medio de electrónica?” Un método común para conectar una de muchas señales que entran en una red a una de muchas líneas de señal que salen de la red es mediante una matriz de con- mutación. Consulte la figura 3-44, en donde se introdujo este concepto. Una matriz es tan sólo una rejilla de conductores (alambres) ordenados en filas y columnas. Las señales de entrada se conectan a las columnas de la matriz y las salidas se conec- tan a las filas de la misma. En cada intersección de una fila y una columna hay un interruptor que puede conectar por medios electrónicos esa fila con esa columna. Los interruptores que conectan filas con columnas pueden ser interruptores mecá- nicos, enlaces de fusibles, interruptores electromagnéticos (relevadores) o transis- tores. Ésta es la estructura general que se utiliza en muchas aplicaciones, la cual exploraremos con más detalle cuando estudiemos los dispositivos de memoria en el capítulo 12. Los PLDs también utilizan una matriz de conmutación, la cual se conoce común- mente como arreglo programable. Al decidir cuáles intersecciones están conectadas y cuáles no, podemos “programar” la forma en que las entradas se conectan a las salidas del arreglo. En la figura 4-42 se utiliza un arreglo programable para selec- cionar las entradas para cada compuerta AND. Observe que en esta simple matriz podemos producir cualquier combinación de productos lógicos de las variables A, B en cualquiera de las salidas de la compuerta AND. Una matriz o arreglo programa- ble tal como la que se muestra en la figura también puede utilizarse para conectar las salidas de la compuerta AND con compuertas OR. En el capítulo 13 veremos con detalle todo lo relacionado con varias arquitecturas de los PLDs. Programación de un PLD Existen dos maneras de “programar” un CI de PLD. Programar significa realizar las conexiones reales en el arreglo. En otras palabras, significa determinar cuáles A Producto 1 1 2 B 1 2 3 4 B B A A Producto 2 3 4 Producto 3 5 6 Producto 4 7 8 Conductores de las columnas Conductores de las filas FIGURA 4-42 Un arreglo programable para seleccionar entradas como términos de productos. SECCIÓN 4-14/DISPOSITIVOS LÓGICOS PROGRAMABLES 171
  • 200. 172 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES de esas conexiones se supone deben estar abiertas (0) y cuáles se supone deben estar cerradas (1). El primer método implica remover el chip de CI del PLD de su tarjeta de circuito. Después el chip se coloca en un dispositivo especial conocido como programador, el cual se muestra en la figura 4-43. La mayoría de los progra- madores modernos se conectan a una computadora personal que ejecuta software que contiene bibliotecas de información acerca de los diversos tipos de dispositivos programables disponibles. El software de programación se invoca (se llama y se ejecuta) en la PC para establecer la comunicación con el programador. Este software permite al usuario configurar el programador para el tipo de dispositivo que se va a programar, com- probar si el dispositivo está en blanco, leer el estado de cualquier conexión progra- mable en el dispositivo y proveer las instrucciones para que el usuario programe un chip. En última instancia, la pieza se coloca en un zócalo especial que nos permite insertar el chip y después sujetar los contactos en las terminales. A éste se le conoce como zócalo de cero esfuerzo de inserción (ZIF). Diversos fabricantes ofrecen los programadores universales que pueden manejar cualquier tipo de dispositivo progra- mable. Por fortuna, y a medida que las piezas programables empezaron a proliferar, los fabricantes vieron la necesidad de estandarizar las asignaciones de terminales y los métodos de programación. Como resultado, se formó el Consejo Común de Inge- niería de Dispositivos Electrónicos (JEDEC). Uno de los resultados fue el estándar 3 de JEDEC, un formato para transferir datos de programación para PLDs, indepen- diente del fabricante del PLD o del software de programación. También se estanda- rizaron las asignaciones de terminales para varios encapsulados de CIs, con lo cual los programadores universales se hicieron menos complicados. En consecuencia, los dispositivos de programación pueden programar muchos tipos de PLDs. El software que permite al diseñador especificar una configuración para un PLD sólo necesita producir un archivo de salida que se adapte a los estándares de JEDEC. Después, este archivo JEDEC puede cargarse en cualquier programador de PLDs compatible con JEDEC que sea capaz de programar el tipo deseado de PLD. El segundo método se conoce como programación en sistema (ISP). Como su nombre implica, el chip no necesita extraerse de su circuito para su programación. El Grupo Común de Acción de Pruebas (JTAG) desarrolló una interfaz estándar para probar los CIs sin tener que conectar el equipo de prueba a todas las terminales del CI.También permite la programación interna. Cuatro terminales en el CI se utilizan como un portal para almacenar datos y recuperar información acerca de la condi- ción interna del CI. Muchos CIs, incluyendo los PLDs y los microcontroladores, se fabrican hoy en día para incluir la interfaz JTAG. Un cable de interfaz conecta las cuatro terminales JTAG en el CI a un puerto de salida (como el puerto de la impre- sora) de una computadora personal. El software que se ejecuta en la PC establece el contacto con el CI y carga la información en el formato apropiado. FIGURA 4-43 Un sistema de desarrollo de PLDs. Cable serie Dispositivo de programación (programador) Software de desarrollo Zócalo ZIF Software de programación
  • 201. Software de desarrollo Hasta ahora hemos analizado varios métodos para describir circuitos lógicos, inclu- yendo la captura de diagramas esquemáticos, las ecuaciones lógicas, las tablas de verdad y el HDL. También describimos los métodos fundamentales para almacenar 1s y 0s en un CI de PLD para conectar los circuitos lógicos de la manera deseada. El mayor reto en cuanto a programar un PLD es realizar la conversión desde cualquier forma de descripción hacia el arreglo de 1s y 0s. Por fortuna, esta tarea se logra con bastante facilidad mediante una computadora que ejecute un software de desarro- llo. El software al que haremos referencia y que estaremos utilizando en nuestros ejemplos es propiedad de Altera, y permite al diseñador introducir la descripción de un circuito en cualquiera de las distintas formas que hemos visto: archivos de dise- ño gráfico (diagramas esquemáticos), AHDL y VHDL. También permite el uso de otro HDL conocido comoVerilog, y la opción de describir el circuito mediante diagra- mas de tiempos. Los bloques de circuitos descritos por cualquiera de estos métodos también pueden “conectarse” entre sí para implementar un sistema digital mucho más grande, como se muestra en la figura 4-44. Cualquier diagrama lógico que se presente en este libro podrá redibujarse mediante el uso de las herramientas de introducción de diagramas esquemáticos en el software Altera para crear un archivo de diseño gráfico. En este libro no nos enfocaremos en la introducción mediante el diseño gráfico, ya que es bastante sencillo obtener estas habilidades en el laborato- rio. Enfocaremos nuestros ejemplos en los métodos que nos permiten utilizar el HDL como un medio alternativo para describir un circuito. Para obtener más infor- mación sobre el software de Altera, vea el CD que se incluye en este libro y los manuales de usuario del sitio Web de Altera (http://www.altera.com). A este concepto de utilizar bloques de construcción de circuitos se le conoce como diseño jerárquico. Pueden definirse circuitos lógicos pequeños y útiles de la manera que sea más conveniente (gráfico, HDL, diagrama de tiempos, etc.) y des- pués se pueden combinar con otros circuitos para formar una selección extensa de un proyecto. Las secciones pueden combinarse y conectarse con otras secciones para formar el sistema completo. La figura 4-45 muestra la estructura jerárquica de un reproductor de CDs mediante el uso de un diagrama de bloques. El cuadro exterior encierra a todo el sistema. Las líneas punteadas identifican cada una de las subsec- ciones principales y cada subsección contiene circuitos individuales. Aunque no se muestra en este diagrama, cada circuito puede estar compuesto de bloques de cons- FIGURA 4-44 Combinación de los bloques desarrollados mediante el uso de distintos métodos de descripción. Entradas del sistema Bloque esquemático Bloque de sincronización Bloque de VHDL ENTIDAD ......... ARQUITECTURA Bloque de AHDL SUBDISEÑO INICIO FIN Señales intermedias Salidas del sistema SECCIÓN 4-14/DISPOSITIVOS LÓGICOS PROGRAMABLES 173
  • 202. 174 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES trucción más pequeños de circuitos digitales comunes. El software de desarrollo de Altera hace que este tipo de diseño y desarrollo modular y jerárquico sea fácil de lograr. Proceso de diseño y desarrollo En la figura 4-46 se muestra otra forma en la que podríamos ver la jerarquía de un sistema como el reproductor de CDs que acabamos de describir. El nivel superior representa a todo el sistema completo. Está compuesto de tres subsecciones, cada una de las cuales está a su vez compuesta de los circuitos más pequeños que se muestran. Observe que este diagrama no muestra cómo fluyen las señales en todo el sistema, sino que identifica con claridad los diversos niveles de la estructura jerár- quica del proyecto. Este tipo de diagrama condujo al nombre de uno de los métodos más comunes de diseño: arriba-abajo. Con este enfoque de diseño se comienza con la descripción general de todo el sistema, como muestra el cuadro superior de la figura 4-46. Des- pués se definen varias subsecciones que conformarán el sistema. Las subsecciones FIGURA 4-45 Diagrama de bloques de un reproductor de CDs. Lazo de control de posición Sección de control del sistema Controles del usuario Decodificador de pistas Lazo de control de la velocidad del disco Control del motor Decodificación de trenes de pulsos Detección de saltos Pantalla Filtro/amplificador D/A Filtro digital Memoria de saltos Corrección de errores de paridad Sección del eje de la unidad Sección de rastreo del láser Sección de audio M Motor Detector láser Motor de control del eje
  • 203. se refinan aún más en circuitos individuales conectados entre sí. Cada uno de estos niveles jerárquicos tiene definidas las entradas, las salidas y su comportamiento. Cada nivel puede probarse en forma individual, antes de conectarlo a los demás. Después de definir los bloques de arriba-abajo, el sistema se construye desde abajo hacia arriba. Cada bloque en el diseño de este sistema tiene un archivo de diseño que lo describe. Para diseñar los bloques de los niveles se abre un archivo de diseño y se escribe una descripción de su operación. Después el bloque diseñado se compila mediante el uso de las herramientas de desarrollo. El proceso de compi- lación determina si usted cometió errores en su sintaxis. La computadora no podrá traducir su descripción en la forma apropiada sino hasta que la sintaxis esté correc- ta. Una vez que se haya compilado sin errores de sintaxis, deberá probarse para ver si opera en forma correcta. Los sistemas de desarrollo ofrecen programas simulado- res que se ejecutan en la PC y simulan la manera en que su circuito responde a las entradas. Un simulador es un programa de computadora que calcula los estados lógi- cos de salida correctos, con base en una descripción del circuito lógico y las entradas actuales. Se desarrolla un conjunto de entradas hipotéticas y sus correspondientes salidas correctas, las cuales demostrarán que el bloque funciona de la manera espe- rada. A menudo a estas entradas hipotéticas se les llama vectores de prueba. Los procedimientos detallados de prueba durante la simulación incrementan en forma considerable la probabilidad de que el sistema final funcione de manera confiable. La figura 4-47 muestra el archivo de simulación para el circuito descrito en la figura 3-13(a) del capítulo 3. Las entradas a, b y c se introdujeron como vectores de prueba y la simulación produjo la salida y. Cuando el diseñador está satisfecho de que el diseño funciona, éste puede veri- ficarse mediante la programación de un chip y la prueba. Para un PLD complejo, el diseñador puede dejar que el sistema de desarrollo asigne terminales y después se distribuye la tarjeta del circuito final de manera acorde, o puede especificar las Lazo de control de la velocidad del disco Decodificación de pistas Sección del eje de la unidad Control de posición Sección de rastreo del láser Control del motor Detector de saltos Decodificador de tren de pulsos Sistema de CD Sección de audio Memoria de saltos Filtro amplificador Filtro digital D/A Corrección de error de paridad FIGURA 4-46 Un diagrama de jerarquía organizacional. Nombre: Valor: 1.0 ms 2.0 ms 3.0 ms 4.0 ms 5.0 ms 6.0 ms 7.0 ms 8.0 ms 9.0 ms 10 ms c 0 b 0 a 0 y 0 Ref: 0.0 ns 0.0 ns Tiempo: 0.0 ns Intervalo: 0.0 ns FIGURA 4-47 Una simulación de sincronización de un circuito descrito en HDL. SECCIÓN 4-14/DISPOSITIVOS LÓGICOS PROGRAMABLES 175
  • 204. 176 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES PREGUNTAS DE REPASO terminales para cada señal mediante el uso de las características del software. Si el compilador asigna las terminales, las asignaciones se pueden encontrar en el archivo de reporte o en el archivo de distribución de terminales, el cual proporciona muchos detalles acerca de la implementación del diseño. Si el diseñador especifica las terminales, es importante conocer las restricciones y limitaciones de la arquitec- tura del chip. En el capítulo 13 cubriremos estos detalles. El diagrama de flujo de la figura 4-48 sintetiza el proceso de diseño para desarrollar cada bloque. Después de probar cada uno de los circuitos en una subsección pueden combi- narse todos y se puede probar la subsección siguiendo el mismo proceso utilizado para los circuitos pequeños. Después se combinan las subsecciones y se prueba el sistema. Este método se presta muy bien para un típico entorno de proyecto, en donde un equipo de personas trabajan en conjunto y cada uno es responsable de sus propios circuitos y secciones que al final se reunirán para conformar el sistema. 1. ¿Qué es lo que se “programa” en un PLD? 2. ¿Qué bits (columna, fila) en la figura 4-42 deben conectarse para hacer que el Producto 1 AB? 3. ¿Qué bits (columna, fila) en la figura 4-42 deben conectarse para hacer que el Producto 3 AB? FIGURA 4-48 Diagrama de flujo del ciclo de desarrollo de un PLD. Identificar error en diseño Y Simular N Crear archivo de salida N Programar PLD Prueba en circuito Y LISTO ¿Funciona? ¿Errores? ¿Problemas? Editar archivo de diseño Y Diagnóstico de fallas N Crear archivo de diseño Compilar Diseño INICIO
  • 205. EJEMPLO 4-29 TABLA 4-8 Designación de sistemas numéricos en HDL. Patrón Equivalente Sistema numérico AHDL VHDL de bits decimal Binario B”101” B”101” 101 5 Hexadecimal H”101” X”101” 100000001 257 Decimal 101 101 1100101 101 SECCIÓN 4-15/REPRESENTACIÓN DE DATOS EN HDL 177 4-15 REPRESENTACIÓN DE DATOS EN HDL Los datos numéricos pueden representarse de varias formas. Hemos estudiado el uso del sistema numérico hexadecimal como una forma conveniente de representar patrones de bits. Por naturaleza preferimos usar el sistema numérico decimal para los datos numéricos, pero las computadoras y los sistemas digitales sólo pueden operar con información binaria, como vimos en capítulos anteriores. Cuando escri- bimos en HDL, a menudo necesitamos utilizar diversos formatos numéricos, y la computadora debe ser capaz de comprender cuál sistema numérico estamos usando. Hasta ahora, en este libro, hemos utilizado un subíndice para indicar el sistema numérico. Por ejemplo, 1012 es binario, 10116 es hexadecimal y 10110 es decimal. Cada lenguaje de programación y el HDL tienen su propia manera única de identi- ficar los diversos sistemas numéricos; por lo general, esto se hace mediante un pre- fijo para indicar el sistema numérico. En la mayoría de los lenguajes un número sin prefijo se considera como decimal. Cuando leemos una de estas designaciones numé- ricas, debemos considerarla como un símbolo que representa a un patrón binario de bits. Estos valores numéricos se conocen como escalares o literales. La tabla 4-8 sin- tetiza los métodos para especificar valores en binario, hexadecimal y decimal para AHDL y VHDL. Exprese el valor numérico del siguiente patrón de bits en binario, hexadecimal y decimal mediante el uso de la notación de AHDL y VHDL: 11001 Solución El binario se designa de la misma forma en AHDL y en VHDL: B “11001”. Si convertimos el binario en hexadecimal, tendremos 1916. En AHDL: H “19” En VHDL: X “19” Si convertimos el binario en decimal, tendremos 2510. El decimal se designa de la misma forma en AHDL y VHDL: 25. Arreglos de bits/vectores de bits En el capítulo 3 declaramos nombres para las entradas y las salidas de un circuito lógico muy simple. Éstas se definieron como bits, o dígitos binarios individuales. ¿Qué pasaría si quisiéramos representar una entrada, salida o señal compuesta por varios bits? En un HDL debemos definir el tipo de la señal y su intervalo de valores válidos. Para comprender los conceptos utilizados en los HDLs, consideremos primero algunas convenciones para describir bits de palabras binarias en los sistemas digita- les comunes. Suponga que tenemos un número de ocho bits que representa la tem- peratura actual, y que el número está llegando a nuestro sistema digital a través de un puerto de entrada que hemos identificado como P1, como se muestra en la figura 4-49. Podemos referirnos a los bits individuales de este puerto como el bit 0 de P1 para el bit menos significativo, y hasta el bit 7 de P1 para el bit más significativo.
  • 206. 178 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES EJEMPLO 4-30 EJEMPLO 4-31 También podemos describir este puerto diciendo que su nombre es P1 y sus bits están numerados del 7 al 0. Los términos arreglo de bits y vector de bits se utilizan con frecuencia para describir este tipo de estructura de datos. Lo que esto significa es que la estructura de datos en general (puerto de ocho bits) tiene un nombre (P1) y que cada elemento individual (bit) tiene un número de índice único (0-7) para des- cribir la posición de cada bit (y tal vez su peso numérico) en la estructura general. Los HDLs y los lenguajes de programación de computadora sacan provecho de esta notación. Por ejemplo, el tercer bit a partir de la derecha se designa como P1[2] y puede conectarse a otro bit de señal mediante el uso de un operador de asignación. Suponga que hay un arreglo de ocho bits llamado P1 como se muestra en la figura 4-49, y que hay otro arreglo de cuatro bits llamado P5. (a) Escriba la designación para el bit más significativo de P1. (b) Escriba la designación para el bit menos significativo de P5. (c) Escriba una expresión que haga que el bit menos significativo de P5 controle el bit más significativo de P1. Solución (a) El nombre del puerto es P1 y el bit más significativo es el bit 7. La designación apropiada para el bit 7 de P1 es P1[7]. (b) El nombre del puerto es P5 y el bit menos significativo es el bit 0. La designa- ción apropiada para el bit 0 de P5 es P5[0]. (c) La señal controladora se coloca en el lado derecho del operador de asignación y la señal controlada se coloca a la izquierda: P1[7] P5[0];. DECLARACIÓN DE ARREGLOS DE BITS EN AHDL En AHDL, el puerto p1 de la figura 4-49 se define como un puerto de entrada de ocho bits y para hacer referencia a el valor en este puerto se puede utilizar cualquier sis- tema numérico tal como hexadecimal, binario, decimal, etc. La sintaxis para AHDL utiliza un nombre para el vector de bits, seguido por el intervalo de las designacio- nes de los índices, las cuales van encerradas entre corchetes. Esta declaración se incluye en la sección SUBDESIGN. Por ejemplo, para declarar un puerto de entrada de ocho bits llamado p1, escribiríamos lo siguiente: p1 [7..0] : INPUT; define un puerto de entrada de 8 bits Declare una entrada de cuatro bits llamada teclado mediante el uso de AHDL. Solución teclado [3..0] : INPUT; FIGURA 4-49 Notación de arreglo de bits. Convertidor A/D (MSB) (LSB) P1[7] P1[6] P1[5] P1[4] P1[3] P1[2] P1[1] P1[0] Puerto de entrada P1 A H D L
  • 207. EJEMPLO 4-32 Las variables intermedias también pueden declararse como un arreglo de bits. Al igual que los bits individuales, se declaran justo después de las declaraciones de E/S en SUBDESIGN. Como ejemplo, el puerto de temperatura de ocho bits llamado p1 puede asignarse (conectarse) a un nodo llamado temp, de la siguiente manera: VARIABLE temp [7..0] :NODE; BEGIN temp[] p1[]; END; Observe que los datos se aplican al puerto de entrada p1 y que está controlando los alambres de la señal llamada temp. Podemos considerar el término a la derecha del signo de igual como el origen de los datos, y el término a la izquierda como la desig- nación. Los corchetes vacíos [ ] indican que cada uno de los bits correspondientes en los dos arreglos están conectados.También pueden “conectarse” bits individuales si se especifican los bits dentro de los corchetes. Por ejemplo, para conectar sólo el bit menos significativo de p1 con el LSB de temp, la instrucción sería temp[0] p1[0];. DECLARACIONES DEVECTORES DE BITS ENVHDL En VHDL, el puerto p1 de la figura 4-49 se define como un puerto de entrada de ocho bits y sólo se puede hacer referencia al valor de este puerto mediante el uso de literales binarias. La sintaxis paraVHDL utiliza un nombre para el vector de bits, seguido del modo (:IN), el tipo (BIT_VECTOR) y el intervalo de las designaciones de los índices, que van encerradas entre paréntesis. Esta declaración se incluye en la sección ENTITY. Por ejemplo, para declarar un puerto de entrada de ocho bits llamado p1, escribiríamos lo siguiente: PORT (p1 : IN BIT VECTOR (7 DOWNTO 0); Declare una entrada de cuatro bits llamada teclado mediante el uso de VHDL. Solución PORT(teclado : IN BIT VECTOR (3 DOWNTO 0); También pueden declararse señales intermedias como un arreglo de bits. Al igual que los bits individuales, se declaran justo dentro de la definición ARCHITECTU- RE. Como ejemplo, la temperatura de ocho bits en el puerto p1 puede asignarse (conectarse) a una señal llamada temp, como se muestra a continuación: SIGNAL temp : BIT VECTOR (7 DOWNTO 0); BEGIN temp 5 p1; END; Observe que los datos se aplican al puerto de entrada p1 y que está controlando los alambres de la señal llamada temp. No se especifican elementos en el vector de bits, lo cual significa que todos los bits están conectados. También pueden “conectarse” bits individuales mediante el uso de asignaciones de señales y especificando los números de los bits entre paréntesis. Por ejemplo, para conectar sólo el bit menos significativo de p1 con el LSB de temp, la instrucción sería temp(0) p1(0);. V H D L SECCIÓN 4-15/REPRESENTACIÓN DE DATOS EN HDL 179
  • 208. 180 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES VHDL es muy específico con respecto a las definiciones de cada tipo de datos. El tipo “bit_vector” describe a un arreglo de bits individuales. Esto se interpreta de manera distinta que un número binario de ocho bits (llamado cantidad escalar), el cual tiene el tipo integer. Por desgracia,VHDL no nos permite asignar un valor entero a una señal BIT_VECTOR de forma directa. Los datos pueden representarse median- te cualquiera de los tipos que se muestran en la figura 4-9, pero las asignaciones de datos y demás operaciones deben realizarse entre objetos del mismo tipo. Por ejem- plo, el compilador no le permitirá recibir un número de un teclado declarado como entero y conectarlo a cuatro LEDs que estén declarados como salidas BIT_VECTOR. En la tabla 4-9 bajo Posibles valores podrá observar que los objetos individuales de datos BIT y STD_LOGIC (por ejemplo: señales, variables, entradas y salidas) se desig- nan mediante comillas, mientras que los valores asignados a los tipos BIT_VECTOR y STD_LOGIC_VECTOR son cadenas de valores de bits válidos encerradas entre comi- llas dobles. VHDL también ofrece ciertos tipos de datos estandarizados que se necesitan al utilizar funciones lógicas contenidas en las bibliotecas. Como habrá imaginado, las bibliotecas son simples colecciones de pequeñas piezas de código deVHDL, las cua- les puede usar en sus descripciones de hardware sin necesidad de empezar desde cero. A menudo estas bibliotecas ofrecen funciones de uso común conocidas como macrofunciones, al igual que muchos de los dispositivos TTL estándar que se des- criben en este libro. En vez de escribir la nueva descripción de un dispositivo TTL conocido, podemos tan sólo sacar su macrofunción de la biblioteca y utilizarla en nuestro sistema. Desde luego que necesita que las señales entren y salgan de estas macrofunciones; además los tipos de las señales en su código deben concordar con los tipos en las funciones (que alguien más escribió). Esto significa que todos deben utilizar los mismos tipos de datos estándar. Cuando el VHDL se estandarizó a través del IEEE, se crearon muchos tipos de datos a la vez. Lo dos que utilizaremos en este libro son STD_LOGIC, que es equi- valente al tipo BIT, y STD_LOGIC_VECTOR, que es equivalente a BIT_VECTOR. Como podrá recordar, el tipo BIT sólo puede tener los valores ‘0’ y ‘1’. Los tipos lógicos estándar vienen definidos en la biblioteca IEEE y tienen un intervalo más amplio de valores posibles que sus contrapartes integradas en la biblioteca. Los posibles valores para un tipo STD_LOGIC o para cualquier elemento en un STD_ LOGIC_VECTOR se muestran en la tabla 4-10. Los nombres de estas categorías ten- drán mucho más sentido una vez que estudiemos las características de los circuitos lógicos en el capítulo 8. Por ahora mostraremos ejemplos con el uso de los valores ‘1’ y ‘0’ solamente. Tipo de datos Declaración de ejemplo Posibles valores Uso BIT y :OUT BIT; ‘0’ ‘1’ y ‘0’; STD LOGIC controlador: STD LOGIC ‘0’ ‘1’ ‘z’ ‘x’ ‘-‘ controlador ‘z’; BIT VECTOR datos bcd :BIT VECTOR “0101” “1001” digito datos bcd; (3 DOWNTO 0); “0000” STD LOGIC VECTOR dbus :STD LOGIC VECTOR “0Z1X” IF rd ‘0’ THEN (3 DOWNTO 0); dbus “zzzz”; INTEGER SIGNAL z:INTEGER RANGE 32..2, 1, 0, 1, 2 . . . 31 IF z 5 THEN . . . 32 TO 31; TABLA 4-9 Tipos de datos comunes en VHDL.
  • 209. PREGUNTAS DE REPASO 1. ¿Cómo declararía un arreglo de entrada de seis bits llamado botones_pulsar en (a) AHDL o en (b) VHDL? 2. ¿Qué instrucción utilizaría para extraer el MSB del arreglo de la pregunta 1 y colocarlo en un puerto de salida de un solo bit llamado z? Use (a) AHDL o (b) VHDL. 3. En VHDL, ¿cuál es el tipo estándar IEEE que es equivalente al tipo BIT? 4. En VHDL, ¿cuál es el tipo estándar IEEE que es equivalente al tipo BIT_VEC- TOR? 4-16 TABLAS DE VERDAD MEDIANTE EL USO DE HDL Ya hemos aprendido que una tabla de verdad es otra forma de expresar la opera- ción de un bloque de circuitos. Relaciona la salida del circuito con cada una de las posibles combinaciones de sus entradas. Como vimos en la sección 4-4, una tabla de verdad es el punto inicial para que un diseñador defina la manera en que debe operar el circuito. Después se deriva una expresión booleana de la tabla de verdad y se simplifica mediante el uso de los mapas K o del álgebra booleana. Por último, el circuito se implementa a partir de la ecuación booleana final. ¿No sería grandioso si pudiéramos partir de la tabla de verdad y llegar en forma directa al circuito final, sin todos esos pasos intermedios? Si utilizamos HDL para introducir la tabla de ver- dad, podremos hacer justo eso. TABLAS DEVERDAD MEDIANTE EL USO DE AHDL El código de la figura 4-50 utiliza AHDL para implementar un circuito y utiliza una tabla de verdad para describir su operación. La tabla de verdad para este diseño se presentó en el ejemplo 4-7. El punto clave de este ejemplo es el uso de la palabra clave TABLE en AHDL. Esta palabra permite al diseñador especificar la operación del circuito, igual que como se llena una tabla de verdad. En la primera línea des- pués de TABLE se listan las variables de entrada (a, b, c) de la misma forma como se crearía un encabezado de columna en una tabla de verdad. Al incluir las tres variables binarias entre paréntesis, indicamos al compilador que deseamos utilizar estos tres bits como un grupo y que nos referiremos a ellos como si fueran un núme- ro binario o un patrón de tres bits. Los valores específicos para este patrón de bits se listan debajo del grupo y se les denomina literales binarias. El operador especial (
  • 210. ) se utiliza en las tablas de verdad para separar las entradas de la salida (y). TABLA 4-10 Valores de STD_LOGIC. ‘1’ 1 lógico (justo igual que el tipo BIT) ‘0’ 0 lógico (justo igual que el tipo BIT) ‘z’ Alta impedancia* ‘-‘ No importa (justo igual que como se utilizó en los mapas K) ‘U’ Sin inicializar ‘X’ Desconocido ‘W’ Desconocido débil ‘L’ ‘0’ débil ‘H’ ‘1’ débil * En el capítulo 8 estudiaremos la lógica de tres estados. A H D L SECCIÓN 4-16/TABLAS DE VERDAD MEDIANTE EL USO DE HDL 181
  • 211. 182 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES % Figura 4 7 en AHDL Sistemas digitales 10a ed Neal Widmer MAYO 23, 2005 % SUBDESIGN FIG4 50 ( a,b,c :INPUT; dene las entradas del bloque y :OUTPUT; dene la salida del bloque ) BEGIN TABLE (a,b,c) y; encabezados de columna (0,0,0) 0; (0,0,1) 0; (0,1,0) 0; (0,1,1) 1; (1,0,0) 0; (1,0,1) 1; (1,1,0) 1; (1,1,1) 1; END TABLE; END; FIGURA 4-50 Archivo de diseño de AHDL para la figura 4-7. La instrucción TABLE en la figura 4-50 es para mostrar la relación entre el código de HDL y una tabla de verdad. Una manera más común de representar los encabezados de los datos de entrada es mediante el uso de un arreglo de bits para representar el valor en a, b, c. Este método requiere que se declare el arreglo de bits en la línea antes de BEGIN, como se muestra a continuación: VARIABLE bits ent[2..0] :NODE; Justo antes de la palabra clave TABLE, los bits de entrada pueden asignarse al arre- glo bits_ent[ ]: bits ent[ ] (a, b, c); Al proceso de agrupar tres bits independientes en un orden como el anterior se le conoce como concatenación; este proceso se lleva a cabo con frecuencia para conectar bits individuales con un arreglo de bits. En este caso, el encabezado de la tabla en los conjuntos de bits de entrada puede representarse mediante bits_ent[ ]. Observe que, a medida que listamos las posibles combinaciones de las entradas, tenemos varias opciones. Podemos crear un grupo de 1s y 0s entre paréntesis, como se muestra en la figura 4-50, o podemos representar el mismo patrón de bits utili- zando el número equivalente en binario, hexadecimal o decimal. El diseñador es el que decidirá cuál formato es el más apropiado, dependiendo de lo que representen las variables de entrada. TABLAS DEVERDAD MEDIANTE EL USO DEVHDL: ASIGNACIÓN DE SEÑAL SELECCIONADA El código de la figura 4-51 utilizaVHDL para implementar un circuito mediante una asignación de señal seleccionada para describir su operación. Esto le permite al diseñador especificar la operación del circuito, de la misma forma como se llena una tabla de verdad. En el ejemplo 4-7 se presentó la tabla de verdad para este diseño. El objetivo principal de este ejemplo es el uso de la instrucción WITH nombre_señal V H D L
  • 212. Figura 4 7 en VHDL Sistemas digitales 10a ed Neal Widmer MAYO 23, 2005 ENTITY fig4 51 IS PORT( a,b,c :IN BIT; declara bits de entrada individuales y :OUT BIT); END fig4 51; ARCHITECTURE verdad OF g4 51 IS SIGNAL bits ent : BIT VECTOR(2 DOWNTO 0); BEGIN bits ent 5 a b c; concatena los bits de entrada en bit vector WITH bits ent SELECT y '0' WHEN 000, Tabla de verdad '0' WHEN 001, '0' WHEN 010, '1' WHEN 011, '0' WHEN 100, '1' WHEN 101, '1' WHEN 110, '1' WHEN 111; END verdad; FIGURA 4-51 Archivo de diseño de VHDL para la figura 4-7. EJEMPLO 4-33 SELECT en VHDL. Uno de los objetivos secundarios es mostrar cómo se colocan los datos en un formato que pueda ser utilizado de manera conveniente con la asigna- ción de la señal seleccionada. Observe que las entradas están definidas en la decla- ración ENTITY como tres bits independientes a, b y c. Nada en esta declaración hace que uno de estos bits sea más significativo que los demás. El orden en el que se listan no importa. Queremos comparar el valor actual de estos bits con cada una de las posibles combinaciones de entrada que podrían presentarse. Si trazáramos una tabla de verdad, decidiríamos cuál bit colocar a la izquierda (MSB) y cuál a la dere- cha (LSB). En VHDL esto se logra mediante la concatenación (conectar en orden) de las variables de bit para formar un vector de bits. El operador de concatenación es “”. Se declara una señal como BIT_VECTOR para recibir el conjunto ordenado de bits de entrada y se utiliza para comparar el valor de entrada con las literales de cadena encerradas entre comillas. A la salida (y) se le asigna () un valor de bit (‘0’ o ‘1’) cuando (WHEN) bits_ent contiene el valor que se lista entre comillas dobles. VHDL es muy estricto en cuanto a la forma en que nos permite asignar y com- parar objetos tales como señales, variables, constantes y literales. La salida y es un BIT, por lo que se le debe asignar un valor de ‘0’ o de ‘1’. La señal bits_ent es un BIT_VECTOR de tres bits, por lo que debe compararse con un valor literal de cade- na de tres bits. VHDL no permitirá que bits_ent (un BIT_VECTOR) se compare con un número hexadecimal tal como X “5”, o con un número decimal tal como 3. Estas cantidades escalares serían válidas para la asignación o comparación con enteros. Declare tres señales en VHDL que sean bits individuales de nombre demasiado_ caliente, demasiado_frio y muy_bien. Combine (concatene) estos tres bits en una señal de tres bits llamada estado_temp, en donde lo caliente estará a la izquierda y lo frío a la derecha. SECCIÓN 4-16/TABLAS DE VERDAD MEDIANTE EL USO DE HDL 183
  • 213. 184 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES PREGUNTAS DE REPASO Solución 1. Declare primero las señales en la arquitectura (ARCHITECTURE). SIGNAL demasiado caliente, demasiado frio, muy bien :BIT; SIGNAL estado temp : BIT VECTOR (2 DOWNTO 0); 2. Escriba instrucciones de asignación concurrentes entre BEGIN y END. estado temp 5 demasiado caliente muy bien demasiado frio; 1. ¿Cómo concatenaría los tres bits x, y y z en un arreglo de tres bits llamado ome- ga? Use AHDL o VHDL. 2. ¿Cómo se implementan las tablas de verdad en AHDL? 3. ¿Cómo se implementan las tablas de verdad en VHDL? 4-17 ESTRUCTURAS DE CONTROL DE DECISIONES EN HDL En esta sección examinaremos métodos que nos permiten indicar al sistema digital cómo realizar decisiones “lógicas”, en forma muy similar al proceso que utilizamos para hacer decisiones en nuestra vida diaria. En el capítulo 3 vimos que las instruc- ciones de asignación concurrentes se evalúan de tal forma que el orden en el que se escriben no tiene efecto sobre el circuito que se está describiendo. Cuando utiliza- mos estructuras de control de decisiones, el orden en el que hacemos las preguntas sí es importante. Para resumir este concepto en los términos utilizados en la docu- mentación del HDL, a las instrucciones que se pueden escribir en cualquier secuen- cia se les llama concurrentes, y a las instrucciones que se evalúan en la secuencia en la que se escriben se les llama secuenciales. La secuencia de las instrucciones secuenciales afecta a la operación del circuito. Los ejemplos que hemos visto hasta ahora implican el uso de varios bits indi- viduales. Muchos sistemas digitales requieren entradas que representan un valor numérico. Consulte de nuevo el ejemplo 4-8, en el cual el objetivo del circuito lógico es monitorear el voltaje de la batería mediante un convertidor A/D. El valor digital se representa mediante un número de cuatro bits que proviene del convertidor A/D y que pasa al circuito lógico. Estas entradas no son variables binarias independien- tes, sino cuatro dígitos binarios de un número que representa el voltaje de la bate- ría. Necesitamos dar a estos datos el tipo correcto que nos permita utilizarlos como un número. IF/ELSE Las tablas de verdad son estupendas para listar todas las posibles combinaciones de variables independientes, pero hay mejores formas de manejar los datos numé- ricos. Como ejemplo, cuando una persona parte hacia la escuela o su trabajo en la mañana, debe realizar una decisión lógica para saber si se va a llevar o no un abrigo. Supongamos que esta persona decide sobre esta cuestión basándose únicamente en la temperatura actual. ¿Cuántos de nosotros razonaríamos de la siguiente manera? Utilizaré un abrigo si la temperatura es 0. Utilizaré un abrigo si la temperatura es 1. Utilizaré un abrigo si la temperatura es 2…. Utilizaré un abrigo si la temperatura es 13.
  • 214. No utilizaré un abrigo si la temperatura es 14. No utilizaré un abrigo si la temperatura es 15. No utilizaré un abrigo si la temperatura es 16…. No utilizaré un abrigo si la temperatura es 40. Este método es similar a aquél en el que se utiliza la tabla de verdad para describir la decisión. Para cada una de las posibles entradas, esta persona decide cuál debe ser la salida. En realidad, lo que haría para decidirse sería lo siguiente: Usaré un abrigo si la temperatura es menor de 14 grados. En caso contrario, no utilizaré un abrigo. Un HDL nos permite describir los circuitos lógicos mediante este tipo de razo- namiento. Primero debemos describir las entradas como un número dentro de un intervalo dado, y después podemos escribir instrucciones que decidan lo que se debe hacer en las salidas con base en el valor del número entrante. Al igual que en los HDLs, en la mayoría de los lenguajes de programación de computadoras estos tipos de decisiones se llevan a cabo mediante el uso de una estructura de control IF/ THEN/ELSE. Cada vez que la decisión está entre realizar una acción o no realizarla, se utiliza la instrucción IF/THEN. La palabra clave IF va seguida de una instrucción que es verdadera o falsa. Si (IF) es verdadera, entonces (THEN) se hace lo que esté especificado. En el caso en el que la instrucción sea falsa, no se realiza ninguna acción. La figura 4-52(a) muestra en forma gráfica la manera como funciona esta decisión. La figura de diamante representa la decisión que se está llevando a cabo mediante la evaluación de la instrucción contenida dentro del diamante. Toda deci- sión tiene dos posibles resultados: verdadero o falso. En este ejemplo, si la instruc- ción es falsa no se realiza ninguna acción. En algunos casos no sólo basta con decidir entre actuar y no actuar, sino que debemos elegir entre dos acciones distintas. Por ejemplo, en nuestra analogía sobre la decisión de usar un abrigo, si la persona ya tiene su abrigo puesto cuando llegue a esta decisión, no se lo quitará. El uso de la lógica IF/THEN supone que de inicio no está usando su abrigo. Cuando las decisiones demandan dos posibles acciones, se utiliza la estructura de control IF/THEN/ELSE como se muestra en la figura 4-52(b). Aquí se evalúa de nuevo la instrucción como verdadera o falsa. La diferencia es que, cuando la instrucción es falsa se realiza una acción distinta. Debe realizarse una de las dos acciones con esta instrucción. Podemos describirla en forma verbal como, “SI (IF) la instrucción es verdadera, ENTONCES (THEN) hay que hacer esto. EN CASO CONTRARIO (ELSE) hay que hacer esto otro”. En nuestra analogía del abrigo esta estructura de control funcionaría, sin importar que la persona haya traído puesto su abrigo o no desde un principio. En el ejemplo 4-8 se mostró un ejemplo simple de un circuito lógico que tiene un valor numérico como entrada, el cual representa el voltaje de la batería de un convertidor A/D. Las entradas A, B, C, D son en realidad dígitos binarios en un núme- ro de 4 bits, en donde A es el MSB y D es el LSB. La figura 4-53 muestra el mismo cir- FIGURA 4-52 Flujo lógico de las instrucciones (a) IF/THEN y (b) IF/THEN/ELSE. ENTONCES (THEN) hay que ponerse un abrigo Hace demasiado frío afuera (a) FALSO VERDADERO ENTONCES (THEN) hay que ponerse un abrigo Hace demasiado frío afuera (b) VERDADERO FALSO En caso contrario (ELSE), hay que quitarse el abrigo SECCIÓN 4-17/ESTRUCTURAS DE CONTROL DE DECISIONES EN HDL 185
  • 215. 186 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES FIGURA 4-53 Circuito lógico similar al del ejemplo 4-8. FIGURA 4-54 Versión en AHDL. SUBDESIGN FIG4 54 ( valor digital[3..0] :INPUT; dene las entradas del bloque z :OUTPUT; dene la salida del bloque ) BEGIN IF valor digital[ ] 6 THEN z VCC; la salida es 1 ELSE z GND; la salida es 0 END IF; END; cuito con las entradas etiquetadas en forma de un número de cuatro bits, de nombre valor_digital. La relación entre los bits es la siguiente: A valor_digital[3] bit 3 del valor digital (MSB) B valor_digital[2] bit 2 del valor digital C valor_digital[1] bit 1 del valor digital D valor_digital[0] bit 0 del valor digital (LSB) La entrada puede considerarse como un número decimal entre 0 y 15, si especi- ficamos el tipo correcto de la variable de entrada. IF/THEN/ELSE MEDIANTE EL USO DE AHDL En AHDL, las entradas pueden especificarse como un número binario formado de varios bits mediante la asignación de un nombre de variable, seguido de una lista de las posiciones de los bits, como se muestra en la figura 4-54. El nombre es valor_digi- tal y las posiciones de los bits varían desde 3 hasta 0. Observe lo simple que se vuel- ve el código al utilizar este método junto con una instrucción IF/ELSE. La palabra clave IF va seguida de una instrucción que hace referencia al valor completo de la variable de entrada de cuatro bits y lo compara con el número 6. Desde luego que 6 es la forma decimal de una cantidad escalar y valor_digital[ ] representa en realidad a un número binario. Como el compilador puede interpretar números en cualquier sistema, crea un circuito lógico que compara el valor binario de valor_digital con el número binario correspondiente al 6 decimal y decide si esta instrucción es verda- dera o falsa. Si es verdadera, ENTONCES (THEN) se utiliza la siguiente instrucción (z VCC) para asignar un valor a z. Observe que en AHDL debemos usar VCC para un 1 lógico y GND para un 0 lógico cuando asignamos un nivel lógico a un bit indi- vidual. Cuando valor_digital es 6 o menos, va después de la instrucción que sigue de ELSE (z GND). La instrucción END IF termina la estructura de control. Circuito lógico Convertidor A/D A B C D (MSB) (LSB) Valor_digital3 Valor_digital2 z Valor_digital1 Valor_digital0 A H D L
  • 216. IF/THEN/ELSE MEDIANTE EL USO DEVHDL En VHDL la cuestión importante es la declaración del tipo de entradas. (Consulte la figura 4-55.) La entrada se trata como una variable individual llamada valor_digi- tal. Como su tipo se declara como INTEGER, el compilador sabe que debe tratarla como un número. Al especificar un intervalo de 0 a 15, el compilador sabe que es un número de cuatro bits. Observe que RANGE no especifica el número de índice de un vector de bits, sino los límites del valor numérico del entero. EnVHDL los enteros se tratan de manera distinta a los arreglos de bits (BIT_VECTOR). Un entero puede compararse con otros números mediante el uso de operadores de desigualdad. Un BIT_VECTOR no puede usarse con operadores de desigualdad. Para utilizar la estructura de control IF/THEN/ELSE, VHDL requiere que el código se coloque dentro de un proceso (PROCESS). Las instrucciones que ocurren dentro de un proceso son secuenciales, lo cual significa que el orden en el que se escriben afecta a la operación del circuito. La palabra clave PROCESS va seguida de una lista de variables, a la cual se le llama lista de sensibilidad, que es una lista de variables a las cuales el código del proceso debe responder. Cada vez que valor_ digital cambia, hace que se vuelva a evaluar el código del proceso. Aún y cuando sabemos que valor_digital es en realidad un número binario de cuatro bits, el com- pilador lo evaluará como un número entre los valores decimales equivalentes de 0 y 15. Si (IF) la instrucción entre paréntesis es verdadera, entonces (THEN) se aplica la siguiente instrucción (a z se le asigna el valor de 1 lógico). Si esta instrucción no es verdadera, la lógica sigue la cláusula ELSE y asigna a z un valor de 0. La instruc- ción END IF; termina la estructura de control y END PROCESS; termina la evaluación de las instrucciones secuenciales. ELSIF A menudo tenemos que elegir de entre muchas posibles acciones, dependiendo de la situación. La instrucción IF decide si se va a realizar o no un conjunto de acciones. La instrucción IF/ELSE selecciona una de dos posibles acciones. Mediante la combi- nación de las decisiones con IF y ELSE podemos crear una estructura de control que V H D L FIGURA 4-55 Versión en VHDL. ENTITY fig4 55 IS PORT( valor digital :IN INTEGER RANGE 0 TO 15; entrada de 4 bits z :OUT BIT); END fig4 55; ARCHITECTURE decision OF g4 55 IS BEGIN PROCESS (valor digital) BEGIN IF (valor digital 6) THEN z '1'; ELSE z '0'; END IF; END PROCESS ; END decision; SECCIÓN 4-17/ESTRUCTURAS DE CONTROL DE DECISIONES EN HDL 187
  • 217. 188 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES se conoce como ELSIF, la cual selecciona uno de muchos resultados posibles. En la figura 4-56 se muestra la estructura de decisión en forma gráfica. Observe que, a medida que se evalúa cada condición, se realiza una acción si es verdadera o en caso contrario pasa a evaluar la siguiente condición. Cada acción está asociada con una condición y no existe la probabilidad de seleccionar más de una acción. Observe también que las condiciones que se utilizan para decidir la acción apropiada pueden ser cualquier expresión que se evalúe como verdadera o como falsa. Este hecho permite al diseñador utilizar los operadores de desigualdad para seleccionar una acción con base en un intervalo de valores de entrada. Como ejemplo de esta aplicación, consideremos el sistema de medición de temperatura que utiliza un convertidor A/D, como se describe en la figura 4-57. Suponga que deseamos indicar cuando la temperatura se encuentra en cierto Intervalo, al cual denominaremos como Demasiado frío, Templado y Demasiado caliente. La relación entre los valores digitales para la temperatura y las categorías es Valores digitales Categoría 0000-1000 Demasiado frío 1001-1010 Templado 1011-1111 Demasiado caliente FIGURA 4-56 Diagrama de flujo para decisiones múltiples en las que se utiliza IF/ELSIF. Acción 1 IF V F Acción 4 ELSIF V F Acción 5 Acción 2 ELSIF V F Acción 3 ELSIF V F FIGURA 4-57 Circuito indicador de un intervalo de temperatura. Circuito lógico Convertidor A/D Demasiado frío Templado Demasiado caliente Valor digital de cuatro bits Temp
  • 218. Podemos expresar el proceso de toma de decisiones para este circuito lógico de la siguiente manera: Si (IF) el valor digital es menor o igual a 8, entonces (THEN) hay que encender sólo el indicador “Demasiado frío”. En caso contrario, si (ELSE IF) el valor digital es mayor que 8 y (AND) menor que 11, entonces (THEN) hay que encender sólo el indicador “Templado”. En caso contrario (ELSE) hay que encender sólo el indicador “Demasiado caliente”. ELSIF MEDIANTE EL USO DE AHDL El código de AHDL de la figura 4-58 define las entradas en forma de un número binario de cuatro bits. Las salidas son tres bits individuales que controlan los tres indicadores de Intervalo. En este ejemplo se utiliza una variable intermedia (estado), la cual nos permite asignar un patrón de bits que representa las tres condiciones de demasiado_frio, templado y demasiado_caliente. La sección secuencial del código utiliza las instrucciones IF, ELSIF, ELSE para identificar el intervalo en el cual se encuentra la temperatura y asigna a estado el patrón de bits correcto. En la última instrucción, los bits de estado se conectan a los bits del puerto de salida real. Estos bits están ordenados en un grupo que se relaciona con los patrones de bits asignados a estado[ ]. Esto también podría haberse escrito mediante tres instrucciones concu- rrentes: demasiado_frio estado[2]; templado estado[1]; demasiado_caliente estado[0]; ELSIF MEDIANTE EL USO DEVHDL El código deVHDL en la figura 4-59 define las entradas como un entero de cuatro bits. Las salidas son tres bits individuales que controlan los tres indicadores de Intervalo. En este ejemplo se utiliza una señal intermedia (estado), la cual nos permite asignar un patrón de bits que representa a las tres condiciones demasiado_frio, muy_bien y demasiado_caliente. La sección de proceso del código utiliza las instrucciones IF, ELSIF y ELSE para identificar el intervalo en el cual se encuentra la temperatura y asigna a estado el patrón de bits correcto. En las últimas tres instrucciones, cada bit de estado se conecta al bit del puerto de salida correspondiente. A H D L FIGURA 4-58 Ejemplo de Intervalos de temperatura en AHDL mediante el uso de ELSIF. SUBDESIGN fig4 58 ( valor digital[3..0] :INPUT; dene las entradas del bloque demasiado frio, templado, demasiado caliente :OUTPUT; dene las salidas ) VARIABLE estado[2..0] :NODE; guarda el estado de demasiado frio, templado, demasiado caliente BEGIN IF valor digital[] 8 THEN estado[] b100; ELSIF valor digital[] 8 AND valor digital[] 11 THEN estado[] b010; ELSE estado[] b001; END IF; (demasiado frio, templado, demasiado caliente) 5 estado[ ]; actualiza los bits de salida END; V H D L SECCIÓN 4-17/ESTRUCTURAS DE CONTROL DE DECISIONES EN HDL 189
  • 219. 190 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES ENTITY fig4 59 IS PORT(valor digital: IN INTEGER RANGE 0 TO 15; declara la entrada de 4 bits demasiado frio, templado, demasiado caliente : OUT BIT); END fig4 59 ; ARCHITECTURE quetancaliente OF g4 59 IS SIGNAL estado :BIT VECTOR (2 downto 0); BEGIN PROCESS (valor digital) BEGIN IF (valor digital 5 8) THEN estado 5 “100”; ELSIF (valor digital 8 AND valor digital 11) THEN estado 010; ELSE estado 001; END IF; END PROCESS ; demasiado frio estado(2); asigna los bits de estado a la salida templado estado(1); demasiado caliente estado(0); END quetancaliente; FIGURA 4-59 Ejemplo de Intervalos de temperatura en VHDL mediante el uso de ELSIF. CASE Existe otra estructura de control que es útil para elegir acciones con base en las condiciones actuales. Tiene varios nombres dependiendo del lenguaje de progra- mación, pero casi siempre se utiliza la palabra CASE. Esta instrucción determina el valor de una expresión u objeto y después analiza una lista de posibles valores (casos) para la expresión u objeto que se está evaluando. Cada caso tiene una lista de acciones que deben llevarse a cabo. Una instrucción CASE es distinta a una ins- trucción IF/ELSIF debido a que un caso correlaciona un valor único de un objeto con un conjunto de acciones. Recuerde que una instrucción IF/ELSIF correlaciona un conjunto de acciones con una aseveración verdadera. Sólo puede haber una coin- cidencia para una instrucción CASE, mientras que una instrucción IF/ELSIF puede tener más de una, pero entonces (THEN) realizará solo la acción asociada con la primera aseveración verdadera que evalúe. Otro punto importante en los ejemplos que siguen a continuación es la nece- sidad de combinar cierto número de variables independientes en un conjunto de bits, al cual se le conoce como vector de bits. Recuerde que a esta acción de enlazar varios bits en un orden específico se le conoce como concatenación y nos permite considerar el patrón de bits como un grupo ordenado. CASE MEDIANTE EL USO DE AHDL El ejemplo de AHDL en la figura 4-60 muestra el uso de una instrucción CASE para implementar el circuito de la figura 4-9 (vea también la tabla 4-3). Utiliza bits indi- viduales como sus entradas. En la primera instrucción después de BEGIN, estos bits se concatenan y se asignan a la variable intermedia llamada estado. La instrucción CASE evalúa a la variable estado y busca el patrón de bits (que sigue después de la palabra clave WHEN) que concuerde con el valor de estado. Después realiza la acción descrita después del signo . En este ejemplo, sólo asigna un 0 lógico a la salida para cada uno de los tres casos especificados. Los demás casos producen un 1 lógico en la salida. A H D L
  • 220. FIGURA 4-61 Representación de la figura 4-9 en VHDL. ENTITY g4 61 IS PORT( p, q, r :IN bit; declara 3 bits de entrada s :OUT BIT); END fig4 61; ARCHITECTURE copia OF g4 61 IS SIGNAL estado :BIT VECTOR (2 downto 0); BEGIN estado p q r; enlaza los bits en orden. PROCESS (estado) BEGIN CASE estado IS WHEN 100 s '0'; WHEN 101 s '0'; WHEN 110 s '0'; WHEN OTHERS s '1'; END CASE; END PROCESS; END copia; SUBDESIGN fig4 60 ( p, q, r :INPUT; dene las entradas del bloque s :OUTPUT; dene las salidas ) VARIABLE estado[2..0] :NODE; BEGIN estado[] (p, q, r); enlaza los bits de entrada en orden CASE estado[] IS WHEN b100 s GND; WHEN b101 s GND; WHEN b110 s GND; WHEN OTHERS s VCC; END CASE; END; FIGURA 4-60 Representación de la figura 4-9 en AHDL. CASE MEDIANTE EL USO DEVHDL El ejemplo deVHDL en la figura 4-61 demuestra el uso de la instrucción CASE para implementar el circuito de la figura 4-9 (vea también la tabla 4-3). Utiliza bits indi- viduales como entradas. En la primera instrucción después de BEGIN, estos bits se concatenan y se asignan a la variable intermedia llamada estado mediante el uso del operador . La instrucción CASE evalúa la variable estado y busca el patrón de bits (que va después de la palabra clave WHEN) que concuerde con el valor de estado. Después realiza la acción descrita después del signo . En este ejemplo simple, sólo asigna un 0 lógico a la salida para cada uno de los tres casos especificados. Los demás casos producen un 1 lógico en la salida. V H D L SECCIÓN 4-17/ESTRUCTURAS DE CONTROL DE DECISIONES EN HDL 191
  • 221. 192 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES ENTITY fig4_64 IS PORT( q, d, n: IN BIT; --veinticinco, diez y cinco centavos centavos :OUT INTEGER RANGE 0 TO 25); -- valor binario de las monedas END fig4_64; ARCHITECTURE detector OF fig4_64 IS SIGNAL monedas :BIT_VECTOR(2 DOWNTO 0); -- agrupa los sensores de monedas BEGIN monedas = (q d n); --asigna sensores al grupo PROCESS (monedas) BEGIN CASE (centavos) IS WHEN “001” = centavos = 5; WHEN “010” = centavos = 10; WHEN “100” = centavos = 25; WHEN OTHERS = centavos = 0; END CASE; END PROCESS; END detector; FIGURA 4-64 Un detector de monedas en VHDL. SUBDESIGN fig4_63 ( q, d, n :INPUT; -- define veinticinco, diez y cinco centavos centavos[4..0] :OUTPUT; -- define el valor binario de las monedas ) BEGIN CASE (q, d, n) IS --agrupa las monedas en un conjunto ordenado WHEN b”001” = centavos[ ] = 5; WHEN b”010” = centavos[ ] = 10; WHEN b”100” = centavos[ ] = 25; WHEN OTHERS = centavos[ ] = 0; END CASE; END; FIGURA 4-63 Un detector de monedas en AHDL. EJEMPLO 4-34 Un detector en una máquina despachadora acepta monedas de 25, 10 y 5 centavos, y activa la señal digital correspondiente (Q, D, N) sólo cuando está presente la mone- da correcta. Físicamente es imposible que haya varias monedas presentes al mismo tiempo. Un circuito digital debe utilizar las señales Q, D y N como entradas y debe producir un número binario que represente el valor de la moneda según se muestra en la figura 4-62. Escriba el código en AHDL y VHDL. Solución Ésta es una aplicación ideal de la instrucción CASE para describir la operación correcta. Las salidas deben declararse como números de cinco bits para poder repre- sentar hasta 25 centavos. La figura 4-63 muestra la solución en AHDL y la figura 4-64 la solución en VHDL. FIGURA 4-62 Un circuito detector de monedas para una máquina despachadora. Insertar moneda Circuito lógico Q centavos[4..0] Arreglo de cinco bits que representa el valor de las monedas D N Cinco centavos Diez centavos Veinticinco centavos A H D L V H D L
  • 222. PREGUNTAS DE REPASO 1. ¿Cuál estructura de control decide qué hacer o qué no hacer? 2. ¿Cuál estructura de control decide hacer esto o lo otro? 3. ¿Cuál(es) estructura(s) de control decide(n) la acción específica, entre varias, que se va a realizar? 4. Declare una entrada llamada conteo que pueda representar una cantidad numé- rica tan grande como 205. Use AHDL o VHDL. RESUMEN 1. Las dos formas generales para las expresiones lógicas son la forma de suma de productos y la forma de producto de sumas. 2. Un método para el diseño de un circuito lógico combinacional es (1) construir su tabla de verdad, (2) convertir la tabla de verdad en una expresión de suma de productos, (3) simplificar la expresión mediante álgebra booleana o mapeo K, (4) implementar la expresión final. 3. El mapa K es un método gráfico para representar la tabla de verdad de un cir- cuito y generar una expresión simplificada para la salida del circuito. 4. Un circuito OR exclusivo tiene la expresión x AB AB. Su salida x estará en ALTO sólo cuando las entradas A y B estén en niveles lógicos opuestos. 5. Un circuito NOR exclusivo tiene la expresión x A B AB. Su salida x estará en ALTO sólo cuando las entradas A y B estén en el mismo nivel lógico. 6. Cada una de las compuertas básicas (AND, OR, NAND, NOR) pueden usarse para habilitar o deshabilitar el paso de una señal de entrada hacia su salida. 7. Las principales familias de CIs digitales son las familias TTL y CMOS. Los CIs digitales están disponibles en una amplia gama de densidades (compuertas por chip), desde las funciones lógicas básicas hasta las de alta complejidad. 8. Para el diagnóstico de fallas básico se requiere (como mínimo) una comprensión de la operación del circuito, un conocimiento de los tipos de posibles fallas, un diagrama de conexiones del circuito lógico completo y una sonda lógica. 9. Un dispositivo lógico programable (PLD) es un CI que contiene un extenso número de compuertas lógicas cuyas interconexiones pueden ser programadas por el usuario para generar la relación lógica deseada entre las entradas y las salidas. 10. Para programar un PLD se necesita un sistema de desarrollo, el cual consiste de una computadora, software para desarrollo de PLDs y un dispositivo programa- dor que se encarga de la programación física del chip PLD. 11. El sistema Altera permite técnicas convenientes de diseño jerárquico mediante el uso de cualquier forma de descripción de hardware. 12. El tipo de los objetos de datos debe especificarse, de manera que el compilador del HDL conozca el intervalo de números que van a representarse. 13. Las tablas de verdad pueden introducirse de manera directa en el archivo fuen- te mediante el uso de las características del HDL. 14. Pueden utilizarse las estructuras de control lógicas tales como IF, ELSE y CASE para describir la operación de un circuito lógico, con lo cual se simplifica aún más el código y la solución al problema. RESUMEN 193
  • 223. 194 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES M x N Q FIGURA 4-65 Problemas 4-2 y 4-3. TÉRMINOS IMPORTANTES agrupamiento arreglo de bits arriba-abajo asignación de señal selecta bibliotecas BIT_VECTOR CASE cero esfuerzo de inserción (ZIF) colisión comprobación de paridad concatenación concurrentes condición de “no importa” diseño jerárquico ELSE ELSIF encapsulado dual en línea (DIP) entero estructuras de control de decisiones flotante generación de paridad habilitar/deshabilitar IF/THEN Índice indeterminado JEDEC JTAG lista de sensibilidad literales lógica de transistor/- transistor (TTL) macrofunción mapa de Karnaugh (mapa K) NOR exclusivo (XNOR) objetos OR exclusivo (XOR) PROCESS producto de sumas (POS) programador secuenciales Semiconductor Metal- Óxido-complementario (CMOS) sonda lógica SSI, MSI, LSI,VLSI, ULSI, GSI STD_LOGIC STD_LOGIC_VECTOR suma de productos (SOP) vector de bits vectores de prueba PROBLEMAS SECCIONES 4-2 Y 4-3 4-1.* Simplifique las siguientes expresiones mediante el uso del álgebra boo- leana. 4-2. Simplifique el circuito de la figura 4-65 mediante el uso del álgebra boo- leana. (a) (b) (c) (d) (e) (f) (g) (h) x = AB(CD) + ABD + B C D y = (C + D) + ACD + AB C + A BCD + ACD z = (B + C)(B + C) + A + B + C x = A B C + ABC + ABC + A B C + ABC q = RST(R + S + T) w = ABC + ABC + A y = (Q + R)(Q + R) x = ABC + AC * Encontrará las respuestas a los problemas marcados con un asterisco al nal del libro. B B
  • 224. +5 V +5 V Puerta Motor +5 V LED Abierto Cerrado ENC APAG +5 V Luces ENC APAG Circuito lógico Alarma FIGURA 4-66 Problema 4-8. 4-3.* Cambie cada una de las compuertas del problema 4-2 por compuertas NOR y simplifique el circuito mediante álgebra booleana. SECCIÓN 4-4 4-4.* Diseñe el circuito lógico que corresponde a la tabla de verdad que se mues- tra en la tabla 4-11. 4-5. Diseñe un circuito lógico cuya salida esté en ALTO sólo cuando la mayoría de las entradas A, B y C estén en BAJO. 4-6. Una planta de manufactura necesita tener un sonido de bocina para indicar la hora de salida. La bocina deberá activarse cuando se cumpla cualquiera de las siguientes condiciones: 1. Es después de las 5 en punto y todas las máquinas están apagadas. 2. Es viernes, se completó la producción del día y todas las máquinas están apagadas. Diseñe un circuito lógico que controle la bocina. (Sugerencia: use cuatro variables lógicas de entrada para representar las diversas condiciones; por ejemplo, la entrada A estará en ALTO sólo cuando sean las 5 en punto o más tarde.) 4-7.* Un número binario de cuatro bits se representa como A3 A2 A1A0, en donde A3, A2, A1 y A0 representan los bits individuales y Ao es igual al LSB. Diseñe un circuito lógico que produzca una salida en ALTO cada vez que el número binario sea mayor que 0010 y menor que 1000. 4-8. La figura 4-66 muestra un diagrama para un circuito de alarma de automóvil que se utiliza para detectar ciertas condiciones indeseables. Los tres inte- TABLA 4-11 A B C x 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 1 PROBLEMAS 195 B B, D B, D D D D
  • 225. 196 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES rruptores se utilizan para indicar el estado de la puerta del lado del conduc- tor, el motor y las luces, en forma respectiva. Diseñe el circuito lógico con estos tres interruptores como entradas, de manera que la alarma se active cada vez que exista cualquiera de las siguientes condiciones: ■ Las luces estén encendidas mientras que el motor esté apagado. ■ La puerta esté abierta mientras que el motor esté encendido. 4-9.* Implemente el circuito del problema 4-4, utilizando sólo compuertas NAND. 4-10. Implemente el circuito del problema 4-5, utilizando sólo compuertas NAND. SECCIÓN 4-5 4-11. Determine la expresión mínima para cada uno de los mapas K en la figura 4-67. Ponga especial atención al paso 5 para el mapa en (a). 4-12. Para la tabla de verdad que se muestra a continuación, cree un mapa K de 2 2, agrupe los términos y simplifique. Después analice de nuevo la tabla de verdad para ver si la expresión es verdadera para todas las entradas en la tabla. 4-13. Empezando con la tabla de verdad en la tabla 4-11, utilice un mapa K para encontrar la ecuación SOP más simple. 4-14. Simplifique la expresión en (a)* el problema 4-1(e), usando un mapa K. (b) el problema 4-1(g), usando un mapa K. (c)* el problema 4-1(h), usando un mapa K. 4-15.* Obtenga la expresión de salida para el problema 4-7, usando un mapa K. 4-16. La figura 4-68 muestra un contador BCD que produce una salida de cuatro bits, la cual representa el código BCD para el número de pulsos que se han aplicado a la entrada del contador. Por ejemplo, después de haberse produ- cido cuatro pulsos, las salidas del contador son DCBA 01002 410. El con- tador se restablece a 0000 en el décimo pulso y empieza a contar de nuevo. En otras palabras, las salidas DCBA nunca representarán a un número mayor de 10012 910. (a)* Diseñe el circuito lógico que produzca una salida en ALTO cada vez que el conteo sea 2, 3 o 9. Use el mapeo K y aproveche las condiciones “no importa”. (b) Repita el proceso para x 1 cuando DCBA 3, 4, 5, 8. FIGURA 4-67 Problema 4-11. AB AB AB AB CD CD CD CD (a)* AB AB AB AB CD CD CD CD (b) 1 1 0 0 1 0 1 X AB AB AB AB C C (c) 1 1 1 1 1 1 0 0 0 0 0 1 0 0 1 1 1 0 1 1 1 0 0 1 0 0 0 0 1 0 1 1 A B y 0 0 1 0 1 1 1 0 0 1 1 0 B B B B B C,D
  • 226. B A X 1 0 1 0 Tiempo FIGURA 4-70 Problema 4-20. 4-17.* La figura 4-69 muestra cuatro interruptores que forman parte de los circui- tos de control en una máquina copiadora. Los interruptores están en varios puntos a lo largo de la ruta del papel, a medida que éste pasa a través de la máquina. Cada interruptor está, por lo general, abierto, y a medida que el papel pasa a través de un interruptor, éste se cierra. Es imposible que los interruptores SW1 y SW4 estén cerrados al mismo tiempo. Diseñe el circuito lógico para producir una salida en ALTO cada vez que dos o más interrupto- res estén cerrados al mismo tiempo. Use el mapeo K y aproveche las condi- ciones “no importa”. 4-18. El ejemplo 4-3 demostró la simplificación algebraica. El paso 3 produjo la ecuación SOP z A B C A C D A B C D ABC. Use un mapa K para demostrar que esta ecuación puede simplificarse aún más que la respuesta que se muestra en el ejemplo. 4-19. Utilice el álgebra booleana para llegar al mismo resultado que se obtuvo mediante el método del mapa K del problema 4-18. SECCIÓN 4-6 4-20. (a) Determine la forma de onda de salida para el circuito de la figura 4-70. (b) Repita el proceso con la entrada B mantenida en BAJO. (c) Repita el proceso con la entrada B mantenida en ALTO. FIGURA 4-68 Problema 4-16. D (MSB) C B A X ALTO sólo cuando DCBA = 210 , 310, o 910 Contador BCD Circuito lógico FIGURA 4-69 Problema 4-17. +5 V SW4 +5 V SW3 +5 V SW2 +5 V SW1 Circuito lógico x ALTO cada vez que dos o más interruptores están cerrados* *SW1 y SW4 nunca estarán cerrados al mismo tiempo PROBLEMAS 197 D B C B
  • 227. 198 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES 4-21.* Determine las condiciones de entrada necesarias para producir x 1 en la figura 4-71. 4-22. Diseñe un circuito que produzca una salida en ALTO sólo cuando las tres entradas estén en el mismo nivel. (a) Use una tabla de verdad y un mapa K para producir la solución SOP. (b) Use compuertas XOR de dos entradas y otras compuertas para encon- trar una solución. (Sugerencia: recuerde la propiedad transitiva del álgebra… si a b y b c entonces a c.) 4-23.* Un chip 7486 contiene cuatro compuertas XOR. Muestre cómo hacer una compuerta XNOR utilizando sólo un chip 7486. Sugerencia: vea el ejemplo 4-16. 4-24.* Modifique el circuito de la figura 4-23 para comparar dos números de cuatro bits y producir una salida en ALTO cuando los dos números concuerden de manera exacta. 4-25. La figura 4-72 representa un detector de magnitud relativa que toma dos números binarios de tres bits (x2x1x0 y y2y1y0) y determine si son iguales; en caso de no ser así, que determine cuál es más grande. Hay tres salidas, que se definen de la siguiente manera: 1. M 1 sólo si los dos números de entrada son iguales. 2. N 1 sólo si x2x1x0 es mayor que y2y1y0. 3. P 1 sólo si y2y1y0 es mayor que x2x1x0. Diseñe los circuitos lógicos para este detector. El circuito tiene seis entra- das y tres salidas, por lo que es demasiado complejo como para manejarlo mediante el método de la tabla de verdad. Consulte el ejemplo 4-17 como una sugerencia sobre cómo podría empezar a resolver este problema. MÁS PROBLEMAS DE DISEÑO 4-26.* La figura 4-73 representa un circuito multiplicador que toma dos números binarios de dos bits (x1x0 y y1y0) y produce un número binario de salida z3z2z1z0 que es igual al producto aritmético de los dos números de entrada. Diseñe el circuito lógico para el multiplicador. (Sugerencia: el circuito lógico tendrá cuatro entradas y cuatro salidas.) C B A X FIGURA 4-71 Problema 4-21. FIGURA 4-72 Problema 4-25. y0 LSB Detector de magnitud relativa Número binario y Número binario x M { x = y } N { x y } P { x y } LSB y1 y2 x0 x1 x2 B B B B B C,D
  • 228. FIGURA 4-74 Problema 4-30. 4-27. Un código BCD se está transmitiendo a un receptor remoto. Los bits son A3, A2, A1 y A0, en donde A3 es el MSB. Entre los circuitos del receptor incluye un circuito detector de errores BCD, el cual examina el código recibido para ver si es un código de BCD legal (es decir, ≤1001). Diseñe este circuito para producir un nivel ALTO para cualquier condición de error. 4-28.* Diseñe un circuito lógico cuya salida esté en ALTO cada vez que A y B estén ambas en ALTO, siempre y cuando C y D estén ambas en BAJO o ambas en ALTO. Trate de hacer esto sin utilizar una tabla de verdad. Después com- pruebe su resultado construyendo una tabla de verdad a partir de su circui- to, para ver si concuerda con la declaración del problema. 4-29. Cuatro tanques grandes en una planta química que contienen distintos líquidos se están calentando. Se utilizan sensores de nivel de líquido para detectar cuando el tanque A o el tanque B se eleva por encima de un nivel predeterminado. Los sensores de temperatura en los tanques C y D detectan cuando la temperatura en cualquiera de estos tanques cae por debajo de un límite prescrito. Suponga que las salidas A y B del sensor de nivel de líquido están en BAJO cuando el nivel es satisfactorio y en ALTO cuando el nivel es demasiado alto. Además, las salidas C y D del sensor de temperatura están en BAJO cuando la temperatura es satisfactoria y en ALTO cuando la tem- peratura es demasiado baja. Diseñe un circuito lógico que detecte cada vez que el nivel en el tanque A o en el tanque B es demasiado alto, al mismo tiempo que la temperatura en el tanque C o en el tanque D sea demasiado baja. 4-30.* La figura 4-74 muestra la intersección de una autopista principal con un camino de acceso secundario. Se colocaron sensores de detección de vehícu- los a lo largo de los carriles C y D (camino principal) y de los carriles A y B (camino de acceso). Las salidas de estos sensores están en BAJO (0) cuando x1 x0 y1 y0 z0 z1 z2 z3 MSB LSB LSB LSB Circuito multiplicador FIGURA 4-73 Problema 4-26. D B A C S N O E PROBLEMAS 199 D D D C,D
  • 229. 200 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES no hay vehículos presentes, y en ALTO (1) cuando hay vehículos presentes. El semáforo de la intersección debe controlarse de acuerdo con la siguiente lógica: 1. El semáforo este-oeste (E-O) se pondrá en verde cada vez que estén ocupados ambos carriles C y D. 2. El semáforo E-O estará en verde cada vez que C o D estén ocupados, pero cuando A y B no estén ambos ocupados. 3. El semáforo norte-sur (N-S) se pondrá en verde cada vez que ambos carri- les A y B estén ocupados, pero cuando C y D no estén ambos ocupados. 4. El semáforo N-S también se pondrá en verde cuando A o B estén ocupa- dos, mientras que C y D estén ambos vacantes. 5. El semáforo E-O cuando no haya vehículos presentes. Utilizando las salidas del sensor A, B, C y D como entradas, diseñe un circui- to lógico para controlar el semáforo. Debe haber dos salidas, N-S y E-O, que cambien a ALTO cuando la luz correspondiente se vaya a poner en verde. Simplifique el circuito lo más que se pueda y muestre todos los pasos. SECCIÓN 4-7 4-31. Rediseñe el generador y comprobador de paridad de la figura 4-25 para que (a) opere usando paridad impar. (Sugerencia: ¿cuál es la relación entre un bit de paridad impar y un bit de paridad par para el mismo conjunto de bits de datos?) (b) Opere con ocho bits de datos. SECCIÓN 4-8 4-32. (a) ¿Bajo qué condiciones permitirá una compuerta OR que una señal lógi- ca pase hacia su salida sin modificarla? (b) Repita el inciso (a) para una compuerta AND. (c) Repita el proceso para una compuerta NAND. (d) Repita el proceso para una compuerta NOR. 4-33.* (a) ¿Puede utilizarse un INVERSOR como un circuito de habilitación/des- habilitación? Explique. (b) ¿Puede usarse una compuerta XOR como un circuito de habilitación/ deshabilitación? Explique. 4-34. Diseñe un circuito lógico que permita que la señal de entrada A pase hasta la salida sólo cuando la entrada de control B esté en BAJO, mientras que la entrada de control C esté en ALTO; en caso contrario, la salida debe estar en BAJO.    4-35.* Diseñe un circuito que deshabilite el paso de una señal de entrada sólo cuan- do las entradas de control B, C y D estén todas en ALTO; la salida deberá estar en ALTO para la condición deshabilitada. 4-36. Diseñe un circuito lógico que controle el paso de la señal A, de acuerdo con los siguientes requerimientos: 1. La salida X será igual a A cuando las entradas de control B y C sean iguales. 2. X permanecerá en ALTO cuando B y C sean distintas. 4-37. Diseñe un circuito lógico que tenga dos señales de entrada A1 y A0, y una entrada de control S de manera que funcione de acuerdo con los requeri- mientos descritos en la figura 4-75. (A este tipo de circuito se le conoce como multiplexor, el cual veremos en el capítulo 9.) D B B D D D D
  • 230. 4-38.* Use el mapeo K para diseñar un circuito que cumpla con los requerimientos del ejemplo 4-17. Compare este circuito con la solución en la figura 4-23. Aquí se recalca que el método del mapa K no puede aprovechar la lógica de las compuertas XOR y XNOR. El diseñador debe ser capaz de determinar cuándo pueden utilizarse estas compuertas. SECCIONES 4-9 A 4-13 4-39. (a) Un técnico que está probando un circuito lógico se da cuenta de que la salida de cierto INVERSOR está atascada en BAJO mientras que su entrada esté pulsando. Liste todas las posibles razones que pueda para esta operación defectuosa. (b) Repita el inciso (a) para el caso en el que la salida del INVERSOR se quede atascada en un nivel lógico indeterminado.    4-40.* Las señales que se muestran en la figura 4-76 se aplican a las entradas del circuito de la figura 4-32. Suponga que hay un circuito abierto interno en Z1-4. (a) ¿Qué indicará una sonda lógica en Z1-4? (b) ¿Qué lectura de voltaje de corriente directa esperaría en Z1-4? (Recuer- de que los CIs son TTL.) (c) Haga un bosquejo de cuál cree usted que será la apariencia de las seña- les CLKOUT y SHIFTOUT. (d) En vez del circuito abierto en Z1-4, suponga que las terminales 9 y 10 de Z2 están en corto interno. Haga un bosquejo de las probables seña- les en Z2-10, CLOCKOUT y SHIFTOUT. 4-41. Suponga que los CIs de la figura 4-32 son CMOS. Describa cómo se vería afectada la operación del circuito debido a un circuito abierto en el conduc- tor que conecta a Z2-2 y Z2-10. 4-42. En el ejemplo 4-24 listamos tres posibles fallas para la situación de la figura 4-36. ¿Qué procedimiento seguiría usted para determinar cuál de las fallas es la que se está produciendo en realidad? 4-43.* Consulte el circuito de la figura 4-38. Suponga que los dispositivos son CMOS. Suponga además que la indicación de la sonda lógica en Z2-3 es S 0 1 z = A0 = A1 S z A0 Multiplexor A1 FIGURA 4-75 Problema 4-37. CLOCK LOAD SHIFT FIGURA 4-76 Problema 4-40. * Recuerde que F indica un ejercicio de diagnóstico de fallas. PROBLEMAS 201 D F F F F F
  • 231. 202 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES 11 12 13 6 4 5 2 1 7 14 +5 V PASAJ CINTP 6 1 2 4 3 CONDUC CINTC ENC 7 14 +5 V ALARMA 9 10 8 Z1: 74LS04 Z2: 74LS00 Z2 Z2 Z2 Z2 FIGURA 4-77 Problemas 4-47, 4-48 y 4-49. “indeterminado”, en vez de “pulsando”. Liste las posibles fallas y escriba un procedimiento a seguir para determinar la verdadera falla? 4-44.* Consulte el circuito lógico de la figura 4-41. Recuerde que se supone que la salida Y debe estar en ALTO para cualquiera de las siguientes condiciones: 1. A 1, B 0, sin importar C 2. A 0, B 1, C 1 Al probar el circuito, el técnico observa que Y cambia a ALTO sólo para la primera condición, pero permanece en BAJO para todas las demás condi- ciones de entrada. Considere la siguiente lista de posibles fallas. Para cada una de ellas, escriba sí o no para indicar si podría o no ser la verdadera falla. Explique su razonamiento para cada una de las opciones en las que conteste que no. (a) Un corto interno a tierra en Z2-13. (b) Un circuito abierto en la conexión a Z2-13. (c) Un corto interno con VCC en Z2-11. (d) Un circuito abierto en la conexión de VCC con Z2. (e) Un circuito abierto interno en Z2-9. (f) Un circuito abierto en la conexión de Z2-11 a Z2-9. (g) Un puente de soldadura entre las terminales 6 y 7 de Z2. 4-45. Desarrolle un procedimiento para aislar la falla que esté produciendo el funcionamiento defectuoso descrito en el problema 4-44. 4-46.* Suponga que todas las compuertas en la figura 4-41 son CMOS. Cuando el técnico prueba el circuito descubre que opera en forma correcta, excepto para las siguientes condiciones: 1. A 1, B 0, C 0 2. A 0, B 1, C 1 Para estas condiciones, la sonda lógica indica niveles indeterminados en Z2-6, Z2-11 y Z2-8. ¿Cuál cree usted que sea la probable falla en el circuito? Explique su razonamiento. 4-47. La figura 4-77 es un circuito lógico combinacional que opera una alarma en un automóvil, cada vez que están ocupados los asientos del conductor y/o del pasajero y que los cinturones de seguridad no están abrochados cuando el automóvil arranca. Las señales CONDUC y PASAJ activas en ALTO indican la presencia del conductor y del pasajero en forma respectiva, y se obtie- nen mediante interruptores operados por presión en los asientos. La señal ENC es activa en ALTO cuando el interruptor de encendido está activado. La señal CINTC es activa en BAJO e indica que el cinturón de seguridad F F F F
  • 232. del conductor no está abrochado; CINTP es la señal correspondiente para el cinturón de seguridad del pasajero. La alarma se activará (BAJO) cada vez que se encienda el automóvil, que cualquiera de los asientos delanteros esté ocupado y que su cinturón de seguridad no esté abrochado. (a) Verifique que el circuito funcione de la manera descrita. (b) Describa cómo operaría este sistema de alarma si Z1-2 estuviera en corto interno con tierra. (c) Describa cómo operaría si hubiera una conexión abierta de Z2-6 a Z2-10. 4-48.* Suponga que el sistema de la figura 4-77 está funcionando de manera que la alarma se active tan pronto como el conductor o algún pasajero estén senta- dos y el automóvil esté encendido, sin importar el estado de los cinturones de seguridad. ¿Cuáles son las posibles fallas? ¿Qué procedimiento seguiría usted para encontrar la verdadera falla?    4.49.* Suponga que el sistema de alarma de la figura 4-77 está operando de manera que la alarma se encienda en forma continua tan pronto como se encienda el automóvil, sin importar el estado de las demás entradas. Liste las posibles fallas y escriba un procedimiento para aislar la falla. PREGUNTAS DE PRÁCTICA SOBRE PLDS (50 A 55) 4-50.* Verdadero o falso: (a) El diseño de arriba hacia abajo comienza con una descripción general de todo el sistema y sus especificaciones. (b) Un archivo JEDEC puede usarse como archivo de entrada para un pro- gramador. (c) Si un archivo de entrada se compila sin errores, significa que el circuito PLD funcionará en forma correcta. (d) Un compilador puede interpretar código a pesar de los errores de sin- taxis. (e) Los vectores de prueba se utilizan para simular y probar un dispositivo. 4-51. ¿Qué son los caracteres % que se utilizan para el archivo de diseño de AHDL? 4-52. ¿Cómo se indican los comentarios en un archivo de diseño de VHDL? 4-53. ¿Qué es un zócalo ZIF? 4-54.* Enliste tres modos de entrada utilizados para introducir la descripción de un circuito en el software de desarrollo de PLDs. 4-55. ¿Qué significan JEDEC y HDL? SECCIÓN 4-15 4-56. Declare los siguientes objetos de datos en AHDL o VHDL. (a)* Un arreglo de ocho bits de salida llamados aparatos. (b) Un bit individual de salida llamado chicharra. (c) Un puerto de entrada numérico de 16 bits llamado altitud. (d) Un bit individual intermedio dentro de un archivo de descripción de hardware llamado alambre2. 4-57. Exprese los siguientes números literales en hexadecimal, binario y decimal, utilizando la sintaxis de AHDL o VHDL. (a)* 15210 (b) 10010101002 (c) 3C416 4-58.* La siguiente definición de E/S que se da para AHDL y para VHDL. Escriba cuatro instrucciones de asignación concurrentes que conecten las entradas con las salidas, como se muestra en la figura 4-78. PROBLEMAS 203 F F H,B H,B B B B H,B H,B H,B
  • 233. 204 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES LIMITE_VACIO LIMITE_LLENO ENERGIA_ENC MOTOR_ENC 1 0 3 2 Bitsent 1 0 3 2 Bitssal LED_LLENO MOTOR LED_VACIO LED_ENERGIA FIGURA 4-78 Problema 4-58. SUBDESIGN hw ( bitsent[3..0] :INPUT; bitssal[3..0] :OUTPUT; ) ENTITY hw IS PORT ( bitsent :IN BIT VECTOR (3 downto 0); bitssal :OUT BIT VECTOR (3 downto 0) ); END hw; SECCIÓN 4-16 4-59. Modifique la tabla de verdad de AHDL de la figura 4-50 para implementar la ecuación AB AC AB. 4-60.* Modifique el diseño de AHDL en la figura 4-54, de manera que z 1 sólo cuando el valor digital sea menor que 10102. 4-61. Modifique la tabla de verdad de AHDL de la figura 4-51 para implementar AB AC AB. 4-62.* Modifique el diseño de VHDL de la figura 4-55, de manera que z 1 sólo cuando el valor digital sea menor que 10102. 4-63. Modifique el código de (a) la figura 4-54 o (b) la figura 4-55 de tal forma que la salida z esté en BAJO sólo cuando valor_digital se encuentre entre 6 y 11 (inclusivo). 4-64. Modifique (a) el diseño de AHDL de la figura 4-60 para implementar la tabla 4-1. (b) el diseño de VHDL de la figura 4-61 para implementar la tabla 4-1. 4-65.* Escriba la ecuación booleana del archivo de diseño de descripción de hard- ware para implementar el ejemplo 4-9. 4-66. Escriba la ecuación booleana del archivo de diseño de descripción de hard- ware para implementar un generador de paridad de cuatro bits, como se muestra en la figura 4-25(a). PREGUNTA DE PRÁCTICA 4-67. Defina cada uno de los siguientes términos. (a) Mapa de Karnaugh. (b) Forma de suma de productos. (c) Generador de paridad. (d) Octeto. H,D H,D H,D H,D H,B H,D H,D B
  • 234. (e) Circuito de habilitación. (f) Condición “no importa”. (g) Entrada flotante. (h) Nivel de voltaje indeterminado. (i) Colisión. (j) PLD. (k) TTL. (l) CMOS. APLICACIONES DE MICROCOMPUTADORA 4-68. En una microcomputadora, la unidad del microprocesador (MPU) siempre se está comunicando con uno de los siguientes elementos: (1) memoria de acceso aleatorio (RAM), la cual almacena los programas y datos que pueden modificarse con facilidad; (2) memoria de sólo lectura (ROM), la cual alma- cena programas y datos que nunca se modifican; y (3) dispositivos externos de entrada/salida (E/S) tales como teclados, pantallas de video, impresoras y unidades de disco. Al ejecutar un programa, la MPU genera un código de dirección que selecciona el tipo de dispositivo (RAM, ROM o E/S) con el que desea comunicarse. La figura 4-79 muestra un arreglo común en donde la MPU produce como salida un código de dirección de ocho bits (A15 – A8). En realidad la MPU produce como salida un código de dirección de 16 bits, pero los bits de menor orden (A7 – A0) no se utilizan en el proceso de selec- ción de dispositivos. El código de dirección se aplica a un circuito lógico que lo utiliza para generar las señales de selección de dispositivos: RAM, ROM y E/S. Analice este circuito y determine lo siguiente:. (a)* El intervalo de direcciones de A15 hasta A8 que activa la señal RAM. (b) El intervalo de direcciones que activa la señal E/S. (c) El intervalo de direcciones que activa la señal ROM. Exprese las direcciones en binario y en hexadecimal. Por ejemplo, la res- puesta para (a) es: A15 a A8 000000002 a 111011112 0016 a EF16. 4-69. En algunas microcomputadoras la MPU puede deshabilitarse por breves perio- dos mientras que otro dispositivo controla los dispositivos de RAM, ROM y E/S. Durante estos intervalos, la MPU activa una señal de control especial (DMA), la cual se utiliza para deshabilitar (desactivar) la lógica de selección de dispositivos, de manera que las señales RAM, ROM y E/S se encuentren en su estado inactivo. Modifique el circuito de la figura 4-79, de tal forma que RAM, ROM y E/S se desactiven cada vez que la señal DMA esté activa, sin importar el estado del código de dirección. FIGURA 4-79 Problema 4-68. RAM E/S ROM MPU A15 A14 A13 A12 A11 A10 A9 A8 PROBLEMAS 205 C C,D
  • 235. 206 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES SECCIÓN 4-1 1. Sólo (a). 2. Sólo (c). SECCIÓN 4-3 1. La expresión (b) no se encuentra en la forma de suma de productos debido al signo de inversión sobre las variables C y D (es decir, el término ACD). La expresión (c) no se encuentra en la forma de suma de productos debido al término (M N)P. 3. x A B C SECCIÓN 4-4 1. x A B CD A BCD ABC D 2. Ocho SECCIÓN 4-5 1. x AB AC BC 2. x A BCD 3. S P QR 4. Una condición de entrada para la cual no haya una condición de salida requerida específica; es decir, tenemos la libertad de hacerla 1 o 0. SECCIÓN 4-6 2. Un nivel BAJO constante. 3. No; la compuerta XOR disponible puede utilizarse como un INVERSOR si se conecta una de sus entradas a un nivel ALTO constante (vea el ejemplo 4-16). SECCIÓN 4-8 1. x A(B C) 2. OR, NAND 3. NAND, NOR SECCIÓN 4-9 1. DIP 2. SSI, MSI, LSI,VLSI, ULSI, GSI 3.Verdadero. 4.Verdadero. 5. series 40, 74AC y 74ACT 6. De 0 a 0-8 V; de 2.0 a 5-0 V 7. De 0 a 1.5 V; de 3.5 a 5.0 V 8. Como si la entrada estuviera en ALTO. 9. Es impredecible; podría sobrecalentarse y destruirse. 10. 74HCT y 74ACT 11. Describen la manera exacta de cómo interconectar los chips para distribuir el circuito y diagnosticar fallas. 12. Se definen las entradas y las salidas, y se describen las relaciones lógicas. SECCIÓN 4-11 1. Entradas o salidas abiertas; entradas o salidas en corto con VCC; entradas o salidas cortocircuitadas a tierra; terminales en corto; fallas internas del circuito. 2. Terminales en corto. 3. Para TTL, un nivel BAJO; para CMOS, indeterminado. 4. Dos o más salidas conectadas entre sí. SECCIÓN 4-12 1. Líneas de señal abiertas; líneas de señal en corto; fuente de poder defectuosa; carga en la salida. 2. Alambres rotos; conexiones de soldadura pobres; grietas o cortes en la tarjeta de circuito impreso; terminales del CI dobladas o rotas; zócalos de CI defectuosos. 3. Los CIs operan en forma errática o no operan. 4. Nivel lógico indeterminado. SECCIÓN 4-14 1. Las conexiones controladas por electricidad se programan como abiertas o cerradas. 2. (4, 1)(2, 2) o (2, 1)(4, 2) 3. (4, 5)(1, 6) o (4, 6)(1, 5) SECCIÓN 4-15 1. (a) botones_pulsar[5..0] :INPUT; (b) botones_pulsar :IN BIT_VECTOR (5 DOWNTO 0); 2. (a) z botones_pulsar[5]; (b) z botones_pulsar(5); 3. STD_LOGIC 4. STD_LOGIC_VECTOR
  • 236. SECCIÓN 4-16 1. (AHDL) omega[ ] (x, y, z); (VHDL) omega x y z; 2. Mediante el uso de la palabra clave TABLE. 3. Mediante el uso de las asignaciones de señal selecta. SECCIÓN 4-17 1. IF/THEN 2. IF/THEN/ELSE 3. CASE o IF/ELSIF 4. (AHDL) conteo[7..0] :INPUT; (VHDL) conteo: IN INTEGER RANGE 0 TO 205 RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES 207
  • 253. a
  • 277. → → → → →
  • 302. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 % JK circuito flip-flop % SUBDESIGN fig5_65 ( jent, kent, clkent, preset, clear :INPUT qsal :OUTPUT; ) VARIABLE ff1 :JKFF; -- define este flip flop como de tipo JKFF BEGIN ff1.prn preset; -- éstos son opcionales, su valor predeterminado es vcc ff1.clrn clear; ff1.j jent; -- conecta primitiva a la señal de entrada ff1.k kent; ff1.clk clkent; qsal ff1.q; -- conecta la terminal de salida a la primitiva END;
  • 304. -- Circuito de Flip-flop JK ENTITY jk IS PORT( clk, j, k, prn, clrn :IN BIT; q :OUT BIT); END jk ; ARCHITECTURE a OF jk IS SIGNAL qestado :BIT; BEGIN PROCESS(clk, prn, clrn) -- responde a cualquiera de estas señales BEGIN IF prn '0' THEN qestado '1'; -- PRESET asíncrono ELSIF clrn '0' THEN qestado '0';-- CLEAR asíncrono ELSIF clk '1' AND clk'EVENT THEN -- en PGT del flanco del reloj IF j '1' AND k '1' THEN qestado NOT qestado; ELSIF j '1' AND k '0' THEN qestado '1'; ELSIF j '0' AND k '1' THEN qestado '0'; END IF; END IF; END PROCESS; q qestado; -- actualiza terminal de salida END a; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
  • 307. % Contador de rizos MOD 8 ascendente % SUBDESIGN fig5_71 ( reloj :INPUT; q[2..0] :OUTPUT; ) VARIABLE q[2..0] :JKFF; -- define tres FFs JK BEGIN -- nota: valor determinado de prn, clrn es vcc q[2..0].j VCC; -- modo de conmutación J K 1 para todos los FFs q[2..0].k VCC; q[0].clk !reloj; q[1].clk !q[0].q; q[2].clk !q[1].q; -- conecta los relojes en forma de rizo END; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
  • 350.
  • 352.
  • 355. 1 Σ
  • 356. FIGURA 6-11 (a) Símbolo de bloque para el sumador en paralelo de cuatro bits 74HC283; (b) conexión en cascada de dos CIs 74HC283. B3 B2 B1 B0 A3 A2 A1 A0 Σ3 sumador en paralelo de 4 bits 74HC283 C0 C4 (a) B7 B6 B5 B4 A7 A6 A5 A4 74HC283 (sumador de mayor orden) C4 C8 B3 B2 B1 B0 A3 A2 A1 A0 C0 primer sumando de 8 bits sumando de 8 bits (b) 74HC283 (sumador de menor orden) Σ2 Σ1 Σ0 Σ7 Σ6 Σ5 Σ4 Σ3 Σ2 Σ1 Σ0 EJEMPLO 6-10 del MSB. Puede usarse como la entrada de acarreo para una tercera etapa de suma- dor, si se van a sumar números binarios más grandes. La característica de acarreo adelantado del 74HC283 agiliza la operación de este sumador de dos etapas, ya que el nivel lógico en C4 (el acarreo de la etapa de menor orden) se genera con más rapidez que si no hubiera circuitos de acarreo adelantado en el chip 74HC283. Esto permite que la etapa de mayor orden produzca sus salidas de suma con más rapidez. Determine los niveles lógicos en las entradas y las salidas del sumador de ocho bits en la figura 6-11(b), cuando se suma el 7210 con el 13710. Solución Primero se convierte cada número en binario de ocho bits: 137 10001001 72 01001000 SECCIÓN 6-14/SUMADOR EN PARALELO DE CIRCUITO INTEGRADO 327
  • 357. 328 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS PREGUNTAS DE REPASO Estos dos valores binarios se aplicarán a las entradas A y B; esto es, las entradas de A serán 10001001 de izquierda a derecha, y las entradas de B serán 01001000 de izquierda a derecha. El sumador producirá la suma binaria de los dos números: [A] 10001001 [B] 01001000 [ ] 11010001 Las salidas de la suma indicarán 11010001 de izquierda a derecha. Como no hay desbordamiento hacia el bit C8, quedará como un 0. 1. ¿Cuántos chips 74HC283 se necesitan para sumar dos números de 20 bits? 2. Si un 74HC283 tiene un retraso de propagación máximo de 30 ns de C0 a C4, ¿cuál será el retraso de propagación total de un sumador de 32 bits construido a partir de chips 74HC283? 3. ¿Cuál será el nivel lógico en C4, en el ejemplo 6-10? 6-15 SISTEMA DE COMPLEMENTO A 2 La mayoría de las computadoras modernas utiliza el sistema de complemento a 2 para representar números negativos y realizar restas. Si utilizamos la forma de com- plemento a 2 para representar los números negativos sólo será necesario la opera- ción de suma para realizar las operaciones tanto de suma como de resta de números con signo. Suma Los números positivos y negativos (incluyendo los bits de signo) pueden sumarse en el circuito sumador en paralelo básico cuando los números negativos se encuentran en forma de complemento a 2. Esto se ilustra en la figura 6-12 para la suma de 3 y 6. El 3 se representa en su forma de complemento a 2 como 1101, en donde el primer 1 es el bit de signo; el 6 se representa como 0110, en donde el primer cero es el bit de signo. Estos números se almacenan en sus correspondientes registros. El sumador en paralelo de cuatro bits produce salidas de suma de 0011, lo cual repre- senta un 3. La salida C4 es 1, pero recuerde que en el método de complemento a 2 se descarta. Resta Cuando se utiliza el sistema de complemento a 2, el número a restar (el sustraendo) se cambia por su complemento a 2 y después se suma al minuendo (el número al que se le está restando el sustraendo). Por ejemplo, podemos suponer que el minuendo ya está almacenado en el acumulador (registro A). Después el sustraendo se coloca en el registro B (en una computadora se transferiría a este registro desde la memoria) y se cambia por su forma de complemento a 2 antes de sumarlo al número que está en el registro A. Las salidas de suma del circuito sumador ahora representan la diferencia entre el minuendo y el sustraendo. El circuito sumador en paralelo del cual hemos estado hablando puede adap- tarse para realizar la resta que se describe a continuación si proporcionamos un medio para sacar el complemento a 2 del número en el registro B. Para obtener el
  • 358. Σ0 B3 B2 B1 B0 Sumador en paralelo de 4 bits 74LS283 C0 0 0 1 1 0 1 1 0 1 1 0 1 A3 A2 A1 A0 Del registro A Del registro B +3 (suma resultante) 0 1 C4 +6 (sumando) Representación en complemento a 2 de -3 (primer sumando) Σ1 Σ2 Σ3 FIGURA 6-12 Sumador en paralelo que se utiliza para sumar y restar números en el sistema de complemento a 2. FIGURA 6-13 Sumador en paralelo que se utiliza para restar (A B) mediante el sistema de complemento a 2. Los bits del sustraendo (B) están invertidos, y C0 1 para producir el complemento a 2. Σ0 Σ1 Σ2 Σ3 A3 A2 A1 A0 B3 B2 B1 B0 Sumador en paralelo de 4 bits 74LS283 Del registro A C0 = 1 Representa la salida de DIFERENCIA Salidas invertidas del registro B C4 (se descarta) complemento a 2 de un número binario se complementa (invierte) cada bit y des- pués se suma 1 al LSB. La figura 6-13 muestra cómo lograrlo. Se utilizan las salidas invertidas del registro B en vez de las salidas normales; esto es, B0, B1, B2 y B3 se alimentan a las entradas del sumador (recuerde que B3 es el bit de signo). Con esta operación se complementa cada uno de los bits del número en B. Además C0 se hace 1 lógico, por lo que se suma un 1 adicional al LSB del sumador; esto logra el mismo efecto que si se suma 1 al LSB del registro B para formar el complemento a 2. Las salidas 3 a 0 representan los resultados de la operación de resta. Desde luego que 3 es el bit de signo del resultado e indica si éste es o . La salida de acarreo C4 se descarta de nuevo. Para aclarar mejor esta operación, estudie los siguientes pasos para restar 6 de 4: 1. El 4 se almacena en el registro A como 0100. 2. El 6 se almacena en el registro B como 0110. 3. Las salidas invertidas de los FFs del registro B (1001) se alimentan al sumador. SECCIÓN 6-15/SISTEMA DE COMPLEMENTO A 2 329
  • 359. 330 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS 4. Los circuitos del sumador en paralelo suman [A] 0100 con [B] 1001, junto con un acarreo C0 1 hacia el LSB. La operación se muestra a continuación: El resultado en las salidas de suma es 1110. En realidad esto representa el resultado de la operación de resta, la diferencia entre el número en el registro A y el número en el registro B; esto es, [A] [B]. Como el bit de signo 1, es un resultado negativo y se encuentra en la forma de complemento a 2. Para verificar que 1110 representa el 210 sacamos su complemento a 2 y obtenemos 210: Combinación de suma y resta Ahora debe quedar claro que el circuito sumador en paralelo básico puede usarse para sumar o restar, dependiendo de si el número B se deja sin cambio o se convierte en su complemento a 2. En la figura 6-14 se muestra un circuito completo que puede realizar tanto sumas como restas en el sistema de complemento a 2. Este circuito sumador/restador se controla mediante las dos señales de control SUMA y RESTA. Cuando el nivel de SUMA es ALTO, el circuito suma los números almacenados en los registros A y B. Cuando el nivel RESTA es ALTO, el circuito resta el número en el registro B del número en el registro A. La operación se describe de la siguiente manera: 1. Suponga que SUMA 1 y que RESTA 0. La condición RESTA 0 deshabilita (inhibe) las compuertas AND 2, 4, 6 y 8, con lo que sus salidas se mantienen en 0. La condición SUMA 1 habilita las compuertas AND 1, 3, 5 y 7, con lo cual se permite que sus salidas pasen los niveles B0, B1, B2 y B3 en forma respectiva. 2. Los niveles B0 a B3 pasan a través de las compuertas OR en el sumador en para- lelo de cuatro bits, para que se sumen a los bits A0 A3. La suma aparece en las salidas 0 a 3. 3. Observe que RESTA 0 produce un acarreo de C0 0 en el sumador. 4. Ahora suponga que SUMA 0 y RESTA 1. La condición SUMA 0 inhibe las compuertas AND 1, 3, 5 y 7. La condición RESTA 1 habilita las compuertas 2, 4, 6 y 8, por lo que sus salidas pasan los niveles B0, B1, B2 y B3 respectivamente. 5. Los niveles B0 a B3 pasan a través de las compuertas OR hacia el sumador, para agregarse a los bits A0 A3. Observe también que C0 ahora es 1. Por lo tanto, el número en el registro B se ha convertido en su complemento a 2. 6. La diferencia aparece en las salidas 0 a 3. Los circuitos como el sumador/restador de la figura 6-14 se utilizan en compu- tadoras debido a que proporcionan un medio relativamente sencillo para sumar y restar números binarios con signo. En la mayoría de las computadoras, las salidas presentes en las líneas de salida por lo general se transfieren hacia el registro A (acumulador), por lo que los resultados de la suma o la resta siempre terminan almacenados en el registro A. Esto se logra aplicando un pulso TRANSFERIR a las entradas CLK del registro A. 1 ← C0 0100 ← [A] 1001 ← [ ] 1110 ← [ ] [A] [B] B 1110 0001 + 1 0010 = +210
  • 360. FIGURA 6-14 Sumador/restador en paralelo que utiliza el sistema de complemento a 2. 74LS283 C4 C0 2 4 8 6 7 5 3 1 SUMA RESTA D D D D CLK CLK CLK CLK Pulso Transferir 12 11 10 9 A3 A2 A1 A0 B3 B2 B1 B0 Σ0 Σ1 Σ2 Σ3 A3 A2 A1 A0 B3 B3 B2 B2 B1 B1 B0 B0 Registro B PREGUNTAS DE REPASO 1. ¿Por qué C0 tiene que ser 1 para poder utilizar el circuito sumador de la figura 6-13 como restador? 2. Suponga que [A] 0011 y [B] 0010 en la figura 6-14. Si SUMA 1 y RESTA 0, determine los niveles lógicos en las salidas de la compuerta OR. 3. Repita la pregunta 2 para la condición SUMA 0, RESTA 1. 4. Verdadero o falso: cuando el circuito sumador/restador se utiliza para restar, el complemento a 2 del sustraendo aparece en la entrada del sumador. 6-16 CIRCUITOS INTEGRADOS TIPO ALU Existen varios circuitos integrados a los que se les conoce como unidades aritmético/ lógicas (ALUs), aún cuando no tienen todas las herramientas de una unidad aritmé- tica/lógica de computadora. Estos chips ALU son capaces de realizar varias opera- ciones aritméticas y lógicas con entradas de datos binarios. La operación específica que debe realizar un CI tipo ALU se determina con base en un código binario espe- cífico que se aplica en sus entradas de selección de función. Algunos de los CIs tipo ALU son bastante complejos y se requeriría una gran cantidad de tiempo y espacio para explicar e ilustrar su operación. En esta sección utilizaremos un chip tipo ALU SECCIÓN 6-16/CIRCUITOS INTEGRADOS TIPO ALU 331
  • 361. 332 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS S2 S1 S0 CN B3 B2 B1 B0 B A3 A2 A1 A0 F0 F2 F1 F3 F CN+4 (a) ALU A 74LS382/ 74HC382 OVR S 0 0 0 0 1 1 1 1 S2 0 0 1 1 0 0 1 1 S1 0 1 0 1 0 1 0 1 S0 Tabla de funciones (b) A = número de entrada de 4 bits B = número de entrada de 4 bits CN = acarreo hacia la posición del LSB S = entradas de selección de operación de 3 bits F = número de salida de 4 bits CN+4 = acarreo que proviene de la posición del MSB OVR = indicador de desbordamiento BORRAR B menos A A menos B A más B A ⊕ B A + B AB PRESET F3F2F1F0 = 0000 Necesita que CN = 0 OR exclusivo OR AND F3F2F1F0 = 1111 Necesita CN = 1 Observaciones: Las entradas S seleccionan la operación OVR = 1 para el desbordamiento en números con signo Entradas Salidas Operación Comentarios FIGURA 6-15 (a) Símbolo de bloque para el chip ALU 74LS382/HC382; (b) tabla de funciones que muestra cómo las entradas de selección (S) determinan la operación que se va a realizar sobre las entradas A y B. relativamente simple pero útil, para demostrar los conceptos básicos detrás de todos los chips tipo ALU. Las ideas que presentamos aquí podrán extenderse después a los dispositivos más complejos. El chip ALU 74LS382/HC382 La figura 6-15(a) muestra el símbolo de bloque para una ALU que está disponible como un 74LS382 (TTL) y como un 74HC382 (CMOS). Este CI de 20 terminales opera sobre dos números de entrada de cuatro bits (A3A2A1A0 y B3B2B1B0) para pro- ducir un resultado de salida de cuatro bits (F3F2F1F0). Esta ALU puede realizar ocho operaciones distintas. En cualquier momento, la operación que se vaya a realizar dependerá del código de entrada que se aplique a las entradas de selección de fun- ción S2S1S0. La tabla en la figura 6-15(b) muestra las ocho operaciones disponibles. Enseguida describiremos cada una de estas operaciones. OPERACIÓN BORRAR Cuando S2S1S0 000, la ALU borrará todos los bits de la salida F, de manera que F3F2F1F0 0000. OPERACIÓN DE SUMA Cuando S2S1S0 011, la ALU sumará A3A2A1A0 y B3B2B1B0 para producir su suma en F3F2F1F0. Para esta operación, CN es el aca- rreo hacia la posición del LSB y debe hacerse 0. CN4 es la salida de acarreo que proviene de la posición del MSB. OVR es la salida indicadora de desborda- miento; detecta un desbordamiento cuando se utilizan números con signo. OVR será 1 cuando una operación de suma o de resta produzca un resultado dema- siado grande como para caber en cuatro bits (incluyendo el bit de signo). OPERACIONES DE RESTA Cuando S2S1S0 001, la ALU restará el número en la entrada A del número en la entrada B. Cuando S2S1S0 010, la ALU restará B de A. En cualquier caso, la diferencia aparecerá en F3F2F1F0. Observe que las operaciones de resta requieren que la entrada CN sea 1.
  • 362. EJEMPLO 6-11 OPERACIÓN XOR Cuando S2S1S0 100, la ALU realizará una operación XOR bit por bit sobre las entradas A y B. Esto se ilustra a continuación para A3A2A1A0 0110 y B3B2B1B0 1100. El resultado es F3F2F1F0 1010. OPERACIÓN OR Cuando S2S1S0 101, la ALU realizará una operación OR bit por bit sobre las entradas A y B. Por ejemplo, para A3A2A1A0 0110 y B3B2B1B0 1100 la ALU generará un resultado de F3F2F1F0 1110. OPERACIÓN AND Cuando S2S1S0 110, la ALU realizará una operación AND bit por bit sobre las entradas A y B. Por ejemplo, para A3A2A1A0 0110 y B3B2B1B0 1100 la ALU generará un resultado de F3F2F1F0 1100. OPERACIONES PRESET Cuando S2S1S0 111, la ALU establecerá todos los bits de la salida, de manera que F3F2F1F0 1111. (a) Determine las salidas del 74HC382 para las siguientes entradas: S2S1S0 010, A3A2A1A0 0100, B3B2B1B0 0001 y CN 1. (b) Cambie el código de selección a 011 y repita. Solución (a) En la tabla de funciones de la figura 6-15(b) podemos ver que 010 selecciona la operación (A – B). La ALU realizará la resta en complemento a 2; para ello complementará B y sumará el resultado a A y CN. Observe que se necesita la condición CN 1 para completar el complemento a 2 de B en forma efectiva. Como siempre pasa en la resta en complemento a 2, el ACARREO del MSB se descarta. El resultado correcto de la operación (A B) aparece en las salidas F. La salida OVR se determina considerando que los números de entrada son con signo. Por lo tanto, tenemos que A3A2A1A0 0100 410 y B3B2B1B0 0001 110. El resultado de la operación de resta es F3F2F1F0 0011 310, el cual es correcto. Por lo tanto, no se ha producido ningún desbordamiento y OVR 0. Si el resultado hubiera sido negativo, habría estado en forma de complemento a 2. (b) Un código de selección de 011 producirá la suma de las entradas A y B. No obs- tante, como CN 1, habrá un acarreo de 1 que se sumará a la posición del LSB. Esto producirá un resultado de F3F2F1F0 0110, el cual es 1 mayor que (A B). Las salidas CN4 y OVR serán 0. Para que aparezca la suma correcta en F, la entrada CN deberá ser 0. A0 { B0 = 0 { 0 = 0 = F0 A1 { B1 = 1 { 0 = 1 = F1 A2 { B2 = 1 { 1 = 0 = F2 A3 { B3 = 0 { 1 = 1 = F3 1 ← C F3 F2 F1 F0 CN + 4 N 0100 ← A 1110 ← 10011 B SECCIÓN 6-16/CIRCUITOS INTEGRADOS TIPO ALU 333
  • 363. 334 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS 74HC382 Z2 74HC382 Z1 0 0 1 1 Observaciones: Z1 suma los bits de menor orden. Z2 suma los bits de mayor orden. Σ7–Σ 0= suma de 8 bits. OVR de Z2 es el indicador de desbordamiento de 8 bits. B7 B6 B5 B4 A7 A6 A5 A4 S2 S1 S0 CN B3 B2 B1 B0 A3 A2 A1 A0 OVR F2 F3 F1 F0 CN+4 Σ7 Σ6 Σ5 Σ4 B3 B2 B1 B0 A3 A2 A1 A0 S2 S1 S0 CN B3 B2 B1 B0 A3 A2 A1 A0 OVR F2 F1 F0 CN+4 Σ3 Σ2 Σ1 Σ0 F3 FIGURA 6-16 Dos chips ALU 74HC382 conectados como un sumador de ocho bits. EJEMPLO 6-12 Expansión de la ALU Un chip 74LS382 o 74HC382 individual opera sobre números de cuatro bits. Pueden conectarse dos o más de estos chips en conjunto para operar sobre números más grandes. La figura 6-16 muestra cómo se combinan dos ALUs de cuatro bits para sumar dos números de ocho bits (B7B6B5B4B3B2B1B0 y A7A6A5A4A3A2A1A0) y produ- cir la suma de salida ∑7∑6∑5∑4∑3∑2∑1∑0. Estudie el diagrama del circuito y observe los siguientes puntos: 1. El chip Z1 opera con los cuatro bits de mayor orden de los dos números de entrada. El chip Z2 opera con los cuatro bits de mayor orden. 2. La suma aparece en las salidas F de Z1 y Z2. Los bits de menor orden aparecen en Z1 y los bits de mayor orden aparecen en Z2. 3. La entrada CN de Z1 es el acarreo hacia la posición del LSB. Para la suma se hace 0. 4. La salida de acarreo [CN4] de Z1 se conecta a la entrada de acarreo [CN] de Z2. 5. La salida OVR de Z2 es el indicador de desbordamiento cuando se utilizan núme- ros de ocho bits con signo. 6. Las entradas de selección correspondientes de los dos chips se conectan entre sí, de manera que Z1 y Z2 siempre estén realizando la misma operación. Para la suma, las entradas de selección se muestran como 011. ¿Cómo tendría que cambiarse el arreglo de la figura 6-16 para realizar la resta (B A)?
  • 364. PREGUNTAS DE REPASO Solución El código de entrada de selección [consulte la tabla en la figura 6-15(b)] debe cam- biarse a 001 y la entrada CN de Z1 debe hacerse 1. Otras ALUs El chip 74LS181/HC181 es otra ALU de cuatro bits. Tiene cuatro entradas de selec- ción que pueden elegir cualquiera de 16 operaciones distintas.También tiene un bit de entrada de modo que puede alternar entre las operaciones lógicas y las aritméti- cas (sumar y restar). Esta ALU tiene una salida A B que se utiliza para comparar las magnitudes de las entradas A y B. Cuando los dos números de entrada sean exac- tamente iguales, la salida A B será 1; en caso contrario será 0. El chip 74LS881/HC881 es similar al chip 181, sólo que tiene la capacidad de realizar algunas operaciones lógicas adicionales. 1. Aplique las siguientes entradas a la ALU de la figura 6-15 y determine las sali- das: S2S1S0 001, A3A2A1A0 1100, B3B2B1B0 1001, CN 1. 2. Cambie el código de selección a 011 y CN a 0, y repita la pregunta de repaso 1. 3. Cambie el código de selección a 110 y repita la pregunta 1. 4. Aplique las siguientes entradas al circuito de la figura 6-16 y determine las sali- das: B 01010011, A 00011000. 5. Cambie el código de selección a 111 y repita la pregunta 4. 6. ¿Cuántos chips 74HC382 se necesitan para sumar dos números de 32 bits? 6-17 EJEMPLO PRÁCTICO DE DIAGNÓSTICO DE FALLAS Un técnico está probando el sumador/restador que aparece en la figura 6-17 y regis- tra los siguientes resultados de la prueba para los diversos modos de operación: Modo 1: SUMA 0, RESTA 0. Las salidas de la suma siempre son iguales al número en el registro A más uno. Por ejemplo, cuando [A] 0110 la suma es [ ] 0111. Esto es incorrecto, ya que las salidas de la compuerta OR y C0 deben ser 0 en este modo para producir [ ] [A]. Modo 2: SUMA 1, RESTA 0. La suma siempre es 1 más de lo que debe ser. Por ejemplo, cuando [A] 0010 y [B] 0100 la salida de la suma es 0111 en vez de 0110. Modo 3: SUMA 0, RESTA 1. Las salidas siempre son iguales a [A] [B], como es de esperarse. Cuando el técnico examina estos resultados, ve que las salidas de la suma exceden los resultados esperados por 1 para los primeros dos modos de operación. Al princi- pio sospecha que hay una posible falla en una de las entradas del LSB para el suma- dor, pero lo descarta debido a que una falla así también afectaría a la operación de resta, la cual está funcionando en forma correcta. Más adelante se da cuenta que hay otra falla que podría agregar un 1 a los resultados para los primeros dos modos sin provocar un error en el modo de resta. Recuerde que C0 se hace 1 en el modo de resta como parte de la operación de complemento a 2 sobre [B]. Para los demás modos, C0 debe ser 0. El técnico comprueba la conexión entre la señal RESTA y la entrada C0 que va al sumador, y SECCIÓN 6-17/EJEMPLO PRÁCTICO DE DIAGNÓSTICO DE FALLAS 335
  • 365. 336 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS FIGURA 6-17 Circuito sumador/restador en paralelo. 74LS283 sumador en paralelo de cuatro bits C4 A3 A2 A1 A0 Σ3 Σ2 Σ1 Σ0 C0 B0 B1 B2 B3 12 11 10 9 2 4 8 6 7 5 3 1 SUMA RESTA B3 B3 B2 B2 B1 B1 B0 B0 X EJEMPLO 6-13 descubre que está abierta debido a una mala conexión de soldadura. Esta conexión abierta explica los resultados observados, ya que el sumador TTL responde como si C0 fuera un 1 lógico constante, lo cual provoca que se agregue un 1 adicional al resultado en los modos 1 y 2. La conexión abierta no tendría efecto en el modo 3, ya que se supone que C0 debe ser 1 de todas formas. Considere de nuevo el circuito sumador/restador. Suponga que en la figura 6-17 hay una interrupción en la ruta de conexión entre la entrada RESTA y las compuertas AND en el punto X. Describa los efectos de esta conexión abierta sobre la operación del circuito para cada modo. Solución Primero hay que tener en cuenta que esta falla producirá un 1 lógico en la entrada afectada de las compuertas AND 2, 4, 6 y 8, con lo cual se habilitará en forma per- manente cada una de estas compuertas para pasar su entrada B a la siguiente com- puerta OR, como se muestra. Modo 1: SUMA 0, RESTA 0. La falla provocará que el circuito realice una resta… casi. El complemento a 1 de [B] llegará a las salidas de la compuerta OR y se aplicará al sumador junto con [A]. Con C0 0 no se completará el comple- mento a 2 de [B]; le faltará 1. Por lo tanto, el sumador producirá [A] – [B] – 1. Para ilustrar esto, probemos con [A] 6 0110 y [B] 3 0011. El sumador realizará la suma de la siguiente manera: [B] 1100 [A] 0110 1 冫0010 ↑ Se descarta el acarreo. complemento a 1 de resultado
  • 366. El resultado es 0010 2 en vez de 0011 3, como debería ser para la resta normal. Modo 2: SUMA 1, RESTA 0. Cuando SUMA 1, las compuertas AND 1, 3, 5 y 7 pasarán las entradas B a la siguiente compuerta OR. Así, cada com- puerta OR tendrá B y B en sus entradas, con lo cual se producirá una salida de 1. Por ejemplo, las entradas para la compuerta OR 9 serán B0 que proviene de la compuerta AND 2 (debido a la falla) y B0 que proviene de la compuerta AND 1 (debido a que SUMA 1). En consecuencia, la compuerta OR 9 producirá una salida de B0 B0, que siempre será un 1 lógico. El sumador sumará el 111 que proviene de las compuertas OR con [A] para producir una suma que será 1 menos que [A]. ¿Por qué? Porque 11112 110. Modo 3: SUMA 0, RESTA 1. Este modo funcionará de manera correcta, ya que se supone que RESTA 1 habilita de todas formas las compuertas AND 2, 4, 6 y 8. 6-18 USO DE LAS FUNCIONES DE LA BIBLIOTECA TTL CON ALTERA Los CIs sumador y ALU que vimos en este capítulo son sólo unos cuantos de los chips MSI que han servido como bloques fundamentales de los sistemas digitales durante décadas. Siempre que una tecnología tiene un tiempo de vida tan largo y útil, deja un impacto duradero en el campo y en las personas que la utilizan. Es evidente que los circuitos integrados TTL caen en esta categoría y continúan en varias formas hoy en día. Los ingenieros y técnicos experimentados están familiarizados con las piezas estándar. Los diseños existentes pueden refabricarse y actualizarse utilizando los mismos circuitos básicos si pueden implementarse en un PLD de VLSI. Las hojas técnicas para estos dispositivos ya están disponibles y el estudiar estas viejas piezas TTL es una excelente manera de aprender los fundamentos de cualquier sistema digital. Por todas esas razones, el sistema de desarrollo de Altera ofrece lo que ellos denominan como macrofunciones al estilo antiguo. Una macrofunción es una des- cripción autocontenida de un circuito lógico con todas sus entradas, salidas y carac- terísticas operacionales definidas. En otras palabras, se han tomado la molestia de escribir el código necesario para hacer que un PLD emule la operación de muchos dispositivos MSI TTL convencionales. Todo lo que el diseñador necesita saber es cómo conectarlo al resto del sistema. En esta sección nos extenderemos en los con- ceptos de las primitivas lógicas y las bibliotecas que presentamos en el capítulo 5, para ver cómo podemos usar piezas MSI estándar en nuestros diseños. La unidad aritmética lógica (ALU) 74382 es un CI bastante sofisticado. La tarea de describir su operación mediante el uso de código de HDL es un buen reto, pero ciertamente está dentro de nuestro alcance. Consulte de nuevo los ejemplos de este CI y su operación, que cubrimos en la sección 6-16. Específicamente analice la figura 6-16, que muestra cómo conectar en cascada dos chips ALU de cuatro bits para for- mar una ALU de ocho bits que podría servir como el corazón de la unidad central de procesamiento (CPU) de un microcontrolador. La figura 6-18 muestra el método gráfico para describir el circuito de ocho bits mediante el archivo de descripción gráfica de Altera y los bloques de macrofunciones de su biblioteca de componentes. Los símbolos para el 74382 sólo se eligen de la lista en la biblioteca de macrofuncio- nes y se colocan en la pantalla. El proceso de conectar con alambres estos chips es simple e intuitivo. Es posible conectar piezas MSI de la biblioteca estándar utilizando sólo HDL. Así como demostramos la conexión de primitivas de flip-flops para formar circuitos más complejos, podemos conectar CIs tales como el 74382 con otras piezas. Los nom- bres de todos los puertos de entrada y salida de estas piezas estándar se definen en SECCIÓN 6-18/USO DE LAS FUNCIONES DE LA BIBLIOTECA TTL CON ALTERA 337
  • 367. 338 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS Modo 0 CIN OVR Z2 ALU 74382 Bent 7 Bent 6 Bent 5 Bent 4 Aent 7 Aent 6 Aent 5 Aent 4 acarreo_sal desborde sumsal 7 sumsal 6 sumsal 5 sumsal 4 Aent 3 Aent 2 Aent 1 Aent 0 sumsal 3 sumsal 2 sumsal 1 sumsal 0 acarreo_ent Modo 1 Modo 2 Bent 3 Bent 2 Bent 1 Bent 0 2 S S 1 S0 A3 B3 A2 B2 A1 B1 A0 B0 CN4 F3 F2 F1 F0 CIN OVR Z1 ALU 74382 S2 S1 S0 A3 B3 A2 B2 A1 B1 A0 B0 CN4 F3 F2 F1 F0 FIGURA 6-18 Un archivo de descripción gráfica de Altera para una ALU de ocho bits. PREGUNTAS DE REPASO un prototipo de función, el cual podemos encontrar en el menú de ayuda. El proto- tipo de función que se da para un 74382 es Prototipo de función en AHDL (el nombre de los puertos y el orden también se aplican al HDL Verilog): FUNCTION 74382 (s[2..0], a[3..0], b[3..0], cin) RETURNS (ovr, cn4, f[3..0]); 1. ¿En dónde podemos encontrar información sobre el uso de un sumador com- pleto 74283 en nuestro diseño de HDL? 2. ¿Qué es una macrofunción? 6-19 OPERACIONES LÓGICAS CON ARREGLOS DE BITS En la sección anterior examinamos el uso de las macrofunciones para construir sistemas a partir de piezas estándar. Ahora necesitamos practicar la escritura de
  • 368. EJEMPLO 6-14 EJEMPLO 6-15 código de HDL en lugar de usar una macrofunción para crear un sumador similar al de la figura 6-6. En esta sección extenderemos nuestra comprensión de las técnicas de HDL en dos áreas principales: especificar grupos de bits en un arreglo y utilizar operaciones lógicas para combinar arreglos de bits mediante el uso de expresiones booleanas. En la sección 6-12 analizamos el concepto de registro, la cual facilita mucho la descripción del contenido de los registros y las señales que consisten de varios bits. Los HDLs utilizan arreglos de bits en una notación similar para describir las señales, como vimos en el capítulo 4. Por ejemplo, en AHDL la señal de cuatro bits llamada d se define como: VARIABLE d[3..0] :NODE. En VHDL, el mismo formato de datos se expresa como: SIGNAL d :BIT VECTOR (3 DOWNTO 0). Cada bit en estos tipos de datos se designa en base a un número de elemento. En este ejemplo de un arreglo de bits llamado d, se puede hacer referencia a los bits como d3, d2, d1, d0. También se pueden agrupar bits en conjuntos. Por ejemplo, si queremos hacer referencia a los tres bits más significativos de d como un conjunto, podemos usar la expresión d[3..1] en AHDL y la expresión d (3 DOWNTO 1) en VHDL. Una vez que se asigna un valor al arreglo y que se identifica el conjunto deseado de bits, pueden realizarse operaciones lógicas sobre todo el conjunto com- pleto de bits. Dos conjuntos pueden combinarse en una expresión lógica siempre y cuando éstos sean del mismo tamaño (el mismo número de bits), de igual forma como se combinan las variables individuales en una ecuación booleana. Cada uno de los pares de bits correspondiente en los dos conjuntos se combina como se declara en la ecuación lógica. Esto permite que una ecuación describa la operación lógica que se va a realizar en cada bit de un conjunto. Suponga que D3, D2, D1, D0 tiene el valor 101 y que G3, G2, G1, G0 tiene el valor 1100. Vamos a definir Dnum [D3, D2, D1, D0] y Gnum [G3, G2, G1, G0]. Definamos tam- bién Y [Y3, Y2, Y1, Y0], en donde Y se relaciona con Dnum y Gnum de la siguiente forma: Y Dnum • Gnum; ¿Cuál es el valor de Y después de esta operación? Solución Así,Y es un conjunto de cuatro bits con el valor 1000. Para los valores de los registros descritos en el ejemplo 6-14, declare cada d, g y y. Después escriba una expresión en la que utilice su HDL favorito, que realice la ope- ración AND sobre todos los bits. D3, D2, D1, D0 1 0 1 1 G3, G2, G1, G0 1 1 0 0 Y3, Y2, Y1, Y0 1 0 0 0 ↔ ↔ ↔ ↔ ↔ ↔ ↔ ↔ Se aplica un AND a cada posición de bit SECCIÓN 6-19/OPERACIONES LÓGICAS CON ARREGLOS DE BITS 339
  • 369. 340 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS Solución 6-20 SUMADORES EN HDL En esta sección veremos cómo crear un circuito sumador en paralelo que pueda utilizarse para sumar arreglos de bits mediante la ecuación lógica para un sumador completo de un solo bit. La figura 6-19 muestra el diagrama de bloques básico con las señales etiquetadas para crear un sumador de cuatro bits. Observe que cada uno de los bits del primer sumando [A], del sumando [B], del acarreo [C] y de la suma [S] son variables tipo arreglo de bits y tienen números de índice asociados. La ecuación para la suma si se utiliza la notación de registro es: Observe que las señales de acarreo entre las etapas no son entradas o salidas de este circuito en general, sino variables intermedias. Debemos desarrollar una estrategia para etiquetar los bits de acarreo, de manera que puedan utilizarse en un arreglo. Hemos optado por dejar que cada bit de acarreo sirva como entrada para su correspondiente etapa de sumador, como se muestra en la figura 6-19. Por ejemplo, C0 es una entrada para la etapa del bit 0, C1 es la entrada de acarreo para la etapa del bit 1, y así en lo sucesivo. Los bits del arreglo de acarreos pueden considerarse como los “alambres” que conectan a los sumadores. Este arreglo debe tener un aca- rreo como entrada para cada etapa y también un acarreo como salida para la etapa del bit más significativo. En este ejemplo habrá cinco bits, etiquetados de C4 a C0, en el arreglo de acarreos. El conjunto de datos que representa las salidas de acarreo sería de C4 a C1, y el conjunto de datos que representa las entradas de acarreo sería de C3 a C0. Cent C[3..0] Csal C[4..1] Los HDLs nos permiten especificar cuáles conjuntos de bits que salgan de todo el arreglo queremos utilizar en una ecuación. Para asegurar que todas las varia- bles que se están combinando en una ecuación lógica contengan el mismo número de bits, podemos empezar con la ecuación general para el acarreo de salida de un sumador de un bit, como se muestra a continuación: Csal AB ACent BCent ENTITY and nivelbits IS PORT(d, g :IN BIT VECTOR (3 DOWNTO 0); y :OUT BIT VECTOR (3 DOWNTO 0)); END and nivelbits; ARCHITECTURE a OF and nivelbits IS BEGIN y = d AND g; END a; SUBDESIGN and nivelbits ( d[3..0], g[3..0] :INPUT; y[3..0] :OUTPUT;) BEGIN y[] = d[] g[]; END; [S] = [A] { [B] { [C];
  • 370. PRIMER SUMANDO A3 A2 A1 A0 A SUMANDO B3 B2 B1 B0 B ACARREOent C3 C2 C1 C0 Cent SUMA S3 S2 S1 S0 S PRIMER SUMANDO A3 A2 A1 A0 A SUMANDO B3 B2 B1 B0 B ACARREOent C3 C2 C1 C0 Cent ACARREOsal C4 C3 C2 C1 Csal Genera la suma S=A ⊕ [B ⊕ Cent] Genera los bits de acarreo C3 FA Bit 3 Csal B3 A3 S3 C2 FA Bit 2 B2 A2 S2 C1 FA Bit 1 B1 A1 S1 FA Bit 0 B0 A0 S0 Cent C0 C4 Csal = A•B + A•Cent + B•Cent FIGURA 6-19 Sumador en paralelo de cuatro bits. B [3 . .0] CENT S [3 . .0] CSAL 1 X A [3 . .0] B [3 . .0] Cent X X X X S [3 . .0] Csal A [3 . .0] FIGURA 6-20 Símbolo de bloque generado por MAXPLUS de Altera. Si sustituimos nuestra definición anterior de Cent y Csal, tendremos la siguiente ecuación para el acarreo de salida del sumador de cuatro bits: El símbolo gráfico para este dispositivo se muestra en la figura 6-20. Observe que no muestra el arreglo de acarreos. Es una variable o señal dentro del bloque. Altera permite que cualquier bloque SUBDESIGN en AHDL o ENTITY en VHDL (incluso los que usted cree) se represente mediante un símbolo de diagrama de blo- ques gráfico tal como éste. Todo esto forma parte del esquema de diseño jerárquico del sistema de desarrollo de Altera (descrito en el capítulo 4). Para resumir esta información, la figura 6-19 muestra el “interior” del diagrama de bloques en la figura 6-20 y sintetiza la operación descrita por las dos ecuaciones. Ahora veamos los archivos basados en texto que pueden usarse para generar un sím- bolo de bloque como el de la figura 6-20, mediante el uso de AHDL y de VHDL. C[4..1] = A[3..0] B[3..0] + A[3..0] C[3..0] + B[3..0] C[3..0] SECCIÓN 6-20/SUMADORES EN HDL 341
  • 371. 342 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS SUBDESIGN fig6_21 ( cent :INPUT; --acarreo de entrada a[3..0] :INPUT; -- primer sumando b[3..0] :INPUT; -- sumando s[3..0] :OUTPUT; -- suma csal :OUTPUT; -- acarreo de salida ) VARIABLE c[4..0] :NODE; -- el arreglo de acarreos es de 5 bits BEGIN c[0] = cent; s[ ] = a[ ] $ b[ ] $ c[3..0]; -- genera la suma c[4..1] = (a[ ] b[ ] # (a[ ] c[3..0]) # (b[ ] c[3..0]); csal = c[4]; -- carry out END; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 FIGURA 6-21 Sumador en AHDL. SUMADOR DE CUATRO BITS EN AHDL En las líneas 14 y 15 del código de AHDL de la figura 6-21, observe la sintaxis para hacer referencia a los arreglos de bits en su totalidad. Se da el nombre, seguido de [ ]. Si no se designan bits dentro de los corchetes, significa que todos los bits que se declararon se incluyen en las operaciones. Las líneas 14 y 15 describen por completo los cuatro circuitos sumadores y calculan la suma. Para poder elegir un conjunto específico de elementos del arreglo (es decir, un subconjunto del arreglo), el nombre va seguido del intervalo de números de los elementos entre corchetes. Por ejemplo, la ecuación de acarreo (línea 15) en sintaxis de AHDL es: Observe que sólo se están asignando cuatro bits del arreglo de acarreos c[ ], incluso aunque el arreglo sea de cinco bits. De esta forma, el acarreo que sale de cada suma- dor de bit individual se asigna como el acarreo que entra a la siguiente etapa. SUMADOR DE CUATRO BITS ENVHDL En el código de VHDL de la figura 6-22, observe la sintaxis para hacer referencia a los arreglos de bits en su totalidad. Sólo se utiliza el nombre sin designaciones de bits. Las líneas 15 y 16 describen por completo los cuatro circuitos sumadores que calcularán la suma. Para poder elegir un conjunto específico de elementos del arreglo (es decir, un subconjunto del arreglo), el nombre va seguido del intervalo de números de los elementos entre paréntesis. La ecuación del acarreo (línea 16) en sintaxis de VHDL es: Observe que sólo se están asignando cuatro bits del arreglo de acarreos c, incluso aunque el arreglo sea de cinco bits. De esta forma, el acarreo que sale de cada suma- dor de un solo bit se asigna como el acarreo que entra a la siguiente etapa. A H D L c[4..1] = a[] b[] # a[] c[3..0] # b[] c[3..0]; V H D L c(4 DOWNTO 1) = (a AND b) OR (a AND c(3 DOWNTO 0)) OR (b AND c(3 DOWNTO 0));
  • 372. FIGURA 6-22 Sumador en VHDL. 1 ENTITY fig6_22 IS 2 PORT( 3 cent :IN BIT; 4 a :IN BIT_VECTOR(3 DOWNTO 0); 5 b :IN BIT_VECTOR(3 DOWNTO 0); 6 s :OUT BIT_VECTOR (3 DOWNTO 0); 7 csal :OUT BIT); 8 END fig6_22; 9 10 ARCHITECTURE a OF fig6_22 IS 11 SIGNAL c :BIT_VECTOR (4 DOWNTO 0); -- el acarreo requiere un arreglo de 5 bits 12 13 BEGIN 14 c(0) = cent; -- Lee el acarreo que va al arreglo de bits 15 s = a XOR b XOR c(3 DOWNTO 0); -- Genera los bits de suma 16 c(4 DOWNTO 0) = (a AND b) 17 OR (a AND c(3 DOWNTO 0)) 18 OR (b AND c(3 DOWNTO 0)); 19 csal = c(4); -- sacar el acarreo del MSB. 20 END PREGUNTAS DE REPASO 1. Si [A] 1001 y [B] 0011, ¿cuál es el valor de (a) [A] [B]? (b) ¿de [A] [B]? (Observe que significa AND; significa OR.) 2. Si A[7..0] 1010 1100, ¿cuál es el valor de (a) A[7..4]? ¿de (b) A[5..2]? 3. En AHDL se declara el siguiente objeto: conmuta[7..0]:INPUT. Proporcione una expresión para los cuatro bits menos significativos, utilizando sintaxis de AHDL. 4. EnVHDL se declara el siguiente objeto: conmuta :IN BIT_VECTOR (7 DOWNTO 0). Proporcione una expresión para los cuatro bits menos significativos, utilizando sintaxis de VHDL. 5. ¿Cuál sería el resultado de aplicar la operación OR a los dos registros del ejem- plo 6-14? 6. Escriba una instrucción en HDL que aplique una operación OR a los dos objetos d y g. Utilice su HDL favorito. 7. Escriba una instrucción en HDL que aplique una operación XOR a los dos bits más significativos de d, con los dos bits menos significativos de g y que coloque el resultado en los dos bits medios de x. 6-21 EXPANSIÓN DE LA CAPACIDAD DE BITS DE UN CIRCUITO Una de las formas en que hemos aprendido a aumentar la capacidad de un circuito es conectar en cascada las etapas, como lo hicimos con el chip ALU 74382 en la sec- ción anterior. Podemos hacer esto mediante el método del archivo de diseño gráfico de Altera (como en la figura 6-18) o mediante el método del HDL estructural basado en texto. Con cualquiera de estos métodos necesitamos especificar todas las entra- das, salidas e interconexiones entre los bloques. En el caso de este circuito sumador SECCIÓN 6-21/EXPANSIÓN DE LA CAPACIDAD DE BITS DE UN CIRCUITO 343
  • 373. 344 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS 1 CONSTANT numero_de_bits = 8; -- establece el número total de bits 2 CONSTANT n = numero_de_bits – 1; -- n es el índice de bit más alto 3 4 SUBDESIGN fig6_23 5 ( 6 suma :INPUT; -- control de suma 7 resta :INPUT; -- control de resta y acarreo entrante LSB 8 a[n..0] :INPUT; -- bits del primer sumando 9 bent[n..0] :INPUT; -- bits del sumando 10 s[n..0] :OUTPUT; -- bits de suma 11 acarrsal :OUTPUT; -- acarreo de SALIDA del MSB 12 ) 13 VARIABLE 14 c[n+1..0] :NODE; -- vector de acarreo intermedio 15 b[n..0] :NODE; -- vector de operando intermedio 16 BEGIN 17 b[ ] = bent[ ] suma # NOT bent[ ] resta; 18 c[0] = resta; -- Lee acarreo y lo guarda en variable de grupo 19 s[ ] = a[ ] $ b[ ] $ c[n..0]; -- Genera las sumas 20 c[n+1..1] = a[ ] b[ ] # a[ ] c[n..0] # (b[ ] c[n..0]); 21 acarrsal = c[n+1]; -- saca el acarreo del MSB. 22 END; FIGURA 6-23 Descripción de un sumador/restador de n bits en AHDL. sería más sencillo empezar con el archivo HDL para un sumador de cuatro bits y sólo incrementar el tamaño de cada una de las variables de los operandos en la ecuación. Por ejemplo, si quisiéramos un sumador de ocho bits sólo tendríamos que expandir a, b y s a ocho bits. El código quedaría casi igual al del sumador de cuatro bits antes mostrado. Esto es sólo un vistazo de algunas de las mejoras en eficiencia que ofrece el HDL. No obstante, la forma en que está escrito el código, los índices de cada señal y cada una de las especificaciones de los arreglos de bits en la ecuación tendrían que redefinirse también. En otras palabras, el diseñador tendría que examinar el código con cuidado y cambiar todos los 3s por 7s, todos los 4s por 8s, y así en lo sucesivo. Uno de los principios importantes en la ingeniería de software es la represen- tación simbólica de las constantes que se utilizan en el código. Las constantes son sólo números fijos representados por un nombre (símbolo). Si podemos definir un símbolo (es decir, idear un nombre) en la parte superior del código fuente que se asigne al valor para el número total de bits, y después utilizar este símbolo (nombre) en el código, es mucho más sencillo modificar el circuito. Sólo hay que cambiar una línea de código para expandir la capacidad del circuito. Los ejemplos que se mues- tran a continuación agregan esta característica al código y también lo actualizan para implementar el circuito sumador/restador como el de la figura 6-14. Hay que recalcar que al expandir la capacidad de un circuito sumador tal como éste también reducirá la velocidad del circuito, debido a la propagación del acarreo (que descri- bimos en la sección 6-13). Para poder mantener estos ejemplos simples, no hemos agregado ningún tipo de lógica para generar un acarreo adelantado. SUMADOR/RESTADOR EN AHDL En AHDL es muy fácil usar constantes, como se muestra en las líneas 1 y 2 de la figura 6-23. La palabra clave CONSTANT va seguida del nombre simbólico y del A H D L
  • 374. valor que se le va a asignar. Observe que podemos permitir que el compilador rea- lice algunos cálculos matemáticos simples para establecer un valor para una cons- tante con base en otra. También podemos usar esta característica al referirnos a la constante en el código, como se muestra en las líneas 14, 20 y 21. Por ejemplo, podemos hacer referencia a c[7] como c[n] y a c[8] como c[n1]. Para expandir el tamaño de este sumador/restador sólo hay que cambiar el valor de numero_de_bits por el número de bits deseado y después volver a compilar el programa. Como mencionamos antes, actualizamos este código del ejemplo anterior para convertirlo en un sumador/restador como el de la figura 6-14. También hemos incluido las entradas suma y resta en las líneas 6 y 7, y una nueva variable interme- dia llamada b[ ] en la línea 15. La primera instrucción concurrente en la línea 17 describe toda la lógica SOP que controla las entradas b para el sumador en la figura 6-14. Primero describe una operación AND lógica entre cada bit de bent[ ] y el nivel lógico en suma. A este resultado se le aplica un OR (bit por bit) con el resultado de aplicar un AND al complemento de cada bit de bent[ ] con resta. En otras palabras, crea la siguiente función booleana para cada bit: b bent suma bent resta. La señal b[ ] se utiliza entonces en las ecuaciones del sumador en vez de bent[ ], como en los ejemplos anteriores. Observe en la línea 18 que también se usa resta para conectar el LSB del arreglo de acarreos (acarreo hacia el bit 0) con el valor en resta, que necesita ser 0 cuando se suma y 1 cuando se resta. SUMADOR/RESTADOR ENVHDL EnVHDL, utilizar constantes es algo un poco más complicado. Las constantes deben incluirse en un paquete dentro del bloque PACKAGE, como se muestra en la figura 6-24, líneas 1 a 4. Los paquetes también se utilizan para contener definiciones de componentes y demás información que debe estar disponible para todas las entida- des en el archivo de diseño. Observe en la línea 6 que la palabra clave USE indica al compilador que debe usar las definiciones en este paquete para todo el archivo de diseño. Dentro del paquete, la palabra clave CONSTANT va seguida del nombre sim- bólico, su tipo y el valor que se le va a signar por medio del operador :. Observe en la línea 3 que podemos permitir que el compilador realice algunos cálculos matemá- ticos simples para establecer un valor de una constante con base en otra. También podemos usar esta característica al referirnos a las constantes en el código, como se muestra en las líneas 34 y 37. Por ejemplo, podemos referirnos a c(7) como c(n) y a c(8) como c(n1). Para expandir el tamaño de este sumador/restador sólo necesi- tamos cambiar el valor de numero_de_bits por el número de bits deseado y después volvemos a compilar el programa. Como mencionamos antes, hemos actualizado el código del ejemplo anterior para convertirlo en un sumador/restador como el de la figura 6-14. Se han incluido las entradas suma y resta en las líneas 10 y 11, junto con una nueva señal llamada b en la línea 20, bnot en la línea 21 y modo en la línea 22. La primera instrucción concurrente en la línea 24 sirve para crear el complemento a 1 de bent. Los circuitos SOP en la figura 6-14 que controlan las entradas b para el sumador seleccionan las entradas bent si suma 1, o el complemento a 1 (bnot) si resta 1. Ésta es una exce- lente aplicación de la asignación de señal selecta de VHDL, como se muestra en las líneas 27 a 30. Cuando suma es 1, bent se canaliza hacia b. Cuando resta es 1, bnot se canaliza a b. La señal b se utiliza entonces en las ecuaciones de los sumadores en vez de bent, como vimos en los ejemplos anteriores de los sumadores. Observe en la línea 32 que también se utiliza resta para conectar el LSB del arreglo de acarreos (el acarreo hacia el bit 0) con el valor en resta, el cual necesita ser 0 cuando se suma y 1 cuando se resta. V H D L SECCIÓN 6-21/EXPANSIÓN DE LA CAPACIDAD DE BITS DE UN CIRCUITO 345
  • 375. 346 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS 1 PACKAGE const IS 2 CONSTANT numero_de_bits :INTEGER:=8; -- establece el número total de bits 3 CONSTANT n :INTEGET:= numero_de_bits – 1; -- número de índice del MSB 4 END const; 5 6 USE work.const.all; 7 8 ENTITY fig6_24 IS 9 PORT( 10 suma :IN BIT; -- control de suma 11 resta :IN BIT; -- control de resta y acarreo del LSB 12 a :IN BIT_VECTOR(n DOWNTO 0); 13 bent :IN BIT_VECTOR(n DOWNTO 0); 14 s :OUT BIT_VECTOR(n DOWNTO 0); 15 acarrsal :OUT BIT); 16 END fig6_24; 17 18 ARCHITECTURE a OF fig6_24 IS 19 SIGNAL c :BIT_VECTOR (n+1 DOWNTO 0); -- define acarreos intermedios 20 SIGNAL b :BIT_VECTOR (n DOWNTO 0); -- define operando intermedio 21 SIGNAL bnot :BIT_VECTOR (n DOWNTO 0); 22 SIGNAL modo :BIT_VECTOR (1 DOWNTO 0); 23 BEGIN 24 bnot = NOT bent; 25 modo = suma resta; 26 27 WITH modo SELECT 28 b = bent WHEN “10”, -- suma 29 bnot WHEN “01”, -- resta 30 “0000” WHEN OTHERS; 31 32 c(0) = resta; -- lee el acarr_ent al arreglo de bits 33 s = a XOR b XOR x(n DOWNO 0); -- genera los bits de suma 34 c(n+1 DOWNTO 1) = (a AND b) OR 35 (a AND c(n DOWNTO 0)) OR 36 (b AND c(n DOWNTO 0)); -- genera acarreos 37 acarrsal = c(n+1); -- saca el acarreo del MSB. 38 39 END a; FIGURA 6-24 Descripción de un sumador/restador de n bits en VHDL. Instrucción GENERATE de VHDL Otra manera de crear circuitos que procesen más bits es mediante la instrucción GENERATE deVHDL. Es una forma muy concisa de indicar al compilador que debe replicar varios componentes que se conectarán en cascada. Como hemos mostrado, existen muchas otras formas de lograr lo mismo y si la naturaleza abstracta de este método le parece difícil, puede usar otro método. Aquí ofrecemos la instrucción GENERATE por cuestión de cubrir todos los métodos. Los circuitos sumadores que hemos estado viendo son cadenas en cascada de módulos de sumadores completos de un solo bit. El código de VHDL para un módulo de sumador completo de un solo bit se muestra en la figura 6-25. Se deben conectar múltiples instancias de este
  • 376. 1 ENTITY suma1 IS 2 PORT ( 3 cent :IN BIT; 4 a :IN BIT; 5 b :IN BIT; 6 s :OUT BIT; 7 csal :OUT BIT; 8 END suma1; 9 10 ARCHITECTURE a OF suma1 IS 11 BEGIN 12 13 s = a XOR b XOR cent; 14 csal = (a AND b) OR (a AND cent) OR (b AND cent); 15 END a; FIGURA 6-25 Sumador completo de un solo bit en VHDL. módulo entre sí para formar un circuito sumador de n bits. Desde luego que pode- mos hacerlo mediante el uso de las mismas técnicas de componentes que vimos antes, pero obtendríamos un código muy extenso. Para que el código sea más conciso y fácil de modificar se necesita una estrate- gia para la forma en que se van a etiquetar las entradas y salidas para cada módulo. Como mencionamos antes, el sumador del bit 0 tiene entradas con un índice de 0 (por ejemplo, a0, b0, c0, s0). El acarreo que sale del bit 0 está etiquetado como c1 y se convierte en la entrada de acarreo para el módulo del sumador del bit 1. Cada vez que instanciamos otro componente para el siguiente bit del sumador multibits, el número de índice de todas las conexiones avanza en 1 (a1, b1, c1, s1). La instrucción GENERATE nos permite repetir un instanciamiento de un componente n veces, pues se incrementa el número de índice en 1 para cada instanciamiento hasta n. En la línea 27 de la figura 6-26 se utiliza la palabra clave GENERATE en un ciclo itera- tivo (ciclo FOR), lo cual significa que un conjunto de acciones descriptivas (PORT MAP) se repetirá cierto número de veces. La variable i representa un número de índice que empieza en 0 (para la primera iteración) y termina en n (la última ite- ración). Las ventajas de este método son la compactación del código y la facilidad con la que se puede expandir el número de bits. El código en la figura 6-26 muestra cómo usar un sumador de un solo bit (figura 6-25) como un componente para gene- rar un circuito sumador de ocho bits. Recuerde que el archivo para el sumador de un solo bit (suma1.vhd en la figura 6-25) debe guardarse en la misma carpeta que el archivo de diseño que lo utiliza, para generar múltiples instancias del sumador (fig6_26.vhd). El componente del sumador de un solo bit se define en las líneas 17 a 23 de la figura 6-26. Para la primera iteración de las líneas 29 y 30 el valor de i es 0, con lo cual se crea una etapa de sumador para el bit 0. La segunda iteración i se incre- menta a 1 para formar la etapa de sumador 1. Esto continúa hasta que i sea igual a n, con lo que se genera cada una de las etapas del sumador de (n 1) bits. Observe que VHDL nos permite la opción de colocar etiquetas al principio de una línea de código para ayudarnos a describir su propósito. Por ejemplo, en la línea 27 se utiliza la etiqueta repetir y en la línea 29 se utiliza la etiqueta casc. Las etiquetas son opcio- nales pero siempre deben terminar con el signo de dos puntos. Bibliotecas de módulos parametrizados Es evidente que el uso de las técnicas de HDL facilita la modificación de la capaci- dad de bits de un circuito genérico. En este capítulo podemos ver que es fácil cam- biar de un sumador de cuatro bits a un sumador de ocho, 12 o 16 bits. Cuando Altera SECCIÓN 6-21/EXPANSIÓN DE LA CAPACIDAD DE BITS DE UN CIRCUITO 347
  • 377. 348 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS FIGURA 6-26 Uso de la instrucción GENERATE de VHDL. 1 PACKAGE const IS 2 CONSTANT numero_de_bits :INTEGER:=8; -- especifica el número de bits 3 CONSTANT n :INTEGER:=numero_de_bits – 1; -- n es el número del bit MSB 4 END const; 5 USE work.const.all; 6 ENTITY fig6_26 IS 7 PORT( 8 acarrent :IN bit; 9 aent :IN BIT_VECTOR (n DOWNTO 0); 10 bent :IN BIT_VECTOR (n DOWNTO 0); 11 ssal :OUT BIT_VECTOR (n DOWNTO 0); 12 acarrsal :OUT bit); 13 END fig6_26; 14 15 ARCHITECTURE a OF fig6_26 IS 16 17 COMPONENT suma1 -- declara un sumador complete de un solo bit 18 PORT ( 19 cin :IN BIT; 20 a, b :IN BIT; 21 s :OUT BIT; 22 csal :OUT BIT); 23 END COMPONENT; 24 SIGNAL c :BIT_VECTOR (n+1 DOWNTO 0); -- declara arreglo de bits para acarreos 25 BEGIN 26 c(0) = acarrent; -- coloca el LSB en el arreglo (acarreo de entrada) 27 repetir:FOR i IN 0 TO n GENERATE -- instancia n+1 sumadores 28 -- los conecta en cascada 29 casc:suma1 PORT MAP (cent = c(i), a= aent(i), b = bent(i), 30 s = ssal(i), csal = c(i+1)); 31 END GENERATE; 32 acarrsal = c(n+1); -- saca el acarreo de la etapa del n-esimo bit 33 END a; creó su biblioteca de funciones útiles, también aprovechó estas técnicas y creó lo que se conoce como megafunciones, que incluyen una biblioteca de módulos para- metrizados (LPMs). Estas funciones no tratan de imitar un CI estándar específico como las macrofunciones al estilo antiguo, sino que ofrecen una solución genérica para los diversos tipos de circuitos lógicos que son útiles en los sistemas digitales. Algunos ejemplos de estos circuitos genéricos que hemos visto hasta ahora son las compuertas lógicas (AND, OR, XOR), los latches, los contadores, los registros de desplazamiento y los sumadores. El término parametrizados significa que cuando se instancia una función de la biblioteca, también se especifican ciertos parámetros para definir ciertos atributos (por ejemplo, la capacidad de bits) para el circuito que se está describiendo. Puede consultar los diversos LPMs que hay disponibles a través del menú HELP (AYUDA) bajo megafunctions/LPM (megafunciones/LPM). Esta documentación describe los parámetros que puede especificar el usuario, así como las características de los puertos del dispositivo.
  • 378. PREGUNTAS DE REPASO 1. ¿Qué palabra clave se utiliza para asignar un nombre simbólico a un número fijo? 2. ¿En dónde se definen las constantes en AHDL? ¿En dónde se definen en VHDL? 3. ¿Por qué son útiles las constantes? 4. Si la constante val_max tiene un valor de 127, ¿cómo interpretará un compilador la expresión val_max -5? 5. ¿Para qué se utiliza la instrucción GENERATE en VHDL? RESUMEN 1. Para representar números con signo en binario se adjunta un bit de signo como el MSB. Un signo es un 0 y un signo es un 1. 2. Para obtener el complemento a 2 de un número binario se complementa cada bit y después se suma 1 al resultado. 3. En el método de complemento a 2 para representar números binarios con signo, los números positivos se representan mediante un bit de signo de 0, seguido de la magnitud en su forma binaria natural. Los números negativos se representan mediante un bit de signo de 1, seguido de la magnitud en forma de comple- mento a 2. 4. Para cambiar el signo a un número binario con signo, se obtiene el complemento a 2 del número, incluyendo el bit de signo. 5. Para restar números binarios con signo se cambia el signo al el sustraendo (com- plementando a 2) y se suma al minuendo. 6. En la suma BCD se necesita un paso de corrección especial cada vez que la suma de la posición de un dígito excede de 9 (1001). 7. Cuando se representan números binarios con signo en hexadecimal, el MSD del número hexadecimal será 8 o mayor cuando el número sea negativo; será 7 o menor cuando el número sea positivo. 8. La unidad aritmética/lógica (ALU) de una computadora contiene los circuitos necesarios para realizar operaciones aritméticas y lógicas sobre números bina- rios almacenados en la memoria. 9. El acumulador es un registro en la ALU. Almacena uno de los números sobre los que se opera y también es el lugar en donde se almacena el resultado de la operación en la ALU. 10. Un sumador completo realiza la suma de dos bits más una entrada de acarreo. Un sumador binario en paralelo está formado por sumadores completos conec- tados en cascada. 11. El problema de los retrasos excesivos producidos por la propagación del acarreo puede reducirse mediante un circuito lógico de acarreo adelantado. 12. Los sumadores de CI tales como el 74LS83/HC83 y el 74LS283/HC283 pueden utilizarse para construir sumadores y restadores en paralelo de alta velocidad. 13. Un circuito sumador de BCD requiere circuitos de corrección especiales. 14. Hay ALUs de circuito integrado disponibles, las cuales pueden combinarse para realizar una amplia gama de operaciones aritméticas y lógicas sobre dos núme- ros de entrada. 15. Hay funciones prefabricadas disponibles en las bibliotecas de Altera. 16. Estas piezas de biblioteca y los circuitos de HDL que usted cree pueden interco- nectarse mediante las técnicas de HDL gráfica o estructural. RESUMEN 349
  • 379. 350 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS 17. Pueden realizarse operaciones lógicas sobre todos los bits en un conjunto mediante el uso de ecuaciones booleanas. 18. El hábito de practicar buenas técnicas de ingeniería de software, en específico el uso de símbolos para representar constantes, nos permite modificar y expan- dir con facilidad el código en cuanto a la capacidad de bits de circuitos tales como los sumadores completos. 19. Las bibliotecas de módulos parametrizados (LPMs) ofrecen una solución flexi- ble y que puede modificarse o expandirse con facilidad para muchos tipos de circuitos digitales. TÉRMINOS IMPORTANTES acarreo acarreo adelantado biblioteca de funciones parametrizadas (LPMs) bit de signo ciclo FOR ciclo iterativo conjuntos constantes desbordamiento GENERATE macrofunción megafunciones minuendo negación PACKAGE primer sumando propagación de acarreo prototipo de función registro acumulador sistema de complemento a 2 sistema de signo-magnitud sumador completo (FA) sumador/restador sumando sustraendo unidad aritmética/lógica (ALU) PROBLEMAS SECCIÓN 6-1 6-1. Sume lo siguiente en binario. Compruebe sus resultados realizando la suma en decimal. (a)* 1010 1011 (d) 0.1011 0.1111 (b)* 1111 0011 (e) 10011011 10011101 (c)* 1011.1101 11.1 (f) 1010.01 10.111 SECCIÓN 6-2 6-2. Represente cada uno de los siguientes números decimales con signo en el sistema de complemento a 2. Use un total de ocho bits, incluyendo el bit de signo. (a)* 32 (e)* 127 (i) 1 (m) 84 (b)* 14 (f)* 127 (j) 128 (n) 3 (c)* 63 (g)* 89 (k) 169 (o) 3 (d)* 104 (h)* 55 (l) 0 (p) 190 6-3. Cada uno de los siguientes números representa un número decimal con signo en el sistema de complemento a 2. Determine el valor decimal en cada caso. (Sugerencia: use la negación para convertir los números negativos en positivos.) (a)* 01101 (f) 10000000 (b)* 11101 (g) 11111111 (c)* 01111011 (h) 10000001 (d)* 10011001 (i) 01100011 (e)* 01111111 (j) 11011001 * Encontrará las respuestas a los problemas marcados con asterisco al final del libro. B B B
  • 380. 6-4. (a) ¿Cuál es el intervalo de valores decimales con signo que puede repre- sentarse utilizando 12 bits, incluyendo el bit de signo? (b) ¿Cuántos bits se requieren para representar números decimales desde 32,768 hasta 32,767? 6-5.* Liste en orden todos los números con signo que puedan representarse en cinco bits, usando el sistema de complemento a 2. 6-6. Represente cada uno de los siguientes valores decimales como un valor binario con signo de ocho bits. Después niegue cada uno de ellos. (a)* 73 (b) *12 (c) 15 (d) 1 (e) 128 (f) 127 6-7. (a)* ¿Cuál es el intervalo de valores decimales sin signo que puede repre- sentarse en 10 bits? ¿Cuál es el intervalo de valores decimales con signo si utilizamos el mismo número de bits? (b) Repita ambos problemas usando ocho bits. SECCIONES 6-3 Y 6-4 6-8. La razón por la que el método de signo-magnitud para representar números con signo no se utiliza en la mayoría de las computadoras puede ilustrarse mediante lo siguiente: (a) Represente 12 en ocho bits, utilizando la forma de signo-magnitud. (b) Represente 12 en ocho bits, utilizando la forma de signo-magnitud. (c) Sume los dos números binarios y observe que la suma no se parece en nada a cero. 6-9. Realice las siguientes operaciones en el sistema de complemento a 2. Use ocho bits (incluyendo el bit de signo) para cada número. Compruebe sus resultados convirtiendo el resultado binario de vuelta en decimal. (a)* Sume 9 y 6. (f) Reste 21 de 13. (b)* Sume 14 y 17. (g) Reste 47 de 47. (c)* Sume 19 y 24. (h) Reste 36 de 15. (d)* Sume 48 de 80. (i) Sume 17 y 17. (e)* Reste 16 de 17. (j) Reste 17 de 17. 6-10. Repita el problema 6-9 para los siguientes casos y demuestre que hay des- bordamiento en cada uno de ellos. (a) Sume 37 y 95. (c) Sume 37 y 95. (b) Reste 37 de 95. (d) Reste 37 de 95. SECCIONES 6-5 Y 6-6 6-11. Multiplique los siguientes pares de números binarios y compruebe sus resul- tados realizando la multiplicación en decimal. (a)* 111 101 (c) 101.101 110.010 (b)* 1011 1011 (d) .1101 .1011 6-12. Realice las siguientes divisiones. Compruebe sus resultados realizando la división en decimal. (a)* 1100 100 (c) 10111 100 (b)* 111111 1001 (d) 10110.1101 1.1 PROBLEMAS 351 B B
  • 381. 352 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS FIGURA 6-27 Problema 6-20. A B HA ACARREO ENTRADA HA SUMA ACARREO SUMA ACARREO ACARREO SALIDA Sumador completo SECCIONES 6-7 Y 6-8 6-13. Sume los siguientes números decimales después de convertir cada uno de ellos en su código BCD. (a)* 74 23 (d) 385 118 (b)* 58 37 (e) 998003 (c)* 147 380 (f) 623 599 6-14. Encuentre la suma de cada uno de los siguientes pares de números hexade- cimales. (a)* 3E91 2F93 (d) 2FFE 0002 (b)* 91B 6F2 (e) FFF 0FF (c)* ABC DEF (f) D191 AAAB 6-15. Realice las siguientes restas con los pares de números hexadecimales: (a)* 3E91 – 2F93 (d) 0200 – 0003 (b)* 91B – 6F2 (e) F000 – EFFF (c)* 0300 – 005A (f) 2F00 – 4000 6-16. El manual del propietario para una pequeña microcomputadora establece que la computadora cuenta con ubicaciones de memoria utilizables en las siguientes direcciones hexadecimales: 0200 a 03FF y 4000 a 7FD0. ¿Cuál es el número total de ubicaciones de memoria disponibles? 6-17. (a)* Cierta ubicación de memoria de ocho bits almacena los datos hexade- cimales 77. Si éste representa a un número sin signo, ¿cuál es su valor decimal? (b)* Si éste representa a un número con signo, ¿cuál es su valor decimal? (c) Repita los incisos (a) y (b) si el valor de los datos es E5. SECCIÓN 6-11 6-18. Convierta todas las compuertas en el circuito FA de la figura 6-8 a compuer- tas NAND. 6-19.* Escriba la tabla de funciones para un medio sumador (entradas A y B; sali- das SUMA y ACARREO). A partir de la tabla de funciones, diseñe un cir- cuito lógico que actúe como medio sumador. 6-20. Un sumador completo puede implementarse en muchas formas distintas. La figura 6-27 muestra cómo puede construirse uno a partir de dos medios sumadores. Construya una tabla de funciones para este arreglo y verifique que opere como un FA. B B B
  • 382. SECCIÓN 6-12 6-21.* Consulte la figura 6-10. Determine el contenido del registro A después de la siguiente secuencia de operaciones: [A] 0000, [0100] → [B], [S] → [A], [1011] → [B], [S] → [A]. 6-22. Consulte la figura 6-10. Suponga que cada FF tiene tPLH tPHL 30 ns y un tiempo de estabilización de 10 ns, y que cada FA tiene un retraso de propagación de 40 ns. ¿Cuál es el mínimo tiempo permitido entre la PGT del pulso CARGAR y la PGT del pulso TRANSFERIR para una operación apropiada? 6-23. En los circuitos del sumador y del restador que vimos en este capítulo, no consideramos la posibilidad de desbordamiento. El desbordamiento ocure cuando los dos números que se van a sumar o a restar producen un resul- tado que contiene más bits que la capacidad del acumulador. Por ejemplo, si se utilizan registros de cuatro bits (incluyendo un bit de signo) se pueden almacenar números que varíen desde 7 hasta 8 (en complemento a 2). Por lo tanto, si el resultado de una suma o resta se excede de 7 o de 8, se produce un desbordamiento. Cuando esto ocurre los resultados son inútiles, ya que no pueden almacenarse en forma correcta en el registro acumulador. Para ilustrar esto, sume 5 (0101) y 4 (0100), que nos da el resultado de 1001. Este 1001 se interpretaría en forma incorrecta como un número nega- tivo, ya que hay un 1 en la posición del bit de signo. En las computadoras y calculadoras, por lo general, hay circuitos que se utilizan para detectar una condición de desbordamiento. Hay varias for- mas de hacer esto. Uno de los métodos que pueden utilizarse para el suma- dor que opera en el sistema de complemento a 2 funciona de la siguiente manera: 1. Se examinan los bits de signo de los dos números que se van a sumar. 2. Se examina el bit de signo del resultado. 3. Se produce un desbordamiento cuando los números que se van a sumar son ambos positivos y el bit de signo del resultado es 1, o cuando los números son ambos negativos y el bit de signo del resultado es 0. Para verificar este método, probemos varios ejemplos. Los lectores deberán probar los siguientes casos para aclarar sus propias dudas: (1) 5 4; (2) 4 (-6); (3) 3 2. Los casos 1 y 2 producirán un desbordamiento y el caso 3 no. De esta forma, mediante el análisis de los bits de signo podemos diseñar un circuito lógico que produzca una salida de 1 cada vez que ocurra la condición de desbordamiento. Diseñe este circuito de desbordamiento para el sumador de la figura 6-10. 6-24. Agregue los circuitos lógicos necesarios a la figura 6-10 para dar cabida a la transferencia de datos desde memoria hacia el registro A. Los valores de datos de la memoria deben entrar al registro A por medio de sus entradas D en la PGT del primer pulso en TRANSFERIR; los datos de las salidas de suma de los FAs se cargarán en A cuando ocurra la PGT del segundo pulso en TRANSFERIR. En otras palabras, se requiere un pulso en CARGAR seguido de dos pulsos en TRANSFERIR para realizar la secuencia completa de car- gar el registro B desde memoria, cargar el registro A desde memoria y des- pués transferir su suma hacia el registro A. (Sugerencia: utilice un flip-flop X para controlar cuál origen de datos se debe cargar en las entradas D del acumulador.) SECCIÓN 6-13    6-25.* Diseñe un circuito de acarreo adelantado para el sumador de la figura 6-10, que genere el acarreo C3 que se va a alimentar al FA de la posición del MSB, con base en los valores de A0, B0, C0, A1, B1, A2 y B2. En otras pala- bras, derive una expresión para C3 en términos de A0, B0, C0, A1, B1, A2 y B2. (Sugerencia: comience por escribir la expresión para C1 en términos de A0, PROBLEMAS 353 D A, D A, D
  • 383. 354 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS B0 y C0. Después escriba la expresión para C2 en términos de A1, B1 y C1. Sustituya la expresión para C1 en la expresión para C2. Después escriba la expresión para C3 en términos de A2, B2 y C2. Sustituya la expresión para C2 en la expresión para C3. Simplifique la expresión final para C3 y colóquela en forma de suma de productos. Implemente el circuito.) SECCIÓN 6-14 6-26. Muestre los niveles lógicos en cada entrada y salida de la figura 6-11(a) al sumar 3548 con 1038. SECCIÓN 6-15 6-27. Para el circuito de la figura 6-14, determine las salidas de suma para los siguientes casos: (a)* Registro A 0101 (5), registro B 1110 (2); RESTA 1, SUMA 0 (b) Registro A 1100 (4), registro B 1110 (2); RESTA 0, SUMA 1 (c) Repita (b) con SUMA RESTA 0. 6-28. Para el circuito de la figura 6-14, determine las salidas de suma para los siguientes casos: (a) Registro A 1101 (3), registro B 0011 (3), RESTA 1, SUMA 0. (b) Registro A 1100 (4), registro B 0010 (2), RESTA 0, SUMA 1. (c) Registro A 1011 (5), registro B 0100 (4), RESTA 1, SUMA 0. 6-29. Para cada uno de los cálculos del problema 6-27, determine si se ha produ- cido un desbordamiento. 6-30. Para cada uno de los cálculos del problema 6-28, determine si se ha produ- cido un desbordamiento. 6-31. Muestre cómo pueden implementarse las compuertas de la figura 6-14 utili- zando tres chips 74HC00. 6-32.* Modifique el circuito de la figura 6-14, de manera que se utilice una sola entrada de control X en vez de SUMA y RESTA. El circuito deberá funcio- nar como un sumador cuando X 0 y como restador cuando X 1. Después simplifique cada conjunto de compuertas. (Sugerencia: observe cómo fun- ciona cada conjunto de compuertas como un inversor controlado.) SECCIÓN 6-16 6-33. Determine las salidas F, CN4 y OVR para cada uno de los siguientes conjun- tos de entradas que se aplican a un 74LS382. (a)* [S] 011, [A] 0110, [B] 0011, CN 0 (b) [S] 001, [A] 0110, [B] 0011, CN 1 (c) [S] 010, [A] 0110, [B] 0011, CN 1 6-34. Muestre cómo puede usarse el 74HC382 para producir [F] [A]. (Sugerencia: recuerde esa propiedad especial de una compuerta XOR.) 6-35. Determine las salidas en la figura 6-16 para los siguientes conjuntos de entradas. (a)* [S] 110, [A] 10101100, [B] 00001111 (b) [S] 100, [A] 11101110, [B] 00110010 D D B D
  • 384. 6-36. Agregue la lógica necesaria a la figura 6-16 para producir una salida indi- vidual en ALTO cada vez que el número binario en A sea exactamente el mismo que el número binario en B. Aplique el código de entrada de selec- ción apropiado (pueden usarse tres códigos). SECCIÓN 6-17 6-37. Considere el circuito de la figura 6-10. Suponga que la salida A2 se queda atascada en BAJO. Siga la secuencia de operaciones para sumar dos núme- ros y determine los resultados que aparecerán en el registro A después del segundo pulso en TRANSFERIR para cada uno de los siguientes casos. Observe que los números se proporcionan en decimal y que el primer número es el que se carga en B mediante el primer pulso en CARGAR. (a)* 2 3 (b)* 3 7 (c) 7 3 (d) 8 3 (e) 9 3 6-38. Un técnico implementa en un tablero experimental el sumador/restador de la figura 6-14. Durante la prueba descubre que cada vez que se realiza una suma, el resultado es 1 más de lo que se espera y cuando se realiza una resta, el resultado es 1 menos más de lo esperado. ¿Cuál es el probable error que cometió el técnico al conectar este circuito? 6-39.* Describa los síntomas que se producirían en los siguientes puntos en el cir- cuito de la figura 6-14, si las líneas SUMA y RESTA se pusieran en corto. (a) Las entradas B[3..0] del CI 74LS283 (b) La entrada C0 del CI 74LS283 (c) Las salidas SUMA ( ) [3..0] (d) C4 SECCIÓN 6-19 Los problemas del 6-40 al 6-45 tratan con los mismos dos arreglos a y b, los cuales supondremos que se han definido en un archivo fuente de HDL y que tienen los siguientes valores: [a] [1001011], [b] [001010]. El arreglo de salida [z] también es un arreglo de ocho bits. Resuelva los problemas del 6-40 al 6-45 con base en esta información. (Suponga que los bits indefinidos en z son 0.) 6-40. Declare estos objetos de datos utilizando su sintaxis favorita de HDL. 6-41. Proporcione el valor de z para cada expresión (se proporcionan expresiones idénticas para AHDL y VHDL): (a)* z[ ] a[ ] b[ ]; z a AND b; (b)* z[ ] a[ ] # b[ ]; z a OR b; (c) z[ ] a[ ] $ !b[ ]; z a XOR NOT b; (d) z[7..4] a[3..0] b[3..0]; z(7 DOWNTO 4) a(3 DOWNTO 0) AND b(3 DOWNTO 0); (e) z[7..1] a[6..0]; z[0] GND; z(7 DOWNTO 1) a(6 DOWNTO 0); z(0) ‘0’; 6-42. ¿Cuál es el valor de cada una de las siguientes variables? (a) a[3..0] a(3 DOWNTO 0) (b) b[0] b(0) (c) a[7] b(7) PROBLEMAS 355 A, D F F F B, H B, H
  • 385. 356 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS 6-43. ¿Cuál es el valor de cada una de las siguientes variables? (a)* a[5] a(5) (b)* b[2] b(2) (c)* b[7..1] b(7 DOWNTO 1) 6-44.* Escriba una o más instrucciones en HDL que desplace todos los bits en [a], una posición a la derecha. EL LSB deberá moverse a la posición del MSB. Los datos que se roten deberán terminar en z[ ]. 6-45. Escriba una o más instrucciones en HDL que tomen el nibble superior de b y lo coloquen en el nibble inferior de z. El nibble superior de z deberá ser cero. 6-46. Consulte el problema 6-23. Modifique el código de la figura 6-21 o de la figura 6-22 para agregar una salida de desbordamiento. 6-47.* Otra forma de detectar el desbordamiento con el complemento a 2 es apli- car un XOR al acarreo que va hacia el MSB, con el acarreo que sale del MSB en un sumador/restador. Utilice los mismos números que se dan en el pro- blema 6-23 para verificar esto. Modifique la figura 6-21 o la figura 6-22 para detectar un desbordamiento mediante este método. 6-48.* Modifique la figura 6-21 o la figura 6-22 para implementar la figura 6-10. SECCIÓN 6-20 6-49. Modifique la figura 6-21 o la figura 6-22 para convertirla en un sumador de 12 bits sin usar constantes. 6-50. Modifique la figura 6-21 o la figura 6-22 para convertirla en un módulo sumador versátil de n bits, con una constante que defina el número de bits. 6-51. Escriba un archivo de HDL para crear el equivalente de una ALU 74382 sin usar una macrofunción integrada. PREGUNTA DE PRÁCTICA 6-52. Defina cada uno de los siguientes términos. (a) Sumador completo (f) Acumulador (b) Complemento a 2 (g) Sumador en paralelo (c) Unidad aritmética/lógica (h) Acarreo adelantado (d) Bit de signo (i) Negación (e) Desbordamiento (j) Registro B APLICACIONES DE MICROCOMPUTADORA 6-53.* En una ALU de un microprocesador, por lo general (pero no siempre), los resultados de todas las operaciones aritméticas se transfieren al registro acumulador, como en las figuras 6-10, 6-14 y 6-15. En la mayoría de las ALUs de microprocesador también se utiliza el resultado de cada operación arit- mética para controlar los estados de varios flip-flops especiales conocidos como banderas. El microprocesador utiliza estas banderas cuando realiza decisiones durante la ejecución de ciertos tipos de instrucciones. Las tres banderas más comunes son: S (bandera de signo). Este FF siempre se encuentra en el mismo estado que el signo del último resultado de la ALU. Z(bandera de cero). Esta bandera se establece en 1 cada vez que el resultado de una operación de la ALU es igual a 0. En caso contrario se borra para quedar en 0. C (bandera de acarreo). Este FF siempre se encuentra en el mismo estado que el acarreo proveniente del MSB de la ALU. B, H H D, H D, H, N D, H B, H B, H D, A, H A, D
  • 386. Diseñe el circuito lógico para implementar estas banderas, utilizando el sumador/restador de la figura 6-14 como la ALU. Las salidas de suma y la salida C4 deben usarse para controlar el estado al cual cambiará cada ban- dera al momento en que ocurra el pulso en TRANSFERIR. Por ejemplo, si la suma es igual a 0 (es decir, 0000) deberá establecerse la bandera Z mediante la PGT de TRANSFERIR; en caso contrario deberá borrarse. 6-54.* Cuando se trabaja con las microcomputadoras, a menudo es necesario mover números binarios desde un registro de ocho bits hacia un registro de 16 bits. Considere los números 01001001 y 10101110, que representan 73 y 82 en forma respectiva, en el sistema de complemento a 2. Determine las repre- sentaciones de 16 bits para estos números decimales. 6-55. Compare las representaciones de ocho y 16 bits para el 73 del problema 6-53. Después compare las dos representaciones para el 82. Hay una regla general que puede usarse para convertir con facilidad de la representación de ocho bits a la de 16 bits. ¿Puede usted ver cuál es? Tiene algo que ver con el bit de signo del número de ocho bits. RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES SECCIÓN 6-1 1. (a) 11101 (b) 101.111 (c) 10010000 SECCIÓN 6-2 1. (a) 00001101 (b) 11111001 (c) 10000000 2. (a) 29 (b) 64 (c) 126 3. 2048 a 2047 4. Siete 5. 32768 6. (a) 10000 (b) 10000000 (c) 1000 7. Consulte el texto. SECCIÓN 6-3 1.Verdadero 2. (a) 1000102 -3010 (b) 0000002 010 SECCIÓN 6-4 1. (a) 011112 1510 (b) 111112 -110 2. Mediante la comparación del bit de signo de la suma con los bits de signo de los números que se van a sumar. SECCIÓN 6-5 1. 1100010 SECCIÓN 6-7 1. Cuando la suma de al menos una posición de dígito decimal es mayor que 1001 (9). 2. El factor de corrección se suma tanto a los dígitos de las unidades como a los dígitos de las décadas. SECCIÓN 6-8 1. 923 2. 3DB 3. 2F, 77EC, 6D SECCIÓN 6-10 1. Tres; dos 2. (a) S2 0, C3 1 (b) C5 0 SECCIÓN 6-12 1. Uno; cuatro; cuatro 2. 0100 SECCIÓN 6-14 1. Cinco chips 2. 240 ns 3. 1 RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES 357
  • 387. 358 CAPÍTULO 6/ARITMÉTICA DIGITAL: OPERACIONES Y CIRCUITOS SECCIÓN 6-15 1. Para agregar el 1 que se necesita para completar la representación en complemento a 2 del número en el registro B 2. 0010 3. 1101 4. Falso; ahí aparece el complemento a 1. SECCIÓN 6-16 1. F 1011; OVR 0; CN4 0 2. F 0111; OVR 1; CN4 1 3. F 1000; 01101011; CN4 OVR 0; 5. 11111111 6. Ocho SECCIÓN 6-18 1.Vea el menú HELP de MAXPLUS, bajo old-style macrofunctions/adders 2. Una descripción de un CI estándar que puede usarse de la biblioteca. SECCIÓN 6-19 1. (a) 0001(b) 1011 2 . (a) 1010 (b) 1011 3. conmuta[3..0] 4. conmuta(3 DOWNTO 0) 5. [X] [1,1,1,1] 6. AHDL:xx[ ] d[ ] # g[ ]; VHDL: x d OR g; 7. AHDL:xx[2..1] d[3..2] $ g[1..0]; VHDL: x(2 DOWNTO 1) d(3 DOWNTO 2) XOR g(1 DOWNTO 0); SECCIÓN 6-21 1. CONSTANT. 2. En AHDL, cerca de la parte superior del archivo fuente. En VHDL, en un bloque PACKAGE cerca de la parte superior del archivo fuente. 3. Permiten los cambios globales del valor de un símbolo que se utiliza en todo el código. 4. val_max 5 representa el número 122. 5. GENERATE se utiliza con una instrucción FOR iterativa para instanciar módulos de código duplicado que puedan conectarse entre sí o en cascada.
  • 389. Parte 1 7-1 Contadores asíncronos (de rizo) 7-2 Retraso de propagación en contadores de rizo 7-3 Contadores síncronos (en paralelo) 7-4 Contadores con números MOD 2N 7-5 Contadores síncronos descendentes y ascendentes/ descendentes 7-6 Contadores preajustables 7-7 Contadores síncronos de CI 7-8 Decodificación de un contador 7-9 Análisis de contadores síncronos 7-10 Diseño de un contador síncrono 7-11 Contadores básicos mediante el uso de HDL 7-12 Contadores con todas las características en HDL ■ CONTENIDO CON TA DORES Y REG ISTROS C A P Í T U L O 7 7-13 Cómo alambrar módulos de HDL en conjunto 7-14 Máquina de estados Parte 2 7-15 Registros de circuito integrado 7-16 Entrada en paralelo/salida en paralelo: 74ALS174/74HC174 7-17 Entrada en serie/salida en serie: 74ALS166/74HC166 7-18 Entrada en paralelo/salida en serie: 74ALS165/74HC165 7-19 Entrada en serie/salida en paralelo: 74ALS164/74HC164 7-20 Contadores de registro de desplazamiento 7-21 Diagnóstico de fallas 7-22 Registros en HDL 7-23 Contadores de anillo en HDL 7-24 Monoestables en HDL
  • 390. ■ OBJETIVOS Al terminar este capítulo, usted podrá: ■ Comprender la operación y las características de los contadores síncronos y asíncronos. ■ Construir contadores con números MOD menores de 2N . ■ Construir contadores tanto ascendentes como descendentes. ■ Conectar contadores con múltiples etapas. ■ Analizar y evaluar varios tipos de contadores. ■ Diseñar contadores síncronos de secuencia arbitraria. ■ Comprender varios tipos de esquemas utilizados para decodificar distintos tipos de contadores. ■ Describir circuitos de contadores mediante el uso de distintos niveles de abstracción en HDL. ■ Comparar las principales diferencias entre los contadores de anillo y Johnson. ■ Reconocer y comprender la operación de varios tipos de registros de CI. ■ Describir los registros de desplazamiento y los contadores de registro de desplazamiento mediante el uso de HDL. ■ Aplicar las técnicas existentes de diagnóstico de fallas que se utilizan en los sistemas lógicos combinacionales para diagnosticar fallas en sistemas lógicos secuenciales. ■ INTRODUCCIÓN En el capítulo 5 vimos cómo podían conectarse los flip-flops para funcionar como contadores y registros. En ese momento sólo estudiamos los circuitos básicos de contadores y registros. Los sistemas digitales emplean muchas variaciones de estos circuitos básicos, la mayoría en forma de circuitos integrados. En este capítulo veremos cómo pueden combinarse los FFs y las compuertas lógicas para producir diferentes tipos de contadores y registros. Debido al extenso número de temas en este capítulo, lo hemos dividido en dos partes.En la PARTE 1 cubriremos los principios de la operación de los contadores,los diversos arreglos de circuitos de contadores y los contadores de CI representativos. En la PARTE 2 presentaremos varios tipos de registros de CI, contadores de registro de desplazamiento y el diagnóstico de fallas. Cada parte incluye una sección que contiene descripciones en HDL de los contadores y registros. A medida que vaya avanzando en el capítulo tendrá que recurrir con frecuencia al material que cubrimos en los capítulos anteriores. Regrese y repase el material que aprendió con anterioridad cada vez que lo necesite. 361
  • 391. 362 CAPÍTULO 7/CONTADORES Y REGISTROS PARTE 1 7-1 CONTADORES ASÍNCRONOS (DE RIZO) La figura 7-1 muestra un circuito contador binario de cuatro bits tal como el que vimos en el capítulo 5. Recuerde los siguientes puntos con respecto a su opera- ción: 1. Los pulsos de reloj se aplican sólo a la entrada CLK del flip-flop A. En conse- cuencia, el flip-flop A conmutará (cambiará a su estado opuesto) cada vez que los pulsos de reloj hagan una transición negativa (de ALTO a BAJO). Observe que J K 1 para todos los FFs. 2. La salida normal del flip-flop A actúa como la entrada CLK para el flip-flop B, por lo que el flip-flop B conmutará cada vez que la salida de A cambie de 1 a 0. De manera similar, el flip-flop C conmutará cuando B cambie de 1 a 0 y el flip- flop D conmutará cuando C cambie de 1 a 0. 3. Las salidas de los FFs D, C, B y A representan un número binario de cuatro bits, en donde D es el MSB. Vamos a suponer que todos los FFs se han borrado para quedar en el estado 0 (no se muestran las entradas de LIMPIA). Las formas de onda en la figura 7-1 muestran que se sigue una secuencia de conteo binario de 0000 a 1111 a medida que se aplican pulsos de reloj en forma continua. 4. Después de que ocurre la NGT (transición negativa) del quinceavo pulso de reloj, los FFs del contador se encuentran en la condición 1111. En la diecisei- FIGURA 7-1 Contador asíncrono (de rizo) de cuatro bits. D CLK K J D C CLK K J C B CLK K J B A CLK K J A * Se asume que todas las entradas J y K son 1. * * RELOJ A B C D 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 111 0 1111 0000 0010 0001 DCBA (conteo) Se recicla a 000
  • 392. sava NGT el flip-flop A cambia de 1 a 0, lo cual hace que el flip-flop B cambie de 1 a 0 y así en lo sucesivo, hasta que el contador queda en el estado 0000. En otras palabras, el contador ha pasado por un ciclo completo (de 0000 a 1111) y ha reciclado de vuelta a 0000. A partir de este punto empezará un nuevo ciclo de conteo, a medida que se apliquen los subsiguientes pulsos de reloj. En este contador, cada salida de los FFs excita la entrada CLK del siguiente FF. A este tipo de arreglo de contador se le conoce como contador asíncrono, ya que los FFs no cambian de estado en sincronía exacta con los pulsos de reloj que se aplican; sólo el flip-flop A responde a los pulsos de reloj. El FF B debe esperar a que el FF A cambie de estado para poder conmutar; el FF C debe esperar al FF B, y así en lo sucesivo. Por ende, hay un retraso entre las respuestas de los FFs sucesivos. Por lo general este retraso es de 5 a 20 ns por cada FF. Como veremos, en algunos casos este retraso puede ser problemático. A este tipo de contador también se le conoce comúnmente como contador de rizo debido a la forma en que responden los FFs, uno después de otro, en un tipo de efecto de rizo. Utilizaremos los términos contador asíncrono y contador de rizo con el mismo fin, de manera indistinta. Flujo de la señal Es una convención en los diagramas esquemáticos dibujar los circuitos (siempre que sea posible) de manera que el flujo de la señal sea de izquierda a derecha, con las entradas a la izquierda y las salidas a la derecha. En este capítulo quebranta- remos con frecuencia esta convención, en especial en los diagramas que muestren contadores. Por ejemplo, en la figura 7-1 las entradas CLK de cada FF están a la derecha, las salidas están a la izquierda y la señal de reloj de entrada se muestra saliendo de la derecha. Utilizaremos este arreglo debido a que facilita la compren- sión y el seguimiento de la operación del contador (pues el orden de los FFs es el mismo que el orden de los bits en el número binario que representa el contador). En otras palabras, el FF A (que es el LSB) es el FF más a la derecha y el FF D (que es el MSB) es el FF más a la izquierda. Si nos apegáramos al flujo de señal conven- cional de izquierda a derecha tendríamos que colocar el FF A a la izquierda y el FF D a la derecha, lo opuesto a sus posiciones en el número binario que representa al contador. En algunos de los diagramas de contadores que veremos más adelante en este capítulo emplearemos el flujo de señal convencional de izquierda a derecha, para que usted pueda acostumbrarse a verlo. El contador de la figura 7-1 empieza en el estado 0000 y después se aplican pulsos de reloj. Cierto tiempo después se quitan los pulsos de reloj y los FFs del contador indican 0011. ¿Cuántos pulsos de reloj han transcurrido? Solución La respuesta aparente parece ser 3, ya que 0011 es el equivalente binario de 3. Sin embargo, con la información que se proporciona no hay manera de saber si el con- tador ha reciclado o no. Esto significa que podrían haber transcurrido 19 pulsos de reloj; los primeros 16 regresan el contador de vuelta a 0000 y los últimos 3 lo llevan hasta 0011. O podrían haber transcurrido 35 pulsos (dos ciclos completos y después tres conteos más), o 51 pulsos, etcétera. Número MOD El contador de la figura 7-1 tiene 16 estados diferentes (de 0000 a 1111). Por ende, es un contador de rizo MOD 16. Recuerde que, por lo general, el número MOD es igual al número de estados por los que pasa el contador en cada ciclo completo, SECCIÓN 7-1/CONTADORES ASÍNCRONOS (DE RIZO) 363 EJEMPLO 7-1
  • 393. 364 CAPÍTULO 7/CONTADORES Y REGISTROS FIGURA 7-2 Formas de onda del contador que muestran la división entre 2 para cada FF. RELOJ A B C D EJEMPLO 7-2 antes de que recicle de vuelta a su estado inicial. El número MOD puede aumentar- se con sólo agregar más FFs al contador. Esto es, Número MOD 2N (7-1) en donde N es el número de FFs conectados en el arreglo de la figura 7-1. Se necesita un contador que cuente el número de elementos que pasan a través de una banda transportadora. Se utiliza una combinación de fotocelda y fuente de luz para generar un pulso individual cada vez que un elemento cruza su camino. El con- tador debe ser capaz de contar hasta mil elementos. ¿Cuántos FFs se requieren? Solución Es muy sencillo determinar qué valor de N se necesita para que 2N 1000. Como 29 512, 9 FFs no serán suficientes. 210 1024, por lo que 10 FFs producirían un contador que podría contar hasta 11111111112 102310. Por lo tanto, utilizaríamos 10 FF; podríamos usar más de 10 pero sería un desperdicio, ya que cualquier FF más allá del diez no se necesitaría. División de frecuencia En el capítulo 5 vimos que en el contador básico cada FF proporciona una forma de onda de salida que es la mitad exacta de la frecuencia de la forma de onda en su entrada CLK. Para ilustrar esto, suponga que la señal de reloj en la figura 7.1 es de 16 kHz. La figura 7.2 muestra las formas de onda de salida. La forma de onda en la salida A es una onda cuadrada de 8 kHz, en la salida B es de 4 kHz, en la salida C es de 2 kHz y en la salida D es de 1 kHz. Observe que la salida del flip-flop D tiene una frecuencia igual a la original del reloj, dividida entre 16. En general, En cualquier contador, la señal en la salida del último FF (es decir, el MSB) tendrá una frecuencia igual a la frecuencia del reloj de entrada dividida entre el número MOD del contador. Por ejemplo, en un contador MOD-16 la salida del último FF tendrá una frecuencia igual a 1/16 de la frecuencia del reloj de entrada. Por ende, también se le puede llamar contador de división entre 16. De igual forma, un contador MOD 8 tiene una frecuencia de salida igual a 1/8 de la frecuencia de entrada; es un contador de divi- sión entre 8.
  • 394. EJEMPLO 7-3 PREGUNTAS DE REPASO El primer paso relacionado con la construcción de un reloj digital es tomar la señal de 60 Hz y alimentarla a un circuito de conformación de pulsos tipo monoestable de Schmitt* para producir una onda cuadrada, como se ilustra en la figura 7-3. La onda cuadrada de 60 Hz se aplica después a un contador MOD-60, el cual se utiliza para dividir la frecuencia de 60 Hz entre un valor exacto de 60 para producir una forma de onda de 1 Hz. Esta forma de onda de 1 Hz se alimenta a una serie de contadores, los cuales a su vez se encargan de contar en segundos, minutos, horas, etcétera. ¿Cuántos FFs se requieren para el contador MOD-60? Solución No hay una potencia entera de 2 que sea igual a 60. La más cercana es 26 64. Por lo tanto, un contador que utilice seis FFs actuará como un contador MOD-64. Es obvio que esto no cumple con el requerimiento. Parece que no hay solución si se utiliza un contador del tipo que se muestra en la figura 7-1. En parte esto es verdad; en la sec- ción 7-4 veremos cómo modificar los contadores binarios básicos para que pueda obte- nerse casi cualquier número MOD y así no estaremos limitados a los valores de 2N . 1. Verdadero o falso: en un contador asíncrono todos los FFs cambian de estado al mismo tiempo. 2. Suponga que el contador en la figura 7-1 tiene el conteo 0101. ¿Cuál será el conteo después de 27 pulsos de reloj? 3. ¿Cuál sería el número MOD del contador si se agregaran tres FFs más? 7-2 RETRASO DE PROPAGACIÓN EN CONTADORES DE RIZO Los contadores de rizo son el tipo más simple de contadores binarios, ya que requie- ren la menor cantidad de componentes para producir una operación de conteo dada. No obstante tienen una gran desventaja debido a su principio básico de operación: cada FF se dispara mediante la transición en la salida del FF anterior. Debido al tiempo de retraso de propagación inherente (tpd) de cada FF, esto significa que el segundo FF no responderá sino hasta un tiempo tpd después de que el primer FF reciba una transición activa de reloj; el tercer FF no responderá sino hasta un tiem- po igual a 2 tpd después de esa transición del reloj; y así en lo sucesivo. En otras palabras, los retrasos de propagación de los FFs se acumulan de manera que el N- ésimo FF no puede cambiar de estado sino hasta un tiempo igual a N tpd después de que ocurre la transición del reloj. Esto se ilustra en la figura 7-4, en donde se muestran las formas de onda para un contador de rizo de tres bits. El primer conjunto de formas de onda en la figura 7-4(a) muestra una situación en la que se produce un pulso de entrada cada 1000 ns (el periodo del reloj T 1000 ns) y se supone que cada FF tiene un retraso de propagación de 50 ns (tpd 50 FIGURA 7-3 Ejemplo 7-3. Conformador de pulsos 60 Hz 60 Hz Contador MOD-60 Contadores pantallas, etc. 1 Hz * Consulte la sección 5-21. SECCIÓN 7-2/RETRASO DE PROPAGACIÓN EN CONTADORES DE RIZO 365
  • 395. 366 CAPÍTULO 7/CONTADORES Y REGISTROS FIGURA 7-4 Formas de onda de un contador de rizo de tres bits, en donde se ilustran los efectos de los retrasos de propagación de los FFs para distintas frecuencias del pulso de entrada. #1 #2 #3 #4 #5 Entrada 100 ns A B C #1 #2 #3 #4 #5 Entrada A B C 1000 ns 50 ns 100 ns 150 ns (a) 50 ns 50 ns 150 ns La condición de 100 no se produce. (b) ns). Observe que la salida del flip-flop A conmuta 50 ns después de la NGT de cada pulso de entrada. De manera similar, B conmuta 50 ns después de que A cambia de 1 a 0 y C conmuta 50 ns después de que B cambia de 1 a 0. Como resultado, cuando ocurre la cuarta NGT de entrada la salida C cambia a ALTO después de un retraso de 150 ns. En esta situación el contador opera de manera apropiada en el sentido en que en cierto momento los FFs llegan a sus estados correctos para representar el conteo binario. No obstante, la situación se empeora si los pulsos de entrada se aplican a una frecuencia mucho mayor. Las formas de onda en la figura 7-4(b) muestran lo que ocurre si los pulsos de entrada se producen una vez cada 100 ns. De nuevo, cada salida de FF responde 50 ns después de la transición de 1 a 0 en su entrada CLK (observe el cambio en la escala de tiempo relativa). Es de particular interés la situación después del flanco de caída del cuarto pulso de entrada, en donde la salida C no cambia a ALTO sino hasta 150 ns después, que viene siendo el mismo tiempo que transcurre hasta que la salida A cambia a ALTO en respuesta al quinto pulso de entrada. En otras palabras, la condición C 1, B A 0 (conteo de 100) nunca aparece, ya que la frecuencia de entrada es demasiado alta. Esto podría provocar un grave problema si esta con- dición fuera a utilizarse para controlar alguna otra operación en un sistema digital.
  • 396. PREGUNTAS DE REPASO Se pueden evitar problemas como éste si el periodo entre los pulsos de entrada se alarga más que el retraso de propagación total del contador. Esto es, para que el contador opere en forma correcta necesitamos que Treloj N x tpd (7-2) en donde N el número de FFs. Dicho en términos de la frecuencia del reloj de entrada, la frecuencia máxima que puede utilizarse se da mediante la siguiente ecuación: (7-3) Suponga, por ejemplo, que se construye un contador de rizo de cuatro bits utilizan- do el flip-flop J-K 74LS112. La tabla 5-2 muestra que el 74LS112 tiene los retrasos de propagación tPLH 16 ns y tPHL 24 ns de CLK a Q. Para calcular fmáx supondre- mos el “peor caso”; es decir, utilizaremos tpd tPLH 24 ns, para que Es evidente que a medida que aumenta el número de FFs en el contador, se incre- menta el tiempo de propagación total y se decrementa fmáx. Por ejemplo, un conta- dor de rizo que utiliza seis FFs 74LS112 tendrá Por lo tanto, los contadores asíncronos no son útiles a frecuencias muy altas, en especial para los contadores con grandes números de bits. Otro problema que ocasionan los retrasos de propagación en los contadores asíncronos ocurre cuando tratamos de detectar por medio electrónico (decodificar) los estados de salida del contador. Si analiza con detalle la figura 7-4(a), durante un breve tiempo (50 ns en nuestro ejemplo) justo después del estado 011 verá que el estado 010 ocurre antes que el estado 100. Es obvio que ésta no es la secuencia correcta de conteo binario, y aunque el ojo humano es demasiado lento como para ver este estado temporal, nuestros circuitos digitales serán lo bastante rápidos como para detectarlo. Estos patrones de conteo erróneos pueden generar lo que se conoce como deformaciones en las señales producidas por sistemas digitales que utilizan contadores asíncronos. A pesar de su simpleza, estos problemas limitan la utilidad de los contadores asín- cronos en aplicaciones digitales. 1. Explique por qué la limitación de frecuencia máxima de un contador de rizo disminuye a medida que se agregan más FFs al contador. 2. Cierto flip-flop J-K tiene tpd 12 ns. ¿Cuál es el contador MOD más grande que puede construirse a partir de estos FFs y que pueda operar hasta 10 MHz? 7-3 CONTADORES SÍNCRONOS (EN PARALELO) Los problemas que se encuentran en los contadores de rizo son ocasionados por los retrasos de propagación acumulados en los FF; dicho de otra forma, los FFs no cam- bian de estado todos al mismo tiempo, en sincronía con los pulsos de entrada. Estas limitaciones pueden resolverse con el uso de los contadores en paralelo o síncronos, SECCIÓN 7-3/CONTADORES SÍNCRONOS (EN PARALELO) 367 = 1 4 * 24 ns = 10.4 MHz fmáx = 1 N * tpd fmáx = 1 6 * 24 ns = 6.9 MHz fmáx
  • 397. 368 CAPÍTULO 7/CONTADORES Y REGISTROS FIGURA 7-5 Contador MOD-16 síncrono. Cada FF está sincronizado por la NGT de la señal de entrada de reloj, de manera que todas las transiciones de los FFs ocurran al mismo tiempo. (a) A CLK K CLR J B B CLK K J D K J Entrada 1 A B AB A B C ABC D A CLK CLR C C CLK K J CLR CLR Conteo 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 . . . D 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 . . . C 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 0 . . etc. B 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 . . . A 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 . . . (b) en los cuales todos los FFs se disparan al mismo tiempo (en paralelo) mediante los pulsos de entrada de reloj. Debido a que los pulsos de entrada se aplican a todos los FFs, debe utilizarse algún medio para controlar cuándo debe conmutar un FF y cuándo no debe ser afectado por un pulso de reloj. Esto se logra mediante el uso de las entradas J y K, y se ilustra en la figura 7-5 para un contador síncrono MOD-16 de cuatro bits. Si comparamos el arreglo del circuito para este contador síncrono con su contra- parte asíncrona de la figura 7-1, podremos ver las siguientes diferencias notables: ■ Las entradas CLK de todos los FFs están conectadas en conjunto, de manera que la señal de reloj de entrada se aplique a cada FF al mismo tiempo. ■ Sólo el flip-flop A, el LSB, tiene sus entradas J y K de manera permanente en el nivel ALTO. Las entradas J, K de los demás FFs se excitan mediante cierta combinación de salidas de los FFs. ■ El contador síncrono requiere más circuitos que el contador asíncrono.
  • 398. Operación del circuito Para que este circuito pueda contar en forma apropiada, en una NGT dada del reloj sólo los FFs que se supone deben conmutar en esa NGT tienen la condición J K 1 cuando ocurre esa NGT. Analicemos la secuencia de conteo en la figura 7-5(b) para ver lo que esto significa para cada FF. La secuencia de conteo muestra que el flip-flop A debe cambiar de estado en cada NGT. Por esta razón sus entradas J y K se mantienen en ALTO de manera per- manente, para que conmute en cada NGT de la entrada de reloj. La secuencia de conteo muestra que el flip-flop B debe cambiar de estado en cada NGT que se produzca mientras que A 1. Por ejemplo, cuando el conteo es 0001 la siguiente NGT debe conmutar a B al estado 1; cuando el conteo es 0011, la siguiente NGT debe conmutar a B al estado 0; y así en lo sucesivo. Para lograr esta operación se conecta la salida de A con las entradas J y K del flip-flop B, de manera que J K 1 sólo cuando A 1. La secuencia de conteo muestra que el flip-flop C debe cambiar de estado en cada NGT que se produzca mientras que A B 1. Por ejemplo, cuando el conteo es 0011 la siguiente NGT debe conmutar a C al estado 1; cuando el conteo es 0111 la siguiente NGT debe conmutar a C al estado 0; y así en lo sucesivo. Al conectar la señal lógica AB a las entradas J y K del FF C, este FF conmutará sólo cuando A B 1. De manera similar, podemos ver que el flip-flop D debe conmutar en cada NGT que se produzca mientras que A B C 1. Cuando el conteo es 0111, la siguiente NGT debe conmutar a D al estado 1; cuando el conteo es 1111 la siguiente NGT debe conmutar a D al estado 0. Al conectar la señal lógica ABC a las entradas J y K del FF D, este FF conmutará sólo cuando A B C 1. Por lo tanto, podemos establecer el principio básico para construir un contador de la siguiente manera: Cada FF deberá tener sus entradas J y K conectadas de manera que estén en ALTO sólo cuando las salidas de todos los FFs de menor orden se encuen- tren en el estado ALTO. Ventaja de los contadores síncronos en comparación con los contadores asíncronos En un contador en paralelo todos los FFs cambiarán de estado al mismo tiempo; esto es, todos están sincronizados con las NGTs de los pulsos de entrada del reloj. En consecuencia y a diferencia de los contadores asíncronos, los retrasos de propa- gación de los FFs no se acumulan para producir el retraso total, sino que el tiempo de respuesta total de un contador síncrono como el de la figura 7-5 es el tiempo que requiere un FF para conmutar, más el tiempo para que los nuevos niveles lógicos se propaguen a través de una sola compuerta AND para llegar a las entradas J, K. Por lo tanto, para un contador síncrono, retraso total tpd del FF tpd de la compuerta AND Este retraso total es el mismo, sin importar cuántos FFs haya en el contador y, por lo general, será mucho menor que en un contador asíncrono con el mismo número de FFs. Por ende, un contador síncrono puede operar a una frecuencia de entrada mucho más alta. Desde luego que los circuitos del contador síncrono son más com- plejos que los del contador asíncrono. CIs reales Existen muchos contadores de CI síncronos tanto en la familia lógica TTL como en la CMOS. Algunos de los dispositivos que se utilizan con más frecuencia son: ■ 74ALS160/162, 74HC160/162: contadores síncronos de décadas. ■ 74ALS161/163, 74HC161/163: contadores MOD-16 síncronos. SECCIÓN 7-3/CONTADORES SÍNCRONOS (EN PARALELO) 369
  • 399. 370 CAPÍTULO 7/CONTADORES Y REGISTROS EJEMPLO 7-4 PREGUNTAS DE REPASO (a) Determine el valor de fmáx para el contador de la figura 7-5(a) si el tpd para cada FF es de 50 ns y el tpd para cada compuerta AND es de 20 ns. Compare este valor con fmáx para un contador de rizo MOD-16. (b) ¿Qué debe hacerse para convertir este contador en MOD-32? (c) Determine el valor de fmáx para el contador MOD-32 en paralelo. Solución (a) El retraso total que debe permitirse entre los pulsos de reloj de entrada es igual al tpd del FF el tpd de la compuerta AND. Por ende, Treloj 50 20 70 ns, y en consecuencia el contador en paralelo tiene Un contador de rizo MOD-16 utiliza cuatro FFs con tpd 50 ns. Por lo tanto, la fmáx para el contador de rizo es (b) Debe agregarse un quinto FF, ya que 25 32. La entrada CLK de este FF tam- bién está enlazada a los pulsos de entrada. Sus entradas J y K se alimentan mediante la salida de una compuerta AND de cuatro entradas A, B, C y D. (c) La fmáx se determina igual que en (a), sin importar el número de FFs en el con- tador en paralelo. Por lo tanto, fmáx sigue siendo 14.3 MHz. 1. ¿Cuál es la ventaja de un contador síncrono, en comparación con un contador asíncrono? ¿Cuál es la desventaja? 2. ¿Cuántos dispositivos lógicos se requieren para un contador MOD-64 en parale- lo? 3. ¿Qué señal lógica excita las entradas J, K del flip-flop del MSB para el contador de la pregunta 2? 7-4 CONTADORES CON NÚMEROS MOD 2N El contador síncrono básico de la figura 7-5 está limitado a números MOD que sean iguales a 2N , en donde N es el número de FFs. En realidad este valor es el número MOD máximo que puede obtenerse mediante el uso de N flip-flops. El contador básico puede modificarse para producir números MOD menores que 2N si se permi- te al contador omitir estados que, por lo general, forman parte de la secuencia de conteo. Uno de los métodos más comunes para esto se ilustra en la figura 7-6, en donde se muestra un contador de tres bits. Si descartamos la compuerta NAND por un momento, podremos ver que el contador es del tipo binario MOD-8, el cual con- tará en secuencia desde 0000 hasta 1111. No obstante, la presencia de la compuerta NAND alterará esta secuencia de la siguiente manera: 1. La salida NAND se conecta a las entradas LIMPIAR asíncronas de cada FF. Mientras que la salida de la compuerta NAND esté en ALTO no tendrá efecto sobre el contador. Pero cuando cambie a BAJO borrará todos los FFs, lo cual provocará que el contador cambie de inmediato al estado 000. = 1 70 ns = 14.3 MHz contador en paralelo fmáx = 1 4 * 50 ns = 5 MHz contador de rizo fmáx
  • 400. FIGURA 7-6 Contador MOD-6 que se produce al borrar un contador MOD-8 cuando llega a un conteo de seis (110). A CLK K CLR J B B CLK K J 1 1 A CLR C C B C CLK K J CLR 1 2 3 4 5 6 7 8 9 10 11 12 A B C 0 1 Pulsos de entrada Salida de compuerta NAND 2. Las entradas de la compuerta NAND son las salidas de los flip-flops B y C, por lo que la salida de la compuerta NAND cambiará a BAJO siempre que B C 1. Esta condición se producirá cuando el contador cambie del estado 101 al 110 en la NGT del pulso de entrada 6. El nivel BAJO en la salida de la compuerta NAND borrará de inmediato (por lo general, en unos cuantos nanosegundos) el contador para que quede en el estado 000. Una vez que se hayan borrado los FFs, la salida de la compuerta NAND cambiará de vuelta al nivel ALTO, ya que la condición B C 1 dejó de existir. 3. Por lo tanto, la secuencia de conteo es CBA 000 001 010 011 100 101 (estado temporal necesario para borrar el contador) ← → 110 SECCIÓN 7-4/CONTADORES CON NÚMEROS MOD 2N 371
  • 401. 372 CAPÍTULO 7/CONTADORES Y REGISTROS Aunque el contador cambia al estado 110, permanece ahí sólo durante unos cuantos nanosegundos antes de reciclarse a 000. Por lo tanto, en esencia pode- mos decir que este contador cuenta desde 000 (cero) hasta 101 (cinco) y des- pués se recicla a 000. Omite los estados 110 y 111, de manera que sólo pasa por seis estados distintos; por lo tanto es un contador MOD-6. Observe que la forma de onda en la salida de B contiene un pico o deformación producida por la ocurrencia momentánea del estado 110 antes de que el FF se borre. Esta deformación es muy estrecha y no producirá ninguna indicación visual en LEDs indicadores o en pantallas numéricas. No obstante, podría provocar un problema si la salida B se utilizara para excitar otros circuitos fuera del contador. Hay que observar también que la salida C tiene una frecuencia igual a un sexto de la frecuencia de entrada; en otras palabras, este contador MOD-6 ha dividido la frecuencia de entrada entre seis. La forma de onda en C no es una onda cuadrada simétrica (ciclo de trabajo del 50 por ciento) debido a que está en ALTO sólo duran- te dos ciclos de reloj, mientras que está en BAJO durante cuatro ciclos. Diagrama de transición de estados La figura 7-7(a) es el diagrama de transición de estados para el contador MOD-6 de la figura 7-6. En este diagrama se muestra cómo los FFs C, B y A cambian de estado a medida que se aplican pulsos en la entrada CLK del flip-flop A. Recuerde que cada círculo representa uno de los posibles estados del contador y que las flechas indican cómo un estado cambia a otro en respuesta a un pulso de reloj de entrada. Si suponemos un conteo inicial de 000, el diagrama nos muestra que los estados del contador cambian, por lo general, en forma ascendente hasta llegar al conteo de 101. Cuando se produce el siguiente pulso de reloj, el contador cambia de manera temporal al conteo 110 antes de pasar al conteo 000 estable. Las líneas punteadas indican la naturaleza temporal del estado 110. Como dijimos antes, la duración de este estado temporal es tan breve que para la mayoría de los fines podemos consi- derar que el contador cambia en forma directa de 101 a 000 (flecha sólida). Observe que no hay una flecha que vaya al estado 111, ya que el contador nun- ca podrá avanzar hasta ese estado. No obstante, puede producirse el estado 111 al momento de encender el circuito, cuando los FFs prenden en estados aleatorios. Si esto ocurre, la condición 111 producirá un nivel BAJO en la salida de la compuerta NAND y de inmediato se borrará el contador para quedar en 000. Por ende, el esta- do 111 también es una condición temporal que termina en 000. Visualización de los estados de un contador Algunas veces durante la operación normal, y con mucha frecuencia durante la prueba, es necesario tener una pantalla visual de la manera en que el contador cambia de estados en respuesta a los pulsos de entrada. Más adelante veremos con detalle varias formas de hacer esto. Por ahora, la figura 7-7(b) muestra uno de los métodos más simples, en el que se utilizan LEDs indicadores individuales para cada salida de FF. Cada salida se conecta a un INVERSOR cuya salida proporciona la ruta de la corriente para el LED. Por ejemplo, cuando la salida A está en ALTO, la salida del INVERSOR cambia a BAJO y el LED se enciende. Un LED encendido indica que A 1. Cuando la salida A está en BAJO, la salida del INVERSOR está en ALTO y el LED se apaga. Cuando pasa esto, nos indica que A 0.
  • 402. C B A 111 000 001 010 011 100 101 110 Estado temporal (a) (b) A CLK K CLR J B Cuando el FF está en ALTO, el LED está encendido. B CLK K J 1 1 A CLR C C B C CLK K J CLR 5 V 330 ⍀ 330 ⍀ 330 ⍀ FIGURA 7-7 (a) Diagrama de transición de estados para el contador MOD-6 de la figura 7-6. (b) A menudo se utilizan LEDs para visualizar los estados de un contador. SECCIÓN 7-4/CONTADORES CON NÚMEROS MOD 2N 373
  • 403. 374 CAPÍTULO 7/CONTADORES Y REGISTROS EJEMPLO 7-6 EJEMPLO 7-6 (a) ¿Cuál será el estado de los LEDs cuando el contador tenga el conteo de cinco? (b) ¿Qué mostrarán los LEDs cuando el contador esté sincronizado por una entrada de 1 kHz? (c) ¿Será visible el estado 110 en los LEDs? Solución (a) Como 510 1012, los LEDs 20 y 22 estarán encendidos y el LED 21 estará apa- gado. (b) A 1 kHz, los LEDs estarán cambiando entre encendido y apagado tan rápido que parecerá (al ojo humano) que están encendidos todo el tiempo, con un bri- llo aproximado a la mitad del normal. (c) No; el estado 110 persistirá durante sólo unos cuantos nanosegundos, hasta que el contador se recicle a 000. Cambiar el número MOD El contador de las figuras 7-6 y 7-7 es del tipo MOD-6 debido a la elección de entra- das que van a la compuerta NAND. Si se cambian estas entradas, podrá obtenerse cualquier número MOD que se desee. Por ejemplo, si utilizamos una compuerta NAND de tres entradas A, B y C, el contador funcionaría en forma normal hasta que llegara a la condición 111, punto en el cual se restablecería de inmediato al estado 000. Si ignoramos la excursión temporal al estado 111, el contador iría de 000 a 110 y después se reciclaría de nuevo a 000, lo cual nos lleva a deducir que es un contador MOD-7 (7 estados). Determine el número MOD del contador en la figura 7-8(a). Determine además la frecuencia en la salida D. Solución Éste es un contador de cuatro bits, que, por lo general, contaría desde 0000 hasta 1111. Las entradas NAND son D, C y B, lo cual significa que el contador se reciclará de inmediato a 0000 cuando se llegue al conteo de 1110 (14 decimal). En consecuen- cia, el contador en realidad tiene 14 estados estables (de 0000 a 1101) y es, por lo tanto, del tipo MOD-14. Como la frecuencia de entrada es de 30 kHz, la frecuencia en la salida D será Procedimiento general Para construir un contador que empiece desde 0 y que tenga un número MOD X: 1. Busque el número más pequeño de FFs tal que 2N ≥ X, y conéctelos para formar un contador. Si 2N X, no realice los pasos 2 y 3. 2. Conecte una compuerta NAND a las entradas LIMPIAR asíncronas de todos los FFs. 3. Determine cuáles FFs estarán en el estado ALTO cuando el conteo sea igual a X; después conecte las salidas normales de estos FFs a las entradas de la com- puerta NAND. 30 kHz 14 = 2.14 kHz
  • 404. FIGURA 7-8 (a) Contador de rizo MOD-14; (b) Contador de rizo MOD-10 (de décadas). A CLK K CLR J B B C D B CLK K J D K J 30 kHz 1 D A CLK CLR C C CLK K J CLR CLR (a) (b) A CLK K CLR J B B D B CLK K J D K J 1 MHz 1 D A CLK CLR C C CLK K J CLR CLR EJEMPLO 7-7 Construya un contador MOD-10 que vaya desde 0000 (cero) hasta 1001 (9 decimal). Solución 23 8 y 24 16; entonces se requieren cuatro FFs. Como el contador debe tener una operación estable hasta el conteo de 1001, debe restablecerse a cero cuando llegue al conteo de 1010. Por lo tanto, las salidas de los FFs D y B deberán conectarse como entradas para la compuerta NAND. La figura 7-8(b) muestra el arreglo. Contadores de décadas/contadores BCD Al contador MOD-10 del ejemplo 7-7 también se le conoce como contador de déca- das. De hecho, un contador de décadas es cualquiera que tenga 10 estados distintos, SECCIÓN 7-4/CONTADORES CON NÚMEROS MOD 2N 375
  • 405. 376 CAPÍTULO 7/CONTADORES Y REGISTROS 60 Hz Q0 Q2 Q0 Q1 Q2 Q3 Q4 Q0 Q3 Q4 Q5 CLK K CLR J 1 CLK K CLR J CLK K CLR J CLK K CLR J CLK K CLR J CLK K CLR J Q1 Q2 Q3 Q0 Q1 Q2 Q0 Q1 Q0 Q1 Q2 Q3 Q4 Q5 FIGURA 7-9 Contador MOD-60. EJEMPLO 7-8 PREGUNTAS DE REPASO sin importar la secuencia. A un contador de décadas como el de la figura 7-8(b), que cuenta en secuencia desde 0000 (cero) hasta 1001 (9 decimal), también se le conoce comúnmente como contador BCD ya que sólo utiliza los 10 grupos de código BCD 0000, 0001, . . . , 1000, y 1001. Para reiterar, cualquier contador MOD-10 es de décadas y cualquier contador de décadas que cuente en binario desde 0000 hasta 1001 es del tipo BCD. Los contadores de décadas (en especial el tipo BCD) tienen un amplio uso en aplicaciones en las que se van a contar pulsos o eventos y los resultados se mos- trarán en algún tipo de indicador numérico decimal. Más adelante examinaremos esto con mayor detalle. Un contador de décadas también se utiliza a menudo para dividir la frecuencia de un pulso exactamente entre 10. Los pulsos de entrada se aplican a las entradas de reloj en paralelo, y los pulsos de salida se toman de la salida del flip-flop D, que tiene una frecuencia igual a un décimo de la frecuencia de la señal de entrada. En el ejemplo 7-3 se necesitaba un contador MOD-60 para dividir la frecuencia de línea de 60 Hz hasta 1 Hz. Construya un contador MOD-60 apropiado. Solución 25 32 y 26 64, por lo que necesitamos seis FFs, como muestra la figura 7-9. El contador deberá borrarse cuando llegue a 60 (111100). Entonces, las salidas de los flip-flops Q5, Q4, Q3 y Q2 deberán conectarse a la compuerta NAND. La salida del flip-flop Q5 tendrá una frecuencia de 1 Hz. 1. ¿Cuáles salidas de los FFs deberán conectarse a la compuerta NAND que se encarga de borrar los FFs, para formar un contador MOD-13? 2. Verdadero o falso: todos los contadores BCD son de décadas. 3. ¿Cuál es la frecuencia de salida de un contador de décadas que se sincroniza a partir de una señal de 50 kHz?
  • 406. A CLK K CLR J B B CLK K J D K J Entrada 1 AB A B ABC D A CLK CLR C C CLK K J C CLR CLR A B Entrada A B C D FIGURA 7-10 El contador descendente MOD-16 síncrono y las formas de onda de salida. 7-5 CONTADORES SÍNCRONOS DESCENDENTES Y ASCENDENTES/DESCENDENTES En la sección 7-3 vimos que al utilizar la salida de los FFs de menor orden para controlar la conmutación de cada FF se crea un contador ascendente síncrono. Un contador descendente síncrono se construye en forma similar, sólo que utili- zamos las salidas de los FF invertidas para controlar las entradas J, K de mayor orden. Si comparamos el contador descendente síncrono MOD-16 de la figura 7-10 con el contador ascendente de la figura 7-5 veremos que sólo necesitamos sustituir la correspondiente salida invertida del FF en vez de las salidas A, B y C. Para una secuencia de conteo descendente, el FF (A) del LSB aún necesita conmutar con cada NGT de la señal de entrada del reloj. El flip-flop B debe cambiar de estado en la siguiente NGT del reloj cuando A 0 (A 1). El flip-flop C cambia de estado cuando A B 0 (A B 1) y el flip-flop D cambia de estado cuando A B C 0 (A B C 1). Esta configuración del circuito producirá la secuencia de conteo: 15, 14, 13, 12, …, 3, 2, 1, 0, 15, 14…, como se muestra en el diagrama de sincronización. La figura 7-11(a) muestra cómo formar un contador ascendente/descendente en paralelo. La entrada de control Arriba/Abajo controla si se alimentan las salidas normales o las salidas invertidas del FF a las entradas J y K de los FFs sucesivos. Cuando Arriba/Abajo se mantiene en ALTO se habilitan las compuertas AND 1 y 2 mientras que se deshabilitan las compuertas AND 3 y 4 (observe el inversor). Esto permite que las salidas A y B pasen a través de las compuertas 1 y 2 a las entradas J y K de los FFs B y C. Cuando Arriba/Abajo se mantiene en BAJO, las compuertas AND 1 y 2 se deshabilitan mientras que las compuertas AND 3 y 4 se habilitan. Esto permite que las salidas A y B invertidas pasen a través de las compuertas 3 y 4 a las entradas J y K de los FFs B y C. Las formas de onda en la figura 7-11(b) ilustran la operación. Observe que para los primeros cinco pulsos de reloj, Arriba/Abajo 1 y el contador cuenta hacia arriba; para los últimos cinco pulsos Arriba/Abajo 0 y el contador cuenta hacia abajo. SECCIÓN 7-5/CONTADORES SÍNCRONOS DESCENDENTES Y ASCENDENTES. . . 377
  • 407. 378 CAPÍTULO 7/CONTADORES Y REGISTROS K A J K J CLR CLR CLR K J 1 CLK CLK CLK RELOJ A B B C C B A B A 2 4 Arriba/Abajo A A 1 3 (a) RELOJ A B C 000 001 010 011 100 101 100 011 010 001 000 Conteo (CBA) Arriba/Abajo (b) Hacia arriba Hacia abajo FIGURA 7-11 (a) Contador ascendente/descendente MOD-8 síncrono. (b) El contador cuenta hacia arriba cuando la entrada de control Arriba/Abajo 1; cuenta hacia abajo cuando la entrada de control Arriba/Abajo 0. EJEMPLO 7-9 La nomenclatura utilizada para la señal de control (Arriba/Abajo) se eligió de manera que nos haga ver claro la forma en que afecta al contador. La operación de conteo ascendente es activa en ALTO; la operación de conteo descendente es activa en BAJO. ¿Qué problemas podrían ocasionarse si la señal Arriba/Abajo cambiara de niveles en la NGT del reloj? Solución Los FFs podrían operar en forma impredecible, ya que en algunos de ellos sus entra- das J y K estarían cambiando casi al mismo tiempo que se produjera una NGT en su entrada CLK. No obstante, los efectos del cambio en la señal de control deben propagarse a través de dos compuertas antes de llegar a las entradas J, K, por lo que es más probable que los FFs respondan en forma predecible a los niveles que hay en J, K antes de la NGT de CLK.
  • 408. FIGURA 7-12 Contador síncrono con carga en paralelo asíncrona. P2 P1 P0 Q0 CLK K CLR J PRE Q1 CLK K CLR J PRE Q2 CLK K CLR J PRE CLK PL Carga en paralelo Entradas de datos en paralelo 1 PREGUNTAS DE REPASO 1. ¿Cuál es la diferencia entre la secuencia de conteo de un contador ascendente y de un contador descendente? 2. ¿Qué cambios en el circuito convertirán a un contador binario síncrono ascen- dente en un contador binario descendente? 7-6 CONTADORES PREAJUSTABLES Muchos contadores síncronos (en paralelo) que están disponibles como CIs están diseñados para ser preajustables; en otras palabras, pueden preajustarse a cual- quier conteo inicial deseado, ya sea en forma asíncrona (independiente de la señal del reloj) o síncrona (en la transición activa de la señal del reloj). A esta operación de preajuste se le conoce también como carga en paralelo del contador. La figura 7-12 muestra el circuito lógico para un contador ascendente en parale- lo preajustable de 3 bits. Las entradas J, K y CLK se conectan para que opere como un contador ascendente en paralelo. Las entradas asíncronas PRESTABLECER y LIMPIAR se conectan para realizar un ajuste asíncrono. El contador se carga con cualquier conteo deseado en cualquier momento mediante el siguiente procedi- miento: 1. Se aplica el conteo deseado a las entradas de datos en paralelo P2, P1 y P0. 2. Se aplica un pulso BAJO a la entrada de CARGA EN PARALELO (PL). SECCIÓN 7-6/CONTADORES PREAJUSTABLES 379
  • 409. 380 CAPÍTULO 7/CONTADORES Y REGISTROS PREGUNTAS DE REPASO Este procedimiento realizará una transferencia asíncrona de los niveles P2, P1 y P0 hacia los flip-flops Q2, Q1 y Q0, respectivamente (sección 5-17). Esta transferencia forzada ocurre de manera independiente de las entradas J, K y CLK. El efecto de la entrada CLK quedará deshabilitado mientras PL se encuentre en su estado activo en BAJO, ya que cada FF tendrá activada una de sus entradas asíncronas mientras PL 0. Una vez que PL regrese a nivel ALTO, los FFs podrán responder con sus entradas CLK y resumir la operación de conteo ascendente, empezando en la cuen- ta que se cargó en el contador. Por ejemplo, digamos que P2 1, P1 0 y P0 1. Mientras PL esté en ALTO, estas entradas de datos en paralelo no tendrán efecto. Si hay pulsos de reloj presen- tes, el contador realizará la operación normal de conteo ascendente. Ahora digamos que PL cambia a BAJO cuando el contador está en el conteo 010 (es decir, Q2 0, Q1 1 y Q0 0). Este nivel BAJO en PL producirá niveles BAJO en la entrada CLR de Q1 y en las entradas PRE de Q2 y Q0, de manera que el contador cambiará al conteo 101 sin importar lo que esté ocurriendo en la entrada CLK. El conteo se mantendrá en 101 hasta que PL se desactive (regrese a ALTO); en ese momento el contador seguirá contando hacia arriba con cada pulso de reloj, empezando desde el conteo de 101. Este preajuste asíncrono lo utilizan varios contadores de CI, tales como los chips TTL 74ALS190, 74ALS191, 74ALS192 y 74ALS193, y sus equivalentes en CMOS, 74HC190, 74HC191, 74HC192 y 74HC193. Preajuste síncrono Muchos contadores en paralelo de CI utilizan el preajuste síncrono, en el cual el contador se prestablece en la transición activa de la misma señal de reloj que se utiliza para el conteo. El nivel lógico en la entrada de control de carga en paralelo determina si el contador se va a prestablecer con los datos de entrada aplicados en la siguiente transición activa del reloj. Algunos ejemplos de contadores de CI que utilizan el preajuste síncrono son: De la familia TTL 74ALS160, 74ALS161, 74ALS162 y 74ALS163, y sus equivalentes en la familia CMOS 74HC160, 74HC161, 74HC162 y 74HC163. 1. ¿Qué queremos decir cuando expresamos que un contador es preajustable? 2. Describa la diferencia entre preajuste asíncrono y síncrono. 7-7 CONTADORES SÍNCRONOS DE CI La serie 74ALS160-163/74HC160-163 La figura 7-13 muestra el símbolo lógico, el módulo y la tabla de funciones para la serie 74ALS160 a 74ALS163 de contadores de CI (y sus contrapartes equivalentes en CMOS, 74HC160 a 74HC163). Estos contadores reciclables de cuatro bits tienen sus salidas etiquetadas como QD, QC, QB, QA, en donde QA es el LSB y QD es el MSB. Están sincronizados mediante una señal PGT que se aplica a CLK. Cada uno de estos circuitos integrados tiene una combinación distinta de dos características diferentes. Como puede ver en la figura 7-13(b), dos de los contadores son MOD-10 (74ALS160 y 74ALS162), mientras que los otros dos son contadores binarios MOD- 16 (74ALS161 y 74ALS163). La otra variación para estas piezas está en la operación de la función de limpiar [como se resalta en la figura 7-13(c)]. El 74ALS160 y el 74ALS161 tienen, cada uno, una entrada para limpiar asíncrona. Esto significa que tan pronto como CLR cambie a BAJO (CLR es activa en BAJO en los circuitos men- cionados), la salida del contador se restablecerá a 0000. Por otro lado, los contado- res de CI 74ALS162 y 74ALS163 se borran en forma síncrona. Para ello la entrada CLR debe estar en BAJO y debe aplicarse una señal PGT a la entrada de reloj. La entrada limpiar tiene prioridad sobre todas las demás funciones en esta serie de contadores de CI. Limpiar predominará sobre todas las demás entradas de control, como se indica mediante las X en la tabla de funciones de la figura 7-13(c).
  • 410. FIGURA 7-13 Contadores síncronos de la serie 74ALS160- 74ALS163: (a) símbolo lógico, (b) módulos; (c) tabla de funciones. Tabla de funciones de los CIs 74ALS160-74ALS163 ENP ENT CLK Función Números de parte 74ALS160 74ALS161 X X X X 74ALS162 74ALS163 L L H H H H L H H H X X X H L X X H X L X ↑ ↑ ↑ X X Limpiar asíncrona Limpiar síncrona Cargar síncrona Conteo ascendente Sin cambios Sin cambios Todos Todos Todos Todos (c) CARGAR CLR (a) CLK ENT ENP CLR CARGAR D A B C QD QA QB QC RCO 74ALS160- 74ALS163 Número de pieza Módulo 74ALS160 10 74ALS161 16 74ALS162 10 74ALS163 16 (b) La función de segunda prioridad disponible en esta serie de contadores de CI es la carga en paralelo de datos en los flip-flops del contador. Para prestablecer un valor de datos, la entrada limpiar se pone inactiva (ALTO), se aplica el valor de cuatro bits deseado a las terminales de entrada de datos D, C, B, A, (A es el LSB y D es el MSB), se aplica un nivel BAJO a la entrada CARGAR y después se pone la señal de reloj al circuito por medio de una PGT. Por lo tanto, la función de carga es síncrona y tiene prioridad sobre el conteo, por lo que no importa qué niveles lógicos se apliquen a ENT o ENP. Para contar a partir del estado preestablecido será nece- sario deshabilitar la carga (con un nivel ALTO) y habilitar la función de conteo. Si la función de carga está inactiva, no importa lo que se aplique a las terminales de entrada de datos. Para habilitar el conteo, la función de menor prioridad, las entradas de control CLR y CARGAR deben estar inactivas. Además hay dos controles de habilitación de conteo activos en ALTO, ENT y ENP. En esencia, se aplica una operación AND a ENT y ENP para controlar la función de conteo. Si cualquiera o ambos controles de habilitación de conteo están inactivos (BAJO), el contador mantendrá el estado actual. Por lo tanto, para incrementar el conteo en cada PGT de CLK las cuatro entradas de control deben estar en ALTO. Al contar, los contadores de décadas (74ALS160 y 74ALS162) se reciclarán de manera automática a 000 después del estado 1001 (9) y los contadores binarios (74ALS161 y 74ALS163) se reciclarán de manera automática después de 1111 (15). Esta serie de contadores de CI tiene una terminal más de salida: RCO. La función de esta salida activa en ALTO es detectar (decodificar) el último estado (o estado terminal) del contador. El estado terminal para un contador de décadas es 1001 (9), mientras que el estado terminal para un contador MOD-16 es 1111 (15). La entrada de habilitación de conteo primaria ENT también controla la operación de RCO. ENT debe estar en ALTO para que el contador indique con la salida RCO que ha llegado a su estado terminal. Esta característica es muy útil para conectar dos o más circuitos integrados tipo contador entre sí en un arreglo de múltiples etapas para crear contadores más grandes. SECCIÓN 7-7/CONTADORES SÍNCRONOS DE CI 381
  • 411. 382 CAPÍTULO 7/CONTADORES Y REGISTROS CLK CLR CARGAR ENT ENP QD QC QB QA RCO t0 t1 t2 t3 t4 t6 t7 t5 (b) (a) CLK ENT ENP CLR CARGAR D A B C QD QA QB QC RCO QD QA QB QC RCO 74HC163 ENT ENP CLR CARGAR 1 0 0 1 FIGURA 7-14 Ejemplo 7-10. EJEMPLO 7-10 Consulte la figura 7-14, en donde un 74HC163 tiene las señales de entrada que se proporcionan en el diagrama de sincronización que se aplica. Las entradas de datos en paralelo están conectadas en forma permanente como 1100. Suponga que al prin- cipio el contador se encuentra en el estado 0000 y determine las formas de onda de salida de éste. Solución Al principio (en t0) todos los FFs del contador están en BAJO. Como éste no es el estado terminal para el contador, la salida RCO también estará en BAJO. La primera PGT en la entrada CLK ocurre en t1 y, como todas las entradas de control están en ALTO, el contador se incrementará a 0001. El contador seguirá contando en forma ascendente con cada PGT hasta t2. En este tiempo, la entrada CLR está en BAJO. Debido a esto, el contador se restablecerá en forma síncrona al conteo 0000 en t2. Después de t2, la entrada CLR se vuelve inactiva (ALTO), por lo que el con- tador empezará a contar de nuevo hacia arriba, partiendo desde 0000, con cada PGT subsiguiente. En t3, la entrada CARGAR está en BAJO. Debido a esto, en t3 se
  • 412. FIGURA 7-15 Ejemplo 7-11. (b) CLK CLR CARGAR ENT ENP QD QC QB QA t0 t1 t3 t4 t5 t6 t7 t8 t9t10 t2 (a) CLK ENT ENP CLR CARGAR D A B C QD QA QB QC RCO QD QA QB QC RCO 74HC160 ENT ENP CLR CARGAR 0 1 1 1 EJEMPLO 7-11 cargará en forma síncrona el valor de datos 1100 (12) aplicado al contador. Después de t3 la entrada CARGAR se vuelve inactiva (ALTO), por lo que el contador seguirá contando hacia arriba, partiendo desde 1100 con cada PGT subsiguiente hasta t4. La salida del contador no cambia en t4 ni en t5, ya que ENP o ENT (las entradas de habilitación de conteo) están en BAJO. Esto mantiene el conteo en 1110 (14). En t6 el contador se habilita de nuevo y cuenta hasta 1111 (15), su estado terminal. Como resultado, ahora la salida RCO cambia a ALTO. En t7 otra PGT en CLK hará que el contador se recicle a 0000 y RCO regresa al nivel BAJO. Consulte la figura 7-15, ahí se muestra un 74HC160 al que se le aplican las señales de entrada indicadas en el diagrama de tiempo. Las entradas de datos en paralelo se conectan de manera permanente como 0111. Suponga que al principio el conta- SECCIÓN 7-7/CONTADORES SÍNCRONOS DE CI 383
  • 413. 384 CAPÍTULO 7/CONTADORES Y REGISTROS (a) CLK CTEN D/U CARGAR Máx /Mín D A B C QD QA QB QC RCO 74ALS190- 74ALS191 (b) Número de parte Módulo 74ALS190 10 74ALS191 16 (c) Tabla de funciones de los circuitos 74ALS190-74ALS191 CLK Función L H H H X L L H X L H X X ↑ ↑ X Carga asíncrona Conteo descendente Conteo ascendente Sin cambio CARGAR CTEN D/U FIGURA 7-16 Contadores síncronos de la serie 74ALS190- 74ALS191: (a) símbolo lógico; (b) módulo; (c) tabla de funciones. dor se encuentra en el estado 0000 y determine las formas de onda de salida del contador. Solución Al principio (en t0) los FFs del contador están todos en BAJO. Como éste no es el estado terminal para el contador BCD, la salida RCO también estará en BAJO. La primera PGT en la entrada CLK ocurre en t1, y como todas las entradas de control están en ALTO, el contador se incrementará a 0001. El contador seguirá contando en forma ascendente con cada PGT hasta t2. La entrada CLR asíncrona cambia a BAJO en t2, con lo cual el contador se restablecerá de inmediato a 0000 en ese punto. En t3 la entrada CLR sigue activa (BAJO), por lo que se ignorará la PGT de la entrada CLK y el contador permanecerá en 0000. Más adelante la entrada CLR se vuelve inactiva de nuevo y el contador seguirá contando hasta 0001 y después hasta 0010. En t4 la señal de habilitación de conteo ENP está en BAJO, por lo que el conteo se mantiene en 0010. En las PGTs subsiguientes de la entrada CLK, el contador se habilita y cuenta hacia arriba hasta t5. La entrada CARGAR está en bajo para t5. Esto cargará en forma síncrona el valor de datos aplicado 0111 (7) en el contador, en t5. En t6 la señal de habilitación de conteo ENT está en BAJO, por lo que el conteo se mantiene en 0111. Para las dos PGTs subsiguientes después de t6, el contador segui- rá contando hacia arriba ya que está rehabilitado. En t7, el contador BCD llega a su estado terminal 1001 (9) y la salida RCO cambia a ALTO. En t8, ENP está en BAJO y el contador se detiene (se queda en 1001). En t9, mientras ENT esté en BAJO la salida RCO se deshabilitará, de forma que regrese a BAJO aún y cuando el contador siga en su estado terminal (1001). Recuerde que sólo ENT controla la salida RCO. Cuando ENT regresa a ALTO durante el estado terminal del contador, RCO cambia a ALTO de nuevo. En t10 el contador se habilita y se recicla a 0000, después cuenta hasta 0001 en la última PGT. La serie 74ALS190-191/74HC190-191 La figura 7-16 muestra el símbolo lógico, el módulo y la tabla de funciones para las series de circuitos integrados contadores 74ALS190 y 74ALS191 (y sus equivalentes en CMOS, 74HC190 y 74HC191). Estos contadores reciclables de cuatro bits tienen salidas etiquetadas como QD, QC, QB, QA, en donde QA es el LSB y QD es el MSB. Se sincronizan mediante una señal PGT que se aplica en CLK. La única diferencia entre dichos circuitos es el módulo del contador. El 74ALS190 es un contador MOD- 10 y el 74ALS191 es un contador binario MOD-16. Ambos circuitos son contadores ascendentes/descendentes y tienen una entrada de carga asíncrona, activa en BAJO. Esto significa que, tan pronto como CARGAR cambie a BAJO, el contador
  • 414. EJEMPLO 7-12 se prestablecerá (en paralelo) con los datos disponibles en las terminales de entra- da D, C, B, A (A es el LSB y D es el MSB). Si la función de carga está inactiva, no importa lo que se aplique a las terminales de datos de entrada. La entrada de carga tiene prioridad sobre la función de conteo. Para contar, la entrada de control CARGAR debe estar inactiva (ALTO) y la entrada de control de habilitación de conteo (CTEN) debe estar en BAJO. La direc- ción del conteo se controla mediante la entrada de control D/U. Si D/U está en BAJO, el conteo se incrementa con cada PGT de CLK, mientras que un nivel ALTO en D/U disminuirá el conteo. Ambos contadores se reciclan de manera automática en cualquier dirección de conteo. El contador de décadas se recicla a 0000 después del estado 1001 (9) cuando cuenta hacia arriba, o a 1001 después del estado 0000 cuando cuenta hacia abajo. El contador binario se recicla a 0000 después de 1111 (15) cuando cuenta hacia arriba, o a 1111 después del estado 0000 cuando cuenta hacia abajo. Estos circuitos tipo contador tienen dos terminales más de salida, MÁX/MÍN y RCO. La primera es una salida activa en ALTO que detecta (decodifica) el estado terminal del contador. Como son contadores ascendentes/descendentes, el estado ter- minal depende de la dirección del conteo. El estado terminal (MÍN) para cualquiera de los contadores cuando el conteo es descendente es 0000 (0). No obstante, cuando el conteo es ascendente el estado terminal (MÁX) para un contador de décadas es 1001 (9), mientras que el estado terminal para un contador MOD-16 es 1111 (15). Observe que MÁX/MÍN sólo detecta un estado en la secuencia de conteo; sólo depende de si está contando hacia arriba o hacia abajo. La salida RCO activa en BAJO también detecta el estado terminal apropiado para el contador, pero es más complicada. En primer lugar, sólo se habilita cuando CTEN está en BAJO. Además, RCO sólo estará en BAJO mientras que la entrada CLK se encuentre también en BAJO. Así que, en esencia, RCO imitará la forma de onda de CLK sólo durante el estado terminal mientras el contador esté habilitado. Consulte la figura 7-17, en donde se muestra un circuito 74HC190 al que se le aplican las señales de entrada mostradas en el diagrama de tiempo. Las entradas de datos en paralelo se conectan de manera permanente como 0111. Suponga que al principio el contador se encuentra en el estado 0000 y determine las formas de onda de salida del contador. Solución Al principio (en t0) los FFs del contador están todos en BAJO. Como el contador está habilitado (CTEN 0) y la entrada de control de dirección de conteo D/U 0, el contador BCD empezará a contar en forma ascendente en la primera señal PGT que se aplique a CLK en t1, y continuará contando hacia arriba con cada PGT hasta t2, en donde el conteo ha llegado a 0101. La entrada CARGAR asíncrona cambia a BAJO en t2 y cargará de inmediato el valor 0111 en el contador en ese punto. En t3 la entrada CARGAR sigue activa (BAJO), por lo que se ignorará la señal PGT en la entrada CLK y el contador permanecerá en 0111. Más adelante la entrada CARGAR cambia a ALTO de nuevo y el contador avanzará el conteo ascendente hasta 1000 en la siguiente PGT. En t4 el contador se incrementa a 1001, que es el estado terminal para un contador BCD ascendente y en consecuencia la salida MÁX/MÍN cambiará a ALTO. Durante t5 el contador se encuentra en su estado terminal y la entrada CLK está en BAJO, por lo que RCO cambia a BAJO. Para las PGTs subsiguientes de la entrada CLK, el contador se recicla a 0000 y continúa contando hacia arriba hasta t6. Justo antes de t6, el control D/U cambia al nivel ALTO. Esto hará que el contador cuente hacia abajo en t6 y de nuevo en t7, en donde quedará en el estado 0000, que ahora es el estado terminal ya que está contando hacia abajo, y MÁX/MÍN tendrá un nivel ALTO. Durante t8, cuando la entrada CLK cambia a BAJO, la salida RCO estará de nuevo en BAJO. En t9 el contador se deshabilita con CTEN 1 y mantendrá el conteo en 1001. Para los siguientes pulsos en CLK, el contador seguirá contando hacia abajo. SECCIÓN 7-7/CONTADORES SÍNCRONOS DE CI 385
  • 415. 386 CAPÍTULO 7/CONTADORES Y REGISTROS (b) CLK CARGAR CTEN QC QD QB QA MÁX/MÍN RCO t0 t1 t3 t4 t5 t6 t7 t8 t9 t2 D/U (a) 74HC190 CARGAR 0 1 1 1 CLK CTEN D/U CARGAR Máx /Mín D A B C QD QA QB QC RCO CTEN D/U FIGURA 7-17 Ejemplo 7-12. EJEMPLO 7-13 Compare la operación de dos contadores: uno con carga síncrona y el otro con carga asíncrona. Consulte la figura 7-18(a), en donde un 74ALS163 y un 74ALS191 se han conectado en forma similar para contar hacia arriba en binario. Ambos circuitos se controlan mediante la misma señal de reloj y sus salidas QD y QC están conectadas a una compuerta NAND para controlar la entrada de control CARGAR respectiva. Suponga que al principio ambos contadores se encuentran en el estado 0000. (a) Determine la forma de onda de salida para cada contador. (b) ¿Cuál es la secuencia de conteo de reciclaje y el módulo para cada contador? (c) ¿Por qué tienen distintas secuencias de conteo?
  • 416. (b) (a) 0 0 0 1 0 0 0 1 0 0 1 1 1 S3 S2 S1 S0 T3 T2 T1 T0 S-LD T-LD S0 S1 S2 S3 T0 T1 T2 T3 S-LD T-LD CLK CLK ENT ENP CLR CARGAR 74ALS163 D A B C QD QA QB QC RCO CLK Máx /Mín D/U CARGAR D A B C QD QA QB QC 74ALS191 CTEN RCO FIGURA 7-18 Ejemplo 7-13. Solución (a) Comenzando en el estado 0000, cada contador contará hacia arriba hasta llegar al estado 1100 (12), como muestra la figura 7-18(b). La salida de cada com- puerta NAND aplicará un nivel BAJO a la entrada CARGAR respectiva en ese tiempo. El 74ALS163 tiene una entrada CARGAR síncrona, por lo que esperará SECCIÓN 7-7/CONTADORES SÍNCRONOS DE CI 387
  • 417. 388 CAPÍTULO 7/CONTADORES Y REGISTROS FIGURA 7-19 Dos chips 74ALS163 conectados en un arreglo de dos etapas, para extender el rango máximo de conteo. 74ALS163 74ALS163 1 1 Q0 (LSB) Q1 Q2 Q3 Q4 Q5 Q6 Q7 D0 D1 D2 D3 D4 D5 D6 D7 EN CLR LD A las etapas de mayor orden del contador A las etapas de mayor orden del contador TC1 TC2 Nibble menos significativo CLK ENT ENP CLR LOAD D A B C QD QA QB QC RCO etapa 1 CLK ENT ENP CLR LOAD D A B C QD QA QB QC RCO etapa 2 hasta la siguiente PGT en CLK para cargar los datos de entrada 0001 en el con- tador. El 74ALS191 tiene una entrada CARGAR asíncrona, por lo que cargará de inmediato los datos de entrada 0001 en el contador. Esto convertirá al estado 1100 en temporal o transiente para el 74ALS191. El estado transiente producirá algunos picos o deformaciones en algunas de las salidas del contador, debido a la rápida acción de alternar hacia atrás y hacia delante. (b) El circuito 74ALS163 tiene una secuencia de conteo de reciclaje de 0001 hasta 1100 y es un contador MOD-12. El circuito 74ALS191 tiene una secuencia de conteo de reciclaje de 0001 hasta 1011 y es un contador MOD-11. No se incluyen los estados transientes al determinar el módulo para un contador. (c) Los circuitos tipo contador tienen distintas secuencias de conteo debido a que uno de ellos tiene una carga síncrona y el otro tiene una carga asíncrona. Arreglo de múltiples etapas Muchos contadores de CI estándar se han diseñado para facilitar la conexión de varios circuitos integrados en conjunto para crear circuitos con un rango de conteo más alto. Todos los circuitos tipo contador que se presentan en esta sección pueden conectarse en un arreglo de múltiples etapas o en cascada. En la figura 7-19, dos circuitos 74ALS163 se conectan en un arreglo de contadores de dos etapas que produce una secuencia binaria con reciclaje de 0 a 255, para un módulo máximo de 256. Al aplicar un nivel BAJO en la entrada CLR se borrarán en forma síncrona ambas etapas de contador, y al aplicar un nivel BAJO a LD el contador de ocho bits se prestablecerá en forma síncrona al valor binario en las entradas D7, D6, D5, D4, D3, D2, D1, D0 (D0 LSB). El bloque a la izquierda (etapa 1) es la etapa de menor orden y proporciona las salidas menos significativas del contador: Q3, Q2, Q1, Q0 (en donde Q0 LSB). La etapa 2 a la derecha proporciona las salidas más significa- tivas del contador: Q7, Q6, Q5, Q4 (en donde Q7 MSB). EN, la entrada de habilitación para el contador de ocho bits, se conecta a la entrada ENT en la etapa 1. Observe que debemos usar la entrada ENT y no ENP, ya que sólo ENT controla la salida RCO. El uso de ENT y RCO facilita en forma considerable la conexión en cascada. Ambos bloques del contador se coordinan en forma síncrona, pero el bloque a la derecha (etapa 2) está deshabilitado hasta que el nibble de salida menos significativo haya llegado a su estado terminal, el cual se indica mediante la salida TC1. Cuando Q3, Q2, Q1, Q0 llegan a 1111 y si EN está en ALTO, entonces TC1 producirá un nivel ALTO. Esto permitirá que ambas etapas del contador cuenten uno hacia arriba con la siguiente PGT en el reloj. La etapa 1 se
  • 418. PREGUNTAS DE REPASO reciclará de vuelta a 0000 y la etapa 2 se incrementará a partir de su estado de sali- da anterior. TC1 regresará a un nivel BAJO ya que la etapa 1 no se encuentra más en su estado terminal. Con los subsiguientes ciclos de reloj, la etapa 1 continuará contando hacia arriba si EN 1, hasta que llegue de nuevo a 1111 y se repite el proceso. Cuando el contador de ocho bits llega a 11111111, se reciclará de vuelta a 00000000 en el siguiente pulso de reloj. De la misma forma, pueden conectarse en cascada circuitos contador 74ALS163 adicionales. TC2 se conectaría al control ENT en el siguiente circuito, y así en lo sucesivo. TC2 estará en ALTO cuando Q7, Q5, Q4 sea igual a 1111 y TC1 esté en ALTO, lo cual a su vez significa que Q3, Q2, Q1, Q0 son igual a 1111 y EN está en ALTO. Esta técnica en cascada funciona para todos los circuitos (familia TTL o CMOS) en esta serie, incluso para los contadores BCD. La serie 74ALS190-191 (o 74HC190-191) también puede conectarse en cascada de manera similar si se utili- zan las terminales CTEN y RCO activas en BAJO. Un contador de múltiples etapas que utilice circuitos 74ALS190-191 conectado de esta forma podrá contar hacia arriba o hacia abajo. 1. Describa la función de las entradas CARGAR y D, C, B, A. 2. Describa la función de la entrada CLR. 3. Verdadero o falso: el 74HC161 no puede prestablecerse mientras CLR está activa. 4. ¿Qué niveles lógicos deben estar presentes en las entradas de control para que el 74ALS162 pueda contar pulsos que aparezcan en CLK? 5. ¿Qué niveles lógicos deben estar presentes en las entradas de control para que el 74HC190 pueda contar hacia abajo con pulsos que aparezcan en CLK? 6. ¿Cuál sería el rango máximo de conteo para un contador de cuatro etapas forma- do por CIs 74HC163? ¿Cuál es el rango máximo de conteo para CIs 74ALS190? 7-8 DECODIFICACIÓN DE UN CONTADOR Los contadores digitales se utilizan con frecuencia en aplicaciones en las que el conteo representado por los estados de los FFs debe determinarse o visualizarse de alguna forma. Uno de los medios más simples para visualizar el contenido de un contador implica sólo conectar la salida de cada FF a un pequeño LED indica- dor [vea la figura 7-7(b)]. De esta manera, los estados de los FFs se representan en forma visual mediante los LEDs (encendido 1, apagado 0) el conteo se puede determinar mentalmente, decodificando los estados binarios de los LEDs. Por ejemplo, suponga que se utiliza este método para un contador BCD y que los estados de los LEDs son apagado-encendido-encendido-apagado, respectivamente. Esto representaría el valor 0110, el cual decodificaríamos mentalmente como el 6 decimal. Otras combinaciones de los estados de los LEDs representarían los demás posibles conteos. El método del LED indicador se vuelve inconveniente a medida que aumenta el tamaño (número de bits) del contador, ya que es demasiado difícil decodificar mentalmente los resultados visualizados. Por esta razón es preferible desarrollar un medio para decodificar por medios electrónicos el contenido de un contador y visualizar los resultados en un formato que se reconozca de inmediato y no requiera operaciones mentales. Una razón aún más importante para la decodificación electrónica de un conta- dor se debe a las diversas aplicaciones en las que se utilizan los contadores para controlar la sincronización o la secuencia de las operaciones en forma automática, sin intervención humana. Por ejemplo, la operación de cierto sistema tal vez tenga que iniciarse cuando un contador llegue al estado 101100 (conteo de 4410). Puede utilizarse un circuito lógico para decodificar o detectar el momento en el que se presente este conteo específico y después iniciar la operación. En un sistema digi- SECCIÓN 7-8/DECODIFICACIÓN DE UN CONTADOR 389
  • 419. 390 CAPÍTULO 7/CONTADORES Y REGISTROS FIGURA 7-20 Uso de compuertas AND para decodificar un contador MOD-8. 1 000 001 010 011 101 110 111 100 CLK CLK C B A C B A C B A C B A C B A 0 1 2 3 4 5 6 7 C K C J CLK B K B J CLK A K A J CLK C B A C B A C B A C B A C B A C B A tal, muchas operaciones tienen que controlarse de esta forma. Es evidente que no sería conveniente la intervención humana en este proceso, excepto en sistemas en extremo lentos. Decodificación activa en ALTO Un contador MOD-X tiene X estados distintos; cada estado es un patrón específico de 0s y 1s que se almacenan en los FFs del contador. Una red decodificadora es un circuito lógico que genera X salidas distintas, cada una detecta (decodifica) la pre- sencia de un estado específico del contador. Las salidas del decodificador pueden diseñarse para producir ya sea un nivel ALTO o BAJO cuando ocurre la detección. Un decodificador activo en ALTO produce salidas en ALTO para indicar la detec- ción. La figura 7-20 muestra la lógica de decodificación activa en ALTO completa
  • 420. EJEMPLO 7-14 EJEMPLO 7-15 para un contador MOD-8. El decodificador consiste de ocho compuertas AND de tres entradas; cada una estas compuertas produce una salida en ALTO para un estado específico del contador. Por ejemplo, la compuerta AND 0 tiene como entradas las salidas C, B y A de los FFs. Por ende, su salida estará en BAJO en todo momento, excepto cuando A B C 0; esto es, en el conteo de 000 (cero). De manera similar, la compuerta AND 5 tiene como entradas las salidas C, B y A de los FFs, por lo que su salida cambiará a ALTO sólo cuando C 1, B 0 y A 1; esto es, en el conteo de 101 (5 decimal). El resto de las compuertas AND funciona de la misma forma para los demás posibles conteos. En cualquier momento dado, sólo la salida de una compuerta AND está en ALTO: la que está decodificando para el conteo específico presente en el contador. Las formas de onda de la figura 7-20 muestran esto con claridad. Las salidas de las ocho compuertas AND pueden utilizarse para controlar ocho LEDs, los cuales representan los números decimales del 0 al 7. Sólo un LED estará encendido en cualquier momento dado, indicando el conteo apropiado. El decodificador de compuerta AND puede extenderse para funcionar con contadores con cualquier número de estados. Esto se ilustra mediante el siguiente ejemplo. ¿Cuántas compuertas AND se requieren para decodificar por completo todos los estados de un contador binario MOD-32? ¿Cuáles son las entradas para la compuer- ta que decodifica el conteo de 21? Solución Un contador MOD-32 tiene 32 posibles estados. Se necesita una compuerta AND para decodificar para cada estado; por lo tanto, el decodificador requiere 32 compuertas AND. Como 32 25 , el contador contiene cinco FFs. Por ende, cada compuerta ten- drá cinco entradas, una de cada FF. Para decodificar el conteo de 21 (esto es, 101012) se requieren las entradas de E, D, C, B y A en la compuerta AND, en donde E es el flip-flop del MSB. Decodificación activa en BAJO Si se utilizan compuertas NAND en vez de compuertas AND, las salidas del decodi- ficador producen una señal que está, por lo general, en nivel ALTO, la cual cambia a BAJO sólo cuando ocurre el número que se está decodificando. Se utilizan ambos tipos de decodificadores, dependiendo del tipo de circuitos que se van a controlar mediante las salidas del decodificador. La figura 7-21 muestra una situación común en la que se utiliza un contador para generar una forma de onda de control, la cual podría usarse para controlar dispositi- vos tales como un motor, una válvula solenoide o un calentador. El contador MOD-16 cicla y recicla a través de su secuencia de conteo. Cada vez que llega al conteo de 8 (1000), la compuerta NAND superior produce una salida en BAJO que establece el flip-flop X para que quede en el estado 1. El flip-flop X permanece en ALTO hasta que el contador llega al conteo de 14 (1110), tiempo en el cual la compuerta NAND inferior la decodifica y produce una salida en BAJO para borrar X y que quede en el estado 0. En consecuencia, la salida X está en ALTO entre los conteos de 8 y 14 para cada ciclo del contador. Decodificación de contadores BCD Un contador BCD tiene 10 estados que pueden decodificarse mediante el uso de las técnicas antes descritas. Los decodificadores BCD proporcionan 10 salidas que corresponden a los dígitos decimales del 0 al 9 y se representan mediante los esta- SECCIÓN 7-8/DECODIFICACIÓN DE UN CONTADOR 391
  • 421. 392 CAPÍTULO 7/CONTADORES Y REGISTROS D C B A Contador BCD Unidad decodificadora/pantalla Pulsos de entrada Salidas de los FFs Exhibidor de 7 segmentos FIGURA 7-22 Por lo general, los contadores BCD muestran su conteo en un solo dispositivo de visualización. 1 CLK D _ C _ B _ A 0 D _ A C B 0 estado 1000 estado 1110 decodifica 1000 decodifica 1110 1 D K D J CLK C K C J CLK B K B J CLK A K A J CLK CLR K X J CLK PRE X FIGURA 7-21 Ejemplo 7-15. dos de los FFs del contador. Estas 10 salidas pueden utilizarse para controlar 10 LEDs indicadores individuales para un despliegue visual. Es más común utilizar un solo dispositivo de visualización para mostrar los números decimales del 0 al 9 en lugar de 10 LEDs separados. Una clase de visualizadores decimales contiene siete pequeños segmentos formados de un material (por lo general, LEDs o pantallas de cristal líquido) que emiten luz o reflejan la luz ambiental. Las salidas del deco- dificador BCD controlan qué segmentos se iluminan para producir un patrón que represente uno de los dígitos decimales. En el capítulo 9 veremos con más detalle todos estos tipos de decodificadores y pantallas. No obstante y como los contadores BCD y sus decodificadores y exhibi- dores asociados son muy comunes, utilizaremos la unidad decodificadora/pantalla (vea la figura 7-22) para representar los circuitos completos que se utilizan para mostrar en forma visual el contenido de un contador BCD como un dígito decimal.
  • 422. FIGURA 7-23 Contador síncrono con distintas entradas de control. CLK C K C J CLK B K B J CLK A K A J CLK PREGUNTAS DE REPASO 1. ¿Cuántas compuertas se necesitan para decodificar un contador de seis bits por completo? 2. Describa la compuerta decodificadora necesaria para producir una salida en BAJO cuando un contador MOD-64 se encuentra en el conteo de 23. 7-9 ANÁLISIS DE LOS CONTADORES SÍNCRONOS Los circuitos tipo contador síncrono pueden diseñarse en forma personalizada para generar cualquier secuencia de conteo deseada. Podemos usar sólo las entradas sín- cronas que se apliquen a los flip-flops individuales para producir la secuencia del contador. Si no utilizamos controles asíncronos en los FFs (tales como los controles para limpiar) para cambiar la secuencia del contador, nunca tendremos que enfren- tar los estados transitorios y las posibles deformaciones en las formas de onda de la salida. En la siguiente sección investigaremos el proceso de diseñar contadores completamente síncronos. Primero veamos cómo analizar el diseño de un contador de este tipo, prediciendo las entradas de control de los FFs para cada estado del contador. Una tabla de estado PRESENTE / estado SIGUIENTE es una herramienta muy útil en este proceso de análisis. El primer paso es escribir la expresión lógica para cada una de las entradas de control de los FFs. Después se asume un estado PRESENTE para el contador y se aplica esa combinación de bits a las expresiones lógicas de control. Las salidas de las expresiones de control nos permitirán prede- cir los comandos para cada FF y el estado SIGUIENTE resultante para el contador después de la sincronización por el reloj. Se repite el proceso de análisis hasta determinar toda la secuencia completa de conteo. La figura 7-23 es un contador síncrono que tiene entradas J y K un poco distin- tas a las que vimos en la sección 7-3 para un contador ascendente binario común. Estos pequeños cambios en los circuitos de control harán que el contador produzca una secuencia de conteo distinta. Las expresiones de las entradas de control para este contador son: Vamos a suponer que el estado PRESENTE para el contador es CBA 000. Si aplicamos esta combinación a las expresiones de control antes mencionadas se pro- ducirá la condición JCKC 0 0, JBKB 0 0 y JAKA 1 1. Estas entradas de control indicarán a los FFs C y B que retengan su estado y al FF A que conmute en la siguiente NGT de CLK. El estado SIGUIENTE previsto es 001 para CBA. Hemos JA = KA = C JB = KB = A KC = C JC = A # B SECCIÓN 7-9/ANÁLISIS DE LOS CONTADORES SÍNCRONOS 393
  • 423. 394 CAPÍTULO 7/CONTADORES Y REGISTROS CLK A B C C B A 000 001 010 100 011 110 111 101 (b) (a) FIGURA 7-24 (a) Diagrama de transición de estados y (b) diagrama de sincronización para el contador asíncrono de la figura 7-23. introducido esta información en la primera línea de la tabla de estado PRESENTE / estado SIGUIENTE que se muestra en la tabla 7-1. A continuación podemos utili- zar el estado 001 como nuestro estado PRESENTE. Si analizamos las expresiones de control con esta nueva combinación se producirá ahora la condición JCKC 0 0, JBKB 1 1 y JAKA 1 1, lo cual nos da un comando de retención para el FF C y comandos de conmutación para los FFs B y A. Esto producirá el estado SIGUIENTE de 010 para CBA, que hemos listado en la segunda línea de la tabla 7-1. Si continuamos con este proceso se producirá una secuencia de conteo reciclable de 000, 001, 010, 011, 100, 000. Esta sería una secuencia de conteo MOD-5. Podemos predecir los estados SIGUIENTE para las tres posibles combinaciones de estado restantes de la misma forma. Al hacerlo podremos determinar si el diseño del contador es autocorregible. Un contador autocorregible es aquel en el que, por lo general, los estados sin utili- zar regresarán de alguna forma a la secuencia de conteo normal. Si cualquiera de estos estados no utilizados no puede regresar a la secuencia normal, se dice que el contador no es autocorregible. Hemos introducido en la tabla 7-1 nuestras predic- ciones del estado SIGUIENTE para todos los posibles estados. La información resal- tada indica que el diseño de este contador es autocorregible. La figura 7-24 muestra completos el diagrama de transición de estados y el diagrama de tiempos para este contador. De igual forma podemos analizar la operación de los circuitos tipo contador que utilizan flip-flops D para almacenar el estado presente del contador. Por lo TABLA 7-1 Estado PRESENTE Entradas de control Estado SIGUIENTE C B A JC KC JB KB JA KA C B A 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 1 1 1 0 1 0 0 1 0 0 0 0 0 1 1 0 1 1 0 1 1 1 0 1 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 1
  • 424. FIGURA 7-25 Contador síncrono que utiliza flip-flops D. general, los circuitos de control para un flip-flop tipo D serán más complejos que para un contador tipo JK equivalente que produzca la misma secuencia de conteo, pero también tendremos que controlar la mitad del número de entradas síncronas. La mayoría de los PLDs utilizan flip-flops D para sus elementos de memoria, por lo que el análisis de este tipo de circuito contador nos proporcionará algo de detalle sobre la forma en que se programan los contadores dentro de un PLD. La figura 7-25 muestra un contador síncrono diseñado con flip-flops D. El pri- mer paso es escribir las expresiones lógicas para las entradas D: Después determinaremos la tabla del estado PRESENTE / estado SIGUIENTE para el circuito contador; para ello debemos suponer un estado y aplicar ese conjun- to de valores de bits a las expresiones de entrada antes descritas. Si elegimos CBA 000 para el estado inicial del contador obtendremos como resultado DC 0, DB 0 y DA 1. Con una PGT en RELOJ los flip-flops “cargarán” el valor 001, que se convertirá en el estado SIGUIENTE del contador. Si utilizamos 001 como el estado PRESENTE se producirán entradas de DC 0, DB 1 y DA 0, de manera que 010 será el estado SIGUIENTE, y así en lo sucesivo. La tabla del estado PRESENTE / estado SIGUIENTE que se muestra en la tabla 7-2 indica que este circuito es un contador binario MOD-8 reciclable. Si aplicamos un poco de álgebra booleana a las expresiones de entrada, podremos ver que en realidad hay un patrón de circuito bastante simple para crear contadores binarios a partir de flip-flops D: RELOJ B B D CLK A A D CLK B A C DC DB DA C C D CLK DA = A DB = B A + B A DC = C B + C A + C B A DA = A DB = B A + B A = B { A = C B A + C (B A) = C { (A B) DC = C B + C A + C B A = C (B + A) + C B A Estado PRESENTE Entradas de control Estado SIGUIENTE C B A DC DB DA C B A 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 TABLA 7-2 SECCIÓN 7-9/ANÁLISIS DE LOS CONTADORES SÍNCRONOS 395
  • 425. 396 CAPÍTULO 7/CONTADORES Y REGISTROS PREGUNTAS DE REPASO Es importante observar que los recursos de compuertas para la mayoría de los PLDs en realidad consisten de conjuntos de arreglos de circuitos AND-OR y que la expresión lógica SOP (Suma de Productos) describe con más precisión la implemen- tación interna del circuito. No obstante, podemos ver que las expresiones se han simplificado de manera considerable mediante el uso de la función XOR. Esto nos lleva a predecir de manera correcta que para crear un contador binario MOD-16 con flip-flops D necesitaríamos un cuarto FF con: 1. ¿Por qué es conveniente evitar tener controles asíncronos en los contadores? 2. ¿Qué herramienta es útil para el análisis de los contadores síncronos? 3. ¿Qué es lo que determina la secuencia de conteo para un circuito tipo conta- dor? 4. ¿Qué característica del contador se describe diciendo que es autocorregible? 7-10 DISEÑO DE UN CONTADOR SÍNCRONO* Hay muchos arreglos de contador en forma de CIs: asíncronos, síncronos y combi- nación de asíncrono/síncrono. La mayoría cuenta con una secuencia binaria nor- mal o en BCD, aunque sus secuencias de conteo pueden alterarse en cierta forma mediante los métodos para borrar o cargar que demostramos para las series de CIs 74ALS160-163 y 74ALS190-191. No obstante, hay situaciones en las que se requiere un contador personalizado que siga una secuencia que no sea un patrón de conteo binario regular, por ejemplo: 000, 010, 101, 001, 110, 000 …. Existen varios métodos para diseñar contadores que siguen secuencias arbitra- rias.Vamos a presentar los detalles para un método común que utiliza flip-flops J-K en una configuración de contador síncrono. El mismo método puede utilizarse en diseños con flip-flops D. La técnica es uno de varios procedimientos de diseño que forman parte de un área del diseño de circuitos digitales, conocida como diseño de circuitos secuenciales, que, por lo general, es parte de un curso avanzado. Idea básica En los contadores síncronos todos los FFs se sincronizan al mismo tiempo. Antes de cada pulso de reloj, las entradas J y K de cada FF en el contador deben estar en el nivel correcto para asegurar que el FF cambie al estado correcto. Por ejemplo, considere la situación en la que el estado 101 para el contador CBA debe ir seguido del estado 011. Cuando ocurre el siguiente pulso de reloj, las entradas J y K de los FFs deben estar en los niveles correctos que hagan que el flip-flop C cambie de 1 a 0, que el flip-flop B cambie de 0 a 1 y el flip-flop A de 1 a 1 (es decir, no cambie). En consecuencia, el proceso de diseñar un contador síncrono se convierte en el proceso de diseñar los circuitos lógicos que decodifiquen los diversos estados del contador para suministrar los niveles lógicos apropiados a cada entrada J y K en el tiempo correcto. Las entradas para estos circuitos decodificadores provendrán de las salidas de uno o más FFs. Para ilustrar esto, en el contador síncrono de la figura 7-5 la compuerta AND que alimenta las entradas J y K del flip-flop C decodifica los estados de los flip-flops A y B. De igual forma, la compuerta AND que alimenta las entradas J y K del flip-flop D decodifica los estados de A, B y C. DD = D { (A B C) * Puede omitirse este tema sin afectar la continuidad del resto del libro.
  • 426. Tabla de excitación J-K Antes de comenzar el proceso de diseñar los circuitos decodificadores para cada entrada J y K, primero debemos repasar la operación del flip-flop J-K utilizando un enfoque distinto, conocido como tabla de excitación (tabla 7-3). La columna más a la izquierda en esta tabla lista cada posible transición de salida de un FF. Las colum- nas segunda y tercera listan el estado PRESENTE del FF (simbolizado como Qn) y el estado SIGUIENTE (simbolizado como Qn1) para cada transición. Las últimas dos columnas listan los niveles de J y K requeridos para producir cada transición. Ahora examinemos cada caso. TRANSICIÓN 0 → 0 El estado PRESENTE del FF es 0 y deberá permanecer en 0 cuando se aplique un pulso de reloj. De lo que conocemos acerca de la forma en que funciona un flip-flop J-K, esto puede ocurrir cuando J K 0 (condición sin cambio) o cuando J 0 y K 1 (condición de limpiar). Por ende, J debe estar en 0 pero K puede estar en cualquier nivel. La tabla indica esto con un “0” bajo J y una “X” bajo K. Recuerde que “X” representa la condición de “no importa”. TRANSICIÓN 0 → 1 El estado PRESENTE es 0 y va a cambiar a 1, lo cual puede ocurrir cuando J 1 y K 0 (condición de establecer) o cuando J K 1 (condición de conmutación). En consecuencia, J debe ser 1 pero K puede estar en cualquier nivel para que ocurra la transición. TRANSICIÓN 1 → 0 El estado PRESENTE es 1 y va a cambiar a 0, lo cual puede ocurrir cuando J 0 y K 1, o cuando J K 1. Por lo tanto, K debe ser 1 pero J puede estar en cualquier nivel. TRANSICIÓN 1 → 1 El estado PRESENTE es 1 y va a permanecer en 1, lo cual puede ocurrir cuando J K 0 o cuando J 1 y K 0. Por ende, K debe ser 0 mientras que J puede estar en cualquier nivel. El uso de esta tabla de excitación J-K (tabla 7-3) es una parte imprescindible del procedimiento de diseño de contadores síncronos. Procedimiento de diseño Ahora veremos todo un procedimiento de diseño de un contador síncrono completo. Aunque lo haremos para una secuencia de conteo específica, pueden seguirse los mismos pasos para cualquier secuencia deseada. Paso 1. Determine el número deseado de bits (FFs) y la secuencia de conteo deseada. Para nuestro ejemplo, diseñaremos un contador de tres bits que pasa por la secuencia mostrada en la tabla 7-4. Observe que esta secuencia no incluye los esta- dos 101, 110 y 111. Nos referiremos a éstos como estados indeseables. Paso 2. Dibuje el diagrama de transición de estados que muestre todos los estados posibles, incluyendo aquellos que no forman parte de la secuencia de con- teo deseada. C B A 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 etc. TABLA 7-4 TABLA 7-3 Tabla de excitación de un flip-flop J-K. Transición en la Estado PRESENTE Estado SIGUIENTE salida del FF Qn Qn+1 J K 0 → 0 0 0 0 x 0 → 1 0 1 1 x 1 → 0 1 0 x 1 1 → 1 1 1 x 0 SECCIÓN 7-10/DISEÑO DE UN CONTADOR SÍNCRONO 397
  • 427. 398 CAPÍTULO 7/CONTADORES Y REGISTROS FIGURA 7-26 Diagrama de transición de estados para el ejemplo de diseño de un contador síncrono. 101 110 111 000 001 010 011 100 Para nuestro ejemplo el diagrama de transición de estados aparece como se muestra en la figura 7-26. Los estados 000 a 100 se conectan en la secuencia espe- rada. También hemos incluido un estado SIGUIENTE definido para cada uno de los estados indeseables. Esto se hizo en caso de que el contador llegue por accidente a uno de estos estados al momento del encendido o debido al ruido. El diseñador del circuito puede optar por hacer que cada uno de estos estados indeseables vaya a cualquier estado al momento en el que se aplique el siguiente pulso de reloj. De manera alternativa, el diseñador puede optar por no definir la acción del contador para los estados indeseables. En otras palabras, podríamos no preocuparnos por el estado SIGUIENTE para cualquier estado indeseable. Por lo general, el uso del método de diseño “no importa” antes mencionado producirá un diseño más simple, pero puede ser un problema potencial en la aplicación en donde se vaya a utilizar este contador. Para nuestro ejemplo de diseño optaremos por hacer que todos los estados indeseables se vayan al estado 000. Esto hará que nuestro diseño sea auto- corregible pero algo distinto del ejemplo del contador MOD-5 que analizamos en la sección 7-9. Paso 3. Utilice el diagrama de transición de estados para preparar una tabla que liste todos los estados PRESENTES y sus estados SIGUIENTES. Para nuestro ejemplo, la tabla 7-5 muestra la información. La porción de la izquier- da lista todos los posibles estados, aún aquellos que no forman parte de la secuencia. Vamos a etiquetarlos como los estados PRESENTES. La porción de la derecha lista el estado SIGUIENTE para cada estado PRESENTE. Éstos se obtienen del diagrama de transición de estados de la figura 7-26. Por ejemplo, la línea 1 muestra que el estado TABLA 7-5 Estado PRESENTE Estado SIGUIENTE C B A C B A Línea 1 0 0 0 0 0 1 2 0 0 1 0 1 0 3 0 1 0 0 1 1 4 0 1 1 1 0 0 5 1 0 0 0 0 0 6 1 0 1 0 0 0 7 1 1 0 0 0 0 8 1 1 1 0 0 0
  • 428. PRESENTE 000 tiene el estado SIGUIENTE 001, y la línea 5 muestra que el esta- do PRESENTE 100 tiene el estado SIGUIENTE 000. Las líneas 6, 7 y 8 muestran que los estados PRESENTES indeseables 101, 110 y 111 tienen todos el estado SIGUIENTE 000. Paso 4. Añada una columna a esta tabla para cada entrada J y K. Para cada esta- do PRESENTE, indique los niveles requeridos en cada entrada J y K para poder producir la transición al estado SIGUIENTE. Nuestro ejemplo de diseño utiliza tres FFs (C, B y A) y cada uno de ellos tiene una entrada J y K. Por lo tanto, debemos agregar seis nuevas columnas como se muestra en la tabla 7-6. A esta tabla completa se le conoce como la tabla de exci- tación del circuito. Las seis nuevas columnas son las entradas J y K de cada FF. Las entradas bajo cada J y K se obtienen de la tabla 7-3, la tabla de excitación del flip-flop J-K que desarrollamos antes. Demostraremos esto para varios de los casos y usted podrá verificar el resto. Veamos la línea 1 en la tabla 7-6. El estado PRESENTE 000 va a cambiar al estado SIGUIENTE 001 cuando ocurra un pulso de reloj. Para esta transición de estado, el flip-flop C cambia de 0 a 0. De la tabla de excitación J-K podemos ver que JC debe estar en 0 y KC en “X” para que ocurra esta transición. El flip-flop B también cambia de 0 a 0, por lo que JB 0 y KB X. El flip-flop A cambia de 0 a 1.También de la tabla 7-3 podemos ver que JA 1 y KA x para esta transición. En la línea 4 de la tabla 7-6, el estado PRESENTE 011 tiene un estado SIGUIENTE de 100. Para esta transición de estado, el flip-flop C cambia de 0 a 1, para lo cual requiere que JC 1 y KC x. Los flip-flops A y B cambian de 1 a 0. La tabla de excitación J-K indica que estos dos FFs necesitan que J X y K 1 para que esto ocurra. Los niveles requeridos de J y K para las demás líneas de la tabla 7-6 pueden determinarse de la misma forma. Paso 5. Diseñe los circuitos lógicos necesarios para generar los niveles requeridos en cada entrada J y K. La tabla 7-6 (la tabla de excitación del circuito) lista seis entradas J, K: JC, KC, JB, KB, JA y KA. Debemos considerar cada una de éstas como una salida de su propio circuito lógico con entradas de los flip-flops C, B y A. Después debemos diseñar el circuito para cada una. Vamos a diseñar el circuito para JA. Para ello, necesitamos analizar los estados PRESENTES de C, B y A, y los nive- les deseados en JA para cada caso. Hemos extraído esta información de la tabla 7-6 y la presentamos en la figura 7-27(a). La tabla de verdad muestra los niveles deseados en JA para cada estado PRESENTE. Desde luego que para algunos de los casos, JA es TABLA 7-6 Tabla de excitación del circuito. Estado PRESENTE Estado SIGUIENTE C B A C B A JC KC JB KB JA KA Línea 1 0 0 0 0 0 1 0 x 0 x 1 x 2 0 0 1 0 1 0 0 x 1 x x 1 3 0 1 0 0 1 1 0 x x 0 1 x 4 0 1 1 1 0 0 1 x x 1 x 1 5 1 0 0 0 0 0 x 1 0 x 0 x 6 1 0 1 0 0 0 x 1 0 x x 1 7 1 1 0 0 0 0 x 1 x 1 0 x 8 1 1 1 0 0 0 x 1 x 1 x 1 SECCIÓN 7-10/DISEÑO DE UN CONTADOR SÍNCRONO 399
  • 429. 400 CAPÍTULO 7/CONTADORES Y REGISTROS FIGURA 7-27 (a) Porción de la tabla de excitación del circuito que muestra a JA para cada estado PRESENTE; (b) mapa K utilizado para obtener la expresión simplificada para JA. C 0 0 0 0 1 1 1 1 B 0 0 1 1 0 0 1 1 A 0 1 0 1 0 1 0 1 JA 1 x 1 x 0 x 0 x PRESENTE (a) 1 X 1 X 0 X 0 X C B C B C B C B A A C J = A (b) una condición de “no importa”. Para desarrollar el circuito lógico para JA primero debemos determinar su expresión en términos de C, B y A. Para ello vamos a trans- ferir la información de la tabla de verdad a un mapa de Karnaugh de tres variables y realizaremos la simplificación del mapa K, como se muestra en la figura 7-27(b). Sólo hay dos 1s en este mapa K, y éstos pueden agruparse para obtener el térmi- no A C pero si utilizamos las condiciones de “no importa” en A B C y en ABC como 1s, podremos agrupar un cuádruple para obtener el término C más simple. Por ende, la expresión final es JA C Ahora vamos a considerar a KA. Podemos seguir los mismos pasos que para JA. No obstante, un análisis de las entradas bajo KA en la tabla de excitación del circui- to nos muestra sólo valores de 1 y “no importa”. Si cambiamos todos los valores “no importa” por 1s, entonces KA siempre será 1. Por lo tanto, la expresión final es KA 1 De manera similar, podemos derivar las expresiones para JC, KC, JB y KB. Los mapas K para estas expresiones se proporcionan en la figura 7-28. Tal vez usted quiera confirmar que estén correctos, comparándolos con la tabla de excitación del circuito. Paso 6. Implemente las expresiones finales. Los circuitos lógicos para cada entrada J y K se implementan a partir de las expresiones que se obtienen del mapa K. El diseño completo del contador síncrono se implementa en la figura 7-29. Observe que todos los FFs están sincronizados en paralelo. Tal vez quiera verificar que la lógica para las entradas J y K concuerde con las figuras 7-27 y 7-28. FIGURA 7-28 (a) Mapas K para los circuitos lógicos JB y KB; (b) mapas K para los circuitos lógicos JC y KC. (a) K = 1 C 0 0 0 1 X X X X C B C B C B C B A A J = B A C X X X X 1 1 1 1 C B C B C B C B A A (b) 0 1 X X X X 0 0 C B C B C B C B A A C A J = B X X 0 1 1 1 X X C B C B C B C B A A K = C + A B
  • 430. FIGURA 7-29 Implementación final del ejemplo del diseño del contador síncrono. A JA KA CLK A B JB KB CLK B C JC KC CLK C 1 1 RELOJ AB FIGURA 7-30 (a) Un contador síncrono suministra las salidas secuenciales apropiadas para controlar un motor a pasos; (b) diagramas de transición de estados para ambos estados de la entrada de Dirección, D. 11 10 00 01 (b) Amplifica- dores de corriente Rotación CCW D = 1 11 10 00 01 Rotación CW D = 0 BA BA Serpentín 1 2 3 4 Contador síncrono A A B B D (Entrada de Dirección) Paso (reloj) Serpentín 1 2 3 4 Motor a pasos (a) Control de un Motor a Pasos Ahora aplicaremos este procedimiento de diseño a una situación práctica: el control de un motor a pasos. Este tipo de motor gira en pasos, por lo general, de 15° por paso, en vez de girar en un movimiento continuo. Los serpentines o devanados magnéti- cos dentro del motor deben energizarse y desenergizarse en una secuencia especí- fica para poder producir esta acción de movimiento paso a paso. Por lo general, se utilizan señales digitales para controlar la corriente en cada uno de los serpentines del motor. Los motores a pasos se utilizan mucho en situaciones en las que se requie- re un control preciso de posición, como en el posicionamiento de las cabezas de lectura/escritura en los discos magnéticos, en el control de las cabezas de impresión en impresoras, y en los robots. La figura 7-30(a) es un diagrama de un motor a pasos ordinario con cuatro ser- pentines. Para que el motor gire en forma apropiada, los serpentines 1 y 2 deben SECCIÓN 7-10/DISEÑO DE UN CONTADOR SÍNCRONO 401
  • 431. 402 CAPÍTULO 7/CONTADORES Y REGISTROS JB = DA + DA 0 1 1 0 x x x x BA BA BA BA D D x x x x 0 1 1 0 BA BA BA BA D D (a) = D ⊕ A KB = DA + DA = D ⊕ A 1 0 x x x x 0 1 BA BA BA BA D D JA = DB + DB x x 0 1 1 0 x x BA BA BA BA D D (b) = D ⊕ B KA = DB + DB = D ⊕ B FIGURA 7-31 (a) Mapas K para JB y KB; (b) mapas K para JA y KA. estar siempre en estados opuestos; esto es, cuando el serpentín 1 está energizado, el serpentín 2 no lo está y viceversa. De igual forma, los serpentines 3 y 4 deben estar siempre en estados opuestos. Las salidas de un contador síncrono de dos bits se utilizan para controlar la corriente en los cuatro serpentines; A y A controlan los serpentines 1 y 2; B y B controlan los serpentines 3 y 4. Los amplificadores de corriente son necesarios ya que las salidas de los FFs no pueden suministrar la cantidad de corriente que requieren los serpentines. Como este motor a pasos puede girar ya sea en sentido a favor de las mane- cillas del reloj (CW) o en contra de las manecillas del reloj (CCW), tenemos una entrada de Dirección (D) que se utiliza para controlar la dirección de rotación. Los diagramas de estado en la figura 7-30(b) muestran los dos casos. Para que ocurra la rotación CW debemos tener D 0, y el estado del contador BA debe seguir la secuencia 11, 10, 00, 01, 11, 10,…, y así en lo sucesivo, a medida que se sincroniza mediante la señal de entrada Paso. Para la rotación CCW, D 1 y el contador debe seguir la secuencia 11, 01, 00, 10, 11, 01,…., y así en lo sucesivo. TABLA 7-7 Estado PRESENTE Estado SIGUIENTE Entradas de control D B A B A JB KB JA KA 0 0 0 0 1 0 x 1 x 0 0 1 1 1 1 x x 0 0 1 0 0 0 x 1 0 x 0 1 1 1 0 x 0 x 1 1 0 0 1 0 1 x 0 x 1 0 1 0 0 0 x x 1 1 1 0 1 1 x 0 1 x 1 1 1 0 1 x 1 x 0
  • 432. Ahora estamos listos para seguir los seis pasos del procedimiento de diseño de contadores síncronos. Ya hemos realizado los pasos 1 y 2, por lo que podemos proceder con los pasos 3 y 4. La tabla 7-7 muestra cada uno de los posibles estados PRESENTEs de D, B y A, y el estado SIGUIENTE deseado, junto con los niveles en cada entrada J y K necesarios para lograr las transiciones. En todos los casos, la entrada de Dirección D no cambia al pasar del estado PRESENTE al estado SIGUIENTE ya que es una entrada independiente que se mantiene en ALTO o en BAJO, a medida que el contador avanza a través de su secuencia. El paso 5 del proceso de diseño se presenta en la figura 7-31, en donde la información de la tabla 7-7 se ha transferido a los mapas K que muestran cómo cada señal J y K está relacionada con los PRESENTES estados de D, B y A. Usando el agrupamiento apropiado se obtienen las expresiones lógicas simplificadas para cada señal J y K. El paso final se muestra en la figura 7-32, en donde el contador síncrono de dos bits se implementa mediante el uso de las expresiones J, K que se obtuvieron de los mapas K. Diseño de un contador síncrono con un FF D Hemos proporcionado un procedimiento detallado para diseñar contadores síncro- nos mediante flip-flops K. Siempre se han utilizado los flip-flops J-K para implemen- tar contadores debido a que los circuitos lógicos necesarios para las entradas J y K son, por lo general, más simples que los circuitos lógicos necesario para controlar un contador síncrono equivalente mediante flip-flops D. Al diseñar contadores que se van a implementar en PLDs, en donde, por lo general, hay una cantidad abundante de compuertas disponibles, es conveniente usar flip-flops D en vez de J-K. Veamos ahora el diseño de contadores síncronos mediante el uso de FFs D. Este método de diseño de circuitos contadores es aún más sencillo que utilizar flip-flops J-K. Para demostrar esto vamos a diseñar un circuito con FFs D que pro- duzca la misma secuencia de conteo que se muestra en la figura 7-26. Los primeros tres pasos para el diseño de contadores D síncronos son idénticos a la técnica con flip-flops J-K. El paso 4 para el diseño con FFs D es trivial, ya que las entradas D necesarias son las mismas que el estado SIGUIENTE deseado, como puede verse en la tabla 7-8. El paso 5 es generar las expresiones lógicas a partir de la tabla de estado PRESENTE / estado SIGUIENTE para las entradas D. La figura 7-33 muestra Paso D (Dirección) B B CLK JB KB A A CLK JA KA B B A A A los amplificadores de corriente (Fig. 7-30) FIGURA 7-32 Contador síncrono implementado a partir de las ecuaciones J, K. SECCIÓN 7-10/DISEÑO DE UN CONTADOR SÍNCRONO 403
  • 433. 404 CAPÍTULO 7/CONTADORES Y REGISTROS PREGUNTAS DE REPASO los mapas K y las expresiones simplificadas. Por último, para el paso 6 puede imple- mentarse el contador con el circuito que se muestra en la figura 7-34. 1. Liste los seis pasos en el procedimiento para diseñar un contador síncrono. 2. ¿Qué información contiene una tabla de estado PRESENTE / estado SIGUIEN- TE? 3. ¿Qué información contiene la tabla de excitación del circuito? 4. Verdadero o falso: el procedimiento de diseño de un contador síncrono puede utilizarse para la siguiente secuencia: 0010, 0011, 0100, 0111, 1010, 1110, 1111 y se repite. TABLA 7-8 Estado PRESENTE Estado SIGUIENTE Entradas de control C B A C B A DC DB DA 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 C B C B C B C B A A 0 0 0 1 0 0 0 0 C B C B C B C B A A C B A D = C C B A + C B A D = B C A D = A 0 1 1 0 0 0 0 0 C B C B C B C B A A FIGURA 7-33 Los mapas K y las expresiones lógicas simplificadas para el diseño de contadores MOD-5 con flip-flops. RELOJ C C D B B D CLK CLK B C A DA DB DC A A D CLK FIGURA 7-34 Implementación del circuito del diseño de un contador MOD-5 con flip-flops D.
  • 434. 7-11 CONTADORES BÁSICOS MEDIANTE EL USO DE HDL En el capítulo 5 estudiamos los flip-flops y los métodos que se utilizan con los HDLs para representar los circuitos con flip-flops. La última sección en el capítulo 5 ilus- tró cómo conectar componentes de FF de una forma muy parecida a como se conec- tan los circuitos integrados entre sí. Al conectar la salida Q de un FF con la entrada de reloj del siguiente FF descubrimos que podía crearse un circuito. Al proceso de utilizar un HDL para describir las conexiones de los componentes se le conoce como el nivel estructural de abstracción. Es obvio que sería muy tedioso construir un cir- cuito complicado mediante el uso de los métodos estructurales; además sería muy difícil de leer y de interpretar. En esta sección ampliaremos nuestro uso de HDL para describir circuitos mediante el uso de métodos que se consideran niveles más altos de abstracción. Este término suena intimidante, pero sólo significa que hay muchas formas más concisas y sensibles de describir lo que queremos que haga un contador, sin necesidad de preocuparnos por los detalles acerca de cómo cablear circuitos de flip-flops para hacerlo. Aún es vital que comprendamos los principios fundamentales de la operación de los flip-flops, en comparación con las compuertas lógicas combinacionales. Como podrá recordar, los flip-flops tienen las siguientes características únicas. Por lo general, la salida se actualiza de acuerdo con la condición de las entradas de control síncronas cuando se produce el flanco activo del reloj, lo cual significa que hay un estado lógico en la salida Q antes del flanco del reloj (estado PRESENTE) y es posi- ble que haya un estado distinto en la salida Q después del flanco del reloj (estado SIGUIENTE). Un flip-flop “recuerda” o retiene su estado entre los pulsos de reloj, sin importar los cambios en las entradas de control síncronas (por ejemplo, J y K). Los circuitos tipo contador que utilizan HDL se basan en esta comprensión básica de un circuito que pasa a través de una secuencia de estados en respuesta al evento de un flanco de reloj. Los contadores de rizo proporcionan un circuito fácil de analizar y de comprender. También son mucho menos complicados de construir mediante el uso de flip-flops y compuertas lógicas, en comparación con sus con- trapartes síncronos. El problema con los contadores de rizo es la combinación del retraso de tiempo y los estados temporales espurios que ocurren cuando el contador cambia de estado. Cuando avancemos al siguiente nivel de abstracción y planeemos usar PLDs para implementar nuestro diseño, ya no nos enfocaremos en las cues- tiones relacionadas con el cableado, sino en describir la operación del circuito en forma concisa. En consecuencia, los métodos que utilizamos para describir circuitos tipo contador mediante el uso de HDL utilizan en su mayor parte técnicas síncro- nas, en las que todos los flip-flops se actualizan simultáneamente, en respuesta al mismo evento de reloj.Todos los bits en una secuencia de conteo pasan de su estado PRESENTE a su estado SIGUIENTE prescrito simultáneamente, previniendo, por lo tanto, cualquier estado espurio inmediato. Métodos de descripción de transición de estados El siguiente método para describir circuitos que necesitamos examinar utiliza tablas. Este método no se relaciona con la conexión de los puertos de los com- ponentes, sino con la asignación de valores a objetos tales como puertos, señales y variables. En otras palabras, describe la manera en que los datos de salida se relacionan con los datos de entrada en el circuito. Ya hemos utilizado este método en varios de los circuitos introductorios en los capítulos 3 y 4, en forma de tablas de verdad. Con los circuitos tipo contador secuencial el equivalente de la tabla de verdad es la tabla de estado PRESENTE / estado SIGUIENTE, como vimos en la sección anterior. En esencia, podemos utilizar el HDL para describir la tabla de estado PRESENTE / estado SIGUIENTE y evitar así los tediosos detalles de generar las ecuaciones booleanas, como lo hicimos en la sección 7-10 para diseñar usando dispositivos lógicos estándar. SECCIÓN 7-11/CONTADORES BÁSICOS MEDIANTE EL USO DE HDL 405
  • 435. 406 CAPÍTULO 7/CONTADORES Y REGISTROS 1 SUBDESIGN fig7 35 2 ( 3 reloj :INPUT; 4 q[2..0] :OUTPUT; 5 ) 6 VARIABLE 7 conteo[2..0] :DFF; crea un registro de 3 bits 8 BEGIN 9 conteo[].clk reloj; conecta todos los relojes en paralelo 10 11 CASE conteo[] IS 12 Presente Siguiente 13 14 WHEN 0 conteo[].d 1; 15 WHEN 1 conteo[].d 2; 16 WHEN 2 conteo[].d 3; 17 WHEN 3 conteo[].d 4; 18 WHEN 4 conteo[].d 0; 19 WHEN OTHERS conteo[].d 0; 20 END CASE; 21 q[] conteo[]; asigna el registro a las terminales de salida 22 END; FIGURA 7-35 Contador MOD-5 en AHDL. DESCRIPCIONES DE ESTADO EN AHDL Como ejemplo de un circuito contador simple, implementaremos el contador MOD-5 de la figura 7-26 en AHDL. Las entradas y las salidas se definen en la sección SUBDESIGN de la figura 7-35, como siempre. En la sección VARIABLE de la línea 7 hemos declarado (o instanciado) un arreglo de tres bits de primitivas DFF, las cua- les reciben el nombre de instancia conteo[ ]. Este arreglo se tratará como un registro de tres bits en el diseño; en esencia, definiremos qué valor debe almacenarse para cada estado SIGUIENTE. Como éste es un contador síncrono, necesitamos enlazar todas las entradas clk de cada DFF con la entrada reloj de SUBDESIGN. Esto se logra en AHDL mediante la siguiente instrucción en la sección lógica: conteo[ ].clk reloj; Las primitivas de flip-flop que se proporcionan en AHDL tienen entradas y sali- das estándar, a las cuales se les conoce como “puertos”. Estos puertos se etiquetan con base en un nombre estándar de puerto que se adjunta al nombre de instancia de los flip-flops. Como puede ver en la tabla 5-3, el nombre del puerto de reloj es .clk, una entrada D se llama .d y la salida del FF tiene el nombre .q. Para implementar la tabla de estado PRESENTE / estado SIGUIENTE se utiliza una instrucción CASE. Para cada uno de los posibles valores del registro conteo[ ] determinamos el valor que debe colocarse en las entradas D de los flip-flops, el cual determinará el estado SIGUIENTE del contador. La instrucción en la línea 21 asigna el valor en conteo[ ] a las terminales de salida. Sin esta línea el contador quedaría “oculto” en el bloque SUBDESIGN y no sería visible para el mundo exterior. En la figura 7-36 se muestra una solución de diseño alternativa. Hay dos modi- ficaciones de la figura 7-35. La primera se ve en la línea 7, en donde el nombre del arreglo para los flip-flops D es ahora el mismo que el puerto de salida para el bloque SUBDESIGN. A H D L
  • 436. FIGURA 7-36 Otra versión del contador MOD-5 descrito en la figura 7-26. 1 SUBDESIGN fig7 36 2 ( 3 reloj :INPUT; 4 q[2..0] :OUTPUT; 5 ) 6 VARIABLE 7 q[2..0] :DFF; crea un registro de 3 bits 8 BEGIN 9 q[].clk reloj; conecta todos los relojes en paralelo 10 TABLE 11 q[].q q[].d; 12 0 1; 13 1 2; 14 2 3; 15 3 4; 16 4 0; 17 5 0; 18 6 0; 19 7 0; 20 END TABLE; 21 END; Esto conectará automáticamente las salidas del flip-flop a las salidas de SUBDESIGN y eliminará la necesidad de incluir una instrucción de asignación como la línea 21 en la primera solución. La segunda modificación es el uso de una instrucción TABLE de AHDL en vez de la instrucción CASE utilizada en la figura 7-35. En la línea 11, el puerto .q en el arreglo DFF q[ ] representa el lado del estado PRESENTE de la tabla, mientras que el puerto .d para q[ ] representa el estado SIGUIENTE que se introducirá en el conjunto de entradas D del arreglo, cuando se aplique una PGT a reloj. DESCRIPCIONES DE ESTADO ENVHDL Como ejemplo de un circuito de contador simple, implementaremos el contador MOD-5 de la figura 7-26 enVHDL. Nuestro fin en este ejemplo es demostrar un con- tador mediante una estructura de control similar a una tabla de estado PRESENTE / estado SIGUIENTE. En VHDL se deben realizar dos tareas clave: detectar el flanco de reloj deseado y asignar el estado SIGUIENTE apropiado al contador. En capí- tulos anteriores sobre flip-flops vimos que puede usarse un bloque PROCESS para responder a una transición de una señal de entrada. Además aprendimos que una instrucción CASE puede evaluar una expresión y, para cualquier valor de entrada válido, asignar un valor correspondiente a otra señal. El código de la figura 7-37 utiliza una instrucción PROCESS y una instrucción CASE para implementar este contador. Las entradas y salidas están definidas en la declaración ENTITY, como en ejemplos pasados. Cuando se utiliza VHDL para describir un contador, debemos encontrar una manera de “almacenar” el estado del contador entre los pulsos de reloj (es decir, la acción de un flip-flop). Esto se hace en una de dos formas: mediante señales (instrucción SIGNAL) o mediante variables (instrucción VARIABLE). Hemos usado señales SIGNAL con frecuencia en ejemplos anteriores que operaban en forma concu- rrente. Una señal en VHDL retiene el último valor que se le asignó, en forma muy parecida a un flip-flop. En consecuencia, podemos usar una señal como objeto de datos para representar el valor del contador. Después, esta señal puede usarse para V H D L SECCIÓN 7-11/CONTADORES BÁSICOS MEDIANTE EL USO DE HDL 407
  • 437. 408 CAPÍTULO 7/CONTADORES Y REGISTROS 1 ENTITY fig7 37 IS 2 PORT ( 3 reloj :IN BIT; 4 q :OUT BIT VECTOR(2 DOWNTO 0) 5 ); 6 END fig7 37 ; 7 8 ARCHITECTURE a OF fig7 37 IS 9 BEGIN 10 PROCESS (reloj) responde a la entrada clk 11 VARIABLE conteo: BIT VECTOR(2 DOWNTO 0); crea un registro de 3 bits 12 BEGIN 13 IF (reloj '1' AND reloj'EVENT) THEN disparo en flanco de subida 14 CASE conteo IS 15 Presente Siguiente 16 17 WHEN 000 conteo : 001; 18 WHEN 001 conteo : 010; 19 WHEN 010 conteo : 011; 20 WHEN 011 conteo : 100; 21 WHEN 100 conteo : 000; 22 WHEN OTHERS conteo : 000; 23 END CASE; 24 END IF; 25 q conteo; asigna el registro a las terminales de salida 26 END PROCESS; 27 END a; FIGURA 7-37 Contador MOD-5 en VHDL. conectar el valor del contador con cualquier otro elemento en la descripción de la arquitectura. En este diseño hemos optado por usar una VARIABLE en lugar de una señal (SIGNAL) como el objeto de datos que almacena el valor del contador. Las VARIABLEs no son idénticas a las señales porque no se utilizan para conectar diversas partes del diseño. En vez de ello se utilizan como una ubicación local para “almacenar” un valor. Las variables se consideran como objetos de datos locales, ya que se reconocen sólo dentro del bloque PROCESS en el que se declaran. En la línea 11 de la figura 7-37 se declara la variable llamada conteo dentro del bloque PROCESO, antes de la instrucción BEGIN. Su tipo es el mismo que el del puerto de salida q. La palabra clave PROCESS en la línea 10 va seguida de la lista de sensi- bilidad que contiene la señal de entrada reloj. Cada vez que reloj cambia de estado se invoca el bloque PROCESS y se evalúan las instrucciones dentro de PROCESS para producir un resultado. Un atributo ‘EVENT se evaluará como VERDADERO si la señal que va antes de él acaba de cambiar de estado. La línea 13 establece que si reloj acaba de cambiar de estado y justo ahora es ‘1’, entonces sabemos que fue un flanco de subida. Para implementar la tabla de estado PRESENTE/estado SIGUIENTE se utiliza una instrucción CASE. Para cada uno de los posibles valores de la variable conteo determinamos el estado SIGUIENTE del contador. Observe que se utiliza el operador “” para asignar un valor a una variable. La línea 25 asigna el valor almacenado en conteo a las terminales de salida. Como conteo es una variable local, esta asignación debe realizarse antes de la instrucción END PROCESS en la línea 26.
  • 438. 1 1 0 0 Elemento 3 conteo[3] MSB Elemento 2 conteo[2] Elemento 1 conteo[1] Elemento 0 conteo[0] LSB VARIABLE conteo[3..0] :DFF; FIGURA 7-38 Los elementos de un registro D, en el que se almacena el número 9. Descripción del comportamiento El nivel de abstracción de comportamiento es una manera de describir un circui- to mediante la descripción de su comportamiento en términos muy similares a la manera en que podría describirse su operación en español. Piense acerca de la forma en que podría describirse la operación de un circuito contador por alguien que no conozca nada acerca de los flip-flops o las compuertas lógicas. Tal vez la descripción de esa persona sería algo así como: “Cuando la entrada del contador cambie de BAJO a ALTO, el número en la salida cuenta en forma ascendente por 1”. Este nivel de descripción se relaciona más con las relaciones de causa y efecto que con la ruta del flujo de datos o los detalles del cableado. Sin embargo, en realidad no podemos tan solo utilizar cualquier descripción en español para describir el comportamiento del circuito. Debe utilizarse la sintaxis apropiada dentro de las restricciones del HDL. AHDL En AHDL, el primer paso importante en este método de descripción es declarar las terminales de salida del contador en forma apropiada. Deben declararse como un arreglo de bits, en donde los índices se decrementen de izquierda a derecha y 0 sea el índice menos significativo en el arreglo, algo opuesto a los bits individuales llamados a, b, c, d, y así en lo sucesivo. De esta forma, el valor numérico asociado con el nombre del arreglo de bits se interpreta como un número binario con base en el cual pueden realizarse ciertas operaciones aritméticas. Por ejemplo, el arreglo de bits conteo que se muestra en la figura 7-38 podría contener los bits 1001, como se muestra. El compilador de AHDL interpreta este patrón de bits como si tuviera el valor de 9 en decimal. Para poder crear nuestro contador MOD-5 en AHDL, necesitaremos un registro de tres bits que almacene el estado actual del contador. Este arreglo de tres bits, al cual llamaremos conteo, se declara mediante el uso de flip-flops D en la línea 7 de la figura 7-39. Si recuerda de la figura 7-36, podemos nombrar el arreglo DFF igual que el puerto de salida q[2..0] y en consecuencia eliminar la línea 15, pero también tendríamos que cambiar conteo[ ] por q[ ] en cualquier parte en donde aparezca dentro de la sección lógica. En otras palabras, la instrucción de la línea 7 puede cambiarse por q[2..0] :DFF;. Si hiciéramos esto, todas las referencias a conteo a partir de ese punto se cambiarían por q. Esto puede hacer que el código sea más corto, pero no demuestra los con- ceptos universales de HDL con tanta claridad. En AHDL todos los relojes pueden especificarse como si estuvieran enlazados entre sí y conectados a una fuente de reloj común, mediante el uso de la instrucción de la línea 10, conteo[ ].clk reloj. En este ejemplo, conteo[ ].clk hace referencia a la entrada de reloj de cada flip-flop en el arreglo llamado conteo. La descripción del comportamiento de este contador es muy simple. El estado actual del contador se evalúa (conteo[ ].q) en la línea 11, y si es menor que el valor de conteo deseado más alto, utiliza la descripción conteo[ ].d conteo.q 1 (línea 12). Esto significa que el estado actual de las entradas D debe ser igual a un valor que sea un conteo mayor que el estado actual de las salidas Q. Cuando el estado actual del contador ha llegado al estado deseado más alto (o mayor), la prueba de la instrucción IF será falsa y se producirá un valor de cero en la entrada del estado A H D L SECCIÓN 7-11/CONTADORES BÁSICOS MEDIANTE EL USO DE HDL 409
  • 439. 410 CAPÍTULO 7/CONTADORES Y REGISTROS FIGURA 7-40 Descripción del comportamiento de un contador en VHDL. 1 ENTITY fig7 40 IS 2 PORT( reloj :IN BIT; 3 q :OUT INTEGER RANGE 0 TO 7 ); 4 END fig7 40; 5 6 ARCHITECTURE a OF fig7 40 IS 7 BEGIN 8 PROCESS (reloj) 9 VARIABLE conteo: INTEGER RANGE 0 to 7; define una VARIABLE numérica 10 BEGIN 11 IF (reloj '1' AND reloj'EVENT) THEN flanco ascendente? 12 IF conteo 4 THEN menor que máx? 13 conteo : conteo 1; incrementa el valor 14 ELSE debe estar en máx o mayor 15 conteo : 0; se recicla a cero 16 END IF; 17 END IF; 18 q conteo; transfiere el contenido del registro a las salidas 19 END PROCESS; 20 END a; 1 SUBDESIGN fig7 39 2 ( 3 reloj :INPUT; 4 q[2..0] :OUTPUT; declara arreglo de 3 bits de los bits de salida 5 ) 6 VARIABLE 7 conteo[2..0] :DFF; declara un registro de flip flops D. 8 9 BEGIN 10 conteo[].clk reloj; conecta todos los relojes a la fuente síncrona 11 IF conteo[].q 4 THEN nota; conteo[ ] es lo mismo que conteo[ ].q 12 conteo[].d conteo[].q 1; incrementa en uno el valor actual 13 ELSE conteo[].d 0; se recicla a cero: fuerza los estados no usados a 0 14 END IF; 15 q[] conteo[]; transfiere el contenido del registro a las salidas 16 END; FIGURA 7-39 Descripción del comportamiento de un contador en AHDL SIGUIENTE (línea 13), con lo cual se reciclará el contador. La última instrucción en la línea 15 sólo conecta el valor del contador con las terminales de salida del dispositivo. VHDL En VHDL el primer paso importante en este método de descripción es declarar en forma apropiada el puerto de salida del contador, como se muestra en la figura 7-40. El tipo de datos del puerto de salida (línea 3) debe concordar con el tipo de la V H D L
  • 440. PREGUNTAS DE REPASO variable del contador (línea 9) y debe ser un tipo que permita operaciones aritmé- ticas. Recuerde que VHDL trata a los objetos BIT_VECTOR como una cadena de bits, no como una cantidad numérica binaria. Para poder reconocer la señal como una cantidad numérica, el objeto de datos debe escribirse como tipo INTEGER. El compilador busca en la cláusula RANGE 0 TO 7 de la línea 3 y sabe que el contador necesita tres bits. Se necesita una declaración similar para la variable del registro en la línea 9, para que cuente hacia arriba. A ésta se le llamará conteo. La primera instrucción después de BEGIN en el bloque PROCESS responde al flanco de subida del reloj, como en los ejemplos anteriores. Después utiliza métodos de descripción del comportamiento para definir la respuesta del contador al flanco del reloj. Si el contador no ha llegado a su máximo (línea 12) entonces deberá incrementarse (línea 13). En caso contrario (línea 14) deberá reciclar el contador a cero (línea 15). La última instrucción en la línea 18 sólo conecta el valor del contador con las terminales de salida del dispositivo. Simulación de contadores básicos La simulación de cualquiera de nuestros diseños de contadores MOD-5 es bastante simple. Los contadores sólo tienen un bit de entrada (reloj) y tres bits de salida (q2 q1 q0) para mostrar en la simulación. La frecuencia de reloj no se ha especificado, por lo que podemos utilizar cualquier frecuencia que queramos para una simu- lación funcional; aunque tal vez deberíamos evitar un reloj de alta frecuencia, a menos que se desee investigar los efectos de los retrasos de propagación. La única decisión que debemos hacer es cuántos pulsos aplicar. Como el contador es MOD-5, debemos aplicar por lo menos cinco pulsos de reloj para verificar que el diseño de HDL tenga la secuencia de conteo correcta y que se recicle. Empezaremos la simu- lación con el estado inicial 000, ya que los PLDs de Altera tienen una característica de reinicio de encendido integrada. No podremos probar cualquiera de los estados no usados, ya que los diseños de HDL no proporcionan la manera de prestablecer el contador a cualquiera de los estados no usados. En la figura 7-41 se muestran los resultados que obtuvimos con nuestra simulación para el diseño en HDL de un contador MOD-5. 1. ¿Qué tipo de tabla se utiliza para describir la operación de un contador? 2. Al diseñar un contador con flip-flops D, ¿qué se aplica a las entradas D para poder excitarlo hacia el estado SIGUIENTE en el siguiente flanco activo del reloj? 3. ¿Cómo escribiría la descripción en HDL para disparar un dispositivo de alma- cenamiento (flip-flop) en un flanco de caída, en vez de un flanco de subida del reloj? 4. ¿Qué método describe la operación del circuito mediante el uso de relaciones tipo causa y efecto? 2.0 ms 4.0 ms 6.0 ms 8.0 ms 10.0 ms 12.0 ms 14.0 ms reloj 1 0 0 0 q0 q1 q2 FIGURA 7-41 Resultados de la simulación para el diseño en HDL de un contador MOD-5. SECCIÓN 7-11/CONTADORES BÁSICOS MEDIANTE EL USO DE HDL 411
  • 441. 412 CAPÍTULO 7/CONTADORES Y REGISTROS 7-12 CONTADORES CON TODAS LAS CARACTERÍSTICAS EN HDL Los ejemplos que hemos elegido hasta ahora han sido de contadores muy básicos. Todo lo que hacen es contar hasta cuatro y luego se regresan a cero. Los contadores de CI estándar que hemos examinado tienen muchas otras características que los hacen muy útiles para numerosas aplicaciones digitales. Por ejemplo, considere los contadores de CI 74161 y 74191 que vimos en la sección 7-7. Estos dispositivos tienen combinaciones de varias características, incluyendo la habilitación del conteo, el conteo ascendente/descendente, la carga en paralelo (se prestablece a cualquier conteo) y el borrado. Además, estos contadores se han diseñado para conectarse en cascada con facilidad y en forma síncrona para crear contadores más grandes. En esta sección exploraremos las técnicas que nos permitirán incluir esas características en un contador de HDL. Vamos a crear un contador que combinará más características de las que se encuentran ya sea en el 74161 o en el 74191. Utilizaremos este ejemplo para demostrar los métodos de diseño de un contador con capacidades que se adap- ten en forma específica a nuestras necesidades. Cuando utilizamos HDLs para crear diseños digitales, no estamos limitados a las características que suelen incluirse con cierto CI. Vamos a revisar las especificaciones para nuestro ejemplo de un contador más complejo. El contador binario MOD-16 reciclable debe cambiar de estado en el flan- co de subida de la entrada de reloj cuando el contador esté habilitado en un nivel ALTO. Una entrada de control de dirección hará que el contador cuente en forma ascendente cuando esté en BAJO, o que cuente en forma descendente cuando esté en ALTO. El contador tendrá una señal de limpiar asíncrona, activa en ALTO, para restablecer el contador de inmediato cuando la entrada de control se active. El con- tador puede cargarse en forma síncrona con un número en las terminales de entra- da de datos cuando el control de carga está en ALTO. La prioridad de las funciones de control de entrada, de mayor a menor, serán borrar, cargar y contar. Por último, el contador también incluirá una salida activa en ALTO que detecte su estado ter- minal cuando esté habilitada la función de conteo. Recuerde que el estado terminal dependerá de la dirección de conteo. Como veremos, la correcta operación de estas características se determina en base a la forma en que escribimos el código de HDL, por lo que tendremos que poner mucha atención a los detalles. CONTADOR CONTODAS LAS CARACTERÍSTICAS EN AHDL El código de la figura 7-42 implementa todas las características de las que hemos hablado. Es un contador de cuatro bits, pero puede expandirse en tamaño con facilidad. Analice las entradas y salidas de las líneas 3 y 4 para asegurarse de com- prender lo que se supone debe hacer cada una. Si no lo entiende, vuelva a leer los párrafos anteriores de esta sección. La línea 7 define un registro de cuatro bits con flip-flops D, el cual servirá como contador. Debemos observar de nuevo aquí que este registro podría haberse llamado de igual forma que la variable de entrada (q). El código está escrito con distintos nombres para diferenciar los puertos (entradas y salidas) del circuito y los dispositivos que operan dentro del mismo. La entrada de reloj está conectada a todas las entradas clk de todos los flip-flops D en la línea 10. Todas las entradas borrar activas en BAJO (clrn) que van a la primitiva DFF están conectadas al complemento de la señal de entrada borrar en la línea 11. Esto hace que el flip-flop se borre de inmediato cuando la entrada borrar cambia a ALTO, debido a que las entradas prn y clrn de la primitiva DFF no dependen del reloj (es decir, son asíncronas). Para que la función de carga pueda funcionar en forma síncrona deben con- trolarse las entradas D de los flip-flops, de manera que los datos de entrada (dent) estén presentes en las entradas D cuando la línea de carga esté en ALTO. De esta manera, cuando llegue el siguiente flanco activo del reloj los datos se cargarán en el contador. Esta acción debe ocurrir sin importar que el contador esté habilitado o no. En consecuencia, la primera decisión condicional (IF) en la línea 12 evalúa la entrada de carga. Recuerde del capítulo 4 que la estructura de decisión IF/ELSE da A H D L
  • 442. 1 SUBDESIGN fig7 42 2 ( 3 reloj, borrar, cargar, habilcnt, abajo, dent[3..0] :INPUT; 4 q[3..0], term ct :OUTPUT; declara arreglo de 4 bits de salida 5 ) 6 VARIABLE 7 conteo[3..0] :DFF; declara un registro de flip flops D 8 9 BEGIN 10 conteo[].clk reloj; conecta todos los relojes a la fuente de sincronía 11 conteo[].clrn !borrar; conecta para borrar asíncrona activa en ALTO 12 IF cargar THEN conteo[].d dent[]; carga síncrona 13 ELSIF !habilcnt THEN conteo[].d conteo[].q; retiene el conteo 14 ELSIF !abajo THEN conteo[].d conteo[].q 1; incremento 15 ELSE conteo[].d conteo[].q 1; decremento 16 END IF; 17 IF ((conteo[].q 0) abajo # (conteo[].q 15) !abajo) habilcnt 18 THEN ct term VCC; señal de salida en cascada síncrona 19 ELSE ct term GND; 20 END IF; 21 q[] conteo[]; transfiere el contenido del registro a las salidas 22 END; FIGURA 7-42 Contador con todas las características en AHDL. precedencia a la primera condición que se encuentra verdadera ya que, una vez que encuentra una condición verdadera, no sigue evaluando las condiciones en las cláu- sulas ELSE subsiguientes. En este caso significa que si se activa la línea de carga, no importa si se habilita el conteo o si está tratando de contar hacia arriba o hacia abajo, sino que realizará una carga en paralelo en el siguiente flanco del reloj. Suponiendo que la línea de carga no esté activa, se evalúa la cláusula ELSIF en la línea 13 para ver si el conteo está deshabilitado. En AHDL es muy importante tener en cuenta que la salida Q debe retroalimentarse a la entrada D para que en el siguiente flanco del reloj el registro retenga su valor anterior. Si no se inserta esta cláusula las entradas D quedarán en cero, con lo cual se restablecerá el contador. Si el contador está habilitado se evalúa la cláusula ELSIF de la línea 14 y conteo se incrementa (línea 14) o se decrementa (línea 15). Para resumir estas decisiones, pri- mero se decide si es tiempo de cargar, después se decide si el conteo debe retenerse o cambiar, después se decide si se va a contar hacia arriba o hacia abajo. La siguiente función descrita es la detección (o decodificación) del conteo terminal. Las líneas 17-20 deciden si se ha llegado al conteo terminal mientras se cuenta hacia arriba o hacia abajo. El operador de doble signo de igual ( ) es el símbolo que prueba la igualdad entre las expresiones de cada lado del operador. El estado del contador que sea el estado terminal depende de la dirección de conteo. Esto se determina mediante la aplicación de una operación AND entre la detección apropiada del estado terminal de 0 o 15 y la expresión correcta, abajo o !abajo. ct_term producirá como salida un nivel ALTO si se ha llegado al estado correcto, en caso contrario será BAJO. La línea 21 conectará la salida para conteo con las termi- nales de salida para el bloque SUBDESIGN. Uno de los conceptos clave acerca del uso de HDLs es que, por lo general, es muy sencillo expandir el tamaño de un módulo lógico. Veamos ahora los cambios necesarios a este diseño de AHDL para incrementar el módulo del contador binario a 256. Como 28 256, necesitaremos incrementar el número de bits a ocho. Sólo SECCIÓN 7-12/CONTADORES CON TODAS LAS CARACTERÍSTICAS EN HDL 413
  • 443. $1¶56-0 $0/5%034 : 3(*45304 1 ENTITY fig7 43 IS 2 PORT( reloj, borrar, cargar, habilcnt, descendente :IN BIT; 3 dent :IN INTEGER RANGE 0 TO 15; 4 q :OUT INTEGER RANGE 0 TO 15; 5 ct term :OUT BIT); 6 END fig7 43; 7 8 ARCHITECTURE a OF fig7 43 IS 9 BEGIN 10 PROCESS ( reloj, borrar, descendente) 11 VARIABLE conteo :INTEGER RANGE 0 to 15; define una señal numérica 12 BEGIN 13 IF borrar '1' THEN conteo : 0; borrar asíncrona 14 ELSIF (reloj '1' AND relojʼEVENT) THEN flanco ascendente? 15 IF cargar '1' THEN conteo : din; carga en paralelo 16 ELSIF habilcnt '1' THEN habilitado? 17 IF descendente '0' THEN conteo : conteo 1; incremento 18 ELSE conteo : conteo 1; decremento 19 END IF; 20 END IF; 21 END IF; 22 IF (((conteo 0) AND (descendente '1')) OR 23 ((conteo 15) AND (descendente '0'))) AND habilcnt '1' 24 THEN ct term '1'; 25 ELSE ct term '0'; 26 END IF; 27 q conteo; transfiere el contenido del registro a las salidas 28 END PROCESS; 29 END a; '*(63 $POUBEPS DPO UPEBT MBT DBSBDUFSÓTUJDBT FO 7)%- TF SFRVJFSFO DVBUSP NPEJGJDBDJPOFT B MB GJHVSB QBSB IBDFS FTUF DBNCJP FO FM NØEVMP EFM DPOUBEPS EF MÓOFB .PEJGJDBDJØO EFOU R DPOUFP DPOUFP R #/.4!$/2 #/.4/$!3 ,!3 #!2!#4%2·34)#!3 %.6($, M DØEJHP EF MB GJHVSB JNQMFNFOUB UPEBT MBT DBSBDUFSÓTUJDBT EF MBT RVF IFNPT IBCMBEP T VO DPOUBEPS EF DVBUSP CJUT QFSP QVFEF FYQBOEJSTF FO UBNB×P DPO GBDJMJEBE OBMJDF MBT FOUSBEBT Z TBMJEBT EF MBT MÓOFBT B MB QBSB BTFHVSBSTF EF DPNQSFOEFS MP RVF TF TVQPOF EFCF IBDFS DBEB VOB 4J OP MP FOUJFOEF WVFMWB B MFFS MPT QÈSSBGPT BOUFSJPSFT EF FTUB TFDDJØO -B JOTUSVDDJØO 130$44 FO MB MÓOFB FT MB DMBWF QBSB UPEPT MPT DJSDVJUPT TJODSPOJ[BEPT QPS SFMPK RVF TF EFTDSJCFO FO 7)%- 6 ( $ ,
  • 444. pero también juega un papel importante en cuanto a determinar si el circuito res- ponde en forma síncrona o asíncrona a sus entradas. Queremos que este circuito responda de inmediato a las transiciones en las entradas reloj, borrar y abajo. Con estas señales en la lista de sensibilidad nos aseguramos que se evalúe el código dentro del bloque PROCESS tan pronto como cualquiera de estas entradas cambie de estado. La variable conteo se define en la línea 11 como tipo INTEGER, de forma que pueda incrementarse y decrementarse con facilidad. Las variables se declaran dentro del bloque PROCESS y pueden utilizarse sólo dentro de este bloque. La entrada clear recibe precedencia al evaluarla con la primera instrucción IF en la línea 13. Recuerde del capítulo 4 que la estructura de decisión IF/ELSE da precedencia a la primera condición que se encuentre verdadera, ya que no sigue evaluando las condiciones en las cláusulas ELSE subsiguientes. En este caso, si la señal borrar está activa las demás condiciones no importarán. La salida será cero. Para que la función cargar pueda operar en forma síncrona, debe evaluarse después de detectar el flanco del reloj. Éste se detecta en la línea 14 y el circuito comprue- ba de inmediato si cargar está activa. De ser así, el conteo se carga de dent, sin importar que esté habilitado el conteo o no. En consecuencia, la decisión condicio- nal (IF) de la línea 15 evalúa la entrada cargar; sólo si está inactiva se evalúa la línea 16 para ver si el contador está habilitado. Si está habilitado, el conteo se incre- mentará o decrementará (líneas 17 y 18, respectivamente). Lo siguiente es detectar el conteo terminal. Las líneas 22 a 25 deciden si se ha llegado al conteo terminal máximo o mínimo y excitan la salida para que cambie al nivel apropiado. Aquí, la estructura de toma de decisiones es muy importante ya que queremos evaluar esta situación, sin importar que el proceso de toma de deci- siones haya sido invocado por reloj, borrar o abajo. Observe que esta decisión no es otra ramificación ELSE de las decisiones IF anteriores, sino que se evalúa para cada señal en la lista de sensibilidad después de que se produce el borrado o el conteo. Una vez que se realicen todas estas decisiones, conteo deberá tener el valor correcto en el registro y la línea 27 conectará el registro con las terminales de salida. Uno de los conceptos clave acerca del uso de HDLs es que, por lo general, es muy sencillo expandir el tamaño de un módulo lógico.Veamos ahora los cambios necesa- rios a este diseño de VHDL para incrementar el módulo del contador binario a 256. Sólo se requieren cuatro modificaciones a la figura 7-42 para hacer este cambio en el módulo del contador: # de línea Modificación 3 RANGE 0 TO 15 255 4 RANGE 0 TO 15 255 11 RANGE 0 TO 15 255 23 (conteo 15 255) Simulación de un contador con todas las características Para simular nuestro diseño del contador con todas las características requeriremos de cierta planeación para generar formas de onda de entrada apropiadas. Aunque tal vez no sea necesario simular a detalle todas las combinaciones de entrada ima- ginables, sí necesitamos probar la suficiente cantidad de condiciones de entrada posibles para convencernos de que funciona en forma apropiada. Esto es exacta- mente lo que debemos hacer también para probar nuestro diseño de prototipo en el laboratorio. El contador tiene cinco señales de entrada distintas (reloj, borrar, cargar, habilcnt y dent) y dos señales de salida distintas (q y ct_term) que debemos visualizar en nuestra simulación. Una de las señales de entrada y una de las señales de salida son en realidad de cuatro bits. Elegiremos una frecuencia de reloj conve- niente, ya que no se ha especificado ninguna para nuestra simulación funcional del contador. Necesitaremos proveer los suficientes pulsos de reloj como para poder analizar varias condiciones de operación. La simulación deberá evaluar las funcio- nes de habilitar y deshabilitar el contador, contar hacia arriba y hacia abajo, borrar SECCIÓN 7-12/CONTADORES CON TODAS LAS CARACTERÍSTICAS EN HDL 415
  • 445. 416 CAPÍTULO 7/CONTADORES Y REGISTROS t1 t2 t3 t4 t5 t6 1 2 3 4 5 8 9 0 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 1 0 F E D C B A 9 8 7 6 5 4 3 2 1 0 5 0 F E reloj 0 0 0 H8 8 5 1 0 0 H0 borrar cargar dent[3..0] Habilcnt abajo ct_term q[3..0] 100.0us 200.0us 300.0us 400.0us 500.0us 600.0us 700.0us 800.0us 900.0us 1.0ms FIGURA 7-44 Resultados de la simulación para el diseño en HDL de un contador con todas las características. el contador, cargar un valor en el contador y contar a partir de ese valor, y detectar el estado de conteo terminal. Hay ciertas cuestiones de simulación en general que debemos considerar al crear nuestras formas de onda de entrada. Como los PLDs de destino se restablecen al momento de encenderse, nuestra simulación empezará con el estado de salida inicial en 0000. Por lo tanto, sería mejor esperar hasta que el contador haya llegado a otro estado antes de aplicar una entrada para borrarlo, de manera que podamos ver un cambio en la salida. De igual forma, cargar el mismo valor que el estado SIGUIENTE del contador no nos convencerá en realidad de que la función cargar está operando en forma correcta. Si se cambian las señales de control de entrada al mismo tiempo que se produzca el flanco de reloj se pueden provocar algunos pro- blemas con el tiempo de establecimiento y se obtendrían resultados cuestionables. Los controles asíncronos deben aplicarse en un tiempo distinto al del flanco de reloj apropiado para demostrar con claridad que la acción resultante del circuito es inmediata y no depende del reloj. En general, debemos usar el sentido común para crear nuestras formas de onda de entrada y considerar qué es lo que estamos tratando de verificar con la simulación. Ésta será valiosa en el proceso de diseño sólo si aplicamos las condiciones de entrada apropiadas y evaluamos los resultados de manera crítica. En la figura 7-44 se muestran algunos resultados de la simulación para el con- tador con todas las características. La entrada dent de cuatro bits y la salida q de cuatro bits se muestran en hexadecimal. Al principio el contador está habilitado (habilcnt 1) para contar hacia arriba (abajo 0), y podemos ver que la salida se incrementa en 0, 1, 2, 3, 4, 5. En t1 el contador responde en forma síncrona (es decir, en la PGT de reloj) al nivel ALTO que se aplica en la entrada cargar. El contador se prestablece con el valor de 8 de los datos en paralelo (dent). Esto también muestra que la carga tiene prioridad sobre el conteo, ya que ambas entradas están activas al mismo tiempo. Después de t1, la entrada cargar está en BAJO otra vez y el contador sigue contando en forma ascendente a partir de 8. Una entrada en BAJO para habilcnt hace que el contador se detenga en el estado 9 durante un ciclo extra de reloj. El conteo se continúa cuando habilcnt está en ALTO otra vez hasta t2, cuando el contador se borra en forma asíncrona. Observe el tiempo reducido para el estado de salida A debido a que el contador se borra de inmediato. En realidad tendríamos que hacer un acercamiento para ver que se muestra el estado A. También podemos ver que la función borrar tiene la prioridad más alta cuando los tres controles (borrar, cargar y habilcnt) están al mismo tiempo en ALTO. La secuencia de conteo ascen- dente continúa y se recicla a 0 después del estado F, para verificar que el contador sea un contador binario MOD-16. En t3 el contador llega a su estado terminal F cuando cuenta hacia arriba, y ct_term produce un nivel ALTO. En t4 el contador empieza a contar hacia abajo, ya que abajo se cambió a un nivel ALTO. De nuevo, ct_term produce un nivel ALTO ya que el contador se encuentra ahora en el estado 0, que es el estado terminal cuando se cuenta hacia abajo. Observe que a través de la acción de ct_term, el estado terminal para el contador depende de su dirección de conteo, la cual se controla mediante la entrada abajo. El conteo se retiene en el
  • 446. PREGUNTAS DE REPASO estado 0 durante un periodo de reloj adicional cuando habilcnt cambia a BAJO. La salida ct_term también se deshabilita mientras que habilcnt 0. La secuencia de conteo descendente continúa en forma correcta cuando habilcnt cambia de nuevo a ALTO. En t5 el contador carga en forma síncrona el valor de datos en paralelo 5. En t6 el contador se borra en forma asíncrona. De nuevo se verifica que la función de cargar o borrar tenga prioridad sobre la función de conteo descendente en t5 y en t6. ¿Verificamos que nuestro diseño opere en forma correcta, en comparación con las especificaciones? Hicimos un muy buen trabajo, pero hay un par de condiciones de prueba que también podrían agregarse para hacer la simulación más completa. ¿Se borró o se cargó el contador cuando habilcnt estaba en BAJO? Parece ser que no verificamos esos casos. Como puede ver, los diseños complejos pueden requerir mucho razonamiento para verificar su operación de una manera adecuada median- te la simulación o la prueba en el laboratorio. ¿Puede pensar en alguna otra prueba que deberíamos realizar? 1. ¿Cuál es la diferencia entre la función borrar asíncrona y la función cargar sín- crona? 2. ¿Cómo se crea una función borrar asíncrona en un HDL? 3. ¿Cómo se crea la prioridad de las funciones en una descripción en HDL de un contador? 7-13 CÓMO ALAMBRAR MÓDULOS DE HDL EN CONJUNTO En las dos secciones anteriores vimos cómo implementar características comunes de un contador mediante HDL. También deberíamos investigar cómo podemos conec- tar estos circuitos tipo contador a otros módulos digitales para crear sistemas más grandes. El diseño de sistemas digitales extensos se facilita mucho si el sistema se subdivide en módulos más pequeños y manejables que después se interconectan. Ésta es la esencia del concepto del diseño jerárquico, del cual veremos sus bene- ficios mediante proyectos de ejemplo en el capítulo 10. Ahora veamos las técnicas básicas para alambrar módulos entre sí. DECODIFICACIÓN DEL CONTADOR MOD-5 EN AHDL En la sección 7-8 dimos un breve vistazo a la idea de decodificar un contador. Como recordará, un circuito decodificador detecta un estado de conteo mediante el patrón de bits único para ese estado. Ahora veamos cómo conectar un circuito decodificador al diseño del contador MOD-5 de la figura 7-35 (o 7-36). Cambiaremos el nombre del contador por SUBDESIGN mod5 para ser un poco más descriptivos en el diagrama de bloques para el circuito general que dibujaremos más adelante. Como el contador no produce los ocho estados posibles para un contador de tres bits, nues- tro diseño del decodificador que se muestra en la figura 7-45 sólo decodificará los estados que se utilicen, de 000 hasta 100. Los tres bits de entrada (c MSB) que se declaran en la línea 3 se conectarán más adelante a las salidas del contador MOD5. En la línea 4, las cinco salidas para el decodificador se llaman estado0 a estado4. Una instrucción CASE (líneas 7 a 14) describe el comportamiento del decodificador mediante la comprobación de la combinación de entradas c b a para determinar cuál de las salidas del decodificador debe estar en ALTO. Cuando la entrada c b a sea 000 sólo la salida estado0 estará en ALTO, o cuando c b a sea 001 sólo la salida estado1 estará en ALTO, y así en lo sucesivo. Cualquier valor de entrada mayor de 100, que está cubierto por la instrucción OTHERS y en realidad no debe ocurrir en esta aplicación, producirá niveles BAJO en todas las salidas. A H D L SECCIÓN 7-13/CÓMO ALAMBRAR MÓDULOS DE HDL EN CONJUNTO 417
  • 447. 418 CAPÍTULO 7/CONTADORES Y REGISTROS 1 SUBDESIGN decodifica5 2 ( 3 c, b, a :INPUT; 4 estado[0..4] :OUTPUT; 5 ) 6 BEGIN 7 CASE (c, b, a) IS -- decodifica el valor binario 8 WHEN B=”000” = estado[ ] = B”10000”; 9 WHEN B=”001” = estado[ ] = B”01000”; 10 WHEN B=”010” = estado[ ] = B”00100”; 11 WHEN B= “011” = estado[ ] = B”00010”; 12 WHEN B= “100” = estado[ ] = B”00001”; 13 WHEN OTHERS = estado[ ] = B”00000”; 14 END CASE; 15 END; FIGURA 7-45 Módulo decodificador del contador MOD-5 en AHDL. 4 3 SALIDA clk 5 q[2..0] q[2..0] q2 q1 q0 MOD5 DECODIFICA5 a b estado[0..4] cntr_estado[0..4] q[2..0] c ENTRADA VCC SALIDA reloj FIGURA 7-46 Diseño de diagrama de bloques para el circuito contador y decodificador MOD-5. clk q[2..0] cntr_estado[0..4] 1.0us 2.0us 3.0us 4.0us 5.0us 6.0us 7.0us 8.0us 9.0us 10.0us 11.0us 000 100 011 010 001 000 0 B 000 B 10000 10000 00001 00010 00100 01000 10000 FIGURA 7-47 Simulación del circuito contador y decodificador MOD-5. Indicaremos al software de Altera que cree símbolos para nuestros dos archivos de diseño, mod5 y decodifica5. Esto nos permitirá dibujar un diagrama de bloques (vea la figura 7-46) para nuestro circuito completo, el cual consistirá de estos dos módulos, los puertos de entrada y salida, y el cableado entre ellos. Cada símbolo se etiqueta con su respectivo nombre mod5 o decodifica5 de SUBDESIGN. Observe que parte del cableado se dibuja con líneas más gruesas. Con el fin de representar un bus, el cual es una colección de líneas de señal. Las líneas más delgadas son señales individuales. En los símbolos creados por Altera se dibujarán de manera automática puertos para indicar si representan señales individuales o buses. Esto se determinará mediante las declaraciones de las señales en la sección SUBDESIGN. Los puertos con nombres de grupo se dibujarán como buses. Como el puerto de sali- da del contador es un bus pero los puertos de entrada del decodificador son seña- les individuales, será necesario dividir el bus en líneas de señal individuales para cablear los dos módulos entre sí. Cada vez que se divide un bus, hay que etiquetar tanto el nombre de la señal de grupo del bus como las señales individuales que se vayan a utilizar. Nuestro diagrama de bloques tiene un bus etiquetado como q[2..0] y las correspondientes señales individuales q2, q1 y q0. Los resultados de la simu- lación para este circuito contador y decodificador se muestran en la figura 7-47.
  • 448. 1 ENTITY decodifica5 IS 2 PORT ( 3 c, b, a :IN BIT; 4 estado :OUT BIT_VECTOR (0 TO 4) 5 ); 6 END decodifica5; 7 8 ARCHITECTURE a OF decodifica5 IS 9 SIGNAL entrada : BIT_VECTOR (2 DOWNTO 0); 10 BEGIN 11 entrada = (c b a); -- combina las entradas en un vector de bits 12 PROCESS (c, b, a) 13 BEGIN 14 CASE entrada IS 15 WHEN “000” = estado = “10000”; 16 WHEN “001” = estado = “01000”; 17 WHEN “010” = estado = “00100”; 18 WHEN “011” = estado = “00010”; 19 WHEN “100” = estado = “00001”; 20 WHEN OTHERS = estado = “00000”; 21 END CASE; 22 END PROCESS; 23 END a; FIGURA 7-48 Módulo decodificador del contador MOD-5 en VHDL. DECODIFICACIÓN DEL CONTADOR MOD-5 ENVHDL En la sección 7-8 dimos un breve vistazo a la idea de decodificar un contador. Como podrá recordar, un circuito decodificador detecta un estado de conteo mediante el patrón de bits único para ese estado. Ahora veamos cómo conectar un circuito decodificador al diseño del contador MOD-5 de la figura 7-37. Cambiaremos el nom- bre del contador por ENTITY mod5 para facilitar la identificación del módulo en nuestro circuito en general. Como el contador no produce los ocho estados posibles para un contador de tres bits, nuestro diseño del decodificador que se muestra en la figura 7-48 sólo decodificará los estados que se utilicen, de 000 hasta 100. Los tres bits de entrada (c MSB) que se declaran en la línea 3 se conectarán más adelante a las salidas del contador MOD5. En la línea 4, las cinco salidas para el decodifi- cador se llaman estado, un vector de bits. En la línea 9 se declara una señal tipo vector de bits interna llamada entrada. Después la línea 11 combina los tres bis de entrada (c b a) para formar un vector de bits llamado entrada, el cual puede enton- ces evaluarse mediante la instrucción CASE en las líneas 14-21. Si cualquiera de los bits de entrada cambia de nivel lógico, se invocará el bloque PROCESS para deter- minar la salida resultante. Para describir el comportamiento del decodificador, la instrucción CASE comprueba la combinación de entrada (que representa c b a) para determinar cuál de las salidas del decodificador debe estar en ALTO. Cuando la entrada sea 000 sólo la salida estado(0) estará en ALTO; cuando entrada sea 001 sólo la salida estado(1) estará en ALTO; y así en lo sucesivo. Cualquier valor de entrada mayor de 100, que está cubierto por la instrucción OTHERS y en realidad no debe ocurrir en esta aplicación, producirá niveles BAJO en todas las salidas. Como estamos usando el software de desarrollo de PLDs de Altera, podemos conectar los dos módulos en forma gráfica. Para ello necesitará instruir al software para que cree símbolos para nuestros dos archivos de diseño, mod5 y decodifica5. Esto nos permitirá dibujar un diagrama de bloques (vea la figura 7-46) para nuestro circuito completo, el cual consistirá de dos módulos, puertos de entrada y salida y el cableado entre ellos. Observe que parte del cableado se dibuja con líneas más gruesas. Para representar un bus, el cual es una colección de líneas de señal. Las líneas más delgadas son señales individuales. En los símbolos creados por Altera se dibujarán automáticamente puertos para indicar si representan señales indivi- duales o buses. Esto se determinará mediante las declaraciones del tipo de datos V H D L SECCIÓN 7-13/CÓMO ALAMBRAR MÓDULOS DE HDL EN CONJUNTO 419
  • 449. 420 CAPÍTULO 7/CONTADORES Y REGISTROS FIGURA 7-49 Archivo en VHDL de mayor nivel para conectar mod5 y decodifica5 entre sí. 1 ENTITY mod5decodifica1 IS 2 PORT ( 3 clk :IN BIT; 4 q :BUFFER BIT_VECTOR (2 DOWNTO 0); 5 cntr_estado :OUT BIT_VECTOR (0 TO 4) 6 ); 7 END mod5decodifica1 8 9 ARCHITECTURE nivelsuperior OF mod5decodifica1 IS 10 COMPONENT mod5 11 PORT ( 12 reloj :IN BIT; 13 q :OUT BIT_VECTOR (2 DOWNTO 0) 14 ); 15 END COMPONENT; 16 COMPONENT decodifica5 17 PORT ( 18 c, b, a :IN BIT; 19 estado :OUT BIT_VECTOR (0 TO 4) 20 ); 21 END COMPONENT; 22 BEGIN 23 contador: mod5 PORT MAP (reloj = clk, q = q); 24 decodificador: decodifica5 PORT MAP 25 (c = q(2), b = q(1), a = q(0), estado = cntr_estado); 26 END nivelsuperior; para cada puerto del bloque ENTITY. Los puertos BIT_VECTOR se dibujarán como buses y los puertos tipo BIT se dibujarán como líneas de señal individuales. Como el puerto de salida del contador es un bus pero los puertos de entrada del deco- dificador son señales individuales, será necesario dividir el bus en líneas de señal individuales para cablear los dos módulos entre sí. Cada vez que se divide un bus se debe etiquetar tanto el nombre de la señal de grupo del bus como las señales individuales que se vayan a utilizar. Nuestro diagrama de bloques tiene un bus eti- quetado como q[2..0] y las señales individuales correspondientes q2, q1 y q0. Los resultados de la simulación para este circuito contador y decodificador se muestran en la figura 7-47. La técnica de VHDL estándar (y una alternativa con el software de Altera) para conectar módulos de diseño es utilizarVHDL para describir las conexiones entre los módulos en un archivo de texto. Se crean instancias de los módulos deseados en un archivo de diseño de mayor nivel mediante el uso de componentes (COMPONENT), en los cuales se declaran los puertos (PORT) del módulo. Las conexiones de cablea- do para cada instancia en donde se utiliza el módulo se listan en una instrucción PORT MAP. En la figura 7-49 se muestra un archivo deVHDL que conecta los módu- los mod5 y decodifica5 entre sí. Aún y cuando q es un puerto de salida para nuestro archivo de diseño de nivel superior, se escribe como BUFFER en la línea 4 debido al hecho de que es necesario “leer” el arreglo de vectores de bit para una entrada al componente (COMPONENT) decodifica5 en su mapa de puertos (PORT MAP, línea 25). VHDL no permite utilizar puertos de salida como entradas. La declaración del tipo de datos BUFFER proporciona un puerto que puede usarse tanto para entrada como para salida. El módulo mod5 se declara en las líneas 10 a 15 y el módulo decodifica5 se declara en las líneas 16 a 21. Las descripciones ENTITY/ ARCHITECTURE de mod5 y decodifica5 pueden incluirse dentro del archivo de diseño de nivel superior, o en su defecto pueden guardarse en la misma carpeta que el archivo de nivel superior, como lo hicimos aquí. La instrucción PORT MAP para cada instancia de los módulos se lista en las líneas 23 a 25. La palabra a la izquierda de los dos puntos es una etiqueta única para cada instancia y el nombre del módulo va a la derecha, después las palabras clave PORT MAP y por último, entre parén- tesis, van las asociaciones con nombre entre las señales y los puertos del diseño. El
  • 450. 1 SUBDESIGN mod10 2 ( 3 reloj, habilita, borrar :INPUT; 4 contador[3..0], tc :OUTPUT; 5 ) 6 VARIABLE 7 contador[3..0] :DFF; 8 BEGIN 9 contador[ ].clk = reloj; 10 IF contador[ ].q == 9 habilita == VCC THEN 11 tc = VCC; -- detecta el conteo terminal 12 ELSE tc = GND; 13 END IF; 14 IF borrar THEN 15 contador[ ].d = B”0000”; -- borrar síncrona 16 ELSIF enable THEN -- borrar tiene prioridad 17 IF contador[ ].q == 9 THEN -- comprueba el último estado 18 contador[ ].d = B”0000”; 19 ELSE 20 contador[ ].d = contador[ ].q + 1; -- incremento 21 END IF; 22 ELSE -- retiene el conteo cuando está deshabilitado 23 contador[ ].d = contador[ ].q; 24 END IF; 25 END; FIGURA 7-50 Contador BCD MOD-10 en AHDL. operador
  • 451. indica qué puertos del módulo (a la izquierda) están conectadas con cuáles señales del sistema de mayor nivel (a la derecha). Este circuito produce los resultados de la simulación que se muestran en la figura 7-47. Contador BCD MOD-100 Deseamos diseñar un contador BCD MOD-100 reciclable que tenga una entrada borrar asíncrona. La manera más sencilla de hacerlo es crear un módulo de conta- dor BCD MOD-10 y conectar en cascada de manera síncrona dos de estos módulos entre sí, en un archivo de diseño de mayor nivel. Las entradas de reloj para los dos módulos MOD-10 estarán conectadas al reloj del sistema para lograr la conexión en cascada síncrona de los dos módulos de contador. Recuerde que hay beneficios considerables en cuanto al uso del diseño de contadores síncronos en vez de las téc- nicas asíncronas de sincronización por reloj. Además, si no empleáramos la sincroni- zación por reloj en forma síncrona, la señal borrar síncrona no funcionaría en forma apropiada. Aún y cuando las especificaciones de diseño no requieren una señal de habilitación de conteo o la detección del conteo terminal para el contador MOD- 100, será necesario incluir estas características en nuestro diseño. Para poder conec- tar en cascada en forma síncrona dos contadores, se necesitarán las características de habilitación y decodificación. La entrada de habilitación de conteo hace que el contador ignore los flancos del reloj hasta que esté habilitado. La salida de conteo terminal indica que la secuencia de conteo ha llegado a su límite y volverá a empe- zar en el siguiente pulso de reloj. Para conectar en cascada las etapas de contadores en forma síncrona, la salida de conteo terminal se conecta a la entrada de habilita- ción de la siguiente etapa de mayor orden. Al utilizar la entrada de habilitación de conteo para controlar también la decodificación del conteo terminal, podemos usar nuestro módulo MOD-10 para crear contadores BCD aún más grandes. CONEXIÓN EN CASCADA DE CONTADORES BCD EN AHDL El bloque SUBDESIGN de nuestro contador BCD MOD-10 se muestra en la figura 7-50. El estado terminal para un contador BCD es 9. Las líneas 10 a 13 detectarán A H D L SECCIÓN 7-13/CÓMO ALAMBRAR MÓDULOS DE HDL EN CONJUNTO 421
  • 452. 422 CAPÍTULO 7/CONTADORES Y REGISTROS FIGURA 7-52 Diseño de diagrama de bloques para un contador BCD MOD-100. mod10 mod10 reloj habilita contador[3..0] tc borrar reloj habilita contador[3..0] tc borrar clk 3 6 7 8 ENTRADA VCC ENTRADA VCC ENTRADA VCC en 4 clr 5 SALIDA dieces[3..0] unos[3..0] SALIDA máx SALIDA este estado terminal sólo cuando el contador esté habilitado con un nivel ALTO. Si se aplica un AND al control habilita en la función de decodificación se permitirá que dos o más módulos de contador se conecten en cascada de manera síncrona si es necesario, con lo cual nuestro diseño mod10 será más versátil. La función borrar operará en forma síncrona en AHDL si se incluye en la instrucción IF, como se mues- tra en las líneas 14 a 15. Si borrar está inactiva, el contador comprobará mediante una instrucción IF anidada en las líneas 17 a 21 si se ha llegado al último estado 9. Después del estado 9 el contador se recicla en forma síncrona a 0. En caso contrario, el contador se incrementará. Si el contador se deshabilita, las líneas 22 a 23 reten- drán el valor de conteo actual mediante el proceso de alimentar la salida actual de regreso a la entrada del contador. Esta acción de retención será necesaria en el contador MOD-100 en cascada para que el dígito de los 10s retenga su estado actual mientras que el dígito de los 1s progrese a través de su secuencia de conteo. Una estrategia de diseño apropiada para nosotros sería simular este módulo para deter- minar si funciona en forma correcta, antes de usarlo en una aplicación de circuito más compleja. De los resultados de la simulación para mod10, que se proporcionan en la figura 7-51, podemos ver que la secuencia de conteo es correcta, la entrada borrar es síncrona y tiene prioridad, y habilita controla tanto la función de conteo como la salida de decodificación tc. Después de crear un símbolo predeterminado para nuestro módulo de contador mod10, podemos ahora dibujar el diagrama de bloques para la aplicación del conta- dor BCD MOD-100. También se han agregado los puertos de entrada, los puertos de salida y el cableado para crear el diseño de la figura 7-52. Observe que las salidas del contador que representan los dígitos de los 1s y los 10s se dibujan como buses. Los módulos mod10 están sincronizados por reloj en forma síncrona. Están conecta- dos en cascada mediante el uso de la salida de conteo terminal del dígito de los 1s para controlar la entrada de habilitación en el dígito de los 10s. El puerto de entra- da en controla la habilitación/deshabilitación de todo el circuito completo del conta- dor MOD-100. El diseño del contador BCD puede expandirse con facilidad mediante una etapa mod10 adicional, conectando la salida tc con la siguiente entrada habilita para cada dígito que se necesite. En la figura 7-53 puede verse una muestra de los resultados de la simulación. Ésta nos muestra que el contador MOD-100 tiene una secuencia de conteo BCD correcta y que puede borrarse en forma síncrona. reloj habilita borrar tc contador[3..0] B 0000 0 0 1 1 5.0ms 10.0ms 15.0ms 20.0ms 25.0ms 30.0ms 35.0ms 001 0001 0000 1001 1000 0111 0110 0101 0100 0011 0010 0001 0000 0010 0001 0000 FIGURA 7-51 Resultados de la simulación del contador MOD-10.
  • 453. 10.0ms Nombre: Valor: 1 1 0 0 D 0 D 0 1 20.0ms 30.0ms 40.0ms 50.0ms 60.0ms 70.0ms 80.0ms 90.0ms 100.0ms 0 0 2 3 4 5 6 7 8 9 0 1 2 0 1 2 1 2 3 4 5 6 7 8 9 0 1 2 1 0 2 3 4 5 6 7 8 9 0 1 2 3 4 5 7 6 8 9 0 1 2 3 4 clk en clr máx dieces[3..0] unos[3..0] 180.0ms 170.0ms Nombre: Valor: 0 1 0 0 D 5 D 9 1 190.0ms 200.0ms 210.0ms 220.0ms 230.0ms 240.0ms 250.0ms 260.0ms 270.0ms 0 6 2 3 4 5 6 7 8 9 0 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 0 9 1 2 3 4 5 6 7 clk en clr máx dieces[3..0] unos[3..0] FIGURA 7-53 Resultados de la simulación para el diseño del contador BCD MOD-100. CONEXIÓN EN CASCADA DE CONTADORES BCD EN AHDL Los bloques ENTITY y ARCHITECTURE para nuestro contador BCD MOD-10 se muestran en las líneas 26 a 51 de la figura 7-54. El estado terminal para un contador BCD es 9. Las líneas 38 a 40 detectarán este estado terminal sólo cuando el contador se habilite con un nivel ALTO. Si se aplica un AND al control habilita en la función de decodificación se permitirá que se conecten en cascada más de dos módulos de contador en forma síncrona si es necesario; además, nuestro diseño mod10 será más versátil. La función borrar será síncrona en VHDL si se coloca en la instrucción IF anidada (línea 42) una vez que se detecte el flanco de reloj en la línea 41. Si borrar está inactiva, a continuación revisamos si el contador está habilitado (línea 43). Si habilita está en ALTO, el contador comprueba mediante otra instrucción IF anidada en las líneas 44 a 46 para ver si se ha llegado al último estado 9. Después del estado 9 el contador se recicla en forma síncrona a 0. En caso contrario se incrementará el conteo. Si el contador está deshabilitado,VHDL retendrá en forma automática el valor de conteo actual. Esta acción de retención será necesaria en el contador MOD- 100 en cascada para que el dígito de los 10s retenga su estado actual mientras que el dígito de los 1s progresa a través de su secuencia de conteo. Una estrategia de diseño apropiada para nosotros sería que simuláramos este módulo como un bloque ENTITY separado para determinar si funciona en forma correcta, antes de usarlo en una aplicación de circuito más compleja. Los resultados de la simulación para el bloque ENTITY mod10, que se muestran en la figura 7-51, muestran que la secuen- cia de conteo es correcta, que la entrada borrar es síncrona y tiene prioridad, y que habilita controla tanto la función de conteo como la entrada de decodificación. Tenemos dos opciones para implementar el contador MOD-10. Una técnica es representar el diseño en forma gráfica en un diagrama de bloques, como puede verse en la figura 7-52. También hemos agregado los módulos del contador mod10, los puertos de entrada, de salida y el cableado para crear el contador MOD-100. Observe que las salidas del contador que representan los dígitos de los 1s y los 10s se dibujan como buses. Los módulos mod10 se sincronizan por reloj en forma sín- crona. Están conectados en cascada mediante el uso de la salida de conteo terminal del dígito de los 1s para controlar la entrada de habilitación en el dígito de los 10s. El puerto de entrada en controla la habilitación/deshabilitación de todo el circuito completo del contador MOD-100. El diseño del contador BCD puede expandirse con facilidad mediante una etapa mod10 adicional, conectando la salida tc con la V H D L SECCIÓN 7-13/CÓMO ALAMBRAR MÓDULOS DE HDL EN CONJUNTO 423
  • 454. 424 CAPÍTULO 7/CONTADORES Y REGISTROS 1 ENTITY mod100 IS 2 PORT ( 3 clk, en, clr :IN BIT; 4 unos :OUT INTEGER RANGE 0 TO 15; 5 dieces :OUT INTEGER RANGE 0 TO 15; 6 max :OUT BIT 7 ); 8 END mod100; 9 ARCHITECTURE nivelsuperior OF mod100 IS 10 COMPONENT mod10 11 PORT ( 12 reloj, habilita, borrar :IN BIT; 13 q :OUT INTEGER RANGE 0 TO 15; 14 tc :OUT BIT; 15 ); 16 END COMPONENT; 17 SIGNAL rco :BIT; 18 BEGIN 19 digito1: mod10 PORT MAP (reloj = clk, habilita = en, 20 borrar = clr, q = unos, tc = rco); 21 digito2: mod10 PORT MAP (reloj = clk, habilita = rco, 22 borrar = clr, q = dieces, tc = max); 23 END nivelsuperior; 24 25 26 ENTITY mod10 IS 27 PORT ( 28 reloj, habilita, borrar :IN BIT; 29 q :OUT INTEGER RANGE 0 TO 15; 30 tc :OUT BIT 31 ); 32 END mod10; 33 ARCHITECTURE bloqinf OF mod10 IS 34 BEGIN 35 PROCESS (reloj, habilita) 36 VARIABLE contador :INTEGER RANGE 0 TO 15; 37 BEGIN 38 IF ((contador = 9) AND (habilita = ‘1’)) THEN tc = ‘1’; 39 ELSE tc = ‘0’; 40 END IF; 41 IF (reloj’EVENTO AND reloj = ‘1’) THEN 42 IF (borrar = ‘1’) THEN contador := 0; 43 ELSIF (habilita = ‘1’) THEN 44 IF (contador = 9) THEN contador := 0; 45 ELSE contador := contador + 1; 46 END IF; 47 END IF; 48 END IF; 49 q = contador; 50 END PROCESS; 51 END bloqinf; FIGURA 7-54 Contador BCD MOD-100 en VHDL. siguiente entrada habilita para cada dígito que se necesite. En la figura 7-53 puede verse una muestra de los resultados de la simulación. La simulación muestra que el contador MOD-100 tiene una secuencia de conteo BCD correcta y puede borrarse en forma síncrona. La segunda técnica para crear el contador MOD-100 es hacer las conexiones necesarias entre los módulos de diseño, describiendo la estructura del circuito con VHDL. La figura 7-54 muestra el listado para el archivo de diseño de este sistema. La descripción ENTITY/ARCHITECTURE para el subbloque mod10 está conteni-
  • 455. PREGUNTAS DE REPASO da dentro del archivo de diseño mod100 general (pero podría estar en un archivo separado dentro de la carpeta de este proyecto). El archivo de diseño mod100 sería el nivel superior para el diseño jerárquico de este sistema. Contiene subbloques de nivel inferior, los cuales son en realidad dos copias del contador mod10 de nivel inferior. El bloque COMPONENT de mod10 se declara en este archivo de diseño de nivel superior (líneas 10 a 16). Las conexiones del cableado para cada instancia en la que se utiliza el módulo se listan en una instrucción PORT MAP. Como necesita- mos dos instancias de mod10, hay una instrucción PORT MAP para cada instancia (líneas 19 a 20 y 21 a 22). Cada instancia debe tener una etiqueta única (digito1 o digito2) para diferenciarlos una de la otra. Las instrucciones PORT MAP contienen asociaciones con nombre entre los puertos del módulo de nivel inferior, las cuales se dan a la izquierda, y las señales de nivel superior a las cuales están conectadas, se dan ala derecha. Este circuito produce los mismos resultados de simulación que se muestran en la figura 7-53. 1. Describa cómo conectar módulos de HDL entre sí para crear un sistema digital. 2. ¿Qué es un bus y cómo se representa en un archivo de diseño de diagrama de bloques gráfico en Altera? 3. ¿Qué características de contador deben incluirse para conectar en cascada módulos de contador entre sí, en forma síncrona? 7-14 MÁQUINA DE ESTADOS El término máquina de estados se refiere a un circuito que progresa en secuencia a través de un conjunto de estados predeterminados, controlado por un reloj y por otras señales de entrada. Por lo tanto, los circuitos tipo contador que hemos estu- diado hasta ahora en el capítulo 7 son máquinas de estado. En general, utilizamos el término contador para los circuitos secuenciales que tienen una secuencia de conteo numérica regular. Pueden contar hacia arriba o hacia abajo, pueden tener módulos completos de 2N o pueden tener un módulo 2N , o pueden reciclarse o detenerse en forma automática en cierto estado predeterminado. Como su nombre lo indica, un contador se utiliza para contar cosas. Las cosas que se cuentan en realidad se conocen como pulsos de reloj, pero éstos pueden representar muchos tipos de even- tos. Los pulsos pueden ser los ciclos de una señal para la división de frecuencia o pueden ser segundos, minutos y horas de un día para un reloj digital. Pueden indi- car que un elemento se ha desplazado por el transportador en una fábrica o que un automóvil ha pasado por cierto punto en la autopista. El término máquina de estados se utiliza con más frecuencia para describir otros tipos de circuitos secuenciales. Pueden tener un patrón de conteo irregular tal como nuestro circuito de control de motores a pasos de la sección 7-10. El obje- tivo para ese diseño fue controlar un motor a pasos, de manera que pudiera girar en pasos angulares precisos. El circuito de control tenía que producir la secuencia específica requerida de estados para ese movimiento, en lugar de contar en forma numérica. También existen muchas aplicaciones en las que no nos importa el valor binario específico para cada estado, ya que utilizaremos la lógica de decodificación apropiada para identificar estados específicos de interés y para generar las señales de salida deseadas. La distinción general entre los dos términos es que un contador se utiliza, por lo general, para contar eventos, mientras que una máquina de esta- dos se utiliza por lo común para controlar eventos. El término descriptivo correcto depende de la manera en que deseamos utilizar el circuito secuencial. El diagrama de bloques que se muestra en la figura 7-55 puede representar una máquina de estados o un contador. En la sección 7-10 vimos que el proceso de dise- ño clásico de un circuito secuencial era averiguar cuántos flip-flops se requerían y después determinar el circuito combinacional necesario para producir la secuencia SECCIÓN 7-14/MÁQUINA DE ESTADOS 425
  • 456. 426 CAPÍTULO 7/CONTADORES Y REGISTROS FIGURA 7-55 Diagrama de bloques para contadores y máquinas de estados. Circuito combinacional (compuertas) Memoria (flip-flops) Circuito de salida [Moore: opcional] Entradas Reloj El modelo de Mealy tiene controles para las salidas Salidas Entradas Ausente en el modelo de Moore retroalimentación controles Circuito secuencial Modelo de Mealy: las señales de salida pueden tener cambios asíncronos Modelo de Moore: todas las señales de salida son síncronas deseada. La salida producida por un contador o una máquina de estados puede venir en forma directa de las salidas de los flip-flops o tal vez se requiera de algún circuito de compuertas, como se indica en el diagrama de bloques. Las dos varia- ciones se describen ya sea como un modelo de Mealy para un circuito secuencial o como un modelo de Moore. En el modelo de Mealy las señales de salida también se controlan mediante señales de entrada adicionales, mientras que el modelo de Moore no tiene controles externos para las señales de salida generadas. La salida de Moore es función sólo del estado actual del flip-flop. Un ejemplo de diseño tipo Moore sería el circuito MOD-5 decodificado de la sección 7-13. Por otro lado, el diseño del contador BCD en la misma sección sería un diseño tipo Mealy, debido a la entrada externa (habilita) que controla la salida de decodificación del estado terminal (tc). Una consecuencia considerable de esta sutil variación del diseño es que las salidas de un circuito tipo Moore serán por completo síncronas con el reloj del circuito, mientras que las salidas producidas por un circuito tipo Mealy pueden cambiar en forma asíncrona. En nuestro diseño MOD-10, la entrada de habilitación no está sincronizada con el reloj del sistema. Desde luego que los HDLs pueden hacer que las máquinas de estado sean fáci- les e intuitivas de describir. Como un ejemplo simplificado en extremo con el que todos pueden relacionarse, la siguiente descripción de hardware trata con cuatro estados, a través de los cuales podría progresar una máquina lavadora ordinaria. Aunque una máquina lavadora real es más compleja que este ejemplo, servirá para demostrar las técnicas. Esta máquina lavadora está inactiva hasta que se oprime el botón de arranque, después se llena con agua hasta que la tina está llena y luego opera el agitador hasta que un temporizador expira; por último gira la tina hasta que el agua se avienta hacia fuera y después de eso regresa a la inactividad. El punto de este ejemplo se enfoca en el uso de un conjunto de estados con nombre para los cuales no hay valores binarios definidos. El nombre de la variable contador es lavar, la cual puede estar en cualquiera de los siguientes estados con nombre: inactiva, llenar, agitar o girar. MÁQUINA DE ESTADOS SIMPLE EN AHDL El código de AHDL en la figura 7-56 muestra la sintaxis para declarar un contador con estados con nombre en las líneas 6 y 7. El nombre de este contador es ciclo. La palabra clave MACHINE se utiliza en AHDL para definir a ciclo como una máquina de estado. El número de bits necesarios para que este contador produzca los esta- dos con nombre se determinará mediante el compilador. Observe que en la línea 7 A H D L
  • 457. FIGURA 7-56 Ejemplo de una máquina de estados mediante el uso de AHDL. 1 SUBDESIGN fig7 56 2 ( reloj, arranque, llena, tiempoagotado, secar :INPUT; 3 valvula agua, modo ag, modo gi :OUTPUT; 4 ) 5 VARIABLE 6 ciclo: MACHINE 7 WITH STATES (inactiva, llenar, agitar, girar); 8 BEGIN 9 ciclo.clk reloj; 10 11 CASE ciclo IS 12 WHEN inactiva IF arranque THEN ciclo llenar; 13 ELSE ciclo inactiva; 14 END IF; 15 WHEN llenar IF llena THEN ciclo agitar; 16 ELSE ciclo llenar; 17 END IF; 18 WHEN agitar IF tiempoagotado THEN ciclo girar; 19 ELSE ciclo agitar; 20 END IF; 21 WHEN girar IF secar THEN ciclo inactiva; 22 ELSE ciclo girar; 23 END IF; 24 WHEN OTHERS ciclo inactiva; 25 END CASE; 26 27 TABLE 28 ciclo valvula agua, modo ag, modo gi; 29 inactiva GND, GND, GND; 30 llenar VCC, GND, GND; 31 agitar GND, VCC, GND; 32 girar GND, GND, VCC; 33 END TABLE; 34 END; los estados tienen nombre, pero el valor binario para cada estado también se deja para que el compilador lo determine. El diseñador no tiene que preocuparse por este nivel de detalle. La estructura CASE en las líneas 11 a 25 y la lógica de deco- dificación que controla las salidas (líneas 27 a 33) hace referencia a los estados por su nombre. Esto hace que la descripción sea fácil de leer y permite al compilador más libertad para minimizar los circuitos. Si el diseño requiere que la máquina de estado también se conecte a un puerto de salida, entonces la línea 6 se puede cambiar por: ciclo: MACHINE OF BITS (st [1..0]) y el puerto de salida st[1..0] puede agregarse a la sección SUBDESIGN. Una segun- da opción de máquina de estado disponible es la habilidad para que el diseñador defina un valor binario para cada estado. En este ejemplo, esto puede lograrse si se cambia la línea 7 por: WITH STATES (inactiva B”00”, llenar B”01”, agitar B”11”, girar B”10”); SECCIÓN 7-14/MÁQUINA DE ESTADOS 427
  • 458. 428 CAPÍTULO 7/CONTADORES Y REGISTROS 1 ENTITY fig7_57 IS 2 PORT( reloj, arranque, llena, tiempoagotado, secar :IN BIT; 3 valvula_agua, modo_ag, modo_gi :OUT BIT); 4 END fig7_57; 5 ARCHITECTURE vhdl OF fig7_57 IS 6 TYPE maquina_estados IS (inactiva, llenar, agitar, girar); 7 BEGIN 8 PROCESS (reloj) 9 VARIABLE ciclo :maquina_estado; 10 BEGIN 11 IF (reloj’EVENT AND reloj = ‘1’) THEN 12 CASE ciclo IS 13 WHEN inactiva = 14 IF arranque = ‘1’ THEN ciclo := llenar; 15 ELSE ciclo := inactiva; 16 END IF; 17 WHEN llenar = 18 IF llena = ‘1’ THEN ciclo := agitar; 19 ELSE ciclo := llenar; 20 END IF; 21 WHEN agitar = 22 IF tiempoagotado = ‘1’ THEN ciclo := girar; 23 ELSE ciclo := agitar; 24 END IF; 25 WHEN girar = 26 IF secar = ‘1’ THEN ciclo := inactiva; 27 ELSE ciclo := girar; 28 END IF; 29 END CASE; 30 END IF; 31 CASE ciclo IS 32 WHEN inactiva = valvula_agua = ‘0’; modo_ag = ‘0’; modo_gi = ‘0’; 33 WHEN llenar= valvula_agua = ‘1’; modo_ag = ‘0’; modo_gi = ‘0’; 34 WHEN agitar= valvula_agua = ‘0’; modo_ag = ‘1’; modo_gi = ‘0’; 35 WHEN girar = valvula_agua = ‘0’; modo_ag = ‘0’; modo_gi = ‘1’; 36 END CASE; 37 END PROCESS; 38 END vhdl; FIGURA 7-57 Ejemplo de máquina de estados mediante el uso de VHDL. MÁQUINA DE ESTADOS SIMPLE ENVHDL El código de VHDL en la figura 7-57 muestra la sintaxis para declarar un contador con estados con nombre. En la línea 6 se declara un objeto llamado maquina_esta- dos. Observe la palabra clave TYPE. A esto se le conoce como un tipo enumerado en VHDL, en el cual el diseñador lista por nombres simbólicos todos los posibles valores que una señal, variable o puerto que se declara de ese tipo tiene permitido tener. Observe también que en la línea 6 los estados tienen nombre, pero el valor binario para cada estado se deja para que el compilador lo determine. El diseñador no necesita preocuparse por este nivel de detalle. La estructura CASE en las líneas 12 a 29 y la lógica de decodificación que controla las salidas (líneas 31 a 36) hacen referencia a los estados por su nombre. Esto hace que la descripción sea fácil de leer y permite al compilador más libertad para minimizar los circuitos. Al utilizar el simulador para verificar nuestros diseños de HDL se producen los resultados que muestra la figura 7-58. El simulador de Altera permite también simular nodos intermedios en nuestros módulos de diseño. La máquina de estado “oculta” llamada ciclo se ha incluido en la simulación para poder confirmar que opere en forma correcta. Observe que los resultados para ciclo se proporcionan dos veces, ya que se mostrará en forma distinta para los dos HDLS. En realidad el V H D L
  • 459. 2.0 ms 4.0 ms 6.0 ms 8.0 ms 10.0 ms 12.0 ms 14.0 ms 16.0 ms 18.0 ms reloj arranque llena tiempoagotado secar valvula_agua modo_ag modo_sp ciclo_ahdl ciclo_vhdl 1 0 0 0 0 0 0 0 0 1 2 3 0 inactiva llenar agitar girar inactiva idle D O FIGURA 7-58 Simulación del ejemplo de diseño en HDL de la máquina lavadora para una máquina de estados. FIGURA 7-59 Controlador de semáforo. luz[1. . 0] reloj auto luz[1..0] restablecer tprinverde[4..0] tlateverde[4..0] cambiar luz[1 . . 0] prinambar prinrojo prinverde laterojo lateambar lateverde reloj habilita restablecer control ctrl_luz delay reloj ENTRADA VCC auto 3 4 ENTRADA VCC tprinverde[4..0] ENTRADA VCC tlateverde[4..0] 14 15 ENTRADA VCC restablecer 13 1 6 2 ENTRADA VCC cambiar SALIDA 16 prinrojo SALIDA 7 prinambar SALIDA 8 prinverde SALIDA 9 laterojo SALIDA 10 lateambar SALIDA 11 lateverde SALIDA 12 luz[1 . . 0] 5 SALIDA simulador no puede mostrar las simulaciones para AHDL y VHDL al mismo tiempo. La información del segundo nodo oculto tan sólo se copió y se pegó para obtener aquí una figura compuesta. En AHDL se muestran los nombres de la máquina de estados, mientras que en VHDL se muestran en su lugar los valores asignados por el compilador para los nombres de los estados enumerados. Máquina de estados del controlador de un semáforo Vamos a estudiar el diseño de una máquina de estados de un circuito que es más complicado: un controlador de un semáforo. En la figura 7-59 se muestra el diagrama de bloques. Nuestro controlador está diseñado para controlar el flujo de tráfico en la intersección de un camino principal con un camino lateral menos fluido. El tráfico fluirá sin interrupción en el camino principal con una luz verde, hasta que se detecte un automóvil en el camino lateral (lo cual se indica mediante la entrada etiquetada como auto). Después de un lapso que se establece mediante la entrada binaria de cinco bits etiquetada como tprinverde, la luz del camino principal cambiará a ámbar. El tprin- verde asegura que el camino principal reciba una luz verde por al menos ese lapso en SECCIÓN 7-14/MÁQUINA DE ESTADOS 429
  • 460. 430 CAPÍTULO 7/CONTADORES Y REGISTROS cada ciclo de las luces. La luz ámbar durará una constante de tiempo, el cual se establece en el diseño de HDL y después realizará la transición a rojo. Cuando la luz del camino principal cambie a rojo, la luz del camino lateral cambiará a verde. La luz del camino lateral estará en verde durante un tiempo que se establece mediante la entrada binaria de cinco bits llamada tlateverde. De nuevo, la luz ámbar durará la misma constante de tiempo y después el camino lateral regresará a una luz roja y el camino principal tendrá luz verde de nuevo. El módulo generador de lapsos controlará los periodos de tiempo para cada una de las luces. Los lapsos actuales serán iguales al periodo del reloj del sistema multiplicado por el factor de lapso. El módulo de control determina el estado del controlador de tráfico. Hay cuatro combinaciones de luces: principal-verde/lateral-rojo, principal-ámbar/late- ral-rojo, principal-rojo/lateral-verde y principal-rojo/lateral-ámbar; por lo tanto, el control requerirá cuatro estados. Los estados del semáforo se traducen en los patro- nes de encendido-apagado apropiados para cada uno de los seis pares de luces, mediante el módulo ctrl_luz. Las salidas etiquetadas como cambiar y luz se propor- cionan para fines de diagnóstico. La pata de Restablecer (Reset) se utiliza para ini- cializar cada uno de los dos circuitos secuenciales. CONTROLADOR DE SEMÁFORO EN AHDL Los tres módulos de diseño para nuestro controlador de semáforo en AHDL se mues- tran juntos en la figura 7-60. En realidad son tres archivos de diseño separados que se interconectan con el diseño del diagrama de bloques que se muestra en la figura 7-59. El módulo generador de lapsos (líneas1 a 23) es en esencia un contador des- cendente oculto (línea 20) llamado mach, el cual espera en cero cuando el camino principal tiene luz verde (luz 0), hasta que se dispara mediante el sensor de autos (línea 13) para cargar el factor de lapso o retraso tprinverde – 1 en la línea 14. Como el contador se decrementa hasta cero, se resta uno a cada retraso para hacer que el módulo del contador de retraso sea igual al valor del retraso. Por ejemplo, si desea- mos tener un factor de retraso de 25, el contador debe contar en forma descendente desde 24 hasta 0. La longitud actual de tiempo representada por los factores de retraso depende de la frecuencia del reloj. Con una frecuencia de reloj de 1-Hz el periodo sería de 1s, y los factores de retraso estarían en segundos. La línea 22 define una señal de salida llamada cambio, la cual detecta cuando mach es igual a uno. Cambio estará en ALTO para indicar que la condición de prueba es verdadera, lo cual a su vez habilitará la máquina de estados en el módulo de control para que avance a su siguiente estado (luz 1) cuando se sincronice con el reloj, para indicar una luz ámbar en el camino principal. A medida que el contador de retraso mach cuente hacia abajo y llegue a cero, la instrucción CASE determinará que luz tiene un nuevo valor y se cargará el factor de retraso de tiempo fijo de 5 para una luz ámbar (en realidad se carga uno menos que 5, como dijimos antes) en mach (línea 16), en el siguiente pulso de reloj. El conteo descendente continuará a partir de este nuevo tiempo de retraso y cambio habilitará de nuevo el módulo de control para que avance a su siguiente estado (luz 2) cuando mach sea igual a 1; el resultado será una luz verde para el camino lateral. Cuando mach llegue de nuevo a cero se cargará en el contador descendente (línea 17) el retraso de tiempo (tlateverde – 1) para una luz verde en el camino lateral. Cuando cambio se vuelva a activar, luz avanzará al estado 3 para una luz ámbar en el camino lateral. Mach se reciclará al valor 4 (5-1) en la línea 18 para el retraso de tiempo fijo para una luz ámbar. Cuando cambio se active esta vez, el módulo de control regresará al estado luz 0 (luz verde en el camino principal). Cuando mach se decremente a su estado terminal (0) esta vez, las líneas 13 a 15 determinarán mediante el estado de la entrada del sensor auto si debe esperar a otro auto o si debe cargar el factor de retraso para una luz verde en el camino principal (tprinverde – 1), para empezar el ciclo de nuevo. El camino principal recibirá una luz verde durante al menos esta longitud de tiempo, aunque haya un flujo continuo de automóviles en el camino lateral. Es obvio que podríamos hacer mejoras a este diseño, pero sin duda eso lo complicaría aún más. A H D L
  • 461. 1 SUBDESIGN retraso 2 ( reloj, auto, luz[1..0], restablecer :INPUT; 3 tprinverde[4..0], tlateverde[4..0] :INPUT; 4 cambio :OUTPUT; ) 5 VARIABLE 6 mach[4..0] :DFF; 7 BEGIN 8 mach[ ].clk = reloj; -- con un reloj de 1 Hz, tiempos en segundos 9 mach[ ].crln = restablecer; 10 IF mach[ ] == 0 THEN 11 CASE luz[ ] IS -- comprueba el estado del controlador de luz 12 WHEN 0 = 13 IF !auto THEN mach[ ].d = 0; -- espera auto en camino lateral 14 ELSE mach[ ].d = tprinverde[ ] – 1; -- establece tiempo para luz verde principal 15 END IF; 16 WHEN 1 = mach[ ].d = 5 – 1; -- establece tiempo para luz ambar principal 17 WHEN 2 = mach[ ].d = tlateverde[ ] – 1; -- establece tiempo para luz verde lateral 18 WHEN 3 = mach[ ].d = 5 – 1; -- establece tiempo para luz ambar lateral 19 END CASE; 20 ELSE mach[ ].d = mach[ ].q – 1; -- decrementa contador temporizador 21 END IF; 22 cambio = mach[ ] == 1; -- cambia luces en módulo de control 23 END; 24 ------------------------------------------------------------------------------------------------- 25 SUBDESIGN control 26 ( reloj, habilita, restablecer :INPUT; 27 luz[1..0] :OUTPUT; ) 28 VARIABLE 29 semaforo: MACHINE OF BITS (luz[1..0]) -- necesita 4 estados para combinaciones de luces 30 WITH STATES (pvrd = B”00”, pamb = B”01”, lvrd = B”10”, lamb = B”11”); 31 BEGIN 32 semaforo.clk = reloj; 33 semaforo.restablecer = !restablecer; -- las máquinas tienen señal restablecer asíncrona, activa en alto 34 CASE semaforo IS -- espera a que señal de habilitación cambie estados del semáforo 35 WHEN pvrd = IF habilita THEN semaforo = pamb; ELSE semaforo = pvrd; END IF; 36 WHEN pamb = IF habilita THEN semaforo = lvrd; ELSE semaforo = pamb; END IF; 37 WHEN lvrd = IF habilita THEN semaforo = lamb; ELSE semaforo = lvrd; END IF; 38 WHEN lamb = IF habilita THEN semaforo = pvrd; ELSE semaforo = lamb; END IF; 39 END CASE; 40 END; 41 ------------------------------------------------------------------------------------------------- 42 SUBDESIGN ctrl_luz 43 ( luz[1..0] :INPUT; 44 prinrojo, prinambar, prinverde :OUTPUT; 45 laterojo, lateambar, lateverde :OUTPUT; ) 46 BEGIN 47 CASE luz[ ] IS -- determina cuales luces se van a encender 48 WHEN B”00” = prinverde = VCC; prinambar = GND; prinrojo = GND; 49 lateverde = GND; lateambar = GND; laterojo = VCC; 50 WHEN B”01” = prinverde = GND; prinambar = VCC; prinrojo = GND; 51 lateverde = GND; lateambar = GND; laterojo = VCC; 52 WHEN B”10” = prinverde = GND; prinambar = GND; prinrojo = VCC; 53 lateverde = VCC; lateambar = GND; laterojo = GND; 54 WHEN B”11” = prinverde = GND; prinambar = GND; prinrojo = VCC; 55 lateverde = GND; lateambar = VCC; laterojo = GND; 56 END CASE; 57 END; FIGURA 7-60 Archivos de diseño de AHDL para el controlador de semáforo. SECCIÓN 7-14/MÁQUINA DE ESTADOS 431
  • 462. 432 CAPÍTULO 7/CONTADORES Y REGISTROS El módulo de control (líneas 25 a 40) contiene una máquina de estados llama- da semaforo, la cual avanzará en secuencia a través de los cuatro estados para las combinaciones de semáforos. Los bits para la máquina de estados tienen nombre y están conectados como un puerto de salida para este módulo (líneas 27 y 29). Los cuatro estados para semaforo se llaman pvrd, pamb, svrd y samb en la línea 30. Cada estado representa cuál de los caminos (principal o lateral) va a recibir una luz verde o ámbar. El otro camino tendrá una luz roja. También se han especificado los valores para cada estado del módulo de control en la línea 30, de manera que podamos identificarlos como entradas para los otros dos módulos, retraso y ctrl_luz. La entrada habilita está conectada a la señal de salida cambio, producida por el módulo de retraso. Cuando se habilite, la máquina de estados semaforo avanzará al siguiente estado cuando se aplique un pulso de reloj, como se describe mediante la instrucción CASE y las instrucciones IF anidadas en las líneas 34 a 39. En caso contrario, semaforo permanecerá en el estado actual. El módulo ctrl_luz (líneas 42 a 57) tiene como entrada luz[1..0], la cual represen- ta el estado de la máquina de estados semaforo del módulo de control, y producirá como salida las señales que enciendan las combinaciones apropiadas de luces ver- de, ámbar y roja para los caminos principal y lateral. En realidad, cada una de las salidas del módulo ctrl_luz estará conectada a circuitos controladores de lámparas para controlar los voltajes y las corrientes con valores más altos, necesarios para los focos reales en un semáforo. La instrucción CASE en las líneas 47 a 55 determina la combinación de luces del (camino principal, camino lateral) que se debe encender para cada estado del semaforo. La función del módulo ctrl_luz es muy parecida a la de un decodificador. En esencia, decodifica la combinación de cada estado de luz para encender una luz verde o ámbar para un camino, y una luz roja para el otro. Para cada estado de entrada se produce una combinación de salida única. CONTROLADOR DE SEMÁFORO ENVHDL En la figura 7-61 se muestra el diseño de VHDL para el controlador de semáforo. El nivel superior del diseño se describe en forma estructural, en las líneas 1 a 34. Hay que declarar tres módulos COMPONENT (líneas 10 a 24). En las líneas 26 a 33 aparecen las instrucciones PORT MAP, las cuales proporcionan las interconexiones de cableado entre cada módulo y el diseño de nivel superior. En esencia, el módulo de retraso (líneas 36 a 66) es un contador descendente oculto (línea 59), el cual se crea con la variable entera mach que espera en cero cuando el camino principal tiene luz verde (luz “00”), hasta que se dispara mediante el sensor de autos (línea 52) para cargar el factor de retraso tprinverde 1 en la línea 53. Como el contador se decrementa hasta llegar a cero, se resta uno a cada factor de retraso para hacer que el módulo del contador de retraso sea igual al valor del factor de retraso. Por ejemplo, si deseamos tener un factor de retraso de 25, el contador debe contar en forma descendente desde 24 hasta 0. La longitud actual de tiempo representada por los factores de retraso depende de la frecuencia del reloj. Con una frecuencia de reloj de 1-Hz el periodo sería de 1 s, y los factores de retraso estarían en segundos. Las líneas 62-64 definen una señal de salida lla- mada cambio, la cual detecta cuando mach es igual a uno. Cambio estará en ALTO para indicar que la condición de prueba es verdadera, lo cual a su vez habilitará la máquina de estado en el módulo de control para que avance a su siguiente estado (luz “01”) cuando se sincronice con el reloj, para indicar una luz ámbar en el camino principal. Ahora cuando mach llegue a cero, la instrucción CASE determi- nará que luz tiene un nuevo valor y se cargará el factor de retraso de tiempo fijo de 5 para una luz ámbar (en realidad se carga uno menos, como dijimos antes) en mach (línea 55), en el siguiente pulso de reloj. El conteo descendente continuará a partir de este nuevo tiempo de retraso y cambio habilitará de nuevo el módulo de control para que avance a su siguiente estado (luz “10”), con lo cual se obtendrá una luz verde para el camino lateral. Cuando mach llegue de nuevo a cero se cargará V H D L
  • 463. 1 ENTITY trafico IS 2 PORT ( reloj, auto, restablecer :IN BIT; 3 tprinverde, rlateverde :IN INTEGER RANGE 0 TO 31; 4 luz :BUFFER INTEGER RANGE 0 TO 3; 5 cambio :BUFFER BIT; 6 prinrojo, prinambar, prinverde :OUT BIT; 7 latrojo, latambar, latverde :OUT BIT); 8 END trafico; 9 ARCHITECTURE nivelsuperior OF trafico IS 10 COMPONENT retraso 11 PORT ( reloj, auto, restablecer :IN BIT; 12 luz :IN INTEGER RANGE 0 TO 3; 13 tprinverde, tlateverde :IN INTEGER RANGE 0 TO 31; 14 cambio :OUT BIT); 15 END COMPONENT; 16 COMPONENT control 17 PORT ( reloj, habilita, restablecer :IN BIT; 18 luz :OUT INTEGER RANGE 0 TO 3); 19 END COMPONENT; 20 COMPONENT ctrl_luz 21 PORT ( luz :IN INTEGER RANGE 0 TO 3; 22 prinrojo, prinambar, prinverde :OUT BIT; 23 latrojo, latambar, latverde :OUT BIT); 24 END COMPONENT; 25 BEGIN 26 modulo1: retraso PORT MAP ( reloj = reloj, auto = auto, restablecer = restablecer, 27 luz = luz, trpinverde = tprinverde, tlateverde = tlateverde, 28 cambio = cambio); 29 modulo2: control PORT MAP (reloj = reloj, habilita = cambio, restablecer = restablecer, 30 luz = luz); 31 modulo3: ctrl_luz PORT MAP (luz = luz, prinrojo = prinrojo, prinambar = prinambar; 32 prinverde = prinverde, latrojo = latrojo, latambar = latambar, 33 latverde = latverde); 34 END nivelsuperior; 35 -------------------------------------------------------------------------------------------- 36 ENTITY retraso IS 37 PORT ( reloj, auto, restablecer :IN BIT; 38 luz :IN BIT_VECTOR (1 DOWNTO 0); 39 tprinverde, tlateverde :IN INTEGER RANGE 0 TO 31; 40 cambio :OUT BIT); 41 END retraso; 42 ARCHITECTURE tiempo OF retraso IS 43 BEGIN 44 PROCESS (reloj, restablecer) 45 VARIABLE mach :INTEGER RANGE 0 TO 31; 46 BEGIN 47 IF restablecer = ‘0’ THEN mach := 0; 48 ELSIF (reloj = ‘1’ AND reloj’EVENT) THEN -- con reloj de 1 Hz, tiempo en segundos 49 IF mach = 0 THEN 50 CASE luz IS 51 WHEN “00” 52 IF auto = ‘0’ THEN mach := 0; -- espera auto en camino lateral 53 ELSE mach:= tprinverde – 1; -- establece tiempo para luz verde principal 54 END IF; 55 WHEN “01” = mach := 5 – 1; -- establece tiempo para luz ambar principal 56 WHEN “10” = mach := tlateverde – 1; -- establece tiempo para luz verde lateral 57 WHEN “11” = mach := 5 – 1: -- establece tiempo para luz ambar lateral 58 END CASE; 59 ELSE mach := mach – 1; -- decrementa contador temporizador 60 END IF; 61 END IF; FIGURA 7-61 Diseño de VHDL para el controlador de semáforo. SECCIÓN 7-14/MÁQUINA DE ESTADOS 433
  • 464. 434 CAPÍTULO 7/CONTADORES Y REGISTROS 62 IF mach = 1 THEN cambio = ‘1’; -- cambia luces en control 63 ELSE cambio = ‘0’; 64 END IF; 65 END PROCESS; 66 END tiempo; 67 ---------------------------------------------------------------------------------- 68 ENTITY control IS 69 PORT ( reloj, habilita, restablecer :IN BIT; 70 luz :OUT BIT_VECTOR (1 DOWNTO 0) ); 71 END control; 72 ARCHITECTURE a OF control IS 73 TYPE enumerado IS (pvrd, pamb, lvrd, lamb); -- necesita 4 estados para las combinaciones de luces 74 BEGIN 75 PROCESS (reloj, restablecer) 76 VARIABLE luces: enumerado; 77 BEGIN 78 IF restablecer = ‘0’ THEN luces := pvrd; 79 ELSIF (reloj = ‘1’ AND reloj’EVENT) THEN 80 IF habilita = ‘1’ THEN -- espera a habilita para cambiar estados de luces 81 CASE luces IS 82 WHEN pvrd = luces := pamb; 83 WHEN pamb = luces := lvrd; 84 WHEN lvrd = luces := lamb; 85 WHEN lamb = luces := pvrd; 86 END CASE; 87 END IF; 88 END IF; 89 CASE luces IS -- patrones para los estados de las luces 90 WHEN pvrd= luz = “00”; 91 WHEN pamb= luz = “01; 92 WHEN lvrd= luz = “10” 93 WHEN lamb= luz = “11”; 94 END CASE; 95 END PROCESS; 96 END a; 97 ----------------------------------------------------------------------------------- 98 ENTITY ctrl_luz IS 99 PORT ( luz :IN BIT_VECTOR (1 DOWNTO 0); 100 prinrojo, prinambar, prinverde :OUT BIT; 101 latrojo, latambar, latverde :OUT BIT); 102 END ctrl_luz; 103 ARCHITECTURE patrones OF ctrl_luz IS 104 BEGIN 105 PROCESS (luz) 106 BEGIN 107 CASE luz IS -- el estado de control determina cuales luces encender/apagar 108 WHEN “00” = prinverde = ‘1’; prinambar = ‘0’; prinrojo = ‘0’; 109 latverde = ‘0’; latambar = ‘0’; latrojo = ‘1’; 110 WHEN “01” = prinverde = ‘0’; prinambar = ‘1’; prinrojo = ‘0’; 111 latverde = ‘0’; latambar = ‘0’; latrojo = ‘1’; 112 WHEN “10” = prinverde = ‘0’; prinambar = ‘0’; prinrojo = ‘1’; 113 latverde = ‘1’; latambar = ‘0’; latrojo = ‘0’; 114 WHEN “1” = prinverde = ‘0’; prinambar = ‘0’; prinrojo = ‘1’; 115 latverde = ‘0’; latambar = ‘1’; latrojo = ‘0’; 116 END CASE; 117 END PROCESS; 118 END patrones; FIGURA 7-61 Continuación
  • 465. en el contador descendente (línea 56) el retraso de tiempo (tlateverde – 1) para una luz verde en el camino lateral. Cuando cambio se vuelva a activar, luz avanzará al estado “11” para una luz ámbar en el camino lateral. Mach se reciclará al valor 4 (5-1) en la línea 57 para el retraso de tiempo fijo para una luz ámbar. Cuando cam- bio se active esta vez, el módulo de control regresará a luz “00” (luz verde en el camino principal). Cuando mach se decremente a su estado terminal (0) esta vez, las líneas 52 a 54 determinarán mediante el estado de la entrada del sensor auto si debe esperar a otro auto o si debe cargar el factor de retraso para una luz verde en el camino principal (tprinverde – 1), para empezar el ciclo de nuevo. El camino principal recibirá una luz verde durante al menos esta longitud de tiempo, aún si hay un flujo continuo de automóviles en el camino lateral. Es obvio que podríamos hacer mejoras a este diseño, pero sin duda eso lo complicaría aún más. El módulo de control (líneas 68 a 96) contiene una máquina de estado llamada luces, la cual avanzará en secuencia a través de cuatro estados enumerados para las combinaciones de luces del semáforo. Los cuatro estados enumerados para luces son pvrd, pamb, lvrd y lamb (líneas 73 y 76). Cada estado representa el camino (principal o lateral) que va a recibir una luz verde o ámbar. El otro camino tendrá una luz roja. La entrada habilita se conecta a la señal de salida cambio que produce el módulo de retraso. Cuando se habilite, la máquina de estado luces avanzará al siguiente estado cuando se sincronice por el reloj, como se describe en las instrucciones IF anidada y CASE de las líneas 79 a 88. En caso contrario, luces permanecerá en el estado actual. Los patrones de bits para el puerto de salida luz se han especificado para cada estado de luces mediante la instrucción CASE en las líneas 89-94, para que podamos identificarlas como entradas para los otros dos módulos: retraso y ctrl_luz. El módulo ctrl_luz (líneas 98 a 118) tiene como entrada a luz, la cual representa el estado de la máquina de estados luces del módulo de control, y producirá como salida las señales que enciendan las combinaciones apropiadas de luces verde, ámbar y roja para los caminos principal y lateral. Cada salida del módulo ctrl_luz estará conectada a circuitos controladores de lámparas para suministrar los voltajes y corrientes necesarios para los focos en un semáforo real. La instrucción CASE en las líneas 107 a 116, la cual se invoca mediante el bloque PROCESS cuando cambia la entrada luz, determina cuál combinación de luces del camino principal/camino late- ral deben encenderse para cada estado de luces. La función del módulo ctrl_luz es muy parecida a la de un decodificador. En esencia, decodifica cada combinación de estado de luz para encender una luz verde o ámbar para un camino y una luz roja para el otro. Para cada estado de entrada se produce una combinación de salida única. En estos momentos tal vez usted se esté preguntando: ¿Por qué hay tantas for- mas de describir los circuitos lógicos? Si una es más sencilla que las demás, ¿por qué no sólo estudiar esa? Sin duda la respuesta es que cada nivel de abstracción ofrece ciertas ventajas en comparación con los demás, en ciertos casos. El método estructural proporciona el control más completo sobre las interconexiones. El uso de ecuaciones booleanas, tablas de verdad y tablas de estado PRESENTE / estado SIGUIENTE nos permite describir la manera en que fluyen los datos a través del circuito, mediante el uso de HDL. Por último, el método de comportamiento per- mite una descripción más abstracta de la operación del circuito, en términos de causa y efecto. En la práctica, cada archivo fuente puede tener porciones que se clasifiquen bajo cada uno de los niveles de abstracción. La acción de seleccionar el nivel correcto al escribir código no es una cuestión de bueno o malo, sino de estilo y preferencia. También hay varias formas de lidiar con cualquier tarea, desde el punto de vista relacionado con la elección de las estructuras de control. ¿Debemos usar asig- naciones de señales selectas o ecuaciones booleanas, IF/ELSE o CASE, procesos secuenciales o instrucciones concurrentes, macrofunciones o megafunciones? ¿O deberíamos escribir nuestro propio código? Las respuestas a esas preguntas defi- nirán en última instancia la estrategia personal que usted utilice para resolver el problema. Sus preferencias y las ventajas que encuentre al utilizar un método en comparación con otro se establecerán con la práctica y la experiencia. SECCIÓN 7-14/MÁQUINA DE ESTADOS 435
  • 466. 436 CAPÍTULO 7/CONTADORES Y REGISTROS PREGUNTAS DE REPASO 1. ¿Cuál es la diferencia fundamental entre un contador y una máquina de estados? 2. ¿Cuál es la diferencia entre describir un contador y describir una máquina de estados en un HDL? 3. Si los estados binarios actuales para una máquina de estados no se definen en el código de HDL, ¿cómo se asignan? 4. ¿Cuál es la ventaja de utilizar la descripción de una máquina de estados? RESUMEN PARTE 1 1. En los contadores asíncronos (de rizo) la señal de reloj se aplica al FF del LSB y todos los demás FFs se sincronizan mediante la salida del FF anterior. 2. El número MOD de un contador es el número de estados estables en su ciclo de conteo; también es la proporción máxima de división de frecuencia. 3. El número MOD normal (máximo) de un contador es 2N . Una manera de modi- ficar el número MOD de un contador es agregar circuitos que hagan que se recicle antes de llegar a su último conteo normal. 4. Los contadores pueden conectarse en cascada (encadenarse) para producir ran- gos de conteo mayores y proporciones de división de frecuencia más altas. 5. En un contador síncrono (en paralelo), todos los FFs se sincronizan en forma simultánea a partir de la señal de reloj de entrada. 6. La frecuencia de reloj máxima para un contador asíncrono (fmáx) se decrementa a medida que se incrementa el número de bits. En un contador síncrono fmáx permanece igual, sin importar el número de bits. 7. Un contador de décadas es cualquier contador MOD-10. Un contador BCD es un contador de décadas que avanza en secuencia a través de los 10 códigos BCD (0-9). 8. Un contador preajustable puede cargarse con cualquier conteo inicial que se desee. 9. Un contador ascendente/descendente puede controlarse para contar hacia arri- ba o hacia abajo. 10. Las compuertas lógicas pueden utilizarse para decodificar (detectar) uno o todos los estados de un contador. 11. La secuencia de conteo para un contador síncrono puede determinarse con faci- lidad mediante el uso de una tabla de estado PRESENTE / estado SIGUIENTE, en la cual se listen todos los posibles estados, la información de control de entrada de los flip-flops y los estados SIGUIENTE resultantes. 12. Para implementar los contadores síncronos con secuencias de conteo arbitra- rias se sigue un procedimiento de diseño estándar. 13. Los contadores pueden describirse de muchas formas distintas mediante el uso de HDL, incluyendo descripciones de cableado estructurales, tablas de estado PRESENTE estado SIGUIENTE y descripciones de comportamiento. 14. Todas las características disponibles en los diversos CIs estándar tipo contador de CI, tales como la carga o el borrado asíncronos o síncronos, la habilitación del conteo y la decodificación del conteo terminal, pueden describirse median- te HDL. Los contadores en HDL pueden modificarse con facilidad para números MOD más altos o cambios en los niveles activos para los controles. 15. Los sistemas digitales pueden subdividirse en módulos o bloques más peque- ños, los cuales pueden interconectarse como un diseño jerárquico. 16. Las máquinas de estados pueden representarse en HDL mediante el uso de nombres descriptivos para cada estado, en vez de especificar una secuencia numérica de estados.
  • 467. TÉRMINOS IMPORTANTES PARTE 1 carga en paralelo conexión en cascada contador ascendente contador asíncrono (de rizo) contador autocorregible contador BCD contador de décadas contador descendente contadores ascendentes/ descendentes contadores de múltiples etapas contadores preajustables contadores síncronos (en paralelo) decodificación deformaciones diseño de circuitos secuenciales diseño jerárquico habilitación de conteo MACHINE máquina de estados modelo de Mealy modelo de Moore nivel de abstracción de comportamiento número MOD tabla de estado PRESENTE, estado SIGUIENTE tabla de excitación de circuitos tabla de excitación J-K tipo enumerado VARIABLE PARTE 2 7-15 REGISTROS DE CIRCUITO INTEGRADO Los diversos tipos de registros pueden clasificarse de acuerdo con la forma en que pueden introducirse datos en el registro para su almacenamiento y la forma en que se envían los datos de salida desde el registro. A continuación se muestra una lista de las diversas clasificaciones. 1. Entrada en paralelo/Salida en paralelo (PIPO). 2. Entrada en serie/Salida en serie (SISO). 3. Entrada en paralelo/Salida en serie (PISO). 4. Entrada en serie/Salida en paralelo (SIPO). Cada uno de estos tipos y algunas variaciones de los mismos están disponi- bles en forma de CI para que un diseñador de lógica digital pueda encontrar con exactitud lo que se requiere para cierta aplicación. En las siguientes secciones examinaremos una forma de CI representativa de cada una de las categorías antes mencionadas. 7-16 ENTRADA EN PARALELO/SALIDA EN PARALELO: 74ALS174/74HC174 El registro tipo entrada en paralelo/salida en paralelo es un grupo de flip-flops que puede almacenar varios bits al mismo tiempo; en este tipo de registros todos los bits del valor binario almacenado están disponibles de manera directa. La figura 7-62(a) muestra el diagrama lógico para el 74ALS174 (también el 74HC174), un registro de seis bits que tiene las entradas en paralelo D5 a D0 y las salidas en paralelo Q5 a Q0. Los datos en paralelo se cargan en el registro, en la PGT de la entrada de reloj CP. Puede utilizarse una entrada maestra MR (Master Reset) para restablecer a 0 en forma asíncrona todos los FFs del registro. La figura 7-62(b) muestra el símbolo lógico para el 74ALS174. Este símbolo se utiliza en los diagramas de circuitos para representar los circuitos de la figura 7-62(a). Por lo general, el 74ALS174 se utiliza para la transferencia síncrona de datos en paralelo, en donde los niveles lógicos presentes en las entradas D se transfieren a las salidas Q correspondientes cuando se produce una PGT en la entrada de reloj CP. No obstante, este CI puede cablearse para la transferencia de datos en serie, como se mostrará en los siguientes ejemplos. SECCIÓN 7-16/ENTRADA EN PARALELO/SALIDA EN PARALELO 437
  • 468. 438 CAPÍTULO 7/CONTADORES Y REGISTROS Q5 D5 Q4 D4 Q3 D3 Q2 D2 Q1 D1 Q0 D0 MR CP MR CP (a) 74ALS174 Q5 Q4 Q3 Q2 Q1 Q0 D5 D4 D3 D2 D1 D0 (b) D Q CP CLR D Q CP CLR D Q CP CLR D Q CP CLR D Q CP CLR D Q CP CLR FIGURA 7-62 (a) Diagrama del circuito del 74ALS174; (b) símbolo lógico. EJEMPLO 7-16 EJEMPLO 7-17 Muestre cómo conectar el 74ALS174 de manera que opere como un registro de des- plazamiento en serie, en donde los datos se desplacen en cada PGT de CP como se indica a continuación: Entrada en serie → Q5 → Q4 → Q3 → Q2 → Q1 → Q0. En otras palabras, los datos en serie entrarán en D5 y saldrán en Q0. Solución Si analizamos la figura 7-62(a) podremos ver que para conectar los seis FFs como un registro de desplazamiento en serie, tenemos que conectar la salida Q de uno a la entrada D del siguiente, de manera que los datos se transfieran de la forma requerida. La figura 7-63 muestra cómo se realiza esto. Observe que los datos se desplazan de izquierda a derecha; los datos de entrada se aplican en D5 y los datos de salida aparecen en Q0. ¿Cómo conectaría dos CIs 74ALS174 para operar como un registro de desplazamien- to de 12 bits? Solución Se conecta un segundo CI 74ALS174 como registro de desplazamiento y se conecta Q0 del primer CI a D5 del segundo CI. Se conectan las entradas CP de ambos CIs, de manera que se sincronicen con la misma señal. Además se conectan las entradas MR juntas si se utiliza la señal de restablecer asíncrona (RESET).
  • 469. FIGURA 7-63 Ejemplo 7-16: el 74ALS174 cableado como un registro de desplazamiento. 74ALS174 D5 D4 D3 D2 D1 D0 Q5 Q4 Q3 Q2 Q1 Q0 CP MR Entrada en serie Salida en serie EJEMPLO 7-18 7-17 ENTRADA EN SERIE/SALIDA EN SERIE: 74ALS166/74HC166 Un registro de desplazamiento del tipo entrada en serie/salida en serie cargará los datos un bit a la vez. Los datos se desplazarán bit por bit con cada pulso de reloj, a través del conjunto de flip-flops y hacia el otro extremo del registro. Con los pulsos de reloj continuos, los datos saldrán del registro uno por uno en el mismo orden en el que se cargaron. El 74HC166 (y también el 74ALS166) puede utilizarse como un registro de entrada en serie/salida en serie. La figura 7-64 muestra el diagrama lógico y el símbolo esquemático para el 74HC166. Es un registro de desplazamiento de ocho bits, del cual sólo se puede tener acceso al FF QH. Los datos en serie se introducen en SER y se almacenan en el FF QA. La salida en serie se obtiene en el otro extremo del registro de desplazamiento, en QH. Como podemos ver en la tabla de funciones de la figura 7-64(c) a este registro de desplazamiento también se le pueden cargar datos en paralelo. Si SH/LD 1 la función del registro será despla- zamiento en serie, mientras que un nivel BAJO indicará datos de carga en paralelo a través de las entradas A – H. Las funciones síncronas de desplazamiento en serie y carga en paralelo pueden inhibirse (deshabilitarse) mediante la aplicación de un nivel ALTO a la entrada de control CLK INH. EL registro también tiene una entrada borrar asíncrona (CLR) activa en BAJO. A menudo un registro de desplazamiento se utiliza como una forma de retrasar una señal digital, con base en cierto número de ciclos de reloj. La señal digital se aplica a la entrada en serie del registro de desplazamiento y se desplaza a través de éste mediante pulsos sucesivos de reloj hasta que llega al final del registro de despla- zamiento, en donde aparece como la señal de salida. Este método para retrasar el efecto de una señal digital es común en el campo de las comunicaciones digitales. Por ejemplo, la señal digital podría ser la versión digitalizada de una señal de audio que debe retrasarse antes de transmitirla. Las formas de onda de entrada que se muestran en la figura 7-65 se aplican a un 74HC166. Determine la forma de onda de salida resultante. Solución QH empieza en nivel BAJO, ya que al principio todos los flip-flops se borran median- te el nivel BAJO que se aplica a la entrada CLR asíncrona, en el comienzo del diagrama de sincronización. SECCIÓN 7-17/ENTRADA EN SERIE/SALIDA EN SERIE: 74ALS166/74HC166 439
  • 470. 440 CAPÍTULO 7/CONTADORES Y REGISTROS (a) CLK INH SER Q H SH/LD CLR CLK (b) (c) CLK CLK INH SH/LD SER QH QH 74HC166 SH/LD CLR CLK CLK CLK INH CLK INH SER SER INTERNAS SALIDAS ENTRADAS Q A Q B Q H A . . . H SH/LD CLR CLR L H H H H H X X L H H X X L L L L H X X X H L X L Q A0 a H L Q A0 L Q B0 b Q An Q An Q B0 L Q H0 h Q Gn Q Gn Q H0 X X a . . . h X X X X L ↑ ↑ ↑ ↑ A B C D E F G H A B C D E F G H R D C A B C D E F G H R D C R D C R D C R D C R D C R D C R D C EN PARALELO FIGURA 7-64 (a) Diagrama del circuito del 74HC166; (b) símbolo lógico; (c) tabla de funciones.
  • 471. CLK CLK INH SH/LD SER QH QH 74HC166 CLR CLK 0 SER 1 CLR A B C D E F G H 0 0 0 0 0 0 0 0 CLK SER QH CLR t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 FIGURA 7-65 Ejemplo 7-18. EJEMPLO 7-19 En t1 el registro de desplazamiento recibirá como entrada el bit que se está apli- cando a SER en esos momentos. Éste se almacenará en QA. En t2 el primer bit se desplazará a QB y se almacenará el segundo bit de SER en QA. En t3 el primer bit se desplazará ahora a QC y el tercer bit de SER se almacenará en QA. Por último, el primer bit de entrada de datos aparecerá en la salida QH, en t8. Cada bit de entrada sucesivo en SER llegará a QH, retrasado por ocho ciclos de reloj. 7-18 ENTRADA EN PARALELO/SALIDA EN SERIE: 74ALS165/74HC165 La figura 7-66(a) muestra el símbolo lógico para el 74HC165. Este CI es un registro de ocho bits, tipo entrada en paralelo/salida en serie. En realidad tiene una entrada de datos en serie a través de DS y una entrada de datos síncrona en paralelo a tra- vés de P0 – P7. El registro contiene ocho FFS (Q0 a Q7) conectados en forma interna como un registro de desplazamiento, pero las únicas salidas accesibles de los FFs son Q7 y Q7. CP es la entrada de reloj que se utiliza para la operación de desplaza- miento. La entrada de inhibición de reloj CP INH se utiliza para inhibir el efecto de la entrada CP. La entrada de desplazamiento/carga, SH/LD, controla qué operación se está llevando a cabo: desplazamiento o carga en paralelo. La tabla de funciones en la figura 7-66(b) muestra cómo las diversas combinaciones de entrada determi- nan cuál operación se está realizando, en caso de haberla. La carga en paralelo es asíncrona y el desplazamiento en serie es síncrono. La función de desplazamiento en serie siempre será síncrona, ya que el reloj necesita asegurar que los datos de entrada se desplacen sólo un bit a la vez, con cada flanco de reloj apropiado. Examine la tabla de funciones del 74HC165 y determine: (a) las condiciones nece- sarias para cargar el registro con datos en paralelo; (b) las condiciones necesarias para la operación de desplazamiento. SECCIÓN 7-18/ENTRADA EN PARALELO/SALIDA EN SERIE: 74ALS165/74HC165 441
  • 472. 442 CAPÍTULO 7/CONTADORES Y REGISTROS FIGURA 7-66 (a) Símbolo lógico para el registro 74HC165 tipo entrada en paralelo/ salida en serie; (b) tabla de funciones. 74HC165 Q7 DS P7 P6 P5 P4 P3 P2 P1 P0 CP CP INH SH/LD Q7 (a) (b) SH/LD L H H H H Operación Carga en paralelo Sin cambio Sin cambio Desplazamiento Desplazamiento CP X H X L CP INH X X H L Entradas H = nivel alto L = nivel bajo X = no importa = PGT Tabla de funciones EJEMPLO 7-20 Solución (a) La primera entrada en la tabla muestra que la entrada SH/LD tiene que estar en BAJO para la operación de carga en paralelo. Cuando esta entrada está en BAJO, los datos presentes en las entradas P se cargan en forma asíncrona en los FFs del registro, sin importar las entradas CP y CP INH. Desde luego que sólo las salidas del último FF están disponibles desde el exterior. (b) La operación de desplazamiento no puede llevarse a cabo sino hasta que la entrada SH/LD esté en ALTO y se produzca una PGT en CP mientras que CP INH esté en BAJO [vea la cuarta entrada de la tabla en la figura 7-66(b)]. Un nivel ALTO en CP INH inhibirá el efecto de cualquier pulso de reloj. Observe que pueden invertirse los papeles de las entradas CP y CP INH según lo indica la última entrada en la tabla, ya que dentro del CI se aplica una operación OR entre estas dos señales. Determine la señal de entrada en Q7 si conectamos un 74HC165 con DS 0 y CPINH 0; después aplique las formas de onda de entrada que se muestran en la figura 7-67. P0 P7 representan los datos paralelos en P0P1P2P3P4P5P6P7. Solución Hemos dibujado el diagrama de sincronización para los ocho FFs, de manera que se pueda rastrear su contenido en el tiempo, aún y cuando sólo Q7 estará accesible. La carga en paralelo es síncrona y ocurrirá tan pronto como SH/LD cambie a BAJO. Después de que SH/LD regrese al nivel ALTO, los datos almacenados en el registro se desplazarán un FF a la derecha (hacia Q7) con cada PGT en CP.
  • 473. FIGURA 7-67 Ejemplo 7-20. 0101 0011 1001 1010 CP __ SH/LD (Q0) (Q1) (Q2) (Q3) (Q4) (Q5) (Q6) Q7 P0 - P7 Registro de desplazamiento de 8 bits 74ALS164 MR (b) A B CP 74ALS164 (a) Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 MR A B CP Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 D Q CP CD D Q CP CD D Q CP CD D Q CP CD D Q CP CD D Q CP CD D Q CP CD D Q CP CD FIGURA 7-68 (a) Diagrama lógico para el 74ALS164; (b) símbolo lógico. 7-19 ENTRADA EN SERIE/SALIDA EN PARALELO: 74ALS164/74HC164 La figura 7-68(a) muestra el diagrama lógico para el 74ALS164. Es un registro de desplazamiento de ocho bits tipo entrada en serie/salida en paralelo, en el cual la salida de cada FF es accesible desde el exterior. En vez de una sola entrada en serie, una compuerta AND combina las entradas A y B para producir la entrada serial para el flip-flop Q0. SECCIÓN 7-19/ENTRADA EN SERIE/SALIDA EN PARALELO: 74ALS164/74HC164 443
  • 474. 444 CAPÍTULO 7/CONTADORES Y REGISTROS EJEMPLO 7-21 La operación de desplazamiento ocurre en las PGTs de la entrada de reloj CP. La entrada MR proporciona el restablecimiento asíncrono de todos los FFs, para que queden en nivel BAJO. La figura 7-68(b) muestra el símbolo lógico para el 74ALS164. Observe que se utiliza el símbolo dentro del bloque para indicar que se aplica una operación AND entre las entradas A y B dentro del CI, y que el resultado se aplica a la entrada D de Q0. Suponga que el contenido inicial del registro 74ALS164 en la figura 7-69(a) es 00000000. Determine la secuencia de estados a medida que se aplican pulsos de reloj. Solución La figura 7-69(b) muestra la secuencia correcta. Cuando A B 1 la entrada en serie es 1, por lo que se desplazarán 1s en el registro durante cada PGT de CP. Debido a que al principio Q7 está en 0, la entrada MR está inactiva. En el octavo pulso, el registro trata de cambiar al estado 11111111 cuando el 1 de Q6 se desplaza hacia Q7. Este estado ocurre sólo en forma momentánea debido a que Q7 1 produce un nivel BAJO en MR, con lo cual se restablece de inmediato el registro de vuelta a 00000000. Después se repite la secuencia en los siguientes ocho pulsos de reloj. A continuación se muestra una lista de algunos otros CIs de registro que son variaciones de los que ya presentamos antes: ■ 74194/ALS194/HC194. Este CI es un registro de desplazamiento universal bidirec- cional de cuatro bits, el cual puede realizar las operaciones de desplazamiento a la izquierda, desplazamiento a la derecha, entrada en paralelo y salida en para- lelo. Estas operaciones se seleccionan mediante un código de selección de modo de dos bits, el cual se aplica en forma de entradas al dispositivo. (El problema 7-71 le dará la oportunidad de averiguar más acerca de este versátil CI). ■ 74373/ALS373/HC373/HCT373. Este CI es un registro de entrada en paralelo/ salida en paralelo de ocho bits (octal), el cual contiene ocho circuitos de reten- ción (latches) tipo D con salidas de tercer estado (triestado). Una salida de tercer estado es un tipo especial de salida que permite enlazar salidas de dispositivos en forma segura. En el siguiente capítulo veremos las características de los dis- positivos de tercer estado, tales como el 74373. ■ 74374/ALS374/HC374/HCT374. Este CI es un registro de entrada en paralelo/ salida en paralelo de ocho bits (octal), el cual contiene ocho flip-flops D dispa- rados por flanco, con salidas triestado. (a) Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 MR CP A B 1 1 74ALS164 Q7 0 0 0 0 0 0 0 0 1 Q6 0 0 0 0 0 0 0 1 1 Q5 0 0 0 0 0 0 1 1 1 Q4 0 0 0 0 0 1 1 1 1 Q3 0 0 0 0 1 1 1 1 1 Q2 0 0 0 1 1 1 1 1 1 Q1 0 0 1 1 1 1 1 1 1 Q0 0 1 1 1 1 1 1 1 1 0 1 2 3 4 5 6 7 8 Número de pulso de entrada Estado temporal (b) Se recicla FIGURA 7-69 Ejemplo 7-21.
  • 475. PREGUNTAS DE REPASO Los registros de CI que presentamos aquí son representativos de los diversos tipos que están disponibles en forma comercial. Aunque hay muchas variaciones de estos registros básicos, en este momento usted podrá entender con facilidad la mayoría de ellos, mediante la consulta de las hojas técnicas proporcionadas por los fabricantes. En los problemas al final del capítulo y en el material que cubriremos en capí- tulos subsiguientes presentaremos varias aplicaciones de registros. 1. ¿En qué tipo de registro se puede cargar un número binario completo y después desplazarlo a la salida un bit a la vez? 2. Verdadero o falso: un registro de entrada en serie/salida en paralelo puede mos- trar todos sus bits al mismo tiempo. 3. ¿En qué tipo de registro se pueden introducir datos sólo un bit a la vez y en el que todos los bits de datos pueden estar disponibles como salida? 4. ¿En qué tipo de registro podemos almacenar datos un bit a la vez y tener acceso a sólo un bit de salida a la vez? 5. ¿Qué diferencia hay entre la entrada de datos en paralelo del 74165 y del 74174? 6. ¿Cómo funciona la entrada CP INH del 74ALS165? 7-20 CONTADORES DE REGISTRO DE DESPLAZAMIENTO En la sección 5-18 vimos cómo conectar FFs en un arreglo de registro de despla- zamiento para transferir datos de izquierda a derecha o viceversa, un bit a la vez (en serie). Los contadores de registro de desplazamiento utilizan retroalimentación, lo cual significa que la salida del último FF en el registro se conecta de regreso al primer FF. Contador de anillo El contador de registro de desplazamiento más sencillo es un registro de desplaza- miento circular, éste es conectado de tal forma que el último FF desplaza su valor hacia el primer FF. La figura 7-70 muestra este arreglo, en el cual se utilizan FFs tipo D (también pueden utilizarse flip-flops J-K). Los FFs se conectan de tal forma que la información se desplaza de izquierda a derecha y de regreso desde Q0 hasta Q3. En la mayoría de los casos sólo hay un 1 en el registro, el cual se pone a circular alrededor del registro mientras se aplican pulsos de reloj. Por esta razón se le cono- ce como registro de anillo. Las formas de onda, la tabla de secuencias y el diagrama de estados de la figu- ra 7-70 muestran los diversos estados de los FFs a medida que se aplican pulsos; aquí se supone un estado inicial de Q3 1 y Q2 Q1 Q0 0. Después del primer pulso el 1 se desplaza de Q3 a Q2, de forma tal que el contador se encuentra en el estado 0100. El segundo pulso produce el estado 0010 y el tercer pulso produce el estado 0001. En el cuarto pulso de reloj, el 1 de Q0 se transfiere a Q3 para producir el estado 1000 que es, desde luego, el estado inicial. Los siguientes pulsos hacen que se repita la secuencia. Este contador funciona como un contador MOD-4 debido a que tiene cuatro estados distintos antes de que se repita la secuencia. Aunque este circuito no pro- gresa por la secuencia de conteo binaria normal, de todas formas se considera un contador ya que cada conteo corresponde a un conjunto único de estados de los FFs. Observe que cada una de las formas de onda de salida de los FFs tiene una frecuencia igual a un cuarto de la frecuencia de reloj, debido a que éste es un con- tador de anillo MOD-4. SECCIÓN 7-20/CONTADORES DE REGISTRO DE DESPLAZAMIENTO 445
  • 476. 446 CAPÍTULO 7/CONTADORES Y REGISTROS 1000 0100 0010 0001 (d) Q3 1 0 0 0 1 0 0 0 . . Q2 0 1 0 0 0 1 0 0 . . Q1 0 0 1 0 0 0 1 0 . . Q0 0 0 0 1 0 0 0 1 . . Pulso de RELOJ 0 1 2 3 4 5 6 7 . . (c) CLK Q2 Q2 D CLK Q1 Q1 D CLK Q0 Q0 D RELOJ CLK Q3 Q3 D (a) (b) 1 2 3 4 5 6 7 8 RELOJ Q3 Q2 Q1 Q0 FIGURA 7-70 (a) Contador de anillo de cuatro bits; (b) formas de onda; (c) tabla de secuencia; (d) diagrama de estado. Pueden construirse contadores de anillo para cualquier número MOD que se desee; un contador de anillo MOD-N utiliza N flip-flops conectados en el arreglo que aparece en la figura 7-70. En general, un contador de anillo requiere más FFs que un contador binario para el mismo número MOD; por ejemplo, un contador de anillo MOD-8 requiere ocho FFs, mientras que un contador binario MOD-8 sólo requiere tres. A pesar del hecho de que es menos eficiente en el uso de FFs, un contador de anillo sigue siendo útil debido a que puede decodificarse sin el uso de compuertas de decodificación. La señal de decodificación para cada estado se obtiene en la salida de su FF correspondiente. Compare las formas de onda de los FFs del contador de anillo con las formas de onda de decodificación en la figura 7-20. En algunos casos, un con- tador de anillo podría ser mejor elección que un contador binario con sus compuertas de decodificación asociadas. En especial esto es útil en aplicaciones en donde se uti- liza el contador para controlar la secuencia de operaciones de un sistema.
  • 477. +VCC 1k 1000 pF 74ALS14 A PRE de Q3 y CLR de Q2, Q1, y Q0 de la figura 7-70 2 1 FIGURA 7-71 Circuito para asegurar que el contador de anillo de la figura 7-70 inicie en el estado 1000 al momento del encendido. Inicio de un contador de anillo Para operar en forma apropiada, un contador de anillo debe comenzar con sólo un FF en el estado 1 y todos los demás en el estado 0. Como los estados iniciales de los FFs serán impredecibles al momento de encenderlos, el contador debe prestablecerse en el estado inicial requerido antes de aplicar pulsos de reloj. Una manera de hacer esto es aplicar un pulso momentáneo a la entrada PRE asíncrona de uno de los FFs (por ejemplo, Q3 en la figura 7-70) y a la entrada CLR de todos los demás FFs. La figura 7-71 muestra otro método. Al momento del encendido, el capacitor se car- gará lentamente hacia VCC. La salida del INVERSOR disparador de Schmitt 1 permanecerá en ALTO y la salida del INVERSOR 2 permanecerá en BAJO hasta que el voltaje del capacitor se exceda del voltaje de umbral con tendencia positiva (VT) de la entrada del INVERSOR 1 (un valor aproximado de 1.7 V). Con esto se retendrá en el estado BAJO las entradas PRE de Q3 y CLR de Q2, Q1 y Q0 el tiempo suficiente durante el encendido como para asegurar que el contador empiece en 1000. Contador Johnson El contador de anillo básico puede modificarse un poco para producir otro tipo de contador de registro de desplazamiento, el cual tendrá propiedades un poco dis- tintas. El contador Johnson o de anillo torcido se construye en forma idéntica a un contador de anillo normal, sólo que la salida invertida del último FF se conecta a la entrada del primer FF. En la figura 7-72 se muestra un contador Johnson de tres bits. Observe que la salida Q0 se conecta de regreso a la entrada D de Q2, lo cual significa que el inverso del nivel almacenado en Q0 se transferirá a Q2 en el pulso de reloj. Es fácil analizar la operación del contador Johnson si tenemos en cuenta que en cada transición positiva del pulso de reloj el nivel en Q2 se desplaza hacia Q1, el nivel en Q1 se desplaza hacia Q0 y el inverso del nivel en Q0 se desplaza hacia Q2. Si utilizamos estas ideas y suponemos que todos los FFs están al principio en 0, se pue- den generar las formas de onda, la tabla de secuencias y el diagrama de estados de la figura 7-72. El análisis de las formas de onda y la tabla de secuencias nos revela los siguien- tes puntos importantes: 1. Este contador tiene seis estados distintos (000, 100, 110, 111, 011 y 001) antes de repetir la secuencia. Por ende, es un contador Johnson MOD-6. Observe que no cuenta con una secuencia binaria normal. 2. La forma de onda de cada FF es una onda cuadrada (ciclo de trabajo del 50 por ciento) que tiene una frecuencia igual a un sexto de la frecuencia del reloj. Además, la forma de onda de cada FF se desplaza por un periodo de reloj, con respecto a las demás. El número MOD de un contador Johnson siempre será igual al doble del núme- ro de FFs. Por ejemplo, si conectamos cinco FFs en el arreglo de la figura 7-72 el SECCIÓN 7-20/CONTADORES DE REGISTRO DE DESPLAZAMIENTO 447
  • 478. 448 CAPÍTULO 7/CONTADORES Y REGISTROS FIGURA 7-72 (a) Contador Johnson MOD-6; (b) forma de onda; (c) tabla de secuencias; (d) diagrama de estados. Q2 0 1 1 1 0 0 0 1 1 . . . Q1 0 0 1 1 1 0 0 0 1 . . . Q0 0 0 0 1 1 1 0 0 0 . . . Pulso de RELOJ 0 1 2 3 4 5 6 7 8 . . . (c) 000 001 100 011 110 111 (d) CLK Q2 Q2 D CLK Q1 Q1 D CLK Q0 Q0 D RELOJ 1 2 3 4 5 6 7 (a) RELOJ (b) Q2 Q1 Q0 resultado será un contador Johnson MOD-10, en donde la forma de onda de salida de cada FF es una onda cuadrada a un décimo de la frecuencia del reloj. Por ende, es posible construir un contador MOD-N (en donde N es un número par) mediante la conexión de N/2 flip-flops en un arreglo de contadores Johnson. Decodificación de un contador Johnson Para un número MOD dado, un contador Johnson sólo requiere la mitad del núme- ro de FFs que requiere un contador de anillo. No obstante, un contador Johnson requiere compuertas de decodificación, mientras que un contador de anillo no. Al igual que el contador binario, el de Johnson utiliza una compuerta lógica para decodificar en cada conteo, pero cada compuerta sólo requiere dos entradas, sin importar el número de FFs en el contador. La figura 7-73 muestra las compuertas de decodificación para los seis estados del contador Johnson de la figura 7-72.
  • 479. FIGURA 7-73 Lógica de decodificación para un contador Johnson MOD-6. Q2 Q2Q0 Q0 Q2 Q2Q1 Q1 Q1 Q1Q0 Q0 Q2 Q2Q0 Q0 Q2 Q2Q1 Q1 Q1 Q1Q0 Q0 Q2 0 1 1 1 0 0 Q1 0 0 1 1 1 0 Q0 0 0 0 1 1 1 Compuerta activa 0 1 2 3 4 5 0 1 2 3 4 5 PREGUNTAS DE REPASO Observe que cada compuerta de decodificación sólo tiene dos entradas aún y cuando hay tres FFs en el contador, porque para cada conteo dos de los tres FFs se encuentran en una combinación única de estados. Por ejemplo, la combinación Q2 Q0 0 sólo ocurre una vez en la secuencia de conteo, en la cuenta de 0. Por lo tanto, puede utilizarse la compuerta AND 0 con las entradas Q2 y Q0 para decodificar en este conteo. Esta misma característica la comparten todos los demás estados en la secuencia, como podrá verificar el lector. De hecho, para un contador Johnson de cualquier tamaño las compuertas de decodificación sólo tendrán dos entradas. Los contadores Johnson representan un punto intermedio entre los contadores de anillo y los contadores binarios. Un contador Johnson requiere menos FFs que un contador de anillo, pero, por lo general, requiere más que un contador binario; tiene más circuitos de decodificación que un contador de anillo pero menos que un contador binario. Por ende, algunas veces representa una buena opción para ciertas aplicaciones. Contadores de registro de desplazamiento de CI Hay muy pocos contadores de anillo o Johnson disponibles como CIs, debido a que es muy fácil tomar un CI de registro de desplazamiento y cablearlo como un conta- dor de anillo o como un Johnson. Algunos de los CIs de contador Johnson CMOS son el 74HC4017 y el 74HC4022, éstos incluyen circuitos de decodificación completos. 1. ¿Cuál contador de registro de desplazamiento requiere la mayor cantidad de FFs para un número MOD dado? 2. ¿Cuál contador de registro de desplazamiento requiere la mayor cantidad de circuitos de decodificación? 3. ¿Cómo puede convertirse un contador de anillo en un contador Johnson? 4. Verdadero o falso: (a) Las salidas de un contador de anillo son siempre ondas cuadradas. (b) Los circuitos de decodificación para un contador Johnson son más simples que los de un contador binario. (c) Los contadores de anillo y Johnson son contadores síncronos. 5. ¿Cuántos FFs se necesitan en un contador de anillo MOD-16? ¿Cuántos se nece- sitan en un contador Johnson MOD-16? SECCIÓN 7-20/CONTADORES DE REGISTRO DE DESPLAZAMIENTO 449
  • 480. 450 CAPÍTULO 7/CONTADORES Y REGISTROS FIGURA 7-74 Ejemplo 7-22. 74ALS161 74ALS00 (a) QA QB QC QD 1 CLK 15 11 12 13 14 6 9 1 7 10 2 5 4 3 0 1 3 2 CLK ENT ENP CLR LOAD D A B C QD QA QB QC RCO (c) CLK QB QC QA QD QD QC QB QA (b) 0001 0011 0010 0000 EJEMPLO 7-22 7-21 DIAGNÓSTICO DE FALLAS Los flip-flops, los contadores y los registros son los principales componentes en los sistemas lógicos secuenciales. Debido a sus dispositivos de almacenamiento, un sistema lógico secuencial tiene la característica de que sus salidas y la secuencia de las ope- raciones dependen tanto de las entradas presentes como de las que se produjeron antes. Aún y cuando los sistemas lógicos secuenciales son, por lo general, más com- plejos que los combinacionales, los procedimientos esenciales para el diagnóstico de fallas se aplican con la misma eficacia en ambos tipos de sistemas. Los sistemas secuenciales sufren de los mismos tipos de fallas (circuitos abiertos, cortos, fallas internas en los CIs, etcétera) que los combinacionales. Muchos de los mismos pasos que se utilizan para aislar fallas en un sistema combinacional pueden aplicarse a los sistemas secuenciales. Una de las técnicas de diagnóstico de fallas más efectiva comienza desde que el técnico de diagnósti- co de fallas observa la operación del sistema y, mediante el razonamiento analítico, determina las posibles causas de la falla en el sistema. Después el técnico utiliza los instrumentos de prueba disponibles para aislar la falla exacta. Los siguientes ejemplos demostrarán los tipos de razonamiento analítico que deben ser el paso inicial al diagnosticar fallas en los sistemas secuenciales. Después de estudiar estos ejemplos, usted deberá estar preparado para enfrentar los problemas de diagnósti- co de fallas al final del capítulo. La figura 7-74(a) muestra un 74ALS161 cableado como un contador MOD-12, pero produce la secuencia de conteo que se muestra en la figura 7-74(b). Determine la causa del comportamiento incorrecto del circuito. Solución Las salidas QB y QA parecen operar en forma correcta, pero QC y QD permanecen en BAJO. Nuestra primera opción para la falla es que QC está en corto con tierra, pero al comprobar con un óhmetro no se confirma esto. El 74ALS161 podría tener una falla interna que evite que cuente más allá de 0011.Tratamos de extraer el chip NAND 7400 de su zócalo y ponemos en corto la terminal CLR con un nivel ALTO.
  • 481. C D CLK DNUP GN LDN B A QC RCON MXMN QD QB QA 74191 CONTADOR f0 q0 q0 q1 q2 q3 q4 q5 q6 q7 q1 q2 q3 f1 f2 f3 C D CLK DNUP NAND2 BAND8 VCC 11 11 GN LDN B A QC RCON MXMN QD QB QA 74191 SALIDA GND 15 ENTRADA VCC ENTRADA VCC f[7..0] 3 f[7..0] ent 8 2 4 1 q[7..0] q[7..0] SALIDA NOT 13 5 12 sal CONTADOR f4 q4 q5 q6 q7 f5 f6 f7 VCC 16 FIGURA 7-75 Ejemplo 7-23. EJEMPLO 7-23 Ahora el contador cuenta en una secuencia MOD-16 regular, por lo que al menos las salidas del contador parecen estar bien. A continuación decidimos analizar la terminal CLR volviendo a conectar la compuerta NAND. Al utilizar una sonda lógi- ca con su “captura de pulsos” encendida, descubrimos que la terminal CLR está recibiendo pulsos. Al conectar un osciloscopio a las salidas vemos que el contador produce las formas de onda que se muestran en la figura 7-74(c). Se observa una deformación en QC cuando el contador debería pasar al estado 0100. Eso indica que 0100 es un estado transitorio, cuando en realidad el estado transitorio debería ser 1100. Ahora sospechamos de la conexión entre QD y la compuerta NAND, por lo que utilizamos la sonda lógica para revisar la terminal 2. En esta terminal no hay ninguna señal lógica, lo cual nos lleva a la conclusión de que la falla es debido a un circuito abierto entre la salida QD y la terminal 2 en la compuerta NAND. La entra- da de la compuerta NAND está flotando en ALTO, lo cual provoca que el circuito detecte el estado 0100 en vez del 1100, como debería ser. Un técnico recibe una “orden de reparación” para un tablero de circuitos, en la cual se indica que el divisor de frecuencia variable opera “algunas veces”. Suena como uno de los temidos problemas en los que la falla es intermitente; a menudo uno de lo problemas más difíciles de resolver. Su primer pensamiento es regresar el tablero con la nota “¡Utilícelo sólo cuando opere en forma correcta!”, pero decide investigar más, ya que se siente capaz de enfrentar un buen reto. En la figura 7-75 se muestra el diagrama esquemático para el bloque del circuito. El factor de división deseado se aplica a la entrada f[7..0] en binario. El contador de ocho bits cuenta en SECCIÓN 7-21/DIAGNÓSTICO DE FALLAS 451
  • 482. 452 CAPÍTULO 7/CONTADORES Y REGISTROS forma descendente a partir de este número hasta que llega a cero y después realiza una carga asíncrona de f[ ] otra vez, convirtiendo al cero en un estado transitorio. El módulo resultante será igual al valor en f[ ]. Para obtener la señal de frecuencia de salida se decodifica el estado 00000001, con lo cual la frecuencia de sal se hace igual a la frecuencia de ent, dividida entre el valor binario f[ ]. En la aplicación, la frecuencia de ent es 100 kHz. Si se cambia f[ ] se producirá una nueva frecuencia de salida. Solución El técnico decide que necesita obtener algunos resultados de prueba para anali- zarlos. Elije algunos factores de división sencillos para aplicarlos a f y registra los resultados que se muestran en la tabla 7-9. El técnico observa que el circuito produce resultados correctos en algunos casos de prueba, pero produce resultados incorrectos en otros. El problema no parece ser intermitente después de todo, sino que parece depender del valor para f. El técnico decide calcular la relación entre las frecuencias de entrada y de salida para las tres pruebas que fallaron y obtiene lo siguiente: 100 kHz/398.4 Hz 251 100 kHz/1041.7 Hz 96 100 kHz/9090.9 Hz 11 Cada falla parece un factor de división que es cuatro unidades menor que el valor que se aplicó a la entrada. Después de analizar otra vez la representación binaria para f, el técnico observa que todas las fallas ocurrieron cuando f2 1. Sin duda, el peso para ese bit es cuatro. ¡Eureka! Ese bit no parece estar funcionando; es hora de hacer una prueba con una sonda lógica en la terminal f2. Asimismo, la sonda lógica indica que la terminal está en BAJO sin importar el valor para f2. 7-22 REGISTROS EN HDL En las secciones 7-15 a 7-19 describimos con detalle las diversas opciones de la transferencia de datos en serie y en paralelo dentro de los registros; además descri- bimos algunos ejemplos de CIs que realizan estas operaciones. La belleza de utilizar HDL para describir un registro está en el hecho de que a un circuito se le puede dar cualquiera de las opciones y se le pueden asignar tantos bits como sean necesarios con sólo cambiar unas cuantas palabras. f[ ] (decimal) f[ ] (binario) fsal medida ¿Correcto? 255 11111111 398.4 Hz 240 11110000 416.7 Hz ✓ 200 11001000 500.0 Hz ✓ 100 01100100 1041.7 Hz 50 00110010 2000.0 Hz ✓ 25 00011001 4000.0 Hz ✓ 15 00001111 9090.9 Hz TABLA 7-9
  • 483. Q3 Q2 Q1 Q0 Datos nuevos que se van a cargar Q3 Q2 Q1 Q0 Q3 Q2 Q1 Q0 Ser ENT Q3 Q2 Q1 Q0 Q3 Q2 Q1 Q0 Q3 Q2 Q1 Q0 Q3 Q2 Q1 Q0 Ser IN PRESENTE SIGUIENTE PRESENTE SIGUIENTE (a) Carga en paralelo (b) Desplazamiento a la derecha (c) Desplazamiento a la izquierda (d) Retención de datos FIGURA 7-76 Transferencias de datos que se realizan en registros de desplazamiento: (a) carga en paralelo; (b) desplazamiento a la derecha; (c) desplazamiento a la izquierda; (d) retención de datos. Las técnicas de HDL utilizan arreglos de bits para describir los datos de un registro y transferir esos datos en formato en paralelo o en serie. Para comprender cómo se desplazan los datos en HDL considere los diagramas de la figura 7-76, en donde se muestran cuatro flip-flops que realizan operaciones de transferencia de carga en paralelo, desplazamiento a la derecha, desplazamiento a la izquierda y retención de datos. Para todos estos diagramas los bits se transfieren en forma síncrona, lo cual significa que todos se desplazan en forma simultánea en un solo flanco de reloj. En la figura 7-76(a) los datos que se van a cargar en paralelo en el registro se presentan en las entradas D, y en el siguiente pulso de reloj se trans- ferirán a las salidas q. Desplazar los datos a la derecha significa que cada bit se transfiere hacia la posición del bit que está a su derecha inmediata, mientras que se transfiere un nuevo bit de entrada en el extremo izquierda y se pierde el último bit en el extremo derecho. Esta situación se ilustra en la figura 7-76(b). Observe que el conjunto de datos que queremos en el estado SIGUIENTE está compuesto de la nueva entrada en serie y tres de los cuatro bits en el arreglo del estado PRESENTE. Estos datos sólo necesitan desplazarse y sobrescribir los cuatro bits de datos del registro. La misma operación se produce en la figura 7-76(c), pero los datos se des- plazan a la izquierda. La clave para desplazar el contenido del registro a la derecha o a la izquierda es agrupar los tres bits de datos apropiados del estado PRESENTE en orden correcto con el bit de entrada en serie, de manera que estos cuatro bits puedan cargarse en paralelo en el registro. Puede utilizarse la concatenación (agru- pamiento en una secuencia específica) del conjunto deseado de bits de datos para describir el movimiento de datos necesario para el desplazamiento en serie en cualquier dirección. A la última posibilidad se le conoce como el modo de retención de datos y se muestra en la figura 7-76(d). Ésta puede parecer innecesaria, ya que los registros (flip-flops) retienen los datos por su propia naturaleza. No obstante, debemos tener en cuenta lo que debe hacerse a un registro para que pueda rete- ner su valor cuando recibe pulsos de reloj. Las salidas Q deben enlazarse con las entradas D para cada flip-flop, de manera que los datos anteriores se recarguen en cada pulso de reloj. Ahora analicemos algunos ejemplos de circuitos de registro de desplazamiento en HDL. REGISTRO SISO EN AHDL La figura 7-77 lista un registro de cuatro bits, tipo entrada en serie/salida en serie (SISO), en AHDL. En la línea 7 se crea una instancia de un arreglo de cuatro flip- flops D y se obtiene la salida en serie a partir del último FF q0 (línea 10). Si el control desplaza está en ALTO, serial_ent se desplazará hacia el registro y los demás A H D L SECCIÓN 7-22/REGISTROS EN HDL 453
  • 484. 454 CAPÍTULO 7/CONTADORES Y REGISTROS 1 SUBDESIGN fig7_77 2 ( 3 clk, desplaza, serial_ent :INPUT; 4 serial_sal :OUTPUT; 5 ) 6 VARIABLE 7 q[3..0] :DFF; 8 BEGIN 9 q[ ].clk = clk; -- envía último bit del registro como salida 10 serial_sal = q0.q; 11 IF (desplaza == VCC) THEN 12 q[3..0].d = (serial_ent, q[3..1].q); -- concatena para el desplazamiento 13 ELSE 14 q[3..0].d = (q[3..0].q); -- retiene los datos 15 END IF; 16 END; FIGURA 7-77 Registro de entrada en serie/salida en serie mediante el uso de AHDL. bits se moverán a la derecha (líneas 11 a 15). Al concatenar serial_ent con los bits de salida de los FFs q3, q2 y q1 en ese orden se crea el patrón de bits apropiado de entrada de datos de desplazamiento a la derecha (línea 12). Si el control desplaza está en BAJO, el registro retendrá los datos actuales (línea 14). En la figura 7-78 se muestran los resultados de la simulación. REGISTRO SISO ENVHDL La figura 7-79 lista un registro tipo entrada en serie/salida en serie (SISO) de cuatro bits en VHDL. En la línea 8 se crea un registro con la declaración de la variable q y se obtiene la salida en serie mediante el último bit del registro o q(0) (línea 10). Si el control desplaza está en ALTO, serial_ent se desplazará hacia el registro y los otros bits se moverán a la derecha (líneas 12 a 14). Al concatenar serial_ent y los bits del registro q(3), q(2) y q(1) en ese orden se crea el patrón apropiado de bits de entrada de datos de desplazamiento a la derecha (línea 13). Si el control de desplazamiento está en BAJO,VHDL supondrá que la variable se queda igual y, por lo tanto, reten- drá los datos actuales. La figura 7-78 muestra los resultados de la simulación. FIGURA 7-78 Simulación de un registro SISO. clk 1 1 0 0 0 0 0 0 desplaza serial_ent q3.Q q2.Q q1.Q q0.Q serial_sal 5.0us 10.0us 15.0us 20.0us 25.0us 30.0us 35.0us 40.0us 45.us V H D L
  • 485. FIGURA 7-80 Registro de entrada en paralelo/salida en serie mediante el uso de AHDL. 1 SUBDESIGN fig7_80 2 ( 3 clk, desplaza, carga :INPUT; 4 datos[3..0] :INPUT; 5 serial_sal :OUTPUT; 6 ) 7 VARIABLE 8 q[3..0] :DFF; 9 BEGIN 10 q[ ].clk = clk; 11 serial_sal = q0.q; -- envía último bit del registro como salida 12 IF (carga ==VCC) THEN q[3..0].d = datos[3..0]; -- carga en paralelo 13 ELSIF (desplaza == VCC) THEN q[3..0].d = (GND, q[3..1].q); -- desplaza 14 ELSE q[3..0].d = q[3..0].q; -- retiene 15 END IF; 16 END; 1 ENTITY fig7_79 IS 2 PORT ( clk, desplaza, serial_ent :IN BIT; 3 serial_sal :OUT BIT ); 4 END fig7_79; 5 ARCHITECTURE vhdl OF fig7_79 IS 6 BEGIN 7 PROCESS (clk) 8 VARIABLE q :BIT_VECTOR (3 DOWNTO 0); 9 BEGIN 10 serial_sal = q(0); -- envía último bit del registro como salida 11 IF (clk’EVENT AND clk = ‘1’) THEN 12 IF (desplaza = ‘1’) THEN 13 q := (serial_ent q(3 DOWNTO 1)); -- concatena para el desplazamiento 14 END IF; -- en caso contrario, retiene los datos 15 END IF; 16 END PROCESS; 17 END vhdl; FIGURA 7-79 Registro de entrada en serie/salida en serie mediante el uso de VHDL. REGISTRO PISO EN AHDL La figura 7-80 lista un registro tipo entrada en paralelo/salida en serie (PISO) de cuatro bits. En la línea 8 se crea el registro llamado q mediante el uso de cuatro FFs D y en la línea 11 se describe la salida en serie de q0. El registro cuenta con contro- les separados de carga (carga) en paralelo y desplazamiento (desplaza) en serie. En las líneas 12 a 15 se definen las funciones del registro. Si carga está en ALTO, se car- gará en forma síncrona la entrada externa datos[3..0]. Carga tiene prioridad y debe estar en BAJO para desplazar en serie el contenido del registro en cada PGT de clk, cuando desplaza está en ALTO. En la línea 13 se crea el patrón para desplazar datos a la derecha mediante la concatenación. Observe que un nivel BAJO constante será la entrada de datos en serie para una operación de desplazamiento. Si ni carga ni desplaza están en ALTO, el registro retendrá el valor de datos actual (línea 14). La figura 7-81 muestra los resultados de la simulación. A H D L SECCIÓN 7-22/REGISTROS EN HDL 455
  • 486. 456 CAPÍTULO 7/CONTADORES Y REGISTROS 0 9 4 2 1 0 C 6 3 1 0 7 3 1 0 A 5 2 1 0 clk 1 0 0 B 1001 1001 1100 0111 1010 0 H0 carga desplaza datos[3..0] serial_sal q 10.0us 20.0us 30.0us 40.0us 50.0us 60.0us 70.0us 80.0us 90.0us FIGURA 7-81 Simulación de un registro PISO. EJEMPLO 7-24 REGISTRO PISO ENVHDL La figura 7-82 lista un registro tipo entrada en paralelo/salida en serie (PISO) de cuatro bits. En la línea 11 se crea el registro con la declaración de la variable q y en la línea 13 se describe la salida en serie de q(0). El registro tiene controles separados de carga (carga) y desplazamiento en serie (desplaza). En las líneas 14 a 18 se definen las funciones del registro. Si carga está en ALTO, la entrada externa datos se cargará en forma síncrona. Carga tiene prioridad y debe estar en BAJO para desplazar en serie el contenido del registro en cada PGT de clk cuando cambia está en ALTO. En la línea 16 se crea el patrón para desplazar datos a la derecha median- te la concatenación. Observe que la entrada de datos en serie será un nivel BAJO constante para una operación de desplazamiento. Si ni carga ni desplaza están en ALTO, el registro retendrá el valor actual de datos mediante la operación implícita de VHDL. La figura 7-81 muestra los resultados de la simulación. Suponga que deseamos diseñar un registro de desplazamiento de cuatro bits uni- versal mediante HDL, el cual tenga cuatro modos síncronos de operación: Retener datos, Desplazar a la izquierda, Desplazar a la derecha y Carga en paralelo. Dos bits de entrada seleccionarán la operación que deba realizarse en cada flanco de subida del reloj. Para implementar un registro de desplazamiento podemos utilizar código V H D L 1 ENTITY fig7_82 IS 2 PORT ( 3 clk, desplaza, carga :IN BIT; 4 datos :IN BIT_VECTOR (3 DOWNTO 0); 5 serial_sal :OUT BIT 6 ); 7 END fig7_82; 8 ARCHITECTURE vhdl OF fig7_82 IS 9 BEGIN 10 PROCESS (clk) 11 VARIABLE q :BIT_VECTOR (3 DOWNTO 0); 12 BEGIN 13 serial_sal = q(0); -- envía último bit del registro como salida 14 IF (clk’EVENT AND clk = ‘1’) THEN 15 IF (carga = ‘1’) THEN q := datos; -- carga en paralelo 16 ELSIF (desplaza = ‘1’) THEN q:= (‘0’ q[3 DOWNTO 1)); -- desplaza 17 ENDIF; -- en caso contrario retiene 18 END IF; 19 END PROCESS; 20 END vhdl; FIGURA 7-82 Registro de entrada en paralelo/salida en serie mediante el uso de VHDL.
  • 487. FIGURA 7-83 Registro de desplazamiento universal en AHDL. 1 SUBDESIGN fig7 83 2 ( 3 reloj :INPUT; 4 dent[3..0] :INPUT; datos en paralelo de entrada 5 ser ent :INPUT; datos en serie de entrada, de izquierda o derecha 6 modo [1..0] :INPUT; Selección de MODO: 0 retención, 1 derecha, 2izquierda, 3carga 7 q[3..0] :OUTPUT; 8 ) 9 VARIABLE 10 ff[3..0] :DFF; define el conjunto de registros 11 BEGIN 12 ff[].clk reloj; reloj síncrono 13 CASE modo[] IS 14 WHEN 0 ff[].d ff[].q; retiene desplazamiento 15 WHEN 1 ff[2..0].d ff[3..1].q); desplazamiento a la derecha 16 ff[3].d ser ent; nuevos datos provenientes de la izquierda 17 WHEN 2 ff[3..1].d ff[2..0].q; desplazamiento a la izquierda 18 ff[0].d ser ent; nuevos datos provenientes de la derecha 19 WHEN 3 ff[].d dent[]; carga en paralelo 20 END CASE; 21 q[] ff[]; actualiza las salidas 22 END; estructural para describir una cadena de flip-flops. Para hacer que el registro de desplazamiento sea eficiente y nos permita desplazar a la izquierda o a la derecha, o realizar la carga en paralelo, este archivo se haría bastante largo y por ende difí- cil de leer y comprender utilizando los métodos estructurales. Un enfoque mucho más conveniente es utilizar los métodos más abstractos e intuitivos disponibles en HDL para describir el circuito en forma concisa. Para ello debemos desarrollar una estrategia para crear la acción de desplazamiento. El concepto es muy similar al que se presenta en el ejemplo 7-16, en donde se cableó un chip de registro de flip- flop D (74174) para formar un registro de desplazamiento. En vez de pensar en el registro de desplazamiento como una cadena en serie de flip-flops, debemos consi- derarlo como un registro en paralelo cuyo contenido se va a transferir en paralelo a un conjunto de bits que está desplazado por una posición de un bit. La figura 7-76 demuestra el concepto de cada transferencia necesaria en este diseño. Solución Un primer paso muy razonable es definir una entrada de dos bits llamada modo, con la cual podemos especificar el modo 0, 1, 2 o 3. El siguiente reto es decidir cómo elegir entre las cuatro operaciones mediante el uso de HDL. Aquí pueden funcionar varios métodos. Se eligió la estructura CASE debido a que nos permite elegir un conjunto distinto de instrucciones en HDL para cada uno de todos los posibles valo- res de modo. No hay prioridad asociada con la comprobación de la configuración de los modos existentes o de los intervalos traslapados de números de modo, por lo que no necesitamos las ventajas de la instrucción IF/ELSE. En las figuras 7-83 y 7-84 se muestran las soluciones en HDL. En cada una de las soluciones se definen las mismas entradas y salidas: un reloj, cuatro bits de datos de carga en paralelo, un bit individual para la entrada en serie al registro, dos bits para la selección del modo y cuatro bits de salida. SECCIÓN 7-22/REGISTROS EN HDL 457
  • 488. 458 CAPÍTULO 7/CONTADORES Y REGISTROS 1 ENTITY fig7_84 IS 2 PORT ( 3 reloj :IN BIT; 4 dent :IN BIT_VECTOR (3 DOWNTO 0); -- datos en paralelo de entrada 5 ser_ent :IN BIT; -- datos en serie en Izq o Der 6 modo :IN INTEGER RANGE 0 TO 3; -- 0=retención 1=der 2=izq 3=carga 7 q :OUT BIT_VECTOR (3 DOWNTO 0)); 8 END fig7_84; 9 ARCHITECTURE a OF fig7_84 IS 10 BEGIN 11 PROCESS (reloj) -- responde al reloj 12 VARIABLE ff :BIT_VECTOR (3 DOWNTO 0); 13 BEGIN 14 IF (reloj’EVENT AND reloj = ‘1’) THEN 15 CASE modo IS 16 WHEN 0 = ff := ff; -- retiene los datos 17 WHEN 1 = ff(2 DOWNTO 0) := ff(3 DOWNTO 1); -- desplaza a la derecha 18 ff(3) := ser_ent; 19 WHEN 2 = ff(3 DOWNTO 1) := ff(2 DOWNTO 0); -- desplaza a la izquierda 20 f(0) := ser_ent; 21 WHEN 3 = ff := dent; -- carga en paralelo 22 END CASE; 23 END IF; 24 q = ff; -- actualiza las salidas 25 END PROCESS; 26 END a; FIGURA 7-84 Registro de desplazamiento universal mediante el uso de VHDL. SOLUCIÓN EN AHDL La solución en AHDL de la figura 7-83 utiliza un registro de flip-flops D, los cuales se declaran mediante el nombre ff en la línea 10 para representar el estado actual del registro. Debido a que todos los flip-flops necesitan recibir pulsos de reloj al mismo tiempo (en forma síncrona), todas las entradas de reloj se asignan a reloj en la línea 12. La instrucción CASE selecciona una configuración de transferencia distinta para cada valor de las entradas modo. El modo 0 (retener datos) utiliza una transferencia en paralelo directa del estado actual a las mismas posiciones de bit en las entradas D, para producir el estado SIGUIENTE idéntico. El modo 1 (desplazar a la derecha), que se describe en las líneas 15 y 16, transfiere los bits 3, 2 y 1 a las posiciones de bit 2, 1 y 0, en forma respectiva, y carga el bit 3 de la entrada serial. El modo 2 (desplazar a la izquierda) realiza una operación similar en el sentido opues- to (vea las líneas 17 y 18). El modo 3 (carga en paralelo) transfiere el valor en las entradas de datos en paralelo para que se conviertan en el estado SIGUIENTE del registro. El código crea el circuito que selecciona una de estas operaciones lógicas en el registro actual y los datos apropiados se transfieren a las terminales de salida en el siguiente pulso de reloj. Este código se puede reducir si combinamos las líneas 15 y 16 en una sola instrucción que concatene ser_ent con los tres bits de datos y los agrupe como un conjunto de cuatro bits. La instrucción que puede sustituir las líneas 15 y 16 es: WHEN 1 ff[ ].d (ser ent, ff[3..1].q); Las líneas 17 y 18 también pueden sustituirse por: WHEN 2 ff[ ].d (ff[2..0].q, ser ent); A H D L
  • 489. PREGUNTAS DE REPASO SOLUCIÓN ENVHDL La solución en VHDL de la figura 7-84 define una variable interna por el nombre ff en la línea 12, la cual representa el estado actual del registro. Debido a que todas las operaciones de transferencia necesitan llevarse a cabo en respuesta a un flanco de subida del reloj, se utiliza un bloque PROCESS en el cual se especifica reloj en la lista de sensibilidad. La instrucción CASE selecciona una configuración de transferencia distinta para cada valor de las entradas modo. El modo 0 (retener datos) utiliza una transferencia en paralelo directa del estado actual a las mismas posiciones de bit para producir el estado SIGUIENTE idéntico. El modo 1 (despla- zar a la derecha) transfiere los bits 3, 2 y 1 a las posiciones de bit 2, 1 y 0, en forma respectiva (línea 17) y carga el bit 3 de la entrada en serie (línea 18). El modo 2 (desplazar a la izquierda) realiza una operación similar en el sentido opuesto. El modo 3 (carga en paralelo) transfiere el valor en las entradas de datos en paralelo al estado SIGUIENTE del registro. Después de elegir una de estas operaciones en el registro actual, los datos se transfieren a las terminales de salida en la línea 24. Este código puede reducirse si combinamos las líneas 17 y 18 en una sola instrucción que concatene ser_ent con los tres bits de datos y los agrupe como un conjunto de cuatro bits. La instrucción que puede sustituir las líneas 17 y 18 es: WHEN 1 ff : ser ent ff(3 DOWNTO 1); Las líneas 19 y 20 también pueden sustituirse por: WHEN 2 ff : ff(2 DOWNTO 0) ser ent; 1. Escriba una expresión en HDL para implementar un desplazamiento a la izquier- da de un arreglo de ocho bits llamado reg[7..0] con la entrada en serie dat. 2. ¿Por qué es necesario recargar los datos actuales durante el modo de retención de datos en un registro de desplazamiento? 7-23 CONTADORES DE ANILLO EN HDL En la sección 7-20 utilizamos un registro de desplazamiento para crear un contador que circula un solo nivel lógico activo a través de todos sus flip-flops. A este tipo de registro se le conoce como contador de anillo. Una característica de los contadores de anillo es que el módulo es igual al número de flip-flops en el registro y, por lo tanto, siempre hay muchos estados sin usar e inválidos.Ya hemos visto las formas de describir a los contadores mediante el uso de la instrucción CASE para especificar las transiciones del estado PRESENTE y del estado SIGUIENTE. En esos ejemplos nos hicimos cargo de los estados inválidos al incluirlos bajo “otros” (OTHERS). Este método también funciona para los contadores de anillo. No obstante, en esta sección veremos una manera más intuitiva para describir los contadores de despla- zamiento. Estos métodos utilizan las mismas técnicas descritas en la sección 7-22 para que el registro se desplace una posición en cada pulso de reloj. La principal característi- ca de este código es el método para completar el “anillo” al dividir la línea ser_ent del registro de desplazamiento. Con un poco de planeación también deberíamos ser capaces de asegurar que el contador llegue en algún momento a la secuencia desea- da, sin importar en qué estado se encuentre al principio. Para este ejemplo recrea- mos la operación del contador de anillo cuyo diagrama de estado se muestra en la figura 7-70(d). Para poder hacer que este contador inicie en forma automática sin utilizar entradas asíncronas, controlamos la línea ser_ent del registro de desplaza- V H D L SECCIÓN 7-23/CONTADORES DE ANILLO EN HDL 459
  • 490. 460 CAPÍTULO 7/CONTADORES Y REGISTROS miento mediante el uso de una instrucción IF/ELSE. Cada vez que detectamos que los tres bits superiores están en BAJO, suponemos que el bit de menor orden está en ALTO y en el siguiente ciclo de reloj queremos desplazar un nivel ALTO hacia ser_ent. Para todos los demás estados (válidos e inválidos) desplazamos un nivel BAJO. Sin importar el estado con el que se inicialice el contador, en un momento dado se llenará con ceros; en ese momento nuestra lógica desplazará un nivel ALTO para comenzar la secuencia de anillo. CONTADOR DE ANILLO EN AHDL Para estos momentos, el código de AHDL que se muestra en la figura 7-85 le deberá ser familiar. Las líneas 11 y 12 controlan la entrada en serie mediante el uso de la estrategia que acabamos de describir. Observe el uso del operador de doble signo de igualdad () en la línea 11. Este operador evalúa si las expresiones en cada lado son iguales o no. Recuerde que el operador de signo de igualdad () asigna (es decir, conecta) un objeto a otro. La línea 14 implementa la acción de desplaza- miento a la derecha que describimos en la sección anterior. La figura 7-86 muestra los resultados de la simulación. CONTADOR DE ANILLO ENVHDL Para estos momentos, el código de VHDL que se muestra en la figura 7-87 deberá serle familiar. Las líneas 12 y 13 controlan la entrada en serie mediante el uso de la estrategia que acabamos de describir. La línea 16 implementa la acción de despla- zamiento a la derecha que describimos en la sección anterior. Los resultados de la simulación se muestran en la figura 7-86. A H D L FIGURA 7-85 Contador de anillo de cuatro bits en AHDL. 1 SUBDESIGN fig7 85 2 ( 3 clk :INPUT; 4 q[3..0] :OUTPUT; 5 ) 6 VARIABLE 7 ff[3..0] :DFF; 8 ser ent :NODE; 9 BEGIN 10 ff[].clk clk; 11 IF ff[3..1].q B000 THEN ser ent VCC; inicio automático 12 ELSE ser ent GND; 13 END IF; 14 ff[3..0].d (ser ent, ff[3..1].q); desplaza a la derecha 15 q[] ff[]; 16 END; clk 1 0 0 0 0 q3 q2 q1 q0 2.0us 4.0us 6.0us 8.0us 10.0us 12.0us 14.0us FIGURA 7-86 Simulación del contador de anillo en HDL. V H D L
  • 491. 1 ENTITY fig7_87 IS 2 PORT ( clk :IN BIT; 3 q :OUT BIT_VECTOR (3 DOWNTO 0)); 4 END fig7_87; 5 6 ARCHITECTURE vhdl OF fig7_87 IS 7 SIGNAL ser_ent :BIT; 8 BEGIN 9 PROCESS (clk) 10 VARIABLE ff :BIT_VECTOR (3 DOWNTO 0); 11 BEGIN 12 IF (ff (3 DOWNTO 1) = “000”) THEN ser_ent = ‘1’; -- inicio automático 13 ELSE ser_ent = ‘0’; 14 END IF; 15 IF (clk’EVENT AND clk = ‘1’) THEN 16 ff(3 DOWNTO 0) := (ser_ent ff(3 DOWNTO 1)); -- desplaza a la derecha 17 END IF; 18 q = ff; 19 END PROCESS; 20 END vhdl; FIGURA 7-87 Contador de anillo de cuatro bits en VHDL. PREGUNTAS DE REPASO 1. ¿Qué significa que un contador de anillo inicie en forma automática? 2. ¿Qué líneas de la figura 7-85 aseguran que el contador de anillo inicie en forma automática? 3. ¿Qué líneas de la figura 7-87 aseguran que el contador de anillo inicie en forma automática? 7-24 MONOESTABLES EN HDL Otro circuito importante que hemos estudiado es el circuito monoestable (one-shot). Podemos aplicar el concepto de un contador para implementar un monoestable digital mediante el uso de HDL. Si recuerda del capítulo 5, los monoestables son dispositivos que producen un pulso de una anchura predefinida cada vez que se activa la entrada de disparo. Un monoestable no redisparable ignora la señal de disparo siempre y cuando la salida de pulso siga estando activa. Un monoestable redisparable inicia un pulso en respuesta a una señal de disparo y limpia el tempori- zador de pulso interno cada vez que ocurre un flanco de disparo subsiguiente, antes de completar el pulso. El primer ejemplo que investigaremos es un monoestable digital no redisparable, que se dispara por un nivel ALTO. Los monoestables que estudiamos en el capítulo 5 utilizaban una resistencia y un capacitor como el meca- nismo de sincronización de pulso interno. Para poder crear un monoestable median- te las técnicas de HDL, utilizamos un contador de cuatro bits para determinar la anchura del pulso. Las entradas son una señal de reloj, disparo, borrar y el valor de la anchura del pulso. La única salida es la de pulso, Q. La idea es bastante simple. Cada vez que se detecte un disparo hay que hacer que el pulso cambie a ALTO y se cargue un contador descendente con un número proveniente de las entradas de anchura de pulso. Entre mayor sea el número, más tiempo tardará el conteo hasta cero. La ventaja de este circuito es que la anchura del pulso puede ajustarse con facilidad si se cambia el valor que se cargó en el contador. A medida que vaya leyen- do las siguientes secciones, considere la siguiente pregunta: “¿Qué hace que este circuito sea no redisparable y qué hace que se dispare por nivel?” SECCIÓN 7-24/MONOESTABLES EN HDL 461
  • 492. 462 CAPÍTULO 7/CONTADORES Y REGISTROS MONOESTABLES EN AHDL La figura 7-88 muestra la descripción en AHDL de un monoestable no redisparable, sensible al nivel. En la línea 8 se crea un registro de cuatro flip-flops y sirve como el contador para realizar el conteo descendente durante el pulso. La señal reloj se conecta en paralelo a todos los flip-flops en la línea 10. La función de borrado (reset) se implementa mediante la conexión de la línea de control reset en forma directa a la entrada clrn asíncrona de cada flip-flop en la línea 11. Después de estas asignaciones la primera condición que se prueba es el disparo. Si se activa (ALTO) en cualquier momento mientras que el valor del conteo sea 0 (es decir, que termine el pulso anterior), entonces se cargará el valor de retraso en el contador. En la línea 14 se prueba para ver si el pulso ya terminó; para ello se comprueba si el contador llegó hasta cero o no. Si llegó a cero, entonces el contador no debe reciclarse sino permanecer en cero. Si el conteo no está en cero, entonces debe estar contando, por lo que la línea 15 prepara los flip-flops para que se decrementen en el siguien- te pulso de reloj. Por último, la línea 17 genera el pulso de salida. Esta expresión booleana puede definirse de la siguiente manera: “Hacer que el pulso (Q) sea ALTO cuando el conteo sea cualquier número distinto de cero.” MONOESTABLES SIMPLES ENVHDL La figura 7-89 muestra la descripción en VHDL de un circuito digital monoestable no redisparable, sensible al nivel. Las entradas y las salidas se muestran en las líneas 3 a 5, como se describió antes. En la descripción de la arquitectura se utiliza un bloque PROCESS (línea 11) para responder a cualquiera de las dos entradas: reloj o reset. Dentro de este bloque PROCESS se utiliza una variable para repre- sentar el valor en el contador. La entrada que debería tener precedencia sobre las demás es la señal reset. Ésta se evalúa primero (línea 14) y si está activa, conteo se borra de inmediato. Si reset no está activa se evalúa la línea 15 y se busca un flanco de subida en reloj. La línea 16 comprueba el disparo. Si se activa en cual- quier momento mientras que el valor del conteo sea 0 (es decir, si terminó el pulso anterior), entonces se carga el valor de la anchura en el contador. En la línea 18 se evalúa si el pulso terminó mediante una comprobación para ver si el contador llegó a cero. Si es así, entonces el contador no deberá reciclarse sino permanecer en cero. A H D L FIGURA 7-88 Monoestable no redisparable en AHDL. 1 SUBDESIGN fig7 88 2 ( 3 reloj, disparo, reset : INPUT; 4 retraso[3..0] : INPUT; 5 q : OUTPUT; 6 ) 7 VARIABLE 8 conteo[3..0] : DFF; 9 BEGIN 10 conteo[].clk reloj; 11 conteo[].clrn reset; 12 IF disparo conteo[].q b0000 THEN 13 conteo[].d retraso[]; 14 ELSIF conteo[].q B0000 THEN conteo[].d B0000; 15 ELSE conteo[].d conteo[].q 1; 16 END IF; 17 q conteo[].q ! B0000; crea el pulso de salida 18 END; V H D L
  • 493. 1 ENTITY fig7 89 IS 2 PORT ( 3 reloj, disparo, reset :IN BIT; 4 retraso :IN INTEGER RANGE 0 TO 15; 5 q :OUT BIT 6 ); 7 END fig 7 89; 8 9 ARCHITECTURE vhdl OF fig7 89 IS 10 BEGIN 11 PROCESS (reloj, reset) 12 VARIABLE conteo : INTEGER RANGE 0 TO 15; 13 BEGIN 14 IF restablecer '0' THEN conteo : 0; 15 ELSIF (reloj EVENT AND reloj '1' ) THEN 16 IF disparo '1' AND conteo 0 THEN 17 conteo : retraso; carga el contador 18 ELSIF conteo 0 THEN conteo : 0; 19 ELSE conteo : conteo 1; 20 END IF; 21 END IF; 22 IF conteo / 0 THEN q '1'; 23 ELSE q '0'; 24 END IF; 25 END PROCESS; 26 END vhdl; FIGURA 7-89 Monoestable no redisparable en VHDL. Si conteo no está en cero significa que debe estar contando, por lo que la línea 19 prepara los flip-flops para que se decrementen en el siguiente pulso de reloj. Por último, las líneas 22 y 23 generan el pulso de salida. Esta expresión booleana puede definirse de la siguiente manera: “Hacer que el pulso (q) sea ALTO cuando el con- teo sea cualquier número distinto de cero”. Ahora que revisamos el código que describe a este monoestable, vamos a evaluar su rendimiento. La conversión de un circuito analógico tradicional en uno digital, por lo general, ofrece ciertas ventajas y ciertas desventajas. En un CI monoestable están- dar, el pulso de salida empieza justo después del disparo. Para el monoestable digital que describimos aquí, el pulso de salida comienza en el siguiente flanco de reloj y dura todo el tiempo que el contador sea mayor que cero. Esta situación se muestra en la figura 7-90 durante los primeros ms de la simulación. Observe que el disparo cam- bia a nivel alto casi 0.5 ms después de que responde la salida q. Si ocurre otro evento de disparo mientras el contador está contando hacia abajo (como el que ocurre justo antes de los 3 ms), se ignora. Ésta es la característica no redisparable. Otro punto a recalcar para este monoestable digital es que el pulso de dispa- ro debe ser lo bastante largo como para verse como un nivel ALTO en el flanco de subida del reloj. Casi en la marca de los 4.5 ms se produce un pulso en la entrada de disparo, pero cambia a BAJO antes del flanco de subida del reloj. Este circuito no responde a este evento de entrada. Justo después de los 5 ms la entrada de disparo cambia a ALTO y permanece ahí. El pulso dura exactamente 6 ms, pero debido a que la entrada de disparo permanece en ALTO, responde con otro pulso de salida un ciclo de reloj después. La razón de esta situación es que este circuito se dispara por nivel en vez de dispararse por flanco, como la mayoría de los CIs monoestables convencionales. SECCIÓN 7-24/MONOESTABLES EN HDL 463
  • 494. 464 CAPÍTULO 7/CONTADORES Y REGISTROS NO recargar el contador a b c d e f Cargar el contador Reloj Disparo FIGURA 7-91 Detección de flancos. Monoestables redisparables activados por flanco en HDL Muchas aplicaciones de los monoestables requieren que el circuito responda a un flanco en vez de a un nivel. ¿Cómo podemos utilizar código de HDL para hacer que el circuito responda una vez a cada transición positiva en su entrada de disparo? La técnica que describiremos aquí se conoce como captura de flancos y ha sido una herramienta muy útil en la programación de microcontroladores durante años. Como veremos, también es muy útil para describir el disparo por flanco para un circuito digital mediante el uso de HDL. En esta sección ilustraremos un ejemplo de un monoestable redisparable y también demostraremos la captura de flancos, que puede ser útil en muchas otras situaciones. La operación general de este monoestable redisparable requiere que responda a un flanco de subida de la entrada de disparo. Tan pronto como se detecta el flan- co, debe empezar a sincronizar el pulso. En el monoestable digital esto significa que debe cargar el contador lo más pronto posible después del flanco de disparo y debe empezar a contar en forma descendente hasta cero. Si ocurre otro evento de disparo (flanco de subida) antes de que termine el pulso, el contador se recarga de inmediato y la sincronización del pulso empieza de nuevo a partir del principio, con lo cual se sostiene el pulso. Si se activa la señal de reset en cualquier punto se forzará al contador a regresar a cero y se terminará el pulso. La anchura mínima del pulso de salida es tan sólo el número que se aplica a la entrada, multiplicado por el periodo de reloj. La figura 7-91 demuestra la estrategia de captura de flancos para un monoes- table. En cada flanco activo del reloj hay dos partes importantes de información. La primera es el estado de la entrada disparo ahora y la segunda es el estado de la entrada disparo cuando ocurrió el último flanco activo de reloj. Empiece con el punto a en el diagrama de la figura 7-91 y determine estos dos valores, después avance al punto b y así en lo sucesivo. Cuando complete esta tarea llegará a la con- clusión de que, en el punto c se ha obtenido un resultado único. El disparo está en ALTO ahora pero estaba en BAJO durante el último flanco activo del reloj. Éste es el punto en el que detectamos el evento de disparo por flanco. FIGURA 7-90 Simulación de los monoestables no redisparables. Nombre: Value: 1.0 ms 2.0 ms 3.0 ms 4.0 ms 5.0 ms 6.0 ms 7.0 ms 8.0 ms 9.0 ms 10 ms Disparo 0 Reset 1 Reloj 0 q Ref: 0.0 ns 0.0ns Tiempo: 3.66 ns Intervalo: 3.66 ns 0 Retraso H6 Conteo H0 0 6 5 4 3 2 1 0 6 5 4 3 2 1 0 6 5 4 6
  • 495. FIGURA 7-92 Descripción de un circuito monoestable redisparable en AHDL, con disparo por flanco. 1 SUBDESIGN fig7 92 2 ( 3 reloj, disparo, restablecer : INPUT; 4 delay[3..0] : INPUT; 5 q : OUTPUT; 6 ) 7 VARIABLE 8 conteo[3..0] : DFF; 9 disp era : DFF; 10 BEGIN 11 conteo[].clk reloj; 12 conteo[].clrn restablecer; 13 disp era.clk reloj; 14 disp era.d disparo; 15 16 IF disparo !disp era.q THEN 17 conteo[].d retraso[]; 18 ELSIF conteo[].q B0000 THEN conteo[].d B0000; 19 ELSE conteo[].d conteo[].q 1; 20 END IF; 21 q conteo[].q ! B0000; 22 END; Para poder saber cuál era el disparo en el último flanco activo del reloj, el sis- tema debe recordar el último valor que tenía el disparo en ese punto. Para ello hay que almacenar el valor del bit de disparo en un flip-flop. Recuerde que vimos un concepto similar en el capítulo 5, cuando hablamos sobre el uso de un flip-flop para detectar una secuencia. El código para un monoestable se escribe de forma que el contador se cargue sólo después de detectar un flanco de subida en la entrada disparo. MONOESTABLE REDISPARABLE EN AHDL, DISPARADO POR FLANCO Las primeras cinco líneas de la figura 7-92 son idénticas al ejemplo anterior del monoestable no redisparable. En AHDL, la única forma de recordar un valor que se obtuvo en el pasado es almacenarlo en un flip-flop. En esta sección utilizaremos un flip-flop llamado disp_era (línea 9) para almacenar el valor que había en el disparo, durante el último flanco activo del reloj. Este flip-flop se conecta de manera que el disparo esté en su entrada D (línea 14) y el reloj esté conectado a su entrada clk (línea 13). La salida Q de disp_era recuerda el valor de disparo justo hasta el siguiente flanco de reloj. En este punto utilizamos la línea 16 para evaluar si se ha producido un flanco de disparo. Si disparo está en ALTO (ahora) pero estaba en BAJO (último ciclo de reloj), es tiempo de cargar el contador (línea 17). La línea 18 asegura que una vez que el conteo llegue a cero, permanecerá en cero hasta que se produzca un nuevo disparo. Si las decisiones permiten evaluar la línea 19, significa que hay un valor cargado en el contador y no es cero, por lo que necesita decremen- tarse. Por último, el pulso de salida se cambia a ALTO cada vez que hay un valor distinto de 000 en el contador, como vimos antes. A H D L SECCIÓN 7-24/MONOESTABLES EN HDL 465
  • 496. $1¶56-0 $0/5%034 : 3(*45304 1 ENTITY fig7 93 IS 2 PORT ( reloj, disparo, reset : IN BIT; 3 retraso : IN INTEGER RANGE 0 TO 15; 4 q : OUT BIT); 5 END fig7 93; 6 7 ARCHITECTURE vhdl OF fig7 93 IS 8 BEGIN 9 PROCESS (reloj, reset) 10 VARIABLE conteo : INTEGER RANGE 0 TO 15; 11 VARIABLE disp era : BIT; 12 BEGIN 13 IF reset '0' THEN conteo : 0; 14 ELSIF (relojʼEVENT AND reloj '1' ) THEN 15 IF disparo '1' AND disp era '0' THEN 16 conteo : retraso; carga el contador 17 disp era : '1'; recuerda el flanco detectado 18 ELSIF conteo 0 THEN conteo : 0; retiene en 0 19 ELSE conteo : conteo 1; decrementa 20 END IF; 21 IF disparo '0' THEN disp era : '0'; 22 END IF; 23 END IF; 24 IF conteo / 0 THEN q '1'; 25 ELSE q '0'; 26 END IF; 27 END PROCESS; 28 END vhdl; '*(63 .POPFTUBCMF SFEJTQBSBCMF FO 7)%- DPO EJTQBSP QPS GMBODP $%3#2)0#)¼.6($, $% -/./%34!,% 2%$)30!2!,% $)30!2!$/ 0/2 ,!.#/ -B EFTDSJQDJØO /5*5: FO MB GJHVSB FT JEÏOUJDB BM FKFNQMP BOUFSJPS EFM NPOPFTUBCMF OP SFEJTQBSBCMF %F IFDIP MBT ÞOJDBT EJGFSFODJBT FOUSF FTUF FKFNQMP Z FM RVF TF NVFTUSB FO MB GJHVSB FTUÈO SFMBDJPOBEBT DPO MB MØHJDB EFM QSPDFTP EF EFDJTJØO $VBOEP RVFSFNPT SFDPSEBS VO WBMPS FO 7)%- EFCFNPT BMNBDFOBSMP FO VOB 73*#- 3FDVFSEF RVF QPEFNPT DPOTJEFSBS VO CMPRVF 130$44 DPNP VOB EFTDSJQDJØO EF MP RVF PDVSSF DBEB WF[ RVF VOB TF×BM FO MB MJTUB EF TFOTJCJMJEBE DBNCJB EF FTUBEP 6OB 73*#- SFUJFOF FM ÞMUJNP WBMPS RVF TF MF BTJHOB FOUSF MPT UJFNQPT FO MPT RVF TF JOWPDB FM QSPDFTP O FTUF TFOUJEP BDUÞB DPNP VO GMJQGMPQ 1BSB FM NPOPFTUBCMF OFDFTJUBNPT BMNBDFOBS VO WBMPS RVF OPT JOEJRVF FO RVÏ FTUBEP TF FODPOUSBCB FM EJTQBSP FO FM ÞMUJNP GMBODP BDUJWP EFM SFMPK -B MÓOFB EFDMBSB VO CJU WBSJBCMF QBSB TFSWJS B FTUF GJO -B QSJNFSB EFDJTJØO MÓOFB FT MB EF QSFEPNJ OBODJB RVF DPNQSVFCB Z SFTQPOEF B MB FOUSBEB SFTFU 0CTFSWF RVF ÏTUF FT VO DPOUSPM BTÓODSPOP ZB RVF TF FWBMÞB BOUFT EF RVF TF EFUFDUF FM GMBODP EFM SFMPK FO MB MÓOFB TUB MÓOFB EFUFSNJOB RVF TF IB QSPEVDJEP VO GMBODP EF TVCJEB EFM SFMPK Z EFTQVÏT TF FWBMÞB MB MØHJDB QSJODJQBM EF FTUF QSPDFTP FOUSF MBT MÓOFBT Z $VBOEP TF QSPEVDF VO GMBODP EF SFMPK FYJTUF VOB EF USFT DPOEJDJPOFT 4F IB QSPEVDJEP VO GMBODP EF EJTQBSP Z EFCFNPT DBSHBS FM DPOUBEPS M DPOUBEPS FTUÈ FO DFSP Z OFDFTJUBNPT NBOUFOFSMP FO DFSP M DPOUBEPS OP FTUÈ FO DFSP Z OFDFTJUBNPT DPOUBS VOP IBDJB BCBKP 6 ( $ ,
  • 497. Nombre: Valor: 1.0 ms 2.0 ms 3.0 ms 4.0 ms 5.0 ms 6.0 ms 7.0 ms 8.0 ms 9.0 ms 10 ms Disp_era.Q 0 Trigger 0 Restablecer 1 Reloj 0.0ns 0 Retraso 0 Conteo H5 q H0 4 3 5 4 3 2 1 0 5 4 3 2 1 0 5 0 5 FIGURA 7-94 Simulación del monoestable redisparable, con disparo por flanco. Recuerde que es muy importante considerar el orden en el que se hacen las pregun- tas y las asignaciones en las instrucciones PROCESS de VHDL, ya que la secuencia afecta la operación del circuito que estamos describiendo. El código que actualiza la variable disp_era debe ocurrir después de la evaluación de su condición anterior. Por esta razón, las condiciones necesarias para detectar un flanco de subida en dis- paro se evalúan en la línea 15. Si se produjo un flanco, entonces se carga el contador (línea 16) y la variable se actualiza (línea 17) para recordar esto para la próxima vez. Si no se produjo un flanco de disparo, el código se retiene en cero (línea 18) o cuenta hacia abajo (línea 19). La línea 21 se asegura de que tan pronto como la entrada de disparo cambie a BAJO, la variable disp_era recuerde esto mediante la operación reset. Por último, las líneas 24 a 25 se utilizan para crear el pulso de salida durante el tiempo en el que el contador no sea cero. Las dos mejoras que se hicieron en este monoestable, en comparación con el otro ejemplo, son el disparo por flanco y la característica de ser redisparable. La figura 7-94 evalúa las nuevas características de rendimiento. Observe en el primer ms del diagrama de sincronización que se detecta un flanco de disparo, pero la res- puesta no es inmediata. El pulso de salida cambia a nivel alto en el siguiente flanco del reloj. Ésta es una desventaja para el monoestable digital. La característica de redisparable se demuestra casi en la marca de los 2 ms. Observe que disparo cambia a nivel alto y en el siguiente flanco de reloj el conteo empieza de nuevo en 5, con lo que se sostiene el pulso de salida. Observe además que aún después de que se termina el pulso de salida q y el disparo se encuentra todavía en ALTO, el circuito monoestable no dispara otro pulso ya que no se dispara por nivel, sino por flanco. En la marca de los 6 ms se produce un pulso de disparo corto pero se ignora debido a que no permanece en ALTO sino hasta el siguiente ciclo de reloj. Por otro lado, un pulso de disparo aún más corto que se produce justo después de la marca de los 7 ms dispara el monoestable, ya que está presente durante el flanco de subida del reloj. El pulso de salida resultante dura exactamente cinco ciclos de reloj, ya que no se producen otros disparos durante este periodo. Para minimizar los efectos de la respuesta retrasada a los flancos de disparo y la posibilidad de dejar pasar los flancos de disparo que sean demasiado cortos, podemos mejorar este circuito de una forma muy sencilla. La frecuencia de reloj y el número de bits que se utilizan para cargar el valor de retraso pueden incre- mentarse para proporcionar el mismo rango de anchuras de pulso (con un control más preciso) al tiempo que se reduce la anchura mínima del pulso de disparo. Para poder curar este problema por completo, el monoestable debe responder en forma asíncrona a la entrada de disparo. Esto es posible tanto en AHDL como en VHDL, pero siempre se producirá un pulso que fluctúe en anchura de hasta un periodo de reloj. SECCIÓN 7-24/MONOESTABLES EN HDL 467
  • 498. 468 CAPÍTULO 7/CONTADORES Y REGISTROS PREGUNTAS DE REPASO 1. ¿Qué señal de entrada de control tiene la prioridad más alta para cada una de las descripciones de un circuito monoestable? 2. Nombre dos factores que determinen cuánto tiempo durará un pulso de un cir- cuito monoestable digital. 3. Para los circuitos monoestables que se muestran en esta sección, ¿los contado- res se cargan en forma síncrona o asíncrona? 4. ¿Cuál es la ventaja de cargar un contador en forma síncrona? 5. ¿Cuál es la ventaja de cargar el contador en forma asíncrona? 6. ¿Cuáles son las dos piezas de información necesarias para detectar un flanco? RESUMEN PARTE 2 1. Hay numerosos registros de CI disponibles y pueden clasificarse dependiendo de si sus entradas son en paralelo (todos los bits se introducen en forma simul- tánea), en serie (un bit a la vez) o ambas. De igual forma, los registros pueden tener salidas en paralelo (todos los bits disponibles al mismo tiempo) o en serie (un bit disponible a la vez). 2. Un sistema lógico secuencial utiliza FFs, contadores y registros, además de compuertas lógicas. Sus salidas y la secuencia de las operaciones dependen de las entradas presentes y pasadas. 3. El diagnóstico de fallas en un sistema lógico secuencial comienza con la obser- vación de la operación del sistema, seguida de un razonamiento analítico para determinar las posibles causas de cualquier falla y por último se realizan medi- ciones de prueba para aislar la verdadera falla. 4. Un contador de anillo es en realidad un registro de desplazamiento de N bits, que recircula un solo 1 en forma continua, actuando en consecuencia como un contador MOD-N. Un contador Johnson es un contador de anillo modificado que opera como un contador MOD-2N. 5. Para implementar los registros de desplazamiento con HDL se escriben descrip- ciones personalizadas de su operación. 6. Es muy importante comprender el funcionamiento de los arreglos de bits/vec- tores de bits y su notación para describir las operaciones de los registros de desplazamiento. 7. Los contadores de registro de desplazamiento tales como los contadores Johnson y de anillo pueden implementarse con facilidad en HDL. Es fácil escribir las características de decodificación e inicio automático en la descripción. 8. Los monoestables digitales se implementan con un contador cargado con un valor de retraso cuando se detecta la entrada de disparo y cuenta en forma descendente hasta cero. Durante el tiempo del conteo descendente, el pulso de salida se mantiene en ALTO. 9. Mediante la colocación estratégica de las instrucciones de descripción de hard- ware, se puede hacer que los circuitos monoestables en HDL se disparen por flanco o por nivel, y que sean redisparables o no redisparables, ya que producen un pulso de salida que responde en forma síncrona o asíncrona al disparo. TÉRMINOS IMPORTANTES PARTE 2 concatenación contador de anillo contador Johnson (contador de anillo torcido) entrada en paralelo/salida en paralelo entrada en paralelo/salida en serie entrada en serie/salida en paralelo entrada en serie/salida en serie monoestable digital registro de desplazamiento circulante sistema lógico secuencial
  • 499. PROBLEMAS PARTE 1 SECCIÓN 7-1 7-1.* Agregue otro flip-flop llamado E al contador de la figura 7-1. La señal de reloj es una onda cuadrada de 8-MHz. (a) ¿Cuál será la frecuencia en la salida E? ¿Cuál será el ciclo de trabajo de esta señal? (b) Repita el inciso (a) si la señal de reloj tiene un ciclo de trabajo del 20 por ciento. (c) ¿Cuál será la frecuencia en la salida C? (d) ¿Cuál es el número MOD de este contador? 7-2. Dibuje un contador binario que convierta una señal de pulso de 64-kHz en una onda cuadrada de 1-kHz. 7-3.* Suponga que un contador binario de cinco bits comienza en el estado 00000. ¿Cuál será el conteo después de 144 pulsos de entrada? 7-4. A un contador de rizo de 10 bits se le aplica una señal de reloj de 256-kHz. (a) ¿Cuál es el número MOD de este contador? (b) ¿Cuál será la frecuencia en la salida del MSB? (c) ¿Cuál será el ciclo de trabajo de la señal del MSB? (d) Suponga que el contador empieza en cero. ¿Cuál será el conteo en hexadecimal después de 1000 pulsos de entrada? SECCIÓN 7-2 7-5.* Un contador de rizo de cuatro bits se controla mediante una señal de reloj de 20-MHz. Dibuje las formas de onda en la salida de cada FF si cada uno tiene un tpd 20 ns. Determine cuáles estados del contador (si es que los hay) no se producirán debido a los retrasos de propagación. 7-6. (a) ¿Cuál es la máxima frecuencia de reloj que puede utilizarse con el contador del problema 7-5? (b) ¿Cuál sería fmáx si el contador se expandiera a seis bits? SECCIONES 7-3 Y 7-4 7-7.* (a) Dibuje el diagrama del circuito para un contador síncrono MOD-32. (b) Determine fmáx para este contador si cada FF tiene un tpd 20 ns y cada compuerta tiene un tpd 10 ns. 7-8. (a) Dibuje el diagrama del circuito para un contador síncrono MOD-64. (b) Determine fmáx para este contador si cada FF tiene un tpd 20 ns y cada compuerta tiene un tpd 10 ns. 7-9.* Dibuje las formas de onda para todos los FFs en el contador de décadas de la figura 7-8(b), en respuesta a una frecuencia de reloj de 1-kHz. Muestre cualquier deformación que pudiera aparecer en cualquiera de las salidas de los FFs. Determine la frecuencia en la salida D. 7-10. Repita el problema 7-9 para el contador de la figura 7-8(a). 7-11.* Cambie las entradas para la compuerta NAND de la figura 7-9, de manera que el contador divida la frecuencia de entrada entre 50. 7-12. Dibuje un contador síncrono que produzca como salida una señal de 10-kHz cuando se aplica un reloj de 1-MHz. * Encontrará las respuestas a los problemas marcados con asterisco al nal del libro. PROBLEMAS 469 B B B B B B B B B B
  • 500. 470 CAPÍTULO 7/CONTADORES Y REGISTROS SECCIONES 7-5 Y 7-6 7-13.* Dibuje un contador descendente síncrono, MOD-32. 7-14. Dibuje un contador ascendente/descendente síncrono, MOD-16. La direc- ción de conteo se controla mediante dir (dir 0 para contar hacia arriba). 7-15.* Determine la secuencia de conteo del contador ascendente/descendente en la figura 7-11, si la salida INVERSOR estuviera forzada en ALTO. Suponga que el contador empieza en 000. 7-16. Complete el diagrama de sincronización de la figura 7-95 para el contador preajustable de la figura 7-12. Observe que la condición inicial para el con- tador se proporciona en el diagrama de sincronización. SECCIÓN 7.7 7-17.* Complete el diagrama de sincronización de la figura 7-96 para un 74ALS161, al cual se le aplican las formas de onda de entrada que se indican. Suponga que el estado inicial es 0000. FIGURA 7-95 Diagrama de sincronización del problema 7-16. CLK 101 010 P2P1P0 PL Q0 Q1 Q2 FIGURA 7-96 Diagrama de sincronización del problema 7-17. CLK QD D C B A 0111 1101 ENP ENT QC QB QA RCO CARGA CLR B B A, F
  • 509. → → → → → → →
  • 510.
  • 516. ff[ ].clk !reloj IF (reloj ?0? AND reloj?EVENT) THEN reg[ ].d (reg[6..0], dat) reg : reg (6 DOWNTO 0) dat
  • 518. 8-1 Terminología de CIs digitales 8-2 La familia lógica TTL 8-3 Hojas técnicas TTL 8-4 Características de las series TTL 8-5 Capacidad de carga de la familia TTL 8-6 Otras características de la familia TTL 8-7 Tecnología MOS 8-8 Lógica de MOS complementario 8-9 Características de las series CMOS 8-10 Tecnología de bajo voltaje 8-11 Salidas de colector abierto/ drenador abierto ■ CONTENIDO FAMILIAS LÓGICAS D E CIR CUITOS INTEG RADOS C A P Í T U L O 8 8-12 Salidas lógicas triestado (tres estados) 8-13 Lógica de interfase de bus de alta velocidad 8-14 La familia ECL de CIs digitales 8-15 Compuerta de transmisión CMOS (interruptor bilateral) 8-16 Interfase de CIs 8-17 Interfase de voltaje mixto 8-18 Comparadores de voltaje analógico 8-19 Diagnóstico de fallas
  • 519. ■ OBJETIVOS Al terminar este capítulo, usted podrá: ■ Leer y comprender la terminología de CIs digitales, según lo especificado en las hojas técnicas de los fabricantes. ■ Comparar las características de la familia TTL estándar y de las diversas series TTL. ■ Determinar la capacidad de carga para un dispositivo lógico específico. ■ Utilizar dispositivos lógicos con salidas de colector abierto. ■ Analizar circuitos que contengan dispositivos triestado. ■ Comparar las características de las diversas series CMOS. ■ Analizar circuitos que utilicen un interruptor bilateral de CMOS para permitir que un sistema digital controle señales analógicas. ■ Describir las principales características y diferencias entre las familias lógicas TTL, ECL, MOS y CMOS. ■ Citar e implementar las diversas consideraciones requeridas cuando se integran circuitos digitales de distintas familias lógicas. ■ Utilizar comparadores de voltaje para permitir que un sistema digital se controle mediante señales analógicas. ■ Utilizar un pulsador lógico y una sonda lógica como herramientas de diagnóstico de fallas en circuitos digitales. ■ INTRODUCCIÓN Como se describió en el capítulo 4, la tecnología de CIs digitales ha progresado con rapidez, desde la integración a pequeña escala (SSI) con menos de 12 compuertas por chip; después la integración a mediana escala (MSI), en la que se pueden tener de 12 a 99 compuertas equivalentes por chip; más tarde la integración a gran escala y a muy gran escala (LSI y VLSI, respectivamente), en las que puede haber decenas de miles de compuertas por chip; y, por último, la integración a ultragran escala (ULSI), en la que puede haber más de 100,000 compuertas por chip, y la integración a giga escala (GSI), con 1 millón o más de compuertas. La mayoría de las razones por las que los sistemas digitales modernos utilizan circuitos digitales son obvias. Los CI encapsulan mucho más circuitos en un encapsulado pequeño, por lo que el tamaño total de casi cualquier sistema digital se reduce. El costo se reduce en forma sustancial debido al ahorro que representa la producción en masa de grandes volúmenes de dispositivos similares. Algunas de las otras ventajas no son tan evidentes. Los CIs han hecho que los sistemas digitales sean más confiables al reducir el número de interconexiones externas de un dispositivo a otro. Antes de que tuviéramos los CIs, todas las conexiones en los circuitos eran de un componente discreto (transistor, diodo, resistencia, etc.) a otro. Ahora la mayoría de las conexiones son internas en los CIs, en donde están protegidas de malas 489
  • 520. 490 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS soldaduras, quebraduras o cortos en las rutas de conexión en un circuito impreso (PCB), y demás problemas físicos. Los CIs también han reducido en forma dramática la cantidad de energía eléctrica necesaria para realizar una función dada, debido a que sus circuitos en miniatura, por lo general, requieren menos energía que sus contrapartes discretas. Además de los ahorros en costo por la fuente de energía, esta reducción en la energía también significa que un sistema prácticamente no requiere enfriamiento. Hay algunas cosas que los CIs no pueden hacer: no pueden manejar corrientes o voltajes muy grandes, ya que el calor generado en espacios tan pequeños provocaría que la temperatura aumentara más allá de los límites aceptables. Además, los CIs no pueden implementar con facilidad ciertos dispositivos eléctricos tales como los inductores, los transformadores y los capacitores grandes. Por estas razones, el principal uso de los CIs es para realizar operaciones de circuitos de baja energía, a lo cual se le conoce, por lo general, como procesamiento de información. Las operaciones que requieren altos niveles de energía o dispositivos que no pueden integrarse se siguen manejando mediante componentes discretos. Con el amplio uso de los CIs viene también la necesidad de conocer y comprender las características eléctricas de las familias lógicas de los CIs más comunes. Recuerde que las diversas familias lógicas difieren en cuanto a los componentes principales que utilizan en sus circuitos. TTL y ECL utilizan transistores bipolares como su elemento principal en el circuito; PMOS, NMOS y CMOS utilizan transistores MOSFET unipolares como su componente principal. En este capítulo presentaremos las características importantes de cada una de estas familias de CIs y sus subfamilias. El punto más importante es comprender la naturaleza de los circuitos de entrada y los circuitos de salida para cada familia lógica. Una vez que comprenda esto, estará mucho mejor preparado para realizar el análisis, diagnóstico de fallas y cierto diseño de los circuitos digitales que contengan cualquier combinación de familias de CIs. Estudiaremos el funcionamiento interno de los dispositivos en cada familia con el circuito más simple que transmita las características imprescindibles de todos los miembros de la familia. 8-1 TERMINOLOGÍA DE CIS DIGITALES Aunque hay muchos fabricantes de CIs digitales, la mayor parte de la nomenclatura y la terminología están estandarizadas. A continuación definiremos y hablaremos sobre los términos más útiles. Parámetros de voltaje y corriente (vea la figura 8-1) ■ VIH(mín): voltaje de entrada en nivel alto. El mínimo nivel de voltaje reque- rido para un 1 lógico en una entrada. El circuito lógico no aceptará como nivel ALTO cualquier voltaje que se encuentre por debajo de este nivel. ■ VIL(máx): voltaje de entrada en nivel bajo. El máximo nivel de voltaje reque- rido para un 0 lógico en una entrada. El circuito lógico no aceptará como nivel BAJO cualquier voltaje que se encuentre por encima de este nivel. ■ VOH(mín): voltaje de salida en nivel alto. El mínimo nivel de voltaje en la salida de un circuito lógico en el estado 1, bajo condiciones de carga específicas. ■ VOL(máx): voltaje de salida en nivel bajo. El máximo nivel de voltaje en la salida de un circuito lógico en el estado 0, bajo condiciones de carga específicas. ■ IIH: corriente de entrada en nivel alto. La corriente que fluye hacia una entrada cuando se le aplica a ésta un voltaje específico de alto nivel. ■ IIL: corriente de entrada en nivel bajo. La corriente que fluye hacia una entrada cuando se le aplica a ésta un voltaje específico de bajo nivel. ■ IOH: corriente de salida en nivel alto. La corriente que fluye desde una salida en el estado 1 lógico, bajo condiciones de carga específicas.
  • 521. SECCIÓN 8-1/TERMINOLOGÍA DE CIS DIGITALES 491 ■ IOL: corriente de salida en nivel bajo. La corriente que fluye desde una salida en el estado 0 lógico, bajo condiciones de carga específicas. Nota: la dirección real de la corriente puede ser opuesta a las que se muestran en la figura 8-1, dependiendo de la familia lógica. Todas las descripciones del flujo de corriente en este texto se refieren al flujo de corriente convencional (del potencial mayor al potencial menor). Para concordar con las convenciones de la mayoría de las hojas de datos, la corriente que fluye hacia dentro un nodo o dispositivo se con- sidera positiva y la corriente que fluye hacia fuera de un nodo o dispositivo se considera negativa. Capacidad de carga En general, se requiere que la salida de un circuito lógico controle varias entra- das lógicas. Algunas veces todos los CIs en el sistema digital son de la misma familia lógica, pero muchos sistemas tienen una mezcla de varias familias lógicas. La capacidad de carga se define como el número máximo de entradas lógicas que puede controlar una salida de manera confiable. Por ejemplo, si se especifica que una compuerta lógica tiene una capacidad de carga de 10, significa que puede manejar 10 entradas lógicas. Si se excede este número, no se pueden garantizar los voltajes de los niveles lógicos de salida. Es obvio que la capacidad de carga depende de la naturaleza de los dispositivos de entrada que se conectan a una salida. A menos que se especifique una familia lógica distinta como el dispositivo de carga, se asume que la capacidad de carga se refiere a la acción de cargar dispositivos de la misma familia que la salida reforzadora. Tiempos de propagación Una señal lógica siempre experimenta un retraso al pasar a través de un circuito. Los dos tiempos de propagación se definen de la siguiente manera: ■ tPLH. El tiempo que tarda la compuerta en cambiar del estado de 0 lógico al de 1 lógico (de BAJO a ALTO). ■ tPHL. El tiempo que tarda la compuerta en cambiar del estado de 1 lógico al de 0 lógico (de ALTO a BAJO). La figura 8-2 ilustra estos tiempos de propagación para un INVERSOR. Observe que tPHL es el retaso en la respuesta de la salida, al cambiar de ALTO a BAJO. Se mide entre los 50 puntos porcentuales en las transiciones de entrada y de salida. El valor tPLH es el retraso en la respuesta de la salida, al cambiar de BAJO a ALTO. En algunos circuitos lógicos tPHL y tPLH no son el mismo valor, y ambos variarán dependiendo de las condiciones de carga capacitiva. Los valores de los tiempos de propagación se utilizan como una medición de la velocidad relativa de los circuitos lógicos. Por ejemplo, un circuito lógico con valores de 10 ns es mucho más rápido que un circuito lógico con valores de 20 ns, bajo condiciones de carga específicas. ALTO BAJO IOH IIH VOH VIH (a) + + – – IOL IIL VOL VIL + + – – +5 V (b) FIGURA 8-1 Corrientes y voltajes en los dos estados lógicos.
  • 522. 492 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS 0 1 1 0 1 1 0 1 1 +VCC ICCH (a) 1 1 1 (b) +VCC ICCL 0 0 0 1 1 1 1 1 1 1 1 1 FIGURA 8-3 ICCH e ICCL. Requerimientos de energía Todo CI requiere una cierta cantidad de energía eléctrica para operar. Esta energía se suministra mediante uno o más voltajes de fuente de energía conectados a la(s) terminal(es) de energía en el chip, las cuales se etiquetan como VCC (para TTL) o VDD (para los dispositivos MOS). La cantidad de energía que requiere un CI se determina con base en la corriente ICC (o IDD) que consume de la fuente VCC (o VDD), y la energía real es el producto ICC VCC. Para muchos CIs, la corriente que se consume de la fuente varía con base en los estados lógicos de los circuitos en el chip. Por ejemplo, la figura 8-3(a) muestra un chip NAND en el cual todas las salidas de las compuertas están en ALTO. El dre- nado de corriente en la fuente VCC para este caso se llama ICCH. De igual forma, la figura 8-3(b) muestra la corriente cuando todas las salidas de las compuertas están en BAJO. Esta corriente se llama ICCL. Los valores siempre se miden con las salidas en circuito abierto (sin carga), ya que el tamaño de la carga también tendrá un efecto sobre ICCH. En algunos circuitos lógicos ICCH e ICCL tendrán valores distintos. Para estos dis- positivos, la corriente promedio se calcula con base en la suposición de que las sali- das de las compuertas están en BAJO la mitad del tiempo, y en ALTO la otra mitad del tiempo. Entrada 1 Salida 1 0 0 tPHL tPLH 50% 50% t FIGURA 8-2 Tiempos de propagación. = ICCH + ICCL 2 ICC (prom)
  • 523. SECCIÓN 8-1/TERMINOLOGÍA DE CIS DIGITALES 493 FIGURA 8-4 Márgenes de ruido de corriente directa. VOH (mín) 1 lógico 0 lógico Intervalos de voltaje de salida (a) Intervalo no permitido VOL (máx) Vo taje l VNH VIH (mín) VIL (máx) Requerimientos de voltaje de entrada (b) 1 lógico 0 lógico Intervalo indeterminado Vo taje l VNL Esta ecuación puede reescribirse para calcular la energía promedio que se disipa: PD(prom) ICC(prom VCC) Inmunidad al ruido Los campos eléctricos y magnéticos dispersos pueden inducir voltajes en los conducto- res que conectan los circuitos lógicos. Estas señales espurias indeseables se conocen como ruido y algunas veces pueden hacer que el voltaje en la entrada de un circuito lógico caiga por debajo deVIH(mín) o se eleve por encima deVIL(máx), lo cual podría producir una operación impredecible. La inmunidad al ruido de un circuito lógico se refiere a la habilidad de ese circuito para tolerar el ruido sin producir cambios espu- rios en el voltaje de salida. A una medida cuantitativa de la inmunidad al ruido se le conoce como margen de ruido, el cual se ilustra en la figura 8-4. La figura 8-4(a) es un diagrama que muestra el intervalo de voltajes que pueden aparecer en la salida de un circuito lógico. Cualquier voltaje mayor que VOH(mín) se considera como un 1 lógico, y cualquier voltaje menor que V0L(máx) se considera como un 0 lógico. Los voltajes en el intervalo indeterminado no deben aparecer en la salida de un circuito lógico, bajo condiciones normales. La figura 8-4(b) mues- tra los requerimientos de voltaje en la entrada de un circuito lógico. Este circuito responde a cualquier entrada mayor que VIH(mín) como un 1 lógico, y responde a voltajes menores que VIL(máx) como un 0 lógico. Los voltajes en el intervalo inde- terminado producen una respuesta impredecible y no deben usarse. El margen de ruido de estado alto VNH se define como VNH VOH(mín) VIH(mín) (8-1) y se ilustra en la figura 8-4. VNH es la diferencia entre la menor salida en ALTO posible y el mínimo voltaje de entrada requerido para un nivel ALTO. Cuando una salida lógica en ALTO controla la entrada de un circuito lógico, cualquier pico de voltaje negativo mayor que VNH y que aparezca en la línea de señal, podrá hacer que el voltaje caiga en el intervalo indeterminado, en donde puede producirse una operación impredecible. El margen de ruido de estado bajo VNL se define como VNL VIL(máx) VOL(máx) (8-2)
  • 524. 494 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS EJEMPLO 8-1 y es la diferencia entre la mayor salida en BAJO posible y el máximo voltaje de entrada requerido para un nivel BAJO. Cuando una salida lógica en BAJO controla una entrada lógica, cualquier pico de ruido positivo mayor queVNL puede hacer que el voltaje se eleve hacia el intervalo indeterminado. Las especificaciones de voltaje de entrada/salida para la familia TTL estándar se muestran en la tabla 8-1. Utilice estos valores para determinar lo siguiente. (a) El pico de ruido de máxima amplitud que puede tolerarse cuando una salida en ALTO maneja una entrada. (b) El pico de ruido de máxima amplitud que puede tolerarse cuando una salida en BAJO maneja una entrada. Solución (a) Cuando una salida está en ALTO, puede ser tan baja como VOH(mín) 2.4 V. El mínimo voltaje al que puede responder una entrada como ALTO es VIH(mín) 2.0 V. Un pico de ruido negativo puede llevar al voltaje actual por debajo de 2.0 V si su amplitud es mayor que VNH VOH(mín) VIH(mín) 2.4 V 2.0 V 0.4 V (b) Cuando una salida está en BAJO, puede ser tan alta como VOL(máx) 0.4 V. El máximo voltaje al que puede responder una entrada como BAJO es VIL(máx) 0.8 V. Un pico de ruido positivo puede llevar al voltaje actual por encima del nivel de 0.8 V, si su amplitud es mayor que VNL VIL(máx) VOL(máx) 0.8 V 0.4 V 0.4 V Niveles de voltaje inválidos Para una operación apropiada, los niveles de voltaje de entrada para un circuito lógico deben mantenerse fuera del intervalo indeterminado que se muestra en la figura 8-4(b); esto es, deben ser menores queVIL(máx) o mayores queVIH(mín). Para las especificaciones de TTL estándar que se proporcionan en el ejemplo 8-1, esto sig- nifica que el voltaje de entrada debe ser menor que 0.8 V o mayor que 2.0 V. Un vol- taje de entrada entre 0.8V y 2.0V se considera un voltaje inválido que producirá una respuesta de salida impredecible, por lo cual debe evitarse. En la operación normal, un voltaje de entrada lógico no caerá dentro de la región inválida debido a que pro- viene de una salida lógica que se encuentra dentro de las especificaciones estable- cidas. No obstante, cuando esta salida lógica está fallando o se está sobrecargando (es decir, se está excediendo su capacidad de carga), entonces su voltaje puede estar en la región inválida. Los niveles de voltaje inválidos en un circuito digital también pueden producirse debido a voltajes de la fuente de energía que se encuentran fuera del intervalo aceptable. Es importante conocer los intervalos de voltaje válidos para la familia lógica que se está utilizando, de manera que puedan reconocerse las con- diciones inválidas cuando se hagan pruebas o se diagnostiquen fallas. TABLA 8-1 Parámetro Mín (V) Típico (V) Máx (V) VOH 2.4 3.4 VOL 0.2 0.4 VIH 2.0* VIL 0.8* * Por lo general, sólo se proporcionan los valores de VIH mínimo y VIL máximo.
  • 525. SECCIÓN 8-1/TERMINOLOGÍA DE CIS DIGITALES 495 Acción de suministro de corriente y drenado de corriente Las familias lógicas pueden describirse de acuerdo con la forma en que fluye la corriente entre la salida de un circuito lógico y la entrada de otro. La figura 8-5(a) ilustra la acción de suministro de corriente. Cuando la salida de la compuerta 1 se encuentra en el estado ALTO, suministra una corriente IIH a la entrada de la compuerta 2, la cual actúa en esencia como una resistencia a tierra. Por ende, la salida de la compuerta 1 actúa como un suministro de corriente para la entrada de la compuerta 1. Podemos considerar esto como si fuera una llave que actúa como un suministro de agua. La acción de drenado de corriente se ilustra en la figura 8-5(b). Aquí el circuito de entrada de la compuerta 2 se representa como una resistencia enlazada a VCC, la terminal positiva de una fuente de energía. Cuando la salida de la compuerta 1 cambie a su estado BAJO, la corriente fluirá en la dirección que se muestra desde el circuito de entrada de la compuerta 2, de vuelta a través de la resistencia de la compuerta 1 hasta tierra. En otras palabras, en el estado BAJO la salida del circuito que maneja la entrada de la compuerta 2 debe poder drenar una corriente IIL que proviene de esa entrada. Podemos considerar esto como un lavabo, dentro del cual fluye el agua. La distinción entre suministro de corriente y drenado de corriente es impor- tante, y se volverá más aparente a medida que examinemos las diversas familias lógicas. Encapsulados de CI Los desarrollos y avances en los circuitos integrados continúan a un ritmo acelerado. Lo mismo se aplica a los encapsulados de CI. Existen diversos tipos de encapsulados, los cuales difieren en cuanto al tamaño físico, a las condiciones ambientales y de consumo de energía bajo las cuales el dispositivo puede operar en forma confiable, y a la manera en que el encapsulado de CI se monta en el circuito impreso. La figura 8-6 muestra cinco encapsulados de CI representativos. El paquete en la figura 8-6(a) es el DIP (encapsulado dual en línea), el cual ha estado en operación durante un largo tiempo. Sus terminales (o puntas) caen sobre los dos lados extensos del encapsulado rectangular. El dispositivo que se muestra es un DIP de 24 terminales. Observe la presencia de la muesca en un extremo, la cual se utiliza para localizar la terminal 1. Algunos DIPs utilizan un pequeño punto en la superficie superior del encapsulado para localizar la terminal 1. Las terminales se extienden en forma recta hacia fuera del paquete DIP, de manera que el CI pueda insertarse en un zócalo para CI o en agujeros perforados a través de un circuito FIGURA 8-5 Comparación de las acciones de suministro de corriente y drenado de corriente. BAJO BAJO +VCC 1 Compuerta reforzadora VOH Compuerta de carga 2 IIH (a) Suministro de corriente La compuerta reforzadora suministra corriente a la compuerta de carga en el estado ALTO. ALTO ALTO +VCC 1 Compuerta reforzadora VOL Compuerta de carga 2 IIL Drenado de corriente La compuerta reforzadora recibe (drena) corriente de la compuerta de carga en el estado BAJO. (b)
  • 526. 496 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS impreso. El espaciamiento entre terminales (distancia entre terminales) es por lo general de 100 mils (un mils es una milésima de pulgada). Los encapsulados DIP siguen siendo los más populares para prototipos, tableros de experimentación (brea- dboards) y experimentos educativos. Casi todos las nuevas tarjetas de circuitos que se producen mediante el uso de equipos de fabricación automatizados han dejado de utilizar encapsulados DIP, cuyas terminales se insertan en agujeros en el tablero. Los nuevos métodos de fabri- cación utilizan la tecnología de montaje superficial, la cual coloca un CI en almo- hadillas conductoras en la superficie del tablero. Se mantienen fijos mediante una pasta de soldadura y todo el tablero se calienta para crear una conexión soldada. La precisión de la máquina de colocación permite un espaciamiento de las termina- les muy estrecho. Las terminales en estos encapsulados de montaje superficial se doblan hacia afuera de la cubierta de plástico, con lo cual se proporciona un área superficial adecuada para la unión de soldadura. La forma de estas terminales le ha hecho ganar a este encapsulado el sobrenombre de encapsulado tipo “ala de gaviota”. Se dispone de muchos encapsulados distintos para los dispositivos de mon- Terminales en los cuatro lados Esquina desportillada Terminal 2 Terminal 1 Terminal 28 Terminal 24 (c) PLCC de 28 terminales (terminal J) montado en zócalo o en superficie Muesca Terminal 1 (a) DIP de 24 terminales Terminal 12 Terminales en los cuatro lados Terminal 1 (d) QFP de 48 terminales (ala de gaviota) montado en superficie Terminal 12 Terminal 13 Terminal 48 Terminal 33 Terminal 32 Terminal 1 (b) SOIC de 16 terminales (ala de gaviota) montado en superficie Terminal 8 Bisel Terminal 9 Terminal 13 6 5 4 3 2 1 A B C D E F G H J K L M N P R T 1 2 3 4 5 6 A B C D E F G H J K L M N P R T 13.5 mm LFBGA de 98 terminales montado en superficie (e) 5.5 mm 0.8 mm 1.5 mm máx. FIGURA 8-6 Encapsulados comunes de CI. (Cortesía de Texas Instruments.)
  • 527. SECCIÓN 8-1/TERMINOLOGÍA DE CIS DIGITALES 497 TABLA 8-2 Encapsulados de CI. Abreviatura Nombre del encapsulado Altura Distancia entre terminales DIP Encapsulado dual en línea 200 mils (5.1 mm) 100 mils (2.54 mm) SOIC Circuito integrado de pequeño contorno 2.65 mm 50 mils (1.27 mm) SSOP Encapsulado reducido de contorno pequeño 2.0 mm 0.65 mm TSSOP Encapsulado reducido delgado de contorno pequeño 1.1 mm 0.65 mm TVSOP Encapsulado delgado de contorno muy pequeño 1.2 mm 0.4 mm PLCC Portador de chip de plástico con terminales 4.5 mm 1.27 mm QFP Encapsulado plano de cuatro lados 4.5 mm 0.635 mm TQFP Encapsulado plano delgado de cuatro lados 1.6 mm 0.5 mm LFBGA Matriz de rejillas de bolas finas de bajo perfil 1.5 mm 0.8 mm PREGUNTAS DE REPASO taje superficial. Algunos de los encapsulados más comunes que se utilizan para los CIs lógicos se muestran en la figura 8-6. La tabla 8-2 muestra la definición de cada abreviación, junto con sus dimensiones. La necesidad de más y más conexiones para un CI complejo ha producido otro encapsulado muy popular, el cual tiene terminales en los cuatro lados del chip. El PLCC tiene terminales en forma de J que se acuñan por debajo del CI, como muestra la figura 8-6(c). Estos dispositivos pueden montarse en la superficie de un circuito impreso, pero también pueden colocarse en un zócalo especial para PLCC. Este zócalo se utiliza con frecuencia para componentes con los que existe la posibilidad de que necesiten reemplazarse para reparación o actualización, como los dispositi- vos lógicos programables o las unidades centrales de procesamiento en las computadoras. Los encapsulados QFP y TQFP tienen terminales en los cuatro lados en un encapsulado de montaje superficial tipo ala de gaviota, como se mues- tra en la figura 8-6(d). La matriz de rejillas de bolas (BGA) que se muestra en la figura 8-6(e) es un encapsulado de montaje superficial que ofrece aún más densi- dad. La matriz de rejillas de terminales (PGA) es un encapsulado similar que se utiliza cuando los componentes deben estar en un zócalo para que puedan extraerse con facilidad. El encapsulado PGA tiene una terminal larga en vez de una bola de contacto (BGA) en cada posición de la rejilla. La proliferación de equipos portátiles y pequeños para el consumidor, tales como las cámaras de video, los teléfonos celulares, las computadoras (PDAs), los sistemas de audio portátiles y demás dispositivos, ha creado la necesidad de colocar circuitos lógicos en encapsulados muy pequeños. Ahora las compuertas lógicas están disponi- bles en encapsulados individuales de montaje superficial que contienen una, dos o tres compuertas (1G, 2G y 3G, en forma respectiva). Estos dispositivos pueden tener hasta cinco o seis terminales (energía, tierra, de dos a tres entradas y una salida) y pueden ocupar menos espacio que una sola letra de esta página. 1. Defina cada uno de los siguientes términos: VOH, VIL, IOL, IIH, tPLH, tPHL, ICCL, ICCH. 2. Verdadero o falso: si un circuito lógico tiene una capacidad de carga de 5, el cir- cuito tiene cinco salidas. 3. Verdadero o falso: el margen de ruido en estado ALTO es la diferencia entre VIH(mín) y VCC. 4. Describa la diferencia entre drenado de corriente y suministro de corriente. 5. ¿Cuál encapsulado de CI puede insertarse en zócalos? 6. ¿Cuál encapsulado tiene sus terminales dobladas debajo del CI? 7. ¿Qué diferencia hay entre los encapsulados de montaje superficial y los DIPs? 8. ¿Funcionará un dispositivo TTL estándar con un nivel de entrada de 1.7 V?
  • 528. 498 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS Tótem R4 130 ⍀ R2 1.6 k⍀ R1 4 k⍀ Q3 Q2 Q1 A B Entradas Múltiple emisor R3 1 k⍀ Q4 Salida VCC = +5 V D1 D3 D2 Q1 D4 B A Q2 R1 4 k⍀ +5 V (b) (a) X FIGURA 8-7 (a) Compuerta NAND TTL básica; (b) equivalente en diodos para Q1. 8-2 LA FAMILIA LÓGICA TTL Al momento de escribir este libro, todavía podían obtenerse muchos CIs de pequeña a mediana escala (SSI y MSI) en las series de la tecnología TTL estándar que han estado disponibles durante más de 30 años. Estas series originales de dispositivos y sus descendientes en la familia TTL han tenido una tremenda influencia sobre las características de todos los dispositivos lógicos en la actualidad. Los dispositivos TTL aún se utilizan como lógica de “pegamento” que conecta los dispositivos más complejos en los sistemas digitales. También se utilizan como circuitos de interfase para dispositivos que requieren una operación con alta corriente. A pesar de que la familia TTL bipolar ya prácticamente no es utilizada, comenzaremos nuestra dis- cusión sobre los CIs lógicos con los dispositivos que dieron forma a la tecnología digital. El circuito lógico TTL básico es la compuerta NAND, la cual se muestra en la figura 8-7(a). Aunque la familia TTL estándar está casi obsoleta, podemos aprender mucho acerca de los miembros más actuales de la familia si estudiamos los circuitos originales en su forma más simple. Las características de las entradas TTL provie- nen de la configuración de múltiple emisor (unión de diodos) del transistor Q1. La polarización directa de cualquiera (o ambas) de estas uniones de diodos encenderá a Q1. Sólo cuando todas las uniones se polaricen en forma inversa se apagará el transistor. Este transistor con entrada de múltiple emisor puede tener hasta ocho emisores para una compuerta NAND de ocho entradas. Observe además que en el lado de salida del circuito, los transistores Q3 y Q4 están en un arreglo tipo tótem. El tótem está compuesto de dos interruptores de transistor, Q3 y Q4. El trabajo de Q3 es conectar VCC a la salida para crear un nivel ALTO lógico. El trabajo de Q4 es conectar la salida a tierra para crear un nivel BAJO lógico. Como veremos pronto, en la operación normal Q3 o Q4 estarán conduciendo, dependiendo del estado lógico de la salida. Operación del circuito: estado BAJO Aunque el circuito se ve en extremo complejo, podemos simplificar su análisis de cierta forma si utilizamos el equivalente en diodos del transistor de múltiple emisor Q1, como se muestra en la figura 8-7(b). Los diodos D2 y D3 representan las dos unio- nes E-B de Q1, y D4 es la unión colector-base (C-B). En el siguiente análisis utilizare- mos esta representación para Q4.
  • 529. APAGADO APAGADO ENCENDIDO ENCENDIDO ENCENDIDO APAGADO Salida en BAJO (a) – 0.7 V – + Q4 VOL ⭐ 0.4 V + X D1 Q3 130 V R4 R2 1.6 k⍀ 0.8 V Q2 +5 V 1 k⍀ R3 D4 Y 4 k⍀ R1 A = +5 V B = +5 V D2 D3 IIH = 10 μA (típica) Condiciones de entrada A y B están ambas en ALTO (肁 2 V) Las corrientes de entrada son muy bajas IIH = 10 A μ Condiciones de salida Q3 APAGADO Q4 está ENCENDIDO, por lo que VX está en BAJO (聿 0.4 V) APAGADO ENCENDIDO APAGADO APAGADO APAGADO ENCENDIDO Salida en ALTO (b) – Q4 VOH 肁 2.4 V + X D1 Q3 130 ⍀ R4 R2 1.6 k⍀ Q2 +5 V 1 k⍀ R3 D4 Y 4 k⍀ R1 A = +5 V B D2 D3 IIL = 1.1 mA (típica) Condiciones de entrada A o B o ambas están en BAJO (聿 0.8 V) La corriente fluye de vuelta a tierra a través de la terminal de entrada en BAJO. IIL = 1.1 mA Condiciones de salida Q4 APAGADO Q3 actúa como seguidor de emisor y VOH 肁 2.4 V, por lo general 3.5 V – + FIGURA 8-8 Compuerta NAND TTL en sus dos estados de salida. Primero consideremos el caso en el que la salida está en BAJO. La figura 8-8(a) muestra esta situación con ambas entradas A y B en 5 V. Los 5 V en los cátodos de D2 y D3 apagarán estos diodos y casi no conducirán corriente. La fuente de 5 V empujará la corriente a través de R1 y D4 hacia la base de Q2, el cual se encenderá. La corriente del emisor de Q2 fluirá hacia la base de Q4 y lo encenderá. Al mismo tiempo, el flujo de la corriente de colector de Q2 producirá una caída de voltaje a través de R2, con lo que se reducirá el voltaje de colector de Q2 a un valor bajo que no será suficiente para encender a Q3. El voltaje en el colector de Q2 se muestra como un valor aproximado a 0.8V. Esto se debe a que el emisor de Q2 está a 0.7V con respecto a tierra debido al voltaje posi- tivo en E-B de Q4, y el colector de Q2 está a 0.1 V con respecto a su emisor, debido a SECCIÓN 8-2/LA FAMILIA LÓGICA TTL 499
  • 530. 500 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS VCE(sat). Estos 0.8 V en la base de Q3 no son suficientes para la polarización directa de la unión E-B de Q3 y el diodo D1. De hecho, D1 se necesita para mantener a Q3 apagado en esta situación. Con Q4 encendido, la terminal de salida X estará a un voltaje muy bajo debido a que la resistencia en el estado ENCENDIDO de Q4 será baja (de 1 a 25 ). En rea- lidad, el voltaje de salida VOL dependerá de cuánta corriente de colector conduzca Q4. Con Q3 apagado no hay corriente que provenga de la terminal de 5 V a través de R4. Como veremos, la corriente de colector de Q4 llegará de las entradas TTL a las que está conectada la terminal X. Es importante observar que las entradas en ALTO en A y B tendrán que suminis- trar sólo una corriente de fuga muy pequeña en el diodo.Por lo general,esta corriente IIH es tan sólo de un valor aproximado a los 10 μA, a temperatura ambiente. Operación del circuito: estado ALTO La figura 8-8(b) muestra la situación en la que la salida del circuito está en ALTO. Esta situación puede producirse si se conecta una de las entradas (o ambas) a un nivel BAJO. Aquí, la entrada B está conectada a tierra. Esto producirá la polariza- ción directa de D3, de forma que la corriente fluirá de la terminal de alimentación de 5V a través de R1 y D3, y de la terminal B a tierra. El voltaje positivo a través de D3 retendrá el punto Y a un valor aproximado a los 0.7 V. Este voltaje no es suficiente para polarizar en forma directa a D4 y la unión E-B de Q2 lo necesario como para la conducción. Con Q2 apagado no hay corriente base para Q4, por lo cual se apaga. Como no hay corriente de colector en Q2, el voltaje en la base de Q3 será lo suficientemente grande como para polarizar en forma directa a Q3 y a D1, de manera que Q3 conducirá. En realidad, Q3 actúa como un seguidor de emisor, ya que en esencia la terminal de salida X se encuentra en su emisor. Sin carga conectada del punto X a tierra, VOH tendrá un valor aproximado entre 3.4 y 3.8 V, ya que se restan dos caídas de 0.7 V en los diodos (E-B de Q3 y D1) de los 5 V que se aplican a la base de Q3. Este voltaje disminuirá bajo una carga, ya que ésta drenará la corriente del emisor de Q3, el cual drena la corriente de la base a través de R2 y, por lo tanto, se incrementa la caída de voltaje a través de R2. Es importante observar que hay una corriente sustancial que fluye de vuelta a través de la terminal de entrada B a tierra, cuando B se mantiene en BAJO. Esta corriente IIL se determina con base en el valor de la resistencia R1, la cual variará de serie a serie. Para la familia TTL estándar, es de un valor aproximado a 1.1 mA. La entrada B en BAJO actúa como un drenador a tierra para esta corriente. Acción de drenado de corriente Una salida TTL actúa como un drenador de corriente en el estado BAJO, ya que recibe corriente de la entrada de la compuerta que está controlando. La figura 8-9 muestra una compuerta TTL que maneja la entrada de otra compuerta (la carga) para ambos estados de voltaje de salida. En la situación del estado de salida en BAJO que se describe en la figura 8-9(a), el transistor Q4 de la compuerta reforza- dora está encendido y en esencia crea un “corto” entre X y tierra. Este BAJO voltaje en X polariza en forma directa la unión emisor-base de Q1 y la corriente fluye, como se muestra, de vuelta a través de Q4. Por ende, Q4 está realizando una acción de dre- nado de corriente, la cual deriva su corriente de la de entrada (IIL) de la compuerta de carga. Con frecuencia nos referiremos a Q4 como el transistor de drenado de corriente, o como el transistor de puesta en bajo, ya que reduce el voltaje de salida hasta su estado BAJO. Acción de suministro de corriente En el estado ALTO, una salida TTL actúa como un suministro de corriente. Esto se muestra en la figura 8-9(b), en donde el transistor Q3 suministra la corriente de entrada IIH que requiere el transistor Q1 de la compuerta de carga. Como se
  • 531. dijo antes, ésta es una pequeña corriente de fuga con polarización inversa (por lo general 10 A). A menudo nos referiremos a Q3 como el transistor de suministro de corriente o transistor de puesta en alto. En algunas de las series TTL más modernas, el circuito de puesta en alto está compuesto de dos transistores, en vez de un tran- sistor y un diodo. Circuito de salida en forma de tótem Debemos mencionar varios puntos en relación con el arreglo en forma de tótem del circuito de salida TTL, como se muestra en la figura 8-9, ya que no está claro por qué se utiliza. Puede lograrse la misma lógica si se eliminan Q3 y D1, y se conecta la parte inferior de R4 al colector de Q4. Pero este arreglo significaría que Q4 tendría que conducir una corriente muy pesada en su estado de saturación (5 V/130 ≈ 40 mA). Con Q3 en el circuito no habrá corriente a través de R4 en el estado de salida BAJO. Esto es importante ya que mantiene la disipación de energía del circuito en un nivel bajo. En el estado de salida ALTO ocurre otra ventaja de este arreglo. Aquí, Q3 actúa como un seguidor de emisor con su impedancia de salida baja asociada (por lo gene- ral de 10 ). Esta impedancia de salida baja proporciona una constante de tiempo corta para cargar cualquier carga capacitiva en la salida. Esta acción, que por lo general se le conoce como ascenso (pull-up) activo, proporciona formas de onda con un tiempo de elevación muy rápido en las salidas TTL. Una desventaja del arreglo de salida en forma de tótem se produce durante la transición de BAJO a ALTO. Desafortunadamente, Q4 se apaga con más lentitud que la velocidad con que Q3 se enciende, por lo que hay un periodo de unos cuantos nanosegundos, durante los cuales ambos transistores están conduciendo y se drena una corriente relativamente grande (de 30 a 40 mA) de la fuente de 5 V. Esto puede presentar un problema que examinaremos después. Salida en BAJO APAGADO ENCEND DO ENCENDIDO Circuito de salida de la compuerta reforzadora Circuito de entrada de la compuerta de carga (a) VOL Q4 X + – D1 Q3 R4 130 ⍀ +5 V IIL Q1 R1 4 k⍀ +5 V Salida en ALTO ENCENDIDO APAGADO APAGADO Salida de la compuerta reforzadora Entrada de la compuerta de carga (b) VOH Q4 + – D1 Q3 R4 +5 V IIH Q1 R1 4 k⍀ +5 V FIGURA 8-9 (a) Cuando la salida TTL se encuentra en el estado BAJO, Q4 actúa como drenador de corriente y deriva su corriente de la carga. (b) En el estado de salida ALTO, Q3 actúa como suministro de corriente para la compuerta de carga. SECCIÓN 8-2/LA FAMILIA LÓGICA TTL 501
  • 532. 502 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS Entrada A Entrada B Q2 Q4 R5 1 k⍀ Q6 X Salida 4 k⍀ R2 Q1 Q3 Q5 D1 130 k⍀ R4 1.6 k⍀ R3 4 k⍀ R1 +VCC FIGURA 8-10 Circuito TTL de compuerta NOR. PREGUNTAS DE REPASO Compuerta NOR TTL La figura 8-10 muestra el circuito interno para una compuerta NOR TTL. No reali- zaremos un análisis detallado de este circuito, pero es importante observar cómo se compara con el circuito NAND de la figura 8-8. En el lado de entrada podemos ver que el circuito NOR no utiliza un transistor con múltiple emisor; en vez de ello, cada entrada se aplica al emisor de un transistor separado. En el lado de salida, el circuito NOR utiliza el mismo arreglo en forma de tótem que el circuito NAND. Resumen Todos los circuitos TTL tienen una estructura similar. Las compuertas NAND y AND utilizan entradas de transistor con múltiple emisor o uniones con varios diodos; las compuertas NOR y OR utilizan transistores de entrada separados. En cualquier caso, la entrada será el cátodo (región N) de una unión P-N, por lo que un voltaje de entrada en ALTO desconectará la unión y sólo fluirá una pequeña corriente de fuga (IIH). En contraste, un voltaje de entrada en BAJO enciende la unión y en con- secuencia, fluirá una corriente relativamente grande (IIL) a través de la fuente de la señal. La mayoría de los circuitos TTL tendrán algún tipo de configuración de salida en forma de tótem. Hay algunas excepciones que veremos más adelante. 1. Verdadero o falso: una salida TTL actúa como un drenador de corriente en el estado BAJO. 2. ¿En qué estado de entrada TTL fluye la mayor cantidad de corriente de entrada? 3. Indique las ventajas y desventajas de una salida en forma de tótem. 4. ¿Cuál transistor TTL es el transistor de puesta en alto en el circuito NAND? 5. ¿Cuál transistor TTL es el transistor de puesta en bajo en el circuito NOR? 6. ¿Qué diferencia hay entre los circuitos TTL NOR y NAND? 8-3 HOJAS TÉCNICAS TTL En 1964, Texas Instruments Corporation introdujo la primera línea de CIs TTL estándar. La serie conocida como 54/74 ha sido una de las familias lógicas de CIs más utilizadas. Nosotros nos referiremos a ella simplemente como la serie 74, ya que la principal diferencia entre las versiones 54 y 74 es que los dispositivos en la serie 54
  • 533. pueden operar sobre un intervalo más amplio de temperaturas y voltajes de alimen- tación. Muchos fabricantes de semiconductores aún producen CIs TTL. Por fortuna todos utilizan el mismo sistema de numeración, por lo que el número CI básico es el mismo de en cualquier fabricante. No obstante, cada fabricante, por lo general, adjunta su propio prefijo especial al número del CI. Por ejemplo,Texas Instruments utiliza el prefijo SN, Nacional Semiconductor utiliza DM y Signetics utiliza la S. Así, dependiendo del fabricante, usted podrá ver un chip de compuerta NOR cuádruple etiquetado como DM7402, SN7402, S7402, o con cualquier otra designación similar. La parte importante es el número 7402, que es el mismo para todos los fabricantes. Como vimos en el capítulo 4, hay varias series en la familia TTL de disposi- tivos lógicos (74, 74LS, 74S, etc.). Los fabricantes ya no recomiendan el uso de la serie estándar original y sus descendientes inmediatos (74, 74LS, 74S) en los nue- vos diseños. A pesar de todo hay una demanda en el mercado suficiente como para mantenerlos en producción. Es vital tener una comprensión de las características que definen las capacidades y limitaciones de cualquier dispositivo lógico. En esta sección definiremos esas características mediante el uso de la serie Schottky (ALS) de baja potencia y le ayudaremos a interpretar una hoja técnica ordinaria. Más ade- lante introduciremos las demás series TTL y compararemos sus características. Para encontrar toda la información que necesitemos sobre un CI podemos con- sultar las hojas técnicas publicadas por el fabricante para esa familia de CIs espe- cífica. Podemos obtener estas hojas técnicas de los hojas de datos, CD-ROMs o del sitio Web del fabricante de CIs. La figura 8-11 es la hoja técnica del fabricante para el CI de compuerta NAND 74ALS00, en la cual se muestran las condiciones de ope- ración recomendadas, las características eléctricas y las de conmutación. En esta hoja técnica encontrará la mayoría de los parámetros que veremos en los siguientes párrafos. A medida que veamos cada una de los parámetros, será conveniente que consulte esta hoja técnica para que vea de dónde provino la información. Voltaje de alimentación e intervalo de temperatura Tanto la serie 74ALS como la serie 54ALS utilizan un voltaje de alimentación nomi- nal (VCC) de 5 V, pero pueden tolerar una variación en ésta de 4.5 a 5.5 V. La serie 74ALS está diseñada para operar en forma apropiada en temperaturas ambientales que varían de 0 a 70°C, mientras que la serie 54ALS puede manejar temperaturas de 5 a 125°C. Debido a su mayor tolerancia a las variaciones en voltaje y tempe- ratura, la serie 54ALS es más costosa; se emplea sólo en aplicaciones en las que debe mantenerse una operación confiable sobre una extensa variedad de condiciones. Algunos ejemplos son las aplicaciones militares y espaciales. Niveles de voltaje En la hoja técnica de la figura 8-11 encontrará los niveles de voltaje lógicos de entrada y salida para la serie 74ALS. La tabla 8-3 los presenta en forma sintetizada. Los valores mínimo y máximo que se muestran son para las condiciones de la fuente de energía, temperatura y condiciones de carga para el peor de los casos. Una ins- pección de la tabla nos revela un voltaje de salida en 0 lógico máximo garantizado VOL 0.5 V, el cual es 300 mV menor que el voltaje en 0 lógico necesario en la entrada VIL 0.8 V. Esto significa que el margen de ruido de corriente directa en estado BAJO garantizado es de 300 mV. Es decir, De manera similar, se garantiza un valor mínimo de 2.5V en la salida en 1 lógico VOH, la cual es 500 mV mayor que el voltaje en 1 lógico necesario en la entrada, VIH 2.0 V. Por lo tanto, el margen de ruido de corriente directa en estado ALTO es de 500 mV. Por lo tanto, el margen de ruido de corriente directa garantizado para el peor de los casos para la serie 74ALS es de 300 mV. VNL = VIL(max) - VOL(max) = 0.8 V - 0.5 V = 0.3 V = 300 mV ´ ´ VNH = VOH(min) - VIH(min) = 2.5 V - 2.0 V = 0.5 V = 500 mV mín mín SECCIÓN 8-3/HOJAS TÉCNICAS TTL 503
  • 534. 504 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS condiciones de operación recomendadas Voltaje de alimentación Voltaje de entrada de nivel alto Voltaje de entrada de nivel bajo Corriente de salida de nivel alto Corriente de salida de nivel bajo Temperatura de operación al aire libre Se aplica sobre el intervalo de temperatura de 55°C a 70°C. ´ ´ ´ ´ ´ ´ ´ ´ UNIDAD UNIDAD características eléctricas sobre el intervalo de temperatura de operación al aire libre, a menos que se indique lo contrario PARÁMETRO CONDICIONES DE PRUEBA TIP TIP Todos los valores típicos están a VCC = 5V, TA = 25°C Se han elegido las condiciones de salida de forma que se produzca una corriente que se aproxime muy de cerca a la mitad de la corriente de salida de corto circuito IOS. características de conmutación (vea la figura 1) PARÁMETRO DESDE (ENTRADA) HACIA (SALIDA) UNIDAD Para las condiciones que se muestran como MÍN o MÁX, utilice el valor apropiado que se especifica bajo las condiciones de operación recomendada. MÍN a MÁX o a ´ ´ ´ ´ Se aplica sobre el intervalo de temperatura de 70°C a 125°C. FIGURA 8-11 Hoja técnica para el CI de compuerta NAND 74ALS00. (Cortesía de Texas Instruments.) TABLA 8-3 Niveles de voltaje de la serie 74ALS. Mínimo Típico Máximo VOL — 0.35 0.5 VOH 2.5 3.4 — VIL — — 0.8 VIH 2.0 — — Clasificaciones máximas de voltaje Los valores de voltaje en la tabla 8-3 no incluyen las clasificaciones máximas abso- lutas más allá de las cuales puede atrofiarse la vida útil del CI. Por lo general, las condiciones de operación máximas absolutas se proporcionan en la parte superior de una hoja técnica (que no se muestra en la figura 8-11). Los voltajes que se aplican a cualquier entrada del CI de esta serie nunca deben exceder de 7.0 V. Un voltaje
  • 535. EJEMPLO 8-2 mayor de 7.0 V que se aplique a un emisor de entrada puede provocar un rompi- miento inverso de la unión E-B de Q1. También hay un límite en el voltaje máximo negativo que puede aplicarse a una entrada TTL. Este límite de 0.5 V se produce debido al hecho de que la mayoría de los circuitos TTL emplean diodos protectores en paralelo en cada entrada. Omitimos estos diodos a propósito en nuestro análisis anterior, ya que no entran en la operación normal del circuito. Se conectan de cada entrada a tierra para limitar las excursiones de voltaje de entrada negativo que ocurren con frecuencia cuando las señales lógicas tienen sobretiros excesivos. Con estos diodos no debemos aplicar más de 0.5 V a una entrada, ya que los diodos protectores comenzarían a conducir y drenarían una cantidad considerable de corriente; tal vez el diodo podría quedar en corto y se pro- duciría una entrada dañada en forma permanente. Disipación de potencia Una compuerta NAND TTL ALS disipa una potencia promedio de 2.4 mW. Esto se debe a que ICCH 0.85 mA e ICCL 3 mA, lo cual produce ICC(prom) 1.93 A y PD(prom) 1.93 mA 5V 9.65 mW. Estos 9.65 mW son la potencia total requerida por las cuatro compuertas en el chip. Por ende, una compuerta NAND requiere una potencia promedio de 2.4 mW. Tiempos de propagación La hoja de datos proporciona los tiempos de propagación mínimo y máximo. Suponiendo que el valor típico es una cantidad intermedia, tenemos que tPLH 7 ns y tPHL 5 ns. El retraso de propagación promedio total tpd(prom) 6 ns. Consulte la hoja de datos para el CI NAND cuádruple de dos entradas 74ALS00 de la figura 8-11. Determine la máxima disipación de potencia promedio y el máximo retraso de propagación promedio de una sola compuerta. Solución En las características eléctricas busque los valores máximos de ICCH e ICCL. Los valo- res son 0.85 mA y 3 mA, respectivamente. Por lo tanto, la ICC promedio es de 1.9 mA. La potencia promedio se obtiene al multiplicar por VCC. La hoja técnica indica que estos valores de ICC se obtuvieron cuando VCC se encontraba en su valor máximo (5.5V para la serie 74ALS). Por ende, tenemos que PD(prom) 1.9 mA 5.5 V 10.45 mW como la potencia que disipa todo el CI. Podemos determinar la disipación de poten- cia de una compuerta NAND si dividimos esta cantidad entre 4: PD(prom) 2.6 mW por compuerta Como este parámetro se calculó utilizando los valores máximos de corriente y de vol- taje, es la potencia promedio máxima que disipará una compuerta NAND 74ALS00 bajo las peores condiciones. A menudo los diseñadores utilizan estos valores para asegurar que sus circuitos funcionen bajo todas las condiciones. Los tiempos de propagación máximos para una compuerta NAND 74ALS00 se listan como tPLH 11 ns tPHL 8 ns SECCIÓN 8-3/HOJAS TÉCNICAS TTL 505
  • 536. 506 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS así, el tiempo de propagación promedio máximo es De nuevo, éste es el máximo tiempo de propagación promedio posible para el peor de los casos. 8-4 CARACTERÍSTICAS DE LAS SERIES TTL La serie estándar 74 de TTL ha evolucionado a varias series más.Todas ellas ofrecen una amplia variedad de compuertas y flip-flops en la línea de integración a pequeña escala (SSI), y contadores, registros, multiplexores, decodificadores/codificadores y demás funciones lógicas en su línea de integración a mediana escala (MSI). Las siguientes series TTL (a las que con frecuencia se les llama “subfamilias”) propor- cionan un amplio intervalo de velocidad y potencia. TTL estándar, serie 74 En la sección 8-2 hablamos sobre la serie 74 estándar original de la lógica TTL. Estos dispositivos siguen disponibles, pero en la mayoría de los casos no son una opción razonable para los nuevos diseños, ya que ahora están disponibles otros dispositivos con un rendimiento mucho mayor y a un menor costo. TTL Schottky, serie 74S La serie 7400 opera mediante el uso de la conmutación saturada, en la cual muchos de los transistores al conducir estarán en la condición saturada. Esta operación pro- duce un retraso en el tiempo de almacenamiento tS cuando los transistores cambian de ENCENDIDO a APAGADO, y limita la velocidad de conmutación del circuito. La serie 74S reduce este retraso en el tiempo de almacenamiento al no permitir que el transistor caiga tanto en saturación. Para ello utiliza un diodo de barrera Schottky (SBD), el cual se conecta entre la base y el colector de cada transistor, como se muestra en la figura 8-12(a). El SBD tiene un voltaje positivo de sólo 0.25V. Por ende, cuando la unión C-B se polariza en forma directa al comienzo de la satura- ción, el SBD conducirá y desviará parte de la corriente de entrada de la base. Esto reduce el exceso de corriente base y disminuye el retraso de tiempo de almacena- miento al momento en que el transistor se apague. Como se muestra en la figura 8-12(a), la combinación de transistor/SBD recibe un símbolo especial. Este símbolo se utiliza para todos los transistores en el diagrama del circuito para la compuerta NAND 74S00 que se muestra en la figura 8-12(b). Esta compuerta NAND 74S00 tiene un retraso de propagación promedio de sólo 3 ns, lo cual es seis veces más rápido que el 7400. Observe la presencia de los diodos limitadores D1 y D2 para limitar los voltajes de entrada negativos. Los circuitos en la serie 74S también utilizan valores de resistencias menores para ayudar a mejorar los tiempos de conmutación. Esto incrementa la disipación de potencia promedio del circuito a un valor aproximado de 20 mW, casi dos veces más que la serie 74. Los circuitos 74S también utilizan un par Darlington (Q3 y Q4) para proveer un tiempo de elevación de salida más corto cuando cambian de ENCENDIDO a APAGADO. TTL Schottky de baja potencia, serie 74LS (LS-TTL) La serie 74LS es una versión de menor velocidad y potencia que la serie 74S. Utiliza el transistor Schottky-clamped, pero con valores de resistencia más grandes que la serie 74S. Estos valores de resistencia mayores reducen el requerimiento de energía del circuito, pero a expensas de un incremento en los tiempos de conmutación. Por = 11 + 8 2 = 9.5 ns tpd(prom)
  • 537. Q6 Q5 370 ⍀ 3.5 k⍀ Q4 55 ⍀ 760 ⍀ 2.8 k⍀ VCC Q3 Q2 Q1 D2 D1 Entradas Diodo Schottky (a) (b) Salida 350 ⍀ FIGURA 8-12 (a) Transistor Schottky-clamped; (b) compuerta NAND básica en la serie S-TTL. TABLA 8-5 74LS 74ALS Tiempo de propagación 9.5 ns 4 ns Disipación de potencia 2 mW 1.2 mW TABLA 8-4 74S 74AS Tiempo de propagación 3 ns 1.7 ns Disipación de potencia 20 mW 8 mW lo general, una compuerta NAND en la serie 74LS tendrá un retraso de propagación promedio de 9.5 ns y una disipación de potencia promedio de 2 mW. TTL Schottky avanzado, serie 74AS (AS-TTL) Las innovaciones en el diseño de circuitos integrados condujeron al desarrollo de dos series TTL mejoradas: Schottky avanzado (74AS) y Schottky avanzado de baja potencia (74ALS). La serie 74AS proporciona una mejora considerable en veloci- dad, en comparación con la serie 74S, con un requerimiento mucho menor de ener- gía. La tabla 8-4 muestra la comparación para una compuerta NAND en cada serie. Esta comparación muestra con claridad la ventaja de la serie 74AS: la serie TTL es más rápida, y su disipación de potencia es mucho menor que la de la serie 74S. La serie 74AS tiene otras mejoras, incluyendo requerimientos menores de corriente de entrada (IIL, IIH), lo cual produce una capacidad de carga mayor que el de la serie 74S. TTL Schottky avanzado de baja potencia, serie 74ALS Ésta es una versión mejorada de la serie 74LS, tanto en velocidad como en disipa- ción de potencia, según los números mostrados en la tabla 8-5. La serie 74ALS tiene la menor disipación de potencia de las compuertas de todas las series TTL. SECCIÓN 8-4/CARACTERÍSTICAS DE LAS SERIES TTL 507
  • 538. 508 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS EJEMPLO 8-3 EJEMPLO 8-4 74F: TTL rápida Esta serie utiliza una nueva técnica de fabricación de circuitos integrados para reducir las capacitancias entre dispositivos y por ende se logra reducir los tiempos de propagación. Una compuerta NAND ordinaria tiene un tiempo de propagación promedio de 3 ns y un consumo de energía de 6 mW. Los CIs en esta serie están designados con la letra F en su número de pieza. Por ejemplo, el 74F04 es un chip inversor hexadecimal. Comparación de las características de las series TTL La tabla 8-6 proporciona los valores típicos para algunas de las características más importantes de cada una de las series TTL.Todas las clasificaciones de rendimiento, excepto la clasificación de frecuencia máxima de reloj, son para una compuerta NAND en cada serie. La frecuencia de reloj máxima se especifica como la máxima frecuencia que puede utilizarse para conmutar un flip-flop J-K. Esto nos propor- ciona una medida útil del intervalo de frecuencia a través del cual puede operarse cada una de las series de CIs. Utilice la tabla 8-6 para calcular los márgenes de ruido de corriente directa para un CI 74LS ordinario. ¿Cómo se compara esto con los márgenes de ruido de la familia TTL estándar? Solución ¿Cuál de las series TTL puede manejar la mayor cantidad de entradas de dispositi- vos de la misma serie? Solución La serie 74AS tiene la capacidad de carga más alto (40), lo cual significa que una compuerta NAND 74AS00 puede manejar 40 entradas de otros dispositivos 74AS. SI TABLA 8-6 Características típicas de las series TTL. 74 74S 74LS 74AS 74ALS 74F Clasificaciones de rendimiento Tiempo de propagación (ns) 9 3 9.5 1.7 4 3 Disipación de potencia (mW) 10 20 2 8 1.2 6 Frecuencia máxima de reloj (MHz) 35 125 45 200 70 100 Capacidad de carga (misma serie) 10 20 20 40 20 33 Parámetros de voltaje VOH(mín) 2.4 2.7 2.7 2.5 2.5 2.5 VOL(máx) 0.4 0.5 0.5 0.5 0.5 0.5 VIH(mín) 2.0 2.0 2.0 2.0 2.0 2.0 VIL(máx) 0.8 0.8 0.8 0.8 0.8 0.8 74LS 74 = 0.3 V = 0.4 V = 0.8 V - 0.5 V VNL = 0.8 V - 0.4 V VNL = VIL(max) - VOL(max) = 0.7 V = 0.4 V = 2.7 V - 2.0 V VNH = 2.4 V - 2.0 V VNH = VOH(min) - VIH(min) mín mín ´ ´
  • 539. (a) ENCENDIDO APAGADO Estado BAJO Q4 VOL – + D1 Q3 R2 R4 +5 V +5 V +5 V IOL IIL IIL (b) Q4 VOH – + D1 Q3 R2 R4 +5 V +5 V +5 V IOH IIH IIH APAGADO ENCENDIDO Estado ALTO FIGURA 8-13 Las corrientes cuando una salida TTL maneja varias entradas. PREGUNTAS DE REPASO queremos determinar el número de entradas que puede soportar una salida de una serie TTL distinta, tendremos que conocer las corrientes de entrada y de salida de las dos series. En la siguiente sección trataremos este tema. 1. (a) ¿Cuál de las series TTL es la mejor en altas frecuencias? (b) ¿Cuál de las series TTL tiene el mayor margen de ruido en estado ALTO? (c) ¿Cuál de las series se ha vuelto en esencia obsoleta en los nuevos diseños? (d) ¿Cuál de las series utiliza un diodo especial para reducir el tiempo de con- mutación? (e) ¿Cuál de las series sería la más adecuada para un circuito operado por bate- rías que funcione a 10 MHz? 2. Suponiendo que cada chip tiene el mismo costo, ¿por qué preferiría usted usar un contador 74ALS193 en vez de un 74LS193 o un 74AS193 en un circuito que opere con un reloj de 40-MHz? 3. Identifique los transistores de puesta en alto y de puesta en bajo para el circuito 74S en la figura 8-12. 8-5 CAPACIDAD DE CARGA DE LA FAMILIA TTL Es importante comprender qué es lo que determina la capacidad de carga o la capa- cidad de control de carga de la salida de un CI. La figura 8-13(a) muestra una salida TTL estándar en el estado BAJO, conectada para manejar varias entradas TTL estándar. El transistor Q4 está encendido y actúa como drenador de corriente para una cantidad de corriente IOL que es la suma de las corrientes IIL de cada entrada. En su estado ENCENDIDO, la resistencia de colector-emisor de Q4 es muy pequeña pero no es cero, por lo que la corriente IOL producirá una caída de voltaje VOL. Este voltaje no debe exceder el límite VOL(máx) del CI, el cual limita el valor máximo de IOL y en consecuencia el número de cargas que pueden manejarse. SECCIÓN 8-5/CAPACIDAD DE CARGA DE LA FAMILIA TTL 509
  • 540. 510 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS EJEMPLO 8-5 Para ilustrarlo, suponga que los CIs son de la serie 74 y que cada IIL es de 1.6 mA. De la tabla 8-6 podemos ver que la serie 74 tiene VOL(máx) 0.4V y VIL(máx) 0.8V. Supongamos además que Q4 puede drenar hasta 16 mA antes de que su voltaje de salida llegue a VOL(máx) 0.4 V. Esto significa que puede drenar la corriente de hasta 16 mA/1.6mA 10 cargas. Si se conecta a más de 10 cargas, su IOL se incre- mentará y hará que VOL se incremente por encima de 0.4 V. Por lo general, esto es indeseable, ya que reduce el margen de ruido en las entradas del CI [recuerde que VNL VIL(máx) VOL(máx)]. De hecho, si VOL se eleva por encima de VIL(máx) 0.8 V, estará en el intervalo indeterminado. Una situación similar se presenta en el estado ALTO que se describe en la figura 8-13(b). Aquí Q3 actúa como un seguidor de emisor que está suministrando una corriente total IOH, que es la suma de las corrientes IIH de las distintas entradas TTL. Si se están manejando demasiadas cargas, esta corriente IOH aumentará lo suficiente como para hacer que las caídas de voltaje a través de R2, la unión emisor- base de Q3 y D1 lleven a VOH por debajo de VOH(mín). Esto también es indeseable, ya que reduce el margen de ruido en estado ALTO y podría incluso ocasionar que VOH caiga en el intervalo indeterminado. Lo que todo esto significa es que una salida TTL tiene un límite IOL(máx) en relación con la cantidad de corriente que puede drenar en el estado BAJO.También tiene un límite IOH(máx) en relación con la cantidad de corriente que puede sumi- nistrar en el estado ALTO. Estos límites de corriente de salida no deben excederse si los niveles de voltaje de salida se van a mantener dentro de sus intervalos espe- cificados. Determinación de la capacidad de carga Para determinar cuántas entradas distintas puede controlar la salida de un CI, necesitamos conocer la capacidad de control de corriente de la salida [es decir,IOL(máx) e IOH(máx)] y los requerimientos de corriente de cada entrada (es decir, IIL e IIH). Esta información siempre se presenta de alguna forma en la hoja técnica del fabricante de CIs. Los siguientes ejemplos ilustrarán un tipo de situación. ¿Cuántas entradas de una compuerta NAND 74ALS00 pueden manejarse mediante la salida de una compuerta NAND 74ALS00? Solución Consideraremos primero el estado BAJO,como se describe en la figura 8-14.Consulte la hoja técnica del 74ALS00 en la figura 8-11 y busque IOL(máx) 8 mA IIL(máx) 0.1 mA Esto indica que una salida 74ALS00 puede drenar un máximo de 8 mA y que cada entrada del 74ALS00 suministrará un máximo de 0.1 mA de regreso a través de la salida de la compuerta. Por ende, el número de entradas que se pueden manejar en el estado BAJO se obtiene de la siguiente manera: = 80 = 8 mA 0.1 mA ) = IOL(max) IIL(max) capacidad de carga (BAJO) ´ ´
  • 541. FIGURA 8-14 Ejemplo 8-5. IIL IIL IOL IIL *Todas son compuertas NAND 74ALS00. EJEMPLO 8-6 (Nota: la entrada para IIL es 0.1 mA. El signo negativo se utiliza para indicar que esta corriente fluye hacia fuera de la terminal de entrada; en este caso podemos ignorar este signo). El estado ALTO se analiza de la misma forma. Consulte la hoja técnica para buscar valores para IOH e IIH; ignore los signos negativos. Por lo tanto, el número de entradas que pueden manejarse en el estado ALTO es Si la capacidad de carga (BAJO) y la capacidad de carga (ALTO) no son iguales, como algunas veces pasa, se elije la menor de las dos. Por ende, a la compuerta NAND 74ALS00 se le pueden conectar hasta 20 compuertas NAND 74ALS00 en su salida. Consulte la hoja técnica en el CD ROM de TI (o en la tabla 8-7) y determine cuántas compuertas NAND 74AS20 pueden controlarse mediante la salida de otro 74AS20. Solución La hoja técnica del 74AS20 nos proporciona los siguientes valores: IIH(max) = 20 mA IOH(max) = 0.4 mA = 400 mA ´ ´ = 20 = 400 mA 20 mA = IOH(max) IIH(max) ´ capacidad de carga (ALTO) ´ IIL(max) = 0.5 mA IIH(max) = 20 mA IOL(max) = 20 mA IOH(max) = 2 mA ´ ´ ´ ´ SECCIÓN 8-5/CAPACIDAD DE CARGA DE LA FAMILIA TTL 511
  • 542. 512 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS TABLA 8-7 Clasificaciones de corriente de las compuertas lógicas de la serie TTL.* Salidas Entradas Series TTL IOH IOL IIH IIL 74 0.4 mA 16 mA 40 A 1.6 mA 74S 1 mA 20 mA 50 A 2 mA 74LS 0.4 mA 8 mA 20 A 0.4 mA 74AS 2 mA 20 mA 20 A 0.5 mA 74ALS 0.4 mA 8 mA 20 A 0.1 mA 74F 1 mA 20 mA 20 A 0.6 mA * Algunos dispositivos pueden tener distintas clasificaciones de corriente de entrada o de salida. Consulte siempre la hoja técnica. Si consideramos primero el estado ALTO, tenemos que Para el estado BAJO tenemos que En este caso se elije la capacidad de carga total de 40, ya que es el menor de los dos valores. Por ende, un 74AS20 puede manejar otras 40 entradas 74AS20 más. En equipos antiguos podrá observar que con frecuencia la mayoría de los CIs lógicos se eligieron de la misma familia lógica. En los sistemas digitales actuales es mucho más probable que haya una combinación de varias familias lógicas. En con- secuencia, los cálculos de las cargas y las capacidades de carga no son tan simples como una vez lo fueron. Un buen método para determinar la carga de cualquier salida digital es el siguiente: Paso 1. Sume los valores de IIH de todas las entradas conectadas a una salida. Esta suma debe ser menor que la especificación de IOH de la salida. Paso 2. Sume los valores de IIL de todas las entradas conectadas a una salida. Esta suma debe ser menor que la especificación de IOL de la salida. La tabla 8-7 muestra las especificaciones limitantes para las corrientes de entrada y salida en compuertas lógicas simples de las diversas familiasTTL. Observe que algunos de los valores de corriente se proporcionan como números negativos. Esta convención se utiliza para mostrar la dirección del flujo de la corriente. Los valores positivos indican que la corriente fluye hacia el nodo especificado, sea una entrada o una salida. Los valores negativos indican que la corriente fluye hacia fuera del nodo especificado. En consecuencia, todos los valores de IOH son negativos ya que la corriente fluye hacia la salida (corriente de suministro) y todos los valores de IOL son positivos ya que la corriente de carga fluye hacia la terminal de salida en su camino a tierra (corriente de drenado). De igual forma, IIH es positiva mientras que IIL es negativa. Cuando calcule la carga y la capacidad de carga como se descri- bió antes, deberá ignorar estos signos. = 2 mA 20 mA = 100 capacidad de carga (ALTO) = 20 mA 0.5 mA = 40 capacidad de carga (BAJO)
  • 543. EJEMPLO 8-7 EJEMPLO 8-8 EJEMPLO 8-9 La salida de una compuerta NAND 74ALS00 maneja tres entradas de compuertas 74S y una entrada 7406. Determine si hay un problema de carga. Solución 1. Sume todos los valores de IIH: 3 (IIH para el 74S) 1 (IIH para el 74) Total 3 (50 A) 1 (40 A) 190 A El valor de IOH para la salida del 74ALS es de 400 A (máx), que es mayor que la suma de todas las cargas (190 A). Esto no es problema cuando la salida está en ALTO. 2. Sume todos los valores de IL: 3 (IL para 74S) 1 (IL para 74) Total 3 (2 mA) 1 (1.6 mA) 7.6 mA El valor de IOH para la salida del 74ALS es de 8 mA (máx), lo cual es mayor que la suma de las cargas (7.6 mA). Esto no representa un problema cuando la salida está en BAJO. La salida de la compuerta NAND 74ALS00 del ejemplo 8-7 necesita utilizarse para manejar algunas entradas 74ALS además de las entradas de carga descritas en el ejemplo 8-7. ¿Cuántas entradas 74ALS adicionales podría manejar la salida sin sobrecargarse? Solución De los cálculos del ejemplo 8-7, sólo en el estado BAJO estamos cerca de que se sobrecargue la salida. Una entrada 74ALS tiene una IIL de 0.1 mA. La corriente de drenado máxima (IOL) es de 8 mA y la corriente de carga es de 7.6 mA (según los cálculos del ejemplo 8-7). Para encontrar la corriente adicional que puede drenar la salida hacemos lo siguiente: Corriente adicional IOLmáx 2 suma de las cargas(IIL) 8 mA 2 7.6 mA 0.4 mA Esta salida puede manejar hasta cuatro entradas 74ALS más, que tengan una IIL de 0.1 mA. La salida de un inversor 74AS04 proporciona la señal CLEAR a un registro en para- lelo, el cual está formado por flip-flops D 74AS74. ¿Cuál es el máximo número de entradas CLR de FF que puede maneja r esta compuerta? Solución Las especificaciones para las entradas de los flip-flops no son siempre las mismas que para la entrada de una compuerta lógica en la misma familia. Consulte la hoja técnica del 74AS74 en el CD ROM de TI. Las entradas de reloj y D son similares a las entradas de las compuertas en la tabla 8-7. No obstante, las entradas PRE y CLR tienen especificaciones de IIH 40 A e IIL 1.8 mA. El 74AS04 tiene especifica- ciones de IOH 2 mA e IOL 20 mA. Número máximo de entradas (ALTO) 2 mA/40 A 50. Número máximo de entradas (BAJO) 20 mA/1.8 mA 11.11. Debemos limitar la capacidad de carga a 11 entradas CLR. SECCIÓN 8-5/CAPACIDAD DE CARGA DE LA FAMILIA TTL 513
  • 544. 514 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS FIGURA 8-15 Tres formas de manejar las entradas lógicas sin utilizar. x = AB Desconectada (flotante) +5V (a) (b) (c) x = AB 1 k⍀ x = AB A B A B A B PREGUNTAS DE REPASO 1. ¿Qué factores determinan la clasificación de IOL(máx) de un dispositivo? 2. ¿Cuántas entradas 7407 puede manejar un chip 74AS? 3. ¿Qué puede ocurrir si una salida TTL se conecta a más entradas de compuerta de las que está clasificada para manejar? 4. ¿Cuántas entradas CP 74112 pueden manejarse mediante una salida 74LS04? ¿Mediante una salida 74F00? 8-6 OTRAS CARACTERÍSTICAS DE LA FAMILIA TTL Debemos conocer varias características más de la lógica TTL si queremos utilizar la familia TTL con inteligencia en una aplicación de un sistema digital. Entradas desconectadas (flotantes) Cualquier entrada de un circuito TTL que se deje desconectada (abierta) actúa en forma idéntica a un 1 lógico que se aplique a esa entrada, ya que en cualquier caso la unión base-emisor o diodo en la entrada no se polarizará en forma directa. Esto significa que en cualquier CI TTL, todas las entradas son 1s si no se conectan con alguna señal lógica o a tierra. Cuando una entrada se deja desconectada, se dice que está flotando. Entradas sin utilizar Con frecuencia, no todas las entradas en un CI TTL se utilizan en una aplicación específica. Un ejemplo común es cuando no todas las entradas de una compuerta lógica se necesitan para la función lógica requerida. Por ejemplo, suponga que nece- sitamos la operación lógica AB y que estamos usando un chip con una compuerta NAND de tres entradas. La figura 8-15 muestra las posibles formas de lograr esto. En la figura 8-15(a) la entrada sin utilizar se deja desconectada, lo cual signi- fica que actúa como un 1 lógico. Por lo tanto, la salida de la compuerta NAND es x A B 1 A B, que es el resultado deseado. Aunque la lógica es correcta, no es muy conveniente dejar una entrada desconectada ya que actuará como una antena, con la probabilidad de que recoja señales radiadas dispersas, las cuales podrían pro- vocar que la compuerta opere en forma inapropiada. La figura 8-15(b) muestra una mejor técnica. Aquí la entrada sin utilizar se conecta a 5V por medio de una resis- tencia de 1-k, por lo que el nivel lógico es un 1. La resistencia de 1-k se utiliza sólo por protección contra la corriente de las uniones emisor-base de las entradas de la compuerta, en el caso de que haya picos en la línea de voltaje de alimentación. Esta misma técnica puede utilizarse para las compuertas AND, ya que un 1 en una entrada sin usar no afectará a la salida. Puede haber hasta 30 entradas sin utilizar que compartan la misma resistencia de 1-k conectada a VCC. La figura 8-15(c) muestra una tercera posibilidad, en la que la entrada sin usar se conecta a una entrada que sí se utiliza. Esto es satisfactorio siempre y cuando el circuito que maneja la entrada B no se vaya a exceder de su capacidad de carga.
  • 545. 1 X 2 3 4 Carga en la salida de la compuerta 1 Corriente de carga ALTO 40 μA 20 μA 60 μA 120 μA Compuerta 2 3 4 Total Total Corriente de carga BAJO 0.4 mA 0.4 mA 1.2 mA 2.0 mA Compuerta 2 3 4 FIGURA 8-16 Ejemplo 8-10. EJEMPLO 8-10 Esta técnica puede utilizarse para cualquier tipo de compuerta. En las compuertas OR y NOR, las entradas sin usar no pueden dejarse desconectadas o conectadas a 5 V, ya que esto produciría un nivel lógico de salida constante (1 para OR, 0 para NOR) sin importar las demás entradas. Para estas compuertas las entradas sin utili- zar deben conectarse a tierra (0 V) para un 0 lógico, o conectarse a una entrada que sí se utilice, como en la figura 8-15(c). Entradas conectadas entre sí Cuando dos (o más) entradas TTL en la misma compuerta se conectan entre sí para formar una entrada común, como en la figura 8-15(c), la entrada común, por lo gene- ral, representará una carga que es la suma de la clasificación de corriente de carga de cada entrada individual. La única excepción es para las compuertas NAND y AND. En estas compuertas, la carga de entrada en estado BAJO será la misma que una entrada individual sin importar cuántas entradas se conecten entre sí. Para ilustrar esto, suponga que cada entrada de la compuerta NAND de tres entradas en la figura 8-15(c) tiene una clasificación de 0.5 mA para IIL y de 20 A para IIH. Por lo tanto, la entrada común B representará una carga de entrada de 40 μA en el estado ALTO, pero sólo 0.5 mA en el estado BAJO. Lo mismo se aplicaría si fuera una compuerta AND. Si fuera una compuerta OR o NOR, la entrada común B presentaría una carga de entrada de 40 μA en el estado ALTO y de 1 mA en el estado BAJO. Podemos encontrar la razón de esta característica si analizamos de nuevo el diagrama del circuito de la compuerta NAND TTL en la figura 8-8(b). La corriente IIL está limitada por la resistencia R1. Aún si las entradas A y B estuvieran conecta- das entre sí y aterrizadas, esta corriente no cambiaría; tan sólo se dividiría y fluiría a través de las rutas paralelas proporcionadas por los diodos D2 y D3. La situación es distinta para las compuertas OR y NOR, ya que no utilizan transistores con múlti- ples emisores, sino que tienen un transistor de entrada separado para cada entrada, como vimos en la figura 8-10. Determine la carga que maneja la salida X en la figura 8-16. Suponga que cada com- puerta es un dispositivo de la serie 74LS con IIH 20 A e IIL 0.4 mA. Solución La carga en la salida de la compuerta 1 es equivalente a seis cargas de entrada 74LS en el estado ALTO, pero sólo cinco cargas de entrada 74LS en el estado BAJO, ya que la compuerta NAND representa sólo una carga de entrada individual en el estado BAJO. SECCIÓN 8-6/OTRAS CARACTERÍSTICAS DE LA FAMILIA TTL 515
  • 546. 516 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS EJEMPLO 8-11 Polarización de las entradas TTL en bajo En ocasiones se produce la situación en la que una entrada TTL debe mantenerse, por lo general, en BAJO y después se hace que cambie a ALTO por medio de la actuación de un interruptor mecánico. Esta situación se ilustra en la figura 8-17 para la entrada a un monoestable. Este monoestable se dispara en una transición positiva que ocurre cuando el interruptor se cierra por un instante. La resistencia R sirve para mantener la entrada T en BAJO mientras el interruptor está abierto. Hay que tener cuidado de mantener el valor de R lo bastante bajo como para que el vol- taje que se desarrolle a través de esta resistencia debido a la corriente IIL que fluye hacia fuera de la entrada del monoestable hacia tierra no se exceda de VIL(máx). Así, el valor más grande de R se obtiene mediante (8-3) R debe mantenerse por debajo de este valor para asegurar que la entrada del monoestable se encuentre en un nivel BAJO aceptable mientras el interruptor está abierto. El valor mínimo de R se determina en base al drenado de corriente en la alimentación de 5 V cuando el interruptor se cierra. En la práctica, este drenado de corriente debe minimizarse; para ello hay que mantener a R justo por debajo de Rmáx. Determine un valor aceptable para R si el monoestable es un CI TTL 74LS con una clasificación de IIL de entrada de 0.4 mA. Solución El valor de IIL será un máximo de 0.4 mA. Este valor máximo debe usarse para calcu- lar Rmáx. De la tabla 8-6, VIL(máx) 0.8 V para la serie 74LS. Por lo tanto, tenemos que Aquí una buena elección sería R 1.8 k, un valor de resistencia estándar. Transitorios de corriente Los circuitos lógicos TTL sufren de transitorios o picos de corriente generados en forma interna, debido a la estructura de salida en forma de tótem. Cuando la salida cambia del estado BAJO al estado ALTO (vea la figura 8-18), los dos transistores de salida cambian de estado: Q3 de APAGADO a ENCENDIDO y Q4 de ENCENDIDO a APAGADO. Como Q4 está cambiando de la condición saturada, tardará más tiempo Rmax = VIL(max) IIL IIL * Rmax = VIL(max) ´ ´ ´ ´ +5 V R IIL T Q OS Q Rmáx = ––––––––– VIL (máx) IIL FIGURA 8-17 Rmax = 0.8 V 0.4 mA = 2000 Æ ´
  • 547. FIGURA 8-18 Un pico grande de corriente se drena de VCC cuando una salida en forma de tótem cambia de BAJO a ALTO. +5 V 130 ⍀ ICC Q3 O → ENCENDIDO ENCENDIDO→APAGADO Q4 ICC VSAL CCARGA (a) (b) t 0 De 30 a 50 mA 3.6 V ICC ICCL 0 ICCH t VSAL que Q3 para cambiar de estado. Por lo tanto, hay un intervalo corto de tiempo (cerca de 2 ms) durante la transición de conmutación cuando ambos transistores están con- duciendo y se drena una sobretensión bastante grande de corriente (de 30 a 50 mA) de la alimentación de 5V. La duración de este transitorio de corriente se extiende por los efectos de cualquier capacitancia de carga en la salida del circuito. Ésta consiste de la capacitancia dispersa en el conductor y de la capacitancia de entrada de cualquier circuito de carga, y debe cargarse hasta llegar al voltaje de salida en estado ALTO. Este efecto en general puede sintetizarse de la siguiente manera: Cada vez que una salida TTL en forma de tótem cambia de BAJO a ALTO, se drena un pico de corriente de alta amplitud de VCC. En un circuito o sistema digital complejo, puede haber muchas salidas TTL que cambien de estado al mismo tiempo; cada una de ellas drenará un pico estrecho de corriente de la fuente de energía. El efecto acumulativo de todos estos picos de corriente será producir un pico de voltaje en la línea común de VCC, en gran parte debido a la inductancia distribuida en la línea de alimentación [recuerde que V L(di/dt) para inductancia, y que di/dt es muy grande para un pico de corriente de 2 ns]. Este pico de voltaje puede producir varias fallas graves durante las transiciones de conmutación, a menos que se utilice algún tipo de filtrado. La técnica más común utiliza pequeños capacitores de radiofrecuencia conectados de VCC a TIERRA, en esencia para “poner en corto” estos picos de alta frecuencia. A esto se le conoce como desacoplamiento de fuente de poder. Es práctica común conectar un capacitor de disco de cerámica con baja induc- tancia de 0.01-F o 0.1-F entre VCC y tierra, cerca de cada CI TTL en un circuito impreso. Las terminales del capacitor se deben mantener muy cortas para minimi- zar la inductancia en serie. También es común conectar un capacitor grande individual (de 2 a 20 F) entre VCC y tierra en cada tablero para filtrar las variaciones de una frecuencia relati- vamente baja en VCC, las cuales se producen debido a los grandes cambios en los niveles de ICC a medida que las salidas cambian de estado. SECCIÓN 8-6/OTRAS CARACTERÍSTICAS DE LA FAMILIA TTL 517
  • 548. 518 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS PREGUNTAS DE REPASO 1. ¿Cuál será la salida lógica de una compuerta NAND TTL que tiene todas sus entradas desconectadas? 2. ¿Cuáles son dos formas aceptables de manejar las entradas sin usar de una com- puerta AND? 3. Repita la pregunta 2 para una compuerta NOR. 4. Verdadero o falso: cuando las entradas de una compuerta NAND se conectan entre sí, siempre se tratan como una carga individual en la fuente de la señal. 5. ¿Qué es el desacoplamiento de fuentes de energía? ¿Por qué se utiliza? 8-7 TECNOLOGÍA MOS La tecnología MOS (metal óxido semiconductor) deriva su nombre de la estructura MOS básica de un electrodo metálico sobre un aislante de óxido, sobre un sustrato semiconductor. Los transistores de la tecnología MOS son transistores de efecto de campo, a los cuales se les conoce como MOSFETs. Esto significa que el campo eléc- trico en el lado del electrodo metálico del aislante de óxido tiene un efecto sobre la resistencia del sustrato. La mayoría de los CIs digitales MOS están construidos en su totalidad a partir de MOSFETs y de ningún otro componente. Las principales ventajas del MOSFET son que su fabricación es relativamente simple y económica; es pequeño y consume muy poca energía. La fabricación de los CIs MOS es equivalente a casi una tercera parte de la fabricación de los CIs bipo- lares (TTL, ECL, etc.). Además, los dispositivos MOS ocupan mucho menos espacio en un chip que los transistores bipolares; lo que es más importante: los CIs digitales MOS, por lo general, no utilizan los elementos tipo resistencia de los CIs, que ocupan la mayor parte del área del chip de los CIs bipolares. Todo esto significa que los CIs MOS pueden alojar un número mucho mayor de elementos de circuito en un solo chip, en comparación con los CIs bipolares. Esta ventaja se ilustra mediante el hecho de que los CIs MOS han dominado a los CIs bipolares en el área de la integración a gran escala (LSI, VLSI). La alta densidad de encapsulamiento de los CIs MOS los hace ser en especial muy apropiados para los CIs complejos, tales como los microprocesadores y los chips de memoria. Las mejoras en la tecnología de CIs MOS nos han llevado a idear dispositivos que son más veloces que los dispositivos TTL 74, 74LS y 74ALS, con características de con- trol de corriente comparables. En consecuencia, los dispositivos MOS (en específico, CMOS) también se han convertido en parte dominante del mercado SSI y MSI. La familia TTL 74AS aún sigue siendo tan rápida como los mejores dispositivos CMOS, pero a costa de una disipación de potencia mucho mayor. La principal desventaja de los dispositivos MOS es su susceptibilidad al daño por la electricidad estática. Aunque esto puede minimizarse mediante los proce- dimientos de manejo apropiados, la familia TTL es mucho más resistente para la experimentación en el laboratorio. Por consiguiente, es muy probable que usted vea dispositivos TTL en usos educativos, siempre y cuando estén disponibles. El MOSFET Hasta ahora hay dos tipos generales de MOSFETs: de depleción y de enriquecimiento. Los CIs digitales MOS utilizan sólo MOSFETs de enriquecimiento, por lo que sólo consideraremos este tipo de MOSFETs en el siguiente análisis. Lo que es más, sólo nos preocuparemos por la operación de estos MOSFETs en los interruptores de encen- dido/apagado. La figura 8-19 muestra los símbolos esquemáticos para los MOSFETs de enri- quecimiento de canal N y canal P, en donde la dirección de la flecha indica ya sea el canal P o el canal N. Los símbolos muestran una línea quebrada entre la fuente
  • 549. FIGURA 8-19 Símbolos esquemáticos para los MOSFETs de enriquecimiento. Drenador Compuerta Fuente Canal N Drenador Compuerta Fuente Canal P FIGURA 8-20 MOSFET de canal N que se utiliza como un interruptor: (a) símbolo; (b) modelo del circuito; (c) operación de un inversor N-MOS. APAGADO +5 V +5 V SÍMBOLO MODELO DEL CIRCUITO IDS G S S D 0 V 1010 ⍀ APAGADO R ALTO ALTO G D N BAJO BAJO 100 k⍀ +5 V +5 V IDS S ENCENDIDO ENCENDIDO 10 3 ⍀ +5 V R G D N 100 k⍀ VDD VGS + – G S D (a) (b) (c) y el drenador para indicar que por lo general no hay un canal conductor entre estos dos electrodos. El símbolo también muestra una separación entre la compuerta y las demás terminales para indicar la resistencia muy alta (por lo general, alrededor de 1012 ) de la capa de óxido entre la compuerta y el canal, la cual se forma en el sustrato. Interruptor MOSFET básico La figura 8-20 muestra la operación de conmutación de un MOSFET de canal N, el elemento básico en una familia de dispositivos conocida como N-MOS. Para el dispo- sitivo de canal N, el drenador siempre se polariza en forma directa con respecto a la fuente. El voltaje de compuerta a fuente VGS es el de entrada, el cual se utiliza para controlar la resistencia entre drenador y fuente (es decir, la resistencia del canal), y por lo tanto determina si el dispositivo está encendido o apagado. Cuando VGS 0, no hay un canal conductor entre fuente y drenador, y el disposi- tivo está apagado como se muestra en la figura 8-20(b). Por lo general, la resistencia del canal en este estado APAGADO es de 1010 , que para la mayoría de los fines es un circuito abierto. El MOSFET permanecerá apagado siempre y cuando VGS sea cero o negativo. A medida que VGS se hace positivo (compuerta positiva, relativa a la fuente) se llega a un voltaje de umbral (VT), punto en el cual se comienza a formar SECCIÓN 8-7/TECNOLOGÍA MOS 519
  • 550. 520 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS FIGURA 8-21 MOSFET de canal P utilizado como un interruptor: (a) símbolo; (b) modelo del circuito para ENCENDIDO y APAGADO; (c) circuito inversor P-MOS. APAGADO APAGADO +5 IDS G D D S 10 10 ⍀ ALTO ALTO G S P BAJO R 100 k⍀ 5 V – – (b) (a) (c) VGS = 0 + ENCENDIDO ENCENDIDO +5 IDS G D D S 103 ⍀ G S P BAJO R 100 k⍀ 0 V 0 V VGS = –5 V + + V VG + – G D S VGS – + +5 V V V +5 V un canal conductor entre la fuente y el drenador. Por lo general, VT 1.5V para un N-MOSFET y, por lo tanto, cualquier VGS 1.5V hará que el MOSFET conduzca. Por lo general, se utiliza un valor de VGS mucho mayor que VT para encender el MOSFET en forma más completa. Como se muestra en la figura 8-20(b), cuando VGS 5 V la resistencia del canal entre fuente y drenador cae hasta llegar a un valor de RON 1000 . En esencia, el N-MOS cambiará de una resistencia muy alta a una baja a medida que el voltaje de la compuerta cambie de BAJO a ALTO. Es útil tan sólo pensar en el MOSFET como un interruptor que está abierto o cerrado entre la fuente y el drena- dor. La figura 8-20(c) muestra cómo puede formarse un inversor mediante el uso de un transistor N-MOS como un interruptor. Los primeros dispositivos lógicos N-MOS se construyeron con base en este método. La desventaja de este circuito (al igual que en TTL) es que cuando el transistor está ENCENDIDO, siempre habrá corriente fluyendo de la fuente hacia tierra, con lo que se producirá calor. El MOSFET de canal P (o P-MOS) que se muestra en la figura 8-21(a) opera en forma idéntica al de canal N, sólo que utiliza voltajes de polaridad opuesta. Para los MOSFETs el drenador está conectado al lado inferior del circuito, por lo que se polariza con un voltaje más negativo en forma relativa a la fuente. Para ENCENDER el P-MOSFET, debe aplicarse a la compuerta un voltaje inferior al de la fuente por VT, lo cual significa que el voltaje en la compuerta, con respecto a la fuente, debe ser negativo. La figura 8-21(b) muestra que cuando la compuerta está a 5 V con respecto a tierra (el mismo voltaje que se aplica a la fuente), el transistor está APAGADO y tiene una resistencia muy alta de drenador a fuente. Cuando la compuerta está a 0 V (con respecto a tierra), entonces el voltaje de compuerta a fuente VGS 5 V y ENCIENDE el transistor, con lo cual se reduce su resistencia de drenador a fuente. El circuito de la figura 8-20(c) muestra la acción de conmutación de un inversor que utiliza lógica P-MOS. La tabla 8-8 sintetiza las características de conmutación de los MOSFETs con canal P y N.
  • 551. Q1 Q2 N P G +VDD S + G D D VSAL – S VENT Q1 Q2 VSAL +VDD (1 lógico) 0 V (0 lógico) APAGADO RAPAG = 1010 ⍀ ENCENDIDO RENC = 1 k⍀ ENCENDIDO RENC = 1 k⍀ APAGADO RAPAG = 1010 ⍀ 0 V +VDD VSAL = VENT VENT FIGURA 8-22 INVERSOR CMOS básico. 8-8 LÓGICA DE MOS COMPLEMENTARIO Los circuitos lógicos P-MOS y N-MOS utilizan menos componentes y son mucho más simples de fabricar que los circuitos TTL. Como resultado, comenzaron a dominar los mercados LSI y VLSI en las décadas de 1970 y 1980. Durante esta era surgió una nueva tecnología que utilizaba tanto transistores P-MOS (como interruptores del lado alto) como N-MOS (como interruptores del lado bajo) en el mismo circuito lógico. A esta tecnología se le conoce como MOS complementario, o CMOS. Los cir- cuitos lógicos CMOS no son tan simples y fáciles de fabricar como un P-MOS o un N-MOS, pero son más rápidos, utilizan mucho menos energía y son la tecnología dominante en el mercado actual. Inversor CMOS La figura 8-22 muestra el circuito para el INVERSOR CMOS básico. Para este diagrama y los siguientes, hemos sustituido los símbolos estándar para el MOSFET por bloques etiquetados como P y N para indicar un P-MOS y un N-MOS, respecti- vamente. Esto se hace sólo por conveniencia al analizar los circuitos. El INVERSOR CMOS tiene dos MOSFETs en serie, de manera que el dispositivo de canal P tiene conectada su fuente a VDD (un voltaje positivo) y el dispositivo de canal N tiene su fuente conectada a tierra.* Las compuertas de los dos dispositivos se conectan entre sí para formar una entrada común. Los drenadores de los dos dispositivos se conec- tan entre sí para formar la salida común. Polarización Voltaje de compuerta de drenador a fuente (VGS) necesario a fuente para la conducción RENC () RAPAG () Canal P Negativa Por lo general, más 1000 1010 negativo que 1.5 V (típico) Canal N Positiva Por lo general, más 1000 1010 positivo que +1.5 V (típico) TABLA 8-8 * La mayoría de los fabricantes etiqueta esta terminal como VSS. SECCIÓN 8-8/LÓGICA DE MOS COMPLEMENTARIO 521
  • 552. 522 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS A BAJO BAJO ALTO ALTO B BAJO ALTO BAJO ALTO X ALTO ALTO ALTO BAJO +VDD S G A P D P S D G X = AB S D G N S N B G D FIGURA 8-23 Compuerta NAND CMOS. Los niveles lógicos para CMOS son VDD para el 1 lógico y 0 V para el 0 lógico. Considere primero el caso en el que VENT VDD. En esta situación, la compuerta de Q1 (canal P) está a 0 V con respecto a la fuente de Q1. Por ende, Q1 estará en el estado APAGADO con RAPAG 艐 1010 . La compuerta de Q2 (canal N) estará a VDD con respecto a su fuente. Por ende, Q2 estará encendido con un valor típico de RENC 1 k. El divisor de voltaje entre RAPAG de Q1 y RENC de Q2 producirá VSAL 艐 0 V. Ahora considere el caso en el que VENT 0V. Q1 ahora tiene su compuerta en un potencial negativo con respecto a su fuente, mientras que Q2 tiene VGS 0 V. Por lo tanto, Q1 estará encendido con RENC 1 k y Q2 estará apagado con RAPAG 1010 , y producirá en VSAL un valor aproximado a VDD. En la tabla de la figura 8-22 se sintetizan estos dos estados de operación, en donde se muestra que el circuito actúa como un INVERSOR lógico. Compuerta NAND CMOS Pueden construirse otras funciones lógicas si se modifica el INVERSOR básico. La figura 8-23 muestra una compuerta NAND que se forma al agregar un MOSFET de canal P en paralelo y un MOSFET de canal N en serie al INVERSOR básico. Para analizar este circuito, es útil tener en cuenta que una entrada de 0 V enciende su correspondiente P-MOS y apaga su correspondiente N-MOS, y viceversa, para una entrada de VDD. Así, podemos ver que la única ocasión en que se producirá una salida en BAJO será cuando las entradas A y B estén ambas en ALTO (VDD) para encender ambos N-MOSFETs, con lo cual se proporciona una resistencia baja de la terminal de salida a tierra. Para todas las demás condiciones de entrada, por lo menos, habrá un P-MOS encendido mientras que al menos un N-MOS estará apa- gado. Esto produce una salida en ALTO. Compuerta NOR CMOS Para formar una compuerta NOR CMOS se agrega un P-MOS en serie y un N-MOS en paralelo al INVERSOR básico, como se muestra en la figura 8-24. Una vez más, este circuito puede analizarse si se toma en cuenta que un nivel BAJO en cualquiera de las entradas encenderá su P-MOS correspondiente y apagará su N-MOS corres-
  • 553. A BAJO BAJO ALTO ALTO B BAJO ALTO BAJO ALTO X ALTO BAJO BAJO BAJO +VDD A G P S D G P S D G N S D B S G N D X = A + B FIGURA 8-24 Compuerta NOR CMOS. PREGUNTAS DE REPASO pondiente, y viceversa, para una entrada en ALTO. Dejaremos al lector la opción de verificar que este circuito opere como una compuerta NOR. Para formar compuertas AND y OR CMOS se combinan las compuertas NAND y NOR con INVERSORes. FF SET-RESET CMOS Dos compuertas NOR o NAND CMOS pueden acoplarse en cruz para formar un latch SET-RESET simple. Se utilizan circuitos de compuertas adicionales para convertir el latch SET-RESET básico en flip-flops sincronizados por reloj en D y en J-K. 1. ¿Qué diferencia hay entre los circuitos internos CMOS y los N-MOS? 2. ¿Cuántos MOSFETs de canal P hay en un INVERSOR CMOS? 3. ¿Cuántos MOSFETs hay en una compuerta AND CMOS de tres entradas? 8-9 CARACTERÍSTICAS DE LAS SERIES CMOS Los CIs CMOS no sólo proporcionan todas las mismas funciones lógicas están disponi- bles en TTL, sino también varias funciones de propósito especial que no proporciona TTL. Con el paso de los años se han desarrollado varias series CMOS distintas, ya que los fabricantes han buscado mejorar las características de rendimiento. Antes de anali- zar las diversas series CMOS, será útil definir unos cuantos términos que se utilizan SECCIÓN 8-9/CARACTERÍSTICAS DE LAS SERIES CMOS 523
  • 554. 524 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS cuando se van a utilizar CIs de distintas familias o series en conjunto, o como reem- plazo por otro. ■ Compatibilidad de terminales. Dos CIs tienen terminales compatibles cuando sus configuraciones de terminales son iguales. Por ejemplo, la terminal 7 en ambos CIs es TIERRA, la terminal 1 en ambos es una entrada para el primer INVERSOR, y así en lo sucesivo. ■ Equivalente funcional. Dos CIs son equivalentes funcionales si las funciones lógicas que realizan son idénticas. Por ejemplo, ambos contienen cuatro com- puertas NAND de dos entradas, o ambos contienen seis flip-flops D con disparo en el flanco positivo del reloj. ■ Compatible eléctricamente. Dos CIs son compatibles eléctricamente cuando pueden conectarse en forma directa uno con el otro, sin necesidad de tomar medidas especiales para asegurar su operación correcta. Series 4000/14000 La serie CMOS más antigua es la serie 4000, introducida por primera vez por RCA, y su equivalente funcional, la serie 14000 de Motorola. Los dispositivos en las series 4000/14000 tienen una disipación de potencia muy baja y pueden operar sobre un amplio intervalo de voltajes de alimentación de energía (de 3 a 15 V). Son muy lentos si se les compara con dispositivos TTL y las demás series CMOS, y tienen capacidades de corriente de salida muy bajas. No son compatibles en las termina- les ni compatibles eléctricamente con las series TTL. Los dispositivos de las series 4000/14000 raras veces se utilizan en los nuevos diseños, excepto cuando hay un CI de propósito especial disponible, que no se encuentre disponible en otras series. 74HC/HCT (CMOS de alta velocidad) La serie 74HC tiene un incremento de 10 veces la velocidad de conmutación, en comparación con la de los dispositivos 74LS, y una capacidad de corriente de salida mucho mayor que los primeros CIs de la serie 7400 CMOS. Los CIs 74HC/HCT son compatibles en terminales y equivalentes funcionales de los CIs TTL con el mismo número de dispositivo. Los dispositivos 74HCT son compatibles eléctricamente con TTL,perolosdispositivos74HCno.Porejemplo,estosignificaqueunchipINVERSOR hexadecimal 74HCT04 puede sustituir un chip 74LS04, y viceversa. También signi- fica que un CI 74HCT puede conectarse directamente a cualquier CI TTL. 74AC/ACT (CMOS avanzado) A esta serie se le conoce por lo común como ACL, por lógica CMOS avanzada. La serie es equivalente funcional de las diversas series TTL, pero no es compatible en terminales con TTL ya que las posiciones de las terminales en los chips 74AC o 74ACT se eligieron de manera que se mejorara la inmunidad al ruido, por lo que las entradas de los dispositivos son menos sensibles a los cambios de señal que ocurren en las terminales de otros CIs. Los dispositivos 74AC no son compatibles eléctrica- mente con TTL; los dispositivos 74ACT pueden conectarse directamente a los dispo- sitivos TTL. ACL ofrece ciertas ventajas sobre la serie HC en cuanto a inmunidad al ruido, tiempos de propagación y velocidad máxima del reloj. La numeración de los dispositivos para esta serie difiere un poco de la corres- pondiente para las series TTL, 74C y 74HC/HCT, ya que utiliza un número de dispo- sitivo de cinco dígitos, el cual comienza con los dígitos 11. Los siguientes ejemplos ilustran esto: 74ACT11 293 K 74HCT 293 74AC11 004 K 74HC 04
  • 555. 74AHC/AHCT (CMOS avanzado de alta velocidad) Esta serie de dispositivos CMOS ofrece una ruta de migración natural de la serie HC a las aplicaciones más rápidas, de menor potencia y de control bajo. Los dispositivos en esta serie son tres veces más rápidos y pueden utilizarse como reemplazos direc- tos para los dispositivos de la serie HC. Ofrecen una inmunidad al ruido similar a la serie HC, sin los problemas de sobredisparo/subdisparo que a menudo se asocian con las características de control más altas requeridas para una velocidad compa- rable. Lógica BiCMOS de 5V Varios fabricantes de CIs han desarrollado series lógicas que combinan las mejo- res características de las lógicas bipolar y CMOS; a esto se le conoce como lógica BiCMOS. Las características de baja potencia de CMOS y las características de alta velocidad de los circuitos bipolares se integran para producir una familia lógica con una potencia extremadamente baja y una velocidad en extremo alta. Los CIs BiCMOS no están disponibles en la mayoría de las funciones SSI y MSI, sino que se limitan a funciones que se utilizan en aplicaciones de microprocesadores y de interfase de bus tales como latches, búferes, reforzadores y transceptores. La serie 74BCT (tecnología de interfase de bus BiCMOS) ofrece una reducción del 75 por ciento en consumo de energía en comparación con la familia 74F, mientras mantiene una velocidad y características de control similares. Las piezas en esta serie son compatibles en terminales con las piezas TTL estándar de la industria y operan con niveles lógicos de 5 V estándar. La serie 74ABT (tecnología BiCMOS avanzada) es la segunda generación de dispositivos de interfase de bus BiCMOS. En la sección 8-13 presentaremos los detalles sobre la lógica de la interfase de bus. Voltaje de alimentación Los dispositivos de las series 4000/14000 y 74C operan con valores de VDD que varían entre 3 y 15V, lo cual los hace muy versátiles. Pueden utilizarse en circuitos de bajo voltaje operados por baterías, en circuitos de 5 V estándar y en circuitos en los que se utiliza un voltaje de alimentación más alto para obtener los márgenes de ruido requeridos para su operación en un ambiente con mucho ruido. Las series 74HC/ HCT, 74AC/ACT y 74AHC/AHCT operan a través de un intervalo mucho más estre- cho de voltajes de alimentación, por lo general entre 2 y 6 V. También hay disponibles series lógicas que están diseñadas para operar a vol- tajes menores (por ejemplo, 2.5 o 3.3 V). Cada vez que se interconectan dispositivos que utilizan distintos voltajes de alimentación en el mismo sistema digital, hay que tomar medidas especiales. En la sección 8-10 veremos los dispositivos de bajo vol- taje y las técnicas de integración especiales. Niveles lógicos de voltaje Los niveles de voltaje de entrada y salida son distintos para las diversas series CMOS. La tabla 8-9 lista estos valores de voltaje para las diversas series CMOS, así como para las series TTL. Los valores listados en la tabla suponen que todos los dis- positivos están operando a partir de un voltaje de alimentación de 5 V y que todas las salidas de los dispositivos manejan entradas de la misma familia lógica. Un análisis de esta tabla nos muestra ciertos puntos importantes. En primer lugar, observe que VOL para los dispositivos CMOS está muy cerca de 0 V, y que VOH está muy cerca de 5 V. La razón se debe a que las salidas CMOS no tienen que sumi- nistrar o drenar ninguna cantidad considerable de corriente cuando manejan entra- das CMOS con su resistencia de entrada extremadamente alta (1012 ). Observe además que, con excepción de las series 74HCT y 74ACT, los niveles de voltaje de entrada requeridos son mayores para CMOS que para TTL. Recuerde que las series SECCIÓN 8-9/CARACTERÍSTICAS DE LAS SERIES CMOS 525
  • 556. 526 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS 74HCT y 74ACT están diseñadas para ser compatibles eléctricamente con TTL, por lo que deben poder aceptar los mismos niveles de voltaje de entrada que TTL. Márgenes de ruido En la tabla 8-9 también se proporcionan los márgenes de ruido para cada serie; los cuales se calculan de la siguiente forma: VNH VOH(mín) VIH(mín) VNL VIL(máx) VOL(máx) Observe que, en general, los dispositivos CMOS tienen mayores márgenes de ruido que TTL. La diferencia sería aún mayor si los dispositivos CMOS se operaran a un voltaje de alimentación mayor de 5 V. Disipación de potencia Cuando un circuito lógico CMOS se encuentra en un estado estático (que no cam- bia), su disipación de potencia es en extremo baja. Para ver la razón por la que hay que analizar cada uno de los circuitos de las figuras 8-22 a 8-24. Observe que, sin importar el estado de la salida, siempre hay una resistencia muy alta entre la terminal VDD y tierra debido a que siempre hay un MOSFET apagado en la ruta de la corriente. Esto produce una disipación de potencia de corriente directa típica en el CMOS de sólo 2.5 nW por compuerta cuando VDD 5 V; aún con VDD 10 V, esta potencia se incrementa sólo a 10 nW. Con estos valores para PD es fácil ver por qué CMOS se adapta en forma ideal a las aplicaciones en las que se utiliza energía por medio de baterías o energía de respaldo de baterías. PD se incrementa con la frecuencia La disipación de potencia de un CI CMOS sería muy baja siempre y cuando se encuentre en una condición de corriente directa. Desafortunadamente, PD se incre- mentará en proporción con la frecuencia en la que los circuitos cambian de estado. Por ejemplo, una compuerta NAND CMOS que tiene PD 10 nW bajo condiciones de corriente directa tendrá PD 0.1 mW a una frecuencia de 100 kpps, y de 1 mW a 1 MHz. La razón de esta dependencia en relación con la frecuencia se ilustra en la figura 8-25. Cada vez que una salida CMOS cambia de BAJO a ALTO debe suministrarse una corriente de carga transitoria a la capacitancia de carga, la cual consiste de las capa- citancias de entrada combinadas de todas las cargas que se estén manejando y de la propia capacitancia de salida del dispositivo. Estos picos estrechos de corriente se suministran a través de VDD; pueden tener una amplitud típica de 5 mA y una duración de 20 a 30 ns. Es evidente que a medida que aumenta la frecuencia de TABLA 8-9 Niveles de voltaje de entrada/salida (en volts) con VDD VCC 5 V. CMOS TTL Parámetro 4000B 74HC 74HCT 74AC 74ACT 74AHC 74AHCT 74 74LS 74AS 74ALS VIH(mín) 3.5 3.5 2.0 3.5 2.0 3.85 2.0 2.0 2.0 2.0 2.0 VIL(máx) 1.5 1.0 0.8 1.5 0.8 1.65 0.8 0.8 0.8 0.8 0.8 VOH(mín) 4.95 4.9 4.9 4.9 4.9 4.4 3.15 2.4 2.7 2.7 2.5 VOL(máx) 0.05 0.1 0.1 0.1 0.1 0.44 0.1 0.4 0.5 0.5 0.5 VNH 1.45 1.4 2.9 1.4 2.9 0.55 1.15 0.4 0.7 0.7 0.7 VNL 1.45 0.9 0.7 1.4 0.7 1.21 0.7 0.4 0.3 0.3 0.4
  • 557. P N + VENT – ENCENDIDO APAGADO +5 V ID VSAL CCARGA 5 V 0 V 5 V 0 V VENT VSAL ID 0 FIGURA 8-25 Los picos de corriente se drenan de la alimentación VDD cada vez que la salida cambia de BAJO a ALTO. Esto se debe en su mayor parte a la corriente de carga de la capacitancia de carga. 1 5 pF 5 pF A las demás cargas La salida de la compuerta 1 maneja una CCARGA total de N x 5 pF FIGURA 8-26 Cada entrada CMOS se suma a la capacitancia de carga total que ve la salida de la compuerta reforzadora. conmutación, se producirán más de estos picos de corriente por segundo, y se incre- mentará la corriente actual promedio de VDD. Aún con cargas capacitivas muy bajas hay un punto breve en la transición de BAJO a ALTO o de ALTO a BAJO cuando los dos transistores de salida se encienden en forma parcial. Esto reduce efectivamente la resistencia del voltaje de alimentación a tierra, con lo que se produce también un pico de corriente. Por ende, a frecuencias mayores el circuito CMOS empieza a perder algunas de sus ventajas en comparación con otras familias lógicas. Como regla general, una compuerta C-MOS tendrá la misma PD promedio que una compuerta 74LS a frecuen- cias cercanas de 2 a 3 MHz. Por encima de estas frecuencias también se incrementa la potencia de TTL con la frecuencia, debido a la corriente requerida para invertir la carga en la capacitancia de carga. Para los chips MSI, la situación es algo más compleja de como la describimos aquí, por lo que un diseñador lógico tendrá que realizar un análisis detallado para determinar si CMOS tiene o no una ventaja en cuanto a la disipación de potencia a una frecuencia de operación específica. Capacidad de carga Al igual que N-MOS y P-MOS, las entradas CMOS tienen una resistencia en extremo grande (1012 ), la cual en esencia no drena corriente de la alimentación de la señal. No obstante, cada entrada CMOS presenta, por lo general, una carga de 5 pF a tie- rra. Esta capacitancia de entrada limita el número de entradas CMOS que puede SECCIÓN 8-9/CARACTERÍSTICAS DE LAS SERIES CMOS 527
  • 558. 528 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS manejar una salida CMOS (vea la figura 8-26). La salida CMOS debe cargar y des- cargar la combinación en paralelo de todas las capacitancias de entrada, de forma que se incremente el tiempo de conmutación de la salida en proporción al número de cargas que se controlan. Por lo general, cada carga CMOS incrementa el tiempo de propagación del circuito reforzador por 3 ns. Por ejemplo, la compuerta NAND 1 en la figura 8-26 podría tener un tPLH de 25 ns si no manejara cargas; esto se incre- mentaría a 25 ns 20(3 ns) 85 ns si tuviera veinte cargas. Así, la capacidad de carga CMOS depende del máximo tiempo de propagación permisible. Por lo general, las salidas CMOS están limitadas a una capacidad de carga de 50 para la operación en baja frecuencia (1 MHz). Desde luego que para la operación a frecuencias más altas, la capacidad de carga tendría que ser menor. Velocidad de conmutación Aunque los dispositivos CMOS al igual que N-MOS y P-MOS, tienen que controlar capacitancias de carga relativamente grandes, su velocidad de conmutación es un poco más rápida debido a su baja resistencia de salida en cada estado. Una salida N- MOS debe cargar la capacitancia de carga a través de una resistencia relativamente grande (100-k). En el circuito CMOS, la resistencia de salida en el estado ALTO es la RENC del P-MOSFET, que, por lo general, es de 1 k o menor. Esto permite una carga más rápida de la capacitancia de carga. Por lo general, una compuerta NAND de la serie 4000 tiene un tpd promedio de 50 ns a VDD 5 V, y de 25 ns a VDD 10 V. La razón de la mejora en tpd a medida que se incrementa VDD es que la RENC en los MOSFETs se reduce en forma considerable a voltajes de alimentación más alto. Por lo tanto, parece ser que VDD debería hacerse lo más grande posible para la operación a frecuencias más altas. No obstante, el valor de VDD más grande producirá un aumento en la disipación de potencia. Una compuerta NAND ordinaria en la serie 74HC o 74HCT tiene un tpd prome- dio aproximado de 8 ns cuando se opera a VDD 5 V. Una compuerta NAND 74AC/ ACT tiene un tpd promedio aproximado de 4.7 ns. Una compuerta NAND 74AHC tiene un tpd promedio aproximado de 4.3 ns. Entradas sin utilizar Las entradas CMOS nunca se deben dejar desconectadas. Todas las entra- das CMOS deben conectarse ya sea a un nivel de voltaje fijo (0 V o VDD) o a otra entrada. Esta regla se aplica incluso a las entradas de las compuertas lógicas adicionales que no se utilicen en un chip. Una entrada CMOS desconectada está susceptible al ruido y las cargas estáticas que podrían polarizar fácilmente los MOSFETs de canal P y de canal N en el estado conductivo, lo cual produciría un aumento en la disipación de potencia y un posible sobrecalentamiento. Sensibilidad estática Todos los dispositivos electrónicos, en mayor o menor grado, son sensibles al daño debido a la electricidad estática. El cuerpo humano es un excelente almacén de cargas electrostáticas. Por ejemplo, cuando usted camina a lo largo de una carpeta puede acumularse en su cuerpo una carga estática de más de 30,000 V. Si después toca un dispositivo electrónico, parte de esta carga puede llegar a transferirse al dispositivo. Las familias lógicas MOS (y todos los MOSFETs) son en especial sus- ceptibles al daño por carga electrostática. Toda esta diferencia de potencial (carga estática) que se aplica a través de la película de óxido sobrepasa la capacidad de
  • 559. aislamiento dieléctrico de la película. Cuando se rompe, el flujo de corriente resul- tante (descarga) es como un golpe de rayo, el cual hace un hoyo en la capa de óxido y daña el dispositivo en forma permanente. La descarga electrostática (ESD) es responsable de los billones de dólares de daños a equipos electrónicos que se gastan por año, por lo que los fabricantes de equipo han dedicado una gran parte de su atención al desarrollo de procedimientos de manejo especial para todos los dispositivos y circuitos electrónicos. Aún y cuando la mayoría de los CIs modernos tienen redes de resistencias-diodos dentro del chip para proteger las entradas y las salidas de los efectos de la ESD, la mayoría de los laboratorios de ingeniería, las instalaciones de producción y los departamentos de servicio en el campo utilizan las siguientes precauciones: 1. Conecte el chasis de todos los instrumentos de prueba, las puntas de los cauti- nes y su banco de trabajo (si es de metal) a tierra física (es decir, la terminal redonda en el enchufe de 120 VAC). Esto evita la acumulación de carga estática en estos dispositivos, la cual podría transferirse a cualquier tablero de circuitos o CI con el que pudieran tener contacto. 2. Conéctese usted mismo a tierra física con una muñequera especial. Esto permi- tirá que las cargas potencialmente dañinas de su cuerpo se descarguen a tierra. La muñequera contiene una resistencia de 1-M que limita la corriente a un valor no letal, en caso de que usted toque por accidente un voltaje “vivo” mien- tras trabaja con el equipo. 3. Mantenga los CIs (en especial los MOS) en espuma conductora o en papel alu- minio. Esto mantendrá todas las terminales del CI en corto, de manera que no puedan desarrollarse voltajes peligrosos entre dos terminales cualesquiera. 4. Evite tocar las terminales del CI e insértelo en el circuito justo después de removerlo de la caja protectora. 5. Coloque cintas para poner en corto los conectores de los bordes de las tarjetas de PC cuando los cargue o los transporte. Evite tocar los conectores del borde. Almacene los tableros de PC en plástico conductor o en sobres metálicos. 6. No deje entradas de CI sin usar desconectadas, ya que las entradas abiertas tienden a atraer cargas estáticas dispersas. Efecto de cierre Debido a la existencia inevitable de transistores PNP y NPN parásitos (indeseables) integrados en el sustrato de los CIs CMOS, puede producirse una condición cono- cida como efecto de cierre bajo ciertas circunstancias. Si estos transistores parásitos en un chip CMOS se disparan y empiezan a conducir, se cerrarán (permanecerán ENCENDIDOS en forma permanente) y podría fluir una corriente muy grande, con lo que se destruiría el CI. La mayoría de los CIs CMOS modernos están diseña- dos con circuitos de protección que ayudan a prevenir el efecto de cierre, pero de todas formas puede llegar a ocurrir cuando se exceden las clasificaciones de vol- taje máximo del dispositivo. El efecto de cierre puede dispararse mediante picos de alto voltaje o sobretiros de voltaje en las entradas y salidas del dispositivo. Pueden conectarse diodos fijadores de nivel de manera externa para proteger el dispositivo contra los transitorios, en especial cuando los CIs se utilizan en ambientes indus- triales en los que se lleva a cabo la conmutación de cargas en alto voltaje y/o alta corriente (controladores de motores, relevadores, etc.). Una fuente de energía bien regulada minimizará los picos en la línea VDD; si la fuente también tiene limitación de corriente, limitará la corriente en caso de que ocurra el efecto de cierre. Las técnicas de fabricación de CMOS modernas han reducido en forma considerable la susceptibilidad del CI al efecto de cierre. SECCIÓN 8-9/CARACTERÍSTICAS DE LAS SERIES CMOS 529
  • 560. 530 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS PREGUNTAS DE REPASO 1. ¿Cuál de las series CMOS tiene compatibilidad de terminales con TTL? 2. ¿Cuál de las series CMOS es compatible eléctricamente con TTL? 3. ¿Cuál de las series CMOS es equivalente funcional de TTL? 4. ¿Qué familia lógica combina las mejores características de las lógicas CMOS y bipolar? 5. ¿Qué factores determinan la capacidad de carga de CMOS? 6. ¿Qué precauciones hay que tomar cuando se manejan CIs CMOS? 7. ¿Cuál de las familias de CIs (CMOS,TTL) es la que mejor se adapta a las aplica- ciones operadas por baterías? 8. Verdadero o falso: (a) El drenado de energía de CMOS aumenta con la frecuencia de operación. (b) Las entradas CMOS que no se utilicen pueden dejarse desconectadas. (c) TTL se adapta mejor que CMOS para la operación en ambientes con mucho ruido. (d) La velocidad de conmutación de CMOS aumenta con la frecuencia de ope- ración. (e) La velocidad de conmutación de CMOS aumenta con el voltaje de alimenta- ción. (f) La condición de efecto de cierre es una ventaja de CMOS sobre TTL. 8-10 TECNOLOGÍA DE BAJO VOLTAJE Los fabricantes de CIs están continuamente buscando formas de colocar dispositi- vos semiconductores (diodos, resistencias, transistores, etc.) lo más junto posible en un chip; es decir, buscan incrementar la densidad del chip. Esta mayor densidad tiene cuando menos dos beneficios principales. En primer lugar, permite encapsular más circuitos en el chip; en segundo lugar, como los circuitos están más cerca unos de otros, el tiempo para que las señales se propaguen de un circuito a otro dismi- nuirá, con lo cual se mejorará la velocidad de operación del circuito en general. También hay desventajas en cuanto a tener una mayor densidad de chip. Cuando los circuitos se colocan más juntos, el material aislante que separa un circuito de otro es más estrecho. Esto reduce la cantidad de voltaje que puede soportar el circuito antes de que se produzca un rompimiento dieléctrico. Al aumentar la densidad del chip se aumenta la disipación de potencia total del chip, con lo cual se puede elevar la temperatura del chip por encima del máximo nivel permitido para una operación confiable. Estas desventajas se pueden neutralizar si el chip se opera a niveles de voltaje mejores, con lo cual se reduce la disipación de potencia. Varias series lógicas en el mercado operan con 3.3 V. Las series más recientes están optimizadas para operar con 2.5 V. Esta tecnología de bajo voltaje podría muy bien significar el comienzo de una transición gradual en el campo de equipos digitales, en la que en un momento dado todos los CIs digitales operarán a partir de un nuevo estándar de bajo voltaje. En la actualidad, los dispositivos de bajo voltaje están diseñados para aplicacio- nes que varían desde los juegos electrónicos hasta las estaciones de trabajo de inge- niería. Las CPUs más recientes son dispositivos de 2.5V, y los chips de RAM dinámica de 3.3 V se utilizan en módulos de memoria para computadoras personales. Actualmente existen varias series lógicas de bajo voltaje; desafortunadamente no nos es posible cubrir aquí todas las familias y series de todos los fabricantes, por lo que sólo describiremos las que ofrece actualmente Texas Instruments. Familia CMOS ■ La serie 74VLC (CMOS de bajo voltaje) contiene el surtido más amplio de las conocidas compuertas SSI y funciones MSI de las familias de 5 V, junto con
  • 561. muchos dispositivos de interfase de bus tales como búferes, latches, reforzado- res, etcétera. Esta serie puede manejar niveles lógicos de 5-V en sus entradas, por lo que puede realizar conversiones de sistemas de 5-V a sistemas d 3-V. Siempre y cuando el control de corriente se mantenga lo suficientemente bajo como para mantener el voltaje de salida dentro de los límites aceptables, la serie 74VLC también podrá manejar entradas TTL de 5 V. Los requerimientos de entrada de VIH de piezas CMOS de 5-V tales como la serie 74HC/AHC no per- miten que los dispositivos LVC los controlen. ■ En la actualidad, la serie 74ALVC (CMOS avanzado de bajo voltaje) ofrece el ren- dimiento más alto. Los dispositivos de esta serie están diseñados principalmente para aplicaciones de interfase de bus en las que se utilice sólo lógica de 3.3 V. ■ La serie 74LV (Bajo voltaje) ofrece tecnología CMOS y muchas de las compuertas SSI y funciones lógicas MSI comunes, junto con algunos búferes octales populares, latches y flip-flops. Está diseñada para operar sólo con otros dispositivos de 3.3V. ■ La serie 74AVC (CMOS avanzado de muy bajo voltaje) se introdujo teniendo en mente los sistemas del mañana. Está optimizada para sistemas de 2.5 V, pero puede operar con voltajes de alimentación con valores tan bajos como 1.2 V o de hasta 3.3 V. Este amplio intervalo de voltaje de alimentación la hace útil en sistemas con voltajes mixtos.Tiene tiempos de propagación de menos de 2 ns, lo cual hace de esta serie un digno rival de los dispositivos bipolares 74AS. Tiene muchas de las características de interfase de bus de las series BiCMOS que la harán útil en futuras generaciones de estaciones de trabajo de bajo voltaje, PCs, redes y equipo de telecomunicaciones. ■ La serie 74AUC (CMOS avanzado de ultra bajo voltaje) está optimizada para ope- rar a niveles lógicos de 1.8 V. ■ La serie 74AUP (Ultra baja potencia avanzada) es la serie lógica de menor poten- cia de la industria y se utiliza en aplicaciones portátiles, operadas por baterías. ■ La serie 74CBT (Tecnología de interconexión cruzada) ofrece circuitos de interfase de bus de alta velocidad que pueden conmutar con rapidez cuando se habilitan, y no cargan el bus cuando se deshabilitan. ■ La serie 74CBTLV (Tecnología transversal de bajo voltaje) es el complemento de 3.3 V para la serie 74CBT. ■ La serie 74GTLP (Lógica de transceptor de disparo Plus) está hecha para aplicacio- nes de segundo plano en paralelo de alta velocidad. Veremos esta serie en una sección posterior del libro. ■ La serie 74SSTV (Lógica terminada en series de acomplamiento) es útil en los sis- temas de memoria avanzada de alta velocidad de las computadoras modernas. ■ La serie Interruptor TS (Interruptor de señal TI) está hecha para aplicaciones de señales mixtas y ofrece algunas soluciones de conmutación analógica y digital, y de multiplexeo. ■ La serie 74TVC (Circuito de sujeción de traducción de voltaje ) se utiliza para pro- teger las entradas y salidas de los dispositivos sensibles contra el exceso de voltaje en las líneas de bus. Familia BiCMOS ■ La serie 74LVT (Tecnología BiCMOS de bajo voltaje) contiene piezas BiCMOS que están diseñadas para aplicaciones de interfase de bus de 8 bits y de 16 bits. Al igual que en la serie LVC, las entradas pueden manejar niveles lógicos de 5 V y sirven como un traductor de 5 V a 3 V. Como los niveles de salida [VOH(mín) y VOL(máx)] son equivalentes a los niveles TTL, son totalmente compatibles eléc- tricamente con TTL. La tabla 8-10 compara las diversas características. ■ La serie 74ALVT (Tecnología BiCMOS avanzada de bajo voltaje) es una mejora en relación con la serie LVT. Ofrece la operación con 3.3 V o 2.2 V a 3 ns y sus terminales son compatibles con las de las series ABT y LVT existentes.También está diseñada para aplicaciones de interfase de bus. SECCIÓN 8-10/TECNOLOGÍA DE BAJO VOLTAJE 531
  • 562. 532 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS Introducción AUP TS Switch AUC SSTV Little Logic TVC CBTLV AHC LVT ABT VME GTLP AVC ALVT ALVC LVC LV CBT ACL FCT HC CD4000 BCT ALS F AS LS TTL S Crecimiento 2005 1996 1985 1981 1964 Madurez Decaimiento Obsolescencia Bipolar CMOS BiCMOS FIGURA 8-27 Ciclo de vida de los productos lógicos. (Cortesía de Texas Instruments.) ■ La serie 74ALB (BiCMOS avanzada de bajo voltaje) está diseñada para aplicacio- nes de interfase de bus de 3.3 V. Proporciona un control de salida de 25 mA y tiempos de propagación de sólo 2.2 ns. ■ La serie 74VME (Módulo VERSA Eurocard) está diseñada para operar con la tec- nología de bus VME estándar. Los técnicos e ingenieros en servicios digitales ya no pueden suponer que todos los CIs en un circuito, sistema o pieza de equipo digital está operando a 5, y deben estar preparados para tratar con las consideraciones de interfase necesarias en los sistemas de voltajes mixtos. Las habilidades de integración que usted aprenderá en este capítulo le permitirán lograr esto, sin importar lo que se desarrolle a medida que se vuelvan más comunes los sistemas de bajo voltaje. El continuo desarrollo de la tecnología de bajo voltaje promete provocar una completa revolución desde el sistema original de 5 V, a los sistemas de voltajes mix- tos y, finalmente, a los sistemas digitales puros de 3.3V, de 2.5V o incluso de voltajes más bajos. Para poner todo esto en perspectiva, en la figura 8-27 se muestra la per- cepción de Texas Instruments del ciclo de vida de las diversas familias lógicas. TABLA 8-10 Características de las series de bajo voltaje. LV ALVC AVC ALVT ALB VCC (recomendado) 2.7–3.6 2.3–3.6 1.65–3.6 2.3–2.7 3–3.6 TPD (ns) 18 3 1.9 3.5 2 VIH (V) De 2 a VCC 0.5 De 2 a 4.6 De 1.2 a 4.6 De 2 a 7 D 2.2 a 4.6 VIL (V) 0.8 0.8 0.7 0.8 0.6 IOH (mA) 6 12 8 32 25 IOL (mA) 6 12 8 32 25
  • 563. PREGUNTAS DE REPASO 1. ¿Cuáles son las dos ventajas de los CIs de mayor densidad? 2. ¿Cuáles son las desventajas? 3. ¿Cuál es el mínimo voltaje en ALTO en la entrada de un 74LVT? 4. ¿Cuál de las series de bajo voltaje puede trabajar sólo con otros CIs de series de bajo voltaje? 5. ¿Cuál de las series de bajo voltaje es totalmente compatible eléctricamente con TTL? 8-11 SALIDAS DE COLECTOR ABIERTO/DRENADOR ABIERTO Algunas veces, varios dispositivos digitales comparten el uso de un solo conductor para poder transmitir una señal hacia algún dispositivo de destino, en forma muy parecida a como los vecinos comparten la misma calle. Esto significa que varios dis- positivos deben tener sus salidas conectadas al mismo conductor, lo que en esencia los conecta a unos con otros. Para todos los dispositivos lógicos que hemos conside- rado hasta ahora, esto representa un problema. Cada salida tiene dos estados, ALTO y BAJO. Cuando una salida está en ALTO mientras la otra está en BAJO y cuando se conectan juntas tenemos un conflicto ALTO/BAJO. ¿Cuál de los dos ganará? Al igual que las vencidas, el más fuerte de los dos es el que ganará. En este caso, el circuito de transistores cuyo transistor de salida tenga la resistencia en “ENCENDIDO” más baja arrastrará el voltaje de salida hacia su dirección. La figura 8.28 muestra un diagrama de bloques genérico de dos dispositivos lógicos con sus salidas conectadas a un conductor común. Si los dos dispositivos lógicos fue- ran CMOS, entonces la resistencia en ENCENDIDO del circuito de puesta en alto que produzca el nivel ALTO como salida sería aproximadamente igual a la resisten- cia en ENCENDIDO del circuito de puesta en bajo que produzca el nivel BAJO como salida. El voltaje en el conductor común será de un valor aproximado a la mitad del voltaje de alimentación. Este voltaje se encuentra en el intervalo indeterminado para la mayoría de las series CMOS y es inaceptable para manejar una entrada CMOS. Lo que es más, la corriente a través de los dos MOSFETs conductores será mucho mayor de lo normal, en especial con valores más altos de VDD, y podría dañar los CIs. Las salidas CMOS convencionales nunca deben conectarse juntas. Si los dos dispositivos fueran salidas TTL en forma de tótem como se muestra en la figura 8-29, se produciría una situación similar pero con distintos resultados Puesta en alto ENCENDIDO APAGADO Puesta en bajo ENCENDIDO APAGADO +V +V Compuerta A Compuerta B Llevando el conductor a ALTO Conductor común Arrastrando el conductor a BAJO S o n d a l ó g i c a I n d e t e r m i n a d o FIGURA 8-28 Dos salidas que luchan por el control de un conductor. SECCIÓN 8-11/SALIDAS DE COLECTOR ABIERTO/DRENADOR ABIERTO 533
  • 564. 534 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS FIGURA 8-29 Las salidas en forma de tótem que se conectan juntas pueden producir una corriente dañina a través de Q4. COMPUERTA A Q4A Q3A ENCENDIDO 130 ⍀ +5 V APAGADO APAGADO ENCENDIDO Q4B Q3B COMPUERTA A +5 V X debido a la diferencia en los circuitos de salida. Suponga que la salida de la com- puerta A se encuentra en el estado ALTO (Q3A ENCENDIDO, Q4A APAGADO) y que la salida de la compuerta B se encuentra en el estado BAJO (Q3B APAGADO, Q4B ENCENDIDO). En esta situación, Q4B representa una carga de muy baja resistencia en Q3A y drenará una corriente mucho mayor de la que está clasificado para manejar. Esta corriente podría no dañar de inmediato a Q3A o Q3B, pero durante un periodo de tiempo podría causar un sobrecalentamiento y deterioro en el rendimiento, con la eventual falla del dispositivo. Otro problema que se produce por esta corriente relativamente alta que fluye a través de Q4B es que producirá una caída mayor de voltaje a través del colector emisor del transistor y el valor de VOL estaría entre 0.5 y 1 V. Esto es mayor que el VOL(máx) permisible. Por estas razones: Las salidas TTL en forma de tótem nunca deben conectarse juntas. Salidas de colector abierto/drenador abierto Una solución al problema de compartir un conductor común entre compuertas es remover el transistor de puesta en alto activo del circuito de salida de cada com- puerta. De esta forma, ninguna de las compuertas tratará siquiera de asegurar un nivel ALTO lógico. Las salidas TTL que están modificadas de esta forma se llaman salidas de colector abierto. Los circuitos CMOS de salida que se modifican de esta forma se llaman salidas de drenador abierto. La salida se toma en el drenador del MOSFET de puesta en bajo de canal N, el cual es un circuito abierto (es decir, no está conectado a ningún otro circuito). El equivalente de TTL se llama salida de colector abierto ya que el colector del transistor inferior en el tótem se conecta en forma directa a la terminal de salida y en ninguna otra parte, como se muestra en la figura 8-30(a). La estructura de colec- tor abierto elimina los transistores de puesta en alto Q3, D1 y R4. En el estado BAJO de salida, Q4 está ENCENDIDO (tiene corriente de base y en esencia es un corto entre colector y emisor); en el estado ALTO de salida, Q4 está APAGADO (no tiene corriente de base y es en esencia un circuito abierto entre colector y emisor). Como este circuito no tiene una forma interna de elevar la salida a ALTO, el diseñador del circuito debe conectar una resistencia de puesta en alto externa RP a la salida, como se muestra en la figura 8-30(b). Cuando Q4 está ENCENDIDO, lleva el voltaje de salida a BAJO. Cuando Q4 está APAGADO, RP lleva la salida de la compuerta a ALTO. Observe que sin la resistencia
  • 565. FIGURA 8-30 (a) Circuito TTL de colector abierto; (b) con resistencia de puesta en alto externa. Salida RP (externa) +5 V Q4 – Salida Q4 Q2 R2 +5 V R3 Q1 R1 + Estados de operación Q4 ENCENDIDO → VO = VOL聿 0.4V (b) (a) VO Q4 APAGADO → VO =VOH = +5 V +5 V 10 k⍀ A B C Salida = A • B • C A B C Simboliza la conexión AND alambrada 74LS05 (colector abierto) o 74HC05 (drenador abierto) FIGURA 8-31 Operación AND alambrado mediante el uso de compuertas de colector abierto. de puesta en alto, el voltaje de salida sería indeterminado (flotante). El valor de la resistencia RP se elije, por lo general, de forma que sea 10 k. Este valor es lo bas- tante pequeño como para que, en el estado ALTO, la caída de voltaje a través de la resistencia debido a la corriente de carga no reducirá el voltaje de salida por debajo del VOH mínimo. Es lo bastante grande como para que, en el estado BAJO, limite la corriente que pasa a través de Q4 a un valor por debajo de IOL(máx). Cuando varias compuertas de colector abierto o de drenador abierto comparten una conexión común, como se muestra en la figura 8-31, el conductor común está en ALTO de manera predeterminada, debido a la resistencia de puesta en alto. Cuando cualquiera (una o más) de las salidas de las compuertas lo lleva a BAJO, los 5V caen SECCIÓN 8-11/SALIDAS DE COLECTOR ABIERTO/DRENADOR ABIERTO 535
  • 566. 536 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS J CLK K Q Q 74LS112 *El transistor se muestra para fines ilustrativos 7406 * +24 V 24 V, 25 mA + – VO FIGURA 8-32 Un búfer/reforzador de colector abierto controla una carga con alta corriente y alto voltaje. a través de RP y la conexión común se encuentra en el estado BAJO. Como la salida común está en ALTO sólo cuando todas las salidas se encuentran en el estado ALTO, si se conectan las salidas de esta forma se implementa en forma básica la función AND lógica. A ésta se le conoce como conexión AND alambrada y se muestra en forma simbólica mediante el símbolo de compuerta AND punteado. En realidad ahí no hay una compuerta AND. Una compuerta AND alambrada sólo puede implemen- tarse con dispositivos lógicos TTL de colector abierto y CMOS de drenador abierto. Para sintetizar, los circuitos de colector abierto/drenador abierto no pueden hacer que sus salidas estén en ALTO; sólo pueden llevarlas a BAJO. Podemos uti- lizar esta característica para permitir que varios dispositivos compartan el mismo conductor para transmitir un nivel lógico a otro dispositivo, o para combinar las salidas de los dispositivos con efectividad, en una función AND lógica. Como dijimos antes, el propósito del transistor de puesta en alto activo en el circuito de salida de las compuertas convencionales es cargar con rapidez la capacitancia de carga y per- mitir una conmutación más rápida. Los dispositivos de colector abierto y drenador abierto tienen una velocidad de conmutación mucho más lenta de BAJO a ALTO y en consecuencia no se utilizan en aplicaciones de alta velocidad. Búfer/Reforzadores de colector abierto/drenador abierto Las aplicaciones de las salidas de colector/drenador abierto que hemos descrito se utilizaban más en los primeros días de los circuitos lógicos de lo que se emplean actualmente. Un uso más común de estos circuitos ahora es como un búfer/reforza- dor. Un búfer o reforzador es un circuito lógico que está diseñado para tener una mayor capacidad de corriente y/o voltaje de salida que un circuito lógico ordinario. Estos dispositivos permiten que un circuito de salida más débil controle una carga pesada. Los circuitos de colector/drenador abierto ofrecen cierta flexibilidad única como búfer/reforzadores. Debido a sus especificaciones altas de IOL y VOH, el 7406 y el 7407 son los únicos dispositivosTTL estándar que aún se recomiendan para nuevos diseños. El 7406 es un CI búfer/reforzador de colector abierto, que contiene seis INVERSORes con salida de colector abierto que pueden drenar hasta 40 mA en el estado BAJO. Además, el 7406 puede manejar voltajes de salida de hasta 30 V en el estado ALTO. Esto signi- fica que la salida puede conectarse a una carga que opere con un voltaje mayor de 5V. En la figura 8-32 se ilustra este caso, en donde se utiliza un 7406 como búfer entre un flip-flop 74LS112 y una lámpara incandescente con valores nominales de 24V, 25 mA. El 7406 controla el estado ENCENDIDO/APAGADO de la lámpara para indicar el estado de la salida Q del FF. Observe que la lámpara se energiza a través de 24V y actúa como resistencia de puesta en alto para la salida de colector abierto. Cuando Q 1 la salida del 7406 cambia a BAJO, su transistor de salida drena los 25 mA de corriente de la lámpara que suministra la fuente de 24 V y la lámpara se enciende. Cuando Q 0 el transistor de salida del 7406 se apaga; no hay camino para la corriente y la lámpara se apaga. En este estado aparecerán todos los 24 V a
  • 567. FIGURA 8-34 Notación IEEE/ANSI para salidas de colector abierto y drenador abierto. 74LS01 7406 través del transistor de salida APAGADO, de manera que VOH 24V, un valor menor que la clasificación máxima de VOH para el 7406. Las salidas de colector abierto se utilizan con frecuencia para controlar LEDs indicadores, como se muestra en la figura 8-33(a). La resistencia se utiliza para limi- tar la corriente a un valor seguro. Cuando la salida del INVERSOR está en BAJO, su transistor de salida proporciona una ruta de baja resistencia a tierra para la corriente del LED, por lo que éste se enciende. Cuando la salida del INVERSOR está en ALTO, su transistor de salida está apagado y no hay ruta para la corriente del LED; en este estado, el LED se apaga. El 7407 es un búfer no inversor de colector abierto, con las mismas clasificacio- nes de voltaje y corriente que un 7406. El 74HC05 es un inversor hexadecimal de colector abierto con capacidad de drenar 25 mA de corriente. La figura 8-33(b) muestra una forma de integrar un FF- D 74AHC74 con un relevador de control, el cual es un interruptor electromagnético. Los contactos se cierran magnéticamente cuando la corriente nominal fluye a través de la bobina. El 74HC05 puede manejar el voltaje y corriente relativamente altos del relevador, de manera que la salida del 74AHC74 pueda encender y apagar el relevador. Símbolo IEEE/ANSI para salidas de colector/drenador abierto La nueva simbología IEEE/ANSI utiliza una notación distinta para identificar sali- das de colector/drenador abierto. La figura 8-34 muestra la designación IEEE/ANSI estándar para una salida de colector/drenador abierto. Es un diamante subrayado. Aunque por lo general no utilizaremos la simbología IEEE/ANSI completa en este libro, sí usaremos este diamante subrayado para indicar salidas de colector abierto y drenador abierto. FIGURA 8-33 (a) Una salida de colector abierto puede usarse para controlar un indicador de LED; (b) una salida CMOS de colector abierto. +5 V RS 7406 Q D Q 74HCT74 (a) +12 V 74HC05 Q D Q 74AHC74 (b) 12 V 20 mA Bobina SECCIÓN 8-11/SALIDAS DE COLECTOR ABIERTO/DRENADOR ABIERTO 537
  • 568. 538 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS PREGUNTAS DE REPASO 1. ¿Cuándo ocurre un conflicto ALTO/BAJO? 2. ¿Por qué no deben conectarse juntas las salidas en forma de tótem? 3. ¿Qué diferencia hay entre las salidas de colector abierto y las salidas en forma de tótem? 4. ¿Por qué las salidas de colector abierto necesitan una resistencia de puesta en alto? 5. ¿Cuál es la expresión lógica para la conexión AND alambrada de seis salidas de 7406? 6. ¿Por qué las salidas de colector abierto son, por lo general, más lentas que las salidas en forma de tótem? 7. ¿Cuál es el símbolo IEEE/ANSI para las salidas de colector abierto? 8-12 SALIDAS LÓGICAS TRIESTADO (TRES ESTADOS) La configuración triestado es un tercer tipo de circuitos de salida que se utilizan en las familias TTL y CMOS. Aprovechan la operación de alta velocidad del arreglo de salida puesta en alto/puesta en bajo, al tiempo que permite conectar las salidas juntas para compartir un conductor común. Se llama triestado porque permite tres posibles los estados de salida: ALTO, BAJO y alta impedancia (Hi-Z). El estado Hi-Z es una condición en la que tanto el transistor de puesta en alto como el de puesta en bajo se APAGAN, de forma que la terminal de salida sea una alta impedancia tanto para tierra como para el voltaje de alimentación V. La figura 8-35 ilustra estos tres estados para un circuito inversor simple. Los dispositivos con salidas triestado tienen una entrada de habilitación.A menudo esta entrada se etiqueta como E (habilita) o como OE (habilita salida). Cuando OE 1, como se muestra en las figuras 8-35(a) y (b), el circuito opera como INVERSOR normal, ya que el nivel lógico ALTO en OE habilita la salida. Ésta se encontrará en ALTO o en BAJO, dependiendo del nivel de entrada. Cuando OE 0, como se muestra en la figura 8-35(c), la salida del circuito se deshabilita. Cambia a su estado Hi-Z con ambos transistores en el estado no conductor. En este estado, la terminal de salida es en esencia un circuito abierto (no está conectada a nada). Ventaja de las salidas triestado Las salidas de los CIs triestado pueden conectarse juntas (comparten el uso de un conductor común) sin sacrificar la velocidad de conmutación, ya que cuando se habi- lita una salida triestado opera como una salida en forma de tótem para TTL, o como ALTO BAJO +V OE = 1 habilitada (a) BAJO ALTO OE = 1 habilitada (b) Hi-Z ALTO o BAJO OE = 0 deshabilitada (c) +V +V APA- GADO ENCEN- DIDO APA- GADO ENCEN- DIDO APA- GADO APA- GADO FIGURA 8-35 Las tres posibles condiciones de una salida triestado.
  • 569. x A E (a) 74LS125 x A E 74LS126 E x 0 1 A Hi-Z (b) E x 0 1 Hi-Z A FIGURA 8-36 Búferes triestado no inversores. una salida CMOS de puesta en alto/puesta en bajo activa con sus características asociadas de alta impedancia y alta velocidad. No obstante, es importante tener en cuenta que cuando las salidas triestado se conectan juntas, sólo una de ellas debe estar habilitada en un momento dado. En caso contrario, dos salidas activas podrían luchar por el control del conductor común, como vimos antes, con lo cual fluirían corrientes dañinas y se producirían niveles lógicos inválidos. Al hablar sobre los circuitos de colector/drenador abierto y triestado, nos hemos referido a casos en los que las salidas de varios dispositivos deben compartir un solo conductor para transmitir la información a otro dispositivo. A ese conductor com- partido se le conoce como línea de bus. Un bus completo está compuesto de varios líneas conductoras que se utilizan para transportar información digital entre dos o más dispositivos que comparten el uso del bus. Búferes triestado Un búfer triestado es un circuito que se utiliza para controlar el paso de una señal lógica de la entrada a la salida. Algunos búferes triestado también invierten la señal a medida que va pasando. A los circuitos de la figura 8-35 se les puede llamar búferes triestado inversores. Dos de los CIs de búfer triestado que se utilizan comúnmente son el 74LS125 y el 74LS126. Ambos contienen cuatro búferes triestado no inversores, como los que se muestran en la figura 8-36. El 74LS125 y el 74LS126 difieren sólo en el estado activo de sus entradas HABILITAR (ENABLE). El 74LS125 permite que la señal de entrada A llegue a la salida cuando E 0, mientras que el 74LS126 pasa la entrada cuando E 1. Los búferes triestado tienen muchas aplicaciones en circuitos en los que se conectan varias señales a líneas comunes (buses). En el capítulo 9 examinaremos algunas de estas aplicaciones, pero podemos darnos una idea básica a través de la figura 8-37(a). Aquí tenemos tres señales lógicas A, B y C, las cuales se conectan a una línea de bus común a través de búferes triestado 74AHC126. Este arreglo nos permite transmitir cualquiera de estas señales a través de la línea del bus hacia otros circuitos; para ello hay que habilitar el búfer apropiado. Por ejemplo, considere la situación en la figura 8-37(b), en donde EB 1 y EA EC 0. Esto deshabilita los búferes superior e inferior, de manera que sus salidas se encuentran en el estado Hi-Z y se desconectan del bus. Esto se simboliza mediante las letras X en el diagrama. El búfer medio se habilita de manera que su entrada B pase hacia su salida y hacia el bus, del cual se enruta hacia otros circuitos conec- tados al bus. Cuando se conectan salidas triestado juntas como en la figura 8-37, es importante recordar que no debe habilitarse más de una salida a la vez. En caso contrario se conectarían dos o más salidas en forma de tótem, lo cual podría pro- ducir corrientes dañinas. Aún si no se provocaran daños, esta situación produciría SECCIÓN 8-12/SALIDAS LÓGICAS TRIESTADO (TRES ESTADOS) 539
  • 570. 540 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS A otros circuitos (a) A B C EC Bus común EB EA 74AHC126 A otros circuitos (b) A B C EC EB EA 74AHC126 Deshabilitado Habilitado Deshabilitado +5 V FIGURA 8-37 (a) Búferes triestado que se utilizan para conectar varias señales a un bus común; (b) condiciones para transmitir B al bus. V DD 0 V DD 0 V DD V DD 2 0 Entrada A Entrada B Bus común FIGURA 8-38 SI dos salidas CMOS habilitadas se conectan juntas, el bus estará a un voltaje aproximado a VDD/2 cuando las salidas estén tratando de ser distintas. una señal en el bus, la cual es una combinación de dos o más señales. A esto se le conoce comúnmente como colisión de bus. La figura 8-38 muestra el efecto de habi- litar las salidas A y B en forma simultánea. En la figura 8-37, cuando las entradas A y B se encuentran en estados opuestos, contienden por el control del bus. El voltaje resultante en el bus es un estado lógico inválido. En los sistemas de bus triestado, el diseñador debe asegurarse que las señales de habilitación no permitan la colisión de bus. CIs triestado Además de los búferes triestado, muchos CIs están diseñados con salidas triestado. Por ejemplo, el 74LS374 es un CI de registro octal de FFs tipo D con salidas triestado. Esto significa que es un registro de ocho bits compuesto de FFs tipo D, cuyas salidas están conectadas a búferes triestado. Este tipo de registro puede conectarse a líneas de bus comunes junto con las salidas de otros dispositivos similares para permitir la transferencia eficiente de datos a través del bus. En el capítulo 9 examinaremos este arreglo de bus de datos triestado. Entre otros tipos de dispositivos lógicos que están disponibles con salidas triestado están los decodificadores, los multiplexores, los convertidores analógicos/digitales, los chips de memoria y los microprocesadores.
  • 571. PREGUNTAS DE REPASO Símbolo IEEE/ANSI para salidas triestado La simbología lógica tradicional no tiene una notación especial para las salidas tries- tado. La figura 8-39 muestra la notación que se utiliza en la simbología IEEE/ANSI para indicar una salida triestado. Es un triángulo que apunta hacia abajo. Aunque no forma parte de la simbología tradicional, utilizaremos este triángulo para desig- nar las salidas triestado durante el resto del libro. 1. ¿Cuáles son los tres estados posibles de una salida triestado? 2. ¿Cuál es el estado de una salida triestado cuando está deshabilitada? 3. ¿Qué es la colisión de bus? 4. ¿Qué condiciones son necesarias para transmitir la señal C al bus en la figura 8-37? 5. ¿Cuál es la designación IEEE/ANSI para las salidas triestado? 8-13 LÓGICA DE INTERFASE DE BUS DE ALTA VELOCIDAD Muchos sistemas digitales utilizan un bus compartido para transferir señales y datos digitales entre los diversos componentes del sistema. Como puede ver de nuestra discusión sobre el desarrollo de la tecnología CMOS, los sistemas se están haciendo cada vez más rápidos. Muchas de las series lógicas de alta velocidad más recientes están diseñadas de manera específica para integrarse a un sistema de bus triestado. Los componentes en estas series son principalmente búferes triestado, transcepto- res bidireccionales, latches y reforzadores de línea de alta corriente. A menudo hay una distancia considerable para separar físicamente los compo- nentes en estos sistemas. Si esta distancia es mayor a unas 4 pulgadas, los conduc- tores del bus entre ellos necesitan verse como una línea de transmisión. Aunque la teoría sobre la línea de transmisión podría ocupar todo un libro y se encuentra más allá del alcance de este texto, la idea general es bastante simple. Los conductores tienen inductancia, capacitancia y resistencia, lo cual significa que para las seña- les cambiantes (corriente alterna) tienen una impedancia característica que puede afectar a una señal que se coloca en un extremo y distorsionarla cuando llega al otro extremo. A las altas velocidades de las que estamos hablando, el tiempo de recorrido a través del conductor, los efectos de las ondas reflejadas (como ecos) y la sobreosci- lación se vuelven preocupaciones reales. Existen varias formas de combatir los pro- blemas asociados con las líneas de transmisión. Para poder evitar las ondas de pulso reflejadas, el extremo del bus se debe terminar con una resistencia que sea igual a la impedancia de la línea (cerca de 50 ), como se muestra en la figura 8-40(a). Este método no es factible, ya que se requiere demasiada corriente para mantener los voltajes de los niveles lógicos a través de una resistencia de ese tamaño. Otra téc- nica utiliza un capacitor para bloquear la corriente directa cuando la línea no está cambiando, pero en efecto aparece justo como una resistencia al pulso de elevación o de caída. En la figura 8-40(b) se muestra este método. Si se utiliza un divisor de voltaje como en la figura 8-40(c), con resistencias más grandes que la de la línea, la impedancia ayuda a reducir las reflexiones pero con cientos de líneas de bus individuales es obvio que representa una carga pesada en la fuente de energía del sistema. La terminación con diodo que se muestra en la X A E 74LS125 X A E 74LS126 FIGURA 8-39 Notación IEEE/ANSI para las salidas triestado. SECCIÓN 8-13/LÓGICA DE INTERFASE DE BUS DE ALTA VELOCIDAD 541
  • 572. 542 CAPÍTULO 8/FAMILIAS LÓGICAS DE CIRCUITOS INTEGRADOS FIGURA 8-40 Técnicas de terminación de bus. Impedancia de línea D L Carga R (a) Impedancia de línea D L R (b) C Impedancia de línea D L +VCC (c) Impedancia de línea D L (d) VCC Impedancia de línea D L (e) R Reforzador R1 R2 PREGUNTAS DE REPASO figura 8-40(d) sólo recorta o fija el sobredisparo/subdisparo de la sobreoscilación ocasionada por la naturaleza LC reactiva de la línea. La terminación en serie en la fuente, como se muestra en la figura 8-40(e), reduce la velocidad de conmutación y por consecuencia reduce los límites de frecuencia del bus, pero mejora en forma considerable la confiabilidad de las señales de bus. Como puede ver, ninguno de estos métodos es ideal. Los fabricantes de CIs están diseñando nuevas series de circuitos lógicos que pueden sobrepasar muchos de estos problemas. La serie lógica de interfase de bus de Texas Instruments ofrece circuitos de salida que reducen en forma dinámica la impedancia de salida durante el estado estable (como una terminación en serie) para amortiguar cualquier sobreoscilación y reducir las reflexiones en la línea de bus. La serie GTLP (Lógica de transceptor de disparo Plus) de dispositivos de interfase de bus está diseñada especialmente para reforzar los buses relativamente extensos que conectan módulos de un sistema digital grande. El segundo plano se refiere a las interconexiones entre los módulos en la parte posterior de un sistema de montaje en bastidor de 19 pulgadas, estándar en la industria. Otro de los principales participantes en el área de la interfase de bus de alta velo- cidad es la denominada señalización diferencial de bajo voltaje (LVDS), la cual uti- liza dos conductores para cada señal; señalización diferencial significa que responde a la diferencia entre los dos conductores. Por lo general se presentan señales de ruido indeseables en ambas líneas, las cuales no tienen efecto sobre la diferencia entre las dos señales. Para representar los dos estados lógicos, la LVDS utiliza una oscilación de bajo voltaje pero cambia de polaridad para distinguir con claridad un 1 de un 0. 1. ¿Qué tan cerca necesitan estar los componentes unos de otros para ignorar los efectos de la “línea de transmisión”? 2. ¿Cuáles son las tres características de los conductores reales que se agregan para distorsionar señales que pasan a través de ellos? 3. ¿Cuál es el propósito de las terminaciones de bus?
  • 573. 8-14 LA FAMILIA ECL DE CIS DIGITALES La familia TTL utiliza transistores que operan en el modo saturado. Como resultado, su velocidad de conmutación está limitada en base al tiempo de retraso de almace- namiento asociado con un transistor que se lleva a saturación. Existe otra familia lógica bipolar que evita la saturación del transistor, con lo que se incrementa la velocidad de conmutación en general. A esta familia lógica se le conoce como lógica de acoplamiento por emisor (ECL), la cual opera en base al principio de conmuta- ción de corriente, en el cual una corriente de polarización fija menor que IC(sat) se cambia del colector de un transistor a otro. Debido a esta operación en modo de corriente, a esta forma lógica también se le conoce como lógica en modo de corriente (CML). Circuito ECL básico El circuito básico para la lógica de acoplamiento por emisor es en esencia la con- figuración del amplificador diferencial de la figura 8-41(a). El voltaje de alimenta- ción VEE produce una corriente IE básicamente fija, la cual permanece alrededor de los 3 mA durante la operación normal. A esta corriente se le permite fluir a través de Q1 o de Q2, dependiendo del nivel de voltaje en VENT. En otras palabras, esta corriente cambia entre el colector de Q1 y el colector de Q2 a medida que VENT cam