Grupo de Tecnología Electrónica

Complementos de sistemas electrónicos digitales
Tema 3

5.   SUMARIO DE INSTRUCCIONES

 

El formato o forma genérica de expresar las instrucciones en ensamblador de un DSP de la familia TMS320C3x de Texas Instruments es como sigue:

 

MNEMÓNICO          SRC1,SRC2,DST

 

Donde MNEMÓNICO hace referencia a una instrucción en particular, por ejemplo el mnemónico ADDI hace referencia a una instrucción que realiza una operación de suma con operandos enteros, SRC1 y SRC2 hacen referencia a los operandos fuente y DST al operando destino de la instrucción.

 

Obsérvese que hay instrucciones que no requieren de operandos (por ejemplo, la instrucción NOP, que no realiza operación alguna). Otras, sólo requieren un operando (el destino, por ejemplo, la instrucción PUSH AR0, que almacena el registro AR0 en la pila del DSP), o dos operandos (uno fuente y otro que hace las veces de destino o de fuente y destino, por ejemplo, ADDI R0,R7, que suma el contenido del registro R0 al contenido del registro R7 almacenando el resultado en el registro R7). Por último, existen instrucciones que requieren tres operandos (dos fuentes y un destino como, por ejemplo, ADDI R0,R2,R7, que suma el contenido del registro R0 al contenido del registro R2 almacenando el resultado en el registro R7).

 

Destacar, asociado a estos microprocesadores, las siguientes características especiales del software:

 

1.      Las instrucciones se pueden ejecutar todas en un único ciclo máquina salvo instrucciones de ruptura, controlada por el usuario, de la secuencia de ejecución del programa (instrucciones de salto) que tardan, al no poder aprovechar la estructura de ejecución en paralelo de microinstrucciones del DSP (estructura pipeline vista anteriormente), cuatro ciclos máquinas en hacerse efectivas. Para posibilitar la optimización de la ejecución de las instrucciones de salto se definen unas instrucciones de salto con retardo, BRD. Estas instrucciones se ejecutan en un único ciclo máquina puesto que el salto efectivo se produce con el aprovechamiento de la estructura pipeline (las tres instrucciones que siguen al salto se ejecutan antes de producirse el salto efectivo).

 

2.      Posibilidad de ejecutar dos operaciones en paralelo. Gracias a la existencia interna de múltiples buses de datos así como de operadores aritméticos independientes se pueden realizar dos operaciones, simultáneamente, en la CPU del DSP. Las instrucciones que permiten este tipo de operaciones tienen la forma genérica:

 

MNEMÓNICO1                         SRC1,SRC2,DST1

||    MNEMÓNICO2                    SRC3,SRC4,DST2

 

3.      Posibilidad de ejecutar múltiples veces una instrucción (RPTS) o varias (RPTB, repetición de un bloque de instrucciones) sin que ello suponga algún tipo de penalización por la ejecución de bucles. En el caso de ejecución de una única instrucción múltiples veces, RPTS, la fase FETCH de recogida de la instrucción es posible realizarla desde el registro IR de la CPU, con lo que se evita cualquier penalización (en tiempo de ejecución) en el acceso a memoria para recoger la instrucción.

 

4.      Existencia de instrucciones que facilitan el acceso de dos procesadores a una única memoria (instrucciones de interbloqueo). Se definen una serie de instrucciones que permiten la implementación sencilla de un semáforo y que, de manera coherente, dos microprocesadores compartan una zona común de datos generando, para ello, el arbitraje necesario que evite los conflictos en el acceso a los datos comunes. La familia TMS320C3x dispone de cinco instrucciones de interbloqueo (LDFI, LDII, SIGI, STFI, STII).

 

Estas instrucciones le ofrecen al usuario una potente herramienta de sincronización en el procesamiento en paralelo de DSPs, garantizando la integridad y la velocidad de la comunicación. Emplean los puertos de entrada y salida de propósito general, XF0 y XF1. XF0 debe configurarse como línea de salida y XF1 como línea de entrada de forma que, XF0 genere la señal de petición de bloqueo y XF1 funcione como línea de reconocimiento del bloqueo solicitado. Ambas señales son activas a nivel bajo. Los accesos en lectura y escritura (LDFI, LDII, STFI, STII), generados por las instrucciones interbloqueadas, son idénticos a los normales salvo que, además, usan las líneas XF0 y XF1. Los operandos de esas instrucciones deben ser siempre accedidos por direccionamiento directo o indirecto.

 

Al emplear las instrucciones LDFI y LDII, XF0 se pone a cero si y sólo si el operando fuente se ubica en memoria externa al DSP (, ó  activos) o en la zona de memoria interna de periféricos. En caso contrario, acceso a memoria interna de tipo RAM por ejemplo, las operaciones de lectura interbloqueadas no activan XF0 y son idénticas a las operaciones de lectura normales que realiza el bus. Cuando se ejecuta una instrucción de tipo LDFI ó LDII, la CPU realiza las siguientes operaciones:

1.      Comienza el acceso en lectura al operando: Se impone en el bus la dirección del dato y, simultáneamente, se activa XF0 ().

2.      Se extiende, en el tiempo, el acceso en lectura al dato hasta que no se activen XF1 () y la variable  (acceso con  activo) ó  (acceso con  ó  activos).

 

La estructura de la CPU permite la atención de una interrupción activa que aparezca cuando se esté ejecutando una instrucción LDFI ó LDII siempre que se haya activado la señal  al DSP y aunque no se haya reconocido el bloqueo (aunque no se haya activado XF1). Al final de la ejecución de la rutina de servicio de la interrupción se vuelve a la instrucción siguiente a la interbloqueada. Ésta es la única forma de evitar, en el caso de que no llegue nunca el reconocimiento externo del bloqueo (), que la CPU quede bloqueada al ejecutar las instrucciones LDFI ó LDII.

 

Al emplear las instrucciones STFI y STII, XF0 se pone a uno si y sólo si el operando destino se ubica en memoria externa al DSP (, ó  activos) o en la zona de memoria interna de periféricos. En caso contrario, acceso a memoria interna de tipo RAM por ejemplo, las operaciones de escritura interbloqueadas no desactivan XF0 y son idénticas a las operaciones de escritura normales que realiza el bus. Cuando se ejecuta una instrucción de tipo STFI ó STII, la CPU realiza las siguientes operaciones:

1.      Comienza el acceso en escritura al operando: Se impone en el bus la dirección del dato y, simultáneamente, se desactiva XF0 ().

2.      Se extiende, en el tiempo, el acceso en escritura del dato hasta que no se active la variable (acceso con  activo) ó (acceso con  ó  activos).

 

Al emplear la instrucción SIGI, que no dispone de operandos, la CPU realiza las siguientes operaciones:

1.      Se activa XF0 ().

2.      La CPU se queda en estado de espera hasta que detecte la activación de XF1 ().

3.      Termina de ejecutar la instrucción desactivando XF0 ().

 

Ejemplo1:   Multiproceso en el que DSP1 espera, en el bucle L1, hasta que DSP2 ponga el operando indicado por LOCK a cero. Sólo se abandona el bucle L1 si el DSP2 escribe un valor cero en la dirección @LOCK (lo debe hacer cuando XF0 del DSP valga 0) y, antes de abandonar el bucle, el DSP1 vuelve a activar el semáforo (pone la dirección @LOCK a uno).

        LDI         1,R0                                       ; R0=1

L1:   LDII        @LOCK,R1                          ; Comienza el interbloqueo: R1=[LOCK], XF0=0. Afecta a

; las banderas del registro ST.

                STII        R0,@LOCK                          ; [LOCK]=1, XF0=1; Fin del interbloqueo. No afecta a las

; banderas del registro ST, no afecta al salto.

                BNZ       L1                                           ; Salta a L1 mientras la condición para el salto no se haya

; activado con la instrucción LDII (R1!=0). La única forma de

; salir del bucle es que un dispositivo externo escriba en

; @LOCK un 0 cuando XF0 vale 0.

 

Ejemplo2:  Multiproceso en el que DSP1 ejecuta el programa en su secuencia normal hasta que llega a la instrucción SIGI. Entonces, espera hasta que DSP2 quite el bloqueo (ejecute SIGI). Para que el proceso de ejecución esté sincronizado, es preciso conectar XF0 del DSP1 (configurado como línea de salida del microprocesador) a XF1 del DSP2 (configurado como línea de entrada) y XF1 del DSP1 (configurado como línea de entrada) a XF0 del DSP2 (configurado como línea de salida).

 

En la tabla 3-4 se enumeran las instrucciones de almacenamiento y carga de datos de que dispone el DSP. En la tabla 3-5 se enumeran las instrucciones que realizan operaciones aritméticas simples. En la tabla 3-6 se enumeran las instrucciones que realizan operaciones lógicas. En la tabla 3-7 se enumeran las instrucciones de control del formato del dato. En la tabla 3-8 se enumeran las instrucciones de control del contador de programa. En la tabla 3-9 se enumeran las instrucciones que introducen al DSP en el modo de funcionamiento de bajo consumo. En la tabla 3-10 se enumeran las instrucciones interbloqueadas y, finalmente, en la tabla 3-11 se enumeran las instrucciones que realizan dos operaciones en paralelo.

 


 

Mnemónico

Descripción breve

LDE

Carga el exponente de un número flotante.

LDF

Carga un número flotante.

LDFcond

Carga un número flotante si se cumple la condición definida.

LDI

Carga un número entero.

LDIcond

Carga un número entero si se cumple la condición definida.

LDM

Carga la mantisa de un número flotante.

LDP

Carga el puntero a la página de datos (direccionamiento directo).

POP

Recoge entero de la pila.

POPF

Recoge flotante de la pila.

PUSH

Almacena entero en la pila.

PUSHF

Almacena flotante en la pila.

STF

Almacena flotante.

STI

Almacena entero.

Tabla 3-4. Operaciones básicas de carga y almacenamiento de datos, TMS320C3x.

 

Mnemónico

Descripción breve

ABSF

Calcula el valor absoluto de un flotante.

ABSI

Calcula el valor absoluto de un entero.

ADDC

Suma enteros (al resultado le suma el valor del bit de acarreo).

ADDC3

Suma enteros (al resultado le suma el valor del bit de acarreo).

ADDF

Suma flotantes.

ADDF3

Suma flotantes.

ADDI

Suma enteros.

ADDI3

Suma enteros.

CMPF

Compara dos flotantes.

CMPF3

Compara dos flotantes.

CMPI

Compara dos enteros.

CMPI

Compara dos enteros.

MPYF

Multiplica flotantes.

MPYF3

Multiplica flotantes.

MPYI

Multiplica enteros.

MPYI3

Multiplica enteros.

NEGB

Calcula el entero cambiado de signo (al resultado le resta el valor del bit de acarreo).

NEGF

Calcula el flotante cambiado de signo.

NEGI

Calcula el entero cambiado de signo.

SUBB

Resta enteros (al resultado le resta el valor del bit de acarreo).

SUBB3

Resta enteros (al resultado le resta el valor del bit de acarreo).

SUBcond

Resta enteros, si se cumple una determinada condición.

SUBF

Resta flotantes.

SUBF3

Resta flotantes.

SUBI

Resta enteros.

SUBI3

Resta enteros.

SUBRB

Resta enteros (al resultado le resta el valor del bit de acarreo). Similar a SUBB.

SUBRF

Resta flotantes. La operación de resta es la contraria que en SUBF.

SUBRI

Resta enteros. La operación de resta es la contraria que en SUBI.

Tabla 3-5. Operaciones aritméticas simples básicas, TMS320C3x.

 


 

Mnemónico

Descripción breve

AND

And lógico.

AND3

And lógico.

ANDN

And lógico con complemento.

ANDN3

And lógico con complemento.

ASH

Desplazamiento aritmético.

ASH3

Desplazamiento aritmético.

LSH

Desplazamiento lógico.

LSH3

Desplazamiento lógico.

NOT

Complemento a uno.

OR

Or lógico.

OR3

Or lógico.

ROL

Giro a la izquierda.

ROLC

Giro a la izquierda a través del bit de acarreo.

ROR

Giro a la derecha.

RORC

Giro a la derecha a través del bit de acarreo.

TSTB

Comprueba un campo de bits.

TSTB3

Comprueba un campo de bits.

XOR

Xor lógico.

XOR3

Xor lógico.

Tabla 3-6. Operaciones lógicas básicas, TMS320C3x.

 

Mnemónico

Descripción breve

FIX

Convierte de flotante a entero.

FLOAT

Convierte de entero a flotante.

NORM

Normaliza flotante.

RND

Redondea flotante.

Tabla 3-7. Operaciones básicas de control del formato de los datos, TMS320C3x.

 

Mnemónico

Descripción breve

Bcond

Salto condicionado.

BcondD

Salto condicionado con retardo.

BR

Salto incondicional.

BRD

Salto incondicional con retardo.

CALL

Llamada a subrutina.

CALLcond

Llamada a subrutina condicionada.

DBcond

Decrementa y salto condicionado.

DBcondD

Decrementa y salto condicionado con retardo.

IACK

Reconocimiento de interrupción.

IDLE

Espera hasta la aparición de una interrupción.

NOP

No operación.

RETIcond

Retorno condicionado de rutina de servicio de interrupción.

RETScond

Retorno condicionado de subrutina.

RPTB

Repite bloque de instrucciones.

RPTS

Repite una instrucción.

SWI

Interrupción software. El fabricante indica, en el manual del DSP, que esta instrucción no debe ser utilizada por un usuario.

TRAPcond

Llamada condicionada a vector TRAP.

Tabla 3-8. Operaciones básicas de control del contador de programa, TMS320C3x.

 


 

Mnemónico

Descripción breve

IDLE2

Para el contador de programa y elimina la entrada de reloj al sistema digital.

LOPOWER

Divide por 16 la fuente de reloj, H1=H1/16.

MAXSPEED

Restaura el reloj a su velocidad normal.

Tabla 3-9. Operaciones básicas de control del modo de funcionamiento de bajo consumo, sólo para el DSP TMS320LC31.

 

Mnemónico

Descripción breve

LDFI

Carga valor flotante con interbloqueo.

LDII

Carga valor entero con interbloqueo.

SIGI

Genera señales de interbloqueo.

STFI

Almacena valor flotante con interbloqueo.

STII

Almacena valor entero con interbloqueo.

Tabla 3-10. Operaciones básicas con interbloqueo, TMS320C3x.

 

Mnemónico

Descripción breve

ABSF || STF

Calcula el valor absoluto de un flotante y almacena otro flotante.

ABSI || STI

Calcula el valor absoluto de un entero y almacena otro entero.

ADDF3 || STF

Suma dos flotantes y almacena otro flotante.

ADDI3 || STI

Suma dos enteros y almacena otro entero.

AND3 || STI

AND lógica bit a bit de dos registros y almacena un entero.

ASH3 || STI

Desplazamiento aritmético y almacena un entero.

FIX || STI

Convierte a entero un flotante y almacena otro entero.

FLOAT || STF

Convierte a flotante un entero y almacena otro flotante.

LDF || LDF

Carga dos flotantes.

LDF || STF

Carga un flotante y almacena otro.

LDI || LDI

Carga dos enteros.

LDI || STI

Carga un entero y almacena otro.

LSH3 || STI

Desplazamiento lógico y almacena un entero.

MPYF3 || ADDF3

Multiplica dos flotantes y suma otros dos flotantes.

MPYF3 || STF

Multiplica dos flotantes y almacena otro flotante.

MPYF3 || SUBF3

Multiplica dos flotantes y resta otros dos flotantes.

MPYI3 || ADDI3

Multiplica dos enteros y suma otros dos enteros.

MPYI3 || STI

Multiplica dos enteros y almacena otro entero.

MPYI3 || SUBI3

Multiplica dos enteros y resta otros dos enteros.

NEGF || STF

Cambia de signo un flotante y almacena otro flotante.

NEGI || STI

Cambia de signo un entero y almacena otro entero.

NOT || STI

Complemento a uno de un registro y almacena un entero.

OR3 || STI

OR lógica bit a bit de dos registros y almacena un entero.

STF || STF

Almacena dos flotantes.

STI || STI

Almacena dos enteros.

SUBF3 || STF

Resta dos flotantes y almacena otro flotante.

SUBI3 || STI

Resta dos enteros y almacena otro entero.

XOR3 || STI

XOR lógico bit a bit de dos registros y almacena un entero.

Tabla 3-11. Operaciones en paralelo, TMS320C3x.

 

 

En la tabla 3-12 se describen, por orden alfabético, las instrucciones de que dispone esta familia de microprocesadores de Texas Instruments. Las instrucciones condicionadas, disponibles en esta familia de DSPs, precisan de un código que indica el tipo de condición que debe de cumplirse para que la instrucción se ejecute. En la tabla 3-13 se suministran los códigos y tipos de condición que contempla el ensamblador de la familia TMS320C3x.

 

Mnemónico

Operación

Descripción

Instrucciones simples

Tipo de operando (modos de direccionamiento posibles al operando):

Cualquier modo de direccionamiento es posible (operando src, count), operandos src1, src2 (direccionamiento a registro o indirecto con desplazamiento 0, 1, IR0 ó IR1), operando Csrc (direccionamiento a registro o relativo al contador de programa), modo de direccionamiento a registro (operandos Dreg, Sreg), modo de direccionamiento a registro R0-R7 (operando Rn), modo de direccionamiento a registro AR0-AR7 (operando ARn), modo de direccionamiento inmediato largo (operando addr).

Códigos de condición, cond, tabla 3-13.

ABSF

Calcula el valor absoluto de un número flotante.

ABSI

Calcula el valor absoluto de un número entero.

ADDC

Suma enteros con acarreo.

ADDC3

Suma enteros con acarreo (tres operandos).

ADDF

Suma números flotantes.

ADDF3

Suma números flotantes (tres operandos).

ADDI

Suma enteros sin acarreo.

ADDI3

Suma enteros sin acarreo (tres operandos).

AND

AND lógica.

AND3

AND lógica (tres operandos).

ANDN

AND lógica con complemento.

ANDN3

AND lógica con complemento (tres operandos).

ASH

if  

  

else

  

Desplazamiento aritmético (conserva el signo) count veces.

Si count>0, desplazamiento a la izquierda, si count<0, a la derecha.

ASH3

if  

  

else

  

Desplazamiento aritmético (conserva el signo) count veces, de tres operandos.

Si count>0, desplazamiento a la izquierda, si count<0, a la derecha.

Bcond

if cond es cierto

  if Csrc es un registro,

    

  if Csrc es un valor,

    

else

Salto condicional.

BcondD

if cond es cierto

  if Csrc es un registro,

    

  if Csrc es un valor,

    

else

Salto condicional con retardo.

BR

Salto incondicional.

BRD

Salto incondicional con retraso.


 

CALL

 (Top Pila)

Llamada a subrutina.

CALLcond

if cond es cierto

 

  if Csrc es un registro,

    

  if Csrc es un valor,

    

else

Llamada condicional a subrutina.

CMPF

Activa los flags de operación (Registro ST) como consecuencia de realizar

Compara valores flotantes. Para realizar la comparación, resta los dos valores pero no almacena el resultado de la operación.

CMPF3

Activa los flags de operación (Registro ST) como consecuencia de realizar

Compara valores flotantes. Para realizar la comparación, resta los dos valores pero no almacena el resultado de la operación (tres operandos).

CMPI

Activa los flags de operación (Registro ST) como consecuencia de realizar

Compara valores enteros. Para realizar la comparación, resta los dos valores pero no almacena el resultado de la operación.

CMPI3

Activa los flags de operación (Registro ST) como consecuencia de realizar

Compara valores enteros. Para realizar la comparación, resta los dos valores pero no almacena el resultado de la operación (tres operandos).

DBcond

if cond es cierto y

  if Csrc es un registro,

    

  if Csrc es un valor,

    

else

Decrementa y salta condicionalmente.

DBcondD

if cond es cierto y

  if Csrc es un registro,

    

  if Csrc es un valor,

    

else

Decrementa y salta condicionalmente y con retardo.

FIX

Convierte un valor flotante en entero.

FLOAT

Convierte un valor entero en flotante.

IACK

 se pone a 0 y luego a 1

Lectura sin utilidad de src

Reconocimiento de interrupción.

IDLE

Idle hasta la próxima interrupción

Parada de la CPU hasta la llegada de una interrupción.

LDE

Carga en el exponente de Rn el de otro valor flotante.

LDF

Carga en Rn un valor flotante.

LDFcond

if cond es cierto

else no se actualiza Rn

Carga condicionalmente en Rn un valor flotante.

LDFI

, interbloqueado

Pone  y comienza un ciclo de lectura del flotante src. Ejecuta un LDF y extiende el ciclo de lectura hasta que no se ponga .

Termina el acceso y deja .

LDI

Carga un entero.

LDIcond

if cond es cierto

else no se actualiza Dreg

Carga un entero condicionalmente.


 

LDII

, interbloqueado

Pone  y comienza un ciclo de lectura del entero Dreg. Ejecuta un LDI y extiende el ciclo de lectura hasta que no se ponga .

Termina el acceso y deja .

LDM

Carga en la mantisa de Rn la de otro valor flotante

LSH

if  

  

else

  

Desplazamiento lógico (no conserva el signo) count veces.

Si count>0, desplazamiento a la izquierda, si count<0, a la derecha.

LSH3

if  

  

else

  

Desplazamiento aritmético (conserva el signo) count veces, de tres operandos.

Si count>0, desplazamiento a la izquierda, si count<0, a la derecha.

MPYF

Multiplica valores flotantes.

MPY3

Multiplica valores flotantes (tres operandos).

MPYI

Multiplica valores enteros.

MPYI3

Multiplica valores enteros (tres operandos).

NEGB

Entero cambiado de signo menos bit de acarreo.

NEGF

Flotante cambiado de signo.

NEGI

Entero cambiado de signo.

NOP

Modifica ARn, si se especifica en la instrucción

Consume un ciclo máquina sin realizar operación alguna.

NORM

Normaliza un valor flotante.

NOT

NOT lógica.

OR

OR lógica.

OR3

OR lógica (tres operandos).

POP

Recupera el último entero almacenado en la pila y actualiza (decrementa) el puntero a la pila.

POPF

Recupera el último flotante almacenado en la pila y actualiza (decrementa) el puntero a la pila.

PUSH

Actualiza (incrementa) el puntero de pila y almacena un entero en la pila.

PUSHF

Actualiza (incrementa) el puntero de pila y almacena un flotante en la pila.

RETIcond

if cond es cierto o no existe

  

  

else

Retorno condicional de la rutina de servicio de una interrupción.

RETScond

if cond es cierto o no existe

  

else

Retorno condicional de una rutina.

RND

Redondea un valor flotante.

ROL

If ,

Rotación de 1 bit hacia la izquierda.

ROLC

If ,

Rotación de 1 bit hacia la izquierda, a través del bit de acarreo.

ROR

If ,

Rotación de 1 bit hacia la derecha.

RORC

If ,

Rotación de 1 bit hacia la derecha, a través del bit de acarreo.

RPTB

Próximo

Ejecuta varias veces (RC+1 veces) un bloque de instrucciones.

RPTS

Próximo

Próximo

Ejecuta varias veces (RC+1 veces) una instrucción.

SIGI

Maneja señales de Interbloqueo

Activa XF0, (genera el interbloqueo).

Espera hasta que no lea (espera hasta que se reconozca el interbloqueo).

Termina poniendo  (limpia el interbloqueo).

STF

Almacena valor flotante.

STFI

, interbloqueado

Activa XF0, (genera el interbloqueo).

Espera hasta que no lea (espera hasta que se reconozca el interbloqueo).

Realiza la operación STF, poniendo  (limpia el interbloqueo).

STI

Almacena valor entero.

STII

, interbloqueado

Activa XF0, (genera el interbloqueo).

Espera hasta que no lea (espera hasta que se reconozca el interbloqueo).

Realiza la operación STI, poniendo  (limpia el interbloqueo).

SUBB

Operación de resta enteros con borrow de dos operandos.

SUBB3

Operación de resta enteros con borrow de tres operandos.

SUBcond

if

  

else

Operación de resta enteros condicionada.

SUBF

Operación de resta flotantes, de dos operandos.

SUBF3

Operación de resta flotantes, de tres operandos.

SUBI

Operación de resta enteros, de dos operandos.

SUBI3

Operación de resta enteros, de tres operandos.

SUBRB

Operación de resta de entero cambiado de signo con borrow.

SUBRF

Operación de resta de flotante cambiado de signo.

SUBRI

Operación de resta de entero cambiado de signo.

SWI

Emula la secuencia de eventos de las interrupciones

Emulación de las Interrupciones. El fabricante no dice como funciona esta instrucción y prohibe su uso.

TRAPcond

if cond es cierto o no existe

    (Top Pila)

   Vector Trap

  

else

Interrupción software de tipo TRAP. No necesita que se encuentre el bit GIE del registro ST habilitado para que se produzca la interrupción software.

TSTB

Comprueba un campo de bits, dos operandos.

TSTB3

Comprueba un campo de bits, tres operandos.

XOR

XOR lógico (dos operandos).

XOR3

XOR lógico (tres operandos).


 

Instrucciones en paralelo

Tipo de operando (modos de direccionamiento posibles al operando):

Cualquier modo de direccionamiento a registro R0-R7 (operandos src1, src3, dst1), direccionamiento a registro R0 ó R1 (operando op3), direccionamiento a registro R2 ó R3 (operando op6), modo de direccionamiento indirecto con desplazamiento 0, 1, IR0 ó IR1 (operandos src2, src4, dst2), operandos op1, op2, op3 y op4 (dos de ellos deben accederse empleando direccionamiento a registro y los otros dos deben accederse empleando direccionamiento indirecto).

ABSF || STF

Calcula el valor absoluto de un número flotante.

En paralelo, almacena valor flotante.

ABSI || STI

Calcula el valor absoluto de un número entero.

En paralelo, almacena valor entero.

ADDF3 || STF

Suma dos flotantes.

En paralelo, almacena valor flotante.

ADDI3 || STI

Suma dos enteros.

En paralelo, almacena valor entero.

AND3 || STI

AND lógico bit a bit entre dos registros.

En paralelo, almacena valor entero.

ASH3 || STI

if  

  

  

else

  

  

Desplazamiento aritmético (conserva el signo) count veces, de tres operandos.

Si count>0, desplazamiento a la izquierda, si count<0, a la derecha.

En paralelo, almacena valor entero.

FIX || STI

Convierte un valor entero en flotante.

En paralelo, almacena valor entero.

FLOAT || STF

Convierte un valor flotante en entero.

En paralelo, almacena valor flotante.

LDF || LDF

Carga dos flotantes.

LDF || STF

Carga un flotante.

En paralelo almacena otro flotante.

LDI || LDI

Carga dos enteros.

LDI || STI

Carga un entero.

En paralelo, almacena otro entero.

LSH3 || STI

if  

  

  

else

  

  

Desplazamiento lógico (no conserva el signo) count veces, de tres operandos.

Si count>0, desplazamiento a la izquierda, si count<0, a la derecha.

En paralelo, almacena valor entero.

MPYF3 || ADDF3

Multiplica dos flotantes.

En paralelo suma otros dos flotantes.

MPYF3 || STF

Multiplica dos flotantes.

En paralelo almacena otro flotante.

MPYI3 || STI

Multiplica dos enteros.

En paralelo almacena otro entero.

MPYF3 || SUBF3

Multiplica dos flotantes.

En paralelo resta otros dos flotantes.

MPYI3 || ADDI3

Multiplica dos enteros.

En paralelo suma otros dos enteros.

MPYI3 || SUBI3

Multiplica dos enteros.

En paralelo resta otros dos enteros.

NEGF || STF

Cambia de signo un flotante.

En paralelo, almacena otro flotante.

NEGI || STI

Cambia de signo un entero.

En paralelo, almacena otro entero.

NOT || STI

Complemento a uno de un registro.

En paralelo, almacena un entero.

OR3 || STI

OR bit a bit de dos registros.

En paralelo, almacena un entero.

STF || STF

Almacena dos flotantes.

STI || STI

Almacena dos enteros.

SUBF3 || STF

Resta dos flotantes.

En paralelo almacena otro flotante.

SUBI3 || STI

Resta dos enteros.

En paralelo almacena otro entero.

XOR3 || STI

XOR bit a bit de dos registros.

En paralelo almacena otro entero.

Tabla 3-12. Sumario de Instrucciones, DSP TMS320C3x.

cond

Descripción

Compara incondicionalmente

U

Sin condición.

Compara sin signo

LO

Si es más pequeño que (C=1).

LS

Si es más pequeño o igual que (C=1 ó Z=1).

HI

Si es más grande que (C=0 y Z=0).

HS

Si es más grande o igual que (C=0).

EQ

Si es igual que (Z=1).

NE

Si no es igual que (Z=0).

Compara con signo

LT

Si es menor que (N=1).

LE

Si es menor o igual que (N=1 ó Z=1).

GT

Si es mayor que (N=0 y Z=0).

GE

Si es mayor o igual que (N=0).

EQ

Si es igual que (Z=1).

NE

Si no es igual que (Z=0).

Compara con cero

Z

Si es cero (Z=1).

NZ

Si no es cero (Z=0).

P

Si es positivo (N=0 y Z=0).

N

Si es negativo (N=1).

NN

Si no es negativo (N=0).

Compara con otros códigos de condición del registro ST de la CPU

NV

Si no se ha producido overflow (V=0).

V

Si se ha producido overflow (V=1).

NUF

Si no se ha producido underflow (UF=0).

UF

Si se ha producido underflow (UF=1).

NC

Si no se ha producido el bit de acarreo (C=0).

C

Si se ha producido acarreo (C=1).

NLV

Si no se ha producido nunca overflow (LV=0).

LV

Si se ha producido alguna vez overflow (LV=1).

NLUF

Si no se ha producido nunca underflow en las operaciones con flotantes (LUF=0).

LUF

Si se ha producido alguna vez underflow en las operaciones con flotantes (LUF=1).

ZUF

Si es cero o es underflow de flotantes (Z=1 ó UF=1).

 

Tabla 3-13. Códigos de condición, TMS320C3x.

 

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:
Directorio raíz  >  Proyecto  >  tema3  >  punto5.htm