Story Transcript
1
Sistemas Digitales. Diseño lógico con Verilog. Sinopsis. El texto está orientado a un primer curso de diseño lógico en programas de estudios de ingenieros eléctricos, electrónicos, telemáticos y de ciencias de computación. Los conceptos de diseño se introducen empleando técnicas manuales clásicas, en los bloques constructivos básicos, tanto combinacionales como secuenciales; para luego emplear las actuales herramientas de apoyo computacional al diseño, que permiten sintetizar arquitecturas más reales y complejas. Se da especial énfasis a una clara presentación de los fundamentos, que han mostrado ser estables en el tiempo, y se acompaña con una escogida colección de problemas resueltos y ejercicios propuestos. A través de apéndices se exponen tutoriales del tipo paso por paso, de varias herramientas de apoyo al diseño; dando preferencia a aquellas de software abierto o que han sido puestas a disposición de la comunidad, para adquirir experiencia práctica en el uso de éstas.
Prólogo. El texto estudia los fundamentos matemáticos de las funciones de variables discretas, su estructura y diversos métodos de representación de funciones. Luego los principios y técnicas para modelar situaciones del mundo real, mediante funciones booleanas y registros. Después se analizan sistemas existentes para posteriormente diseñar, implementar o sintetizar, mediante diferentes tecnologías, sistemas digitales combinacionales y secuenciales. El texto intenta mostrar: Los principios de diseño digital basados en el álgebra de Boole, con utilización de herramientas computacionales, para minimizar las ecuaciones y analizar el comportamiento temporal; el concepto de estado y de máquinas secuenciales; y finalmente, cómo especificar, simular y sintetizar los diseños en dispositivos programables y no programables. El permanente cambio que tiene el estudio de sistemas digitales se debe principalmente a tres factores: la continua evolución de la tecnología digital que en menor tamaño coloca cada vez mayor número de componentes más rápidas; el desarrollo de herramientas de ayuda al diseño digital (CAD) que permiten enfrentar tareas extremadamente complejas; y finalmente, las nuevas metodologías de desarrollo de software, que facilitan el desarrollo de aplicaciones
Profesor Leopoldo Silva Bijit
19-01-2010
2
Sistemas Digitales
complejas con interfases visuales, como las herramientas CAD y los lenguajes de descripción de hardware (HDL). Las primeras metodologías de diseño digital, que podríamos denominar clásicas, permiten comprender los principios de funcionamiento de los sistemas digitales básicos, y pueden ser desarrolladas usando papel y lápiz. Emplean los principios teóricos del álgebra de Boole y métodos de minimización de funciones booleanas; sin embargo, los algoritmos son de tipo no polinomial, y no pueden ser aplicados a situaciones de mediana complejidad (redes con más de 5 entradas), debido a su costo exponencial. Sin embargo, al ser posible enfrentar diseños digitales más complejos, debido a la tecnología, debieron desarrollarse nuevas heurísticas para representar sistemas digitales, minimizarlos, y poder implementarlos en base a bloques lógicos determinados. En estos nuevos algoritmos, están basadas las actuales herramientas CAD; su exposición y estudio, más que a un curso básico de sistemas digitales, corresponden a disciplinas de programación, estructuras de datos y algoritmos. Actualmente el diseño, la simulación y la implementación o síntesis de sistemas digitales se realizan mediante complejos y numerosos algoritmos incrustados dentro de las herramientas computacionales de apoyo al diseño. A través del texto se muestra que conviene conocer el diseño en bajo nivel de los subsistemas típicamente usados; de esta manera se conocerá su funcionalidad, sus alcances, la forma de generalizarlos, y su costo. Luego las descripciones de arquitecturas más complejas pueden realizarse basada en esos módulos. Un texto actual en sistemas digitales debe profundizar en el diseño de los bloques básicos, y también capacitar en descomponer un problema en términos de esos bloques. Esto garantiza plantear arquitecturas con partes que serán sintetizadas eficientemente. De esta forma se define el diseño como: Desarrollar abstracciones de los bloques primitivos, y conocer los principios para organizar los bloques constructivos básicos en unidades más complejas. Por las razones anteriores, el texto expone los principios de diseño digital basándose en las técnicas clásicas, que pueden ser asimiladas con ejercitación basada en métodos para papel y lápiz; y en forma paralela se introduce la utilización de Verilog en los diferentes niveles del diseño digital. La Figura P1, muestra el proceso de síntesis como un nivel intermedio, entre las descripciones de arquitecturas mediante módulos sintetizables (top-down), y el desarrollo de módulo básicos implementados mediante compuertas y flip-flops (bottom-up). Los lenguajes de descripción de hardware, como Verilog, permiten las descripciones y simulaciones en los diferentes niveles, dando homogeneidad al proceso de diseño.
Profesor Leopoldo Silva Bijit
19-01-2010
Prólogo y Contenidos
3 Arquitectura abstracta Síntesis Bloques Básicos Compuertas Flip-flops
Figura P1. La construcción de compuertas, en base a transistores, se describe en forma introductoria en el Apéndice 4; la elaboración de flip-flops, en base a compuertas se introduce en el Capítulo 14, dedicado a sistemas digitales asincrónicos. Sin embargo la descripción detallada de los principios de diseño de las compuertas, flip-flops, multivibradores monoestables, etc., en base a transistores y componentes de redes eléctricas no es tratada en este texto.
Contenidos. El texto está organizado en 16 capítulos y 7 apéndices, con numerosos problemas resueltos y ejercicios propuestos. En la Introducción mediante el desarrollo de un ejemplo simple, se muestran los principales temas que serán expuestos en el texto. En el Capítulo 1, se definen funciones y expresiones boolenas, y se describen sus representaciones más utilizadas. Se estudian las relaciones entre las representaciones y se plantean los criterios de reducción o minimización de funciones. El Capítulo 2, describe la estructura interna de las funciones boolenas basada en mintérminos y maxtérminos y se desarrollan los métodos de síntesis en dos niveles como suma de productos y producto de sumas. Se muestran los efectos de los retardos de las compuertas, y se analizan las perturbaciones en las salidas de redes combinacionales y el efecto de las carreras en las entradas a las mismas. El Capítulo 3 introduce conceptos fundamentales sobre codificación binaria y define algunos códigos que serán empleados más adelante. El Capítulo 4 define y utiliza n-cubos para ilustrar los principios de minimización de funciones booleanas. Define implicantes e implicantes primos e introduce la matriz de coberturas como representación matricial de los cubos o implicantes.
Profesor Leopoldo Silva Bijit
19-01-2010
4
Sistemas Digitales
El Capítulo 5 desarrolla la representación y minimización de funciones empleando mapas de Karnaugh. Se dan ejemplos de minimización, empleando mapas, en las formas suma de productos y producto de sumas, considerando condiciones superfluas. El Capítulo 6 describe los principales algoritmos de minimización para encontrar los implicantes primos y reducir tablas de implicantes, que permiten encontrar las representaciones mínimas de funciones combinacionales. El Capítulo 7 describe sistemas combinacionales básicos como multiplexores, decodificadores y sumadores, basados en compuertas y en dispositivos programables. Se describen diferentes soluciones basadas en EPROM, PAL, PLA, y su evolución hasta llegar a CPLD, FPGA y ASIC. El Capítulo 8 muestra los principales conceptos de la síntesis multinivel, incluyendo las operaciones de descomposición y factorización; y destaca la necesidad de herramientas computacionales de apoyo a la síntesis. El Capítulo 9 define los principales conceptos sobre sistemas secuenciales. A partir de especificaciones se obtienen diagramas de estados para modelos de Mealy y Moore. Se estudian procedimientos de transformación de modelos de Mealy a Moore, y se desarrollan numerosos ejemplos para la síntesis de diagramas de estado. El Capítulo 10 muestra los diferentes tipos de memorias primitivas sincrónicas o flip-flops. Analizando los requerimientos temporales y algunas metodologías de sincronización. El Capítulo 11 desarrolla los principales métodos de análisis y síntesis de sistemas secuenciales sincrónicos. Empleando métodos clásicos y usando Verilog. El Capítulo 12 elabora algoritmos y heurísticas para la reducción de estados equivalentes y la asignación de estados. El Capítulo 13 muestra los principios de diseño de los principales bloques básicos secuenciales: contadores, registros de desplazamiento y almacenamiento. Introduce metodologías de diseño, de sistemas sincrónicos, basadas en dispositivos programables y el uso de un secuenciador para implementar máquinas de estado. El Capítulo 14 analiza dispositivos asincrónicos, profundizando en el funcionamiento de latches, para luego elaborar sobre éstos la forma de construir diferentes tipos de flip-flops. Se analizan multivibradores aestables y monoestables. Se describen diferentes tipos de carreras. Finalmente se muestran algunos diseños de sistemas asincrónicos, basados en diagramas de flujo y de estados, libres de carreras y perturbaciones. El Capítulo 15 describe registros, buses y memorias, creando un vínculo para cursos sobre estructuras de computadores. El Apéndice 1, expone en detalle el álgebra de Boole, demostrando los principales teoremas que se usarán en el texto. Se incluye un método de deducción natural basado en reglas de inferencia y la exposición de los diferentes silogismos. Profesor Leopoldo Silva Bijit
19-01-2010
Prólogo y Contenidos
5
El Apéndice 2, expone el uso del lenguaje Abel, como una muestra de los primeros lenguajes de apoyo al diseño digital. El Apéndice 3, es un manual práctico del uso de espresso, desarrollado por la Universidad de Berkeley, en el diseño de sistemas digitales combinacionales y secuenciales. El Apéndice 4, desarrolla los principales circuitos de conmutación: interruptores, relés, controladores lógico programables; compuertas lógicas basadas en diodos y transistores bipolares. Se expone con más detalle las compuertas lógicas y dispositivos programables basadas en tecnología CMOS. Su finalidad es establecer un vínculo con la electrónica y los dispositivos físicos. El Apéndice 5, muy extenso, es un texto adicional sobre el uso de Verilog, como herramienta actual de diseño y simulación de sistemas digitales. Se exponen los fundamentos de la simulación orientada a eventos y se dan numerosos ejemplos de sistemas combinacionales y secuenciales. Al final se exploran las herramientas de síntesis basadas en tablas de búsqueda y en bloques de ram y registros de desplazamiento. El Apéndice 6, es un manual práctico sobre el uso de sis, desarrollado por la Universidad de Berkeley, con aplicaciones en la síntesis multinivel y en el mapeo tecnológico a dispositivos programables. También se expone el uso de herramientas para la reducción y asignación de estados y la síntesis de sistemas secuenciales sincrónicos, basada en compuertas y flip-flops. Finalmente se muestran ejemplos de descripción y diseño de sistemas secuenciales asincrónicos. El Apéndice 7, introduce en el uso de abc, un Sistema para síntesis secuencial y verificación, desarrollado recientemente por la Universidad de Berkeley. Una característica muy útil que presenta esta herramienta es permitir introducir diseños empleando descripciones estructurales Verilog, además de las tradicionales. También permite visualizar mapas de Karnaugh de varias variables.
Profesor Leopoldo Silva Bijit
19-01-2010