Введение в микропроцессоры. Конспект лекций по курсу "Микропроцессорные устройства", страница 10

Ввести такты ожидания (замедлить работу МП) память может с помощью сигнала READY, который МП опрашивает в середине каждого тактового периода Т2 (см. моменты времени t1, t4).  Если в момент проверки сигнал READY находится в высоком уровне (как в момент времени t1), то такты ожидания не вставляются и период Т2 переходит в период Т3. Если в момент проверки сигнал READY находится в низком уровне (как в момент времени t4), то такты ожидания вставляются и период Т2 переходит в период Тож.

Если МП находится в состоянии ожидания, то он продолжает проверять состояние сигнала READY в середине каждого периода Тож (см. момент времени t6). Если в момент проверки сигнал READY находится в высоком уровне (как в момент времени t6), то такты ожидания прекращают вставляться и период Тож переходит в период Т3. В противном случае такты ожидания продолжают вставляться. С учетом  N тактов ожи­дания длительность сигнала чтения trd может быть вычислена по формуле:

trd = (3 + 2 * N) / fbq.                                                                 (2.1)

Для надежного воздействия на МП сигнал READY должен быть предустановлен перед проверками на достаточный промежуток времени (см. промежутки времени t3...t4, t5...t6).

Цикл чтения памяти может быть вызван, например, командой LDAX B (см. п. 2.8.5). Это однобайтная команда, КОП которой считывается в цикле М1. В цикле М2 содержимое РОН В устанавливается на шине А, а содержимое РОН С - на шине AD (в Т1). Байт, считанный из  памяти по этому адресу, записывается в аккумулятор.

2.4.4. Машинный цикл записи в память

Временные диаграммы цикла записи в память приведены на рис. 2.5. Диаграммы цикла записи в память имеют много общего с диаграммами циклов чтения КОП и чтения памяти (см. п.п. 2.4.2, 2.4.3). Отличия заключаются в следующем: вместо сигнала RD#  активизируется сигнал WR# (длительность которого также подчиняется формуле 2.1); шина AD после вывода младшего байта адреса (в Т1) продолжает работать на вывод (в Т2 и Т3) и на нее выводятся данные из аккумулятора или из любого РОН; сигнал S1 имеет нулевое значение, а сигнал S0 - единичное.

Цикл записи в память может быть вызван, например, командой STAX B (см. п. 2.8.5). Это однобайтная команда, КОП которой считывается в цикле М1. В цикле М2 содержимое РОН В устанавливается на шине А, а содержимое РОН С - на шине AD (в Т1). По этому адресу содержимое аккумулятора (находится на AD в Т2 и Т3) записывается в память.

Рис. 2.5. Временные диаграммы цикла записи в память

2.4.5. Машинный цикл чтения порта ввода

Временные диаграммы  цикла чтения порта ввода приведены на рис. 2.6. Эти диаграммы практически полностью совпадают с диаграммами цикла чтения памяти (см. п. 2.4.3) кроме двух особенностей: сигнал IO/M# имеет единичное значение (высокий уровень); младший и старший байты адреса порта имеют одинаковое значение (Port на диаграммах рис. 2.6).

Цикл чтения порта ввода может быть вызван только командой IN Port (см. 2.8.9), где Port = 0...255. Это двухбайтная команда, КОП которой считывается в цикле М1. В цикле М2 (чтение памяти) считывается код адреса порта Port. В цикле М3 этот код устанавливается на шине А и на шине AD (в Т1). Байт, считанный из  порта по этому адресу, записывается в аккумулятор.

Очевидно, что адресное пространство портов ввода/вывода (см. п. 2.4.6) составляет 256 портов на ввод  и 256 портов на вывод.

Рис. 2.6. Временные диаграммы  цикла чтения порта ввода

2.4.6. Машинный цикл записи в порт вывода

Временные диаграммы  цикла записи в порт вывода приведены на рис. 2.7. Эти диаграммы практически полностью совпадают с диаграммами цикла записи в память (см. п. 2.4.4) кроме двух особенностей: сигнал IO/M# имеет единичное значение (высокий уровень); младший и старший байты адреса порта имеют одинаковое значение (Port на диаграммах рис. 2.7).