47
TEMA 1 EL MICROPROCESADOR MC68000 1

TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

TEMA 1

EL MICROPROCESADOR MC68000

1

Page 2: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

Indice1. INTRODUCCIÓN..................................................................................................................32. DESCRIPCIÓN INTERNA Y ORGANIZACIÓN DE DATOS........................................... 4

2.1 Tamaño de los operandos................................................................................................ 42.2 Descripción interna..........................................................................................................42.2.1 Registros de datos D0-D7.............................................................................................4

2.2.2 Registros de direcciones. A0-A6............................................................................. 52.2.3 Registro de pila (SP)................................................................................................ 62.2.4 Contador de programa (PC)..................................................................................... 62.2.5 Registro de estado.................................................................................................... 62.2.6 Registro de códigos de condición. CCR.................................................................. 7

2.3 Organización de datos en memoria..................................................................................83. FORMATO DE LAS INSTRUCCIONES............................................................................. 94. MODOS DE DIRECCIONAMIENTO................................................................................ 13

4.1 Direccionamiento implícito........................................................................................... 144.2 Direccionamiento inmediato..........................................................................................144.3 Modos de registro directo.............................................................................................. 15

4.3.1 Registro de datos directo........................................................................................154.3.2 Registro de direcciones directo.............................................................................. 15

4.4 Modos de direccionamiento de memoria.......................................................................164.4.1 Registro de direcciones indirecto...........................................................................164.4.2 Registro de direcciones indirecto con postincremento.......................................... 174.4.3 Registro de direcciones indirecto con predecremento........................................... 174.4.4 Registro de direcciones indirecto con desplazamiento.......................................... 184.4.5 Registro de direcciones indirecto con índice......................................................... 194.4.6 Direccionamiento absoluto.................................................................................... 20

4.4.6.1 Dirección absoluta corta.................................................................................204.4.6.2 Dirección absoluta larga.................................................................................21

4.5 Modos de direccionamiento relativos............................................................................224.5.1 Contador de programa con desplazamiento........................................................... 224.5.2 Contador de programa con índice.......................................................................... 23

4.6 Las instrucciones y sus modos de direccionamiento..................................................... 245. EL CONJUNTO DE INSTRUCCIONES DEL MC68000.................................................. 26 .................................................................................................................................................266. DESCRIPCIÓN FUNCIONAL EXTERNA........................................................................ 27

6.1 Bus de datos (D0-D15).................................................................................................. 276.2 Bus de direcciones (A1-A23)........................................................................................ 276.3 Control del bus asíncrono(/AS, R/#W,/UDS,/LDS,/DTACK)......................................28

6.3.1 Ciclo de lectura...................................................................................................... 296.3.2 Ciclo de escritura................................................................................................... 316.3.3 Conexión de chips de memoria al MC68000 ........................................................34

6.4 Control de arbitraje del bus........................................................................................... 356.5 Control de interrupciones.............................................................................................. 356.6 Control del sistema........................................................................................................ 36

6.6.1 Reintento del ciclo de bus...................................................................................... 376.6.2 Doble error de bus..................................................................................................38

6.7 Control de periféricos síncronos....................................................................................396.7.1 Operación de transferencia de datos...................................................................... 39

2

Page 3: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

6.8 Estado del procesador.................................................................................................... 407. PROCESOS DE EXCEPCIÓN............................................................................................ 40

7.1 Vectores de Interrupción................................................................................................417.3 Tipos de excepción........................................................................................................ 44

7.3.1 Excepciones internas..............................................................................................447.3.2 Excepciones externas ............................................................................................ 46

1. INTRODUCCIÓN

El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23líneas (constituyen la dirección física), A23-1, y un bus de datos de 16 bits, D15-0, con los que sepueden direccionar o seleccionar 8 Megapalabras de memoria. Aunque externamente sólo sedisponen de 23 líneas, internamente, las direcciones utilizan 24 bits (dirección lógica),existiendo el bit A0 que no aparece en las líneas del bus de direcciones como tal. El bit A0,externamente, se desdobla en dos líneas denominadas /UDS y /LDS. Estas líneas activas enbajo, permiten seleccionar el byte alto y el byte bajo de la palabra escogida por las líneas dedirecciones A23-1. De esta forma cuando /UDS=0 y /LDS=1, se selecciona el byte alto (el demayor peso de la palabra indicada por A23-1), si /UDS=1 y /LDS=0, se selecciona el byte bajode la palabra y si /UDS=/LDS=0, se selecciona la palabra completa. Por todo esto se puededecir que, el conjunto A23-0, identifica la dirección de uno de los dos bytes contenidos en lapalabra identificada por A23-1 . En modo byte, si se accede a una dirección par, se accede albyte más significativo (/UDS activo), y si la dirección es impar, se accede al byte menossignificativo (/LDS activo). En modo palabra, (/UDS y /LDS activos) se acceden a la palabracompleta, y la dirección debe ser un número par. Según desde el punto de vista desde el quese mire, este microprocesador puede direccionar 8 Mega palabras o 16 Megabytes.

3

A23-A1

&

&

A31

A23

A1A0

palabra/UDS

/LDS

DB15-DB0

MC68000

Page 4: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

2. DESCRIPCIÓN INTERNA Y ORGANIZACIÓN DE DATOS

2.1 Tamaño de los operandos

Los tamaños de los operandos se definen de la forma siguiente: un byte es igual a 8bits, una palabra es igual a 16 bits, y una palabra larga es igual a 32 bits. El tamaño deloperando usado por cada instrucción se encuentra explícitamente codificado en el código deoperación de la instrucción o implícitamente codificado por el tipo de instrucción. Todas lasinstrucciones explícitas manejan byte, palabra o palabra larga. Las instrucciones implícitassolo soportan un subconjunto de estos tres tamaños.

COD_OPERACION.N donde N es B para byte,W para word y L para long word

2.2 Descripción interna

En la siguiente figura se observa la estructura interna del MC68000 desde el punto devista del programador. Estase compone de 8 registros de datos (32 bits), 8 registros dedirecciones( 32 bits), el contador de programa( 32 bits) y el registro de estado (16 bits). ElMC68000 puede trabajar en uno de los modos siguientes: modo supervisor y modo usuario.En el modo supervisor el programador tiene control total sobre los registros e instruccionesdel microprocesador. En el modo usuario existen ciertas restricciones de funcionamiento quese irán detallando progresivamente.

2.2.1 Registros de datos D0-D7

Existen 8 registros de datos de 32 bits cada uno, cuyo fin es el de contener datos u operandosy que funcionan como si fueran 8 acumuladores. La información que se almacena en dichos

4

D0D1D2D3D4D5D6D7

31 16 15 8 7 0

PALABRA LARGA

PALABRA

BYTE

REGISTROS DE DATOS

REGISTROS DE DIRECCIONES

A0A1A2A3A4A5A6

PALABRA LARGA

PALABRA

A7 PUNTERO DE PILA DE SUPERVISORPUNTERO DE PILA DEL USUARIO

CONTADOR DE PROGRAMA

REG. ESTADOCCRBYTESISTEMA

Page 5: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

registros puede ser manejada como byte, palabra o palabra larga.

Esto es, cada registro de datos puede considerarse como:- Una palabra larga de 32 bits- Dos palabras de 16 bits cada una denominadas palabra alta y baja. Cuando se trabaja

en modo palabra, sólo se accede a la palabra baja, siendo en este caso, el bit 15, el bit designo de la palabra. Alguna instrucción que tenga como destino la palabra baja de un registrode datos, deja intacta la palabra alta del mismo.

- Cuatro bytes. En modo byte, se accede al byte bajo de la palabra baja, dejandointactos los restantes bits. En este caso el bit de signo es el bit 7 del registro de datos.

Las operaciones sobre los registros de datos, por tanto, sólo afectan a los bitscorrespondientes al tamaño de la instrucción.

2.2.2 Registros de direcciones. A0-A6

Con estos 7 registros de 32 bits, el microprocesador puede acceder a diferentesposiciones de memoria. A diferencia de los registros de datos, estos no pueden trabajar enmodo byte, sólo admiten el modo palabra o el de palabra larga. Si el contenido de alguno deestos registros actúa como operando fuente de una instrucción, esta puede manejar el tamañopalabra o palabra larga. Si una instrucción utiliza, como operando destino, uno de estosregistros, puede manejar, también, los tamaños palabra y palabra larga, pero, en cualquiercaso, siempre se modificarían los 32 bits del registro destino. Si una instrucción introduce unoperando de tamaño palabra en un registro de dirección, este se depositaría en la palabra bajadel mismo pero, la palabra alta, se modificaría por el efecto de la extensión de signo queproduce el copiado del bit de signo de la palabra baja (bit 15), en todos los bits de la palabraalta.

Los registros de direcciones se utilizan para acceder a las diferentes posiciones dememoria, por tanto su valor debe estar de acuerdo con las diferentes longitudes de los datos.Si, por ejemplo, se accede a una posición de memoria en busca de un dato de tamaño byte, elregistro de direcciones puede contener cualquier valor (par o impar), pero si se accede a

5

D0D1D2D3D4D5D6D7

31 16 15 8 7 0

PALABRA LARGA

PALABRA

BYTE

REGISTROS DE DATOS

REGISTROS DE DIRECCIONES

A0A1A2A3A4A5A6

PALABRA LARGA

PALABRA

Page 6: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

posiciones de memoria en busca de operandos de tamaño palabra o de palabra larga, elcontenido de estos registros debe ser par.

Las operaciones con los registros de direcciones no afectan al Registro de Códigos deCondición (CCR) del Registro de Estado (SR).

2.2.3 Registro de pila (SP)

El registro de direcciones A7 actúa como puntero de pila y, en realidad, está formadopor dos registros denominados:

- USP : Puntero de Pila del Usuario– SSP : Puntero de Pila del Supervisor

Como se mencionó con anterioridad, el MC68000 puede trabajar en modo usuario(forma habitual), y en modo supervisor si se dan ciertas condiciones internas. Cada modo defuncionamiento dispone de su propia pila y los registros USP o SSP, son sus punteros de pila.Es decir, en modo usuario, cualquier referencia a memoria que se realice con el registro A7accede a aquella zona de la memoria en la que se encuentra la pila de usuario, mientras que,cualquier referencia de A7 con el microprocesador en modo supervisor, accederá a la zonadonde está la pila del supervisor. En cualquier caso, los punteros siempren direccionan elúltimo dato almacenado en la pila, se decrementan cuando se guardan datos en ella (escritura)y se incrementan cuando se sacan (lectura).

2.2.4 Contador de programa (PC)

Es un registro de 32 bits de los cuales sólo se usan los 24 bits menos significativos ycontiene la dirección de memoria donde se encuentra la siguiente instrucción a ejecutar.

2.2.5 Registro de estado

Consta de 2 bytes: byte de sistema y byte de usuario (también llamado registro decódigos de condición o, simplemente, CCR).

6

A7 PUNTERO DE PILA DE SUPERVISORPUNTERO DE PILA DEL USUARIO

Page 7: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

2.2.6 Registro de códigos de condición. CCR

Está formado por 8 bits, de los cuales los tres bits más significativos son siempreceros. Los cinco restantes reflejan el resultado de las operaciones realizadas.

X: Extensión. Se trata de un bit de acarreo para operaciones de múltiple precisión y rotación.Por lo general toma el mismo valor que C pero hay instrucciones que modifican C y noafectan a X.

N: Signo. Se pone a 1 cuando el resultado de una operación es negativo y a 0 cuando elresultado es positivo o, dicho de otra forma, este bit es igual que el bit más significativo delresultado.

Z: Cero. Se pone a 1 cuando el resultado de una operación es cero y, a 0, si el resultado esdistinto de cero.

V: Desbordamiento. Se pone a 1 cuando hay un desbordamiento en las operaciones denúmeros con signo.

C: Acarreo. Se pone a 1 cuando se genera acarreo en las operaciones aritméticas de suma yresta y las operaciones de desplazamiento.

Byte del Sistema. Es el byte más significativo del registro de estado SR. Su contenido sepuede leer y modificarse cuando se trabaja en modo supervisor. Sólo se emplean 5 de sus 8bits.

T: Modo traza. Cuando este bit vale 1, el MC68000 ejecuta el programa paso a paso. Sólo sepuede poner a 1 en modo supervisor

7

Page 8: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

S: Supervisor. Indica el modo de funcionamiento del microprocesador. Si S vale 1, indicaque se está en modo supervisor y, si vale 0, en modo usuario.

I2-I0: Máscara de interrupciones. Con estos 3 bits se puede fijar el nivel de prioridad deuna interrupción. Los dispositivos externos pueden solicitar una interrupción del programacon un nivel de prioridad comprendido desde el 7 (máxima prioridad) hasta el 1 (mínimaprioridad). Por norma general, la máscara fija el nivel mínimo de la interrupción que seráatendida. Si el nivel solicitado es mayor que el fijado en la máscara, la interrupción seatiende, en caso contrario, no, a excepción del nivel 7, que se corresponde con unainterrupción no enmascarable. Si la máscara I2-I0 fija el nivel 7 y se produce una transiciónen las entradas de interrupción que genere una petición final de nivel 7, el MC68000 aceptarádicha petición.

2.3 Organización de datos en memoria

Los bytes son direccionados individualmente, siendo el byte de mayor peso de lapalabra el que tiene la dirección par, mientras que el byte menos significativo es el que tienela dirección impar (big-endian). Los datos de tipo palabra se encuentran ocupando lasdirecciones pares, por lo que si una palabra tiene la dirección n, la siguiente tiene la direcciónn+2. Las palabras largas ocupan dos palabras en memoria. Si una palabra larga tiene ladirección base n, la siguiente palabra tiene la n+4. De la palabra larga la palabra mássignificativa es la que ocupa la posición n, mientras que le menos, ocupa la posición n+1.

MODOS DE DIRECCIONAMIENTO

8

Page 9: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

3. FORMATO DE LAS INSTRUCCIONES

Una instrucción máquina del MC68000 puede contener entre una y cinco palabras.

La primera palabra se denomina PALABRA DE OPERACIÓN (OW), que siemprecontiene un campo que especifica el código de operación (OPCODE), un campo queespecifica el tamaño del operando, si este es necesario, y un campo denominadoDIRECCIÓN EFECTIVA (EA) que indica la localización de los operandos.

El resto de las palabras que componen la instrucción se denominan palabras de extensión(EW) y contienen información complementaria de los modos de direccionamiento de lainstrucción.

El campo EA (6 bits) de la OW, en caso de que aparezca, está formado por dos subcampos detres bits cada uno, llamados modo y registro, que codifican el modo de direccionamiento quese emplea para localizar el operando.

9

Page 10: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

EAMODO DE DIRECCIONAMIENTO MODO REGISTRO

Directo de registro de datosDirecto de registro de direcciones

000001

Número de registro (Dn)Número de registro (An)

Indirecto de registroIndirecto de registro con postincrementoIndirecto de registro con predecrementoIndirecto de registro con desplazamientoIndirecto de registro indexado con desplazamiento

010011100101110

Número de registro (An)Número de registro (An)Número de registro (An)Número de registro (An)Número de registro (An)

Absoluto cortoAbsoluto largo

111111

000001

Relativo a PC con desplazamientoRelativo a PC indexado con desplazamiento

111111

010011

Inmediato 111 100

El formato de la OW varía según el número de operandos de la instrucción y se tienen:

A) Instrucciones sin operandosB) Instrucciones con un operandoC) Instrucciones con dos operandosD) Instrucciones de bifurcación

A) INSTRUCCIONES SIN OPERANDOS

Son las menos comunes y su sintaxis en ensamblador es:

Codigo_op

Donde Codigo_op representa el Mnemónico del código de operación en ensamblador.Ejemplos:

RTS, NOP, RTE

El formato de la palabra de operación (OW) consta sólo del campo código de operación.

10

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0codigo de operacionOW

Page 11: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

B) INSTRUCCIONES CON UN OPERANDO

Su sintaxis en ensamblador es:

Codigo_op.tam op_destino

Donde Codigo_op representa el mnemónico del código de operación en ensamblador, tam eltamaño del operando (que puede ser B para byte, W para word o palabra, o L para long word opalabra larga) y op_destino representa el único operando de la instrucción.

Existen dos formatos de OW para este tipo de instrucciones:

El tipo (a) consta de tres campos:- código de operación( 8 bits)- tamaño ( 2 bits ) - EA del operando destino.

Ejemplos del tipo (a)

CLR.L D0, NOT.B D1, NEG.W D2

El tipo (b) es usado por instrucciones que sólo emplean un registro de datos como operando,por lo que sólo consta de dos campos:

- código de operación (13 bits)- registro (3 bits)

Ejemplos del tipo (b)

SWAP D3, EXT D1

C) INSTRUCCIONES CON DOS OPERANDOS

Son las más comunes. Su sintaxis es

Codigo_op.tam op_fuente , op_destino

11

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0codigo_op EA destino

modo registrotamaño

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0codigo de operacion registro

OW

OW

a)

b)

Page 12: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

Donde codigo_op representa el mnemotécnico del código de operanción en ensamblador, tamel tamaño de los operandos (B,W,L) op_fuente representa el operando fuente, y op_destino,representa el operando destino.

Existen tres formato de OW para este tipo de instrucciones

Tipo (a)

La instrucción usa dos campos de dirección efectiva para especificar la posición del operandofuente y el destino. Sólo la instrucción MOVE utiliza este formato

Tipo (b)

Este es el formato más común para instrucciones de dos operandos en las que, uno de ellos,está especificado por un registro y, el otro, por una dirección efectiva. Existe un campomodo_op que codifica el tamaño de los operandos y el destino de los mismos

Campo MODO_OPByte Palabra Doble pal. Operación000 001 010 <registro>OP<EA>registro100 101 110 <EA>OP<registro> EA

Ejemplos: ADD.B (A1),D0 ; CMP.W 8(A3),D0 ; ...Tipo (c)

Este formato lo emplean aquellas instrucciones en las que los operandos se encuentran en losregistros internos.

El campo modo_op especifica el tamaño de la operación y el tipo de registros que intervienen(datos o direcciones)

Dentro de las instrucciones de dos operandos existen unos formatos especiales, llamadosformatos CORTOS como son los asociados a las instrucciones ADDQ (suma rápida), SUBQ(resta rápida) y MOVEQ( movimiento rápido). En estas instrucciones, uno de los operandos

12

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

cod_opEA fuente

modo registrotamañoEA destino

modoregistroOW

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0cod_op EA fuente/destino

modo registromodo_opregistroOW

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0cod_op registromodo_opregistroOW

Page 13: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

es una pequeña constante que se codifica en la propia OW. Existen dos formatos cortos.

El primero corresponde a la instrucción MOVEQ (8 bits para codificar el dato) y el segundopara ADDQ y SUBQ (tres bits, del 1 al 8)

D) INSTRUCCIONES DE BIFURCACIÓN CONDICIONAL

Las instrucciones de bifurcación condicional, Bcc, tienen un formato especial, ya que la OWincluye un campo de desplazamiento y un campo de códigos de condición

4. MODOS DE DIRECCIONAMIENTO

El 68000 dispone de 14 modos de direccionamiento, siendo uno de los más potentesentre los microprocesadores de 16 bits y que dan lugar a una mayor simplicidad en larealización de los programas. Los modos de direccionamiento pueden clasificarse en:

- Direccionamiento implícito- Direccinamiento inmediato- Modos de registro directo- Modos de direccionamiento de memoria- Direccionamiento absoluto- Modos de direccionamiento relativos

Como veremos a continuación, alguno de estos grupos se subdividen en varios modos.

Los modos de direccionamiento asociados a las diferentes instrucciones vienencodificados en el propio código de instrucción en el campo dirección efectiva (EA). Lasiguiente figura representa el formato general de una palabra de instrucción con una únicadirección efectiva. Esta se encuentra constituida por dos campos de tres bits. Un campo sedenomina modo y, el otro, registro. Los valores del campo modo especifican los diferentestipos de direccionamiento, mientras que los valores del campo registro, seleccionan un

13

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0cod_op EA destino

modo registromodo_opdato

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0cod_op 0registro datoOW

OW

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0cod_op condicion desplazamientoOW

Page 14: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

registro en concreto. La dirección efectiva requiere, en muchas ocasiones, de informaciónadicional que se suministra en las palabras de extensión o EW que siguen al código deoperación.

4.1 Direccionamiento implícito

Este modo de direccionamiento está reservado para un determinado número deinstrucciones que no necesitan operandos para su ejecución. Para ellas sólo basta el código deoperación. Un ejemplo lo constituye la instrucción de STOP que pone, al microprocesador,en estado de parada. En general, las instrucciones que tienen este tipo de direccionamientopueden hacer uso de los registros del sistema (PC, punteros de pila y registro de estado) sinmencionarlos en el campo operando.

4.2 Direccionamiento inmediato

Es el modo de direccionamiento más sencillo y en el que, el dato referenciado por lainstrucción, se encuentra en una de las palabras de extensión que siguen a la OW de la propiainstrucción, es decir, el operando forma parte de la instrucción.

Este modo de direccionamiento se utiliza, principalmente, para inicializar loscontenidos de los registros (datos o direcciones) a un valor determinado o para incrementar suvalor.

El formato general de una instrucción que use este modo es:

CODOPER.N #DATO,OPERANDO_DESTINO

Ejemplo:

MOVE.W #$1234,D0

Esta instrucción carga la constante hexadecimal $1234 en los 16 bits menossignificativos del registro D0.

Como ya se ha mencionado, este modo de direccionamiento requiere de una o dospalabras de extensión, dependiendo del tamaño del dato. Si el tamaño especificado para eldato es de un byte, este se encuentra en el byte bajo de la palabra de extensión. Si el tamañoes de una palabra, el operando ocupa una palabra de extensión completa y si el tamaño es depalabra larga, el operando tiene dos palabras de extensión asociadas.

Algunas instrucciones utilizan ciertas variantes del modo inmediato: variante rápiday variante inmediata.

14

Page 15: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

4.3 Modos de registro directo

En este modo de direccionamiento el operando se encuentra en uno de los 16 registrosinternos del microprocesador, por tanto, existen dos posibilidades según se trate de unregistro de datos Dn, o de un registro de direcciones An.

4.3.1 Registro de datos directo

El operando está en el registro de datos especificado por la dirección efectiva. Elformato general de la instrucción es:

CODOPER.N Dn,OPERANDO_DESTINO

Ejemplo:

MOVE.L D1,D0

4.3.2 Registro de direcciones directo

En este caso el operando puede estar contenido en cualquier registro de direccionesAn especificado por la dirección efectiva. El formato general de la instrucción es

CODOPER.N An,OPERANDO_DESTINO

Ejemplo:

MOVE.L A0,D0

En este modo de operación sólo se pueden trabajar con operandos de tipo palabra ypalabra larga. Si un registro de direcciones actúa como operando destino, se modifican los 32bits del mismo siempre. Por tanto, en el caso de que se produzca una transferencia de 16 bits,se produce una extensión del bit de signo hacia los 16 bits más significativos del registro dedirecciones.

15

Page 16: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

4.4 Modos de direccionamiento de memoria

En la mayoría de las aplicaciones, los datos que se van a utilizar en el programa seencuentra en la memoria RAM. Cualquier dato u operando almacenado en la memoria estáperfectamente identificado a través de su dirección efectiva.

4.4.1 Registro de direcciones indirecto

Los registros de dirección sirven para contener las direcciones de memoria de losoperandos pero, estos, a su vez, pueden contener el propio operando (un puntero, porejemplo). Si el registro A5 tiene el valor 26000h se podrá decir que este contiene el operando26000h (que es una dirección) o que 26000h es la dirección de memoria donde está el dato alque se desea acceder. Para distinguir entre ambas situaciones se utilizará la nomenclatura deMotorola: si se escribe A5 se hace referencia al contenido del registro, es decir, la dirección26000h, pero si se escribre (A5), se hace referencia al operando que ocupa la posición dememoria 26000h. El primer caso utiliza el modo de registro directo y el último caso el modoregistro de direcciones indirecto.

El formato general de la instrucción es

CODOPER.N (An),OPERANDO_DESTINO

Ejemplo:

MOVE.W (A5),D1

Esta instrucción lleva el dato almacenado en la posición de memoria especificada porel registro A5 hacia el registro D1.

16

Page 17: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

4.4.2 Registro de direcciones indirecto con postincremento

En este modo, el operando se encuentra en la posición de memoria especificada por elregistro de direcciones. Una vez que se ha accedido al operando, el contenido del registro dedirecciones, automáticamente, se incrementa en 1,2 o 4 unidades en función de si el tamañodel operando al que se accede es de 1, 2 o 4 bytes. El formato general de la instrucción es

CODOPER.N (An)+,OPERANDO_DESTINO

Ejemplo:

MOVE.W (A0)+,D1

Esta instrucción carga en el registro D1 el contenido de la posición de memoriaapuntada por el registro A0. Al finalizar la operación se incrementa el registro A0 en dosunidades.

Este modo de direccionamiento es muy útil para trasladar los datos de una posición dememoria a otra.

4.4.3 Registro de direcciones indirecto con predecremento

El modo -(An) tanto en origen, en destino, o ambos, es el método más eficaz deacceder a posiciones de memoria consecutivas, barriendo la tabla desde el final hasta elprincipio. El formato general de la instrucción es

CODOPER.N -(An),OPERANDO_DESTINO

Ejemplo:

17

Page 18: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

MOVE.B -(A0),D1

Esta instrucción primero decrementa el contenido del registro A0, y después carga enel registro D1 el contenido de la posición de memoria de tamaño byte que es apuntada porA0.

4.4.4 Registro de direcciones indirecto con desplazamiento

Este modo requiere de una palabra de extensión detrás del código de operación. Ladirección del dato es la suma de la dirección contenida en el registro An y la constante de 16bits, extendida en signo, contenida en la palabra de extensión. En este modo el valor de An nocambia. El desplazamiento puede ser cualquier número con signo (-32768 a +32767), portanto se puede acceder a la memoria en un intervalo de 32 K bytes por encima o por debajo dela dirección especificada por An. El formato general de la instrucción es

CODOPER.N d16(An),OPERANDO_DESTINO

Ejemplo:

MOVE.L 12(A0),D0

18

Page 19: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

4.4.5 Registro de direcciones indirecto con índice

Este modo de direccionamiento requiere de una palabra de extensión con el siguienteformato:

D/A Registro W/L 0 0 0 Desplazamiento 15 14 13 12 11 10 9 8 7 0

BIT 15.- Indicador del registro índice: 0->Datos y 1-> DireccionesBITS 14-12.- Número del registro índiceBIT 11.- Tamaño del registro índice: 0-> Palabra baja del registro índice extendido ensigno; 1-> Palabra larga del registro índiceBITS 7-0.- Desplazamiento.

La dirección del operando se obtiene tras sumar el contenido del registro dedirecciones con la constante de 8 bits dada en la palabra de extensión y el contenido delregistro índice:

EA = An + Xn + d8.

El formato general de la instrucción sería:

CODOPER.N d8 (An,Xn.N), OPERANDO_DESTINO

Ejemplo:

MOVE.L $10(A0,A3.W),D0

19

Page 20: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

SCALE=1 en la figura anterior.

4.4.6 Direccionamiento absoluto

Este es uno de los direccionamientos más simples y usados en cualquier programa. Enla mayoría de los casos, los operandos se encuentran en posiciones de memoria cuyadirección absoluta es conocida y, en este modo de direccionamiento, precisamente, laspalabras de extensión contienen eso, las direcciones absolutas del operando.

Existen dos tipos:

4.4.6.1 Dirección absoluta corta

Este modo requiere de una palabra de extensión que contiene la dirección deloperando. Obsérvese que, para identificar la posición de memoria del dato, sólo se usa unapalabra de extensión, es decir, 16 bits. A todas luces, se necesitan 24 bits para acceder acualquier posición de memoria. Para ello, el microprocesador extiende el bit de signo de lapalabra de extensión, el número de veces necesarios para construir una dirección verdadera.Así, en este modo, se puede acceder a las direcciones de memoria que van desde la dirección000000h hasta la 007FFFh ( 32K bajos) si el bit de signo de la palabra de extensión es 0, y lasdirecciones comprendidas entre la FF8000 hasta la FFFFFFh (32K altos) si el bit de signo esun 1.

El formato general de la instrucción será:

CODOPER.N xxxx,OPERANDO_DESTINO

Ejemplo:

MOVE.W $10F8,D0

20

Page 21: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

La palabra contenida en la posición de memoria $0010f8 y siguiente se almacena en lapalabra baja del registro D0

4.4.6.2 Dirección absoluta larga

En este caso el operando precisa de dos palabras de extensión, pudiéndose acceder atodo el mapa de memoria, es decir, a los 16 Mbytes

El formato general de la instrucción será:

CODOPER.N xxxxxx.W,OPERANDO_DESTINO

Ejemplo:

MOVE.L $0010F8,D0

La palabra larga contenida en la posición de memoria $0010F8 y siguientestres, se almacena en el registro D0.

21

Page 22: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

4.5 Modos de direccionamiento relativos

En los modos indirectos o absolutos, los datos u operandos están almacenados enposiciones concretas de la memoria. En determinadas aplicaciones se requiere que unprograma funcione correctamente con independencia de la zona de memoria en la que éste secargue, lo que implica que, tanto el código, como los operandos, pueden estar, en zonas dememoria diferentes dependiendo de cuándo y cómo se han cargado estos en la memoria. Aeste tipo de programa se le denomina reubicable. En un programa reubicable, las referencias alos operandos que están en memoria se deben realizar de forma “relativa“ al contador deprograma y no a direcciones absolutas o estáticas.

4.5.1 Contador de programa con desplazamiento

Este modo de direccionamiento requiere una palabra de extensión. La dirección deloperando es la suma del contenido del contador de programa y la palabra de extensiónextendida en signo. Simbólicamente, se expresa como:

d16(PC)

La dirección efectiva del operando se calcula como EL=P+de. Evidentemente, derepresenta un número de 16 bits con signo, lo que nos ofrece un rango de 32Kbyrtes porencima o por debajo de la dirección en curso del contador de programa (P).

El formato general de la instrucción es:

CODOPER.N xxx.W,OPERANDO_DESTINO

Ejemplo:22

Page 23: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

MOVE.W $18(P),D0

Este modo de dirección sólo es válido para operandos fuente.

4.5.2 Contador de programa con índice

Este modo de direccionamiento requiere de una palabra de extensión con el siguienteformato:

D/A Registro W/L 0 0 0 Desplazamiento 15 14 12 11 10 9 8 7 0

BIT 15.- Indicador del registro índice: 0->Datos y 1-> DireccionesBITS 14-12.- Número del registro índiceBIT 11.- Tamaño del registro índice: 0-> Palabra baja del registro índice extendido ensigno; 1-> Palabra larga del registro índiceBITS 7-0.- Desplazamiento.

La dirección del operando es la suma del contenido del registro de direcciones, elentero de 8 bits dado en la palabra de extensión y el contenido del registro índice, que sepuede expresar como:

EL = P + Xi.N + d8.

El formato general de la instrucción sería:

ODOPER.N d8 (PC,Xn.N), OPERANDO_DESTINO

Ejemplo:

MOVE.L $10(PC,A0.W),D0

Al igual que en el modo anterior, este modo de direccionamiento sólo es válido paraoperandos fuente.

23

Page 24: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

SCALE=1 en la figura anterior.

4.6 Las instrucciones y sus modos de direccionamiento

En todos los modos de direccionamiento vistos, se ha utilizado la instrucción MOVE.Esta elección se debe a que ésta es una instrucción que admite prácticamente todos los modosde direccionamiento existentes para los operandos fuente y destino. No obstante, éste es uncaso que no se puede generalizar. Como norma general, cada instrucción del M68000 tan sólopermite un subconjunto particular de modos de direccionamiento para sus operandos. Existenalgunas clasificaciones que se basan en la forma en que se usan dichos modos y que sonempleadas por diversos manuales del MC68000. La más simple, clasifica los modos dedireccionamiento en cuatro categorías:

DATOS: Incluye los modos que pueden usarse para referirse a operandos de datos.Todos los modos de direccionamiento están incluidos en esta categoría, a excepcióndel modo directo a registro de direcciones que es el único que se refiere a operando dedirecciones.

MEMORIA: Incluye todos los modos que pueden usarse para referirse a operandos dememoria. El modo de direccionamiento de registro directo (direcciones o datos) nopertenece a esta categoría.

CONTROL: Incluye todos los modos que pueden usarse para referirse a operandos dememoria sin un tamaño asociado. Los modos de direccionamiento pertenecientes aesta categoría se usan en operaciones de control de programas como son saltos,llamadas a subrutinas, etc. ya que son operaciones sin tamaño de operando asociado.Los modos indirecto de registro con predecremento y postincremento y el inmediatono están incluidos.

ALTERABLE: Incluye todos los modos que pueden usarse para referirse a operandosmodificables. Un operando destino sólo puede usar los modos de direccionamientoincluidos en esta categoría. Los direccionamientos relativos al contador de programa yel direccionamiento inmediato no pertenecen a este grupo.

24

Page 25: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

Estas cuatro categorías representan numerosas excepciones por lo que resultan pocoútiles. En el siguiente cuadro se muestra una clasificación más compleja con un total de nuevecategorías de direcciones efectivas y la pertenencia o no de los distintos modos dedireccionamiento a cada una de ellas. Esta clasificación se deriva de la anterior y lascategorías que aparecen son combinaciones de las cuatro anteriores. Las categorías son lassiguientes:

EL: Dirección efectivaDEA: Dirección efectiva de datosMEA: Dirección efectiva de memoriaCEA: Dirección efectiva de controlAEA: Dirección efectiva alterableADEA: Dirección efectiva alterable de datosAMEA: Dirección efectiva alterable de memoriaACEA: Dirección efectiva alterable de control.

MODOS DE DIRECCIONAMIENTO CATEGORÍAS DE EL

EL DEA MEA CEA AEA ADEA AMEA

ACEA

DnAn

XX

X XX

X

(An)(An)+-(An)

de(An)d8(An,Ri.X)

XXXXX

XXXXX

XXXXX

X

XX

XXXXX

XXXXX

XXXXX

X

XX

XXXXXXXXXX

XX

XX

XX

XX

XX

XX

XX

XX

de(P)d8(PC,Ri.X)

XX

XX

XX

XX

#XXXXXXXX X X X

25

Page 26: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

5. EL CONJUNTO DE INSTRUCCIONES DEL MC68000

El 68000 tiene sólo 56 instrucciones que, combinadas con los 14 modos dedireccionamiento y los cinco formatos de datos, ofrece al programador una herramientapotente para el desarrollo de programas. Nuestro objetivo es mostrar aquellas instruccionesmás usuales y de carácter general, para simplificar el aprendizaje del juego. Hemos divididolas instrucciones en los siguientes grupos:

– Operaciones de movimiento de datos: MOVE, MOVEA, MOVEM, MOVEQ, EXG, LEA, PEA, SWAP, LINK y UNLNK

– Operaciones de aritmética entera: ADD, ADDA, ADDI, ADDQ, ADDX, CLR, CMP,CMPA, CMPI, CMPM, DIVU, DIVS, EXT, MULU, MULS, NEG, NEGX, SUB, SUBA,SUBI, SUBW , SUBX y CMP

– Operaciones lógicas: AND, ANDI, EOR, EORI, OR, ORI, NOT y TST

– Operaciones en BCD: ABCD, NBCD y SBCD

– Operaciones de desplazamiento y rotación: ASL, ASR, LSL, LSR, ROL, ROR, ROXL,ROXR y SWAP

– Operaciones de manipulación de bits: BTST, BSET, BCLR, BCHG

– Operaciones de control del programa: BRA, BSR, JMP, JSR, RTR, RTS, y NOP.

– Operaciones de control del sistema: RESET, RTE, STOP, TRAP, TRAPV, CHK, ..

(Ver tabla resumen)

26

Page 27: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

6. DESCRIPCIÓN FUNCIONAL EXTERNA

En la siguiente figura se ha representado el conjunto de pines del microprocesador MC68000de Motorola.

6.1 Bus de datos (D0-D15)

Es un bus triestado formado por 16 líneas bidireccionales. Se utiliza paratransmitir y recibir datos. Los tamaños de los datos definidos por Motorola abarcan 3 tipos:byte ( 8 bits), palabra ( 16 bits) o palabra larga (32 bits). Es evidente que para transmistir orecibir un dato de tipo palabra larga por este bus de datos se precisa de dos ciclos de lectura oescritura. Por otro lado si se transfiere un dato de tamaño byte sólo son necesarias 8 líneas deeste bus de datos.

6.2 Bus de direcciones (A1-A23)

Es un bus triestado unidireccional de 23 bits más A0, que se desdobla externamenteen /UDS y /LDS y, por tanto, con capacidad de direccionar 16 Mbytes. Se puede decir que elregistro de direcciones de memoria (MAR) utilizado en este microprocesador tiene 24 bits,(A23-A0). Los 23 bits más significativos de este registro se conectan directamente a las líneas

27

Page 28: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

de salida del mismo nombre, mientras que el bit A0, se desdobla en las dos líneas de salidaanteriormente citadas. Tanto /UDS como /LDS son activas en bajo. Si A0=0, se activa la línea/UDS habilitando los 8 bits de más peso del bus de datos, indicando que se trata de unadirección par. Si A0 = 1, se activa la línea /LDS, habilitando los 8 bits de menos peso del busde datos, e indicando que se trata de una dirección impar. Cuando se direcciona una palabra,se activan ambas líneas /UDS y /LDS.

6.3 Control del bus asíncrono(/AS, R/#W,/UDS,/LDS,/DTACK)

Este bloque esta constituido por cuatro líneas de salida más una de entrada que sirven paracontrolar la transferencia de datos por el bus de datos.

Habilitación de direcciones (/AS)

Es una línea triestado de salida, activa en nivel bajo y mediante la cual la CPUinforma que la dirección existente en el bus de direcciones es válida. Normalmente los driversque controlan las líneas del bus de direcciones tienen unos tiempos de propagación quedifieren de una línea a otra, por tanto la utilidad de /AS está en la de asegurar, al exterior, queha pasado el tiempo suficiente para que se hayan estabilizado los valores lógicos de las líneasdel bus de direcciones.

Lectura/Escritura (R/#W)

Esta línea triestado indica el sentido del flujo de información en el bus de datos. Si elciclo es de lectura, R/#W = 1, el bus recoge información hacia el microprocesador. Si el cicloes de escritura, R/#W = 0, por el bus circula información procedente del microprocesadorhacia la memoria o periférico.

Habilitación de datos parte alta y parta baja (/UDS y /LDS)

Son líneas de salida triestado, que junto con R/#W controlan el flujo de informaciónen el bus de datos. Cuando se trabaja con datos de tipo byte, indican por qué parte del bus,parte alta (D15-D8) o parte baja (D7-D0) se realiza la transferencia del dato. Si A0=0, se

28

Page 29: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

accede a una dirección par y /UDS está activa(/UDS=0 y /LDS=1). Si A0=1, se accede a unadirección impar y /LDS está activa (/UDS=1 y /LDS=0).

Si se accede a datos de tipo palabra, el bit A0 no tiene sentido, ya que en este caso se trabajacon todo el bus de datos, entonces /UDS=/LDS=0.

Reconocimiento de transferencia de datos (/DTACK)

Es una línea de entrada, activa en nivel bajo, que indica que la transferencia del datoya ha sido realizada. Durante un ciclo de lectura, cuando /DTACK=0, se captura el dato ytermina el ciclo de lectura. Durante un ciclo de escritura, si /DTACK=0, el dato ya ha sidoescrito y termina el ciclo de escritura. En definitiva, esta señal permite configurar la velocidadde trabajo de la CPU con la memoria y los periféricos que controla.

Podemos definir los siguientes ciclos de bus en el MC68000

Ciclo de lectura Ciclo de escritura

6.3.1 Ciclo de lectura

Durante un ciclo de lectura, el procesador recibe 1 o 2 bytes de datos por el bus

Si la instrucción especifica un tamaño de operando de palabra o palabra larga, #UDS y #LDSse activan simultáneamente para permitir el uso de las 16 líneas del bus de datos

Para operandos de tamaño palabra larga se requieren dos ciclos de lectura

Cuando el operando a leer es de tamaño byte, entonces A0 determina por qué parte del bus elprocesador recibe dicho byte, activando #UDS (y dato por D15-D8) para las direcciones paresy activando #LDS (y dato por D7-D0) para las impares.

29

Page 30: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

Para el ciclo de lectura se definen ocho estados. Cada estado se corresoponde con un nivellogico de la señal de reloj del procesador:

ESTADO 0 (S0): En este estado se inicia el ciclo de lectura. El procesador sitúa los valoresdel código de función en las salidas FC2-0 y pone a 1 la salida R/#W

ESTADO 1 (S1): En este estado, el procesador coloca la dirección válida en el bus dedirecciones

ESTADO 2 (S2): En el flanco ascendente de S2, el procesador activa la salida #AS y loshabilitadores de bus #UDS, #LDS en función del tamaño del dato y la dirección donde estese ubique (par o impar)

ESTADO 3 (S3): Durante este estado no se alteran ninguna señal

ESTADO 4 (S4): Durante este estado el procesador espera la señal de terminación del ciclomediante la recepción de un 0 por su entrada #DTACK o por la activación de #BERR o de#VPA. (Si se activa esta última comienza un ciclo especial de lectura). Si no se recibeninguna señal por estas entradas antes del flanco de bajada de S4, el procesador insertaestados de espera(ciclos de reloj completos) hasta que #DTACK,#BERR o #VPA se activen.

ESTADO 5 (S5): Durante este estado no cambia ninguna señal del bus

ESTADO 6 (S6): En este estado los datos del dispositivo son mantenidos en el bus de datos

ESTADO 7 (S7): En el flanco de bajada del estado 7, el procesador captura los datos del busy desactiva #AS,#UDS y/o #LDS en el flanco de subida de S7, colocando al final de S7 el busde direcciones en alta impedancia. Por su parte, el dispositivo externo debe haber retirado#DTACK o #BERR durante este tiempo.

30

Page 31: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

6.3.2 Ciclo de escritura

31

Direccionamiento del dispositivo1) Pone R/#W a 1(S0)2) Coloca el codigo de funcion(FC2-0)(S0)3) Coloca direccione en A23-A1 (S1)4) Activa #AS(S2)5) Activa #UDS y/o #LDS(S2)

Introduccion de datos1) Decodificacion de direccion2) Coloca el dato en D15-D8 y/o D7-D0(dependiendo de #UDS y #LDS)3) Activa #DTACK(no SW si en S4) Adquisicion de datos

1) Almacena datos(fin S6)2) Desactiva #UDS y #LDS(S7)3) Desactiva #AS(S7) Termina ciclo

1) Retira el dato de D15-D8 y/o D7-D02) Desactiva #DTACK

MC68000Dispositivo externo (memoria o perifericos)

Page 32: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

Durante un ciclo de escritura, el procesador manda bytes de datos hacia la memoria o algúndispositivo periférico.

Si la instrucción especifica un operando de tamaño palabra, el procesador activa #UDS y#LDS para habilitar las 16 líneas del bus de datos. Si el operando es de tamaño byte, enfunción de A0 se activará #UDS o #LDS

En el ciclo de escritura se definen ocho estados:

ESTADO 0 (S0): En este estado se inicia el ciclo de lectura. El procesador sitúa los valoresdel código de función en las salidas FC2-0 y pone a 1 la salida R/#W

ESTADO 1 (S1): En este estado, el procesador coloca la dirección válida en el bus dedirecciones

ESTADO 2 (S2): En S2, el procesador activa la salida #AS y pone R/#W a 0.

ESTADO 3 (S3): Durante este estado el bus de datos sale de su estado de alta impedanciapara mostrar el dato que será escrito.

ESTADO 4 (S4): En el flanco ascendente de S4, el procesador activa #UDS o/y #LDS.Además, durante este estado el procesador espera la señal de terminación del ciclo mediantela recepción de un 0 por su entrada #DTACK o por la activación de #BERR o de #VPA. (Sise activa esta última comienza un ciclo especial de escritura). Si no se recibe ninguna señalpor estas entradas antes del flanco de bajada de S4, el procesador inserta estados de espera(ciclos de reloj completos) hasta que #DTACK,#BERR o #VPA se activen.

ESTADO 5 (S5): Durante este estado no cambia ninguna señal del bus

ESTADO 6 (S6): Durante este estado no cambia ninguna señal del bus

ESTADO 7 (S7): En el flanco de bajada del estado 7, el procesador desactiva #AS,#UDS y/o#LDS y en el flanco de subida de S7, pone el bus de direcciones en alta impedancia y R/#W a1. Por su parte, el dispositivo externo debe haber retirado #DTACK o #BERR durante estetiempo.

32

Page 33: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

33

Direccionamiento del dispositivo1) Coloca el codigo de funcion(FC2-0)(S0)2) Coloca la direccion en A23-A1 (S1)3) Activa #AS(S2)4) Pone R/#W a 0(S2)5) Coloca datos en D15-8 o/y D7-0 (S3)5) Activa #UDS y/o #LDS(S4) Introduccion de datos

1) Decodificacion de direccion2) Captura el dato de D15-D8 y/o D7-D0(dependiendo de #UDS y #LDS)3) Activa #DTACK(no SW si en S4) Adquisicion de datos

1) Desactiva #UDS y #LDS(S7)2) Desactiva #AS(S7)3) Retira datos del bus (fin S7)4) Pone R/#W a 1 (fin S7) Termina ciclo

1) Desactiva #DTACK

MC68000Dispositivo externo (memoria o perifericos)

Page 34: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

6.3.4 Conexión de chips de memoria al MC68000

En este apartado analizaremos la estructura de conexión entre el microprocesadorMC68000 y la memoria. Supongamos que deseamos obtener un mapa de memoria con 64Kde ROM que ocupe las direcciones más altas y 64K de RAM las más bajas. Se dispone dememorias de 32Kx8.

Conectamos las 15 líneas menos significativas del bus de direcciones delmicroprocesador A15-A1 al bus de direcciones de los dispositivos de memoria. Las líneasmás significativas me permiten decodificar o seleccionar los distintos elementos de memoria.En concreto, para seleccionar la memoria ROM, A23-A16=1-1, y para seleccionar la RAM,A23-A16=0-0. Por tanto, /CSROM = /A23+...+/A16 y /CSRAM = A23 + ... + A16. (Hemossupuesto que las señales de selección son activas en bajo). En la siguiente figura se harepresentado la conexión de la memoria ROM. Utilizamos dos memorias ROM de 32K8, unade las cuales se conecta a los 8 bits más significativos del bus de datos y la otra a los 8 bitsmenos significativos. Hemos considerado que las memorias tienen líneas de selección /CS yhabilitadores de salida /OE.

Si /AS=0,R/#W=1,/CSROM=0, los habilitadores de chip /CS=0 están activos. Enfunción de A1-A15 y /LDS, /UDS, se accederá al dato correspondiente. Si es de tipopalabra, /UDS=/LDS=0, y las dos memorias ROM vuelcan su contenido en el bus de datos. Sise accede a un dato de tipo byte, /LDS o /UDS determinan la memoria que vuelva sucontenido.

Una estructura similar aparecerá en la selección de la memoria RAM, en cuyo casoadquiere sentido la línea de lectura/escritura.

Por último, recordamos que es misión de la circuitería externa la activación de la líneade /DTACK, para conseguir la correcta transferencia de información en los ciclos de lectura yescritura. Esta señal dependerá de la rapidez de respuesta de los dispositivos externos. Si porejemplo tenemos memorias lentas, DTACK debe activarse cuando estas hayan colocado su

34

Page 35: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

contenido en el bus o cuando ya se haya escrito la información en las mismas. Un posibleesquema de un circuito que permite la generación de esta señal se puede basar en un contadorque se incrementa en cada ciclo de reloj CLK del microprocesador. La salida de CY, se utilizapara generar esta señal, de forma que está se activa cuando el contador ha pasado un tiempoigual al módulo del mismo multiplicado por el periodo de la señal de reloj. El módulo delcontador deberá escogerse en función de las características temporales de la memoria yperiféricos, de forma que la activación del Cy del contador asegure los tiempos de lectura yescritura de estos periféricos externos. Otro posible esquema los da la utilización de circuitosde tiempo o multivibradores, que a partir de la activación de la señal /AS, genera un pulsopasado un determinado tiempo. Este tiempo puede ser programado por un resistencia y uncondensador. No obstante, para memorias cuyo ciclo de lectura o escritura sea comparable omenor con los ciclos de lectura o escritura del 68000, la propia lógica combinacional quehabilita el acceso a las memorias se puede utilizar como señal /DTACK.

6.4 Control de arbitraje del bus

Estas señales permiten el dialogo entre el microprocesador y otros controladores existentes enel sistema para determinar quién será el maestro del bus y por tanto quién tendrá acceso a lamemoria del sistema.

#BR: Bus Request. Esta línea de entrada indica al microprocesador que existe un controladorexterno que solicita ser el controlador del bus para acceder a la memoria.

#BG: Bus Grant. Esta línea de salida indica a posibles controladores externos que elmicroprocesador cede el bus cuando termine el ciclo de bus actual.

#BGACK: Bus Acknowledge. Esta entrada indica al micoprocesador que un dispositivoexterno controla ahora el bus. Cuando el controlador termine, desactiva esta entrada y elmicroprocesador se hace cargo nuevamente del bus.

6.5 Control de interrupciones

35

Page 36: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

Las entradas #IPLx codifican el nivel de petición de interrupción. El nivel 0, #IPLx(x=0,1,2)=1 indica que no hay interrupción, y el nivel 7, #IPLx(x=0,1,2)=0 indica la interrupción demayor prioridad y que no es enmascarable.

Estas señales deben permanecer sin modificarse hasta que el microprocesador inice el ciclo derecnonocimiento de interrupciones ( o FC0-FC2 pasen a nivel alto), para así asegurar que lainterrupción será reconocida. El nivel de interrupción que puede atender el microprocesadorviene fijado por los bits I0,I1,e I2 del SR. Si el nivel de petición de interrupción es de mayorprioridad que el fijado por la máscara, se atenderá la petición.

Cuando se acepta una interrupción se procede al ciclo de reconocimiento deinterrupciones que se estudiará más adelante.

6.6 Control del sistema

#BERR. Bus error. En una arquitectura típica, en la que se requiere el intercambio deinformación con dispositivos externos, existe la posibilidad de que este intercambio noocurra. Por tanto, es necesario la existencia de una entrada que se active, por medio de unaelectrónica externa cuando transcurra un tiempo prefijado, sino se realiza el acceso aldispositivo externo. Esta entrada es /BERR y su activación informa al procesador de queexiste un problema en el ciclo de bus que actualmente se está ejecutando. Estos problemaspueden ser el resultado de:

1. Dispositivos que no responden2. Fallo de adquisición del número de vector de interrupción3. Alguna otra aplicación dependiendo del error.

El microprocesador tiene dos opciones cuando ocurre un error de bus: intentarrealizar otro ciclo de bus o directamente realizar un proceso de excepción.

El circuito externo que permite la activación de esta entrada del microprocesador debecontrolar la duración existente entre la activación de la línea /AS y la respuesta /DTACK. Siuna vez activa la señal /AS, la señal /DTACK no se ha activado pasado un tiempo máximo,este circuito debe activar la señal /BERR.

36

Page 37: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

El circuito de la figura recibe, como señal de reloj, la salida E del microprocesador.Esta salida es una señal periódica de frecuencia 10 veces menor que la frecuencia defuncionamiento del microprocesador. Cuando se inicia un ciclo de bus, la línea /AS se activa,esto provoca que el registro inhabilite el clear y que el primer biestable almacene un unocuando se reciba un flanco de subida por la línea E. Si /AS se encuentra activa durante cuatrociclos de E o, de forma equivalente, 40 ciclos del microprocesador, la línea /BERR seactivará. Sólo en el caso de que se realice correctamente el ciclo de bus en menos de 40ciclos, la línea /AS se desactivaría por lo que el registro se borraría.

6.6.1 Reintento del ciclo de bus

Si \BERR =0 durante un ciclo en el cual /HALT =0, se inicia una operación dereintento. El microprocesador termina el ciclo de bus y pone en alta impedancia los buses dedatos y direcciones. Esta situación permanece hasta que /HALT pase a 1, entonces elmicroprocesador reintenta el último ciclo de bus usando los mismos códigos de función,dirección y datos (para una operación de escritura).

Para que el microprocesador realice un reintento del ciclo de bus la señal /BERR debe haberpasado a 1 al menos un ciclo de reloj antes de que /HALT lo hiciera.

37

D1D2D3D4

CLKCLR

Q1Q1Q2Q2Q3Q3Q4Q4 /BERR

/AS

E

Page 38: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

6.6.2 Doble error de bus

Cuando ocurre un error de bus, el microprocesador comienza una excepción en la queguarda cierta información en la pila de supervisor. Si ocurre otro error de bus durante elproceso de excepción (antes de la ejecución de otra instrucción) el microprocesador para ycoloca la línea de \HALT a 0. Esto se reconoce como doble error de bus. Únicamentemediante un reset externo se puede sacar el microprocesador de este estado de parada.

#RESET: Esta es una línea bidireccional que actua a veces como entrada, y a veces comosalida. Como entrada, si se activa junto con HALT durante 10 ciclos de reloj o 10ms enpower-up, se produce la secuencia de inicialización en la que el microprocesador respondeleyendo el vector de reset de la tabla de vectores, que carga en el puntero de pila delsupervisor, lee el siguiente vector de la tabla para almacenarlo en el registro PC e inicializalos bits de interrupciones al nivel 7. Si se ejecuta la instrucción RESET esta línea actua comosalida poniendo a 0 el pin de RESET durante 124 ciclos de reloj. En este caso el procesadorestá intentando resetear el resto del sistema, mientras que no existe cambio del estado internodel procesador.

38

Page 39: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

#HALT: Una entrada en esta línea bidireccional provoca que el microprocesador pare elciclo del bus actual.

Esta línea actúa como salida cuando el procesador para de ejecutar instrucciones( como porejemplo cuando sucede un doble error de bus). De esta forma se avisan a los dispostivosexternos de que el microprocesador ha parado.

6.7 Control de periféricos síncronos

Estas señales sirven para manejar los dispositivos de entrada/salida asociados almicroprocesador MC6800.

E: Esta señal es la entrada de habilitación estándar de los periféricos del MC6800. Enrealidad es una señal de reloj cuya frecuencia es diez veces menor que la señal de reloj deentrada CLK del MC68000 (seis ciclos en nivel bajo y cuatro en alto). Esta salida se conectadirectamente a la entrada E de los perifericos y siempre está funcionando.

#VPA: Valid Peripheral Adress. Esta línea de entrada avisa al MC68000 de que estáseleccionando un periférico de la familia del MC6800 y que tiene que sinconizarse con laseñal E para poder acceder a él. Asimismo esta entrada también indica que elmicroprocesador debe utilizar la vectorización automática para atender interrupciones.

#VMA: Valid Memory Adress. Esta línea de salida indica al periférico que la dirección dememoria es válida y que el microprocesador está sincronizado con la señal E.

6.7.1 Operación de transferencia de datos

1) El procesador inicia un ciclo normal de escritura o lectura 2) La electrónica externa activa /VPA indicando que se está accediendo a un

39

Page 40: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

periférico síncrono3) El procesador espera hasta que la señal E pase a nivel bajo, entonces activa /VMA4) El periférico espera hasta que E se active, entoces transfiere los datos.

5) El procesador espera que E vuelva a 0 ( en un ciclo de lectura los dato son cargados),entonces desactiva primero /VMA y después /AS, /UDS y /LDS.

6) 6) Comienza un nuevo ciclo.

6.8 Estado del procesador

Estas salidas codifican el estado interno del procesador. La siguiente tabla resume los códigosasociados a los estados internos. Estas salidas son válidas cuando #AS está activa.

FC2 FC1 FC0 Tipo de ciclo0 0 0 Indefinido0 0 1 Datos de usuario0 1 0 Programa de usuario0 1 1 Indefinido1 0 0 Indefinido1 0 1 Datos de supervisor1 1 0 Programa de supervisor1 1 1 Reconocimiento de interrupciones

7. PROCESOS DE EXCEPCIÓN

Existen un gran número de situaciones en las cuales es necesario disponer demecanismos que permitan interrumpir la ejecución normal de una secuencia de instruccionespara pasar a atender, de forma inmediata, esa situación particular. Las excepciones puedendeberse a muchas causas diferentes y se clasifican en internas o externas según éstas seandebida a un error interno, una instrucción especial, o una señal procedente del exterior. Lasiguiente figura recoge una clasificación de las excepciones.

40

Page 41: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

7.1 Vectores de Interrupción

Cada excepción dispone de una posición de memoria que contiene su vector deexcepción, que no es más que una dirección, la dirección de memoria donde comienza larutina de servicio de la excepción. Cuando se produce una situación que provoca laexcepción, el MC68000 busca su vector correspondiente y, después de salvar en la pila losregistros PC y SR, bifurca a la rutina almacenada a partir de la dirección contenida en dichovector.

Se disponen de 255 vectores de excepción almacenados en la tabla de vectores deexcepción que ocupa la porción de la memoria RAM que comienza a partir de la dirección$000000. Todo vector de excepción tiene el tamaño de una doble palabra (4 bytes), adiferencia del vector de RESET que ocupa dos dobles palabras (8 bytes), por lo que la tablade vectores ocupa un total de 1Kbyte. Cada vector se identifica a través del número de vector(N). Usando este número de vector, el microprocesador determina la dirección donde seencuentra el vector mediante la operación 4*N que equivale a desplazar N dos posiciones ala izquierda insertando dos ceros por la derecha.

De estos 255 vectores, los 64 primeros (0 al 63) están preasignados, aunque puedensobreescribirse. Los demás vectores (192) quedan libres para ser asignados a dispositivosperiféricos como vectores de interrupción de usuario. El siguiente cuadro muestra elcontenido de la tabla de vectores de excepción.

41

Excepciones

Internas

Error deEjecucion

Division porceroViolacion deprivilegio

Emulador

InstruccionilegalError endireccion

Traza Instrucciónilegal

Externas

Reset Error de bus Peticion deinterrupcion

Autovector

Usuario (noautovector)

Page 42: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

NÚMEROVECTOR

DIRECCIÓN

DECIMAL HEX. ASIGNACIÓN

0 0 000 Reset: SSP inicial

- 4 004 Reset: PC incicial

2 8 008 Error de Bus

3 12 00C Error en dirección

4 16 010 Instrucción ilegal

5 20 014 División por cero

6 24 018 Instrucción CHK

7 28 01C Instrucción TRAP

8 32 020 Violación de privilegio

9 36 024 Traza

10 40 028 Emulador línea 1010

11 44 02C Emulador línea 1111

12 48 030 (No asignado, reservado)

13 52 034 (No asignado,reservado)

14 56 038 (No asignado, reservado)

15 60 03C Vector de interrupción no inicializado

16-23 64-92 040-05C (No asignado, reservado)

24 96 060 Interrupción espúrea

25 100 064 Autovector interrupción nivel 1

26 104 068 Autovector interrupción nivel 2

27 108 06C Autovector interrupción nivel 3

28 112 070 Autovector interrupción nivel 4

29 116 074 Autovector interrupción nivel 5

30 120 078 Autovector interrupción nivel 6

31 124 07C Autovector interrupción nivel 7

32-47 128-188 080-0BC Vectores instrucción TRAP

48-63 192-252 0C0-0FC (No asignado, reservado)

64-255 256-1020 1003FC Vectores de interrupción de usuario)

7.2 Secuencia de procesamiento de una excepción

La atención de una excepción debe cubrir los siguientes aspectos:

- La atención inmediata a la excepción, con interrupción, incluso, si la prioridad es

42

Page 43: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

alta, de la instrucción en curso.

- La bifurcación a la dirección correcta de comienzo de la rutina de servicio de laexcepción.

- El retorno correcto a la secuencia de instrucciones interrumpida, una vez finalizadala rutina de servicio.

Para conseguir estos objetivos, el procesamiento de una excepción por el MC68000transcurre en una secuencia de 4 pasos:

1. El registro SR se copia en un registro interno. Se desactiva el modo traza y se activael bit S por lo que el microprocesador entra en modo supervisor. Para excepcionesasociadas a peticiones de interrupción, o a RESET, se actualiza el valor de la máscarade interrupciones I2-I0.

2. Se determina el número de vector de excepción por lógica interna, si es uno de lospreasignados, o a partir de una búsqueda denominada "reconocimiento deinterrupción", si se trata de una interrupción de usuario. A partir del número de vectorse genera la dirección del vector de excepción.

3. Se salvan, en la pila del supervisor (SSP), los contenidos del contador de programaPC y del registro de estado SR. Primero se guarda PCH, seguido de PCL y SR.

1. Por último, el microprocesador carga en el registro PC el contenido del vector deinterrupción.

Después de esta secuencia, el procesador reanuda el ciclo normal de ejecución deinstrucciones pero, claro, en la dirección de comienzo de la rutina de tratamiento de laexcepción.

El retorno a la secuencia previa de instrucciones, una vez completada la rutina deexcepción, se realiza mediante la instrucción RTE que recupera de la pila el registro SR,después PCL y finalmente PCH. Tras la ejecución de RTE, el microprocesador reanuda el

43

Page 44: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

estado y la ejecución de instrucciones por el punto interrumpido.

7.3 Tipos de excepción

Los tipos de excepción mostrados en la tabla de excepción pertenecen a diferentesgrupos de prioridad y, aunque su procesamiento se realiza de la forma genérica descritaanteriormente, las acciones que toma el MC68000 antes de dar comienzo a dichoprocesamiento, y que determinan la urgencia con que es atendida la excepción, sonligeramente diferentes para cada uno de estos grupos. El siguiente cuadro muestra los tresgrupos de prioridad existentes desde el grupo 0, correspondiente a las excepciones deprioridad más alta y que deben ser atendidas de inmediato con interrupción, incluso, del ciclode bus actual, hasta los grupos 1 y 2 de menor prioridad que no obligan a adoptar medidas tandrásticas.

GRUPO Y PRIORIDAD TIPO DE EXCEPCIÓN ACCIÓN

0Alta

ResetError de BUS

Error en dirección

Se aborta el ciclo de bus actualdentro de 2 ciclos de reloj

1 TrazaInterrupción

Instrucción ilegalInstrucción no implementada

Violación de privilegio

Comienza el procesamiento de laexcepción cuando termina lainstrucción actual

Comienza el procesamiento de laexcepción cuando termina el ciclode bus actual

2Baja

TRAP, TRAPV,CHKDivisión por cero

Comienza el procesamiento de laexcepción cuando se ejecuta lainstrucción

7.3.1 Excepciones internas

El procesamiento de las excepciones generadas internamente sigue el esquema generaldescrito en el apartado de secuencia de procesamiento de interrupción, salvo en el caso deerror de dirección.

A) ERRORES DE EJECUCIÓN

-> Error en dirección.

Se produce cuando el MC68000 intenta a acceder a una palabra o a una palabra largacon una dirección impar. Una característica de esta excepción es que, además de losregistros PC y SR, en la pila se guarda cierta información adicional con el fin deayudar a la rutina de servicio a identificar la causa del error. Esta información incluyela primera palabra de la instrucción que produjo el error (tomada directamente delcontenido del registro de instrucción del procesador), la dirección en cuyo acceso deprodujo el error , y una palabra denominada de "super-estado" que indica:

- Si la operación era de lectura o de escritura- Si el procesador se encontraba procesando una instrucción o una excepción

44

Page 45: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

de los grupos 0 y 1- Los valores de las líneas de código de función FC2-0

-> Instrucción ilegal

El MC68000 detecta una instrucción ilegal si, al buscar la primera palabra de unainstrucción, encuentra que no contiene ninguno de los códigos de operación válidos desu repertorio de instrucciones. La excepción se trata como en el caso habitual, conbifurcación al vector número 4. La ejecución de la instrucción ILLEGAL tiene elmismo efecto.

-> Instrucción de emulación.

Si los códigos de operación encontrados son las combinaciones 1010 o 1111, entoncesse bifurca a los vectores 10 u 11, respectivamente. Estos códigos de operación hansido reservados para extender el juego de instrucciones del MC68000 medianteemulación. Pueden usarse instrucciones comenzando por uno de estos códigos queserán emuladas por el software de la rutina de servicio de la excepcióncorrespondiente.

-> Violación de privilegio

Se produce una violación de privilegio cuando se intenta ejecutar una instrucciónreservada al modo supervisor con el bit S=0, es decir, en modo usuario.

B) TRAZA

El modo traza se activa cuando se pone a 1 el bit T del registro de estado SR. En estemodo, denominado también "paso a paso", el procesador genera una excepción, convector de excepción número 9, después de ejecutar cada instrucción de una secuencia.Como parte del procesamiento de esta excepción, el MC68000 pone a 0 el bit T, conlo cual la rutina de servicio de la exepción se ejecuta en modo normal. Al retornar serecupera el valor de T de la pila.

C) INSTRUCCIONES TRAP,TRAPV,CHK45

Page 46: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

Estas tres instrucciones permiten generar una excepción directamente desde unainstrucción, es decir, en el punto exacto de la secuencia de código elegido por elprogramadr:

-> TRAP

Esta instrucción tiene el formato TRAP #numero_trap. Con numero_trap un entero de4 bits (0 al 15). El número de TRAP identifica uno de los 16 vectores de excepciónasignados a esta instrucción. Esta instrucción proporciona una vía para acceder arutinas genéricas almacenadas la memoria no volatil (llamadas a la BIOS) o en laimplementación de puntos de ruptura.

-> TRAPV

La instrucción TRAPV, situada inmediatamente después de una instrucción aritméticasusceptible de producir desbordamiento (que pueda poner el código de condiciónV=1), produce una excepción en caso de que se produzca ese hecho,

-> CHK

Esta instrucción compara el contenido de un registro con un límite superioralmacenado en un lugar especificado. Si el contenido del registro supera dicho límite,se produce la excepción. Puede resultar útil para comprobar, por ejemplo, antes delacceso a un elemento de una matriz, si el índice se encuentra dentro del rangoapropiado.

7.3.2 Excepciones externas

A) RESET

Cuando se produce una excepción por RESET se persiguen objetivos algo distintos alresto de las excepciones. En este caso no tiene sentido guardar los valores del PC y el SR enla pila porque no se desea volver a recuperar el estado del procesador.. Además, como sepretende inicializar el procesador, se carga también un valor inicial en el registro SSP ademásdel PC. Este último se carga con el vector de excepción 0 y, el registro SSP, con el vector deexcepción 1. En concreto el registro SR se inicializa de la forma siguiente:

1) Se desactiva el modo traza T=02) Se activa el modo supervisor: S=13) Se enmascaran todos los niveles de prioridad de interrupción: I2-I0=111

Cualquier sistema basado en el MC68000 debe disponer de un circuito capaz deactivar la línea RESET cuando se conecta la fuente de alimentación del sistema. El vector deexcepción 0 determina, por tanto, la dirección de comienzo del software de arranque delsistema y, tanto los vectores 0 y 1, como la propia rutina (boot), deben encontrarse enmemoria no volátil. Si alguno de estos dos vectores no se recupera correctamente, se producefallo de bus y el procesador se detiene activando la señal HALT.

46

Page 47: TEMA 1 EL MICROPROCESADOR MC68000€¦ · El microprocesador MC68000 de Motorola dispone de un bus de direcciones de 23 líneas (constituyen la dirección física), A23-1, y un bus

B) ERROR DE BUS

Ocurre cuando la electrónica externa activa la entrada #BERR. El procesamiento esidéntico al de error de dirección salvo que se usa el vector de interrupción 2. Si cuando seprocesa la excepción de error de bus, la entrada #BERR se activa (doble error de bus), el68000 para. En tal situación, sólo un RESET permite reanudar la ejecución de instrucciones.

C) INTERRUPCIONES

La activación de las entradas #IPLn codifica el nivel de petición de interrupción. Elnivel 0, #IPLn(n=0,1,2)=1 indica que no hay interrupción, y el nivel 7, #IPLn(n=0,1,2)=0indica la interrupción de mayor prioridad o interrupción no enmascarable. Estas señales debenpermanecer estables hasta que el microprocesador inice el ciclo de reconocimiento deinterrupciones.

El nivel de interrupción que puede atender el microprocesador viene fijado por los bitsI0,I1,e I2 del SR. Si el nivel de petición de interrupción es de mayor prioridad que el fijadopor la máscara, se atenderá la petición, en caso contrario, no, a excepción, como ya se hamencionado, para el nivel 7.

Cuando el MC68000 acepta una interrupción, se desencadenan los mismos procesosque los descritos para las excepciones, salvo que el número del vector de excepción seobtiene mediente un ciclo especial de lectura. Se salvan en la pila el contador de programa yel registro de estado, se activa el bit S, se desactiva el bit T, se actualizan los bits I2,I1,I0 alnivel de la interrupción peticionaria y se inicia el ciclo de reconocimiento de interrupción.

En el ciclo de reconocimiento de interrupción el MC68000 inicia un ciclo especial delectura en el que las salidas FC2,FC1,FC0 están todas a 1, y los bits A3,A2,A1 identifican elnivel de petición de interrupción que, el microprocesador, está procesando en ese momento.A partir de aquí pueden ocurrir varias cosas:

– Se activa la entrada #VPA que identifica que la interrupción fué solicitada por unperiférico síncrono. En tal caso, el microprocesador utiliza el autovector asociadoal nivel de interrupción actual.

– Se activa la entrada #DTACK que identifica el fin de un ciclo de lectura normal.En este caso, el periférico, además de activar esa señal, ha colocado, en el bus dedatos un byte que contiene un número de vector de excepción. Este número devector debe estar comprendido entre 64-255, constituyendo los vectores deexcepción de usuario.

– Se activa la entrada #DTACK pero se recibe, como número de vector, el $F. Estoda lugar a la interrupción no inicializada. Todos los periféricos del 68000 disponende un registro que contiene el vector de interrupción que se situá en el bus de datosen un ciclo de reconocimiento de interrupción. Dicho registro viene inicializado,por defecto, con el valor $F.

– Se activa la entrada #BERR. Esto indica que, en el ciclo de interrupción, el 68000no ha recibido ningún vector de interrupción, es decir, se ha producido un error debus. Esto provoca la generación de la interrupción espúrea, que tiene, comonúmero de vector de excepción, el 24.

47