19
TUTORIAL DE ENTRADA/SALIDA 1.- Introducción Los dispositivos o puertos de entrada/salida permiten realizar transferencias de información entre el exterior y el microprocesador. Existen dos modos de transferencia: paralelo: el puerto utiliza un conjunto de líneas, tantas como bits a transmitir simultáneamente, por las que cada una pasa un bit en un intervalo de tiempo. Serie: el puerto utiliza una única línea por la que, en intervalos de tiempo diferentes, se transmiten, uno a uno, todos los bits del dato. Téngase en cuenta que las transferencias entre el microprocesador y el puerto concreto, que se realizan a través del bus de datos, son, siempre, de tipo paralelo. 1

Tutorial sobre Puertos Paralelos y Puertos Series

Embed Size (px)

Citation preview

Page 1: Tutorial sobre Puertos Paralelos y Puertos Series

TUTORIAL DE ENTRADA/SALIDA

1.- IntroducciónLos dispositivos o puertos de entrada/salida permiten realizar transferencias de información entre elexterior y el microprocesador. Existen dos modos de transferencia:

paralelo: el puerto utiliza un conjunto de líneas, tantas como bits a transmitirsimultáneamente, por las que cada una pasa un bit en un intervalo de tiempo.

Serie: el puerto utiliza una única línea por la que, en intervalos de tiempo diferentes, setransmiten, uno a uno, todos los bits del dato.

Téngase en cuenta que las transferencias entre el microprocesador y el puerto concreto, que serealizan a través del bus de datos, son, siempre, de tipo paralelo.

1

Page 2: Tutorial sobre Puertos Paralelos y Puertos Series

2.- Dispositivos o puertos de entrada/salida con transferencia en paralelo.

Un puerto de entrada/salida en su forma más básica es un simple registro o latch.

LATCH 74LS373

Una configuración de este dispositivo como puerto de salida se muestra a continuación:

En la figura anterior, el latch siempre muestra su contenido en la salida, puesto que el pin /OC =0.A su vez, las salidas del latch se conectan con diodes LEDS que permiten visualizar su contenido,de forma que un 1 en alguna salida del LATCH provoca que el LED asoicado se ilumine, mientrasque un 0, lo apaga. Las entradas del latch se conectan al bus de datos del sistema (que se ha

2

D

Q

D

Q

D

Q

D

Q

D

Q

D

Q

D

Q

D

Q

OC

I0

I1

I2

I3

I4

I5

I6

G

I7

O0

O1

O2

O3

O4

O5

O6

O7

LATCH 373

BUS DE

DATOS

Decodificador de

direccionesBUS DE

DIRECCIONESOCG

Page 3: Tutorial sobre Puertos Paralelos y Puertos Series

supuesto de 8 bits). Por otro lado, la entrada de habilitación, G, se conecta, a través del sistema dedecodificación, al bus de direcciones del microprocesador, por lo que para una dirección dememoria concreta, el latch se habilitará y almacenará el contenido del bus de datos. Desde el puntode vista del programador, el encendido o apagado de los LEDs, sólo es cuestión de una escritura enuna posición de memoria.

Ejemplo: Supongamos un microprocesador genérico para el que se le ha asignado la dirección dememoria $RES al registro concreto. La secuencia de instrucciones necesarias para encender deforma progresiva cada uno de los LEDS sería:

BUCLE: MUEVE #$80,$RESMUEVE #$40,$RESMUEVE #$20,$RESMUEVE #$10,$RESMUEVE #$08,$RESMUEVE #$04,$RESMUEVE #$02,$RESMUEVE #$01,$RESSALTO BUCLE

PROBLEMA: La rapidez con la que se ejecuta ese código provocaría que se vean todoslo LEDs encendidos. (El ojo humano no distingue frecuencias superiores a 30Hz)

Una configuración del mismo registro, pero como puerto de entrada, se representa en la siguientefigura.

Puesto que la entrada G está a 1 lógico, el LATCH, permanentemente, almacena el contenido de susentradas. A su vez, las entradas del registro están conectadas a pulsadores mecánicos que disponende una resistencia de pull-up. Si un pulsador está presionado, el latch se carga con un 0 lógico, sino,con un 1 lógico. Las salidas del latch se conectan al bus de datos del microprocesador (que hemos

3

LATCH 373

BUS DE

DATOS

Decodificador de

direccionesBUS DE

DIRECCIONESOC

R

5v5v

5v

G

Page 4: Tutorial sobre Puertos Paralelos y Puertos Series

supuesto igualmente de 8 bits), para lo que se necesita la alta impedancia, por lo que, ahora, laentrada OE, que controla la lectura del latch, se conecta al bus de dirección a través de undecodificador de dirección. Para evitar conflictos en el bus de datos, el decodificador dispone de unhabilitador conectado a la señal de R que genera el microprocesador en todo acceso de lectura ya seamemoria o a entrada/salida. Desde el punto de vista del programador, la lectura de una dirección dememoria permitirá determinar si las teclas están pulsadas o no.

Ejemplo: Se desea desarrollar un programa que permita realizar una acción si se pulsa el botónsituado en la posición más significativa del bus. (Se supone un microprocesador genérico y que elregistro está mapeado en la dirección de memoria $RES):

CLR D0 ;D0,D1,D2 son registros internos del microprocesador.MUEVE #$FF, D1 ;D1 es un registro que contiene el valor inicia FF que

;indica que ninguna tecla ha sido pulsada.BUCLE: MUEVE $RES,D0 ;Lectura del puerto.

MUEVE D0,D2 ;Se salva el contenido de D0 en D2 AND #$80,D0 ;El registro D0 tiene un 0 si la tecla está pulsada y ≠0

;en caso contrario.BNE posicionMUEVE D2,D1SALTA BUCLE

Posicion: MUEVE D1,DAND #$80,D0 ;Comprueba el valor del bit más significativoBEQ BUCLEJSR accionMUEVE #$FF,D1SALTA BUCLE

Este programa comprueba si la tecla ha sido pulsada o no y lo comprueba con el valor depulsación de la última vez que accedió al puerto de entrada.

PROBLEMA: Esta rutina no elimina los fenómenos físicos de los rebotes en los contactos.

Los puertos de entrada/salida suelen incluir alguna circuitería adicional con información de estado,que incluye:

disponibilidad del periférico para la lectura de un dato o registro interno disponibilidad del periférico para la escritura de un dato

Esto dá lugar a dos tipos de transferencias entre el microprocesador y el puerto: Incondicionales: el microprocesador no debe acceder al puerto de E/S para saber si este

está disponible para la transferencia. Condicionales: el microprocesador debe acceder para determinar si el puerto está

disponible para la transferencia.

Ejemplos de transferencia incondicionales se han presentado con anterioridad en la lectura delteclado o la visualización de LEDs. Como ejemplo de transferencia condicional supongamos que undeterminado sistema tiene que recibir información de otro. La información recibida es leída por elmicroprocesador a través de un puerto de E/S del tipo 74LS373. El sistema remoto pone un dato

4

Page 5: Tutorial sobre Puertos Paralelos y Puertos Series

nuevo en la entrada del latch cada cierto tiempo. La lectura del latch está condicionada a que elsistema remoto coloque un nuevo dato en él. Una lectura incondicional del latch, en la que nosabríamos si el sistema remoto a situado un nuevo dato, provocaría multiplicidades y pérdidas dedatos. Para conseguir una transferencia condicional, debe utilizarse cierto hardware que informe almicroprocesador de que el sistema remoto ha depositado un nuevo dato en el latch. En la siguientefigura se aprecian estos cambios.

El dispositivo de entrada dispone de un bus por el que se transfiere los datos y una línea adicionalque avisa de la existencia de un nuevo dato en el bus. El cambio del valor lógico de dicha línea (de0 a 1) produce la carga del nuevo dato en el latch y la puesta a 1 del biestable D. Este biestable,puede considerarse como otro puerto de entrada/salida que se sitúa en una dirección de memoria(puerto1) diferente a la del latch (puerto2). Las direcciones puerto1 y puerto2 se obtienen mediantesendos decodificadores conectados al bus de direcciones. La salida del biestable se conecta a unalínea del bus de datos (supongamos la línea 7) a través de un buffer triestado que se activa cuando elmicroprocesador hace una operación de lectura sobre la dirección puerto1. El latch coloca sucontenido en el bus de datos cuando el microprocesador realiza una operación de lectura sobre ladirección de memoria puerto2, lo cual pone a 0 el contenido del biestable D. El microprocesadordebe consultar el contenido del bit 7 de la posición de memoria puerto2 para determinar si existe unnuevo dato (si está a 1), o no (si está a 0). Si existe dato nuevo, se aplica lectura sobre la posición dememoria puerto1, lo cual borra el bit 7 de la posición puerto2.

El siguiente programa ilustra todo este proceso.

BUCLE: MUEVE #$PUERTO1,D0BEQ BUCLEMUEVE #$PUERTO2,(A0)+SALTA BUCLE

Uno de los principales problemas que plantea la transferencia paralelo es la velocidad a la que estapuede tener lugar. Si el dispositivo externo envía datos con mayor velocidad que la que el receptores capaz de leer los datos, se puede dar el caso de pérdidas de información: OVERRUN. Lasolución de este problema se encuentra en el diálogo con el dispositivo externo. Este último sólomanda cuando el primero está disponible para recibir el dato. Este diálogo se denominaHANDSHAKE. Una posible solución para el caso del ejemplo anterior sería:

5

LATCHBUFFERSTRIESTADO

DQ

DATOSDEL

DISPOSITIVODE

ENTRADABUSDE

DATOS

1

puerto1puerto2

ACTIVADORDESDE

EL DISPOSITIVODE ENTRADA

Page 6: Tutorial sobre Puertos Paralelos y Puertos Series

El emisor dispone de una entrada adicional, BUSY generada por el equipo que recibe los datos. Lasalida BUSY se obtiene de la salida del biestable D.(BUSY=Q). La lectura del latch por parte delmicroprocesador local pone a 0 el biestable y la línea BUSY que solicita al emisor un nuevo dato.

El ejemplo más común de handshake en una transferencia en paralelo es la comunicación de unordenador con la impresora, donde BUSY hace las veces de ACK, y el activador, de STROBE

6

LATCHBUFFERSTRIESTADO

DQ

DATOSDEL

DISPOSITIVODE

ENTRADABUSDE

DATOS

1

puerto1puerto2

ACTIVADORDESDE

EL DISPOSITIVODE ENTRADA

BUSY(LINEA DE OCUPADO)

#ACK

#Strobe

BUS DE DATOS

Emisor Receptor

Bus de datos

#Strobe

#ACK

Page 7: Tutorial sobre Puertos Paralelos y Puertos Series

Muchas de las funciones de transferencia de entrada/salida paralelo vienen integradas en chips cuyasfunciones pueden ser programadas dinámicamente por el microprocesador en función de lasnecesidades.

Un mismo componente puede integrar varios latches

integrar funciones de control de la transferencia paralela (protocolos handshake)

programar el modo de funcionamiento de cada uno de los bits de todos los puertos, estoes, si hacen función de entrada o salida.

Ejemplo: Interfaz periférico programable 8255

Dispone de un bus de datos de 8 bits (D7-0), un bus de direcciones con dos líneas para la selecciónde los registros internos (A1-0), un bus de control (/CS,RESET,/WR,/RD) y tres puertosbidireccionales de 8 bits cuyas salidas son PA7-0,PB7-0,PC7-0.

El microprocesador se conecta con este dispositivo mediante su bus de datos D0-7, el bus dedirecciones, cuyas líneas de menor peso, A1,A0 se conectan directemente a las entradas del mismonombre del 8255, mientras que las restantes líneas de direcciones del microprocesador se utilizanpara la decodificación de las direcciones de memoria donde se haya ubicada este chip y que activanla entrada /CS del mismo. Además las líneas de entrada /RD y /WD distinguen si la transferencia serealiza desde al microprocesador al 8255 (escritura) o desde el 8255 al microprocesador (lectura).La línea de RESET inicializa el integrado y se conecta con la señal RESET general que inicializatodo el sistema.

7

2423222120

19181716151413

123456789101112

PA3

A1A0

D3

GND

/WRRESET

D2D1

VCCD7D6D5D4

28272625

32313029

353433

3736

403938

PA2PA1PA0

PA4PA5PA6PA7

/RD/CS

PC3PC2PC1PC0

PC7PC6PC5PC4

PB0PB1PB2

PB5PB4PB3

PB7PB6

D0

8255

Page 8: Tutorial sobre Puertos Paralelos y Puertos Series

Ejemplo de conexión:

El microprocesador ve en la memoria un total de cuatro direcciones consecutivas que provocan elacceso al dispositivo. Por ejemplo: si el decodificador de direcciones activa su salida para A15-2=$1000, entonces para las direcciones A15-0= $1000,$1001, $1002 y $1003, se accede a losregistros internos del 8255.

A1 A0 Registro0011

0101

Puerto APuerto BPuerto CRegistro decomando

Otro ejemplo: VIA 6522

8

8255

Decodificador de

direccion

/CS

/RD/WR

/RD/WR

BUS DE

DATOSMICROPROCESADOR

A0

A1

BUS DE

DIRECCIONESA0-A15 A15-2

PA7-0

PB7-0

PC7-0

Page 9: Tutorial sobre Puertos Paralelos y Puertos Series

Dispone de un bus de datos de 8 bits (D7-D0), un bus de direcciones con cuatro líneas (RS3-RS0)para seleccionar 16 registros internos, bus de control y dos puertos PA7-0 y PA7-0 entre otrasfunciones avanzadas.

3.- Dispositivos o puertos de entrada/salida con transferencia en serie

La transferencia en paralelo permite una velocidad de transmisión mayor que la serie, por eso se utilizaen sistema que requieren un volumen de intercambio de información importante. La transferencia enparalelo tiene un gran coste (proporcional al número de bits a transmitir y la distancia entre emisor yreceptor). Dos factores influyen en el coste:

el valor del enlace el valor de los drivers o circuitos que controlan los niveles de tensión en cada una de las líneas.

A mayor longitud de cable, mayor resistencia y capacidad presenta este, por lo que el driverdebe ser más potente.

Otro problema de la transferencia paralelo es el skewing, que aumenta cuando las longitudes delos cables son mayores. El skewing se realaciona con las diferencias entre los tiempos depropagación de las distintas señales por sus respectivos cables.

A distancias cortas la transferencia paralelo es más ventajosa, pero cuando la distancia aumenta, elincremento en el coste e la instalación se hace tan grande que es razonable plantearse una pérdida develocidad en beneficio de una bajada en el coste. La transferencia en paralelo se limita a sistemascerrados en que las distancias no son muy grandes (p.ej.: la interconexión entre los distintos circuitosintegrados de una placa) y la transferencia en serie se emplea para sistemas que están relativamentealejados.

El interfaz serie es un circuito integrado que realiza transferencias de datos en paralelo con elprocesador y las convierte en trasferencias serie con el exterior. El núcleo de un periférico serie es unregistro de desplazamiento

9

Page 10: Tutorial sobre Puertos Paralelos y Puertos Series

Toda transferencia de información requiere de sincronización entre el receptor y el transmisor. Elreceptor de una transferencia en serie debe saber en qué instantes debe generar el desplazamiento delcontenido de su registro de recepción para capturar, correctamente, los bits de información. (la clk deambos periféricos debe ser la misma). Existen dos modalidades de transferencia en serie atendiendo almodo de sincronización:

síncrona asíncrona

En la transferencia seria síncrona el transmisor envía, en una línea adicional a la de datos, la señal dereloj de su registro de desplazamiento. El receptor recupera la señal de esta línea y la utiliza como relojde su registro de desplazamiento. En esta técnica se requiere dos líneas como mínimo, lo que produceefectos de skewing y coste no deseados. Existen técnicas de comunicación síncrona que permiteneliminar una de las dos línea (autoreloj).

En el método por transferencia en serie asíncrona, el transmisor sólo envía los datos, por tanto la formaen que el receptor se sincroniza es bien diferente. Los sistemas involucrados en una transferencia serieasíncrona tienen que cumplir algunos requisitos para que ésta tenga lugar:

los relojes del transmisor y del receptor deben operar a la misma frecuencia(aunque esto no esposible por la existencia de tolerancias en los componentes).

la hilera de bits transmitidos debe incluir alguna información de sincronización además de losbits de los datos (especie de Ready)

los bits de sincronización activan el modo de recepción avisando que a partir de ellos sereciben, uno tras otro, los bits de datos

Frecuentemente se necesitara intercalar bits de sincronismo entre los bits de los datos paraconseguir resincronizar el reloj del receptor.

3.1 Transferencia seria asíncrona

La transferencia en serie asíncrona está orientada al carácter. Esto es, cada byte que se deseatransmitirse va a rodear de cierta información que permite su sincronización y la posible detección de errores.

10

Page 11: Tutorial sobre Puertos Paralelos y Puertos Series

Si el transmisor está en reposo, es decir, no tiene nada que transmitir, su salida se mantiene a 1 lógico(MARK). Si el transmisor va a iniciar una transferencia, primero pone su salida a 0,(SPACE) durante elmismo tiempo que la duración de un bit de datos (Tbit). Esto se conoce como el bit de inicio o bit destart. A continuación, se envían de 5 a 8 bits de datos, comenzando por el menos significativo delgrupo. Después del último bit del dato, y de manera opcional, se envía un bit de paridad que puede serpar, impar o fija (1 o 0 lógicos). Finalmente se envía un bit de stop cuya duración varía entre 1 y 2 Tbit yque se corresponde con un 1 lógico (MARK). Si el transmisor no tiene un nuevo byte que enviar, estepasa al estado de reposo y, su salida, a 1 lógico. Por contra, si existe un nuevo dato que transmitir, acontinuación del bit de stop se envía el bit de start del siguiente byte.

El formato asíncrono requiere, como mínimo, de 2 bits adicionales a los de datos para susincronización y 1 bit opcional, como la paridad, para la detección de errores. Pero, ¿Cómo sesincroniza el receptor?. El receptor continuamente muestrea la entrada en busca de un bit de start. Lafrecuencia con la que realiza este muestreo es 16 veces superior a la frecuencia de la señal que debeservir como desplazamiento de su registro. O sea, el receptor, en el tiempo de duración de un bit (Tbit),muestrea su entrada 16 veces.

Si comienza la transmisión de un byte. La línea de salida del transmisor pasa de 1 lógico (reposo) a 0lógico (bit de start) . Cuando el primer tick (o pulso de reloj) de muestreo del receptor detecta estatransición en su entrada, se activa un contador cuya misión consiste en esperar 8 ciclos de reloj o ticks.Transcurridos estos ciclos, el receptor vuelve a muestrear la entrada ( aproximadamente esto coincidecon el punto medio del bit de start ). Si esta es 1, el receptor se reinicializa buscando una nuevatransición de bajada ( asume que se ha recibido un falso bit de start ). Si la entrada es un 0, el receptorda como válida la llegada de un bit de start. Si se detecta un bit de start válido, se activa el mecanismode sincronización, gracias a la habilitación de un contador módulo 16 por el que se obtiene, a partir dela señal de muestreo, el reloj de desplazamiento del registro de recepción.

11

Page 12: Tutorial sobre Puertos Paralelos y Puertos Series

Entonces, ¿Para qué un bit de stop?. El bit de stop interviene en la función sincronizadora en el sentidode que permite asegurar una transición de MARK (bit de stop del carácter anterior) a SPACE (bit destart del carácter actual) cuando se transmiten datos de forma continuada.

Un receptor asíncrono dispone, además de un registro de desplazamiento, un registro intermedio(RHR) del tipo paralelo-paralelo que hace de interfaz entre el registro de desplazamiento y el bus dedatos del microprocesador. Esto hace que no sea tan crítico el momento del lectura del byte recibido.

Gracias al RHR el procesador tiene un tiempo igual al de duración de la recepción de un nuevo bytepara leer este registro antes de que su contenido se pierda por la sobreescritura. En algunos receptoreseste registro, denominado registro de mantenimiento de recepción (RHR - Receiver Holding Register -o simplemente registro de recepción, RR - Receiver Register -), es sustituido por una cola o FIFO.Asociado al registro de recepción existe un banderín o flag que se activa cada vez que el registro dedesplazamiento transfiere un dato nuevo hacia el registro de recepción. También podemos encontrar unflag de Overrun o de sobreescritura. Todos los receptores asíncronos tienen una circuitería adicionalque muestrea y chequea el bit de stop. Si este no es 1, se dice que existe un error de trama o Frammingerror que es recogido por un flag del mismo nombre.

12

Bit de Start

ReposoLSB

1º 8º 1º 16º

Al computador

RxD

Registro de Desplazamiento

Registro deMantenimiento

Flag

RHR

Page 13: Tutorial sobre Puertos Paralelos y Puertos Series

Los transmisores asíncronos también son implementados mediante un registro de desplazamiento. Uncircuito simplificado se muestra a continuación.

El procesador carga en paralelo el carácter a transmitir dentro de este registro gracias a la activación dela línea "Carga". Durante este proceso la posición menos significativa y la más significativa delregistro, se escriben con 0 y 1 respectivamente ( bit de start y bit de stop ). Finalizado el proceso decarga ( desactivación de la línea "Carga" y habilitación del reloj ) se inicia el de desplazamiento, graciasal cual primero sale el bit de start, después los bits del dato y por último el bit de stop, atravesando,todos ellos, un biestable llamado Línea. Este biestable está conectado a la línea de comunicaciones e,inicialmente, se encuentra a 1 lógico. Después de transmitir todos los bits del formato asíncrono, elbiestable mantiene el bit de stop, de esta forma se asegura que la salida se mantiene a 1 antes de que seinicie la transmisión de un nuevo dato. Asimismo, se dispone de un flag asociado con el registro dedesplazamiento que informa si este se encuentra vacío y, por tanto, disponible para aceptar un nuevodato.

Para una transmisión lo más eficiente posible en el sentido de aprovechamiento del canal, o sea, queeste se encuentre desocupado el menor tiempo posible, se realiza un doble "buffering" en lostransmisores.

13

Page 14: Tutorial sobre Puertos Paralelos y Puertos Series

El procesador no accede directamente al registro de desplazamiento. Carga el byte que quiere enviar enun registro de mantenimiento (THR - Transmitter Holding Register - o TR - Transmitter Register -) elcual transfiere automáticamene su contenido al de desplazamiento cuando este se encuentra vacío.Asociado al registro de transmisión, también existe un flag que avisa de cuándo este está disponiblepara aceptar un nuevo dato.

3.1.1 UART

Un dispositivo que permite la transmisión y recepción serie de información en modo asíncrono sedenomina con las siglas UART - Universal Asynchronous Receiver Transmiter- Transmisor ReceptorAsíncrono Universal.

Externamente la UART dispone de líneas de conexión con el microprocesador además de las propiasde transmisión y recepción. Estas son:

- bus de datos

14

Page 15: Tutorial sobre Puertos Paralelos y Puertos Series

- líneas de direcciones, - líneas de control y sincronismo

El bloque transmisor se compone de:- un decodificador de formato de datos que en función del número de bits de datos (5-8),

número de bits de stop (1-2) y el byte a transmitir, forma la SDU (unidad de datos serie) quese cargará en el registro de desplazamiento del transmisor TSR (Transmitter ShiftRegister) para su transmisión. La SDU contiene el bit de start, los bits de datos, paridad ybits de stop.

- Registro de mantenimiento de transmisión, THR- Registro de desplazamiento de transmisión TSR- Flag de THRE ( Transmisor Holding Register Empty o buffer de transmisión vacío) que se

encuentra en un registro llamado Registro de estado de serialización, SR ( Status Register ).Este flag se desactiva cuando el microprocesador escribe un dato en el THR.

- Flag de TSRE ( Transmitter Shift Register Empty o registro de desplazamiento vacío), quese activa cuando el registro TSR se ha quedado vacío y que se encuentra en el registro SR.

El bloque de recepción consta de:- registro de desplazamiento de recepción RSR (Receiver Shift Register ), que almacena los bits

de la SDU que se esperan recibir en función de los parámetros configurados de datos, stop yparidad

- registro de mantenimiento de recepción, RHR ( Receiver Holding Register ), - Flag RxRDY que se encuentra en el registro SR que y que se activa en cada transferencia del

RSR al RHR Cuando el registro RHR es leído, el flag RxRDY se desactiva automáticamente. - En paralelo con la carga del nuevo dato en el registro RHR y la activación de RxRDY, se

actualizan unos bits que informan sobre los posibles errores ocurridos en la recepción. Estos

15

BLOQUE DE TRANSMISION

Page 16: Tutorial sobre Puertos Paralelos y Puertos Series

bits son: overrun, framming error y parity error.

El generador de baudios programable genera la temporización necesaria para los bloques transmisor yreceptor. La frecuencia de la señal de reloj generada es 16 veces mayor que la velocidad con la se deseatransmitir y recibir los bits por el interfaz serie. Esta constituido por:

- un contador cuya señal de reloj es la que recibe la UART- un registro que almacena un determinado número depositado por el microprocesador- un comparador cuya misión es determinar si el contenido del registro es igual o menor

que el valor de cuenta del contador. Si obtenemos un igual como resultado de lacomparación, se activa la puesta a cero del contador y se genera un pulso de salida quees utilizado como señal de referencia para el bloque de transmisión y de recepción.

- Dentro de cada bloque, a su vez, existe un contador módulo 16 cuya salida actúa dereloj de los registros de desplazamiento. De esta forma la señal clk_tx_rx genera los 16ticks o pulsos de reloj por bit necesarios por el circuito de sincronización del bloquereceptor.

16

BLOQUE DE RECEPCIÓN

Page 17: Tutorial sobre Puertos Paralelos y Puertos Series

La lógica de interrupciones permite activar su línea INTRPT si suceden los siguientes eventos

- la llegada de un nuevo dato- el registro de transmisión se ha quedado vacío- se ha producido un error- cambio de estado en las líneas del modem, etc.

3.2 Transferencia serie síncrona

En este tipo de transferencia, además de los bits de datos se requiere el envío de la señal de reloj. Latécnica más fácil es la que implementan muchos microcontroladores en el denominado interfaz SPI(Serial peripheral interface).

En el interfaz SPI existen dos dispositivos: el AMO, que genera la señal de reloj para la comunicaciónserie síncrona y el ESCLAVO. Los registros de desplazamiento del amo y del esclavo se configuran amodo de registro circular, por lo que se puede realizar una transmisión full-duplex siempre que los dosdispositivos tengan información que enviar simultáneamente. La señal de reloj generada por el AMOsólo está activa el tiempo necesario para la transmisión de todos los bits del registro de desplazamiento.En el interfaz SPI el registro de desplazamiento no es accesible directamente por la CPU, sino que se

17

GENERADOR DE BAUDIOS

Tbit = 16* Tclk*[registro]Vbps= Fclk/(16*[registro])

Page 18: Tutorial sobre Puertos Paralelos y Puertos Series

accede a través de un registro de mantenimiento. Obsérvese que a diferencia de la UART, el mismoregistro de desplazamiento se utiliza tanto para transmisión como recepción. Lo mismo ocurre con elregistro de mantenimiento que es accedido por la CPU. Además de los registros anteriores, existenotros registros, dentro del interfaz, que permiten la programación del modo de funcionamiento delmismo.

- Registro de control SPI (SPICR): Dispone de un conjunto de bits que permitenenmascarar o habilitar las interrupciones, selección del orden de transmisión/recepciónde bits (primero el LSB o primero el MSB, después los demás), la frecuencia de reloj, lapolaridad del mismo, si el dispositivo actúa como amo o esclavo, etc.

- Registro de estado SPI(SPISR).Da información sobre el estado del interfaz, esto es, si elflag de petición de interrupción está activo o no, si se ha producido overrun, etc.

Existen otros dispositivos algo más complejos, que al estilo de la UART, disponen de dos canalesdiferentes para transmisión y recepción y en el que no existe un amo que cuenta los pulsos de relojnecesarios para transmitir todos los bits del dato. Para estos dispositivos se plantea el problema desaber cuándo empieza el primer bit de un carácter.

En general, la estructura de estos dispositivos es similar a las de la UART, e incorporan unmecanismo de identificación de un carácter de sincronismo SYN. Este carácter de sincronismo seenvía al principio de cada transmisión serie, antes de cualquier octeto de datos. El receptor estáescuchando la entrada en cada ciclo de reloj, y compara el contenido del registro de desplazamientocon el carácter de SYN. Cuando se detecte la recepción de un carácter SYN, el receptor sabe que elsiguiente bit que se reciba se corresponde con el primero del octeto de datos, por lo que ensambla de8 en 8 los bits que va recibiendo para formar el carácter que deposita en el registro buffer derecepción. Este proceso continua hasta que el procesador indique al dispositivo que ya ha terminadola recepción de caracteres o/y que el dispositivo debe estar atento para la detección de otro carácterde sincronismo.

Estos dispositivos tienen una estructura similar a las UART, de hecho existen integrados quemezclan tanto la función síncrona como la asíncrona (8251).

18

Page 19: Tutorial sobre Puertos Paralelos y Puertos Series

La parte emisora y la parte receptora tienen entradas de reloj diferentes (RxC y TxC) y disponen dedos registros de desplazamiento. Estos últimos, no son accesibles por la CPU directamente, sino através de los registros de mantenimiento THR,RHR.

Existe un registro de SYN que permite seleccionar el tipo de carácter que se emplea para lasincronización de las USRT. Cuando se habilita el transmisor síncrono, el carácter SYN se envía enprimer lugar, de forma automática, antes de que se envíe el primer dato. Cuando se habilita elreceptor de la USRT, este comienza automáticamente en la fase de detección del carácter SYN, trasel que se comienza el proceso de ensamblado del octeto entrante y transferencia hacia el RHR parasu posterior lectura de la CPU. En muchos sistemas se utiliza un segundo registro de SYN queasegura una mayor eficacia en la detección del inicio de la trama.

La configuración del modo de funcionamiento de la USRT se especifica en los registros de control ymodo. En ellos se puede configurar el número de bits de datos que contiene cada octeto (5,6,7,8) siestos tienen paridad ( y en caso afirmativo, el tipo de paridad), el número de caracteres desincronismo que se utilizan, la habilitación o inhabilitación del bloque de recepción o detransmisión, configuración del modo búsqueda, etc.

El registro de estado contiene información del estado interno del dispositivo, esto es, si es buffer detransmisión está vacío, si el buffer de recepción está lleno, error de overrun, de paridad, etc.

19

Registro de modo

SYN

Registro de control

RSR

TSR

RHR

THR

Registro de estado

BUS DE DATOS

RxCTxC

TxD

RxD

clk