Sistemas Digitales - Departamento de Electrónica

Anuncio
Sistemas
Digitales
ELO211
Rudy Malonnek W.
[email protected]
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
Descargar