8085 МПУ; Пошаговое выполнение инструкции (временные диаграммы)

Позвольте мне написать шаги ADD B, как я понял это до сих пор.

Т0:

  • Але идет высоко
  • Место памяти (скажем 2000 г. час ) берется из счетчика программ в регистр адреса памяти (который указывает на переданное местоположение) через А 15 - А 8 и А Д 7 - А Д 0 (который будет заблокирован)
  • ALE становится низким.

Т1:

  • М Е М р ¯ генерируется, содержимое в 2000 г. час передается декодеру инструкций.

Т2 и Т3:

  • Я действительно не могу понять эти два состояния , я вижу, что М Е М р ¯ сигнал становится низким в T2, и указано, что сложение выполняется в T3, но ALU оценит сумму после установки временного регистра, установлен ли временный регистр только на T3?

Я мог видеть, что OPCODE разных инструкций делится по-разному, например, для ADD B первые 5 бит соответствуют ADD, а следующие три бита соответствуют нужному регистру, но для инструкции типа MOV B,C первые два бита соответствует MOV, а следующие 6 соответствуют регистрам. Как на самом деле правильно читаются OPCODES? Потому что, если было константой, что первые 5 бит всегда соответствуют инструкции, то это можно легко понять, но это не так.

Наконец, кто-нибудь может перечислить шаги с точки зрения временных состояний для инструкции ADD B.

Счетчик программ увеличивается где-то по пути, но я не знаю, где это происходит.

В 8-битном компьютере Бена Итера есть отдельное T-состояние для приращения ПК, но я полагаю, что 8085 гораздо более продвинут.

Зачем вам эта информация?
@BruceAbbott Я не знаю, сейчас я изучаю 8085 и взаимодействую с ним с другими ИС. Я просто не понимаю последние два Т-состояния.

Ответы (1)

здесь уже поздно, и я могу лишь немного помочь. Но «ADD B» — это инструкция типа T4, как вы, наверное, знаете. Также прошло много лет с тех пор, как я что-либо делал с 8085A, и я заранее прошу прощения за возможные ошибки. Но здесь речь идет о четырех состояниях « Т » «ДОБАВИТЬ Б». (Сейчас я просто просматриваю таблицу данных, чтобы освежить часть своей памяти.) Обратите внимание, что каждое состояние T , показанное ниже, будет иметь либо 0 , либо 1 , чтобы указать задний фронт или передний фронт тактового сигнала. ( Состояние T начинается с заднего фронта.):

Т1-0: А л Е "=" 1 ; С 0 "=" 1 ; С 1 "=" 1 ; я О / М ¯ "=" 0 ; р Д ¯ "=" 1 ; Вт р ¯ "=" 1 ; Защелка п С к М А р (который появляется на А 15 . . А 0 ); Активно водить М А р .

Т1-1: А л Е "=" 0

T2-0: Запустить приращение ПК; р Д ¯ "=" 0 ; Плавать М А р л ( А Д 7 . . А Д 0 ), чтобы разрешить доступ к внешним схемам

T2-1: Продолжить приращение ПК (внешняя схема может начать предоставлять данные о А Д 7 . . А Д 0 )

T3-0: Байт команды стабилизируется А Д 7 . . А Д 0

T3-1: Защелка М Д р от А Д 7 . . А Д 0 и включить М Д р вывод на внутреннюю шину

T4-0: адресная шина простаивает; Защелка я р от М Д р и приступайте к расшифровке я р

T4-1: адресная шина простаивает; Решите, требуются ли для инструкции еще два состояния.

Это официальные данные, которые просто описывают цикл шины со стороны.

Внутри дела обстоят иначе. Инструкция ADD B должна будет установить значение кода операции АЛУ и потребовать обращения к файлу регистров для чтения регистра В во внутреннюю шину, а затем во временный регистр АЛУ (другой регистр является аккумулятором). Это значение временного регистра будет затем присутствует на одном из входов АЛУ, и в какой-то момент выход АЛУ, теперь присутствующий на временной шине, будет стабилен достаточно долго, чтобы начать процесс обратной записи в защелку аккумулятора. Все это до того, как байт следующей инструкции должен будет использовать внутреннюю шину для передачи значения защелки MDR в защелку IR.

Но суть T2 и T3 заключается в том, чтобы позволить внешней системе памяти ответить на запрос байта команды и получить значение этого байта в 8085A. T4 предназначен для декодирования и определения того, требует ли инструкция дополнительных состояний (или нет). Однако имейте в виду, что T1 и, возможно, T2 следующего командного цикла также могут использоваться для завершения предыдущей инструкции после декодирования (если она не требует любые дополнительные операции с шиной, такие как чтение/запись.)

Большое спасибо за ответ, я очень новичок в цифровой электронике, поэтому, пожалуйста, не вините меня в моей наивности; что вы подразумеваете под «настроить значение кода операции ALU»? Когда адресуется регистр B и содержимое передается во временный регистр? Это последний шаг, верно? поскольку ALU постоянно вычисляет сумму двух (не так ли, поэтому у нас есть буфер, верно?) Что в основном делает MDR?
@Aravindh ALU будет иметь свой собственный код операции, чтобы сказать ему добавить или вычесть или выполнить некоторую логическую операцию. Декодирование инструкции будет работать как часть процесса декодирования. Конечно, ALU может работать непрерывно, но вы не можете всегда позволять его выходу управлять внутренней шиной, которая может использоваться по какой-то другой причине. MDR — это «регистр данных памяти».
Да, я понимаю, что ALU не может продолжать передавать значения на шину, я имел в виду, что это причина, по которой мы помещаем буфер между шиной и ALU, верно? Когда значение регистра B переносится во временный регистр? Еще один вопрос: что вы подразумеваете под «решать», каков внутренний процесс принятия решения? Я имею в виду, если бы ему пришлось принять больше T-состояний, как бы он «решил» и что означает «плавающий MARL»?
@AravindhVasu Регистр B должен быть адресован (он находится в файле регистров с более чем одним регистром). Как именно это работает, остается за разработчиками. Но это надо как-то сделать. Это адресуемое значение должно пройти через буфер с тремя состояниями на шину, которая должна быть включена. Затем временный регистр должен зафиксировать это значение шины. Процесс декодирования устанавливает все это, часто с помощью конечного автомата и выходных данных линии управления, полученных из него. Большинство усложняющих деталей скрыто под ковром «декодера и конечного автомата». В остальном всегда выглядит чисто и легко.