Documentos de Académico
Documentos de Profesional
Documentos de Cultura
68000micro0405 PDF
68000micro0405 PDF
EL MICROPROCESADOR MC68000
1
Indice
1. INTRODUCCIÓN..................................................................................................................3
2. DESCRIPCIÓN INTERNA Y ORGANIZACIÓN DE DATOS........................................... 4
2.1 Tamaño de los operandos................................................................................................ 4
2.2 Descripción interna..........................................................................................................4
2.2.1 Registros de datos D0-D7.............................................................................................4
2.2.2 Registros de direcciones. A0-A6............................................................................. 5
2.2.3 Registro de pila (SP)................................................................................................ 6
2.2.4 Contador de programa (PC)..................................................................................... 6
2.2.5 Registro de estado.................................................................................................... 6
2.2.6 Registro de códigos de condición. CCR.................................................................. 7
2.3 Organización de datos en memoria..................................................................................8
3. FORMATO DE LAS INSTRUCCIONES............................................................................. 9
4. MODOS DE DIRECCIONAMIENTO................................................................................ 13
4.1 Direccionamiento implícito........................................................................................... 14
4.2 Direccionamiento inmediato..........................................................................................14
4.3 Modos de registro directo.............................................................................................. 15
4.3.1 Registro de datos directo........................................................................................15
4.3.2 Registro de direcciones directo.............................................................................. 15
4.4 Modos de direccionamiento de memoria.......................................................................16
4.4.1 Registro de direcciones indirecto...........................................................................16
4.4.2 Registro de direcciones indirecto con postincremento.......................................... 17
4.4.3 Registro de direcciones indirecto con predecremento........................................... 17
4.4.4 Registro de direcciones indirecto con desplazamiento.......................................... 18
4.4.5 Registro de direcciones indirecto con índice......................................................... 19
4.4.6 Direccionamiento absoluto.................................................................................... 20
4.4.6.1 Dirección absoluta corta.................................................................................20
4.4.6.2 Dirección absoluta larga.................................................................................21
4.5 Modos de direccionamiento relativos............................................................................22
4.5.1 Contador de programa con desplazamiento........................................................... 22
4.5.2 Contador de programa con índice.......................................................................... 23
4.6 Las instrucciones y sus modos de direccionamiento..................................................... 24
5. EL CONJUNTO DE INSTRUCCIONES DEL MC68000.................................................. 26
................................................................................................................................................. 26
6. DESCRIPCIÓN FUNCIONAL EXTERNA........................................................................ 27
6.1 Bus de datos (D0-D15).................................................................................................. 27
6.2 Bus de direcciones (A1-A23)........................................................................................ 27
6.3 Control del bus asíncrono(/AS, R/#W,/UDS,/LDS,/DTACK)...................................... 28
6.3.1 Ciclo de lectura...................................................................................................... 29
6.3.2 Ciclo de escritura................................................................................................... 31
6.3.3 Conexión de chips de memoria al MC68000 ........................................................34
6.4 Control de arbitraje del bus........................................................................................... 35
6.5 Control de interrupciones.............................................................................................. 35
6.6 Control del sistema........................................................................................................ 36
6.6.1 Reintento del ciclo de bus...................................................................................... 37
6.6.2 Doble error de bus..................................................................................................38
6.7 Control de periféricos síncronos....................................................................................39
6.7.1 Operación de transferencia de datos...................................................................... 39
2
6.8 Estado del procesador.................................................................................................... 40
7. PROCESOS DE EXCEPCIÓN............................................................................................ 40
7.1 Vectores de Interrupción................................................................................................41
7.3 Tipos de excepción........................................................................................................ 44
7.3.1 Excepciones internas..............................................................................................44
7.3.2 Excepciones externas ............................................................................................ 46
1. INTRODUCCIÓN
A31
A23-A1
A23
A1
A0
& /UDS
palabra
& /LDS
DB15-DB0
MC68000
3
2. DESCRIPCIÓN INTERNA Y ORGANIZACIÓN DE DATOS
D0 31 16 15 8 7 0
D1
D2 PALABRA LARGA
D3 REGISTROS
D4 PALABRA
DE DATOS
D5
D6 BYTE
D7
A0
A1 PALABRA LARGA
A2 REGISTROS DE
A3 PALABRA DIRECCIONES
A4
A5
A6
CONTADOR DE PROGRAMA
Existen 8 registros de datos de 32 bits cada uno, cuyo fin es el de contener datos u operandos
y que funcionan como si fueran 8 acumuladores. La información que se almacena en dichos
4
registros puede ser manejada como byte, palabra o palabra larga.
D0 31 16 15 8 7 0
D1
D2 PALABRA LARGA
D3 REGISTROS
D4 PALABRA
DE DATOS
D5
D6 BYTE
D7
Las operaciones sobre los registros de datos, por tanto, sólo afectan a los bits
correspondientes al tamaño de la instrucción.
A0
A1 PALABRA LARGA
A2 REGISTROS DE
A3 PALABRA DIRECCIONES
A4
A5
A6
5
posiciones de memoria en busca de operandos de tamaño palabra o de palabra larga, el
contenido de estos registros debe ser par.
Es un registro de 32 bits de los cuales sólo se usan los 24 bits menos significativos y
contiene la dirección de memoria donde se encuentra la siguiente instrucción a ejecutar.
6
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 siempre
ceros. Los cinco restantes reflejan el resultado de las operaciones realizadas.
Byte del Sistema. Es el byte más significativo del registro de estado SR. Su contenido se
puede leer y modificarse cuando se trabaja en modo supervisor. Sólo se emplean 5 de sus 8
bits.
T: Modo traza. Cuando este bit vale 1, el MC68000 ejecuta el programa paso a paso. Sólo se
puede poner a 1 en modo supervisor
7
S: Supervisor. Indica el modo de funcionamiento del microprocesador. Si S vale 1, indica
que 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 de
una interrupción. Los dispositivos externos pueden solicitar una interrupción del programa
con un nivel de prioridad comprendido desde el 7 (máxima prioridad) hasta el 1 (mínima
prioridad). 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 se
atiende, en caso contrario, no, a excepción del nivel 7, que se corresponde con una
interrupción no enmascarable. Si la máscara I2-I0 fija el nivel 7 y se produce una transición
en las entradas de interrupción que genere una petición final de nivel 7, el MC68000 aceptará
dicha petición.
MODOS DE DIRECCIONAMIENTO
8
3. FORMATO DE LAS INSTRUCCIONES
Una instrucción máquina del MC68000 puede contener entre una y cinco palabras.
El campo EA (6 bits) de la OW, en caso de que aparezca, está formado por dos subcampos de
tres bits cada uno, llamados modo y registro, que codifican el modo de direccionamiento que
se emplea para localizar el operando.
9
EA
MODO DE DIRECCIONAMIENTO MODO REGISTRO
Directo de registro de datos 000 Número de registro (Dn)
Directo de registro de direcciones 001 Número de registro (An)
Indirecto de registro 010 Número de registro (An)
Indirecto de registro con postincremento 011 Número de registro (An)
Indirecto de registro con predecremento 100 Número de registro (An)
Indirecto de registro con desplazamiento 101 Número de registro (An)
Indirecto de registro indexado con desplazamiento 110 Número de registro (An)
Absoluto corto 111 000
Absoluto largo 111 001
Relativo a PC con desplazamiento 111 010
Relativo a PC indexado con desplazamiento 111 011
Inmediato 111 100
Codigo_op
El formato de la palabra de operación (OW) consta sólo del campo código de operación.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OW codigo de operacion
10
B) INSTRUCCIONES CON UN OPERANDO
Codigo_op.tam op_destino
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OW codigo_op EA destino a)
tamaño
modo registro
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OW codigo de operacion registro b)
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:
Tipo (a)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OW cod_op tamaño EA destino EA fuente
registro modo modo registro
La instrucción usa dos campos de dirección efectiva para especificar la posición del operando
fuente y el destino. Sólo la instrucción MOVE utiliza este formato
Tipo (b)
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OW cod_op registro modo_op EA fuente/destino
modo registro
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 campo
modo_op que codifica el tamaño de los operandos y el destino de los mismos
Campo MODO_OP
Byte Palabra Doble pal. Operación
000 001 010 <registro>OP<EA>registro
100 101 110 <EA>OP<registro> EA
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OW cod_op registro modo_op registro
Este formato lo emplean aquellas instrucciones en las que los operandos se encuentran en los
registros internos.
Dentro de las instrucciones de dos operandos existen unos formatos especiales, llamados
formatos 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
es una pequeña constante que se codifica en la propia OW. Existen dos formatos cortos.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OW cod_op registro 0 dato
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OW cod_op dato modo_op EA destino
modo registro
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
OW cod_op condicion desplazamiento
4. MODOS DE DIRECCIONAMIENTO
- Direccionamiento implícito
- Direccinamiento inmediato
- Modos de registro directo
- Modos de direccionamiento de memoria
- Direccionamiento absoluto
- Modos de direccionamiento relativos
13
registro en concreto. La dirección efectiva requiere, en muchas ocasiones, de información
adicional que se suministra en las palabras de extensión o EW que siguen al código de
operación.
CODOPER.N #DATO,OPERANDO_DESTINO
Ejemplo:
MOVE.W #$1234,D0
Algunas instrucciones utilizan ciertas variantes del modo inmediato: variante rápida
y variante inmediata.
14
4.3 Modos de registro directo
CODOPER.N Dn,OPERANDO_DESTINO
Ejemplo:
MOVE.L D1,D0
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 y
palabra larga. Si un registro de direcciones actúa como operando destino, se modifican los 32
bits 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 de
direcciones.
15
4.4 Modos de direccionamiento de memoria
Los registros de dirección sirven para contener las direcciones de memoria de los
operandos pero, estos, a su vez, pueden contener el propio operando (un puntero, por
ejemplo). Si el registro A5 tiene el valor 26000h se podrá decir que este contiene el operando
26000h (que es una dirección) o que 26000h es la dirección de memoria donde está el dato al
que se desea acceder. Para distinguir entre ambas situaciones se utilizará la nomenclatura de
Motorola: si se escribe A5 se hace referencia al contenido del registro, es decir, la dirección
26000h, pero si se escribre (A5), se hace referencia al operando que ocupa la posición de
memoria 26000h. El primer caso utiliza el modo de registro directo y el último caso el modo
registro de direcciones indirecto.
CODOPER.N (An),OPERANDO_DESTINO
Ejemplo:
MOVE.W (A5),D1
16
4.4.2 Registro de direcciones indirecto con postincremento
CODOPER.N (An)+,OPERANDO_DESTINO
Ejemplo:
MOVE.W (A0)+,D1
Este modo de direccionamiento es muy útil para trasladar los datos de una posición de
memoria a otra.
CODOPER.N -(An),OPERANDO_DESTINO
Ejemplo:
17
MOVE.B -(A0),D1
Esta instrucción primero decrementa el contenido del registro A0, y después carga en
el registro D1 el contenido de la posición de memoria de tamaño byte que es apuntada por
A0.
Este modo requiere de una palabra de extensión detrás del código de operación. La
dirección del dato es la suma de la dirección contenida en el registro An y la constante de 16
bits, extendida en signo, contenida en la palabra de extensión. En este modo el valor de An no
cambia. El desplazamiento puede ser cualquier número con signo (-32768 a +32767), por
tanto se puede acceder a la memoria en un intervalo de 32 K bytes por encima o por debajo de
la 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
4.4.5 Registro de direcciones indirecto con índice
EA = An + Xn + d8.
Ejemplo:
MOVE.L $10(A0,A3.W),D0
19
SCALE=1 en la figura anterior.
Este modo requiere de una palabra de extensión que contiene la dirección del
operando. Obsérvese que, para identificar la posición de memoria del dato, sólo se usa una
palabra de extensión, es decir, 16 bits. A todas luces, se necesitan 24 bits para acceder a
cualquier posición de memoria. Para ello, el microprocesador extiende el bit de signo de la
palabra 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ón
000000h hasta la 007FFFh ( 32K bajos) si el bit de signo de la palabra de extensión es 0, y las
direcciones comprendidas entre la FF8000 hasta la FFFFFFh (32K altos) si el bit de signo es
un 1.
CODOPER.N xxxx,OPERANDO_DESTINO
Ejemplo:
MOVE.W $10F8,D0
20
La palabra contenida en la posición de memoria $0010f8 y siguiente se almacena en la
palabra baja del registro D0
CODOPER.N xxxxxx.W,OPERANDO_DESTINO
Ejemplo:
MOVE.L $0010F8,D0
21
4.5 Modos de direccionamiento relativos
d16(PC)
CODOPER.N xxx.W,OPERANDO_DESTINO
Ejemplo:
22
MOVE.W $18(P),D0
EL = P + Xi.N + d8.
Ejemplo:
MOVE.L $10(PC,A0.W),D0
Al igual que en el modo anterior, este modo de direccionamiento sólo es válido para
operandos fuente.
23
SCALE=1 en la figura anterior.
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ón
del modo directo a registro de direcciones que es el único que se refiere a operando de
direcciones.
MEMORIA: Incluye todos los modos que pueden usarse para referirse a operandos de
memoria. El modo de direccionamiento de registro directo (direcciones o datos) no
pertenece a esta categoría.
CONTROL: Incluye todos los modos que pueden usarse para referirse a operandos de
memoria sin un tamaño asociado. Los modos de direccionamiento pertenecientes a
esta 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 inmediato
no están incluidos.
ALTERABLE: Incluye todos los modos que pueden usarse para referirse a operandos
modificables. Un operando destino sólo puede usar los modos de direccionamiento
incluidos en esta categoría. Los direccionamientos relativos al contador de programa y
el direccionamiento inmediato no pertenecen a este grupo.
24
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 nueve
categorías de direcciones efectivas y la pertenencia o no de los distintos modos de
direccionamiento a cada una de ellas. Esta clasificación se deriva de la anterior y las
categorías que aparecen son combinaciones de las cuatro anteriores. Las categorías son las
siguientes:
Dn X X X X
An X X
(An) X X X X X X X X
(An)+ X X X X X X
-(An)
de(An) X X X X X X
d8(An,Ri.X) X X X X X X X X
X X X X X X X X
XXXX X X X X X X X X
XXXXXX X X X X X X X X
de(P) X X X X
d8(PC,Ri.X) X X X X
#XXXXXXXX X X X
25
5. EL CONJUNTO DE INSTRUCCIONES DEL MC68000
– 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 de desplazamiento y rotación: ASL, ASR, LSL, LSR, ROL, ROR, ROXL,
ROXR y SWAP
– Operaciones de control del programa: BRA, BSR, JMP, JSR, RTR, RTS, y NOP.
– Operaciones de control del sistema: RESET, RTE, STOP, TRAP, TRAPV, CHK, ..
26
6. DESCRIPCIÓN FUNCIONAL EXTERNA
27
de salida del mismo nombre, mientras que el bit A0, se desdobla en las dos líneas de salida
anteriormente 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 una
dirección par. Si A0 = 1, se activa la línea /LDS, habilitando los 8 bits de menos peso del bus
de datos, e indicando que se trata de una dirección impar. Cuando se direcciona una palabra,
se activan ambas líneas /UDS y /LDS.
Este bloque esta constituido por cuatro líneas de salida más una de entrada que sirven para
controlar la transferencia de datos por el bus de datos.
Es una línea triestado de salida, activa en nivel bajo y mediante la cual la CPU
informa que la dirección existente en el bus de direcciones es válida. Normalmente los drivers
que controlan las líneas del bus de direcciones tienen unos tiempos de propagación que
difieren de una línea a otra, por tanto la utilidad de /AS está en la de asegurar, al exterior, que
ha pasado el tiempo suficiente para que se hayan estabilizado los valores lógicos de las líneas
del 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 el
ciclo es de lectura, R/#W = 1, el bus recoge información hacia el microprocesador. Si el ciclo
es de escritura, R/#W = 0, por el bus circula información procedente del microprocesador
hacia la memoria o periférico.
Son líneas de salida triestado, que junto con R/#W controlan el flujo de información
en 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
accede a una dirección par y /UDS está activa(/UDS=0 y /LDS=1). Si A0=1, se accede a una
direcció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 trabaja
con todo el bus de datos, entonces /UDS=/LDS=0.
Es una línea de entrada, activa en nivel bajo, que indica que la transferencia del dato
ya ha sido realizada. Durante un ciclo de lectura, cuando /DTACK=0, se captura el dato y
termina el ciclo de lectura. Durante un ciclo de escritura, si /DTACK=0, el dato ya ha sido
escrito y termina el ciclo de escritura. En definitiva, esta señal permite configurar la velocidad
de trabajo de la CPU con la memoria y los periféricos que controla.
Ciclo de lectura
Ciclo de escritura
Cuando el operando a leer es de tamaño byte, entonces A0 determina por qué parte del bus el
procesador recibe dicho byte, activando #UDS (y dato por D15-D8) para las direcciones pares
y activando #LDS (y dato por D7-D0) para las impares.
29
Para el ciclo de lectura se definen ocho estados. Cada estado se corresoponde con un nivel
logico 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 valores
del código de función en las salidas FC2-0 y pone a 1 la salida R/#W
ESTADO 2 (S2): En el flanco ascendente de S2, el procesador activa la salida #AS y los
habilitadores de bus #UDS, #LDS en función del tamaño del dato y la dirección donde este
se ubique (par o impar)
ESTADO 4 (S4): Durante este estado el procesador espera la señal de terminación del ciclo
mediante 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 recibe
ninguna señal por 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): 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 bus
y desactiva #AS,#UDS y/o #LDS en el flanco de subida de S7, colocando al final de S7 el bus
de direcciones en alta impedancia. Por su parte, el dispositivo externo debe haber retirado
#DTACK o #BERR durante este tiempo.
30
Dispositivo externo
MC68000 (memoria o perifericos)
31
Durante un ciclo de escritura, el procesador manda bytes de datos hacia la memoria o algún
dispositivo periférico.
ESTADO 0 (S0): En este estado se inicia el ciclo de lectura. El procesador sitúa los valores
del código de función en las salidas FC2-0 y pone a 1 la salida R/#W
ESTADO 3 (S3): Durante este estado el bus de datos sale de su estado de alta impedancia
para 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 mediante
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 escritura). Si no se recibe ninguna señal
por 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 a
1. Por su parte, el dispositivo externo debe haber retirado #DTACK o #BERR durante este
tiempo.
32
Dispositivo externo
MC68000 (memoria o perifericos)
33
6.3.4 Conexión de chips de memoria al MC68000
#BR: Bus Request. Esta línea de entrada indica al microprocesador que existe un controlador
externo 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 el
microprocesador cede el bus cuando termine el ciclo de bus actual.
35
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 de
mayor prioridad y que no es enmascarable.
Estas señales deben permanecer sin modificarse hasta que el microprocesador inice el ciclo de
recnonocimiento de interrupciones ( o FC0-FC2 pasen a nivel alto), para así asegurar que la
interrupción será reconocida. El nivel de interrupción que puede atender el microprocesador
viene fijado por los bits I0,I1,e I2 del SR. Si el nivel de petición de interrupción es de mayor
prioridad que el fijado por la máscara, se atenderá la petición.
El circuito externo que permite la activación de esta entrada del microprocesador debe
controlar la duración existente entre la activación de la línea /AS y la respuesta /DTACK. Si
una 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
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 de
funcionamiento 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 uno
cuando se reciba un flanco de subida por la línea E. Si /AS se encuentra activa durante cuatro
ciclos de E o, de forma equivalente, 40 ciclos del microprocesador, la línea /BERR se
activará. Sólo en el caso de que se realice correctamente el ciclo de bus en menos de 40
ciclos, la línea /AS se desactivaría por lo que el registro se borraría.
/AS D1 Q1
D2 Q1
D3 Q2
D4 Q2
Q3
E CLK Q3
CLR Q4
Q4 /BERR
Para que el microprocesador realice un reintento del ciclo de bus la señal /BERR debe haber
pasado a 1 al menos un ciclo de reloj antes de que /HALT lo hiciera.
37
6.6.2 Doble error de bus
#RESET: Esta es una línea bidireccional que actua a veces como entrada, y a veces como
salida. Como entrada, si se activa junto con HALT durante 10 ciclos de reloj o 10ms en
power-up, se produce la secuencia de inicialización en la que el microprocesador responde
leyendo el vector de reset de la tabla de vectores, que carga en el puntero de pila del
supervisor, lee el siguiente vector de la tabla para almacenarlo en el registro PC e inicializa
los bits de interrupciones al nivel 7. Si se ejecuta la instrucción RESET esta línea actua como
salida poniendo a 0 el pin de RESET durante 124 ciclos de reloj. En este caso el procesador
está intentando resetear el resto del sistema, mientras que no existe cambio del estado interno
del procesador.
38
#HALT: Una entrada en esta línea bidireccional provoca que el microprocesador pare el
ciclo del bus actual.
Esta línea actúa como salida cuando el procesador para de ejecutar instrucciones( como por
ejemplo cuando sucede un doble error de bus). De esta forma se avisan a los dispostivos
externos de que el microprocesador ha parado.
#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 la
señal E para poder acceder a él. Asimismo esta entrada también indica que el
microprocesador 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 de
memoria es válida y que el microprocesador está sincronizado con la señal E.
Estas salidas codifican el estado interno del procesador. La siguiente tabla resume los códigos
asociados a los estados internos. Estas salidas son válidas cuando #AS está activa.
7. PROCESOS DE EXCEPCIÓN
40
Excepciones
Internas Externas
Error de Peticion de
Traza Instrucción Reset Error de bus
Ejecucion interrupcion
ilegal
Division por
Autovector
cero
Violacion de Usuario (no
privilegio autovector)
Emulador
Instruccion
ilegal
Error en
direccion
De estos 255 vectores, los 64 primeros (0 al 63) están preasignados, aunque pueden
sobreescribirse. Los demás vectores (192) quedan libres para ser asignados a dispositivos
periféricos como vectores de interrupción de usuario. El siguiente cuadro muestra el
contenido de la tabla de vectores de excepción.
41
NÚMERO DIRECCIÓN
VECTOR ASIGNACIÓN
DECIMAL HEX.
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)
42
alta, de la instrucción en curso.
3. Se salvan, en la pila del supervisor (SSP), los contenidos del contador de programa
PC y del registro de estado SR. Primero se guarda PCH, seguido de PCL y SR.
A) ERRORES DE EJECUCIÓN
Se produce cuando el MC68000 intenta a acceder a una palabra o a una palabra larga
con una dirección impar. Una característica de esta excepción es que, además de los
registros PC y SR, en la pila se guarda cierta información adicional con el fin de
ayudar a la rutina de servicio a identificar la causa del error. Esta información incluye
la primera palabra de la instrucción que produjo el error (tomada directamente del
contenido del registro de instrucción del procesador), la dirección en cuyo acceso de
produjo el error , y una palabra denominada de "super-estado" que indica:
El MC68000 detecta una instrucción ilegal si, al buscar la primera palabra de una
instrucción, encuentra que no contiene ninguno de los códigos de operación válidos de
su repertorio de instrucciones. La excepción se trata como en el caso habitual, con
bifurcación al vector número 4. La ejecución de la instrucción ILLEGAL tiene el
mismo efecto.
Si los códigos de operación encontrados son las combinaciones 1010 o 1111, entonces
se bifurca a los vectores 10 u 11, respectivamente. Estos códigos de operación han
sido reservados para extender el juego de instrucciones del MC68000 mediante
emulación. Pueden usarse instrucciones comenzando por uno de estos códigos que
serán emuladas por el software de la rutina de servicio de la excepción
correspondiente.
B) TRAZA
El modo traza se activa cuando se pone a 1 el bit T del registro de estado SR. En este
modo, denominado también "paso a paso", el procesador genera una excepción, con
vector 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, con
lo cual la rutina de servicio de la exepción se ejecuta en modo normal. Al retornar se
recupera el valor de T de la pila.
C) INSTRUCCIONES TRAP,TRAPV,CHK
45
Estas tres instrucciones permiten generar una excepción directamente desde una
instrucción, es decir, en el punto exacto de la secuencia de código elegido por el
programadr:
-> TRAP
-> TRAPV
-> CHK
A) RESET
Cuando se produce una excepción por RESET se persiguen objetivos algo distintos al
resto de las excepciones. En este caso no tiene sentido guardar los valores del PC y el SR en
la pila porque no se desea volver a recuperar el estado del procesador.. Además, como se
pretende inicializar el procesador, se carga también un valor inicial en el registro SSP además
del PC. Este último se carga con el vector de excepción 0 y, el registro SSP, con el vector de
excepción 1. En concreto el registro SR se inicializa de la forma siguiente:
46
B) ERROR DE BUS
C) INTERRUPCIONES
El nivel de interrupción que puede atender el microprocesador viene fijado por los bits
I0,I1,e I2 del SR. Si el nivel de petición de interrupción es de mayor prioridad que el fijado
por la máscara, se atenderá la petición, en caso contrario, no, a excepción, como ya se ha
mencionado, para el nivel 7.
– Se activa la entrada #VPA que identifica que la interrupción fué solicitada por un
periférico síncrono. En tal caso, el microprocesador utiliza el autovector asociado
al 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 de
datos un byte que contiene un número de vector de excepción. Este número de
vector debe estar comprendido entre 64-255, constituyendo los vectores de
excepción de usuario.
– Se activa la entrada #DTACK pero se recibe, como número de vector, el $F. Esto
da lugar a la interrupción no inicializada. Todos los periféricos del 68000 disponen
de un registro que contiene el vector de interrupción que se situá en el bus de datos
en 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 68000
no ha recibido ningún vector de interrupción, es decir, se ha producido un error de
bus. Esto provoca la generación de la interrupción espúrea, que tiene, como
número de vector de excepción, el 24.
47