Sistemas Digitales ELO211 Rudy Malonnek W. rudy.malonnek@usm.cl 2010-1 ¿Porque estudiar diseño digital? Es la base para la implementación de todos los modernos sistemas computacionales Construcción de unidades más complejas de componentes primitivos. Conocer los principios para organizar los bloques constructivos básicos de la computadores. El paralelismo inherente en el hardware es nuestra primera introducción a la computación paralela. Proveer un modelo y un entendimiento de cómo funciona una computadora. 1: Intro 2 Diseño digital: nuestro PC 1: Intro 3 Objetivos El lenguaje de diseño y Como especificar, simular, compilar y analizar sistemas modelamiento digital Lenguajes de descripción de HW Álgebra de Boole Herramientas para simular la Funciones y representación operación de nuestros diseños de variables discretas Compiladores lógicos para sintetizar los bloques de diseños Minimización lógica Implementación en hardware Conceptos de estados programable Análisis temporal Diferentes tecnologías de implementación de hardware Herramientas CAD Contrastar con diseño de SW Concepto de estados en Implementaciones de máquinas sistemas digitales secuenciales y paralelas Especificar algoritmos, recursos de Análogo a variables y procesamiento y almacenamiento contadores en el software 1: Intro 4 Objetivos Visto por capas Arquitectura abstracta Síntesis y optimización Bloques básicos Compuertas y flip-flops 1: Intro 5 Objetivos Resumen: Se estudiaran... Los fundamentos matemáticos de las funciones de variables discretas boolenas, su estructura y diversos métodos de representación. Los principios y técnicas para modelar situaciones del mundo real, mediante funciones booleanas y registros. Se analizaran sistemas ya diseñados para posteriormente diseñar, implementar o sintetizar mediante diferentes tecnologías sistemas digitales combinacionales y secuenciales. 1: Intro 6 Un poco de historia 1850: George Boole inventa el álgebra de Boole convierte proposiciones lógicas a símbolos permite la manipulación de la lógica proposicional 1938: Claude Shannon aplica el álgebra de Boole al desarrollo de circuitos conmutados (switched circuits) su tesis de Magíster 1945: John von Neumann desarrolla el primer programa de computadora en la arquitectura de programa almacenado (stored-program computer) sus elementos de conmutación son tubos de vacío 1: Intro 7 Un poco de historia 1946: ENIAC . . . La primera computadora electrónica 18,000 tubos de vacío varios miles de multiplicaciones por minuto. 1947: Shockley, Brattain y Bardeen (Bell Labs) inventan el transistor Reemplazo tubos de vacío Permitió la mayor integración de múltiples dispositivos. Comienzo de la electrónica moderna. 1: Intro 8 ¿Qué es el diseño? Dada la especificación de un problema, lograr determinar una manera de resolverla, seleccionando apropiadamente desde un grupo de componentes disponibles. Siempre considerando un conjunto de criterios (requerimientos) como tamaño, costo, poder, confiabilidad, elegancia, simplicidad etc. ¿Qué es el diseño digital? Determinación de las componentes de hardware digitales que implementan las especificaciones de comunicación, control y procesamiento de los datos. Más específicamente, es descomponer la solución en redes combinacionales y/o secuenciales organizando jerárquicamente el diseño empleando herramientas computacionales modernas. Hay muchas diferentes tecnologías que se pueden usar para implementar un diseño (e.g., componentes, dispositivos programables, transistores en un chip, etc.) El diseño tiene que ser optimizado para los requerimientos previamente especificados. 1: Intro 0101010101010101010101 ¿Que es el diseño digital? 9 ¿Que es el diseño digital? Conceptos básicos en sistemas digitales. Sistema con una entrada E y una salida S Las variables E y S sólo pueden tomar los valores discretos: 0, 1, 2, 3. 1: Intro 10 ¿Que es el diseño digital? Codificación. Se denomina codificación binaria al proceso de asignar un vector booleano a un símbolo o valor de la variable multivaluada. Sistema numérico binario. • En el sistema numérico binario la base numérica es 2, y los dígitos sólo pueden ser 0 y 1. 1: Intro 11 ¿Que es el diseño digital? Información. Bit, Byte. Se denomina bit, que es un acrónimo de Binary Digit, a la cantidad de información requerida para distinguir entre dos opciones igualmente probables. Tablas de verdad. 1: Intro 12 ¿Que es el diseño digital? Compuertas básicas. Operadores booleanos. En el álgebra de Boole se definen los operadores and y or, mediante las tablas de verdad . Expresiones booleanas. 1: Intro 13 ¿Que es el diseño digital? Esquemático. 1: Intro 14 Algunas aplicaciones del diseño digital Computadores CPUs, bus, equipos periféricos de I/O (discos, pendrives, teclados, impresoras, mouse, pantallas, etc) Redes y comunicaciones centrales, estaciones base, teléfonos, módems, routers, switches, hubs, gateways, gatekeepers (VoIP) Sistemas embebidos electrodomésticos aparatos portátiles: celulares, iPods, organizadores juguetes y juegos de video aparatos a control remoto controladores industriales, robots Equipos científicos equipos de prueba, sensores, aparatos médicos 1: Intro Muchos otros 15 Algunas tendencias actuales en el diseño digital Tendencias de la industria para diseño de hardware Diseños mas grandes e integrados. Tiempo al mercado mas corto. Productos mas baratos. Escala Uso común de herramientas computacionales sobre métodos manuales. Múltiples niveles de diseño y representación. Tiempo Énfasis en representaciones abstractas de diseño. Uso de componentes programables (e.g. FPGA) sobre otros de función fija. Técnicas automáticas de síntesis del diseño lógico (e.g. Verilog). Importancia de buenas metodologías y procesos de diseño. Costo Uso de simulación para depurar (debug). 1: Intro Simulación y verificación (testing) antes de construcción. 16 Diseño digital: computación abstracta versus implementación Computación abstracta es un ejercicio mental o de software (programas). Esta clase trata sobre como se puede implementar sistemas de computación en hardware que usan voltajes para representar valores lógicos binarios (1 y 0). Elementos básicos de la computación. Representación binaria: Asignación: Operaciones sobre datos: Control: • expresiones secuénciales • expresiones condicionales: • ciclos (loops): A[i]; • procedimientos (funciones) 0, 1 x=y x+y–5 1; 2; 3;... if x == 1 then y for (i = 1; i == 5; i++) x = x + Uso común de lenguajes y herramientas computacionales (e.g. HDL, Verilog, Xylinx) sobre métodos manuales. Múltiples niveles de diseño y representación. 1: Intro 17 Abstracción digital Abstracción digital binaria Consiste en representar las señales análogas reales de entrada y salida usando valores discretos lógicos 0 y1 Volts Voh 4 3 lógica 1 Vih 2 1 0.5 0 - 0.5 Margen de ruido zona de transición entre lógica 0 y 1 lógica 0 Vil Margen de ruido Vol 1: Intro 18 Abstracción digital ¿Porque es útil la digitalización? Permite el desarrollo modular de sistemas Ayuda a prevenir que un 0 sea confundido con un 1 y viceversa, valores específicos dependen de la tecnología usada (e.g. TTL) e.g. VIL debe ser un poco mayor que VOL Volts Vol Vil Vil Vol tiempo 1: Intro 19 Abstracción digital Bit (Binary digit): unidad de información Si se tienen 2 eventos igualmente probables y se desea conocer cuál se produce, debe aportarse 1 bit de información Interruptor abierto es 1 Interruptor cerrado es 0 Se puede codificar en un bit, el estado del interruptor ¿Si hay 8 eventos posibles, para conocer la ocurrencia de uno de ellos deben tenerse cuantos bits de información? 1: Intro 20 Abstracción digital La información puede definirse como: conocimiento comunicado o recibido concerniente a un hecho particular, el cual reduce la incertidumbre del receptor Si tenemos un espacio de muestreo dividido en 2N casos que son igualmente probables Ek (k = 1, 2, ..., 2N) entonces la información (en bits) proveída por el hecho Ek es N bits 1: Intro 21 Abstracción digital Evento Se denomina evento al cambio de valor de una señal en un instante de tiempo. ¿Que es un canto de bajada/subida? Pasar de nivel lógico 1 a 0 se denomina canto de bajada. Un canto de subida se produce cuando la señal pasa de nivel lógico 0 a 1. 1 0 1: Intro 22 ¿Que es el hardware digital? Maquina abstracta: Una máquina abstracta es un modelo de computación que establece cómo se generan las acciones, o eventos de salida, a partir de los mensajes o eventos de entrada. inputs sistema outputs El modelo del sistema digital tiene inputs y outputs Sistemas combinacionales (sin memoria) sus outputs solo dependen de sus inputs Sistemas secuenciales (con memoria) sus outputs dependen no solo de sus inputs actuales sino que también de inputs previos (tienen memoria) 1: Intro 23 ¿Que es el hardware digital? Colección de dispositivos que miden y controlan señales que usan voltajes digitales (e.g. una cantidad física que se interpreta como un “0” o un “1”) e.g.: lógica digital binaria • “0” cuando el voltaje en una señal es < 0.8 V • “1” cuando el voltaje es > 2.0 V El tener Voh > Vih y Vol < Vil causa que la señales lógicas “1” y “0” se vayan regenerando 1: Intro 24 ¿Que es el hardware digital? Interruptor (switch): elemento básico del hardware Implementar un circuito simple (flecha muestra si un cable cambia a “1”) A Z cerrar switch (si A es “1”) y prender la bombilla (Z) A Z abrir switch (si A es “0”) y apagar la bombilla (Z) Z ≡ A 1: Intro 25 ¿Que es el hardware digital? La composición de interruptores (e.g. transistores) en elementos mas complejos implementa las funciones de lógica Booleana. ¿Como hago un AND y un OR de dos interruptores? AND B A Z ≡ A and B A OR Z ≡ A or B B 1: Intro 26 ¿Que es el hardware digital? Los valores de los interruptores (switches) determinan si hay o no hay una ruta para encender la luz Para construir cómputos mas complejos usar la luz (output de un circuito) para activar otros circuitos interconectar redes de circuitos (e.g. ICs o circuitos integrados en wafers) típicamente se diseñan y modelan estos circuitos usando aplicaciones de software (e.g. MAGIC para VLSI) 1: Intro 27 Hardware digital vs análogo Es conveniente pensar en los sistemas digitales como teniendo solo valores discretos . En realidad los componentes electrónicos tienen un comportamiento continuo, análogo. ¿Porque se hace la abstracción digital? Interruptores operan de esta manera, es fácil modularizar diseños basado en compuertas digitales Es mas fácil pensar en valores discretos Los voltajes se pueden ir renovando entre los componentes manteniendo su valor lógico ¿Porque funciona? Los errores en voltajes no se propagan Siempre se cambian a 0 o 1 1: Intro 28 Sistemas Combinacionales Se denominan máquinas o sistemas combinacionales a aquellos cuyas salidas, en un instante de tiempo, dependen solamente de los valores que toman las entradas en ese instante de tiempo (no tienen memoria) Lo cual puede describirse por una función o tabla (truth table) que especifique los valores de las salidas para cada una de las combinaciones posibles de las entradas En estos sistemas las componentes no cambian sus propiedades a medida que transcurre el tiempo 1: Intro 29 Símbolos Lógicos Sistemas lógicos combinacionales usan compuertas estándar que se denominan compuertas lógicas Buffer, NOT A Z AND, NAND A B Z OR, NOR A B fácil de implementar con transistores CMOS (los interruptores mas disponibles) Z 1: Intro 30 Sistemas Combinacionales: ejemplo Subsistema de calendario: numero de días en un mes Usado para controlar un reloj de tipo LCD Input: mes, indicador de año bisiesto (leap year) Output: numero de días (28, 29, 30 o 31) en ese mes 1: Intro 31 Sistemas Combinacionales: ejemplo Implementación en software integer number_of_days ( month, leap_year_flag) { switch (month) { case 1: return (31); case 2: if (leap_year_flag == 1) then return (29) else return (28); case 3: return (31); ... case 12: return (31); default: return (0); } } 1: Intro 32 Sistemas Combinacionales: ejemplo Implementación digital Codificación: Cuántos bits para cada input/output? month Número binario para el mes 0000 0001 Cuatro alambres para 28 - 31 Comportamiento: combinacional especificado en la tabla month leap d28d29d30d31 0010 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 111– leap – – 0 1 – – – – – – – – – – – – d28 d29 d30 d31 – – – – 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 – – – – – – Intro – – 1: 33 Sistemas Combinacionales: ejemplo Análisis d28 = 1 cuando month=0010 y leap=0 d28 = m8'•m4'•m2•m1'•leap‘ d31 = 1 cuando month=0001 o month=0011 o ... month=1100 d31 = (m8'•m4'•m2'•m1) + (m8'•m4'•m2•m1) + ... month leap d28 d29 d30 d31 (m8•m4•m2'•m1') d31 = 0001 0010 0010 símbolo 0011 símbolo de or 0100 de and ... 1100 podemos simplificarlo mas? 1101 111– 0000 – 0 1 – – 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 – – – – 0 – – – 0 – – – 0 – – – 1 – – – 1: Intro 34 Sistemas Combinacionales: ejemplo d28 = m8'•m4'•m2•m1'•leap’ d29 = m8'•m4'•m2•m1'•leap d30 = (m8'•m4•m2'•m1') + (m8'•m4•m2•m1') + (m8•m4'•m2'•m1) + (m8•m4'•m2•m1) = (m8'•m4•m1') + (m8•m4'•m1) d31 = (m8'•m4'•m2'•m1) + (m8'•m4'•m2•m1) + (m8'•m4•m2'•m1) + (m8'•m4•m2•m1) + (m8•m4'•m2'•m1') + (m8•m4'•m2•m1') + (m8•m4•m2'•m1') 1: Intro 35 Máquinas de Estados o Secuenciales Se denominan máquinas de estados o secuenciales a aquellas cuyas salidas, en un instante de tiempo, dependen de los valores que toman las entradas y de su estado en ese instante de tiempo. Se comienza con un estado inicial. Se usa una función de transición que especifique los valores de las salidas y del próximo estado para cada una de las combinaciones posibles de las entradas y del estado presente. También se puede usar un diagrama de estados. Una matriz puede servir para indicar los diferentes valores de esta función. Las entradas se deben usar una vez que la máquina haya procesado las entradas previas y este estable. 1: Intro 36 Máquinas de Estados: ejemplo Candado de combinación: Seleccionar 3 valores en secuencia y se abre el candado. Si hay un error se debe recomenzar la secuencia (reset). Input: secuencia de valores, reset. Outputs: candado abierto/cerrado. Memoria: debe recordar combinación. 1: Intro 37 Máquinas de Estados: ejemplo Implementación en software integer combination_lock ( ) { integer v1, v2, v3; integer error = 0; static integer c[3] = 3, 4, 2; // clave while (!new_value( )); v1 = read_value( ); if (v1 != c[1]) then error = 1; while (!new_value( )); v2 = read_value( ); if (v2 != c[2]) then error = 1; while (!new_value( )); v3 = read_value( ); if (v2 != c[3]) then error = 1; if (error == 1) then return(0); else return (1); } 1: Intro 38 Máquinas de Estados: ejemplo Codificación: ¿Cuántos bits por valor de input? ¿Cuántos valores en la secuencia? ¿Cómo sabemos que hay un valor nuevo de input? ¿cómo representar los estados? Comportamiento: Línea clock indica cuando. new value reset mirar los inputs (sistema tiene que estar estable después de un cambio). Secuencial: secuencias de valores state clock deben ser introducidos. Secuencial: recordar si ocurre un error open/closed Especificar los estados finitos. 1: Intro 39 Máquinas de Estados: ejemplo Diagrama de estados: 5 estados • • • • • • Representan situaciones en la ejecución de la maquina Cada estado tiene outputs 6 transiciones entre estados, 5 auto transiciones, 1 global Cambios en estados ocurren cuando reloj indica que se puede Inputs: reset, new, resultado de comparaciones ERR Output: open /closed (abierto /cerrado) closed C1!=value & new S1 reset closed C1=value & new not new S2 closed C2!=value & new S3 C2=value & new not new closed C3!=value & new C3=value & new OPEN open not new 1: Intro 40 Máquinas de Estados: ejemplo ¿Ruta de datos versus control? ruta de datos • Almacenamiento para combinación • Comparador control • Controlador de estados finitos • Control para ruta de datos • Cambios en estados controlados por reloj (clock) new value C1 C2 multiplexer C3 mux control equal reset controller comparator equal clock open/closed 1: Intro 41 Máquinas de Estados: ejemplo Refinar maquina de estados finitos Incluir datos internos de la estructura del HW ERR closed not equal & new S1 reset closed mux=C1 not new not equal & new S2 equal & new closed mux=C2 not new not equal & new S3 equal & new closed mux=C3 OPEN equal & new open not new 1: Intro 42 Máquinas de Estados: ejemplo ¿Maquina de estados finitos actualizada? closed Generar tabla estados o transiciones not equal & new S1 reset reset 1 0 0 0 0 0 0 0 0 0 0 0 ERR new – 0 1 1 0 1 1 0 1 1 – – equal – – 0 1 – 0 1 – 0 1 – – next state state – S1 S1 S1 S1 ERR S1 S2 S2 S2 S2 ERR S2 S3 S3 S3 S3 ERR S3 OPEN OPEN OPEN ERR ERR closed mux=C1 not new mux C1 C1 – C2 C2 – C3 C3 – – – – not equal & new S2 equal & new closed mux=C2 not new open/closed closed closed closed closed closed closed closed closed closed open open closed not equal & new S3 equal & new closed mux=C3 OPEN equal & new open not new 1: Intro 43 Máquinas de Estados: ejemplo Codificar tabla de estados estado puede ser: S1, S2, S3, OPEN o ERR • 3 bits mínimo para codificar output mux puede ser: C1, C2, o C3 • 2 bits mínimo para codificar output open /closed puede ser: open o closed • mínimo 1 bit para codificar Trabajo en grupo: elegir codificación de bits para los estados, generar tabla de estados (hay muchas opciones!) 1: Intro 44 Máquinas de Estados: ejemplo Codificar tabla de estados estado puede ser: S1, S2, S3, OPEN o ERR • usar 4 bits output mux puede ser: C1, C2, o C3 • usar 3 bits output open /closed puede ser: open o closed • usar 1 bit para codificar reset 1 0 0 0 0 0 0 0 0 0 0 0 new – 0 1 1 0 1 1 0 1 1 – – equal – – 0 1 – 0 1 – 0 1 – – state – 0001 0001 0001 0010 0010 0010 0100 0100 0100 1000 0000 next state 0001 0001 0000 0010 0010 0000 0100 0100 0000 1000 1000 0000 mux 001 001 – 010 010 – 100 100 – – – – open/closed 0 buena elección! 0 0 0 mux es idéntico a los últimos 0 3 bits del estado 0 0 open / closed es 0 idéntico al primer bit 0 del estado 1 1 0 1: Intro 45 Jerarquía de diseño sistema digital ruta de datos memorias / registros ruta de control multiplexer comparator / ALU registros registros de estado red combinacional (lógica) lógica / compuertas redes de compuertas (transistores) 1: Intro 46 Resumen ¿De que se trata este curso? Desarrollar soluciones a problemas usando circuitos combinacionales y secuenciales efectivamente organizando el diseño jerárquicamente. Utilizar técnicas y herramientas modernas. Tomar ventaja de oportunidades de optimización. 1: Intro 47