5.1          Reset y Vectores de Interrupción.

 

Independientemente del modo de funcionamiento del DSP (TMS320C30 ó TMS320C31), la secuencia de operaciones siguientes a un reset hardware del sistema (aplicación de un 0 lógico en la entrada  del circuito integrado, reset externo no-enmascarable) es siempre la misma. El sistema recoge el vector de reset (posición 000000h en el mapa de memoria del DSP) y copia el valor que existe en ese registro (que se ubica en un periférico de memoria externa suponiendo que el sistema funciona en modo microprocesador o en la ROM interna, si el sistema funciona en modo microcomputador) en el registro de contador de programa o PC de la CPU. Se dice por tanto que el sistema tiene el reset autovectorizado a la posición absoluta 000000h del mapa de memoria del DSP, dado que cuando aparece el reset, el sistema accede a la posición 000000h para recoger la dirección absoluta de la primera instrucción a ejecutar. Al conectar la alimentación al DSP, el estado de los registros es desconocido. La función fundamental del reset, es llevar los registros del sistema a un estado inicial conocido, para lo cual es preciso mantener a nivel bajo (0 lógico) el pin de entrada  al circuito integrado durante al menos 10 ciclos de reloj del sistema. Un reset genera la siguiente reacción de los registros y líneas de entrada y salida del circuito integrado:

 

·        Accesos al exterior: Las líneas de los buses de dirección y de datos (, , , ) se ponen en alta impedancia, así como las líneas de control del tipo de acceso al exterior (,). Las líneas ,  y  se ponen a 1. Los registros de control asociados al bus principal y de expansión se inicializan.

·        Las líneas de los periféricos internos (temporizadores y puertos serie) así como las entradas o salidas digitales,  y  se ponen en alta impedancia. Los periféricos internos al DSP y sus registros de control se inicializan.

·        Los registros internos de la CPU se inicializan: IE=0, ST=0, IF=0, IOF=0, etc.

 

Al hablar de interrupciones en un microprocesador se distingue entre fuente que genera la interrupción y servicio que provoca:

 

1.      Fuentes de interrupción. La forma de atención de las interrupciones es análoga al proceso de reset. Los DSPs de la familia TMS320C3x disponen de cuatro fuentes de interrupciones externas (), dos fuentes de interrupción asociadas a los periféricos internos puertos serie síncronos, una fuente asignada a la transmisión y otra a la recepción (XINT0, RINT0 para el puerto serie 0 y XINT1, RINT1 para el puerto serie 1 que no está disponible en el TMS320C31), así como una fuente de interrupción asociada a cada uno de los periféricos internos restantes, temporizadores y controlador de DMA (TINT0, TINT1 y DINT).

El esquema de generación de una interrupción en un DSP de esta familia, se muestra en las figuras 2.19 y 2.20. Las interrupciones externas () son activas por nivel bajo y se sincronizan con el ciclo máquina del sistema, H1 ó H3. Para garantizar que son detectadas, deben estar activas al menos durante 1 ciclo de H1 y para ser detectadas sólo una vez, deberán desactivarse antes de dos ciclos de reloj H1. Si permanecen activas más de dos ciclos de H1, pueden ser atendidas más de una vez (se generan lo que se conoce como interrupciones espúreas o indeseadas).

 

Figura 2.18. Esquema de generación de interrupciones internas.

 

Figura 2.19. Esquema de generación de interrupciones externas.

 

2.      Servicio de interrupciones. Cuando una interrupción es detectada (el bit correspondiente a dicha interrupción en el registro IF se pone a 1) el sistema reacciona como se muestra en el diagrama de flujo de la figura 2.21.

 

Ø      Si la interrupción tiene habilitada la generación de eventos CPU (está a 1 el bit correspondiente del registro IE y además el bit de habilitación global de interrupciones está también a 1) la instrucción que, cuando se detecta la interrupción, está siendo recogida no se ejecuta. La dirección de esta instrucción, registro PC, es almacenada en la dirección apuntada por el registro SP, puntero a la cima de la pila. Inmediatamente después de almacenar en la pila el PC, se pone a cero el bit GIE del registro ST (se desactiva el bit de habilitación global de las interrupciones) y se recoge el vector de interrupción asociado a la interrupción detectada que se almacena en PC. Se empieza, por tanto, a ejecutar la rutina de servicio de la interrupción. Al final de la rutina de servicio de la interrupción deberá realizarse el retorno del contador de programa a la dirección de la instrucción que no se ejecutó. El retorno normal de la rutina de servicio lo realiza la instrucción RETI, que almacena en el registro PC el dato que aparece en la cima de la pila (deberá coincidir con el valor del registro PC que se almacenó en la pila al comenzar el proceso de atención de la interrupción) y que reactiva el bit GIE.

 

Ø      Si la interrupción tiene habilitada la generación de eventos DMA, está a 1 el bit correspondiente del registro IE y además se permite la sincronización de eventos DMA por interrupciones, sirve para lanzar las transferencias de tipo DMA programadas (se verá en el tema 17).

 

Obsérvese, por tanto, que una interrupción puede generar un evento de tipo CPU (ruptura de la secuencia normal de ejecución en un programa) y otro de DMA. Ambos procesos son totalmente independientes y se ejecutan en paralelo.

Figura 2.20. Procesamiento de un evento interrupción: Posibilidad de generar eventos CPU y DMA en paralelo.

 

Comentarios relacionados con el proceso de atención de interrupciones en la familia TMS320C3x:

 

1.      El flag GIE (del registro ST de la CPU) se pone a 0 al comenzar el proceso de atención de una interrupción. Por tanto, y en principio, no se produce anidamiento entre interrupciones. No es posible que, mientras se esté ejecutando la rutina de servicio de una interrupción, al producirse una nueva interrupción, ésta última se atienda antes de terminar de ejecutarse la rutina de servicio de la primera interrupción que apareció. Al terminar de ejecutar la rutina de servicio de la interrupción habrá que devolver el registro PC al valor que tenía antes de la llegada de la interrupción y, si se desea permitir la generación de nuevas interrupciones habrá que volver a activar el bit GIE (instrucciones RETI o RETS). Obsérvese que, dentro de la propia rutina de servicio de las interrupciones, el usuario puede poner, vía software, el bit GIE a 1 permitiendo el anidamiento de las interrupciones.

2.      Los accesos en escritura al registro IF pueden causar fallos en la generación de las interrupciones (si se ha generado una interrupción y está lista para ser latcheada en IF a la par que se escribe en el mismo registro IF, el proceso de escritura tiene más prioridad, perdiéndose la interrupción generada lo que es especialmente grave si la interrupción generada lo fue por un periférico interno como la DMA). El fabricante desaconseja el uso del polling o generación por software (escritura de 1´s lógicos) en los flags del registro IF para provocar interrupciones así como su desactivación por software (escritura de 0´s lógicos), aconsejando la generación de la interrupción y dentro de la rutina de servicio la distinción entre interrupción real o espúrea.

3.      La señal que genere una interrupción externa debe tener un 0 lógico (permanecer activa) un tiempo comprendido entre 1 y 2 ciclos H1 ó H3 (entre 2 y 4 ciclos de reloj del sistema) para garantizar que no se produzca más de una interrupción externa en el sistema (el flags del registro IF correspondiente a la interrupción externa lo limpia automáticamente la CPU generando una señal de reset asíncrono al entrar en la rutina de servicio de la interrupción).

4.      La atención de las interrupciones provoca que no se ejecute la instrucción que entre en el momento de la aparición de la interrupción en su fase de recogida (Fetch en la estructura de pipeline) siempre que ésta se encuentre en su primer ciclo máquina de recogida. Si la instrucción está en su fase de recogida pero en un ciclo máquina superior al primero (debido, por ejemplo, a la aparición de conflictos en la estructura pipeline) se termina de ejecutar antes de atenderse la rutina de servicio de la interrupción. Todo esta casuística, la gestiona la CPU de forma y manera transparente al usuario.

5.      Posibilidad de generar interrupciones de tipo software (excepciones). Aparte de las interrupciones antes mencionadas. Se pueden generar hasta 32 interrupciones software empleando la instrucción “TRAPcond n”, con 0<n<31, que generaría una ruptura programada de la secuencia normal de control de forma análoga a como sucede en el caso de interrupciones de tipo hardware. Este tipo de interrupciones se generan independientemente del valor (0 ó 1) de GIE. Una instrucción de tipo TRAP, provoca además que el flag GIE se ponga a 0 inicialmente (sea o no cierta la condición cond, para generación de la excepción software), lo que puede provocar un error si posteriormente se produce un conflicto en la estructura de pipeline, en las fases de lectura (Read) o decodificación (Decode), asociadas a la propia instrucción TRAP, que dejaría GIE=0 luego de ejecutarse la instrucción, aunque no se cumpla la condición ni se genere la interrupción software. Para evitar este error, el fabricante recomienda la inserción de dos instrucciones NOP antes del uso de la instrucción TRAP. Secuencias de operaciones que pueden generar este error son:

 

Ejemplo1:              LDI  memoria,SP

TRAPcond  n

Ejemplo2:              LDI  memoria,SP

NOP

TRAPcond  n

Ejemplo3:              STI  SP,memoria

TRAPcond n

Ejemplo4:              STI  memoria,SP

NOP

TRAPcond  n

 

En la figura 2.22 se muestra el mapa de memoria de los vectores de reset, interrupciones y excepciones software en la familia TMS320C3x de Texas Instruments.

 

Figura 2.21. Mapa de memoria de los vectores de reset, interrupciones y excepciones software.

 

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: