Operaciones de bloques de bits Pablo San Segundo C-206 [email protected].

21
Operaciones de bloques de bits Pablo San Segundo C-206 [email protected]

Transcript of Operaciones de bloques de bits Pablo San Segundo C-206 [email protected].

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

Operaciones de bloques de bits

Pablo San Segundo C-206

[email protected]

Page 2: 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

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

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

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

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

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

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

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

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

Page 7: 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

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

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

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

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.

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

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

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

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

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

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

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

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)

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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