210 likes | 422 Views
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
E N D
Operaciones de bloques de bits Pablo San Segundo C-206 pablo.sansegundo@upm.es
Índice • Arquitectura de programación • Palabra de estado (StateRegister) • 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
OB1 U==0S M 1.0 UBIES M1.1 Consulta de biestables de la palabra de estado
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 CALL<FCX> CC UC CALL<FBX, DBX> FBX FCX DBX Bloque de datos de instancia OB1: Ciclo principal FBX Sistema Operativo FCX DBX Bloque de datos de instancia A todos los bloques OBX DBX Bloque de datos global
Índice • Arquitectura de programación • Palabra de estado (StateRegister) • 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) L EW10 ACU2=ACU1 ACU1=EW10 ACU1 = EW10 ACU2 = ACU1 EW10 ACU2 ACU1 MW10 EW10 = ACU1 T MW10: EW10 = ACU1 Acumuladores (32 bits)
Operaciones de comparación A1 A0 <OPERADOR> ACU2 ACU1 RLO 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 L 5 L 8 <I =M 1.0 ACU1=8, ACU2=5 A1=0, A0=1, RLO=0 M1.0=1 L 5 L 8 <=I ACU1=8, ACU2=5 A1=0, A0=1, RLO=1 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 L 9.7E+6 L 2 <I ACU1=2, ACU2=9.7E+6 A1=1, A0=0, OV=0, OS=0
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) thengoto ETIQUETA • SPBN <ETIQUETA> • Salto a la instrucción con ETIQUETA si el RLO =0 • Equivale a if (RLO == 0) thengoto ETIQUETA
Primeraconsulta (/ER=0) Ejemplos (2/2) OB1-A OB1-B • //… • UX2 • ZV Z1 • // Ec. activación • L Z1 • L 3 • >=I • U X2 • SPB_MA • U X2 • SX1 • R X2 • SPAFIN • _MA:NOP0 • U X2 • SX15 • R X2 • FIN:NOP0 • //… • UX2 • ZV Z1 • // Ec. activación • L Z1 • L 3 • >=I • U X2 • S X15 • R X2 • U <0 • U X2 • SX1 • RX2 • //… S0 1 S1 C<3 2 C=C+1 C>=3 15 Salto condicionado a que RLO = 1 Salto incondicional
Operaciones aritméticas (1/3) • Dos operandos implícitos en acumuladores A1, A0, OV, OS ACU2 <OPERADOR> ACU1 ACU1 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)
Operacionesaritméticas (2/3) • Reglasgeneralesparabiestables A0 y A1 A1=0 y A0=0 : ACU1 = 0 A1=1 y A0=0 sin desbordamiento: ACU1 > 0 A1=0 y A0=1 sin desbordamiento : ACU1 <0 VALOR ACU1 EN RELACIÓN CON 0 A1=1 y OV=1 : desbordamiento por arriba de ACU1 A0=1 y OV=1 : desbordamiento por debajo de ACU1 A1=1 y A1=1 : excepción división por cero, tipado incorrecto etc. OVERFLOW
Ejemplos L -8 L 6 +I//ACU1-L=-2, A1=0, A0=1 (sin desbordamiento) L 2 L 6 /I//ACU1-L=0, ACU1-H=2, A1=1, A0=0 (sin desbordamiento) L 1000 L 100 *I//ACU1=100000, OV=1, OS=1, A1=1, A0=0 L 1000 L 100 *I//OS=1, OV=1 L 200 L 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 ACU1 <OPERADOR> REAL REAL ABS SQR SQRT EXP LN SIN COS TAN ASIN ACOS ATAN… L9.0E10 SQR UN OV SPBOK SPA FIN OK:T MD10 FIN: NOP 0 EJERCICIO: Interprete cada instrucción del código siguiente
Recapitulación: biestables A1 y A0 A1, A0ACU1 A0ACU1, A1ACU2
OB1 L MW10L MW12UWT MW14 Operaciones con conjuntos de var. lógicas ACU2 OPERADOR ACU1 ACU1 DOS ARGUMENOS IMPLÍCITOS: ACU1 y ACU2
Memoria Ejemplo: flancosimultáneo de 32 variables Flanco positivo ¿Flanconegativo? L MD 100 L ED 10 XOD L ED 10 UD T MD 10 L ED 10 T MD 100 L MD 100 L ED 10 XOD L MD 100 UD T MD 10 L ED 10 T MD 100 ACU1: valores distintos entre marcas de flanco y entradas ACU1: entradas con valor lógico 1 distintas de marcas de flanco
MD 1 Aplicación al grafcet (1/2) • Activación simultánea de etapas ¿Ecuación de activación? U “X0” U “S1” SPBNNOAC //Activación LDW#16#FFFFFFFF TMD 1 R“X0” NOAC: NOP 0 U“X0” U“S1” L DW#16#FFFFFFFF TMD 1 R“X0” 0 S1 1 2 31 32 • Desactivación simultánea de etapas //Desactivación simultánea de 32 etapas L DW#16#0 T ETAPAS_CODIFICADAS_EN BITS_CONSECUTIVOS
M 0.0 OB100 OB100 OB102 OB102 SET S M0.0 R Act.1 R Act.2 //… R Act.N • L MD 1 • L DW#16#0 • ==D • SPBN_001 • S M0.0 • L DW#16#0 • T MD1 • _001:NOP 0 • //… UN M1.0 UN M1.1 UN M1.2 //… S M0.0 R Act.1 R Act.2 //… R Act.N L MD 1 L DW#16#0 ==D S M0.0 R Act.1 R Act.2 //… RAct.N OB100 SET S M0.0 L DW#16#0 T MD1 MD1 Aplicación al grafcet (2/2) • Arranque / Rearme ARRANQUES(TRAS DESCONEXIÓN) ARRANQUES (DESDE CARCASA) 0 1 32 0