Книга
Книга
ПРЕДИСЛОВИЕ
Успешное решение разнообразных задач с помощью микропроцессорных средств требует постоянного улучшения характеристик последних, прежде всего производительности, и расширения функциональных возможностей. Этим требованиям на современном этапе отвечает поколение микропроцессорных комплектов (МПК) БИС повышенных степени интеграции, разрядности и быстродействия. Типичным представителем этого поколения является МПК БИС серии К1810.
Центральный процессор (ЦП) К1810ВМ86 комплекта имеет разрядность данных 16 бит, разрядность адреса 20 бит и тактовую частоту до 5 МГц. Его производительность примерно на порядок превышает производительность разработанного ранее 8-битового МП К580ВМ80. Дополнительное увеличение вычислительной мощности микропроцессорных систем (МПС), построенных на основе БИС серии К1810, достигается благодаря использованию специализированных процессоров: арифметического сопроцессора К1810ВМ87 и процессора ввода — вывода К1810ВМ89. Арифметический сопроцессор с высокими точностью и быстродействием выполняет разнообразные операции над числами с фиксированной и плавающей запятой. Процессор ввода—вывода эффективно осуществляет пересылку данных между внешними устройствами и памятью системы и производит при этом необходимые преобразования информации, освобождая тем самым ЦП для работы по основной программе.
Наличие большого числа схем различной степени интеграции в МПК серии К1810 упрощает разработку МПС и делает их компактными и экономичными. Существенное значение имеет возможность использования совместимых с МПК серии К1810 программируемых БИС серии К580, число типов которых постоянно растет. На основе МПК К1810 выпускаются различные типы вычислительных средств, включая одноплатные управляющие микроЭВМ и микроконтроллеры, универсальные микроЭВМ, персональные ЭВМ и высокопроизводительные микропроцессорные системы, например ПЭВМ ЕС 1840, «Нейрон И9.66», «Искра 1030.11», «АГАТ-П».
ПЭВМ рассчитаны в основном на пользователей, которые могут ограничиться работой со стандартными устройствами ввода — вывода и готовым программным обеспечением. Однако на практике нередко встает задача их адаптации к работе с устройствами, не входящими в состав типового периферийного оборудования, что предполагает создание пользователем собственных аппаратных средств и соответствующего программного обеспечения. Для этого необходимо знать архитектуру БИС и микропроцессорного комплекта, представлять взаимодействие БИС в системе и овладеть программированием, прежде всего на языке ассемблера. Подобного рода информация содержится во многих книгах, справочниках и учебной литературе, изданных в последние годы и содержащих описание МПК новых серий.
В отличие от многих книг по микропроцессорам, предназначенных главным образом для специалистов в области вычислительной техники, данное справочное пособие адресовано широкому кругу инженерно-технических работников и студентов, которые специализируются в различных областях электроники и деятельность которых связана с профессиональным использованием или с проектированием микропроцессорных средств, содержащих БИС серии К1810. Предполагается, что читатель знаком с основами цифровой и вычислительной техники в объеме соответствующих учебных дисциплин, изучаемых на младших курсах технических вузов. Желательно (но не обязательно) знакомство с МПК предшествующего поколения, в особенности с программируемыми БИС серии К580, которые могут быть использованы совместно с БИС серии К1810.
Авторы стремились не только представить по возможности полные данные справочного характера, но и пояснить наиболее трудные для понимания вопросы, что позволит использовать книгу в учебном процессе, в частности при курсовом и дипломном проектировании. Однако следует отметить, что материал данной книги не заменяет техническую документацию.
В гл. 1—4 рассматриваются центральный процессор К1810ВМ86, арифметический сопроцессор К1810ВМ87 и процессор ввода — вывода К1810ВМ89. Особое внимание уделено двум последним процессорам, которые освещены в литературе существенно слабее, чем ЦП. Описаны также особенности ЦП К1810ВМ88 и вопросы построения функционально законченных микропроцессорных систем на основе этих БИС. Гл. 5 содержит материал о вспомогательных микросхемах программируемых БИС, составляющих необходимое обрамление центрального процессора при построении процессорного модуля. Изложены практические вопросы организации ОЗУ на основе БИС динамической памяти с использованием контроллера К1810ВТ03.
В гл. 6 описаны программируемые БИС микропроцессорного комплекта К1810: контроллер накопителя на гибком магнитном диске К1810ВГ72, интервальный таймер К1810ВИ54 и контроллер прямого доступа к памяти К1810ВТ37. Приведены сведения о двух многофункциональных БИС серии К1821, использование которых позволяет сократить общее число компонентов в системах, построенных на основе процессоров серии К1810.
Авторы выражают благодарность коллективу кафедры вычислительной техники Московского института электронной техники, возглавляемой чл.-кор. АН СССР Л. Н. Преснухиным, и д-ру техн, наук, проф. П. И. Новикову (Ленинградский институт точной механики и оптики) за ценные замечания, высказанные при рецензировании рукописи.
Замечания и предложения направлять по адресу: 101430, ГСП-4, Москва, Неглинная ул., 29/14, издательство «Высшая школа».
Авторы
М икропроцессор К1810ВМ86
Состав МПК БИС серии К1810. Общие сведения
о микропроцессоре К1810ВМ86
Состав МПК серии К1810 приведен в табл. 1.1, а основные электрические параметры входящих в него БИС — в табл. 1.2. Нагрузочная способность каждого выхода БИС относительно невелика и соответствует одному входу
Таблица 1.1
Тип БИС
Назначение
Технология
К1810ВМ86
Центральный процессор
п-МДП
К1810ВМ88
Центральный процессор с 8-битовой внешней шиной данных
п-МДП
К1810ВМ87
Арифметический сопроцессор
п-МДП
К1810ВМ89
Специализированный процессор ввода - вывода
п-МДП
К1810ГФ84
Генератор тактовых сигналов
ттлш
К1810ВГ88
Системный контроллер
ттлш
К1810ВБ89
Арбитр системной шины
ттлш
К1810ВТ02
Контроллер динамической памяти (16К)
п-МДП
К1810ВТ03
Контроллер динамической памяти (64К)
п-МДП
К1810ВИ54
Интервальный таймер
п-МДП
К1810ВТ37
Усовершенствованный контроллер прямого доступа к памяти
п-МДП
К1810ВН59
Программируемый контроллер прерываний
п-МДП
К1810ИР82/83
Регистр-защелка
ттлш
К1810ВА86/87
Шинный формирователь
ттлш
микросхемы, выполненной по стандартной ТТЛ-технологии. Поэтому практически всегда выходные сигналы БИС необходимо буферизировать с помощью внешних схем, обеспечивающих требуемую нагрузочную способность.
Таблица 1.2
Параметр
Значение (min/max)
Напряжение питания, В
Входное напряжение низкого уровня, В Входное напряжение высокого уровня, в Выходное напряжение низкого уровня, в Выходное напряжение высокого уровня, В Выходной ток высокого уровня, мА Выходной ток низкого уровня, мА Ток утечки на входах или на входах/выходах.мкА Емкость входа или входа/выхода, пФ Емкость нагрузки, пФ
4,75/5,25 - /0,8 - /2,0 - /0,45
2,4/ - - /-0,4 - /2,0 - /+10
- /10 - /100
Предельно допустимые условия эксплуатации МПК БИС: температура окружающей среды 0...70 °C; напряжение на любом выводе относительно корпуса — 1,0... + 7 В.
Центральный процессор К1810ВМ86 осуществляет общую обработку данных и управление блоками системы в соответствии с заданной программой. Характерной особенностью МП К1810ВМ86 является возможность частичной реконфигурации аппаратной части для обеспечения работы в двух режимах — минимальном и максимальном.
В минимальном режиме МП формирует все сигналы для управления внутрисистемным интерфейсом МПС и используется для построения однопроцессорных контроллеров и микроЭВМ. При этом для построения блока центрального процессора используется малое число ИС: генератор К1810ГФ84, буферные регистры К1810ИР82/83 и шинные формирователи К1810ИР86/87. В максимальном режиме МП используется для построения многопроцессорных систем (МПС), в которых сигналы управления шиной вырабатываются системным контроллером К1810ВГ88 на основании кода, сформированного МП.
Центральный процессор К1810ВМ88 в отличие от К1810ВМ86 имеет 8-битовую внешнюю шину данных, что, в частности, дает возможность вводить его в системы, ранее разработанные для МП К580ВМ80. Арифметический сопроцессор К1810ВМ87, называемый также сопроцессором числовых данных, подключается параллельно центральному процессору и выполняет предназначенные ему команды из общего с ЦП потока команд. Оба процессора фактически работают попеременно, причем сопроцессор является зависимым от центрального процессора. Процессор ввода—вывода К1810ВМ89 и ЦП являются независимыми, и каждый из них выполняет собственный поток команд, что позволяет распараллелить выполнение программы.
Центральный процессор имеет встроенные средства для координации работы процессоров обоих типов в многопроцессорной системе. Эти средства позволяют осуществлять разделение и отключение магистралей с помощью сигналов по линиям запроса — представления канала, а также с помощью БИС арбитра магистрали К1810ВБ89.
Таблица 1.3
Тип БИС
Функциональное назначение
К580ВВ51 К580ВИ53 К580ВВ55А К580ВТ57 К580ВН59А К580ВГ72 К580ВГ75 К580ВВ79 К580ВК91А
К580ВГ92А
Последовательный интерфейсный адаптер Интервальный таймер Параллельный периферийный интерфейс Контроллер прямого доступа к памяти Контроллер приоритетных прерываний Контроллер накопителя на гибком магнитном диске Контроллер электронно-лучевой трубки Контроллер клавиатуры и индикации Контроллер канала общего пользования Контроллер приборного интерфейса
Для организации системы приоритетных прерываний предусмотрен программируемый контроллер прерываний (ПКП) типа К1810ВН59А, который отличается от аналогичной БИС К580ВН59 тем, что способен работать в системах, построенных на основе МП серий К1810 и К580. Для практической реализации ОЗУ большой емкости на основе динамических БИС памяти целесо-
образно применять контроллеры К1810ВТ02 или К1810ВТ03, которые обеспечивают управление памятью и регенерацию ее содержимого.
Большую роль в реализации функций интерфейса внешних устройств в МПС, выполненных на базе К1810, выполняют программируемые БИС интерфейсов и контроллеров семейства К580 (табл. 1.3), в которой все указанные БИС изготовлены по технологии п-МДП.
Широкая и постоянно увличивающаяся номенклатура БИС, используемых в микропроцессорных системах на основе МП серии К1810, обеспечивает разнообразие функций, простоту технических решений, компактность аппаратной части и в конечном счете высокую эффективность применения этих систем.
Микросхема К1810ВМ86 представляет собой однокристальный 16-битовый МП, выполненный по высококачественной n-МОП-технологии. Кристалл микросхемы с геометрическими размерами 5,5X5,5 мм содержит около 29 000 транзисторов и потребляет 1,7 Вт от источника питания +5 В. Схема выпускается в 40-выводном корпусе. Синхронизируется однофазными импульсами с частотой повторения 25 МГц от внешнего тактового генератора. Основные операции обработки данных (сложение, вычитание, логические действия) типа регистр — регистр выполняются за три такта, что обеспечивает быстродействие 1,66• 106 оп./с при периоде тактовых импульсов 200 нс. С максимальной быстротой (за два такта) выполняются регистровые пересылки, а также некоторые однооперандные команды (например, сдвиг на один бит, инкремент, декремент, управление флагами).
Микропроцессор К1810ВМ86 (далее обозначен для краткости ВМ86) содержит 14 16-битовых внутренних регистров и образует 16-битовую шину данных для связи с внешней памятью и портами ввода—вывода. Шина адреса имеет 20 линий, что позволяет непосредственно адресоваться к памяти емкостью до 1 Мбайт =220 = 1 048 576 байт. Пространство памяти разделяется на сегменты по 64 Кбайт, причем в любой момент времени МП может обращаться к ячейкам четырех сегментов, которые программно выбраны в качестве текущих. Сегментация памяти обеспечивает удобный механизм вычисления физических адресов и способствует модульному проектированию программного обеспечения, что упрощает программирование и отладку.
Для сокращения необходимого числа выводов БИС младшие 16 адресных линий мультиплексированы во времени с линиями данных и составляют единую шину адреса/данных (ШАД). Четыре старшие адресные линии аналогично мультиплексированы с линиями состояния. Чтобы сигналы этих линий можно было использовать в системе, их обязательно разделяют с помощью внешних схем, т. е. осуществляют демультиплексирование шин.
При выполнении операций ввода — вывода используются 8- или 16-битовые адреса, так что кроме доступа к основной памяти МП может обращаться к портам (регистрам ввода — вывода), суммарная емкость памяти которых составляет 64 Кбайт. В БИС ВМ86 реализована многоуровневая система прерываний по вектору с числом векторов до 256. Адреса подпрограмм прерывания занимают область емкостью 1 Кбайт, которая располагается в памяти, начиная с младших адресов. Предусмотрена также организация прямого доступа к памяти, при котором МП прекращает работу и переводит в третье состояние шины адреса, данных и управления.
Микропроцессор ВМ86 появился как результат совершенствования МП ВМ80, и архитектура обоих процессоров имеет много общего. Програм-
min
max
Период тактовых импульсов CLK
200
500
Длительность импульса CLK
118
Длительность паузы CLK
69
Длительность фронтов импульса CLK
—
10
Время установления RDY, подаваемого на генератор тактовых импульсов
35
Время установления сигнала HOLD
35
Время установления INTR, NMI, TEST
30
Время нарастания напряжения на остальных входах и выходах
20
Время спада напряжения на остальных входах и выходах
12
Длительность сигнала RD
2Т - 75
Длительность сигнала WR
2Т - 60
Параметр
Значение параметра, нс
Примечание. Время установления асинхронных входных сигналов указывается только для того, чтобы МП мог воспринять их в следующем такте Т.
мно-доступные узлы и система команд ВМ80 могут считаться подмножествами узлов и системы команд ВМ86. Преемственность этих микропроцессоров выражается в программной совместимости снизу вверх, благодаря которой для ВМ86 можно использовать программное обеспечение ВМ80. Хотя программы на машинном языке ВМ80 не могут непосредственно выполняться микропроцессором ВМ86, они достаточно просто переводятся с языка ассемблера ВМ80 на язык ассемблера ВМ86.
Основные характеристики БИС по постоянному току приведены в табл. 1.2, а основные временные параметры — в табл. 1.4.
Назначение выводов микропроцессора
Назначение выводов БИС зависит от режима работы МП (рис. 1.1). Восемь выводов имеет двойное обозначение, причем обозначения в скобках соответствуют максимальному режиму. В табл. 1.5 приведено назначение выводов МП, являющихся общими для обоих режимов, в табл. 1.6 — назначение выводов, используемых только в минимальном режиме, а в табл. 1.7 — используемых только в максимальном режиме. Буквой z отмечены трехстабильные выходы, которые переводятся в третье (высокоомное) состояние при переходе МП в режим состояния захвата; в скобках приведены альтернативные обозначения выводов, встречающиеся в литературе.
Рассмотрим подробнее функциональное назначение сигналов МП и особенности их использования сначала в минимальном режиме.
AD15—ADO — мультиплексная (совмещенная) двунаправленная шина адреса/данных, по которой с разделением во времени передаются адресная информация и данные. В первом такте цикла шины — цикла обращения к ЗУ или внешнему устройству (ВУ) —МП выдает на эту шину младшие 16 бит адреса памяти или полный адрес внешнего устройства. Этот адрес обязательно должен быть зафиксирован и сохранен в течение всего цикла, для чего используется внешний регистр-защелка, куда записывается адресная информация с помощью строба адреса ALE. Регистр-защелка должен иметь
AD15-AD0
A16/S3
A17/S4
A18/S5
A19/S6
Линии жины адреса/данных (ШАД)
Линии адреса/состояиия. В течение такта Т1 содержат старшие биты адреса при обращении к памяти или ВУ, в течение Т2, ТЗ, TW и Т4 - информацию о состоянии МП
Выход (г)
Выход (г)
BHE/S7
Разрежение стармего байта шины/состояние
Выход (г)
RE
Чтение, строб, указывающий на то, что МП выполняет цикл чтения
Выход (г)
ROY
Готовность, подтверждение того, что адресованное устройство готово к взаимодействию с МП при передаче данных
Вход
INTR
Запрос прерывания, по которому МП переходит на подпрограмму обработки прерывания, если имеется разрешение
Вход
NMI
Немаскируемое прерывание, вызывает прерывание по фиксированному вектору (тип 2); не может быть запрещено внутренними средствами МП (программно)
Вход
TEST
Входной сигнал, проверяемый командой WAIT, которая переводит МП в состояние ожидания, если TEST = 1
Вход
CLK,(CLC)
Тактовые импульсы, обеспечивающие синхронизацию работы МП
Вход
RESET (CLR)
Сброс, заставляет МП немедленно прекратить выполняемые действия и затем возобновить выполнение программы сначала
Вход
MN/MX
Мининальный/мак симальный,обеспечивает
соответствующий режим работы МП
Вход
Таблица 1.5
обозначение
Назначение
Тип
три стабильные выходные буферы и обеспечивать малое время переключения при большой нагрузочной способности. Во второй половине цикла шины по линиям AD15-AD0 передаются адреса данных или байты команд, сопровождаемые стробом данных DEN.A19/S6—A16/S3 — мультиплексные выходные линии адреса/состояния. В первом такте на эти линии выдаются старшие 4 бит адреса памяти, а при адресации ВУ — нули. В остальных тактах цикла шины МП выдает на эти линии сигналы состояния S6—S3. Код на линиях S4, S3 определяет сегментный регистр, участвующий в формировании физического адреса памяти, т. е. указывает сегмент памяти, к которому производится обращение в текущем цикле (табл. 1.8). Следует отметить, что при обращении к ВУ, когда сегментные регистры не участвуют в формировании адреса, устанавливается значение S4=l, S3 = 0.три стабильные выходные буферы и обеспечивать малое время переключения при большой нагрузочной способности. Во второй половине цикла шины по линиям AD15-AD0 передаются адреса данных или байты команд, сопровождаемые стробом данных DEN.A19/S6—A16/S3 — мультиплексные выходные линии адреса/состояния. В первом такте на эти линии выдаются старшие 4 бит адреса памяти, а при адресации ВУ — нули. В остальных тактах цикла шины МП выдает на эти линии сигналы состояния S6—S3. Код на линиях S4, S3 определяет сегментный регистр, участвующий в формировании физического адреса памяти, т. е. указывает сегмент памяти, к которому производится обращение в текущем цикле (табл. 1.8). Следует отметить, что при обращении к ВУ, когда сегментные регистры не участвуют в формировании адреса, устанавливается значение S4=l, S3 = 0.17NMIINTRCPUADO ADI AD8 AD316151814131912CLKRESETREADYAD4 ADS ADE AD7 ADO AD9AD10 AD1111IB21928878365TEST433AD12 AD13 AD1432MN/HR333038HLDA (RQ/GTI)HOLD (R6/GT0)A16/ST33231A18/ST53635Н1Я/ bibBRE/ST734132GNDRD ЙК(ЕбсК) М/Й(СТ5) DT/RcCTI) DERcSTO) ALE(QSO) BTfiSCQSl)29802740Uo=262417NMIINTRCPUADO ADI AD8 AD316151814131912CLKRESETREADYAD4 ADS ADE AD7 ADO AD9AD10 AD1111IB21928878365TEST433AD12 AD13 AD1432MN/HR333038HLDA (RQ/GTI)HOLD (R6/GT0)A16/ST33231A18/ST53635Н1Я/ bibBRE/ST734132GNDRD ЙК(ЕбсК) М/Й(СТ5) DT/RcCTI) DERcSTO) ALE(QSO) BTfiSCQSl)29802740Uo=2624Рис. 1.1. Условное графическое обозначение МП ВМ86Рис. 1.1. Условное графическое обозначение МП ВМ86
три стабильные выходные буферы и обеспечивать малое время переключения при большой нагрузочной способности. Во второй половине цикла шины по линиям AD15-AD0 передаются адреса данных или байты команд, сопровождаемые стробом данных DEN.
A19/S6—A16/S3 — мультиплексные выходные линии адреса/состояния. В первом такте на эти линии выдаются старшие 4 бит адреса памяти, а при адресации ВУ — нули. В остальных тактах цикла шины МП выдает на эти линии сигналы состояния S6—S3. Код на линиях S4, S3 определяет сегментный регистр, участвующий в формировании физического адреса памяти, т. е. указывает сегмент памяти, к которому производится обращение в текущем цикле (табл. 1.8). Следует отметить, что при обращении к ВУ, когда сегментные регистры не участвуют в формировании адреса, устанавливается значение S4=l, S3 = 0.
три стабильные выходные буферы и обеспечивать малое время переключения при большой нагрузочной способности. Во второй половине цикла шины по линиям AD15-AD0 передаются адреса данных или байты команд, сопровождаемые стробом данных DEN.
A19/S6—A16/S3 — мультиплексные выходные линии адреса/состояния. В первом такте на эти линии выдаются старшие 4 бит адреса памяти, а при адресации ВУ — нули. В остальных тактах цикла шины МП выдает на эти линии сигналы состояния S6—S3. Код на линиях S4, S3 определяет сегментный регистр, участвующий в формировании физического адреса памяти, т. е. указывает сегмент памяти, к которому производится обращение в текущем цикле (табл. 1.8). Следует отметить, что при обращении к ВУ, когда сегментные регистры не участвуют в формировании адреса, устанавливается значение S4=l, S3 = 0.
17
NMI
INTR
CPU
ADO ADI AD8 AD3
16
15
18
14
13
19
12
CLK
RESET
READY
AD4 ADS ADE AD7 ADO AD9
AD10 AD11
11
IB
21
9
28
8
7
83
6
5
TEST
4
33
AD12 AD13 AD14
3
2
MN/HR
33
30
38
HLDA (RQ/GTI)
HOLD (R6/GT0)
A16/ST3
32
31
A18/ST5
36
35
Н1Я/ bib
BRE/ST7
34
1
32
GND
RD ЙК(ЕбсК) М/Й(СТ5) DT/RcCTI) DERcSTO) ALE(QSO) BTfiSCQSl)
29
80
27
40
Uo=
26
24
17
NMI
INTR
CPU
ADO ADI AD8 AD3
16
15
18
14
13
19
12
CLK
RESET
READY
AD4 ADS ADE AD7 ADO AD9
AD10 AD11
11
IB
21
9
28
8
7
83
6
5
TEST
4
33
AD12 AD13 AD14
3
2
MN/HR
33
30
38
HLDA (RQ/GTI)
HOLD (R6/GT0)
A16/ST3
32
31
A18/ST5
36
35
Н1Я/ bib
BRE/ST7
34
1
32
GND
RD ЙК(ЕбсК) М/Й(СТ5) DT/RcCTI) DERcSTO) ALE(QSO) BTfiSCQSl)
29
80
27
40
Uo=
26
24
Рис. 1.1. Условное графическое обозначение МП ВМ86
Рис. 1.1. Условное графическое обозначение МП ВМ86
INTA
ALE (STB)
DEN (DE)
Подтверждение прерывания, стробирует чтение вектора (типа) прерывания
Разрешение регистра-защелки адреса, стробирует появление адресной информации в такте Т1 на ШАД
Разрешение данных, стробирует появление данных на шине адреса/данных
Выход
Выход
Выход
(Z)
DT/R. (OP/IP)
Передача/прием данных, определяет направление пересылки данных по ШАД
Выход
(Z)
M/IO
Обращение к ЗУ или ВУ в данном цикле шины
Выход
(Z)
WR
Запись, строб, указывающий на то, что МП выполняет цикл записи
Выход
t z)
HOLD
Запрос захвата, указывает на то, что некоторое устройство запрашивает шины МП
Вход
HLDA
Подтверждение захвата, указывает на то, что МП перевел свои шины адреса/данных, адреса/состояния и управления в z-состояние
Выход
Назначение
Тип
Таблица 1.7
ОбозначениеОбозначениеОбозначениеОбозначениеНазначениеНазначениеТипТип
Обозначение
Обозначение
Обозначение
Обозначение
Назначение
Назначение
Тип
Тип
S2,S1,SO (ST2-STO)RQ/GTORQ/GT1 (ВД/Ёо) (Ёб/ЁГ)S2,S1,SO (ST2-STO)RQ/GTORQ/GT1 (ВД/Ёо) (Ёб/ЁГ)Выход (z)Вход/выходВыход (z)Вход/выходЛинии состояния, характеризуют тип выполняемого цикла; необходимы для выработки управляющего сигнала Запрос/предоставление, используется для обмена сигналами между процессорами в многопроцессорной системе, для управления процедурой использования шин
S2,S1,SO (ST2-STO)
RQ/GTO
RQ/GT1 (ВД/Ёо) (Ёб/ЁГ)
S2,S1,SO (ST2-STO)
RQ/GTO
RQ/GT1 (ВД/Ёо) (Ёб/ЁГ)
Выход (z)
Вход/выход
Выход (z)
Вход/выход
LOCK Блокировка (занятость) шины, инфор- Выход мирует другие процессоры и устройства о том, что они не должны запрашивать шину
QS1.QSO Состояние очереди, указывает состоя- Выход ние внутренней 6-байтовой очереди команд МП
Сигналы S4, S3 могут использоваться для расширения адресного пространства системы. В этом случае отдельный банк памяти объемом 1 Мбайт выделяется каждому из четырех сегментов. К линиям S4, S3 подключается дешифратор, который выбирает соответствующий банк памяти. Такой прием обеспечивает расширение адресной памяти до 4 Мбайт и защиту от ошибочной записи в сегмент, перекрывающийся с другими сегментами.
Сигнал S5 соответствует состоянию флага разрешения прерываний IF:0 — прерывания запрещены, 1 — прерывания разрешены. Этот сигнал аналогичен выходу разрешения прерывания INTE микропроцессора ВМ80. Сигнал S6 не используется и всегда равен нулю.
ВНЕ— разрешение старшего байта. Формируется в первом такте цикла одновременно с адресной информацией. Активный сигнал нулевого уровня
ВНЕ означает, что по старшей половине AD15—AD8 шины адреса/данных
передаются 8-битовые данные. Сигнал ВНЕ защелкивается во внешнем регистре адреса и используется как дополнительный адресный выход, определяющий доступ к старшему банку памяти либо к ВУ с байтовой организацией, подключенному к старшей половине шины AD. Совместное использование ВНЕ и младшей линии адреса АО для дешифрации адресов позволяет осуществлять
Таблица 1.8Таблица 1.8S4S3 Сегментный регистрS4S3 Сегментный регистр0 0ES0 1S310CS11DS0 0ES0 1S310CS11DSВНЕАОРазрядность данных00Все слово (оба байта)01Стараий байт D15-D8, нечетный адрес10Мдадеий байт D7-D0, четный адрес11Нет обраценияВНЕАОРазрядность данных00Все слово (оба байта)01Стараий байт D15-D8, нечетный адрес10Мдадеий байт D7-D0, четный адрес11Нет обраценияТаблица 1.9Таблица 1.9
Таблица 1.8
Таблица 1.8
S4S3 Сегментный регистр
S4S3 Сегментный регистр
0 0ES
0 1S3
10CS
11DS
0 0ES
0 1S3
10CS
11DS
ВНЕ
АО
Разрядность данных
0
0
Все слово (оба байта)
0
1
Стараий байт D15-D8, нечетный адрес
1
0
Мдадеий байт D7-D0, четный адрес
1
1
Нет обрацения
ВНЕ
АО
Разрядность данных
0
0
Все слово (оба байта)
0
1
Стараий байт D15-D8, нечетный адрес
1
0
Мдадеий байт D7-D0, четный адрес
1
1
Нет обрацения
Таблица 1.9
Таблица 1.9
передачу слов или отдельных байтов по шине AD (табл. 1.9). Отметим, что после окончания сигнала ВНЕ на выход подается резервный сигнал состояния S7, не имеющий определенного значения.
ALE — строб адреса (разрешение защелкивания адреса), выдается в начале каждого цикла шины и используется для записи адреса в регистр-защелку, т. е. для демультиплексирования шины AD.
DEN (или DE) —строб данных (разрешение передачи данных). Выдается в циклах чтения, записи и разрешения выхода шинных формирователей.
RD — чтение, идентифицирует выполнение цикла чтения из ЗУ или ВУ (в зависимости от значения сигнала М/Ю). Указывает этим устройствам на необходимость выдачи данных на шину.
WR— запись, указывает на выполнение цикла записи в ЗУ или ВУ и сопровождает данные, выдаваемые микропроцессором на шину.
М/Ю— является признаком обращения к ЗУ (М/Ю=1) или ВУ (М/Ю = 0) и используется для разделения адресного пространства памяти и ввода/вывода. Значение М/Ю = 0 появляется только при выполнении команд ввода (IN) и вывода (OUT).
DT/R— передача/прием данных, определяет направление_ передачи по шине AD:DT/R = 1 — запись данных из МП в ОЗУ или ВУ, DT/R = 0 — чтение данных из ЗУ или ВУ в МП. Предназначен для управления шинными формирователями и действует на протяжении всего цикла шины, как и сигнал М/Ю.От- метим, что направление передачи данных через шинные формирователи может также определяться с помощью сигналов RD и WR, но они имеют меньшую длительность и поэтому менее удобны.
HOLD — запрос шины (запрос захвата) от внешней подсистемы (ВУ или контроллера прямого доступа к памяти).
HLDA — подтверждение захвата шины, выдается в ответ на сигнал HOLD после приостанова вычислительного процесса в МП и перевода шины AD и некоторых управляющих сигналов в г-состояние. При HLDA=1 подсистема,
инициирующая запрос захвата, может использовать шину самостоятельно. После установления HOLD = 0 ЦП выдает сигнал HLDA = 0, возобновляет управление шиной и продолжает работу по программе.
NMI — немаскируемое прерывание, распознается микропроцессором по завершению текущей команды независимо от состояния флага разрешения прерывания IF. Этот вход предназначен для сигнализации о некоторых критических ситуациях, например об аварийном отключении сетевого питания.
INTR — запрос прерывания (маскируемый), опрашивается центральным процессором в конце выполнения каждой команды, если прерывания разрешены (IF = 1) и фиксируется во внутреннем триггере. Обычно на вход INTR подается запрос от программируемого контроллера прерываний К1810ВН59А. Если IF = 0, то запрос по входу INTR игнорируется.
INTA — подтверждение запроса прерывания, формируется в ответ на принятый запрос прерывания INTR, выполняет функцию сигнала RD в цикле подтверждения прерывания и стробирует считывание указателя адреса (вектора) прерывания. В каждом случае подтверждения прерывания выполняются два цикла INTA, из которых первый является предварительным и не сопровождается чтением информации.
RDY — готовность, указывает на то, что адресуемое в данном цикле устройство готово к обмену данными. Если устройство не готово к взаимодействию с МП, оно выдает сигнал RDY = 0, и МП переходит в состояние ожидания. В этом случае между тактами ТЗ и Т4 цикла шины появляется необходимое число тактов ожидания TW. После установки сигнала RDY= 1 МП выходит из состояния ожидания и возобновляет работу.
TEST— проверка, используется вместе с командой ожидания WAIT, выполняя которую МП проверяет уровень сигнала TEST. Если TEST = 0, МП переходит к выполнению следующей по порядку команды. Если TEST = 1, МП вводит холостые такты TI и периодически, с интервалом 5Т, проверяет значение сигнала TEST. Команда WAIT и сигнал TEST обеспечивают синхронизацию работы МП с внешними сигналами: TEST — вход программной проверки, RDY — вход аппаратной проверки готовности устройств в системе.
СЕК —тактовая синхронизация (тактирование). Сигнал синхронизации от внешнего генератора тактовых импульсов, предназначен для синхронизации МП. Используется серия тактовых импульсов СЕК с периодом повторения Т, равным 200—500 нс.
RESET — сброс, переводит МП в определенное начальное состояние, в котором сброшены сегментные регистры (кроме CS, все разряды которого устанавливаются в единичное состояние), указатель команд IP, все флаги, регистры очереди команд и все внутренние триггеры в устройстве управления. Сигнал RESET не влияет на состояние общих регистров, которые устанавливаются в начальное состояние программным путем. На время действия сигнала RESET все выходы, имеющие три состояния, переводятся в третье состояние, а выходы, имеющие два состояния, становятся пассивными. Минимальная продолжительность сигнала RESET при первом включении МП составляет 50 мкс, а при повторном запуске — четыре такта синхронизации. После снятия сигнала RESET работа МП возобновляется из начального состояния.
MN/MX — минимальный/максимальный режимы. Сигнал на этом входе определяет режим работы МП: 1 — минимальный, 0 — максимальный, когда изменяются функции восьми управляющих сигналов.
В максимальном режиме действуют следующие управляющие сигналы.
S2—SO —сигналы состояния, обеспечивающие информацию о типе выполняемого цикла шины (табл. 1.10). Сигналы состояния подаются в контроллер шины, который дешифрует их и формирует расширенный набор управляющих сигналов. Если МП не инициирует цикл шины, то сигналы S2—S0 устанавливаются в пассивное состояние 111. Отметим, что сигнал S2 логически эквивалентен сигналу М/Ю, a S1 — сигналу DT/R.
QS1 —QS0 — состояние очереди. Идентифицирует состояние внутренней 6-байтовой очереди команд МП (табл. 1.11) и действует в течение такта синхронизации после выполнения операции над очередью. Сигналы QS1 — QS0 предназначены для сопроцессора, который воспринимает команды и операнды с помощью команды ESC. Сопроцессор контролирует шину AD и фиксирует момент, когда из программной памяти выбирается предназначенная для него команда ESC, а затем следит за очередью команд и определяет момент, когда эта команда должна выполняться.
Таблица
1.10
Таблица 1.11
S2
S1
S0
Тип цикла
ШИНЫ
QS1
QS0
Операция над очередью
0 0
0 0
0 0 1
1
0 1
0 1
Подтверхдение Чтение ВУ Запись ВУ Останов
прерывания
0
0
0
1
Операции нет, в последнем такте не было выборки из очереди Из очереди выбран первый байт команд
1
1
1
1
0 0
1 1
0 1 0 1
Выборка команды Чтение ЗУ Запись ЗУ Цикла шины нет
1
1
0
1
Очередь пуста, была опустошена командой передачи управления Из очереди выбран следуюций байт команды
RQ/GT1 — RQ/GT0 — запрос/представление (подтверждение, разрешение). Две одинаковые двунаправленные линии, каждая из которых может использоваться для передачи импульсных сигналов запроса/разрешения доступа к локальной шине (каналу). Процесс доступа к шине осуществляется в следующем порядке: 1) устройство, подключенное к локальной шине и требующее доступа к общим ресурсам, формирует запросный (первый) импульс длительностью один такт; 2) в конце текущего цикла МП выдает ответный (второй) импульс, подтверждающий возможность доступа к локальной шине. В следующем такте МП переводит шины адреса/данных и управления в высокоомное состояние и отключается от канала; 3) по окончании работы с каналом устройство выдает на ту же линию импульс (третий), указывающий на окончание захвата канала. В следующем такте МП возобновляет управление шиной и продолжает вычисления.
Все три импульса имеют одинаковую длительность и низкий активный уровень. Сигналы на линиях независимы, однако линия RQ/GT0 имеет более высокий приоритет, чем линия RQ/GT1, когда запросы поступают одновременно. Но если на линии RQ/GT0 появляется запрос в то время, когда МП на-
ходится в состоянии захвата по сигналу RQ/GT1, то этот запрос захвата не получает подтверждения до освобождения шины по линии RQ/GT1. Таким образом, каждая из двух рассмотренных линий служит для установления режима захвата шин и в этом отношении эквивалентна паре линий HOLD и HL- DA МП К1810ВМ86 в минимальном режиме.
LOCK — блокировка шины, информирует устройства системы, что они не должны пытаться запрашивать шину. Формируется однообайтовым префиксом LOCK, располагаемым перед командой, и действует до конца выполнения этой команды, запрещая доступ к системной магистрали другим устройствам, в частности другим процессорам. При подтверждении запроса шины
выходной буфер сигнала LOCK переводится в третье состояние.
Префикс LOCK не влияет на прерывания. Если при наличии блокировки внешняя система запрашивает шину по линиям RQ/GT, МП фиксирует запрос, но не подтверждает его до завершения команды, имеющей префикс блокировки. Программисты обычно используют этот префикс, когда необходимо идентифицировать состояние разделяемых ресурсов системы. Префикс LOCK может использоваться и в минимальном режиме, когда внешний сигнал блокировки LOCK отсутствует. В этом случае генерирование подтверждения HLDA на запрос шины HLD задерживается до завершения выполняемой команды.
Структура микропроцессора
Укрупненная структурная схема МП ВМ86 (рис. 1.2) содержит две относительно независимые части: операционное устройство, реализующее заданные командой операции, и устройство шинного интерфейса, осуществляющее выборку команд из памяти, а также обращение к памяти и внешним устройствам для считывания операндов и записи результатов. Оба устройства могут работать параллельно, что обеспечивает совмещение во времени процессов выборки и исполнения команд. Это повышает быстродействие МП, так как операционное устройство, как правило, выполняет команды, коды которых уже находятся в МП, и поэтому такты выборки команды не включаются в ее цикл.
Операционное устройство МП содержит группу общих регистров, арифметико-логическое устройство (АЛУ), регистр флагов F и блок управления.
Восемь 16-битовых регистров общего назначения участвуют во многих командах. В этих случаях регистры общего назначения кодируются трехбитовым кодом, который размещается в соответствующем поле (или полях) формата команды.
В соответствии с основным назначением рассматриваемых регистров выделяют регистры АХ, ВХ, СХ, DX, используемые прежде всего для хранения данных, и регистры SP, BP, SI, DI, которые хранят главным образом адресную информацию. Особенностью регистров АХ, ВХ, СХ, DX является то, что они допускают раздельное использование их младших байтов AL, BL, CL, DL и старших байтов АН, ВН, CH, DH. Тем самым обеспечивается возможность обработки как слов, так и байтов и создаются необходимые условия для программной совместимости ВМ86 и ВМ80. Соответствие регистров этих двух микропроцессоров указано в табл. 1.12, где FL — младший байт регистра F.
RESET READY HLDA (RQ/GTI) INTR
Рис. 1.8. Структурная схема МП ВМ86
Все остальные регистры являются неделимыми и оперируют 16-битовыми словами, даже в случае использования только старшего или младшего байтов. Указательные регистры SP и ВР хранят смещение адреса в пределах текущего стекового сегмента памяти, а индексные регистры SI и DI хранят смещение адреса соответственно в текущем сегменте данных и в текущем дополнительном сегменте. Однако при использовании этих регистров для адресации операндов возможна смена сегментов памяти (см. в табл. 1.14).
Таблица 1.12
Регистр ВМ80 ABCDEBLSPPCF
Регистр ВМ86 AL CH CL DH DL ВН BL SP IP FL
Кроме основных функций, соответствующих названию регистров, общие регистры выполняют специальные функции, указанные в табл. 1.13.
Арифметическо-логическое устройство (АЛУ) содержит 16-битовый комбинационный сумматор, с помощью которого выполняются арифметические операции, наборы комбинационных схем для выполнения логических операций, схемы для операций сдвигов и десятичной коррекции, а также регистры для временного хранения операндов и результатов.
Регистр
Название
Специальная функция регистра
АХ
Аккумулятор
Умножение, деление и ввод - вывод слов
AL
Аккумулятор
Умножение, деление и ввод - вывод бай-
(младший байт)
тов; преобразование байтов; десятичная арифметика
АН
Аккумулятор (старший байт)
Умножение и деление слов
вх
Вазовый регистр
Адресация по базе; преобразование адресов
СХ
Счетчик
Подсчет циклов; подсчет элементов цепочек
CL
Счетчик (младший байт)
Реализация параметрических сдвигов
DX
Регистр данных
Умножение и деление слов; косвенный ввод - вывод
SP
Указатель стека
Операции с использованием стека
ВР
Указатель базы
Базовый регистр
SI
Индекс источника
Указатель цепочки-источника, индексный регистр
DI
Индекс приемника
Указатель цепочки-приемника, индексный регистр
КАЛУ примыкает регистр флагов F (рис. 1.3, где X обозначает неопределенное состояние бита). Его младший байт FL полностью соответствует регистру флагов К580ВМ80, а старший байт FH содержит четыре флага, отсутствующие в К580ВМ80. Шесть арифметических флагов фиксируют определенные признаки результата выполнения операции (арифметической, логической, сдвига или загрузки регистра флагов). Значения этих флагов (кроме флага AF) используются для реализации условных переходов, изменяющих ход выполнения программы. Различные команды влияют на флаги по-разному (см. табл. 2.7).
FH FL
15 14 13 12 И 10 S 8
7 6 5 4 3 21 0
х 1X IX Iх |of|df|if|tf
SF|ZF| X|AF| X|PF| X| CF
Рис. 1.3. Формат регистра флагов F
Назначение арифметических флагов.
CF — флаг переноса, фиксирует значение переноса (заема), возникающего при сложении (вычитании) байтов или слов, а также значение выдвигаемого бита при сдвиге операнда.
PF — флаг четности (или паритета), фиксирует наличие четного числа единиц в младшем байте результата операции, может быть использован, например, для контроля правильности передачи данных.
AF — флаг вспомогательного переноса, фиксирует перенос (заем) из младшей тетрады, т. е. из бита аз, в старшую при сложении (вычитании), используется только для двоично-десятичной арифметики, которая оперирует исключительно младшими байтами.
ZF — флаг нуля, сигнализирует о получении нулевого результата операции.
SF — флаг знака, дублирует значение старшего бита результата, который при использовании дополнительного кода соответствует знаку числа.
OF — флаг переполнения, сигнализирует о потере старшего бита результата сложения или вычитания в связи с переполнением разрядной сетки при работе со знаковыми числами. При сложении этот флаг устанавливается в еди-
ницу, если происходит перенос в старший бит и нет переноса из старшего бита или имеется перенос из старшего бита, но отсутствует перенос в него; в противном случае флаг OF устанавливается в нуль. При вычитании он устанавливается в единицу, когда возникает заем из старшего бита, но заем в старший бит отсутствует либо имеется заем в старший бит, но отсутствует заем из него. Имеется специальная команда прерывания при переполнении, которая в указанных случаях генерирует программное прерывание.
Для управления некоторыми действиями МП предназначены три дополнительных флага.
DF — флаг направления, управляемый командами CLD и STD; определяет порядок обработки цепочек в соответствующих командах: от меньших адресов (DF = 0) или от больших (DF=1).
IF — флаг разрешения прерываний, управляемый с помощью команд CLI и STI; при IF=1 микропроцессор воспринимает (распознает) и соответственно реагирует на запрос прерывания по входу INTR; при IF = 0 прерывания по этому входу запрещаются (маскируются) и МП игнорирует поступающие запросы прерываний. Значение флага IF не влияет на восприятие внешних немаскируемых прерываний по входу NMI, а также внутренних (программных) прерываний, выполняемых по команде INT.
TF — флаг трассировки (прослеживания). При TF=1 МП переходит в покомандный (пошаговый) режим работы, применяемый при отладке программ, когда автоматически генерируется сигнал внутреннего прерывания типа 1 (см. рис. 1.5) после выполнения каждой команды с целью перехода к соответствующей подпрограмме, которая обычно обеспечивает индикацию содержимого внутренних регистров МП. Команды установки или сброса флага TF отсутствуют, так что управление этим флагом осуществляется опосредованно, путем пересылки содержимого регистра флагов F через стек в общий регистр, установки требуемого значения восьмого бита и обратной пересылки сформированного слова в регистр F.
Управляющее устройство (УУ) дешифрует команды, а также воспринимает и вырабатывает необходимые управляющие сигналы. В его состав входит блок микропрограммного управления, в котором реализовано программирование МП на микрокомандном уровне.
Устройство шинного интерфейса (или просто шинный интерфейс) содержит блок сегментных регистров, указатель команд, сумматор адресов, очередь команд и буферы, обеспечивающие связь с шиной. Шинный интерфейс выполняет операции обмена между МП и памятью или портами ввода — вывода по запросам операционного устройства. Когда операционное устройство занято выполнением команды, шинный интерфейс самостоятельно инициирует опережающую выборку кодов очередных команд из памяти.
Очередь команд представляет собой набор байтовых регистров и выполняет роль регистра команд, в котором хранятся коды, выбранные из программной памяти. Длина очереди составляет 6 байт, что соответствует максимально длинному формату команд. Наличие очереди команд, а также способность операционного устройства и шинного интерфейса работать параллельно позволяют совместить во времени фазы выборки команды и выполнения заданной операции: пока одна команда исполняется в операционном устройстве, шинный интерфейс осуществляет выборку следующей команды. Таким образом достигаются высокая плотность загрузки шины и повышение скорости выпол-
нения программы. Пример, иллюстрирующий реализацию описанного конвейерного принципа, дан на рис. 1.4, где TI обозначает холостые такты работы шины, когда очередь команд заполнена, а операционное устройство занято выполнением текущей команды и не запрашивает выполнения цикла шины.
Шинный интерфейс инициирует выборку следующего командного слова автоматически, как только в очереди освободятся два байта. Как правило, в очереди находится минимум один байт потока команд, так что операционное устройство не ожидает выборки команды. Ясно, что опережающая выборка команд позволяет экономить время только при естественном порядке выполнения команд. Когда операционное устройство выполняет команду передачи управления (перехода) в программе, шинный интерфейс сбрасывает очередь, выбирает команду по новому адресу, передает ее в операционное устройство, а затем начинает заполнение (реинициализацию) очереди из следующих ячеек памяти. Эти действия предпринимаются в условных и безусловных переходах, вызовах подпрограмм, возвратах из подпрограмм и при обработке прерываний.
Выборка Запись Выборка Выборка TI Ввод TI Выборка
, Выпол-
Выполнение ^ Выполнение "~ — ^Выполнением нение
оч I--Л——П11— --I
г34
Рис. 1.4. Пример конвейерного выполнения команд
По мере необходимости операционное устройство считывает байт из очереди и выполняет предписанную командой операцию. При многобайтовых командах из очереди считываются и другие байты команды. В тех редких случаях, когда к моменту считывания очередь оказывается пустой, операционное устройство ожидает выборку очередного командного слова, которую инициирует шинный интерфейс. Если команда требует обращения к памяти или порту ввода — вывода, операционное устройство запрашивает шинный интерфейс на выполнение необходимого цикла шины для передачи данных. Когда шинный интерфейс не занят выборкой команды, он удовлетворяет запрос немедленно; в противном случае операционное устройство ожидает завершения текущего цикла шины. Со своей стороны, шинный интерфейс приостанавливает выборку команд во время обмена данными между операционным устройством и памятью или портами ввода — вывода.
Буфер шины адреса/данных (БАД) содержит 16 двунаправленных управляемых усилителей с тремя выходными состояниями и обеспечивает номинальную нагрузочную способность линий AD15 — AD0.
Буфер шины адреса/состояния (БАС) содержит четыре однонаправленных усилителя с тремя выходными состояниями и обеспечивает номинальную нагрузочную способность линий A19/S6 — A16/S3.
Сегментные регистры хранят базовые (начальные) адреса сегментов памяти: кодового сегмента CS, в котором содержится программа; стекового сегмента SS; сегмента данных DS; дополнительного сегмента ES, в котором обычно содержатся данные. Наличие сегментных регистров обусловлено разделением памяти на сегменты и используемым способом формирования адресов памяти. Хотя МП имеет 20-битовую шину физического адреса памяти, он оперирует 16-битовыми логическими адресами, состоящими из базового адреса сегмента
и внутрисегментного смещения. Внутрисегментное смещение может быть вычислено в соответствии с указанным в команде способом адресации, может находиться в формате команды или содержаться в общем регистре. Физический адрес формируется путем суммирования смещения и содержимого соответствующего сегментного регистра, которое дополняется четырьмя нулевыми младшими разрядами..
Сумматор адресов осуществляет вычисление 20-битовых физических адресов.
Указатель команд IP хранит смещение следующей команды в текущем кодовом сегменте, т. е. указывает на следующую по порядку команду. Он является аналогом стандартного программного счетчика с той лишь разницей, что его содержимое определяет адрес команды лишь в совокупности с содержимым регистра CS; если же CS заполнен нулями, аналогия становится полной. Модификация IP осуществляется шинным интерфейсом так, что при обычной работе IP содержит смещение того командного слова, которое шинный интерфейс будет выбирать из памяти. Оно не совпадает со смещением очередной команды (находящейся в этот момент на выходе очереди команд), которую будет выполнять операционное устройство. Поэтому при запоминании содержимого IP в стеке, например при вызове подпрограмм, оно автоматически корректируется, чтобы адресовать следующую команду, которая будет выполняться. Эта особенность является следствием опережающей выборки команд, реализованной в ВМ86. Непосредственный доступ к IP имеют команды передачи управления.
Адресное пространство памяти и ввода — вывода
Размещение байтов и слов в памяти. Память логически организована как одномерный массив байтов, каждый из которых имеет 20-битовый физический адрес в диапазоне 00000 — FFFFF. (Для записи адресов здесь и далее используется 16-ричная система счисления.) Любые два смежных байта в памяти могут рассматриваться как 16-битовое слово. Младший байт слова имеет меньший адрес, а старший — больший. Такое размещение байтов слова используется также в ВМ80 и в большинстве современных микроЭВМ. Адресом слова считается адрес его младшего байта. Таким образом, 20-битовый адрес памяти может рассматриваться и как адрес байта, и как адрес слова.
01000
84
01001
37
имежение з<оч
01002
20
01003
АО
LolMoH" HUgU
1——
70I170I1Рис. 1.5. Размещение слое в памятиРис. 1.5. Размещение слое в памятиПолная информация, необходимая для определения физического адреса, содержится в адресном объекте «сегмент : смещение», который называется указателем адреса и содержит адрес сегмента и внутрисегментное смещение. Для запоминания указателя адреса требуется два слова памяти, причем слово с меньшим адресом всегда содержит смещение, а слово с большим адресом — базовый адрес сегмента (рис. 1.5). Каждое слово хранится обычным образом, т. е. по принципу «младший байт — по меньшему адресу».
70
I1
70
I1
Рис. 1.5. Размещение слое в памяти
Рис. 1.5. Размещение слое в памяти
Команды, байты и слова данных можно свободно размещать по любому адресу, что позволяет экономить память благодаря ее плотной упаковке. Однако для экономии времени выполнения программы целесообразно размещать слова данных в памяти по четным адресам, так как МП передает такие слова за один
цикл шины. Слово с четным адресом называется выравненным на границе слов. Слова с нечетными адресами (невыравненные) также допустимы, но для их передачи требуются два цикла шины, что снижает производительность МП. (Каждый цикл имеет четыре обязательных такта Т.) Отметим, что шинный интерфейс инициирует необходимое для выборки слова число обращений к памяти автоматически, так что двукратное обращение к памяти не требует специального указания в программе. Особенно важно иметь выравненные слова для операций со стеком, так как в них участвуют только слова. Следовательно, указатель стека SP необходимо всегда инициализировать на четный адрес.
Команды всегда выбираются словами по четным адресам, за исключением первой выборки после передачи управления по нечетному адресу, когда выбирается один байт. Поток команд разделяется на байты при заполнении очереди команд внутри МП, так что выравнивание команд не влияет на производительность и поэтому не используется.
Сегментация памяти и вычисление адресов. Пространство памяти емкостью 1 Мбайт представляется как набор сегментов, определяемых программным путем. Сегмент состоит из смежных ячеек памяти и является независимой и отдельно адресуемой единицей памяти емкостью 64 Кбайт. Каждому сегменту программой назначается начальный (базовый) адрес, являющийся адресом первого байта сегмента в пространстве памяти. Начальные адреса четырех сегментов, выбранных в качестве текущих, записываются в сегментные регистры CS, DS, SS и ES, тем самым фиксируются текущие сегменты кода (программы), данных, стека и дополнительных данных. Для обращения к командам и данным, находящимся в других сегментах, необходимо изменять содержимое сегментных регистров, что позволяет использовать все пространство памяти емкостью 1 Мбайт. Сегментные регистры инициализируются в начале программы путем засылки в них соответствующих констант. Частный случай загрузки всех сегментных регистров нулями приводит к организации памяти, характерной для ВМ80, т. е. фактически к отказу от сегментации памяти.
В сегментном регистре хранится 16 старших битов 20-битового начального адреса сегмента. Четыре младших бита адреса принимаются равными нулю и дописываются справа к содержимому сегментного регистра при вычислении физических адресов ячеек памяти. Поэтому начальные адреса сегментов всегда кратны 16. Поскольку других ограничений на размещение сегментов в памяти нет, сегменты могут быть соседними (смежными), неперекрывающимися, частично или полностью перекрывающимися. Физическая ячейка памяти может принадлежать одному или нескольким сегментам.
Физический адрес ячейки памяти представляет 20-битовое число в диапазоне 0 — FFFFF, которое однозначно определяет положение каждого байта в пространстве памяти емкостью 1 Мбайт. В начале каждого цикла шины, связанного с обращением к памяти, физический адрес выдается на шину адреса и сопровождается сигналом ALE. Так как МП ВМ86 является 16-битовым, то все операции при вычислении физического адреса производятся с 16-битовыми адресными объектами.
Логический адрес ячейки памяти состоит из двух 16-битовых беззнаковых значений: начального адреса сегмента, который называется также просто базой или сегментом, и внутрисегментного смещения, которое определяет расстояние от начала сегмента до этой ячейки . Для вычисления физического адреса база сегмента сдвигается влево на 4 бит и суммируется со смещением, как по-
казано на рис. 1.6, где также приведены возможные источники компонентов логического адреса (ЕА — эффективный адрес, вычисляемый в соответствии с заданным способом адресации).
Перенос из старшего бита, который может возникнуть при суммировании, игнорируется. Это приводит к так называемой кольцевой организации памяти, при которой за ячейкой с максимальным адресом FFFFF следует ячейка с нулевым адресом. Аналогичную кольцевую организацию имеет и каждый сегмент.
Рис. 1.6. Вычисление физического адреса
Источники логического адреса для различных типов обращения к памяти приведены в табл. 1.14. Команды всегда выбираются из текущего сегмента кода в соответствии с логическим адресом CS: IP. Стековые команды всегда обращаются к текущему сегменту стека по адресу SS:SP. Если при вычислении адреса ЕА используется регистр ВР, то обращение производится также к стековому сегменту. В последнем случае принцип стека «первый пришел — последний вышел» игнорируется и ячейки стекового сегмента рассматриваются как ОЗУ с произвольной выборкой, что обеспечивает большую гибкость в использовании этих ячеек.
Таблица 1.14
Тип обращения к памяти
СегментВариант Смещение
(по умолчанию)
Выборка команды Стековая операция Переменная Цепочка-источник Цепочка-приемник ВР как базовый регистр
CSНетIP
S3НетSP
DSCS,SS,ESЕА
DSCS,SS,ESSI
ESНетDI
ESCS,SS,DSEA
Операнды, как правило, размещаются в текущем сегменте данных, и обращение к ним организуется по адресу DS:EA. Однако программист может заставить МП обратиться к переменной, находящейся в другом текущем сегменте. Считается, что цепочка-источник находится в текущем сегменте данных, а ее смещение задается регистром SI. Цепочка-получатель обязательно располагается в текущем дополнительном сегменте, а смещение берется из регистра DI. Команды обработки цепочек автоматически модифицируют содержимое индексных регистров SI и DI по мере продвижения по цепочке в направлении, соответствующем флагу DF.
Смена сегментного регистра в соответствии с вариантами, указанными в табл. 1.14, осуществляется с помощью однобайтового префикса замены сегмента 001SR110, который ставится перед первым байтом команды. Двухбитовое поле SR содержит код сегментного регистра, используемого для вычисления физического адреса в данной команде: 00 — регистр ES; 01 —CS, 10 — SS; 11 — DS. В мнемонических обозначениях команд смена сегмента отражается следующим образом: MOV АХ, CS: [ВХ] — пересылка в АХ слова из кодового сегмента со смещением из ВХ; ADD ES:ROW[DI], BL — сложение байта из дополнительного сегмента (со смещением + ROW) с содержимым регистра BL и размещение результата в ОЗУ на место первого слагаемого.
Сегментная структура памяти обеспечивает возможность создания позиционно независимых или динамически перемещаемых программ, что необходимо в мультипрограммной среде для эффективного использования оперативной памяти. Чтобы обеспечить позиционную независимость, все смещения в программе должны задаваться относительно фиксированных значений, содержащихся в сегментных регистрах. Это позволяет произвольно перемещать программу в адресном пространстве памяти, изменяя только содержимое сегментных регистров.
Стек, как обычно, организуется в ОЗУ, и его положение определяется содержимым регистров SS и SP. Регистр SS хранит базовый адрес текущего сегмента стека, а регистр SP указывает на вершину стека, т. е. содержит смещение вершины стека в стековом сегменте. При каждом обращении к стеку пересылается одно слово, причем содержимое SP модифицируется автоматически: при записи (включении) в стек оно уменьшается на два, при чтении (извлечении) из стека — увеличивается на два.
При всех достоинствах принятой в ВМ86 организации памяти она имеет некоторый недостаток, заключающийся в трудности манипуляции физическими адресами при необходимости их программной обработки.
Организация ввода — вывода. Ввод и вывод данных может осуществляться двумя способами: с использованием адресного пространства ввода — вывода, и с использованием общего с памятью адресного пространства, т. е. с отображением на память.
При первом способе применяются специальные команды IN (ввод) и OUT (вывод), которые обеспечивают передачу данных между аккумуляторами AL или АХ и адресуемыми портами. При выполнении этих команд вырабатывается сигнал М/Ю = 0, который идентифицирует выбор пространства ввода — вывода и в совокупности с сигналами WR и RD позволяет сформировать системные сигналы IOW и IOR для управления операциями записи данных в порт и чтения из порта.
Команды IN и OUT могут использовать прямую адресацию (по аналогии с одноименными командами ВМ80), когда адрес порта содержится в виде константы во втором байте команды, и косвенную адресацию, когда адрес располагается в регистре DX. В первом случае можно адресовать по 256 портов для ввода и вывода данных. Во втором обеспечивается адресное пространство до 64К 8-битовых портов или до 32К 16-битовых портов. Косвенная адресация позволяет вычислять адреса портов при выполнении программы и удобна при организации вычислительных циклов для обслуживания нескольких портов с помощью одной процедуры.
Восемь ячеек F8 — FF в пространстве ввода — вывода зарезервированы для системных целей, и использовать их в прикладных программах не рекомендуется.
При втором способе адреса портов размещаются в общем адресном пространстве, и обращение к ним не отличается от обращения к ячейка^ памяти. Это повышает гибкость программирования, так как для ввода — вывода можно использовать любую команду с обращением к памяти при любом способе адресации. Так, команда MOV позволяет передавать данные между любым общим регистром или ячейкой памяти и портом ввода — вывода, а логические команды AND, OR, XOR и TEST позволяют манипулировать битами в регистре порта. При этом, однако, следует учитывать, что команды с обращением к памяти имеют больший формат и выполняются дольше, чем простые команды IN и OUT. Кроме того, несколько усложняется дешифрирование 20-битового физического адреса порта и сокращается число адресов, которые могут использоваться для ячеек памяти.
Микропроцессор может передавать по шине байт или слово в/из ВУ. Чтобы слово передавалось за один цикл шины, адрес ВУ должен быть четным. Адрес байтового ВУ может быть четным или нечетным, и соответственно порты этих внешних устройств подключаются к линиям младшего и старшего байта шины данных. Для раздельного обращения к этим портам дешифрирование адресов осуществляется с учетом сигналов на линиях ВНЕ и АО.
Организация прерываний
Общие сведения о системе прерываний. Микропроцессор ВМ86 имеет эффективную систему прерываний, в которой каждому прерыванию поставлен в соответствие код (от 0 до 255), который идентифицирует тип прерывания. Прерывания могут инициироваться внешними устройствами (внешние прерывания) или командами программных прерываний, а в некоторых ситуациях— автоматически самим МП (внутренние прерывания). Возможные источники прерываний показаны на рис. 1.7.
Рис. 1.7. Источники прерываний
Прерывание заставляет МП временно прекратить выполнение текущей программы и перейти к выполнению подпрограммы обработки прерывания, которая считается более важной или срочной. Возобновление прерванной программы должно быть произведено так, будто прерывание отсутствовало.
Для этого в стеке запоминается адрес возврата (CS и IP) и содержимое регистра флагов F, а также содержимое тех регистров, которые потребуются для выполнения подпрограммы обработки прерывания. Содержимое регистров CS, IP и F запоминается и восстанавливается автоматически, а для запоминания и последующего восстановления содержимого Других регистров МП должны быть предусмотрены соответствующие команды в начале и конце подпрограммы обработки прерываний. Следует отметить, что в стек включается скорректированное содержимое указателя команд IP, соответствующее адресу команды, перед которой МП начал обслуживать прерывание. Необходимость коррекции вызвана тем, что IP адресует команды с опережением из-за существования внутренней очереди команд.
Внешние прерывания. Запросы на внешние прерывания поступают в МП по двум входам: INTR и NMI, и сами прерывания делятся соответственно на маскируемые и немаскируемые. Запросы на маскируемые прерывания от ВУ обычно поступают на входы программируемого контроллера прерываний (ПКП) К1810ВН59А, который формирует сигнал, подаваемый на вход, INTR. Отметим, что этот ПКП может использоваться как с МП ВМ86, так и с ВМ80, причем его работа существенно зависит от типа МП. При работе с ВМ80 контроллер в ответ на первый сигнал подтверждения прерывания INTA1 выставляет на шину данных код команды CALL. В МП этот код инициирует еще два сигнала: INTA2 и INTA3, по которым ПКП выдает два байта адреса подпрограммы. При работе с ВМ86 в ответ на сигнал INTA1 ПКП не выдает данных в микропроцессор и буфер данных ПКП остается в высокоомном состоянии. По сигналу INTA2 ПКП посылает в микропроцессор байт, определяющий тип (вектор) прерывания.
Когда устанавливается сигнал INTR = 1, действия МП зависят от состояния флага IF разрешения прерываний. Однако до завершения текущей команды МП, как правило, не предпринимает никаких действий.
Имеется несколько случаев, когда сигнал INTR распознается только при завершении следующей команды. Префиксы повторения, блокировки шины и замены сегмента считаются частью команды, поэтому прерывание между префиксом и командой не воспринимается. Команды пересылки в сегментный регистр MOV sr, src и извлечения из стека в сегментный регистр POP sr рассматриваются аналогично: прерывание не распознается до завершения следующей за ними команды. Это необходимо для правильной смены сегмента, когда осуществляется перезагрузка сегментного регистра и регистра, определяющего смещение в сегменте (например, регистров SS и SP).
Имеются два особых случая, когда запрос прерывания распознается во время выполнения команды, относящихся к цепочечной команде с повторением и к команде WAIT, которые могут выполняться в течение значительного времени. В этих случаях прерывания воспринимаются после любой законченной цепочечной операции (т. е. после очередной операции с элементом цепочки) или после цикла проверки сигнала на входе TEST (каждый цикл проверки занимает время 5Т).
Если IF = 0, т. е. прерывания по входу INTR запрещены (замаскированы), МП игнорирует запрос прерывания и переходит к следующей команде. Микропроцессор не запоминает состояние сигнала INTR, поэтому этот сигнал должен
оставаться активным, пока прерывающее ВУ не получит сигнала подтверждения INTA или само не снимет запрос. Если IF=1, то МП распознает запрос прерывания и обрабатывает его. Состоянием флага IF программист может управлять с помощью команд STI (установка) и CLI (сброс). Эти команды эквивалентны командам EI (разрешение прерывания) и DI (запрет прерывания) МП ВМ80. Кроме того, ПКП может осуществлять селективное маскирование запросов прерывания от отдельных устройств, если в контроллер послан соответствующий приказ.
Микропроцессор ВМ86 подтверждает запрос прерывания, выполняя два последовательных цикла INTA. Если в этих циклах появляется запрос шины по линии HOLD (в минимальном режиме) или RQ = G7 (в максимальном режиме), то он не воспринимается до завершения обоих циклов INTA. В максимальном режиме МП генерирует в этих циклах сигнал блокировки шины LOCK, чтобы другие процессоры не пытались запрашивать шину.
Запросы на немаскируемое прерывание поступают по входу NMI и обычно используются для прерывания работы МП при «катастрофических» событиях, требующих немедленной реакции, таких, как аварийное пропадание питания, обнаружение ошибки памяти и т. д. Вход NMI воспринимает переход сигнала от низкого уровня к высокому (положительный фронт), чтобы текущая программа не прерывалась от одного сигнала NMI = 1 несколько раз. Запросы NMI запоминаются в МП и имеют более высокий приоритет, чем прерывания по входу INTR. Обработка немаскируемого прерывания не зависит от состояния флага IF. Немаскируемому прерыванию присваивается фиксированный код типа 2, который автоматически формируется внутри МП. Поэтому в ответ на NMI циклы шины подтверждения прерывания INTA не формируются, что ускоряет реакцию МП на запросы немаскируемых прерываний.
Внешнее прерывание может появиться в произвольный момент времени, т. е. асинхронно по отношению к действиям МП. Время реакции МП, определяющее запаздывание обслуживания прерывания, зависит от времени завершения текущей команды. Наибольшее запаздывание может произойти при выполнении команд умножения, деления и параметрического сдвига на много битов. Основные параметры различных видов прерываний даны в табл. 1.15, где прерывания перечислены в порядке убывания их приоритетов.
Таблица 1.15
Вид прерывания
Тип прерывания
Приоритет
Время вызова подпрограммы прерывания
По ошибке деления
0
1
50
По команде INT п
5-31
1
51
По команде INTO
4
1
53
По команде INT 3
3
1
52
По входу NMI
2
2
50
По входу INTH
32 - 255
3
61
По флагу ТЕ
1
4
50
При анализе приоритетов необходимо учитывать маскируемость внешних прерываний по входу INTR,-4to может привести к перераспределению приоритетов. Если, например, одновременно возникают немаскируемое и маскируемое
прерывания, МП начинает выполнение немаскируемого прерывания как имеющего высший приоритет и маскирует внешние прерывания сбросом флага IF. В этом случае запрос по входу INTR принимается лишь по окончании обслуживания немаскируемого прерывания. Однако обслуживание запроса маскируемого прерывания может быть разрешено при выполнении подпрограммы обслуживания любого прерывания путем установки флага IF.
Внутренние прерывания характеризуются типом прерывания, который либо предопределен, либо содержится в коде команды, а также тем, что циклы шины подтверждения прерывания INTA не формируются и внутренние прерывания не могут быть запрещены (кроме пошагового прерывания).
Прерывание по ошибке деления (тип 0) генерируется микропроцессором сразу после выполнения команд деления DIV и IDIV, если формат частного превышает формат получателя или в случае деления на нуль. Время реакции МП на прерывание типа 0 и выполнения соответствующей подпрограммы следует учитывать при оценке продолжительности команды деления в наихудшем случае.
Прерывание по переполнению (тип 4) генерируется по однобайтовой команде INTO, если установлен флаг OF.
Пошаговое прерывание (тип 1) вырабатывается автоматически при TF = = 1 после выполнения каждой команды или пары команд, если первая команда изменяет содержимое сегментного регистра. Обычно это прерывание используется в программах отладки для реализации покомандного выполнения программы. При обработке прерывания МП включает в стек регистры F, CS и IP, а затем сбрасывает флаги IF и TF. Поэтому после вызова подпрограммы МП работает обычным образом, а не в пошаговом режиме. Подпрограмма обработки пошагового прерывания обычно осуществляет индикацию внутренних регистров МП и содержимого некоторых ячеек памяти. Когда подпрограмма завершается, из стека извлекаются прежние состояния флагов и МП снова переводится в пошаговый режим работы.
Как уже отмечалось, МП ВМ86 не имеет команд установки и сброса флага TF. Отсутствуют также команды, которые позволили бы организовать пересылки между старшим байтом регистра F и общим регистром МП. Состояние флага TF можно изменять, воздействуя на него после включения регистра F в стек. Для включения регистра F в стек и извлечения его из стека предусмотрены соответственно команды PUSHF и POPF. Значение TF=1 устанавливается путем объединения по ИЛИ содержимого регистра с константой 0100, a TF = 0 — путем объединения по И с константой FEFF. Если установлено TF=1, то первое пошаговое прерывание произойдет после выполнения команды, следующей за командой возврата из подпрограммы обработки пошагового прерывания.
В пошаговом режиме МП реагирует на внешние и внутренние прерывания. Обычным путем (с включением в стек регистров CS, IP и F) осуществляется переход на подпрограмму обработки возникшего прерывания. Однако до выполнения первой команды этой подпрограммы распознается пошаговое прерывание и управление передается подпрограмме обработки пошагового прерывания типа 1, после завершения которой МП возвращается к выполнению подпрограммы принятого ранее прерывания.
Прерывание, определяемое пользователем при составлении программы, осуществляется по двухбайтовой команде INT п, в которой тип прерывания
указывается во втором байте команды. Команда INTn вызывает требуемую подпрограмму, как и команда CALL, однако при переходе на подпрограмму команда INTn осуществляет запоминание не только адреса возврата (CS и IP), но и регистра флагов F. При этом выполняется межсегментный переход, причем адрес подпрограммы располагается не в формате команды или в произвольной ячейке памяти, а в специально сформированной таблице.
Процедуры программных прерываний удобно применять в системах, где допускается динамическое перемещение программ (процедур) при их выполнении. Поскольку таблица указателей находится в фиксированной области памяти, процедуры могут вызывать друг друга через эту таблицу. Этим обеспечивается устойчивое взаимодействие, не зависящее от адресов процедур, если перемещение процедуры в памяти сопровождается соответствующей модификацией таблицы указателей.
Однобайтовая команда INT3 вызывает прерывание типа 3, которое определено как прерывание контрольной точки (точки разрыва). Контрольной точкой может быть любое место в программе, где нормальное ее выполнение прерывается и производятся некоторые специальные действия. Контрольные точки обычно вводятся при отладке как средство индикации содержимого регистров, ячеек памяти и портов ввода в критических местах программы. Эту команду можно также использовать, чтобы вставить дополнительный фрагмент программы без ее повторной трансляции.
Процедура обслуживания прерываний. Связь между кодом, определяющим тип прерывания, и подпрограммой (процедурой) обслуживания прерывания устанавливается с помощью таблицы указателей векторов прерываний (рис. 1.8). Полная таблица занимает 1 Кбайт памяти и содержит 256 элементов, расположенных по адресам 0—3FF. Каждый элемент п таблицы содержит два слова, определяющие начальный логический адрес подпрограммы. Слово с большим адресом содержит базовый адрес сегмента, а слово с мень
шим адресом — смещение подпрограммы от начала кодового сегмента. При переходе на подпрограмму смещение загружается в регистр IP, а адрес сегмента загружается в регистр CS. Так как размер каждого элемента таблицы составляет 4 Байт, МП вычисляет адрес (смещение) требуемого элемента путем умножения типа прерывания на 4.
Необходимо отметить, что при обращении к таблице указателей сегментные регистры не используются. При формировании физического адреса вычисленное смещение складывается с нулем и ни один сегментный регистр не используется, на что указывают сигналы состояния S4 = 55= 10. После установления нового содержимого регистров IP и CS микропроцессор выбирает код операции первой команды подпрограммы и затем выполняет обычные действия по заполнению очереди команд, выполнению команд и обмену данными.
Адрес 15000000Тип 0 Ошибка деленияIPCS00004Тип 1 Пошаговый режим—00008Тип 2 Прерывание по NMI—ООООСТип 3 Команда INT3—00010Тип 4 Переполнение CINTO:00014Тип 5 Резерв—00018...0007СТип 31 Резерв—00080Тип 32 Пользовательский—г...- *003FCТип 255 Пользовательский—Адрес 15000000Тип 0 Ошибка деленияIPCS00004Тип 1 Пошаговый режим—00008Тип 2 Прерывание по NMI—ООООСТип 3 Команда INT3—00010Тип 4 Переполнение CINTO:00014Тип 5 Резерв—00018...0007СТип 31 Резерв—00080Тип 32 Пользовательский—г...- *003FCТип 255 Пользовательский—Рис. 1.8. Таблица указателей векторов прерыванийРис. 1.8. Таблица указателей векторов прерыванийКогда осуществляется переход на подпрограмму обслуживания прерывания, содержимое ре-
Адрес 15
0
00000
Тип 0 Ошибка деления
IP
CS
00004
Тип 1 Пошаговый режим
—
00008
Тип 2 Прерывание по NMI
—
ООООС
Тип 3 Команда INT3
—
00010
Тип 4 Переполнение CINTO:
00014
Тип 5 Резерв
—
00018
...
0007С
Тип 31 Резерв
—
00080
Тип 32 Пользовательский
—
г...
- *
003FC
Тип 255 Пользовательский
—
Адрес 15
0
00000
Тип 0 Ошибка деления
IP
CS
00004
Тип 1 Пошаговый режим
—
00008
Тип 2 Прерывание по NMI
—
ООООС
Тип 3 Команда INT3
—
00010
Тип 4 Переполнение CINTO:
00014
Тип 5 Резерв
—
00018
...
0007С
Тип 31 Резерв
—
00080
Тип 32 Пользовательский
—
г...
- *
003FC
Тип 255 Пользовательский
—
Рис. 1.8. Таблица указателей векторов прерываний
Рис. 1.8. Таблица указателей векторов прерываний
гистра F (вместе с содержимым регистров CS и IP) запоминается в стеке, флаг 1F (а также флаг TF) сбрасывается. Тем самым автоматически запрещаются внешние прерывания по входу INT, что нужно, например, для защиты начального участка подпрограммы, в течение которого осуществляется включение в стек внутренних регистров МП. Затем подпрограмма может разрешить внешние прерывания командой STI. Кроме того, она может быть прервана запросом на входе NMI и внутренними прерываниями. Необходимо следить, чтобы в подпрограмме не возникало прерывание того типа, которое она обслуживает. Например, попытка деления на нуль в процедуре прерывания из-за ошибки деления приведет к бесконечным вызовам этой процедуры.
В конце подпрограммы восстанавливают содержимое регистров МП, которые были включены в стек в начале подпрограммы с целью сохранения данных, относящихся к прерванной программе. Этот участок подпрограммы следует защитить с помощью команды CLI от прерываний по входу INTR. Подпрограмма обработки прерывания должна заканчиваться командой возврата из прерывания IRET, которой предшествует команда разрешения прерываний' STI. Перед выполнением команды IRET стек должен быть в том состоянии, в котором он был сразу после вызова подпрограммы. Тогда эта команда извлекает три верхние слова из стека в регистры IP, CS и F, что обеспечивает возврат к команде, которая выполнялась бы в случае отсутствия прерывания.
Функционирование микропроцессора
Выполнение команд можно представить последовательностью циклов шины (циклов обмена), в течение которых МП обращается к памяти за командами или обменивается данными с памятью или внешними устройствами. Каждый цикл шины инициируется устройством шинного интерфейса и содержит четыре обязательных такта Т1 — Т4. В такте Т1 выдается адрес на совмещенную шину адреса/данных, в такте Т2 производится коммутация направления передачи, в тактах ТЗ и Т4 — передача данных.
Если в системе имеются запоминающие или внешние устройства, которые не могут передавать информацию с максимальной пропускной способностью шины, то с помощью сигнала неготовности RDV = 0 вводится необходимое число тактов ожидания TW между тактами ТЗ и Т4. В зависимости от выбранного способа управления сигналом RDY система может быть выполнена в виде «нормально готовой» или «нормально неготовой». Вариант нормально готовой системы характерен лишь для небольших однопроцессорных МПС, в которых большинство устройств имеют достаточное быстродействие. При обращении микропроцессора к устройствам с недостаточным быстродействием последние должны установить сигнал RDY = 0 не позднее чем через 8 нс после начала такта ТЗ (рис. 1.9, а) . В нормально неготовой системе устройства обычно требуют введения тактов ожидания TW. Если же выбрано устройство, не нуждающееся в этом, то оно должно своевременно обеспечивать RDY=1, чтобы после ТЗ наступил такт Т4 (рис. 1.9,6), т. е. чтобы предотвратить переход МП в состояние ожидания. Для формирования сигнала* RDY сигналы готовности от устройств подаются в МП через генератор К1810ГФ84.
Т1Т2ТЗТ4Т1Т1Т2ТЗТ4Т16)6)Рис. 1.9. Временные диаграммы сигнала RDY в "нормально готовой" (а) и "нормально неготовой" (6) системахРис. 1.9. Временные диаграммы сигнала RDY в "нормально готовой" (а) и "нормально неготовой" (6) системах
Т1Т2ТЗТ4Т1
Т1Т2ТЗТ4Т1
6)
6)
Рис. 1.9. Временные диаграммы сигнала RDY в "нормально готовой" (а) и "нормально неготовой" (6) системах
Рис. 1.9. Временные диаграммы сигнала RDY в "нормально готовой" (а) и "нормально неготовой" (6) системах
Цикл шины выполняется, когда требуется заполнить очередь команд или осуществить обмен данными в процессе выполнения команды. Если цикл шины не требуется, то формируются холостые такты TI, во время которых устройство шинного интерфейса остается пассивным. В течение такта TI на линиях S6 — S3 микропроцессор сохраняет сигналы состояния от предыдущего цикла шины. Если в предыдущем цикле производилась запись, МП сохраняет на линиях AD записываемые данные до следующего цикла шины; если производилось чтение, МП не управляет линиями до начала следующего цикла шины. Число холостых тактов зависит от длительности выполняемой команды и может быть достаточно большим. Так, для команды умножения байтов, содержащихся в общих регистрах, число тактов TI составляет 52—69.
В минимальном режиме функционирование МП ВМ86 иллюстрируется временными диаграммами, приведенными на рис. LIO, LIE Цикл начинается с формирования в такте TI сигнала М/Ю определяющего тип устройства (ЗУ или ВУ), к которому производится обращение для пересылки данных. Длительность сигнала М/Ю равна длительности цикла шины, и он используется для селекции адреса устройства. В такте Т1 и в начале такта Т2 микропроцессор выставляет адрес ЗУ на линии А19 — А16 и AD15 — ADO либо адрес ВУ на линии AD15 — ADO, а также вырабатывает сигнал ВНЕ, который вместе с АО определяет передачу слова или одного из байтов. Одновременно с этим МП выдает строб адреса ALE, по спаду которого адрес фиксируется во внешних регистрах-защелках. На выходах этих регистров адрес сохраняется в течение всего цикла шины (до записи нового значения).
В такте Т2 происходит переключение шин: на линии A19/S6 — A16/S3 поступают сигналы состояния S6 — S3, которые сохраняются до конца такта Т4. В дальнейшем значения этих сигналов зависят от вида выполняемого действия (чтение или запись).
В цикле чтения в такте Т2 линии AD15 — ADO переводятся в третье со-
Рис. 1.10. Временные диаграммы работы ВМ86 в минимальном режиме
AD15-AD0DT/RINTADENAD15-AD0DT/RINTADENРис. 1.11. Циклы подтверждения прерывания в минимальном режимеРис. 1.11. Циклы подтверждения прерывания в минимальном режиме
AD15-AD0
DT/R
INTA
DEN
AD15-AD0
DT/R
INTA
DEN
Рис. 1.11. Циклы подтверждения прерывания в минимальном режиме
Рис. 1.11. Циклы подтверждения прерывания в минимальном режиме
стояние до появления данных от адресованного устройства. В тактах Т2 — Т4 вырабатывается сигнал чтения RD = 0, который указывает этому устройству на необходимость выдачи данных. Для управления буферами данных, которые обычно подключаются к линиям AD15 — ADO, в тактах Т2 — Т4 формируется сигнал DE, разрешающий передачу данных. Направление передачи данных при чтении определяет сигнал DT/R = 0, действующий в течение всего цикла.
После выполнения чтения и установления сигнала RD = 1 микропроцессор заканчивает такт Т4 следующим образом: линии AD15 — ADO находятся в высокоомном состоянии, сигналы М/Ю, DE, DT/R S7 — S3 неактивны, буферы данных отключены от канала.
В цикле записи в такте Т2 адрес на линиях AD15 — ADO заменяется данными, предназначенными для записи в адресуемое устройство. Данные остаются действительными до середины такта Т4 и сопровождаются сигналом WR = 0, который используется в качестве строба для записи данных в устройство. Сигнал DE = 0 появляется уже в такте Т1 и используется для подготовки буферов к передаче данных. Сигнал DT/R = 1, переключающий буферы на передачу данных в направлении к МП, удерживается на протяжении всего цикла записи. После установления WR=1 такт Т4 заканчивается так же, как и при выполнении цикла чтения.
Таким образом, циклы чтения и записи различаются не только активными значениями сигналов RD или WR и состоянием сигнала DT/R, но и тем, что в цикле записи сигналы DE и WR становятся активными раньше и имеют большую длительность, чем в цикле чтения Соответственно данные при записи присутствуют на шине в течение большего промежутка времени, чем при чтении.
Т1 Т2 । ТЗ I Т4 I TI I TI I Т1 । Т2 । ТЗ I Т4
Рис 1 12. Последовательность сигналов при подтверждениипрерывания по входу INTR
Особо следует остановиться на том, как МП подтверждает прерывание после восприятия запроса по входу INTR (рис. 1.12). В этом случае выполняются два цикла INTA, разделенные двумя холостыми тактами TI. В этих циклах МП не выдает адрес, но формирует строб ALE. Первый цикл обеспечивает подготовку к приему байта, определяющего тип прерывания, и информация в этом цикле не принимается. Во втором цикле читается вектор прерывания по линиям AD7 — ADO. Этот цикл подобен обычному циклу чтения, но вместо
Рис. 1 13. Последовательность сигналов при захвате вины в минимальном режиме
сигнала RD = 0 вырабатывается сигнал INTA = 0. Для предотвращения захвата шин сигналом на входе HOLD (или RQ/GT в максимальном режиме) формируется внутренний сигнал блокировки LOCK, начиная с такта Т2 первого цикла и кончая тактом Т2 второго цикла сигнала INTA.
Последовательность сигналов при захвате шин в минимальном режиме иллюстрирует рис. 1.13. При поступлении запроса HOLD = 1 микропроцессор формирует сигнал подтверждения захвата HLDA с середины такта Т4 текущего цикла шины или холостого такта, а также переводит свои шины адреса, данных и управления в состояние z, в результате чего МП отключается от канала, предоставляя его в пользование устройству, пославшему запрос захвата. Временные параметры сигналов HOLD и HLDA приведены на рис. 1.14.
Рис. 1.14. Временные диаграммы сигналов HOLD и HLDA
В максимальном режиме работа шины адреса/данных МП ВМ86 эквивалентна работе в минимальном режиме. Как уже отмечалось, в максимальном режиме изменяется назначение восьми управляющих сигналов, в частности МП вырабатывает сигналы состояния ST2 — STO (см. табл. 2.8), на основе которых системный контроллер (СК) КР1810ВГ88 формирует необходимые системные управляющие сигналы. Таким образом, МП в этом режиме работает обязательно совместно с системным контроллером, что отражено на временных диаграммах цикла шины (рис. 1.15, 1.16).
Рис. 1.15. Временные диаграммы работы МП ВМ86 в максимальном режиме
Код состояния S2 — SO выдается по срезу синхроимпульса в последнем такте предшествующего цикла, которым может быть такт Т4 или TI. В такте Т1 контроллер формирует строб ALE и устанавливает необходимый уровень сигнала на выходе DT/R. В такте Т2 начинается формирование сигнала разре-
шения данных DE, который в отличие от минимального режима имеет активный высокий уровень, а также следующих управляющих сигналов: RD, MRDC (чтение ЗУ), IORC (чтение ВУ), AMWC (опережающая запись ЗУ), AIOWC (опережающая запись ВУ). Для цикла записи в такте ТЗ начинается выработка сигналов MWTC (запись ЗУ), (запись ВУ). В такте Т4 цикл шины заканчивается: линии AD15 — ADO переводятся в третье состояние, устанавливаются сигналы S2 = S1=SO = 1 и прекращается активное состояние управляющих сигналов. Необходимо отметить, что наличие специализированных сигналов чтения MRDC и IORC ставит под сомнение целесообразность использования общего сигнала чтения RD, тем более что последний требует буферизации.
CLKAD15-AD0AD15-AD0MCE/PDENDT/RINTADENCLKAD15-AD0AD15-AD0MCE/PDENDT/RINTADENРис. 1.16. Циклы подтверждения прерывания в максимальном режимеРис. 1.16. Циклы подтверждения прерывания в максимальном режиме
CLK
AD15-AD0
AD15-AD0
MCE/PDEN
DT/R
INTA
DEN
CLK
AD15-AD0
AD15-AD0
MCE/PDEN
DT/R
INTA
DEN
Рис. 1.16. Циклы подтверждения прерывания в максимальном режиме
Рис. 1.16. Циклы подтверждения прерывания в максимальном режиме
Напомним, что опережающие сигналы записи, обеспечивающие более длительный импульс записи, требуются для некоторых типов БИС статической памяти и внешних устройств. Обычные сигналы записи необходимы для БИС динамической памяти и определенных БИС статической памяти, которые стробируют данные по началу импульса записи. Опережающие сигналы записи не гарантируют установку данных по началу импульса записи. Аналогичная проблема в системах с ВМ80 решается использованием соответствующей ИС системного контроллера К580ВК28, вырабатывающей обычные сигналы записи, или ИС К580ВК.38, вырабатывающей опережающие сигналы. Подобный режим «удлиненной» записи предусмотрен также для БИС контроллера прямого доступа к памяти К580ВТ57.
Рассмотрим процесс формирования сигналов подробнее. В каждом цикле шины системный контроллер начинает работу лишь после выхода сигналов S2 — SO из пассивного состояния. Как показано на рис. 1.17, микропроцессор не возвращает эти сигналы в пассивное состояние до восприятия сигнала го- 34
товности RDY, так что контроллер сохраняет управление шиной в течение любого числа тактов ожидания TW.
В зависимости от сочетания временных параметров отдельных сигналов возможны два случая: 1) сигналы S2 — SO не успевают измениться к началу такта Т1 (время задержки выдачи S2 — SO максимально при минимальной длительности тактового импульса CLK=1); 2) сигналы S2 — SO успевают измениться (длительность импульса CLK=1 оказывается достаточно большой по сравнению с задержкой появления сигналов состояния). В первом случае максимальная задержка выдачи строба ALE по отношению к началу такта Т1 составляет 58 нс, во втором — 15 нс. В любом случае спад строба ALE формируется контроллером по фронту CLK. такта Т1.
Переход в пассивное состояние в такте, предавствуюжем Т4 ИНН!Переход в пассивное состояние в такте, предавствуюжем Т4 ИНН!ALEST2-ST0ALEST2-ST0\\
Переход в пассивное состояние в такте, предавствуюжем Т4 ИНН!
Переход в пассивное состояние в такте, предавствуюжем Т4 ИНН!
ALE
ST2-ST0
ALE
ST2-ST0
\
\
Готовность
HEADYHEADYОжиданиеОжидание
HEADY
HEADY
Ожидание
Ожидание
Рис. 1.17. Действие сигналов состояния ST2-ST0
Минимальная длительность строба ALE составляет 75 нс, и адресная информация устанавливается на шинах минимум за 8 нс до среза строба ALE, по которому срабатывают адресные защелки. Адресная информация сохраняется до конца такта Т1, тогда как импульс ALE прекращается максимум через 15 нс после начала фронта CLK в такте Т1.
При разработке системного контроллера К1810ВГ88 предполагалось, что шина данных системы буферизирована. Поэтому системный контроллер начинает формирование сигналов управления MRDC, IORC, AMWC, AIOWC еще до того, как МП переведет шину в третье состояние. Эти сигналы, естественно, не должны подаваться на те устройства, которые подключены непосредственно к мультиплексированной шине AD. Перечисленные сигналы начинаются максимум через 15 нс после начал такта Т2 и заканчиваются максимум через 10 нс после начала такта Т4, так что их минимальная продолжительность составляет 375 нс. _
Сигнал направления передачи DT/R, подаваемый на шинные формирователи, устанавливается в такте Т1, но работа ШФ не разрешается до появления сигнала DEN =0 в такте Т2. Строб данных DEN заканчивается максимум через 45 нс после начала такта Т4, что обеспечивает отключение шинного формирователя до начала следующего цикла шины. По фронту тактового импульса Т4 устанавливается сигнал DT/R = 1, допускающий запись в следующем цикле шины.
При выполнении цикла записи опережающие сигналы записи имеют минимальную длительность 375 нс, а обычные сигналы — длительность 175 нс. Задержка в установлении данных на шине может составлять 100 нс по отношению к началу опережающих сигналов.
Временные соотношения, характеризующие формирование сигнала готовности, одинаковы для обоих режимов. Минимальная задержка между началом выдачи управляющих сигналов системным контроллером и появлением сигнала готовности составляет 135 нс. В течение этого времени адресуемое ВУ должно принять решение о целесообразности введения тактов ожидания TW и установить RDY = 0 либо RDY=1. Все управляющие сигналы, кроме сигналов обычной записи, представляют такую возможность. Когда реализуется обычная запись, опережающий сигнал AIOWC может использоваться для оповещения ВУ о необходимости формирования сигнала готовности. Для этой же цели можно использовать линию S2.
Сигналы QS1, QS0, характеризующие состояние очереди команд МП, изменяются по срезу импульса CLK (с минимальной задержкой 10 нс) в каждом такте шины, включая холостые такты TI и такты ожидания TW, поскольку состояние очереди не прямо зависит от активности шины. Внешние схемы могут опрашивать эти сигналы по фронту импульса CLK, но необходимо учитывать, что значения QS 1 и QS0 относятся к предыдущему такту. Требования к временным параметрам сигнала TEST такие же, как при работе МП в минимальном режиме.
В максимальном режиме выполняется та же последовательность из двух циклов INTA при подтверждении прерывания, что и в минимальном. Во втором цикле INTA вырабатываются сигналы DEN и DT/R, как в цикле чтения, а также сигнал INTA, по временным параметрам подобный сигналу RD.
Если ИС ВГ88 работает в режиме контроллера системной магистрали (ЮВ = 0), то ее выход MCE/PDEN становится выходом MCE, предназначенным для управления считыванием с шины данных каскадного адреса, выставляемого ведущим программируемым контроллером прерываний (ПКП) К580ВН59А. Сигнал MCE активен в каждом цикле подтверждения прерывания и во времени перекрывается со стробом ALE. Импульс MCE используется для стробирования адреса, выставляемого ведущим ПКП на три старшие линии шины AD (линии AD15 — AD13), и позволяет сигналу ALE зафиксировать каскадный адрес CAS в адресной защелке. Эти адресные линии могут быть затем использованы для передачи адреса ведомому ПКП, подключенному к системной шине. Значение МСЕ = 1 устанавливается в течение 15 нс от начала такта Т1 или от момента появления сигналов состояния S2 — S0. Сигнал MCE не должен разрешать выдачу адреса CAS на мультиплексированную шину в течение первого цикла INTA, поскольку МП не гарантирует перевод шин в третье состояние раньше чем через 80 нс после начала первого цикла INTA. Первый импульс MCE можно запретить с помощью сигнала LOCK, который активен начиная с такта Т2 первого цикла до такта Т2 второго цикла. При этом не произойдет потери информации, поскольку ПКП выставляет каскадный адрес только во втором цикле INTA. Импульс MCE, как и строб ALE, устанавливается в течение 58 нс от начала такта Т1, так что до спада строба ALE остается 75 нс, в течение которых сигналы на адресных линиях должны принять установившиеся значения. Импульс MCE остается активным в течение 52 нс после окончания строба ALE.
Если ИС К1810ВГ88 включена в режиме контроллера магистрали ввода — вывода (10В = 1), то на выводе MCE/PDEN вырабатывается сигнал PDEN, предназначенный для разрешения работы формирователей магистрали, к которой подключены ВУ. Поскольку оба цикла INTA относятся к циклам ввода, считается, что все прерывания поступают от устройств, подключенных к местной шине (магистрали), и каскадные адреса не передаются в общесистемную магистраль. Сигнал DEN при этом не вырабатывается, так как передача данных по шине не производится. Если местная шина также буферизирована, то управление шинными формирователями осуществляется с помощью сигнала PDEN, который по временным характеристикам идентичен сигналу DEN. Таким образом, сигнал PDEN вырабатывается при обращении к ВУ, а сигнал DEN — при выборке команд или обращении к ЗУ.
CLKQSLOCKCLKQSLOCKБайт префикса из очередиБайт префикса из очередиЗаблокированная командаЗаблокированная командаКоманда без блокировкиКоманда без блокировкиРис. 1.18. Временная диаграмма сигналов блокировки LOCKРис. 1.18. Временная диаграмма сигналов блокировки LOCK
CLK
QS
LOCK
CLK
QS
LOCK
Байт префикса из очереди
Байт префикса из очереди
Заблокированная команда
Заблокированная команда
Команда без блокировки
Команда без блокировки
Рис. 1.18. Временная диаграмма сигналов блокировки LOCK
Рис. 1.18. Временная диаграмма сигналов блокировки LOCK
На рис. 1.18 представлены временные диаграммы сигнала блокировки шины LOCK, который служит для управления доступом к разделяемым ресурсам системы и формируется при выполнении однобайтового префикса LOCK. Сигнал LOCK становится активным в первом такте после выполнения префикса LOCK и сохраняется активным до завершения заблокированной команды.
Структура однопроцессорной системы
В однопроцессорных микроЭВМ и микроконтроллерах МП ВМ86 обычно работает в минимальном режиме (MN/MX=1). Стандартным способом к МП подключается генератор тактовых импульсов (системный генератор) К1810ГФ84. К его входу RES подсоединяется RC-цепочка, которая формирует сигнал сброса автоматически при включении питания либо с помощью кнопки.
Построение блока центрального процессора. При разработке структуры блока ЦП (рис. 1.19) возникают задачи разделения (демультиплексирования) шины адреса/данных (ШАД), буферирования шин адреса (ША) и шин данных (ШД), а также формирования системных управляющих сигналов для блоков памяти и внешних устройств.
Первая задача решается с помощью ИС К1810ИР82/83, выполняющих функции адресной защелки. Так как сигнал ВНЕ формируется в том же интер-
15пФ
EFI
CLK
F/C
READY
RESET
CSYNC
PCLK
RDY2
OSC
ЙЕН!
RES
RDY1
82
К1810ГФ84
К блоку сигнала готовности
CLK RDY RESET
A16/S3
A17/S4
A18/S5 A19/S6
TEST NMI
MN/RR КВ ЯН М/ГО
К1810ВМ86
♦5 В
1кОм
НЕИЯ
ГОН
ГОЯ
HERR
ШЕСТ
К контроллерупрерывании
INTR INTA
К контроллеруПДП
200 кОм
♦ 5 В
HOLD HLDA
ALE
AD15 АОИ AD13 AD12 AD11 AD10
AD9 AD8 AD7
НИИ
STB
BE
DI 7
D07
DI6
DOS
DIS
DOS
DI4
D04
DI3
D03
DI2
DO 2
DU
DOI
DIO
DOO
D07 DO 6 DOS D04 D03 D02 DOI DOO,
STB DI7 DI6 DIS
DI4 DI3 DI2 Dll DIO
ais
ais
am
аз
as
az
5
1 мкФ
DT/K
AD6 ADS AD4 AD3 AD8 ADI ADO ВНЕ ВЕН
АБ AS Al A3 AS Al
Рис. 1.19. Структурная
AlfllOfififib
Liiiiiiiaiiiiiiia
TDI7DI6DISDI4DI3DI3DllDIO
D07 D06 DOS D04 D03 D08 DOI DOO
AIS All A13 AIS JOU AID _D3 _M
схема ЦП на основе ВМ86
L Т
DI7 — DI6 — DI5 — DI4 — DI3 — DI3 — DI1
DIO
D07 D06 DOS D04 D03 D02 DOI DOO
AZ Afi AS Al A3 AB Al AO
вале времени, что и адресные сигналы, то его также необходимо зафиксировать в защелке. Поэтому изображенные на рис. 1.19 два 8-битовых регистра К1810ИР82 обеспечивают запоминание 15 разрядов адреса. Для доступа к памяти максимальной емкостью 1 Мбайт необходимо подключить еще один регистр, на который подаются оставшиеся старшие разряды AD15, A19/S 6 — A16/S 3.
Вторая задача решается с помощью двунаправленных 8-битовых шинных формирователей К1810ВА86/87, которые усиливают сигналы системной шины данных.
Третья задача может быть решена с помощью комбинационных логических схем, которые формируют требуемые управляющие сигналы на основе сигналов RD, WR и М/Ю, вырабатываемых МП. Если в системе используется адресное пространство ввода — вывода, изолированное от пространства памяти, то целесообразно сформировать сигналы, аналогичные сигналам на выходах системного контроллера К580ВК28: MEMR, MEMW, IOR, IOW. Эти сигналы управляют запоминающими и внешними устройствами подобно тому, как это делается в системах, построенных на основе МП К580ВМ80. Роль формирователей сигналов могут выполнять элементы ИЛИ-HE (рис. 1.19) или дешифратор на три входа (например, К155ИД7). Если же в МПС ввод— вывод организован с отображением на память, то сигнал М/Ю не используется и на ЗУ и ВУ подаются сигналы RD и WR после усиления.
Используемые усилители и формирователи должны обеспечивать три выходных состояния, чтобы можно было организовать прямой доступ к памяти. В этом случае после перевода МП в состояние захвата эти усилители переходят в третье состояние по сигналу PM (BUSEN), поступающему от контроллера ПДП. Если захват шин и обмен данными по ПДП не предусмотрен, то необходимость в таком переключении отпадает.
Подключение блоков памяти. При подключении ЗУ к шинам МПС необходимо обеспечивать передачу как двухбайтовых слов, так и отдельных байтов.
ВА 15А15 - А1
REHRREHRВНЕ AD ^ДбВНЕ AD ^ДбА1512 А12-А1А1512 А12 - А1А1512 А12-А1А1512 А12 - А1Рис. 1.20. Схема подключения бойкое памятиРис. 1.20. Схема подключения бойкое памяти
REHR
REHR
ВНЕ AD ^Дб
ВНЕ AD ^Дб
А1512 А12-А1А1512 А12 - А1
А1512 А12-А1А1512 А12 - А1
Рис. 1.20. Схема подключения бойкое памяти
Рис. 1.20. Схема подключения бойкое памяти
С этой целью память выполняется в виде двух банков (рис. 1.20): младшего, подключаемого к линиям данных D7 — D0 и содержащего байты с четными адресами (А0 = 0), и старшего, соединенного с D15 — D8 и содержащего байты с нечетными адресами (А0=1). Чтобы каждое слово передавалось за один цикл шины, слова располагают только с четных адресов. Напомним, что
адресная линия АО совместно с линией разрешения старшего банка ВНЕ обеспечивает следующие варианты пересылок по шине данных:
А0 = 0, ВНЕ = 0— пересылается слово;
А0 = 0, ВНЕ=1 —пересылается только младший байт;
АО = 1, ВНЕ = О— пересылается только старший байт;
АО = 1, ВНЕ = 1 —устройство не выбрано.
Выработка сигнала ВНЕ и указанный порядок пересылок реализуются микропроцессором автоматически.
При чтении из ЗУ в любом случае на шину данных будет подаваться слово, из которого МП при необходимости выберет требуемый байт и поместит его в регистр, указанный в выполняемой команде. Поэтому сигналы ВНЕ и АО на ПЗУ не подаются. При записи в ЗУ необходимо различать старший и младший байты (иначе может происходить разрушение информации, хранящейся в соседнем байте). Для этого сигналы ВНЕ и АО подаются на входы CSH и CSL выбора старшего и младшего банков ОЗУ.
Процесс обращения к ПЗУ стробируется сигналом MEMR, а к ОЗУ — сигналами MEMR и MEMW, объединенными с помощью логического элемента И-НЕ. В примере, показанном на рис. 2.50, емкость каждого блока (ПЗУ и ОЗУ) составляет 8 Кбайт. Блок ПЗУ может быть, например, выполнен на основе двух включенных параллельно БИС К573РФ4 емкостью 8 Кбайт каждая, а блок ОЗУ — на основе восьми БИС К537РУ10 емкостью 2 Кбайт каждая. Адресные входы А12 — АО каждой пары БИС соединены параллельно и подключены к адресным линиям А13 — А1. Оставшаяся свободной линия А14 используется для различения блоков ПЗУ (А14 = 0) и ОЗУ (А14=1). В более общем случае для различения блоков ПЗУ и ОЗУ, а также для раздельной адресации страниц этих блоков осуществляется дешифрация старших адресных линий, например с помощью ИС К155ИД4.
При подключении внешних устройств также возникает проблема передачи слов или отдельных байтов по шине данных (ШД). К устройствам, которые осуществляют обмен байтами и поэтому подключаются к младшей или старшей половине ШД, относятся, в частности, все программируемые БИС, указанные в § 1.1. В этом случае отдельно дешифруются четные и нечетные адреса ВУ (рис 1.21), и полученные таким образом сигналы выбора CS подаются на соответствующие входы БИС. Устройства с четными адресами подключаются к младшей половине ШД (или ко всей ШД), а устройства с нечетными адресами — к старшей половине ШД. Если, например, необходимо передавать слова с помощью БИС интерфейса К580ВВ55, то параллельно включается две такие БИС, входы CS которых соединены с разными дешифраторами адреса. При этом имеется возможность передавать не только слова, но и отдельные байты, т. е. обращаться индивидуально к каждой БИС. Если в этом нет необходимости, то входы CS обеих БИС можно подключить к одному выходу верхнего дешифратора DC.
Несколько иной способ выработки сигналов CS показан на рис. 1.22, где возможна передача слов по нечетному адресу, при которой МП последовательно передает два байта.
Если в системе реализуется ввод — вывод, отображенный на память, то могут потребоваться дополнительные дешифраторы. При этом целесообразно применять биполярные программируемые ПЗУ, которые хотя и уступают де-
Рис. 1.21. Подключение программируемых БИС к микропроцессорной системеРис. 1.21. Подключение программируемых БИС к микропроцессорной системеЧетные адреса (слова)Четные адреса (слова)Рис. 1.22. Вариант денитрации адресов ВЧРис. 1.22. Вариант денитрации адресов ВЧНечетные адреса (байты)Нечетные адреса (байты)Рис. 1.23. Схема преобразования двухбайтовой шины данных в однобайтовую для подключения ВЧРис. 1.23. Схема преобразования двухбайтовой шины данных в однобайтовую для подключения ВЧ
Рис. 1.21. Подключение программируемых БИС к микропроцессорной системе
Рис. 1.21. Подключение программируемых БИС к микропроцессорной системе
Четные адреса (слова)
Четные адреса (слова)
Рис. 1.22. Вариант денитрации адресов ВЧ
Рис. 1.22. Вариант денитрации адресов ВЧ
Нечетные адреса (байты)
Нечетные адреса (байты)
Рис. 1.23. Схема преобразования двухбайтовой шины данных в однобайтовую для подключения ВЧ
Рис. 1.23. Схема преобразования двухбайтовой шины данных в однобайтовую для подключения ВЧ
шифраторам по быстродействию, но обеспечивают полное дешифрирование многобитового адреса одной БИС. Кроме того, появляется возможность изменения адресов ввода — вывода путем замены такой ПЗУ без изменения монтажа.
При использовании ВУ, ориентированных на передачу байтов, может оказаться целесообразным преобразование двухбайтовой ШД в однобайтовую (рис. 1.23). Это, в частности, требуется для организации прямого доступа к памяти с помощью БИС контроллера ПДП К580ВТ57 и для пересылки блоков
данных между ЗУ и ВУ с помощью цепочечных команд. В последнем случае ввод — вывод должен быть организован с отображением на адресное пространство памяти. Устройства, подключаемые к однобайтовой шине данных, могут получать четные или нечетные адреса произвольно.
Особенности архитектуры микропроцессора К1810ВМ88
Интегральная схема К1810ВМ88 представляет собой 16-битовый микропроцессор с 8-битовой внешней шиной данных. Он предназначен прежде всего для перевода аппаратных средств, построенных на базе МП К580ВМ80 и К580ВМ85, на программную среду МП К1810ВМ86 с целью повышения производительности этих средств. Его нередко используют и в оригинальных разработках, поскольку при этом упрощаются построение блоков памяти и разводка проводника на печатной плате по сравнению с МП К1810ВМ86. Микропроцессоры ВМ86 и ВМ88 имеют аналогичную архитектуру и одинаковую систему команд. В ВМ88 сохранены 16-битовые общие и сегментные регистры, АЛУ для обработки 16-битовых операндов, сумматор для вычисления 20-битового физического адреса и средства поддержки многопроцессорных систем. Различия между этими двумя МП состоят в изменении разрядности шины данных и соответствующих изменениях структуры и работы шинного интерфейса.
Назначение и нумерация выводов БИС ВМ88 такие же, как БИС ВМ86 (см. рис. 1.1), но линии адреса А15 — А8 используются только для выдачи адресов, а линия ВНЕ заменена линией состояния SSO, так как ВМ88 может обращаться только к байтам и надобность в сигнале разрешения старшего байта шины ВНЕ отпадает. При работе ВМ88 в минимальном режиме сигнал SSO логически эквивалентен сигналу состояния SO, который вырабатывается МП ВМ86 в максимальном режиме. Сочетание сигналов Ю/М, DT/R и SSO позволяет однозначно определить тип выполняемого цикла шины (табл. 1.16).
Таблица 1.16
Ю/М
DT/R
STO
Тип цикла шины
0
0
0
Подтверждение прерывания
0
0
1
Чтение из порта ввода - вывода
0
1
0
Запись в порт ввода - вывода
0
1
1
Останов
1
0
0
Выборка команды
1
0
1
Чтение данных из памяти
1
1
0
Запись данных в память
1
1
1
Пассивное состояние (нет цикла вины)
При работе ВМ88 в максимальном режиме на выводе 34 постоянно присутствует высокий потенциал.
Необходимо отметить, что инвертировано значение сигнала выбора памяти и внешних устройств, чтобы он совпадал с сигналом Ю/М микропроцессора ВМ85. Однако остальные управляющие сигналы ВМ88 и ВМ85 различны, что требует существенного изменения логики управления шиной при введении
ВМ88 в системы, выполненные на базе ВМ85. Изменения в подсистемах памяти и ввода — вывода могут быть небольшими (если не требуется увеличения емкости памяти), поскольку адреса и данные в ВМ88 мультиплексируются, как и в МП ВМ85. Значения адресных сигналов А15 — А8 запоминаются во внутреннем регистре МП, и их не нужно защелкивать во внешнем регистре с помощью строба ALE.
Длина очереди команд МП ВМ88 выбрана равной 4 байт, поскольку в отличие от ВМ86 ВМ88 может считывать только байты (а не слова) за один цикл шины и соответствующее увеличение времени выборки команд не позволяет полностью использовать 6-байтовую очередь для повышения производительности. Порядок опережающей выборки команд отличается тем, что ВМ88 инициирует цикл шины для выборки команды, когда в очереди оказывается один свободный байт, а не два, как в ВМ86. Передача в ВМ88 одного байта за цикл шины приводит к увеличению времени выполнения команд на четыре такта при передаче каждого слова. Поэтому при оценке времени выполнения команд необходимо учитывать число обращений к памяти и к портам ввода — вывода для передачи слов. Временные диаграммы сигналов МП ВМ88 (кроме А15 — А8) совпадают с диаграммами сигналов ВМ86 (рис. 1.24).
Рис. 1.24. Временная диаграмма работы МП ВИ88
При построении систем, содержащих ЦП ВМ86/ВМ88 и сопроцессор ВМ87, необходимо, чтобы сопроцессор имел информацию о типе используемого ЦП и соответственно о разрядности шины данных и длине очереди команд. Для этого сопроцессор проверяет уровень сигнала на выводе 34 непосредственно после окончания сигнала RESET, на котором ВМ88 в максимальном режиме устанавливает постоянное напряжение высокого уровня, а ВМ86 — сигнал
BHE/S7. Так как в ВМ86 первой выбирается команда по четному адресу
FFFF0, то первоначально устанавливается сигнал ВНЕ = 0. Естественно, что ЦП и сопроцессор должны иметь общую линию сброса. Когда к ЦП подключены сопроцессор и независимый процессор, который выбирает свои команды, сопроцессор должен определять, каким процессором выбирается команда, чтобы правильно модифицировать свою очередь команд. Для этого сопроцессор контролирует бит состояния ST6, на который МП ВМ88, как и ВМ86, всегда выводит напряжение низкого уровня, а процессор ввода — вывода ВМ89 — высокого уровня.
Наиболее просто МПС на базе ВМ88 строится с использованием БИС ОЗУ с портами ввода — вывода и таймером К1821РУ55 и ПЗУ с портами ввода —
Рис. 1.25. Микропроцессорная система на основе ВМ86
вывода К1821РУ55 (рис. 1.25). Эта система легко расширяется путем подключения дополнительных БИС. В частности, может потребоваться увеличение емкости ОЗУ, которая в приведенном на рис. 1.25 варианте составляет всего 256 байт.
Регистр ФлаговРегистр Флагов11 10 3 8 7 642011 10 3 8 7 6420Указатель командУказатель командСегментные регистрыСегментные регистрыРис. 2.1. Программно-доступные регистры МП ВМ86Рис. 2.1. Программно-доступные регистры МП ВМ86
Регистр Флагов
Регистр Флагов
11 10 3 8 7 6420
11 10 3 8 7 6420
Указатель команд
Указатель команд
Сегментные регистры
Сегментные регистры
Рис. 2.1. Программно-доступные регистры МП ВМ86
Рис. 2.1. Программно-доступные регистры МП ВМ86
Система команд микропроцессора К1810ВМ86
Форматы команды
Микропроцессор К1810ВМ86 относится к классу однокристальных с фиксированной системой команд. При рассмотрении системы команд удобно обращаться к программной модели МП, содержащей его функциональные узлы (регистры), доступные программисту (рис. 2.1). Общие регистры разбиты на две группы: 1) группа HL, состоящая из регистров АХ, ВХ, СХ, DX, которые предназначены прежде всего для хранения данных и допускают раздельную адресацию их старших (Н) и младших (L) половин; 2) группа PI, содержащая указательные регистры BP, SP и индексные регистры SI, DI, в которых обычно хранится адресная информация. Для общих и сегментных регистров указаны коды, используемые в форматах команд для их адресации. Регистр флагов F и указатель команд IP адресуются в командах неявно.
Общие
15
8
7
0
регистры
000
7
АН (100)
0
7
AL(OOO)
0
AX
HL
001
7
СН(101)
0
7
CL (001)
0
CX
010
7
DH(110)
0
7
DL(DIO)
0
DX
011
7
ВН(111)
0
7
BL (011)
0
BX
PI
юо 101 ио Ш
15о
SP ВР 51 ш
Команды МП ВМ86 могут адресовать один или два операнда, причем двухоперандные команды являются, как правило, симметричными, так как результат операции может быть направлен на место любого из операндов. Однако в таких командах один из операндов должен обязательно располагать-
ся в регистре, поскольку имеются команды типа регистр — регистр, регистр — память и память — регистр, но команды типа память — память отсутствуют (за исключением команды пересылки цепочки байт или слов).
В общем виде формат двухоперандной команды приведен на рис. 2.2, а, где штриховыми линиями обозначены необязательные байты команды. Первый байт команды содержит код операции СОР и два однобитовых поля: направления d и слова w. При d=l осуществляется передача операнда или результата операции в регистр, который определяется полем reg второго байта команды; при d = 0 — передача из указанного регистра. Поле w идентифицирует тип (разрядность) операндов: при w=l команда оперирует словом, при w = 0— байтом.
|СОРdw|regr/m|Pdisp L_JГdispH*~|
|COPs*||md COPr/m|j^dtsp^^IdlepH I |data L~1 L-titi.IL j
■) |COP*I|md COPr/m|!**ispH i
Рис. 2.2. Форматы деухоперандных команд
Второй байт, называемый постбайтом, определяет участвующие в операции регистры или регистр и ячейку памяти. Постбайт состоит из трех полей: md — режим, reg — регистр, г/ш — регистр/память. Поле reg определяет операнд, который обязательно находится в регистре МП и условно считается вторым операндом. Поле r/m определяет операнд, который может находиться в регистре или памяти и условно считается первым. Способ кодирования внутренних регистров МП в полях reg и r/m представлен в табл. 2.1.
Таблица 2.2
Таблица
2.1
Поле r/m
Эффективный адрес KA
Адресация
reg,
reg,
000
BX+SI+dlsp
Базово-индексная
r/m
w=0
W=1
r/m
w=0
W=1
001
010
BX+DI+dlep BP+SI+dlsp
ООО
AL
AX
100
AH
SP
Oil
BX+DI+dlsp
001 010 011
CL DL BL
CX DX BX
101
110
111
CH DH BH
BP
SI DI
100
101
Sl+dlsp DI+disp
BP+dlsp
Индексная
Базовая
111
BX+dlap
Отметим, что поле reg используется для указания регистра только в двухо- перандных командах. Если в команде одни операнд, то он идентифицируется полем r/m, а поле reg используется для расширения кода операции.
Поле md показывает, как интерпретируется поле r/m для нахождения первого операнда: если md = ll, то операнд содержится в регистре, в остальных случаях — в памяти. Когда адресуется память, поле md определяет вариант использования смещения disp, находящегося в третьем и четвертом байтах команды:
00, disp = 0— смещение отсутствует;
01, disp = disp L — команда содержит 8-битовое смещение, которое расширяется со знаком до 16 бит;
disp = disp Н, disp L — команда содержит 16-битовое смещение.
При md=ll реализуется косвенная адресация памяти и поле r/m определяет правила формирования эффективного адреса ЕА операнда в соответствии с табл. 2.2, где disp означает смещение, заданное в формате команды.
Приведенные в табл. 2.2 правила имеют одно исключение, позволяющее реализовать прямую (абсолютную) адресацию: если md = 00 и г/ш=110, то EA = disp Н, disp L. Таким образом, имеется три варианта интерпретации поля md и восемь вариантов интерпретации поля r/m, что дает 24 варианта вычисления эффективного адреса ЕА. Суммарные сведения о постбайтовых режимах адресации ЦП ВМ86 приведены в табл. 2.3 и на рис. 2.3.
Таблица 2.3
Операционное устройствоОперационное устройствоРис. 2.3. Вычисление физического адреса памятиРис. 2.3. Вычисление физического адреса памятиФизический адрес]Физический адрес]Шинный интерфейсШинный интерфейс
Операционное устройство
Операционное устройство
Рис. 2.3. Вычисление физического адреса памяти
Рис. 2.3. Вычисление физического адреса памяти
Физический адрес]
Физический адрес]
Шинный интерфейс
Шинный интерфейс
Поле
r/m
Поле md
00
01
10
11
W = 1 W = 0
ООО
BX+SI
BX+SI+D8
BX+SI+D16
AL
AX
001
BX+DI
BX+DI+D8
BX+DI+D16
CL
ex
010
BP+8I
BP+SI+D8
BP+8I+D16
DL
DX
011
BP+DI
BP+DI+D8
BP+DI+D16
BL
BX
100
81
SI+D8
SI+D16
AH
SP
101
DI
DI+D8
DI+D16
CH
BP
110
D16
BP+D8
BP+D16
DH
81
111 вх
Примечание. D8 вое смецеиие); (двухбайтовое
BX+D8BX+D16
= disp L (одиобайто- D16 = disp H disp L смецеиие).
BH
DI
Рассмотренная интерпретация полей md и r/m справедлива для всех форматов команд с постбайтовой адресацией.
Подчеркнем смысловое различие двух случаев употребления термина «смещение». Смещение disp, содержащееся в команде, интерпретируется как знако-
вое целое, которое участвует в вычислении эффективного адреса ЕА. С другой стороны, из-за сегментной организации памяти весь эффективный адрес ЕА является смещением (offset) относительно базового адреса сегмента и интерпретируется как беззнаковое целое при вычислении физического адреса. В необходимых случаях во избежание ошибок будем называть offset смещением в сегменте.
Наиболее общий формат двухоперандной команды с непосредственным операндом приведен на рис. 2.2,6. Необходимость адресации второго операнда отсутствует, и поле reg используется для расширения кода операции. Отсутствует также бит направления d, так как результат операции можно поместить только на место первого операнда. Место этого бита занимает бит s, который является признаком использования одного байта для задания непосредственного операнда при работе со словами. Поля s и w интерпретируются следующим образом:
ХО, один байт данных data L;
_ 01, два байта данных data Н, data L;
один байт данных, который автоматически расширяется со знаком до 16 бит.
Типичный формат однооперандной команды (рис. 2.2,в) содержит поля, назначение которых уже рассмотрено.
Следует отметить, что постбайтовая адресация является весьма универсальной и позволяет адресовать как общие регистры, так и ячейки памяти с указанием любого варианта вычисления эффективного адреса ЕА. Однако при адресации только регистров или аккумулятора постбайт оказывается излишним, если трехбитовое поле reg разместить в первом байте команды или использовать неявную адресацию. Эта возможность реализуется в специальных (укороченных) форматах, которые содержат минимально необходимое число байтов. Специальные форматы предусмотрены для команд, выполняющих следующие часто используемые операции: включение содержимого регистра в стек, извлечение из стека в регистр, передача непосредственных данных в регистр, инкремент и декремент содержимого регистра, обмен содержимым аккумулятора АХ и регистра, пересылка между аккумулятором и ячейкой памяти с прямой адресацией, вычитание с участием содержимого аккумулятора и непосредственного операнда. В качестве примера на рис. 2.4 приведены стандартный и специальный форматы команды INC г. Программа-ассемблер выбирает более короткий формат команды автоматически.
| ИЩИ w~l |md ООО r/m]ПЗй^ЙГ] INC г/т
| 01000 гед! INC г
Рис. В.4. Пример стандартного (а) и специального (б) форматов команды INC г
Всего можно выделить девять существенно различных форматов команд. В табл. 2.4 приведены форматы команд, не обязательные байты заключены в круглые скобки, а также указаны варианты форматов, различающихся назначением битов Ь, первого байта В1 формата команды, в котором содержится код операции СОР. Звездочкой помечены специальные форматы. (В данную таблицу не включены редко используемые двухбайтовые команды ААМ и AAD, оба байта которых заняты кодом операции.)
Формат
Вариант формата
Полный список команд
СОР
СОР
bo=w
b2-bo=reg b2-bo=COP b4-bs=sr
CLC; CMC; STC; CLD; STD; CLI; STI; HLT; WAIT; NOP; RET; IRET; INTO; INT3; PUSHF; POPE; LAHF; SAHF; XLAT; CBW; CWD; AAA; DAA; AAS; DAS; LOCK; REP; REPNZ CMPS; LODS; MOVS; STOS; SCAS; IN ac.DX; OUT DX.ac INC r; DEC r; PUSH r; POP r; XCHG AX,г PUSH sr; POP sr
LEA; LDS; LES
md reg r/m
bo=w
TEST r.r; TEST r,m; XCHG r.r; XCHG r.m
(disp L)
bo—w ।
MOV r,r; MOV r.m; MOV m.r; ADD r.r;
(disp H)
COP
bi=d
ADD r.m;ADDm.r;ADCr.r;ADCr.m;
ADC m, r;SUBr.r;SUBr.m;SUBm.r;
SBB r.r;SBBr, m;SBBm, r;CMPr,r;
CMP r.m;CMPm.r;ANDr.r;ANDr.m;
AND m.r; OR r.r; OR r.m; OR m.r; XOR r.r; XOR r.m; XOR m.r;
PUSH r; PUSH m; POP r; POP m; JMP [r); CALL [r); JMP [m); CALL [m]
md COP r/m
(disp L)
bo—w
INC m; DEC m; NEG; NOT; MUL; IMUL; DIV;
(disp H)
bo=w, bi=v
IDIV
RCL; RCR; ROL; ROH; SAL; SAR; SHL; SHR
COP
bo=w
MOV m.d; MOV r.d; AND m.d; AND r,d;
md COP r/m
OR m.d; OR r,d; XOR m.d; XOR r.d;
(disp L)
TEST m.d; TEST r.d; CMP m.d; CMP r.d
(disp H)
bo—w
ADD m.d; ADD r.d; ADC m.d; ADC r.d;
data L (data H)
COP
SUB m.d; SUB r.d; SBB m.d; SBB r.d
RET d
data L
bo=w
ADD ac,d; ADC ac,d; SUB ac,d; SBB ac,d;
(data H)
COP
ba-bo=reg bs=w
CMP ac,d; AND ac,d; OR ac,d; XOR ac,d; TEST ac.d
MOV r,d
JMP disp!6; JMP disp8; Jcond disp6;
(disp L)
CALL displB;
(disp H)
COP
bo—w
MOV ac.n; MOV m.ac (при disp L, disp H)
MOV sr.m; MOV sr,r; MOV m.sr;
md Osr r/m (disp L) (disp H)
COP addr8
COP offset L offset H seg L seg H
MOV r.sr;
IN addrB; OUT addrB
JMP addr; CALL addr (тип FAR)
Способы адресации
Команды ЦП ВМ86 реализуют весьма разнообразные способы адресации, что упрощает организацию и использование сложных структур данных, а также расширяет возможности отдельных команд и повышает гибкость их применения.
Регистровая адресация. Операнд находится в одном из общих регистров МП или в одном из сегментных регистров. Регистр может быть определен в байте кода операции или в постбайте, в котором выделены 3-битовые поля reg
и r/m (при md = ll). Команды, оперирующие содержимым регистров, являются наиболее короткими и выполняются за наименьшее время, так как не требуют вычисления ЕА и выполнения цикла шины для обращения к памяти. Для многих команд с регистровой адресацией предусмотрены специальные укороченные форматы.
Непосредственная адресация. Непосредственными операндами являются константы длиной 8 или 16 бит, которые размещаются в последних байтах команды (младший байт следует первым). Доступ к таким операндам в ВМ86 осуществляется очень быстро, поскольку во время выполнения команды они находятся во внутренней очереди команд. Имеются команды, позволяющие манипулировать непосредственными операндами и содержимым общих регистров или ячеек памяти. Однако отсутствуют команды непосредственной загрузки сегментных регистров и включения константы в стек. Поэтому эти операции осуществляются с помощью промежуточной загрузки общего регистра или ячейки памяти.
Прямая адресация является простейшим способом адресации ячейки ЗУ, при котором эффективным адресом ЕА является содержимое байтов смещения disp команды. В командах преобразования данных этот способ реализуется при использовании постбайта с полями md = 00 и г/ш= ПО. Для пересылок между аккумулятором и памятью предусмотрен укороченный формат.
Разновидностью этого способа является длинная прямая адресация, при которой в формате команды содержатся четыре байта, указывающие базовый адрес сегмента и сегментное смещение offset. В этом случае обеспечивается доступ к ячейке с любым логическим адресом, т. е. к произвольной ячейке во всем пространстве адресов 1 Мбайт, но длинная прямая адресация используется только в командах межсегментных переходов и вызовов подпрограмм. Другая разновидность прямой адресации применяется для указания портов ввода — вывода в двухбайтовых командах IN и OUT, второй байт которых содержит адрес (номер) порта.
Косвенная регистровая адресация. В командах преобразования данных эффективный адрес ЕА равен содержимому одного из регистров SI, DI, ВХ и ВР при соответствующем кодировании полей md и reg постбайта: md = 00; r/m = 100, 101, 111 и md = 01, r/m=110; dispL = O. В командах безусловного перехода и вызова подпрограммы с регистровой косвенной адресацией допускается указание любого 16-битового общего регистра (при md=ll; r/m = = 000,..., 111).
Данный способ адресации позволяет вычислять адреса во время выполнения программ, что часто требуется, например, для обращения к различным элементам таблиц данных. При модификации содержимого регистра одна и та же команда оперирует различными ячейками памяти, что позволяет организовать вычислительные циклы. Изменение содержимого регистра обычно осуществляется с помощью команд инкрементирования и декрементирования, а также других арифметических команд и команды загрузки эффективного адреса LEA. Разновидностью этого способа является косвенная адресация портов ввода — вывода с помощью содержимого регистра DX в однобайтовых командах IN и OUT.
Базовая адресация. Эффективный адрес операнда ЕА вычисляется путем суммирования содержимого базовых регистров ВХ или ВР и смещения disp (при md = 01, 10 и r/m = 111, НО). При использовании ВХ происходит обраще-
ние к операнду в текущем сегменте данных, а при использовании ВР — в текущем сегменте стека. Смещения, содержащиеся в команде, могут иметь длину 8 или 16 бит и интерпретируются как знаковые целые, представленные в дополнительном коде.
Базовая адресация обычно используется для подступа к элементам структур данных, когда смещение (номер) элемента известно на стадии разработки программы (при ее ассемблировании), а базовый (начальный) адрес структуры должен вычисляться при выполнении программы. Модификация содержимого базового регистра позволяет обратиться к одноименному элементу различных структур данных.
Индексная адресация. Значение ЕА вычисляется как сумма смещения disp, находящегося в команде, и содержимого индексного регистра SI или DI (при md = 01, 10 и r/m= 100, 101). Данный способ обычно применяется для обращения к различным элементам одномерного массива (таблицы) данных, когда смещение определяет известный при ассемблировании начальный адрес массива, а индексный регистр, содержимое которого может модифицироваться при выполнении программы, определяет элемент массива. По существу индексная адресация в ВМ86 аналогична базовой.
Базовая индексная адресация. Эффективный адрес ЕА равен сумме содержимого базового регистра ВХ или ВР, индексного регистра SI или DI и смещения disp, находящегося в команде (в частном случае смещение может отсутствовать). Этот способ реализуется при следующем кодировании полей постбайта: md=/=ll; r/m = 000, 001, 010, ОН и обеспечивает наибольшую гибкость адресации, так как два компонента адреса можно определить и варьировать при выполнении программы. Это удобно при обращении к элементам матриц, т. е. к двумерным массивам, представляемым в памяти как совокупность одномерных массивов.
Относительная адресация ЦП ВМ86 реализуется только по отношению к указателю команд IP, так что сегментное смещение вычисляется как сумма смещения disp, находящегося в команде, и текущего значения IP. При этом значение IP равно адресу байта, следующего за рассматриваемой командой, которая в это время выполняется микропроцессором. В ВМ86 относительная адресация не используется в командах, оперирующих данными, а применяется только в командах условных и безусловных переходов, вызовов подпрограмм и управления циклами. Смещение по отношению к содержимому IP не зависит от размещения программ в адресном пространстве памяти, что обеспечивает позиционную независимость команд. При автоматизированном ассемблировании программы указывается метка команды, которой передается управление, а необходимое смещение вычисляется программой-ассемблером.
Неявная адресация. Объект, содержимым которого манипулирует команда, указывается с помощью первого байта команды вместе с кодом операции без выделения специального поля для этой цели. Чаще всего этот специфический способ адресации встречается в однобайтовых командах, где адресуемым объектом являются аккумулятор, регистр флагов или отдельные флаги. В частности, в командах обработки цепочек неявно используются индексные регистры, причем регистр SI адресует первый элемент цепочки-источника, а регистр DI — первый элемент цепочки-получателя.
Описание системы команд
Система команд ВМ86 содержит 91 мнемокод и позволяет совершать операции над байтами, двухбайтовыми словами, отдельными битами, а также цепочками байтов и слов. Имеется широкий набор арифметических команд, включающий умножение и деление, который ориентирован на обработку как беззнаковых, так и знаковых чисел. Весьма разнообразны команды пересылки данных, логических операций, переходов в программе и вызовов подпрограмм, а также управления микропроцессором. Число вариантов команд, т. е. число различных машинных кодов, превышает 3800 благодаря использованию восьми способов адресации в их различных модификациях. Тем самым обеспечивается гибкость применения большого числа команд, что позволяет выбрать наиболее рациональные способы адресации в конкретных случаях. Это особенно важно при обработке сложных структур данных.
По функциональному признаку система команд ВМ86 разбивается на шесть групп: пересылка данных, арифметические операции, логические операции и сдвиги, передача управления, обработка цепочек и управление микропроцессором. В наиболее компактной форме система команд представлена в табл. 2.5, в которой арифметические и логические команды объединены исходя из общности параметров этих команд и одинаковой последовательности действия МП при их выполнении. В табл. 2.5 введены следующие обозначения: г — общий регистр; sr — сегментный регистр; m — адрес ячейки памяти, который указывается в мнемокоде в соответствии с используемым способом адресации; d — непосредственный операнд; ас — аккумулятор АХ или AL; р — адрес 8-разрядного порта ввода — вывода; disp — смещение при адресации относительно IP; addr — указатель адреса при межсегментных переходах и вызовах; type — тип (вектор) прерывания; cond — условия в команде условных переходов.
В табл. 2.5 представлены все мнемонические обозначения команд и все допустимые варианты представления операндов. Для каждого варианта указано число байтов в формате пв и число тактов синхронизации пт, требуемое для выполнения команды. Значение Е, равное числу тактов, которое требуется для вычисления эффективного адреса ЕА, следует брать из табл. 2.6 в соответствии с указанным в команде способом адресации. Если имеется два варианта команды, определяющие одно и то же действие, то в табл. 2.5 приводится более короткий вариант. Команды, которые имеют общие форматы и одинаковые варианты представления операндов при одинаковом времени выполнения (т. е. различаются только операцией, выполняемой над операндами), приводятся в одной строке.
Влияние команд на флаги иллюстрируют табл. 2.7, 2.8, в которые включены только те команды, которые это влияние оказывают. Знак вопроса соответствует случаям, когда состояние флага после выполнения команды произвольно (например, зависит от конкретных значений операндов).
Полный набор команд, упорядоченный по мнемокоду, машинные коды команд и описание выполняемых операций приведены в табл. 2.9.
Для удобства пользования в таблице представлены все варианты мнемонических обозначений команд условных переходов и команд управления циклами. В дополнение к введенным ранее обозначениям в данной таблице используются следующие: disp 8/16 — смещение в формате команды, состоящее из одного или двух байтов; d 8/16 — одно- или двухбайтовая константа; sbr — имя подпрограммы; diff — разница между адресом перехода и содержимым указателя 52
Мнемокод
Операнд
ПВ
ПТ
Мнемокод
Операнд
ПВ
ПТ
Мнемокод
Операнд
ПВ
ПТ
MOV
r,r
2
2
LOOPZ
dlap
2
18/6
r ,m
2-4
8+E
Corr3>
—
1
4
LOOPNZ
m, r
2-4
9+E
JCXZ
ac, m
3
11
Flag4»
1
2
m,ac
3
11
INT
—
1
52
r,d
2-3
4
MUL5»
r/m
2-4
133
type
2
51
m,d
3-6
10+E
r, sr
2
2
IMULS»
r/m
2-4
154
INTO
—
1
53/4
sr, r
2
2
m, sr
2-4
9+E
DIV5»
r/m
2-4
162
IRET
-
1
24
sr, m
2-4
8+E
IDIV5»
r/m
2-4
184
REP
1
6
PUSH
r
1
10
m
2-4
16+E
AAM
2
83
MOVS
—
1
18
sr
1
10
AAD
-
2
60
CMPS®>
-
2
9+13
PUSHF
1
10
SBW
1
5
SCAS®>
-
1
15
CTO
—
1
5
2
9+15
POP
r
1
8
m
2-4
17+E
SHL
r
2
2
LCDS®»
-
1
12
sr
1
8
SAL
m
2-4
15+E
2
9+13
SHL
r,CL
2
8+4N
POPF
—
1
8
SAR
m, CL
2-4
20+E+
STOS®>
-
1
11
+4N
2
9+10
XCHG
r,r
2
4
ROL
ROR
WAIT
—
1
3
XLAT
-
1
11
RCL
RCR
NOP
—
1
3
IN
P,ac
2
10
ac,[DX]
1
8
JMPe>
dlsp
2-3
15
HLT
—
1
2
r
2
11
OUT
p,ac
2
10
m
2-4
18+E
ESC
r
2
2
[DX],ac
1
8
JMP7»
addr
5
15
m
2-4
8+E
LEA
r,m
3-4
2+E
m
2-4
24+E
LOCK
1
2
LDS
r ,m
3-4
16+E
LES
r ,m
3-4
16+E
Jcond
dlap
2
8/4
INC
r
1
2
CALL®»
dlap
3
19
DEC
m
2-4
15+E
r
2
16
m
2-4
21+E
NEG
r
2
3
NOT
m
2-4
16+E
CALL7>
addr
5
28
m
4
37+E
ADD
r,r
2
3
ADC
r,m
2-4
9+E
RET®»
1
8
SUB
m, r2>
2-4
16+E
d
3
12
SBB
r,d
3-4
4
CMP
ac,d
2-3
4
RET7»
—
1
12
AND1»
OR1»
m, d
3-6
17+E
d
3
18
XOR1 >
LOOP
disp
2
17/5
TEST1»
D Логические команды (в отличие от приведенных в этой хе строке арифметических команд) не имеют формата, в котором при работе со словами (т е при w = 1) указывается однобайтовый непосредственный операнд d в» Команда TEST не имеет варианта ш,г со временем выполнения 16 + Е, так как он был бы эквивалентен более короткому варианту г,т э> Согг - команды коррекции при сложении и вычитании DAA, DAS, AAA, AAS *> Flag используется для обозначения команд управления флагами CLC, STC, CMC, CLI, STI, CLD, STD ®> Для команд умножения и деления указано время выполнения при работе с операндами максимально допустимой длины, размещенными в регистрах ®> Команда осуществляет внутрисегментный переход, вызов или возврат 7> Команда осуществляет межсегментный переход, вызов или возврат ®> дано время выполнения одного цикла цепочечной команды, имеющей префикс повторения
команд IP (при адресации относительно IP); label — метка, к которой осуществляется переход. Для каждой цепочечной команды приведено только общее мнемоническое обозначение, которое требует дополнительного указания разрядности элементов цепочки, например MOVSB — пересылка байтов, MOVSW — пересылка слов.
Данные табл. 2.9 позволяют осуществить переход от мнемокодов к машинным кодам команд. При необходимости выполнить обратный переход целесообразно воспользоваться системой команд, упорядоченной по машинному коду операции [11]. Естественно, что наиболее удобным является автоматическое преобразование кодов с помощью соответствующих программ ассемблера и реассемблера.
Таблица 2.6
Адресация
Способ вычисления ЕА
Обозначение в мнемокоде
число тактов E (EA)
Прямая
disp
disp
6
Косвенная
[ИХ],[BP],[SI],[DI]
[г]
5
Базовая яли индексная
[ВХ,BP,SI,DI]+disp
[r ]disp
9
Базовая индексная:
без смещения
[BP+DI],[BX+SI]
[r][r]
7
[BP+SI],[BX+DI]
8
со смещением
[BP+DI]+disp
[r]disp[r]
11
[BX+SI]+disp
11
[BP+SI]+disp
12
[BX+DI]+disp
12
T
а б л и ц a
2.7
ОперацииКомандыФлаги состояний
OF CF AF SF ZF PF
Сложение, вычитание
ADD ADC SUB SBC CMP NEG CMPS SCAS INC DEC
+ + +
+ +
+ + +
+ + +
+ + +
+ + +
Умножение
MUL IMUL
+
+
?
9
9
9
Деление
DIV IDIV
?
9
9
?
?
?
Десятичная
DAA DAS
9
+
+
+
+
+
коррекция
AAA AAS
?
+
+
?
?
?
AAM AAD
?
9
?
+
+
+
Логические
AND OR XOR TEST
0
0
?
+
+
+
Сдвиги
SHL SHR1>
+
+
?
+
+
+
SHL SHR=>
9
+
?
+
+
+
SAR
0
+
?
+
+
+
ROL.ROR.RCL.RCR1)
' +
+
—
ROL,ROR,RCL,RCRa>
?
+
-
-
-
-
Восстановле
POPF IRET
+
+
+
+
+
+
ние флагов
SAHF
-
+
+
+
+
+
Управление
STC
-
1
-
-
-
Флагом
CLC
0
—
переноса
CMC
-
г
-
-
-
-
Примечание. "+" - результат операции влияет на флаг; ”-” - не влияет; 1 - устанавливает в "1"; О - устанавливает в "О"; Г - инвертирует; ? - не определен.
1> Одиночный сдвиг.
а> Многоразрядный сдвиг.
Операции
Команды
♦лаги управления
DF
IF
TF
Восстановление флагов
POPF IRET
+
+
+
Прерывания
INT INTO
-
0
0
Управление
STD
1
-
-
флагами
CLD
0
—
—
STI
—
1
—
CL I
-
0
-
Примечание. "+" - результат операции влияет на флаг; "-" - не влияет; 1 - устанавливает в "1"; О - устанавливает в "О".
Таблица 29
н/п
Команда
Байты кода команды
Символическое описание и/или содержание операции
Bl
B2
B3-B6
1
AAA
00110111
ASCII - коррекция для
сложения
2
AAD
11010101
00001010
ASCII - коррекция для
деления
3
AAM
11010100
00001010
ASCII - коррекция для
умножения
4
AAS
00111111
ASCII - коррекция для
вычитания
5
ADC r,r/m
0001001W
md reg r/m
(disp8/16)
r*r+r/m+CF; сложение
с переносом
r/m, г
0001000W
md reg r/m
(disp8/16)
r/m*r+r/m+CF
r/m, d
1000000W
md 010 r/m
(disp8/16)d8/16
r/m*r/m+d+CF
rl6/ml6,d8
10000011
md 010 r/m
data L
r/m«-r/m+d+CF
ac,d
0001010W
data L
(data H)
ac*ac+d+CF
6
ADD г,r/m
0000001W
md reg r/m
(disp8/16)
r*r+r/m; сложение
r/m, г
ooooooow
md reg r/m
(disp8/16)
r/m<-r+r/m
r/m, d
1000000W
md 000 r/m
(disp8/16)d8/16
r/m*r/m+d
rl6/ml6,d8
10000011
md 000 r/m
data L
r/m*r/m+d
ac,d
0000010W
data L
(data H)
ac<-ac+d
7
AND r,r/m
0010001W
md reg r/m
(disp8/16)
г*глг/т; конъюнкция, И
r/m, r
0010000W
md reg r/m
(disp8/16)
г/т*гл r/m
r/m,d
1000000W
md 100 r/m
data L data H
r/m*r/m*d
ac,d
0010010W
data L
(data H)
ac«-acAd
8
CALL
NEAR sbr
11101000
diff L
diff H
IP*IP+dlff; вызов
прямой
NEAR rl6/ml6
11111111
md 010 r/m
(disp8/16)
IP*IP+r/m; вызов кос-
венный
FAR sbr
10011010
IP-L
IP-H CS-L CS-H
IP*IP-L,IP-H;
CS*CS-L,CS-H; ВЫЗОВ
прямой
FAR m32
11111111
md 011 r/m
(disp8/16)
IP*ml6;CS*ml6; вызов
косвенный
9
CBN
10011000
Преобразование байта
в слово
10
CLC
11111000
CF*0; сброс переноса
11
CLD
11111100
DF<-0; сброс триггера
направления
12
CLI
11111010
IF*0; запрет прерыва-
НИЯ
13
CMC
11110101
CF*CF; инверсия пере-
носа
14
CMP r,r/m
0011101W
md reg r/m
(disp8/16)
r-r/m; сравнение
r/m, г
0011100W
md reg r/m
(disp8/16)
r/m-r
r/m,d
1000000W
md 111 r/m
(disp8/16)d8/16
r/m-d
rl6/ml6,d8
10000011
md 111 r/m
data L
r/m-d
ac,d
0011110W
data L
(data H)
ao-d
й п/п
Команда
Байты кода команды
Символическое описание _ и/или содержание one- рации
Bl
B2
B3-B6
15
CMPS
1010011W
Сравнение элементов цепочек
16
СТО
10011001
Преобразование слова в двойное слово
17
DAA
00100111
Десятичная коррекция для сложения
18
DAS
00101111
Десятичная коррекция для вычитания
19
DEC r/m
1111111#
OlOOlreg
md 001
r/m
(disp8/16)
r/m«-r/m-l; декремент
20
DIV г/m
1111011#
md 110
r/m
(disp8/16)
Деление чисел без знака
21
ESC OPCODE,г/m
11011XXX
md YYY
r/m
(disp8/16)
Переключение на сопроцессор
22
HLT
11110100
Останов
23
IDIV r/m
1111011W
md 111
r/m
(disp8/16)
Деление чисел со зна-
КОМ
24
IMUL r/m
1111011#
md 101
r/m
(disp8/16)
Умножение чисел со знаком
25
IN ac.port
1110010#
ports
Ввод из фиксированного порта
ac,DX
1110110#
Ввод из порта с косвенной адресацией
26
INC r/m
1111111#
md 000
r/m
(disp8/16)
r/m«-r/m+l; инкремент
r
OlOOOreg
г*г+1;
27
INT type
11001101
Прерывание заданного типа
INTO
11001110
Прерывание по переполнению
INT3
11001100
Прерывание типа 3
28
I RET
11001111
Возврат из прерывания
29
JA label
01110111
diff L
IP*IP+diff L; перейти, если выже
30
JAE label
01110011
diff L
IP*IP+diff L; если выже или равно
31
JB label
01110010
diff L
IP«-IP+diff L; если
ниже
32
JBE label
01110110
diff L
IP<-IP+diff L; если ниже или равно
33
JC label
01110010
diff L
IP«-IP+diff L; если есть перенос
34
JCXZ label
11100011
diff L
IP«-IP+dlff L; если СХ равен нулю
35
JE label
01110100
diff L
IP«-IP+diff L; если равно
36
JG label
01111111
diff L
IP«-IP+dlff L; если больпе
37
JGE label
01111101
diff L
IP«-IP+diff L; если больже или равно
38
JL label
01111100
diff L
IP*IP+diff L; если меньже
39
JLE label
01111110
diff L
IP*IP+diff L; если меньже или равно
40
JMP SHORT label
11101011
diff L
IP*IP+diff L; прямой короткий переход
NEAR label
11101001
diff L
diff H
IP«-IP+diff L; прямой переход
NEAR rl6/ml6
11111111
md 100
r/m
(disp8/16)
IP*IP+r/m; косвенный пере ход
FAR label
11101010
IP-L
IP-H CS-L CS-H
IP*IP-L,IP-H;
CS«-CS-L,CS-H; прямой
переход
FAR m3 2
11111111
md 101
r/m
(disp8/16)
IP«-ml6;CS<-ml6; косвенный переход
41
JNA label
01110110
diff L
IP«-IP+dlff L; если
не выже
42
JNAE label
01110011
diff L
IP*IP+diff L; если не выже или равно
43
JNB label
01110111
diff L
IP*IP+diff L; если
не ниже
й п/п
КомандаБайты кода командыСимволическое описание
и/или содержание one- рации
BlВ2ВЗ-В6
44
JNC label
01110011
diff
L
IP+IP+diff L; если нет переноса
45
JNE label
01110101
diff
L
IP.IP+diff L; если не. равно
46
JNG label
01111110
diff
L
IP+IP+diff L; если не больпе
47
JNGE label
01111100
diff
L
IP.IP+diff L; если не больпе или равно
48
JNL label
01111101
diff
L
IP.IP+diff L; если не меньпе
49
JNLE label
01111111
diff
L
IP.IP+diff L; если не меньпе или равно
50
JNO label
01110001
diff
L
IP.IP+diff L; если нет переполнения
51
JNP label
01111011
diff
L
IP+IP+diff L; если нет паритета
52
JNS label
01111001
diff
L
IP.IP+diff L; если ре зультат положительный
53
JNZ label
01110101
diff
L
IP.IP+diff L; если не нуль
54
JO label
01110000
diff
L
IP.IP+diff L; если есть переполнение
55
JP label
01111010
diff
L
IP+IP+diff L; если есть паритет
56
JPE label
01111010
diff
L
IP+IP+diff L; если паритет четный
57
JPO label
01111011
diff
L
IP.IP+diff L; если паритет нечетный
58
JS label
01111000
diff
L
IP.IP+diff L; если результат отрицательный
59
JZ label
01110100
diff
L
IP.IP+diff L; если нуль
60
LAKE
10011111
AH.FL; пересылка млад- пего байта F в АН
61
LDS rl6,m32
11000101
md reg
r/m
(disp8/16)
r,DS.m32; загрузка
указателя адреса
62
LEA rl6,m
10001101
md reg
r/m
(disp8/16)
г.ЕА; загрузка эффек
тивного адреса
63
LES rl6,m32
11000100
md reg
r/m
(disp8/16)
r,ES.m32; загрузка
указателя адреса
64 LODS1010110WЗагрузка элемента
цепочки
65
LOOP label
11100010 diff L
IP+IP+diff L; зациклить
66
LOOPE/LOOPZ label
11100001
diff L
IP+IP+diff L; зациклить, если равно
67
LOOPKE/LOOPNZ label
11100000
diff L
IP+IP+diff L; зациклить, если не равно
68
MOV r,r/m
1000101#
md reg
r/m
(disp8/16)
r+r/m; пересылка
r/m, r
1000100#
md reg
r/m
(disp8/16)
r/m+r;
r/m, d
1100011#
md 000
r/m
(disp8/16)d8/16
r/m+d;
r,d
lOHWreg
data L
(data H)
r+d
ac,m
1010000#
disp L
disp H
ac*m; при прямой адресации
m,ac
1010001#
disp L
disp H
m+ac; при прямой адресации
sr,r/m
10001110
md Osr
r/m
(disp8/16)
sr+r/m; запись в сегментный регистр
r/m,sr
10001100
md Osr
r/m
(disp8/16)
r/m+sr; чтение из сег ментного регистра
69
MOVS
1010010#
Пересылка элемента цепочки
70
MUL r/m
1111011#
md 100
r/m
(disp8/16)
Умножение чисел без знака
71
KEG r/m
1111011#
md 011
r/m
(disp8/16)
Смена знака числа
72
HOP
10010000
Пустая операция
73
OR r,r/m
0000101#
md reg
r/m
(disp8/16)
r+rvr/m; дизъюнкция,
ИЛИ
В п/п
Команда
Байты кода команды
Символическое описание и/или содержание операции
Bl
B2
B3-B6
г/m, г
0000100W
md reg
r/m
(disp8/16)
r/m«-r/mvr
74
r/m,d ac,d OUT ас,port
ac.DX
1000000#
0000110#
1110011#
1110111#
md 001 data L port.8
r/m
(disp8/16)d8/16 (data H)
r/m<-r/mvd ac*acvd Вывод в фиксированный порт Вывод в порт при косвенной адресации
75
76
POP r/m r ar POPF
10001111 OlOllreg 000ЯГ111 10011101
md 000
r/m
(dlsp8/16)
Чтение из стека
Загрузка регистра флагов из стека
77
78
PUSH r/m r sr PUSHF
11111111 OlOlOreg OOOsrllO 10011100
md 110
r/m
(disp8/16)
Запись в стек
Запись регистра флагов в стек
79
RCL r/m, 1
1101000#
md 010
r/m
(dispB/16)
Циклический сдвиг
r/m,CL
1101001#
md 010
r/m
(disp8/16)
влево через CF
80
RCR r/m,1
1101000#
md 011
r/m
(disp8/16)
Циклический сдвиг
81
r/m,CL RET (NEAR)
d(NEAR) (FAR) d(FAR)
1101001# 11000011
11000010
11001011
11001010
md Oil data L
data L
r/m
(dlsp8/16)
data H
data H
вправо через CF Возврат из подпрограммы Возврат с прибавлением константы к SP Возврат из подпрограммы Возврат с прибавлением константы к SP
82
ROL r/m,l
1101000#
md 000
r/m
(dlsp8/16)
Циклический сдвиг
r/m,CL
1101001#
md 000
r/m
(dlsp8/16)
влево
83
ROR r/m, 1
1101000#
md 001
r/m
(dlsp8/16)
Циклический сдвиг
84
r/m,CL SAHF
1101001# 10011110
md 001
r/m
(disp8/16)
вправо Пересылка АН в регистр
F
85
SAL r/m,l
1101000#
md 100
r/m
(dlsp8/16)
Арифметический сдвиг
r/m, CL
1101001#
md 100
r/m
(dlsp8/16)
влево
86
SAR r/m,l
1101000#
md 111
r/m
(disp8/16)
Арифметический сдвиг
r/m,CL
1101001#
md 111
r/m
(dlsp8/16)
вправо
87
SBB r,r/m
0001101#
md reg
r/m
(disp8/16)
r<-r-r/m-CF; вычитание с заемом
r/m, r
0001100#
md reg
r/m
(dlsp8/16)
r/m<-r-r/m-CF
r/m,d
1000000#
md Oil
r/m
(disp8/16)d8/16
r/m«r/m-d-CF
88
rl6/ml6,d8 ac,d
SCAS
10000011 0001110# 1010111#
md Oil data L
r/m
data L
(data H)
r/mtr/m-d-CF ac<-ac-d-CF Сканировать элемент цепочки
89
SHL r/m,l
1101000#
md 100
r/m
(disp8/16)
Логический сдвиг
r/m,CL
1101001#
md 100
r/m
(disp8/16)
влево
90
SHR r/m,l
1101000#
md 101
r/m
(dlsp8/16)
Логический сдвиг
91
92
93
94
r/m,CL
STC
STD
STI
STOS
1101001# 11111001
11111101
11111011
1010101#
md 101
r/m
(dlsp8/16)
вправо
CF*1; установка Флага переноса
DF*1; установка триггера направления
IF*1; разрежение прерывания [DI]*ac; запоминание ас в цепочке
95
SUB r,r/m
0010101#
md reg
r/m
(disp8/16)
r*r-r/m; вычитание
r/m,r
0010100#
md reg
r/m
(dlsp8/16)
r/m*r-r/m
r/m,d
1000000#
md 101
r/m
(dlsp8/16)d8/16
r/m«r/m-d
rl6/ml6,d8 ac,d
10000011 0010110#
md 101 data L
r/m
data L (data H)
r/m«-r/m-d ac«-ac-d;
96
TEST r,r/m
1000010#
md reg
r/m
(disp8/16)
гАг/m; проверка, нераэрушаюмее И
m, r r/m,d ac,d
WAIT
1000010#
md reg
r/m
(dlsp8/16)
г A r/m
97
1111011# 1010100# 00111011
md 000 data L
r/m
(disp8/16)d8/16 (data H)
r/m d acAd
Ожидание
в п/п
Команда
1
Bl
Зайты кода команды
Символическое описание и/или содержание операции
B2
B3-B6
98
XCHG АХ,г г, АХ г, г/т
lOOlOreg lOOlOreg 1000011W
md reg г/т
(disp8/16)
АХ—г; обмен г-АХ г-г/т
т,г
1000011W
md reg r/m
(dlsp8/16)
т*г
99
100
XLAT
ХОН г,г/т
11010111
0011001W
md reg r/m
(disp8/16)
Преобразование байта из AL г«-гег/т; суммирование
г/т, г
0011000W
md reg r/m
(disp8/16)
по модул» 2 (исключающее ИЛИ) г/т«тег/т;
r/m,d
1000000W
md 110 r/m
(disp8/16)d8/16
r/m«-r/med
ac,d
Префиксы: LOCK
REP/REPE/HEPZ
BKPNK/REPNZ
SEG
0011010W
11110000
11110011
11110010 OOlsrllO
data L
(data H)
ac«-aced
Префикс блокировки тины
Повторять цепочечную операцию То же Префикс замены сегмента
Особенности выполнения отдельных команд
Приведем здесь описание лишь некоторых команд, выбранных по принципу частоты их использования или трудности освоения. Описание остальных команд можно найти в [2—5].
Команды пересылки данных составляют четыре подгруппы: общие, обращения к стеку, ввода — вывода и пересылки цепочек (последние рассмотрены вместе с другими цепочечными командами). Эти команды, за исключением POPF и SAHF, не влияют на флаги.
100010 dw100010 dw1011 w re1011 w redata L j I data H Idata L j I data H IMOV r,dMOV r,dMOV rt/m , гг/шMOV r/m,dI data 171 I data H 1
100010 dw
100010 dw
1011 w re
1011 w re
data L j I data H I
data L j I data H I
MOV r,d
MOV r,d
0-M0V ac.m; 1 - MOV m.ac
lOiOOOXwl | dlap L | | dlsp H |
0-M0V r/m, sr; 1 - MOV sr, r/m 100011 X 01 |md 0 ar r/m| l_ dlap L I I dlap H J
Рио. 2.5. Форматы команды MOV
Команда MOV (рис. 2.5) осуществляет пересылку содержимого источника src в получатель dst и имеет обобщенное представление:
MOV dst, src; dst-«-src
Команда MOV п/т, гг/т содержит постбайт и обеспечивает пересылки регистр — регистр/память и память — регистр при использовании любого общего регистра и любого способа адресации памяти. Бит w определяет передачу
байта или слова, а бит d — направление передачи. Команда MOV r/m,d позволяет передать непосредственные данные в общий регистр или ячейку памяти. Команда MOV г, d представляет более короткий вариант (специальный формат) предыдущей команды и осуществляет загрузку констант в общие регистры.
Команды MOV ac,m и MOV m,ac предназначены для загрузки и запоминания содержимого аккумуляторов AL и АХ при использовании прямой адресации. Обращение производится к текущему сегменту данных, и адрес, указанный в команде, представляет смещение в этом сегменте. Если пересылаются два байта, то младший располагается по указанному адресу, а старший — по следующему адресу.
Команды MOV sr,r/m и MOV r/m,sr осуществляют пересылки между сегментным регистром и регистром или памятью. При этом передаются только слова, а ячейка памяти может быть определена с помощью любого допустимого способа адресации. Следует учитывать, что в команде MOV sr,r/m нельзя указывать сегментный регистр кода CS, так как при этом результат операции неопределен (выполнение этой команды было бы равносильно специальному безусловному переходу в программе).
Так как не существует команды непосредственной загрузки сегментных регистров, то команда MOV sr,r/m используется для инициализации регистров SS, DS и ES, т. е. для определения соответствующих сегментов памяти. Если, например, в регистр DS необходимо загрузить число 8000, то потребуется две команды:
MOV АХ, 8000Н; Инициализация регистра DS на 8000
MOV DS, АХ;
При этом в качестве промежуточного регистра обычно используется АХ, так как команда MOV ac,d короче более общей команды MOV m/r,d.
Возможна также инициализация сегментных регистров из программной памяти при использовании префикса замены сегмента для замены DS на CS при вычислении адреса ЕА в следующих командах с прямой адресацией:
MOV DS, CS: ADS; Инициализация DS
MOV ES, CS: AES; Инициализация ES
MOV SS, CS: ASS; Инициализация SS
Напомним, что МП BM86 обеспечивает защиту процесса инициализации регистров SS и SP, состоящего из двух команд:
MOV SS, CS: ASS
MOV SP, CS: ASP
от прерываний, чтобы гарантировать правильную работу стека. (Операнды ADS, AES, ASS, ASP обозначают адреса ячеек памяти, в которых хранятся базовые адреса соответствующих сегментов.)
| 1000011 w | |md reg r/m| L-^SP—-J 1—**!?£-!Lj ®HG r.r/m
| 10010 regl XCHG ас . г
Рис. 2.6. Команда XCHG
Команда XCHG (рис. 2.6) осуществляет обмен данными между источником и получателем:
XCHG dst.src; dst-«->-src
и имеет два формата. Общий формат позволяет произвести обмен содержимым любой пары общих регистров, а также обмен между общим регистром и ячейкой памяти при любом допустимом способе адресации. Укороченный формат осуществляет обмен любого общего регистра и аккумулятора АХ. Команда XCHG АХ, АХ, 16-ричный код которой равен 90, используется как команда пустой операции NOP, обеспечивающая задержку ЗТ.
ALIXX(YY)IALIXX(YY)IРис. 2.7. Действие команды XLAT Рис. 2.B. Команды LEA, LDS, LESРис. 2.7. Действие команды XLAT Рис. 2.B. Команды LEA, LDS, LESXLAT — однобайтная команда с кодом операции D7 предназначена для быстрого преобразования кодов и заменяет содержимое AL на байт из 256-байтовой таблицы, начальный (базовый) адрес которой содержится в регистре ВХ (рис. 2.7). Другими словами, содержимое AL используется как индекс таблицы, находящейся в сегменте данных и адресуемой регистром ВХ. При выполнении этой команды к содержимому ВХ прибавляется содержимое AL, а полученный результат используется как смещение относительно DS. Адресуемый таким образом байт из памяти пересылается в AL.
ALIXX(YY)I
ALIXX(YY)I
Рис. 2.7. Действие команды XLAT Рис. 2.B. Команды LEA, LDS, LES
Рис. 2.7. Действие команды XLAT Рис. 2.B. Команды LEA, LDS, LES
| 10001101 | | md reg r/m| I,-d*2P_L_J ! disp H I LEA r, m 0 - LES r, m ; 1 - LDS г, m
I 1100010X | |md reg r/m| J__d(2P——! L-*1!?IL —J
Команды LEA, LDS, LES (рис. 2.8) отличаются от других команд пересылки тем, что при их выполнении в адресуемый регистр (регистры) передаются не собственно данные из памяти, а их адреса. Основное назначение этих команд — инициализация регистров перед выполнением цепочечных команд или перед вызовом подпрограммы.
Команда LEA г, m обеспечивает вычисление эффективного адреса ЕА ячейки памяти в соответствии с указанным способом адресации и загрузку ЕА (а не содержимого адресуемой ячейки памяти!) в указанный общий регистр. Такая операция может потребоваться, например, для загрузки начального адреса таблицы в регистр ВХ перед выполнением команды XLAT.
Команды LDS r/m и LES r,m загружают адресную информацию из памяти в адресуемый общий регистр и в соответствующий сегментный регистр. Сначала вычисляется адрес ЕА памяти, который, как обычно, суммируется с содержимым регистра DS, затем слово из памяти по вычисленному адресу загружается в общий регистр, а следующее слово — ^ регистр DS (команда LDS) или ES (команда LES). При этом кодирование поля md=ll (регистровая адресация) не должно использоваться, так как действия команд в этом случае не определены.
Команды LDS и LES упрощают коммутацию сегментов данных, поскольку одновременно загружают базовый или индексный регистр и сегментный регистр. Если эти команды подготавливают обращение к цепочке, то в команде LDS указывается регистр DI (цепочка-источник расположена в сегменте данных и адресуется регистром DI), а в команде LES — регистр DI (цепочка- получатель обязательно находится в дополнительном сегменте и адресуется регистром DI).
Арифметические команды выполняются над целыми числами четырех типов: беззнаковыми и знаковыми двоичными, упакованными и неупакованными десятичными.
Беззнаковые двоичные числа могут иметь длину 8 или 16 бит, каждый из которых является значащим, т. е. учитывается при определении значения числа. Это обеспечивает диапазон представления чисел 0—255 и 0— 65 535 соответственно. Для таких чисел имеются команды сложения, вычитания, умножения и деления.
Знаковые двоичные числа также могут содержать 8 или 16 бит, но значащими являются все биты, кроме старшего, который определяет знак числа: 0 — положительное число, 1 — отрицательное число. Соответственно диапазоны значений чисел: от —128 до +127 и от —32 768 до +32 767. Число нуль содержит нули во всех разрядах и считается положительным и четным. Число, имеющее нули во всех разрядах, кроме знакового, равно — 27 для 8-бнтовых чисел и —215 для 16-битовых.
Числа представляются в стандартном дополнительном коде, благодаря применению которого сложение и вычитание как знаковых, так и беззнаковых чисел выполняется с помощью одних и тех же команд (рис. 2.9). Для умножения и деления знаковых чисел предусмотрены специальные команды.
r,/m , тг/чй
ООО - ADD; 010 - ADC; 101 - SUB; Oil - SBB; 111 ^ CMP;
I OOXXXOdw] |md reg r/m| FdUp_L_J L_dl5£_)£l
r/m,d
000 - ADD; 010 _ADC; НИ _SUB; 011 - SBB; 111 _CMPj_
I lOOOOOswl Imd XXX r/m] Ld*ep_L_J L-^LiLJ ЕдЕКЗ r_data HJ ec.d
000 - ADD; 010 - ADC; 101 - SUB; 011 - SBB; 111 - CMP;
| OOXXXIOwl
Рис. 2.9. Команды сложения и вычитания
Команда NEG изменяет знак числа, находящегося в общем регистре или ячейке памяти, т. е. формирует его дополнительный код:
NEG dst; dst-*—0 — dst
Например, если однобайтовый операнд равен — 1 (11111111), то команда NEG изменит его на +1 (00000001). Если операнд равен нулю, его значение не изменяется. Попытка изменить знак числа —128 (10000000) или — 216 не модифицирует операнд, но устанавливает флаг переполнения OF. Отметим, что команда NEG отсутствует в ВМ80, поскольку в нем не предусмотрено специальных средств по обработке знаковых чисел.
Команды умножения и деления (рис. 2.10). В МП ВМ86 имеется по две команды умножения (MUL и IMUL) и деления (DIV и IDIV), выполняющие операции с беззнаковыми и знаковыми числами (в дополнительном коде) соответственно. Работа с десятичными числами требует использования специальных команд коррекции ААМ и AAD.
Команды умножения
MUL (IMUL) src; ext:ac-<-acxsrc
выполняют умножение адресуемого операнда (общего регистра или ячейку памяти) и содержимого аккумулятора ас. При работе с байтами функции аккумулятора ас выполняет регистр AL, а функции его расширения (ext) — регистр АН, так что 16-битовое произведение формируется в регистре АХ. Если перемножаются слова, то множимое располагается в регистре АХ, функции расширения которого выполняет регистр DX, так что 32-битовый результат образуется в регистрах DX и АХ.
r/m
00 - MUL; 01_-DIV; 10 - IMUL; 11 - IDIV I llllOllwl |md 1XX r/m] LdUpTtJ П^ЁДП
0 - CBW; 1 - CWD
| 1001100X 1
Рис. 2.10. Команды умножения и деления
Команды умножения беззнаковых и знаковых чисел осуществляют практически одни и те же действия и несколько различаются только влиянием на флаги OF и CF (значения остальных арифметических флагов после выполнения этих команд не определены, т. е. эти флаги могут принимать произвольные состояния). При выполнении команды MUL флаги OF и CF устанавливаются в единицу, если старшая половина произведения, находящаяся в регистрах АН или DX, отличается от нулевой, т. е. разрядность результата действительно превышает разрядность операндов. В противном случае эти флаги принимают нулевые значения. При выполнении команды IMUL флаги OF и CF устанавливаются в единицу, если старшая половина разрядов произведения не является расширением знака младшей половины, т. е. не содержит 00 (0000) или FF (FFFF) при умножении байтов (слов). Это означает, что в старшей половине находятся значащие цифры результата. В противном случае OF = CF = =0 и старшую половину разрядов произведения можно не сохранять. Отсюда следует, что флаги OF и CF несут однотипную информацию о результатах выполнения команд MUL и IMUL.
Команды деления
DIV (IDIV) src;DIV (IDIV) src;ac-«-quot (ext:ac/src)ext-«-rem (ext:ac/src)
DIV (IDIV) src;
DIV (IDIV) src;
производят деление содержимого аккумулятора и его расширения (AH:AL для 8-битового и DX:AX для 16-битового делителя) на содержимое регистра или ячейки памяти src. Частное quot формируется в регистре AL или АХ, а остаток rem — в регистре АН или DX. Дробное частное округляется до целого путем отбрасывания дробной части результата. Состояния всех флагов не определены.
Если частное выходит за диапазоны представления чисел в байте (слове) или делитель является нулем, то автоматически генерируется прерывание по ошибке деления (тип 0), а частное и остаток не определены. В результате этого МП переходит к, подпрограмме обработки прерывания, полный адрес которой CS:IP берется из ячеек 0000 и 0002.
В ряде случаев, например для предотвращения прерывания, может появиться необходимость до выполнения операции деления проверить возможность
возникновения прерывания типа 0. Такая проверка осуществляется с помощью команд:
CMP ext.src; сравнение и переход по
JNB OVERFLOW; переполнению осуществляющих сравнение старшей половины разрядов делимого с делителем и передающих управление по метке OVERFLOW, если левый операнд в команде СМР больше или равен правому (что является условием возникновения переполнения при делении).
Частное и остаток после выполнения команды IDIV всегда имеют одинаковые знаки. Например, при делении числа —47 на +3 из двух возможных результатов: —15 с остатком —2 и —16 с остатком +1 будет сформирован первый результат.
Однобайтовые команды преобразования разрядности операнда CBW и CWD примыкают к командам деления и осуществляют расширение со знаком операнда, который будет использоваться в качестве делимого. Обе команды не влияют на флаги и не изменяют значения операнда. Команда CBW (код операции 98) реализует преобразование байта в слово путем расширения (копирования) знака содержимого регистра AL в регистр АН. Команда CWD (код операции 99) осуществляет аналогичное преобразование слова в двойное слово путем передачи знака содержимого АХ во все биты регистра DX.
Команды CBW и CWD удобно использовать для превращения делимого одинарной длины в делимое двойной длины, что может потребоваться для корректного выполнения команды IDIV. Выполнение команды CBW перед командой IDIV позволяет осуществлять деление 8-битовых чисел, а выполнение команды CWD — деление 16-битовых чисел.
Алгоритмы умножения и деления в МП ВМ86 реализованы не аппаратно, а в виде микропрограмм. Поэтому длительность команд MUL, IMUL, DIV, IDIV включает большое число тактов, причем длительность каждой команды зависит не только от разрядности операндов и расположения операнда src (в регистре или в памяти), но и от конкретных значений операндов в пределах, указанных в табл. 2.10 диапазонов длительности команд. В первом столбце в скобках указана длина сомножителей команд умножения и длина делителя (частного) для команд деления.
Таблица 2.10
Тип операции
MUL
IMOL
DIV
IDIV
(длина
операнда)
г-г
(байт)
70-77
80-98
80-90
101-112
г-г
(слово)
118-133
128-154
144-182
165-184
r-m
(байт)
(76-83 )+ЕА
(84-104)+ЕА
(86-96)+ЕА
(107-118)+ЕА
г-m
(слово)
(124-139)+ЕА
(134-160)+ЕА
(150-168)+ЕА
(171-190)+ЕА
К логическим командам относятся следующие (рис. 2.11): AND (конъюнкция, И), OR (дизъюнкция, ИЛИ), XOR (исключающие ИЛИ, сумма по модулю два), TEST (неразрушающая проверка, которая выполняет конъюнкцию операндов без изменения их значений, но с влиянием на флаги) и NOT (инверсия, НЕ). Все логические операции выполняются поразрядно, т. е. каждый бит операндов обрабатывается независимо от других. Для этого в АЛУ микропроцессора включены наборы не связанных друг с другом логических элементов, 64
содержащие по 16 двухвходовых элементов, И, ИЛИ и сумматоров по модулю два, а также набор из 16 инверторов.
Команды передачи управления используются в разветвляющихся и циклических программах, а также при вызове подпрограмм и возврате из них.
Сегментная организация программной памяти определяет два основных типа команд передачи управления: внутрисегментные NEAR (близкие) и межсегментные FAR (далекие). При выполнении команд типа NEAR модифицируется только регистр IP, и адрес переходов представляется одним словом или даже байтом, если используется короткий вариант перехода с ограниченным диапазоном адресов. При выполнении команд типа FAR изменяется содержимое регистров IP и CS и адрес перехода представляется двумя словами (сег- мент:смещение), что позволяет перейти в любую точку адресного пространства памяти.
rt/m , гг/т
OOlOOOd - AND; OOOOlOd - OR; OOllOOd - K0R;_1000010 - TEST
I XXXXXXXw] [mdTe^^j FdispJ-J r_d;sp_Hj
r/m, d
100 - AND; 001 - OR; 110 - HOR
| lOOOOOOwl |md XXX r/m] fj'^P-t-J L_d2?L^L! С^йКкИ L*!®1!® JSJ
———— — —TEST jVnuji
I 1111011 w | |md 000 r/m| I diap L I I disp H I | date L~| l_dat^ 11 J ac, d
0010010 - AND; 0000110 - OR; 0011010 - KOR; 1010100 - TEST
| XXXXXXXw] | data L |
| 1111011 wl |md 010 r/ilN0T r/m
Рис. 3.11. Команды логических опереиий
В рассматриваемую группу команд входят команды безусловных переходов, вызовов, возвратов, условных переходов, управления циклами и прерываний.
Команды безусловных переходов JMP (рис. 2.12) производят модификацию регистра IP или регистров IP и CS без сохранения прежних, значений этих регистров. Имеется три формата (рис. 2.13) команды JMP типа NEAR, осуществляющих переход в пределах текущего кодового сегмента (внутрисегментный, близкий переход), и два формата команды JMP типа FAR, осуществляющих переход в любую точку адресного пространства (межсегментный, дальний переход).
| 1110101 1 | disp L I JMP disp L
1 - JMP disp; 0 - CALL disp | 1110100x1 | disp L I I disp H I
10 - JMP r/m; 01 j_CALL_r/m
| 111111111 | md XXO r/m]
0 - JMP addr; 1 - CALL addr
| 1110101x1 I Offset L | | offset H | | seg L | | seg H |
10 - JMP m: 01 - CALL m
| 111111111 | md XXI r/m]L_^LtLj
Рис. 3.13. Форматы команд JMP м CALL
Двухбайтовая команда JMP disp L во втором байте содержит смещение, которое интерпретируется как знаковое целое. Это смещение добавляется (с предварительным расширением знака до 16 бит) к содержимому IP, которое соответствует адресу команды, находящейся после данной команды JMP. Диапазон значений disp L составляет от —128 до +127, причем при положительном смещении осуществляется переход вперед, а при отрицательном — переход назад. Данная команда реализует так называемый короткий переход, который в мнемоническом обозначении отмечается указателем SHORT (например, JMP SHORT COUNT — короткий переход к метке COUNT). Она находит широкое применение, поскольку большинство переходов в прикладных программах осуществляется на небольшие расстояния.
Внутрисегментные переходы Межсегментные переходы
Рис. 2.13. Варианты формирования адресов переходов командой JMP
Трехбайтовая команда JMP disp производит такое же действие, как и предыдущая команда, но содержит 16-битовое смещение disp (ассемблерный указатель NEAR PTR). Это смещение также интерпретируется как знаковое целое, принимающее значения от —32 768 до +32 767, что обеспечивает переход в любую точку текущего кодового сегмента. Напомним, что благодаря игнорированию переноса из бита 16, возникающего при сложении IP и disp, текущий сегмент рассматривается как кольцо. Поэтому диапазон переходов составляет от —IP до 216 — IP, а не от —215 до 215—1. Если, например, 1Р = = 8000 и смещение равно 7FFF или меньше, оно вызовет переход вперед, а смещение, равное 8000 или больше, вызовет переход назад.
Первые два рассмотренных формата команды JMP реализуют относительный способ адресации, который обеспечивает позиционную независимость программ. Следующие три формата определяют абсолютные адреса переходов и загружают регистр IP (а при межсегментных переходах и регистр CS) новыми значениями, не зависящими от прежних.
Команда JMP r/m осуществляет косвенный внутрисегментный переход (ассемблерный указатель WORD PTR), при котором в регистр IP загружается содержимое регистра или ячейки памяти в соответствии с постбайтовым режимом адресации. Необязательные байты disp L, disp Н в команде стандартно относятся к режиму адресации памяти.
Команда JMP m реализует косвенный межсегментный переход (ассемблерный указатель DWORD PTR) через содержимое двух ячеек памяти: слово из
адресуемой с помощью постбайта ячейки загружается в IP, а слово из следующей ячейки — в регистр CS. Если в постбайте указывается регистр (md=ll), то операция не определена.
Команда JMP addr реализует прямой межсегментный переход (ассемблерный указатель FAR PTR) и содержит 4 байт адреса перехода: два байта сегментного смещения offset загружаются в регистр IP, а два байта sr — в регистр CS.
Команды вызова подпрограммы CALL (см. рис. 2.12) имеют такие же форматы, как и команды JMP (кроме команды короткого перехода) и выполняются аналогичным образом, за исключением того, что автоматически запоминается адрес возврата (т. е. адрес команды, следующей за командой CALL). С этой целью при внутрисегментных вызовах в стеке запоминается содержимое IP, а при межсегментных вызовах — сначала содержимое IP, а затем CS. Напомним, что включение в стек каждого слова сопровождается уменьшением содержимого SP на два и что SP адресует последнюю заполненную 16-битовую ячейку стека. Использование стека для временного хранения адресов возврата позволяет легко реализовать правильный порядок возвратов из вложенных подпрограмм.
Перечислим действия, выполняемые 5-байтовой командой прямого межсегментного вызова CALL addr:
содержимое регистра SP уменьшается на два;
в адресуемую регистрами SP и SS ячейку памяти пересылается содержимое CS;
содержимое SP уменьшается на два;
в адресуемую регистрами SP и SS ячейку памяти засылается содержимое регистра IP;
в IP загружается смещение offset;
в CS загружается сегментный адрес seg.
В микропроцессоре ВМ86 отсутствуют команды условных вызовов подпрограмм (в отличие от ВМ80) и поэтому при необходимости условный вызов реализуется двумя командами. Например, если требуется вызвать подпрограмму SUBR при ненулевом результате операции, т. е. реализовать отсутствующую команду CNZ, то выполняется команда условного перехода, проверяющая противоположное условие, и осуществляется «перескок» через команду вызова CALL:
JZ SKIP
CALL SUBR
SKIP: ...
В зависимости от того, как определен тип подпрограммы SUBR, ассемблер сформирует необходимую команду внутрисегментного вызова.
Команды возвратов (из подпрограмм) RET (рис. 2.14). Каждая подпрограмма должна содержать хотя бы одну команду возврата RET, которая возвращает управление программе, осуществившей вызов. Такая передача управления осуществляется путем извлечения из стека адреса возврата, включенного в него командой вызова подпрограммы. Поэтому команды возврата не содержат никакой адресной информации и неявно адресуют вершину стека. Тип команды возврата (внутрисегментный NEAR или межсегментный FAR) выбирается в соответствии с типом команды CALL, осуществившей вызов данной подпрограммы.
Однобайтовая команда внутрисегментного возврата RET (код операции СЗ) выполняет следующие действия: слово из вершины стека загружается в IP, а содержимое SP увеличивается на два.
Однобайтовая команда межсегментного возврата RET (код операции СВ) осуществляет следующие действия: слово из вершины стека передается в IP; производится инкремент SP на два; слово из следующей ячейки стека передается в CS; производится инкремент SP на два. В результате в регистрах IP и CS оказывается полный адрес возврата, a SP адресует новую вершину стека.
О - RET (NEAR); 1 - RET(FAR)I иоохои 1О - RET d(NEAR); 1-RFT d(FAR ) | liooxoiol | data L | | data H |О - RET (NEAR); 1 - RET(FAR)I иоохои 1О - RET d(NEAR); 1-RFT d(FAR ) | liooxoiol | data L | | data H |Рис. 2.14. Команды возврата из подпрограммк указателю стека SP (послеРис. 2.14. Команды возврата из подпрограммк указателю стека SP (послеДве трехбайтовые команды RET (внутрисегментный возврат с кодом операции С2 и межсегментный возврат с кодом СА) содержат два байта данных, интерпретируемых как беззнаковое целое. Они производят такие же действия, как и соответствующие однобайтовые команды возврата, но дополнительно прибавляют содержащиеся в них данные извлечения из стека адреса возврата). Эти
О - RET (NEAR); 1 - RET(FAR)
I иоохои 1
О - RET d(NEAR); 1-RFT d(FAR ) | liooxoiol | data L | | data H |
О - RET (NEAR); 1 - RET(FAR)
I иоохои 1
О - RET d(NEAR); 1-RFT d(FAR ) | liooxoiol | data L | | data H |
Рис. 2.14. Команды возврата из подпрограмм
к указателю стека SP (после
Рис. 2.14. Команды возврата из подпрограмм
к указателю стека SP (после
команды упрощают возврат из тех подпрограмм, параметры которых передаются в стеке. Прибавление к SP числа, равного числу байтов в блоке параметров, эквивалентно удалению этого блока из стека.
В микропроцессоре ВМ86 нет команд условного возврата, и поэтому условный возврат из подпрограмм обеспечивается командой условного перехода противоположного смысла и безусловного возврата, как это делалось при
эмуляции команд условного вызова:
JZ SKIP
RET SKIP:
Команды условных переходов (рис. 2.15). Имеется 18 команд условных переходов, которые представлены единым двухбайтовым форматом, позволяющим осуществлять короткие (в пределах от — 128 до -)-127) переходы относительно указателя команд IP. При выполнении этих команд анализируется некоторое условие, соответствующее текущим состояниям отдельных флагов (кроме флага АР) или некоторым комбинациям флагов (табл. 2.11). Если условие выполнено, то осуществляется переход и однобайтовое смещение, расширенное со знаком до 16 бит, добавляется к содержимому IP. Если условие не выполнено, выполняется следующая по порядку команда. Время выполнения команд составляет восемь тактов в первом случае и четыре такта во втором.
I Olliccccl | disp L | JCC disp L
10 - LOOP; 00 - L00PNZ/L00PNE; И - JCKZ; 01 - LOOPZ/LOOPE | 111000XX 1 | disp L I
Рис. B.15. Форматы команд условных переходов и управления циклами
Команды условных переходов обеспечивают ограниченный диапазон переходов, для расширения которого необходимо сочетать их с командами безусловных переходов. Большинство команд условных переходов имеет по два мнемонических обозначения, которые подчеркивают содержательный смысл проверяемого условия и введены для удобства программирования. Обобщенное
мнемоническое обозначение команд имеет вид Jcond label, где cond соответствует проверяемому условию (первая графа табл. 2.11), двоичный код которого СССС (вторая графа табл. 2.11) помещается в соответствующее поле первого байта формата команды. Операнд label обозначает команду, к которой осуществляется переход. В качестве label может использоваться метка, а также метка плюс/минус константа или выражение, вычисление которого дает константу.
Команды условных переходов позволяют проверить все отношения между знаковыми и беззнаковыми числами. В мнемокодах этих команд при сравнении знаковых чисел для обозначения условия «больше» используется буква G (Greater), а для обозначения «меньше» — буква L (Less). Для аналогичных условий при сравнении беззнаковых чисел используются соответственно буквы A (Above) и В (Below). Условие равенства обозначается буквой Е (Equal), а невыполнение некоторого условия — буквой N (Not).
Таблица 2 11
Мнемокод КодУсловие перехода
условия СССС
G/NLE NG/LE L/NGE NL/GE
1111
1110
1100
1101
Больше/не меньше и не равно Не больше/меньше или равно Меньше/не больше и не равно Не меньше/больше или равно
Для чисел без знака
(SF® OF) V ZF = 0 (SF©OF) V ZF = 1 SF©OF = 1 SF®OF = 0
A/NBE
0111
Больше/не меньше и не равно
CF V ZF = 0
NA/BE
0110
Не больше/меньше или равно
CF V ZF = 1
B/NAE/C
0010
Меньше/не больше и не равно
CF = 1
NB/AE/NC
0011
Не меньше/больше или равно
Для прочих данных
CF = 0
E/Z
0100
Равно/по нулю
ZF = 1
NE/NZ
0101
Не равно/по не нулю
ZF = 0
S
1000
Отрицательный результат
SF = 1
NS
1001
Положительный результат
SF = 0
0
0000
Есть переполнение
OF = 1
NO
0001
Нет переполнения
OF = 0
Р/РЕ
1010
Четно
PF = 1
NP/PO
1011
Нечетно
PF = 0
Логика
Признак
Для чисел со знаком
Первые восемь команд в табл. 2.11 предназначены в основном для использования после команд сравнения СМР, в которых второй операнд вычитается из первого. В результате сравнения двух операндов и последующего перехода в зависимости от состояния флагов реализуются решения, соответствующие операторам отношений <, >, ^, ^, у=, = . Последние восемь команд можно использовать в любой ситуации, когда в зависимости от значения указанного в табл. 2.11 флага следует предпринять одно из двух действий.
Команды условных переходов реализуют относительную адресацию, как и первые два формата команды безусловного перехода JMP. При этом встает задача определения конкретного значения смещения dispL, которое должно быть добавлено к регистру IP для осуществления перехода к указанной метке.
Решение этой задачи рассмотрим на примере следующего фрагмента программы:
0050 AGAIN: INCСХ
0052ADDАХ, [ВХ]
0054JNSAGAIN
0056MOVRESULT, СХ
В левом столбце приведены эффективные адреса команд, т. е. содержимое IP при выборке каждой команды. Вычисление
—0050 0056
—6
показывает, что при ассемблировании команды JNS следует установить смещение dispL — FA, соответствующее дополнительному коду числа —6.
Команды управления циклами (см. рис. 2.15) используются для удобства реализации вычислительных циклов (итераций). Они осуществляют условный переход в зависимости от состояния регистра СХ, который выполняет функции счетчика циклов. Команды LOOP, LOOPE и LOOPNE, кроме того, декрементируют регистр СХ перед выполнением условного перехода, что исключает использование соответствующей команды декремента. Как и в командах условных переходов, в данном случае при выполнении условия управление передается команде, расположенной в диапазоне адресов от —128 до +127, задаваемых смещением в байте 2 команды.
Команда LOOP, которая обычно ставится в конце цикла, осуществляет декремент СХ — 1 и если СХ + 0, то добавляет смещение dispL к регистру IP; в противном случае (СХ = 0 и цикл окончен) выполняется следующая по порядку команда. Таким образом, смысл этой команды состоит в повторении цикла СХ раз, т. е. в выполнении переходов до тех пор, пока СХ + 0.
Команда JCXZ имеет противоположный смысл и осуществляет переход только при СХ = 0. Ее удобно использовать в начале цикла, особенно в ситуации, когда цикл может не выполняться ни разу. Если команда LOOP выполняет постпроверку содержимого СХ, то команда JCXZ выполняет его предпроверку.
Фактически команда LOOP label эквивалентна двум командам
DEC СХ
JNZ label
и ее использование кроме удобства программирования позволяет экономить один байт объектного кода и один такт Т. При большом числе повторений цикла экономия времени может оказаться значительной.
Команда LOOPE/LOOPZ по сравнению с командой LOOP вводит дополнительное условие повторения цикла: ZF=1. Это позволяет выходить из вычислительного цикла как по окончании заданного числа циклов, так и при получении ненулевого результата (или неравенстве сравниваемых операндов). Команда LOOPNE/LOOPNZ вводит дополнительное условие противоположного смысла: ZF = 0, которое позволяет прекращать цикл при получении нулевого результата (или по равенству сравниваемых операндов).
Команды обработки цепочек. Имеется пять однобайтовых команд (рис. 2.16), предназначенных для обработки одного элемента цепочки. Напо- 70
мним, что под цепочкой (строкой) понимается последовательность любых контекстно связанных байтов или слов, находящихся в смежных ячейках памяти. Цепочечной команде может предшествовать однобайтовый префикс повторения REP, который вызывает повторение действия команды над следующим элементом. Это позволяет обрабатывать цепочки значительно быстрее, чем при организации программного цикла. Повторение рассчитано на максимальную длину цепочки 64 Кбайт и может заканчиваться по одному или двум условиям. Требуемое число повторений указывается в регистре СХ, содержимое которого автоматически декрементируется при каждом повторении операции. Когда содержимое СХ становится равным нулю, МП выполняет следующую команду. При выполнении повторяющейся цепочечной команды МП воспринимает внешние прерывания.
В качестве операндов команды могут иметь цепочку-источник, цепочку- получатель или то и другое одновременно. Цепочка-источник по умолчанию размещается в текущем сегменте данных, и все элементы адресуются регистром SI. Имеется возможность использовать другой сегмент, указав его в префиксе смены сегмента. Цепочка-получатель всегда размещается в дополнительном сегменте, и ее элементы адресуются регистром DI. Для начальной загрузки адресов в регистры можно использовать команды LEA, LDS и LES.
При выполнении цепочечной команды содержимое SI и DI автоматически изменяется на ±1 (при обработке байта) или на ±2 (при обработке слова), чтобы адресовать следующие элементы цепочек. Флаг DF определяет направление изменения адресов: автоинкремент (DF = 0) или автодекремент (DF = 1).
Каждая цепочечная команда способна оперировать как с байтами, так и со словами, причем тип элементов цепочек ассемблер может определить по атрибутам операндов. Однако многие версии ассемблера допускают указание типа элементов путем добавления букв В (байт) или W (слово) к мнемоническим обозначениям цепочечных команд: MOSB или MOVSW, CMPSB или SMPSW и т. д. При этом операнды в команде становятся необязательными (ассемблер их игнорирует, так как адресация цепочек известна заранее) и могут указываться только для удобства программирования.
Префикс повторения (см. рис. 2.16) обеспечивает повторяющееся (циклическое) выполнение цепочечной команды. При отсутствии префикса команда оперирует только одним элементом цепочки. Префикс повторения имеет пять мнемокодов: REP/REPE/REPZ и REPNE/REPNZ, которые определяют только два объектных кода, различающихся однобитным полем z, и введены для лучшего отражения содержательного смысла команды. Префикс повторения не влияет на флаги. Он обеспечивает автоматическое декрементирование регистра СХ на каждом повторении команды и проверку содержимого СХ на нуль.
Безразличен в командах MOVS, LCDS, ST0S
| Команды CMPS и SCAS прекращаются, когда ZF*Z I 1111001Z | Префикс повторения REP; REPE/REPZ при Z*1 REPNE/REPNZ при Z-0
010 - MOVS; Oil - CMPS; 101 - STOS; 110 - LODS; 111 - SCAS | IQlOXXXwl
Рис. 2.16. Команды обработки цепочек
Префикс REP используется с командами пересылки MOVS и STOS и инициирует действие «повторять, пока не будет достигнут конец цепочки», т. ё. по-
ка СХ=#О. Префиксы REPE и REPZ действуют аналогично и имеют такой же машинный ход, как и префикс REP. Они используются с командами сравнения CMPS и SCAS и оперируют с флагом ZF, состояние которого определяется результатом исполнения этих команд, причем появление ZF=1 останавливает процесс повторения команд. Префиксы REPNE и REPNZ также применяются с командами CMPS и SCAS, но используют противоположное условие ZF = 0. Наличие дополнительных проверяемых условий позволяет окончить выполнение этих команд по результату вычислений до завершения перебора всех элементов
цепочки.
MOVS
18
9
+
17n
CMPS
18
9
+
17n
SCAS
15
9
+
15n
LODS
12
9
+
13n
STOS
11
9
+
lOn
Таблица 2.12Таблица 2.12Команда Время выполнения командыКоманда Время выполнения командыбез префикса с префиксом повторения повторениябез префикса с префиксом повторения повторенияЦепочечные команды пересылки MOVS, LODS и STOS на флаги не влияют, а команды неразрушающего сравнения CMPS и SCAS устанавливают значения флагов в соответствии с разностью операндов, сохраняя значения самих операндов. Время выполнения цепочечных команд (в тактах синхронизации) указано в табл. 2.12, где п— число повторений, которое предварительно заносится в регистр СХ.
Таблица 2.12
Таблица 2.12
Команда Время выполнения команды
Команда Время выполнения команды
без префикса с префиксом повторения повторения
без префикса с префиксом повторения повторения
Команды с префиксом повторения при
обработке длинных цепочек могут выполняться в течение значительного времени. Поэтому для сокращения времени реакции на внешние прерывания МП воспринимает внешние сигналы прерывания после обработки каждого элемента цепочки. (Сигнал INTR = 1 должен установиться не более чем за один такт до окончания
Таблица 2.13
Команда,
Префикс
Описание действия
ев действие
повторения
MOVS
dat,arc;
Пересылка из цепочки arc, адресуемой
dst
* arc
REP
регистром SI (сегмент данных) в цепочку dst, адресуемую регистром DI (дополнительный сегмент) Блоковая пересылка память-память
CMPS
d st,src;
—
Вычитание элемента цепочки dst из
arc
- dst
REPE/REPZ
элемента цепочки ere (неразруиаюцее сравнение)
Сравнение элементов до обнаружения одинаковых элементов или до окончания цепочек
REPNE/REPNZ
Сравнение элементов до обнаружения различавшихся элементов или до окончания цепочек
SCAS
dat;
-
Вычитание элемента цепочки dst, ад-
ac -
- dat
REPE/REPZ
ресуемой регистром DI, из содержимого AL или АХ (нераэружаюцее сравнение) Поиск элемента цепочки со значением, отличаюцимся от ас
REPNE/REPNZ
Поиск элемента цепочки со значением, совпадавшим с ас
LODS
arc;
—
Загрузка аккумулятора элементом це-
ac <
• arc
почки, адресуемым регистром SI (префикс повторения обычно не используется)
STOS
dat;
—
Запоминание содержимого аккумулятора
dst
♦ ac
REP
AL или АХ в элементе цепочки, адресуемом регистром DI
Инициализация цепочки на фиксирован-, ное значение, содержацееся в аккуму-' ляторе
цикла обработки). После возврата из прерывания операция возобновляется, как обычно, с точки прерывания. Однако во время обработки прерывания МП помнит действие только одного префикса, непосредственно предшествующего команде. Поэтому, если с цепочечной командой используется несколько префиксов (префикс замены сегмента, префикс блокировки), необходимо запрещать прерывания на время ее выполнения.
Обобщенные обозначения цепочечных команд и выполняемые ими действия при различных префиксах приведены в табл. 2.13.
Команду CMPS удобно применять для нахождения одинаковых (REPE CMPS) или различающихся (REPNE CMPS) элементов цепочек. Достижение конца цепочки при выполнении этих команд соответственно означает, что цепочки полностью различны (не содержат одинаковых элементов) или полностью совпадают (не содержат различающихся элементов). Команда SCAS производит сравнение элемента цепочки с некоторым эталоном, содержащимся в аккумуляторе. Вариант REPE SCAS осуществляет просмотр цепочки до тех пор, пока значение элемента не отличается от эталона или не достигается конец цепочки, а вариант REPNE SCAS — просмотр цепочки до обнаружения элемента, равного эталону, или до достижения конца цепочки.
Команду LODS удобно использовать в программных циклах вместо двух команд: MOV, ac,src и INC SI (или DEC SI в зависимости от направления продвижения по цепочке). Отметим, что команда LODS оперирует элементами цепочки, расположенной в сегменте данных, причем имеется возможность замены сегмента, а команда STOS оперирует элементами цепочки, которая всегда находится в дополнительном сегменте. В последнем случае префикс замены сегмента не указывается, а при его наличии — игнорируется.
Арифметический сопроцессор К1810ВМ87
Общие сведения и технические характеристики
Микросхема К1810ВМ87 представляет собой однокристальный 80-битовый арифметический сопроцессор (АСП), выполненный по высококачественной д-МОП технологии [4, 5, 14]. Кристалл микросхемы с геометрическими размерами 5,5 X 5,5 мм содержит около 65 000 транзисторов и потребляет мощность не более 3 Вт от источника питания напряжением +5 В. Схема выпускается в 40-выводном корпусе. Синхронизируется однофазными импульсами с частотой повторения 2...5 МГц от внешнего тактового генератора.
Сопроцессор К1810ВМ87 (обозначаемый далее для краткости ВМ87) может быть использован только совместно с центральным процессором ВМ86/ВМ88, так как в нем (ВМ87) отсутствует механизм выборки команд. Сопроцессор предназначен для повышения производительности центрального процессора в среднем в 100 раз при выполнении операций с многоразрядными целыми и вещественными числами. Совмещение ЦП ВМ86 с сопроцессором ВМ87 сводится к простым соединениям соответствующих выводов без использования дополнительных ИС.
Сопроцессор содержит четыре 16-битовых, один 64-битовый и восемь 80-битовых регистров. Он имеет 16-битовую шину данных для связи с ОЗУ и портами ввода — вывода, отображенными на память. Шина адреса имеет 20 линий, что позволяет при передаче данных непосредственно адресоваться к памяти емкостью до 1 Мбайт. Для экономии числа выводов младшие 16 адресных линий мультиплексированы во времени с линиями данных и составляют единую шину адреса/данных. Четыре старшие адресных линии аналогично мультиплексированы с линиями состояния АСП. Чтобы сигналы этих линий можно было использовать в системе, их обязательно разделяют с помощью тех же внешних ИС, которые используются ЦП.
Система команд АСП ВМ87 содержит 68 мнемокодов и позволяет совершать операции над целыми двоичными, двоично-десятичными и вещественными числами в широком диапазоне значений. Имеется набор арифметических команд, включающих сложение, вычитание, умножение и деление, который ориентирован на обработку чисел с высокой точностью. Весьма разнообразны команды пересылки данных, специальные вычислительные команды, такие, как вычисление квадратного корня, масштабирование, нахождение тангенса, логарифма и др.
Использование АСП ВМ87 совместно с ЦП ВМ86 расширяет систему команд последнего до 159 мнемокодов.
Предельно допустимые условия эксплуатации БИС К1810ВМ87: температура окружающей среды 0...70 °C, напряжение на любом выводе относительно корпуса —1... + 7 В. Основные параметры по постоянному току соответствуют приведенным в табл. 1.2.
Назначение выводов БИС К1810ВМ87
AD15 — ADO — входы/выходы для формирования адресов и передачи данных. В течение первой части цикла шины (Т1) они содержат адрес, а в остальной части цикла (Т2, ТЗ, TW, Т4) по ним вводятся или выводятся данные. Когда шиной управляет ЦП, выводы AD15 — ADO являются входами.
A19/S6 — A16/S3 — выходы для формирования четырех старших разрядов адреса в течение первой части цикла шины (Т1), в остальной части цикла (Т2, ТЗ, TW, Т4) имеют постоянные значения S3 = S4 = S6=1, S5 = 0. Когда шиной управляет ЦП, эти выводы являются входами (рис. 3.1).
BHE/S7 выходной сигнал разрешения старшего байта шины данных. Значение ВНЕ=0 устанавливается в такте Т1 при чтении или записи данных с использованием старших разрядов шины данных D15 — D8. Если разряды D15 — D8 при передаче данных не используются, то ВНЕ = 1. В остальной части цикла шины (Т2, ТЗ, TW, Т4) действует выходной сигнал 57 = 0. Когда сопроцессор не управляет шиной, данный вывод используется как вход.
S2— S0 — выходные сигналы кода состояния сопроцессора; 52 51 50=101 — чтение из памяти; 52 51 50=110 — запись
згINTNDPADO ADIIS1519CLKRESET1421AD2AD31322READYAD41211ADS ADS AD723BUSY10925QSO8AD 8AD9AD1024QS176315ADll33RQ/BTIAD12AD1342Б3SO2AD 14 ADIS2751392855A16/S3AI7/S438371GND36A18/S5A19/S620GHD3540UM34згINTNDPADO ADIIS1519CLKRESET1421AD2AD31322READYAD41211ADS ADS AD723BUSY10925QSO8AD 8AD9AD1024QS176315ADll33RQ/BTIAD12AD1342Б3SO2AD 14 ADIS2751392855A16/S3AI7/S438371GND36A18/S5A19/S620GHD3540UM34Рис. 3.1. Условное графическое обозначение АСП ВМ87Рис. 3.1. Условное графическое обозначение АСП ВМ87в память; 52 51 50=111—пассивное со
зг
INT
NDP
ADO ADI
IS
15
19
CLK
RESET
14
21
AD2
AD3
13
22
READY
AD4
12
11
ADS ADS AD7
23
BUSY
10
9
25
QSO
8
AD 8
AD9
AD10
24
QS1
7
6
31
5
ADll
33
RQ/BTI
AD12
AD13
4
2Б
3
SO
2
AD 14 ADIS
27
51
39
28
55
A16/S3
AI7/S4
38
37
1
GND
36
A18/S5
A19/S6
20
GHD
35
40
UM
34
зг
INT
NDP
ADO ADI
IS
15
19
CLK
RESET
14
21
AD2
AD3
13
22
READY
AD4
12
11
ADS ADS AD7
23
BUSY
10
9
25
QSO
8
AD 8
AD9
AD10
24
QS1
7
6
31
5
ADll
33
RQ/BTI
AD12
AD13
4
2Б
3
SO
2
AD 14 ADIS
27
51
39
28
55
A16/S3
AI7/S4
38
37
1
GND
36
A18/S5
A19/S6
20
GHD
35
40
UM
34
Рис. 3.1. Условное графическое обозначение АСП ВМ87
Рис. 3.1. Условное графическое обозначение АСП ВМ87
стояние сопроцессора; остальные комбинации значений не используются. Код состояния выставляется в такте Т4 и сохраняет свое значение в тактах Т1 и Т2. В тактах ТЗ и TW, когда входной сигнал READY = 1, выставляется код пассивного
состояния 52 51 50=111. Код состояния используется системным контроллером К1810ВГ88 для формирования соответствующих сигналов управления при обращениях к памяти. Определенные изменения сигналов 52, 51 или 50 в такте Т4 служат для индикации начала цикла шины, а пассивное состояние в такте ТЗ или TW — для индикации конца цикла шины. Когда управление шиной осуществляет ЦП, эти выводы являются входами.
RQ/GT0 — вход/выход используется для запроса/предоставления доступа к локальной шине ЦП, когда сопроцессору требуется переслать операнд. Этот вывод может быть иопользован для запроса/предоставления доступа другому процессору, который связан с АСП по линии RQ/GT1. Последовательность
взаимодействия ДСП с ЦП по линии RQ/GT0 состоит в следующем: 1) сопроцессор посылает запрос центральному процессору в форме отрицательного импульса длительностью, равной одному периоду СЕК, когда ему необходима локальная шина либо когда он получает запрос по линии RQ/GT1 от другого процессора; 2) сопроцессор ожидает сигнала (отрицательного импульса) предоставления шины от ЦП и, получив его, в следующем такте начинает пересылку операнда по шине либо в этом же такте передает этот сигнал по линии RQ/GT1 другому процессору, запросившему доступ; 3) сопроцессор формирует ответный отрицательный импульс центральному процессору длительностью, равной одному периоду CLK после завершения пересылки операнда либо по получению ответного импульса по линии RQ/GT1 от другого процессора.
RQ/GT1 — вход — выход, сигнал запроса/предоставления шины для связи сопроцессора с другим процессором, использующим локальную шину. Если сопроцессор не управляет локальной шиной в момент прихода запроса по линии RQ/GT1 от другого процессора, то этот запрос передается с запаздыванием на один такт CLK- Сигнал предоставления шины от ЦП и ответный сигнал о завершении доступа другим процессором также передаются сопроцессором с задержкой на один такт СЕК. Если сопроцессор управляет локальной шиной, то последовательность его взаимодействия с другим процессором по линии RQ/GT1 состоит в следующем: 1) процессор посылает запрос о предоставлении шины сопроцессору в форме отрицательного импульса длительностью, равной одному периоду СЕК; 2) во время ближайшего такта Т4 или Т1 сопроцессор посылает сигнал подтверждения (в форме отрицательного импульса длительностью, равной одному периоду СЕК) запросившему процессору, что свидетельствует об освобождении локальной шины сопроцессором и переходе его в состояние ожидания сигнала завершения использования шины от запросившего процессора; 3) после завершения использования шины запросивший процессор посылает отрицательный импульс длительностью, равной одному периоду СЕК, сопроцессору, который в следующем такте возобновляет работу с локальной шиной.
QS1, QS0 — входные сигналы кода состояния очереди команд. Они позволяют сопроцессору следить за состоянием очереди команд ЦП с тем, чтобы синхронизировать начало выполнения очередной команды. Состояние очереди кодируется следующим образом:
QS1 QS0 = 00 — очередь не изменилась;
QS1 QS0 = 01 —первый байт команды взят из очереди;
QS1 QS0=10— очередь реинициализировалась (пуста);
QS 1 QSO=11 —очередной байт команды взят из очереди.
INT — выходной сигнал запроса прерывания, указывающий на возникновение незамаскированной исключительной ситуации. Обычно этот вывод подключается ко входу контроллера прерываний К580ВН59А.
BUSY— выходной сигнал занятости; сигнал BUSY=1 указывает на то, что сопроцессор выполняет команду. Этот вывод соединяется с выводом TEST ЦП, обеспечивая тем самым синхронизацию его работы и сопроцессора. В случае возникновения незамаскированной исключительной ситуации сигнал BUSY
остается активным (BUSY = 1) до тех пор, пока флаг исключительной ситуации не будет сброшен.
READY — входной сигнал готовности от внешних устройств. Сигнал RDY подтверждения готовности от памяти или ВУ синхронизируется тактовым генератором К1810ГФ84, который формирует сигнал READY для АСП и ЦП.
RESET —входной сигнал сброса (начальной установки), устанавливающий сопроцессор в начальное состояние. Длительность сигнала RESET = = 1 должна составлять не менее четырех периодов СЕК-
CLK — входной сигнал тактовой частоты от генератора тактовых импульсов К1810ГФ84, осуществляющий временную синхронизацию работы сопроцессора. Допустимый диапазон частот 2—5 МГц.
GND — выводы для заземления.
Таким образом, все выводы сопроцессора ВМ87 (за исключением BUSY и INT) имеют обозначение, идентичное выводам ВМ86. При подключении АСП к ВМ86 одноименные выводы соединяются между собой, выход BUSY подключается ко входу TEST ЦП, а выход INT — к одному из входов программируемого контроллера прерываний К1810ВН59А, используемого в системе.
Структура арифметического сопроцессора К1810ВМ87
Форматы данных. АСП ВМ87 может оперировать данными семи различных форматов: целых двоичных чисел (три формата), целых двоично-десятичных чисел (один формат) и вещественных чисел с плавающей запятой (три формата). Структура форматов приведена на рис. 3.2, а наименование и примерный диапазон значений — в табл 3.1.
цс КЦ дц дд кв дв ввцс КЦ дц дд кв дв вв15311531ОДвоичный КОД IОДвоичный КОД IДвоичный кодДвоичный кодоо6379Е31Е636379Е31Е63Двоичный код7ВДвоичный код7ВвзоПорядок | Мантисса [взоПорядок | Мантисса [79795ВПорядок | Мантисса645ВПорядок | Мантисса64ПорядокПорядокООООМантиссаМантиссаОООО
цс КЦ дц дд кв дв вв
цс КЦ дц дд кв дв вв
15
31
15
31
О
Двоичный КОД I
О
Двоичный КОД I
Двоичный код
Двоичный код
о
о
63
79
Е
31
Е
63
63
79
Е
31
Е
63
Двоичный код
7В
Двоичный код
7В
взо
Порядок | Мантисса [
взо
Порядок | Мантисса [
79
79
5В
Порядок | Мантисса64
5В
Порядок | Мантисса64
Порядок
Порядок
О
О
О
О
Мантисса
Мантисса
О
О
О
О
Рис. З.В. Структура форматов данных АСП ВМ87
Целые двоичные числа записываются в памяти, начиная с младших байтов. Во всех трех форматах ЦС, КЦ и ДЦ отрицательные числа представляются в дополнительном коде (рис. 3.2), тем самым старший байт определяет знак числа (0 — положительное число, 1 —отрицательное число).
Полный диапазон целых чисел представлен в табл. 3.2. Один из кодов, в котором знаковый разряд s= 1, а в значащих разрядах все нули, выделен для
обозначения неопределенности. Код неопределенности генерируется в исключительных ситуациях, описываемых далее.
Целые двоично-десятичные числа записываются в плотно упакованном двоично-десятичном (ДД) коде, в котором под каждую цифру do — di? (рис. 3.2) отводится четыре двоичных разряда. В памяти ДД-числа также располагаются начиная с младших разрядов и занимают 10 байт. Старший байт используется только под знак числа, который расположен в разряде 79, а остальные разряды старшего байта 78—72 содержат нули.
Таблица 3.1
Формат данных
Число
Примерный диапазон
байтов
значений
Целое слово (ЦС)
2
±ю«
Короткое целое (КЦ)
4
±10»
Длинное целое (ДЦ)
8
±101»
Двоично-десятичное (ДД)
10
±101»
Короткое вецественное (КВ)
4
±10»»»
Длинное вецественное (ДВ)
8
* Ю*аов
Временное вецественное (ВВ)
10
110*4882
Таблица 3.2
Наименование числа
ЗнакЭначацие разряды
s ЦС(15 бит), КЦ(32 бит), ДЦ(64 бит)
Целое положительное
01 1...1 1
00 0...0 1
Нуль
00 0 ... 0 0
Целое отрицательное
11 1 . . . 1 1
10 0 . . . 0 1
Неопределенность
10 0 ... 0 0
Полный диапазон двоично-десятичных чисел представлен в табл. 3.3. В него входят коды +0 и —0; а также специальный код неопределенности. Код неопределенности является результатом в исключительных ситуациях, описываемых далее.
Таблица 3.3
Наименование
Знак
Биты
Эначацие
цифры
числа
S
78-72
dirdie..
. do
Положительное двоично-десятичное
0
0000000
10011001.
..1001
0000000
00000000.
..0000
Нуль
0
0000000
00000000.
..0000
1
0000000
00000000.
..0000
Отрицательное двоично-десятичное
1
0000000
00000000.
..0000
0000000
10011001.
..1001
Неопределенность
1
1111111
11111111U
..ииии
Вещественные числа в каждом из трех форматов КВ, ДВ и ВВ выключают три поля: поле знака мантиссы, поле порядка и поле мантиссы (рис. 3.2). Мантисса числа всегда (кроме исключительных случаев) записывается в нормализованном виде 1, Ш1Ш2..., где гщшг...— дробная часть числа. Целая часть, всегда равная единице, прямо не представляется в форматах КВ и ДВ, а учитывается неявно. В формате ВВ старший бит мантиссы представляется явно. Порядок вещественных чисел записывается в поле порядка в смещенном виде, поэтому истинный порядок равен числу в поле порядка минус значение смещения. Применение смещенных порядков позволяет упростить операцию сравнения вещественных чисел, достаточно сравнить их порядки как обычные целые числа без знака. Поскольку операция сравнения является доминирующей в вычислительных программах, такое упрощение существенно повышает эффективность программ.
Учитывая разрядность полей в форматах вещественных чисел и особенности представления мантисс и порядков, можно указать формулы для вычисления истинных значений чисел:
( — l)sX(l,m,m2. . . т23)Х2Е127для КВ,
(—1)SX (1,т,т2. - .0152) Х2Е 1023 для ДВ,
(—l)sX(oi,m2. . . т64)Х2Е 16 383 для ВВ,
где s — знак мантиссы; т, — значение i-ro двоичного разряда мантиссы, считая от запятой, Е — значение в поле порядка.
Примеры представления чисел в формате КВ.
Число —0,419375 представляется в виде
S Е 01,012013014015 ... 0123
1 01111101 10110 ...О и вычисляется по формуле
(-I)1 Х(1,Ю11)2Х2|25-|27=-(1,6775),оХ2"4=-0,419375.
Число +1,0 представляется в виде
S Е 01,012 . . . 0123
О 01111111 0 0 ...0
и вычисляется по формуле
(-1)°Х(1,О)2Х2|27-|27 = (1,О),оХ2°=1,О.
Число —3,0 представляется в виде
S Е 01,012 . . . 0123
1 10000000 10 ...О и вычисляется по формуле
(-1)1Х(1,1)2Х2|28|27=-(1,5)10Х2| = -3,0.
Число +1 /3 представляется в виде
S Е 01,012013014 ... 01220123
О 01111101 0101 ...0 1 и вычисляется по формуле
(-1)°Х(1,0Ю1. . .01 )г X 2125"127=(1,31 . . .)Х2”2«1/3.
Как видно из примеров, в формате вещественных чисел могут быть представлены абсолютно точно и целые числа, лежащие в пределах диапазона представимых значений.
Для представления вещественных чисел используется часть значений в поле порядка от 00 ... 00 до 11 ... 10. В форматах КВ и ДВ значение 11 . . . 11 используется для кодирования ± оо, когда в поле мантиссы все нули, и для обозначения «не чисел» (NAN — Not a Number — не числа), когда в поле мантиссы не нулевое значение. Полный диапазон значений вещественных чисел в форматах КВ и ДВ представлен в табл. 3.4.
Таблица 3.4
Наименование
Знак
Порядок
Мантисса
Значение
числа
S
КВ(8
бит),
КВ(23
бит)
КВ/ДВ
ДВ(11
бит)
ДВ(52
бит)
Положительное
0
11 . .
. 11
11 . . .
11
NAN
"не число"
0
11 . .
. 11
00 . . .
01
МАМ
Бесконечность
0
11 . .
. 11
00 . . .
00
+ ев
Положительное
0
11 . .
. 10
11 ...
11
+3,37•1038/1,67•1О308
нормализованное число
6
00 . .
. 01
00 . . .
00
Положительное денормалиэован-
0
00 . .
. 00
11 ...
11
ное число
0
00 . .
. 00
00 . . .
01
+8,43-10-37/+4,19 • 10-3<>7
Нуль
0
00 . .
. 00
00 . . .
00
+0
1
00 . .
. 00
00 . . .
00
-0
Отрицательное денормалиэован-
1
00 . .
. 00
00 . . .
01
-8,43•10-37/-4,19-Ю*837
ное число
1
00 . .
. 00
11 ...
11
Отрицательное нормализованное
1
00 . .
. 01
00 . . .
00
число
1
00 . .
. 00
11 ...
11
-3,37•10а8/-1,67•1О808
Бесконечность
1
11 ..
. 11
00 . . .
00
-СО
Отрицательное
1
11 ..
. 11
00 . . .
01
МАМ
"не число"
...
Неопределенность
1
11 ..
. 11
10 . . .
00
п1’
Отрицательное "не число"
i
11 ..
. 11
11 ...
11
МАМ
*> Знак н - здесь и далее обозначает неопределенное значение.
Как и в предыдущем случае, для обозначения неопределенного значения введен специальный код. Кроме того, отметим, что диапазоны конечных чисел от ±8,43-10-37 до ±3,37-1038 в формате КВ и от ±4,19-10"307 до ± 1,67- 1О~308 в формате ДВ разбиты на два класса — нормализованные и де- нормализованные числа. Последние характеризуются тем, что имеют все нули в поле порядка и отличную от нуля мантиссу. Во всех случаях получения де- нормализованных операндов сопроцессор сигнализирует об этом.
Диапазон значений вещественных чисел в формате ВВ представлен в табл. 3.5.
Все множество конечных чисел от ±3,4-10“4932 до ± 1,2- 104932 разбито на три класса: нормализованные, ненормализованные и денормализованные. 80
В числах последних двух классов после запятой всегда формируется нуль (старший бит мантиссы), при этом денормализованные числа содержат все нули в поле порядка Появление ненормализованных и денормализованных чисел приводит к исключительным ситуациям, о которых сопроцессор сигнализирует особым образом Подробно вопросы обработки исключительных ситуаций будут описаны далее Формат ВВ обеспечивает максимальный рабочий диапазон значений вещественных чисел и является основным, в нем выполняются все операции сопроцессора ВМ87 Преобразование исходных данных, представленных в памяти в любом другом формате (ЦС, КЦ, ДЦ, ДД, КВ, ДВ), в формат ВВ осуществляется сопроцессором автоматически при загрузке данных Такое преобразование никогда не приводит к потере точности Заметим, что при необходимости можно «заставить» сопроцессор ВМ87 использовать другой формат, а именно КВ или ДВ, что осуществляется программно и используется для эмуляции на основе ВМ87 какого-либо другого вычислителя с разрядностью, не превышающей 32 или 64 бит соответственно
Таблица 35
Наименование числа
Знак
Порядок
•Мантисса
Значение
(15
бит)
(64
бит)
Положительное
0
11
11
111
11
NAN
не число
0
11
11
100
01
NAN
Бесконечность
0
11
11
100
00
+ ев
Положительное
0
11
10
111
11
+1,2*104®32
нормализованное число
Положительное ненормализованное число
0
00
01
100
011
000
00
11
00
Положительное
0
00
00
011
11
денормализован- ное число
0
00
00
000
01
+3,4-10~4932
Нуль
0
00
00
000
00
+0
1
00
00
000
00
-0
Отрицательное
1
00
00
000
01
-3,4-Ю"*932
денормализован- ное число
1
00
00
011
11
Отрицательное
1
00
01
000
00
ненормализованное число
Отрицательное нормализованное число
1
11
10
011
1000
111
11
00
11
-1,2 •10*®32
Беоконечность
1
11
11
100
00
-СО
Отрицательное
1
11
11
100
00
NAN
не число
Неопределенность
1
11
11
110
00
п
Отрицательное не число
1
11
11
111
11
NAN
Результаты вычислений могут быть переданы в память в любом (из семи) желаемом формате Таким образом, получение результата требует (в шести
случаях из семи) обратного преобразования из формата ВВ в желаемый. В ряде случаев это может привести к потере точности из-за необходимости округления, о чем сигнализирует ВМ87, формируя запрос прерывания на выходе INT.
Структурная схема АСП (рис. 3.3) содержит две относительно независимые части: операционное устройство, которое выполняет операции, заданные командой, и устройство шинного интерфейса, которое получает и декодирует команды, осуществляет считывание операндов из памяти и преобразование их в формат ВВ, а также запись результатов в память с обратным преобразованием в требуемый формат. Оба устройства могут работать параллельно, что обеспечивает совмещение во времени процессов передачи и преобразования данных.
Рис. 3.3. Укрупненная структурная схема АСП ВМ87
Операционное устройство АСП содержит группу арифметических регистров, модули обработки порядка и мантиссы, ПЗУ констант, регистр этикеток и блок управления.
Группа арифметических регистров включает восемь 80-битовых регистров, организованных в стек. Со стеком связан 3-битовый указатель стека ST, содержимое которого определяет номер одного из восьми арифметических регистров, являющегося вершиной стека. Нумерация регистров начинается всегда от вершины (рис. 3.4), и регистры обозначаются через ST(0), ST(1),..., ST(7). Группа арифметических регистров служит для хранения обрабатываемых данных, представленных в формате ВВ. При загрузке данных в арифметический регистр содержимое указателя стека ST предварительно уменьшается ST -<- ST — 1 и указывает номер регистра, в который производится загрузка. При извлечении данных, после запоминания извлеченного значения в памяти, содержимое ST автоматически увеличивается на единицу ST-«-ST4-1- С группой арифметических регистров связан регистр этикеток TAG, в котором каждому АР ставится в соответствие 2-битовое поле. В этом поле автоматически формируется код, характеризующий загруженное в АР значение, в соответствии с табл. 3.6.
Модуль обработки мантиссы состоит из 68-битового сумматора, регистра сдвига и регистра результата. Он выполняет заданные операции над мантисса-
ми операндов и формирует признаки различных исключительных ситуаций, возникающих при обработке данных.
Модуль обработки порядка осуществляет действие над значениями поля порядка исходных операндов в соответствии с командой.
ПЗУ констант хранит семь различных числовых констант, которые часто используются в вычислительных программах: +0,0; +1,0; л; lg2; 1п2; log210 и log2e. Все константы представлены в формате ВВ.
ST:LLOJJ-1 0 1 г 3 4 5 6 7
73 Б4 630
1
1.
STO) ST (4) ST (5) ST (6) ST (7) ST(0) ST(1) ST (2)
i
TAGO) TAG(4) TAGO) TAGO) TAG(7) TAG(O) TAG(l) TAGO)
i
1
I
i
i
i
i
i
1 1
1 1
Рис. 3.4. Нумерация арифметических регистров (при ST*5) и соответствующих полей регистра
Блок управления связан с выходом очереди из байтов команд и построен по микропрограммному принципу. Его назначение состоит в дешифрации очередной команды, поступающей на исполнение из устройства шинного интерфейса, и формировании управляющих сигналов, определяющих режим работы модулей обработки и других устройств АСП.
Таблица 3.6
Код поля TAG(i) Содержимое регистра ST(i)
00Конечное число, не равное нулю
01Нуль
10NAN/± =
11Регистр пуст (обозначается е)
Устройство шинного интерфейса содержит группу вспомогательных регистров, буферный регистр (БР), очереди команд и операндов.
Группа вспомогательных регистров включает 16-битовый регистр состояния SR, 16-битовый регистр управления CR и 64-битовый регистр — указатель исключительных ситуаций ЕР.
Регистр состояния SR (рис. 3.5) содержит 13 полей, разряды которых при функционировании АСП автоматически устанавливаются в соответствии с выполняемыми действиями или результатами действий. Поле В регистра SR (разряд 15) устанавливается в единицу, когда сопроцессор выполняет команду. Значение этого поля выдается на выход BUSY и осуществляет синхронизацию действий ЦП и АСП, «удерживая» ЦП в режиме ожидания. Разряды поля ST устанавливаются в соответствии с номером арифметического регистра, который является вершиной стека. Уменьшение или увеличение значения ST на единицу осуществляется автоматически при выполнении команд загрузки и запоминания соответственно. Разряды полей СЗ—СО содержат значения флагов, характеризующих результаты выполнения различных команд (табл. 3.7). Разряды полей РЕ, UE, ОЕ, ZE, DE, IE являются флагами исключительных ситуаций, возникающих в результате выполнения команд.
Флаг IE — недействительная операция — устанавливается в единицу при переполнении стека, извлечения из пустого стека, выполнения действий, приводящих к неопределенным значениям типа оо/оо, оо ХО, V—а или с операндом NAN. Если флаг IE замаскирован, результат недействительной операции формируется следующим образом. Когда один из операндов равен NAN, то результатом является NAN; когда оба операнда NAN, результатом является NAN с большим абсолютным значением. Если ни один из операндов не является NAN, результатом является код неопределенности.
15 14 13 12 11 10 3 8 7 6 5 4 3 210SR: |в|СЗ| , ST, j С2| Cl | СО j 1R РЕ |UE | 0Е | ZE|DE| IE |
Рис. 3.5. Регистр состояния АСП ВМ87
Флаг DE — денормализованный операнд — устанавливается в единицу, когда хотя бы один из операндов денормализован. Если флаг DE замаскирован и операнд находится в памяти, то сопроцессор оперирует с денормализованным операндом как с нормализованным. Когда Денормализованный операнд находится в регистре, сопроцессор предварительно преобразует его в ненормализованный, путем сдвига мантиссы и изменения порядка.
Таблица 3.7
Команды СЗС2С1С0Результат
Сравнение0
чисел0
1 1
0x1ST(0)>X
0x1ST(0)<X
0x0ST(0)=X
1x1ST(0) несравнимо с X
Анализ0
числа,0
находящегося 0 в вершине0
стека0
0 0 0 1 1 1 1 1 1 1 1
000+ненормализованное
001+ NAN
010-ненормализованное
011- NAN
100+нормализованное
10 1+«=
110-нормализованное
10 1-со
0 0 0+0
0 0 1е
0 10-0
0 11е
100+ денормализованиое
10 1е
110- денормализованиое
111е
ПолучениегоО rirzкоманда завершена
частичногох 1 х хкоманда не завершена
остатка
Примечания: 1. ST(0) - число в вершине стека.
X - число в памяти или ST(i).
е - пустая вершима.
го - га - три младших бита частного.
Флаг ZE — деление на нуль — устанавливается в единицу, когда делимое — конечное число, не равное нулю, а делитель равен нулю. Если флаг ZE замаскирован, то в качестве результата выдается код оо со знаком, равным сумме по модулю два знаков операндов.
Флаг ОЕ — переполнение — устанавливается в единицу, когда результат операции не может быть представлен конечным числом, т. е. его значение
превышает 1,2- 104932. Если флаг ОЕ замаскирован, то в качестве результата выдается код оо.
Флаг UE — антипереполнение — устанавливается в единицу, когда результат операции не может быть представлен нормализованным конечным числом. Если флаг UE замаскирован, то в качестве результата выдается де- нормализованное число.
Флаг РЕ — неточный результат — устанавливается в единицу, когда значение результата не может быть представлено точно в том формате, который определен командой. Результат в этом случае округляется в соответствии с заданным режимом округления. Если флаг РЕ замаскирован, сопроцессор округляет результат, не вызывая прерывания.
Поле SR(7) = IR содержит флаг запроса прерывания, который устанавливается в «1» при возникновении какой-либо незамаскированной из (перечисленных выше) исключительной ситуации. Значение флага IR формируется на выходе INT сопроцессора. Флаг IR может быть замаскирован программным путем.
в^ЖЕЗШЯКЯИЖШОПОИЕЛЕЗЕЗ
Рис. 3.6. Регистр управления АСП ВМ87
После инициализации ВМ87 все биты регистра состояния, за исключением СО, Cl, С2, СЗ, устанавливаются в,нуль.
Регистр управления CR (рис. 3.6) содержит десять полей, которые служат для задания требуемого режима работы АСП программным путем. Различают две основные группы режимов — вычислений и обработки исключительных ситуаций. Режимами вычислений управляют поля старшего байта регистра CR, а режимами обработки исключительных ситуаций — поля младшего байта.
Поле CR (12) = 1С — управление бесконечностью — определяет, что + оо и —оо считаются одной беззнаковой бесконечностью; 1С=1 —определяет обычную ситуацию, когда 4- оо и — оо считаются двумя знаковыми бесконечностями Первый режим (1С = 0) носит название «проективная арифметика», а второй (1С=1) — «аффинная арифметика».
Поле CR (11, 10)=RC — управление округлением — определяет способ округления в соответствии с табл. 3.8.
Таблица 3.8
Код поля
НС Способ округления результата
00
01
10
11
К ближайшему значению По направлению к - = По направлению к + со По направлению к нулю
Первый режим RC = 00 является обычным способом округления. Режимы RC = O1 и 10 используются для определения граничных левых и правых значений соответственно. В режиме RC= 11 осуществляется усечение (отбрасывание) лишних битов результата.
Поле CR (9, 8) =RC — управление точностью позволяет определить формат представления результатов вычислений в соответствии с табл. 3.9 и задать
один из трех режимов работы. Режимы, соответствующие PC = 00 и 10, позволяют на основе ВМ87 эмулировать работу процессоров с разрядной сеткой, отведенной под мантиссу 24 и 53 бит соответственно. В этих режимах результаты операций с плавающей запятой перед размещением в арифметический регистр округляются до указанного размера.
Поля CR(5) — CR(0) позволяют установить маски исключительных ситуаций, описанных ранее, при этом: 1М=1 маскирует флаг IE; DM=1 —флаг DE; ZM = 1 — флаг ZE; ОМ= 1 — флаг ОЕ; UM= 1 — флаг UE; РМ = 1 — флаг РЕ.
Поле CR(7)=IEM — маскирует флаг запроса прерывания IR, т. е. независимо от значений перечисленных шести масок сигнал 1ЕМ=1 заставляет ВМ87 обрабатывать все исключительные ситуации стандартным образом.
Таблица 3.9
Код поля PC Точность представления результата
00
01
10
11
В формате КВ (24 бит) Зарезервирован
В формате ДВ (53 бит)
В формате ВВ (64 бит)
При инициализации ВМ87 сигналом RESET поля регистра управления устанавливаются следующим образом: IC = 0, RC = 00, РС=11, 1ЕМ = 0, все маски устанавливаются в единицу.
ЕР:ЕР:150
ЕР:
ЕР:
20-битовый физический адрес командыY///X Код команды20-битовый физический адрес операнда
Рис. 3.7. Регистр - указатель исключительной ситуации
Регистр — указатель исключительной ситуации ЕР (рис. 3.7) состоит из двух 32-битовых регистров. Когда сопроцессор выполняет очередную команду, устройство шинного интерфейса засылает в первый регистр 20-битовый адрес этой команды и 11-битовый код команды, а во второй — 20-битовый адрес операнда, если он взят из памяти. Эта информация может потребоваться центральному процессору при нестандартной обработке незамаскированной исключительной ситуации по запросу прерывания от ВМ87. Содержимое регистра ЕР может быть записано в память с помощью соответствующей команды ВМ87 для анализа в процессе обработки запроса. Неиспользуемые биты регистра — указателя ЕР заполняются нулями.
Функционирование арифметического сопроцессора
Арифметический сопроцессор ВМ87 может работать только в паре с центральным процессором ВМ86/ВМ88, который должен быть установлен в максимальный режим (рис. 3.8). Система с сопроцессором не требует никакой дополнительной логики, отличающейся от той, которая используется в системе с максимальным режимом ЦП. Схема расширенного процессора получается простым 86
объединением одноименных выводов ЦП и АСП с дополнительным использованием контроллера прерываний ВН59А для организации взаимодействия выхода INT сопроцессора и входа INTR центрального процессора
К58ОИР82К58ОИР82IBa М2a ме. и asaIBa М2a ме. и asaDOO D01 DO 2 D03D04 D05DOO D01 DO 2 D03D04 D05D06 816 12 №7D06 816 12 №7МО Ml М2 М3 М4 DI5 Мб М7 STBМО Ml М2 М3 М4 DI5 Мб М7 STBме a ии is.М3 i?М2IS mi ...a#10 иaia ro12ме a ии is.М3 i?М2IS mi ...a#10 иaia ro12Х580ИР82Х580ИР82D00 DOI D02 ВОЗ D04 DOS 006 D0708D00 DOI D02 ВОЗ D04 DOS 006 D0708МО Ml мг DI3 М4 DI5 Мб М7 STBМО Ml мг DI3 М4 DI5 Мб М7 STB22IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII1111RDY1 АЙИ КИ2 й5« E5VNC F/CRDY1 АЙИ КИ2 й5« E5VNC F/CxieiormxieiormXIXI11 16 1Z 11 32 2211 16 1Z 11 32 22а а. з.а а. з.221111az и ми аз и atа ази аг и м а го12az и ми аз и atа ази аг и м а го12811й №11 »13 17 М2М miа миа иаГО12811й №11 »13 17 М2М miа миа иаГО12МОМОХЗвОВАвбХЗвОВАвбХ5801Й86Х5801Й86D01 D02 D03 D04 DOS D06 D0 7D01 D02 D03 D04 DOS D06 D0 7АО Й1 Й2 ЙЗАО Й1 Й2 ЙЗВО BlВ2 взВ4В5 ВбВ7ВО BlВ2 взВ4В5 ВбВ7DI1 М2 М3 DI4М5 Мб DI7 STBDI1 М2 М3 DI4М5 Мб DI7 STBК580ИГ»г ID00”~11К580ИГ»г ID00”~1111141114Voc A19/S6 A18/SS A17/S4 A16/S3 ADIS ADM ЙВ13 AD12 AD11 AD10 ADD AD8 AD7AD6 ADS AD4AD3 AD2 ADI ADOVoc A19/S6 A18/SS A17/S4 A16/S3 ADIS ADM ЙВ13 AD12 AD11 AD10 ADD AD8 AD7AD6 ADS AD4AD3 AD2 ADI ADO4040GNDGNDсм» ВН$/17 тем MEETCLKсм» ВН$/17 тем MEETCLKК1810ВИ87К1810ВИ87И/СНИ/СНINIINI$2 Я Я$2 Я Ялллллл3333212121 372121 3721K2UADf RESET CLK СМ» Я! VccK2UADf RESET CLK СМ» Я! Vcc55181851 мОм51 мОм510 0м|15 МГц В5100*510 0м|15 МГц В5100*Й5 АбА7Й5 АбА7lllli mini iiiniilllli mini iiiniiIIIIIII IIIIIII шин ■1111IIIIIII IIIIIII шин ■1111QS1 QSO И/€Тб BUS»QS1 QSO И/€Тб BUS»24242525313123232424252531312323ifh; IR4 1ЕГ1 IH1ifh; IR4 1ЕГ1 IH1IQS1 «0 Ш&Й ШТ 1лел/*лIQS1 «0 Ш&Й ШТ 1лел/*лA19/S6A19/S6№ 1Ш 1№№ 1Ш 1№№№и11 кши11M11 го агои ИУгогои11 кши11M11 го агои ИУгогоВО В1В2ВЗВ4ВЗВбВ7ВО В1В2ВЗВ4ВЗВбВ7АО А1 А2 АЗ А4 Й5 Аб А7АО А1 А2 АЗ А4 Й5 Аб А7J,гзJ,гз54.7А54.7А№«Иim 1ГВ im im im№«Иim 1ГВ im im imA18/S5 A17/S4 A16/S3ADIS(AIS) AD14(A14) AD13(A13) AD12(A12) ADH (All) ADIO(AIO) ADD (AD) AD8(A8)A18/S5 A17/S4 A16/S3ADIS(AIS) AD14(A14) AD13(A13) AD12(A12) ADH (All) ADIO(AIO) ADD (AD) AD8(A8)BIAM ХЕШ CLK ГО H5/SI5 ИИ!BIAM ХЕШ CLK ГО H5/SI5 ИИ!AD7 AD6AD5 AD4AD3 АТ-2 AD1AD7 AD6AD5 AD4AD3 АТ-2 AD1♦ 5 В♦ 5 В10 x0м10 x0мNNINNIINTINTК1810ВМ86(К1810ВМ88)К1810ВМ86(К1810ВМ88)■Iadoад Ё[■Iadoад Ё[CNDCNDя П яСМ» НМ/®я П яСМ» НМ/®2020^ Д12 Л. 122.^ Д12 Л. 122.И11И112121 Л2121 Л4112411222CLK SMi 10» CMB Vcc СЕК "нсЁ/ШCLK SMi 10» CMB Vcc СЕК "нсЁ/ШЯЯЯЯЯЯХ1810ВГ88Х1810ВГ88ALI DT/B DEN ЙЖ НЙЯ ЙЙЙС 1ЯТЙALI DT/B DEN ЙЖ НЙЯ ЙЙЙС 1ЯТЙ5541 161 741 161 7
К58ОИР82
К58ОИР82
IBa М2a ме. и asa
IBa М2a ме. и asa
DOO D01 DO 2 D03
D04 D05
DOO D01 DO 2 D03
D04 D05
D06 816 12 №7
D06 816 12 №7
МО Ml М2 М3 М4 DI5 Мб М7 STB
МО Ml М2 М3 М4 DI5 Мб М7 STB
ме a ии is.
М3 i?
М2IS mi ...a
#10 и
aia ro12
ме a ии is.
М3 i?
М2IS mi ...a
#10 и
aia ro12
Х580ИР82
Х580ИР82
D00 DOI D02 ВОЗ D04 DOS 006 D07
08
D00 DOI D02 ВОЗ D04 DOS 006 D07
08
МО Ml мг DI3 М4 DI5 Мб М7 STB
МО Ml мг DI3 М4 DI5 Мб М7 STB
2
2
IIIIIIIIII
IIIIIIIIII
IIIIIIIIIIII
IIIIIIIIIIII
11
11
RDY1 АЙИ КИ2 й5« E5VNC F/C
RDY1 АЙИ КИ2 й5« E5VNC F/C
xieiorm
xieiorm
XI
XI
11 16 1Z 11 32 22
11 16 1Z 11 32 22
а а. з.
а а. з.
2
2
11
11
az и ми аз и atа ази аг и м а го12
az и ми аз и atа ази аг и м а го12
811й №11 »13 17 М2М miа миа иа
ГО12
811й №11 »13 17 М2М miа миа иа
ГО12
МО
МО
ХЗвОВАвб
ХЗвОВАвб
Х5801Й86
Х5801Й86
D01 D02 D03 D04 DOS D06 D0 7
D01 D02 D03 D04 DOS D06 D0 7
АО Й1 Й2 ЙЗ
АО Й1 Й2 ЙЗ
ВО Bl
В2 вз
В4
В5 Вб
В7
ВО Bl
В2 вз
В4
В5 Вб
В7
DI1 М2 М3 DI4
М5 Мб DI7 STB
DI1 М2 М3 DI4
М5 Мб DI7 STB
К580ИГ»г I
D00”~11
К580ИГ»г I
D00”~11
11
14
11
14
Voc A19/S6 A18/SS A17/S4 A16/S3 ADIS ADM ЙВ13 AD12 AD11 AD10 ADD AD8 AD7
AD6 ADS AD4
AD3 AD2 ADI ADO
Voc A19/S6 A18/SS A17/S4 A16/S3 ADIS ADM ЙВ13 AD12 AD11 AD10 ADD AD8 AD7
AD6 ADS AD4
AD3 AD2 ADI ADO
40
40
GND
GND
см» ВН$/17 тем MEET
CLK
см» ВН$/17 тем MEET
CLK
К1810ВИ87
К1810ВИ87
И/СН
И/СН
INI
INI
$2 Я Я
$2 Я Я
л
л
лл
лл
33
33
21
21
21 37
21
21 37
21
K2
UADf RESET CLK СМ» Я! Vcc
K2
UADf RESET CLK СМ» Я! Vcc
5
5
18
18
51 мОм
51 мОм
510 0м|
15 МГц В
5100*
510 0м|
15 МГц В
5100*
Й5 Аб
А7
Й5 Аб
А7
lllli mini iiinii
lllli mini iiinii
IIIIIII IIIIIII шин ■1111
IIIIIII IIIIIII шин ■1111
QS1 QSO И/€Тб BUS»
QS1 QSO И/€Тб BUS»
24
24
25
25
31
31
23
23
24
24
25
25
31
31
23
23
ifh; IR4 1ЕГ1 IH1
ifh; IR4 1ЕГ1 IH1
IQS1 «0 Ш&Й ШТ 1лел/*л
IQS1 «0 Ш&Й ШТ 1лел/*л
A19/S6
A19/S6
№ 1Ш 1№
№ 1Ш 1№
№
№
и11 кш
и11
M11 го а
гои ИУ
гого
и11 кш
и11
M11 го а
гои ИУ
гого
ВО В1
В2
ВЗ
В4
ВЗ
Вб
В7
ВО В1
В2
ВЗ
В4
ВЗ
Вб
В7
АО А1 А2 АЗ А4 Й5 Аб А7
АО А1 А2 АЗ А4 Й5 Аб А7
J,гз
J,гз
54.
7А
54.
7А
№
«И
im 1ГВ im im im
№
«И
im 1ГВ im im im
A18/S5 A17/S4 A16/S3
ADIS(AIS) AD14(A14) AD13(A13) AD12(A12) ADH (All) ADIO(AIO) ADD (AD) AD8(A8)
A18/S5 A17/S4 A16/S3
ADIS(AIS) AD14(A14) AD13(A13) AD12(A12) ADH (All) ADIO(AIO) ADD (AD) AD8(A8)
BIAM ХЕШ CLK ГО H5/SI5 ИИ!
BIAM ХЕШ CLK ГО H5/SI5 ИИ!
AD7 AD6
AD5 AD4
AD3 АТ-2 AD1
AD7 AD6
AD5 AD4
AD3 АТ-2 AD1
♦ 5 В
♦ 5 В
10 x0м
10 x0м
NNI
NNI
INT
INT
К1810ВМ86(К1810ВМ88)
К1810ВМ86(К1810ВМ88)
■Iado
ад Ё[
■Iado
ад Ё[
CND
CND
я П я
СМ» НМ/®
я П я
СМ» НМ/®
20
20
^ Д12 Л. 122.
^ Д12 Л. 122.
И11
И11
21
21 Л
21
21 Л
41
12
41
12
2
2
CLK SMi 10» CMB Vcc СЕК "нсЁ/Ш
CLK SMi 10» CMB Vcc СЕК "нсЁ/Ш
Я
Я
Я
Я
Я
Я
Х1810ВГ88
Х1810ВГ88
ALI DT/B DEN ЙЖ НЙЯ ЙЙЙС 1ЯТЙ
ALI DT/B DEN ЙЖ НЙЯ ЙЙЙС 1ЯТЙ
5
5
41 161 7
41 161 7
Рис. 3.8. Схема подключения АСП к ЦП ВМ86/ВМ8А
Пассивный режим. Взаимодействие процессоров начинается по сигналу RESET, длительность которого должна быть не менее четырех тактов СЕК. По окончании этого сигнала АСП «анализирует» уровень сигнала на линии, соединяющей выводы ВНЕ процессоров. Центральный процессор ВМ86 формирует
на выходе ВНЕ нулевой сигнал (ВМ88 — единичный сигнал). Через несколько тактов СЕК (рис. 3.9) ЦП производит выборку команд из памяти, начиная с адреса FFFF0H, а сопроцессор следит за его работой, находясь в пассивном режиме. Выбирать команды из памяти может только ЦП, но сопроцессор также получает все команды, записывая их в очередь из байтов команд, идентичную очереди центрального процессора, и контролирует выполнение команд центральным процессором. Временные диаграммы работы АСП в пассивном режиме приведены на рис. 3.10. В этом режиме выводы S2 — SO, A19/S6 — A16/S3 и AD15—AD0 используются как входы. Как только в потоке команд появляется команда ESC, АСП начинает переходить из пассивного режима в активный.
UccCLKRESETUccCLKRESETРис. 3.9. Временная диаграмма начальной стадии работы АСП (включение по сигналу RESET)Рис. 3.9. Временная диаграмма начальной стадии работы АСП (включение по сигналу RESET)
Ucc
CLK
RESET
Ucc
CLK
RESET
Рис. 3.9. Временная диаграмма начальной стадии работы АСП (включение по сигналу RESET)
Рис. 3.9. Временная диаграмма начальной стадии работы АСП (включение по сигналу RESET)
Рис. 3.10. Временная диаграмма работы АСП в пассивном режиме
Активный режим. Для перехода в активный режим сопроцессор должен установить момент начала выполнения действий, определенных командой ESC. Для этого он начинает анализировать код состояния очереди команд ЦП по линиям QS1, QS0. Как только появляется код QS1 QS0 = 01, соответствующий первому байту команды, и этот байт содержит код ESC= 11011, сопроцессор переходит в активный режим. .
Если команда ESC содержит указание о том, что операнд-источник размещен в памяти, то ЦП формирует адрес операнда и считывает слово данных. При этом АСП перехватывает 20-битовый адрес операнда, записывая его в регистр ЕР, и слово данных, записывая его в очередь из байтов операндов. При длине операнда более одного слова сопроцессор получает остальные слова самостоятельно, дополнительно запрашивая шину.
Если определенный в команде ESC адрес является адресом приемника, то, перехватив этот адрес в регистр ЕР, сопроцессор игнорирует считанное ЦП слово данных, а позднее, выполнив команду, записывает результат по перехваченному адресу.
В любом случае, перейдя в активный режим, сопроцессор выдает сигнал занятости BUSY=1 на вход TEST центрального процессора. С этого момента оба процессора осуществляют параллельную работу. Сопроцессор выполняет действия, определенные командой ESC, а ЦП продолжает выполнение программы. При этом шиной управляет ЦП, и каждый раз, когда сопроцессору требуется обратиться к памяти, он должен запрашивать шину по одной из
линий RQ/GT.
Рис. 3.11. Временная диаграмма процессов запроса, предоставления и освобождения локальной шины по линии RQ/QT0
Временные диаграммы процессов запроса и подтверждения захвата локальной шины по линии RQ/GT0 представлены на рис. 3.11. Линия RQ/GT0 используется ВМ87 для запроса локальной шины ВМ86, либо для собственных обращений к памяти, либо для ее предоставления другому МП, который связан с ВМ87 по линии RQ/GT1 (рис. 3.12). Последовательность взаимодействия по линии RQ/GT0 следующая.
Сопроцессор ВМ87 посылает запрос RQ ЦП, управляющему шиной, либо «пересылает» запрос, поступивший от другого МП.
По прошествии нескольких тактов CLK, необходимых ЦП ВМ86 для завершения текущего цикла шины и перехода выводов в высокоомное состояние, АСП ВМ87 получает сигнал подтверждения GT шины и начинает ее использовать либо «пересылает» сигнал подтверждения другому МП.
После завершения использования шины АСП ВМ87 посылает сигнал REALEASE центральному процессору, «отпуская» шину, либо «передает» сигнал отпускания от другого МП.
Рис. 3.13. Схема использования линий RQ/GTO и KQ/GT1
Линия RQ/GT1 используется для связи ВМ87 с другим МП, использующим локальную шину совместно с ВМ87 и ВМ86, для быстрого предоставления шины этому МП. Если в момент запроса по линии RQ/GT1 от другого МП сопроцессор ВМ87 не управляет локальной шиной, то процесс передачи шины соответствует приведенному. Когда в момент запроса шиной управляет АСП ВМ87, последовательность взаимодействия по линии RQ/GT1 следующая (рис. 3.13).
Рис. 3 13. Временная диаграмма процессов запроса, предоставления и освобождения локальной шины по линии RQ/GT1
Запрос RQ поступает от МП на АСП ВМ87.
Во время ближайшего такта Т4 или Т1 сигнал подтверждения GT1 передается от ВМ87 к МП и выводы ВМ87 переходят в высокоомное состояние.
После завершения использования шины МП посылает сигнал RELEASE сопроцессору ВМ87, который вновь обретает управление локальной шиной.
В активном режиме, когда ВМ87 управляет локальной шиной для пересылки данных в/из памяти, код его состояния S2—SO дешифруется системным
контроллером ВГ88, определяя цикл записи S2 S1 50=110 или считывания S2 SI S0= 101. Временные диаграммы, поясняющие работу ВМ87 и управляемого им системного контроллера ВГ88, приведены на рис. 3.14. При обмене данными с внешними устройствами, отображенными на адресное пространство памяти, возможны ситуации, когда ВМ87 ожидает сигнал готовности READY. В этом случае между тактами ТЗ и Т4 размещаются такты ожидания TW, число которых определяется временем подготовки внешнего устройства к обмену.
Система команд арифметического сопроцессора
oispe I Младший байт I I Старший байт|DISP16oispe I Младший байт I I Старший байт|DISP16Полная система команд АСП ВМ87 включает 68 мнемокодов и построена на основе команды ESC. Используются два формата команды ESC (рис. 3.15). Формат команды с постбайтом применяется в тех случаях, когда операнд- источник находится в памяти или регистре ST (i) либо результат необходимо переслать в память или регистр ST(i). Кодирование полей постбайта приведено в табл. 3.10, где DISP8 означает однобайтовое смещение, a DISP16— двухбайтовое смещение. Из табл. 3.10 видно, что смещение DISP может составлять один байт (MOD = 01), два байта (MOD =10) или отсутствовать (MOD = 00). Исключение составляет случай MOD = 00, R/M=110, когда смещение составляет два байта и полностью определяет исполнительный адрес. Код поля MOD=11 означает, что операнд размещается в одном из арифметических регистров ST(i).
oispe
I Младший байт I I Старший байт|
DISP16
oispe
I Младший байт I I Старший байт|
DISP16
^ЕВВИЗИЛЕОЯ;^ЕВВИЗИЛЕОЯ;ESC
^ЕВВИЗИЛЕОЯ;
^ЕВВИЗИЛЕОЯ;
IllOlli К0П1 1111 КОП I ST(1) I
ESC
1110111 Konl Illi К0П I
Рис. 3.15. Форматы команд АСП с постбайтом (а) и без него (б)
Формат команды без постбайта (рис. 3.15, б) применяется в тех случаях, когда операнд расположен в регистре ST (0) либо для команд управления.
Полный перечень команд сопроцессора ВМ87 приведен в табл. 3.11, где указаны среднее время Тср выполнения команды, а также диапазон значений Ттщ—Ттах. Среднее время соответствует наиболее часто встречающемуся (типовому) случаю выполнения команды, когда «мешающие» факторы отсутствуют. Диапазон Tmln—Tmax охватывает наилучший и наихудший случаи выпол-
пояе
Поле MOD
н/м
00
01
10
11
ООО
(ВХ)+(81)
(BX)+(SI)+DISP8
(BX)+(8I)+DI8P18
ST(0)
001
(BX)+(DI)
(BX)+(DI)+DISP8
(BX)+(DI)+DI8P16
ST(1)
010
(BP)+(SI)
(BP)+(SI)+DISP8
(BP)+(8I)+DI8P18
ST(2)
011
(BP)+(DI)
(BP)+(DI)+DISP8
(BP)+(DI)+DISP16
ST(3)
100
(SI)
(SD+DISP8
(8D+DI8P16
ST(4)
101
(DI)
(DD+DISP8
(DI)+DISP18
ST(6)
110
DISP16
(BP)+DISP8
(BP)+DISP16
ST(8)
111
(BX)
(BX)+DISP8
(BX)+DISP16
ST(7)
нения команды, когда учитываются дополнительные задержки, связанные с арбитражем локальной шины (при извлечении операндов) и анализом входа TEST (при выполнении команды WAIT, предшествующей ESC). Диапазон включает также время, необходимое для обнаружения ряда исключительных ситуаций. Потеря точности (флаг РЕ) не влияет на Тср. Наличие исключительных ситуаций, связанных с недействительной операцией (IE), незамаскированной денормализацией (DE при DM = 0) и делением на нуль (ZE), увеличивает
Таблица 3.11
В Мнемокод Байт 1 Байт 2 пв Top Tmin-Tmax Операцияп/п
det arc
1
FLD arc
ESCOOl 101 Oil 001
MD000 R/M
000
101 llOOOST(i)
2-4
2-4
2-4
2
43+E
46+E
57+E
20
38-56+E 40-60+E 53-65+E 17-22
ST(0)+mem(KB)+ 8Т(0)+тет(ДВ)'1 ST(0)+mem(BB)l ST(0)+ST(i)l
2
FILD arc
ESC111
MD000 R/M
2-4
50+E
46-54+E
8Т(0)+тет(ЦС)4
Oil
000
2-4
56+E
52-60+E
ST(0)+mem(KU)l
111
101
2-4
64+E
60-68+E
ЗТ(0)+тет(ДЦ)1
3
FBLD arc
ESC111
MD100 R/M
2-4
300+E
290-310+E
5Т(0)+тет(ДД)'1
4
FST det
ESCOO1
010
2-4
87+E
84-90+E
mem(KB)+ST(0)
101
010
2-4
100+E
96-104+E
тет(ДВ)+5Т( 0)
101
11010ST(i)
2
18
15-22
ST(l)+ST(0)
5
FIST det
ESC111
MD010 R/M
2-4
86+E
80-90+E
men(UC)+ST(0)
Oil
010
2-4
88+E
82-92+E
тет(КЦ)+8Т(0)
6
FSTP det
ESC001
Oil
2-4
89+E
86-92+E
mem(KB)+ST(0)t
101
Oil
2-4
102+E
98-106+E
mem(flB)+ST(0)t
Oil
111
2-4
55+E
52-58+E
mem(BB)+ST(0)t
101
HOllST(i)
2
20
17-24
ST(i)+ST(O)t
7
FISTP det
ESC111
MD011 R/M
2-4
88+E
82-92+E
mem(UC)+ST(0)t
011
Oil
2-4
90+E
84-94+E
mem(KU)+ST(0)t
111
111
2-4
100+E
94-105+E
тет(ДЦ)+8Т(0)7
8
FBSTP det
ESC111
110
2-4
530+E
520-540+E
mem(M)+ST(0)t
9
FXCH ST(i)
ESCOOO
11010ST(1)
2
12
10-15
ST(O) ST(i)
10
FLDZ
ESCOOl
11101 110
2
14
11-17
ST(0)++0,04
11
FLD1
ESCOOl
11101 000
2
18
15-21
ST(0)++l,0l
12
FLDPI
ESCOOl
11101 011
2
19
16-22
ST(0) + % 1
13
FLDL2T
ESCOOl
11101 001
2
19
16-22
ST(0)+logl0l
14
FLDL2E
ESCOOl
11101 010
2
18
15-21
ST(0)+logel
15
FLDLG2
ESCOOl
11101 100
2
21
18-24
ST(0)+lg2l
16
FLDLN2
ESCOOl
11101 101
2
20
17-23
ST(0)+ln21
17
FCOM arc
EBCOOO
MD010 R/M
2-4
65+E
60-70+E
ST(0)-mem(KB)
100
010
2-4
70+E
65-75+E
8Т(0)-тет(ДВ)
000
11010ST(i)
2
45
40-50
ST(0)-ST(i)
18
FICOM arc
ESC110
MD010 R/M
2-4
80+E
72-86+E
ST(0)-тет(ЦС)
010
010
2-4
85+E
78-91+E
ST(0)-тет(КЦ)
19
FCOMP arc
ESCOOO
MD011 R/M
2-4
68+E
63-73+E
ST(0)-mem(KB)t
100
Oil
2-4
72+E
67-77+E
ST(0)-mem(ДВ)t
000
HOllST(i)
2
47
45-52
ST(0)-ST(i)t
К" Мнемокод Байт 1 Байт 2 пв Top Tmin-Tmax Операцияп/п
det arc
20
FICOMP arc
ESC11O
MDO11 R/M
2-4
82+E
74-88+E
ST(O)-mem(UC)t
010
2-4
87+E
80-93+E
ST(0)-mem(KU)t
21
FCOMPP
ESC11O
11011 001
2
50
45-55
ST(O)-ST(l)tt
22
FTST
ESCOOl
100 100
2
42
38-48
ST(0)-0,0
23
FXAM
ESCOO1
100 101
2
17
12-23
анализ ST(O)
24
FADD dst.src
ESCOOO
MD000 R/M
2-4
105+E
90-120+E
ST(0)+ST(0)+mem(KB)
100
000
2-4
110+E
95-125+E
ST(O)+ST(0)+mem(ДВ)
000
llOOOST(i)
2
85
70-100
ST(O)+ST(O)+ST( 1)
100
000
2
85
70-100
ST(i)+ST(O)+ST(1)
25
FIADD src
ESC11O
MD000 R/M
2-4
120+E
102-137+E
ST(0)+ST(0)+mem(UC)
010
000
2-4
125+E
108-143+E
ST(0)+ST(0)+mem(KU)
26
FADDP dst.src
ESC110
11000ST(i)
2
90
75-105
ST(i)+ST(0)+ST(i)t
27
FSUB dst,src
ESCOOO
MD100 R/M
2-4
105+E
90-120+E
ST(0)+ST(0)-mem(KB)
100
100
2-4
110+E
95-125+E
ST(0)+ST(0)-mem(ДВ)
000
HlOOST(i)
2
85
70-100
ST(0)+ST(0)-ST( 1)
000
100
2
85
70-100
ST(l)+ST(O)-ST(i)
28
FSUBR dst.src
ESCOOO
MD101 R/M
2-4
105+E
90-120+E
ST(0)+mem(KB)-ST(O)
100
101
2-4
110+E
95-125+E
ST(0)+mem(ДВ)-ST(0)
000
11101ST(i)
2
87
70-100
ST(O)+ST(i)-ST(0)
100
101
2
87
70-100
ST(i)+ST(i)-ST(O)
29
FSUBP dst.src
ESC110
11100ST(1)
2
90
75-105
ST(1)+ST(0)-ST(1)t
30
FSUBRP dst.src
ESC110
11101ST(1)
2
90
75-105
ST(i)+ST(i)-ST(0)t
31
FISUB src
ESC11O
MD100 R/M
2-4
120+E
102-137+E
ST(0)+ST(0)-mem(UC)
010
100
2-4
125+E
108-143+E
ST(0)+ST(0)-mem(KU)
32
FISUBR src
ESC110
MD101 R/M
2-4
120+E
103-139+E
ST(0)+mem(IIC)-ST(0)
010
101
2-4
125+E
109-144+E
ST(0)+mem(KU)-ST(0)
33
FMUL dst,src
ESCOOO
MD001 R/M
2-4
118+E
110-125+E
ST(O)+ST(D)xmem(KB)
100
001
2-4
140+E
112-168+E
ST(0)+ST(0)xmem(ДВ)
000
11001ST(i)
2
110
90-145
ST(0)+ST(0)xST(i)
100
001
2
110
90-145
ST(i)+ST(0)xST( 1)
34
FIMUL src
ESC110
MD001 R/M
2-4
130+E
124-138+E
ST(0)+ST(0)xmem(UC)
010
001
2-4
136+E
130-144+E
ST(0)+ST(0)xmem(KU)
35
FMULP dst.src
ESC110
11001ST(1)
2
115
95-150
ST(i)+ST(0)xST( i)t
36
FDIV dst,src
ESCOOO
MD110 R/M
2-4
220+E
215-225+E
ST(0)+ST(0)/mem(KB)
100
110
2-4
225+E
220-230+E
ST(0)+ST(0)/mem(ДВ)
000
11110ST(1)
2
198
195-203
ST(0)+ST(0)/ST(i)
100
110
2
198
195-203
ST(i)+ST(O)/ST(i)
37
FDIVR dst,src
ESCOOO
MD111 R/M
2-4
221+E
215-225+E
ST(0)+mem(KB)/ST(0)
100
111
2-4
226+E
220-230+E
ST(0)+mem(ДВ)/5Т(0)
000
11111ST(1)
2
199
193-203
ST(0)+ST(i)/ST(0)
100
111
2
199
193-203
ST(i)+ST(i)/ST(0)
38
FDIVP dst.src
ESC110
11110ST(1)
2
202
198-208
ST(i)+ST(0)/ST(i)t
39
FDIVRP dst.src
ESC110
lllllST(i)
2
203
198-208
ST(i)+ST(i)/ST(0)t
40
FIDIV src
ESC110
MD110 R/M
2-4
230+E
224-238+E
ST(0)+ST(0)/mem(UC)
010
110
2-4
236+E
230-243+E
ST(0)+ST(0)/mem(KU)
41
FIDIVR src
ESC110
MD111 R/M
2-4
230+E
225-239+E
ST(0)+mem(UC)/ST(0)
010
111
2-4
237+E
231-245+E
ST(0)+mem(KU)/ST(0)
42
FSQRT
ESCOOl
11111 010
2
183
180-186
ST(O)+VST(O)
43
FSCALE
001
11111 101
2
35
32-38
ST(O)+ST(O)3BT(1)C
44
FPREM
001
11111 000
2
125
15-190
ST(0)+ST(0)MODST(1)
45
FRNDINT
001
11111 100
2
45
16-50
5Т(0)+целое ST(O)
46
EXTRACT
001
11110 100
2
50
27-55
5Т(0)+мантисса, ST(1)+порядок
47
FABS
001
11100 001
2
14
10-17
ST(O)+|ST(0)|
48
FCHS
001
11100 000
2
15
10-17
ST(0)+-ST(0)
49
FPTAN
001
11110 010
2
450
30-540
ST(0),ST(1)+tg(Z/2)
50
FPATAN
001
11110 011
2
650
250-800
ST(O)+arctg(X/Y)
51
F2FM1
001
11110 000
2
500
210-630
ST(0)+2eT(O)-i
52
FYL2X
001
11110 001
2
950
900-1100
ST(0)+YlogX
53
FYL2XP1
001
mu ooi
2
850
700-1000
ST(0)+Ylog(X+l)
54
FINIT
ESC011
11100 011
2
5
2-8
Инициализация
55
PENT
Oil
11100 000
2
5
2-8
IEM+0
56
FDISI
Oil
11100 001
2
5
2-8
IEM+1
57
FLDCW src
ESCOOl
MD101 R/M
2-4
10+E
7-14+E
CR<-src
58
FSTCW dst
001
111
2-4
15+E
12-18+E
dst+CR
59
FSTSW dst
ESC101
MD111 R/M
2-4
15+E
12-18+E
dst+SR
60
FCLEX
ESC011
11100 010
2
5
2-8
PE,UE,OE,ZE,DE,IE+0
К" Мнемокод Байт 1 Байт 2 пв Тер Tmin-Tmax Операция п/п
det arc
61
FSTENV dst
ESCOO1
MD110
R/M
2-4 45+E
40-50+E
dat+CR,SR,TAG,EP
62
FLDENV arc
001
100
2-4 40+E
35-45+E
CR,SR,TAG,EP+dst
63
FSAVE dst
ESC101
MD110
R/M
2-4 203+E
197-207+E
dat+CR,SR,TAG,EP,
ST(0)-ST(7)
64
FRSTOR arc
ESC101
MD100
R/M
2-4 203+E
197-207+E
CR,SR,TAG,EP,ST(0)-
ST(7)+arc
65
FINCSTP
ESC001
11110
111
29
6-12
ST+ST+1
66
FDECSTP
001
11110
110
29
6-12
ST+ST-1
67
FFREE ST(1)
ESC101
11000ST(1)
211
6-16
TAG(i) + ll
68
FNOP
ESC001
11010
000
213
10-16
ST(0)+ST(0)
Тер и учтено в указанном диапазоне. Незамаскированное переполнение (ОЕ при ОМ = 0), антипереполнение (UE при UM = 0) и замаскированная денормализация (DE при DM=1) вносят дополнительные задержки Т0Е=14т, ТиЕ=16т, и TDE (DM i) = 33т, которые следует добавлять ко времени, указанному в табл. 3.11.
Кроме того, при обращении к операндам, находящимся в памяти, следует добавлять время ТЕА, необходимое для формирования исполнительного адреса операнда.
Мнемокод каждой команды начинается с буквы F (float — плавающий), что позволяет в программах на ассемблере отличать команды процессоров ВМ87 и ВМ86. В мнемокоде команд, оперирующих вещественными числами, используется мнемоника, определяющая основное содержание команды: LD (load) —загрузка; ST (story) —запоминание; COM (compare) —сравнение и т. д. Для команд, оперирующих целыми двоичными числами, за буквой F идет буква I (integer — целое число), а двоично-десятичными — буква В. Таким образом, различаются мнемокоды команд, оперирующих различными типами данных. В табл. 3.11 для каждого типа данных, расположенных в памяти, в скобках указан формат, например запись mem (ЦС) означает, что операндом является целое слово. Для одного и того же типа, независимо от формата, используется один мнемокод. Например, для вещественного числа, размещенного в памяти по адресу Addri, команда загрузки имеет вид ELD Addri в любом случае, когда по адресу Addri записано число в формате КВ, ДВ или ВВ. Для правильного формирования кода команды в языке ассемблера ASM-86 предусмотрены директивы объявления данных, ориентированные на форматы АСП ВМ87: DW — для формата ЦС; DD — для форматов КЦ, КВ; DQ — для форматов ДЦ, ДВ; DT — для форматов ВВ и ДД.
Система команд сопроцессора ВМ87 по функциональному признаку разбивается на четыре группы: команды передачи данных (мнемокоды 1 — 16 в табл. 3.11), арифметические команды (мнемокоды 17—41), специальные вычислительные команды (мнемокоды 42—53) и команды управления (мнемокоды 54—68).
Рассмотрим особенности использования команд различных групп, которые не отражены в табл. 3.11.
Команды передачи данных включают четыре типа: загрузки, запоминания, обмена и загрузки констант.
Команды загрузки FLD src, FILD src, FBLD src служат для передачи данных из источника src в вершину стека ST(0). В качестве источника данных служит адрес памяти, а в команде FLD src источником может служить также арифметический регистр. Перед выполнением загрузки автоматически подготавливается новое значение указателя стека ST-<-STl и анализируется значение TAG(O). Если TAG(0) + H, устанавливается флаг 1Е,= 1, причем когда он не замаскирован (1М = 0), загрузка не производится и генерируется прерывание, свидетельствующее о недействительной операции — попытке загрузки занятого регистра. В процессе загрузки осуществляется автоматический перевод в формат ВВ данных из форматов КВ, ДВ (по команде FLD), ЦС, КП, ДД (по команде FILD) и ДД (по команде FBLD). Отметим, что команда FED ST(0) часто используется для дублирования вершины стека.
Команды запоминания FST dst, FIST dst используются для пересылки данных из вершины стека ST (0) в память по адресу dst. В команде FST dst приемником данных может также служить регистр ST (1). При выполнении этих команд содержимое указателя стека не изменяется. Число, засылаемое в память, из формата ВВ автоматически переводится в формат КВ или ДВ (по команде FST) либо в формат ЦС или КЦ (по команде FIST).
Команды запоминания FSTP dst, FISTP dst, FBSTP dst с одновременным выталкиванием из стека (в мнемокоде буква Р — от POP) используются для пересылки данных из вершины стека ST(0) в память по адресу dst. В команде FSTP dst приемником данных может также служить регистр ST(i). После выполнения пересылки содержимое стека автоматически увеличивается ST: = = (ST)+1. Число, засылаемое в память, из формата ВВ автоматически переводится: 1) в формат КВ, ДВ или остается в формате ВВ (по команде FSTP); 2) в формат ЦС, КЦ или ДЦ (по команде FISTP) либо в формат ДД (по команде FBSTP).
Команда обмена FXCH dst используется для обмена содержимого регистра-приемника ST(i), указанного в качестве адреса dst с вершиной стека ST(0). Если регистр-приемник не указан, т. е. мнемокод ЕХСН записан без операнда, то подразумевается регистр ST (1).
Команды загрузки констант FLDZ, FLD1, FLDPI, FLDL2T, FLDL2E, FLDLG2, FLDLN2 используются для включения в стек значений +0,0; +1,0; л; log210; log2e; lg2; 1п2, часто встречающихся в вычислительных программах. Эти значения хранятся в ПЗУ констант в формате ВВ и имеют точность представления 19 десятичных цифр.
Арифметические команды включают шесть типов команд: сравнения, анализа, сложения, вычитания, умножения и деления.
Команды сравнения FCOM src, FICOM src выполняют вычитание содержимого памяти из содержимого вершины стека: ST(0) — (src), формируя зна-
Таблица
3 12
Отношение
C3C0
ST(0) > (src)
0 0
ST(0) < (src)
0 1
ST(0) = (src)
1 0
ST(0) не сравнимо c (src)
1 1
Таблица 3 13
СО = 0СО = 1СО = 0СО = 1СЗС2 Содержимое вершины стека ST(0)
СО = 0СО = 1
СО = 0СО = 1
00Не нормализованоNAN
О 1Нормализованосо
1 0Нулевоее (пусто)
1 1Денормализованое (пусто)
чения флагов СЗ, СО, как показано в табл. 3.12. Команда FCOM src в качестве операнда src может указывать регистр ST(i). Если в команде FCOM операнд не указан, то подразумевается ST (1).
Значение операнда, находящегося в памяти, может быть в формате КВ, ДВ (команда FCOM) или ЦС, КЦ (команда FICOM).
Команды сравнения FCOMP src, FICOM src по выполненным действиям и форматам операндов аналогичны описанным выше. Дополнительное действие этих команд заключается в выталкивании из стека сравниваемого операнда.
Команда сравнения FCOMPP используется без указания операндов. Предполагается, что предварительно они должны быть размещены в двух верхних регистрах стека. Выполненное по команде FCOMPP сравнение сопровождается выталкиванием обоих сравниваемых операндов из стека, т. е. указатель стека увеличивается на два ST:=(ST) + 2.
Команда FTST используется для сравнения содержимого с нулем. Эта операция часто выполняется в вычислительных программах. Результат сравнения кодируется в разрядах СЗ, СО регистра состояния SR в соответствии с табл. 3.12, где (src) = +0,0.
Команда FXAM осуществляет анализ содержимого вершины стека и помещает результат анализа в регистр состояния SR. Флаг С1 указывает знак числа, находящегося в вершине: « + » (С1 =0), «—» (С1 = 1). Флаг СО указывает, какое число находится в вершине: С0 = 0— конечное число, С0=1 в других случаях. Флаги С2, СЗ конкретизируют содержимое вершины (табл. 3.13).
Команды сложения FADD dst,src, FIADD src, FADDP dst,src в качестве одного из слагаемых используют число из вершины стека ST(0).
В команде FADD операнды dst и src могут быть не указаны. В этом случае подразумевается dst = ST(0), src = ST(1). Если не указан один операнд dst, то подразумевается dst = ST(O), а в качестве src может быть использован ST(i) либо адрес памяти, по которому слагаемое представлено в формате КВ или ДВ. Если указаны оба операнда, то ими могут быть dst = ST(O), src = ST(i) или dst = ST(i), src = ST(0).
В команде FIADD src указывается только адрес памяти, по которому расположено слагаемое в формате ЦС или КЦ. В команде FADDP dst, src операндами являются регистры dst = ST(i), src = ST(0). Сложение по команде FADDP ST(i), ST (0) сопровождается выталкиванием слагаемого, находящегося в вершине стека.
Команды вычитания FSUB dst,src, FSUBR dst,src, FSU BP dst.scr, FSUBRP dst,src, FISUB src, F1SUBR src в качестве одного операнда используют содержимое вершины стека ST(0).
В командах FSUB и FSUBR операнды dst и src могут быть не указаны, в этом случае подразумевается dst = ST(O), src = ST(l). Если не указан один операнд dst, то подразумевается, что dst = ST(0), а в качестве src может быть использован ST(i) либо адрес памяти, по которому значение представлено в формате КВ или ДВ. Если указаны оба операнда, то ими могут быть dst = = ST(0), src = ST(i) или dst = ST(i), src —ST(0). По команде FSUBR, в отличие от FSUB, уменьшаемое и вычитаемое меняются местами (в мнемокоде R — от англ. Revers).
В командах FSUBP dst,src и FSUBRP dst,src операндами являются регистры dst = ST(i), src = ST(0). Вычитание сопровождается выталкиванием
и операнда, находящегося в вершине стека. По команде FSUBRP (в отличие от команды FSUBP) уменьшаемое и вычитаемое меняются местами.
В командах FISUB src и FISUBR src указывается только адрес памяти, по которому расположено значение операнда в формате ЦС или КЦ. По команде FISUBR (в отличие от FISUB) уменьшаемое и вычитаемое меняются местами.
Команды умножения FMUL dst.src, FIMUL src, FMULP dst.src в качестве одного из сомножителей используют содержимое вершины стека ST(0). Указание (или умолчание) операндов, а также ограничение на форматы операндов в памяти аналогичны командам сложения FADD и FIADD.
Команды деления FDIV dst.src, FDIUR dst.src, FDIVP dst.src, FDIVRP dst.src, FIDIV src, FIDIVR src в качестве одного операнда используют содержимое вершины стека 8Т(0). Указание (или умолчание) операндов, а также ограничения на форматы операндов в памяти аналогичны соответствующим командам вычитания.
Специальные вычислительные команды. Группа специальных вычислительных команд включает 12 мнемокодов, определяющих действие, часто встречающееся в вычислительных программах.
Команды вычисления квадратного корня FSQRT, нахождения абсолютного значения FABS и изменения знака FCHS не требуют дополнительных пояснений. Операндом в этих командах является содержимое вершины стека ST (0).
Команда масштабирования FSCALE используется для изменения порядка числа, размещенного в ST(0), путем сложения масштабного коэффициента, размещенного в ST (1), со значением поля порядка ST(0). Масштабный коэффициент рассматривается как целое число со знаком. Эта операция эквивалентна умножению значения ST(0) на степень числа 2", где n = ST(l), причем -2|5^п^ +215.
Команда получения частичного остатка от деления FPREM используется для точного деления чисел. Делимое размещается в регистре ST(0), делитель — в ST(1). Делитель можно рассматривать как некоторый модуль, и тогда команда FPREM позволяет получить остаток от деления по модулю. Действие команды заключается в сдвигах и вычитаниях, как при «ручном» делении. Получение точного остатка в тех случаях, когда значения операндов существенно отличаются, может потребовать значительного времени вычислений. Это, в свою очередь, приведет к значительному интервалу времени, в течение которого АСП ВМ87 нельзя прервать (такая возможность предоставляется только между вычисляемыми им командами). Чтобы избежать этого, команда FPREM выполняется итеративно (частично) под управлением программы. Если остаток от деления, полученный в регистре ST (0), меньше делителя, флаг С2 в регистре состояния SR устанавливается в нуль, что указывает на полное завершение команды. В противном случае флаг С2 устанавливается в единицу, что указывает на неполное завершение команды — остаток, полученный в ST(0), является частичным. Решение о повторном выполнении команды принимается под управлением дальнейших (следующих за FPREM) команд программы, которые анализируют флаг С2 и, если С2у=0, передают управление команде FPREM.
Команда FPREM обычно используется для понижения размерности аргументов (операндов) тригонометрических функций. Это необходимо, поскольку команда FPTAN (рассматриваемая далее) позволяет вычислять тангенс для
аргументов меньше л/4. Используя значение л/4 в качестве делителя в команде FPREM, можно уменьшить значение аргумента, используемого в качестве делимого, до указанного предела. Когда команда FPREM завершается полностью (С2 = 0), значения флагов СО, СЗ, С1 соответствуют трем младшим битам частного от деления. Код С0СЗС1, образованный этими битами, определяет номер одного из восьми октантов единичного круга, что также играет важную роль при вычислениях тригономерических функций.
Команду FPREM также удобно использовать в качестве «универсального нормализатора». Если в регистре ST (0) ненормализованное число и в регистре ST (1) число больше, чем в ST(0), то результатом команды FPREM будет нормализованное значение ST(0).
Команда округления до целого значения FRNDINT производит округление значение ST (0) в соответствии с установленным режимом в поле RC регистра управления CR. Например, значение 125,75 преобразуется командой FRNDINT в 125, если RC = 01 или 11, и в 126, если RC = 00 или 10 (см. табл. 3.8).
Команда выделения порядка и мантиссы FXTRACT «разделяет» число, размещенное в ST (0), на два компонента: мантиссу и порядок. В результате выполнения команды в регистре ST (0) формируется значение мантиссы, представленной как вещественное число с тем же знаком и порядком, равным нулю, а в регистре ST (1) — значение порядка (без константы смещения), представленного как вещественное число со знаком. Например, исходным операндом является число +1,5-2-7, размещенное в ST (0) в формате ВВ (s = 0, поле порядка 3FF8H, поле мантиссы СО...ОН). В результате выполнения команды FXTRACT в регистре ST (0) получим число 1,5 в формате ВВ (s = 0, поле порядка 3FFFFH, поле мантиссы СО...ОН), а в ST (1) — число — 7,0 в формате ВВ (s=l, поле порядка 4001Н, поле мантиссы E0...0H).
Использование команды FXTRACT совместно с командой FBSTP удобно для преобразования результатов вычислений с дальнейшим их отображением (на дисплее, печатающем устройстве) в десятичной системе счисления. Команда может быть также полезна при поиске ошибок, так как позволяет отдельно проанализировать порядок и мантиссу числа.
Команда FPTAN вычисляет частичный тангенс числа z, размещенного в ST (0), где z должно находиться в интервале 0^г^л/4. Результатом выполнения команды являются два числа: х и у [ST (0) = х, ST (1) = у], из которых с помощью команды деления можно получить tg (z/2) = y/x. Используя значение х, у, можно легко вычислить все другие прямые тригонометрические функции,
например ctg (z/2)=x/y, sin zнапример ctg (z/2)=x/y, sin z2у/хШуА)2’2у/хШуА)2’cos zcos z1-(уА)21 + (уА)21-(уА)21 + (уА)2по известнымпо известным
например ctg (z/2)=x/y, sin z
например ctg (z/2)=x/y, sin z
2у/х
ШуА)2’
2у/х
ШуА)2’
cos z
cos z
1-(уА)2
1 + (уА)2
1-(уА)2
1 + (уА)2
по известным
по известным
из тригонометрии формулам.
Ограничения на значения аргумента г(0^г^л/4) можно избежать, используя предварительно команду FPREM [с модулем 5Т(1) = л/4], которая помимо понижения значения аргумента укажет один из восьми секторов единичного круга, где вычисляется функция. Напомним, что код сектора формируется в СЗ С1 СО после полного завершения команды FPREM.
Команда FRATAN вычисляет частичный арктангенс z = arctg (х/у). Исходные операнды х и у размещаются в регистрах ST (0) и ST (1) соответственно, причем 0<у<х< <х>, а результат получается в ST (0). Перед записью результата осуществляется выталкивание из стека, и, таким образом, оба исходных
операнда теряются. Используя значение z, можно легко вычислить другие обратные тригонометрические функции по известным формулам.
Команда F2XM1 вычисляет значение функции у = 2х— 1, где исходный операнд х размещается в регистре ST (0) и должен лежать в интервале О^х^ ^0,5. Результат у размещается на месте исходного операнда. Команда позволяет получать точные значения даже тогда, когда х очень близок к нулю. Она используется для вычисления различных показательных функций, напри- 1 ЛХ*°б91 /пХ *°ё91 \
мер функция Ю = 2= 1+(2—1) может быть вычислена с помо пью
последовательности команд FLDL2T, FMULx, F2XM1, FADD«1».
Команда FYL2X вычисляет значение функции z=ylog2x, где исходные операнды х и у размещены в ST (0) и ST (1) соответственно, причем 0<х< сю, — оо<у<сю. Команда осуществляет выталкивание из стека и записывает результат в новую вершину, т. е. оба исходных операнда теряются. Команда FYL2X позволяет изменять основания логарифмов согласно известной формуле logn x = logn 2-log2 х путем использования команды умножения.
Команда FYL2XP1 вычисляет значение функции z = y log2 (х+ 1), где исходные операнды х и у размещаются в ST (0) и ST (1) соответственно, причем 0<|х|<1 — 1/^/2, —оо Су < оо. Команда осуществляет выталкивание из стека и записывает результат в новую вершину, т. е. оба исходных операнда теряются
Команды управления включают 15 мнемокодов, которые используются не для вычислений, а для выполнения системных функций. Большинство команд этой группы имеют альтернативные мнемокоды, которые образуются путем добавления к мнемокоду буквы N, указывающей на то, что при ассемблировании данного мнемокода перед ним не надо помещать команду WAIT. Альтернативный мнемокод используется на участках программ, критичных по времени выполнения, где лишние такты, затрачиваемые на выполнение команды WAIT, нежелательны. Конечно, когда разрешены и возможны запросы прерывания на ЦП ВМ86, должен быть использован обычный, а не альтернативный мнемокод.
Все команды (исключая FNSTENV и ENSAVE), имеющие альтернативный мнемокод, являются самосинхронизируемыми, т. е. не требуют для синхронизации команды WAIT.
Команда инициализации сопроцессора FINIT/FNINIT эквивалентна внешнему сигналу RESET, за исключением того, что она не влияет на синхронизацию выборки команд для процессоров ВМ86 и ВМ87. Отметим также, что если команда FNINIT начнет выполняться в то время, когда ВМ87 выполняет предыдущую команду, связанную с обращением к памяти, обращение будет прекращено.
Команда разрешения прерывания FENI/FNENI устанавливает в нуль маску 1ЕМ = 0 в регистре SR, разрешая АСП ВМ87 генерировать запросы на выходе INT. Команда запрещения прерывания FDISI/FNDISI устанавливает маску 1ЕМ=1, запрещая генерировать запросы прерывания.
Команда загрузки управляющего слова FLDCW src осуществляет загрузку регистра CR данными из памяти по адресу src. Эта команда обычно используется для задания или изменения режимов работы ВМ87 (см. рис. 3.6). Следует отметить, что если какой-либо флаг исключительной ситуации в регистре SR установлен, то при загрузке нового управляющего слова, в котором этот флаг не замаскирован, и 1ЕМ = 0, немедленно генерируется запрос пре-
рывания, до выполнения следующей команды. С учетом этой особенности рекомендуется при изменении режима сначала установить в нуль флаги исключительных ситуаций, а затем загружать новое управляющее слово.
Команда запоминания управляющего слова FSTCW/FNSTCW dst записывает текущее содержимое регистра CR и в памяти по адресу dst.
Команда запоминания слова-состояния FSTSW/FNSTSW dst записывает текущее содержимое регистра SR в память по указанному адресу dst. Эта команда обычно используется:
при организации условных переходов после выполнения команд сравнения (FCOM, FCOMP, FCOMPP, FICOM), для чего результат сравнения, полученный во флагах СО, СЗ регистра SR, записывается в память и затем, после его загрузки в регистр F процессора ВМ86, используется команда условного перехода из системы команд ВМ86;
для обработки исключительных ситуаций, путем анализа младшего байта регистра SR без использования прерываний (при 1ЕМ=1).
Команда установки в нуль флагов исключительных ситуаций FCLEX/ FNCLEX сбрасывает флаги IE, DE, ZE, ОЕ, UE, РЕ, а также поле В и флаг IR в регистре состояния SR.
Команда записи содержимого всех вспомогательных регистров сопроцессоров в память FSTENV/FNSTENV dst по адресу dst. На рис. 3.16 показано размещение регистров в памяти при dst = addr. Обычно адрес addr выбирается в стековом сегменте ВМ86. Эта команда часто используется при обработке незамаскированных исключительных ситуаций, так как обеспечивает доступ ЦП к содержимому регистра ЕР, определяющему команду, при выполнении которой обнаружилась исключительная ситуация, а также адрес ее операнда.
000 ICRCPCIEM0PMUM0MZMDMIMвСЗSTСЗClCOIR0PEUE0EZEDEIETAGI7)TAG(G)TAG(5)TAG(4)TAGI3)TAGC3)TAG(l)TAGCO)А15А14А13А13aii|aioA9A8A7A6A5A4A3A3AlAOА19А18А17А16Код командыА15А14А13А13AllАЮA9A8A7A6A5A4A3A3AlAOА19А18А17А16000000000000000 ICRCPCIEM0PMUM0MZMDMIMвСЗSTСЗClCOIR0PEUE0EZEDEIETAGI7)TAG(G)TAG(5)TAG(4)TAGI3)TAGC3)TAG(l)TAGCO)А15А14А13А13aii|aioA9A8A7A6A5A4A3A3AlAOА19А18А17А16Код командыА15А14А13А13AllАЮA9A8A7A6A5A4A3A3AlAOА19А18А17А16000000000000addraddr♦ О ♦ з ♦ 4 ♦ 6♦В ♦10 ♦ 12♦ О ♦ з ♦ 4 ♦ 6♦В ♦10 ♦ 1215 14 13 13 11 10 9 8 7 6 5 4 3 3 1 О15 14 13 13 11 10 9 8 7 6 5 4 3 3 1 ОРис. 3.16. Размещение содержимого регистров в памяти по командеРис. 3.16. Размещение содержимого регистров в памяти по командеCRSRTAGУказатель 1 команды. Адрес операнда.CRSRTAGУказатель 1 команды. Адрес операнда.ЕРЕРFSTENNFSTENN
0
0
0 IC
RC
PC
IEM
0
PM
UM
0M
ZM
DM
IM
в
СЗ
ST
СЗ
Cl
CO
IR
0
PE
UE
0E
ZE
DE
IE
TAGI7)
TAG(G)
TAG(5)
TAG(4)
TAGI3)
TAGC3)
TAG(l)
TAGCO)
А15
А14
А13
А13
aii|aio
A9
A8
A7
A6
A5
A4
A3
A3
Al
AO
А19
А18
А17
А16
Код команды
А15
А14
А13
А13
All
АЮ
A9
A8
A7
A6
A5
A4
A3
A3
Al
AO
А19
А18
А17
А16
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0 IC
RC
PC
IEM
0
PM
UM
0M
ZM
DM
IM
в
СЗ
ST
СЗ
Cl
CO
IR
0
PE
UE
0E
ZE
DE
IE
TAGI7)
TAG(G)
TAG(5)
TAG(4)
TAGI3)
TAGC3)
TAG(l)
TAGCO)
А15
А14
А13
А13
aii|aio
A9
A8
A7
A6
A5
A4
A3
A3
Al
AO
А19
А18
А17
А16
Код команды
А15
А14
А13
А13
All
АЮ
A9
A8
A7
A6
A5
A4
A3
A3
Al
AO
А19
А18
А17
А16
0
0
0
0
0
0
0
0
0
0
0
0
addr
addr
♦ О ♦ з ♦ 4 ♦ 6
♦В ♦10 ♦ 12
♦ О ♦ з ♦ 4 ♦ 6
♦В ♦10 ♦ 12
15 14 13 13 11 10 9 8 7 6 5 4 3 3 1 О
15 14 13 13 11 10 9 8 7 6 5 4 3 3 1 О
Рис. 3.16. Размещение содержимого регистров в памяти по команде
Рис. 3.16. Размещение содержимого регистров в памяти по команде
CR
SR
TAG
Указатель 1 команды
. Адрес операнда.
CR
SR
TAG
Указатель 1 команды
. Адрес операнда.
ЕР
ЕР
FSTENN
FSTENN
После записи содержимого вспомогательных регистров в память команда FSTENV/FNSTENV устанавливает маски всех исключительных ситуаций в единицу, но не влияет на значение IEM. Если команда FNSTENV декодирована до завершения предыдущей команды, то она не осуществит запись, пока эта команда не будет выполнена полностью. Команда FNSTENV должна быть «защищена» от возможных прерываний в ЦП в момент выполнения. Ее можно использовать в тех случаях, когда прерывания в ВМ86 запрещены либо перед ней использована команда WAIT при разрешенных прерываниях (т. е. мнемокода FSTENV).
Команда FLDENV src осуществляет загрузку вспомогательных регистров данными из памяти по адресу src. Вслед за командой FLDENV может следовать любая команда для ЦП ВМ86, но никакая команда для АСП ВМ87 не может следовать непосредственно за FLDENV без промежуточной команды WAIT.
Если загруженный с помощью команды FLDENV регистр SR содержит незамаскированный взведенный флаг исключительной ситуации (при 1ЕМ = 0), то он немедленно выдает запрос прерывания.
Команда FSAVE/FNSAVE dst осуществляет запись содержимого всех вспомогательных, а также арифметических регистров в память по адресу dst. На рис. 3.17 показано размещение регистров в памяти при dst = addr. Область для хранения этой информации (94 байт) обычно выбирается внутри стека ЦП ВМ86. Если команда FNSAVE декодирована до завершения предыдущей команды, то ВМ86 задержит ее выполнение до полного завершения этой предыдущей команды, тем самым сохраняемая информация всегда отражает состояние ВМ87, соответствующее моменту полного завершения любой предшествующей команды. После записи информации команда FSAVE/FNSAVE осуществляет инициализацию ВМ87, т. е. выполняет дополнительно все действия, определяемые командой FINIT/FNIIT. Команда FSAVE/FNSAVE используется в программе, когда необходимо сохранить текущее состояние сопроцессора и инициализировать его на выполнение другой программы, например, когда ВМ86 при обработке прерывания нуждается в использовании ВМ87. Альтернативный мнемокод FNSAVE нельзя использовать, когда разрешены прерывания в процессоре ВМ86. В этом случае используется мнемокод FSAVE.
Рис. 3.17. Размещение содержимого регистров е памяти по команде FSAVE
Команда FRSTOR src осуществляет загрузку регистров сопроцессора данными из 94-байтовой области памяти, определяемой адресом src. Вслед за командой FRSTOR может следовать любая команда для ЦП ВМ86, но никакая команда для АСП ВМ87 не может следовать непосредственно за FRSTOR без промежуточной команды WAIT.
После перезагрузки сопроцессор немедленно реагирует на новое состояние, например он сразу генерирует прерывание, если новое состояние укажет на наличие незамаскированной исключительной ситуации (конечно, только в случае, когда 1ЕМ = 0).
Команда FINCSTP увеличивает содержимое указателя стека ST на единицу. Она не изменяет содержимого арифметического регистра и соответствующих ему разрядов регистра TAG, а также не выполняет каких-либо пересылок. Команда FINCSTP не эквивалентна команде выталкивания из стека, так как не устанавливает разряда TAG, соответствующие предыдущей вершине, в код И. Увеличение содержимого указателя стека, когда ST = 7, дает ST = 0.
Команда FDECSTP уменьшает содержимое указателя стека ST на единицу. Эта команда не влияет на содержимое арифметического регистра и регистра TAG, не осуществляет никаких пересылок данных. Выполнение команды FDECSTP, когда ST = 0, дает ST = 7.
Команда FFREE ST (i) устанавливает в соответствующие разряды регистра TAG (i) код 11, т. е. освобождает указанный арифметический регистр ST (1), не изменяя его содержимого.
Команда FNOP не выполняет никаких действий.
Команды управления не оказывают влияния на флаги исключительных ситуаций, за исключением команды FCLEX/FNCLEX, которая их сбрасывает. Влияние команд на флаги исключительных ситуаций показано в табл. 3.14.
Таблица 3.14
е п/п
Команда
♦лаги исключительных ситуаций
e n/n
Команда
♦лаги исключительных ситуаций
1
FABS
IE,
27
FLDLN2
IE
2
FADD
IE,DE,OE,UE,PE
28
FLDL2E
IE
3
FADDP
IE,DE,OE,UE,PE
29
FLDL2T
IE
4
FBLD
IE
30
FLDPI
IE
5
FBSTP
IE
31
FLDZ
IE
6
FCHB
IE
32
FLD1
IE
7
FCOM
IE, DE
33
FMUL
IE,DE,OE,UE,PE
8
FCOMP
IE, DE
34
FMULP
IE,DE,OE,UE,PE
9
FCOMPP
IE, DE
35
FPATAN
IE,PE (операнды не проверяются)
10
FDIV
IE,DE,ZE,OE,UE,PE
36
FPREM
IE,DE,OE
11
FDIVP
IE, DE, ZE,OE,UE,PE
37
FPTAN
IE,PE (операнды не проверяются)
12
FDIVR
IE,DE,ZE,OE,UE,PE
38
FRNDIHT
IE, PE
13
FDIVRP
IE,DE,ZE,OE,UE,PE
39
FSCALE
IE,OE,UE
14
FIADD
IE,DE,OE,PE
40
FSQRT
IE,DE,PE
15
FICOM
IE, DE
41
FST
IE,OE,UE,PE
16
FICOMP
IE, DE
42
FSTP
IE,OE,UE,PE
17
FID IV
IE,DE,ZE,OE,UE,PE
43
FSUB
IE,DE,OE,UE,PE
18
FIDIVR
IE,DE,ZE,OE,UE,PE
44
FSUBP
IE,DE,OE,UE,PE
19
FILD
IE
45
FSUBR
IE,DE,OE,UE,PE
20
FIMUL
IE,DE,OE,PE
46
FSUBPR
IE,DE,OE,UE,PE
21
FIST
IE, PE
47
FTST
IE, DE
22
FISTP
IE, PE
48
FXCH
IE
23
FISUB
IE,DE,OE,PE
49
FXTRACT
IE
24
FISUBR
IE,DE,OE,PE
50
FYL2X
PE (операнды не проверяются)
25
FLD
IE, DE
51
FYL2XP1
PE (операнды не проверяются)
26
FLDLG2
IE
52
F2XM1
UE,РЕ (операнды не проверяются)
Примечания: 1. Команды перечислены в алфавитном порядке.
2. 16 команд, не включенных в таблицу, влияния на флаги исключительных ситуаций не оказывают.
В заключение отметим, что в программах на языке ассемблера ASM-86 можно использовать мнемокод FWAIT, являющийся альтернативным мнемокоду WAIT, когда программист хочет быть уверенным в том, что следую-
щая команда не начнет выполняться раньше, чем полностью завершится предыдущая. Обычно команда FWAIT применяется для того, чтобы ЦП не воспользовался каким-либо операндом из памяти до тех пор, пока АСП ВМ87 не закончит выполнять предыдущую команду, связанную с обращением в память. Например, следующий фрагмент показывает возможное применение команды:
FNSAVE ADDR1
FWAIT ; ожидание завершения FNSAVE
MOV АХ, ADDR2
где ADDR2 — адрес в 94-байтовой области, расположенной с начального адреса ADDR1. Ассемблирующая программа заменяет мнемокод FWAIT на объектный код команды WAIT.
Специальные случаи использования арифметического сопроцессора
Здесь кратко описаны ситуации, достаточно редко встречающиеся на практике, но представляющие определенный интерес для пользователей. К ним относятся действия сопроцессора над денормализованными и ненормализованными числами, кодами нулей, ± оо и NAN. Кроме того, описаны стандартные действия сопроцессора при возникновении различных замаскированных исключительных ситуаций.
Денормализованные числа возникают в результате вычислений, приводящих к исключительной ситуации антипереполнения (UE = 1), когда она замаскирована (UM=1). Антипереполнение происходит, если порядок результата настолько мал, что не может быть представлен в нужном формате. Например, значение порядка —130 вызывает антипереполнение, когда результат должен быть представлен в формате КВ, поскольку наименьший представимый порядок равен —126. Конечно, это значение порядка не вызывает антипереполнения при формате результата DB или ВВ, так как их наименьшие представимые порядки равны—1 023 и —16 383 соответственно.
Незамаскированная реакция АСП ВМ87 на антипереполнение выражается в прекращении дальнейших вычислений и выдаче запроса прерывания, если результат должен быть записан в память. Если приемником результата является регистр, сопроцессор прибавляет к истинному значению порядка константу 24 576, записывает результат и выдает запрос прерывания. Эта константа возвращает значение экспоненты в представимый формат ВВ и при дальнейшей обработке прерывания ее следует вычесть для получения истинного значения порядка.
Маскирование антипереполнения позволяет продолжать вычисления, не обращая внимания на денормализованные числа. Часто в процессе дальнейших вычислений получается нормализованный результат. Чтобы убедиться в этом, достаточно после завершения вычислений проанализировать флаг IE. Если IE = 0, то конечный результат правильный.
Действия сопроцессора и результаты этих действий с денормализованными операндами представлены в табл. 3.15.
Ненормализованные числа образуются из денормализованных чисел и также возникают при замаскированном антипереполнении. Ненормализованные числа существуют только в формате ВВ (см. табл. 3.5), они могут иметь по- 104
FLD (КВ.ДВ)
Операнд загружается как эквивалентное ненормализованное значение; устанавливается флаг DE = 1
Арифметические
Перед выполнением операции операнды преобразуются в эквивалентные ненормализованные; устанавливается флаг DE = 1
Деление, делитель лизован
денорма- Код неопределенности; устанавливается флаг IE = 1
Действия сопроцессора ВМ87
Результат
рядок, схожий с порядком нормализованных чисел, но отличаются от них тем, что первая цифра их мантиссы всегда равна «О».
С ненормализованными числами сопроцессор оперирует как с нормализованными, причем в процессе вычислений результат может нормализоваться. Например, при сложении ненормализованного числа с большим нормализованным числом результат будет нормализованным. Особенности действий с ненормализованными операндами представлены в табл. 3.16.
РезультатРезультатТаблица 3.16
Результат
Результат
Действия сопроцессораВМ87
Слохенне, вычитаниеСлохенне, вычитаниеУмножениеДеление (ненормализованное делимое) FPREM (ненормализованное делимое) Деление, FPREM (ненормализованный делитель) Сравнение, FTSTFRNDINTFSQRT FST, Е5ТР(КВ,ДВ)FSTP(BB) FIST, FISTP, FBSTP FLDFXCH Трансцендентные операцииУмножениеДеление (ненормализованное делимое) FPREM (ненормализованное делимое) Деление, FPREM (ненормализованный делитель) Сравнение, FTSTFRNDINTFSQRT FST, Е5ТР(КВ,ДВ)FSTP(BB) FIST, FISTP, FBSTP FLDFXCH Трансцендентные операцииНормализация операнда и получение наибольшего нормализованного значения результата
Слохенне, вычитание
Слохенне, вычитание
Умножение
Деление (ненормализованное делимое) FPREM (ненормализованное делимое) Деление, FPREM (ненормализованный делитель) Сравнение, FTST
FRNDINT
FSQRT FST, Е5ТР(КВ,ДВ)
FSTP(BB) FIST, FISTP, FBSTP FLD
FXCH Трансцендентные операции
Умножение
Деление (ненормализованное делимое) FPREM (ненормализованное делимое) Деление, FPREM (ненормализованный делитель) Сравнение, FTST
FRNDINT
FSQRT FST, Е5ТР(КВ,ДВ)
FSTP(BB) FIST, FISTP, FBSTP FLD
FXCH Трансцендентные операции
Не нормализован
Нормализован
Устанавливается флаг 1Е=1
Операнды нормализуются перед сравнением Операнды нормализуются перед округлением устанавливается флаг 1Е=1 Если не произошло антипереполнення, устанавливается флаг 1Е=1, иначе UE=1 Записывается ненормализованным Устанавливается флаг 1Е=1 Загружается ненормализованным Обмен ненормализованными операндами Неопределенный, операнды должны быть нормализованы
Рядом особенностей обладают действия сопроцессора над числами, представленными кодами нулей. Как показано в табл. 3.3, форматы целых чисел содержат код 4-0, в то время как форматы вещественных и двоично-десятичных чисел включают коды 4-0 и —0. В табл. 3.17 показаны особенности различных действий сопроцессора с нулевыми операндами, а также особенности получения нулевых результатов, когда операндами являются ненулевые значения, обозначенные через X и Y.
Только один формат ВВ включает специальный класс значений, которые можно назвать псевдонулями. Это такие ненормализованные числа, мантисса
которых содержит все нули, а порядок не нулевой (обычные нули имеют нулевой порядок). Никакой псевдонуль не может иметь порядок, состоящий из всех единиц, так как он зарезервирован для NAN. Псевдонулевой результат может быть получен в тех случаях, когда два ненормализованных операнда, имеющие в сумме более чем 64 старших нулевых бита, перемножаются.
Псевдонулевые операнды обрабатываются как обычные ненормализованные операнды, за исключением случаев выполнения команд сравнения и команды FTST; команды FRNDINT; команды деления, когда делимое нуль или псевдонуль (делитель псевдонуль). В перечисленных ситуациях псевдонули дают те же результаты, что и обычные нули.
Таблица 3.17
Операции/операнды
Результат
Операции/операнды
Результат
FLD,FBLD
Деление
±0
to
to/to
IE=1
FILD
tx/to
ZE=1
♦ 0
+0
tO/tX
t0
FST,FSTP
0/ X
-0
to
to
tX/iY
to, UE-1
+XD
±0
±X/ Y
-0, UE=1
FBSTP
FPREM
±0
±0
tO MOD tO
IE=1
FIST.FISTP
tX MOD tO
IE=1
±0
to
•10 MOD tX
4-0
tx (;x:<i)
tO
to MOD X
IE=1
Сложение
tX MOD +Y
+0
±0 + ±0
±0
-X MOD tX
-0
to t -0
*02>
tX t Y
*0
FSQHT
♦0 t tX
(знак X) 0
to
to
Вычитание
Сравнение
+0 - -0
tO
to ? tX
<(C3C0=01)
-0 - +0
-0
to ? to
=(C3C0=10)
±0 - ±0
*0
to ? -X
>(C3C0=00)
tx - tx
*0
FTST
to - tx
(знак X) 0
to
=(C3C0=10)
Умножение
FCHS
to x to
+0
to
±0
10 x 0
-0
FABS
tO x tX
tO
to
±0
+0 x X
-0
F2XM1
tX x tY
-0, UE=1
to
±0
tX x Y
-0, UE-1
FHNDINT +0
EXTRACT
+ 0
+0
Оба равны нулю
t> В ряде случаев записи в формате КВ, ДВ когда флаг UE=1 - г> * - знак определяется заданным режимом округления: положительный при НС - 00,10,11, отрицательный при НС = 01.
Когда в качестве операндов выступают коды ±оо, результаты действий сопроцессора в ряде случаев зависят от режима работы сопроцессора (проективный или аффинный) (см. § 3.3). В табл. 3.18 представлены результаты операций ВМ87 в двух указанных режимах.
В заключение приведем описание стандартных действий сопроцессора в ответ на замаскированные исключительные ситуации. В табл. 3.19 перечисляются все условия, приводящие к исключительным ситуациям, и реакция сопроцессора.
Действия сопроцессора над кодами NAN, обозначающими «не числа», приводят к установке флага недействительной операции IE= 1 и запросу прерывания. В тех случаях, когда эта исключительная ситуация замаскирована, то любая операция с операндом NAN дает в качестве результата тот же код NAN. Если в операции оба операнда являются NAN, то в качестве результата выбирается код того из них, который имеет большее абсолютное значение. Другими словами, код NAN, используемый как исходный операнд, не применяется в процессе вычислений и является результатом. (Исключение составляют команды трансцендентных операций, которые не анализируют свои операнды и NAN дает неопределенный результат). Размаскировав недействительные операции (1М = 0), программист может использовать коды NAN для вызова подпрограммы— обработчика прерывания по IE = LУказанные свойства кода NAN удобно использовать для специальных целей. Например, программист может предварительно все массивы заполнить кодами NAN, причем разным элементам массива присвоить различные коды, содержащие в мантиссе код индекса элемента. Если прикладная программа в качестве операнда-источника воспользуется элементом, значение которого не сформировано в процессе предыдущих вычислений, то он будет иметь код NAN. При незамаскированныхДействия сопроцессора над кодами NAN, обозначающими «не числа», приводят к установке флага недействительной операции IE= 1 и запросу прерывания. В тех случаях, когда эта исключительная ситуация замаскирована, то любая операция с операндом NAN дает в качестве результата тот же код NAN. Если в операции оба операнда являются NAN, то в качестве результата выбирается код того из них, который имеет большее абсолютное значение. Другими словами, код NAN, используемый как исходный операнд, не применяется в процессе вычислений и является результатом. (Исключение составляют команды трансцендентных операций, которые не анализируют свои операнды и NAN дает неопределенный результат). Размаскировав недействительные операции (1М = 0), программист может использовать коды NAN для вызова подпрограммы— обработчика прерывания по IE = LУказанные свойства кода NAN удобно использовать для специальных целей. Например, программист может предварительно все массивы заполнить кодами NAN, причем разным элементам массива присвоить различные коды, содержащие в мантиссе код индекса элемента. Если прикладная программа в качестве операнда-источника воспользуется элементом, значение которого не сформировано в процессе предыдущих вычислений, то он будет иметь код NAN. При незамаскированныхОперацияПроективныйАффинныйрезультатрезультатОперацияПроективныйАффинныйрезультатрезультатДеление:±=/±-IE=1IE-1±=/iXФ 00Ф 00±Х/±-Ф0®0FSQRT♦ ОСIE=1IE=1IE=1ГНЕМ±~MOD ±~IE=1IE=1♦~MOD tXIE=1IE=1±Y MOD ±*Y*Y±0 MOD ♦*0*0FRNDINT+ OO**FSCALEtoo scale ±°°IE=1IE=1too scale tX*00*=o±0 scale ±°°*0*0±Y scale t=°IE=1IE=1EXTRACTt coIE=1IE-1Сравнение+ co 9 +oo—±oe? ±Y? (IE=1)-00 < у < *'±007 ±0? (IE=1)-00 < 0 < +FTST♦ 00? (IE=1)*00СложениеTOO 4- 4-00IE=1+00±00+ ±OOIE=1IE=1+ »♦ ±X*ooВычитание±oo- ±00IE=1TOO±«- ±o°IE=1IE=1♦ 00*00±X - ±60(Знак X)(Знак X)Деление:±=/±-IE=1IE-1±=/iXФ 00Ф 00±Х/±-Ф0®0FSQRT♦ ОСIE=1IE=1IE=1ГНЕМ±~MOD ±~IE=1IE=1♦~MOD tXIE=1IE=1±Y MOD ±*Y*Y±0 MOD ♦*0*0FRNDINT+ OO**FSCALEtoo scale ±°°IE=1IE=1too scale tX*00*=o±0 scale ±°°*0*0±Y scale t=°IE=1IE=1EXTRACTt coIE=1IE-1Сравнение+ co 9 +oo—±oe? ±Y? (IE=1)-00 < у < *'±007 ±0? (IE=1)-00 < 0 < +FTST♦ 00? (IE=1)*00СложениеTOO 4- 4-00IE=1+00±00+ ±OOIE=1IE=1+ »♦ ±X*ooВычитание±oo- ±00IE=1TOO±«- ±o°IE=1IE=1♦ 00*00±X - ±60(Знак X)(Знак X)Умножение ±=х ±о» ±»х ±Y ±0 х t“Умножение ±=х ±о» ±»х ±Y ±0 х t“1Е=11Е=11Е=11Е=1Примечание. X - нулевой или ненулевой операнд; Y - ненулевой операнд; * - знак операнда, не являющегося too ; ф - знак, равный сумме по модулю два знаков операндов; ? - операнды несравнимы (СЗС0=11).Примечание. X - нулевой или ненулевой операнд; Y - ненулевой операнд; * - знак операнда, не являющегося too ; ф - знак, равный сумме по модулю два знаков операндов; ? - операнды несравнимы (СЗС0=11).
Действия сопроцессора над кодами NAN, обозначающими «не числа», приводят к установке флага недействительной операции IE= 1 и запросу прерывания. В тех случаях, когда эта исключительная ситуация замаскирована, то любая операция с операндом NAN дает в качестве результата тот же код NAN. Если в операции оба операнда являются NAN, то в качестве результата выбирается код того из них, который имеет большее абсолютное значение. Другими словами, код NAN, используемый как исходный операнд, не применяется в процессе вычислений и является результатом. (Исключение составляют команды трансцендентных операций, которые не анализируют свои операнды и NAN дает неопределенный результат). Размаскировав недействительные операции (1М = 0), программист может использовать коды NAN для вызова подпрограммы— обработчика прерывания по IE = L
Указанные свойства кода NAN удобно использовать для специальных целей. Например, программист может предварительно все массивы заполнить кодами NAN, причем разным элементам массива присвоить различные коды, содержащие в мантиссе код индекса элемента. Если прикладная программа в качестве операнда-источника воспользуется элементом, значение которого не сформировано в процессе предыдущих вычислений, то он будет иметь код NAN. При незамаскированных
Действия сопроцессора над кодами NAN, обозначающими «не числа», приводят к установке флага недействительной операции IE= 1 и запросу прерывания. В тех случаях, когда эта исключительная ситуация замаскирована, то любая операция с операндом NAN дает в качестве результата тот же код NAN. Если в операции оба операнда являются NAN, то в качестве результата выбирается код того из них, который имеет большее абсолютное значение. Другими словами, код NAN, используемый как исходный операнд, не применяется в процессе вычислений и является результатом. (Исключение составляют команды трансцендентных операций, которые не анализируют свои операнды и NAN дает неопределенный результат). Размаскировав недействительные операции (1М = 0), программист может использовать коды NAN для вызова подпрограммы— обработчика прерывания по IE = L
Указанные свойства кода NAN удобно использовать для специальных целей. Например, программист может предварительно все массивы заполнить кодами NAN, причем разным элементам массива присвоить различные коды, содержащие в мантиссе код индекса элемента. Если прикладная программа в качестве операнда-источника воспользуется элементом, значение которого не сформировано в процессе предыдущих вычислений, то он будет иметь код NAN. При незамаскированных
Операция
Проективный
Аффинный
результат
результат
Операция
Проективный
Аффинный
результат
результат
Деление:
±=/±-
IE=1
IE-1
±=/iX
Ф 00
Ф 00
±Х/±-
Ф0
®0
FSQRT
♦ ОС
IE=1
IE=1
IE=1
ГНЕМ
±~MOD ±~
IE=1
IE=1
♦~MOD tX
IE=1
IE=1
±Y MOD ±
*Y
*Y
±0 MOD ♦
*0
*0
FRNDINT
+ OO
*
*
FSCALE
too scale ±°°
IE=1
IE=1
too scale tX
*00
*=o
±0 scale ±°°
*0
*0
±Y scale t=°
IE=1
IE=1
EXTRACT
t co
IE=1
IE-1
Сравнение
+ co 9 +oo
—
±oe? ±Y
? (IE=1)
-00 < у < *'
±007 ±0
? (IE=1)
-00 < 0 < +
FTST
♦ 00
? (IE=1)
*00
Сложение
TOO 4- 4-00
IE=1
+00
±00+ ±OO
IE=1
IE=1
+ »♦ ±X
*oo
Вычитание
±oo- ±00
IE=1
TOO
±«- ±o°
IE=1
IE=1
♦ 00
*00
±X - ±60
(Знак X)
(Знак X)
Деление:
±=/±-
IE=1
IE-1
±=/iX
Ф 00
Ф 00
±Х/±-
Ф0
®0
FSQRT
♦ ОС
IE=1
IE=1
IE=1
ГНЕМ
±~MOD ±~
IE=1
IE=1
♦~MOD tX
IE=1
IE=1
±Y MOD ±
*Y
*Y
±0 MOD ♦
*0
*0
FRNDINT
+ OO
*
*
FSCALE
too scale ±°°
IE=1
IE=1
too scale tX
*00
*=o
±0 scale ±°°
*0
*0
±Y scale t=°
IE=1
IE=1
EXTRACT
t co
IE=1
IE-1
Сравнение
+ co 9 +oo
—
±oe? ±Y
? (IE=1)
-00 < у < *'
±007 ±0
? (IE=1)
-00 < 0 < +
FTST
♦ 00
? (IE=1)
*00
Сложение
TOO 4- 4-00
IE=1
+00
±00+ ±OO
IE=1
IE=1
+ »♦ ±X
*oo
Вычитание
±oo- ±00
IE=1
TOO
±«- ±o°
IE=1
IE=1
♦ 00
*00
±X - ±60
(Знак X)
(Знак X)
Умножение ±=х ±о» ±»х ±Y ±0 х t“
Умножение ±=х ±о» ±»х ±Y ±0 х t“
1Е=1
1Е=1
1Е=1
1Е=1
Примечание. X - нулевой или ненулевой операнд; Y - ненулевой операнд; * - знак операнда, не являющегося too ; ф - знак, равный сумме по модулю два знаков операндов; ? - операнды несравнимы (СЗС0=11).
Примечание. X - нулевой или ненулевой операнд; Y - ненулевой операнд; * - знак операнда, не являющегося too ; ф - знак, равный сумме по модулю два знаков операндов; ? - операнды несравнимы (СЗС0=11).
недействительных операциях программа — обработчик прерываний может определить, где и из какого массива взят этот элемент (по адресам команды и операнда в ЕР), а также индекс элемента (по коду в мантиссе NAN).
Коды NAN позволяет значительно упростить и ускорить процесс поиска ошибок в программе при ее отладке. Это тем более полезно, что на ранних стадиях тестирования программы содержат много ошибок. Программу — обработчик прерываний для диагностирования ошибок строят так, чтобы при каждом вызове она запоминала необходимую диагностическую информацию, а в качестве результата выдавала код NAN, в мантиссе которого размещается код
указателя, определяющий адрес диагностической информации. Затем тестируемая программа продолжает вычисление, а программа-обработчик формирует различные коды NAN при каждой ошибке. Результат выполнения программы NAN указывает место расположения диагностической информации. Это позволяет легко обнаруживать и исправлять ошибки, приводящие к различным исключительным ситуациям в процессе отладки.
Таблица 3.19
Условия
Реакция ВМ87
Недействительная операция (IE)
Регистр-источник пуст (TAG=11)
Регистр-приемник заполнен (TAG 11)
Один или оба операнда NAN
Один или оба операнда NAN, один операнд проективная (в командах сравнения и FTST)
Операнды - коды бесконечности с противоположными знаками (аффинная арифметика) или оба операнда (проективная арифметика, знак не играет роли) - команды сложения и вычитания
Умножение со хО или Ох со
Деление =о/ес , 0/0, 0/псевдо- нуль, делитель не нормализован или денормалнзован
Команда FPREM - делитель не нормализован или денормалнзован
Возвращает код неопределенности (в формате ВВ)
Записывает в него код неопределенности (в формате ВВ)
Возвращает код NAN с большим абсолютным значением
Устанавливает код "Несравнимы" (СЗС0=11)
Возвращает код неопределенности (в формате ВВ)
То же
Команда FSQRT - операнд не нормализован или денормалнзован, отрицательное число, не равное нулю, - оо (аффинная арифметика ), со ( проективная арифметика)
Команды FIST, FISTP - регистр- источник пуст, денормалнзован или не нормализован, NAN.co, непредставим в указанном формате
Команда FBSTP - регистр-источник пуст, денормализован или не нормализован, NAN,co, превышает 18 десятичных цифр
Команды FST, FSTP - регистр-источник содержит ненормализованные значения, а регистр-приемник определен форматом КВ или ДВ
Команда FXCH - одни или оба регистра пусты
Возвращает код неопределенности (в формате ВВ), устанавливает код "Команда завершения" (С2=0)
Возвращает код неопределеиности (в формате ВВ)
Записывает код неопределенности (в формате ВВ)
Записывает код неопределенности (в формате ДД)
Запоминает код неопределенности (в формате КВ или ДВ)
Денормалнзованный
Команда FLD - операнд-источник денормализован
Заполняет пустой/пустые регистры кодом неопределенности и совершает обмен
операнд (DE)
Загружает как обычный (никаких специальных действий)
УсловияУсловияРеакция ВМ87
Условия
Условия
Арифметические команды - один Преобразует операнд (операнды) или оба операнда денормализова- в эквивалентное ненормализован- ныное значение и выполняет коман
ду
Деление на нуль (ZE)
Деление - делитель равен ±0 Возвращает код ею со знаком, равным сумме по модулю два операндов
Переполнение (ОЕ)
Арифметические команды - округ- Возвращает код оос соответству- ление к ближайшему значению или ющим знаком и устанавливает по направлению к нулю, а поря- РЕ=1 док результата больше 16383
Команды FST, FSTP - округление То же к ближайшему значению или по направлению к нулю, а порядок результата больше 127 (приемник КВ) или 1023 (приемник ДВ)
Антнпереполненне (UE)
Арифметические команды - поря- Денормализует вплоть до порядка док результата меньше 16382-16382 (в смещенном виде
0000), если 64-битовая ман
тисса при этом содержит хотя бы одну единицу, возвращает денор- мализованное значение, иначе возвращает код 0
Команды FST, FSTP - приемник в Денормализует вплоть до порядка формате КВ/ДВ, а порядок ре- -126/-1022 (в смещенном виде зультата меньше -126/-10220000), если 24-бнтовая/53-бн-
товая мантисса содержит хотя бы одну единицу, возвращает денор- мализованное значение, иначе возвращает код 0
Неточный результат (РЕ)
Округление неточноеНикаких специальных действий
Замаскированный флаг ОЕ (ОМ=1) То же в ряде команд
Специализированный процессор ввода-вы вода К1810ВМ89
Общие сведения и технические характеристики
Микросхема К1810ВМ89 представляет собой однокристалльный 20-битовый специализированный процессор ввода — вывода (СПВБ), выполненный по высококачественной п-МОП-технологии [4, 5, 15]. Кристалл микросхемы размером 5,5X5,5 мм потребляет мощность не более 2,5 Вт от источника питания напряжением + 5 В. Схема выпускается в 40-выводном корпусе. Синхронизуется однофазными импульсами с частотой повторения 1—5 МГц от внешнего тактового генератора.
Процессор К1810ВМ89 (обозначаемый далее для краткости ВМ89) используется совместно с центральным процессором ВМ86/ВМ88, а также К580ВМ80. Он предназначен для повышения производительности систем на базе МПК К1810 благодаря освобождению ЦП от управления вводом — выводом и осуществлению высокоскоростных пересылок с прямым доступом в память (ПДП-пересылок). К основным функциям СПВБ ВМ89 относятся инициализация и управление контроллерами внешних устройств, обеспечение гибких и универсальных пересылок с ПДП. Процессор может работать параллельно с ЦП одновременно по двум каналам ввода — вывода, каждый из которых обеспечивает скорость передачи информации до 1,25 Мбайт/с при стандартной тактовой частоте 5 МГц. Организация связи СПВБ с центральным процессором через память повышает гибкость взаимодействия и облегчает создание модульного программного обеспечения, что повышает надежность разрабатываемых систем.
Процессор ВМ89 имеет два индентичных канала ввода — вывода, каждый из которых содержит пять 20-битовых, четыре 16-битовых и один 4-битовый регистр. Взаимодействие каналов при параллельной работе осуществляется под управлением встроенной логики приоритетов. Процессор обеспечивает 16-битовую шину данных для связи с ОЗУ и портами ввода — вывода. Шина адреса имеет 20 линий, что позволяет непосредственно адресоваться к памяти емкостью до 1 Мбайт. Для экономии числа выводов БИС младшие 16 адресных линий мультиплексированы во времени с линиями данных и составляют единую локальную шину адреса/данных. Четыре старшие адресные линии аналогично мультиплексированы с линиями состояния СПВБ. Чтобы сигналы этих линий можно было использовать в МПС, их обязательно демультиплексируют либо с помощью тех же внешних схем, которые используются ЦП (в местной конфигурации), либо с помощью независимых схем (в удаленной конфигурации).
Система команд СПВБ ВМ89 содержит 53 мнемокода, причем возможности и набор команд оптимизированы специально для гибкой, эффективной и быстрой обработки данных при вводе — выводе. СПВБ позволяет сопрягать 16- и 8-битовые шины и периферийные устройства. При использовании ВМ89 в удаленном режиме пользователь программно может определить различные функ ции шины СПВБ, легко сопрягая ее со стандартной шиной Multibus.
Предельно допустимые условия эксплуатации БИС К1810ВМ89: температура окружающей среды 0...70 °C, напряжение на любом выводе относительно корпуса —0,3... + ? В. Основные характеристики по постоянному току приведены в табл. 4.1.
min
max
Напряжение "0" на входе, В
-0,5
+0,8
Напряжение "1" на входе, В
2,0
6,0
Напряжение "0" на выходе, В
—
0,45
1=2,0 мА
Напряжение "1" на выходе, В
2,4
—
I=-0,4 МА
Ток источника питания, мА
—
350
Т=25 С
Ток утечки на входах, мкА
-
±10
Ub*=5 В
Ток утечки на выходах, мкА
—
±10
V,4&^ Uвых^
< 5 В
Напряжение "0" на входе
-0,5
+0,6
тактовой частоты, В
Напряжение ”1" на входе
3,5
6,0
тактовой частоты, В
Емкость входа (для всех вы-
-
10
Т=1МГЦ
водов, кроме ADO - AD15,
BQ/QT), пФ
Емкость входа/выхода AD0 -
-
20
±=1МГц
Таблица 41
Параметр
Значение параметра Условия
измерения
AD15, BQ/QT, пФ
Назначение выводов БИС К1810ВМ89
AD15 — AD0 — входы/выходы для формирования адресов и передачи данных. Функции этих линий задаются сигналами состояния до S2, SI, S0 Линии находятся в высокоомном состоянии после общего сброса и тогда, когда шина не используется. Линии AD15 — AD8 формируют стабильные (не мультиплексированные) сигналы при пересылках на 8-битовую физическую шину данных и мультиплексируются с данными при пересылках на 16-битовую физическую шину данных (рис. 4.1).
A19/S6, A18/S5, A17/S4, A16/S3 — выходы для формирования четырех старших разрядов адресов и сигналов состояний. Сигналы адресов формируются в течение первой части цикла шины (Т1), в остальной части цикла активны сигналы состояний, которые кодируются следующим образом: S6 = S5=1, что означает ПДП-пересылку; S4 = 0, что означает ПДП-пересылку; S4 = l — цикл шины без ПДП; S3 = 0 — работает канал 1; S3=l—работает канал 2. После общего сброса и при отсутствии обращений к шине эти линии находятся в высокоомном состоянии.
ВНЕ— выходной сигнал разрешения старшего байта шины данных. Сигнал низкого (активного) уровня формируется процессором, когда байт должен передаваться по старшим линиям D15 — D8. После общего сброса и при отсутствии
Рис. 4.1. Условное графическое обозначение АСП ВМВ9Рис. 4.1. Условное графическое обозначение АСП ВМВ9обращений к шине этот выход находится в высокоомном состоянии. Сигнал ВНЕ (в отличие от аналогичного сигнала процессоров ВМ86 и ВМ87) может не фиксироваться в фиксаторе адреса, так как он не мультиплексирован с другим сигналом.
Рис. 4.1. Условное графическое обозначение АСП ВМВ9
Рис. 4.1. Условное графическое обозначение АСП ВМВ9
S2— SO — выходы для кодирования состояния ВМ89, определяющие действия процессора в каждом цикле работы с шиной. Они кодируются следующим образом: S2S1 80 = 000 — выборка команды из адресного пространства ввода — вывода; 001 — чтение данных из адресного пространства ввода — вывода; 010 — запись данных в адресное пространство ввода — вывода; 100 — выборка команды из системного пространства адресов; 101 — чтение данных из системного пространства адресов; НО — запись данных в системное пространство адресов; 111 — пассивное состояние. Код ОН —не используется. С помощью этих сигналов контроллер шины и арбитр шины форми
руют команды управления памятью и устройствами ввода — вывода. Сигналы формируются в такте Т4 предыдущего цикла, определяя начало нового цикла. По окончании цикла шины в такте ТЗ или TW сигналы возвращаются в пассивное состояние. После общего сброса и при отсутствии обращений к шине вы
ходы 82, 81, 80 находятся в высокоомном состоянии.
READY — входной сигнал готовности, поступающий от адресуемого устройства, которое оповещает СПВБ о том, что оно готово к пересылке данных. Сигнал синхронизуется в тактовом генераторе К1810ГФ84.
LOCK — выходной сигнал монополизации (блокировки) системной шины. Используется в многопроцессорных системах и подается на одноименный вход арбитра шины К1810ВБ89, запрещая доступ к системной шине другим процессорам. Сигнал формируется установкой соответствующего разряда регистра управления канала либо командой TSL. После общего сброса и при отсутствии обращений к шине выход LOCK находится в высокоомном состоянии.
RESET — входной сигнал общего сброса (начальной установки) останавливает любые действия СПВБ и переводит его в пассивное состояние до получения сигнала запроса готовности канала.
CLK — вход для подачи импульсов синхронизации от генератора тактовых импульсов К1810ГФ84.
СА — входной сигнал запроса готовности канала. Используется центральным процессором для инициализации СПВБ и определения задания каналам. По срезу сигнала СА опрашивается состояние входа SEL.
SEL — входной сигнал, который по первому (после общего сброса) сигналу СА определяет статус (ведущий/ведомый) СПВБ и запускает последовательность инициализации. При поступлении последующих сигналов СА сигнал SEL определяет номер канала (1 или 2), которому предназначено сообщение от ЦП.
DRQ1, DRQ2 — входы запросов прямого доступа к памяти от внешних устройств. Сигналы на этих входах сигнализируют СПВБ, что внешнее устройство готово к обмену данными с использованием канала 1 или 2 соответственно.
RQ/GT — входной/выходной сигнал запроса/предоставления шины, по которому осуществляется диалог, необходимый для арбитража шины между СПВБ и ЦП в местной конфигурации или между двумя СПВБ в удаленной конфигурации.
SINTR1, SINTR2 — выходные сигналы запросов прерываний от каналов 1 и 2 соответственно. Обычно они передаются на вход ЦП через контроллер прерываний К1810ВН59А. Используются для сигнализации о том, что произошли задаваемые пользователем (программистом) события.
ЕХТ1, ЕХТ2 — входы сигналов внешнего окончания прямого доступа для каналов 1 и 2 соответственно. Они вызывают окончание текущей ПДП-пере- сылки в канале, который запрограммирован для анализа окончания ПДП по внешнему сигналу.
Структура СПВБ
Внутренняя структура СПВБ подчинена его основному назначению — выполнять пересылки данных без непосредственного вмешательства ЦП, который связывается с СПВБ только для инициализации и выдачи задания на обработку. В обоих случаях ЦП предварительно готовит необходимое сообщение в памяти и затем с помощью сигнала запроса готовности канала активизирует СПВБ ВМ89 на выполнение действий, определенных в сообщении. С этого момента СПВБ работает независимо от ЦП. В процессе выполнения задания или по его завершении СПВБ может связаться с ЦП с помощью сигнала запроса прерывания.
Процессор может обращаться к памяти и устройствам ввода — вывода (УВВ), размещенным в системном пространстве адресов емкостью 1 Мбайт или в пространство ввода — вывода емкостью 64 Кбайт (рис. 4.2). Хотя СПВБ располагает только одной физической шиной данных, удобно полагать, что в системное пространство он обращается по системной шине (СШ) данных,
Рис. 4.2. Два пространства адресов процессоров ввода - выводаРис. 4.2. Два пространства адресов процессоров ввода - выводаа в пространстве ввода — вывода по шине ввода — вывода (ШВВ) данных. Различие между этими двумя шинами состоит в том, что СШ управляется сигналами чтения и записи в память, а ШВВ — сигналами чтения (ввода) и записи (вывода) в УВВ. Таким образом, устройства ввода — вывода, размещенные в системном пространстве, оказываются отображенными на память (реагируют на 20-битовые адреса, закрепленные за ними по командам чтения и записи в память), а память, размещенная в простран-
Рис. 4.2. Два пространства адресов процессоров ввода - вывода
Рис. 4.2. Два пространства адресов процессоров ввода - вывода
стве ввода — вывода,— отображенной на УВВ (адресуемой 16-битовыми адресами и реагирующей на команды чтения и записи в УВВ).
Указанные шины функционируют по-разному, в зависимости от конфигурации, в которой используется СПВБ. В местной конфигурации (рис. 4.3, а) СПВБ использует СШ и ШВВ совместно с центральным процессором. Арбитраж по предоставлению шины конкретному процессору осуществляется сигналом запроса/предоставления RQ/GT. В удаленной конфигурации, простейший вариант которой изображен на рис. 4.3, б, СПВБ безраздельно использует ШВВ, она является его локальной шиной. Доступ к СШ обеспечивается конкретному процессору путем арбитража с привлечением арбитра шин К1810ВБ89.
а)
б)
Рис. 4.3. Использование СИ и ШВВ е местной (а) и удаленной (б) конфигурации
Структура процессора ввода — вывода (рис. 4.4) включает несколько функциональных узлов, соединенных 20-битовой внутренней шиной для получения максимальной скорости внутренних пересылок. (В отличие от 16-битовой внешней шины по внутренней шине осуществляются пересылки как 16-, так и 20-битовых значений адресов и данных.)
Общее устройство управления (УУ) координирует работу функциональных узлов процессора. Все операции (выполнение команд, циклы пересылки с ПДП, ответы на запрос готовности канала и др.), выполняемые СПВБ, распадаются на последовательности элементарных действий, которые называются внутренними циклами. Цикл шины, например, составляет один внутренний цикл; выполнение команды может потребовать нескольких внутренних циклов. Всего насчитывается 23 различных типа внутренних циклов, каждый из которых занимает от двух до восьми тактов CLK (без учета возможных состояний ожидания и времени на арбитраж шин). Общее УУ указывает для каждой операции, какой функциональный узел будет выполнять очередной внутренний цикл. Например, когда оба канала активны, общее УУ определяет, какой канал
имеет более высокий приоритет, либо, если их приоритеты равны, осуществляет управление попеременной работой каналов. Кроме того, общее УУ осуществляет начальную инициализацию процессора, для чего используется программно недоступный регистр ССР — указатель блока параметров.
Рис. 4.4. Укрупненная структурная схема СПВБ ВМ8Э
Арифметическо-логическое устройство (АЛУ) может выполнять беззнаковые арифметические операции над 8- и 16-битовыми двоичными числами, включающими сложение, инкремент и декремент. Результатом арифметических операций может быть 20-битовое число. Логические операции, включая И, ИЛИ, НЕ, могут выполняться над 8- и 16-битовыми операндами.
Регистры сборки — разборки участвуют при передаче всех данных, поступающих в процессор. Когда разрядность источника и приемника данных различаются, процессор использует эти регистры для обеспечения максимальной скорости передачи. Например, при пересылке с ПДП из 8-битового УВВ в 16-битовую память процессор затрачивает два цикла шины на прием двух последовательных байтов, «собирает» их в одно 16-битовое слово и передает его в память за один цикл шины. При передаче 16-битовых данных 8-битовому приемнику осуществляется его предварительная «разборка» на байты. Таким образом, наличие регистров сборки/разборки экономит циклы шины.
Очередь команд используется для повышения производительности процессора при выборке их из памяти. Во время выполнения программы каналом команды выбираются из памяти словами, размещенными по четному адресу
Команда ККоманда Y
I Чет .Начет! Чвт .Нечет! Чвт .Начат!
Выборка 1 Выборка^ 2 Выборка 4
—1—
Очередь
3
Рис. 4.5. Выборка команд с использованием очереди
младшего байта. На одну такую выборку затрачивается один цикл шины. Этот процесс показан на рис. 4.5. Если последний байт текущей команды X приходится на четный адрес, то следующий за ним байт из нечетного адреса (он
является первым байтом команды Y) извлеченного слова сохраняется в очереди. Когда канал начинает выполнять команду Y, этот байт из очереди извлекается значительно быстрее, чем из памяти. Таким образом, очередь команд размерностью всего один байт позволяет процессору при выборке команд всегда читать слова, что снижает загрузку шины, увеличивая ее пропускную способность и производительность СПВБ.
В двух исключительных случаях при извлечении команд процессор читает из памяти байты, а не слова. Во-первых, когда команда передачи управления (например, JMP, JNZ, CALL) указывает на нечетный адрес, по которому размещена команда, требующая исполнения. В этом случае первый байт команды извлекается отдельно. Во-вторых, когда встречается 6-байтовая команда LPDI, которая извлекается в следующем порядке: байт — слово — байт — байт — байт, и очередь не используется. Когда используется 8-битовая шина для передачи команд процессору, читаются только байты, а очередь не используется и каждая выборка требует одного цикла шины.
Блок шинного интерфейса (ВШИ) осуществляет управление и определяет циклы шины, связанные с выборкой команд и передачей данных между СПВБ и памятью или УВВ. Каждое обращение к шине связано с битом регистра этикеток (регистр TAG находится в каждом канале), который указывает, к какому пространству адресов (системному или ввода — вывода) относится обращение. БШИ выставляет тип цикла шины (выборка команды из пространства адресов ввода — вывода, запись данных в память системного пространства и т. д.) в виде кода состояния на выходах S2—SO (табл. 4.2). Системный контроллер К1810ВГ88 декодирует этот код, выбирая нужную шину (СШ/ШВВ) и формируя соответствующую команду (чтение, запись и т. д.). Затем БШИ определяет соотношение между логической и физической шириной СШ и ШВВ. Физическая ширина каждой шины фиксирована в системе и сообщается процессору при его инициализации.
ООО
Выборка команды
из пространства ввода - вывода
001
Чтение данных из
пространства ввода - вывода
010 011
Запись данных в Не используется
пространство ввода - вывода
100
Выборка команды
из системного пространства
101
Чтение данных из
системного пространства
110
Запись данных в
системное пространство
111
Пассивное состояние
Таблица 4.2
Код состояния
S2S1S0
Тип цикла шины
В местной конфигурации обе шины (СШ и ШВВ) должны иметь одинаковую ширину: 8 или 16 бит, что определяется типом ЦП (ВМ86/ВМ88). В удаленной конфигурации СШ процессора ввода — вывода должна иметь ту же физическую ширину, что и СШ центрального процессора системы. Ширина ШВВ процессора ввода — вывода может быть выбрана независимо. Если в пространстве ввода — вывода используются какие-либо 16-битовые УВВ, должна использоваться 16-битовая ШВВ. Если в пространстве ввода — вывода все УВВ 8-битовые, то может быть выбрана 8- либо 16-битовая ШВВ. Преиму-
щество имеет 16-битовая ШВВ, поскольку она позволяет подключать к системе дополнительные 16-битовые УВВ, а также обеспечивает более эффективную выборку команд программы, размещенной в пространстве ввода — вывода.
Для ПДП-пересылки в программе канала задается логическая ширина СШ и ШВВ независимо для каждого канала. Логическая ширина 8-битовой физической шины может быть только 8-битовой, а для 16-битовой физической шины логическая ширина может быть задана 8- либо 16-битовой. Это позволяет обслуживать 8- и 16-битовые УВВ с помощью одной 16-битовой физической шины. В табл. 4.3 перечислены все возможные соотношения между логической и физической шириной СШ и ШВВ в местной и удаленной конфигурации.
Таблица 4.3
Конфигурация
Ширина СШ физическая:логическая
Ширина ШВВ физическая:логическая
Meстная
8:8 16:(8/16)
8:8 16:(8/16)
Удаленная
8:8
16:(8/16) 8:8
16:(8/16)
8:8
16:(8/16)
16:(8/16) 8:8
Логическая ширина шины учитывается только при ПДП-пересылках. Извлечение команд, а также запись и чтение операндов осуществляются словами или байтами только в зависимости от физической ширины шины.
Наряду с управлением пересылками команд и данных блок шинного интерфейса осуществляет арбитраж локальных шин. В местной конфигурации ВШИ использует линию RQ/GT для запроса шины у ЦП и ее возвращения после использования, в удаленной конфигурации — для координации совместного использования локальной ШВВ с другими процессорами ВМ89 или локальным ЦП ВМ86, если они имеются. Арбитраж СШ в удаленной конфигурации осуществляется арбитром К1810ВБ89. В тех случаях, когда необходимо монополизировать СШ, блок щинного интерфейса формирует нулевой активный сигнал LOCK. Это бывает в двух случаях: 1) когда канал выполняет команду TSL (Test and Set Lock — проверка с монополизацией); 2) когда в программе канала есть указание активизировать LOCK на время ПДП-пересылки.
Структура каналов процессора ввода — вывода. Процессор ВМ87 (см. рис. 4.4) включает два идентичных канала. Каждый канал может осуществлять ПДП-пересылку, выполнять программу, отвечать на запросы готовности или простаивать. Эти действия каналы могут выполнять независимо друг от друга, что позволяет рассматривать СПВБ ВМ89 как два уАройства: канал 1 и канал 2. Каждый канал состоит из двух основных частей: устройства управления вводом — выводом и группы регистров, часть которых используется в программах, а часть из них является программно-недоступными.
Устройство управления вводом — выводом управляет действиями канала во время ПДП-пересылки. При выполнении синхронной пересылки оно ожидает поступления сигнала синхронизации на входе DRQ, прежде чем выполнить очередной цикл чтения — записи. Когда ПДП-пересылка должна заканчиваться по внешнему сигналу, устройство следит за его появлением на входе EXT. Между циклами чтения и записи (пока данные находятся в СПВБ) канал
может производить подсчет числа переданных данных, перекодировать их и сравнить с заданным кодом. Основываясь на результатах этих действий, УУ вводом — выводом может прекратить ПДП-пересылку.
В процессе выполнения программы по команде SINTR устройство генерирует запрос прерывания в ЦП. Часто запрос используется для того, чтобы сообщить ЦП о завершении программы канала.
Регистры канала используются СПВБ как при ПДП-пересылках, так и при выполнении программы. Все регистры канала (рис. 4.6.), за исключением TAG, непосредственно принимают участие в указанных процессах. Использование каждого регистра описано в табл. 4.4.
Таблица 4.4
Регистр
Использование
в программепри ПДП-пересылке
GA
Общего назначения ихи базовый
Указатель источника или приемника
GB
То хе
Указатель приемника или источника
GC
> >
Указатель таблицы перекодировки
ТР
Указатель команд
Указатель причины окончания
рр
Базовый
Не используется
IX
Общего наэйачения или индексный
То хе
ВС
Общего назначения
Счетчик байтов
НС
Общего назначения
Участвует в маски-
или маскированного сравнения
рованном сравнении
сс
Ограниченного
Определяет условия
использования
пересылки
Регистр общего назначения GA служит в большинстве команд в качестве операнда. В качестве базового он используется для указания адреса операнда, находящегося в памяти. Перед началом ПДП-пересылок программа канала загружает в GA адрес источника или приемника данных.
Регистр общего назначения GB функционально взаимозаменяем с регистром GA. Если GA загружен адресом источника ПДП-пересылки, то GB должен быть загружен адресом приемника, и наоборот.
Регистр общего назначения GC используется программой канала как операнд или базовый регистр. Используется при выполнении ПДП-пересылок, когда осуществляется перекодировка данных. В этом случае, перед началом пересылки, программа канала загружает в GC начальный адрес таблицы перекодировки. В процессе пересылки его содержимое не изменяется.
Указатель команд ТР загружается начальным адресом программы в процессе инициализации канала общим УУ на выполнение задания. Во время выполнения программы (задания от ЦП) ТР играет роль счетчика команд. Так как ВМ89 не содержит указателя стека и не может выполнять стековых операций, возврат из подпрограммы осуществляется путем загрузки в ТР адреса возврата, который запоминается в памяти по команде CALL. Указатель задания является полностью программно-доступным (в отличие от регистра IP в ВМ86) и может использоваться программой как регистр общего назначе-
TAG 0 1 2 3TAG 0 1 2 3Рис. 4.Б. Регистры канала процесРис. 4.Б. Регистры канала процессора ввода - выводасора ввода - вывода1587О
TAG 0 1 2 3
TAG 0 1 2 3
Рис. 4.Б. Регистры канала процес
Рис. 4.Б. Регистры канала процес
сора ввода - вывода
сора ввода - вывода
|00011110|1010110 11
Маска || Сравниваемое
J значение
I X XX О 1 1 О X1
Замаскированное значение
Рис. 4.7. Использование регистра МС для маскированного сравнения
ния или базовый. Однако делать это не рекомендуется, так как программа становится трудной для понимания.
Указатель блока параметров РР загружается общим УУ начальным адресом блока параметров в процессе инициализации канала на выполнение задания. В подготовленном сообщении расположение блока параметров в памяти определяет центральный процессор (см. табл. 4.4). Программа канала не может изменить содержимое регистра РР. Его удобно использовать как базовый для пересылки данных в блок параметров. Для ПДП-пересылок регистр РР не используется.
Индексный регистр IX используется программой канала как регистр общего назначения. Он может также использоваться в качестве индексного регистра для адресации операндов, находящихся в памяти. В качестве разновидности индексной адресации, с помощью IX можно задать индексную адресацию с автоинкрементом, которая очень удобна при обработке массивов данных. Для ПДП-пересылок регистр IX не используется.
Счетчик байтов ВС в программе канала служит регистром общего назначения. При ПДП-пересылке подсчитывает число пересланных байтов путем декрементирования значения, загруженного перед ее началом. Если пересылка должна заканчиваться по заданному числу пересланных байтов, то УУ вводом — выводом закончит ее, когда содержимое ВС станет равным нулю.
Регистр маскированного сравнения МС в программе канала может использоваться как регистр общего назначения или для маскированного сравнения. При ПДП-пересылке используется для маскированного сравнения. Маскированное сравнение позволяет сравнить выделенные разряды байта (операнда команды или пересылаемого байта) с заданным заранее значением. Для этого в старший байт МС загружается маска, выделяющая интересующие разряды, а в младший — сравниваемое значение (рис. 4.7). В программе, при выполнении команды условного перехода по маскированному сравнению (либо при ПДП-пересылке), определенный в ней операнд (либо пересылаемый байт) сравнивается с замаскированным значением.
Регистр управления каналом СС используется в основном при ПДП-пере- сылках. Он служит для определения условий пересылки и указывает способ ее окончания. Структура и обозначение управляющих полей СС представлены на рис. 4.8. Пять старших полей определяют условие ПДП-пересылки:
F (пересылка) определяет, откуда и куда пересылаются данные;
TR (перекодировка) — следует ли пересылаемые данные перекодировать;
SYN (синхронизация) — способ синхронизации пересылки;
S (источник) — в каком регистре (GA или GB) находится адрес источника;
L (монополизация) — следует ли активизировать сигнал во время пересылки.
Четыре младших поля задают способ окончания пересылки:
TS указывает, что пересылка состоит в передаче только одного данного;
ТХ — что пересылка должна заканчиваться по внешнему сигналу (EXT);
ТВС — по нулю в счетчике байтов (ВС);
ТМС — по результатам маскированного сравнения.
15 14 13 12 11 10 Э В 7 6 5 4 3 2 1 0СС: I F |тн| SYN | S | L | Т |TS| ТХ | ТВС | ТМС |
Рис. 4.8. Регистр управления каналом
Поле С не используется для ПДП-пересылок, а служит удобным средством управления приоритетом программы канала.
Таблица 4.5
Управляющее поле
Код ПОЛЯ
Условие ПДП-пересылки
F (функция
00
Из порта ввода в порт вывода
пересылки)
01
Из памяти в порт вывода
10
Из порта ввода в память
11
Из памяти в память
TR (перекодировка)
0
Нет перекодировки
1
Есть перекодировка
SYN (синхронизация)
00
Пересылка асинхронная
01
Синхронизация от источника
10
Синхронизация от приемника
11
Зарезервированный код
S (источник)
0
Адрес источника в регистре GA
1
Адрес источника в регистре GB
L (монополизация)
0
Сигнал LOCK не активен
1
Сигнал LOCK активен
С (приоритет
0
Обычный приоритет программы
программы)
1
Повышенный приоритет программы
TS (одиночная
0
Пересылка не одиночная
пересылка)
1
Пересылка одного данного
ТХ (окончание по
00
Не внешнее окончание
внешнему сигналу)
01
По сигналу EXT со смещением 0
10
По сигналу EXT со смещением 4
11
По сигналу EXT со смещением 8
ТВС (окончание по
00
Окончание не по нулю в счетчике
нулю в счетчике)
01
Окончание по (ВС)=0 со смещением 0
10
Окончание по (ВС)-О со смещением 4
11
Окончание по (ВС)=0 со смещением 8
ТМС (окончание по
000
Не по результатам маскированного
результатам маски-
сравнения
рованного сравне-
001
По совпадению со смещением 0
НИЯ)
010
По совпадению со смещением 4
011
По совпадению со смещением 8
100
Не по результатам маскированного
сравнения
101
По несовпадению со смещением 0
110
По несовпадению со смещением 4
111
По несовпадению со смещением 8
Рис. 4.9. Использование смене- имя по окончании ПДП-пересылкиРис. 4.9. Использование смене- имя по окончании ПДП-пересылкиКодирование всех управляющих полей регистра СС приведено в табл. 4.5. Кодирование полей ТХ, ТВС и ТМС позволяет выбрать смещение 0, 4 или 8 по окончанию ПДП-пересылки. Выбранное значение добавляется к содержимому счетчика команд ТР и определяет три различных точки программы, в которые передается управление после окончания пересылки (рис. 4.9). Окончание по одиночной пересылке TS = 1 всегда приводит к нулевому смещению.
Рис. 4.9. Использование смене- имя по окончании ПДП-пересылки
Рис. 4.9. Использование смене- имя по окончании ПДП-пересылки
PSW: |TJkf[TQkQjcItb^^
Рис. 4.10. Регистр байта-состояния программы канала
В регистре TAG каждый бит соответствует одному из четырех регистров: GA, GB, GC и ТР (см. рис. 4.6). Когда они используются в качестве базовых или указателей (см. табл. 4.5), то бит TAG определяет, к какому пространству адресов (системному или ввода — вывода) относится адрес, размещенный в соответствующем регистре. Значение бита TAG = 0 показывает, что адрес относится к системному пространству (20-битовый адрес); TAG=1 указывает на пространство ввода — вывода (16-битовый адрес). Общее УУ устанавливает или сбрасывает бит регистра TAG, соответствующий ТР, в зависимости от того, в каком адресном пространстве размещена программа канала.
Когда GA, GB и GC используются в качестве регистров общего назначения, соответствующий бит регистра TAG устанавливается по-разному при выполнении различных групп команд (см. табл. 4.5).
Восьмибитовый регистр PSW, имеющийся в каждом канале, хранит слово- состояние программы. В регистр PSW заносится информация о текущем состоянии канала (рис. 4.10). Логическая ширина шины приемника равна 8 бит при D = 0 и 16 бит при D = 1. Логическая ширина шины источника равна 8 бит при 5 = 0 и 16 бит при 5 = 1. Когда канал выполняет программу, бит ТВ устанавливается в единицу. При управлении выдачей запроса прерывания IC устанавливается в нуль, когда прерывание запрещено, и в единицу, когда оно разрешено. Если канал выдал запрос прерывания, то 15 = 1, если не выдал — 15 = = 0. Бит В = 1 задает режим предельной загрузки шины. Бит ХЕ=1, когда канал выполняет ПДП-пересылку. Бит Р задает приоритет канала. Эта информация позволяет в любой момент приостановить работу канала, записав значение PSW и ТР в память, а затем возобновить его работу, считав PSW и ТР.
Функционирование СПВБ
Работа СПВБ может начаться только после того, как он будет инициализирован. Для этого ЦП должен подготовить необходимое сообщение, после чего запустить инициализацию путем выдачи сигнала СА. Инициализация включает две стадии: начальную инициализацию СПВБ и инициализацию каналов СПВБ, т. е. выдачу команды каналам.
Обычно первая после инициализации команда предписывает СПВБ начать выполнение программы канала. В дальнейшем, управляя действиями каналов, ЦП подготавливает сообщение с командами приостановки и возобновления работы канала, начала выполнения другой программы и т. д.
Функционирование СПВБ имеет свои особенности в зависимости от способа его включения в систему. В местной конфигурации он использует шины совместно с ЦП (см. рис. 4.3, а), управление доступом осуществляется по линии RQ/GT. В удаленной конфигурации СПВБ имеет отдельную шину ввода — вывода, которую он может использовать монопольно или совместно с другими СПВБ ВМ89, подключенными к этой шине: линия RQ/GT используется для управления доступом к ШВВ между ВМ89. Различие в использовании линии RQ/GT указывается при начальной инициализации.
Инициализация процессора ввода — вывода. Сообщение, которое готовит ЦП до начала инициализации СПВБ, формируется в виде связанного списка из четырех управляющих блоков: указателя конфигурации системы, конфигурации системы, управления каналами и параметров (рис. 4.11).
ККККИ+0 ♦ гККККИ+0 ♦ гПрограмма канала В-I (ТВ В)Программа канала В-I (ТВ В)Блок параметров канала В (РВ В )Блок параметров канала В (РВ В )ТВ В аед . YYYYY♦О ТВ В offset+ ВТВ В аед . YYYYY♦О ТВ В offset+ Вг* Программа канала 1
ККККИ+0 ♦ г
ККККИ+0 ♦ г
Программа канала В
-I (ТВ В)
Программа канала В
-I (ТВ В)
Блок параметров канала В (РВ В )
Блок параметров канала В (РВ В )
ТВ В аед . YYYYY♦О ТВ В offset+ В
ТВ В аед . YYYYY♦О ТВ В offset+ В
11(ТВ1)
ТВ 1 вед ТВ 1 of feetТВ 1 вед ТВ 1 of feetIKKKKKIIKKKKKIБлок параметров канала 1 (РВ 1)
ТВ 1 вед ТВ 1 of feet
ТВ 1 вед ТВ 1 of feet
IKKKKKI
IKKKKKI
I YYYYY1 Адреса загружаются в РР
ВуВПТсСнП LLLLL ♦ ОВуВПТсСнП LLLLL ♦ ОРВ1 аед РВ1 offsetРВ1 аед РВ1 offsetШШШШШ1ШШШШШ1РВ В eel PBB offРВ В eel PBB offШШШШШШ♦В ♦ 4 ♦ Б LLLLL* В♦ А ♦ С ♦ Е♦В ♦ 4 ♦ Б LLLLL* В♦ А ♦ С ♦ ЕБлок управления каналом 1 (СВ)Блок управления каналом 1 (СВ)Блок управления каналом В (СВ)Блок управления каналом В (СВ)
ВуВПТсСнП LLLLL ♦ О
ВуВПТсСнП LLLLL ♦ О
РВ1 аед РВ1 offset
РВ1 аед РВ1 offset
ШШШШШ1
ШШШШШ1
РВ В eel PBB off
РВ В eel PBB off
ШШШ
ШШШ
♦В ♦ 4 ♦ Б LLLLL* В
♦ А ♦ С ♦ Е
♦В ♦ 4 ♦ Б LLLLL* В
♦ А ♦ С ♦ Е
Блок управления каналом 1 (СВ)
Блок управления каналом 1 (СВ)
Блок управления каналом В (СВ)
Блок управления каналом В (СВ)
I LLLLL I Адрес загружаетсяI LLLLL I Адрес загружаетсяв ВМВЗв ВМВЗ
I LLLLL I Адрес загружается
I LLLLL I Адрес загружается
в ВМВЗ
в ВМВЗ
'ШН//Л soc~1 sssss ♦ о'ШН//Л soc~1 sssss ♦ оСВ зед СВ offsetСВ зед СВ offset♦В ♦ 4♦В ♦ 4Блок конфигурации системы (SCB)Блок конфигурации системы (SCB)
'ШН//Л soc~1 sssss ♦ о
'ШН//Л soc~1 sssss ♦ о
СВ зед СВ offset
СВ зед СВ offset
♦В ♦ 4
♦В ♦ 4
Блок конфигурации системы (SCB)
Блок конфигурации системы (SCB)
ISSSSS I
SCB вед SCB offsetSCB вед SCB offsetFFFFF+6 ♦ В ♦ А ♦С ♦ЕFFFFF+6 ♦ В ♦ А ♦С ♦ЕБлок указателя конфигурации системы (SCPB)Блок указателя конфигурации системы (SCPB)
SCB вед SCB offset
SCB вед SCB offset
FFFFF+6 ♦ В ♦ А ♦С ♦Е
FFFFF+6 ♦ В ♦ А ♦С ♦Е
Блок указателя конфигурации системы (SCPB)
Блок указателя конфигурации системы (SCPB)
Рис. 4.11. Структура сообщения для инициализации СПВБ и его каналов
Блок указателя конфигурации системы (SCPB) обязательно размещается с фиксированного адреса FFFF6H системной памяти и состоит из трех слов. Младший байт SYSBUS определяет физическую ширину системной шины:
SYSBUS=O, 8-битовая СШ;
SYSBUS = 1, 16-битовая СШ.
Следующие два слова содержат сегментный и относительный компоненты адреса блока конфигурации системы.
Блок конфигурации системы (SCB) может быть сформирован по любому адресу (SSSSS), но обязательно в системном пространстве. Младший байт SOC определяет физическую ширину шины ввода — вывода и режим использования линии RQ/GT:
SOC = 0,8-битовая ШВВ, стандартный режим;
SOC = 1, 16-битовая ШВВ, стандартный режим;
SOC = 2,8-битовая ШВВ, модифицированный режим;
SOC = 3,16-битовая ШВВ, модифицированный режим.
(Модифицированный режим линии RQ/GT используется для управления доступом несколькими процессорами ВМ89.)
Следующие два слова содержат сегментный и относительный компоненты адреса блока управления каналами.
Блок управления каналами (СВ) может быть сформирован по любому адресу (LLLLL), но обязательно в системном пространстве. Для каждого канала формируется свой блок: для канала 1 — с адреса LLLLL + 0; для канала 2— с адреса LLLL + 8.
7О
| Р | 0 | В | ICF | CF |
Рис. 4.12. Байт управления каналом
Первый байт CCW называется байтом управления каналом и имеет управляющие поля, представленные на рис. 4.12. Поле CF кодируется следующим образом:
CF = 000—модификация PSW;
CF = 001— запуск программы канала в пространстве ввода — вывода (TAG= 1);
CF = 010 не используется;
CF = 011 — запуск программы канала в системном пространстве (TAG = 0);
CF=100 не используется;
CF=101 — возобновление работы канала;
CF=110—приостановка работы канала;
CF = 111 — остановка работы канала.
Поле управления прерыванием 1CF кодируется следующим образом:
ICF = 00 не используется;
ICF = 01 — снять запрос прерывания, прерывание подтверждается;
ICF=10— разрешить прерывания;
ICF=11 — запретить прерывания.
Поле В = 1 устанавливает режим предела загрузки шины
Поле Р определяет приоритет канала.■
Второй байт BUSY определяет состояние канала:
BUSY = FFH — канал занят;
BUSY = OOH — канал свободен.
Следующие два слова содержат сегментный и относительный компоненты адреса блока параметров.
Блок параметров (РВ) может быть сформирован по любому адресу (ХХХХХ для канала 1, YYYYY для канала 2), но обязательно в системном пространстве. В первых двух словах блока содержатся сегментный и относительный компоненты начального адреса программы канала. Остальная часть РВ не ограничена по числу слов и служит для передачи исходных параметров программе канала.
Начальная инициализация СПВБ ВМ89 начинается после системного сброса по сигналу запроса готовности канала СА. Этот сигнал формируется с помощью дешифратора, подключенного к системной шине адреса ЦП, без использования линии АО. Когда ЦП выставит адрес AADR, выбранный для обращения к СПВБ, на выходе дешифратора сформируется сигнал СА. Значение адреса ADDR может быть выбрано произвольно. Каждый запрос готовности СА сопровождается выдачей сигнала SEL, для формирования которого используется линия АО системной шины адреса ЦП. Таким образом, адрес ADDR, выставленный ЦП, воспринимается как СА=1, SEL = 0, а адрес ADDR-j-l —как СА=1, SEL = 1. Сигнал SEL выполняет разные функции на двух стадиях инициализации. При инициализации, которая начинается по первому (после системного сброса) сигналу СА, значение SEL определяет статус СПВБ:
SEL = 0 назначает СПВБ ВМ89 ведущим шины, т. е. распоряжается шиной и предоставляет ее другим ВМ89 по сигналу запроса по линии RQ/GT;
SEL= 1 назначает ВМ89 ведомым, т. е. он получает шину от ЦП ВМ86 или
другого СПВБ ВМ89, выставляя сигнал запроса на линию RQ/GT.
При инициализации каналов СПВБ, которая начинается по второму и последующим сигналам СА (вплоть до перезапуска системы сигналом RESET), значение SEL определяет номер инициализируемого канала:
SEL = 0 — команда выдается в канал 1;
SEL=1 — команда выдается в канал 2.
Для выполнения начальной инициализации СПВБ программа ЦП должна выполнить следующие действия:
сформировать управляющие блоки SCPB и SCB;
установить в блоке СВ байт BUSY1=FFH, BUSY2 = 00H;
выдать сигнал СА, т. е. выполнить любую команду (обычно OUT), которая связана с выставлением адреса ADDR (если СПВБ определяется как ведущий) или ADDR + 1 (если СПВБ определяется как ведомый);
ожидать установки байта BUSY1 в нуль.
По срезу сигнала СА процессор ввода — вывода автоматически выполняет следующие действия:
вводит байт SYSBUS из адреса FFFF6H и настраивается на заданную ширину СШ;
формирует адрес SSSSS блока SCB из указателя, размещенного в FFFF8H и FFFFAH;
вводит байт SOC и SCB, определяя ширину ШВВ и режим линии RO/GT;
формирует адрес LLLLL блока СВ из указателя, размещенного в SSSSS и SSSSS + 2, и запоминает его в регистре СРР общего УУ;
устанавливает байт BUSY1 в нуль;
ожидает от ЦП следующего запроса готовности СА.
На этом заканчивается начальная инициализация СПВБ. При наличии в системе нескольких СПВБ центральный процессор инициализирует их по очереди, пользуясь той же процедурой инициализации и теми же областями памяти для блоков SCPB и SCB. Естественно, перед начальной инициализацией каждого СПВБ центральный процессор должен модифицировать блок SCB, так как каждый СПВБ должен иметь свой блок СВ управления каналами и, возможно, свои ширину ШВВ и статус.
В результате начальной инициализации СПВБ получает информацию о физической ширине СШ и ШВВ, запоминает адрес своего управляющего блока (LLLLL на рис. 4.11), определяет свой статус и переходит к режиму ожидания команды каналам, называемому режимом простаивания.
Для выполнения инициализации каналов СПВБ ЦП должен выполнить следующие действия.
Сформировать блоки СВ управления каналами. Поместить сегментный и относительный компоненты адреса блока параметров по адресу LLLLL+ 2, LLLLL + 4 для канала 1 или LLLLL + A, LLLLL + C для канала 2. Загрузить байт CCW1 командой для канала 1 или CCW2 командой для канала 2.
Подготовить блок параметров РВ для соответствующего канала. В первые два слова РВ поместить сегментный и относительный компоненты начального адреса программы канала. В последующую область — параметры, необходимые для выполнения программы. Параметры канала определяются пользователем и могут содержать либо значения параметров, либо их адреса в памяти (в виде сегментного и относительного компонентов).
Если байт CCW инициализируемого канала содержит команду «запустить» программу канала, то ЦП должен ожидать сброса байта BUSY, прежде чем перейти к следующему действию.
Выдать СА, т. е. выполнить любую команду, которая связана с выставлением адреса ADDR (если инициализируется канал 1) или ADDR + 1 (если инициализируется канал 2).
По срезу сигнала СА процессор ввода — вывода выполняет следующие действия:
анализирует сигнал SEL и устанавливает байт BUSY1=FFH (при SEL = 0) или BUSY2 = FFH (при SEL = 1);
загружает байт CCW1 из адреса LLLLL + 0 (при SEL = 0) или CCW2 из адреса LLLLL+ 8 (при SEL = 1);
декодирует байт управления каналом и начинает выполнять действия в соответствии с кодами управляющих полей.
Использование СПВВ в местной и удаленной конфигурации имеет свои особенности.
В местной конфигурации (рис. 4.13) процессоры ВМ86 и ВМ89 совместно используют общую шину, причем ВМ89 имеет статус ведомого и каждый раз, когда необходимо выполнить цикл шины, он запрашивает шину по линии
Рис. 4.13. Схема включения СПВБ в местной конфигурации
RQ/GT. Временные диаграммы, поясняющие использование сигнала RQ/GT для запроса/предоставления шины, приведены на рис. 4.14. Когда один из процессоров использует шину, другой переводит свои выходы состояния S2 — SO и адреса/данные в высокоомное состояние. Формирование шины управления, адреса и данных осуществляется схемой шинного интерфейса, состоящей из системного контроллера К1810ВГ88, трех фиксаторов адреса К580ИР82 и двух шинных формирователей К1810ВА86.
Рис. 4.14. Временная диаграмма сигнала RQ/GT
В местной конфигурации используется общий генератор тактовых импульсов К1810ГФ84, который осуществляет синхронизацию работы процессоров, формирует сигналы их начальной установки и синхронизирует сигналы го-
товиости от внешних устройств. Для формирования сигнала запроса готовности СА используется дешифратор адресных линий А15 — А1, срабатывающий по команде OUT ADDR или OUT ADDR + 1, где ADDR — адрес, выделенный для ВМ89.
Значение сигнала SEL формируется на адресной линии АО. Времена установки и удержания сигнала SEL по отношению к срезу сигнала СА показаны на рис. 4.15, а. Сигналы запросов прерываний с выходов SINTR1, SINTR2 процессора ВМ89 подаются на вход INTR ВМ86 через программируемый контроллер прерываний. На рис. 4.15,6 показана задержка сигналов SINTR1, SINTR2 по отношению к срезу сигнала СЕК.
Рис. 4.15. Временные диаграммы управляющих сигналов СПВБ (а) и его каналов (6 - г)
Сигналы запросов прямого доступа DMQ от внешних устройств, участвующих в ПДП-пересылках, подаются непосредственно на входы DRQ1, DRQ2 процессора ВМ89. Если устройств, запрашивающих ПДП, более двух, их выходы DMQ могут быть объединены на схеме ИЛИ. Аналогично, сигналы INT, требующие окончания ПДП-пересылки, подключаются ко входам ЕХТ1, ЕХТ2 процессора ВМ89. Времена установки сигналов DRQ1, DRQ2 и ЕХТ1, ЕХТ2 (рис. 4.15, в, г) устанавливаются такими, чтобы они распознавались устройством управления вводом — выводом в следующем такте СЕК.
Схема включения СПВБ в местной конфигурации, показанная на рис. 4.13, не является единственной. Поскольку ЦП ВМ86/ВМ86 имеет две линии RQ/GT, к нему можно непосредственно подключить более одного сопроцессора. На рис. 4.16 показана местная конфигурация, включающая сопроцессор ВМ87 и СПВБ ВМ89, которые совместно с ВМ86 используют общую шину. Так как линия RQ/GTO ВМ86 имеет приоритет по отношению к RQ/GT1, то при одновременных запросах шины от ВМ89 и ВМ87 предпочтение отдается процессору ВМ89. Но если в момент запроса шину использует сопроцессор ВМ87, то запрос ВМ89 не будет подтверждаться до освобождения шины ВМ87. На рис. 4.16 (штриховой линией) показан вариант включения второго СПВБ ВМ89, линия RQ/GT которого подключена к линии RQ/GT1 сопроцессора ВМ87. При таком включении запрос шины от ВМ89 заставит ВМ87 освободить ее после текущего цикла, если даже ему требуется еще несколько циклов шины для завершения текущей команды.
Достоинство использования СПВБ в местной конфигурации заключается в том, что появляется возможность осуществлять в системе «развитые» ПДП-пересылки при минимальных дополнительных затратах (достаточно подключить один ВМ89). Недостатки местной конфигурации — ограничение возможности параллельной работы ВМ86 и ВМ89. Действительно, параллельная обработка возможна только в те периоды времени, когда ВМ86 выполняет команды из своей очереди, не требующие использования шины.
Рис. 4.1Б. Схема включения четырехРис. 4.1Б. Схема включения четырехпроцессоров в местнойпроцессоров в местнойконфигурацииконфигурации
Рис. 4.1Б. Схема включения четырех
Рис. 4.1Б. Схема включения четырех
процессоров в местной
процессоров в местной
конфигурации
конфигурации
В удаленной конфигурации (рис. 4.17) СПВБ ВМ89 может использовать системную шину, которая является общей для всех процессорных модулей системы. Обращения ВМ89 к СШ управляются арбитром шины К1810ВБ89, связанным с арбитрами других модулей по шине арбитража. Кроме системной шины СПВБ всегда доступна локальная шина (ЛШ), которая физически отделена от СШ. В удаленной конфигурации СПВБ может обращаться к УВВ и памяти, подключенным к ЛШ, не «отвлекая» ВМ86, который использует для этого СШ. Наибольшая независимость СПВБ от ЦП достигается, когда программы канала размещены в локальной памяти (подключенной к ЛШ) и при извлечении команд ВМ89 также не отвлекает ВМ86. В системной памяти в этом случае 128
располагается только список из четырех управляющих блоков SCPB, SCB, СВ и РВ. Таким образом, в удаленной конфигурации можно реализовать действительно параллельную работу ВМ89 и ВМ86, что существенно увеличивает производительность системы.
Рис. 4.17. Схема включения СПВБ е удалвнной конфигурации
В схеме рис. 4.17 используется две схемы шинного интерфейса: для обращения СПВБ к СШ и к ЛШ. Схема шинного интерфейса СШ включает системный контроллер К1810ВГ88, три фиксатора адреса К580ИР82 и два шинных формирователя К1810ВА86. Схема шинного интерфейса ЛШ идентична, но содержит два фиксатора адреса, так как пространство адресов ЛШ соответствует пространству ввода — вывода и ограничено емкостью 64 К. Для разделения адресов системного пространства и пространства ввода — вывода используется сигнал CEN, который вырабатывается дешифратором адресов и поступает на управляющий вход системных контроллеров, как показано на рис. 4.17. Когда ВМ89 выставляет адрес, относящийся к пространству ввода — вывода, соответствующий контроллер обеспечивает доступ к ЛШ, поскольку на его входе AEN = 0. Когда ВМ89 требует доступа к СШ, то соответствующий контроллер предоставляет его только в том случае, если арбитр К1810ВБ89 сформирует сигнал AEN = 0. Арбитраж системной шины подробно описан в § 5.4.
Когда ВМ89 осуществляет ПДП-пересылку, требующую монопольного использования СШ (например, обращения к общей базе данных), сигнал
LOCK обеспечивает такую возможность. Временные характеристики сигнала LOCK представлены на рис. 4.18.
Включение СПВБ в удаленной конфигурации не исчерпывается схемой рис. 4.17. Она может быть дополнена удаленными процессорными модулями двух СПВБ, осуществляющими локальный арбитраж шин по линии RQ/GT (рис. 4.19) и обслуживающими УВВ, размещенные в пространстве ввода — вывода, недоступном ЦП. В свою очередь, ЦП может через схемы шинного интерфейса обращаться в пространство ввода — вывода, недоступное СПВБ.
На рис. 4.20 представлена схема с двумя процессорами ВМ86, где один СПВБ используется в местной конфигурации с одним ВМ86 и в удаленной по отношению к другому. Местный ВМ86 играет вспомогательную роль, выполняя всевозможные вычислительные программы для ВМ89, в том числе обработку прерываний без снижения производительности основного ВМ86.
Рис. 4.18. Временные характеристики сигнала LOCK
Независимо от того, в какой конфигурации используется СПВБ, формирование сигналов управления, адресов и данных соответствует той же структуре шины, что и у ЦП ВМ86/ВМ88. Временные диаграммы, описывающие работу ВМ89, приведены на рис. 4.21. Адреса мультиплексируются с данными на первых 16/8 линиях AD15 — AD0/AD7 — AD0. Адреса А19 — А16 мультиплексируются во времени с сигналами состояний S6 — S3. Во время циклов работы ВМ89 сигналы S4 и S3 определяют, какой из каналов выполняет ПДП-пере- сылку, а сигналы S6 S5 = 11 позволяют определить, что цикл шины выполняет ВМ89, а не ВМ86/ВМ87/ВМ88. Первые три сигнала состояния S2 — S0 используются контроллером К1810ВГ88 и арбитром К1810ВБ89 для управления ЛШ и СШ. ПДП-пересылка требует, по крайней мере, два цикла шины, каждый из которых занимает не менее четырех тактов (в случае необходимости добавляются такты ожидания TW). Подобный подход (с двумя циклами) значительно облегчает требования к временным соотношениям между сигналами.
На рис. 4.21 показаны также сигналы, вырабатываемые генератором тактовых импульсов К1810ГФ84 и контроллером К1810ВГ88 в режимах чтения и записи. При использовании 8-битовой физической шины данных сигналы А15 — А8 не мультиплексируются с данными при записи и не переходят в высокоомное состояние при чтении. В отличие от ВМ86, в котором сигнал ВНЕ мультиплексируется с сигналом S7, сигнал ВНЕ ВМ89 не мультиплексируется и не требует записи в фиксаторы адреса.
Рис. 4.19. Включение двух СПВБ в уделанной конфигурации
CH
СШ
Рис. 4.20. Использование вспомогательного ЦП ВМ86 в удаленной конфигурации
5. Система команд СПВВ
Система команд СПВВ включает 53 мнемокода. Используемые операнды могут быть размещены в пространстве адресов ввода — вывода, в системном пространстве адресов, в регистрах канала или непосредственно в команде. Типовой формат большинства команд процессора представлен на рис. 4.22. Любая команда содержит от двух до пяти байт, за исключением команд LPDI, MOV, MOVB, достигающих шести байт. Первые два байта определяют действия, которые должна выполнить команда. Байты с третьего по пятый
являются необязательными и присутствуют только тогда, когда для адресации используется смещение и/или операнд непосредственно представлен в команде.
Первый байт команды содержит следующие управляющие поля:
w указывает длину операнда: один байт при w = 0 и два байта при w = l;
АА задает режим адресации, т. е. способ формирования исполнительного
адреса ЕА операнда (рис. 4.23), размещенного в адресном пространстве:
АА = 00— адресация по базе;
АА = 01 — адресация по базе со смещением;
АА=10— адресация по базе с индексом;
АА=11 —адресация по базе с автоинкрементным индексом;
WB определяет число байтов смещения/данных:
WB = 00— нет байтов смещения/данных;
WB = 01 —один байт смещения/данных;
WB = 10— два байта смещения/данных;
WB = 11 —только в команде TSL;
Код R/B/P
Регистр
Бит
ООО
GA
0
001
GB
1
010
GC
2
011
ВС
3
100
ТР
4
101
IX
5
110
сс
6
111
мс
7
R/B/P определяет регистр или номер разряда байта (табл. 4.6), используемый в качестве операнда.таблица «.е
7О 7 О
|r/b/p|wb|aa| ы| | коп |м,м| I Смекение I ■ Смешние/Данные ■ I Данные I
Рис. 4.22. Типовой формат команд СПВВ
Второй байт команды содержит код операции (КОП) и поле ММ, которое определяет регистр канала, используемый в качестве базового при любом режиме адресации (рис. 4.23):
ММ = 00 — регистр GA,ММ = 10 — регистр GC,
ММ = 01 — регистр GB,ММ = 11 — регистр РР.
Байты смещения используются для формирования исполнительного адреса ЕА операнда при адресации по базе со смещением, а также в командах передачи управления — один байт для передач в пределах от +127 до —128 байтов или два байта для передач в пределах 64 Кбайт. Байты данных используются в командах, оперирующих непосредственными данными.
Полная система команд СПВБ представлена в табл. 4.7. Для каждой команды указано необходимое для ее выполнения число тактов в зависимости от типа операндов. Два значения указано для команд, которые используют операнд, размещенный в адресном пространстве: первое (меньшее) — для слов, расположенных по четному адресу и переведенных по 16-битовой шине; второе (большое) —для слов, расположенных по нечетному адресу с 16-битовой шииой или для произвольно расположенных слов с передачей по 8-битовой шине данных. т - « > и , 7
е МнемокодБайт 1(3) Байт 2(4) пв ТОперация
п/п
dst sro
1
MOV dst,зге
RRR00AA1 RRR00AA1 00000AA1 (00000AA1)
100000MM
100001MM
100100MM (110011MM)
2-3 8/12 2-3 10/16
reg*K>eml6 meml6«-reg
meml6«-neal6
4-6
18/28
2
MOVE dst, зге
RRR00AA0
100000MM
2-3
6
reg«-mem8
3
4
5
MOVI dst,его
MOVBI dst,зге
MOVP dst,sre
RRR00AA0 00000AA0 (00000AA0)
RRR10001 (data L) 00010AA1 (data L) RRR10001 (data L) 00010AA0 (data L) PPP00AA1
100001MM 100100MM (110011MM) 00110000 (data H) 010011MM (data H) 01110000
010011MM
100011MM
2-3
4-8
4
4-5
3
3-4
2-3
10 mem8«-reg
16 mem8«-mem8
9reg*datal6
12/18 meml6«-datal6
3reg*data8
16 mem8«-data8 19/27 prt-reg*mem24
6
LPD dst,sre
PPP00AA1
PPP00AA1
100110MM
100010MM
2-3
2-3
16/22 20/28
mem24*prt-reg prt-reg*mem32
7
8
LPDI dst,sre
ADD dst,sre
PPP10001 (data L) (data L)
RRR00AA1
000010MM (data H) (data H)
101000MM
6
2-3
12/16
11/15
prt-reg*data32 reg*reg+meml6
9
ADDB dst,sre
RRR00AA1
RRR00AA0
110100MM
101000MM
2-3 2-3
16/26 11
meml6*reg+mem8 reg*reg+mem8
10
11
12
ADDI dst,sre
ADDBI dst,sre
INC dst,sre
RRR00AA0 RRR10001 (data L) 00010AA1 (data L) RRR01000 (data L) 00001AA0 (data L) RRR00000
110100MM 00100000 (data H) 110000MM (data H) 00100000
110000MM
00111000
2-3
4
4-5
3
3-4 2
16
3
16/26
3
16
3
mem8*reg+mem8
reg*reg+datal6 meml6«-meml6+datal6 reg*reg+data8 mem8«-mem8+data8 reg*reg+l
13
INCB dst,sre
00000AA1
00000AA0
111010MM
111010MM
2-3 2-3
16/26 16
meml6*meml6+l mem8*mem6+l
14
DEC dst,sre
RRR00000
00111100
2
3
reg*reg-l
15
DECB dst,src
00000AA1
00000AA0
111011MM 111011MM
2-3 2-3
16/26 16
meal6«-meml6-l mem8«-mem8-l
16
AND dst,sre
RRR00AA1
101010MM
2-3
11/15
reg«-regAmeml6
17
ANDB dst,sre
RRR00AA1
RRR00AA0
110110MM
101010MM
2-3 2-3
16/26 11
meml6«-regAmeml6 reg«-regAmem8
18
ANDI dst,sro
RRR00AA0 RRR10001 (data L) 00010AA1 (data L)
110110MM 00101000 (data H) 110010MM (data H)
2-3
4
4-5
16
3
16/26
mem8«-regAmem8
reg*regAdatal6 meml6«-meiol6Adatal6
19
ANDBI dat,зге
RRR10000
00101000
(data L) 00010AA0
110010MM
3
3
reg*regAdata6
(data L)
3-<
I 16
вевВттепбAdataS
20
OR dat,arc
RRR00AA1
101001MM
2-3
11/15
reg«-regVBeal6
RRR00AA1
110101MM
2-3
16/26
вев16«-гепуаев16
21
ORB dat,arc
RRR00AA0
101001MM
2-3
11
reg* regv вевВ
RRR00AA0
110101MM
2-3
16
BeB8*regVBCB8
22
ORI dat,arc
RRR00001
00101000
(data L)
(data H)
4
3
reg*regvdatal6
00010AA1
110001MM
(data L)
(data H)
4-5
16/26
BeB16*BeB16Vdatal6
23
ORBI dat,arc
RRR10000
00100100
(data L) 00010AA0
110001MM
3
3
reg*regvdata8
(data L)
3-4
16
вев8*вев8У dataB
24
NOT dat
RRR00000
00101100
2
3
reg*reg
00000AA1
110111MM
2-3
16/26
вев!6*вев16
dat,arc
RRR00AA1
101011MM
2-3
11/15
гея*вётГ6
25
NOTB dat
00000AA0
110111MM
2-3
16
вев8*вев8
dat,arc
RRR00AA0
101011MM
2-3
11/15
reg*Bea8
26
SETB dat,bit
BBB00AA0
111101MM
2-3
16
mem8(blt)*l
27
CLR dat,bit
BBB00AA0
111110MM
2-3
16
BeB8(blt)*0
28
CALL addr,label
10001AA1 (dlap L)
100111MM
3-5
17/23
Вызов подпрограммы
29
LCALL addr,label
1O01QAA1
100111MM
Вызов удаленной
(dlap L)
(dlap H)
4-5
12/23
подпрограммы
30
JMP label
10001000
00100000
Безусловный переход
(dlap L)
3-4
3
на метку
31
LJMP label
10010001
00100000
Безусловный переход
(dlap L)
(dlap H)
4
3
на удаленную метку
32
JZ arc,label
RRR01000
01000100
По нулю в reg
(dlap L) 00001AA1
111001MM
3-4
5
По нулю в вев16
(dlap L)
3-5
12/16
33
LJZ arc,label
RRR10000
01000Г00
По нулю в reg на
(dlap L)
(dlap H)
4
5
удаленную метку
00010AA1
111001MM
По нулю в вев16 на
(dlap L)
(dlap H)
4-5
12/16
удаленную метку
34
JZB arc,label
00001AA0 (dlap L)
111001MM
3-5
12
По нулю в веш8
35
LJZB arc,label
00001AA0
110010MM
По не нулю в вевВ
(dlap L)
(dlap H)
4-5
12
на удаленную метку
36
JNZ arc,label
RRR01000
01000000
По не нулю в reg
(dlap L) 00001AA1
111000MM
3-4
5
По не нулю в вев16
(dlap L)
3-5
12/16
37
LJNZ arc,label
RRR10000
01000000
По не нулю в reg на
(dlap L)
(dlap H)
4
5
удаленную метку
00010AA1
111000MM
По не нулю в вев16
(dlap L)
(dlap H)
4-5
12/16
на удаленную метку
38
JNZB arc,label
00001AA0 (dlap L)
111000MM
3-5
12
По не нулю в вевВ
39
LJNZB arc,label
00010AA0
110000MM
По не нулю в вевВ
(dlap L)
(dlap H)
4-5
12
на удаленную метку
40
JMCE arc,label
00001AA0 (dlap L)
101100MM
3-5
14
По совпадению в вевВ
41
LJMCE arc,label
00010AA0
101100MM
По совпадению в вевВ
(dlap L)
(dlap H)
4-5
14
на удаленную метку
42
JMCNE arc,label
00001AA0
101101MM
По несовпадению в
(dlap L)
3-5
14
вевВ
43
LJMCNE arc,label
00010AA0
101101MM
По несовпадению в
(dlap L)
(dlap H)
4-5
14
вевВ на удаленную метку
44
JBT arc,bit,label
BBB01AA0 (dlap L)
101111MM
3-5
14
По blt-1 в вевВ
45
LJBT arc,bit,label
BBB10AA0
101111MM
По blt=l в вевВ
(dlap L)
(dlap H)
4-5
14
на удаленную метку
48
JNBT arc,bit,label
BBB01AA0 (dlap L)
101110MM
3-5
14
По blt=O в вевВ
arc
К п/пМнемокодБайт 1(3) Байт 2(4) пв ТОперацияК п/пМнемокодБайт 1(3) Байт 2(4) пв ТОперацияdstdst
К п/п
МнемокодБайт 1(3) Байт 2(4) пв ТОперация
К п/п
МнемокодБайт 1(3) Байт 2(4) пв ТОперация
dst
dst
В МнеиокодБайт 1(3) Байт 2(4) пв ТОперация
п/п
dst arc
47
LJNBT его,bit,label
BBB10AA0 (dlsp L)
101110MM (dlsp H)
4-5
14
По bit=0 в mem8 на удаленную метку
48
TSL dst,data,label
00011AA0
100101MM
Проверка и установка
(dataB)
(dlsp L)
4-5
14/16
с активизацией LOCK
49
WID src,dst
1SD00000
00000000
2
4
Ширина вины src,dst
50
XFER
01100000
00000000
2
4
Запуск ПДП
51
SINTR
01000000
00000000
2
4
Запрос прерывания
52
HLT
00100000
01001000
2
4
Останов программы
53
NOP
00000000
00000000
2
4
Пустая операция
В табл. 4.7 для исходного мнемокода указаны все возможные типы используемых операндов приемника dst и источника src, при этом приняты следующие обозначения:
reg — любой регистр общего назначения;
ptr-reg — регистр-указатель;
mem 8 — адрес 8-битовой переменной;
mem 16 — адрес 16-битовой переменной;
mem 24 — адрес 24-битовой переменной, в которой записан 20-битовый физический адрес;
mem 32 — адрес 32-битовой переменной, в которой записан указатель в форме сегментный компонент — относительный компонент;
data 8 — константа в диапазоне от 0 до 255;
data 16 — константа в диапазоне от 0 до 65 535;
label — метка, расположенная в интервале от —32 768 до +32 767 байт;
lab — метка, расположенная в интервале от —128 до +127 байт;
bit — константа в диапазоне от 0 до 7.
Если команда используется без операндов, они не указаны у соответствующего мнемокода.
Таблица 4.8
Число байтов команды
Ширина вины данных, бит
8
18
(1)
(2)
2
14
7
11
3
16
14
11
4
22
14
15
5
26
18
15
При определении времени выполнения программы в дополнение к указанному в табл. 4.7 времени Т необходимо учитывать время на извлечение команд, зависящее от длины (числа байтов) команды и физической ширины шины данных. Число байтов пВ для каждой команды указано в табл. 4.7, а время извлечения (такты CLK) — в табл. 4.8 для двух вариантов размещения команды в памяти (цифры 1 и 2). Внешние временные задержки, такие, как
время арбитража шины, возможные такты ожидания, естественно, не учтены в табл. 4.7 и 4.8, так как они зависят от специфики системы, в которой используется процессор ввода — вывода.
Вся система команд СПВБ (см. табл. 4.7) разбивается на пять групп: команды пересылок данных (мнемокоды 1—7), арифметические команды (8— 15), логические команды (16—27), команды передачи управления (28—47) и команды управления процессором (48—53).
Команды пересылок данных осуществляют пересылки байтов и слов между адресным пространством и регистрами канала, а также между адресными пространствами, загружают данные, непосредственно представленные в команде. Сюда относятся также специальные команды для загрузки адресов в регистры-указатели канала, которые оказывают влияние на установку битов регистра TAG.
Команды MOV dst.src, MOVB dst.src пересылают слово и байт соответственно из источника src в приемник dst. Если размерность источника меньше размерности регистра-приемника, «лишние» биты регистра-приемника заполняются знаковым расширением пересылаемого значения. На рис. 4.24 показано, как эти команды влияют на заполнение регистра-приемникагЭдесь Т — бит операнда источника, R — бит, заполняемый операндом источника, s — бит, заполняемый знаковым (самым старшим) битом операнда источника, X означает, что бит игнорируется, 1 — безусловную установку в единицу. Отметим, что когда в качестве приемника используется регистр-указатель, то соответствующий ему бит регистра TAG устанавливается командами пересылок в единицу. Это означает, что команду MOV можно использовать для загрузки адресов, относящихся к пространству ввода — вывода.
Регистр -приемникTAG 191587ОW-0 QJ F5SSSISSSSSSSSlRRRRRRRRlРегистр -приемникTAG 191587ОW-0 QJ F5SSSISSSSSSSSlRRRRRRRRlРегистр-источникTAG 191587ОL1J Гхххх 1 ХХХХХХХХ! ТТТТТТТТIРегистр-источникTAG 191587ОL1J Гхххх 1 ХХХХХХХХ! ТТТТТТТТI
Регистр -приемник
TAG 191587О
W-0 QJ F5SSSISSSSSSSSlRRRRRRRRl
Регистр -приемник
TAG 191587О
W-0 QJ F5SSSISSSSSSSSlRRRRRRRRl
Регистр-источник
TAG 191587О
L1J Гхххх 1 ХХХХХХХХ! ТТТТТТТТI
Регистр-источник
TAG 191587О
L1J Гхххх 1 ХХХХХХХХ! ТТТТТТТТI
W-l Llj ГэББЗIRRRRRRRRIRRRRRRRRIW-l Llj ГэББЗIRRRRRRRRIRRRRRRRRIfxj Гхххх1тттттттт)тттттттт1fxj Гхххх1тттттттт)тттттттт1
W-l Llj ГэББЗIRRRRRRRRIRRRRRRRRI
W-l Llj ГэББЗIRRRRRRRRIRRRRRRRRI
fxj Гхххх1тттттттт)тттттттт1
fxj Гхххх1тттттттт)тттттттт1
Рис. 4.24.Рис. 4.24.Влияние команд пересылок наВлияние команд пересылок назаполнение регистра-приемника и резаполнение регистра-приемника и ре
Рис. 4.24.
Рис. 4.24.
Влияние команд пересылок на
Влияние команд пересылок на
заполнение регистра-приемника и ре
заполнение регистра-приемника и ре
гистра-источника
Команда MOVP dst,src пересылает физические адреса переменных между регистрами-указателями и памятью. Когда источником src служит 20-битовый регистр-указатель, его содержимое вместе с его битом TAG запоминается в трех последовательных байтах памяти, начиная с адреса, указанного в dst. Когда источником является адрес памяти, то, начиная с указанного адреса, 20 бит засылается в регистр-указатель и один бит — в соответствующий разряд TAG. Обычно команда MOUP используется для сохранения и последующего восстановления регистров-указателей.
Команды LPD dst.src, LPDI dst.src преобразуют указатель, заданный в источнике в форме сегментный компонент — относительный компонент, в 20-битовый физический адрес и загружают его в приемник. Мнемокод LPD используется, когда указатель размещен в двух соседних словах памяти, a LPDI — когда он непосредственно задан в команде в виде 32-битовой константы. В обоих случаях бит TAG регистра-указателя устанавливается в нуль. Обычно команда LPD используется для передачи адреса системного простран-
ства, подготовленного в виде указателя центральным процессором ВМ86, в регистр-указатель канала процессора ВМ89.
Арифметические команды — сложение, инкремент и декремент. Значения операндов, участвующих в арифметических операциях, интерпретируются как беззнаковые двоичные числа размерностью 8, 16 или 20 бит. Тем не менее можно использовать числа со знаком, принимая старший бит числа за знак (0 — положительный, 1 — отрицательный) и используя представления в дополнительном коде. Независимо от размерности исходных операндов ВМ89 оперирует 20-битовыми значениями, предварительно расширяя 8- и 16-битовые операнды со знаком до 20-битовых и затем выполняет заданную операцию. На рис. 4.25 показано, что арифметические команды влияют на значения разрядов регистров, используемых в качестве приемников и источников операндов. Здесь Р — бит, участвующий в операции и не изменяющий значения, R — бит, участвующий в операции и заменяемый результатом операции, X означает, что бит игнорируется.
Регистр - приемникTAG 1915В 70W-0 fXj iRRRRlRRRRRRRRlRRRRRRRRIРегистр - приемникTAG 1915В 70W-0 fXj iRRRRlRRRRRRRRlRRRRRRRRIРегистр-источникTAG 1915В 70Гх j ГХХХХIXXXXXXXXIPPPPPPPP 1Регистр-источникTAG 1915В 70Гх j ГХХХХIXXXXXXXXIPPPPPPPP 1
Регистр - приемник
TAG 1915В 70
W-0 fXj iRRRRlRRRRRRRRlRRRRRRRRI
Регистр - приемник
TAG 1915В 70
W-0 fXj iRRRRlRRRRRRRRlRRRRRRRRI
Регистр-источник
TAG 1915В 70
Гх j ГХХХХIXXXXXXXXIPPPPPPPP 1
Регистр-источник
TAG 1915В 70
Гх j ГХХХХIXXXXXXXXIPPPPPPPP 1
W-l Гх j rRRRRiRRRRRRRRIRRRRRRRRIРис. 4.25. Влияние арифметических командW-l Гх j rRRRRiRRRRRRRRIRRRRRRRRIРис. 4.25. Влияние арифметических командГх j Гхххх!pppppppp)pppppppp iГх j Гхххх!pppppppp)pppppppp iна содержимое регистровна содержимое регистров
W-l Гх j rRRRRiRRRRRRRRIRRRRRRRRI
Рис. 4.25. Влияние арифметических команд
W-l Гх j rRRRRiRRRRRRRRIRRRRRRRRI
Рис. 4.25. Влияние арифметических команд
Гх j Гхххх!pppppppp)pppppppp i
Гх j Гхххх!pppppppp)pppppppp i
на содержимое регистров
на содержимое регистров
Команды ADD dst,src, ADDB dst,src, ADDI dst,src, ADDBI dst,src используются для сложения слов и байтов, размещенных соответственно в памяти, регистре или непосредственно в команде. Из двух операндов в командах ADD, ADDB один размещен в памяти, второй — в регистре. Команды INC dst, DEC dst используются для увеличения и уменьшения на единицу слов, расположенных в памяти или регистре, команды INCB dst, DECB dst — для увеличения и уменьшения на единицу байтов, расположенных только в памяти.
Логические команды служат для выполнения поразрядной логической операции И, ИЛИ, НЕ над словами и байтами, а также для установки в единицу или в нуль указанного разряда байта памяти. На рис. 4.26 показано, как логические команды устанавливают четыре старших бита регистров-указателей в неопределенное состояние. Здесь U указывает, что значение бита не определено в результате операции, R — что бит участвует в операции и заменяется значением результата, Р — что бит участвует в операции и не изменяет значения; S — бит, являющийся знаковым регистром старшего бита результата, X означает, что бит игнорируется. Под неопределенным понимается значение, которое не обязательно совпадает при переходе от одной операции к другой.
Регистр -приемникTAG 1915870W-0 fj< J Гииии| SSSSSSSS IRRRRRRRRIW-1 [ЧП ruUUUlRRRRRRRRjRRRRRRRRIРис. 4.26. Влияние логических команд наРегистр -приемникTAG 1915870W-0 fj< J Гииии| SSSSSSSS IRRRRRRRRIW-1 [ЧП ruUUUlRRRRRRRRjRRRRRRRRIРис. 4.26. Влияние логических команд наРегистр -источникTAG 1915870[*Xj ГХХХХIXXXXXXXXI PPPPPPPP IРегистр -источникTAG 1915870[*Xj ГХХХХIXXXXXXXXI PPPPPPPP IГ.Хj ГххххIPPPPPPPPIPPPPPPPP I содержимое регистровГ.Хj ГххххIPPPPPPPPIPPPPPPPP I содержимое регистров
Регистр -приемник
TAG 1915870
W-0 fj< J Гииии| SSSSSSSS IRRRRRRRRI
W-1 [ЧП ruUUUlRRRRRRRRjRRRRRRRRI
Рис. 4.26. Влияние логических команд на
Регистр -приемник
TAG 1915870
W-0 fj< J Гииии| SSSSSSSS IRRRRRRRRI
W-1 [ЧП ruUUUlRRRRRRRRjRRRRRRRRI
Рис. 4.26. Влияние логических команд на
Регистр -источник
TAG 1915870
[*Xj ГХХХХIXXXXXXXXI PPPPPPPP I
Регистр -источник
TAG 1915870
[*Xj ГХХХХIXXXXXXXXI PPPPPPPP I
Г.Хj ГххххIPPPPPPPPIPPPPPPPP I содержимое регистров
Г.Хj ГххххIPPPPPPPPIPPPPPPPP I содержимое регистров
Когда регистр-приемник участвует в логической операции над 8-битовыми операндами, его старший байт заполняется значением седьмого (знакового) бита результата. Старший байт может быть «предохранен» от заполнения
значением знакового бита в операциях И, ИЛИ путем использования операций над словами, в которых старший байт источника равен FFH и ООН соответственно.
Команды AND dst,src, ANDB dst.src, ANDI dst,src, ANDBI dst,src используются для поразрядной логической операции И над словами и байтами, размещенными в памяти регистра или непосредственно в команде соответственно. Из двух операндов в командах AND, ANDB один размещен в памяти, другой — в регистре. Эти команды удобно использовать, когда несколько битов операнда-приемника необходимо установить в нуль, не изменяя значения остальных.
Команды OR dst.src, ORB dst.src, ORI dst.src, ORBI dst.src используются для поразрядной логической операции ИЛИ соответственно над словами и байтами, размещенными в памяти, регистре или непосредственно в команде. Из двух операндов в командах OR, ORB один размещен в памяти, другой — в регистре. Эти команды удобно использовать, когда несколько битов операнда- приемника нужно установить в единицу, не изменяя значения остальных.
Команды NOT dst, NOT dst.src выполняют логическую операцию НЕ, инвертируя значения 16-битового операнда. Если в команде указан один операнд, результат помещается на место этого операнда. Если указано два операнда, то src обязательно определяет адрес памяти, a dst — регистр. Значение src инвертируется и результат направляется в dst.
Команды NOTB dst, NOTB dst.src выполняют логическую операцию НЕ над 8-битовым операндом. Команда NOTB может использоваться только с операндом, размещенным в байте памяти. Отметим, что выполнение команды INC вслед за командой NOT позволяет получить дополнителый код числа.
Команды SETB dst,bit, CLR dst,bit позволяют устанавливать в единицу и нуль соответственно произвольный бит в байте, размещенном в памяти. Эти команды удобно использовать для модификации определенных разрядов регистров управления в контроллерах, адресуемых в пространстве адресов ввода — вывода.
Команды передачи управления. Последовательностью выполнения команд в программах канала управляет регистр ТР. При выполнении очередной команды содержимое ТР автоматически увеличивается в соответствии с числом байтов текущей команды. Команды передачи управления позволяют изменять последовательность выполнения команд путем добавления положительного или отрицательного смещения к содержимому ТР. Смещение задается в команде. Команда передачи управления с 8-битовым смещением называется короткой передачей (в диапазоне от — 128 до +127 байт), а с 16-битовым смещением — длинной передачей (в диапазоне от —32 768 до +32 767 байт). Поэтому мнемокоды команд длинной передачи начинаются с буквы L (Long — длинный).
Команды CALL/LCALL addr,label служат для вызова подпрограммы с именем, определенным операндом label. Текущее содержимое регистра ТР автоматически запоминается по адресу, указанному операндом addr, вместе со значением соответствующего бита TAG. Затем к содержимому ТР добавляется смещение (в качестве последнего служит значение label). Возврат из вызванной подпрограммы осуществляется по команде MOVP TP,addr. Принципиальное отличие ВМ89 от ВМ86/ВМ88 заключается в том, что в нем отсутствует указатель стека. Операции, аналогичные стековым, можно выполнять, используя базовый регистр (обычно РР) в качестве указателя стека. Отсутствие
встроенного механизма стековых обращений обусловлено тем, что программы канала не прерываются внешними запросами и для большинства программ стек не требуется.
Команды JMP/LJMP label вызывают безусловную передачу управления на указанную операндом label метку.
Команды JZ/LJZ src,label вызывают условную передачу управления по метке label при условии равенства нулю 16-битового содержимого src, в качестве которого может использоваться регистр или слово памяти.
Команды JZB/LJZB mem8, label вызывают условную передачу управления по метке label при условии равенства нулю байта памяти.
Команды JNZB/LJNZB src,label, JNZB/LJNZB mem8,label вызывают условную передачу управления, когда операнд-источник не равен нулю.
Команды JMCE/LJMCE mem8, label вызывают условную передачу управления по метке label, когда значение операнда-источника, размещенного в байте памяти, совпадает со значением младшего байта регистра МС в тех разрядах, которые выделены маской, размещенной в старшем байте регистра МС.
Команды JMCNE/LJMCNE mem8, label производят действия, аналогичные предыдущим командам, при несовпадении значений.
Команды JBT/LJBT mem8, bit, label вызывают условную передачу управления по метке label, когда указанный разряд bit в байте памяти по адресу mem8 равен единице. Эти команды удобно использовать для проверки определенного бита регистра состояния контроллеров, адресуемых в пространстве адресов ввода — вывода. Если метка label в команде JBT указывает на данную команду, то действие команды можно интерпретировать как ожидание до тех пор, пока указанный бит равен единице.
Команды JNBT/LJNBT mem8, bit, label используются аналогично предыдущим для проверки того, что указанный бит равен нулю.
Команды управления процессором позволяют управлять выдачей запроса прерывания на выходах SINTR1 и SINTR2, задавать логическую ширину источника и приемника, монополизировать системную шину сигналом LOCK и инициализировать ПДП-пересылки.
Команда TSL addr,data,label — проверка и установка с монополизацией — используется для организации доступа к общей базе данных. Действие команды TSL иллюстрирует рис. 4.27. Обычно операнд addr определяет адрес байта памяти, используемого в качестве семафора. Команда активизирует сигнал LOCK, извлекает и сравнивает с нулем содержимое addr. Если содержимое семафора равно нулю, сигнал LOCK деактивизируется и управление передается по метке label. В противном случае в байте addr устанавливается значение data (любая 8-битовая константа), после чего LOCK деактивизируется и управление передается следующей за TSL команде. Когда метка label указывает на саму команду TSL, канал ожидает, пока не предоставится доступ к общей базе данных.
Команда WID src,dst задает логическую ширину шины источника и приемника для ПДП-пересылки установкой соответствующих битов регистра PSW канала в нуль или единицу. Логическая ширина шин не определена после системного сброса процессора сигналом RESET, поэтому команда WID должна быть обязательно выполнена перед началом первой ПДП-пересылки.
Команда SINTR служит для установки соответствующего бита в регистре PSW (IS = 1) и выдачи запроса прерывания на выходе SINTR, если бит разрешения прерывания 1С = 1. Если 1С = 0 (прерывания запрещены), то бит IS устанавливается в единицу, но сигнал запроса на выходе SINTR не выдается.
Команда XFER служит для инициализации ПДП-пересылки. Команда XFER начинает выполняться только после завершения следующей за ней команды. Использование команды XFER предполагает, что предварительно определены все параметры пересылки. Подробно вопросы организации ПДП пересылок рассмотрены в § 4.6.
Команда HLT завершает программу канала. По этой команде байт BUSY в блоке СВ устанавливается в нуль и канал переходит в режим ожидания запроса готовности. Команда NOP не выполняет никаких действий в течение четырех тактов CLK и обычно используется для организации точных временных задержек.
6. Специальные вопросы организации ввода — вывода
Для правильной организации ввода — вывода необходимо знать особенности работы СПВБ ВМ89 под управлением программ каналов и байтов управления каналами CCW, поступающих из ЦП. В зависимости от скорости обмена в ряде случаев приходится задавать специальные режимы работы каналов, учитывать взаимное влияние каналов, особенности их реакции на сигналы СА запроса готовности от ЦП, временные характеристики ПДП-пересылок.
Центральный процессор инициализирует канал выдачей пары сигналов СА, SEL, определив в байте CCW управляющие поля. Первой обычно является команда Запустить программу канала, соответствующая коду управляющего поля CF = 001 или CF = 011, в зависимости от пространства адресов, в котором находится программа. По команде CF = 001 канал устанавливает в нуль бит TAG, соответствующий регистру ТР, указывая на то, что программа находится в системном пространстве адресов. По команде CF = 011 канал устанавливает бит TAG в единицу, указывая на размещение программы в пространстве адре-
сов ввода — вывода. Далее канал преобразует 32-битовый указатель блока параметров в 20-битовый физический адрес и загружает его в регистр РР. В регистр ТР загружается указатель блока задания (начальный адрес программы), а байт состояния PSW (см. рис. 4.10) модифицируется в соответствии со значением полей Р, В, ICF в байте управления CCW (см. рис. 4.12). После этого канал начинает выполнять программу с адреса, загруженного в ТР.
В процессе выполнения программы процессор ВМ86 может выдать команду Приостановить работу канала (код CF = 110), по которой канал автоматически сохраняет свое текущее состояние (содержимое ТР, TAG и PSW) в первых двух словах блока параметров, как показано на рис. 4.28. После засылки указанных параметров канал сбрасывает байт BUSY. Если команда приостанавливает ПДП-пересылку, то принимавшее в ней участие внешнее устройство ведет себя так, как будто пересылка продолжается. Поэтому ситуация, которая может возникнуть, когда устройство посылает ПДП-запрос, а канал его не подтверждает вследствие приостановки, должна быть заранее предусмотрена в программе ЦП.
РР:РР*а :РР*4 :РР:РР*а :РР*4 :ТР(15-8)ТР(7-0)PSWTP(19-16)|TAG|000ТР(15-8)ТР(7-0)PSWTP(19-16)|TAG|000Другие параметры каналаДругие параметры канала
РР:
РР*а :
РР*4 :
РР:
РР*а :
РР*4 :
ТР(15-8)
ТР(7-0)
PSW
TP(19-16)|TAG|000
ТР(15-8)
ТР(7-0)
PSW
TP(19-16)|TAG|000
Другие параметры канала
Другие параметры канала
Рис. 4.88. Размещение содержимого IP, реэря-де TAG и PSW по команде приостановки работы
Команда Модифицировать PSW (код CF = 000) выдается центральным процессором, когда необходимо изменить режим работы программы, приоритет канала или управлять прерываниями.
Поле В в CCW (см. рис. 4.12) позволяет задать так называемый режим предела загрузки шины. Он используется в тех случаях, когда ведомый/ведо- мые процессоры ВМ89 настолько интенсивно запрашивают шину по линии RQ/GT, что ведущий ВМ86 практически не может использовать ее. Установка поля В=1 в CCW устанавливает соответствующий бит в регистре PSW, что заставляет СПВБ пропускать 128 тактов CLK после выполнения каждой команды программы канала и тем самым уменьшает время использования шины на 3...25 %. Задание режима предела загрузки шины позволяет ЦП замедлить выполнение программы канала и высвободить циклы шины для собственного использования. Данный режим можно задать и для ВМ89 в удаленной конфигурации, когда программа канала размещена в системной памяти и запрос доступа осуществляется с помощью арбитра шин. Режим не влияет на операции каналов с высоким приоритетом, такие, как непрерывные программы каналов и ПДП-пересылки.
Поле IGF в CCW служит для разрешения и запрещения запросов прерываний и снятия предыдущих запросов. Когда СПВБ выдает запрос прерывания, он устанавливает бит обслуживания IS = 1 в регистре PSW. Пока прерывание обслуживается, этот бит необходимо сбросить по команде Модифицировать PSW, в которой ICF = 01, иначе запрос будет блокировать последующие запросы.
Поле Р в CCW позволяет определить приоритеты каналов СПВБ по отношению друг к другу. Значение бита Р= 1 определяет более высокий приоритет, чем Р = 0.
Таким образом, команда Модифицировать PSW используется ЦП, когда требуется выполнить указанные действия.
Команда Остановить работу канала (CF = 111) позволяет ЦП прекратить любую операцию канала. По этой команде канал сбрасывает байт BUSY и переходит в состояние ожидания готовности (простаивания).
Взаимодействие каналов процессора ввода — вывода. Хотя процессор ввода — вывода удобно рассматривать как два независимых канала, которые могут работать одновременно, в действительности в каждый момент времени может работать только один канал. После окончания каждого внутреннего цикла общее УУ решает, какой из каналов будет выполнять следующий внутренний цикл. Основанием для такого решения служит встроенный механизм приоритетов, который показывает, что определенные операции канала более важны, чем другие. В табл. 4.9 указаны приоритеты каждой операции канала, отражающие ее относительную важность (1 —высший приоритет).
Поясним табл. 4.9. Операция завершения ПДП-пересылки состоит в выполнении каналом внутренней программы, которая добавляет к содержимому ТР смещение (0, 4 или 8) после окончания пересылки (см. рис. 4.9). Аналогично, в ответ на запрос готовности от ЦП канал выполняет внутреннюю программу, которая анализирует управляющее слово CCW и настраивает канал на выполнение заданной команды. Обе внутренние программы состоят из обычных команд СПВБ ВМ89, выбираемых из его внутренней памяти.
Таблица 4.9
Операция канала
Приоритет
Граница переключения
при ПДП- пересылке
при выполнении программы
ПДП-пересылка
1
Цикл вины
Цикл хины
Завереение ПДП- пересылки
1
Внутренний цикл
Нет
Выполнение непрерывной программы
1
То хе
Команда
Ответ на запрос готовности
2
>>
Нет
Выполнение обычной программы
3
>>
Команда
Простаивание
4
Два такта
Два такта
Как показано в табл. 4.9, канал может выполнять обычную и непрерывную программу с приоритетом 3 и 1 соответственно. Напомним, что поднять приоритет программы до приоритета ПДП-пересылки можно, установив в единицу бит С регистра СС управления каналом. Это делается в тех случаях, когда программа или отдельный ее участок критичны по времени выполнения.
Когда общее устройство управления СПВБ определяет канал, который будет выполнять очередной внутренний цикл, оно выбирает канал с более
высоким приоритетом операции. Если каналы выполняют операции с одинаковыми приоритетами, то общее УУ анализирует бит приоритета Р в PSW и выбирает канал, где Р= 1 (бит приоритета Р не влияет на выбор, если операции имеют разные приоритеты). Наконец, когда приоритеты операций и биты приоритетов Р равны, общее УУ организует попеременную работу каналов. Переключения каналов в этом случае осуществляются в определенных точках, называемых границами переключения. Границы переключения определяются типом операции как в канале, который работает в данный момент времени (назовем его каналом А), так и в канале, который будет работать после переключения (назовем его каналом В). Момент переключения с канала А на канал В зависит от того, что выполняет канал В — ПДП-пересылку или программу (в том числе и внутреннюю). В табл. 4.9 показано, что переключение с канала А на канал В выполняется быстрее, когда канал В осуществляет ПДП-пересылку. Если канал А также осуществляет ПДП-пересылку, то границей переключения служит окончание цикла шины, а если канал А выполняет программу, переключение осуществляется по завершении внутреннего цикла. В табл. 4.9 знаком «*» отмечены ситуации, при которых переключение может не произойти. При ПДП-пересылке в канале А это связано с активизацией сигнала LOCK, а при выполнении программы — с командой TSL, которая также активизирует сигнал LOCK-
Если оба канала выполняют программы, то границей переключения служит
Таблица 4.10
№ п/п
Канал А
Канал В
Результат
Операция канала
Вит
С Р
LOCK
Операция канала
Бит
С Р
1
ПДП-пересылка
X X
1
Простаивание
X X
Работает канал А
2
ПДП-пересылка
X X
1
Ответ на запрос готовности
X X
Канал А завервает те- куций цикл пересылки, затем работает канал В
3
Выполнение программы
X 0
1
Выполнение программы
X 1
Работает канал В
4
То хе
X 0
1
То хе
X 0
Каналы А и В работают поперемеино
5
>>
1 X
1
>>
0 X
Работает канал А
6
ПДП-пересылка
X 1
1
>>
1 1
После каждого цикла хины канала А канал В выполняет один внутренний цикл или один цикл вины
7
Ответ на запрос готовности
X X
1
>>
1 X
Работает канал А, если он начал ответ; в противном случае работает канал В
8
ПДП-пересылка
X X
0
>>
X X
Работает канал А до завереения пересылки
9
Выполнение программы
0 X
0
ПДП-пересылка
X X
Работает канал А, затем канал В
завершение команды в программе канала либо завершение внутренней программы в целом.
Типичные примеры, поясняющие механизм переключения каналов, приведены в табл. 4.10. Большинство из них не требует пояснений, так как переключения осуществляются в соответствии с приоритетом операции, со значением бита непрерывности С (в регистре СС) или бита приоритета Р (в регистре PSW). В ситуации 2, когда запрос готовности СА канала В приходит в момент выполнения ПДП-пересылки каналом А, он запоминается процессором и внутренняя программа ответа выполняется после завершения пересылки. Ситуация 5 показывает, что непрерывная программа может монополизировать канал СПВБ и это следует учитывать при организации взаимодействия каналов, стараясь делать непрерывные программы как можно короче. В ситуации 9 выпол
няется команда TSL, выставляющая активный сигнал LOCK- До тех пор, пока сигнал LOCK не будет снят, ПДП-пересылка в канале В не начнется.
Организация ПДП-пересылок. Процессор ввода — вывода позволяет осуществлять обмен данными между различными областями памяти, а также между памятью и внешним устройством. В последнем случае часто используются дополнительные контроллеры. Обычно контроллеры имеют один или более внутренних регистров, которые позволяют программировать контроллер на определенный режим работы, а также регистры, определяющие состояние контроллера. Прочитав содержимое этих регистров, можно узнать, готов ли контроллер к работе или занят, обнаружил ли он ошибки при пересылке, и т. п.
В общем случае организация ПДП-пересылки включает четыре фазы: подготовку контроллера, подготовку канала СПВБ, собственно пересылку и анализ результатов пересылки.
Т а б 1 и ц а 4.11
ИнформацияРегистр
(команда)
Адрес источникаQA иди QB
Адрес приемникаQB иди QA
Адрес табдицы перекодировкиQC
Чисдо пересылаемых байтовВС
Значение эталона и маскиНС
Логическая мирина мин(WID)1»
Способ управления каналомСС
1> Команда WID может выполняться однажды, вслед за инициализацией СПВВ.
Подготовка контроллера выполняется программой канала, которая обращается к его внутренним регистрам как к последовательным адресам памяти. Обычно программа помещает базовый адрес контроллера в регистр — указатель канала и использует команды пересылки для связи с регистрами. Ряд контроллеров начинает ПДП-пересылку сразу после получения последнего параметра. При их подготовке команда, пересылающая последний параметр, подается вслед за командой XFER — Начать ПДП-пересылку (это связано с особенностью команды XFER, которая не выполняется до тех пор, пока не выполнится следующая за ней команда).
Подготовка канала также осуществляется программой, которая загружает его регистры информацией, необходимой для управления ПДП-пересылкой, и выполняет одну специальную команду (табл. 4.11). Часть информации является обязательной, а другая часть задается только в случае использования таких операций, как перекодировка, подсчет пересылаемых байтов или маскированное сравнение с эталоном.
Возможные ограничения на логическую ширину и использование шин представлены в табл. 4.12. При реализации пересылки и анализе ее результатов большое значение имеет правильное использование регистров канала (см. табл. 4.11). Указатели источника и приемника организуются на основе регистров GA и GB, один из которых загружается адресом источника сообщений, другой — адресом приемника. Бит S в регистре СС определяет, какой регистр является указателем источника. Если регистр указывает на ячейку памяти, то он должен содержать адрес младшего байта передаваемого сообщения. В процессе пересылки этот адрес автоматически увеличивается. Если TAG — бит регистра-указателя определяет пространство адресов ввода — вывода, то четыре старших бита игнорируются, а если системное пространство, то используются все 20 бит. Источник и приемник могут быть расположены в одних и тех же или разных пространствах адресов.
Таблица 4.12
Физическая (логическая)■Ирина вины приемникаФизическая (логическая)■Ирина вины приемникаФизическая (логическая)■ирииа вины источникаФизическая (логическая)■ирииа вины источника
Физическая (логическая)
■Ирина вины приемника
Физическая (логическая)
■Ирина вины приемника
Физическая (логическая)■ирииа вины источника
Физическая (логическая)■ирииа вины источника
8(8)16(8)18(16)
18(16)ОграниченияОграниченияОграничение
1-31,33
16(8)ограничениеВезОграничения
2ограничений1,3
8(8)ВезОграничениеОграничения
ограничений21-3
Примечание. Ограничение 1 означает, что пересылка занимает более одного цикла, так как требуется выполнение операций сборки или разборки; ограничение 2 - что этот вариант иевозмохио использовать в местной конфигурации, поскольку физическая мирина вины источника и приемника должна быть одинаковой; ограничение 3 - что данное сочетание нельзя использовать для перекодировки и маскированного сравнения, поскольку это операции над байтами
Указатель таблицы перекодировки используется, если данные необходимо перекодировать в процессе ПДП-пересылки. Указатель организуется на базе регистра GC, который загружается базовым адресом (т. е. адресом первого, младшего байта) таблицы перекодировки. Таблица не должна превышать 256 байт и может быть размещена в любом пространстве адресов, на которое указывает бит TAG регистра GC. Операция перекодировки возможна только при пересылке байтов, которые рассматриваются как беззнаковые 8-битовые двоичные числа. В каждом цикле пересылки передаваемый байт используется как смещение и суммируется с базовым адресом таблицы. По этому адресу извлекается новый код, который заменяет байт источника и пересылается по адресу приемника. Содержимое GC на протяжении всей ПДП-пересылки не 146
изменяется. Если GC указывает на пространство адресов ввода — вывода, то его четыре старших бита игнорируются.
В качестве счетчика байтов используется регистр ВС, который загружается перед началом пересылки и автоматически декрементируется при пересылке каждого байта. Регистр ВС может использоваться для определения окончания пересылки, когда условием окончания является заданное число передаваемых байтов, а также для подсчета числа переданных байтов, когда задано другое условие окончания.
Значение, загруженное в регистр маскированного сравнения МС, является эталоном, с которым сравниваются пересылаемые байты (только в тех битах, которые указаны в маске). Содержимое МС не изменяется в процессе пересылки. Если наряду с окончанием по условию маскированного сравнения задана перекодировка, то в сравнении участвует новый код.
Управляющие поля регистра управления каналом СС и способ их кодирования рассмотрены в табл. 4.5. Рассмотрим, как влияют загруженные коды на процесс ПДП-пересылки.
Поле F (биты 15—14) определяет источник и приемник как память или порт (устройство ввода — вывода), что влияет на содержимое регистров- указателей GA и GB. Если в регистре находится адрес памяти, то он изменяется в процессе пересылки, если адрес порта,— он остается неизменным.
Поле TR (бит 13) определяет операцию перекодировки и предполагает наличие перекодировочной таблицы.
Поле SYN ( биты 12—11) определяет способ синхронизации. Асинхронная пересылка обычно задается для передачи данных из памяти в память. В этом случае канал начинает следующий цикл пересылки сразу после окончания текущего цикла. Память, которая не может производить запись/чтение со скоростью передачи данных в канале, может увеличивать длительность цикла записи и/или чтения путем снятия сигнала готовности со входа RDY тактового генератора К1810ГФ84. Это увеличивает число тактов ожидания. Синхронизация от источника обычно используется, когда им является устройство ввода — вывода, а приемником — память. УВВ начинает каждый цикл пересылки выдачей запроса на вход DRQ, по которому канал выполняет очередной цикл и ожидает следующего сигнала DRQ. Синхронизация от приемника обычно используется, когда источником является память, а приемником — УВВ. В этом случае УВВ аналогично управляет частотой передачи, посылая сигнал готовности на вход RDY, для приема следующего байта (или слова).
Поле S (бит 10) распределяет функции указателя приемника и источника между регистрами GA и GB.
Поле L (бит 9) позволяет монопольно использовать системную шину в процессе ПДП-пересылки. Если задана синхронизация от источника, то сигнал LOCK активизируется с момента получения первого сигнала DRQ до момента начала выполнения внутренней программы завершения ПДП-пересылки. Если задана синхронизация от приемника, то сигнал LOCK активизируется с момента первой выборки (которая предшествует первому сигналу DRQ) до программы завершения.
Поле TS (бит 7) определяет выполнение только одного цикла пересылки. Такое условие окончания пересылки может использоваться для обслуживания внешних устройств с недостаточным быстродействием для перекодировки
и/или сравнения передаваемого байта. Когда задано условие окончания после одной пересылки, другие условия окончания игнорируются.
Чимр етмс)-Чимр етмс)-Поля ТХ (биты 6—5), ТВС (биты 4—3) и ТМС (биты 2—0) определяют условия окончания ПДП-пересылки по внешнему сигналу, числу переданных данных и результату маскированного сравнения соответственно. Каждое из этих условий можно задать отдельно или в любой комбинации. Если задаются два или три условия одновременно, то для того, чтобы определить, по какому из них закончилась пересылка, необходимо воспользоваться смещением. В § 4.3 было показано, как задать смещение 0,4 или 8 при определении любого из трех условий. Если для каждого условия задать разные смещения, то счетчик команд ТР после завершения пересылки примет одно из трех значений: ТР + 0, ТР-(-4 или ТР + 8, соответствующее тому условию, которое вызвало окончание пересылки (рис. 4.29). Размещение в программе канала последовательно трех команд LJMP (после XFER и следующей за ней командой) с разными метками позволит перейти в различные точки программы, которые определяются конкретной причиной окончания пересылки (смещение 4 определяется длиной команды LJMP). Если причиной окончания послужило одновременное выполнение двух или трех условий, то канал выберет условие, которому соответствует наибольшее смещение.
Чимр етмс)-
Чимр етмс)-
Программа обработкивнешнего окончания
Программа обработкипо счетчику
Программа обработкипо несовпадению
Рис. 4.89. Использоввнмв смешения для организации дальнейшей обработки в зависимости от причины окончания пересылки
Команда XFER реализована так, что она выполняется только после завершения следующей за ней команды. Это обеспечивает универсальность использования СПВБ для обслуживания различных типов контроллеров. Некоторые контроллеры, например контроллер НГМД, начинает пересылку немедленно после получения последнего параметра. Если канал передает последний параметр и вслед за этим должен выполнять команду XFER, то контроллер начнет пересылку до того, как команда настроит канал на передачу. Поэтому при обслуживании этих контроллеров передача последнего параметра осуществляется командой, следующей за XFER. Это освобождает время
для выполнения внутреннего цикла, подготавливающего канал к пересылке.
Другие типы контроллеров начинают пересылку только по специальному сигналу Начать. Поэтому вслед за командой XFER размещается команда, формирующая этот сигнал. При пересылках из памяти в память за командой XFER может следовать любая команда, за исключением команд загрузки регистров GA, GB и СС. Как правило, команда НЕТ также не должна следовать за XFER, так как, установив в нуль байт BUSY, она все равно допустит пересылку.
Процесс ПДП-пересылки осуществляется автоматически под управлением УУ ввода — вывода и заканчивается, когда выполняется условие окончания. Практический интерес представляют временные характеристики этого процесса. В табл. 4.13 приведены данные, позволяющие вычислить быстродействие канала (число тактов CLK) для различных случаев размещения данных в памяти, соотношений логической ширины шин источника и приемника, а также различных способов синхронизации. Запись В->-В означает, что пересылка осуществляется байтами; B/B->-W — канал принимает два байта, собирает их в слово и пересылает в приемник; W-»-B/B — канал принимает слово, разбирает его на байты и передает байты в приемник.
Таблица 4.13
Адрес источник-* приемник
Логическая мирина вины источник/приемник
Синхронизация ПДП-пересылки
8/8
8/16
16/8
16/16
Четный-»Четный
В»В
B/B-»ffi>
W+B/B*>
W+W1)
8
12
12
8
Асинхронная
8
16
12
8
От источника
8
12
16
8
От приемника
Четный*Нечетный
В*В
В*В
W+B/B1>
W^B/B1>
8
8
12
12
Асинхронная
8
8
12
12
От источника
8
6
16
16
От приемника
Нечетный*четный
В*В
B/B*W1>
В-»В
B/B+W* >
8
12
8
12
Асинхронная
8
16
8
16
От источника
8
12
8
12
От приемника
Нечетный*Нечетный
В*В
В-*Ва>
В*Ва>
В-*Ва>
8
8
8
8
Асинхронная
8
8
8
8
От источника
8
8
8
6
От приемника
!> В этих случаях обычно пересылаются слова (с предварительной
сборкой или последующей разборкой).
а> Указано время на пересылку первого байта, для следующих цик
лов пересылки нужно использовать время, указанное для варианта "Четный-»Четный".
В ряде случаев для оценки времени выполнения ПДП-пересылки к данным табл. 4.13 необходимо добавить несколько тактов: три такта на каждую пересылку, если осуществляется пересылка из памяти в память; семь тактов на каждую пересылку, если осуществляется перекодировка; три такта на последнюю пересылку, если выполняется маскированное сравнение.
Для номинальной тактовой частоты СПВБ 5 МГц самая быстрая ПДП-пе- ресылка осуществляется со скоростью 1,25 Мбайт/с, а самая медленная — со скоростью 277 788 байт/с.
Вспомогательные интегральные схемы
Генератор тактовых импульсов К1810ГФ84
Генератор тактовых импульсов (ГТИ) КР1810ГФ84 предназначен для управления ЦП КР1810ВМ86 и периферийными устройствами, а также для синхронизации сигналов READY с тактовыми сигналами ЦП и сигналов интерфейсной шины Multibus. Генератор тактовых импульсов (рис. 5.1, 5.2) включает схемы формирования тактовых импульсов (OSC, CLK, PCLK), сигнала сброса (RESET) и сигнала готовности (READY).
Схема формирования тактовых импульсов вырабатывает сигналы: CLK — тактовой частоты для ЦП КР1810ВМ86, PCLK — тактовой частоты для управления периферийными БИС, OSC — тактовой частоты задающего генератора, необходимые для управления устройствами, входящими в систему, и для синхронизации. Сигналы синхронны, их частоты связаны соотношением: Fosc = = 3Fclk = 6Fpclk в режиме внутреннего генератора и Fefi = 3FClk = 6FPclk в Ре" жиме внешнего генератора.
Сигналы могут формироваться из колебаний основной частоты кварцевого резонатора, подключаемого к входам XI, Х2, или третьей гармоники кварцевого резонатора, выделяемой LC-фильтром или от внешнего генератора, подключаемого ко входу EFL
Выбор режима функционирования определяется потенциалом на входе F/C. Если этот вход подключен к «земле», то ГТИ работает в режиме формирования сигналов от внутреннего генератора (SGN), если на F/C подается высокий потенциал — то в режиме формирования сигналов от внешнего генератора.
Схема формирования сигнала сброса RESET имеет на входе триггер Шмитта, а на выходе — триггер, формирующий фронт сигнала RESET по срезу
CLK- Обычно ко входу RES подключается RC-цепь, обеспечивающая автоматическое формирование сигнала при включении источника питания (рис. 5.3).
17161513141171615131411111XI Х2 TANK F/C EFI CSYN RESXI Х2 TANK F/C EFI CSYN RESGGRESQRESQOSCOSCCLKCLK1010121288367367RDY1RDY1PCLKPCLK22RDY2RDY2READSREADS55Рис. 5.3. Схема подключения к ГТИ кварцевого резонатора: t0-l/2VTC - постоянная составляющаяРис. 5.3. Схема подключения к ГТИ кварцевого резонатора: t0-l/2VTC - постоянная составляющаяРис. 5.2. Условное графическое обозначение ГТИРис. 5.2. Условное графическое обозначение ГТИ
17
16
15
13
14
1
17
16
15
13
14
1
11
11
XI Х2 TANK F/C EFI CSYN RES
XI Х2 TANK F/C EFI CSYN RES
G
G
RESQ
RESQ
OSC
OSC
CLK
CLK
10
10
12
12
8
8
3
6
7
3
6
7
RDY1
RDY1
PCLK
PCLK
2
2
RDY2
RDY2
READS
READS
5
5
Рис. 5.3. Схема подключения к ГТИ кварцевого резонатора: t0-l/2VTC - постоянная составляющая
Рис. 5.3. Схема подключения к ГТИ кварцевого резонатора: t0-l/2VTC - постоянная составляющая
Рис. 5.2. Условное графическое обозначение ГТИ
Рис. 5.2. Условное графическое обозначение ГТИ
Схема формирования тактовых импульсов имеет специальный вход синхронизации (CSYNC), с помощью которого возможно синхронизировать работу нескольких ГТИ, входящих в систему. Такая синхронизация осуществляется с помощью двух D-триггеров по входам CSYNC и EFI (рис. 5.4). Следует отметить, что если ГТИ работает в режиме внешнего генератора, то внутренний генератор может работать независимо (вход OSC независим от CLK и PCLK и асинхронен им).
Рис. 5.4. Схема формирования сигнала CSYNCРис. 5.4. Схема формирования сигнала CSYNC
Рис. 5.4. Схема формирования сигнала CSYNC
Рис. 5.4. Схема формирования сигнала CSYNC
Схема формирования сигнала готовности (READY). Входной сигнал READY ЦП КР1810ВМ86 используется для подтверждения готовности к обмену. Высокий уровень напряжения на входе указывает на наличие данных на ШД. Схема формирования этого сигнала в ГТИ построена так, чтобы упростить включение системы в интерфейсную шину стандарта Multibus, и имеет две пары идентичных сигналов RDY1, AEN1 и RDY2, AEN2, объединенных схемой ИЛИ. Сигналы RDY формируются элементами, входящими в систему, и свидетельствуют об их готовности к обмену. Сигналы AEN разрешают формирование
Рис. 5.5. Временная диаграмма ГТИ
сигнала READY по сигналам RDY, подтверждая адресацию к адресуемому элементу. Выходной элемент (F) схемы формирует фронт сигнала READY по срезу CLK, чем осуществляется привязка сигнала READY к тактам ЦП.
Временная диаграмма работы ГТИ представлена на рис. 5.5.
Буферные регистры и шинные формирователи
Восьмиразрядные буферные регистры (БР) КР580ИР82, КР580ИР83 используются для организации запоминающих буферов, адресных защелок, портов ввода — вывода, мультиплексоров и т. п. Буферные регистры состоят из восьми информационных триггеров (Т) с выходными схемами (SW) с тремя состояниями, общими сигналами записи информации STB и управления выходными схемами ОЕ. В буферном регистре ИР82 (рис. 5.6) к выходным схемам подключены прямые выходы информационных триггеров, в БР ИР83 (рис. 5.7) — инверсные.
Назначение выводов DI7 — DI0 — линии входных данных; DO7 — DOO — линии выходных данных; STB — стробирующий сигнал; ОЕ — разрешение выдачи данных.
При сигнале высокого уровня на входе STB состояние входных линий DI7 — DI0 передается на выходные линии DO7 — DOO. Запоминание (защелкивание) в информационных триггерах осуществляется при переходе сиг-
1
010 DI1
DI2
DI3
DI4
DI5
DI6
DI7
RG
D00
D01
D02
D03
13
2
18
3
17
4
16
5
15
6
D05
D06
D07
14
7
13
8
12
И
20
STB ОЕ
UCQ
GND
9
10
б)
Рис. 5.6. Функциональная схема БР ИР82 (а) и его условное графическое обозначение (б)
нала STB от высокого уровня к низкому (по срезу сигнала STB). Сигнал ОЕ управляет выходными буферами: при ОЕ = 0 буфер отпирается, при ОЕ= 1 он устанавливается в Z-состояние. Сигнал ОЕ не влияет ни на состояния информационных триггеров, ни на функцию записи.
а)
1
DI0
DI1
DI2
DI3
DI4
DI5
DI6
DI7
RG
ООО 001 002 003 004 005 006 007
13
2
18
3
17
4
16
5
15
6
14
7
13
8
12
И
ев
STB ОЕ
Усс
GND
9
10
б)
Рис. 5.7. Функциональная схема БР ИР83 (а) и его условное графическое обозначение (б)
Малый входной ток и достаточно большой выходной позволяют использовать эти элементы в качестве развязывающих буферов-защелок либо шинных формирователей. В качестве шинных формирователей БР используют, подключая STB через резистор сопротивлением 1 кОм к шине питания ( + 5 В), а вход ОЕ — к общей шине, что делает БР «прозрачным». Временная диаграмма работы БР ИР82/83 приведена на рис. 5.8.
Рис. 5.8. Временные диаграммы работы BP ИР82/83
Восьмиразрядные шинные формирователи (ШФ) КР580ВА86, КР580ВА87 применяют как буферные устройства шины данных в микропроцессорных системах. Большая выходная мощность и простота управления позволяют использовать их для построения двунаправленных согласующих буферов межмодульной связи либо как простые усилительные каскады. Полная конструктивная совместимость с БР ИР82/83 допускает взаимозаменяемость при однонаправленной передаче.
Формирователь состоит из восьми одинаковых функциональных блоков с общими сигналами управления Т и ОЕ. Функциональные блоки состоят из двух усилителей-формирователей с z-состояниями на выходах, схема включения которых обеспечивает разнонаправленную передачу. Формирователь ВА86 (рис. 5.9) не инвертирует данные, а ВА87 (рис. 5.10) инвертирует.
Назначение выводов ШФ.
А7 — АО — вход/выход линий данных. В зависимости от состояния входа Т они могут быть входными, если на Т — сигнал высокого уровня, и выходными, если на Т — сигнал низкого уровня.
В7 — ВО — вход/выход линий данных. Они являются входными, если на Т — сигнал низкого уровня, и выходными, если на Т — сигнал высокого уровня.
Т — входной сигнал управления направлением передачи. При Т = 0 осуществляется передача от В к А (режим В->А), при Т=1 —от А к В. Сигнал Т выбирает верхний или нижний усилитель-формирователь, разрешая соответствующую передачу.
Рис. 5.9. Функциональная схема ШФ ВА86 (а) и его условное графическое обозначение 16JРис. 5.9. Функциональная схема ШФ ВА86 (а) и его условное графическое обозначение 16JРис. 5.10. Функциональная схеиа ШФ ВА87 (а) и его условное графическое обозначение 161Рис. 5.10. Функциональная схеиа ШФ ВА87 (а) и его условное графическое обозначение 161
Рис. 5.9. Функциональная схема ШФ ВА86 (а) и его условное графическое обозначение 16J
Рис. 5.9. Функциональная схема ШФ ВА86 (а) и его условное графическое обозначение 16J
Рис. 5.10. Функциональная схеиа ШФ ВА87 (а) и его условное графическое обозначение 161
Рис. 5.10. Функциональная схеиа ШФ ВА87 (а) и его условное графическое обозначение 161
ОЕ— входной сигнал разрешения передачи. При ОЕ=0 снимается z-состояние с выхода усилителя-формирователя, выбранного по входу. Т. Переход в z-состояние и наоборот не дает отрицательных выбросов на выходах ИС.
Рис. 5.11. Временные диаграммы работы ШФ ВА86/87Рис. 5.11. Временные диаграммы работы ШФ ВА86/87
Рис. 5.11. Временные диаграммы работы ШФ ВА86/87
Рис. 5.11. Временные диаграммы работы ШФ ВА86/87
Основные достоинства ШФ: большой выходной ток при малом входном токе и отсутствие шума на выходе при переключениях. Временная диаграмма работы ШФ приведена на рис. 5.11.
Контроллер системной шины К1810ВГ88
Контроллер системной шины К1810ТВГ88 предназначен для работы в составе микропроцессорной системы на базе МП К1810ВМ86. В зависимости от состояния МП контроллер управляет обменом данными между локальной шиной (ЛШ) процессора и системной шиной (СШ) при наличии доступа к управлению шинами МП, а также между локальной шиной и шиной ввода —
Рис. 5.13. Структура контроллера системной шины ВГ88
вывода или резидентной шиной. Контроллер шины (КШ) синхронизируется тактовым генератором МП и осуществляет управление шинными формирователями, регистрами, фиксаторами адреса, устройствами ввода — вывода и памятью. Структурная схема контроллера шины приведена на рис. 5.12, а его условное графическое обозначение — на рис. 5.13.
13
SO
51 gg
CB
ИКОС ИПТС
7
3
3
18
8
AMWTC ГОКС ТОПС AtoWC
INTA
2
13
11
12
14
4
CLK ЮВ KEn CEN
DT/K DEN ALE MCE/ PDEN
1
16
6
5
15
17
Рис. 5.13. Условное графическое изображение ИС ВГ88
Назначение выводов.
SO, SI, S2 — входы сигналов состояния МП ВМ86/ВМ87/ВМ89.
Контроллер шины декодирует эти сигналы и формирует командные сигналы и сигналы управления.
CLK — входные сигналы генератора тактовых импульсов ГФ84, синхронизирующие работу контроллера шины.
AEN — сигнал управления выдачей командных сигналов контроллера, которая осуществляется через 115 нс после поступления сигнала AEN. В режиме работы с шиной ввода — вывода (ЮВ = 1) сигнал AEN не влияет на выдачу командных сигналов, управляющих вводом — выводом.
CEN — сигнал управления выдачей командных сигналов и сигналов управления DEN и PDEN. При CEN = 0 выходные командные сигналы находятся в пассивном состоянии (сигнал высокого уровня).
1ОВ — сигнал управления режимом работы контроллера. При ЮВ = 1 задается режим работы с шиной ввода — вывода, а при ЮВ=0 — с системной шиной.
MRDC— сигнал чтения из памяти. Разрешает выставить информацию на шину данных из ячейки, адрес которой установлен на шине адреса.
MWTC — командный сигнал записи в память. Разрешает записать информацию с шины данных по адресу, установленному на шине адреса.
AMWC — опережающий командный сигнал записи в память. Указывает о начале машинного цикла записи и позволяет своевременно подготовиться к записи информации.
IORC — командный сигнал ввода из УВВ. Разрешает УВВ, адрес которого установлен на шине адреса, выставить информацию на шину данных.
10WC — командный сигнал вывода в УВВ. Разрешает УВВ, адрес которого установлен на шине адреса, считать информацию с шины данных.
AIOWC — опережающий командный сигнал вывода в УВВ. Указывает УВВ о начале машинного цикла вывода и позволяет ему своевременно подготовиться к выводу информации.
DT/R — сигнал управления работой шинных формирователей. DT/R= = 1 переключает шинные формирователи на передачу да_нных с локальной шины на шину ввода — вывода или системную шину, DT/R=O переключает шинные формирователи на считывание данных с шины ввода — вывода или системной шины на локальную.
DEN — сигнал управления состоянием «включено» шинных формирователей, включенных между локальной и системной или резидентной шиной.
MCE/PDEN — сигнал управления выполняет две функции в зависимости от режима. В режиме работы с шиной ввода — вывода (ЮВ = 1) используется сигнал PDEN управления состоянием «включено» шинных формирователей, включенных между локальной шиной и шиной ввода — вывода. В режиме работы с системной шиной (ЮВ = 0) используется сигнал MCE управления считыванием номера ведомого контроллера прерываний, подлежащего обслуживанию.
ALE — сигнал управления моментом стробирования (фиксации) адреса в адресном регистре с локальной шины МП. Запись адреса осуществляется в момент перехода сигнала ALE с высокого уровня на низкий.
Функционирование. Основной информацией для формирования командных сигналов и сигналов управления контроллером системной шины является код состояния МП, поступающий на входы SO, SI, S2. Дешифратор состояния МП производит декодирование поступившего кода в соответствии с табл. 5.1.
Таблица 5.1
Кол состояния МП Состояние МП ВМ86 Командный сигнал
S2 SI SO
контроллера ВГ88
0
0
0
Подтверждение прерывания
INTA
0
0
1
Ввод из УВВ
IORC
0
1
0
Вывод из УВВ
IOWC.AIOWC
0
1
1
Останов
-
1
0
0
Выборка команды
MRDC
1
0
1
Чтение из памяти
MRDC
1
1
0
Запись в память
MWTC.AMWC
1
1
1
Пассивное
-
Выходные командные сигналы и сигналы управления вырабатываются контроллером под управлением входных сигналов ЮВ, CEN и AEN, определяющих режим работы контроллера, активность командных сигналов и возможность доступа к системной шине. Контроллер работает в двух режимах: с системной шиной и с шиной ввода — вывода.
Режим работы с системной шиной устанавливается путем подачи на вход ЮВ напряжения низкого уровня (ЮВ = 0). В этом режиме КШ формирует командные сигналы и сигналы ALE, DEN, DT/R управления фиксаторами адреса и шинными формирователями. В однопроцессорных системах, использующих МП ВМ86 в максимальном режиме, типовая схема включения КШ ВГ88 представлена на рис. 5.14. На входах формируются постоянные значения AEN = 0 и CEN = 1, разрешающие выдачу командных сигналов и сигналов управления. На выходе MCE/PDEN при таком включении формируется сигнал MCE, который используется в системах с каскадированием контроллеров прерывания для определения момента передачи номера ведомого контроллера, запрашивающего прерывание. Сигнал ALE служит для определения момента фиксации адреса, установленного на ЛШ в фиксаторах ИР82. Выходные сигналы DT/R и DEN используются для управления работой шинных формирователей. Сигнал DEN имеет высокий активный уровень, поэтому его следует инвертировать перед подачей на вход ОЕ шинных формирователей. На схеме рис. 5.18 сигнал DEN используется совместно с выходным сигналом SP/EN контроллера прерываний, который запрещает работу шинных формирователей, когда данные передаются из контроллера прерываний в МП.
Режим работы с СШ применяется в многопроцессорных системах, когда несколько МП требуют доступа к устройствам ввода — вывода и памяти, под-
Рис. 5.14. Ткповая схема подключения ВГ88 к ЦП
ключенных к системной шине. В этом случае каждый МП обслуживается своим контроллером и доступ к СШ имеет тот из них, контроллер которого получает
сигнал AEN разрешения доступа от арбитра шин (рис. 5.15). В случае предоставления доступа к СШ микропроцессору контроллер шины формирует ко
мандные сигналы по истечении ! 15 нс после поступления сигнала AEN, а также сигналы ALE, DEN, DT/R управления фиксаторами адреса и шинными формирователями.
Наряду с входом AEN для управления выдачей командных сигналов, а также сигналов управления используется вход CEN. Обычно он применяется в тех случаях, когда МП имеет доступ к двум шинам: системной и резидентной, причем каждой из них соответствует свое адресное пространство. Для формирования сигнала CEN в таких случаях используется дешифратор адресов, разделяющих адресное пространство между СШ и РШ, выход этого дешифратора (прямой и инверсный) служит в качестве сигнала CEN. Описанное включение КШ представлено на рис. 5.27.
Режим работы с шиной ввода — вывода устанавливается путем формирования сигнала 1ОВ = 1. Этот режим используется в тех случаях, когда контроллер управляет доступом к двум шинам: резидентной шине ввода — вывода и системной шине. Командные сигналы IORC, IOWC, AIOWC и INTA в этом режиме всегда разрешены, т. е. их появление не зависит от входного сигнала
AEN. Как только микропроцессор начинает выполнять команду ввода — вывода, формируется соответствующий командный сигнал, а также сигналы PDEN и DT/R управления моментом и направлением передачи данных по резидентной шине ввода — вывода. Системная шина в этом случае может работать только с памятью (или с устройствами ввода ■— вывода, отображенными на память), и МП получает доступ к СШ только по сигналу AEN от арбитра шин.
Рис. 5.15. Схема включения ВГ88 в режиме системной шины
Командные сигналы IORC, IOWC, AIOWC и INTA для работы с СШ не используются. В соответствии с выполняемой микропроцессором командой, требующей обращения к памяти, контроллер формирует нужный командный сигнал MRDC или MWTC, AMWTC, а также сигналы управления моментами фиксации адреса ALE, передачи данных DEN и игнорированием передачи данных по системной шине DT/R. Особенности включения системного контроллера, а также использования командных сигналов и сигналов управления в этом режиме иллюстрирует рис. 5.24.
Выходной сигнал MCE совместно с сигналом INTA используется в цикле подтверждения прерывания в системах с каскадированными контроллерами прерываний. Сигнал MCE формируется в режиме работы с системной шиной (ЮВ^=0). Когда МП отвечает на запрос прерывания, он выставляет код со
стояния S2 5150=000, по которому системный контроллер формирует два отрицательных импульса на выходе INTA. В ответ на первый импульс по ША и ШД не передается никакой информации. Перед началом второго импульса сигнал MCE заставляет ведущий контроллер прерываний выдать на ЛШ процессора код ведомого контроллера, запросившего прерывание. Этот код по
Рис. 5.16. Временные диаграммы работы ВГ88
сигналу ALE записывается в фиксатор адреса. По фронту второго импульса INTA ведомый контроллер, запросивший прерывание, выставляет вектор прерывания на системную шину данных, откуда он считывается ЦП.
В системах, использующих один контроллер прерываний, сигнал MCE не используется. В этом случае контроллер прерываний по второму импульсу INTA выставляет вектор на ЛШ процессора.
Выходной сигнал ALE формируется в каждом машинном цикле и служит для записи текущего адреса в фиксаторы адреса. Этот сигнал используется
также для фиксации кода состояния S2 SI SO МП в фиксаторах для распозна-
вания состояния останова, а также кода ведомого контроллера прерываний в системах с программируемым контроллером прерываний.
Входной сигнал управления CEN действует как определитель возможности использования командных сигналов, формируемых контроллером системной шины. При CEN = 1 КШ функционирует нормально, а при CEN = 0 все командные сигналы удерживаются в неактивном состоянии. Эти особенности используются для разделения адресного пространства и устранения адресных «конфликтов» между внешними устройствами, подключенными к системной и резидентной шине.
CENAENDENРОЁКЛЕЙКомандный сигналСЁКCENAENDENРОЁКЛЕЙКомандный сигналСЁКРис. 5.17. Временные соотношения сигналов ВГ88Рис. 5.17. Временные соотношения сигналов ВГ88
CEN
AEN
DEN
РОЁК
ЛЕЙ
Командный сигнал
СЁК
CEN
AEN
DEN
РОЁК
ЛЕЙ
Командный сигнал
СЁК
Рис. 5.17. Временные соотношения сигналов ВГ88
Рис. 5.17. Временные соотношения сигналов ВГ88
На рис. 5.16 приведены временные диаграммы работы КШ при активных сигналах на входах AEN, CEN. Для систем, использующих сигналы AEN и CEN для управления выдачей командных сигналов, временные соотношения приведены на рис. 5.17.
Арбитр шин К1810ВБ89
Арбитр шин К1810ВБ89 используется в многопроцессорных системах в качестве устройства, осуществляющего синхронизацию доступа множества МП к системной шине.
Структурная схема арбитра шин (АШ) приведена на рис. 5.18. Дешифратор состояний в зависимости от кода состояния МП (ВМ86, ВМ87 или ВМ89) запускает схему приоритетного арбитража, интерфейсы Multibus и местной шины на выполнение действий по захвату или освобождению системной шины. Схема приоритетного арбитража производит арбитраж микропроцессоров, запрашивающих управление системной шиной, и по тактовому сигналу МП, занимающего шину, осуществляет действия по ее освобождению. Интерфейс Multibus осуществляет процедуру взаимодействия арбитров шины многопроцессорной системы и синхронизирует действия по захвату системной шины. Интерфейс местной шины формирует сигнал разрешения доступа к системной шине для шинного интерфейса МП (контроллеру шины ВГ88, фиксаторам адреса ИР82/ИР83 и шинным формирователям ВА88/ВА87). Устройство уп- 162
равления осуществляет синхронизацию и управление режимами работы арбитра шин со стороны МП.
Рис. 5.1В. Структурная схема АШ ВБВ9
Назначение выводов (рис. 5.19).
S2 — SO — входы сигналов состояния микропроцессора ВМ86/ВМ87 или ВМ89. Арбитр шин фиксирует эти сигналы и начинает действия по захвату, удержанию или освобождению системной шины.
CLK — входные сигналы от генератора тактовых импульсов ГФ84 синхронизирует действие арбитра шин с действиями микропроцессора.
LOCK — сигнал запрета освобождения системной шины. Микропроцессор вырабатывает этот сигнал, запрещая арбитру освобождать системную шину для любого другого арбитра, запрашивающего управление шиной, независимо от его приоритета.
SO 51 SO
BA
ББЁб ВЙЮ BUSY CBKq
TRIT БсЕк ВРВЯ
LOCK CLK СШСК RESB ANYRQST ЮБ
SHE
SYSB/RESB
Рис. 5.19. Условное графическое обозначение АШ ВБВ9
CRQLCK— сигнал запрета освобождения системной шины при ее запросе по входу CBRQ.
ANYRQST — вход разрешения освобождения системной шины при любом запросе. Активный сигнал ANYRQST = 1 позволяет арбитру освободить системную шину при запросе управления шиной арбитром с более низким приоритетом. Запрашивающий арбитр осуществляет захват шины в этом случае так, как если бы он был арбитром с более высоким приоритетом. Активный сигнал на входе ANYRQST в сочетании с активным сигналом на входе CBRQ = 0 заставляет арбитр освобождать системную шину после каждого цикла передачи.
RESB — вход выбора режима работы с резидентной шиной. Обеспечивает работу арбитра шин в многопроцессорных системах, имеющих как системную, так и резидентную шину. При входном сигнале RESB=1 системная шина запрашивается или освобождается как функция входного сигнала SYSB/RESB. При RESB = 0 входной сигнал SYSB/RESB не влияет на работу
SYSB/RESB— вход разрешения доступа к системной шине для арбитра, установленного в режим работы с системной и резидентной шиной. Сигнал SYSB/RESB обычно формируется дополнительным дешифратором, подключенным к резидентной шине адреса. Смена значения сигнала SYSB/RESB разрешена в период времени от четвертого такта текущего цикла до начала второго такга следующего цикла МП. В период от второго такта до начала четвертого такта цикла МП изменение сигнала SYSB/RESB приводит к неопределенности по захвату и освобождению системной шины. При SYSB/RESB —1 арбитр запрашивает системную шину, при SYSB/RESB=О он освобождает системную шину другому арбитру, запрашивающему управление ею.
IOB — вход выбора режима работы с периферийной шиной ввода — вывода. Обеспечивает работу арбитра шины в многопроцессорных системах, имеющих как системную шину, так и периферийную шину ввода — вывода. При ЮВ = 0 арбитр запрашивает и освобождает системную шину в зависимости от значения сигнала S2: при выполнении микропроцессором команд ввода — вывода (S2 = 0) арбитр освобождает системную шину, а при выполнении команд обращения к памяти (S2=l) он захватывает управление системной шиной.
AEN — выход разрешения доступа к системной шине. Сигнал AEN = O переводит фиксаторы адреса, шинные формирователи и тактовый генератор МП в активное состояние и позволяет ему управлять системной шиной. Сигнал AEN = 1 снимает сигнал готовности со входа МП и переводит выходы фиксаторов адреса и шинных формирователей в высокоомное состояние.
IN IT — начальная установка. Используется для начальной установки всех шинных арбитров, связанных с системной шиной. После начальной установки никакой арбитр не имеет доступа к управлению системной шиной. Дли-
тельность импульса INIT должна быть не менее суммы трех периодов CLK и трех периодов BCLK.
BCLK — вход синхронизации системной шины. На него подаются тактовые импульсы от шинного тактового генератора, осуществляющего синхронизацию действий всех арбитров шин по захвату системной шины. В качестве шинного тактового генератора может служить генератор тактовых импульсов одного из МП многопроцессорной системы.
BREQ — сигнал запроса шины. Используется в схемах параллельного и циклического разрешения приоритета для запроса управления системной шиной.
BPRN — вход приоритетного разрешения доступа к шине. Сигнал BPRN = О указывает арбитру шины, что в системе нет другого арбитра с более высоким приоритетом, который запрашивал бы управление шиной. Сигнал BPRN = 1 указывает арбитру на то, что он потерял приоритет по отношению к другому арбитру. В дальнейшем появление сигнала BPRN = 0 разрешает арбитру вновь захватить системную шину при переходе сигнала BCLK, от высокого уровня к низкому.
BPRO — выход приоритетного разрешения доступа к шине используется в системах со схемой последовательного арбитража, в которых выход BPRO соединен со входом BPRN арбитра с более низким приоритетом. Сигнал BPRO = О выдается арбитром, получившим сигнал BPRN = О, но не запрашивающим управление шиной, и подается на вход BPRN следующего арбитра с более низким приоритетом.
BUSY-- вход/выход занятости шины. Сигнал BUSY = 0 выдается арбитром, получившим управление системной шиной, и служит для указания другим арбитрам, что системная шина занята. Выводы всех шинных арбитров системы имеют выход с открытым коллектором и объединены по линии BUSY. Когда какой-либо арбитр захватывает управление шиной, он выдает сигнал BUSY = 0 и запрещает доступ к управлению шиной другим арбитрам системы. По окончании работы с шиной арбитр выдает сигнал BUSY=1, разрешая тем самым другим арбитрам захватить шину.
CBRQ — вход/выход общего запроса шины. В качестве входного сигнал CBRQ = О сообщает арбитру шин о том, что в системе имеются другие арбитры с более низким приоритетом, запрашивающие управление системной шиной. Сигнал CBRQ = 1 сообщает, что таких арбитров нет и, следовательно, арбитр может продолжать управление, что исключает процедуру захвата шины. В качестве выходного сигнал CBRQ = О выдается арбитром, который в данный момент не управляет шиной, но хочет получить доступ к управлению. Выводы CBRQ всех арбитров системы, аналогично выводам BUSY, имеют выход с открытым коллектором и объединены по линии CBRQ.
Функционирование. В многопроцессорных системах, содержащих как системную, так и резидентную шину, каждый МП может подключиться к одной или более шинам. В то же время два или более МП могут подключаться к одной шине. В первом случае требуется определить, к какой шине должен быть подключен МП, во втором — какой МП обладает большим приоритетом и, следовательно, какому МП должен быть обеспечен доступ к шине. Решение подобных вопросов осуществляется арбитрами шин.
Рис. 5.20. Ткповая схема включения АШ ВБВ9
На рис. 5.20 изображены два МП (ведущий и ведомый), подключенные к локальной шине. Наличие связи микропроцессоров по линии RQ/GT обеспечивает выход на ЛШ только одного МП (выходы другого переходят в высокоомное состояние). Схема шинного интерфейса (СШИ) подключает локальную шину к внешней, причем одна ЛШ может подключаться к любому числу внешних и для каждого такого подключения требуется своя СШИ. На рис. 5.20 показаны две СШИ: одна подключает ЛШ к резидентной шине, используемой только данной парой МП, другая — к системной шине, используемой другими МП многопроцессорной системы. СШИ состоит из фиксаторов адреса ИР82/ИР83, шинных формирователей ВА86/ВА87 и системного контроллера К1810ВГ88. Арбитр шин использует входы S2 — S0 для определения того, что МП требуется системная шина и он разрешает доступ к ней, если этому не препятствует схема приоритетного арбитража, т. е. если в системе нет других МП с более высоким приоритетом, использующих СШ. Когда АШ, выдавая сигнал AEN = 0, разрешает доступ своему микропроцессору к СШ, он становится активным. Если СШИ системной шины отключена, то
АШ пассивен, и в это время микропроцессор не имеет доступа к СШ и может использовать только РШ.
Из пассивного состояния в активное АШ переходит всякий раз, когда того потребует МП (кодом состояния S0S1S2), и СШ оказывается свободна, т. е. нет запроса на нее от другого АШ, обслуживающего МП с более высоким приоритетом. Эта же схема приоритетного арбитража заставляет АШ освободить СШ при поступлении запроса с более высоким приоритетом. В общем случае можно считать, что АШ осуществляет связь СШ с одним ведущим и его ведомым (если он есть) МП. При этом МП «не знает» о существовании АШ и выполняемая им программа «не заботится» о доступе к шинам. АШ становится активным и начинает управление СШ, как только начнется цикл обращения МП к шине, требующий доступа. В этот цикл вводятся такты ожидания, чтобы предоставить арбитру необходимое время для захвата шины. После этого АШ разрешает доступ к СШ своему МП, пока для этого существуют условия. Таким образом, МП выполняет один длинный цикл обращения к шине с внесением тактов ожидания TW каждый раз при захвате СШ арбитром и обычные циклы, пока АШ удерживает системную шину.
Рис. 5.21. Активное и пассивное состояние обжейРис. 5.21. Активное и пассивное состояние обжейлинии занятостилинии занятостиСШ (свободна)СШ (свободна)♦ 5 В♦ 5 ВАШАШBUSV-1BUSV-1б)б)
Рис. 5.21. Активное и пассивное состояние обжей
Рис. 5.21. Активное и пассивное состояние обжей
линии занятости
линии занятости
СШ (свободна)
СШ (свободна)
♦ 5 В
♦ 5 В
АШ
АШ
BUSV-1
BUSV-1
б)
б)
Арбитр шин считает СШ занятой или свободной в зависимости от значения сигнала BUSY. Выводы BUSY всех АШ многопроцессорной системы объединяются в общую линию занятости (рис. 5.21). Сигнал BUSY = 0 выставляется на выходе активного АШ и на входах всех других арбитров, находящихся в пассивном состоянии (рис. 5.21, а). Это означает, что системная шина занята. Если ни одному МП системы не требуется доступ к СШ, то все арбитры становятся пассивными и общий сигнал BUSY=1 означает, что СШ свободна (рис. 5.21,6). Свободный или пассивный АШ может анализировать входной сигнал BUSY для определения занятости системной шины.
Захватив управление шиной, АШ сохраняет его до наступления условий освобождения. Обычно условие освобождения наступает, когда МП выполняет команду HALT или NOP (S2S1 SO равно 011 или 111) или когда BPRN = 1, что указывает на наличие запроса с более высоким приоритетом. Однако если АШ получает входной сигнал LOCK = 0, то он сохраняет управление шиной на все время действия этого сигнала, что блокирует все условия освобождения
шины. Продолжая удерживать выходной сигнал BUSY = 0, АШ заставляет схему приоритетного арбитража не реагировать на запросы от других АШ с более высоким приоритетом. Сигнал CRQLCR действует подобно сигналу LOCK, но его действие ограничено только сигналом запроса шины CBRQ. Если АШ попытается освободить шину по запросу CBRQ = 0, то активный сигнал CRQLCR = О воспрепятствует этому. Сигнал ANYRQST заставляет арбитр освободить шину при появлении любого условия освобождения. Полные сведения об условиях освобождения и удержания СШ сведены в табл. 5.2.
Таблица 52
LOCK
BPRN
CRQLCK CBRQ
ANYRQST
0
X
X
X
X
Удержание шины
1
0
0
0
X
То хе
1
0
0
1
X
> >
1
0
1
0
0
Условное освобождение шины1)
1
0
1
0
1
Безусловное освобождение шины
1
0
1
1
X
Удержание шины
1
1
X
X
X
Безусловное освобождение шины
i> АШ
освобождает
шину только в том случае, когда его МП нахо-
дится
в состоянии
S2S1S0
= Oil или
111.
Входной сигнал
Реакция арбитра шин
В зависимости от конфигурации многопроцессорной системы может быть задано четыре различных режима работы АШ. Для задания режимов работы арбитра служат два входа: ЮВ и RESB. Сигнал на входе SYSB/RESB играет вспомогательную роль и служит для определения условий доступа к СШ.
Рис. 5.22. Схема подключения АШ к системной шине
Режим работы с системной шиной задается установкой сигналов ЮВ = = 1 и RESB = 0 (вход SYSB/RESB игнорируется). Эта комбинация сигналов соответствует подключению МП только к одной системной шине, как показано на рис. 5.22. Как только МП потребуется выполнить цикл обращения к СШ, он
выставляет соответствующий код состояния на входах S2 — SO арбитра. Если внешняя схема приоритетного арбитража разрешает арбитру захват СШ
(BPRN = 0), он, получив доступ, будет его удерживать до возникновения услоу вий освобождения. Пока АШ имеет доступ к СШ, он формирует сигнал AEN = 0, разрешая МП использовать СШ. Поскольку часто в подобных конфигурациях отдельные МП синхронизируются от своих генераторов тактовых импульсов, общая синхронизация работы СШ осуществляется отдельным тактовым генера
тором шины. Исходя из этого переход сигнала AEN в активное состояние (1->
->0) синхронизируется импульсами BCLK, а обратный переход (0->1) —
импульсами CLK (рис. 5.23).
Рис. 5.23. Временные диаграммы сигналов CLK, BCLK и AENРис. 5.23. Временные диаграммы сигналов CLK, BCLK и AEN
Рис. 5.23. Временные диаграммы сигналов CLK, BCLK и AEN
Рис. 5.23. Временные диаграммы сигналов CLK, BCLK и AEN
Режим работы с системной шиной памяти и резидентной шиной ввода — вывода задается установкой сигналов IOB = RESB = 0 и SYSB/RESB = O. Эта комбинация сигналов соответствует подключению МП к системной шине, к ко-
Рис. 5.24. Схема подключения АШ к резидентной шинеРис. 5.24. Схема подключения АШ к резидентной шине
Рис. 5.24. Схема подключения АШ к резидентной шине
Рис. 5.24. Схема подключения АШ к резидентной шине
торой подключена только память, и к резидентной шине, обслуживающей
только устройства ввода — вывода (рис. 5.24). В этом режиме сигнал AEN = 0 вырабатывается арбитром только в тех случаях, когда микропроцессору требуется осуществить доступ к памяти (при наличии сигнала разрешения от внешней схемы приоритетного арбитража BPRN=0). Доступ к резидентной шине ввода — вывода предоставлен микропроцессору всегда при выполнении команд ввода — вывода (IN и OUT) сигналом PDEN = 0. Схема шинного интерфейса, обеспечивающего связь ЛШ с РШ ввода — вывода, в этом случае обычно не содержит системного контроллера ВГ88. Его функции выполняет системный контроллер СШИ1, осуществляющий связь ЛШ и СШ и установленный в режим 1ОВ=1. При этом командные сигналы управления памятью (MRDC, MWTC) поступают на СШ, а командные сигналы управления вводом — выводом (1ORC, IOWC), а также сигнал INTA — на РШ. Полная схема вклю- СШ памяти
Rim ИИ5С ЙИТС ВНЕ А19 - ЙО D15 - DO
BBS'S №
РШ ввода - вывода
Рис. 5.25. Схема включения АШ для
режима с системной и резидентной шинами
чения арбитра шин и схем шинного интерфейса в данном режиме приведена на рис. 5.25.
Подключая внешний дешифратор к адресным линиям ЛШ, можно перенести часть пространства адресов памяти на устройства ввода — вывода рези-
дентной шины (рис. 5.26). При этом можно использовать проекцию адресов для разделения адресного пространства устройства ввода — вывода между СШ и РШ и подключить его к СШ с отображением на память.
Рис. 5.26. Схема разделения адресного пространства ЧВВ между СШ и РШ
Режим работы с системной шиной и резидентной шиной задается установка сигналов IOB = RESB = 1. Эта комбинация сигналов используется в системах, где имеются как системная, так и резидентная шины, причем каждая из них обеспечивает доступ к памяти и УВВ (рис. 5.27). Сигнал AEN = 0,
обеспечивающий доступ к СШ, вырабатывается, когда SYSB/RESB = 1 (если арбитр шин активен, т. е. в системе нет арбитров с более высоким приоритетом, которые используют СШ). Для формирования сигнала, обеспечивающего раз-
решение доступа к СШ SYSB/RESB = 1 либо к РШ SYSB/RESB=O, можно использовать любой дешифратор адресов, подключенный к ЛШ. Полная схема включения АШ и СШИ в этом режиме приведена на рис. 5.28.
СШ памяти
RfiDC Ж ®Ж ВНЕ
РШ ввода - вывода
Рис. 5.28. Схема включения АШ и СШИ
Режим работы с системной шиной памяти, резидентной шиной и резидентной шиной ввода — вывода задается установкой сигналов ЮВ = 0 и RESB = = 1. Эту комбинацию сигналов можно использовать в системах, где наряду с системной шнной, обеспечивающей доступ только к памяти, имеются две резидентные шины. Одна РШ осуществляет доступ как к памяти, так и к УВВ, другая — только к УВВ. Если учесть, что все пространство адресов ЛШ разбито на две части (адресное пространство памяти и адресное пространство УВВ), то использование РШ только для связи с УВВ нецелесообразно, так как через нее был бы обеспечен доступ к тем же внешним устройствам, что и через первую РШ. Поэтому данный режим редко используется на практике.
При функционировании арбитра шин в любом режиме важны только два процесса: захват шины и ее освобождение. Чередование пассивных («—») и активных (« + ») состояний АШ происходит в соответствии с табл. 5.3 и не представляет особого интереса.
Таблица 5.3
Состояние МП
Состояние АШ
К1810ВМ86К1810ВМ89S2 SI S0
а Ъ с
Подтверждение прерывания Выборка команды по ЛШ000
+ - -
Чтение из УВВЧтение по ЛШ001
+--
Запись в УВВЗапись по ЛШ010
ОстановПассивное состояние011
---
Выборка командыВыборка команды по СШ100
+ - +
Чтение из ЗУЧтение по СШ101
+ - +
Запись в ЗУЗапись по СШ110
+ - +
Пассивное состояниеНет отрицаний111
---
Примечание. "+" означает активное состояние АШ; "-" - пассивное состояние АШ; а - режим АШ, соответствующий (ЮВ RESB SYSB/RESB) = (111), или (100), или (101); Ъ - (110) или (010); с - (000), или (001), или (011).
Захват шины арбитром осуществляется при наличии условия доступа к СШ (табл. 5.3). Последовательность захвата шины начинается, когда МП, который не управляет шиной, выполняет команду, требующую доступа к СШ. К этому моменту АШ пассивен и, как только он получит код соответствующего состояния S2--S0, переходит в активное состояние. В зависимости от состояния других арбитров системы данный АШ может начать захват немедленно или после некоторой временной задержки. В любом случае первый цикл обращения к СШ должен обеспечить АШ время для захвата шины. Поэтому сюда добавляются такты ожидания TW меж ту периодами ТЗ и 1'4 первого цикла.
На рис. 5.29 представлены временные диаграммы последовательности захвата в зависимости ог режима работы АШ. На этих трех диаграммах действительная смена состояния МП, происходит в точке А. Считывание кода состояния S2 SI S0 в АШ синхронизируется шинным тактовым генератором следующим образом. Ксида RESB = 0 (рис. 5.29, а, б) синхронизация с шинным тактовым генератором осуществляется в точке В по первому срез> BCLK после установления сигнала CLK = 1 в такте ТЕ Когда RESB = = 1 (рис. 5.33, в), синхронизация в точке В происходит во время первого среза BCLK при CLK — 1 в такте Т2. По истечении одного периода сигнала BCLK арбитр считывает состояние МП и переводит выходные сигналы BREQ и CBRQ в
активное состояние (точка С). Далее, если системная шина свободна (BUSY = 1) и сигнал BPRN = 0 не вносит временной задержки, то через один период BCLK устанавливается выходной сигнал BUSY = 0 и одновременно выходной сигнал CBRQ становится равным единице (точка D). В ряде случаев возникает неопределенная ситуация, связанная с взаимным расположением фронтов тактовых импульсов CLK и BCLK, что иллюстрируется рис. 5.29, б, где срез сигнала BCLK формируется приблизительно по срезу сигнала CLK—1 в такте ТЕ В этом случае состояние МП может быть записано в АШ немедленно (сплошные линии) либо через один период сигнала BCLK штриховые линии. Соответ-
Рис. 5.29. Временные диаграммы АШ в режиме захвата
ственно появляется зависящая от режима максимальная и минимальная задержка между действительной сменой состояния МП (точка А) и выдачей
сигнала запроса шины BREQ (точка С). Эти задержки приведены в табл. 5.4 для различных режимов работы АШ.
Освобождение шины арбитром осуществляется в зависимости от условий (см. табл. 5.2), определенных входными сигналами LOCK, BPRN, CRQLCK, 174
Таблица 5.4
Режим работы АШ
Задержка в тактах
IOB
RESB
max
mln
0
0
2Tbclk + Tclk
Tbclk + 0,5Tclk
0
1
2Tbclk + 2Tclk
Tbclk + 1,5Tclk
1
0
2Tbclk
Tbclk
1
1
2Tbclk + 2Tclk
Tbclk + 1,5Tclk
CBRQ, ANYRQST и состоянием МП. Последовательность освобождения шины иллюстрирует рис. 5.30.
Рис. 5.30. Временная диаграмма освобождения шины арбитром
Организация приоритетного арбитража. Было показано, что процессы захвата, удержания и освобождения шины арбитром включают анализ соответствующих условий. Каждый АШ многопроцессорной системы обладает по отношению к другим арбитрам определенным приоритетом, который может быть установлен путем реализации различных методов приоритетного арбитража. Арбитр шины ВБ89 обеспечивает реализацию трех методов: параллельного, последовательного и циклического разрешения приоритетов. Каждый метод реализуется с помощью определенной схемы объединения арбитров.
Рис. 5.31. Схема параллельного разрешения приоритетов
Схема параллельного разрешения приоритетов (рис. 5.31) обладает наиболее широкими возможностями. Для ее реализации необходимо использовать
дополнительный приоритетный контроллер, состоящий из шифратора приоритетов и дешифратора. Сигналы с выхода запроса шины BREQ каждого АШ подаются на входы шифратора приоритетов, который формирует двоичный код запроса с наибольшим приоритетом. Этот код дешифруется, и на вход BPRN выбранного АШ подается сигнал разрешения доступа к шине. Этот сигнал позволяет арбитру осуществлять операции по захвату системной шины.
Схема циклического разрешения приоритетов аналогична схеме рис. 5.31 с той разницей, что в ней усложняется приоритетный контроллер. Шифратор контроллера заменяется на более сложную логическую схему, которая циклически переназначает приоритеты между запрашивающими арбитрами, позволяя тем самым каждому АШ использовать системную шину в порядке очередности.
Рис. 5.32. Схема последовательного разрешения приоритетов
Схема последовательного разрешения приоритетов (рис. 5.32) является наиболее простой и исключает необходимость в приоритетном контроллере. В этом случае АШ соединяются между собой последовательно. Выход приоритетного разрешения доступа BPRQ арбитра с более высоким приоритетом соединяется со входом приоритетного разрешения доступа BPRN арбитра с более низким приоритетом. У арбитра шин с высшим приоритетом (АШ1) вход BPRN «заземляется». Если микропроцессор арбитра с более высоким приоритетом не использует СШ, то он передает полученный приоритет следующему за ним АШ. При таком соединении приоритет к последнему арбитру приходит с задержкой, связанной с процессом передачи приоритета от арбитра к арбитру. Так как распределение СШ должно производиться за один период сигнала BCLK, то при тактовой частоте до 10 МГц возможно последовательное соединение не более трех арбитров.
Взаимодействие АШ, включенных по схеме последовательного разрешения приоритетов, поясняется временными диаграммами (рис. 5.33). Положим арбитр АШ1 удерживает шину и формирует сигнал BUSY = 0. Арбитр АШ2 запрашивает доступ к шине, формируя сигнал запроса шины BREQ2 = 0. Поскольку в этот момент времени BPRN2=1, арбитр АШ2 выдает выходной сигнал общего запроса CBRQ, сообщая арбитру АШ1 по входу CBRQ, что арбитр с более низким приоритетом запрашивает доступ к шине. Когда арбитр 176
АШ1 освободит шину, он формирует сигнал BPRO = 0, связанный со входом BPRN2 арбитра АШ2, и выходной сигнал BUSY=1. Арбитр АШ2, получив сигнал входного приоритета BPRN2 — 0, формирует сигнал CBRQ=1 и занимает шину по отрицательному фронту BCLK, формируя выходной сигнал BUSY = G.
Рис 5.33. Временные диаграммы основных сигналов АШ
Арбитру с более высоким приоритетом при запросе доступа к шине приоритет возвращается быстрее, чем другой АШ успеет захватить системную шину, запрашивая ее сигналом CBRQ.
Контроллер динамической памяти K181SBT03
Организация памяти в МПС на базе МПК К1810. Объем адресуемых ячеек памяти МПС определяется шириной шины адреса (20 двоичных разрядов) и составляет 1 Мбайт. Адресуемой единицей в МПС является либо байт, либо слово в 16 двоичных разрядов. Для хранения слов используются две последовательно расположенные ячейки памяти, причем в четных адресах хранится младший байт слова, в нечетных — старший. Меньший адрес является адресом слова. В случае выполнения команд, оперирующих с байтами, используются только ячейки с этим адресом, другой байт игнорируется. ЦП КР1810ВМ86, выполняя команды, имеющие обращение к памяти, вырабатывает сигнал разрешения передачи старшего байта ВНЕ, который совместно с кодом на адресной линии АО определяет, к какой единице данных выполняется обращение. Если ВНЕ и АО равны 00, то выполняется обращение к слову; если ВНЕ = 0, АО = 1 — к старшему байту слова; если ВНЕ= 1, А0 = 0 — к младшему.
Требование размещения слов, начиная с четных адресов, не является обязательным. Если ЦП выполняет команды, имеющие адресацию к четным ячейкам, то такое обращение происходит за один машинный цикл; если к нечетным — то за два машинных цикла, игнорируя в каждом ненужную половину слова (байт). Такой механизм позволяет программисту использовать все ячейки памяти без пропусков, правда, за счет снижения производительности системы.
Механизм формирования физических адресов выполняется в ЦП с помощью сегментных регистров. В любой момент времени программа может выбирать содержимое четырех функционально ориентированных сегментов: кодового, данных, стекового и экстракодового. ЦП формирует 20-разрядный адрес байта или слова путем прибавления 16-разрядного адреса смещения к 20-разрядному коду, 16 старших разрядов которого являются содержимым соответствующего сегмента, а 4 младших разряда равны нулю.
Все поле памяти МПС на базе БИС серии К1810 можно представить в виде массива ячеек (1 Мбайт), разбитых на сегменты, по 64 байта в каждом. При адресации к памяти кроме 20-разрядного адреса используется сигнал ВНЕ, определяющий цикл обращения к слову или старшему байту слова.
Для построения памяти МПС используются различные ИС. В настоящее время широко применяют ИС ЗУ динамического типа, имеющие ряд достоинств, прежде всего высокую плотность упаковки в малую потребляемую мощность. Особенностью элементов памяти ЗУ динамического типа является то, что информация в них запоминается на емкости р-п-перехода МДП-транзистора, т. е. для ее хранения требуется всего один транзистор. Однако разряд емкости может привести к потере информации, поэтому необходимо периодически (через 1...2 мс) производить подзаряд этой емкости. Эта операция называется регенерацией. Отличие цикла регенерации от цикла чтения/записи заключается в том, что в цикле регенерации адресные входы ЗУ отключаются от адресных линий МПС и подключаются к специальному счетчику адресов регенерации. Так как элементы памяти организованы в виде матрицы, то циклы регенерации проводят только по адресам строки, что приводит к полной регенерации памяти за малое число циклов.
Таблица 5.5
Тип ИС
Емкость ЗУ Время вы- Удельная потре-Тип корпуса
борки, мс бляемая мощность, мвт/бит
565РУ1А
565РУЗ
565РУ5
565РУ6
565РУ7
565РУ8
565РУ9
4К х12000,12210А.22-1
16К х12000,04201.16-17
64К х12000,012103.16-5
16К х12000,012103.16-5
256К х12000,01-
256К х11200,01-
IM х11200,01-
Наиболее распространенными элементами динамической памяти являются ИС серии К565, основные характеристики которых приведены в табл. 5.5.
В качестве примера рассмотрим функционирование ИС ЗУ К565РУ5, представляющей элемент памяти емкостью 64XL организованной в матрицу в 128 строк и 512 столбцов. Структурная схема ЗУ приведена на рис. 5.34, где DI и DO — соответствующие информационные входы и выходы, WE — вход управления чтением/записью, А7—АО — адресные входы, RAS — вход выборки строки, CAS — вход выборки столбца. Для выборки строки используются только семь младших разрядов адреса.
А7- АО
Рис. 5.34. Структура ИС РЧ5 DIDO
Интегральная схема РУ5 имеет только восемь адресных линий, поэтому для получения полного 16-разрядного кода адреса используется мультиплексированный режим. Сначала на входы А7—АО подаются младшие восемь разрядов полного адреса, которые запоминаются во внутреннем адресном регистре по сигналу RAS, затем на эти линии подаются старшие восемь разрядов адреса, которые запоминаются по сигналу CAS. Эти же два сигнала выполняют роль сигнала управления выборкой ИС, т. е. сигнала, открывающего выходной буфер. Сигнал WE выполняет функцию чтения/записи. Сигнал WE= 1 означает чтение содержимого выбранной ячейки на выход DO. Сигнал WE = 0, дей-
ствующий совместно с сигналами RAS и CAS, означает запись состояния входа DI в выбранную ячейку памяти.
Для обеспечения полного цикла регенерации необходимо на адресные входы Аб—АО подать последовательно все 128 адресов в сопровождении сигна
ла RAS. В формировании сигналов CAS и WE нет необходимости. Следует отметить, что при регенерации входы/выходы микросхемы остаются в z-co- стоянии, т. е. цикл регенерации происходит внутри ИС. Время регенерации не более 250 нс, что не превышает машинного такта ЦП.
Контроллер динамической памяти (КДП) К1810ВТ03 используется в качестве устройства управления ОЗУ микропроцессорных систем на базе МПК серий К580, К1810, К1821, а также для создания функционально независимых модулей динамических ОЗУ. Контроллер вырабатывает все необходимые сигналы управления чтением, записью и регенерацией для ОЗУ емкостью 4К, 16К,
64К и более, выполненного на элементах памяти серии К565.
Контроллер относится к классу многофункциональных схем и может работать в нескольких режимах, которые задаются подачей на специальные входы КДП напряжений высокого или низкого уровня. Таким образом, КДП задаются режимы работы с ОЗУ емкостью 4К, 16К или 64К слов. При использовании дополнительных схемных решений КДП может быть использован для ОЗУ большей емкости. Кроме того, контроллеру могут быть заданы режимы внутренней или внешней регенерации, опережающего чтения, работы с внешним или внутренним генератором. КДП предназначен для построения как функционально независимых модулей, так и модулей, выполненных в стандарте Multibus.
Назначение выводов КДП (рис. 5.35).
AL6—AL0 — адресные входы младшего байта ячеек ОЗУ.
8 8 10 12 И.11 11 515 4 3_ 5_ 1_31 31 5131 31 31 34 318 8 10 12 И.11 11 515 4 3_ 5_ 1_31 31 5131 31 31 34 31- AL0 - AL1- AL2 - AL3- AL4- AL5 - ALG - AL7DRC6UTD 0UT1 0UT2 0UT3 0UT4 OUTS 0UT8 0UT779U13_J517192321-АНО - АН1 - АН2 - АНЗ - АН4 - АН5 - АН6 - АН7KASO RAS1 RAS3 CAS.52232256ЙЕ53HACK SACK3536PCS ГО-ПК ALE 16/йЙО Я13240UCcGND55- AL0 - AL1- AL2 - AL3- AL4- AL5 - ALG - AL7DRC6UTD 0UT1 0UT2 0UT3 0UT4 OUTS 0UT8 0UT779U13_J517192321-АНО - АН1 - АН2 - АНЗ - АН4 - АН5 - АН6 - АН7KASO RAS1 RAS3 CAS.52232256ЙЕ53HACK SACK3536PCS ГО-ПК ALE 16/йЙО Я13240UCcGND55Рис. 5.35. Условное графическое обозначение КДП ВТОЗРис. 5.35. Условное графическое обозначение КДП ВТОЗАН6—АНО — адресные входы старшего байта ячеек ОЗУ.
8 8 10 12 И.
11 11 51
5 4 3_ 5_ 1_
31 31 51
31 31 31 34 31
8 8 10 12 И.
11 11 51
5 4 3_ 5_ 1_
31 31 51
31 31 31 34 31
- AL0 - AL1
- AL2 - AL3
- AL4
- AL5 - ALG - AL7
DRC
6UTD 0UT1 0UT2 0UT3 0UT4 OUTS 0UT8 0UT7
7
9
U
13
_J5
17
19
23
21
-АНО - АН1 - АН2 - АНЗ - АН4 - АН5 - АН6 - АН7
KASO RAS1 RAS3 CAS
.52
23
22
56
ЙЕ
53
HACK SACK
35
36
PCS ГО
-ПК ALE 16/й
ЙО Я1
32
40
UCc
GND
55
- AL0 - AL1
- AL2 - AL3
- AL4
- AL5 - ALG - AL7
DRC
6UTD 0UT1 0UT2 0UT3 0UT4 OUTS 0UT8 0UT7
7
9
U
13
_J5
17
19
23
21
-АНО - АН1 - АН2 - АНЗ - АН4 - АН5 - АН6 - АН7
KASO RAS1 RAS3 CAS
.52
23
22
56
ЙЕ
53
HACK SACK
35
36
PCS ГО
-ПК ALE 16/й
ЙО Я1
32
40
UCc
GND
55
Рис. 5.35. Условное графическое обозначение КДП ВТОЗ
Рис. 5.35. Условное графическое обозначение КДП ВТОЗ
B0/AL7, В1/ОР1/АН7 — входы выбора банка, выполняющие различные функции в зависимости от выбранного режима. Для режима 16К выводы ВО, В1 выполняют функцию выбора банка и участвуют в формировании сигналов на одном из выходов RASO, RAS1, RAS2, RAS3. Для режима 64К эги входы являются соответствующими адресными линиями AL7, АН7.
PCS — защищенный выбор кристалла. Сигнал низкого уровня на этом входе инициализирует выполнение функций чтения/залиси в ЗУ, причем если сигнал сформирован, то никл памяти аннулировать нельзя.
WR — входной сигнал, указывающий КДП на то, что ЦП выполняет функции записи данных в ЗУ. Участвует в формировании сигнала WE.
RD/S1 — входной сигнал, указывающий КДП на то, что ЦП выполняет функцию чтения данных из ЗУ. Сигнал S1 используется в режиме опережающего чтения совместно с сигналом ALE.
REFRQ/ALE — запрос регенерации. Для режима опережающего чтения этот вход (ALE) используется для инициализации цикла чтения и подключается к выходу ALE центрального процессора.
OUT6— оито — выходные сигналы адресов строк и столбцов ЗУ. Вырабатываются в правильной последовательности (сначала младший, затем старший байты) в сопровождении сигналов RAS и CAS. В режиме регенерации на этих входах формируются адреса регенерируемых строк.
WE—инициализация записи, выходной сигнал (строб), исполозуе- мый для выполнения функции записи данных в ЗУ.
CAS — строб адреса столбца. Выходной сигнал, вырабатываемый после формирования на выходах OUT6 — OUT0 старшего байта ЗУ, с помощью которого осуществляется запись (защелкивание) на внутренних регистрах ИС ЗУ старшего байта адреса.
RASO, RAS1, RAS2/OUT7, RAS3/B0 — стробы адреса строки. Выходные сигналы, выполняющие различные функции в зависимости от выбранного режима. В режиме 16К все четыре сигнала являются стробами младшего байта адреса ЗУ для различных банков и выполняют аналогичную функцию как и сигнал CAS. Низкий уровень сигнала на одном из выходов (RASO —RAS3) вырабатывается в зависимости от кода на входах ВО, В1. В режиме 64К стробами адреса являются только линии RASO, RAS1. Выход OL,T7 является выходной линией старшего разряда адресов строк и столбцов, а выход ВО используется для выбора банка ЗУ. При В0 = 0 формируется строб банка О (RASO), при ВО = 1 —строб банка 1 (RAS1).
ХАСК готовность данных. Выходной сигнал, вырабатываемый КДП в конце цикла чтения/записи и сообщающий ЦП об окончании цикла взаимодействия.
SACK — готовность системы. Выходной сигнал, вырабатываемый КДП в начале цикла обращения к памяти. Если запрос к памяти от ЦП приходится на цикл регенерации, то SACK задерживается до начала цикла чтения/записи.
Х0/ОР2, X1/CLK - выходные линии для подключения внешнего кварцевого резонатора (рис. 5.37). Если вход Х0/ОР2 подключать к шине питания + 5 В или через резистор сопротивлением 1 кОм к шине питания +12 В, то вход X1/CLK используется для подключения внешнего генератора.
16К/64К — вход выбора режима. Сигнал высокого уровня на этом входе задает режим работы КДП с ОЗУ емкостью 16К слов, а сигнал низкого уровня — режим работы с ОЗУ емкостью 64К.
Ucc — шина питания +5 В.
GND — общий.
Структурная схема КДП (рис. 5.36) включает два функциональных блока,
один из которых принимает адреса ячеек памяти от ЦП и формирует их в мультиплексированном режиме в правильной последовательности на выходах OUT. Кроме того, в цикле регенерации на этих выходах формируются адреса регенерируемых строк. Блок включает: два буфера BD для приема от ЦП 16-разряд- ного адреса ячейки ОЗУ; счетчик/регистр MAR адресов регенерации; мультиплексоры MUX1, MUX2, с помощью которых осуществляется выдача на выходы OUT7—OUT0 младших и старших адресов или адресов строк регенерации (содержимое MAR) в правильной последовательности в сопровождении стробов RAS3—RAS0 и CAS.
Рис. 5.36, Структура КДП ВТОЗ
Второй функциональный блок выполняет операции синхронизации, арбитража и формирования полного набора управляющих сигналов для динамического ОЗУ и включает:
буфер BD для приема сигналов адресации, записи/считывания от ЦП;
триггер RG, обеспечивающий запоминание запроса на регенерацию от внешних источников;
счетчик/таймер RT, обеспечивающий необходимые запросы на регенерацию;
схему SYNC, обеспечивающую привязку входных сигналов к фронтам тактового генератора КДП;
арбитр А, разрешающий конфликты между запросами на регенерацию и к памяти;
генератор синхротактов SGW;
логическую схему LC, обеспечивающую формирование сигналов RAS, CAS, WE управления элементами ОЗУ, а также квитирующих сигналов ХАСК и SACK.
Контроллер динамической памяти обеспечивает прием запросов на циклы памяти от ЦП, формирует адреса ячеек ОЗУ в нужной последовательности, вырабатывает все сигналы управления циклами записи, чтения и регенерации, а также квитирующие сигналы ХАСК и SACK, сообщающие ЦП о завершении циклов памяти. Все фронты выходных сигналов КДП привязаны к фронтам тактовых сигналов, кроме сигналов ХАСК и SACK. КДП может работать в режиме с внутренним или внешним генератором. В режиме с внутренним генератором на входы ХО, XI подключен кварцевый резонатор (рис. 5.37). В режиме с внешним генератором используются тактовые сигналы ЦП, для чего вход Х0/ОР2 подключают к шине питания +5 В, а вход X1/CLK — к выходу тактового генератора ЦП.
Рис. 5.38. Схема с декодированием состояния ЦПРис. 5.38. Схема с декодированием состояния ЦПРис. 5.37. Схема подключения кварцевого резонатораРис. 5.37. Схема подключения кварцевого резонатора
Рис. 5.38. Схема с декодированием состояния ЦП
Рис. 5.38. Схема с декодированием состояния ЦП
Рис. 5.37. Схема подключения кварцевого резонатора
Рис. 5.37. Схема подключения кварцевого резонатора
Для запросов циклов памяти обычно используют входы RD и WR, кроме режима опережающего чтения, в котором для запроса цикла чтения используются входы ALE и S1 вместо RD.
Инициализация КДП осуществляется по входу PCS. При подаче на него сигнала низкого уровня происходит разрешение запросов циклов памяти от ЦП. При сигнале PCS = 0 разрешается прием запросов на циклы чтения или записи по входам RD или WR, которые аннулировать нельзя, если даже на вход PCS сразу подается сигнал высокого уровня.
Регенерация памяти КДП может выполняться двумя способами. Внутренний цикл регенерации осуществляется с помощью таймера регенерации RT, расположенного внутри КДП и обеспечивающего регенерацию всех строк ОЗУ через 2/4 мс для 128/256 циклов соответственно. При внешней регенерации используется вход внешнего запроса на регенерацию REFRQ (ALE) и может осуществляться «скрытая» регенерация, так как внутренняя логика КДП позволяет фиксировать запросы на регенерацию, а арбитр — решать конфликтные ситуации при одновременных запросах от ЦП на циклы памяти и регенерацию. На рис. 5.38 показана схема, позволяющая декодировать состояние выборки команды ЦП и использовать пустой такт этого цикла для регенерации.
При запросе циклов памяти от ЦП входные буферы BD1, BD2 запоминают адрес ячейки памяти и выдают их последовательно с помощью адресных мультиплексоров MUX1, MUX2 на выводы OUT7—ОПТО в сопровождении сигналов RAS и CAS, которые разделяют цикл памяти на два периода. В течение первого к выходам OUT подключаются выходы BD2(AL7—ALO) и формируется сигнал RAS. Во втором периоде к выходам OUT подключаются выходы BD1 (АН7—АНО) и формируется сигнал CAS. Сигналы RAS и CAS позволяют зафиксировать во внутренних буферах элементов памяти полный адрес ячейки. В цикле записи на выходе WE формируется отрицательный строб, выполняющий функцию записи данных в элементы памяти.
В цикле регенерации к адресным выходам OUT подключаются выходы счетчика/регенерации MAR и вырабатывается только сигнал RAS. Для минимизации задержек информации на адресных выходах OUT инвертируется.
Рис. 5.39. Временные диаграммы работы КДП в цикле обращения к памяти (tp - время регенерации)
Временная диаграмма работы адресного мультиплексора и формирователя
сигналов RAS и CAS показана на рис. 5.39, а временная диаграмма сигналов WR, RAS, WE и CAS гщ рис. 5.40.
Рис. 5 40. Временные диаграммы работы КДП в цикле чтения
Функционирование. Микросхема может находиться в состоянии ожидания либо в цикле проверки, регенерации, чтения или записи. Обычно КДП находится в состоянии ожидания. Всякий раз, когда поступает запрос на другие циклы, он переходит к выполнению требуемого цикла, после чего возвращается в состояние ожидания.
Цикл проверки используется для проверки работы внутренних функций КДП. Циклы проверки запрашиваются подачей активных сигналов на входы PCS, RD, WR. В цикле проверки сбрасывает счетчик регенерации и выполняется цикл записи. При нормальной работе этот цикл использовать нельзя, так как он может повлиять на цикл регенерации динамического ОЗУ.
Рис. 5.41. Цикл чтения/записи после сигнала регенерации
Цикл регенерации осуществляется двумя способами: внутренним и внешним. В общем случае в цикле регенерации на выходы OUT7 — OUT0 выдается адрес строк регенерации (содержимое счетчика MAR) и активизируются выходы строба строк RAS. Выходы CAS, WE, SACK и ХАСК остаются неактивными. После завершения одного цикла регенерации содержимое MAR увеличивается на единицу.
Внутренняя регенерация осуществляется с помощью таймера регенерации RT, расположенного внутри микросхемы. Таймер обеспечивает регенерацию всех строк динамического ОЗУ через каждые 2 мс для 128 циклов или каждые 4 мс для 256 циклов. Таймер регенерации выставляет запросы на регенерацию через каждые 10...16 мкс, если сигнал на входе REFRQ(ALE) неактивен.
При внешней регенерации используется вход REFRQ(ALE). Внешняя регенерация невозможна, если задан режим опережающего чтения. Запросы внешней регенерации фиксируются в КДП и переводят его в цикл регенерации, если нет циклов памяти. Если выполняются циклы памяти или одновременно с запросом на регенерацию поступил запрос на циклы памяти, то предпочтение отдается циклам памяти. Это свойство позволяет «скрыть» циклы регенерации во время работы системы, т. е. использовать пустые такты циклов выполнения команд для выполнения циклов регенерации (см. рис. 5.42). На рис. 5.41 и 5.42 показаны циклы регенерации.
Циклы считывания могут выполняться двумя различными способами: нормального и опережающего считывания. Нормальный цикл считывания выпол
няется по запросу, поступающему на вход RD при условии, что PCS =0. Запрос на входе RD должен сохраняться до тех пор, пока КДП не выставит сигнал ХАСК-
Рис. 5.42. Цикл регенерации после цикла чтения/записи
Опережающее считывание возможно только в режиме 16К- Циклы опережающего считывания запрашиваются по входу ALE, если S1 находится в активном состоянии. Фиксация запроса на циклы опережающего считывания осуществляется по срезу сигнала ALE. Если запрос на цикл считывание приходит во время выполнения цикла регенерации, то КДП вырабатывает квитирующий сигнал SACK по запросу на цикл считывание и удерживает его до тех пор, пока не выработается сигнал ХАСК- Квитирующие сигналы ХАСК или SACK используются для генерации сигнала готовности READY ЦП в зависимости от конфигурации МПС. На рис. 5.43 показана временная диаграмма работы КДП в цикле нормального считывания/записи, а на рис. 5.44 — в цикле опере-
Рис. 5.43. Цикл нормального чтения/записи
жающего чтения. Режим опережающего считывания )рис. 5.44) задается подключением входа В1/ОР1 к шине питания ( + 12 В), через резистор сопротивлением 5,1 КОм. В этом режиме КДП может управлять только двумя банками ОЗУ (RAS2, RAS3) и ие работает в режиме внешней регенерации. В табл. 5.6 приведено назначение выводов КДП в режимах нормального и опережающего считывания.
Таблица 5.6
Номер вывода
Обозначение
Считывание
нормальное
опережающее
25
BI/OPI/AH7
Ввод
В1
+ 12
в
32
RD/S1
Ввод
RD
Ввод
S1
34
НЕЖНО/ ALE
Ввод
НЕЖНО
ввод
ALE
Циклы записи запрашиваются и выполняются аналогично циклам нормального считывания (рис. 5.43) за исключением того, что запрос на цикл записи осуществляется сигналом WR и в цикле записи КДП вырабатывает исполнительный строб записи WE. Все циклы записи, вырабатываемые КДП, являются «удлиненными». Если ЦП не обеспечивает достаточного времени для установки данных для записи, необходимо задержать сигнал WR либо WE. Задержка сигнала WR приводит к задержке всех выходных сигналов контроллера, включая сигналы квитирования ХАСК и SACK, что приводит к увеличению числа состояний ожидания, генерируемых ЦП. Если осуществляется задержка WE, то фронт этого сигнала используется для записи данных в ОЗУ.
Рис. 5.44. Цикл оперехаюиего чтения
Временные диаграммы сигналов WR, RAS, WE, CAS представлены на рис. 5.40, а цикл опережающего чтения — на рис. 5.44.
Режимы работы КДП. Микросхема может работать в двух основных режимах, которые задаются потенциалами на входе 16К/64К и ориентируют КДП на управление различными элементами памяти.
Таблица 5.7
Режим
Номер вывода
16К64К
23RAS2АдресныйвыводOUT7
24Выборбанка(ВО)Адресныйвход AL7
25Выборбанка(В1)То хе
26RAS3Выбор банка ВО
Режим 16К задается подключением входа 16К/64К к шине питания ( + 5 В). Он ориентирован на управление ОЗУ, выполненного на элементах памяти К565РУ6, и обеспечивает управление модулем ОЗУ емкостью 64К, разделенным на четыре банка по 16К слов в каждом, в режиме нормального чтения. Для опережающего чтения управляет двумя банками ОЗУ по 16К слов. Выбор банка в этом режиме осуществляется адресным кодом на входах ВО, В1, который формирует один из выходных сигналов (RAS0—RAS3), инициализирующий обращения к соответствующему банку.
Таблица 5.3
Режим
Входы
Выходы
во
В1
RAS0
RAS1
RAS2
RAS3
16К
0
0
0
1
1
1
0
1
1
0
1
1
1
0
1
1
0
1
1
1
1
1
1
0
64К
0
-
0
1
-
1
-
1
0
-
-
Режим 64К задается подключением входа 164/64К к шине и ориентирован на управление ОЗУ, выполненного на элементах памяти РУ5. Он обеспечивает управление модулем ОЗУ емкостью 128К слов, образованным двумя банками по 64К каждый. В этом режиме КДП может выполнять только циклы нормального чтения. Выбор банка осуществляется кодом на входе ВО, открывающем выход RAS0 либо RAS1.
В табл. 5.7 показано назначение выводов КДП в зависимости от выбранного режима, а в табл. 5.8 — соответствие кодов на выходах RAS3—RAS0 кодам на входах ВО, В1.
Кроме двух основных режимов работы КДП могут быть заданы режимы работы: с ОЗУ емкостью 4К, с внутренним или внешним генератором, опережающего чтения. Эти режимы задаются положительными смещениями по входам ОРЗ — ОР1. Режим 4К ориентирует КДП на работу с ОЗУ на элементах памяти 565РУ1, и задается, как и режим 16К, за исключением того, что вывод ОРЗ подключается к шине питания ( + 12 В) через резистор 5,1 кОм.
Работа с внешним или внутренним генератором может быть задана для любых режимов работы с помощью входов Х0/ОР2, X1/CLK. Работа с внутренним генератором предполагает использование кварцевого резонатора, который подключается по схеме, показанной на рис. 5.37. Работа с внешним генератором задается подключением входа ОР2 к шине питания ( + 5 либо +12 В) через резистор сопротивлением 1 кОм. В этом случае вход СЕК подключен к выходу тактового генератора ЦП.
Операция опережающего чтения возможна только для режима 16К. Режим опережающего чтения задается подключением входа ОР1 к шине питания ( + 12 В) через резистор сопротивлением 5.1 кОм. В этом случае запрос цикла чтения производится внешним сигналом по входам ALE и S1. В табл. 5.9 показано назначение выводов КДП в зависимости от выбранных режимов.
Таблица 5.9
Номер вывода
Обозначение
Функция
нормальная
дополнительная
25
B1/OP1/AH7
Выбор банка В1
Опережающее чтение
36
ХО/ОР2
Вход подключения ХО
Вход внешнего генератора
18
AL6/OP3
Адресный вход AL6
Режим 4К
Применение КДП. Как уже отмечалось, КДП может быть использован для управления модулем ОЗУ различной емкости. Покажем на примере, как КДП используется для управления модулем памяти 64К, выполненным на элементах памяти К565РУ6. На рис. 5.45 показана структурная схема модуля ОЗУ емкостью 64 Кбайт для КДП в режиме 16К для нормального чтения с внешним генератором и внутренней регенерацией. Адреса ячеек ОЗУ занимают пространство с 80000 по 8FFFF. Модуль памяти включает 32 ИС К565РУ6, четыре банка по восемь ИС в каждом. Адресация к ячейкам памяти каждого банка осуществляется линиями А13—АО шины адреса. Выбор банка осуществляется линиями А14, А15, инициализирующими один из выходов RAS3—RAS0. Инициализация КДП выполняется по базовому адресу модуля памяти, равному 1000 для старших разрядов (А19—А16) шины адреса. Инициализацию осуществляют сигналом на входе PCS, который формируется путем дешифрации этих разрядов с помощью логических элементов ИЛИ-HE, И-НЕ. На рис. 5.46 показано распределение разрядов шины адреса при адресации к модулю памяти.
Цикл регенерации КДП выполняется автономно. В случае запросов циклов памяти со стороны процессора КДП формирует соответствующие сигналы управления RAS, CAS и WE модулем ОЗУ в цикле считывания, выставляя данные на входы буфера RG и фиксируя их сигналом ХАСК. Выходные шины
Банк ОБанк ОА1Э - АОА1Э - АОA14 A15 A1B A17A18A19A14 A15 A1B A17A18A19ALO- ALO AH6- AHOALO- ALO AH6- AHOКДПКДПCUTS CUTSCUTS CUTS11BO BlBO BlFCSFCSBBSS BBS?BBSS ■RAS3 -BBSS BBS?BBSS ■RAS3 -UE CSS FSBUE CSS FSBRAMRAM<8><8>UE CBS RASUE CBS RASAO ВБAO ВБUKCLKUKCLK♦5 8♦5 8-BD UR CLK-BD UR CLKUE -CAS- -UE -CAS- -1BK REFRQ1BK REFRQRACK—1RACK—1D7 - DOШДD7 - DOШДSTB-STB-1010DIDI88RAMRAM<8><8>Банк 3Банк 3RAMRAMUE CBS RASUE CBS RAS-д>СВВ5|RAs[^-д>СВВ5|RAs[^RAMRAMDIDIDODO<8><8>Банк 1Банк 1DIDIDODOБанк 2Банк 2DIDIDODODIDIDODO
Банк О
Банк О
А1Э - АО
А1Э - АО
A14 A15 A1B A17
A18
A19
A14 A15 A1B A17
A18
A19
ALO- ALO AH6- AHO
ALO- ALO AH6- AHO
КДП
КДП
CUTS CUTS
CUTS CUTS
1
1
BO Bl
BO Bl
FCS
FCS
BBSS BBS?
BBSS ■
RAS3 -
BBSS BBS?
BBSS ■
RAS3 -
UE CSS FSB
UE CSS FSB
RAM
RAM
<8>
<8>
UE CBS RAS
UE CBS RAS
AO ВБ
AO ВБ
UK
CLK
UK
CLK
♦5 8
♦5 8
-BD UR CLK
-BD UR CLK
UE -
CAS- -
UE -
CAS- -
1BK REFRQ
1BK REFRQ
RACK—1
RACK—1
D7 - DO
ШД
D7 - DO
ШД
STB-
STB-
10
10
DI
DI
8
8
RAM
RAM
<8>
<8>
Банк 3
Банк 3
RAM
RAM
UE CBS RAS
UE CBS RAS
-д>СВВ
5|RAs[^
-д>СВВ
5|RAs[^
RAM
RAM
DI
DI
DO
DO
<8>
<8>
Банк 1
Банк 1
DI
DI
DO
DO
Банк 2
Банк 2
DI
DI
DO
DO
DI
DI
DO
DO
буфера открываются на время действия сигнала RD В цикле записи данные из МП поступают непосредственно на входы DI элементов памяти и фиксируются
сигналом WE.
Рис. 5.45. Структурная схема 034 в режиме 16 К
На рис. 5.47 приведена структурная схема модуля ОЗУ емкостью 256 Кбайт для КДП в режиме 64К в стандарте Multibus. Модуль памяти выполняется на элементах памяти К565РУ5 и включает 32 ИС. Модуль разбит на два банка емкостью по 64К 16-разрядных слов. Каждый банк, в свою очередь, делится на два поля по 64 Кбайт для хранения старшего и младшего байта слова. Выбор банка осуществляется разрядом А17 шины адреса. При А17 = = 0 выбирается банк 0 сигналом RAS0 при А17 = 1 —банк 1 сигналом RAS1.
AIS А1В AI7 А1Б А15 АИ А13 А12 All А10 А9 АВ А7 Аб А5 А4 АЗ А2 А1 АО, 1 , ' , 1 , 1 , ' , 1 , ' , ' , ' , 1 , 1 , 1 , ' , 1 . 1 , ' . ' , 1 . 1 .
10 0 0 81 82
Базовый ВыборАдрес ячейки памяти
адрес банка
Рис. 5.4Б. Распределение адресного пространства модуля 34
В зависимости от состояния сигналов на входах ВНЕ и АО выбирается старший или младший байт слова либо полностью слово согласно порядку чтения данных командами ЦП. Инициализация циклов обращения к памяти осуществля
ется по входу PCS дешифрацией старших разрядов (А18, А19) шины адреса. 190
В цикле чтения данные с шины DO фиксируются в выходных буферах регистра
RG сигналом ХАСК. В цикле записи данные поступают от ЦП через входной буфер BD на шину памяти DI и записываются в адресуемую ячейку сигналом
Рис. 5.47. Структурная схема ОЗУ в режиме Б4К
WE. Входной буфер BD открывается сигналом WR от ЦП. Сигнал ХАСК может быть использован как квитирующий, сообщающий ЦП о завершении циклов памяти. Как правило, этот сигнал используется для формирования сигнала READY для ЦП (рис. 5.48).
Рис. 5.4В. Варианты использования сигналов SACK и ЯЙСК
Программируемые интегральные схемы
Контроллер прямого доступа к памяти К1810ВТ37
Одним из основных достоинств микропроцессорной схемотехники является наличие в составе микропроцессорных комплектов перепрограммируемых интерфейсных БИС. В предыдущей главе рассматривались непрограммируемые ИС, выполняющие конкретные функции в МПС (ГТИ, СК) либо настраиваемые на различные режимы работы в рамках конкретной функции (контроллер ОЗУ). Настройка на режим таких схем осуществляется аппаратно — подачей потенциалов на специальные управляющие входы. Программируемые БИС более универсальны, так как функционально они ориентированы на широкий класс внешних устройств (контроллеры дисководов, дисплеев) или способны выполнять различные функции при обмене (контроллеры ПДП, прерывания). Настройка на выполнение конкретной функции, операции, режима осуществляется программно с помощью обычных команд вывода, загружающих в БИС перед началом работы специальную командную информацию, причем существует возможность программного контроля за выполнением операций обмена и функционирования БИС Включение таких схем в состав МПС делает ее способной к подстройке для работы с конкретными внешними устройствами программным путем. МПС, имеющие в своем составе такие схемы, получили название систем с жесткой структурой я перепрограммируемой конфигурацией, а сами БИС — название функционально ориентированных перепрограммируемых.
Тенденция развития микропроцессорных элементов идет по пути совершенствования ЦП и интерфейсных БИС с возможностью перепрограммирования на более высоком уровне. Так, в настоящее время широкое применение находят универсальные периферийные интерфейсы (УПИ), представляющие собой не что иное, как однокристальные микроЭВМ — микроконтроллеры, способные выполнять любую интерфейсную функцию, включая обработку (предобработку) , и подключаемые к МПС как сопроцессоры.
Общие принципы организации ПДП. Режим ПДП является самым скоростным способом обмена, который реализуется с помощью специальных аппаратных средств — контроллеров ПДП без использования программного обеспечения. Для осуществления режима ПДП контроллер должен выполнить ряд последовательных операций (рис. 6.1):
принять запрос DREQ на ПДП от ВУ;
сформировать запрос HRQ на захват шин для ЦП;
принять сигнал HLDA, подтверждающий этот факт после того, как ЦП войдет в состояние захвата (ШД, ША, ШУ в z-состоянии);
сформировать сигнал DACK, сообщающий ВУ о начале выполнения циклов ПДП;
сформировать на ША адрес ячейки памяти, предназначенный для обмена;
выработать сигналы MR, IOW и MW, IOR, обеспечивающие управление обменом;
по окончании ПДП либо повторить цикл ПДП, изменив адрес, либо прекратить ПДП, сняв запросы на ПДП.
Циклы ПДП выполняются с последовательно расположенными ячейками памяти, поэтому контроллер ПДП должен иметь счетчик адреса ОЗУ. Число циклов ПДП определяется специальным счетчиком. Управление обменом осуществляется специальной логической схемой, формирующей в зависимости от типа обмена пары управляющих сигналов: MR, IOW (циклы чтения), MW, IOR (циклы записи).
Из изложенного следует, что контроллер ПДП по запросу должен взять на себя управление системными шинами и выполнять совмещенные циклы чте- ния/вывода или записи/ввода до тех пор, пока содержимое счетчика циклов ПДП не будет равно нулю. На рис. 6.1 показана структурная схема МПС с контроллером ПДП.
Рис. 6.1. Структурная схема МПС с контроллером ПДП
Контроллер ПДП К1810ВТ37 используется в составе МПС, выполненных на базе МПК К580, К1810, К1821, для реализации прямого доступа к памяти по четырем независимым каналам с положительным или отрицательным приращением адреса со скоростью до 1,6 Мбайт/с. КПДП позволяет реализовать передачу память — память, имеет широкие возможности программного управления и каскадирования. Каждый канал может выполнять до 64К циклов ПДП и имеет возможность автоматической инициализации, т. е. повторения циклов ПДП с теми же параметрами.
Назначение выводов КПДП.
CLK — вход для подключения тактового генератора FCLK = 3 МГц.
CS — выбор кристалла. CS=0 разрешает работу КПДП.
RESET — сброс. Сигнал высокого уровня переводит КПДП в исходное состояние, устанавливая в нуль регистры команд, условий, временного хранения, а также устанавливая в единицу все разряды маски.
READY — готовность. Входной сигнал, используемый для синхронизации работы КПДП с медленнодействующими устройствами.
HLDA — подтверждение захвата. Входной сигнал, используемый ЦП для сообщения КПДП о возможности выполнения циклов ПДП.
DREQ3—DREQ0 — входы запросов на ПДП от внешних устройств. По-
лярность запросов задается программно. Сигналы на этих входах должны удерживаться до прихода сигнала DACK. В исходном состоянии приоритет запросов естественный, DREQ0 имеет наивысший приоритет.
DB7—DB0 — двунаправленная шина данных с буфером, имеющим z-co- стояние. В циклах ПДП на эти линии выдается восемь старших разрядов адресного кода, которые необходимо «защелкнуть» на внешнем регистре сигналом ADSTB. В режиме работы с ЦП по этим линиям осуществляется прием/пе- редача данных.
1OR — чтение; как вход используется ЦП для чтения содержимого внутренних регистров КПДП; как выход в режиме ПДП разрешает выдачу данных из внешних устройств.
IOW — запись; как вход используется ЦП для загрузки данных в регистры КПДП; как выход в режиме ПДП разрешает запись данных в регистры внешних устройств.
ЕОР — окончание процесса. Вход/выход, используемый для указания окончания процесса передачи данных в режиме ПДП. Подавая на этот вход сигнал низкого уровня, можно прекратить передачу данных. После завершения передачи данных по одному из каналов на выходе устанавливается сигнал ЕОР = 0. По этому сигналу (внешнему или внутреннему) снимается запрос и обслуживание прекращается. Если установлен режим автоинициализации, то происходит загрузка рабочих регистров данного канала содержимым базовых регистров, а разряды регистра маски не меняются. В режимах без автоинициализации разряды маски и разряд ТС в слове-состоянии устанавливаются в соответствии с состоянием обслуженного канала. При передаче память — память вывод ЕОР ориентирован на выход, и по окончании счета на этом выходе формируется сигнал. Если вывод ЕОР не используется, то он должен быть подключен через резистор к шине питания ( + 5 В) для предотвращения формирования ложных сигналов окончания процесса.
АЗ—АО — адресные входы/выходы. Используются как входные в режиме работы с ЦП и для адресации к каналам и регистрам каналов КПДП. В режиме ПДП являются выходами, по которым передаются четыре младших разряда адреса ОЗУ.
А7—А4 — адресные выходы, на которые в режиме ПДП передаются соответствующие разряды адреса ОЗУ. В режиме работы с ЦП переходят в z-co- стояние.
HRQ — выход запроса захвата на управление системной шиной. Запрос на ПДП ЦП.
DACK3—DACK0 — подтверждение ПДП. Выходные линии, на которые выдаются сообщения для ВУ о возможности выполнения циклов ПДП. Полярность сигнала задается программно. После сигнала RESET на выходах DACK устанавливается нуль.
AEN — разрешение адреса. AEN = 1 устанавливается на время выдачи восьми старших разрядов адреса ОЗУ на линии DB7—DB0.
ADSTB — строб адреса. Выход, на котором формируется импульс (строб), осуществляющий запись старших разрядов (А15—А8) адреса ОЗУ с шин DB7—DB0 во внешний буферный регистр.
MEMR — чтение из памяти. Выход, используемый в режиме ПДП для управления операцией чтения из памяти.
MEMW — запись в память. Выход, используемый в режиме ПДП для управления операцией записи в память.
Ucc — шина питания ( + 5 В).
GND — общий.
Структура КПДП (рис. 6.2, 6.3). Контроллер включает четыре канала, каждый из которых состоит из четырех 16-разрядных регистров.
Регистр текущего адреса CAR хранит текущий адрес ячейки памяти при выполнении цикла ПДП. После выполнения цикла ПДП содержимое этого регистра увеличивается или уменьшается на единицу. Оно может быть прочитано или загружено с помощью двух команд ввода — вывода. Содержимое CAR может быть обновлено по сигналу ЕОР, если запрограммирован режим автоинициализации.
Регистр циклов ПДП CWR хранит число слов, предназначенных для передачи. При загрузке этого регистра необходимо помнить, что загружаемая константа должна быть на единицу больше числа слов, необходимых для передачи. При выполнении циклов ПДП регистр работает в режиме вычитающего счетчика. Разряд ТС регистра состояния устанавливается в единицу при переходе из нулевого состояния в состояние FFFFH. Чтение и запись содержимого регистра осуществляются двумя последовательно выполняемыми командами ввода — вывода. Содержимое CWR может быть обновлено при автоинициализации по сигналу ЕОР либо в регистре сохраняется значение FFFFH.
Рис. 6.3. Условное графическое обозначение КПДП ВТ37Рис. 6.3. Условное графическое обозначение КПДП ВТ37Если D5 = 0, после каждогоЕсли D5 = 0, после каждогоРегистр хранения базового адреса BAR и регистр хранения базового числа циклов ПДП WCR хранят базовые значения адреса и числа циклов ПДП, участвуют в автоинициализации. При начальной загрузке контроллера ПДП исходными параметрами происходит одновременная запись в регистры CAR, BAR, CWR и WCR. В процессе выполнения циклов ПДП содержимое BAR и WCR не изменяется. Прочитать состояние этих регистров невозможно.
Рис. 6.3. Условное графическое обозначение КПДП ВТ37
Рис. 6.3. Условное графическое обозначение КПДП ВТ37
Если D5 = 0, после каждого
Если D5 = 0, после каждого
Кроме того, каждый канал имеет 6-раз- рядный регистр режима MR, определяющий режим его работы. При загрузке этого регистра в младших разрядах DI, DO указывается код номера канала. Назначение разрядов MR показано на рис. 6.4. С помощью разрядов D2, D3 задается один из типов передачи — чтение, запись, проверка. Эти разряды могут принимать любые значения при D6D7 =11. Разряд D4 определяет режим автозагрузки. Если D4=l, то при условии автозагрузки CAR и CWR загружаются параметрами BAR и WCR соответственно. Разряд D5 определяет режим изменения CAR. цикла ПДП происходит увеличение содержи
мого CAR; если D5=l — то уменьшение. Разряды D6, D7 определяют режимымого CAR; если D5=l — то уменьшение. Разряды D6, D7 определяют режимыработы канала — передача по запросу, одиночная передача, блочная передача,работы канала — передача по запросу, одиночная передача, блочная передача,контроллер в режиме каскадирования.
мого CAR; если D5=l — то уменьшение. Разряды D6, D7 определяют режимы
мого CAR; если D5=l — то уменьшение. Разряды D6, D7 определяют режимы
работы канала — передача по запросу, одиночная передача, блочная передача,
работы канала — передача по запросу, одиночная передача, блочная передача,
Контроллер ПДП включает три функциональных блока, которые выполняют функции управления. Буфер шины данных служит для согласования работы контроллера с ЦП. Некоторые сигналы, обеспечивающие эти функции, используются для управления передачей данных в циклах ПДП. Блок управления контроллером при передаче память — память включает один 8-разрядный регистр TR временного хранения данных, обеспечивающий хранение байта в цикле передачи память — память на время изменения адреса. Последнее
загруженное в этот регистр слово сохраняется там до поступления сигнала RESET. Блок управления режимом ПДП вырабатывает необходимые сигналы управления при передаче данных в циклах ПДП. Включает два 8-разрядных и два 4-разрядных регистра.
Регистр команд CR определяет основные параметры работы канала. Загрузка CR осуществляется командой вывода от ЦП, а сброс — по сигналу RESET или команде общего сброса. Назначение разрядов регистра показано на рис. 6.5. Разряды DO, D1 используются для задания режимов работы каналов 0 и 1 в режиме память — память. Разряд D2 инициализирует контроллер для выполнения ПДП, разряд D3 определяет режим выполнения циклов ПДП. Если D3 = 1, циклы ПДП выполняются с пропуском одного такта при изменении адреса в пределах младшего байта. Разряд D4 устанавливает режим приоритетов. Если D4=l, запросу обслуженного канала присваивается наинизший
приоритет — это режим вращения приоритета. Разряд D5 устанавливает режим удлиненного цикла записи. Если D5=l, сигналы IOW и MEMW вырабатываются с двойной длительностью. Разрядами D6, D7 программируются уровни запросов на ПДП (DREQ) и сигналов подтверждения ПДП (DACK).
Рис. 6.4. Формат команды установки режима ИЯ
|D71Р61Р51D41031Р21 DI |DO|
I 1 - режим память-память
О - нормальная работа
1 - захват канала 0; 0 - нет захвата X - безразлично, если 00 • О
1- запрет ПДП; 0 - разрежение ПДП 1 - сжатие во времени; 0 - нормальная работа X - безразлично, если 00*1
1 - вращение приоритета; 0 - фиксированный 1 - удлиненный цикл записи; 0 - нормальный 1 - DREQ низкий уровень; 0 - DREQ высокий уровень
1 - РАСК высокий уровень; 0 - РАСК низкий уровень
Рис. 6.5. Формат команды управления CR
ЕЗ ЕЭ ЕЗ EQ СЗ Е2Ю1ШЛ
I 1 - ТС канала О 1 - ТС канала 1 1-ТСканалаВ 1-ТСканала3 1 - разрежение на ПДП канала О 1 - разрешение на ПДП канала 1 1 - разрешение на ПДП канала 2 1 - разрешение на ПДП канала 3
Рис. 6.6. Формат слова-состояния
Регистр условий SR, разряды D3—DO которого устанавливаются аппаратно при возникновении сигнала ТС, т. е. после окончания циклов ПДП или по внешнему сигналу ЕОР. Эти разряды сбрасываются (устанавливаются в нуль) сигналом RESET, а также после выполнения команды чтения содержимого этого регистра. Разряды D4—D7 устанавливаются программно при необходимости обслуживания по соответствующему каналу. Назначение разрядов SR показано на рис. 6.6.
Регистр запросов RR. Контроллер может обслуживать запросы на ПДП, формируемые как аппаратно — по входам DREQ, так и программно — по состоянию разрядов (регистров) запросов RR. Каждый разряд этого регистра соответствует запросу по одному из каналов. Разряды этого регистра не маскируются и устанавливаются раздельно программно или сигналами ТС и ЕОР. Программная установка этих разрядов осуществляется командой, формат которой представлен на рис. 6.7. Сброс всех разрядов RR осуществляется сигналом RESET. Для обработки программного запроса контроллер должен быть запрограммирован в режиме блочной передачи.
D7|DC|D5|d4|d3|D2|D1|do|
'"Т । .|-1 |..х . ,».„-р 1,.-д [-■*-[-> Адрес канала
Не используютсяНе используются0 0 - канал 0 01 - канал 1 10 - канал 2 11 - канал 3
Не используются
Не используются
1-установить запрос;
0-сбросить
Рис. 6.7. Формат команды установки запросов на ПДП
Регистр маски MASK, с помощью которого могут быть замаскированы сигналы DREQ каждого канала. Разряды MASK могут быть установлены специальной командой одновременно (рис. 6.8) или раздельно (рис. 6.9). Кроме того, если канал не запрограммирован на режим автозагрузки, после появления сигнала ЕОР соответствующий разряд регистра устанавливается в единицу. Все разряды MASK устанавливаются в нули сигналом RESET либо командой CMR (Clear Mask Register).
|D7|D6|D5|D4|D3|D2|Dl|D0|
Не используются
[1-установка маски канала 0; 0-сброс
1-установка маски канала 1; 0-сброс
1-установка иаски канала 2; 0-сброс
1-установка маски канала 3;0-сброс
Рис. 6.8. Команда установки всех разрядов маски
Режимы работы ПДП. Контроллер ПДП может работать в двух основных режимах: с ЦП и выполнения циклов ПДП. В режиме работы с ЦП контроллер воспринимается им как внешнее устройство, а после загрузки управляющих слов переходит в пассивное состояние S1. В этом состоянии контроллер находится до тех пор, пока на вход одного из каналов не поступит запрос на ПДП DREQ или этот запрос не будет выставлен программно от ЦП. Обнаружив запрос на ПДП, контроллер переходит в состояние S0 и выставляет сигнал
запроса на захват системной шины HRQ, ожидая от ЦП сигнала подтверждения захвата HLDA. При получении сигнала HLDA контроллер начинает выполнять циклы ПДП.
|D7|ОБ|D5|04|D3|DB
D1|DO|
1 1 1 1 1
1 1 1 1 Адрес канала
Не используются
0 0 - канал 0 01 - канал 1
10 - канал В 11 - канал 3
1-установить маску; О-сбросить
Рис. 6.9. Команда установки разряда маски
Различают четыре рабочих состояния при выполнении этих циклов: S1 — S4. Если при выполнении циклов ПДП на вход READY, подать нуль, контроллер между тактами S2/S3 и S4 выполняет такты ожидания SW. Состояние SW характеризуется активностью линий передачи данных. При передаче информации в режиме память — память необходимо выполнить два полных цикла чтения и записи, поэтому для передачи одного слова контроллер выполняет два цикла ПДП по четыре такта в каждом: SI 1—S14 для чтения из памяти и S21 — S24 для записи в память.
Временная диаграмма работы контроллера в циклах ПДП представлена на рис. 6.10. В пассивном состоянии происходит опрос входов запросов на ПДП и возможно взаимодействие с ЦП с помощью обычных команд ввода — вывода. Так как взаимодействие с ЦП КПДП чаще осуществляет словом из двух байтов, то для правильного их выбора контроллер использует внутренний триггер, указывающий на операцию с младшим или старшим байтом слова. Этот триггер сбрасывается сигналом RESET или командой общего сброса, указывая на операцию с младшим байтом. После выполнения операции с младшим байтом он устанавливается в единицу, указывая старший байт.
Контроллер может быть запрограммирован для выполнения следующих четырех режимов работы ПДП. В режиме одиночной передачи осуществляется передача одного байта, при этом содержимое счетчика циклов ПДП (CWR) уменьшается, а содержимое адресного регистра (CAR) уменьшается или увеличивается на единицу. Бит окончания передачи (ТС) в регистре условий устанавливается в единицу, когда содержимое CWR примет значение FFFFH. Вход DREQ должен поддерживаться в активном состоянии до прихода сигнала DACK. Если DREQ остается активным и после передачи одного байта, сигнал HRQ снимается, а новый цикл передачи возможен с приходом очередного сигнала HLDA.
В режиме блочной передачи циклы ПДП осуществляются до момента установления бита ТС в регистре условий, т. е. когда счетчик циклов ПДП CWR примет значение FFFFH или передача остановится по внешнему сигналу
ЕОР. Циклы передачи могут быть возобновлены, если канал был запрограммирован на автоинициализацию.
В режиме передачи по требованию циклы ПДП продолжаются до тех пор, пока не установится разряд ТС в регистре условий либо не придет сигнал ЕОР, либо не снимется сигнал DREQ. В этом режиме передача может осуществляться, пока внешнее устройство не закончит передачу информации. Автои-
нициализацию в этом режиме можно осуществлять после окончания передачи сигналом ЕОР, внешним или вырабатываемым по признаку ТС.
Режим передачи память — память позволяет осуществлять перемещение блоков информации в поле оперативной памяти. Для реализации этого режима
Рис. 6.10. Временная диаграмма работы КПДП
используются параметры каналов 0 и 1. Передача инициализируется программно установкой DREQ в канале 0. После прихода сигнала HLDA=1 контроллер за четыре такта считывает данные из ячейки памяти с адресом из регистра CAR канала 0 и записывает их в регистр временного хранения TR, затем за
четыре такта записывает эти данные в ячейку памяти с адресом из CAR канала 1. Когда содержимое регистра циклов ПДП CWR примет значение FFFFH, установится разряд ТС и передача закончится. Канал 0 может быть запрограммирован на передачу информации без изменения адреса, что позволяет заполнить ячейки блока ОЗУ константой. В этом режиме внешний сигнал ЕОР, воспринимаемый контроллером, используется при поиске нужных кодов в поле адресов ОЗУ. Временная диаграмма работы контроллера в этом режиме показана на рис. 6.11. Режим передачи память — память может быть инициализирован сигналом AEN без использования сигнала DACK.
CLKADSTBА7-А0DB7-DB0МЕННMEMWЕОРEXT, ЁОРCLKADSTBА7-А0DB7-DB0МЕННMEMWЕОРEXT, ЁОРSO Sil S12S13S14S21S22S23S24 S1SO Sil S12S13S14S21S22S23S24 S1Рис. 6.11. Временная диаграмма работы КПДП в циклах память - памятьРис. 6.11. Временная диаграмма работы КПДП в циклах память - память
CLK
ADSTB
А7-А0
DB7-DB0
МЕНН
MEMW
ЕОР
EXT, ЁОР
CLK
ADSTB
А7-А0
DB7-DB0
МЕНН
MEMW
ЕОР
EXT, ЁОР
SO Sil S12S13S14S21S22S23S24 S1
SO Sil S12S13S14S21S22S23S24 S1
Рис. 6.11. Временная диаграмма работы КПДП в циклах память - память
Рис. 6.11. Временная диаграмма работы КПДП в циклах память - память
В случае каскадирования выводы HRQ и HLDA дополнительной схемы подключаются к выводам DREQ и DACK основной схемы (рис. 6.12). В этом случае сигналы запросов на ПДП проходят через схемы приоритетов БИС КПДП более высокого уровня. При этом никакие другие сигналы основной схемы в формировании циклов ПДП не участвуют. Другие контроллеры могут быть подключены как к свободным входам запросов основной схемы, так и к входам подчиненной схемы.
Типы передачи ПДП. Во всех режимах ПДП возможны три основных типа передачи. Запись данных — осуществляется передача данных от внешнего устройства к ОЗУ. Контроллер в этом случае активизирует сигналы MEMW и IOR. Чтение данных — осуществляется передача данных от ОЗУ к внешнему устройству, активизируются сигналы MEMR и IOW. В случае проверки или псевдопередачи контроллер выполняет действия такие же, как в цикле чте-
ния/записи, но сигналы управления не вырабатываются. В этом случае сигнал READY не воспринимается. Кроме того, контроллер может быть запрограммирован для выполнения дополнительных функций.
Автоинициализация осуществляется, если установлен соответствующий разряд в регистре условий, и по сигналу ЕОР. При автоинициализации содержимое базовых регистров BAR и WCR загружается в регистры текущих значений CAR и CWR. Разряды маски при этом не меняются. После автоинициализации контроллер готов к работе и возобновляет действие с приходом очередного сигнала DREQ. Для автоинициализации обоих каналов в режиме память — память регистры циклов ПДП CWR должны программироваться идентично.
Sold
HLDA .
КПДП
DREQO
DACK0
HRQ
HLDA
DREQ1
DACK1
-—
КПДП1 HRQ HLDA
. 4 OREQ3 - DREQO 4 DACK3 - DACKD
1—
КПДП2 HRQ HLDA
. 4 DREQ3 - DREQO
4 DACK3-DACKD
К ЦП
Рис. 6.12. Схема каскадирования КПДП
Контроллер может быть запрограммирован для обслуживания каналов с жестко заданными приоритетами либо с их циклическим изменением. При жестко заданном приоритете наивысший приоритет устанавливается за каналом с меньшим номером. При циклическом изменении самый низкий приоритет присваивается каналу после его обслуживания. Это позволяет обслужить все каналы поочередно.
Для уменьшения времени передачи данных предусмотрена возможность выполнения циклов ПДП за два такта. В этом случае (рис. 6.11) из цикла ПДП удаляются такты S1 и S3 на время изменения адреса по восьми младшим разрядам (А7—АО), которые формируются только при смене кода на старших разрядах А15—А8. Использование этой операции в режимах блочной передачи и передачи по требованию позволяет значительно сократить общее время передачи данных. Такая операция называется сжатием во времени.
Таблица 6.1
A3
A2
Al
AO
Команда
Операция
1
0
0
0
Ввод
Чтение регистра состояния
1
0
0
0
Вывод
Запись в регистр команд управления
1
0
0
1
To хе
Запись в регистр запросов
1
0
1
0
>>
Установка всех разрядов маски
1
0
1
1
>>
Запись в регистр рехима
1
1
0
0
>>
Установка рахима ввода младхего байта
1
1
0
1
Ввод
Чтение регистра времеииого хранения
1
1
0
1
Вывод
Обний сброс
1
1
1
0
То хе
Сброс всех разрядов маски
1
1
1
1
>>
Установка разряда маски
Программирование контроллера. Программирование контроллера осуществляется от ЦП командами ввода — вывода и возможно только в пассив- 202
ном состоянии или при наличии на входе HLDA напряжения низкого уровня, если даже присутствует сигнал HRQ. Начальную инициализацию контроллера необходимо осуществить сразу же после включения напряжения питания по всем каналам, если даже они не используются, загружая команды и константы.
Таблица 6.2
АЗ
А2
А1
АО
Команда
Операция
0
0
0
0
Вывод
Загрузка младшего/старшего байта в регистры ВАН и САН канала 0
0
0
0
0
Ввод
Чтение содержимого САН канала 0
0
0
0
1
Вывод
Загрузка младшего/старшего байта в регистры WCR и CWH канала 0
0
0
0
1
Ввод
Чтение содержимого CWR канала 0
0
0
1
0
Вывод
Загрузка младшего/старшего байта в регистры ВАН и САН канала 1
0
0
1
0
Ввод
Чтение содержимого САН канала 1
0
0
1
1
Вывод
Загрузка младшего/старшего байта в регистры WCR и CWH канала 1
0
0
1
1
ВВОД
Чтение содержимого CWR канала 1
0
1
0
0
Вывод
Загрузка младшего/старшего байта в регистры ВАН и САН канала 2
0
1
0
0
Ввод
Чтение содержимого САН канала 2
0
1
0
1
Вывод
Загрузка младшего/старшего байта в регистры WCR и CWR канала 2
0
1
0
1
Ввод
Чтение содержимого CWH канала 2
0
1
1
0
Вывод
Загрузка младшего/старшего байта в регистры ВАН и САН канала 3
0
1
1
0
Ввод
Чтение содержимого САН канала 3
0
1
1
1
Вывод
Загрузка младшего/старшего байта в регистры WCH и CWH канала 3
0
1
1
1
ВВОД
Чтение содержимого CWH канала 3
Адреса внутренних регистров контроллера определяются кодом на выводах АЗ—АО. В табл. 6.1 показаны коды на АЗ—АО, соответствующие выполняемым командам ЦП, а в табл. 6.2 — коды на АЗ—АО, соответствующие адресам регистров КПДП. Временные диаграммы работы КПДП в режиме взаимодействия с ЦП показаны на рис. 6.13, 6.14, 6.15. Так как константы всегда представлены 16-разрядным словом, их загрузка требует выполнения двух последовательных операций вывода с одинаковым кодом. Внутренний триггер управ-
cs
row
АО-АЗ
DB7-DB0
Рис. 6.13. Временная диаграмма работы КПДП в цикле записи
Рис. 6.14. Временные диаграммы работы КПДПРис. 6.14. Временные диаграммы работы КПДП
Рис. 6.14. Временные диаграммы работы КПДП
Рис. 6.14. Временные диаграммы работы КПДП
в цикле чтения
CLK
READ
WRITE
READY
Рис. 6.15. Временная диаграмма работы КПДП в циклах обмена
ляет последовательностью ввода. Сначала загружается младший байт, затем старший.
Подключение контроллера к системной шиие. Для уменьшения числа выводов на корпус БИС восемь старших разрядов адреса выдаются в такте S1 на выводы шины данных и должны быть «защелкнуты» на внешнем регистре БР, выходы которого подключаются к старшим разрядам шины адреса. Запись во внешний регистр осуществляется сигналом ADSTB. Линия AEN используется для того, чтобы разряды адреса оставались действующими на ША в течение трех тактовых периодов цикла ПДП. Линии А7—АО подключаются непосредственно к ША. Сигналы MEMR, MEMW, IOR, HOW управляют в циклах ПДП соответственно ОЗУ и буфером внешнего устройства. На рис. 6.16 приведена схема подключения контроллера ПДП к системной шине МПС.
Программируемый таймер К1810ВИ54
Программируемый таймер (ПТ) К1810ВИ54 предназначен для генерации времязадающих функций, программно-управляемых временных задержек с возможностью программного контроля их выполнения. Программируемые таймеры применяются в МПС, выполненных на базе МПК БИС К580, К.1810, К1821, используемых в задачах управления и измерения в реальном масштабе времени с тактовой частотой до 8 МГц. Конструктивно эти ПТ совместимы
Рис. 6.17. Структурная схема программируемого таймера ВИ54
с ПТ типа К580ВИ53, отличаются от них повышенным быстродействием и расширенными функциональными возможностями.
Программируемый таймер К1810ВИ54 включает три независимых канала, каждый из которых может быть запрограммирован на работу в одном из шести
режимов для двоичного или двоично-десятичного счета. Структурная схема ПТ показана на рис. 6.17, его условное графическое обозначение — на рис. 6.18.
21
CS RD tTR
PIT
DO DI D2 D3
D4 D5 DE D7
В
22
7
23
Б
19
5
АО Al
4
20
3
3
2
CLKO
CLK1
CLK2
1
15
10
18
0UT0 0UT1 0UT2
11
13
GO G1 62
17
14
24
1Б
UCc GND
12
Рис. Б.1В. Условное графическое обозначение ПТ ВИ54
Назначение выводов.
CS — выборка кристалла. Сигнал управляет входным буфером BD. При CS = 0 разрешается работа буфера.
RD — чтение. Сигнал RD = 0 ориентирует входной буфер BD на вывод. ПТ выдает информацию в ЦП.
WR — запись. Сигнал WR = 0 ориентирует входной буфер BD на ввод. ПТ принимает информацию от ЦП.
АО, А1 — адресные входы, по которым осуществляется адресация к одному из каналов:
А0 = А1 =00 — адрес канала 0;
А0=А1 =01 — адрес канала 1;
А0 = А1 = 10 — адрес канала 2;
А0 = А1 = 11 —признак загрузки управляющего слова или команд.
CLK2—CLK0 — входы тактовых сигналов для управления счетчиком/таймером. Срез сигнала на входе CLK приводит к уменьшению содержимого счетчика/таймера СЕ на единицу.
GATA2—GATA0— входы разрешения счета. При GATA=1 разрешается выполнение функций; для некоторых режимов работы разрешается поступление тактовых сигналов на вход счетчика/таймера, для других (импульсный генератор и генератор меандра) открывается выходной буфер OUT.
OUT2—OUT0 — выходы счетчика/таймера.
Структурная схема ПТ (рис. 6.17) включает:
буфер шины данных (BD) и логические схемы управления чтением/за- писью:
дешифратор DS, с помощью которого выбирается один из трех каналов либо формируется признак загрузки управляющих слов или команд;
три идентичных канала COUNT2—COUNT0, реализующих запрограммированную функцию.
Каждый канал включает:
16-разрядный буферный регистр 0L, служащий для запоминания и хранения мгновенного значения счетчика СЕ, которое в любое время может быть записано командой Защелка или Чтение состояния канала. После выполнения этих команд содержимое OL может быть считано в ЦП без остановки дальнейшего счета в регистре СЕ;
16-разрядный счетчик/таймер СЕ, работающий в режиме вычитания. Изменение содержимого СЕ осуществляется по срезу сигнала СЕК. при GATA = 1;
16-разрядный регистр констант пересчета CR, служащий для хранения констант пересчета. Содержимое CR загружается в СЕ для счета в зависимости от запрограммированного режима;
8-разрядный регистр состояния канала RS, содержимое которого можно считывать в ЦП с помощью команды RBC — Чтение состояния канала. Содержимое этого регистра является словом состояния канала, формат которого представлен на рис. 6.22.
8-разрядный регистр управляющего слова RSW, предназначенный для его хранения. Слово загружается в RCW командой OUT с адресом, формирующим на входах АО, А1 код 11. Выбор конкретного канала осуществляется с помощью двух старших разрядов самого управляющего слова.
Схема управляющей логики канала CL осуществляет управление вхо- дом/выходом счетчика/таймера в зависимости от запрограммированного режима.
По правилам загрузки счетчика/таймера СЕ содержимым регистра CR все шесть режимов работы ПТ можно разделить на три группы.
Режимы 0, 4 — режимы однократного выполнения функций. Константы из CR передаются в СЕ по первому тактовому сигналу СЕК при GATA = = L С приходом последующих сигналов на входе СЕК происходит уменьшение содержимого СЕ. Если во время счета на вход GATA подать нуль, то это приведет к останову счета. Новый положительный сигнал на GATA не вызывает перезагрузку счетчика/таймера, а только разрешает продолжение счета. По окончании счета выполнение действий заканчивается. При необходимости повторения функции требуется новое программирование — загрузка новой константы.
Режимы 1,5 — режимы с перезапуском. Здесь характерна возможность повторения запрограммированных функций без нового перепрограммирования. Загруженная константа сохраняется в CR, а ее передача в СЕ осуществляется по фронту сигнала GATA независимо от завершения счета.
Режимы 2, 3 — режимы автозагрузки. Загрузка СЕ содержимым CR осуществляется автоматически при выполнении условий счета (импульсный генератор и генератор меандра), поскольку это режимы с зацикливанием счета. Выход OUT открывается положительным сигналом на GATA.
Программирование. ПТ относится к классу функционально ориентированных программно управляемых интерфейсных БИС, поэтому перед началом работы в него необходимо загрузить управляющее слово (УС) и константу пересчета. УС задает один из шести режимов работы, тип счета (двоичный или двоично-десятичный), порядок загрузки и размерность (один или два байта) константы. Времяимпульсная функция формируется на выходе OUT при GA- ТА=Е Формирование функции осуществляется с помощью счетчика-таймера СЕ, работающего в режиме вычитающего счетчика по срезу сигнала СЕК.
Программист может опросить состояние каналов ПТ с помощью специаль-
ных команд Защелка (Чтение на лету) (CLC) или Чтение состояния канала (RBC). Эти команды позволяют, не прерывая счета, опросить состояние счетчика/таймера СЕ. Кроме того, команда RBC позволяет прочитать содержимое регистра состояния канала, разряды которого несут информацию о запрограммированном режиме, состоянии выхода OUT и флага «обновления».
Управляющее слово CW. Формат УС показан на рис. 6.19. Управляющие слова загружаются в регистры RSW каналов ПТ по командам вывода, формирующим на входах ПТ коды А0А1 = 11, CS =0, WR = 0, RD = 1. Управляющие слова загружаются в тот канал ПТ, адрес которого указывается в самом формате УС, и сохраняются там во все время работы или до следующего программирования. Загрузка УС должна предшествовать загрузке констант.
D7D0
Рис. 6.19. Формат управляющего слова ПТ
В формате УС можно выделить четыре функциональных поля: SC, RW, М, BCD, с помощью которых задаются основные параметры работы канала.
Поле SC (разряды D7, D6) определяет адрес регистра RSWn конкретного канала. Если в этом поле содержится код 11, то загружаемая информация воспринимается ПТ как команда Чтение состояния канала (см. далее описание команды RBC).
Поле RW (разряды D5, D4) определяет размерность и порядок загрузки констант. Если в поле RW заданы коды 01 или 10, то размер константы определен соответственно старшим или младшим байтом. Если в поле RW задан код 11, то размер константы два байта; сначала загружается младший байт, затем старший. Если в поле RW задан код 00, то загружаемый байт воспринимается как команда Защелка (см. далее описание команды CLC).
Поле М (разряды D3 — D1) задает один из шести режимов работы канала: режим 0 (000) — прерывание от таймера;
режим 1 (001) —программируемый ждущий мультивибратор;
режим 2 (ХЮ) —импульсный генератор частоты;
режим 3 (ХИ) — генератор импульсов со скважностью два;
режим 4 (100) —программно-запускаемый одновибратор;
режим 5 (101) —аппаратно-запускаемый одновибратор.
В режимах 2, 3 разряд D3 может принимать любое значение. (Подробно работа каналов в соответствующих режимах будет рассмотрена далее).
Поле BCD (разряд D0) определяет тип счета. При D0 = 0 константа задается в двоичном коде и может принимать значения в диапазоне 0—65 536. При D0 = 1 константа задается в двоично-десятичном коде в диапазоне 0—9999.
После загрузки УС необходимо загрузить в каналы константы пересчета. Константа пересчета загружается в ПТ также по командам вывода, но с адресом, формирующим на входах АО, А1 код соответствующего канала (00, 01, 10). Константа может быть задана байтом (старшим или младшим) или 16-разрядным словом (как это определено полем RW управляющего слова) и представлена двоичным или двоично-десятичным кодом (как определено полем BCD). Порядок загрузки каналов управляющими словами и константами строго определен. Возможны два варианта. Первый предполагает загрузку в любой последовательности сначала всех УС, затем констант пересчета. Второй предполагает загрузку управляющего слова для любого канала, а затем константы пересчета для этого же канала.
Общими и обязательными требованиями для загрузки УС и констант являются следующие: 1) загрузка УС должна опережать загрузку константы; 2) загрузка констант всегда должна выполняться до конца, как определено разрядами RW1, RW0 в формате УС.
Состояние счетчика/таймера СЕ можно прочитать тремя способами.
/. Чтение по обычным командам ввода позволяет прочесть состояние счетчика таймера СЕ в любой момент времени. Выполняется с помощью обычных команд ввода с адресом, формирующим на входах АО, А1 код соответствующего канала. Необходимым условием для выполнения этой операции является остановка счета перед выполнением команд чтения, т. е. GATA = 0. Операцию чтения необходимо выполнять до конца, т. е. нельзя прочитать только один байт СЕ, если константа задана 16-разрядным словом. Сначала считывается младший байт, затем старший.
Чтение по команде CLC (Защелка). Команда CLC позволяет прочитать состояние счетчика/таймера СЕ в любой момент времени без остановки счета. Для этого программист должен загрузить эту команду в ПТ в определенный момент времени. Команда загружается в ПТ так же, как УС, т. е. по команде вывода с адресом, формирующим на входах АО, А1 код 11. Формат команды CLC представлен на рис. 6.20. Разряды D7, D6 задают адрес защелкиваемого канала. Эти разряды не могут принимать значение 11, являющееся кодом команды RBC. Разряды D5, D4 являются кодом команды CLC и принимают значение 00. Разряды D3 — D0 не участвуют в операции и могут принимать любое значение. Таким образом, существует три команды CLC, отличающиеся кодом в разрядах D7, D6:
D7D0
|SC1|SCD| О|О|Х|Х|Х|Х|
| Не используются Код команды CLCАдрес канала00- канал 001- канал 1
канал 2
код команды RBC
Рис. 6.20. Формат команды CLC
CLCG = 0000x X X X защелкивается канал 0;
CLC1 =0100х X X X защелкивается канал 1;
CLC2 = ЮООх X X X защелкивается канал 2.
После загрузки команды CLC выполняется операция чтения так же, как в первом способе, с теми же необходимыми условиями, кроме снятия сигнала GATA. Фактически команда CLC записывает состояние счетчика/таймера СЕ в буферный регистр OL, из которого информация считывается без нарушения продолжения счета. Информация из OL может быть считана в любое время. Необходимо помнить, что если операция чтения не выполнена или выполнена не до конца, то новая команда CLC не воспринимается. Прочитать состояние регистра OL можно только после выполнения хотя бы одного цикла в СЕ.
Команда RBC (Чтение состояния канала) позволяет в любой момент времени прочитать слово состояния канала (SW), т. е. содержимое регистра RS, а также выполнить защелку одного или нескольких каналов одновременно. Формат команды RBC представлен на рис. 6.21. Она загружается в ПТ так же, как УС, т. е. по команде вывода с адресом, формирующим код А0А1 = 11. Старшие разряды (D7D6= 11) являются кодом, по которому ПТ распознает информацию на входе как команду RBC.
D7DO
Ч ГП ICOUNTl STAT ICNT2I CNT11CNTOI 0
11
Код команды RBC
| 1 - канал 0 1 - канал 1
1 - канал 2
0 - читать состояние каналов.
указанных е D3-D1 0 - затолкнуть каналы указанные
в D3-D1
Рис. 6.21. Формат команды RBC
Команда RBC может выполнять две операции: 1) Защелку, что аналогично команде CLC, и 2) Чтение регистра состояния канала. Эти операции задаются независимо кодами D5 = 0, D4 = 0. Возможно совмещение операций. При D5D4=11 операций нет. Особенностью этой команды является возможность выполнения операций одновременно в нескольких каналах. Установка кода D3D2D1 = 111 определяет операцию с соответствующим каналом.
Например, команда RBC= 11001110 одновременно защелкивает/перезапи- сывает состояние регистров СЕ всех трех каналов в собственные регистры OL, а также состояние каналов в RS и делает их доступными для чтения. Эта команда эквивалентна трем командам CLC. Как и при команде CLC, новое «защелкивание» возможно только после полного считывания содержимого OL.
D7D0
|oUT| FN |RW1|rW0| М2 | Ml| МО |вСР|
[0 - двоичный счет;
1 - двоично-десятичный счет ■ Код режима работы
Код порядка загрузки констант
Флаг перезагрузки констант (0 - регистр CR свободен)
Состояние выхода OUT
Рис. 6.22. Формат слова-состояния канала ПТ
Слово-состояние канала SW. Каждый канал имеет регистр слова-состояния RS. Формат слова состояния показан на рис. 6.22, из которого видно, что 210
в процессе работы канала изменяются только два старших разряда слова состояния: D7 и D6. Остальные разряды соответствуют разрядам ранее загруженного управляющего слова, что позволяет контролировать правильность его загрузки.
Разряд D7 слова состояния канала несет информацию о состоянии выхода канала OUT в момент выполнения команды RBC. Разряд D6 является флагом обновления регистра констант CR. Этот флаг особенно необходим для режимов 1 и 5, он позволяет определить, произошла ли загрузка константы из регистра CR в СЕ или нет. Напомним, что для этих режимов загрузка осуществляется аппаратно — по фронту сигнала GATA. Поэтому если флаг обновления установлен в нуль, то это означает, что ранее загруженная константа перезаписана из CR в СЕ и по ней осуществляется операция счета. В этом случае можно произвести загрузку новой константы, не нарушая предыдущего счета. По фронту следующего сигнала GATA начинается счет с новой константой.
Изменение состояния флага обновления при работе и программировании можно проиллюстрировать следующим примером:
при записи УС флаг FN — 1;
при записи констант в CR FN = 1;
при загрузке константы в СЕ FN = 0.
Подключение ПТ к МПС осуществляется с помощью линий CS, RD, WR, АО, А1 по общим правилам подключения интерфейсных БИС к системной шине МПС на базе МПК К1810. На рис. 6.23 показана схема подключения ПТ к шине МПС. Входы RD, WR ориентируют входной буфер ПТ на прием или выдачу, поэтому подключаются к соответствующим выходам ЦП (I/OR, I/OW), на которых формируется сигнал низкого уровня при выполнении команд ввода — вывода. Вывод CS является входом разрешения выбора ПТ.
Рис. 6.23. Схема подключения ПТ к шине МПС
Нулевой потенциал на нем разрешает работу входного буфера ПТ. Этот вход используется для адресации ПТ, он подключается либо к одной из свободных шин адреса (принцип раздельной дешифрации), либо к выходу дешифратора ВУ. Выводы АО, А1 являются входами адресов внутренних регистров ПТ, они подключаются к шинам адреса, не занятым в адресации ПТ, обычно к АО,
8 *
Al шины адреса МПС. Временная диаграмма сигналов CLK.WR,GATA,OUT показана на рис. 6.24, а зависимость состояний сигналов на входах ПТ и выполняемых операций ПТ с ЦП — в табл. 6.3.
Рис. 6.24. Временная диаграмма работы каналов ПТРис. 6.24. Временная диаграмма работы каналов ПТ
Рис. 6.24. Временная диаграмма работы каналов ПТ
Рис. 6.24. Временная диаграмма работы каналов ПТ
Таблица 63
CS HD WR А1 АООперация
01000010010101001011001000010100110001111X X X X011 X X01000010010101001011001000010100110001111X X X X011 X XЗапись константы в канал 0
01000
01001
01010
01011
00100
00101
00110
00111
1X X X X
011 X X
01000
01001
01010
01011
00100
00101
00110
00111
1X X X X
011 X X
Запись константы в канал 1
Запись константы в канал 2
Запись УС, команд
Чтение состояния канала 0
Чтение состояния канала 1
Чтение состояния канала 2 Нет операции (z-состояние) То хе
Функционирование. Как уже отмечалось, каналы ПТ независимо могут быть запрограммированы на работу в одном из шести режимов.
В режиме 0 — прерывание от таймера — низкий уровень сигнала на выводе OUT устанавливается сразу же после загрузки УС. Загрузка константы не оказывает влияния на этот выход. Счет разрешается положительным сигналом на входе GATA. Изменение состояния счетчика/таймера СЕ осуществляется по срезу сигнала CLK, причем по первому тактовому сигналу происходит загрузка СЕ константой из CR, и только второй тактовый сигнал принимает участие в счете. После отсчета загруженного числа устанавливается сигнал OUT = = 1. Таким образом, сигнал OUT = 0 удерживается на время N + 1 тактовых периодов, где N — загруженная константа.
Если во время счета снять сигнал GATA, то счет приостанавливается, содержимое счетчика/таймера сохраняется. Новый положительный сигнал на входе GATA вызывает продолжение счета без перезагрузки СЕ содержимым CR. Загрузка новой константы во время счета приводит: при записи младшего байта — к остановке текущего счета, а при записи старшего — к запуску нового цикла счета.
Контроль счетчика (выполнение команд CLC, RBC) в этом режиме возможен только после хотя бы одного цикла счета. На рис. 6.25 показана временная диаграмма работы ПТ в режиме 0.
В режиме 1 — программируемого ждущего мультивибратора — на выходе OUT формируется сигнал низкого уровня длительностью T=TCLKN, где Тськ — период тактовых импульсов; N — константа. На выходе OUT по положительному фронту сигнала GATA устанавливается нулевой сигнал, который изменяется после окончания счета. Режим 1 является режимом с перезапуском. По каждому фронту сигнала на входе GATA регистр СЕ перезагружается содержимым CR. Это означает, что однажды загруженная константа участвует в счете всякий раз по фронту сигнала GATA, причем по фронту первого сигнала GATA флаг обновления устанавливается в нуль.
Рис. 6.25. Временная диаграмма работы ПТ в режиме 0: УС - управляющее слово; МБК - младший байт константы
Если во время счета в ПТ загружается новая константа, то она устанавливает флаг обновления в единицу, но не влияет на текущий счет. Новый счет начинается только по фронту следующего сигнала GATA. Выполнение команд CLC и RBC возможно только после выполнения хотя бы одного цикла счета.
Временная диаграмма работы ПТ в режиме 1 показана на рис. 6.26.
В режиме 2 — импульсного генератора частоты — канал работает как делитель входной частоты FClk на N. Сразу же после загрузки УС на выходе OUT устанавливается единичный сигнал. При GATA=1 на выходе OUT с частотой Fclk/N устанавливается нулевой сигнал на время одного периода CLK- Режим 2 является режимом с автозагрузкой, т. е. после окончания цикла счета СЕ автоматически перезагружается и счет повторяется. Перезагрузка канала новой константой не влияет на текущий счет, новый счет начинается по окончании предыдущего. При GATA = 0 на выходе OUT устанавливается напряжение высокого уровня и счет останавливается. При сигнале GATA = = 1 счет продолжается, что позволяет синхронизировать работу канала с внешними событиями. Выполнение команд CLC и RBC возможно для этого режима после окончания двух циклов счета.
Рис. 6.26. Временная диаграмма работы ПТ в режиме 1
Временная диаграмма работы ПТ в режиме 2 показана на рис. 6.27 для трех различных вариантов.
Режим 3 — генератора импульсов со скважностью два — аналогичен режиму 2, за тем исключением, что на выходе OUT формируются импульсы с дли- 214
NN + 1
тельностью полупериодов, равной — TCLK при четных N; —~—TCLK для поло-
N-U
жительных и —-—ТСьк для отрицательных полупериодов при нечетных N.
Этот режим является режимом с автозагрузкой, т. е. перезагрузка СЕ константой из CR выполняется автоматически после окончания цикла счета. Перезагрузка константы во время счета не влияет на текущий счет, новый счет начинается по окончании предыдущего. Снятие сигнала GATA приостанавливает счет, установка его продолжает цикл счета. В этом режиме канал может рабо-
тать только с можно толькотать только с можно толькоконстантой больше трех. Выполнение команд CLC и RBC воз- после двух циклов счета.
тать только с можно только
тать только с можно только
Временная диаграмма работы ПТ в режиме 3 показана на рис. 6.28.
В режиме 4 — программно-запускаемого одновибратора — по окончании отсчета числа, загруженного в счетчик/таймер, на выходе OUT устанавливается нулевой сигнал на время одного периода сигнала CLK- Высокий уровень сигнала на выходе OUT устанавливается сразу же после загрузки УС. Сигнал высокого уровня на входе GATA разрешает счет, причем первым тактовым сигналом происходит загрузка счетчика/таймера СЕ константой из CR, а второй тактовый сигнал начинает счет. Таким образом, сигнал длительностью,
равной периоду тактовой частоты, устанавливается на выходе OUT через N + +1 тактовых периодов. Если во время счета снимается сигнал GATA, то счет приостанавливается, текущее значение СЕ счетчика/таймера сохраняется. Новый положительный сигнал на GATA вызывает продолжение счета. Это режим одноразового выполнения функции. Загрузка новой константы во время счета приводит: при записи младшего байта к остановке текущего счета, а при записи старшего — к запуску нового цикла счета.
Выполнение команд CLC и RBC возможно только после окончания одного цикла счета.
Временная диаграмма работы ПТ в режиме 4 показана на рис. 6.29.
Режим 5 — аппаратно-запускаемого одновибратора — аналогичен режиму 4 по способу формирования сигнала на выходе OUT и режиму 1 по действию сигнала GATA.
На выходе OUT устанавливается сигнал нулевого уровня на время одного периода СЕК после отсчета загруженной в СЕ константы. Загрузка в СЕ константы из CR осуществляется по фронту сигнала GATA. Из этого следует, что 216
Рнс. 6.29. Временная диаграмма работы ПТ в режиме 4
по фронту GATA происходит новая загрузка СЕ из CR, причем первый фронт GATA устанавливает флаг обновления в нуль. Если во время счета в канал загружается новая константа, то эта операция устанавливает флаг обновления в единицу, но не влияет на текущий счет. Новый счет начинается только по фронту следующего сигнала GATA. Выполнение команд CLC и RBC возможно только после выполнения хотя бы одного цикла счета.
Временная диаграмма работы ПТ в режиме 5 показана на рис. 6.30.
Из описания режимов ПТ видно, что таймер может реализовать все основные времязадающие функции, широко используемые в цифровой технике, с помощью которых выполняются как традиционные функции, связанные с управлением МПС, так и специфические, измерительные функции, например для измерения частоты. В заключение следует отметить, что при конструктивной совместимости таймеров К 580 ВИ 53 и К 181 ВИ 54 последний кроме улучшенной частотной характеристики обладает более широкими функциональными возможностями, в особенности при реализации параллельных процессов.
Контроллер накопителя на гибком магнитном диске К580ВГ72
При изучении материала данного параграфа читателю, не знакомому с вопросами организации дисководов, конструкцией гибких магнитных дисков, форматами размещения данных на дискете и другими общими вопросами, рекомендуем обратиться к работе [5].
Контроллер накопителя на гибком магнитном диске (КНГМД) КР580ВГ72 реализует функцию управления четырьмя накопителями на гибких магнитных дисках, обеспечивая работу в формате с одинарной FM и с двойной MFM плотностью, включая двустороннюю запись на дискету. Он имеет схему сопряжения с процессором, ориентированную на системную шину микропроцессоров серий К580, К1810, К1821; обеспечивает многосекторную и многоканальную передачу объемов данных, задаваемых программно как в обычном режиме, так и в режиме ПДП; имеет встроенный генератор и схему, упрощающую построение контура фазовой автоподстройки.
Назначение выводов.
RESET — сброс. Выходной сигнал, устанавливающий контроллер в исходное состояние.
RD — чтение. Сигнал RD = O определяет операцию чтения данных из контроллера.
WR — запись. Сигнал WR = 0 определяет операцию записи данных в контроллер.
CS — выбор кристалла. Разрешение обращения к контроллеру. Сигнал CS = 0 разрешает действие сигналов RD и WR.
АО — выходной сигнал, разрешающий обращение либо к регистру состояний (А0 = 0), либо к регистру данных (А0= 1).
DB7 — DB0 — двунаправленная шина данных.
DRQ — запрос на ПДП. Сигнал DRQ=1 определяет запрос на ПДП ЦП.
DACK — подтверждение ПДП. Сигнал от ЦП, сообщающий контроллеру о том, что шины ЦП находятся в z-состоянии.
ТС — окончание ПДП. Сигнал ТС= 1 сообщает контроллеру об окончании циклов ПДП.
IDX — индекс, признак обнаружения начала дорожки.
INT — сигнал запроса прерывания ЦП от контроллера.
CLK — вход, подключаемый к генератору (4 или 8 МГц).
WR CLK — синхроимпульсы записи. Вход, подключаемый к генератору частотой F = 500 КГц при одинарной плотности и F=1 МГц при двойной, с длительностью положительного полупериода 250 нс в обоих случаях. Сигналы должны быть инициированы для режимов как записи, так и чтения.
DW — информационное окно, вырабатывается схемой фазовой автоподстройки и используется для выбора данных с дисковода.
RD DATA — линия приема входных данных с дисковода в последовательном коде.
VCO — синхронизация, выходной сигнал контроллера, участвующий в формировании «окна» в схеме фазовой автоподстройки.
WE — разрешение записи, сигнал записи данных на дискету.
MFM — выбор режима плотности записи. Сигнал MFM=1 определяет двойную плотность, MFM = 0— одинарную.
HD SEL — выбор головки. Сигнал HD SEL=1 определяет работу с головкой 1; HD SEL = 0— работу с головкой 0.
DS1, DS0 — выбор устройства, выходные сигналы, обеспечивающие адресацию к одному из четырех дисководов.
WR DATA — линия вывода данных в последовательном коде.
PSI, PS0 — предкомпенсация, выходные линии, передающие код предварительного сдвига в режиме MFM.
FLT/TRK0 — отказ/дорожка 0, указывает на сбой при операциях обмена или выбора дорожки 0 в режиме поиска.
WP/TS — защита записи/двусторонний, входной сигнал, определяющий режим записи при операциях обмена или режим поиска информации с двух сторон дискеты.
RDY — сигнал готовности дисковода.
HDL — загрузка головки, выходной сигнал начальной установки головки дисковода.
FD/STP — сброс отказа/шаг, осуществляет сброс ошибки в режиме обмена и обеспечивает переход головки на следующий цилиндр.
LCT/DIR — малый ток/направление, определяет направление движения головки.
RW/SEEK— запись/чтение/поиск, определяет направление движения головки в режиме поиска, единичный сигнал означает увеличение, нулевой — уменьшение.
Ucc— шина питания (+5 В).
GND — общий.
Структурная схема контроллера (рис. 6.31, 6.32) включает три функциональных блока: буфер шины данных, обеспечивающий связь контроллера с ЦП и вырабатывающий запросы на прерывание и ПДП; блок управления накопителями на НГМД, принимающий и вырабатывающий сигналы для управления накопителями, и блок управления контроллером.
Рис. 6.31. Структурная схема контроллера НГМД ВГ72
Блок управления контроллером включает несколько регистров специального назначения.
Регистр входных/выходных данных RIO адресуется при А0=1 и доступен для чтения и записи со стороны ЦП. С помощью этого регистра осуществляется обмен данными между контроллером и ЦП, а также служебной информацией — загрузкой команды и чтением из регистров состояний и указателей. Запись и чтение служебной информации осуществляются в определенной последовательности, в соответствии со структурой команд.
Основной регистр состояния RS доступен только для операций чтения и содержит разряды, определяющие состояние контроллера по взаимодействию с НГМД и ЦП. Формат слова состояния RS показан на рис. 6.33. Содержимое его можно прочитать в любое время по команде ввода с адресом, формирующим сигнал А0 = 0. Разряды D3 — DO указывают на выполнение команды поиска; D4 — на выполнение контроллером операции чтения/записи; D5 ис-
пользуется для режима прерывания и указывает на завершение операции обмена данными между контроллером и ЦП, D6 определяет направление передачи данных (от ЦП или к ЦП); D7 устанавливается при готовности регистра данных R10 принять или передать данные.
Входной регистр RI и выходной регистр RO — регистры приема/передачи данных в последовательном коде. Программно они недоступны. При приеме данных от накопителя данные отделяются от импульсов синхронизации с помощью «окна данных» DW, которое формируется с помощью внешней схемы фазовой автоподстройки и сигнала синхронизации VCO. При выдаче данных используются сигнал разрешения записи WE и линия управления током записи. Кроме того, для синхронизации работы выходных регистров с работой дисковода используется внешний генератор, формирующий импульсы записи WR CLK. Скорость прие- ма/передачи байта составляет 32 мкс (по 4 мкс на бит).
6D0D1D2D3D4D5D6D7FDCDRQ INT147188309WRD WRE PSO PSI VCO251032И31122413294СВ RD RRАО RES ТС DAtK CLKDS1 MFM RR/SHD4 HD5 LBT FR/ST28е2633953612716381537194021WRC RDD DWUM GND232235RDY3433FLT IDX17206D0D1D2D3D4D5D6D7FDCDRQ INT147188309WRD WRE PSO PSI VCO251032И31122413294СВ RD RRАО RES ТС DAtK CLKDS1 MFM RR/SHD4 HD5 LBT FR/ST28е2633953612716381537194021WRC RDD DWUM GND232235RDY3433FLT IDX1720Рис. 6.32. Условное графическое обозначение КНГМДРис. 6.32. Условное графическое обозначение КНГМДПрием/передача данных может осуществляться контроллером в двух режимах: ПДП и прерывания. В режиме ПДП необходимо дополнительно использовать контроллер ПДП К1810ВГ37, вырабатывающий сигнал запроса на ПДП DRQ и принимающий сигналы подтверждения (DACK) и конца ПДП (ТС). В режиме прерывания контроллер формирует сигналы запроса на прерывание INT при пересылке каждого байта между контроллером и ЦП, предоставляя возможность управления обменом подпрограмме ЦП.
6
D0
D1
D2
D3
D4
D5
D6
D7
FDC
DRQ INT
14
7
18
8
30
9
WRD WRE PSO PSI VCO
25
10
32
И
31
12
24
13
29
4
СВ RD RR
АО RES ТС DAtK CLK
DS1 MFM RR/S
HD4 HD5 LBT FR/ST
28
е
26
3
39
5
36
1
27
16
38
15
37
19
40
21
WRC RDD DW
UM GND
23
22
35
RDY
34
33
FLT IDX
17
20
6
D0
D1
D2
D3
D4
D5
D6
D7
FDC
DRQ INT
14
7
18
8
30
9
WRD WRE PSO PSI VCO
25
10
32
И
31
12
24
13
29
4
СВ RD RR
АО RES ТС DAtK CLK
DS1 MFM RR/S
HD4 HD5 LBT FR/ST
28
е
26
3
39
5
36
1
27
16
38
15
37
19
40
21
WRC RDD DW
UM GND
23
22
35
RDY
34
33
FLT IDX
17
20
Рис. 6.32. Условное графическое обозначение КНГМД
Рис. 6.32. Условное графическое обозначение КНГМД
D7DO
|RQM|DI0|NDM| СВ |РЗВ,Р2В,Р1В,Р0В|
L НГМДo' . НГМД11-поиск
НГМД 2 ’0-нетпоиска НГМД3. 1 - выполнить чтение/запись; 0 - нет операции
О - операция закончена для режима прерывания; 1 - нет
Напрееление передачи :1-е ЦП, 0 - из ЦП
Пдтовность данных в RD: 1 - готовы, 0 - нет
Рис. 6.33. Формат слова - состояния RS
Кроме перечисленных регистров контроллер имеет блок регистров BRC для хранения кода команды и служебной информации (атрибутов), необходимой для выполнения команд. В блоке BRC можно выделить четыре регистра (ST3 — ST0), несущие информацию о состоянии контроллера и дисковода при выполнении команд, форматы которых показаны на рис. 6.34. Кроме того,
DODOконтроллер имеет схему обнаружения адресного маркера, что упрощает реализацию контура фазовой автоподстройки. Время перехода с дорожки на дорожку и время загрузки/разгрузки головки (позиционирование) задается программно. Контроллер имеет много дополнительных возможностей, таких, как многократное выполнение операций чтения/записи с помощью одной команды, режимы одинарной и двойной плотности записи.
DO
DO
| SE I ЕС I NC | нв |usi|usa|
|I Указывают код накопителя |при прерывании.
Ч
Начальный адрес. Указывает начало прерывания
Не готов. Устанавливается в “Г, если накопитель не готов выполнить команду чтения или записи
Сбой оборудования. Устанавливается е “Г, если из накопителя поступает сигнал ошибки
Поиск окончен. Устанавливается в “Г, если эаеерше- на команда Поиск
Код прерывания
00- команда завершена и правильно выполнена
0 1- выполнение команды начато, но завершено аварийно
10- команда закончила выполнение неначаешись
1 1 - во время выполнения команды линия готовности накопителя изменило свое состояние
Рис. 6.34 а. Формат ST0
D7D0
Рис. 6.34 в. Формат STS
D7DO
Схема подключения контроллера в режиме ПДП для одного накопителя представлена на рис. 6.35. На рис. 6.36 приведена на схеме МПС с КНГМД, в которой используются также три БИС универсального приемника/передатчика USART К580ВВ51А для приема/передачи данных в последовательном коде, программируемый таймер PIT К1810ВИ54 для управления синхронизацией приема/передачи USART и контроллер прерывания PIC для управления режимом прерывания. Схема позволяет использовать КНГМД вместе с клавиатурой и другими внешними устройствами, для обслуживания которых нужны указанные БИС. На рис. 6.37—6.41 представлены временные диаграммы работы контроллера в различных режимах.
Системная■инаСистемная■инаРис. 6.35. Схема подключения контроллера к накопителюРис. 6.35. Схема подключения контроллера к накопителю
Системная
■ина
Системная
■ина
Рис. 6.35. Схема подключения контроллера к накопителю
Рис. 6.35. Схема подключения контроллера к накопителю
Системная шина
Рис. 6.36. Схема подключения КНГМД к шине МПС
Рис. 6.40. Временная диаграмма выполнения операции Поиск (Folk = 8 МГц)
Рис. 6.41. Временная диаграмма работы КНГМД в режиме чтения данных с дискеты
Программирование контроллера. КНГМД может выполнять 15 различных команд, каждая из которых загружается в контроллер многобайтовой пересылкой из ЦП. Выполнение команды можно разделить на три фазы. В фазе 1 контроллер получает от ЦП всю информацию, необходимую для выполнения команды; в фазе 2 он выполняет команду; в фазе 3 — фазе результата — ЦП получает информацию о состоянии котроллера.
В фазе 1 контроллер принимает команду, представленную многобайтовым форматом. Загрузка команды осуществляется через регистр входных/выходных данных RIO в строго определенной последовательности в соответствии с форматом команды. При выполнении фазы 1 или 2 содержимое основного регистра состояния может быть прочитано в любое время. Перед загрузкой команды необходимо установить в основном регистре состояния (RS) разряды D7D6 = = 10, что определяет режим приема от ЦП и готовность к приему. Фаза 2 начинается после установки в этом регистре кода D7D6=11, что определяет режим выдачи данных в ЦП. Если в этой фазе КНГМД находится в режиме прерывания, то после приема данных с дисковода формируется сигнал запроса прерывания INT и осуществляется переход к подпрограмме ввода данных. После выполнения команды ввода по сигналу RD = 0 запрос прерывания сбрасывается. Если ЦП не успевает принимать данные в темпе работы накопителя (13 мкс для режима с двойной плотностью), то необходимо прочитать содержимое регистра состояния для анализа разряда готовности D7. При выполнении команды записи сигнал прерывания формируется, как в предыдущем случае, но в конце цикла передачи данных. Если контроллер запрограммирован
в режиме ПДП, то вместо сигнала запроса прерывания после приема байта данных вырабатывается сигнал запроса DRQ. Когда ЦП отвечает контроллеру
сигналом подтверждения ПДП DACK, а сигналом чтения RD снимается сигнал DRQ — данные считаны/записаны в контроллер.
После выполнения фазы 2 ЦП должен считать данные о состоянии контроллера. Как уже отмечалось, контроллер содержит пять регистров состояний: основной RS и STO, STI, ST2, ST3. Содержимое RS можно считывать в любое
время, а содержимое остальных регистров — только после выполнения команды. Каждая команда определяет число регистров состояний и указателей, которые необходимо просчитать, а также последовательность их считывания. Сокращение числа фаз не допускается. После загрузки команды контроллер автоматически переходит к фазе 2, а после считывания последнего байта данных
выполнение команды автоматически прекращается и контроллер готов принять новую команду. Команда может быть прервана подачей сигнала ТС=1.выполнение команды автоматически прекращается и контроллер готов принять новую команду. Команда может быть прервана подачей сигнала ТС=1.Чтение данныхЧтение данныхСИИИЕЯЕВЕВМВВЕВ ЕВ ЕВ ЕВ ЕВ ЕВ SIE ESI ЛЕЯ
выполнение команды автоматически прекращается и контроллер готов принять новую команду. Команда может быть прервана подачей сигнала ТС=1.
выполнение команды автоматически прекращается и контроллер готов принять новую команду. Команда может быть прервана подачей сигнала ТС=1.
Чтение данных
Чтение данных
MTMFM000 1 1 1 0 1 10 I 000ЕЯ НЕЕ ЛИ ЛИ]MTMFM000 1 1 1 0 1 10 I 000ЕЯ НЕЕ ЛИ ЛИ]Чтение удаленных данныхЗапись данныхЧтение удаленных данныхЗапись данныхСПЕЛ КЗ ЕВ ВВП ЕВ ЕВ ЕВ El ЕВ ЕВ ЕЯ ЕЛЕ ESI ПИП
MTMFM
0
0
0 1 1 1 0 1 1
0 I 0
0
0
ЕЯ НЕЕ ЛИ ЛИ]
MTMFM
0
0
0 1 1 1 0 1 1
0 I 0
0
0
ЕЯ НЕЕ ЛИ ЛИ]
Чтение удаленных данных
Запись данных
Чтение удаленных данных
Запись данных
ЕПШИЕЯ
0
1 0 J 0 1 0
0
ЕВ ЕЛЕ ПЕП ПИП
МТ
MFM
SK 1 0 1 0 | 0 I 110
0
0
ЕЯ ЕЯ ВЛ GEE ESI ESH
мт
MFM
SK
1
0
0
0
1
0
0
0
0
0
HDS
DS1
DS0
ЕНЗВЕЕЗВН
110 10 111
10 10 10 10
ЕЖЕЕЕЕ31ЕЕЯ1
б)
мт
MFMI SK
1
1
1
0
1
0
0 1 0
0
0
HDS
DS1
DS0
Рис. 6.42. Формат команд обмена (а) и их коды (б)
Запись удаленных данных
Чтение данных с дорожки
Сканирование до "равно"
Сканирование до "меньше или равно"
Сканирование до "больше или равно"
0MFM00110100000HDSDS1DS0NSCGPLD'Выполнение команды:ST0ST1ST2СНRN0MFM00110100000HDSDS1DS0NSCGPLD'Выполнение команды:ST0ST1ST2СНRN0000011100000010 10000011100000010 1D7DOD7DOВыполнение командыВыполнение командыD7 DO ^oioloioiiloioio _ Выполнение команды 'D7 DO ^oioloioiiloioio _ Выполнение команды 'ST0PCNST0PCNКод командыСчитывает состояние ST0 после прерываний, вызванных изивнвниам линии готовности и опврацией ПоискСостояние после прерыванияКод командыСчитывает состояние ST0 после прерываний, вызванных изивнвниам линии готовности и опврацией ПоискСостояние после прерывания
0
MFM
0
0
1
1
0
1
0
0
0
0
0
HDS
DS1
DS0
N
SC
GPL
D
'Выполнение команды:
ST0
ST1
ST2
С
Н
R
N
0
MFM
0
0
1
1
0
1
0
0
0
0
0
HDS
DS1
DS0
N
SC
GPL
D
'Выполнение команды:
ST0
ST1
ST2
С
Н
R
N
0
0
0
0
0
1
1
1
0
0
0
0
0
0
1
0 1
0
0
0
0
0
1
1
1
0
0
0
0
0
0
1
0 1
D7DO
D7DO
Выполнение команды
Выполнение команды
D7 DO ^oioloioiiloioio _ Выполнение команды '
D7 DO ^oioloioiiloioio _ Выполнение команды '
ST0
PCN
ST0
PCN
Код команды
Считывает состояние ST0 после прерываний, вызванных изивнвниам линии готовности и опврацией Поиск
Состояние после прерывания
Код команды
Считывает состояние ST0 после прерываний, вызванных изивнвниам линии готовности и опврацией Поиск
Состояние после прерывания
Код команды
Атрибуты
Форматирование дорожки
Информация о состоянии после выполнения команды
Информация сектора ID после выполнения команды
Рис. 6.43. Формат команды Форматирование
Код команды
Считывание поля идентификации
Информация о состоянии после выполнения команды
Информация сектора ID после выполнения команды
Рис. 6.44. Формат коианды Считать ID
Код коианды
Вызывает перемещение головки на дорожку О
Рис. 6.45. Формат команды Инициализация
0 1 0 1 0 I 00 1 0 1 1 1 1SRTнитHLTIND0 1 0 1 0 I 00 1 0 1 1 1 1SRTнитHLTINDD7DOD7DOВыполнение командыВыполнение командыКод командыКод команды
0 1 0 1 0 I 0
0 1 0 1 1 1 1
SRT
нит
HLT
IND
0 1 0 1 0 I 0
0 1 0 1 1 1 1
SRT
нит
HLT
IND
D7DO
D7DO
Выполнение команды
Выполнение команды
Код команды
Код команды
Рис. 6.46. Формат команды Чтение состояния прерывания
Устанавливает скорость шагов головки, вреия загрузки/разгрузки головки и режим ПДП
D7DO
0
0
0
0
1
1
1
1
0
0
0
0
0
HDS
DS1
DS0
с
' Выполнение коиандыПозиционирует головку
на указанный цилиндр
DS1
DS0
Время сканирования, мкс
0
0
220
0
1
220
1
0
220
1
1
440
Таблица 6.4Таблица 6.4Рис. 6.49. Формат команды Поиск
Таблица 6.4
Таблица 6.4
Неверный код™|
Выполнение коианды * Устанавливает ST0-80H
Рис. 6.50. Формат команды Недействительно
После загрузки команды Определить (полное название команды Определить состояние накопителя) линии DSO, DS1 автоматически переходят в режим опрос’а. Контроллер опрашивает все четыре накопителя, и если формируется сигнал готовности, то вырабатывается сигнал запроса прерывания.
Форматы команд представлены на рис. 6.42—6.50. Первые два байта определяют код команды, последующие байты — служебную информацию для ее выполнения (атрибуты). После выполнения команд в фазе результата считывается информация о состоянии контроллера в естественном порядке, как указано на рисунках. Назначение полей кода команд и служебной информации в дополнительных байтах: МТ — двусторонняя операция; MFM — двойная/одинарная плотность; SK — пропуск удаленных данных; HDS — номер головки для двустороннего накопителя; DS1, DS0 — номер выбираемого накопителя; С — номер цилиндра; Н — номер головки для двустороннего накопителя; R — номер сектора; N — число байтов в секторе; EOT — номер последнего сектора на дорожке; GPL — размер промежутка; DTL — число считываемых/записы- ваемых байтов; SC — число секторов в цилиндре; D — данные; PCN — номер цилиндра после выполнения команды чтения состояния прерываний; SRT — время шага, мс; HUT — время разгрузки головки (задается кратным 16 мс); НЕТ — время загрузки головки (задается кратным 2 мс); ND — режим прерывания; NCN — номер цилиндра после поиска. В табл. 6.4—6.7 приведены коды полей команд и соответствующие им физические эквиваленты.
N
ЧислоЧисло
байтов секторов
Обшее число Номер последнего
байтов
читаемого сектора
Односторонняя операция,
одинарная
плотность (MT=0,MFM=0)
00
12826
3328
26, сторона 0
01
25615
3840
15, То хе
02
5128
4096
8,>>
Односторонняя операция.
двойная плотность (MT=0,MFM=l)
01
25626
6656
26, сторона 0
02
51215
7680
15, То же
03
10248
8192
8,>>
Двусторонняя операция,
одинарная
плотность (MT=l,MFM=0)
00
12852
6656
26, сторона 1
01
25630
7680
15, То же
02
51216
8192
6,>>
Двусторонняя операция.
двойная плотность (МТ=1,MFM=1)
01
25652
13312
26, сторона 1
02
51230
15360
15, То же
03
102416
16384
6,»
Таблица 6.6
EOT
Последний сектор,
Значения С, Н, R, N
пересылаемый в ЦП
в фазе результата
Односторонняя операция
(МТ=0)
1А
от 1 до 25
С, Н, N
- без изменения
OF
от 1 дс. 14
R = К +
1
08
от 1 до 7
1А
сектор 26
Н, N - без изменения
OF
сектор 15
С = С +
1
08
сектор 8
R = 01
Двусторонняя
операция
(МТ=1)
1A
от 1 до 25
С, Н, N
- без изменения
OF
от 1 до 14
R = R +
1
08
от 1 до 7
1A
сектор 26
С, N - без изменения
OF
сектор 15
R = 01
08
сектор 6
Н равно
значению младшего бита
Функционирование. Приведем подробное описание выполнения команд контроллера НГМД. После поступления команды Чтение данных (см. рис. 6.42) контроллер загружает головку, а после ее установки начинает считывать метки адреса идентификатора Ю~и поля ID. Когда очередной номер сектора, считанный с дискеты, совпадает с номером, хранящимся в регистре, контроллер считывает данные с дискеты и байт за байтом пересылает их в ЦП. После завершения операции считывания с очередного сектора номер сектора увеличивается на единицу и выполнение операции продолжается.
При передаче данных в ЦП КНГМД должен обслуживаться им каждые 27 мкс в режиме одинарной плотности и каждые 13 мкс в режиме двойной плотности, в противном случае КНГМД в регистре состояний ST1 устанавлива-
Таблица 6.7Таблица 6.7001А071В128010F0Е2А25602081ВЗА5120304478А10240402С8ЕЕ20480501СВЕЕ4096001А071В128010F0Е2А25602081ВЗА5120304478А10240402С8ЕЕ20480501СВЕЕ4096N SC GPL1’ GPL2> Размер сектора (байт)N SC GPL1’ GPL2> Размер сектора (байт)Одинарная плотность (МЕМ=0)Одинарная плотность (МЕМ=0)011А0Е36256020F1В545120308ЗЕ741024040499ЕЕ20480502СВЕЕ40960601СВЕЕ8192011А0Е36256020F1В545120308ЗЕ741024040499ЕЕ20480502СВЕЕ40960601СВЕЕ8192Двойная плотность (МЕМ=1)Двойная плотность (МЕМ=1)D Указывается в командах чтения/за- писи.2> Указывается во всех остальных командах.D Указывается в командах чтения/за- писи.2> Указывается во всех остальных командах.при этом также устанавливаетсяпри этом также устанавливается
Таблица 6.7
Таблица 6.7
00
1А
07
1В
128
01
0F
0Е
2А
256
02
08
1В
ЗА
512
03
04
47
8А
1024
04
02
С8
ЕЕ
2048
05
01
СВ
ЕЕ
4096
00
1А
07
1В
128
01
0F
0Е
2А
256
02
08
1В
ЗА
512
03
04
47
8А
1024
04
02
С8
ЕЕ
2048
05
01
СВ
ЕЕ
4096
N SC GPL1’ GPL2> Размер сектора (байт)
N SC GPL1’ GPL2> Размер сектора (байт)
Одинарная плотность (МЕМ=0)
Одинарная плотность (МЕМ=0)
01
1А
0Е
36
256
02
0F
1В
54
512
03
08
ЗЕ
74
1024
04
04
99
ЕЕ
2048
05
02
СВ
ЕЕ
4096
06
01
СВ
ЕЕ
8192
01
1А
0Е
36
256
02
0F
1В
54
512
03
08
ЗЕ
74
1024
04
04
99
ЕЕ
2048
05
02
СВ
ЕЕ
4096
06
01
СВ
ЕЕ
8192
Двойная плотность (МЕМ=1)
Двойная плотность (МЕМ=1)
D Указывается в командах чтения/за- писи.
2> Указывается во всех остальных командах.
D Указывается в командах чтения/за- писи.
2> Указывается во всех остальных командах.
при этом также устанавливается
при этом также устанавливается
ет флажок OR=1 (переполнение) и выполнение команды прекращается.
Если при поиске нужного сектора КНГМД получает сигнал от датчика индекса дважды, но не находит нужного сектора R, то в ST 1 устанавливается флажок ND= 1 (отсутствие данных) и прекращается выполнение команды. В регистре состояния ST0 при этом D7D6 = 01:
При считывании полей ID и полей данных в каждом секторе проверяются байты избыточного циклического контроля CRC. Если ошибка считывания обнаружена в поле ID, то в регистре состояния ST1 устанавливается флажок DE=1 (ошибка в данных), а если в поле данных, то в регистре состояния ST2 (ошибка данных в поле данных) устанавливается флажок DD=1 и прекращается выполнение команды. В регистре состояния ST0
D7D6 = 0E
Если контроллер считывает с дискеты адресную метку удаленных данных и бит DS в первом слове команды не установлен (SK = 0), то в регистре ST2 устанавливается флажок СМ=1 и прекращается выполнение команды после чтения всех данных из этого сектора. Если SK= 1, то пропускается сектор с адресной меткой удаленных данных и осуществляется переход к считыванию следующего сектора.
Объем данных, обрабатываемых с помощью одной команды, поданной на КНГМД, зависит от числа считываемых дорожек МТ, плотности записанной информации МЕМ, числа байтов N в секторе. Зависимость объема обрабатываемых данных от значений МТ, МЕМ и N показана в табл. 6.5.
Многодорожечная операция МТ позволяет контроллеру считывать данные с обеих сторон дискеты. Для конкретного цилиндра данные передаются, начиная с сектора 1 стороны 0 и кончая сектором г стороны 1 (г — последний сектор на каждой стороне дискеты).
При N=00 информация в поле DTE задает объем данных, которые контроллер должен обрабатывать как сектор. Если код в DTE меньше фактического объема данных в секторе, то данные, выходящие за пределы DTE в этом секторе, не передаются на шину данных. Контроллер считывает весь сектор, выполняет контроль принятой информации и может закончить выполнение команды или выполнять многосекторную операцию считывания в зависимости от способа окончания команды.
При N У=00 информация в DTE лишена смысла и должна принять значение 0FFH.
После завершения команды чтения данных головка не разгружается до тех пор, пока не закончится интервал ее разгрузки. Если контроллер получает следующую команду до того, как головка разгрузится, время установки головки может быть сокращено в интервале между двумя считываниями. Коман-
да чтения данных может быть прервана по сигналу ТС=1 (последнее число), после чего КНГМД прекращает передачу данных в ЦП, но продолжает считывать данные с очередного сектора, проверяет контрольные биты CRC и, только когда весь сектор прочитан, прекращает выполнение команды.
После окончания операции чтения/записи информация в поле ID в фазе результата зависит от значения бита МТ и байта EOT. В табл. 6.6 приведены значения С, Н, R и N после окончания команды.
После получения команды Запись данных (см. рис. 6.42) контроллер загружает головку, а после ее установки начинает считывать информацию поля ID. Когда номер очередного сектора совпадает с номером сектора, считанного с дискеты, контроллер байт за байтом получает данные от ЦП и передает их для записи на диск. После записи данных в определенный сектор его номер увеличивается на единицу и происходит запись следующего поля данных. Выполнение этой многосекторной записи продолжается до поступления сигнала ТС=1 (последнее число). Если этот сигнал получен во время выполнения записи данных, то остаток поля данных заполняется нулями.
Контроллер НГМД считывает информацию из поля ID каждого сектора и проверяет байты циклического избыточного контроля CRC. Если обнаружена ошибка в одном из полей ID, он устанавливает флажок DE=1 в регистре состояния ST1 (ошибка в данных) и прекращает выполнение команды записи данных. В регистре состояния ST0 при этом устанавливается D7D6 = 01.
В режиме записи данных передача данных между ЦП и КНГМД должна происходить каждые 31 мкс в режиме одинарной плотности и каждые 15 мкс в режиме двойной плотности. Если временной интервал между передачами больше, то КНГМД устанавливает в регистре состояния ST1 флажок OR = = 1 (переполнение) и заканчивает выполнение команды.
В остальном команда записи данных выполняется аналогично команде чтения.
Команда Запись удаленных данных (рис. 6.42) аналогична команде записи данных, за исключением того, что в начале поля данных записывается адресная метка удаленных данных, а не обычная адресная метка данных.
Команда Чтение удаленных данных (рис. 6.42) аналогична команде чтения данных, за тем исключением, что когда КНГМД обнаруживает адресную метку удаленных данных и бит SK = 0, он считывает все данные в секторе и в регистре состояния ST2 устанавливает флажок СМ= 1, а затем прекращает выполнение команды. Если SK=1 и встречается адресная метка удаленных данных, КНГМД пропускает сектор и считывает следующий.
Команда Чтение данных дорожки (рис. 6.42) аналогична команде чтения данных, за исключением тою, что все поле данных считывается непрерывно с каждого сектора дорожки. Сразу после получения сигнала с датчика индекса контроллер начинает считывать все поля данных на дорожке как непрерывные блоки данных. Если обнаруживается ошибка в контрольных байтах поля ID, то в регистре состояния ST1 устанавливается флажок ND=1. Эта команда позволяет производить многодорожечные действия или пропуски. Команда заканчивается, когда прочитан последний сектор на дорожке. Если КНГМД не находит на дискете адресной метки до того, как поступит второй сигнал с датчика индекса, то он устанавливает в регистре состояния ST1 флажок МА = = 1 (адресная метка отсутствует) и прекращает выполнение команды.
Команда Считать ID (см. рис. 6.44) используется для определения положе-
ния головки. КНГМД запоминает значение первого поля ID, которое он может прочесть.
Команда Форматировать (рис. 6.43) позволяет форматировать всю дорожку. После поступления сигнала с датчика индекса на дискете записывается следующая информация: интервалы, адресные метки, поля ID и поля данных, формат записи в режиме FM или MFM. Формат записи определяется значениями N (байт/сектор), SC (сектор/цилиндр), GPL (длина интервала) и D (комбинация данных), которые задаются ЦП во время фазы выполнения команды. Поле данных заполняется байтами данных, которые хранятся в регистре D. Поле ID для каждого сектора определяется ЦП. Контроллер НГМД запрашивает данные из С, Н, R, N, что позволяет форматировать дискету без соблюдения порядка следования секторов. Содержимое регистра R увеличивается на единицу после форматирования каждого сектора. Таким образом, содержимое регистра R принимает значение R+1, когда он считывается во время фазы результата. Команда форматирования выполняется до поступления второго сигнала от индексного датчика.
Если в конце операции записи от НГМД получен сигнал Неисправность, то контроллер НГМД устанавливает в регистре состояния ST0 флажок ЕС = = 1 (сбой оборудования). Потеря сигнала Готов в начале выполнения команды также приводит к прекращению выполнения команды.
Команда Сканирование (рис. 6.42) позволяет сравнивать данные, поступающие с дискеты, с данными, поступающими от ЦП или контроллера ПДП. Контроллер побайтно сравнивает данные и ищет сектор, который удовлетворяет заданному условию Онгмд=Оцп, Онгмд^Оцп» Онгмд^Оцп- Для сравнения используется арифметика обратного кода (поразрядного дополнения), где FF — наибольшее число; 00 — наименьшее. Если после сравнения всего сектора данных условие не выполняется, номер сектора увеличивается (R + STP-*- -►R), и операция сканирования продолжается до тех пор, пока не будет выполнено одно из условий, не будет получен сигнал ТС (последнее число) или не появится сигнал Конец дорожки.
Если условия сканирования выполнены, то в регистре состояния ST2 устанавливается флажок SH = 1 (сканирование достигнуто) и прекращается выполнение команды. Если условия сканирования между начальным и конечным сектором на цилиндре не выполнены, то в регистре состояния ST2 устанавливается флаг SN = 1 (сканирования нет). Если во время сканирования поступит сигнал ТС=1, контроллер закончит сравнение очередного байта и завершит выполнение команды.
В табл. 6.8 показано состояние битов SH и SN при разных условиях сканирования.
Если во время сканирования встречается метка Адрес удаленных данных и SN = 0, то это воспринимается как последний сектор на дорожке и в регистре состояния ST2 устанавливается флажок СМ= 1 (служебная метка), после чего выполнение команды завершается. Если SN = 1, то контроллер пропускает сектор с меткой Удаленные данные, считывает следующий сектор и в регистре состояния ST2 устанавливается флажок СМ = 1, показывая, что встретился удаленный сектор.
Когда задаются значения STP = 01 (считываются смежные сектора), STP = 02 (чередующиеся сектора), МТ (несколько дорожек), необходимо помнить, что следует считать последний сектор на дорожке. Например, если
STP = 02, a MT = O, сектора нумеруются с 1 по 26, и сканирование начинается с сектора 21, считываются сектора 21, 23, 25, сектор 26 пропускается и сигнал IDX приходит до того, как значение поля (EOT) последнего сектора 26 будет считано. Это приводит к ненормальному завершению команды. Если бы код EOT был установлен на сектор 25 или сканирование началось с сектора 20, то команда завершилась бы нормально.
КомандаКомандаКод в ST2Код в ST2КомментарииКомментарииТаблица 6.8
Команда
Команда
Код в ST2
Код в ST2
Комментарии
Комментарии
Равно
0 1
1 0
Данные равны
Данные
не равны
Меньше или
0
1
Данные
равны
равно
0
0
Данные
НГМД меньше
1
0
Данные
не равны
Больше или
0
1
Данные
равны
равно
0
0
Данные
НГМД больше
1
0
Данные
не равны
сканирования
SN SH
Команда Поиск (рис. 6.49) осуществляет перемещение головки запи- си/чтения на заданную дорожку. Контроллер НГМД сравнивает текущий адрес цилиндра PCN с заданным адресом NCN, выполняя при этом следующие операции:
при условии PCN<NCN вырабатываются сигнал DIR=1 (направление) и шаговый импульс STEP IN;
при PCN>NCN вырабатываются сигнал DIR = 0 и шаговый импульс STEP OUT.
После каждого шагового импульса адрес NCN сравнивается с PCN, и если PCN = NCN, то в регистре состояния ST0 устанавливается флажок SE = = 1 (поиск окончен) и выполнение команды завершается.
В момент приема команды поиска КНГМД находится в состоянии Занято, но во время фазы выполнения он освобождается и может принять еще одну команду поиска. Таким образом, команда может выполняться параллельно для четырех накопителей.
По команде Инициализация (рис. 6.45) происходит перемещение головки записи/чтения на дорожку 0. Контроллер устанавливает в нуль содержимое счетчика PCN и проверяет наличие сигнала от датчика дорожки 0. Пока TRACK0 = 0 и SEEK = 0, подаются шаговые импульсы. Как только устанавливается сигнал TRACK0=l, в регистре состояния ST0 выставляется флажок SE= 1 (поиск окончен). Если после 77 шаговых импульсов сигнал TRACK0= 1, то в регистре состояния ST0 выставляются флажки SE=1 (поиск окончен) и ЕС=1 (сбой оборудования), выполнение команды завершается. Команда инициализации может выполняться одновременно для четырех накопителей.
Команда Чтение состояния прерывания (рис. 6.46) может вырабатываться:
при поступлении в фазе результата команд чтения данных, чтения данных дорожки, чтения ID, чтения удаленных данных, записи данных, записи удаленных данных, сканирования;
если линия готовности накопителя изменяет состояние;
если заканчивается выполнение команды поиска или инициализации;
во время фазы выполнения команды, если не установлен режим ПДП.
Все эти прерывания происходят во время обычных командных операций и легко обнаруживаются ЦП. Прерывания, вызванные причинами 2) и 3), могут быть обнаружены лишь с помощью команды чтения состояния прерывания, которая запрещает прерывание и с помощью битов 5, 6 и 7 регистра состояния ST0 определяет причину прерывания.
Команда Определить (рис. 6.47) задает исходное значение для каждого из трех внутренних таймеров. Команда HUT задает время разгрузки головки, определяет промежуток времени от конца фазы выполнения до момента разгрузки головки, программируется на время 16—240 мс с интервалом 16 мс (01Н=16 мс, ..., OFH = 240 мс). Команда SRT задает время шаговой скорости, определяет временной интервал между смежными шаговыми импульсами, программируется на время 1 —16 мс с интервалом 1 мс (FH=1 мс; ЕН = = 2 мс; D = 3 мс,...). Команда HLT задает время загрузки головки, определяет временной интервал между появлением сигнала загрузки головки и началом операции чтение/запись, программируется на время 2—254 мс с интервалом 2 мс(01Н = 2 мс;02Н = 4 мс,..., FFN =254 мс). Все эти временные интервалы являются функцией задающего генератора и приведены для FCLk = 8 МГц. Бит ND команды позволяет задавать режим работы ПДП. Если ND = 0 задается режим ПДП, если ND=1 —режим обычный.
Если контроллер получает неопределенный код команды Недействительно (рис. 6.50), он ее не выполняет и не вырабатывает сигнала прерывания. В основном регистре состояния при этом устанавливается D7D6 = 11, что является информацией для ЦП о необходимости считать содержимое регистра состояния ST0. Содержимое регистра ST0 в этом случае принимает значение 80Н, указывая на то, что в контроллер загружена недействительная команда. Следует помнить, что команда чтения состояния прерывания должна загружаться после прерываний, команд поиска и инициализации, в противном случае следующая за ней команда будет восприниматься как недействительная. Команда Недействительно может быть также использована как команда NOP, переводящая контроллер в режим бездействия.
Команда Чтение состояния накопителя (рис. 6.48) позволяет прочитать содержимое регистра ST3, который содержит информацию о состоянии накопителя.
ОЗУ с портами ввода — вывода и таймер КР1821РУ55
БИС К1821РУ55 включает следующие устройства: статическое ОЗУ емкостью 2048 бит с организацией 256X8; два 8-битовых и один 6-битовый порты; 14-битовый программируемый таймер. Условное графическое обозначение БИС дано на рис. 6.51, ее укрупненная структурная схема — на рис. 6.52.
Назначение выводов.
AD7 — AD0 — двунаправленная мультиплексная 8-разрядная шина ад- рес/данные.
РА7 — РАО — двунаправленная 8-разрядная шина ввода — вывода данных порта А.
РВ7 — РВО — двунаправленная 8-разрядная шина ввода — вывода данных порта В.
PCS — РСО — двунаправленная 6-разрядная шина ввода — вывода данных порта С.
RD — вход управления чтением данных из БИС.
WR —- вход управления записью данных в БИС.
10/М — вход выборки порта ввода — вывода или памяти.
ALE — вход разрешения фиксации адреса внутри БИС.
RESET — вход сигнала сброса.
CS — вход выборки БИС.
TIMER IN — вход синхроимпульсов таймера.
TIMER OUT — выходной сигнал таймера.
Ucc— напряжение питания ( + 5 В).
GND — общий.
Рис. Б.51. Условное графическое обозначение ВМС РУ55Рис. Б.51. Условное графическое обозначение ВМС РУ55Рис. 6.52. Структурная схема БИС ОЗУ РУ55Рис. 6.52. Структурная схема БИС ОЗУ РУ55
Рис. Б.51. Условное графическое обозначение ВМС РУ55
Рис. Б.51. Условное графическое обозначение ВМС РУ55
Рис. 6.52. Структурная схема БИС ОЗУ РУ55
Рис. 6.52. Структурная схема БИС ОЗУ РУ55
Сигналы БИС образуют три группы в соответствии с выполняемыми функциями: 1) сопряжение БИС и МП и управление ею, 2) параллельный ввод — вывод, 3) вход и выход таймера.
Линии адреса/данных AD7 — ADO, а также ALE, RD, WR и 10/М соединяются с одноименными линиями микропроцессора ВМ88, и их назначение можно узнать из описания соответствующих сигналов МП ВМ88 (см. § 1,8). Демультиплексирование линий AD7 — ADO производится как обычно, с помощью запоминания адресной информации в регистре-защелке по срезу импульса ALE. Различие состоит в том, что здесь эта операция осуществляется не во внешнем, а во внутреннем адресном регистре АР, на который через буфер адреса/данных поступает младший байт адреса. С выходов регистра АР снимаются сигналы А7 — АО для адресации ячеек ОЗУ, причем младшие биты
А2 — АО подаются также в устройство управления для адресации внутренних узлов (регистров) БИС. Временные диаграммы при обращении к ОЗУ даны на рис. 6.53.
Буфер адреса/данных выполняет те же функции, что и в МП ВМ88, и содержит восемь двунаправленных усилителей с z-состояниями. Блок устройства управления воспринимает внешние сигналы управления и вырабатывает внутренние сигналы, управляющие работой всех блоков БИС. В состав устройства управления входят регистр управляющего слова (РУС), называемый также регистром команд (РК), и регистр слова состояния (РСС). В первом хранится поступающее из МП управляющее слово, которое определяет режим работы портов ввода — вывода и содержит команды управления таймером. Во втором формируется информация о текущеем состоянии сигналов, сопровождающих работу портов в режиме с квитированием сообщений, и о завершении цикла счета в таймере. Отметим, что для РУС предусмотрена только операция записи, а для РСС — только операция чтения. Поэтому для них выделен один адрес, а обращение к конкретному регистру зависит от актив
ного сигнала записи/чтения WR/RD.
Рис. 6.53. Временные диаграммы работы РУ55 в режиме ввода данных (а) и в режиме вывода (6)
Сигнал системного сброса, подаваемый на вход RESET, не влияет на содержимое ячеек ОЗУ и буферных регистров портов. При поступлении этого сигнала все порты настраиваются на ввод в режиме простого обмена данными и работа таймера прекращается. Чтобы таймер начал работать по окончании импульса сброса, необходимо произвести его программирование и запуск.
Вход выбора БИС CS должен получать активный сигнал низкого уровня при каждом обращении МП к РУ55, а именно: при обращении к ячейке ОЗУ, программировании БИС (записи управляющего слова в РУС), контроле состояния БИС (чтении содержимого РСС), вводе — выводе байта через порт и загрузке счетчика или считывании его содержимого. При сигнале CS = 1 только счетчик выполняет свои функции, если он был запущен ранее.
Функционирование портов ввода — вывода. Порты А и В одинаковы, и каждый из них содержит 8-битовый регистр для буферного запоминания пересылаемого байта данных. Все разряды портов А и В используются для ввода или вывода параллельно, т. е. невозможна установка направления передачи индивидуально для каждого разряда.
В зависимости от содержания РУС каждый порт (А и В) может работать в двух режимах: простого ввода — вывода (без обмена управляющими сигналами) или ввода — вывода с квитированием сообщения (с обменом управляющими сигналами). Здесь уместно сравнение с работой портов А и В БИС программируемого параллельного интерфейса (ППИ) типа К580ВВ55 [5, 7]. Режим простого ввода — вывода полностью аналогичен режиму О ППИ. В этом режиме порт С также может осуществлять ввод — вывод параллельно по шести линиям.
Таблица 6.9
Линия Варианты использования линии порта
С
ALT3
ALT4
РСО
INTR А
INTR А
РС1
BF А
BF А
РС2
STB А
STB А
РСЗ
Порт вывода
INTR В
РС4
То хе
BF В
РС5
>>
STB В
Примечание. Вариант ALT1 соответствует использованию всех линий порта С в качестве портов ввода, а вариант ALT2 - в качестве портов вывода
Режим с квитированием сообщений соответствует режиму 1 ППИ. В этом случае линии порта С разбиваются на две группы, одна из которых обеспечивает обмен управляющими сигналами для порта А, а другая — для порта В. Варианты использования линий порта С и соответственно организации работы всех портов РУ55 представлены в табл. 6.9, где использованы следующие обозначения: INTR A/INTR В (Interrupt Request) —запрос прерывания по порту A/В; BE A/BF В (Buffer Full) — буфер порта A/В полон/занят;
STB А/STB В (Strobe) — строб записи, соответствующий порту А/В.
Временные диаграммы, поясняющие обмен управляющими сигналами при работе портов А или В в режиме с квитированием сообщений, даны на рис. 6.54.
Рис. 6.54. Временные диаграммы работы портов со стробированием в режиме ввода (а) и в режиме вывода (б)Рис. 6.54. Временные диаграммы работы портов со стробированием в режиме ввода (а) и в режиме вывода (б)
Рис. 6.54. Временные диаграммы работы портов со стробированием в режиме ввода (а) и в режиме вывода (б)
Рис. 6.54. Временные диаграммы работы портов со стробированием в режиме ввода (а) и в режиме вывода (б)
Индексы А и В при сигналах INTR, BF и STB опущены, поскольку диаграммы относятся к работе обоих портов.
При вводе данных в МП (рис. 6.54, а) через порт A/В внешнее устройство выдает байт данных на линии РА7 — РАО и вырабатывает строб STB, по которому этот байт загружается в буферный регистр порта. При этом устанавливается сигнал BF = 1, который сообщает ВУ, что нельзя записывать в порт следующий байт данных. По окончании строба STB устанавливается сигнал запроса прерывания INTR, который предназначен для оповещения МП о необходимости чтения байта из порта. Сигналы BF и INTR остаются активными до выполнения микропроцессором команды IN PORT, по которой содержимое буферного регистра порта А вводится МП по сигналу RD. С началом импульсд RD сбрасывается сигнал INTR, а с его окончанием — сигнал BF. Таким образом, сигнал BF=1 сохраняется в течение всего времени обращения к буферному регистру и хранения данных в нем. Сигнал INTR=1 сохраняется, пока записанный в регистр байт данных ожидает ввода в МП.
BF
STB
INTR
RD
При выводе байта данных (рис. 6.54, б) МП выполняет команду OUT PORT, при которой вырабатывается сигнал записи WR = 0. По срезу этого импульса устанавливается сигнал INTR = О, что является подготовкой к формированию нового запроса (INTR=1) после считывания содержимого буфера. По фронту импульса WR байт данных с ШД записывается в буферный регистр порта и затем устанавливается сигнал BF= 1. Тем самым ВУ оповещается о том, что для него подготовлен байт. Внешнее устройство вырабатывает строб STB, выполняющий роль сигнала подтверждения приема, и считывает
байт из порта. После этого снимается сигнал BF, а по фронту строба STB устанавливается сигнал INTR=1. Запрос INTR может быть использован для прерывания работы МП с целью организации вывода очередного байта данных.
Если в МПС используется система прерываний, то выход INTR соединяется с соответствующим входом прерывания. Если она не используется, то МП может получить информацию о наличии сигнала прерывания и о состоянии других управляющих сигналов путем чтения слова состояния из РСС и анализа его содержимого.
Таким образом, использование управляющих сигналов при вводе или выводе данных позволяет не терять байты из-за того, что МП не ввел вовремя байт из порта или же вывел очередной байт в порт до того, как внешнее устройство считало предыдущий байт.
Функционирование таймера. Блок таймера содержит 14-битовый вычитающий счетчик, 16-битовый регистр хранения, схему формирования выходного сигнала и схему управления таймером. Счетчик выполняет основную функцию данного блока, заключающуюся в подсчете импульсов, поступающих извне на вход TIMER IN. Регистр хранения в 14 младших битах содержит коэффициент счета N, который загружается в него при подготовке таймера к работе и задает начальное состояние счетчика. Число N может иметь любое значение от 2Н до 3FFFN. Два старших бита этого регистра составляют регистр режима (RR), в котором хранится код ТМ2ТМ1 заданного режима работы таймера. Схема формирования обеспечивает форму сигнала TIMER OUT в соответствии с режимом работы таймера. Этот сигнал обязательно изменяет свое значение в момент окончания счета. Схема управления реализует заданный режим работы таймера и, в частности, осуществляет перезагрузку числа N из регистра в счетчик при организации циклической (непрерывной) работы таймера.
Программирование таймера состоит в загрузке двухбайтового слова в регистр хранения, после чего осуществляется запуск счетчика с помощью специальной команды (предусмотрен только программный запуск таймера). Во время работы счетчик уменьшает свое содержимое по фронту каждого импульса, поступающего на вход TIMER IN. Когда требуется производить отсчет реального времени, этот вход обычно соединяется с выходом PCLK генератора. При обращении к таймеру используются два адреса: младший байт N загружается по адресу А2А1А0= 101, старший — по адресу А2А1А0=101. Это позволяет загружать указанные байты в любом порядке.
Формат двухбайтового слова, загружаемого в таймер, представлен на рис. 6.55. Два старших бита М2М1 задают один из четырех режимов работы таймера, при которых вырабатываются соответствующие сигналы на выходе TIMER OUT (рис. 6.56). В режиме 0 поддерживается выходной сигнал TIMER OUT = 1 в течение первой половины счета и TIMER OUT = 0 в течение второй. При нечетном N первый полупериод счета, соответствующий высокому уровню выходного сигнала, оказывается на единицу больше второго.
Режим 1 аналогичен режиму 0 с той разницей, что каждый раз по окончании счета производится автоматическая перезагрузка N из регистра хранения в счетчик и повторный запуск счетчика. Таким образом, таймер работает в непрерывном режиме деления на N частоты повторения входных импульсов и генерирует выходной сигнал симметричной формы (скважность равна двум).
В режиме 2 после окончания счета формируется одиночный импульс напряжения низкого уровня, длительность которого равна одному периоду вход- 240
ных (счетных) импульсов. Режим 3 отличается от режима 2 автоматической перезагрузкой и перезапуском счетчика, что обеспечивает непрерывность работы таймера. Это режим деления частоты с выработкой выходного сигнала несимметричной формы (скважность зависит от значения N).
Адрес регистра 100Адрес регистра 101
| мг| Ml |n13|n12|N11|N10| N91N81N71N6 | N51N41N31 № j N11 NO |
NNРежимтаймера
N
N
Рис. 6.55. Формат команды управления таймеромДля понимания работы таймера БИС К1821РУ55 целесообразно сравнить ее с работой одного канала широко известной БИС программируемого таймера К580ВИ53 [5, 7]. Существенное различие состоит в отсутствие аппаратного запуска и управления счетом, которое в ВИ53 осуществляется по входу разрешения счета GATE, с чем связано отсутствие в РУ55 режима ждущего мульти-Рис. 6.55. Формат команды управления таймеромДля понимания работы таймера БИС К1821РУ55 целесообразно сравнить ее с работой одного канала широко известной БИС программируемого таймера К580ВИ53 [5, 7]. Существенное различие состоит в отсутствие аппаратного запуска и управления счетом, которое в ВИ53 осуществляется по входу разрешения счета GATE, с чем связано отсутствие в РУ55 режима ждущего мульти-Рехим 2Рехим 2Режим 3Режим 3Рис. 6.56. Временная диаграмма работы таймераРис. 6.56. Временная диаграмма работы таймера
Рис. 6.55. Формат команды управления таймером
Для понимания работы таймера БИС К1821РУ55 целесообразно сравнить ее с работой одного канала широко известной БИС программируемого таймера К580ВИ53 [5, 7]. Существенное различие состоит в отсутствие аппаратного запуска и управления счетом, которое в ВИ53 осуществляется по входу разрешения счета GATE, с чем связано отсутствие в РУ55 режима ждущего мульти-
Рис. 6.55. Формат команды управления таймером
Для понимания работы таймера БИС К1821РУ55 целесообразно сравнить ее с работой одного канала широко известной БИС программируемого таймера К580ВИ53 [5, 7]. Существенное различие состоит в отсутствие аппаратного запуска и управления счетом, которое в ВИ53 осуществляется по входу разрешения счета GATE, с чем связано отсутствие в РУ55 режима ждущего мульти-
Рехим 2
Рехим 2
Режим 3
Режим 3
Рис. 6.56. Временная диаграмма работы таймера
Рис. 6.56. Временная диаграмма работы таймера
вибратора с аппаратным запуском (режим 1 БИС ВИ53) и режима генератора задержанного строба с аппаратным запуском (режим 5 ВИ53). Отметим также, что при программном запуске счетчик канала ВИ53 начинает работать сразу же после окончания загрузки N, тогда как в РУ55 для запуска счетчика требуется специальная команда МП. С другой стороны, в ВИ53 отсутствует возможность программного останова работы счетчика, которая имеется в РУ55. Соответствие режимов таймеров сравниваемых БИС показано в табл. 6.10.
Таблица 6.10
Наименование режимаНаименование режимаРежимРежим
Наименование режима
Наименование режима
таймера таймера
РУ55ВИ53
012301230Ждуций мультивибратор с программнымзапуском
0
1
2
3
0
1
2
3
Делитель частоты, генератор меандра
2Делитель частоты, генератор импульсовнесим
метричной формы
Генератор задержанного строба
Примечание. В БИС ВИ53 сигнал низкого уровня на выходе канала устанавливается сразу же после запуска, тогда как в БИС РУ55 - только во второй половине счета.
Адресация БИС и ее внутренних узлов. В РУ55 предусмотрены изолированные адресные пространства памяти и ввода — вывода: при Ю/М = = 0 восьмибитовый адрес А7 — АО интерпретируется как адрес одной из 256 ячеек ОЗУ, а при 1О/М= 1 — как адрес одного из внутренних узлов в соответствии с табл. 6.11.
Таблица 6.11
AD2 ADI ADOАдресуемые регистры
0
0
0
Регистры РУС и РСС
0
0
1
Порт А
0
1
0
Порт В
0
1
1
Порт С
1
0
0
Регистр хранения таймера (младший байт)
1
0
1
Регистр хранения таймера (старший байт)
1
1
0
Не используется
1
1
1
>>
Напомним, что команды обращения к внешним устройствам IN и OUT являются двухбайтовыми, причем во втором байте В2 помещается адрес ВУ. Этот адрес выдается на линии AD7 — ADO, которые подключаются к БИС РУ55 и одновременно дублируются на линиях А15 — А8. Поэтому оказывается, что А8 = А0, А9 = А1,..., А15 = А8, т. е. содержимое линий AD2 — ADO адресующих внутренние узлы РУ55, совпадает с содержимым линий АЮ — А8. Таким образом, для формирования сигнала выбора кристалла CS = 0 остаются линии А15 — АН. Дешифрированием содержимого этих линий обеспечивается сигнал CS = 0 при обращении как к ячейкам ОЗУ, так и к остальным адресуемым узлам БИС.
Распределение адресных линий при обращении к памяти показано на рис. 6.57, а, а при обращении к внутренним узлам БИС — на рис. 6.57, б. Еще раз отметим, что линии АЮ — А8 не должны использоваться при формировании сигнала CS = 0, поскольку это нарушило бы адресацию внутренних узлов БИС.
СВАдрес ячейки ОЗУ
а)|АР7|АРб|АР5|АР4|АРЗ|АРг|АР1|АР0|АР7|АРб|АР5|АР4|АРЗ|АРа|АР1|АР0|СВСБАдрес
регистра б)
Рис. 6.57. Формирование адреса при обращении к ячейкам памяти БИС РУ55 (а) м его портам (б)
Программирование БИС ОЗУ РУ55 состоит в том, что в регистр управляющего слова записывается байт, формат которого показан на рис. 6.58. Биты D1, DO управляющего слова задают направление передачи данных через порты А и В; биты D3, D2 определяют вариант использования порта С; биты D5, D4 разрешают или запрещают выработку сигналов прерывания INTR; биты D7, D6 содержат код ТМ2ТМ1 команды управления таймером (табл. 6.12). Отметим, что новые значения N и кода режима могут быть загружены во время
выполнения цикла счета. Однако для того, чтобы начался счет с новым N и в новом режиме, следует подать команду пуска таймера (ТМ2ТМ1 = 11), даже в том случае, когда изменяется только N.
76543210
| ТМ2|ТМ1 | IEВ | IE А |РС2 |PCI |РВ |РА |
'.,'''„п,1
УправлениеРазрешение00 - ALT1Направление
таймеромпрерывания01 - ALT2портов:
10 - ALT3 0 - ввод
11 - ALT4 1 - вывод
76543210
| X I ТС I IE В I BF В |lNTR В| IE А | BF A [INTR А|
Рис. 6.58. Формат управляющего слова РУ55 (а) и его слова-состояния (6)
К особенностям данного таймера относится также то, что его схема рассчитана прежде всего на выработку симметричных прямоугольных сигналов, а не на работу в качестве счетчика внешних импульсов. Поэтому показания счетчика уменьшаются на два при поступлении каждого импульса на вход TIMER IN и то показание, по которому определяется окончание счета, равно двум. Таким образом, текущее показание счетчика позволяет вычислить действительное число импульсов, которое должно поступить на вход таймера до окончания цикла счета. С этой целью выполняются следующие операции: останавливается таймер; считывается его содержимое (16 бит) в регистр МП; сбрасывается два старших бита; устанавливается флаг переноса и все 16 бит сдвигаются вправо через перенос; если флаг переноса равен единице, то к полученному числу добавляют N/2 при четном N или N/2—1 в противном случае.
Таблица 6.12
ТМ2 ТМ1ТМ2 ТМ1Описание команды таймераОписание команды таймера
ТМ2 ТМ1
ТМ2 ТМ1
Описание команды таймера
Описание команды таймера
00 Холостая команда, не влияюцая на работу таймера
01 Немедленный останов таймера, если он находился
в состоянии счета. Холостая команда, если он не был запуцен
0 Останов таймера после окончания текуцего цикла
счета. Холостая команда, если таймер не был запуцен
1 Пуск таймера. Если таймер не был запуцен, то
производится установка режима работы, загрузка N и запуск таймера немедленно после загрузки. Если таймер находится в состоянии счета, то установка нового режима, загрузка счетчика и его запуск производятся немедленно после окончания текуцего цикла счета
Для считывания текущего содержимого счетчика выполняются две команды ввода IN. При этом возникает обычная задача обеспечения считывания во время установившегося показания счетчика, а не в момент переходного процесса в триггерах. Для решения этой задачи работа счетчика может быть временно приостановлена либо программным путем (с помощью команд управ-
ления таймером), либо аппаратно (путем блокировки сигнала, подаваемого на вход TIMER IN). Напомним, что в данной БИС отсутствует возможность аппаратного управления счетом по входу GATE или выполнении операции защелкивания содержимого счетчика, как это предусмотрено в таймере ВИ53.
При раздельном управлении портами и таймером необходимо учитывать, что информация, относящаяся к этим узлам, совмещена в одном байте управляющего слова. Так, при назначении или изменении режимов работы портов следует установить D7 = D6 = 0, чтобы не повлиять на работу таймера, а в биты D5, D4 занести требуемую информацию. Если же стоит задача управления таймером, то необходимо изменить биты D7, D6 и сохранить содержимое D5 — DO регистра РУС.
Поскольку содержимое РУС не может быть считано, то целесообразно хранить управляющее слово в специально выделенной ячейке ОЗУ. Для подачи новой команды таймеру обычно выполняются следующие действия: извлекается управляющее слово из ОЗУ; устанавливаются в нуль биты D7, D6 с помощью команды маскирования AND; с помощью команды OR записываются единицы в биты D7, D6 в соответствии с кодом требуемой команды таймера; сформированное управляющее слово загружается в РУС БИС РУ55 и запоминается в ОЗУ.
Для РУ55 характерно, что можно считывать содержимое портов, запрограммированных не только на ввод, но и на вывод данных. Это осуществляется обычным чтением с помощью команды IN, по которой в аккумулятор вводится байт, выведенный ранее в данный порт. Такая операция не оказывает влияния на управляющие сигналы, связанные с этим портом.
Контроль состояния портов ввода — вывода и таймера осуществляется путем считывания и анализа слова-состояния, формат которого представлен на рис. 6.58, б. В отношении портов ввода — вывода анализ слова-состояния имеет смысл только при использовании режима с квитированием сообщений, поскольку в режиме простого ввода — вывода пересылки данных через порты не влияют на содержимое РСС. Бит ТС слова-состояния может использоваться для организации прерывания от таймера. Значение ТС=1 устанавливается по окончании цикла счета; ТС = 0—при считывании содержимого РСС и поступлении сигнала сброса RESET.
6.5. ПЗУ с портами ввода — вывода КР1821РФ55
БИС К1821РЕ55 содержит ПЗУ емкостью 16 384 бит с организацией 2КХ8 и два 8-битовых порта ввода — вывода А и В (рис. 6.59, 6.60).
Назначение выводов.
AD7 — AD0 — двунаправленная мультиплексированная 8-разрядная шина адреса и данных.
АЮ — А8 — входы трех старших разрядов адреса.
РА7 — РАО — двунаправленная 8-разрядная шина данных портов ввода — вывода А.
РВ7 — РВО — двунаправленная 8-разрядная шина данных порта ввода — вывода В.
RD — вход управления чтением из ПЗУ.
IOR — вход управления чтением из портов.
IOW — вход управления записью в порты.
ALE — вход разрешения фиксации адреса, поступающего по шинам AD7 — ADO.
Рис. 6.59. Условное графическое обозначение БИС РЕ55Рис. 6.59. Условное графическое обозначение БИС РЕ55Рис. 6.60. Структурная схема БИС РЕ55Рис. 6.60. Структурная схема БИС РЕ55
Рис. 6.59. Условное графическое обозначение БИС РЕ55
Рис. 6.59. Условное графическое обозначение БИС РЕ55
Рис. 6.60. Структурная схема БИС РЕ55
Рис. 6.60. Структурная схема БИС РЕ55
RESET — вход сброса.
Ю/М — вход выбора портов ввода — вывода или памяти.
CS1, CS2 — входы выбора кристалла.
READY — трехстабильный выход запроса состояния ожидания МП.
CLK — вход синхронизации сигнала.
Ucc — напряжение питания ( + 5 В).
GND — общий.
RD (ЮН)РА7-РА0 (РВ7-РВ0)D7-D0RD (ЮН)РА7-РА0 (РВ7-РВ0)D7-D0Рис. 6.61. Временные диаграммы работы портов в режиме ввода (а) и в режиме вывода (5)Рис. 6.61. Временные диаграммы работы портов в режиме ввода (а) и в режиме вывода (5)
RD (ЮН)
РА7-РА0 (РВ7-РВ0)
D7-D0
RD (ЮН)
РА7-РА0 (РВ7-РВ0)
D7-D0
Рис. 6.61. Временные диаграммы работы портов в режиме ввода (а) и в режиме вывода (5)
Рис. 6.61. Временные диаграммы работы портов в режиме ввода (а) и в режиме вывода (5)
Порты ввода — вывода могут работать только в режиме простого обмена (т. е. без каких-либо сопровождающих сигналов), причем выводимый байт запоминается в буферном регистре БР порта, а вводимый не запоминается (рис. 6.61). Каждый порт имеет 8-битовый регистр направления (РН), содержимое которого определяет индивидуальную настройку («программирование») каждой линии порта на ввод или вывод. С этой целью в РН загружается управляющий байт, в котором нулевой сигнал настраивает соответствующую линию на ввод, а единичный — на вывод.
Рис. 6.62. функциональная схема линий ввода - вывода портов БИС РЕ55
Схема каждого разряда порта (рис. 6.62) построена так, что выходной сигнал триггера настройки TH, управляет состоянием усилителя Аь включенного на выходе соответствующего информационного триггера TDj. При ТН, = 0 усилитель переводится в z-состояние, что настраивает разряд порта на ввод, но сохраняется возможность записи данных в информационный триггер. Поэтому в регистре порта может быть проведено предварительное накопление выводимых данных без их немедленной выдачи на соответствующие выводы БИС РЕ55. Реально вывод подготовленных данных происходит при настройке используемых разрядов порта на вывод путем установки сигнала ТН|=1.
ЗАКЛЮЧЕНИЕ
Совершенствование микропроцессоров, состоящее в увеличении степени интеграции БИС, развитии архитектуры и повышении тактовой частоты привело к тому, что вслед за МП К580ВМ80 появился МП К1810ВМ86 с более высокой производительностью. Представляет интерес рассмотреть развитие этой ветви микропроцессоров на примере развития аналогичного МП 1NTEL/8086.
С целью упрощения работы с операционной системой LRMX-86 был создан специализированный МП 80130, который вместе с ЦП 8086/8088 образует процессор операционной системы OSP. Его основными компонентами являются: ПЗУ емкостью 16 Кбайт, содержащее системные программные средства; схема прерываний, аналогичная контроллеру 8259А; фиксатор адреса и буфер данных.
В результате повышения степени интеграции БИС был разработан ЦП 80186, который в отличие от ЦП 8086 содержит внутренний генератор синхронизации, программируемый контроллер прерываний, программируемые таймеры, контроллер прямого доступа к памяти и программируемые регистры управления. Он размещен в 68-выводном четырехстороннем корпусе, и его линии адреса/данных и некоторых управляющих сигналов имеют вдвое большую нагрузочную способность. Введены дополнительные команды, в частности команды PUSHA и POP А для включения в стек и извлечения из него всех регистров одной командой, команды INS и OUTS для ввода и вывода цепочек с использованием префикса повторения REP, а также команды, расширяющие действия с непосредственным операндом. В итоге МП 80186 имеет вдвое более высокую производительность по сравнению с ЦП 8086, что обеспечивает меньшие габариты, большую компактность и большую надежность МПС.
Усовершенствована процедура управления памятью БИС МП 80286 и ускорен доступ к ней. Эта БИС также размещена в 68-выводном корпусе, что позволило отказаться от мультиплексирования линий адреса и данных. Микропроцессор содержит ряд дополнительных регистров, расширяющих его возможности, а система команд включает 16 дополнительных (по сравнению с МП 80186) команд для работы со средствами управления памятью. Микропроцессор 80286 может работать в двух режимах: реального адреса, когда дополнительные регистры не используются и его функционирование не отличается от функционирования МП 8086, и защищенного виртуального адреса, когда с помощью специальной процедуры формируется 24-битовый физический адрес. Благодаря всему этому производительность МП 80286 в мультипрограммной среде в шесть раз выше производительности МП 8086.
Наконец, появился 32-битовый МП 80386, который позволил разработать новое поколение микроЭВМ и персональных ЭВМ. Например, выполненная на его основе ПЭВМ 386 MASTER имеет следующие параметры: тактовая частота 16/20 МГц с возможностью переключения; емкость ОЗУ, размещенного на
плате процессора, 8 Мбайт; емкость ПЗУ 64 Кбайт, причем обращение к памяти осуществляется без тактов ожидания; емкость внешней памяти на гибком диске 1,2 Мбайт, емкость памяти на «винчестере» 44/70 Мбайт; система прямого доступа к памяти на 7 каналов; система прерываний на 16 уровней; клавиатура из 101 клавиши; способность работать с разнообразными операционными системами; потребляемая мощность 195 Вт. Завершена также разработка отечественного 32-битового МП, что открывает широкие возможности создания новых вычислительных средств.
Поскольку МПК БИС К1810 имеет широкие перспективы дальнейшего развития, знание БИС этого комплекта не только позволяет квалифицированно использовать многие современные вычислительные средства, но и является основой для освоения микропроцессорной техники будущего.
Наименование сигналов
AD
address/dataадрес/данные
ADSTB
address strobeстроб адреса
AEN
addres enableразрешение адреса
AIOWC
advanced input-output write command опережающий сигнал вывода
ALE
address latch enableразрешение фиксации адреса
AMWC
advanced memory write commandопережающий сигнал записи
(в память)
ANYRQST
any requestлюбой запрос
BCLK
bus clockтактовые импульсы синхро
низации шины
ВНЕ
bus high enableразрешение старшего байта
шины
BERN
bus priority inвход приоритета шины
BPRO
bus proirity outвыход приоритета шины
BREQ
bus requestзапрос шины
BUSY
busyзанят, занятость
СА
channel activityготовность канала
CAS
cascadeкаскадирование
CAS
column adress strobeстроб адреса столбца
CBRQ
common bus requestобщий запрос шины
CEN
command enableразрешение команды
CLK
clockтакты, тактовые импульсы
CRQLCK
common request lockблокировка сигнала CBRQ
CS
chip selectвыбор ИС
CSYNC
clock syncronizationтактовая синхронизация
DEN
data enableразрешение данных
DREQ(DRQ)
DMA requestзапрос прямого доступа к
памяти
DS
drive selectвыбор накопителя
DT/R
data transmit/receiveпередача/прием данных
DW
data windowокно данных
EFI
external frequency inputвход внешней частоты
EOP
end of processокончание обработки
EXT
externalвнешний запрос
F/C FLT/TRKO FR/STP GATE
frequency/crystalвнешняя частота/кварц
fault/track 0ошибка (отказ)/дорожка0
fault reset/stepсброс ошибки (отказа)/шаг
gateразрешение (счета)
GND
groundобщий (заземление)
HDL
head loadзагрузка головки
HDSEL
head selectвыбор головки
HLDA
hold acknowledgeподтверждение захвата
HOLD
holdзахват
HRQ
hold requestзапрос захвата
IDX
index
индекс
INTA
interrupt acknowledge
подтверждение прерывания
INTR(INT)
interrupt request
запрос прерывания
IOB
input-output bus
шина ввода - вывода
IOR
input-output read
ввод
IORC
input-output read command
команда ввода
IOW
input-output write
вывод
IOWC
input-output write command
команда вывода
LOCK
lock
блокировка
LCT/DIR
low current/directlon
малый ток/направление
MCE
master cascade enable
разрешение считывания номе
ра контроллера при каскади
ровании
MEMR
memory read
чтение (памяти)
MEMW
memory write
запись (в память)
MFM
MFM mode
режим модифицированной час
тотной модуляции
MN/MX
minimum/maximum
минимальный/максимальный
MRDC
memory read command
команда чтения (из памяти)
MWTC
memory write command
команда записи (в память)
MNI
non-maskable interrupt
немаскированное прерывание
OE
output enable
разрешение выхода
OSC
oscillation
синусоидальный сигнал
OUT
out
выход
PCLK
periphery clock
тактовые импульсы для пери
ферийных устройств
PCS
protected chip select
зацишенный выбор ИС
PDEN
periphery data enable
разрешение передачи данных
по шине ввода - вывода
PS
preshift (precompensation) state
состояние предсдвига
QS
queue state
состояние очереди
RAS
row address strobe
строб адреса строки
RD
read
чтение
RD DATA
read data
входные данные
READY(RDY)
ready
готов, готовность
REFRQ
external refresh request
внешний запрос регенерации
RESB
residentional bus
резидентная шина
REFRQ
external refresh request
внешний запрос регенерации
RESB
residentional bus
резидентная шина
RESET(RES)
reset
сброс, начальная установка
RQ/GT
request/grant
запрос/предоставление шины
RW/SEEK
read-write/seek
запись - считывание/поиск
S(ST)
state
состояние
SACK
system acknowledge
подтверждение системы
SEL
select
выбор
STB
strobe
строб
SYSB
system bus
выбор системной шины
TANK
tank
колебательный контур
TC
terminal count
конец счета
WE
write enable
разрешение записи
WP/TS
write protect/two side
зашита записи/двусторонняя
WR CLK
write clock
синхронизация записи
WR DATA
write data
выходные данные
XACK
transfer acknowledge
подтверждение передачи
Список сокражений
АР
арифметический регистр
ДСП
арифметический сопроцессор
АШ
арбитр лины
БАД
буфер шины адреса/данных
БАС
буфер шины адреса/состояния
БР
буферный регистр
Б ШИ
блоу шинного интерфейса
ВВ
внутренний вещественный (формат)
ВМ
вычислительный модуль
ВУ
внешнее устройство
гти
генератор тактовых импульсов
дв
длинный вещественный (формат)
дд
двоично-десятичный (формат)
дц
длинное целое
ЗУ
запоминающее устройство
кв
короткий вещественный (формат)
кдп
контроллер динамической памяти
кнгмд
контроллер накопителя на гибком магнитном диске
кпдп
контроллер прямого доступа к памяти
кц
короткое целое
кш
контроллер шины
МОП
металл - окисид - полупроводник
МП
микропроцессор
мпк
микропроцессорный комплект
МПС
микропроцессорная система
НГМД
накопитель на гибком магнитном диске
ОЗУ
оперативное запоминающее устройство
пдп
прямой доступ к памяти
ппи
программируемый последовательный интерфейс
пт
программируемый таймер
ПЭВМ
персональная ЭВМ
РСС
регистр слова состояния
РУС
регистр управляющего слова
РШ
резидентная шина
СПВБ
специализированный процессор ввода - вывода
СШ
системная шина
с ши
схема шинного интерфейса
УВВ
устройство ввода - вывода
УПИ
универсальный периферийный интерфейс
УС
указатель стека
УУ
устройство управления
цс
целое слово
ЦП
центральный процессор
ША
шина адреса
ШАД
шина адреса/данных
швв
шина ввода - вывода
шд
шины данных
ШУ
шина управления
ШФ
шинный формирователь
Основные термины
Above
above
больше (для чисел без знака)
ас
accumulator
аккумулятор
addr
address
адрес
ASM
assembler
ассемблер
BCD
binary coded decimal
двоично-десятичный код
Below
below
меньше (для чисел без знака)
CCW
channel control word
слово (байт) управления каналом
CLC
counter latching command
команда защелкивания содержи
мого счетчика
cond
condition
условие (перехода)
COP
code of operation
код операции
d
direction
направление
data
data
данные
diff
difference
смещение по отношению к IP
disp
displacement
смещение, участвующее в вычислении ЕА
DMA
direct memory access
прямой доступ к памяти
dst
destination
место назначения, приемник ин
формации
EA
effective address
исполнительный адрес
Equal
equal
равно, равный
ext
extention
расширение
FAR
far
далекий (переход)
Greater
greater
больше (для чисел со знаком)
H
high
старший
IC
infinity control
управление бесконечностью
ICF
interrupt control field
поле управления прерыванием
IS
interrupt service
обслуживание прерывания
L
low
младший
label
label
метка
Less
less
меньше (для чисел со знаком)
mem
memory
память
mod (md)
mode
режим
Multibus
multiply bus
стандарт шины (аналог И41)
NAN
not a number
не число (т.е. число, вышедшее за границы точности вычислений)
NEAR
near
близкий (переход)
offset
offset
относительный компонент ЕА
PC
precision control
управление точностью
ptr
pointer
указатель
quot
quotient
частное (деления)
RC
round control
управление округлением
reg
register
регистр
rem
remainder
остаток
r/m
register/memory
регистр/память
SCB
system configuration block
блок конфигурации системы
SCPB
system configuration pointer block
указатель блока конфигурации
системы
SOC
system operation configuration
системная конфигурация
src
source
источник
SYN
synchronization
синхронизация
SYSBUS
system bus
системная шина
т
clock period
такт
твс
terminate on byte counter
окончание по нулю в счетчике
байтов
TI
T idle
холостой такт
тис
terminate on mask compare
окончание по результатам маски
рованного сравнения
TS
terminate on single transfer
окончание по одной пересылке
TW
T wait
такт ожидания
тх
terminate on external
окончание по внеинему сигналу
type
type
тип (прерывания)
W
word
слово
Обозначение узлов
AF
auxiliary flag
флаг вспомогательного переноса
АН
accumulator high
стариий байт АХ
AL
accumulator low
младший байт АХ
АХ
accumulator
аккумулятор (оба байта)
ВАН
base address register
регистр базового адреса
ВС
byte counter
счетчик байтов
ВН
base register high
старший байт регистра ВХ
BL
base register low
младший байт регистра ВХ
ВР
base pointer
указатель базы
ВХ
base register
регистр базы (оба байта)
САН
current address register
регистр текущего адреса
СС
channel control
регистр управления каналом
ССР
channel control pointer
указатель блока управления каналом
СЕ
counting element
счетчик/таймер
CF
carry flag
флаг переноса
СН
counter register high
старший байт регистра СХ
CL
counter register low
младший байт регистра СХ
CPU
central processor unit
центральный процессор
СН
control register
регистр управления
CWH
counter word register
счетчик циклов ПДП
СХ
counter register
счетчик
DE
denormalized operand exception
флаг исключительной ситуации денор- мализованного операнда
DF
direction flag
флаг направления
DH
data register high
старший байт регистра DX
01
destination index
индексный регистр приемника
DL
data register low
младший байт регистра DX
ОМ
denormalized operand mask
маска флага DE
05
data segment
регистр сегмента данных
ОХ
data register
регистр данных (оба байта)
ЕР .
exceptional pointer
указатель исключительных ситуаций
ES
extra segment
дополнительный сегмент
F(FX)
flag register
регистр флагов (оба байта)
FH
flag register high
старший байт регистра F
FL
flag register low
младший байт регистра F
GA
general purpose register A
регистр общего назначения А
GB general purpose register Врегистр общего назначения В
GC general purpose register Срегистр общего назначения С
IE
invalid operation exception
флаг исключительной ситуации, вызванной недействительной операцией
IF
interrupt flag
флаг разрешения прерывания
IM
invalid operation mask
маска флага IE
IOP
input-output processor
процессор ввода - вывода
IP
instruction pointer
указатель команд
IX
index register
индексный регистр
H
memory
память
MC
mask compare register
регистр маскированного сравнения
MR
mode register
регистр режима
ND?
numerical data processor
процессор числовых данных (арифметический сопроцессор)
OE
overflow exception
флаг исключительной ситуации переполнения
OF
overflow flag
флаг переполнения
OL
output latch
выходной регистр-защелка
OM
overflow mask
маска флага OF
PE
precision exception
флаг исключительной ситуации потери точности
PF
parity flag
флаг паритета (четности)
PM
precision mask
маска флага РЕ
PP
parameter pointer
указатель параметров
PSW
programm state word
слово - состояние программы
RCW
register control word
регистр управляющего слова таймера
HI
register input
входной регистр
RIO
register input-output
буферный регистр ввода - вывода
RO
register output
выходной регистр
RR
request register
регистр запросов
RS
register state
регистр состояния канала таймера
SF
sign flag
Флаг знака
SI
source index
индексный регистр источника
SP
stack pointer
указатель стека
SR
state register
регистр состояния
ss
stack segment
регистр стекового сегмента
TAG
tag
регистр этикеток
TP
task pointer
указатель задания
UE
underflow exception
флаг исключительный ситуации, вызванной антипереполнением
UM
underflow mask
маска флага UE
WCR
word count register
регистр циклов ПДП
ZE
zero-divide exception
флаг исключительной ситуации деления на нуль
ZF
zero flag
флаг нулевого результата
ZM
zero-divide mask
маска флага ZE
Мнемокоды команд
АЛА
ASCII adjust for add
ASCII - коррекция для сложения
AAD
ASCII adjust for divide
ASCII - коррекция для деления
ААМ
ASCII adjust for multiple
ASCII - коррекция для умножения
AAS
ASCII adjust for subtract
ASCII - коррекция для вычитания
ADC
add with carry
сложить с учетом переноса
ADD
add
сложить
ADDB
add byte
прибавить байт
ADDBI
add byte immediate
прибавить непосредственный байт
ADD I
add immediate
прибавить непосредственное слово
AND
and
объединить по И (конъюнкция)
ANDB
and byte
конъюнкция с байтом из памяти
ANDB I
and byte immediate
конъюнкция с непосредственным байтом
ANDI
and immediate
конъюнкция с непосредственным словом
CALL
call
вызов процедуры (подпрограммы)
CBW
convert byte to word
преобразовать байт в слово
CLC
clear carry
сбросить флаг переноса
CLD
clear direction
сбросить флаг направления
CL I
clear interrupt
сбросить флаг прерывания
CLR
clear
сбросить (выбранный бит в нуль)
CMC
complement carry
инвертировать флаг переноса
CMP
compare
сравнить
CMPS
compare string
сравнить строки (цепочки)
CWD
convert word to double word
преобразовать слово в двойное слово
DAA
decimal adjust for add
десятичная коррекция для сложения
DAS
decimal adjust for substract
десятичная коррекция для вычитания
DEC
decrement
декремент на единицу
DECB
decrement byte
декремент байта в памяти на единицу
DIV
divide (unsign)
разделить (без знака)
ESC
escape
переключиться на сопроцессор
Fxx
float
команда арифметического сопроцессора (выполняется операция хх с плавающей запятой)
FABS
absolute value of ST(0)
абсолютное значение ST(0)
FADD
add
сложить (вещественный формат)
FADDP
add and pop
сложить и извлечь
FBLD
BCD load
загрузить число в двоично-десятичной форме
FBSTP
BCD store and pop
запомнить и извлечь число в двоично
десятичной форие
FCHS
change sign
изменить знак
FCLEX
clear exceptions
сбросить флаги исключительных ситуа
ций
FCOM
compare
сравнить (вещественный формат)
FCOMP
compare and pop
сравнить и извлечь
FCOMPP
compare and pop twice
сравнить и извлечь дважды
FDECSTP
decrement stack pointer
декрементировать указатель стека
FDISI
disable interrupts
запрет прерываний
FDIV
divide
разделить (вещественный формат)
FDIVP
divide and pop
разделить и извлечь
FDIVR
divide reverse
разделить наоборот
FDIVRP
divide reverse and pop
разделить наоборот и извлечь
FEN I
enable interrupts
разрешение прерываний
FFREE
free STU)
освободить регистр ST(i)
FIADD
integer add
сложить (целый формат)
FI COM
integer compare
сравнить (целый формат)
FI COMP
integer compare and pop
сравнить (целый формат) и извлечь
FIDIV
integer divide
разделить (целый формат)
FIDIVR
integer divide reverse
разделить (целый формат) наоборот
FILD
integer load
загрузить (целый формат)
FIMUL
integer multiply
умножить (целый формат)
FINCSTP
increment stack pointer
инкрементировать указатель стека
FINIT
initialize
инициализировать сопроцессор
FIST
integer store
запомнить (целый формат)
FISTP
integer store and pop
запомнить (целый формат) и извлечь
FI SUB
integer subtract
вычесть (целый формат)
FISUBR
integer subtract reverse
вычесть (целый формат) наоборот
FLD
load
загрузить (вещественный формат)
FLDCW
load control word register
загрузить регистр управления
FLDENV
load enviroument
загрузить среду
FLDLG2
load logio2
загрузить logio2
FLDLN2
load loge2
загрузить log*2
FLDL2E
load log2e
загрузить log2e
FLDL2T
load log210
загрузить log210
FLDPI
load
загрузить
FLDZ
load zero
загрузить нуль
FLD1
load 1
загрузить единицу
FMUL
multiply
умножить (вещественный формат)
FMULP
multiply and pop
умножить (вещественный формат) и извлечь
FNCLEX
clear exceptions (no WAIT)
сбросить флаги исключительных ситуа ций
FNDISI
disable interrupts (no WAIT)
запрет прерываний
FNENI
enable interrupts (no WAIT)
разрешение прерываний
FNINIT
initialize (no WAIT)
инициализировать сопроцессор
FNOP
no operation
холостая команда
FNSAVE
save (no WAIT)
запомнить состояние
FNSTCW
store control word register (no WAIT)
запомнить регистр управления
FNSTENV
store enviroument (no WAIT)
запомнить среду
FNSTSW
store state word register (no WAIT)
запомнить регистр состояния
FPATAN
partial arctangent
вычислить частичный арктангенс
FPREM
partial remainder
найти частичный остаток
FPTAN
partial tangent
вычислить частичный тангенс
FRNDINT
round ST(0) to integer
округлить до целого
FRSTOR
restore state
восстановить состояние
FSAVE
save state
запомнить состояние
FSCALE
scale ST(0) by STU)
масштабировать
FSQRT
square root of ST(0)
извлечь квадратный корень
FST
store
запомнить (вещественный формат)
FSTCW
store control word
запомнить регистр управления
FSTENV
store enviroument
запомнить среду
FSTP
store and pop
запомнить и извлечь (вещественный формат)
FSTSW
store state word
запомнить регистр состояния
FSUB
subtract.
вычесть (вещественный формат)
FSUBP
subtract and pop
вычесть и извлечь (вещественный формат)
FSUBR
subtract reverse
вычесть наоборот (вещественный формат)
FSUBRP
subtract reverse and pop
вычесть наоборот и извлечь (вещественный формат)
FTST
test ST(0)
проверить вершину стека
FXAM
examine ST(0)
проанализировать вершину стека
FXCH
exchange ST(i) and ST(0)
обменять содержимое регистров
FXTRACT
extract components of ST(O)
выделить порядок и мантиссу
FYL2X
У 10g2X
осуществить указанные вычисления
FYL2XP1
У 10g2[x+l]
осуществить указанные вычисления
F2XM1
2*-l
осуществить указанные вычисления
FWAIT
CPU wait for coprocessor
ЦП ожидает сопроцессор
HLT
halt
остановить
IDIV
integer divide (signed)
разделить со знаком
IMUL
integer multiply (signed)
умножить со знаком
IN
input
ввести из порта ввода - вывода
INC
increment
инкремент на единицу
INCB
increment of byte
инкремент байта в памяти на единицу
INT
interrupt
прерывание
INTO
interrupt of overflow
прерывание при переполнении
IRET
interrupt return
возврат из прерывания
JA
jump on above
переход, если больше
JAE
jump on above or equal
переход, если больше или равно
JB
jump on below
переход, если меньше
JBE
jump on below or equal
переход, если меньше илн равно
JBT
jump on bit true
переход, если выбранный бит истинен
JC
jump on carry
переход по переносу
JCXZ
jump on CX zero
переход по нулю счетчика СХ
JE
jump on equal
переход по равенству
JG
jump on greater
переход, если больше
JGE
jump on greater or equal
переход, если больше или равно
JL
jump on low
переход, если меньше
JLE
jump on low or equal
переход, если меньше или равно
JMCE
jump on mask comparison
переход, если маскированное сравне
equal
ние равно
JMCNE
jump on mask comparison not
переход, если маскированное сравне
equal
ние не равно
JMP
jump
переход (безусловный)
JNA
jump on not above
переход, если не больше
JNAE
jump on not above or equal
переход, если не больше или равно
JNB
jump on not below
переход, если не меньше
JNBT
jump on bit not true
переход, если выбранный бит не истинен
JNC
jump on no carry
переход по отсутствию переноса
JNE
jump on not equal
переход по неравенству
JNG
jump on not greater
переход, если не больше
JNGE
jump on not greater or equal
переход, если не больше или равно
JNL
jump on not less
переход, если не меньше
JNLE
jump on not less or equal
переход, если не меньше или равно
JNO
jump on not overflow
переход по отсутствию переполнения
JNP
jump on not parity
переход по нечетности
JNS
jump on not, sign
переход, если флаг знака сброшен
JNZ
jump on not, zero
переход, если флаг нуля сброшен
JNZB
jump on byte in memory not zero
переход, если байт в памяти не нулевой
JO
jump on overflow
переход по переполнению
JP
jump on parity
переход по паритету
JPE
jump on parity even
переход по четному паритету
JPO
jump on parity odd
переход по нечетному паритету
JS
jump on sign
переход, если флаг знака установлен
JZ
jump on zero
переход по нулю
J ZB
jump on byte in memory zero
переход, если байт в памяти равен нулю
LAHF
load AH with flags
загрузить АН из флагов
LCALL
long call
вызов подрограммы (длинный вызов)
LDS
load pointer to DS
загрузить указатель, используя DS
LEA
load effective address
загрузить эффективный адрес
LES
load pointer to ES
загрузить указатель, используя ES
LJBT
long jump on bit true
длинный переход, если выбранный бит истинен
LJMCE
long jump on mask comparison equal
длинный переход, если маскированное сравнение равно
LJMCNE
long jump on mask comparison not equal
длинный переход, если маскированное сравнение не равно
LJMP
long jump
длинный безусловный переход
LJNBT
long jump on bit not true
длинный переход, если выбранный бит не равен
LJNZ
long jump on not zero
длинный переход, если слово не нулевое
LJNZB
long jump on byte in memory not zero
длинный переход, если байт в памяти не нулевой*
LJZ
long jump on zero
длинный переход, если слово нулевое
LJZB
long jump on byte in memory zero
длинный переход, если байт в памяти нулевой
LOCK
lock
блокировка шины
LODS
load string
загрузить цепочку
LOOP
loop
зациклить
LOOPE
loop while equal
осуществить зацикливание, пока равно
LOOPZ
loop while zero
осуществить зацикливание, пока нуль
LOOPNE
Loop while not equal
осуществить зацикливание, пока не равно
LOOPNZ
loop while not zero
осуществить зацикливание, пока не нуль
LPD
load pointer
загрузить указатель из памяти
LPDI
load pointer immediate
загрузить указатель непосредственными данными
MOV
move
переслать (передать)
MOVB
move byte
переслать байт
MOVB I
move byte immediate
переслать непосредственный байт
MOV I
move word immediate
переслать непосредственное слово
MOVP
move pointer
переслать указатель
MOVS
move string
переслать цепочку
MUL
multiply
умножить (числа без знака)
NEG
change string
изменить знак
NOP
no operation
пустая операция (холостая команда)
NOT
invert
инвертировать (слово)
NOTB
invert byte
инвертировать байт
OR
or
объединить по ИЛИ (дизъюнкция)
ORB
or byte
объединить байт по ИЛИ
ORB I
or byte immediate
объединить непосредственный байт по ИЛИ
ORI
or immediate
объединить непосредственное слово по ИЛИ
OUT
output
вывести в порт ввода - вывода
POP
pop
извлечь (считать) слово из стека
POPE
pop flags
извлечь из стека содержимое регистра флагов
PUSH
push
включить (записать) слово в стек
PUSHF
push flags
записать в стек содержимое регистра флагов
RCL
rotate through carry flag
циклический сдвиг влево через флаг
left
переноса
REP
repeat
повторять цепочечную операцию до
СХ=0
REPE
repeat till equal
повторять операцию, пока равно
REPNE
repeat till not equal
повторять операцию, пока не равно
REPNZ
repeat till not zero
повторять операцию, если ZF = 0
REPZ
repeat till zero
повторять операцию, если ZF = 1
RET
return
возврат
ROL
rotate left
циклический сдвиг влево
ROR
rotate right
циклический сдвиг вправо
SAHF
store AH into flags
запомнить АН в регистре флагов
SAL
shift arithmetic left
арифметический сдвиг влево
SAR
shift arithmetic right
арифметический сдвиг вправо
SBB
subtract with barrow
вычесть с учетом заема
SCAS
scan string
сканировать цепочку
SETB
set bit
установить выбранный бит в единицу
SHL
shift logical left
логический сдвиг влево
SHR
shift logical right
логический сдвиг вправо
SINTR
set interrupt request
установить бит запроса прерывания
STC
set carry
установить флаг переноса
STD
set direction
установить флаг направления
STI
set interrupt
установить флаг разрешения прерыва
ния
STOS
store string from ac
запомнить содержимое аккумулятора в цепочке
SUB
subtract
вычесть
TEST
test
проверить
TSL
test and lock
проверить и установить с блокировкой
WAIT
wait
ожидать активного сигнала TEST
WID
width
установить логическую ширину шины
XCHG
exchange
обменять
XFER
transfer
выполнить цикл ПДП
XLAT
translate
преобразовать
XOR
exclusive OR
сложить по модулю 2 (исключающее
ИЛИ)
ИНТЕРФЕЙСНЫЕ СИСТЕМЫ MULTIBUS
Магистрали интерфейсных систем Multibus предназначены для построения микропроцессорных систем (в том числе, мультипроцессорных) на основе МПК К580 и К1810 Две интерфейсные системы Multibus 1 и Multibus II отличаются в основном параллельными магистралями [16, 17]
Архитектура системы Multibus 1 включает пять магистралей параллельная системная SB, параллельная локальная LBX, многоканального ввода — вывода MSN, локальная ввода — вывода SBX и последовательная управляющая Bitbus Пропускная способность системы Multibus 1 составляет 37 Мбайт/с (SB — 10 Мбайт/с, LBX — 19 Мбайт/с, MCN — 8 Мбайт/с)
Архитектура системы Multibus II включает шесть магистралей параллельная системная PSB, последовательная системная SSB, параллельная локальная LBX II, многоканального ввода — вывода MCN, локальная ввода — вывода SBX и последовательная управляющая Bitbus Архитектура Multibus II в отличие от Multibus I ориентирована на высокопроизводительные мультипроцессорные системы, использующие современные МП типа Intel 80286 и 80386 Одновременное использование магистралей Multibus II обеспечивает пропускную способность МПС до 96 Мбайт/с (PSb — 40 Мбайт/с, LBX II — 48 Мбайт/с, MCN — 8 Мбайт/с)
Для построения МПС на основе МПК К1810 в основном используется интерфейсная система Multibus I (отечественный аналог И-41) Приведем основные характеристики и особенности магистралей системы Multibus I
Параллельная системная магистраль SB является одной из наиболее распространенных в мире и часто с ней ассоциируют общее название Multibus (или IEEEP-796) Для передачи 8- или 16 битовых данных в магистрали SB используется асинхронный протокол со скоростью передачи до 5 Мслов/с в 24 битовом адресном пространстве Магистраль SB обеспечивает мультипроцессор ную работу и имеет набор сигналов, аналогичный набору сигналов отечественной магистрали И 41 Приведем наименования линий магистрали SB, в скобках указаны номера контактов основ ного 86-контактного печатного соединителя Р1, а рядом, через косую черту,— цепь и номер кон такта магистрали И 41, реализованный на базе соединителя СНП-59
ADRF — ADR0 (43—58/ВС24 — BCI7) — 16 младших разрядов шины адреса
ADR13 — ADR10 (28, 30, 32, 34/BI2 — В9) — 4 старших разряда шины адреса
DATE — DATO (59—74/ВС25 — ВС32) — 16 разрядов шины данных
BHEN (27/С9) — разрешение передачи по старшему байту шины данных
INXI, INX2 (24, 26/В6, В7) — признаки запрета обращений по адресам ОЗУ, ПЗУ
INT7 — INTO (35—42/ВС13 — ВС16) — запросы прерываний
INTA (33/02) — подтверждение прерывания
BCLK (13/С1) — синхронизация магистрали для схем приоритетного арбитража
CCLK (31/С11) —синхронизация системы
MWTC (20/В4) — запись в память
MRDC (19/С4) —чтение из памяти
IOWC (22/В5) — запись в порт
IORC (21/С5) —чтение из порта
ХАСК (23/С6) — подтверждение передачи, т е признак завершения операции записи или чтения
INIT (14/В1) — начальная установка
LOCK (25/С7) — блокировка системной магистрали одним процессорным модулем
BREQ (18/ВЗ) — запрос магистрали, т е признак наличия задатчика, требующею управления магистралью
BPRN (15/С2) — вход разрешения приоритета задатчика, т е разрешение управления магистралью
BPRO (16/B2) — выход разрешения приоритета задатчика, т е передача разрешения уп равления магистралью другому задатчику
BUSY (17/СЗ) —занятость магистрали
CBRQ (29/С10) — общий запрос магистрали
+ 5 В (3—6, 81—84) — восемь линий питания
+ 12 В (7, 8) —две линии питания
— 12 В (79, 80) —две линии питания
GND (1, 2 11, 12, 75, 76, 85, 86) — восемь линий заземления
Число линий питания и заземления в магистралях И-41 и SB различно Не указанные кон такты (9, 10, 77, 78) зарезервированы
Как видно из приведенного описания параллельной системной магистрали SB, на всех ее ли ниях (адреса, данных, управления и питания) сигналы формируются с помощью БИС ВМ86, ГФ84, ВГ88, ИР82, ВА86, ВБ89, ВИ59А, а также дополнительных ИС с малой степенью интеграции
Наряду с основным 86-контактным печатным соединителем Р1 в магистраль SB входит дополнительный 60 контактный печатный соединитель Р2 Через Р2 передаются четыре старших бита адреса ADR17 — ADR14 (номера линий адреса указаны в 16 ричной системе счисления), а также сигналы обработки отказа питания и сигналы межмодульных связей Часто в МПС соединитель Р2 используется для передачи сигналов параллельной локальной магистрали LBX
Параллельная локальная магистраль LBX является расширением внутренней магистрали МП модулей и используется для подключения к ним дополнительных модулей памяти Локальная магистраль LBX может объединять от 2 до 5 модулей и иметь два задатчика первичный — МП, вторичный — контроллер ПДП
На магистрали выполняются операции смены задатчика, чтения и записи данных Чтение и запись данных осуществляются в асинхронном режиме установка адреса, установка данных задатчиком и подтверждение передачи исполнителем Операция смены задатчика инициируется вторичным задатчиком путем возбуждения линии запроса
Приведем наименования, номера контактов 60 контактного печатного соединителя Р2 (в скобках) и назначение сигналов параллельной локальной магистрали LBX
АВО — АВ15 (19—35) — 16 младших разрядов адреса
АВ16 — АВ23 (37—44) — 8 младших разрядов адреса
DB0 — DB15 (1 —16) —данные для передачи и приема
TRAP (60) - разряд четности данных
BHEN (47) — разрешение старшего байта, т е указанные о двухбайтовой передаче
ASTB (49) — строб адреса
DSTB (50) — строб данных
R/W (48) — команда чтения/записи
АСК (46) — подтверждение передачи, т е признак завершения чтения или записи исполнителем
LOCK (53) — блокировка локальной магистрали от обращений из системной
SMRQ (51) — запрос вторичного задатчика иа управление магистралью
SMACK (52) — предоставление магистрали вторичному задатчику
GND (18, 36, 45, 54) — четыре линии заземления
ADR20 - ADR23 (55- 58) — четыре старших разряда адреса Не указанные номера кон тактов зарезервированы
На магистрали LBX в асинхронном режиме выполняются две операции записи и чтения При этом установка адреса подтверждается сигналом ASTB, установка данных задатчиком — сигналом DSTB, подтверждение передачи исполнителем — сигналом АСК Сигналы BHEN и LOCK выполняют функции аналогичных сигналов системной магистрали
При выполнении операции смены задатчика вторичный задатчик запрашивает магистраль возбуждения линии SMRQ Первичный задатчик после отключения от магистрали формирует сиг нал SMACK, по которому вторичный задатчик подключается к магистрали После окончания ра боты и отключения от магистрали вторичный задатчик снимает сигнал SMRQ
Магистраль многоканального ввода — вывода MCN позволяет освободить системную ма гистраль от операций ввода — вывода, повышая тем самым производительность МПС Магист раль MCN (от англ Multichannel) может использоваться для связи систем на расстояние до 15 м К магистрали может подключаться до 16 устройств со скоростью передачи 8 и 16 битовых данных до 8 Мбайт/с Магистраль Multichannel использует принцип «задатчик исполнитель» и может со
держать грн типа устройств один супервизатор, исполняющий функции задатчика, и до 15 базовых устройств, выполняющих функции исполнителя, и контроллеров, работающих в режиме либо исполниiсля либо задатчика Устройство, подключенное к магистрали, может находиться либо в пассивном, либо в активном состоянии задатчика или исполнителя, приемника или источника
Исио нинель в пассивном состоянии непрерывно «следит» за магистралью в ожидании ре жима передачи своею адреса Супервизатор в пассивном состоянии наблюдает за запросами прерывании обслуживания и супервизора Как только исполнитель «получает» свои адрес, он входит в активный режим и находится в нем, пока в режиме передачи адреса не получит код OFH, опре деляющии отключение исполнителя от магистрали
Устройство в активном состоянии приемника принимает информацию с линий адреса/дан- пых, а в состоянии источника выставляет информацию на эти линии Супервизор или контроллер в активном состоянии задатчика управляет сигналами чтения/записи и адреса/данных Базовое устройство или конIроллер в активном состоянии исполнителя выполняет функции управляемого хстроисыза Базовое устройство постоянно находится в состоянии исполнителя, а контроллер может в нею переводиться супервизором
Мшисчраль многоканального ввода вывода Multichannel (MCN) выполняется в виде 60 проводного плоского кабеля максимальной длины до 15 м, с чередующимися линиями заземления и информационных сигналов, а также прямых и инверсных управляющих линий Приведем обозначение и назначение линии магистрали (в скобках указаны номера линий)
ADO ADF (2 32 четные) - мультиплексированная 16-битовая шина адреса/данных
GND (1 43 нечетные) линии заземления
РВ РВ (45, 46) дифференциальные сигналы дополнения данных до четности
R/W, R/W (48, 47) дифференциальные сигналы управления чтением/записью
А/IT, A/D (50, 49) — дифференциальные сигналы управления адрес/данные
DRDY, DRDY (52, 51) дифференциальные сигналы готовности данных на шине адреса данных
ААСС (36) признак приема адреса исполнителем
DACC (42) признак приема данных исполнителем
SRQ (38) запрос обслуживания для передачи состояния устройства
STQ (40) запрос супервизора, являющийся признаком завершения операции исполнителем
RESET (34) сигнал сброса или установки в активном режиме задатчика
SA (44) признак нахождения супервизора в активном режиме задатчика
Липни 53 60 являются резервными
Mai истрать MCN не имеет линий питания Приемники и передатчики магистрали должны располагаться вблизи соединителя магистрали, получать питание от модуля и иметь хорошее соединение с заземлением магистрали При передаче дифференциальных сигналов положительный уровень сосчавляет от +2 до +5,25 В, отрицательный от —2 до —5,25 В Остальные сигналы имеют уровни ТТЛ
Магистраль локального ввода — вывода SBX позволяет наращивать одноплатные микроЭВМ дополнительными платами, расширяющими их возможности по реализации аппаратной арифметики, параллельного и последовательного ввода — вывода, i рафики и т д без существенных дополнительных затрат Скорость передачи по SBX (IEEE Р 959) не превышает 10 Мбайт/с Матстраль может использоваться для передачи 8 или 16 битовых данных Формирование сигналов выбора микросхем в модулях расширения осуществляется на основной плате из старших разрядов адреса В SBX по шине адреса передается три младших разряда
Назначение сигналов магистрали SBX
МАО — МА2 младшие разряды адреса, используемые для выбора порта
MCS0, MCS1 сигналы выбора микросхемы и модуле расширения
MD0 MDF 16 битовая шина данных
IORD сигнал выдачи адреса для ввода данных из порта
IOWRT -сшнал выдачи адреса для вывода данных в порт
RESET сшнал сброса или начальной установки
MWAIT сшнал ожидания, являющийся признаком завершения чтения или записи
MDRQTсигнал запроса ПДП у основной платы
MDACKсшнал подтверждения ПДП
TDMA — признак завершения работы канала ПДП
MCLK — синхросигнал для синхронизации работы модуля расширения
MINTRI, M1NTR0 — запросы прерывания
MPST — признак наличия модуля расширения
ОРТО, ОРТ1 — вспомо! ательные линии
На магистрали SBX реализованы две операции ввода и вывода, каждая из которых может выполняться в синхронном либо асинхронном режиме В синхронном режиме ввода основная плата возбуждает линии МАО — МА2 и MCS, а затем линию IORD Модуль расширения выбирает данные из адресуемого порта и подключает их к линиям MD0 — MDF После приема данных основная плата снимает сигналы с линий адреса и управления В синхронном режиме вывода основная плата возбуждает линии адреса и данных, а затем линию IOWRT В асинхронном режиме операции ввода и вывода производятся аналогично, но с использованием линии MWAIT, на которой модуль расширения устанавливает сигнал после получения адреса
На магистрали SBX также предусмотрен режим ПДП, инициируемый модулем расширения сигналом запроса MDRQT Контроллер ПДП основной платы подтверждает запрос сигналом MDACK, а затем вырабатывает сш нал IORD, по которому модуль расширения подключает данные к линиям MD0 — MDF Основная плата записывает данные в память и снимает управляющие сигналы, после чего модуль расширения отключается от шины данных По окончании работы модуля в режиме ПДП он формирует для основной платы сигнал ТОМА При необходимости модуль расши рения, используя линии MINTRO, MINTR1, может запрашивать прерывание через контроллер пре рываний основной платы
Последовательная управляющая магистраль связи Bitbus используется для построения иерархических систем, включающих до 250 узлов, удаленных на расстояние от 30 м (для режима синхронной передачи) до нескольких километров (для режима с самосинхронизацией)
Основным элементом магистрали Bitbus является узел, который может состоять из одного устройства, из устройства с расширителем или из повторителя Возможны два типа узлов задатчик и исполнитель В системе в каждый момент времени может функционировать только один задатчик и до 250 исполнителей Повторитель — это узел, используемый для регенерации (но не для синхронизации) сигналов магистрали Повторители применяют для увеличения расстояния или числа узлов внутри системы только в режиме с самосинхронизацией
Режим синхронной работы является оптимальным для достижения высокой производительности при сравнительно коротком расстоянии В этом режиме допускается совместное включение до 28 узлов на расстоянии 30 м при скоростях передачи от 500 Кбит/с до 2,4 Мбит/с Для передачи сигналов в этом режиме используется две дифференциальных сигнальных пары одна пара для данных DATA, DATA и одна — для синхронизации данных DCLK, DCLK Данные изменяются по срезу сигнала в паре синхронизации
Режим работы с самосинхронизацией позволяет работать на длинные расстояния В этом режиме имеется две стандартные скорости передачи 375 и 62,5 Кбит/с Магистраль Bitbus может иметь сегменты длиной от 300 м (при скорости 375 Кбит/с) до 1200 м (при скорости 62,5 Кбит/с) В каждом сегменте может быть не более 28 узлов При объединении сегментов с помощью повторителей в этом режиме допускается иметь до 250 узлов на расстоянии до нескольких километров В режиме с самосинхронизацией используются две дифференциальных сигнальных пары одна (DATA, DATA) - для данных, другая (RTS, RTS) — для управления приемопередатчиком Данные по линиям передаются в коде без возврата к нулю с инверсией При этом способе кодирования синхросигнал и данные накладываются друг на друга
Передача любых сообщений по магистрали осуществляется кадрами Кадр имеет следующий формат флаг (1 байт), адрес (1 байт), управление (1 байт), информация (от 0 до 255 байтов), код циклического контроля (2 байта), флаг (I байт) В полях, содержащих более одного байта, младший байт передается первым
Поле флага (одно в начале кадра, другое - в конце) предназначено для ограничения кадра и содержит код 7Н
Поле адреса содержит адрес исполнителя, участвующего в передаче сообщения Значения 0 и 251—255 зарезервированы, а 1—250 используются без ограничений
Поле управления определяет тип кадра - синхронизации, супервизорный, информацион ный
Поле циклического контроля кадра обеспечивает обнаружение ошибки при передаче сообщения по магистрали Bitbus Это поле содержит циклический код (полином Х|ь + X12 -|- X5 + 1), генерируемый передающим узлом Приемный узел игнорирует поступающий кадр, если код не совпадает
Поле информации присутствует только в информационных кадрах (в супервизорных кадрах и кадрах синхронизации оно отсутствует) Информационные кадры используются задатчиком и исполнителем для передачи сообщений и передаются только после кадром синхронизации
Сообщение в магистрале Bitbus, передаваемое в информационном поле информационных кадров, имеет следующий формат длина сообщения (1 байт), тип сообщения (1 бит), расширение источника (1 бит), расширение приемника (1 бит), направление (1 бит), резерв (4 бита), адрес узла (1 байт), задача источник (4 бита), задача-приемник (4 бита), команда/ответ (1 байт), дан ные (от 0 до 248 байт)
Физически магистраль Bitbus реализуется в виде кабеля с двумя типами стандартных 9-контактных соединителей кабель — плата и кабель—кабель Приведем назначение контактов и их нумерацию для двух типов соединений (кабель — плата/кабель— кабель)
DATA, DATA (5, 6/3, 8) — дифференциальная сигнальная пара данных
DCLK/RTS, DCLK/RTS (8, 7/9, 4)—дифференциальная сигнальная пара синхрониза- ции/управления,
GND, GND (3, 4/2, 7) — общие линии
+ 12 В, +12 В (1, 2/1, 6) —линии питания
ZGND (9/5) — высокоимпедансное заземление (по стандарту RS 485)
Длительность среза сигналов в линиях 25—100 нс, данные устанавливаются не более чем за 80 нс до прихода фронта синхроимпульса и удерживаются не менее 120 нс
СПИСОК ЛИТЕРАТУРЫ
Брябрин В. М. Программное обеспечение персональных ЭВМ — М Наука, 1988
Григорьев В. Л. Программирование однокристальных микропроцессоров — М Энергоато миздат, 1987
Дао Л. Программирование микропроцессора 8088/Пер с англ — М Мир, 1988
Казаринов Ю. М., Номоконов В. Н., Филиппов Ф. В. Применение микропроцессоров и микроЭВМ в радиотехнических системах—М Высшая школа, 1988
Лю Ю-Чжен, Гибсон Г. Микропроцессоры семейства 8086/8088 Архитектура, программиро вание и проектирование микрокомпьютерных систем/Пер с англ — М Радио и связь, 1987
Микропроцессоры: В 3 кн Кн 1 Архитектура и проектирование микроЭВМ Организация вычислительных процессов/В Л Горбунов, Д И Панфилов, А Е Костин и др , Под ред Л Н Преснухина — М Высшая школа, 1986
Микропроцессоры и микропроцессорные комплекты интегральных схем В 2 т Т 2/ Н Н Аверьянов, А И Березенко, Ю И Борщенко и др , Под ред В А Шахнова — М Радио и связь, 1988
Микропроцессоры и микроЭВМ в системах автоматического управления Справоч- ник/С Т Хвощ, Н М Варлинский, Е А Попов, Под ред С Т Хвоща — Л Машиностроение, 1987
МикроЭВМ: В 8 кн/Под ред Л Н Преснухина Кн 3 Семейство ЭВМ «Электроника К1»/ А В Кобылинский, А В Горячев, Н Г Сабадаш, В В Проценко — М Высшая школа, 1988
Погорелый С. Д., Слободянюк Т. Ф. Программное обеспечение микропроцессорных систем Справочник—Киев Техника, 1985
1АРХ 86/88, 186/188 Users Manual — Intel Corparation Literature departament, Santa Clara, 1985
Morgan C., Waite M. 8086 16 bit microprocessor primer — Петербороугх Byte Corporation, 1982
Morse S. P. The 8086 Primer— New Jersey Hayden Book Company, 1978
Morse S. P. Palmer I. F. The 8087 Primer — NY Wiley Press Book, 1984
Osborn A. 8089 I/O Processor Handbook — Berkley, Calif, 1980
Мячев А. А., Степанов В. H., Щербо В. К. Интерфейсы систем обработки данных Спра вочник — М Радио и связь, 1989
BITBUS Distributed Control Modulas Data Book Santa Clara, C A , Intel, 1984
ПРЕДМЕТНЫЙ УКАЗАТЕЛЬ
Адрес
исполнительный 20
логическим 20, 21, 27
физическим 79, 20, 27, 42
эффективный 21, 47, 48, 50 61
Адресная защелка 9, 36, 38
Адресное пространство
памяти 11, 19 23, 31, 50
ввода вывода 11, 22, 39, 50
Адресация
абсолютная 47
базовая 20, 48, 50, 54
базовая индексная 51, 54
индексная 51 54
к памяти 20 22, 182
косвенная рсчметровая 22, 47—54
непосредственная 48 50
неявная 48, 51
относительная 51
прямая 22, 50, 54
регистровая 49
Адресные мультиплексоры 182
Аккумулятор 16 48
Активный режим АСП 88- 192
Арбитр 162- 177 182
Арбитраж
параллельный 175
последовательный 176
приоритетным 175
циклическим 176
Двоично десятичный формат 77—82
Денормализованное число 104—106
Длинное целое число 78—82
Длинное целое число 78—82
Длинный вещественный формат 78—82
Доступ
к памяти Ф 45—149, 192
к шине 165
Задержки смены состояния МП при арбит раже 173- 175
Запрос
на ПДП 11, 194
на прерывание 17, 24—25
на регенерацию 181 —183
Запросы циклов памяти 184
Захват шины 14, 192
— — арбитром 173
ЗУ динамического типа 178—180
Инициализация процессора СПВБ 122
Интерфейсные БИС
вспомогательные 150—191 перепрограммируемые 192—246
Интерфейс
местной шины 18, 28, 162
Multibus шины 17
Блокировка шины 14, 24—25, 32, 37
Блок управления памятью 39
Блок шинною интерфейса 116
Буфер адреса 18, 29, 37, 43
данных 18, 31 38
Буферный )кчистр 18, 37, 43 152
Ведомый контроллер прерывания 36 микропроцессор 166
Ведущий контроллер прерывания 36 микропроцессор 166
Внутренний вещественный формат 78—82
Boiepar из подпрограммы Ф 8 52, 67
Выбор банка ЗУ 181, 189—191
Вызов подпрограммы 52 67
Канал 110 149
Каналы ПТ 205— 207
Каскадирование
КП 24, Ф 160
КПДП 202
Конвейерная обработка 18
Контроллер
динамической памяти 178 накопителя ГМД 218 -235 прерывания 36 приоритетов 175 прямого доступа к памяти системной шины 156—162
Конфликты адресные 162
Короткий вещественный формат 78—82 Короткое целое число 78—82
Генератор
тактовый 150 — 152
шинныи 158
Маскирование 17, 198
Местная конфшурация 114, 125
Ненормализованное число 104
Немаскированные реакции АСП 104
Очередь байтов 82 команд 18, 43, 76, 115
Пассивное состояние
АСП 87
АШ 166
Плотность записи 219
Подтверждение захвата 32, 193, 219
— прерывания 12, 24—25, 31, 36
Порты ввода вывода 7, 23
Последовательность освобождения шины 175
Постбайт 46, 49—51
Прерывание
внешнее 24, 28, 58
внутреннее 17, 24—26, 28, 55
маскированное 12, 24
немаскированное 25
Префикс
блокировки 14, 24, 37
замены сегмента 22, 24
повторения 24, 71 — 73
Приоритеты запросов на ПДП 193
Программный счетчик 15
Программный таймер 205—218
Процессор ввода — вывода 110-149
Прямой доступ к памяти 145—149, 192
Разрешение передачи старшего байта 10, 23, 39, 75, 111, 178
Регенерация ЗУ
внутренняя 183, 185
внешняя 185
скрытая 183
Регистр
аккумулятор 16, 48, 50, 52
арифметический 82
базовый 59—61
ввода — вывода 221
дополнительного сегмента 15, 20
индексный 15, 45, 51, 119
индексный источника 16, 51
индексный приемника 16, 51
команд 196
маскированного сравнения 119
общего назначения 14, 45, 52, 61
программного сегмента 16, 51
сборки/разборки 115
сегмента данных 9, 12, 15, 52, 60
слова-состояния 209 -211
состояния 121
стекового сегмента 15, 20
указатель 12, 15, 52
— базы 15, 16
— исключительной ситуации 83, 86
стека 16, 82
управления 83, 85, 114
каналом 119
флагов 16, 22, 27, 45
этикеток 83
Режим работы МП
максимальный
минимальный
Режим работы
КДП 188
КНГМД 220
КПДП 198
ПТ 212
СШ 158, 168
СШ с РШ 171
СШ с РШ ввода вывода 159, 172
Сегментация памяти’18, 23, 60
Сегмент
данных 18, 21, 48
дополнительный 18, 21
прозраммный 18, 21 27
стековый 18, 21 27, 51
Сигнал запрета освобождения СШ 163
Синхронизация СШ 165
Системный контроллер 156
Слово 19, 27, 29, 40, 4 3, 52
Слово состояние 197, 210
Сопроцессор 6, 1.3, 43, 74
Состояние МП 13, 28 37
Стек 22, 24, 28, 48
Структура каналов 117
Сумматор адресов 19
Счетчик байтов 71, 119
Схема параллельного разрешения ириориге тов 175
последовательною разрешения приорше тов 176
— ютовности 151
формирования тактовых импульсов 151
циклическою разрешения приоритетов 176
шинного интерфейса 166
Таймер 205- 218
Удаленная конфигурация 125, 128
Указатель
команд 19, 22, 47, 51, 118
стека 20, 47
Управление бесконечностью 85
округлением 85
точность 85
Управляющее слово
КНГМД 222
КПДП 197
Устройство шинного интерфейса 83
Устройство ввода вывода 37 42, 117
Фазовая автоподстроика 219
Фиксатор адреса 37, 43
Флаг
антипереполнения 85
вспомогательного переноса 16, 63
деления на нуль 63, 84
денормализации 84
знака 16
направления 17, 71
недействительной операции 84
неточного результата 85
нуля 16
обновления 211
паритета 16
переноса 16
переполнения 16, 84
разрешения прерывания 10, 17
трассировки 16—17
четности 16
Формат команды 77
Формирование физических адресов 21
Цикл памяти 28—37, 186—188
Шина
адреса 7, 18, 29, 57
арбитража 166
ввода — вывода 156
данных 7, 37
локальная 76, 156
мультиплексированная 37, 43
резидентная 166
системная 156
управления 28
Шинные формирователи 152—156
Шифраторы приоритетов 176
ОГЛАВЛЕНИЕ
Предисловие 3
Глава! Микропроцессор К1810ВМ86 5
I 1 Состав МПК БИС серии K18I0 Общие сведения о микропроцессоре К1810ВМ865
1 2Назначение выводов микропроцессора 8
1 3Структура микропроцессора 14
1 4Адресное пространство памяти и ввода—вывода 19
1 5Организация прерываний 23
1 6Функционирование микропроцессора 28
1 7Структура однопроцессорной системы 37
8Особенности архитектуры микропроцессора К1810ВМ88 42
Глава 2Система команд микропроцессора К1810ВМ86 45
1Форматы команды 45
2Способы адресации 49
3Описание системы команд 52
4Особенности выполнения отдельных команд 59
Глава 3 Арифметический сопроцессор К1810ВМ87 74
1Общие сведения и технические характеристики 74
2Назначение выводов БИС К1810ВМ87 75
3 3Структура арифметического сопроцессора К1810ВМ87 77
3 4Функционирование арифметического сопроцессора 86
3 5Система команд арифметического сопроцессора 92
3 6Специальные случаи использования арифметического сопроцессора 104
Глава 4 Специализированный процессор ввода— вывода К1810ВМ89 НО
4 1Общие сведения и технические характеристики 110
4 2Назначение выводов БИС К1810ВМ89 111
4 3Структура специализированного процессора ввода — вывода 113
4 4Функционирование процессора ввода—вывода 121
4 5Система команд СПВБ 132
4 6Специальные вопросы организации ввода — вывода 141
Глава 5 Вспомогательные интегральные схемы 150
5 1Генератор тактовых импульсов К1810ГФ84 150
5 2Буферные регистры и шинные формирователи 152
5 3Контроллер системной шины К1810ВГ88 156
5 4Арбитр шин К1810ВБ89 162
5 5Контроллер динамической памяти К1810ВТ03 178
Глава 6 Программируемые интегральные схемы 192
6 1 Контроллер прямого доступа к памяти К1810ВТ37 192
6 2 Программируемый таймер К1810ВИ54 205
6 3 Контроллер накопителя на гибком магнитном диске К580ВГ72218
6 4ОЗУ с портами ввода — вывода и таймером КР1821РУ55 235
6 5ПЗУ с портами ввода — вывода КР1821РФ55 244
Заключение247
Приложение 249
Список литературы265
Предметный указатель266
Казаринов Юрий Михайлович
Номоконов Вадим Николаевич
Подклетное Георгий Сергеевич
Филиппов Феликс Васильевич
МИКРОПРОЦЕССОРНЫЙ КОМПЛЕКТ К1810
Заведующий редакцией В И Трефилов Редактор Е В Вязова Младший редактор С А Пацева Художе ственный редактор Т М Скворцова Художник В В Гарбузов Технический редактор В М Романова Корректор В В Кожуткина,
ИБ № 8353
Изд N° ЭР 529 Сдано в набор 13 11 89 Поди в печать 23 05 90 Т — 08944 Формат 70X 100/ 16 Бум офс № 2 Гарнитура литературная Печать офсетная Объем 22,10 усл печ л 44,53 усл кр отт 21 17 уч изд л Тираж 100 000 экз Заказ № 397 Цена 1 р 10 к
Издательство «Высшая школа» 101430 Москва, ГСП 4, Неглинная ул , д 29/14
Ордена Октябрьской Революции ордена Грудового Красного Знамени Ленинградское производственно техническое объединение «Печатный Двор» имени А М Горького при Госкомпечати СССР 197136, Ленин- |рад П 136 Чкаловский пр 15
МИКРО* ПРОЦЕССОРНЫЙ КОМПЛЕКТ К1810
Структура, программирование, применение
Справочная книгаСправочная книга
Справочная книга
Справочная книга
Под редакцией Ю. М. Казаринова
Scan Pirat
Москва
«Высшая школа» 1990
ББК 32.973 М59
УДК 681.34
Ю.М. Казаринов, В. Н. Номоконов, Г. С. Подклетное, Ф. В. Филиппов
Рецензенты: кафедра вычислительной техники Московского института электронной техиики (зав кафедой чл.-кор. АН СССР Л. Н. Преснухин); д-р техн, наук, проф. Г. И. Новиков (Ленинградский институт точной механики и оптики)
Микропроцессорный комплект К1810: Структура, М59 программирование, применение: Справочная книга/ Ю. М. Казаринов, В. Н. Номоконов, Г. С. Подклетное, Ф. В. Филиппов; Под ред. Ю. М. Казаринова.— М.: Высш, шк., 1990.— 269 с.: ил.
ISBN 5-06-000821-5
Приведены технические данные, структурные схемы, режимы работы, временные диаграммы и особенности применения интегральных схем микропроцессорного комплекта К1810. Для БИС центрального процессора, арифметического сопроцессора и специализированного процессора ввода — вывода рассмотрена полная система команд Кроме того, приведены необходимые сведения о ряде вспомогательных ИС других серий, совместимых с ИС серин К1810.
ББК 32.973 6Ф7.3ББК 32.973 6Ф7.3© Коллектив авторов, 1990© Коллектив авторов, 19902404040000(4309000000)—376
ББК 32.973 6Ф7.3
ББК 32.973 6Ф7.3
© Коллектив авторов, 1990
© Коллектив авторов, 1990
М001(01)—90
ISBN 5-06-000821-5