TEMA 2: Entradas/Salidas Bibliografía€¦ · ORB para aquellos configurados como salidas. –...

34
TEMA 2: Entradas/Salidas Bibliografía SISTEMAS DIGITALES: Ingeniería de los microprocesadores 68000. Antonio García Guerra y Enrique Fenoll Comés Capítulos 7 y 8 LA FAMILIA DEL MC68000 Julio Septién et all Capítulos 7 y 8 DISEÑO Y PROGRAMACIÓN DEL μP 68000 Y PERIFÉRICOS Enrique Colomar Pous et all Capítulos 8 y 9 INFORMACIÓN ADICIONAL Transparencias, Documentanción Electrónica, Datasheet, Enlaces a tutoriales HTML en: http://www.dte.us.es/tec_inf/itig/microele/INDEX.HTM 22/11/04 1

Transcript of TEMA 2: Entradas/Salidas Bibliografía€¦ · ORB para aquellos configurados como salidas. –...

TEMA 2: Entradas/Salidas

Bibliografía

• SISTEMAS DIGITALES: Ingeniería de los microprocesadores 68000.Antonio García Guerra y Enrique Fenoll ComésCapítulos 7 y 8

• LA FAMILIA DEL MC68000Julio Septién et allCapítulos 7 y 8

• DISEÑO Y PROGRAMACIÓN DEL μP 68000 Y PERIFÉRICOS Enrique Colomar Pous et all Capítulos 8 y 9

• INFORMACIÓN ADICIONALTransparencias, Documentanción Electrónica, Datasheet, Enlaces atutoriales HTML en:

http://www.dte.us.es/tec_inf/itig/microele/INDEX.HTM

22/11/04 1

1. DECODIFICACIÓN DE ENTRADA/SALIDA

● El 68000 utiliza E/S mapeada en memoria

● Existen dos tipos de periféricos: asíncronos (específicos del 68000) y lossíncronos.

– Los periféricos asíncronos usan el bus asíncrono del MC68000.– Los periféricos síncronos usan el bus síncrono (E, \VMA, \VPA).

22/11/04 2

● Según el esquemático anterior:

a) Las direcciones que permiten activar la selección de via /SELVIA son

A23 A22 A21 A20 A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

X X X X X1 1 0

X X X X X X X X0 0 1

Selección delregistro interno.

X

Rango $060020-$06003F

b) Las direcciones que permiten activar la selección de DUART: /DUART

A23 A22 A21 A20 A19 A18 A17 A16 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0

X X X X X1 1 0

X X X X X X X X0 1 0

Selección delregistro interno.

X

Rango $060040-$06005F

● Los periféricos sólo son accedidos en las direcciones impares (por cómo se hanconectado al bus de datos). Por tanto, el microprocesador ve a los registros internosde los periféricos como posiciones de memoria sobre las que escribe o lee.

$060020 R0$060022 R1

- - - -$06003E R15

VIA

$060040 R0$060042 R1

$06005E R15

DUART

● A partir de la dirección BASE de un periférico, las direcciones de memoria queocupan los diversos registros internos, Nr, (o direcciones internas) vienendeterminadas por la relación:

Dirección = Dirección Base + 2*Nr + 1

22/11/04 3

2. GESTIÓN DE INTERRUPCIONES EXTERNAS

● Los periféricos activan las entradas \IPL2-0 y la interrupción se procesa si lamáscara de interrupción del SR es menor que el nivel solicitante.

● Se inicia un ciclo especial de lectura (FC2-FC0=111 y A3-1=nivel de interrupciónsolicitante) por el que se espera recibir el número de vector de interrupción.

● MC68000 puede obtener el vector de forma automática (autovectorización) o“manual”.

– El modo automático (activación de \VPA). Se escogen uno de los 7autovectores reservados de la tabla de vectores.

– En el modo no automático, el MC68000 recibe el número de vector que elperiférico ha situado en el bus.

22/11/04 4

3. DISPOSITIVOS DE ENTRADA/SALIDA

3.1VIA 6522

La VIA es un periférico de la familia de procesadores 65Cxx cuyas capacidades son:

22/11/04 5

– 2 puertos de Entrada / Salida (PortA, PortB) de 8 bits cada uno configurablespin a pin con posibilidad de generar interrupciones cuando cambien susentradas.

– 1 Registro de desplazamiento (SHR) para realizar conversiones paralelo / serieo viceversa.

– 2 temporizadores / contadores de 16 bits cada uno con distintos modos defuncionamiento.

– 1 registro de interrupciones capaz de activar la línea de petición de interrupcióndel chip.

Descripción Funcional

Nº Registro

Código pines RSx Nombre delRegistro

Descripción

RS3 RS2 RS1 RS0 Al Escribir Al Leer

0 0 0 0 0 ORB / IRB Registro de Salida del PORTB Registro de Entrada delPORTB

1 0 0 0 1 ORA / IRA Registro de Salida del PORTA Registro de Entrada delPORTA

2 0 0 1 0 DDRB Configuración de pines del PORTB como Entrada o Salida

3 0 0 1 1 DDRA Configuración de pines del PORTA como Entrada o Salida

4 0 1 0 0 T1C-L Byte bajo del Contador del T1 Byte bajo del Contador del T1

5 0 1 0 1 T1C-H Byte alto del Contador del T1

6 0 1 1 0 T1L-L Byte bajo del Latch del T1

7 0 1 1 1 T1L-H Byte bajo del Latch del T1

8 1 0 0 0 T2L-L /T2C-L

Byte bajo del Latch del T2 Byte bajo del Contador del T2

9 1 0 0 1 T2C-H Byte alto del Contador del T2

A 1 0 1 0 SR Registro de Desplazamiento

B 1 0 1 1 ACR Registro de Control Auxiliar

C 1 1 0 0 PCR Registro de Control de Periféricos (Configuración de Protocolos)

D 1 1 0 1 IFR Registro de Flags de Interrupción

E 1 1 1 0 IER Registro de Habilitación de Interrupciones

F 1 1 1 1 ORA / IRA Igual que el Registro 1 pero sin Handshake

22/11/04 6

Puertos de Datos (PORTA y PORTB)

PORTA

● Registro DDRA. Configura los pines de los puertos (PA[x]) como entradas o comosalidas. Un 0 en el bit i del registro DDRA, configura la línea i del registro PORTAcomo entrada, mientras que un 1 la fija como salida.

● Registro ORA. Controla los valores físicos de aquellos pines del PORTAconfigurados como salidas. El pin PA[i] = ORA[i] si DDRA[i] =1. Los bits de ORAasociados a pines configurados como entradas no tienen ningún efecto sobre lasmismas.

● IRA. Permite leer los valores lógicos de los pines del PUERTOA. Existen dosmodos de lectura: transparente o latch dependiendo del bit 0 del registro ACR(0=modo transparente; 1=modo latch).

– Modo transparente. La lectura del IRA refleja el valor de todos los pines del PORTA enel momento de la lectura.

– Modo Latch. La activación de la línea CA1, provoca el almacenaje ocaptura de los valores lógicos de los pines PA[i] en el registro IRA. Unalectura del IRA no muestra el valor actual de las entradas, sino el delmomento de la activación de las líneas CA1.

22/11/04 7

Configuración de lospines

Operación deESCRITURA en el registro

ORA

Operación deLECTURA del

registro IRADDRA = 1 (Salida)Modo Transparente

MPU escribe el nivel lógicocorrespondiente al nivelfísico deseado para la salidaen ORA

MPU lee el valorlógico correspondienteal nivel físico deentrada del pin delpuerto en ese momento

DDRA = 1 (Salida)Modo Latch

MPU lee el valor delbit que corresponde alvalor físico de laentrada en el momentode captura (la últimavez que se activo lalínea CA1)

DDRA = 0 (Entrada)Modo Transparente

MPU escribe en el registropero las líneas físicas nocambian (hasta que semodifique el DDRA)

MPU lee el valorlógico correspondienteal nivel físico deentrada del pin delpuerto en ese momento

DDRA = 0 (Entrada)Modo Latch

MPU lee el valor delbit que corresponde alvalor físico de laentrada en el momentode captura (la últimavez que se activo lalínea CA1)

22/11/04 8

PORTB

● Registro DDRB. Configura los pines de los puertos (PB[x]) como entradas o comosalidas. Un 0 en el bit i del registro DDRB, configura la línea i del registro PORTBcomo entrada, mientras que un 1 la fija como salida.

● Registro ORB. Controla los valores físicos de aquellos pines del PORTBconfigurados como salidas. El pin PB[i] = ORB[i] si DDRB[i] =1. Los bits de ORBasociados a pines configurados como entradas no tienen ningún efecto sobre lasmismas.

● IRB. Permite leer los valores lógicos de los pines del PUERTOB. Existen dosmodos de lectura: transparente o latch dependiendo del bit 1 del registro ACR(0=modo transparente; 1=modo latch).

– Modo transparente. La lectura del IRB refleja el valor de todos los pines del PORTBconfigurados como entradas en el momento de la lectura y los bits deORB para aquellos configurados como salidas.

– Modo Latch. La activación de la línea CB1, provoca el almacenaje ocaptura de los valores lógicos de los pines PB[i] en el registro IRB. Unalectura del IRB no muestra el valor actual de las entradas, sino el delmomento de la activación de las líneas CB1.

22/11/04 9

Configuración de lospines

Operación deESCRITURA en el

registro ORB

Operación deLECTURA del registro

IRBDDRB = 1 (Salida) MPU escribe el nivel

lógico correspondiente alnivel físico deseado para lasalida

MPU lee el bit del registroORB. El valor físico realde la línea no afecta.

DDRB = 0 (Entrada)Modo Transparente

MPU escribe en el registropero las líneas físicas nocambian (hasta que semodifique el DDRB)

MPU lee el nivel deentrada del pin del puertoen ese momento

DDRB = 0 (Entrada)Modo Latch

MPU lee el valor del bitque corresponde al valorfísico de la entrada en elmomento de captura (laúltima vez que se activo lalínea CB1)

Temporizadores/Contadores

● La VIA dispone de dos dispositivos T1 y T2 que pueden funcionar comotemporizadores o contadores de 16 bits.

● Ambos temporizadores tienen modos de funcionamiento diferentes pudiendoutilizarse para:

– Generar un único intervalo de tiempo (T1 y T2).

– Contar impulsos en el Pin 6 del PORTB (sólo T2).

– Generar un intervalo de tiempo de forma continua (sólo T1).

– Producir un único o una serie continua de pulsos en el pin 7 del PORTB(sólo T1).

22/11/04 10

Temporizador T1

● Dispone de 2 latches de 8 bits (T1L-L y T1L-H) y un contador de 16 bits (T1C-Ly T1C-H).

● Los latches almacenan el dato que se cargará en el contador.

● El contador decrementa su contenido en cada ciclo de reloj. Cuando llega a cero,se activa el bit 6 del registro IFR (Interrupt Flag Register) y si el bit 6 de IER está a1, entonces se activa IRQB#.

● El temporizador puede generar pulsos por la salida PB7 pero, para ello, este pindebe estar debidamente configurado como salida en el registro DDRB.

22/11/04 11

● Operaciones de lectura/escritura sobre los registros T1C-L(H):

– Escritura en T1C-L provoca la carga de los 8 bits en el Latch del Byte bajo T1L-L.– Lectura en T1C-L: Se transfiere el T1C-L y se borra el bit 6 del IFR.

– Escritura en TIC-H: Se cargan los 8 bits en el Latch del Byte alto T1L-H. Ademásprovoca que el contenido de ambos latches sea transferido al contador (a T1C-H yT1C-L) y se inicia la cuenta atrás. El flag 6 del registro IFR se pone a 0.

– Lectura en T1C-H: Se transfiere el T1C-L.

22/11/04 12

● Operaciones de lectura/escritura sobre los registros T1L-L(H):

– No tienen ningún efecto sobre el flag 6 del IFR.– Permiten leer y modificar el contenido de los registros del latch.

Resumen de operaciones de R/W con los registros de latch y contador

Registro Operación de Lectura Operación de EscrituraRegistro T1C-L (Byte bajo delContador T1) Dirección $04

Se transfiere el Byte bajo delcontador T1C-L al MPU y seborra el bit 6 del registro IFR.

Se cargan los 8 bits en el Latchdel Byte bajo T1L-L. ELcontenido de T1L-L setransfiere al T1C-L cuando elByte alto del contador seescribe en T1C-H.

Registro T1C-H (Byte alto delContador T1) Dirección $05

Se transfiere el Byte alto delcontador T1C-L al MPU.

Se cargan los 8 bits en el Latchdel Byte alto T1L-H. Ademásprovoca que el contenido deambos latches sea transferido alcontador (a T1C-H y T1C-L) yse inicia la cuenta atrás. El flag6 del registro IFR se pone a 0.

Registro T1L-L (Byte bajo delLatch T1) Dirección $06

Se transfiere el Byte bajo dellatch ,T1L-L, al MPU. No seresetea el bit 6 del registro IFR.

Se cargan los 8 bits en el Latchdel Byte bajo T1L-L. Estaoperación no se diferencia deescribir en T1C-L

Registro T1L-H (Byte alto delLatch de T1) Dirección $07

Se transfiere el Byte alto dellatch(T1C-H), a la MPU.

Se cargan los 8 bits en el Latchdel Byte alto T1L-H. Sediferencia de escribir en T1C-Hen que no provoca que elcontenido de ambos latches seatransferido al contador (a T1C-H y T1C-L).

22/11/04 13

● Modos de funcionamiento del temporizador T1

- Modo monoestable. (ACR[6]=0). Si además ACR[7]=1 entonces el bit 7 delPORTB genera un impulso cuando el contador llega a 0.

22/11/04 14

- Modo astable. (ACR[6]=1). Si además ACR[7]=1 se genera una onda cuadrada porla salida 7 del PORTB. (Nota: para borrar el flag es necesario leer el registro T1C-Lo escribir un nuevo TIC-H si se desea cambiar la frecuencia de generación deinterrupciones o de la onda PB7).

22/11/04 15

Temporizador/Contador T2

● Como temporizador sólo opera en modo monoestable.

● Como contador cuenta los pulsos negativos que se producen en el pin 6 delPORTB.

● Dispone de un registro T2L-L (sólo escritura), T2C-L (sólo lectura) y T2C-H(lectura/escritura).

● Cuando el contador llega a cero, se activa el bit IFR[5] y, si el bit IER[5]=1,entonces, se activará la salida IRQB de la VIA (petición de interrupción).

22/11/04 16

● Operaciones de lectura / escritura sobre los registros contador y latch

22/11/04 17

Resumen de operaciones de R/W con los registros de latch y contador

Registro Operación de Lectura Operación de EscrituraRegistro T2L (Byte bajo delLatch de T2 si escritura y delContador T2 si lectura)Dirección $08

Se transfiere el Byte bajo delcontador al MPU y se resetea elbit 5 del registro IFR.

Se cargan los 8 bits en el Latchdel Byte bajo de T2.

Registro T2H (Byte alto delContador T2) Dirección $09

Se transfiere el Byte alto delcontador al MPU.

Se cargan los 8 bits en el Bytealto de T2. Además provocaque el contenido del Latch delByte bajo pase al Byte bajo delcontador y el bit 5 del IFR seresetea.

● El T2 se configura con el bit 5 del registro ACR

- Modo monoestable:

– Se comporta de forma similar al T1.– Para que el valor lógico del flag tenga sentido, el microprocesador debe

volver a cargar el Byte alto del contador para borrar el flag de interrupción.

- Modo contador:

– El T2 cuenta un número predeterminado de pulsos negativos (flancos debajada) en el pin 6 del PORTB6.

– El valor de cuenta debe ser cargada en el Byte alto del contador (T2H) elcuál pone a 0 IRF5 y dispara la cuenta atrás del T2.

– Cuando T2 alcanza el 0, IFR5 se activa (se pone a 1) y el contador siguedecrementando con cada pulso en PB6.

22/11/04 18

– Para rehabilitar el flag IFR5 para las siguientes cuentas es necesariorecargar el T2H del contador.

22/11/04 19

Interrupciones en la VIA

● La activación de la línea #IRQB requiere que el algún bit del registro IFR(señalizador) se active (1 lógico) y que el correspondiente bit del registro IER(habilitación) esté a 1.

● Un flag de interrupción puede ser activado por condiciones internas del chip o porentradas de fuentes externas. Normalmente el flag permanecerá activado hasta que seatienda la interrupción.

● Todos los flags de interrupción están contenidos en el registro IFR. El bit 7 de esteregistro estará a 1 en el caso de que algún flag de interrupción se haya activadopermitiendo de este modo realizar cómodamente un polling a los diversos periféricosdel sistema para determinar la fuente de la petición de interrupción.

● El registro IFR puede ser leído directamente por el microprocesador y cada flagpuede ser puesto a 0 de forma individual escribiendo directamente un 1 sobre él osegún se especifica más adelante.

● El bit 7 del IFR indica el estado que la salida IRQB#, y toma el valor de lasiguiente función lógica:

22/11/04 20

Puede ser limpiado borrando todos los flags del registro IFR o inhabilitando todas lasinterrupciones activas.

● Registro IFR (Interrupt Flag Register) Dirección $0D

Activado por: Limpiado por:Flanco activo en CA2 Leer o Escribir en ORA*

Flanco activo en CA1 Leer o Escribir en ORA*

8 bits desplazados en el SR Leer o Escribir en SR

Flanco activo en CB2 Leer o Escribir en ORB*

Flanco activo en CB1 Leer o Escribir en ORB*

Final de cuenta de T2 Leer T2C-L o Escribir T2C-H

Final de cuenta de T1 Leer T1C-L o Escribir T1C-H

Cualquier interrupción habilitada Limpiar todas las interrupciones

* Si el control de CA2/CB2 en el PCR está configurado como independiente de la entrada deinterrupción, entonces, leer o escribir el registro de salida ORA/ORB, no limpiará el flag. En estecaso, el bit debe ser limpiado escribiendo, directamente, en el IFR.

● Registro IER (Interrupt Enable Register) Dirección $0E

Bit = 0 significa que la interrupción está inhabilitada.Bit = 1 significa que la interrupción está habilitada.

Nota:Si bit 7 =0, escribir un 1 en los bits 0 a 6 inhabilitará la correspondiente interrupción.Si bit 7 =1, escribir un 1 en los bits 0 a 6 habilitará la correspondiente interrupción.

Si se lee este registro, el bit 7 se pondrá a 1 y los otros bits reflejarán su estadocorrespondiente.

22/11/04 21

3.2 DUART

3.2.1 Descripción general

● La DUART 68681 está organizada en 8 secciones: buffer del bus de datos, controlde operación, control de interrupciones, temporización, canales de comunicación A yB, puerto de entrada y puerto de salida.

22/11/04 22

Control de operación

• Recibe señales de la CPU (R/WN, CSN, A1-A4, RESETN) y genera lasoperaciones internas que controlan el funcionamiento del dispositivo:

• RESETN, borra registros internos (SRA, SRB, IMR, ISR, OPR,OPCR),inicializa el registro IVR a $0F, pone los canales de comunicación A y Binactivos y al puntero MR dirigido hacia el registro MR1.

• A1-A4, selecciona un registro interno.• CSN, habilitación de chip.• R/WN, Lectura/Escritura.• Genera DTACKN (Periférico asíncrono)

Control de interrupciones

• La DUART activa la señal INTRN cuando ocurre alguno de los ocho eventosinternos que pueden generar interrupciones.

• Señal IACKN. Su activación provoca el volcado del contenido del IVR en el busde datos (ciclo de reconocimiento de interrupciones).

• Registro IMR (máscara de interrupción).

• Registro ISR (registro de flags)

• Registro IVR (almacena el vector de interrupción DUART )

22/11/04 23

Temporización

• Consiste en un oscilador de cristal, un generador de baudios, uncontador/temporizador programable de 16 bits, cuatro selectores de reloj y unconjunto de registros que permiten establecer los parámetros de configuración.

• El oscilador de cristal opera directamente con un cristal situado entre los pinesX1/CLK y X1 y genera la señal de reloj base.

• El BRG (generador de baudios) opera, normalmente, desde el oscilador. Su salidaes una señal de reloj que tiene una frecuencia 16 veces mayor que la velocidad enbaudios elegida. Permite generar velocidades de comunicación serie estándares.

• Registros CSRx (x=A/B). Permiten configurar las velocidades de transmisión yreceptor para el canal x de la DUART.

• Registro ACR. Selecciona entre dos tablas de velocidades.

22/11/04 24

Canales de comunicación A y B

• Cada canal de comunicación contiene un receptor y un transmisor asíncrono (full-dúplex).

• El transmisor acepta datos en paralelo de la CPU, forma la SDU, y la envía por elpin TxD.

• El receptor acepta los datos serie de la SDU que llegan por el pin RxD, chequea elbit de start, el bit de stop, el bit de paridad, posibles errores, la condición de breaky envía el carácter ensamblado a la CPU.

• Registros MR1(2)x (x=A/B). Fundamentalmente configuran los parámetros de laSDU.

• Registro CRx (x=A/B). Habilita o inhabilita el transmisor y/o el receptor ademásde aceptar comandos de operación.

• Registro SR. Almacena información de estado necesaria para el control de lacomunicación.

22/11/04 25

3.2.2Descripción funcional.

3.2.2.1.Mapa de registros

Dirección interna ($) A4 A3 A2 A1 Lectura (RW&N=1) Escritura (R/WN=0)

0 0 0 0 0 Registros de Modo( MR1A,MR2A) Registros de modo (MR1A,MR2A)

1 0 0 0 1 Registro de Estado (SRA) Registro selector de reloj (CSRA)

2 0 0 1 0 BRG Test Registro de comando (CRA)

3 0 0 1 1 RHRA THRA

4 0 1 0 0 IPCR Registro de control auxiliar (ACR)

5 0 1 0 1 Registro de estado de interrupción (ISR) Registro de máscara de interrupción (IMR)

6 0 1 1 0 CTU CRUR

7 0 1 1 1 CTL CTLR

8 1 0 0 0 Registros de Modo( MR1B,MR2B) Registros de modo (MR1B,MR2B)

9 1 0 0 1 Registro de Estado (SRB) Registro selector de reloj (CSRB)

A 1 0 1 0 1X/16X Test Registro de comando (CRB)

B 1 0 1 1 RHRB THRB

C 1 1 0 0 IVR IVR

D 1 1 0 1 IP0-IP6 OPCR

E 1 1 1 0 Comando de comienzo de contador Set output port bits command

F 1 1 1 1 Comando de parada de contador Reset output port bits command

• Se recomienda modificar el contenido del MR1,2x y el CSRx, sólo cuando losreceptores o transmisores están inhabilitados.

• Los registros de modo MR1 y MR2 comparten las mismas direcciones internas yse acceden gracias a un puntero auxiliar. El puntero está apuntando a MR1después de un RESET o después de enviar un comando de 'Reset pointer' alregistro CR. Tras leer o escribir en MR1x, el puntero apunta a MR2x.

22/11/04 26

3.2.2.2 Configuración de la SDU (canal A)

• Registro MR1A- MR1A[1:0]: Número de bits de datos (5,6,7 u 8)- MR1A[4:3]: Configuración de paridad (Sin paridad, con paridad y paridadfija)- MR1A[2]: Tipo de paridad (Si MR1A[4:3]=00, entonces, par o impar, siMR1A[4:3]=01, entonces el bit de paridad es igual al valor de MR1A[2]).

• Registro MR2A– MR2A[3:0]: Número de bits de stop.– MR2A[7:6]: Modo de canal. Deben estar a 00 en funcionamiento normal.

NOTA: Los bits MR1A[7] y MR2A[5:4] se deberán poner a 0.

22/11/04 27

3.2.2.3 Configuración de la velocidad de transmisión y recepción (canal A)

• Registro ACR– ACR[7]: Permite seleccionar entre dos tablas de velocidades.– ACR[6:0]: No intervienen en la configuración de velocidad.

• Registro CSRA– CSRA[3:0]: Selecciona la velocidad del transmisor del canal A(ver tabla).– CSRA[7:4]: Selecciona la velocidad del receptor del canal A(ver tabla).

22/11/04 28

3.2.2.4 Transmisor (canal A)

• Registro THRAUna escritura en este registro provocará la transmisión del byte escrito segúnlos parámetros de la SDU configurados. No se puede leer.

• Registro SRA (sólo lectura)– SRA[2]: TxRDY. Se pone a 1 automáticamente cuando el contenido del

registro THR se transfiere al registro de desplazamiento (TxSHR) y, a 0,también de forma automática, cuando el procesador escribe un dato nuevoen el THR.

– SRA[1]: TxEMPTY: Se pone a 1, automáticamente, cuando el TxSHR estávacío y a 1 cuando recibe un dato desde el THR.

• Descripción funcional.

0. Estado inicial: THR,TxSHR vacíos y, por consiguiente, SRA[3:2]=11.1. Escritura de un byte en THRA.2. La escritura en THRA pone a cero el bit TxRDY.3. Se construye la SDU con el byte y se transfiere todo al TxSHR (se pone a 1

el bit TxRDY y, a 0, el bit TxEMPTY del registro SRA) .4. La SDU se transfiere por la línea TxD. Cuando finaliza, se pone a 1 el bit

TxEMPTY.

22/11/04 29

3.2.2.5 Receptor (canal A)

• Registro RHRA– Es una FIFO de 3 niveles.– No se puede escribir.– Una lectura en RHRA devuelve el dato almacenado en la cima de la FIFO,

empujando los restantes datos hacia arriba.– Almacena sólo los bits del datos de la SDU recibida, a través del pin RxD,

en el registro RxSHR.

• Registro SRA (sólo lectura)– SRA[0]: RxRDY. Se pone automáticamente a 1 cuando en la FIFO existe,

al menos, un dato disponible. De igual forma, se pone a 0 cuando la FIFOestá completamente vacía.

– SRA[1]: FFULL. Se pone automáticamente a 1 cuando la FIFO está llena (3datos) y a 0 en caso contrario.

– SRA[4]: Overrun. Se pone a 1 automáticamente cuando un dato que estabaen el RxSHR esperando a ser traspasado a la FIFO se sobreescribe con otrodato entrante. Este bit se pone a 0 mediante el comando RESET ERRORque se suministra en el registro CRA.

– SRA[5]: Error de paridad. Se pone a 1 cuando existe error de paridad y a 0mediante el comando RESET ERROR.

– SRA[6]: Error de trama. Se pone a 1 cuando existe un error de trama y a 0mediante el comando RESET ERROR.

– SRA[7]: Detección de Break. Se pone a 1 cuando se detecta una condiciónde ruptura. Se pone a 0 mediante el comando de RESET ERROR.

22/11/04 30

• Descripción funcional (recepción de un dato).

1. Estado inicial: FIFO y registro RxSHR vacíos, por tanto SRA[1]= RxRDY =0.2. Por el pin RxD se recibe una SDU que se almacena en RxSHR.3. Los bits de datos de la SDU se transfieren a la posición libre más alta de la FIFO.4. Se pone a 1 el bit RxRDY.5. La lectura del registro RHR provoca que se transfiera el dato al bus del

microprocesador y que la FIFO se quede vacía.6. Automáticamente se pone a 0 el bit RxRDY.

• Descripción funcional (recepción de secuencias de datos).

NOTA: Se procederá a describir lo que ocurriría si el microprocesador no accede aleer el registro RHRA en una secuencia de datos recibidos.

22/11/04 31

0. Estado inicial: SRA[4]=0 y SRA[1:0]=00. FIFO y RxSHR limpios.1. El primer dato recibido (DATO 1) se sitúa en la cima de la FIFO. Se activa el bit

RxRDY.2. El segundo dato recibido (DATO 2) se sitúa en la FIFO tras el anterior. El bit

RxRDY sigue activo.3. El tercer dato que se recibe (DATO 3) se sitúa en la última posición de la FIFO. El

bit RxRDY sigue activo y, además, se pone a 1 el bit FFULL (SRA[1]).4. Se recibe el cuarto dato (DATO 4). Como la FIFO está llena, éste se mantiene en

RxSHR a la espera de un hueco en la FIFO. 5. Se procede a recibir un quinto dato (DATO 5). Este sobreescribe al almacenado en

el registro de desplazamiento (DATO 4 se pierde)6. Se activa el bit de SRA[4] (Overrun).

• Descripción funcional (detección de errores)

– El registro SRA almacena cierta información asociada a los caracteresrecibidos: PARIDAD, TRAMA, BREAK.

– Existe una cola de tres niveles que registran los tres bits de error asociadosa cada uno de los datos almacenados en la FIFO.

22/11/04 32

– Una lectura de RHR, empuja los datos de la FIFO hacia arriba, junto con losbits de error.

– Existen dos modos (carácter y bloque) que se seleccionan en MR1A[5]. – En modo carácter, los bits SRA[7:5] reflejan los errores asociados al

carácter que se sitúa en la cima de la FIFO.– Para leer los datos de error asociados a un carácter, primero se debe leer el

registro SRA y, después, el RHRA. – En modo bloque, los bits SRA[7:5] son el resultado de la operación OR de

los tres bits de estado que estuvieron en la cima de la FIFO desde la últimavez que se mandó un comando de RESET ERROR al registro CRA.

3.2.2.6 Registro de Comando (canal A)

• Acepta múltiples comandos en una misma escritura siempre que ellos no seanexcluyentes entre sí.

– CRA[6:4] Comandos misceláneos (ver tabla superior).– CRA[3] – Inhabilitación del transmisor del canal A. Se transmite la última

SDU y se deja de aceptar nuevos datos en el registro THR.– CRA[2] - Habilitación del transmisor del canal A– CRA[1] – Inhabilitación del receptor del canal A. Para el ensamblado

inmediato de los caracteres que se reciben. Los datos den la FIFO y el SR semantienen y pueden leerse.

– CRA[0] – Habilitación del receptor del canal A

22/11/04 33

3.2.2.7Interrupciones (canal A)

• Registro IVRAlmacena el vector de interrupción que se vuelca en el bus de datos en unciclo de reconocimiento de interrupciones (activación de IACKN)

• Registro MR1A– MR1A[6]: RxINT SELECT. Permite seleccionar entre FIFO llena y registro

de recepción ocupado, como causas que provocan la activación de unainterrupción.

• Registro IMRHabilita o inhabilita la activación de la línea de INTRN dependiendo deeventos en el transmisor o el receptor. Un bit a 1 habilita y un 0 inhabilita.

• Registro ISRAlmacena el estado de todas las fuentes potenciales de interrupción. Sucontenido se enmascara por el registro IMR y se inicializa a cero en unRESET.– IMR[0]. TxRDYA. Este bit es un duplicado del bit TxRDY del SRA.– IMR[1]. Dependiendo del bit MR1A[6], este bit es un duplicado del bit

SRA[0], RxRDY, o SRA[1], FFIFO.

22/11/04 34