Grupo de Tecnología Electrónica

Complementos de sistemas electrónicos digitales
TEMA 2

 

3.1          Registros Internos de la CPU

Veamos las funciones de los distintos registros internos de la CPU.

 

1.     Registros de precisión extendida (R0-R7). Son registros de propósito general, empleados por el multiplicador y la ALU de la CPU. El tamaño de ellos es de 40 bits (obsérvese que el bus de datos del sistema es de 32 bits, de ahí el nombre de registro de precisión extendida, con 40 bits se obtiene mayor precisión que con 32 bits). Estos registros son los únicos, dentro de la CPU, que pueden ser empleados como operandos flotantes (si un usuario desea trabajar con números flotantes debe almacenar dichos números en estos registros antes de operar con ellos). Si se operase con alguno de estos registros en modo flotante se usarían los 40 bits del mismo. Si las operaciones a realizar son de enteros se usan los bits menos significativos (del 0 al 31), el resto (bits 32 al 39) permanecen inalterados (no se utilizan al operar con enteros), figura 2.8.

Figura 2.8. Formato en punto flotante y entero (con o sin signo), de los registros de precisión extendida (R0-R7).

 

2.      Registros auxiliares (AR0-AR7). Pueden ser modificados por las ARAUs, la ALU y el multiplicador. Son registros de propósito general y 32 bits que pueden emplearse como operandos de tipo entero en operaciones aritméticas o como generadores de direcciones de 24 bits.

 

3.      Puntero a la página de datos (DP). Es un registro de 32 bits de los cuales sólo los 8 bits menos significativos son utilizados. El registro se usa, para acceder a operandos utilizando el modo de direccionamiento directo, como selector o puntero selector a una página de datos (definida con los 8 LSBs del registro) a la que se está accediendo en un instante dado. Cada página ocupa 64 Kwords de 32 bits de memoria existiendo un total de 256 páginas (la memoria tiene una capacidad de direccionamiento total de 16 Mwords).

 

4.      Registros de índice (IR0 e IR1). Son registros de 32 bits empleados por las ARAUs para calcular las direcciones de los datos en modo de direccionamiento indexado.

 

5.      Registro de dimensión de bloque (BK). Es un registro de 32 bits utilizado por las ARAUs para fijar la dimensión del bloque de datos en el modo de direccionamiento denominado circular (se verá en el tema siguiente). Está especialmente diseñado para implementar colas mediante la técnica de matriz circular, donde determina el tamaño de la matriz. La implementación de colas circulares gestionadas automáticamente por hardware (de forma casi transparente al usuario) por el DSP es una de las características que ofrecen este tipo de microprocesadores, pensados para realizar, en tiempo real, algoritmos de tipo repetitivos (FFTs, filtros digitales...).

 

6.      Puntero a la pila (SP). Como en cualquier microprocesador, este DSP dispone de una pila. El registro SP es un registro de 32 bits que contiene la dirección de la cima de la pila (apunta al último elemento introducido en la pila). Este registro es alterado por interrupciones, excepciones de tipo software, llamadas y retornos de subrutinas e instrucciones de tipo PUSH y POP (almacena datos en la pila o recoge datos de la pila).

 

7.      Registro de estado (ST). Contiene información global sobre el estado de la CPU en cada instante. Su estructura se muestra en la figura 2.9. En la tabla 2-2 se definen cada uno de los bits de este registro. En este registro aparecen 8 bits (del bit 0 o LSB al bit 7) activados por hardware por la parte de manejo de datos de la CPU. Cada vez que se realiza alguna operación aritmético-lógica, en la que intervengan la ALU o el multiplicador, se activa o no alguno de estos bits. El resto son bits de control del periférico caché (bits CF, CE y CC), del modo de repetición de instrucciones (bit RM) y para la habilitación global de las interrupciones (bit GIE).

 

Figura 2.9. Registro de Estado (ST).

 

Bit

Nombre

1.       Valor de Reset

Función que realiza

0

C

0

Bandera de acarreo (Carry flag).

a)       Cuando se realiza una operación aritmética de suma con manejo de enteros, C=1 si se produce acarreo en el MSB del resultado. Si se trata de una resta, C=1 si es necesario introducir un bit en el MSB del resultado.

b)       Cuando se realiza una operación con flotantes, el acarreo no se ve afectado.

c)       Cuando se realizan operaciones de desplazamiento sobre un registro, el bit de carry se actualiza con el valor desplazado fuera del registro.

1

V

0

Bandera de desbordamiento (Overflow flag). Si se produce desbordamiento, V=1. El desbordamiento de entero implica que el resultado de la operación de enteros es menor que  o mayor de . En el caso de flotante, se produce desbordamiento cuando el resultado de una operación de flotantes tiene un exponente mayor de 127.

2

Z

0

Bandera  de cero (Zero flag). Si el resultado de una operación es cero, Z=1.

3

N

0

Bandera de negativo (Negative flag). Si el resultado de una operación es negativo, N=1.

4

UF

0

Desbordamiento flotante por debajo (Underflow flag). Sólo para operaciones con flotantes. Se produce desbordamiento por debajo cuando el resultado de una operación de flotantes tiene un exponente menor o igual de –128 y en ese caso, UF=1.


 

5

LV

0

Bandera de desbordamiento latcheado (Latched overflow flag). Si se ha producido alguna vez un desbordamiento de tipo V, LV=1. Sólo puede borrarlo el usuario escribiendo un 0.

6

LUF

0

Latched floting-point underflow flag. Si se ha producido alguna vez un desbordamiento de tipo UF, LUF=1. Sólo puede borrarlo el usuario escribiendo un 0.

7

OVM

0

Bandera de modo de desbordamiento (Overflow Mode flag). Esta bandera afecta exclusivamente a las operaciones enteras. Si OVM=0, el entero que resulte del desbordamiento no es tratado de manera especial. Si es OVM=1:

a)    Los enteros que desborden en dirección positiva se saturan al mayor número positivo en complemento a dos (7FFFFFFFh).

b)    Los enteros que desborden en dirección negativa se saturan al número más negativo en complemento a dos (80000000h).

Nota: las funciones V y LV son independientes del valor de OVM.

8

RM

0

Bandera de modo de repetición. Si RM=1, el contador de programa se está modificando en los modos de repetición, tanto de bloque como simple.

9

Reservado

0

Se lee siempre un cero.

10

CF

0

Fija la Caché. Cuando CF=1, se impide su modificación, esté (se permite el acceso a recoger instrucciones pero no se permite que se actualice) o no habilitada. Se puede realizar un Caché Clear si CF=1.

11

CE

0

Habilita la Caché cuando CE=1. Se puede realizar un Caché Clear si CE=0.

12

CC

0

Caché Clear. Limpia la Caché. Si CC=1, se reinicializa la Caché, aunque ésta se encuentre congelada (CF=1).

13

GIE

0

Habilitación global de interrupciones (Global Interrupt Enable).

15-14

Reservado

0

Se leen siempre ceros.

31-16

Reservado

0-0

Valores Indefinidos.

Tabla 2-2. Funciones de los bits del registro de estado.

8.      Registro de habilitación de interrupciones de CPU y de programación del sincronismo de la DMA (IE). Cuando un bit del registro se pone a cero, se inhabilita la interrupción de CPU asociada a él o se impide la sincronización con dicha interrupción de los eventos (escritura y/o lectura) del periférico interno DMA[1]. Obsérvese que todas las interrupciones de tipo hardware que tiene disponibles el usuario en este microprocesador son enmascarables.

 

Figura 2.10. Registro de habilitación de interrupciones (IE).

 

Bit

Nombre

Valor de Reset

Función que realiza

0

EINT0

0

Habilita la interrupción externa 0 (CPU) si vale 1.

1

EINT1

0

Habilita la interrupción externa 1 (CPU) si vale 1.

2

EINT2

0

Habilita la interrupción externa 2 (CPU) si vale 1.

3

EINT3

0

Habilita la interrupción externa 3 (CPU) si vale 1.

4

EXINT0

0

Habilita la interrupción de transmisión por el puerto serie 0 (CPU) si vale 1.

5

ERINT0

0

Habilita la interrupción de recepción por el puerto serie 0 (CPU) si vale 1.

6

EXINT1 (*)

0

Habilita la interrupción de transmisión por el puerto serie 1 (CPU) si vale 1.

7

ERINT1 (*)

0

Habilita la interrupción de recepción por el puerto serie 1 (CPU) si vale 1.

8

ETINT0

0

Habilita la interrupción del Timer 0 (CPU) si vale 1.

9

ETINT1

0

Habilita la interrupción del Timer 1 (CPU) si vale 1.

10

EDINT

0

Habilita la interrupción del controlador de DMA (CPU) si vale 1.

15-11

Reservados

0-0

Valores indefinidos.

16

EINT0

0

Habilita la sincronización del evento DMA con la interrupción externa 0 si vale 1.

17

EINT1

0

Habilita la sincronización del evento DMA con la interrupción externa 1 si vale 1.


 

18

EINT2

0

Habilita la sincronización del evento DMA con la interrupción externa 2 si vale 1.

19

EINT3

0

Habilita la sincronización del evento DMA con la interrupción externa 3 si vale 1.

20

EXINT0

0

Habilita la sincronización del evento DMA con la interrupción de transmisión del puerto serie 0 si vale 1.

21

ERINT0

0

Habilita la sincronización del evento DMA con la interrupción de recepción del puerto serie 0 si vale 1 si vale 1.

22

EXINT1 (*)

0

Habilita la sincronización del evento DMA con la interrupción de transmisión del puerto serie 1 si vale 1.

23

ERINT1 (*)

0

Habilita la sincronización del evento DMA con la interrupción de recepción del puerto serie 1 si vale 1.

24

ETINT0

0

Habilita la sincronización del evento DMA con la interrupción del Timer0 si vale 1.

25

ETINT1

0

Habilita la sincronización del evento DMA con la interrupción del Timer1 si vale 1.

26

EDINT

0

Habilita la sincronización del evento DMA con la interrupción del propio controlador de DMA si vale 1.

31-27

Reservados

0-0

Valores indefinidos.

Tabla 2-3. Funciones de los bits del registro de habilitación de interrupciones. (*) No disponibles en el TMS320C31.

 

9.      Registro de las banderas de petición de las interrupciones (IF). Cuando alguno de sus bits se pone a uno, es porque se ha producido la interrupción correspondiente. Mientras la CPU no atienda la rutina de servicio de dicha interrupción, la bandera asociada a la misma en el registro IF permanece activa. En cuanto se acceda a la rutina de servicio, la bandera correspondiente se pone a cero, indicando que no se encuentra pendiente la ejecución de la rutina de servicio de la interrupción.

 

Figura 2.11. Registro de petición de servicio de rutinas de interrupción (IF).

 

Bit

Nombre

Valor de Reset

Función que realiza

0

INT0

0

Bandera de interrupción externa 0.

1

INT1

0

Bandera de interrupción externa 1.

2

INT2

0

Bandera de interrupción externa 2.

3

INT3

0

Bandera de interrupción externa 3.

4

XINT0

0

Bandera de interrupción de transmisión por el puerto serie 0.

5

RINT0

0

Bandera de interrupción de recepción por el puerto serie 0.

6

XINT1(*)

0

Bandera de interrupción de transmisión por el puerto serie 1.

7

RINT1(*)

0

Bandera de interrupción de recepción por el puerto serie 1.

8

TINT0

0

Bandera de interrupción del Timer0.

9

TINT1

0

Bandera de interrupción del Timer1.

10

DINT

0

Bandera de interrupción del controlador de DMA.

31-11

Reservados

0-0

Valores indefinidos.

Tabla 2-4. Funciones de los bits del registro de banderas de interrupciones activas. (*) No disponibles en el TMS320C31.

 

10.  Registro de control de las entradas y salidas de propósito general (IOF). Controla los pines XF0 y XF1 del DSP (obsérvese que el TMS320C30, en principio, tan sólo dispone de dos líneas digitales de entrada y/o salida de propósito general). El usuario utiliza este registro para indicar la función de los pines XF0 y XF1 (si son líneas de entrada o salida al ASIC) y para leer el valor digital asociado a las dos líneas o escribir en ellas.

 

Figura 2.12. Registro de control de los pines XF0 y XF1 (IOF).

 

Bit

Nombre

Valor de Reset

Función que realiza

0

Reservado

0

Se lee siempre un cero.

1

I/OXF0

0

Si I/OXF0=0, XF0 se configura como pin de entrada de propósito general.

Si I/OXF0=1, XF0 se configura como pin de salida de propósito general.

2

OUTXF0

0

Dato que sale por XF0 (Cuando I/OXF0=1).

3

INXF0

0

Dato que se lee de XF0 (Cuando I/OXF0=0).

4

Reservado

0

Se lee siempre un cero.

5

I/OXF1

0

Si I/OXF1=0, XF1 se configura como pin de entrada de propósito general.

Si I/OXF1=1, XF1 se configura como pin de salida de propósito general.

6

OUTXF1

0

El dato que sale por XF1 (Cuando I/OXF1=1).

7

INXF1

0

Dato que se lee de XF1 (Cuando I/OXF1=0).

31-8

Reservado

0-0

Se leen siempre ceros.

Tabla 2-5. Funciones de los bits del registro de control de XF0 y XF1.

 

 



[1] La fuente de cualquier interrupción puede emplearse para generar un evento CPU (ruptura de la secuencia normal de ejecución del programa para ejecutar una rutina de servicio de la interrupción) o para generar eventos DMA (sincronización de la transferencia de datos que gestiona y realiza el periférico interno DMA).

e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.


IMPLANTACIÓN DE UNA RED ASÃNCRONA DE ENSEÑANZA DEDICADA A LA IMPARTICIÓN DE LA ASIGNATURA COPLEMENTOS DE SISTEMAS ELECTRÓNICOS DIGITALES DE 3º CURSO DE INGENIERÃA DE TELECOMUNICACIÓN.

: Oliveros Garrido, Antonio
: Ingeniería Telecomunicación
Contenido del proyecto: