Academia.eduAcademia.edu

Sistemas Digitales Principios y Aplicaciones

2007, SIstemas DIgitales Decima edición

No hay descripcion o resumen

DÉCIMA EDICIÓN Sistemas Digitales Principios y Aplicaciones 2/.!,$ *4/##) .%!, 37)$-%2 '2%'/29 , -/33 Sistemas digitales Principios y aplicaciones DÉCIMA EDICIÓN Sistemas digitales Principios y aplicaciones Ronald J. Tocci Monroe Community College Neal S. Widmer Purdue University Gregory L. Moss Purdue University Traducción Alfonso Vidal Romero Elizondo Ingeniero en Electrónica y Comunicación Instituto Tecnológico y de Estudios Superiores de Monterrey - Campus Monterrey Revisión técnica Reynaldo Félix Acuña Profesor investigador Departamento de Ingeniería Eléctrica y Electrónica Instituto Tecnoló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 Instituto Tecnológico y de Estudios Superiores de Monterrey Campus Estado de México 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 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 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 P R E FAC I O Este libro es un estudio completo sobre los principios y las técnicas de los sistemas 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 programables 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 descripció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 volviendo 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 simples, 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 dispositivos 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 involucrará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 requerimientos de diversos tipos de datos, y luchan por comprender los eventos de disparo 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 con VHDL 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 desventaja 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 ejemplos 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 usuarios de este libro. Existen muchas tarjetas de desarrollo CPLD y FPGA para que PREFACIO IX FIGURA P-1 La tarjeta de desarrollo UP3 de Altera. 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 variedad 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 excelente 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-2 La tarjeta de desarrollo DE2 de Altera. X PREFACIO para enfatizar los CIs de contadores sincrónicos e incluimos técnicas para analizarlos, 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ísticas 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 entremezclando en las prácticas de laboratorio o las lecturas. De entre todos los lenguajes de descripción de hardware específicos, es evidente 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 mayores 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 introductorios 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 material 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 continuación se muestra una lista de las secciones y capítulos que pueden eliminarse con la menor probabilidad de trastornos: ■ ■ ■ ■ Capítulo Capítulo Capítulo Capítulo 1: Todo. 2: Sección 6. 3: Secciones 15 a 20. 4: Secciones 7, 10 a 13. PREFACIO ■ ■ ■ ■ ■ ■ ■ ■ ■ Capítulo Capítulo Capítulo Capítulo Capítulo Capítulo Capítulo Capítulo Capítulo XI 5: Secciones 3, 23 a 27. 6: Secciones 5 a 7, 11, 13, 16 a 23. 7: Secciones 9 a 14, 21 a 24. 8: Secciones 10, 14 a 19. 9: Secciones 5, 9, 15 a 20. 10: Todo. 11: Secciones 7, 14 a 17. 12: Secciones 17 a 21. 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 muestran en el texto se han capturado como archivos de entrada para esta popular herramienta 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 circuito 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 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                                   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 nuevos ejemplos relacionados con los caracteres ASCII, la representación hexadecimal 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 elevació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 modificó 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 hexadecimal. Se utiliza un modelo de círculo de números para comparar los formatos 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 circuitos de contadores sincrónicos. Se siguen introduciendo los contadores de ondulació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 limitaciones 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 caracterí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 circuitos 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 representan la mejor manera en que se implementan los circuitos secuenciales en la tecnología PLD moderna. Se mejoraron las secciones sobre HDL para demostrar 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 presenta 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 tecnologí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 diferencial de bajo voltaje (LVDS). Capítulo 9 Este capítulo trata todavía acerca de los fundamentos de los sistemas digitales y su demostración mediante el uso de HDL. También se introducen 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 utilizan 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écnica 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 edició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 introducir 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 aceptació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 comprensió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 plantean 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 material 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 principios 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 habilidades 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 problemas son aplicaciones que muestran cómo se utilizan en un típico sistema de microcomputadora 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 últimas hojas del libro contienen tablas de los teoremas de álgebra Booleana más usados, 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 conjunto 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, cualquiera puede aprender a modificar y probar todos los ejemplos que se presentan 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 proporcionan archivos de circuitos Multisim para cualquiera que tenga este software. Quienes no tengan el software Multisim y deseen comprarlo para usar los archivos 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 ofrece 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 obtener 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 proporcionaron 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 proveer 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 RESUMEN DE CONTENIDO 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 CONTENIDO CAPÍTULO 1 Conceptos introductorios 1-1 Representaciones numéricas 4 1-2 Sistemas digitales y analógicos 1-3 Sistemas numéricos digitales 1-4 Representación de cantidades binarias 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 2 5 10 13 Sistemas y códigos numéricos 2-1 Conversiones de binario a decimal 26 2-2 Conversiones de decimal a binario 26 2-3 Sistema numérico hexadecimal 2-4 Código BCD 33 2-5 Código gray 35 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 24 29 37 37 39 41 44 xix XX CONTENIDO CAPÍTULO 3 Descripción de los circuitos lógicos 54 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 65 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 76 3-11 Teoremas de DeMorgan 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 98 3-18 Implementación de circuitos lógicos con PLDS 3-19 Formato y sintaxis del HDL 3-20 Señales intermedias 105 CAPÍTULO 4 57 57 58 62 66 68 71 73 80 83 86 89 95 96 100 102 Circuitos lógicos combinacionales 4-1 Forma de suma de productos 4-2 Simplificación de circuitos lógicos 4-3 Simplificación algebraica 121 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 153 4-10 Diagnóstico de fallas de sistemas digitales 160 4-11 Fallas internas en los circuitos integrados digitales 4-12 Fallas externas 166 4-13 Ejemplo práctico de diagnóstico de fallas 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 4-17 Estructuras de control de decisiones en HDL 118 120 121 127 133 144 149 151 168 181 184 162 CONTENIDO CAPÍTULO 5 XXI Flip-flops y dispositivos relacionados 5-1 Latch de compuerta NAND 5-2 Latch de compuerta NOR 5-3 Ejemplo práctico de diagnóstico de fallas 5-4 Pulsos digitales 220 5-5 Señales de reloj y flip-flops sincronizados por reloj 5-6 Flip-flop sincronizado por reloj en S-R 224 5-7 Flip-flop sincronizado por reloj en J-K 227 208 211 216 219 221 5-8 Flip-flop sincronizado por reloj en D 5-9 Latch D (latch transparente) 5-10 Entradas asíncronas 233 5-11 Símbolos IEEE/ANSI 236 5-12 Consideraciones de sincronización de los flip-flops 5-13 Problema potencial de sincronización en circuitos con FF 5-14 Aplicaciones de los flip-flops 5-15 Sincronización de los flip-flops 5-16 Detección de una secuencia de entrada 5-17 Almacenamiento y transferencia de datos 5-18 Transferencia de datos en serie: registros de desplazamiento 5-19 División y conteo de frecuencia 5-20 Aplicación de microcomputadora 5-21 Dispositivos disparadores de Schmitt 5-22 One-shot (multivibrador monoestable) 5-23 Circuitos generadores de reloj 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 5-27 Circuitos de HDL con varios componentes CAPÍTULO 6 230 232 238 241 243 243 244 245 247 250 254 256 256 260 272 277 Aritmética digital: operaciones y circuitos 6-1 Suma binaria 298 6-2 Representación de números con signo 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 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 6-11 Diseño de un sumador completo 299 310 318 320 296 XXII CONTENIDO 6-12 Sumador completo en paralelo con registros 323 6-13 Propagación del acarreo 6-14 Sumador en paralelo de circuito integrado 6-15 Sistema de complemento a 2 6-16 Circuitos integrados tipo ALU 6-17 Ejemplo práctico de diagnóstico de fallas 6-18 Uso de las funciones de la biblioteca TTL con Altera 325 326 328 331 335 6-19 Operaciones lógicas con arreglos de bits 6-20 Sumadores en HDL 340 6-21 Expansión de la capacidad de bits de un circuito CAPÍTULO 7 7-1 7-2 7-3 7-4 7-5 7-6 7-7 7-8 7-9 7-10 7-11 7-12 7-13 7-14 7-15 7-16 7-17 7-18 7-19 7-20 7-21 7-22 7-23 7-24 338 343 Contadores y registros 360 Contadores asíncronos (de rizo) 362 Retraso de propagación en contadores de rizo 365 Contadores síncronos (en paralelo) 367 Contadores con números mod < 2N 370 Contadores síncronos descendentes y ascendentes/descendentes 377 Contadores preajustables 379 Contadores síncronos de CI 380 Decodificación de un contador 389 Análisis de los contadores síncronos 393 Diseño de un contador síncrono 396 Contadores básicos mediante el uso de HDL 405 Contadores con todas las características en HDL 412 Cómo alambrar módulos de HDL en conjunto 417 Máquina de estados 425 Registros de circuito integrado 437 Entrada en paralelo/salida en paralelo: 74ALS174/74HC174 437 Entrada en serie/salida en serie: 74ALS166/74HC166 439 Entrada en paralelo/salida en serie: 74ALS165/74HC165 441 Entrada en serie/salida en paralelo: 74ALS164/74HC164 443 Contadores de registro de desplazamiento 445 Diagnóstico de fallas 450 Registros en HDL 452 Contadores de anillo en HDL 459 Monoestables en HDL 461 CAPÍTULO 8 8-1 8-2 8-3 8-4 337 Familias lógicas de circuitos integrados Terminología de CIS digitales 490 La familia lógica TTL 498 Hojas técnicas TTL 502 Características de las series TTL 506 488 CONTENIDO 8-5 8-6 8-7 8-8 8-9 8-10 8-11 8-12 8-13 8-14 8-15 8-16 8-17 8-18 8-19 Capacidad de carga de la familia TTL 509 Otras características de la familia TTL 514 Tecnología MOS 518 Lógica de MOS complementario 521 Características de las series CMOS 523 Tecnología de bajo voltaje 530 Salidas de colector abierto/drenador abierto 533 Salidas lógicas triestado (tres estados) 538 Lógica de interfase de bus de alta velocidad 541 La familia ECL de CIS digitales 543 Compuerta de transmisión CMOS (interruptor bilateral) Interfase de CIS 548 Interfase de voltaje mixto 553 Comparadores de voltaje analógico 554 Diagnóstico de fallas 556 CAPÍTULO 9 9-1 9-2 9-3 9-4 9-5 9-6 9-7 9-8 9-9 9-10 9-11 9-12 9-13 9-14 9-15 9-16 9-17 9-18 9-19 9-20 XXIII Circuitos lógicos MSI 576 Decodificadores 577 Decodificadores/controladores de BCD a 7 segmentos 584 Pantallas de cristal líquido 587 Codificadores 591 Diagnóstico de fallas 597 Multiplexores (selectores de datos) 599 Aplicaciones de los multiplexores 604 Demultiplexores (distribuidores de datos) 610 Más diagnóstico de fallas 617 Comparador de magnitud 621 Convertidores de código 624 Buses de datos 628 El registro triestado 74ALS173/HC173 629 Operación del bus de datos 632 Decodificadores mediante el uso de HDL 638 El decodificador/controlador de 7 segmentos en HDL 642 Codificadores mediante el uso de HDL 645 Multiplexores y demultiplexores en HDL 648 Comparadores de magnitud en HDL 652 Convertidores de código en HDL 653 CAPÍTULO 10 Proyectos de sistemas digitales mediante el uso de HDL 10-1 10-2 10-3 546 Administración de pequeños proyectos 678 Proyecto de controlador de motor de pasos 679 Proyecto de codificador de teclado numérico 687 676 XXIV CONTENIDO 10-4 10-5 Proyecto de reloj digital 693 Proyecto de contador de frecuencia 710 CAPÍTULO 11 Interface con el mundo analógico 11-1 11-2 11-3 11-4 11-5 11-6 11-7 11-8 11-9 11-10 11-11 11-12 11-13 11-14 11-15 11-16 11-17 Repaso de la comparación entre digital y analógico Conversión digital-analógica (DAC) 721 Circuitos convertidores D/A 728 Especificaciones de un DAC 733 Un DAC de circuito integrado 735 Aplicaciones de los DACS 736 Diagnóstico de fallas en los DACS 738 Conversión analógica-digital (ADC) 739 ADC de rampa digital 740 Adquisición de datos 745 ADC de aproximaciones sucesivas 749 ADCS tipo flash 755 Otros métodos de conversión A/D 757 Circuitos de muestreo y retención 761 Multiplexaje 762 Osciloscopio de almacenamiento digital 764 Procesamiento digital de señales (DSP) 765 CAPÍTULO 12 Dispositivos de memoria 12-1 12.2 12-3 12-4 12-5 12-6 12-7 12-8 12-9 12-10 12-11 12-12 12-13 12-14 12-15 12-16 12-17 12-18 12-19 Terminología de memoria 786 Operación general de la memoria 790 Conexiones entre CPU y memoria 793 Memorias de sólo lectura 795 Arquitectura de la ROM 796 Sincronización de la ROM 799 Tipos de ROMS 800 Memoria flash 808 Aplicaciones de la ROM 811 RAM semiconductora 814 Arquitectura de la RAM 815 RAM estática (SRAM) 818 RAM dinámica (DRAM) 823 Estructura y operación de la RAM dinámica 824 Ciclos de lectura/escritura de la DRAM 829 Refresco de la DRAM 831 Tecnología de la DRAM 834 Expansión de tamaño de palabra y capacidad 836 Funciones especiales de la memoria 844 718 719 784 CONTENIDO 12-20 Diagnóstico de fallas en sistemas de RAM 12-21 Prueba de la ROM 852 XXV 847 CAPÍTULO 13 Arquitecturas de los dispositivos lógicos programables 13-1 13-2 13-3 13-4 13-5 13-6 13-7 Árbol familiar de los sistemas digitales 870 Fundamentos de los circuitos de un PLD 875 Arquitecturas de PLDS 877 El GAL 16V8 (matriz lógica genérica) 881 El CPLD EPM7128S de Altera 885 La familia FLEX10K de Altera 890 La familia Cyclone de Altera 894 Glosario 898 Respuestas a los problemas seleccionados 911 Índice de CIs 919 Índice 922 868 Sistemas digitales Principios y aplicaciones C A P Í T U L O 1 CONCEPTOS INTRODUCTORIOS ■ CONTENIDO 1-1 1-2 Representaciones numéricas Sistemas digitales y analógicos Sistemas numéricos digitales Representación de cantidades binarias 1-3 1-4 1-5 1-6 1-7 1-8 Circuitos digitales/circuitos lógicos Transmisión en paralelo y en serie Memoria Computadoras digitales ■ 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. 3 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 campos 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 cantidades 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 indicador 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 produzca 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 actualmente. 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 acoplan 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 mediante una señal analógica eléctrica. Un micrófono es un dispositivo que genera un voltaje 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 importante 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 decimales 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 palabras, esta representación digital de la hora del día cambia en incrementos discretos, SECCIÓN 1-2/SISTEMAS DIGITALES Y ANALÓGICOS 5 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 ambigü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áctica, cuando se mide una cantidad analógica, siempre se “redondea” a un nivel de precisió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). EJEMPLO 1-1 ¿Cuáles de las siguientes cantidades son analógicas y cuáles son digitales? (a) (b) (c) (d) (e) Un interruptor de diez posiciones. La corriente que fluye a través de un contacto eléctrico. La temperatura de una habitación. Granos de arena en la playa. El medidor de combustible de un automóvil. Solución (a) (b) (c) (d) Digital. Analógica. Analógica. 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. PREGUNTAS DE REPASO * 1. Describa en forma concisa la principal diferencia entre las cantidades analógicas y digitales. 1-2 SISTEMAS DIGITALES Y ANALÓGICOS Un sistema digital es la combinación de dispositivos diseñados para manipular informació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 * Las respuestas a las preguntas de repaso se encuentran al nal del capítulo correspondiente. 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 digitales, 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 relativamente 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 circuitos 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. 7 SECCIÓN 1-2/SISTEMAS DIGITALES Y ANALÓGICOS 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 precisos), 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. 2. 3. 4. Convertir la variable física en una señal eléctrica (analógica). Convertir la señal eléctrica (analógica) a su forma digital. Procesar (operar con) la información digital. 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éctricas 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 correspondiente al voltaje aplicado y afectará la temperatura del espacio. Entrada digital: Establece la temperatura deseada Señal digital que representa la potencia (voltaje) para el calentador  Procesador digital  Conversión digital-analógica Espacio con temperatura controlada Sensor Calor Señal digital que representa la temperatura actual FIGURA 1-1 Conversión analógico-digital Señal analógica que representa la temperatura actual Diagrama de bloques de un sistema digital de precisión para control de temperatura. Otro buen ejemplo en donde se lleva a cabo la conversión entre valores analógicos 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 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 reproducció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) decidió 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 estacionario, 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 bastante precisas como para lograr esta hazaña, pero la solución más simple sigue siendo analógica. (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. 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 SECCIÓN 1-2/SISTEMAS DIGITALES Y ANALÓGICOS 9 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 fenomenales, 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 compacto 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 infraestructura 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 tablero 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 comunicació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 responder 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 emocionante 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 actividades 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 satisfacciones. PREGUNTAS DE REPASO 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? 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 posición de los dígitos sabemos que el 4 en realidad representa 4 centenas, el 5 representa 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: (2 * 10 + 3) + (7 * 10 + 2) + (4 * 101) + (5 * 100) + (2 * 10-1) + (1 * 10-2) + (4 * 10-3) FIGURA 1-3 Valores de posición decimal como potencias de 10. Valores posicionales (pesos) 10 –110 –2 10 –3 103 102 101 100 2 MSD 7 4 5 . 2 Punto decimal 1 4 LSD 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 agregamos un 1 a la siguiente posición más alta y empezamos de nuevo con 0 en la prime- 11 SECCIÓN 1-3/SISTEMAS NUMÉRICOS DIGITALES 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. FIGURA 1-4 Conteo decimal. 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 103 199 200 99 100 101 102 999 1000 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. Empezando 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 implementació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 distintos (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. Frecuentemente 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. * El cero se cuenta como número. 12 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS FIGURA 1-5 Los valores posicionales binarios como potencias de 2. Valores posicionales 23 22 21 20 1 0 1 1 MSB 2–1 2–2 2–3 1 Punto binario 0 1 LSB Todas las aseveraciones mencionadas con respecto al sistema decimal pueden aplicarse de igual forma al sistema binario. Este sistema también es de valor posicional, 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 binario (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. 1011.1012 = (1 * 23) + (0 * 22) + (1 * 21) + (1 * 20) + (1 * 2-1) + (0 * 2-2) + (1 * 2-3) = 8 + 0 + 2 + 1 + 0.5 + 0 + 0.125 = 11.62510 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 confusió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 SECCIÓN 1-4/REPRESENTACIÓN DE CANTIDADES BINARIAS FIGURA 1-6 Secuencia de conteo binario. Pesos 23 = 8 22 = 4 21 = 2 20 = 1 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 13 Equivalente decimal 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 LSB cuatro conteos, después en 1 durante cuatro conteos, y así sucesivamente. El cuarto 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 ejemplo, si utilizamos un quinto lugar binario, el quinto bit alternaría dieciséis 0s, despué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  241  1510. EJEMPLO 1-2 ¿Cuál es el mayor número que se puede representar si se utilizan ocho bits? Solución 2N - 1 = 28 - 1 = 25510 = 111111112. É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. PREGUNTAS DE REPASO 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 cualquier dispositivo que sólo tenga dos estados de operación o condiciones posibles. 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 . 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) 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 (energizado o desenergizado), el transistor (en corte o saturado), la fotocelda (iluminada u oscura), el termostato (abierto o cerrado), el embrague mecánico (enganchado o desenganchado), 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 variaciones 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.8 V representa un 0 y cualquier voltaje entre 2 y 5 V representa un 1. Por lo general, todas las señales de entrada y salida se encuentran dentro de alguno de estos intervalos, excepto durante 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- 15 SECCIÓN 1-5/CIRCUITOS DIGITALES/CIRCUITOS LÓGICOS Volts 5V 1 binario 1 4V 2V 0.8 V Voltajes inválidos 0 binario 0V (a) 1 No utilizado 0V t0 0 0 t1 t2 t t3 t4 t5 (b) FIGURA 1-8 (a) Asignaciones comunes de voltaje en un sistema digital; (b) diagrama común de sincronización de una señal digital. 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 proporcional a la temperatura medida por un transductor, 3.6 V representaría una temperatura 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 travé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 intervalos 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 permanece 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á necesario 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 procedimientos 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 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 salida 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 niveles binarios. FIGURA 1-9 Un circuito digital responde a un nivel binario de entrada (0 o 1) y no a su voltaje real. Caso I 5V vi 0V t 4V vo 0V vi Circuito digital vo Caso II 3.7 V vi 0.5 V t 4V vo 0V 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ógicas. 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ítulo 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 actualidad 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 operació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 modernos 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 proporcionar la operación lógica deseada. Por ejemplo, TTL (lógica de transistor-transistor) 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. SECCIÓN 1-6/TRANSMISIÓN EN PARALELO Y EN SERIE PREGUNTAS DE REPASO 17 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 PARALELO Y 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. 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). “H” “i” 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 1 MSB LSB (a) “H” 00010010 LSB “i” 10010110 MSB LSB MSB (b) 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 18 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS la palabra “Hi” en la computadora. El código binario para la “H” es 01001000 y el código 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 rapidez 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. PREGUNTAS DE REPASO 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. FIGURA 1-11 Comparación entre la operación sin memoria y con memoria. Circuito sin memoria Circuito con memoria 19 SECCIÓN 1-8/COMPUTADORAS DIGITALES Los circuitos y dispositivos de memoria juegan un importante papel en los sistemas 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 ahora 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 columna 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 diferencia 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 computadora, 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 descomponerse en las mismas unidades funcionales. Cada unidad realiza funciones específicas, 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 prinUnidad central de procesamiento (CPU) Artméticalógica Datos, información Entrada Control Salida Datos, C Señales de control Memoria FIGURA 1-12 Diagrama funcional de una computadora digital. D Datos o información 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 representan 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 información a la unidad de salida. 3. Unidad de control. Esta unidad recibe instrucciones de la unidad de memoria, 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éticos 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 operador (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 control 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 requeridos 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 computadoras especializadas. La forma más prevalente de computadoras se encuentra realizando 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 circuito integrado, el cual puede conectarse a los demás bloques de un sistema computacional. 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. 21 TÉRMINOS IMPORTANTES 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 encuentran 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 dispositivos 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 seguridad en alguna parte estará utilizando una microcomputadora. PREGUNTAS DE REPASO 1. 2. 3. 4. Explique la diferencia ente un circuito digital con memoria y uno sin memoria. Nombre las cinco unidades funcionales principales de una computadora. ¿Cuáles son las dos unidades que conforman la CPU? 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ísicas 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 general, las técnicas digitales son superiores a las técnicas analógicas, y se pronostica 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 tecnologí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 control. 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. 22 CAPÍTULO 1/CONCEPTOS INTRODUCTORIOS convertidor analógicodigital (ADC) convertidor digitalanaló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 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 equivalentes. (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. * Encontrará las respuestas a los problemas marcados con un asterisco al Ànal del libro. RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES 23 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. C A P Í T U L O 2 SISTEMAS Y CÓDIGOS NUMÉRICOS ■ CONTENIDO 2-1 Conversiones de binario a decimal Conversiones de decimal a binario Sistema numérico hexadecimal Código BCD Código Gray 2-2 2-3 2-4 2-5 2-6 2-7 2-8 2-9 2-10 Integración de los sistemas numéricos Byte, nibble y palabra Códigos alfanuméricos Método de paridad para la detección de errores 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 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 posicional, 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 decimal 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 equivalente decimal. 1 1 0 1 12 2 ⫹ 2 ⫹ 0 ⫹ 2 ⫹ 20 ⫽ 16 ⫹ 8 ⫹ 2 ⫹ 1 ⫽ 2710 4 3 1 Hagamos ahora otro ejemplo con un mayor número de bits: 1 0 1 1 0 1 0 12  27  0  25  24  0  22  0  20  18110 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. PREGUNTAS DE REPASO 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: 4510  32  8  4  1  25  0  23  22  0  20 1 0 1 1 0 12 Observe que se coloca un 0 en las posiciones 21 y 24, ya que todas las posiciones deben tomarse en cuenta. Veamos otro ejemplo: 7610  64  8  4  26  0  0  23  22  0  0 1 0 0 1 1 0 02 . 27 SECCIÓN 2-2/CONVERSIONES DE DECIMAL A BINARIO 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 resultado 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. 25   12  residuo de 1 2⎯⎯⎯⎯⎯⎯⎯⏐ LSB ↑ ↑ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ↑ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ↑ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ↑ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ ⏐ 1 0 0 12 ↓ 12   6  residuo de 0 2 ⎯⎯⎯⎯⎯⏐ ↓ 6   3  residuo de 0 2⎯⎯⎯⎯⎯⏐ ↓ 3   1  residuo de 1 2 ⏐ ⎯⎯⎯⎯ ⎯ ↓ 1   0  residuo de 1 2 MSB 2510  1 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. INICIO Dividir entre 2 Registrar cociente (Q) y residuo (R) ¿Es Q  0? NO SÍ 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 FIN 28 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS SUGERENCIA PARA EL USO DE CALCULADORA: Si utiliza una calculadora para realizar las divisiones entre 2, podrá saber si el residuo 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 hubiera parte fraccionaria, como en 12/2  6, entonces el residuo sería 0. El siguiente ejemplo demuestra esto. EJEMPLO 2-1 Convierta el número 3710 en binario. Trate de resolverlo por su cuenta antes de ver la solución. Solución 37   18. 5 ⎯→ residuo de 1 (LSB) 2 ↑ 18   9.0 ⎯→ 2 0 9   4.5 ⎯→ 2 1 4   2.0 ⎯→ 2 0 2   1.0 ⎯→ 2 0 1   0.5 ⎯→ 2 1 (MSB) Por lo tanto, 3710  1001012. Alcance de conteo Recuerde que si utilizamos N bits, podemos contar hasta 2N números decimales distintos 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. EJEMPLO 2-2 (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. 29 SECCIÓN 2-3/SISTEMA NUMÉRICO HEXADECIMAL (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 suficientes 13 bits, pero 14 bits nos llevarán más allá de 12,500. Por ende, el número de bits requerido es 14. PREGUNTAS DE REPASO 1. Convierta 8310 en binario usando ambos métodos. 2. Convierta 72910 en binario usando ambos métodos. Revise su respuesta y convierta 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ímbolos 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. 164 163 162 161 160 161 162 163 164 Punto hexadecimal 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. 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 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 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. SUGERENCIA PARA EL USO DE CALCULADORA: Puede usar la función yx de la calculadora para evaluar las potencias de 16. 356 16  3  162  5  161  6  16 0  768  80  6  85410 2AF16  2  162  10  161  15  16 0  512  160  15  68710 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 divisió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 423   26  residuo de 7 1↑6 26   1  residuo de 10 16 ↑ 1   0  residuo de 1 16 ↑↑↑ ⏐⏐ ⏐⏐ ⏐⏐ ⏐⏐ ⏐ ⏐ ⏐⏐ ⏐⏐ ⏐ ⏐ ⏐ ⏐ 423 10  1A716 (b) Convierta 21410 a hexadecimal. Solución 214   13  residuo de 6 16↑ 13   0  residuo de 13 16 ↑↑ ⏐⏐ ⏐ ⏐ ⏐ ⏐ EJEMPLO 2-3 214 10  D6 16 31 SECCIÓN 2-3/SISTEMA NUMÉRICO HEXADECIMAL 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. 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: 214 = 13.375 16 El residuo se convierte en (0.375)  16  6. Conversión de hexadecimal a binario El sistema numérico hexadecimal se utiliza principalmente como método “abreviado” 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 equivalente binario de cuatro bits (tabla 2-1). Esto se ilustra a continuación para el número 9F216. 9F216  9 ↓ 1 0 0 1 1  100111110010 2 F ↓ 1 2 ↓ 1 1 0 0 1 0 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 hexadecimal equivalente. Se agregan ceros (los que se muestran ensombrecidos) según sea necesario para completar un grupo de cuatro bits en el MSD. 1 1 1 0 1 0 0 1 1 02  0 0 1 1 1 0 1 0 0 1 1 0 ⎪⎫ ⎬ ⎭⎪ ⎪⎫ ⎬ ⎭⎪ ⎪⎫ ⎬ ⎭⎪ 3  3A616 A 6 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 hexadecimales correspondientes. Una vez que memorize, la conversión podrá realizarse con rapidez sin necesidad de hacer cálculos. Esto explica por qué el sistema hexadecimal 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, desde el 0 hasta la F. Una vez que la posición de un dígito llega al valor F, se restablece 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 computadoras, 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 indicar 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 cuales 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úmeros 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 herramienta en los sistemas digitales. EJEMPLO 2-4 Convierta el número 378 decimal en un número binario de 16 bits, primero convirtiendo el número en hexadecimal. Solución 378   23  residuo de 1010  A16 16 ↑ 23   1  residuo de 7 1↑6 1   0  residuo de 1 16 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 SECCIÓN 2-4/CÓDIGO BCD EJEMPLO 2-5 33 Convierta el número B2F16 en decimal. Solución B2F16 = B * 162 + 2 * 161 + F * 160 = 11 * 256 + 2 * 16 + 15 = 286310 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 divisió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. PREGUNTAS DE REPASO Convierta el número 24CE16 en decimal. Convierta el número 311710 en hexadecimal y después de hexadecimal a binario. Convierta el número 10010111101101012 en hexadecimal. 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 hexadecimal de cuatro dígitos? 1. 2. 3. 4. 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 considerarse como un código que representa el número decimal. Cuando un número decimal se representa por su número binario equivalente, le llamamos código binario directo. 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 situaciones 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: 8 ↓ 1000 7 ↓ 0111 4 ↓ 0100 (decimal) (BCD) Como segundo ejemplo, vamos a cambiar el número 943 a su representación en código BCD: 9 ↓ 1001 4 ↓ 0100 3 ↓ 0011 (decimal) (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 “prohibidos” 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. EJEMPLO 2-6 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. 3 ⎫ ⎫ ⎫ ⎫ 8 ⎫ ⎬ 6 ⎫ ⎬ 9 Convierta el número BCD 011111000001 en su equivalente decimal. Solución 7 ⎫ ⎫ ⎬ ⎫ ⎬ 0111 1100 0001 ⎫ EJEMPLO 2-7 ⎫ ⎬ ⎫ ⎬ 0110 1000 0011 1001 ↓ 1 El grupo con el código prohibido indica un error en el número BCD 35 SECCIÓN 2-5/CÓDIGO GRAY 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 binario 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. PREGUNTAS DE REPASO 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 malinterpretarse, 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 entrada 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 binario 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. 36 TABLA 2-2 Equivalencia entre el código binario de tres bits y el código Gray. CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS 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 Binario MSB B2 B1 LSB B0 ¿Diferente? ¿Diferente? G1 G0 G2 FIGURA 2-2 Gray MSB G2 G1 LSB G0 ¿Diferente? ¿Diferente? B1 B0 B2 Gray Binario (a) (b) Conversión de (a) binario a Gray y de (b) Gray a binario. 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. FIGURA 2-3 Un codificador de eje de ocho posiciones y tres bits. G2 G1 G0 37 SECCIÓN 2-7/BYTE, NIBBLE Y PALABRA 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. TABLA 2-3 Decimal Binario Hexadecimal BCD GRAY 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 0 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 2-7 BYTE, NIBBLE Y PALABRA Bytes La mayoría de las microcomputadoras maneja y almacena datos binarios e informació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. EJEMPLO 2-8 ¿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. 38 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS EJEMPLO 2-9 ¿Cuál es el valor decimal más grande que puede representarse en binario si se utilizan 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. EJEMPLO 2-10 ¿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: 8 4 6 5 6 9 (decimal) ⎫ ⎪ ⎫ ⎪ byte 2 ⎫ ⎪ ⎬ byte 1 ⎫ ⎪ ⎬ ⎫ ⎪ ⎬ ⎫ ⎪ 1000 0100 0110 0101 0110 1001 (BCD) byte 3 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. EJEMPLO 2-11 ¿Cuántos nibbles hay en un byte? Solución 2 EJEMPLO 2-12 ¿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 SECCIÓN 2-8/CÓDIGOS ALFANUMÉRICOS 39 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 microondas 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. PREGUNTAS DE REPASO 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 informació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 especiales, 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ódigo ASCII estándar de siete bits. La tabla proporciona los equivalentes en hexadecimal y decimal. Para obtener el código binario de siete bits para cada carácter hay que convertir el valor hexadecimal en binario. EJEMPLO 2-13 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 hexadecimal 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. 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 . 60 96 NUL (nulo) 0 0 Espacio 20 32 @ 40 64 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 SECCIÓN 2-9/MÉTODO DE PARIDAD PARA LA DETECCIÓN DE ERRORES 41 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 almacenar la información que escribe un operador en el teclado. El siguiente ejemplo ilustra lo anterior. EJEMPLO 2-14 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 introducirán en memoria cuando el operador escriba la siguiente instrucción en C: if (x>3) Solución Localice cada carácter (incluyendo el espacio) en la tabla 2-4 y escriba su código ASCII. i f espacio ( x > 3 ) 69 66 20 28 78 3E 33 29 0110 0110 0010 0010 0111 0011 0011 0010 1001 0110 0000 1000 1000 1110 0011 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. PREGUNTAS DE REPASO 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 ubicaciones 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 computadora 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) hasta otro (el receptor), existe la posibilidad de que puedan producirse errores tales 42 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS x Transmisor Receptor FIGURA 2-4 Ejemplo del ruido que produce un error en la transmisión de datos digitales. 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 figura 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 interpretar 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 frecuentemente 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 distintos. 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: 1 1 0 0 0 0 1 1 ↑ bit de paridad agregado* 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 paridad 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. * 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. SECCIÓN 2-9/MÉTODO DE PARIDAD PARA LA DETECCIÓN DE ERRORES 43 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, suponga que el carácter “A” se va a transmitir y se va a utilizar paridad impar. El código transmitido sería 1 1 0 0 0 0 0 1 Cuando el circuito receptor reciba el código, verificará que éste contenga un número 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: 1 1 0 0 0 0 0 0 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 acordar 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 codificados 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, comprobará 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únmente 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 transmitir el último conjunto de datos. El procedimiento a seguir cuando se detecta un error depende de cada sistema. EJEMPLO 2-15 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 44 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS 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 PREGUNTAS DE REPASO 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 algunos 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 aplicaciones. APLICACIÓN 2-1 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. APLICACIÓN 2-2 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 significativo. 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.) 45 SECCIÓN 2-10/APLICACIONES (b) El valor 10, que va después de los dos puntos, representa en número hexadecimal 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 direcció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. APLICACIÓN 2-3 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ígitos hexadecimales. (b) El intervalo binario es de 00000000000000002 a 11111111111111112. En hexadecimal sería de 000016 a FFFF16. (c) Con 4 dígitos hexadecimales, el número total de direcciones es 164  65,536. APLICACIÓN 2-4 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ígitos? (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. 46 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS APLICACIÓN 2-5 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 comunicació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íncrona ordinaria del código ASCII de siete bits para el signo # (23 Hex) con paridad par. inactiva inactiva I N I C I O FIGURA 2-5 D 0 L S B D 1 D 2 D 3 D 4 D 5 D 6 M S B P a r i d a d P A R O Datos seriales asíncronos 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 caracteres 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 paridad especial a cada grupo de bits que se transmite. 47 PROBLEMAS TÉRMINOS IMPORTANTES 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 PROBLEMAS SECCIONES 2-1 Y 2-2 2-1. Convierta los siguientes números binarios en decimales. (d) 01101011 (g)* 1111010111 (a)* 10110 (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 hexadecimales. (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úmeros 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 procedimiento 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 * Encontrará las respuestas a los problemas marcados con un asterisco al nal del libro. 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 escritos 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 decimales 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? 49 PROBLEMAS 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 computadora. 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 adjunte 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 representan 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 continuació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 ejemplo 2-16: 01001000 11000101 11001100 11001000 11001100 ¿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 seguida de una conversión de hexadecimal a decimal. (a) 141710  ______2 (b) 25510  ______2 (c) 110100012  ______10 (d) 11101010001001112  ______10 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 repetida 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 representar 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. RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES 51 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 hexadecimal, en lugar de binario. (a) Si una microcomputadora utiliza una dirección de 20 bits, ¿cuántas localidades de memoria distintas hay? (b) ¿Cuántos dígitos hexadecimales se necesitan para representar la direcció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 valores 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 imagen 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 representar 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 encuentran 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 significa 220). 2-41. Construya una tabla que muestre las representaciones en binario, hexadecimal y BCD de todos los números decimales del 0 al 15. Compare sus resultados 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 52 CAPÍTULO 2/SISTEMAS Y CÓDIGOS NUMÉRICOS SECCIÓN 2-3 1. 9422 2. C2D; 110000101101 5. 11010100100111 6. 0 a 65,535 3. 97B5 4. E9E, E9F, EA0, EA1 SECCIÓN 2-4 1. 1011001092; 000101111000 (BCD) 2. 32 sión. Desventaja: el código BCD requiere más bits. 3. Ventaja: facilidad de conver- 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 característica impar o par del número de 1s en los datos. C A P Í T U L O 3 DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS ■ CONTENIDO 3-1 Constantes y variables booleanas Tablas de verdad Operación OR con compuertas OR Operación AND con compuertas AND Operación NOT Descripción de circuitos lógicos en forma algebraica Evaluación de las salidas de circuitos lógicos Implementación de circuitos a partir de expresiones booleanas Compuertas NOR y NAND Teoremas booleanos Teoremas de DeMorgan 3-2 3-3 3-4 3-5 3-6 3-7 3-8 3-9 3-10 3-11 3-12 3-13 3-14 3-15 3-16 3-17 3-18 3-19 3-20 Universalidad de las compuertas NAND y NOR Representaciones alternas de compuertas lógicas Cuál representación de compuerta se debe usar Símbolos lógicos del estándar IEEE/ANSI Resumen de los métodos para describir circuitos lógicos Comparación entre lenguajes de descripción y lenguajes de programación Implementación de circuitos lógicos con PLDs Formato y sintaxis del HDL 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. 57 SECCIÓN 3-2/TABLAS DE VERDAD 3-1 CONSTANTES Y VARIABLES BOOLEANAS El álgebra booleana difiere en gran medida del álgebra ordinaria, ya que a las constantes 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 cualquier 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, dependiendo 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. TABLA 3-1 0 lógico 1 lógico Falso Verdadero Apagado Encendido Bajo Alto No Sí Interruptor abierto Interruptor cerrado 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 consideran 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 debemos 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, transistores 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ógicas 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 * 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 FIGURA 3-1 Ejemplo de tablas de verdad para circuitos de (a) dos entradas, (b) tres entradas y (c) cuatro entradas. Salida A 0 0 0 0 1 1 1 1 Entradas A 0 0 1 1 B 0 1 0 1 x 1 0 1 0 B 0 0 1 1 0 0 1 1 C 0 1 0 1 0 1 0 1 (b) A B ? (a) x x 0 1 1 0 0 0 0 1 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 (c) 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. PREGUNTAS DE REPASO 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. SECCIÓN 3-3/OPERACIÓN OR CON COMPUERTAS 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. 59 OR A 0 0 1 1 B 0 1 0 1 x=A+B 0 1 1 1 x=A+B A B Compuerta OR (a) (b) La expresión booleana para la operación OR es xAB 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 booleana 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 x1111 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 compuerta 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. FIGURA 3-3 Símbolo y tabla de verdad para una compuerta OR de tres entradas. A B C x=A+B+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 x=A+B+C 0 1 1 1 1 1 1 1 * El término compuerta proviene de la operación de inhibición/habilitación que se describe en el capítulo 4. 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  representa 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”. EJEMPLO 3-1 FIGURA 3-4 Ejemplo del uso de una compuerta OR en un sistema de alarma. 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 proceso 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 comparador 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 presió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. Transductor de temperatura VT Comparador TH Alarma VTR Transductor de presión VP Comparador PH Proceso químico VPR 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 alimentarse 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. 61 SECCIÓN 3-3/OPERACIÓN OR CON COMPUERTAS OR EJEMPLO 3-2 FIGURA 3-5 3-2. Ejemplo 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. A 1 A Salida= A + B 0 B 1 B 0 1 Salida 0 t0 t1 t2 t3 t4 t5 t6 t7 Tiempo Solución La salida de la compuerta OR estará en ALTO siempre que cualquiera de las entradas 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. EJEMPLO 3-3A FIGURA 3-6 Ejemplos 3-3A y B. Para la situación que se describe en la figura 3-6, determine la forma de onda en la salida de la compuerta OR. 1 A 0 B A 1 0 B 1 C C A+B+C 0 1 SAL 0 SAL t1 Tiempo 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 62 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS 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 compuerta 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 intervalo 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. EJEMPLO 3-3B ¿Qué le pasaría a la deformación en la salida de la figura 3-6 si la entrada C se asentara 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 deformación no aparecerá en la salida. PREGUNTAS DE REPASO 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 xAB 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. SECCIÓN 3-4/OPERACIÓN AND CON COMPUERTAS AND FIGURA 3-7 (a) Tabla de verdad para la operación AND; (b) símbolo de la compuerta AND. 63 AND A 0 0 1 1 B 0 1 0 1 x=A•B 0 0 0 1 A x = AB B Compuerta AND (a) (b) 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 compuerta 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. 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 B C x = ABC Observe la diferencia entre los símbolos para la compuerta AND y la compuerta 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”. 64 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS EJEMPLO 3-4 FIGURA 3-9 3-4. Determine la salida x de la compuerta AND en la figura 3-9, para las formas de onda de entrada dadas. EJEMPLO 1 A 0 A 1 B x = AB B 0 1 x 0 t0 t1 t2 t3 t4 t5 t6 t7 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 mismo 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. EJEMPLO 3-5A Determine la forma de onda de salida para la compuerta AND que se muestra en la figura 3-10. FIGURA 3-10 Ejemplos 3-5A y 3-5B. A A B B x x 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 entrada 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. EJEMPLO 3-5B ¿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 65 SECCIÓN 3-5/OPERACIÓN NOT 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. PREGUNTAS DE REPASO 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 operación NOT, el resultado x puede expresarse así: xA 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, 01 porque 0 no es 1 10 porque 1 no es 0 y 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. NOT A 0 1 x=A 1 0 (a) A NOT 1 0 x=A A x La presencia de un círculo pequeño siempre denota la inversión (b) 1 0 (c) 66 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS 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. Invierte (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. APLICACIÓN 3-1 FIGURA 3-12 Una compuerta NOT que indica que un botón no está oprimido cuando su salida es verdadera. 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. +5 V Botón Nivel lógico 1 (verdadero) cuando está oprimido (falso cuando el botón no está oprimido). Oprimido No oprimido Nivel lógico 1 (verdadero) cuando no está oprimido (falso cuando el botón está oprimido). Resumen de las operaciones booleanas Las reglas para las operaciones OR, AND y NOT pueden resumirse de la siguiente manera: PREGUNTAS DE REPASO OR AND NOT 000 000 01 011 101 111 010 100 111 10 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 INVERSOR 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 compuertas OR, AND y el circuito NOT son los bloques fundamentales para la construc- SECCIÓN 3-6/DESCRIPCIÓN DE CIRCUITOS LÓGICOS EN FORMA ALGEBRAICA FIGURA 3-13 (a) Circuito lógico con su expresión booleana. (b) Circuito lógico cuya expresión requiere paréntesis. A 67 A•B x=A•B+C B C (a) A A+B x = ( A + B) • C B C (b) 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 maneras: (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 expresió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 entrada 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. FIGURA 3-14 Circuitos que utilizan INVERSORES. A A x=A+B B A A+B B (a) x=A+B (b) 68 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS En la figura 3-14(b) la salida de la compuerta OR es igual a A  B y se alimenta 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 entrada para dos compuertas distintas. A A B C ABC A+D A x = ABC ( A + D) A+D D (a) A A+B ( A + B) C B C ( A + B) C D + ( A + B)C D E x = [D + ( A + B) C] • E (b) FIGURA 3-15 PREGUNTAS DE REPASO Más ejemplos. 1. En la figura 3-15(a) cambie cada compuerta AND por una compuerta OR, y cambie 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 obtener 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 SECCIÓN 3-7/EVALUACIÓN DE LAS SALIDAS DE CIRCUITOS LÓGICOS 69 las variables en la expresión y realizamos las operaciones indicadas como se muestra a continuación: x = = = = = = ABC(A + D) 0 # 1 # 1 # (0 + 1) 1 # 1 # 1 # (0 + 1) 1 # 1 # 1 # (1) 1#1#1#0 0 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. x = = = = = = = [D + (A + B)C] # E [1 + (0 + 0) # 1] # 1 [1 + 0 # 1] # 1 [1 + 0] # 1 [1 + 1] # 1 1#1 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, respectivamente. 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. 70 FIGURA 3-16 Análisis de un circuito lógico mediante el uso de tablas de verdad. CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS A u=A B v = AB x w = BC C (a) A B 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 C u= v= A AB 0 1 1 1 0 1 1 1 0 0 1 0 0 0 1 0 w= x= BC v+w A B 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 (b) A B 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 C u= v= A AB 0 1 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 (d) C u= v= A AB 0 1 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 w= x= BC v+w (c) w= x= BC v+w 0 0 0 1 0 0 0 1 A B 0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 C u= v= A AB 0 1 0 1 1 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 1 0 0 w= x= BC v+w 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 (e) 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 problema 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. 71 SECCIÓN 3-8/IMPLEMENTACIÓN DE CIRCUITOS A PARTIR DE EXPRESIONES. . . EJEMPLO 3-6 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. PREGUNTAS DE REPASO A B C D t  ABC uAD vA  D 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 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. 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. FIGURA 3-17 Construcción de un circuito lógico a partir de una expresión booleana. AC BC ABC y = AC + BC + ABC (a) A AC C B B BC y = AC + BC + ABC C C A ABC B C (b) 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 corresponde 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. EJEMPLO 3-7 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 compuerta 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. FIGURA 3-18 Ejemplo 3-7. A A+B x = (A + B)(B + C) B B B+C C 73 SECCIÓN 3-9/COMPUERTAS NOR Y NAND 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 NOR Y 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 compuerta 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. FIGURA 3-19 (a) símbolo NOR; (b) circuito equivalente; (c) tabla de verdad. x=A+B A B Indica inversión (a) A+B A x=A+B B (b) A 0 0 1 1 B 0 1 0 1 OR NOR A+B 0 1 1 1 A+B 1 0 0 0 (c) 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 cualquiera 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 operación puede aplicarse a las compuertas NOR con más de dos entradas. 74 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS EJEMPLO 3-8 FIGURA 3-20 Ejemplo 3-8. 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. 1 A 0 A 1 B x=A+B B 0 1 x 0 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, puede 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. EJEMPLO 3-9 Determine la expresión booleana para una compuerta NOR de tres entradas, seguida 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 través de un INVERSOR para producir x = (A + B + C) 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 expresión (A  B  C) permanezca sin cambios. Esto es, x = (A + B + C) = (A + B + C) 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 inversió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. FIGURA 3-21 Ejemplo 3-9. A B C A+B+C x=A+B+C=A+B+C 75 SECCIÓN 3-9/COMPUERTAS NOR Y NAND 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 nuevo, 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. FIGURA 3-22 (a) Símbolo NAND; (b) circuito equivalente; (c) tabla de verdad. x = AB A AND NAND AB 0 0 0 1 AB 1 1 1 0 B (a) A AB B 0 1 0 1 A 0 0 1 1 Indica inversión AB (c) B (b) 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 condiciones 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 aplicarse a las compuertas NAND que tienen más de dos entradas. EJEMPLO 3-10 FIGURA 3-23 3-10. Determine la forma de onda de salida de una compuerta NAND que tiene las entradas que se muestran en la figura 3-23. Ejemplo A A B B x = AB x 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. 76 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS EJEMPLO 3-11 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érmino 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érminos A, B y (C  D), y después invierte todo el resultado. FIGURA 3-24 Ejemplos 3-11 y 3-12. 1 C C+D 0 0 1 1 D x = AB(C + D) B 1 A EJEMPLO 3-12 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. x = AB(C + D) = 1 # 1 # (1 + 0) = 1 # 1 # (1) = 1#1#0 = 0 = 1 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). PREGUNTAS DE REPASO 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 cambie 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 circuito lógico y expresar su operación en forma matemática. Para continuar con nuestro estudio del álgebra booleana vamos a investigar los diversos teoremas booleanos (también conocidos como reglas booleanas) que pueden ayudarnos a simplificar las 77 SECCIÓN 3-10/TEOREMAS BOOLEANOS x x x 0 0 0 (1) (5) x•0=0 x+0=x x x 1 x 1 1 (2) (6) x•1=x x+1=1 x x x x (3) (7) x•x=x x+x=x x x 1 0 (4) (8) x•x=0 x+x=1 FIGURA 3-25 Teoremas con una sola variable. 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 multiplicació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 podemos 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 contiene 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: (9) (10) xyyx x#y = y#x 78 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS (11) (12) (13a) (13b) (14) (15a) (15b) x  (y  z)  (x  y)  z  x  y  z x(yz)  (xy)z  xyz x(y  z)  xy  xz (w  x)(y  z)  wy  xy  wz  xz x  xy  x x + xy = x + y x + xy = x + y 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 podemos agrupar las variables en una expresión AND o en una expresión OR de cualquier 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 ordinaria. 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 factorizar la variable B: ABC + A B C = B(AC + A C) 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, ABC  ABD  AB(C  D) 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 contrapartes 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 continuación: x y xy x  xy 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 1 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) x1 x [usando el teorema (6)] [usando el teorema (2)] Todos estos teoremas booleanos pueden ser útiles para simplificar una expresió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 79 SECCIÓN 3-10/TEOREMAS BOOLEANOS 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. EJEMPLO 3-13 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 EJEMPLO 3-14 [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)]: zAAABBABB 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), zB EJEMPLO 3-15 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 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 extremadamente útiles para simplificar expresiones en las cuales se invierte un producto o la suma de variables. Los dos teoremas son: (16) (17) (x  y)  x  y (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 variable 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 comprueban 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 individuales 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: (AB + C) = (AB) # C 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 AB # C = (A + B) # C Ahora, si sustituimos B por B, al final nos queda (A + B) # C = A C + BC Este resultado final sólo contiene signos de inversión para invertir una sola variable. EJEMPLO 3-16 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, tenemos que z = (A + C) + (B + D) SECCIÓN 3-11/TEOREMAS DE DEMORGAN 81 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: z = (A + C) + (B + D) = (A # C) + B # D 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 z = AC + BD 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 z = = = = A + B#C A # (B # C) A # (B + C) A # (B + C) Ejemplo 2   1A + BC2  1D + EF2 = (A + BC) + (D + EF) = (A # BC) + (D # EF) = [A # (B + C)] + [D # (E + F)] = AB + AC + DE + DF Los teoremas de DeMorgan pueden extenderse fácilmente a más de dos variables. Por ejemplo, puede demostrarse que x + y + z = x#y#z x#y#z = x + y + z 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 extenderse 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 continuación se muestra otro ejemplo. x = AB # CD # EF = AB + CD + EF  AB  CD  EF 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): x + y = x#y El lado izquierdo de la ecuación puede considerarse como la salida de una compuerta NOR cuyas entradas son x y y. Por otra parte, el lado derecho de la ecuación es el 82 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS FIGURA 3-26 (a) Circuitos equivalentes implicados por el teorema (16); (b) símbolo alternativo para la función NOR. x x x+y y y x y x•y=x+y (a) x x•y=x+y y (b) 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ímbolos 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írculos en las entradas representan la operación de inversión. Ahora consideremos el teorema (17): x#y = x + y Podemos implementar el lado izquierdo de la ecuación mediante una compuerta 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 INVERSORES 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 compuerta OR con entradas invertidas para representar a la función NAND, por lo general, 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. FIGURA 3-27 (a) Circuitos equivalentes implicados por el teorema (17); (b) símbolo alternativo para la función NAND. x x xy y y x y x + y = xy (a) x x + y = xy y (b) EJEMPLO 3-17 FIGURA 3-28 Ejemplo 3-17. 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. A B C z=A•B•C=A+B+C=A+B+C C 83 SECCIÓN 3-12/UNIVERSALIDAD DE LAS COMPUERTAS NAND Y NOR Solución La expresión para z es z  ABC. Utilizamos el teorema de DeMorgan para descomponer el signo de inversión grande: z = A + B + C Ahora cancelamos la doble inversión en C para obtener z = A + B + C PREGUNTAS DE REPASO 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 NAND Y NOR Todas las expresiones booleanas consisten de varias combinaciones de las operaciones básicas de OR, AND e INVERSOR. Por lo tanto, cualquier expresión puede implementarse mediante el uso de combinaciones de compuertas OR, AND e INVERSOR. No obstante, es posible implementar cualquier expresión lógica utilizando sólo compuertas NAND. Esto se debe a que si las compuertas NAND se combinan en forma apropiada, pueden usarse para realizar cada una de las operaciones booleanas OR, AND e INVERSOR. La figura 3-29 demuestra este concepto. x=A•A=A A A (a) A 1 INVERSOR x = AB AB A 2 B B AND (b) A A 1 x=AB=A+B A 3 2 FIGURA 3-29 booleana. B B B (c) OR Las compuertas NAND pueden usarse para implementar cualquier función 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 conectadas 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 salida es x  A  A  A. x=A+A=A A A (a) INVERSOR A+B A A+B 1 A 2 B B OR (b) A 1 A x = A + B = AB 3 B B B 2 (c) FIGURA 3-30 booleana. A AND Las compuertas NOR pueden utilizarse para implementar cualquier operación 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 simplificarse, 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 compuertas 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. 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 85 SECCIÓN 3-12/UNIVERSALIDAD DE LAS COMPUERTAS NAND Y NOR 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 muestran 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. 14 13 VCC 12 11 10 9 8 2 3 4 5 6 GND 7 14 13 VCC 12 11 10 9 8 2 3 4 5 6 GND 7 74LS00 1 14 13 VCC 12 11 10 9 8 74LS08 74LS32 1 FIGURA 3-31 2 3 4 5 6 GND 7 1 Circuitos integrados disponibles para el ejemplo 3-18. 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 implementació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 mostrará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. 86 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS FIGURA 3-32 Posibles implementaciones para el ejemplo 3-18. 74LS08 (1) A B (3) (2) 74LS32 (1) (3) (a) x = AB + CD (2) 74LS08 (4) C D (6) (5) AND A 1 3 5 B (b) x 7 C 2 4 6 D AND OR Después de eliminar las inversiones dobles (1) 74LS00 A B (3) (2) (9) 74LS00 (8) (10) (c) (4) C D PREGUNTAS DE REPASO x 74LS00 (6) (5) 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, convirtiendo 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 87 SECCIÓN 3-13/REPRESENTACIONES ALTERNAS DE COMPUERTAS LÓGICAS utilicen estos símbolos estándar de manera exclusiva, cada vez es más común encontrar 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 compuerta 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 burbujas (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. FIGURA 3-33 Símbolos estándar y alternativos para varias compuertas lógicas y para el inversor. A A•B AND A + B = AB B B A A A+B A A•B=A+B OR B B A AB NAND B A A A + B = AB B A+B A A•B=A+B NOR B INV A B A A A 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ímbolos 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í. 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 interpretació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 respectivamente, 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. FIGURA 3-34 Interpretación de los dos símbolos de compuertas NAND. A La salida cambia a BAJO sólo cuando todas las entradas están en ALTO. AB B Activa en ALTO El estado BAJO es el estado activo. (a) La salida está en ALTO cuando cualquier entrada está en BAJO. A + B = AB A B Activa en BAJO El estado ALTO es el estado activo. (b) 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. SECCIÓN 3-14/CUÁL REPRESENTACIÓN DE COMPUERTA SE DEBE USAR 89 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. Esperamos 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 representaciones 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 salida. 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). EJEMPLO 3-19 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 cualquiera cuando el símbolo de operación es un OR y la palabra todas cuando se usa un AND. FIGURA 3-35 Interpretación de los dos símbolos de compuerta OR. A La salida cambia a ALTO cuando cualquiera de sus entradas se encuentra en ALTO. A+B B Activa en ALTO El estado ALTO es el estado activo. (a) A A•B=A+B B Activa en BAJO La salida cambia a BAJO sólo cuando todas sus entradas están en BAJO. El estado BAJO es el estado activo. (b) PREGUNTAS DE REPASO 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 operación del circuito. El uso apropiado de los símbolos de compuerta alternativos en el 90 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS 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. A 1 B 3 Z C 2 D (a) A 1 X B 3 C Z Activa en ALTO 2 Y D (b) A 1 X 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 (d) B 3 Z C 2 D Y Activa en BAJO (c) 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 circuito 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 operación del circuito. La representación de la figura 3-36(b) se obtiene a partir del diagrama del circuito 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 describir 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 establece 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 circuito original, sustituyendo las compuertas NAND 1 y 2 por sus símbolos alternativos. 91 SECCIÓN 3-14/CUÁL REPRESENTACIÓN DE COMPUERTA SE DEBE USAR 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, encender 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 producir 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 representaciones del circuito. Colocación de las burbujas Consulte la representación del circuito de la figura 3-36(b) y observe que se seleccionaron 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 manera 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. EJEMPLO 3-20 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 represente la operación del mismo de una manera más eficiente. A A Z 2 B C Z ALARMA 2 B C 1 1 D D (a) FIGURA 3-37 Ejemplo 3-20. (b) ALARMA 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. EJEMPLO 3-21 FIGURA 3-38 Ejemplo 3-21. 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. A A 1 1 B B C Z C Z 2 2 D D E E (a) (b) 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 conectadas 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 condiciones de entrada necesarias para activar la salida. Ilustraremos esto en los siguientes ejemplos que, por coincidencia, utilizan diagramas de circuitos tomados de los diagramas esquemáticos lógicos de una microcomputadora real. EJEMPLO 3-22 El circuito lógico de la figura 3-39 genera una salida llamada MEM que se utiliza para activar los circuitos integrados de memoria en cierta microcomputadora. Determine las condiciones de entrada necesarias para activar a MEM. 93 SECCIÓN 3-14/CUÁL REPRESENTACIÓN DE COMPUERTA SE DEBE USAR FIGURA 3-39 3-22. Ejemplo X RD MEM ROM-A W ROM-B Y RAM V 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 trabajo 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. 2. 3. 4. 5. 6. EJEMPLO 3-23 FIGURA 3-40 3-23. MEM es activa en BAJO y cambará a BAJO sólo cuando X y Y estén en ALTO. X estará en ALTO sólo cuando RD  0. Y estará en ALTO cuando W o V estén en ALTO. V estará en ALTO cuando RAM  0. W estará en ALTO cuando ROM-A o ROM-B  0. 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 A1 Nota: Todas las compuertas son CMOS A2 A3 A4 W 74HC30 Y A5 74HC32 74HC02 A6 A7 A0 ENTRADA X 74HC02 SALIDA UNIDAD 94 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS Solución Una vez más, interpretaremos el diagrama paso por paso: UNIDAD estará activa en BAJO y cambiará a ALTO sólo cuando X  Y  0. X estará en BAJO cuando ENTRADA o SALIDA estén en ALTO. Y estará en BAJO sólo cuando W  0 y A0  0. 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. 1. 2. 3. 4. Observe el extraño símbolo para la compuerta NAND CMOS de ocho entradas (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, significa que se encuentra en su estado de activa en BAJO. Cuando una señal no se encuentra 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 convertido 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: RD, ROM-A, ROM-B, RAM , MEM Recuerde que la barra superior es sólo una manera de enfatizar que estas señales 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). SECCIÓN 3-15/SÍMBOLOS LÓGICOS DEL ESTÁNDAR IEEE/ANSI PREGUNTAS DE REPASO 95 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ímbolos estándar tradicionales utilizados en la industria digital durante muchos, muchos años. Estos símbolos tradicionales utilizan una forma distintiva para cada compuerta 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 compuertas 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 inversió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. FIGURA 3-41 Símbolos lógicos estándar: (a) tradicionales; (b) IEEE/ANSI. NOT x A A 1 x & x ≥1 x & x ≥1 x AND A A x B B OR A A x B B NAND A A x B B NOR A A x B B (a) (b) 96 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS 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 denota 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 cambiará 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 utilice cada vez más. En la mayoría de los diagramas de circuitos de este libro emplearemos los símbolos tradicionales. PREGUNTAS DE REPASO 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 hoy Y (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. 97 SECCIÓN 3-16/RESUMEN DE LOS MÉTODOS PARA DESCRIBIR CIRCUITOS. . . Símbolos lógicos del estándar IEEE/ANSI. Expresiones de álgebra booleana. Diagramas de tiempos. EJEMPLO 3-24 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ímbolos lógicos, tablas de verdad y diagramas de tiempos. Solución Vea la figura 3-42. Expresión booleana luz_advertencia 5 conductor_presente • cinturon_enganchado • interruptor_encendido (a) Diagrama esquemático conductor_presente cinturon_enganchado Luz_advertencia interruptor_encendido (b) Tabla de verdad conductor_presente cinturon_enganchado interruptor_encendido Luz_advertencia 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 0 (c) Diagrama de tiempos Nombre Val ignition_on 0 buckled_up 0 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 driver_present 1 warning_light 0 (d) 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. 98 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS 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 profesió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 comunicar la operación de los sistemas digitales. PREGUNTAS DE REPASO 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 obstá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 conocer 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 describir 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 descripció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 documentar 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 complejos 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 herramientas 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 forma 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. SECCIÓN 3-17/COMPARACIÓN ENTRE LENGUAJES DE DESCRIPCIÓN Y. . . 99 mediante electrónica. A estos dispositivos se les conoce como dispositivos lógicos programables (PLDs). A diferencia del VHDL, este lenguaje no está diseñado para usarse como un lenguaje universal para describir cualquier circuito lógico, sino para programar 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 al VHDL. También cuenta con características que aprovechan por completo la arquitectura de los dispositivos 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 Altera. 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 interconectar esos bloques y formar un sistema completo. Hay otros HDLs disponibles que son más adecuados para programar dispositivos 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 lenguajes 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 computadoras 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 instrucciones (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 rapidez 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 computadora: 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 digital. 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 similares 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 particular de cada uno en los sistemas digitales. 100 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS EJEMPLO 3-25 Compare la operación de una computadora y un circuito lógico al realizar la operació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 decisiones. 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 responder a los cambios en las entradas. FIGURA 3-43 El proceso de decisiones de un programa de computadora. No ¿Está A en ALTO? Sí No Hacer que y cambie a BAJO ¿Está B en ALTO? Hacer que y cambie a BAJO Sí Hacer que y cambie a ALTO Regresar y repetir PREGUNTAS DE REPASO 1. 2. 3. 4. ¿Qué significa HDL? ¿Cuál es el propósito de un HDL? ¿Cuál es el propósito de un lenguaje de programación de computadoras? ¿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 microcomputadoras o los microcontroladores, los cuales “ejecutan” un programa de instrucciones. 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 SECCIÓN 3-18/IMPLEMENTACIÓN DE CIRCUITOS LÓGICOS CON PLDS FIGURA 3-44 Configuración de las conexiones de hardware con los dispositivos lógicos programables. 101 ENTRADAS A B digitales C D E F G H Circuitos lógicos Matriz de conexiones programables 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 adecuadamente. La computadora ejecuta una aplicación de software especial llamada compilador 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 forma 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 a VHDL en un formato que le permita omitir un lenguaje y concentrarse 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 proporcionarle la flexibilidad de enfocarse en cualquiera de los dos lenguajes, o de aprender 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 separados 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. PREGUNTAS DE REPASO 1. ¿Qué significa PLD? 2. ¿Cómo se reconfiguran los circuitos en forma electrónica en un PLD? 3. ¿Qué hace un compilador? 102 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS 3-19 FORMATO Y 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, aprendemos 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 lenguaje. 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 entender, 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 especificaciones de entradas/salidas. 2. La definición de la forma en que las salidas responden a las entradas, es decir su operación. FIGURA 3-45 Descripción de un diagrama esquemático. a b ENTRADA AND2 SALIDA ENTRADA y 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. FIGURA 3-46 Formato de los archivos de HDL. Documentación Definiciones de E/S Descripción funcional En un lenguaje basado en texto, el circuito que se describe debe tener un nombre. 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 binario 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 posibles. En un lenguaje basado en texto, la definición de la operación del circuito está SECCIÓN 3-19/FORMATO Y SINTAXIS DEL HDL 103 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úsculas. 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. FIGURA 3-47 Elementos esenciales en AHDL. SUBDESIGN compuerta and ( a, b :INPUT; y :OUTPUT; ) BEGIN y  a & b; END; 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 variable 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 conoce 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: & # ! $ PREGUNTAS DE REPASO AND OR NOT XOR 1. ¿Qué aparece dentro de los paréntesis ( ) después de SUBDESIGN? 2. ¿Qué aparece entre BEGIN y END? AHDL 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. 104 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS VHDL DESCRIPCIÓN BOOLEANA MEDIANTE EL USO DE VHDL 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 para VHDL 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. 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; 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). En VHDL, la descripción BIT indica al compilador 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 arquitectura. 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 instrucciones (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. PREGUNTAS DE REPASO 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? 105 SECCIÓN 3-20/SEÑALES INTERMEDIAS 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. Señal intermedia m a b ENTRADA m ENTRADA SALIDA c y ENTRADA FIGURA 3-49 Diagrama de un circuito lógico con una variable intermedia. 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 despué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 comentario 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 AHDL 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 encabezado. 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 tratando de hacer, además ayudan a que cualquier otra persona comprenda el significado del código. 106 FIGURA 3-50 Las variables intermedias en AHDL, descritas en la figura 3-49. CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 % Variables intermedias en AHDL Sistemas digitales 10a ed NS Widmer MAYO 23, 2005 % SUBDESIGN fig3 50 ( a,b,c :INPUT; define y :OUTPUT; define ) VARIABLE m :NODE; nombra BEGIN m  a & b; genera y  m # c; genera END; (Figura 3 49) las entradas del bloque la salida del bloque una señal intermedia término de producto oculto suma en la salida 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 asignació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. VHDL PREGUNTAS DE REPASO 1. 2. 3. 4. 5. ¿Cuál es la designación que se utiliza para las variables intermedias? ¿En dónde se declaran estas variables? ¿Importa si la ecuación m o y se declara primero? ¿Qué carácter se utiliza para limitar un bloque de comentarios? ¿Qué caracteres se utilizan para comentar una sola línea? SEÑALES LOCALES DE VHDL 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 guiones 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 SIGNAL. 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 (conectar) un valor a y (y < m OR c;). Recuerde que las instrucciones de asignación son 107 RESUMEN 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 Variables intermedias en VHDL (Figura 3 49) Sistemas digitales 10a ed NS Widmer MAYO 23, 2005 ENTITY fig3 51 IS PORT( a, b, c :IN BIT; y :OUT BIT); END fig3 51; define las entradas del bloque define la salida del bloque ARCHITECTURE ckt OF fig3 51 IS SIGNAL m BEGIN m <= a AND b; y <= m OR c; END ckt; FIGURA 3-51 :BIT; nombra una señal intermedia genera término de producto oculto genera suma en la salida Señales intermedias en VHDL, descritas en la figura 3-49. 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í. PREGUNTAS DE REPASO 1. 2. 3. 4. ¿Cuál es la designación utilizada para las señales intermedias? ¿En dónde se declaran estas señales? ¿Importa si la ecuación m o y se declara primero? ¿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. 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 operaciones 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 caracterí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 inaccesibles 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. 109 PROBLEMAS SECCIÓN 3-3 3-1.* Dibuje la forma de onda de salida para la compuerta OR de la figura 3-52. B FIGURA 3-52 A A B C B x C B 3-2. Suponga que la entrada A en la figura 3-52 se conectó a tierra en forma inadvertida (es decir, A  0). Dibuje la forma de onda de salida resultante. B 3-3.* Suponga que la entrada A en la figura 3-52 se pone en corto en forma inadvertida con la línea de suministro de 5 V (es decir, A  1). Dibuje la forma de onda de salida resultante. C 3-4. Lea las siguientes aseveraciones con respecto a una compuerta OR. Al principio 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. B 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 B 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 permanente con 5 V. D 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. B 3-8.* Cambie la compuerta OR en la figura 3-6 por una compuerta AND y dibuje la forma de onda de la salida. B 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? B 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. * Encontrará las respuestas a los problemas marcados con un asterisco al nal del libro. 110 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS SECCIONES 3-5 A 3-7 B B FIGURA 3-53 3-11. Aplique la forma de onda A de la figura 3-23 a la entrada de un INVERSOR. 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). A B x C (a) A B C x D (b) B B 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 compuerta, 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 B 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) 111 PROBLEMAS (d) x  W  PQ (e) z  MN(P  N) (f) x  (A  B)(A  B) SECCIÓN 3-9 B 3-17.* (a) Aplique las formas de onda de entrada de la figura 3-54 a una compuerta 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. FIGURA 3-54 A B C B C 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 determinar 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. FIGURA 3-55 A X B C B B 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 C B 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  __________ 112 CAPÍTULO 3/DESCRIPCIÓN DE LOS CIRCUITOS LÓGICOS C 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 C B B C C B B C 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, simplifí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 compuertas 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. FIGURA 3-56 Sensor de temperatura Sensor de presión Sensor de RPM T W P R Luz de advertencia 113 PROBLEMAS SECCIONES 3-13 Y 3-14 B 3-33. Para cada una de las siguientes instrucciones, dibuje el símbolo de compuerta 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ógicas 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 operació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 salida 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 utilice 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. B C C D B FIGURA 3-57 A B x C D E B B N 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 completa 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 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.) FIGURA 3-58 +5 V +5 V A LUZ +5 V B SECCIÓN 3-15 B 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 H 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 utilizará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 información vital sobre el proyecto. SECCIÓN 3-18 B 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 115 RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES H (desde la fila superior hasta la fila inferior) de la siguiente manera: AAABADHE. 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 produzca las siguientes funciones de salida: XAB Y  AB ZABC H 3-46. Escriba el código de HDL en el lenguaje de su preferencia, para implementar 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 C 3-47.* Consulte la figura 3-40 en el ejemplo 3-23. Las entradas de A7 a A0 son entradas 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 C C 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. sólo para A  B  1. SECCIÓN 3-6 1. x  A  B  C  AD 2. x  D(AB  C)  E 2. y estará en BAJO 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. B  0, E  1 y C o D o ambas sean 1. 3. Dos.  0, C  D  1 7. W 2. Z cambiará a BAJO cuando A  4. Dos. 5. BAJO. 6. A  B 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 operació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 ejecutan 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. 117 RESPUESTAS A LAS PREGUNTAS DE REPASO DE LAS SECCIONES VHDL 1. Para dar un nombre al circuito y definir sus entradas y salidas. ARCHITECTURE. 3.  2. La descripción SECCIÓN 3-20 AHDL 1. NODE. 2. Después de la definición de E/S y antes de BEGIN. 4. %. 5. -- 3. No. VHDL 1. SIGNAL. 2. Dentro de ARCHITECTURE, antes de BEGIN. 3. No. 4. -- C A P Í T U L O 4 CIRCUITOS LÓGICOS COMBINACIONALES ■ CONTENIDO 4-1 4-2 Forma de suma de productos Simplificación de circuitos lógicos Simplificación algebraica Diseño de circuitos lógicos combinacionales Método de mapas de Karnaugh Circuitos OR exclusivo y NOR exclusivo Generador y comprobador de paridad Circuitos de habilitación/ deshabilitación Características básicas de los CIs digitales 4-3 4-4 4-5 4-6 4-7 4-8 4-9 4-10 4-11 4-12 4-13 4-14 4-15 4-16 4-17 Diagnóstico de fallas en sistemas digitales Fallas internas en los circuitos integrados digitales Fallas externas Ejemplo práctico de diagnóstico de fallas Dispositivos lógicos programables Representación de datos en HDL Tablas de verdad mediante el uso de HDL 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 requieren que la expresión lógica se encuentre en forma de suma de productos (SOP). Algunos ejemplos de esta forma son: 1. ABC + ABC 2. AB + ABC + C D + D 3. AB + CD + EF + GK + HL Cada una de estas expresiones de suma de productos consiste de dos o más términos 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 forma 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 consiste 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: 1. (A + B + C)(A + C) 2. (A + B)(C + D)F 3. (A + C)(B + D)(B + C)(A + D + E) 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 121 SECCIÓN 4-3/SIMPLIFICACIÓN ALGEBRAICA con la forma de producto de sumas (POS). No obstante, de vez en cuando se presentará esta forma para algunos circuitos lógicos que tengan una cierta estructura. PREGUNTAS DE REPASO 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érminos. Así, la nueva expresión puede utilizarse para implementar un circuito equivalente al circuito original, pero que contenga menos compuertas y conexiones. Para ilustrar esto, el circuito de la figura 4-1(a) puede simplificarse para producir 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. 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 + BC A B x = A B(A + BC) BC C (a) A B x=ABC C C (b) En las siguientes secciones estudiaremos dos métodos para simplificar los circuitos lógicos. Uno de ellos utiliza los teoremas de álgebra booleana y, como veremos, 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. Desafortunadamente, no siempre es obvio cuáles teoremas deben aplicarse para producir 122 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES 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 simplificarse 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 factorización en donde sea posible. Este proceso de factorización deberá ayudar a eliminar uno o más términos. EJEMPLO 4-1 Simplifique el circuito lógico que se muestra en la figura 4-2(a). AC A A B(A C) A z = ABC + AB(AC) C B A ABC B (a) B B+C z = A(B + C) C A (b) FIGURA 4-2 Ejemplo 4-1. 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] SECCIÓN 4-3/SIMPLIFICACIÓN ALGEBRAICA 123 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: z = AC(B + B) + AB Como B  B  1, entonces z = AC(1) + AB = AC + AB Ahora podemos factorizar A, lo cual produce z = A(C + B) 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). EJEMPLO 4-2 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, z = AB(C + C) + ABC = AB(1) + ABC = AB + ABC Podemos factorizar la variable A de ambos términos: z = A(B + BC) Utilizando el teorema (15b): z = A(B + C) 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: z = AB C + ABC + ABC + ABC 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 = AB(C + C) + AC(B + B) = AB # 1 + AC # 1 = AB + AC = A(B + C) 124 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES 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. EJEMPLO 4-3 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 factorizació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 SECCIÓN 4-3/SIMPLIFICACIÓN ALGEBRAICA 125 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 simplificació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. EJEMPLO 4-4 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 multiplicació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 último nos queda x  BD 126 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES EJEMPLO 4-5 FIGURA 4-3 4-5. Ejemplo Simplifique el circuito de la figura 4-3(a). A A z B z B (a) (b) 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 equivalente pero más simple. EJEMPLO 4-6 Simplifique x  ABC  ABD  C D. Solución Inténtelo, pero no podrá simplificar más esta expresión. PREGUNTAS DE REPASO 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. 127 SECCIÓN 4-4/DISEÑO DE CIRCUITOS LÓGICOS COMBINACIONALES 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 producirá 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. FIGURA 4-4 Circuito que produce una salida de 1 sólo para la condición en la que A  0 y B  1. A 0 0 1 1 B 0 1 0 1 (a) x 0 1 0 0 A A x = AB B (b) 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 circuito 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 compuerta AND. 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. A AB ALTO sólo cuando A = 0, B = 0 AB ALTO sólo cuando A = 0, B = 1 AB ALTO sólo cuando A = 1, B = 0 B A B A B A AB ALTO sólo cuando A = 1, B = 1 B Ahora consideremos el caso que se muestra en la figura 4-6(a), en donde tenemos una tabla de verdad que indica que la salida x debe ser 1 para dos casos distintos: 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 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 implementación se muestra en la figura 4-6(b), en donde la expresión resultante para la salida es x  AB  AB. 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 A 0 0 1 1 B 0 1 0 1 x 0 1 1 0 AB B x = AB + AB A AB B (b) (a) 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 entradas (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 TABLA 4-1 A B C x 0 0 0 0 0 0 1 0 0 1 0 1 : ABC 0 1 1 1 : ABC 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 : ABC Procedimiento completo de diseño Cualquier problema lógico puede resolverse mediante el uso del siguiente procedimiento: 1. Interprete el problema y establezca una tabla de verdad para describir su operació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. SECCIÓN 4-4/DISEÑO DE CIRCUITOS LÓGICOS COMBINACIONALES 129 El siguiente ejemplo ilustra el procedimiento completo de diseño. EJEMPLO 4-7 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). 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 : ABC 1 1 0 1 : ABC 1 1 1 1 : ABC : ABC 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 verdad (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 considerar 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 130 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES 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. FIGURA 4-7 Ejemplo 4-7. B BC C A AC x = BC + AC + AB AB EJEMPLO 4-8 Consulte la figura 4-8(a), en donde un convertidor analógico-digital está monitoreando 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 intervalos de 1 V, 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. MSB Convertidor A analógico- B C digital D VB A B Circuito C lógico D LSB (a) A z = A + BCD B C D (c) FIGURA 4-8 z (0) (1) (2) (3) (4) (5) (6) (7) (8) (9) (10) (11) (12) (13) (14) (15) 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 0 0 0 0 1→ ABCD 1→ ABCD 1→ ABCD 1→ ABCD 1→ ABCD 1→ ABCD 1→ ABCD 1→ ABCD 1→ ABCD (b) Ejemplo 4-8. Solución La tabla de verdad se muestra en la figura 4-8(b). Para cada caso en la tabla de verdad 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: z = ABCD + AB C D + AB CD + ABCD + ABCD + ABC D + ABCD + ABCD + ABCD 131 SECCIÓN 4-4/DISEÑO DE CIRCUITOS LÓGICOS COMBINACIONALES 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érminos de la forma A  A: z = = = = = = ABCD ABCD ABCD ABCD ABCD ABCD + + + + + + AB C(D + D) + ABC(D + D) + ABC(D + D) + ABC(D + D) AB C + ABC + ABC + ABC AB(C + C) + AB(C + C) AB + AB A(B + B) 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, z = ABCD + A = BCD + A 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érminos. Ésta es una limitación que no comparte el método de mapeo de Karnaugh, como veremos más adelante. EJEMPLO 4-9 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 Sensor de bandeja alimentadora P P Circuito lógico +5 V Q Interruptores para detección del papel S = P + QR S Q R 1 k⍀ (b) R 1 k⍀ (a) OR P S P S = P + QR AND Q Q R R (c) FIGURA 4-9 Ejemplo 4-9. (d) 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 utilizando 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 verdad 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) TABLA 4-3 P Q R S 0 0 0 1 PQR 0 0 1 1 P QR 0 1 0 1 PQR 0 1 1 1 PQR 1 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 PQR Se muestran los términos AND para cada uno de estos casos. La expresión de suma de productos sería S  P Q R  P QR  PQR  PQR  PQR (Paso 2) (Paso 3) Podemos empezar la simplificación factorizando P Q de los términos 1 y 2, y factorizando 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, veamos 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 133 SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 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 implementació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 compuertas 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, incluyendo 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. FIGURA 4-10 Circuito para la figura 4-9(d) implementado mediante el uso del chip NAND 74HC00. +5 V 100 ⍀ 74HC00 4 P 14 6 33 k⍀ S 5 Q 7 1 3 R 2 74HC00 (e) PREGUNTAS DE REPASO Nota: las otras dos compuertas en el chip no están conectadas. 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 simplificar una ecuación lógica o convertir una tabla de verdad en su correspondiente circuito 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. 134 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES 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 formato 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- FIGURA 4-11 Mapas de Karnaugh y tablas de verdad para (a) dos, (b) tres y (c) cuatro variables. X 1 → AB 0 0 1 → AB B 0 1 0 1 A 0 0 1 1 B B A 1 0 A 0 1 C C AB 1 1 AB 1 0 AB 1 0 AB 0 0 CD CD CD CD AB 0 1 0 0 AB 0 1 0 0 AB 0 1 1 0 AB 0 0 0 0 x = AB + AB (a) 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 = ABC + ABC + ABC + ABC (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 X 0 1 → ABCD 0 0 0 1 → ABCD 0 0 0 0 0 0 0 1 → ABCD 0 1 → ABCD X = ABCD + ABCD + ABCD + ABCD (c) 135 SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 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 apropiada 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 FIGURA 4-12 Ejemplos de agrupamientos de pares de 1s adyacentes. C C AB 0 0 AB 1 0 AB 1 0 AB 0 0 X = ABC + ABC = BC C C AB 0 0 AB 1 1 AB 0 0 AB 0 0 (a) X = ABC + ABC = AB (b) C C AB 1 0 AB 0 0 CD CD CD CD AB 0 0 1 1 AB 0 0 0 0 X = ABC + ABC = BC AB 0 0 AB 0 0 0 0 AB 1 0 AB 1 0 0 1 (d) (c) ABC X = ABCD + ABCD + ABCD + ABCD = ABC + ABD ABD 136 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES tanto en forma normal como complementada (invertida), mientras que B y C permanecen sin cambios. Estos dos términos pueden agruparse (combinarse) para obtener un resultante que elimine la variable A, ya que aparece tanto en forma complementada como no complementada. Es fácil demostrarlo de la siguiente manera: X = ABC + ABC = BC(A + A) = BC(1) = BC 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 complementada, 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 pueden 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 inferior 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 variables 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: X = = = = A BC + ABC + ABC + ABC AC(B + B) + AC(B + B) AC + AC C(A + A) = C 137 SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH FIGURA 4-13 Ejemplos de agrupamiento de cuádruples. C C AB 0 1 AB AB 0 1 AB 0 AB 0 CD CD CD CD CD AB 0 0 0 0 0 AB 0 1 1 0 1 1 AB 0 1 1 0 0 0 AB 0 0 0 0 CD CD CD 0 0 0 0 AB 0 0 0 1 AB 1 1 1 AB 0 0 X=C X = BD X = AB (a) (c) (b) CD CD CD CD CD CD CD CD AB 0 0 0 0 AB 1 0 0 1 AB 0 0 0 0 AB 0 0 0 0 AB 1 0 0 1 AB 0 0 0 0 AB 1 0 0 1 AB 1 0 0 1 X = BD X = AD (d) (e) 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 expresió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 expresiones 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 cuatro 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 complementada. 138 FIGURA 4-14 Ejemplos de agrupamiento de octetos. CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES CD CD CD CD CD CD CD CD AB 0 0 0 0 AB 1 1 0 0 AB 1 1 1 1 AB 1 1 0 0 AB 1 1 1 1 AB 1 1 0 0 AB 0 0 0 0 AB 1 1 0 0 X=B (a) X=C (b) CD CD CD CD 1 0 0 1 AB 1 0 0 1 0 AB 1 0 0 1 1 AB 1 0 0 1 CD CD CD CD AB 1 1 1 1 AB AB 0 0 0 0 AB 0 0 0 AB 1 1 1 X=B (c) X=D (d) 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 aparecer 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 utilizaremos 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 adyacentes 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. 139 SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH Paso 6 Agrupe cualquier par necesario para incluir todos los 1 que no se hayan agrupado 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. EJEMPLO 4-10 La figura 4-15(a) muestra el mapa K para un problema con cuatro variables. Supondremos 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. FIGURA 4-15 Ejemplos 4-10 al 4-12. CD AB CD 0 0 1 AB 0 1 0 1 3 1 1 0 0 6 9 AB CD 2 5 AB CD 0 7 1 10 0 13 4 8 0 11 1 14 X= ABCD + ACD grupo 4 + BD grupo 11, 15 12 grupo 6, 7, 10, 11 0 15 16 (a) CD AB CD 0 0 1 AB 1 1 1 0 3 1 1 0 1 6 9 AB CD 2 5 AB CD 1 7 0 10 0 13 4 8 0 11 0 14 12 X= AB + grupo 5, 6, 7, 8 BC + ACD grupo 3, 7 grupo 5, 6, 9, 10 0 15 16 (b) CD AB CD 0 1 1 AB 0 1 1 1 1 8 X= 0 ABC 9, 10 + ACD 2, 6 + ABC 7, 8 + ACD 11, 15 12 11 1 14 4 7 10 0 13 0 3 1 1 0 0 6 9 AB CD 2 5 AB CD 0 15 16 (c) 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 identifica 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 (grupo 6, 7, 10, 11). Observe que la casilla 11 se utiliza de nuevo, aun y cuando forma parte del grupo 11, 15. 140 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES 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). EJEMPLO 4-11 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. EJEMPLO 4-12 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 agrupa 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. EJEMPLO 4-13 FIGURA 4-16 El mismo mapa K con dos soluciones correctas similares. Considere el mapa K de la figura 4-16(a). CD CD CD CD CD CD CD CD AB 0 1 0 0 AB 0 1 0 0 AB 0 1 1 1 AB 0 1 1 1 AB 0 0 0 1 AB 0 0 0 1 AB 1 1 0 1 AB 1 1 0 1 X = ACD + ABC + ABC + ACD (a) X = ABD + BCD + BCD + ABD (b) 141 SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH 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úmero 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 casilla 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. EJEMPLO 4-14 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 etiquetas: en todas las casillas de las columnas más a la izquierda y más a la derecha. FIGURA 4-17 4-14. Ejemplo CD CD CD CD AB 1 1 0 1 AB 1 1 0 1 AB 1 1 0 1 AB 1 1 1 1 y = AB + C + D Ahora el mapa K está lleno y puede agruparse para simplificar la expresión. Verifique que un agrupamiento apropiado produzca la expresión y  AB  C  D. 142 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES 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). 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. 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 (a) z 0 0 0 x x 1 1 1 “no importa” C C AB 0 0 AB 0 AB AB C C AB 0 0 x AB 0 0 1 1 AB 1 1 x 1 AB 1 1 (b) z=A (c) 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 aumentar su experiencia para tratar los casos de “no importa”. He aquí otro ejemplo. EJEMPLO 4-15 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 143 SECCIÓN 4-5/MÉTODO DE MAPAS DE KARNAUGH FIGURA 4-19 4-15. Ejemplo M 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 M F1 F2 F3 Moviendo el elevador ABIERTO F1 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 (a) 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 (b) F2 F3 F2 F3 F2 F3 F2 F3 F2 F3 F2 F3 F2 F3 F2 F3 M F1 0 1 X 1 M F1 0 1 1 1 M F1 1 X X X M F1 1 1 1 1 M F1 0 X X X M F1 0 0 0 0 M F1 0 0 X 0 M F1 0 0 0 0 OPEN = M (F1 + F2 + F3) (c) (d) columna de la salida ABIERTO para los ocho casos en los que más de una entrada 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, podemos 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 algebraico. 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 algebraica. Por lo general, el mapeo K requiere menos pasos, en especial para las expresiones que contienen muchos términos, y siempre produce una expresión mínima. 144 CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES 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 procedimiento 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 minimizar 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 puede 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. PREGUNTAS DE REPASO 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 enfatizar 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 EXCLUSIVO Y 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 circuito 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 A B B AB A x = AB + AB A 0 0 1 1 B 0 1 0 1 AB B (a) Símbolos de compuerta XOR x=A⊕B = AB + AB A A =1 B B (b) (c) x=A⊕B x 0 1 1 0 SECCIÓN 4-6/CIRCUITOS OR EXCLUSIVO Y NOR EXCLUSIVO 145 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 frecuencia 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 misma 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 xAB 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 74C86 74HC86 Chip con cuatro compuertas XOR (familia TTL) Chip con cuatro compuertas XOR (familia CMOS) XOR (CMOS de alta velocidad) NOR exclusivo El circuito NOR exclusivo (que se abrevia como XNOR) opera en forma completamente 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 146 FIGURA 4-21 (a) Circuito NOR exclusivo; (b) símbolo tradicional para la compuerta XNOR; (c) símbolo IEEE/ANSI. CAPÍTULO 4/CIRCUITOS LÓGICOS COMBINACIONALES A A A 0 0 1 1 AB B B B 0 1 0 1 x 1 0 0 1 x = AB +AB B AB A (a) Símbolos de compuerta XNOR x = A ⊕ B = AB + AB A A =1 B x=A⊕B B (b) (c) 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 xAB 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 74C266 74HC266 Chip con cuatro compuertas XNOR (familia TTL) Chip con cuatro compuertas XNOR (CMOS) Chip con cuatro compuertas XNOR (CMOS de alta velocidad) 147 SECCIÓN 4-6/CIRCUITOS OR EXCLUSIVO Y NOR EXCLUSIVO 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. EJEMPLO 4-16 FIGURA 4-22 4-16. Determine la forma de onda de salida para las formas de onda de entrada que se muestran en la figura 4-22. Ejemplo A A x B B x t0 t1 t2 t3 Solución La forma de onda de salida se obtiene mediante el hecho de que la salida XOR estará 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. EJEMPLO 4-17 La notación x1x0 representa un número binario de dos bits que puede tener cualquier 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 concuerden 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 normal, que sería obtener una expresión de suma de productos para z, trat