Задокументировал выполнение чтения процессором 1801ВМ1. Ниже приведена диаграмма выполнения микропроцессором цикла чтения данных по шине МПИ в качестве ведущего устройства. Пунктирными линиями показано состояние высокого импеданса. Обычно в системе на линиях магистрали имеются подтягивающие резисторы, поэтому можно полагать что в эти моменты времени присутствует напряжение высокого уровня, все управляющие сигналы при этом принимают неактивное значение, на шине адрес/данных устанавливается нулевое значения, поскольку шина инвертирована.
Также указана привязка установки и снятия управляющих выходов к фронтам тактового сигнала, при этом не учитывается внутренняя задержка, которая может достигать десятков наносекунд и, при высоком значении тактовой частоты, может быть сравнимой с длительностью такта.
В такте Т0 на магистрали МПИ нет ведущего устройства, обмен не выполняется, полагаем это состояние исходным. По срезу Т1 микропроцессор осуществляет захват магистрали (процесс арбитража будет рассмотрен позже), при этом разрешается управление выходами nWTBT, nDIN, nDOUT, nIAKO, A/D. Сигнал nBSY принимает активный низкий уровень, на шине адреса/данных устанавливается адрес читаемых данных. Выход сигнала nSYNC остается запрещенным - это особенность К1801ВМ1, для корректной работы требуется внешний подтягивающий резистор. На выходе nWTBT установлен высокий уровень, что означает выполнение операции чтения. По срезу Т2 на выходе nSYNC формируется активный низкий уровень. По фронту Т2 выставленный адрес снимается с шины и выводы переводятся в высокоимпедансное состояние, также выставляется активный низкий уровень на линии nDIN, далее микропроцессор переходит в состояние ожидания данных и сигнала подтверждения nRPLY от ведомого устройства. При этом запускается специальный таймер монитора шины, который осуществляет счет с частотой CLC/8. Если сигнал подтверждения nRPLY не будет получен в течение 56..64 тактов CLC, то цикл обмена прерывается и возникает программное исключение по вектору 048. Разброс в величине таймаута связан с тем что фаза предделителя частоты CLC/8 при запуске таймера не обнуляется - предделитель считает непрерывно.
На диаграмме в такте Т4 внешнее устройство выставляет данные, которые подлежат считыванию микропроцессором, и затем, по прошествии некоторого интервала формирует активный низкий уровень сигнала подтверждения nRPLY. В общем же случае, согласно ГОСТ 26765.51-86, актуальные данные должны быть выставлены ведомым устройством не позднее чем 200 нс после среза активации сигнала nRPLY. На диаграмме момент выставления nRPLY, который определяется внешним устройством, намерено показан после фронта T4. Микропроцессор фиксирует сигнал на своем входе nRPLY по фронту тактового сигнала, при обнаружении активного низкого nRPLY два фронта тактового сигнала подряд (на приведенной диаграмме это T5 и T6, два цикла нужны так как данные от ведомого устройства могут запаздывать на интервал до 200 нс относительно активации nRPLY), цикл обмена полагается законченным, по фронту T6 фиксируются читаемые данные и передаются внутренним схемам процессора, снимается активный сигнал nDIN и останавливается таймер монитора шины, затем происходит переход в ожидание снятия активного сигнала nRPLY. При этом по срезу тактового сигнала осуществляется детектирование неактивного высокого уровня nRPLY и при обнаружении такового запрещаются выходы управляющих сигналов nDIN, nDOUT, nWTBT. Далее, еще через один такт происходит снятие сигнала nBSY и выставление высокого уровня сигнала nSYNC. На диаграмме фронт сигнала nRPLY обнаруживается по срезу Т7, а снятие сигналов nSYNC и nBSY происходит по срезу Т8. Высокий неактивный уровень nSYNC удерживается в течение одного такта и по срезу Т9 выход переходит в высокоимпедансное состояние, микропроцессор перестает выполнять роль ведущего устройства, магистраль полагается незанятой. Следует отметить, что таймер монитора шины в состоянии ожидания деактивации nRPLY не работает, поэтому имеется теоретическая возможность зависания системы.
Микропроцессор К1801ВМ1 чтение данных всегда выполняет 16-битными словами. Если требуется только один из байтов, то ненужные разряды игнорируются. Также микропроцессор выставляет адрес "как есть", и чтение слов по нечетному адресу может приводить к некорректно прочитанным данным, поскольку внешняя память и устройства обычно не поддерживают такой режим.





Ответить с цитированием
