8085 MPU; Recorriendo una instrucción (diagramas de tiempos)

Permítanme escribir los pasos de ADD B, como lo he entendido hasta ahora.

T0:

  • ALE va alto
  • Ubicación de la memoria (digamos 2000 h ) se toma del contador de programas al registro de direcciones de memoria (que apunta a la ubicación pasada), a través de A 15 - A 8 y A D 7 - A D 0 (que estará enganchado)
  • ALE baja.

T1:

  • METRO mi METRO R ¯ se genera, los contenidos en 2000 h se pasa al decodificador de instrucciones.

T2 y T3:

  • Realmente no puedo entender estos dos estados , puedo ver que el METRO mi METRO R ¯ la señal baja en T2 y se indica que la suma se realiza en T3, pero la ALU habrá evaluado la suma, una vez que se establece el registro temporal, ¿se establece el registro temporal solo en T3?

Pude ver que el OPCODE de diferentes instrucciones se divide de manera diferente, por ejemplo, para ADD B, los primeros 5 bits corresponden a ADD y los siguientes tres bits corresponden al registro deseado, pero para una instrucción como MOV B,C los primeros dos bits corresponde al MOV y los 6 siguientes corresponden a los registros. ¿Cómo se leen correctamente los OPCODES? Porque, si fuera constante que los primeros 5 bits siempre corresponden a la instrucción, entonces se puede entender fácilmente, pero no es así.

Finalmente, ¿alguien puede enumerar los pasos en términos de estados de tiempo para la instrucción ADD B?

Program Counter se incrementa en algún lugar a lo largo del camino, pero no sé dónde está sucediendo eso.

En la computadora de 8 bits de Ben Eater , hay un estado T separado para el incremento de PC, pero supongo que 8085 es mucho más avanzado.

¿Por qué necesita esta información?
@BruceAbbott No lo sé, actualmente estoy aprendiendo sobre 8085 e interactuando con otros circuitos integrados. Simplemente no entiendo los dos últimos estados T.

Respuestas (1)

Es tarde aquí y solo puedo ayudar un poco. Pero "ADD B" es una instrucción de tipo T4, como probablemente sepa. También han pasado muchos años desde que hice algo con el 8085A y pido disculpas por adelantado por cualquier error. Pero aquí va lo referente a los cuatro estados T del "ADD B". (Solo estoy mirando la hoja de datos en este momento para refrescar algo de mi memoria). Tenga en cuenta que cada estado T que se muestra a continuación tendrá un 0 o un 1 para indicar el borde descendente o ascendente del reloj. (Un estado T comienza con el flanco descendente):

T1-0: A L mi = 1 ; S 0 = 1 ; S 1 = 1 ; I O / METRO ¯ = 0 ; R D ¯ = 1 ; W R ¯ = 1 ; Pestillo PAG C a METRO A R (que aparece en A 15 . . A 0 ); Conducir activamente METRO A R .

T1-1: A L mi = 0

T2-0: Iniciar incremento de PC; R D ¯ = 0 ; Flotar METRO A R L ( A D 7 . . A D 0 ) para permitir el acceso a circuitos externos

T2-1: Continúe con el incremento de PC (los circuitos externos pueden comenzar a proporcionar datos sobre A D 7 . . A D 0 )

T3-0: byte de instrucción que se estabiliza en A D 7 . . A D 0

T3-1: Pestillo METRO D R de A D 7 . . A D 0 y habilitar METRO D R salida en bus interno

T4-0: Bus de direcciones inactivo; Pestillo I R de METRO D R y empezar a decodificar I R

T4-1: Bus de dirección inactivo; Decida si se requieren dos estados más para la instrucción.

Esos son los detalles oficiales y solo describen el ciclo del autobús desde una vista externa.

Internamente, las cosas son diferentes. La instrucción ADD B necesitaría configurar el valor del código de operación de ALU y requeriría direccionar el archivo de registro para leer el registro B en el bus interno y luego en el registro temporal de ALU (su otro registro es el acumulador). Ese valor de registro temporal sería luego estar presente en una de las entradas de ALU y, en algún momento, la salida de ALU ahora presente en el bus temporal sería estable el tiempo suficiente para iniciar el proceso de reescritura en el pestillo del acumulador. Todo esto antes de que el byte de la siguiente instrucción necesite usar el bus interno para transferir el valor del latch MDR al latch IR.

Pero la esencia de T2 y T3 es permitir que el sistema de memoria externa responda a la solicitud de un byte de instrucción y obtenga ese valor de byte en el 8085A. T4 es para decodificar y determinar si la instrucción requiere más estados (o no). Sin embargo, tenga en cuenta que T1 y quizás T2 del siguiente ciclo de instrucción también podrían usarse para completar la instrucción anterior después de la decodificación (si no requiere cualquier operación de bus añadida, como lectura/escritura).

Muchas gracias por responder, soy muy nuevo en la electrónica digital, así que, por favor, descubra mi ingenuidad aquí; ¿Qué quiere decir con "configurar el valor del código de operación ALU"? ¿Cuándo se direcciona el registro B y se transfiere el contenido al registro temporal? Este es el paso final, ¿verdad? ya que la ALU calcula constantemente la suma de los dos (¿lo hace, es por eso que tenemos un búfer, verdad?) ¿Qué hace básicamente MDR?
@Aravindh La ALU tendrá su propio código de operación para indicarle que sume o reste o realice alguna operación lógica. La decodificación de la instrucción funcionará como parte del proceso de decodificación. Claro, la ALU puede funcionar continuamente, pero no siempre puede permitir que su salida controle el bus interno que puede estar en uso por alguna otra razón. El MDR es el "registro de datos de memoria".
Sí, entiendo que la ALU no puede seguir poniendo valores en el bus, quiero decir, esa es la razón por la que ponemos un búfer entre el bus y la ALU, ¿verdad? ¿Cuándo se transfiere el valor del registro B al registro temporal? Una pregunta más: ¿Qué quiere decir con "decidir", cuál es el proceso interno de decidir? Quiero decir, si tuviera que tomar más estados T, ¿cómo "decidirá" y qué significa "Float MARL"?
@AravindhVasu El registro B debe abordarse (está en un archivo de registro con más de un registro). Cómo funciona exactamente es un detalle que se deja a los diseñadores. Pero debe hacerse, de alguna manera. Ese valor direccionado tendrá que pasar a través de un búfer de tres estados al bus, que debe estar habilitado. Luego, el registro temporal tiene que bloquear ese valor de bus. El proceso de decodificación configura todo esto, a menudo, con una máquina de estado y salidas de línea de control derivadas de eso. La mayoría de los detalles complicados se barren debajo de la alfombra de "decodificador y máquina de estado". El resto siempre se ve limpio y fácil.