Arquitectura Del Microprocesador

INTRODUCCIÓN A LOS MICROPROCESADORES Y MICROCOMPUTADORES. 1. Arquitecturas Princeton y Harvard. 2. Arquitectura de buses

Views 150 Downloads 7 File size 195KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

INTRODUCCIÓN A LOS MICROPROCESADORES Y MICROCOMPUTADORES. 1. Arquitecturas Princeton y Harvard. 2. Arquitectura de buses. 3. Juego de instrucciones. 4. Modos de direccionamiento. 5. Subrutinas: la pila o “stack”. 6. Interrupciones y accesos directos a memoria. 7. Dispositivos de entrada/salida o periféricos.

ARQUITECTURAS DE LOS MICROCOMPUTADORES Arquitectura Princeton.

Arquitectura Harvard.

• La memoria de programa y la memoria de datos se hallan sobre un único espacio de memoria.

• La memoria de programa y la memoria de datos constituyen dos espacios de memoria separados.

• Al espacio único de memoria se accede mediante un único bus de direcciones y un único bus de datos/instrucciones. • Es la arquitectura típica de los grandes microcomputadores (ordenadores personales). • También se encuentra en algunos microcontroladores (por ejemplo, NEC).

• El acceso a cada espacio de memoria puede llegar a ser mediante buses distintos, es decir, puede haber dos buses de direcciones, un bus de datos y un bus de instrucciones). • Lo más habitual es que exista un único bus de direcciones, en cuyo caso debe existir alguna señal de control que permita diferenciar a que espacio de memoria se hace referencia (por ejemplo, señales de READ, WRITE y FETCH). • Es la arquitectura propia de un buen número de microcontroladores (por ejemplo, PIC).

ARQUITECTURA PRINCETON (I) Un único espacio de direccionamiento. • La memoria de programa, la memoria de datos y los puertos de entrada/salida, comparten un único espacio de direccionamiento. • Basta con señales de control de READ y WRITE. • El espacio de direccionamiento se reparte de acuerdo a las necesidades de la aplicación, no siendo necesario llenar todo el espacio de direccionamiento.

FFFFFF FFFE0 0 FFFDFF

PUERTOS DE ENTRADA/SALIDA

512 registros de entrada/salida

F0 0 0 0 0 EFFFFF

MEMORIA DE DATOS

3 M posiciones de memoria de datos

MEMORIA DE PROGRAMA

8 M posiciones de memoria de programa

C0 0 0 0 0 BFFFFF 800000 7 FFFFF

• Típico de los microprocesadores de alta gama de Motorola (68000 y posteriores). 000000

24 bits de direcciones 24 Espacio de direccionado = 2 registros o posiciones (16 M)

ARQUITECTURA PRINCETON (II) Dos espacios de direccionamiento. • Uno para la memoria de programa más la memoria de datos y otro para los puertos de entrada/salida. • Si se comparte el bus de direcciones, es necesario añadir una señal de control que permita distinguir a que espacio se hace referencia (por ejemplo, IO/M). • Los dos espacios de direccionamiento se reparten de acuerdo a las necesidades de la aplicación, no siendo necesario llenarlos del todo. • Típico de los microprocesadores de alta gama de Intel (8086 y posteriores).

FFFFFF

MEMORIA DE DATOS

4 M posiciones de memoria de datos

MEMORIA DE PROGRAMA

8 M posiciones de memoria de programa

C0 0 0 0 0 BFFFFF 800000 7 FFFFF

000000 24 bits de direcciones para memoria 24 Espacio de direccionado = 2 posiciones (16 M) FFF E0 0 DFF

PUERTOS DE ENTRADA/SALIDA

512 registros de entrada/salida

000 12 bits de direcciones para entrada/salida 12 Espacio de direccionado = 2 registros (4 K)

ARQUITECTURA HARVARD Dos o tres espacios de direccionamiento. • Pueden existir hasta tres espacios de direccionamiento, uno para la memoria de programa, otro para la memoria de datos y el tercero para los puertos de entrada/salida. • Es frecuente que la memoria de datos y los puertos de entrada/salida compartan un mismo espacio de direccionamiento. • Si se comparte el bus de direcciones, es necesario añadir señales de control que permitan distinguir a que espacio se hace referencia. • Los espacios de direccionamiento se reparten de acuerdo a las necesidades de la aplicación, no siendo necesario llenarlos del todo. • Típico de muchos microcontroladores (por ejemplo, 8051 de Intel, derivados y PIC).

FFFF C0 0 0 BFFF

MEMORIA DE PROGRAMA 0000

48 K posiciones de memoria de programa

16 bits de direcciones para memoria de programa 16 Espacio de direccionado = 2 posiciones (64 K) FFFF FE0 0 FDFF

PUERTOS DE ENTRADA/SALIDA

512 registros de entrada/salida

MEMORIA DE DATOS

32 K posiciones de memoria de datos

8000 7 FFF

0000

16 bits de direcciones para memoria de datos más entrada/salida 16 Espacio de direccionado = 2 registros (64 K)

ARQUITECTURA DE BUSES (I) La arquitectura de un microcomputador basado en un microprocesador más dispositivos de memoria y de entrada/salida se basa normalmente en tres buses (conjuntos de señales): • Bus de direcciones – Común para todos los espacios de direccionamiento. – Dimensión establecida por el espacio de direccionamiento mayor. – Generado por el microprocesador.

• Bus de datos (datos/instrucciones) – Común para todos los espacios de direccionamiento. – Dimensión establecida generalmente por la unidad de proceso. – Bidireccional.

• Bus de control – Incluye las señales de control generadas por el microprocesador para acceder a los espacios de direccionamiento (READ, WRITE, FETCH, IO/M, DMA_ACK, ...). – Puede incluir señales destinadas al microprocesador (READY, DMA_REQ, ...).

ARQUITECTURA DE BUSES (II) BUS DE DIRECCIONES BUS DE CONTROL

µP

SUBSISTEMA DE DECODIFICACIÓN SELECCIÓN

MEMORIA DE PROGRAMA

MEMORIA DE DATOS

PUERTOS DE ENTRADA

PUERTOS DE SALIDA

SEÑALES DE SELECCIÓN DE DISPOSITIVO BUS DE DATOS (DATOS/INSTRUCCIONES)

• El subsistema de decodificación/selección se encarga de generar las señales de selección de cada dispositivo (“chip select”) de acuerdo a su capacidad, ubicación en el espacio de direccionamiento, tipo de operaciones admitidas, tiempo de acceso, etc. • Generalmente es un circuito combinacional, pero puede ser secuencial si existen tiempos de acceso equivalentes a varios ciclos de reloj del microprocesador.

ARQUITECTURA DE BUSES (III) • Existen algunos microprocesadores que multiplexan en el tiempo direcciones bajas y datos por un mismo bus, a fin de reducir el número de pins del microprocesador. • Estos sistemas presentan una señal que permite separar, en caso necesario, los buses de datos y direcciones bajas (ALE en los microprocesadores de Intel). • Existen circuitos integrados de memoria y/o puertos de entrada/salida compatibles con el bus multiplexado de direcciones bajas y datos. BUS DE DIRECCIONES BAJAS BUS DE DIRECCIONES ALTAS

BUS DE DIRECCIONES (COMPLETO) BUS DE CONTROL

µP

DISPOSITIVOS CON BUSES MULTIPLEXADOS

DEMULTIPLEXOR DE DIRECCIONES Y DATOS (LATCH)

SUBSISTEMA DE DECODIFICACIÓN SELECCIÓN

DISPOSITIVOS CON BUSES SEPARADOS

SEÑALES DE SELECCIÓN DE DISPOSITIVO BUS MULTIPLEXADO DE DIRECCIONES BAJAS Y DATOS

JUEGO DE INSTRUCCIONES (I) • Es el conjunto de operaciones básicas que un microprocesador es capaz de realizar. • Cada operación básica corresponde a una instrucción y, por consiguiente, a un código binario (combinación de 1s y 0s) almacenado en la memoria de programa. • El juego de instrucciones es propio de cada microprocesador y depende, en buena parte, de su arquitectura interna (operadores y registros de la unidad de proceso), siendo un reflejo de esta. • La potencia de un microprocesador se mide, en buena parte, por su juego de instrucciones. • La codificación del juego de instrucciones es propia de cada microprocesador.

JUEGO DE INSTRUCCIONES (II) • Una instrucción puede ocupar una o varias posiciones de memoria. • La primera de estas posiciones de memoria contiene el campo de operación, cuyo contenido binario identifica la operación a realizar y el número de posiciones de memoria adicionales de la instrucción. También puede contener otros campos con información sobre los operandos a utilizar en la operación. • Las restantes posiciones de memoria, caso de existir, contienen información adicional sobre los operandos a utilizar en la operación. • Se llama operando fuente al que se utiliza como dato de entrada en una operación. • Se llama operando destino al que se utiliza como destinatario del resultado de una operación. – Normalmente sólo hay un operando destino. – El operando destino suele ser uno de los operandos fuente en las instrucciones en las que interviene más de un operando fuente.

JUEGO DE INSTRUCCIONES (III) • Instrucciones de movimiento de datos. - Copia R1 (operando fuente) en R0 (operando destino): (R0) ← (R1) - Carga el valor 0 (operando fuente) en A (operando destino): (A) ← 0

• Instrucciones aritméticas. - Carga la diferencia entre R1 y R0 (operandos fuente) en R1 (operando destino): (R1) ← (R1) – (R0) - Incrementa A (operando fuente y destino) en una unidad (operando fuente): (A) ← (A) + 1

• Instrucciones lógicas. - Carga la O-exclusiva de R2 y 25H (operandos fuente) en R2 (operando destino): (R2) ← (R2) ⊕ 25H - Complementa el bit de acarreo CY (operando fuente y destino): (CY) ← (CY)’

• Instrucciones de ruptura de secuencia. - Salta a la posición de memoria 27FEH: (PC) ← 27FEH - Salta a la posición de memoria ubicada 47H posiciones hacia delante: (PC) ← (PC) + 47H

• Instrucciones mixtas. - Decrementa A y salta a la posición de memoria ubicada 79H posiciones hacia atrás si A pasa a ser 0

• Instrucciones especiales - Para el funcionamiento del microprocesador

MODOS DE DIRECCIONAMIENTO DE LOS OPERANDOS (I) • Los operandos fuente y destino que intervienen en la operación indicada por una instrucción pueden especificarse de varias formas distintas. • Se llaman modos de direccionamiento de los operandos a las distintas formas de interpretar la información contenida en la instrucción para determinar los operandos que intervienen en ella. • Los modos de direccionamiento ofrecen: – Versatilidad en el manejo de estructuras de datos complejas. – Reducir el número de bits de los campos de operando.

• La potencia de una máquina se mide, entre otras cosas, por la variedad de modos de direccionamiento que admite.

MODOS DE DIRECCIONAMIENTO DE LOS OPERANDOS (II) • Implícito: el operando se encuentra implícito en la operación a realizar por el carácter propio de dicha operación o es el único posible dada la arquitectura del microprocesador. - La unidad en las operaciones de incrementar o decrementar: (A) ← (A) + 1 - El 0 en las operaciones de puesta a 0 (“clear”) de un registro: (R0) ← 0 - El registro destino de las operaciones aritméticas y lógicas si es el único posible: (A) ← (A) + 15H

• Inmediato: el operando es una constante que se encuentra en las posiciones de memoria que siguen al código de la instrucción (sólo aplicable a operandos fuente). - El operando fuente usado en la carga del valor 25H en R0: (R0) ← 25H - El operando fuente usado en la suma del valor 18H a A: (A) ← (A) + 18H

DIR+1 DIR

18H "sumar # a A"

MEMORIA DE PROGRAMA

INSTRUCCIÓN

A

25H → 3DH UNIDAD DE PROCESO

MODOS DE DIRECCIONAMIENTO DE LOS OPERANDOS (III) • Directo a registro: el operando se encuentra o se guarda en un registro de la unidad de proceso. Este modo de direccionamiento se caracteriza por un acceso muy rápido a los datos y requerir pocos bits de codificación, lo que permite su inclusión en la primera posición de la instrucción, junto al campo de operación). - El operando destino usado en el incremento de R1: (R1) ← (R1) + 1 - Los operandos usados en la carga de R2 con la suma de R1 y R2 : (R2) ← (R2) + (R1)

DIR

"sumar R1 a R2"

MEMORIA DE PROGRAMA

INSTRUCCIÓN

R1

13H

R2

24H → 37H

UNIDAD DE PROCESO

MODOS DE DIRECCIONAMIENTO DE LOS OPERANDOS (IV) • Directo o absoluto: el operando es, se encuentra o se guarda en una dirección de la memoria de datos, dirección que viene indicada en las posiciones de memoria que siguen al código de la instrucción. Una de sus utilizaciones es en instrucciones de ruptura de secuencia. Normalmente se indican todos los bits de la dirección, pero existen modos de direccionamiento particulares en los que basta con indicar sólo parte de ellos, los menos significativos, estando los demás fijos a un valor predeterminado (directo corto) o determinado por el contenido de un registro (página). - El operando fuente usado en la carga del contenido de la posición 25H en R1: (R1) ← (25H) - El operando destino usado en la carga del valor 35H en la posición 74H: (74H) ← 35H

DIR+2

74H

DIR+1

35H

DIR

INSTRUCCIÓN

74H

??? → 35H

"mover # memoria" MEMORIA DE DATOS

MEMORIA DE PROGRAMA

MODOS DE DIRECCIONAMIENTO DE LOS OPERANDOS (V) • Indirecto: el operando se encuentra o se guarda en una dirección de la memoria de datos, dirección que es el contenido de un registro especial de la unidad de proceso, denominado registro de base. Pueden existen varios registros de base, en cuyo caso debe indicarse de cual se trata. - El operando destino usado en el incremento de la posición de memoria apuntada por el registro de base RB1: ((RB1)) ← ((RB1)) + 1

RB1

137H

UNIDAD DE PROCESO

DIR

"incrementar @RB1"

MEMORIA DE PROGRAMA

INSTRUCCIÓN

137H

19H → 1AH

MEMORIA DE DATOS

MODOS DE DIRECCIONAMIENTO DE LOS OPERANDOS (VI) • Indirecto postincremental: el operando se encuentra o se guarda en una dirección de la memoria de datos, dirección que está memorizada en un registro de base. Posteriormente la dirección memorizada en el registro de base se incrementa en el tamaño del operando. - El operando destino usado en el decremento de la posición de memoria previamente apuntada por el registro de base RB1: ((RB1)) ← ((RB1)) – 1 ; (RB1) ← (RB1) + 1

RB1

205H → 206H

UNIDAD DE PROCESO

DIR

"decrementar @+RB1

MEMORIA DE PROGRAMA

INSTRUCCIÓN

205H

80H → 7FH

MEMORIA DE DATOS

MODOS DE DIRECCIONAMIENTO DE LOS OPERANDOS (VII) • Indirecto predecremental: el operando se encuentra o se guarda en una dirección de la memoria de datos, dirección que está memorizada en un registro de base. Previamente la dirección memorizada en el registro de base se decrementa en el tamaño del operando. - El operando destino usado en la carga del valor 3FH en la posición de memoria finalmente apuntada por el registro de base RB0: (RB0) ← (RB0) – 1 ; ((RB0)) ← 3FH

RB0

305H → 304H

UNIDAD DE PROCESO DIR+1 DIR

3FH "mover # –@RB0"

MEMORIA DE PROGRAMA

INSTRUCCIÓN

304H

??? → 3FH

MEMORIA DE DATOS

MODOS DE DIRECCIONAMIENTO DE LOS OPERANDOS (VIII) • Indirecto con desplazamiento: el operando se encuentra o se guarda en una dirección de la memoria de datos, dirección que es la suma del contenido de un registro de base y de un desplazamiento, indicado en las posiciones de memoria que siguen al código de la instrucción y expresado en complemento a 2. - El operando destino usado en la puesta a 0 de la posición de memoria apuntada por el registro de base RB0 con un desplazamiento de +27H: ((RB0) + 27H) ← 0

RB0

534H + 27H = 55BH

534H

UNIDAD DE PROCESO DIR+1 DIR

+27H "borrar @(RB0,+)"

MEMORIA DE PROGRAMA

INSTRUCCIÓN

55BH

??? → 0

MEMORIA DE DATOS

MODOS DE DIRECCIONAMIENTO DE LOS OPERANDOS (IX) • Indirecto indexado: el operando se encuentra o se guarda en una dirección de la memoria de datos, dirección que es la suma del contenido de un registro de base y del contenido de otro registro especial de la unidad de proceso, denominado registro de índice. Pueden existen varios registros de índice, en cuyo caso debe indicarse de cual se trata. - El operando destino usado en la puesta a 0 de la posición de memoria apuntada por los registros de base RB0 e índice RI1: ((RB0) + (RI1)) ← 0

RB0

117H

RI1

237H

117H + 237H = 34EH

UNIDAD DE PROCESO

DIR

"borrar @(RB0,RI1)"

MEMORIA DE PROGRAMA

INSTRUCCIÓN

34EH

??? → 0

MEMORIA DE DATOS

MODOS DE DIRECCIONAMIENTO DE LOS OPERANDOS (X) • Indirecto indexado con desplazamiento: el operando se encuentra o se guarda en una dirección de la memoria de datos, dirección que es la suma del contenido de un registro de base, del contenido de un registro de índice y de un desplazamiento, indicado en las posiciones de memoria que siguen al código de la instrucción y expresado en complemento a 2. - El operando destino usado en la puesta a 0 de la posición de memoria apuntada por los registros de base RB1 e índice RI1 con un desplazamiento de –15H: ((RB1) + (RI1) – 15H) ← 0

RB1

356H

RI1

7EH

356H + 7EH – 15H = 3AFH

UNIDAD DE PROCESO DIR+1 DIR

–15H "borrar @(RB1,RI1,+)"

MEMORIA DE PROGRAMA

INSTRUCCIÓN

3AFH

??? → 0

MEMORIA DE DATOS

MODOS DE DIRECCIONAMIENTO DE LOS OPERANDOS (XI) • Relativo al contador de programa: el operando es, se encuentra o se guarda en una dirección de la memoria de programa, dirección que es la suma del contenido del contador de programa y de un desplazamiento, indicado en las posiciones de memoria que siguen al código de la instrucción y expresado en complemento a 2. Una de sus utilizaciones es en instrucciones de ruptura de secuencia. - El operando usado en un salto relativo con un desplazamiento de +79H: (PC) ← (PC) + 79H

DIR+1 DIR

+79H "salto relativo"

MEMORIA DE PROGRAMA

INSTRUCCIÓN

PC

7FE0H → 8059H UNIDAD DE CONTROL

SUBRUTINAS

LLAMADA A LA SUBRUTINA

CÓDIGO IDÉNTICO

ENTRADA DE LA SUBRUTINA SUBRUTINA

MEMORIA DE PROGRAMA

MEMORIA DE PROGRAMA

RETORNO DE LA SUBRUTINA

Para saber a que dirección de la memoria de programa se ha de retornar es necesario que esta dirección se almacene en un sitio conocido en el momento de la llamada.

LA PILA O “STACK” (I)

PROGRAMA PRINCIPAL

SUBRUTINA 1

SUBRUTINA 2

SUBRUTINA 3

MEMORIA DE PROGRAMA

Cuando existen llamadas a subrutinas encadenadas, se han de almacenar las sucesivas direcciones de retorno de forma que la última que se ha almacenado sea la primera en recuperarse. Para almacenar las direcciones de retorno se necesita una estructura LIFO (“last-in first-out”), denominada “stack” o pila. Existen dos posibilidades: • Una pila dedicada en la unidad de control que admite sólo un número limitado de llamadas encadenadas (microcontroladores poco potentes). • Una pila montada sobre la memoria de datos, de tamaño y ubicación determinados por el usuario y gestionada con la ayuda de un registro denominado puntero de pila, “stack pointer” o SP (lo más habitual).

LA PILA O “STACK” (II) • Dependiendo del microprocesador, la pila puede crecer hacia direcciones bajas de memoria o hacia direcciones altas de memoria (direcciones bajas en el ejemplo). • Dependiendo del microprocesador, el puntero de pila puede apuntar a la última posición llena o a la primera posición vacía (primera posición vacía en el ejemplo). • Una llamada a subrutina (CALL) añade a la pila (escribe) el valor del contador de programa de la siguiente instrucción. El puntero de pila se actualiza en consonancia. • Un retorno de subrutina (RET) extrae de la pila (lee) el valor que ha de poner en el contador de programa. El puntero de pila se actualiza en consonancia. • Existen instrucciones para añadir (PUSH) y para extraer (POP) informaciones de la pila. DIR+n

DIR+n

DIR+n LLENA

SP

LLENA

POP RET

SP

CALL

PILA

SP DIR

DIR

DIR

LLENA

PUSH

PILA

PILA

INTERRUPCIONES (I) • Se llaman aplicaciones en tiempo real a aquellas aplicaciones caracterizadas por requerir una respuesta muy rápida del sistema que las controla ante determinados eventos externos detectables mediante señales de entrada apropiadas (por ejemplo, presión o temperatura que excede un límite prefijado). • La consulta periódica a alta frecuencia de estas señales de entrada (“pooling”) consume mucho tiempo de CPU, por lo que es preferible incorporar un mecanismo especial al microprocesador para solventar este problema (interrupciones). • Una interrupción es una indicación de un suceso acaecido en el hardware o en el software de un microprocesador que provoca una ruptura de la secuencia de instrucciones que éste realiza, de forma que el microprocesador pasa a realizar una rutina especial de tratamiento de dicha indicación (servicio de interrupción), tras completar la cual se retorna al punto del programa en que se produjo la ruptura. INTERRUPCIÓN

PROGRAMA

SERVICIO DE INTERRUPCIÓN MEMORIA DE PROGRAMA

INTERRUPCIONES (II) • La unidad de control consulta la existencia de interrupciones tras completar la ejecución de cada instrucción. • Ante la existencia de una interrupción, el microprocesador inicia una ruptura de secuencia similar a la de una llamada a subrutina: guarda la dirección de retorno en la pila y carga en el contador de programa una dirección que corresponde al punto de entrada del servicio de interrupción asociado a dicha señal. • Dependiendo del microprocesador, la dirección cargada en el contador de programa: – O es una dirección preestablecida asociada a la interrupción y que se genera automáticamente. – O es una dirección que se halla memorizada en una posición preestablecida asociada a la interrupción (vector de interrupción) y que se genera automáticamente. Esta alternativa es la más corriente en los microprocesadores potentes.

• Acabado el servicio de interrupción, se retorna al programa interrumpido de forma similar a como se retorna de una subrutina: se recupera la dirección de retorno de la pila. • Debe garantizarse la integridad de los datos utilizados por el programa interrumpido. Para ello es fundamental, al comenzar un servicio de interrupción, preservar los valores de los registros de la unidad de proceso que van a ser utilizados en él y recuperar estos valores al acabarlo. El lugar idóneo para preservar estos valores es la pila. Algunos microprocesadores preservan y recuperan estos valores de forma automática.

ACCESO DIRECTO A MEMORIA • Sólo algunos microprocesadores (los muy potentes) permiten accesos directos a memoria. • Los dispositivos de entrada/salida capaces de realizar accesos directos a memoria disponen de un procesador especializado, llamado controlador de DMA, capaz de realizar accesos a memoria de forma similar a como lo hace el microprocesador. • En los accesos directos a memoria se utilizan los buses de direcciones, datos y control del propio microprocesador. • El controlador de DMA conoce cuantos datos debe transferir y en que posiciones de memoria se encuentran dichos datos (o a que posiciones de memoria se deben enviar). • El mecanismo de un acceso directo a memoria es el siguiente: – El controlador de DMA solicita al microprocesador permiso para utilizar los buses. – El microprocesador consulta esta petición en cada ciclo de máquina autorizado. – Acabado el ciclo de máquina, el microprocesador libera sus buses (alta impedancia), indicando dicha situación al controlador de DMA. – El controlador de DMA se apropia de los buses y realiza la transferencia de datos entre memoria y el dispositivo de entrada/salida. – Acabada la transferencia, el controlador de DMA libera los buses (alta impedancia), indicando dicha situación al microprocesador. – El microprocesador retoma el control de los buses y continua ejecutando ciclos de máquina.

DISPOSITIVOS DE ENTRADA/SALIDA O PERIFÉRICOS (I) • Los dispositivos de entrada/salida, dispositivos periféricos o, simplemente, periféricos, son aquellos dispositivos que permiten la interacción de un computador con el mundo exterior. • Los dispositivos de entrada/salida no forman parte esencial del computador, pero están situados cerca de él. • La conexión de un dispositivo de entrada/salida a un computador se hace a través de un circuito electrónico que forma parte del subsistema de entrada/salida del computador y que se denomina interfaz. • Desde el punto de vista de la CPU, un interfaz aparece como un conjunto de registros de entrada/salida (en algunos microprocesadores, registros de funciones especiales SFR) a los que se accede mediante los buses de direcciones, datos y control. • Algunos interfaces pueden generar interrupciones y/o accesos directos a memoria.

µP

DATOS DIRECCIÓN CONTROL µC

REGISTROS

INTERFAZ

PERIFÉRICO

DISPOSITIVOS DE ENTRADA/SALIDA O PERIFÉRICOS (II) Periféricos típicos de un ordenador personal (PC):

Periféricos típicos en una aplicación industrial:

• • • • • • • • • • •

• • • • • • • • • • •

Teclado. Ratón. Escáner. Terminal (pantalla). Impresora. Altavoces. Disco duro (HD). Disco flexible (FD). Lectora/grabadora de CDs. Lectora/grabadora de DVDs. Periféricos de comunicaciones (UART, USB, módem, red, ...).

Interruptores y pulsadores. (*) Finales de carrera. (*) Sensores de magnitudes analógicas. Temporizadores. LEDs, bombillas y siete-segmentos. (*) Alarmas acústicas. (*) Motores y electroválvulas. (*) Visualizadores de cristal líquido (LCD). Impresoras. Memorias E2PROM y Compact Flash. Periféricos de comunicaciones (UART, I2C, CAN, Firewire, Bluetooth, ...).

(*) Vía puertos paralelos de entrada/salida.

DISPOSITIVOS DE ENTRADA/SALIDA O PERIFÉRICOS (III) Los registros que típicamente existen en un interfaz son: • Registros de salida: – Registros de datos. – Registros de control o de configuración (permiten establecer el modo de funcionamiento del periférico).

• Registros de entrada: – Registros de datos. – Registros de estado (permiten conocer el estado de funcionamiento del periférico). – Registros de salida (son realimentaciones de los registros de entrada que facilitan la lectura de su contenido).

COMUNICACIÓN DE DATOS ENTRE SISTEMAS (I) La comunicación de datos de n bits entre sistemas puede ser: • En paralelo, mediante n líneas, una por bit (multiplexión en el espacio). – Permite mayor “throughput” (datos transmitidos por unidad de tiempo). – Requiere muchas señales de entrada/salida, tanto en el emisor como en el receptor. – Es cara, especialmente para distancias largas.

• En serie, mediante una línea por la que se envían los n bits una tras otro (multiplexión en el tiempo). – Permite menor “throughput”. – Requiere una única señal de entrada/salida para los datos, tanto en el emisor como en el receptor. – Es barata, especialmente para distancias largas. – Requiere de un pacto entre emisor y receptor para establecer la velocidad de transmisión, es decir el número de bits transmitidos por unidad de tiempo (“baud-rate”). – Requiere que emisor y receptor dispongan de una señal de reloj similar que permita establecer el tiempo de transmisión de los bits.

COMUNICACIÓN DE DATOS ENTRE SISTEMAS (II) La comunicación de datos en serie entre sistemas puede ser: • Síncrona, es decir, emisor y receptor presentan la misma señal de reloj. – La señal de reloj se genera en uno de los sistemas, normalmente el emisor, y se transmite al otro. – La señal de reloj puede transmitirse por una línea dedicada o por la misma línea que los datos, mezclada con ellos. – Se pueden transmitir paquetes con muchos bits de datos seguidos.

DATOS EMISOR TE

EMISOR

RECEPTOR RELOJ

DATOS + RELOJ

RECEPTOR

TE

• Asíncrona, es decir, emisor y receptor presentan señales de reloj distintas. – Las señales de reloj han de ser similares (diferencia pequeña) para evitar errores de transmisión. – No se pueden transmitir muchos bits seguidos, al acumularse los errores de tiempo de un bit.

EMISOR TE

DATOS

RECEPTOR TR

COMUNICACIÓN ASÍNCRONA DE DATOS • • • •

Los datos se encapsulan en paquetes con 5 a 9 bits de datos (8 habitualmente). Los bits de datos se envían de menos significativo a más significativo. Los paquetes presentan delimitadores (1 bit de “start” y 1 o 2 bits de “stop”). Opcionalmente se puede enviar un bit redundante para detectar errores de transmisión: el bit de paridad (par o impar). • El bit de “start” se utiliza para sincronizar los relojes y determinar el momento en que se muestrean los bits (a mitad de sus tiempos de bit). • Se utiliza para transmitir caracteres alfanuméricos (ASCII) u otros datos de hasta 9 bits. • Existe una tolerancia de ±4% entre los relojes de emisor y receptor. “1” DATO

LSB

MSB

“0”

START (1 BIT)

DATOS (8 BITS)

STOP PARIDAD (1 BIT) (1 o 2 BITS) (OPCIONAL)