Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es.

Post on 22-Jan-2016

216 views 1 download

Transcript of Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es.

Operaciones de bloques de bits

Pablo San Segundo C-206

pablo.sansegundo@upm.es

Índice Arquitectura de programación

Palabra de estado (State Register) Acumuladores Arquitectura de bloques (AWL)

Operadores de más de un bit Carga y Transferencia Operaciones de comparación (>, <, <>, >=,…) Operaciones aritméticas (+, -, *, /, SQR, SQRT) Máscaras (Y, OR, XOR) Otras

Palabra de estado (SR)RB A1 A0 OV OS OR STA RLO /ER

BIT Nombre Significado

0 /ER Primera consulta a nivel bajo

1 RLO Resultado lógico

2 STA Valor del bit direccionado

3 OR Combinación Y = 1

4 OS Overflow memorizado (stored)

5 OV Overflow última operación

6 A0 Res. Comparación / Artimética / Op. lógicas / Op. Shift+Rot / Errores

7 A1 Res. Comparación / Artimética / Op. lógicas / Op. Shift+Rot / Errores

8 RB Resultado Binario

9-15 x Sin uso

Consulta de biestables de la palabra de estado

Consulta Devuelve TRUE si se cumple

==0 A1=0 AND A0=0

<>0 A1 distinto de A0

>0 A1=1 AND A0=0

<0 A1=0 AND A0=1

>=0 ==0 OR >0

<=0 ==0 OR <0

UO A1=1 AND A0=1 (Error en tiempo de ejecución: p.ej. división por cero)

BIE RB=1

OS OS=1

OV OV=1

U ==0S M 1.0

U BIES M1.1

OB1

Acumuladores Registros de la ALU de 32 bits Número variable:

Típicamente 2 en gamas medias. En gamas altas (p. ej. S7-400) puede haber hasta 4

Encargados de realizar las operaciones de mas de 1 bit

Arquitectura de bloques

Sis

tem

a O

pera

tivo

OB

1: C

iclo

prin

cipa

l

OBX

FCX

CALL<FCX>

CC

UC CALL<FBX, DBX>

FCX

DBX

FBX

Bloque de datos de instancia

A todos los bloques

DBX

Bloque de datos global

DBX

FBX

Bloque de datos de instancia

Índice Arquitectura de programación

Palabra de estado (State Register) Acumuladores Arquitectura de bloques (AWL)

Operadores de más de un bit Carga y Transferencia Operaciones de comparación (>, <, <>, >=,…) Operaciones aritméticas (+, -, *, /, SQR, SQRT) Máscaras (Y, OR, XOR) Otras

Operadores Carga (L) y Transferencia (T)

EW10

MW10

ACU1 ACU2

Acumuladores (32 bits)

L EW10

1) ACU2=ACU1

2) ACU1=EW10

T MW10: EW10 = ACU1

ACU2 = ACU1ACU1 = EW10

EW10 = ACU1

Operaciones de comparación

ACU2 ACU1<OPERADOR> RLO

A1 A0

Operador Tamaño(bits) Comentario

(==,<>,>,<,>=,<=) I 16

ACU-1 y ACU-2 no

varían

(==,<>,>,<,>=,<=) D

32

(==,<>,>,<,>=,<=) R

32

Importante: En el caso de operaciones de comparación, los bits de la palabra de estado A1 y A0 se actualizan de acuerdo con el tamaño relativo de los argumentos y no dependen del resultado lógico de la comparación.

Ejemplos (1/2)

L 5

L 8

>=I

ACU1=8, ACU2=5

A1=0, A0=1, RLO=0

L 5

L 8

<=I

L 9.7E+6

L 2

<I

ACU1=2, ACU2=9.7E+6

A1=1, A0=0, OV=0, OS=0

ACU1=8, ACU2=5

A1=0, A0=1, RLO=1

L 5

L 8

<I

= M 1.0

L EW0

L EW2

<I

= A 1.0

U ==0

= A1.1

A1.0 = 1 si EW0 < EW2 (con signo)

A1.1 = 1 si EW0 == EW2

M1.0=1

Control de flujo: SPA, SPB y SPBN SPA <ETIQUETA>

Salto incondicional a la instrucción con ETIQUETA Equivale a goto ETIQUETA

SPB <ETIQUETA> Salto a la instrucción con ETIQUETA

si el RLO = 1 Equivale a if (RLO==1) then goto ETIQUETA

SPBN <ETIQUETA> Salto a la instrucción con ETIQUETA

si el RLO =0 Equivale a if (RLO == 0) then goto ETIQUETA

¿RLO=0?yes

no

ETIQUETA

¿RLO=1?yes

no

ETIQUETA

Ejemplos (2/2)

1

2 C=C+1

C>=3

C<3

15

S1

S0

//…

U X2

ZV Z1

// Ec. activación

L Z1

L 3

>=I

U X2

SPB _MA

U X2

S X1

R X2

SPA FIN

_MA: NOP 0

U X2

S X15

R X2

FIN: NOP 0

OB1-A

//…

U X2

ZV Z1

// Ec. activación

L Z1

L 3

>=I

U X2

S X15

R X2

U <0

U X2

S X1

R X2

//…

OB1-B

Primera consulta (/ER=0)

Salto condicionado a que RLO = 1

Salto incondicional

Operaciones aritméticas (1/3) Dos operandos implícitos en acumuladores

ACU2 ACU1<OPERADOR> ACU1

A1, A0, OV, OS

Operador Tamaño(bits) Comentario

(+,-,/,*) I 16 /I: Cociente ACU1-L, Resto ACU1-H

(+,-,/,*) D 32 /D: Cociente ACU1

(+,-,/,*) R 32

A1: “resultado mayor que cero”A0: “resultado menor que cero”OV: “desbordamiento” (A1 y A0 complementan el tipo)OS: “desbordamiento memorizado” (al menos un desbordamiento)

Reglas generales para biestables A0 y A1

Operaciones aritméticas (2/3)

OV

ER

FL

OW

VA

LO

R A

CU

1 E

N

RE

LA

CIÓ

N C

ON

0

A1=0 y A0=0 : ACU1 = 0A1=1 y A0=0 sin desbordamiento: ACU1 > 0A1=0 y A0=1 sin desbordamiento : ACU1 <0

A1=1 y OV=1 : desbordamiento por arriba de ACU1 A0=1 y OV=1 : desbordamiento por debajo de ACU1A1=1 y A1=1 : excepción división por cero, tipado incorrecto etc.

Ejemplos

L -8L 6+I //ACU1-L=-2, A1=0, A0=1 (sin desbordamiento)

L 2L 6/I //ACU1-L=0, ACU1-H=2, A1=1, A0=0 (sin desbordamiento)

L 1000L 100*I //ACU1=100000, OV=1, OS=1, A1=1, A0=0

L 1000L 100*I //OS=1, OV=1L 200L 5*I //ACU1=1000, OV=0, OS=1, A1=1, A0=0

Operaciones aritméticas (3/3) Un único operando implícito en ACU1

ACU1 <OPERADOR> ACU1

ABS SQR SQRT EXP LN SIN COS TAN ASIN ACOS ATAN…

REAL

L 9.0E10

SQR

UN OV

SPB OK

SPA FIN

OK: T MD10

FIN: NOP 0

EJERCICIO: Interprete cada instrucción del código siguiente

REAL

Recapitulación: biestables A1 y A0Consulta TRUE

(RLO = 1)Tras Op. Aritmética Tras Op.

Comparación

==0 A1=0 AND A0=0 ACU1=0 ACU2 == ACU1

<>0 A1 distinto de A0 ACU1<>0 ACU2 <> ACU1

>0 A1=1 AND A0=0 ACU1>0 ACU2 > ACU1

<0 A1=0 AND A0=1 ACU1<0 ACU2 < ACU1

>=0 ==0 OR >0 ACU1>=0 ACU2 >= ACU1

<=0 ==0 OR <0 ACU1<=0 ACU2 <= ACU1

UO A1=1 AND A0=1 (p. ej. División por cero)

BIE RB=1

OS OS=1

OV OV=1

A1, A0ACU1 A0ACU1, A1ACU2

Operaciones con conjuntos de var. lógicas

Operador Tamaño(bits) Comentario

UW 16 Y lógica entre acumuladores (L)

OW 16 O lógica entre acumuladores (L)

XOW 16 XOR lógica entre acumuladores (L)

UD 32 Y lógica entre acumuladores

OD 32 O lógica entre acumuladores

XOD 32 XOR lógica entre acumuladores

ACU2 ACU1OPERADOR ACU1

L MW10L MW12UWT MW14

OB1

DOS ARGUMENOS IMPLÍCITOS: ACU1 y ACU2

Ejemplo: flanco simultáneo de 32 variables

ED10 Entradas

MD100 Marcas de flanco

MD10 Marcas de pulsoFlanco

positivo

L MD 100

L ED 10

XOD

L MD 100

UD

T MD 10

L ED 10

T MD 100

¿Flanco negativo?

L MD 100

L ED 10

XOD

L ED 10

UD

T MD 10

L ED 10

T MD 100Memoria

ACU1: valores distintos entre marcas de flanco y entradas

ACU1: entradas con valor lógico 1 distintas de marcas de flanco

Aplicación al grafcet (1/2)

0

1 2 31 32

U “X0”

U “S1”

L DW#16#FFFFFFFF

T MD 1

R “X0”

S1

¿Ecuación de activación?

MD 1

U “X0”

U “S1”

SPBN NOAC

//Activación

L DW#16#FFFFFFFF

T MD 1

R “X0”

NOAC: NOP 0

Activación simultánea de etapas

//Desactivación simultánea de 32 etapas

L DW#16#0

T ETAPAS_CODIFICADAS_EN BITS_CONSECUTIVOS

Desactivación simultánea de etapas

Aplicación al grafcet (2/2)

OB100

SETS M0.0R Act.1R Act.2//…R Act.N

0

1

32

0

MD1

M 0.0

UN M1.0

UN M1.1

UN M1.2

//…

S M0.0

R Act.1

R Act.2

//…

R Act.N

OB100

ARRANQUES (DESDE CARCASA)

OB100

SETS M0.0L DW#16#0T MD1

OB102

L MD 1L DW#16#0==DS M0.0R Act.1R Act.2//…R Act.N

ARRANQUES(TRAS DESCONEXIÓN)

OB102

L MD 1L DW#16#0==DSPBN _001

S M0.0L DW#16#0T MD1

_001:NOP 0//…

Arranque / Rearme