1: Intro 1
¿Porque estudiar diseño digital?
Es la base para la implementación de todos los sistemas computacionales modernos
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 modelamiento digital
Álgebra de Boole
Funciones y representación de variables discretas
Minimización lógica
Conceptos de estados
Análisis temporal
Herramientas CAD
Concepto de estados en sistemas digitales
Análogo a variables y
contadores en el software
Como especificar, simular, compilar y analizar sistemas
Lenguajes de descripción de HW
Herramientas para simular la operación de nuestros diseños
Compiladores lógicos para
sintetizar los bloques de diseños
Implementación en hardware programable
Diferentes tecnologías de implementación de hardware
Contrastar con diseño de SW
Implementaciones de máquinas secuenciales y paralelas
Especificar algoritmos, recursos de procesamiento y almacenamiento
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
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
Un poco de historia
1: Intro 7
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.
Un poco de historia
1: Intro 8
¿Que es el diseño digital?
¿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.
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
¿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 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
Muchos otros
1: Intro 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).
Simulación y verificación (testing) antes de construcción.
1: Intro 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: 0, 1
Asignación: x = y
Operaciones sobre datos: x + y – 5
Control:
• expresiones secuénciales 1; 2; 3;...
• expresiones condicionales: if x == 1 then y
• ciclos (loops): for (i = 1; i == 5; i++) x = x + A[i];
• procedimientos (funciones)
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 y 1
Margen de ruido
Margen de ruido
Volts
lógica 1
lógica 0
zona de transición entre lógica 0 y 1 4
3 2
0.5 - 0.5
1 0
Voh
Vol Vil Vih
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
Vol Vil
Vil Vol
Volts
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 2
Ncasos que son igualmente probables E
k(k = 1, 2, ..., 2
N) entonces la información (en bits)
proveída por el hecho E
kes 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
¿Qué es el hardware digital?
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)
inputs sistema outputs
Máquina 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.
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
Z ≡ A
A Z
cerrar switch (si A es “1”) y prender la bombilla (Z)
abrir switch (si A es “0”) y apagar la bombilla (Z)
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
OR
Z ≡ A and B
Z ≡ A or B
A B
A
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
fácil de implementar con transistores CMOS
(los interruptores mas disponibles)
Símbolos Lógicos
Sistemas lógicos combinacionales usan compuertas estándar que se denominan compuertas lógicas
Buffer, NOT
AND, NAND
OR, NOR
Z
A
B Z
Z A
A B
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
month leap
d28d29d30d31
month leap d28 d29 d30 d31
0000 – – – – –
0001 – 0 0 0 1
0010 0 1 0 0 0
0010 1 0 1 0 0
0011 – 0 0 0 1
0100 – 0 0 1 0
0101 – 0 0 0 1
0110 – 0 0 1 0
0111 – 0 0 0 1
1000 – 0 0 0 1
1001 – 0 0 1 0
1010 – 0 0 0 1
1011 – 0 0 1 0
1100 – 0 0 0 1
1101 – – – – –
111– – – – – –
Implementación digital
Codificación:
Cuántos bits para cada input/output?
Número binario para el mes
Cuatro alambres para 28 - 31
Comportamiento:
combinacional
especificado en la tabla
1: Intro 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) + ...
(m8•m4•m2'•m1')
d31 = podemos simplificarlo mas?
símbolo de and
símbolo de or
month leap d28 d29 d30 d31
0001 – 0 0 0 1
0010 0 1 0 0 0
0010 1 0 1 0 0
0011 – 0 0 0 1
0100 – 0 0 1 0
...
1100 – 0 0 0 1
1101 – – – – –
111– – – – – –
0000 – – – – –
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.
mirar los inputs (sistema tiene que estar estable después de un cambio).
Secuencial: secuencias de valores deben ser introducidos.
Secuencial: recordar si ocurre un error
Especificar los estados finitos.
reset value
open/closed new
clock state
1: Intro 39
Máquinas de Estados: ejemplo
Diagrama de estados:
5 estados
• Representan situaciones en la ejecución de la máquina
• 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
• Output: open /closed (abierto /cerrado)
C2!=value
& new
C3!=value
& new reset
not new not new
not new closed
S1
closed C1=value
& new
S2
closed C2=value
& new
S3
C3=value
& new
OPEN open
C1!=value
& new
closed ERR
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) reset
open/closed new
C1 C2 C3
comparator
value
equal
multiplexer
equal
controller
mux
control clock
1: Intro 41
Máquinas de Estados: ejemplo
Refinar máquina de estados finitos
Incluir datos internos de la estructura del HW
closed
closed mux=C1 reset
equal
& new
not equal
& new not equal
& new not equal
& new
not new not new
not new
S1 S2 S3 OPEN
ERR
closed
mux=C2 equal
& new
closed
mux=C3 equal
& new
open
1: Intro 42
Máquinas de Estados: ejemplo
¿Máquina de estados finitos actualizada?
Generar tabla estados o transiciones
reset new equal state state mux open/closed
1 – – – S1 C1 closed
0 0 – S1 S1 C1 closed
0 1 0 S1 ERR – closed
0 1 1 S1 S2 C2 closed
0 0 – S2 S2 C2 closed
0 1 0 S2 ERR – closed
0 1 1 S2 S3 C3 closed
0 0 – S3 S3 C3 closed
0 1 0 S3 ERR – closed
0 1 1 S3 OPEN – open
0 – – OPEN OPEN – open
0 – – ERR ERR – closed
next
closed
closed mux=C1 reset
equal
& new
not equal
& new not equal
& new not equal
& new
not new not new
not new
S1 S2 S3 OPEN
ERR
closed
mux=C2 equal
& new
closed
mux=C3 equal
& new
open
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 new equal state state mux open/closed
1 – – – 0001 001 0
0 0 – 0001 0001 001 0
0 1 0 0001 0000 – 0
0 1 1 0001 0010 010 0
0 0 – 0010 0010 010 0
0 1 0 0010 0000 – 0
0 1 1 0010 0100 100 0
0 0 – 0100 0100 100 0
0 1 0 0100 0000 – 0
0 1 1 0100 1000 – 1
0 – – 1000 1000 – 1
0 – – 0000 0000 – 0
next
buena elección!
mux es idéntico a los últimos 3 bits del estado
open / closed es
idéntico al primer bit del estado
1: Intro 45
Jerarquía de diseño
sistema digital
ruta de datos ruta de control
registros de estado
red combinacional (lógica)
multiplexer comparator / ALU memorias /
registros
registros 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.