Текст
                    МИКРОПРОЦЕССОРНЫЕ
БИС
И ИХ ПРИМЕНЕНИЕ
В.Г. ДОМРАЧЕВ С. Н. ИВАНОВ
А.Ф. РОМАНОВ Ю.Н.ЧЕРНЫШОВ
Одноплатные
микроЭВМ
Под редакцией доктора
технических наук В.Г. ДОМРАЧЕВА
Scan Pirat
МОСКВА ЭНЕРГОАТОМИЗДАТ 1988

ББК 32.973 0-42 УДК 681.311-181.48 Серия основана в 1988 году Рецензент ,В. С. Жданов Одноплатные микроЭВМ / В. Г. Домрачев, С. Н. Иванов, 0-42 А. Ф. Романов, Ю. Н. Чернышов; Под ред. В. Г. Домрачева. - М.: Энергоатомиздат, 1988. - 128 с.: ил. - (Микропроцессор- ные БИС и их применение). ISBN 5-283-01489-4 Показано построение микропроцессорной системы из двух одно- платных микроЭВМ: инструментальной на базе микропроцессора К1810 и процессора ввода-вывода на базе микропроцессора К580. Рассмотрены отдельные блоки системы, в частности арбитр системной шины, блок памяти, блок внешних устройств, блок центрального процессора К1810; предложен метод организации двух банков памяти для процес- сора ввода-вывода. Приведены практические рекомендации по адапта- ции микроЭВМ к существующим операционным системам (СР/М и др.). Для инженеров, занимающихся разработкой и внедрением микро- процессорных систем. 2405000000-388 051 (01)-88 КБ-34-41-87 ББК 32.973 ISBN 5-283-01489-4 © Энергоатомиздат, 1988
ПРЕДИСЛОВИЕ РЕДАКТОРА Современные достижения в области микроэлектроники и появление микросхем с большой степенью интеграции не только изменили внеш- ний облик ЭВМ, но и привели к созданию самых разнообразных микро- ЭВМ — от персональных бытовых до многофункциональных, встраивае- мых в аппаратуру. Последние осуществляют управление технологиче- скими производствами, обработку измерительной информации в слож- ных экспериментах, помогают инженеру в его повседневной работе, космонавту на борту космического корабля и врачу при исследовании больного. Вычислительная мощность таких микроЭВМ мало чем усту- пает, а иногда и превосходит мощность стационарных ЭВМ. Например, специальный процессор для выполнения арифметических операций КМ1810ВМ87 всего за 36 мкс извлекает корень из чисел в диапазоне до 10493?! Значительно изменились и условия труда проектировщиков ЭВМ. От применения модулей и блоков они перешли к использованию про- цессоров и готовых БИС памяти с емкостью в одном кристалле до 64 тыс. бит и более. На печатной плате сейчас устанавливается до сотни микросхем, создаются микроЭВМ с быстродействием более 1 млн. операций/с, с емкостью памяти свыше 1 млн. бит. Произошло и еще одно существенное изменение. Проектирова- ние микроЭВМ в настоящее время невозможно без хорошего владе- ния техникой разработки программ. Программные и аппаратные ас- пекты настолько тесно переплелись между собой, что без взаимного согласования работы аппаратных средств и прикладных программ еще на стадии проектирования невозможно создать хорошую микроЭВМ. В предлагаемой читателю книге авторы постарались возможно полно осветить вопросы, возникающие на первой стадии проектирова- ния одноплатных микроЭВМ — от чисто аппаратных, таких, как сниже- ние потребляемой мощности и выбор элементной базы, до более слож- ных, таких, как выбор конфигурации микроЭВМ в зависимости от ее предполагаемого применения и адаптации программного обеспече- ния: операционных систем, прикладных и игровых программ, написан- ных для ЭВМ того же типа. Таким образом, впервые рассмотрена спе- цифика проектирования аппаратных и программных средств одноплат- ных микроЭВМ как нового перспективного направления в разработке современной вычислительной техники. Вместе с тем обращено особое 3
внимание на задачи прикладного характера: выбор контроллеров внеш- них устройств, методы повышения быстродействия и др. Практически все рассмотренные задачи не остались без - разбора конкретных технических решений, многие из которых достаточно ори- гинальны. Например, представляют практическую пользу методы про- зрачной регенерации динамической памяти, диспетчеризации банков памяти, программирования ППЗУ на плате микроЭВМ и др. Впервые подробно рассмотрены вопросы проектирования быстро- действующих одноплатных микроЭВМ на базе получившего хорошую оценку специалистов микропроцессорного комплекта К1810. Особое внимание следует обратить на предлагаемый метод создания мульти- процессорных систем с арбитром системной шины, достаточно про- стым с точки зрения реализации. Несмотря на огромное количество публикаций, посвященных про- ектированию микропроцессорных систем на базе популярного микро- процессорного комплекта БИС серии К580, читатели могут найти не- мало полезных технических решений в приводимых в книге принци- пиальных схемах микроЭВМ на базе микропроцессора КР580ИК80А. Прежде всего, впервые такая микроЭВМ рассматривается как сопро- цессор ввода-вывода к более мощной по своим возможностям микро- ЭВМ на базе микропроцессора КМ1810ВМ86. Кроме того, читатели мо- гут использовать в своей работе ряд идей: теневое ПЗУ, аппаратное пре- рывание по обращению к несуществующему устройству, принцип по- строения универсального контроллера внешних устройств и др. Книга содержит ряд справочных материалов по микропроцессор- ному комплекту К1810, операционной системе СР/М. При работе с мик- ропроцессорным комплектом К1810 будет полезна упорядоченная по кодам система команд как процессора, так и сопроцессора К1810ВМ87. Книга предназначена в основном для специалистов, работающих в области микропроцессорной техники, и разработчиков одноплатных контроллеров и микроЭВМ на базе микропроцессорных комплектов серий К580и К1810. В. Г. Домрачев
ВВЕДЕНИЕ В настоящее время интенсивно ведутся работы по созданию отече- ственных персональных ЭВМ для профессионального и бытового приме- нения. Освоены новые микропроцессорные комплекты БИС К1801, К1810, К1816 и др. Все это дает мощный стимул к разработке новых высокопроизводительных микропроцессорных систем, контроллеров и микроЭВМ. В развитии вычислительной техники можно выделить два направ- ления: создание средств для решения вычислительных задач и обработ- ки больших массивов информации и разработка встраиваемых микро- ЭВМ, ориентированных на управление оборудованием и приборами [1]. ЭВМ первого направления — это традиционные ЭВМ, которые, как правило, снабжены многочисленными внешними устройствами и пред- назначены для разработки программного обеспечения определенным кругом специалистов. Особую роль в этом направлении играют персо- нальные ЭВМ. Одной из первых персональных отечественных ЭВМ стал диалого- вый вычислительный комплекс ДВК-1 со встроенным интерпретатором БЕЙСИКА. За последние годы появились персональные ЭВМ с более высокими возможностями. Это профессиональные микроЭВМ на базе микропроцессора К1801ВМ1 семейства ’’Электроника”; на базе микро- процессора КР580ИК80А ”0кеан-240”, ПК8001; на базе микропроцес- сора КМ1810ВМ86 ”Искра-1030.11”, ЕС-1840, ”Нейрон-И9-66”. Специ- ально для применения в школьных кабинетах, информатики и в быту разработаны и начали выпускаться персональные микроЭВМ ’’Электро- ника БК-0010” (микропроцессор К1801ВМ1), ’’Агат”, ’’Ириша”, ”Ра- дио-86РК” (микропроцессор КР580ИК80А) и др. Примечательно, что некоторые из этих микроЭВМ разработаны коллективом энтузиастов, работающих в вузах. Такие микроЭВМ имеют одно- или двухплатную конструкцию, раз- витые средства интерфейса с дисплеем, накопителем на гибких дисках (нередко с винчестерским), печатающими устройствами (что более характерно для профессиональных микроЭВМ) или с бытовым теле- визионным приемником и магнитофоном (как в бытовых или школь- ных микроЭВМ). МикроЭВМ второго направления предназначены для установки непо- средственно в технологических линиях, роботах, измерительных прибо- 5
pax и в другом оборудовании. Разработку подобных встроенных средств управления в значительной степени стимулирует появление более совершенных БИС и, в частности, микропроцессоров. Встраивае- мые микропроцессорные системы позволили заменить жесткую логику на программное управление, повысить надежность и гибкость систем управления. Внедрение таких систем в последние годы значительно ак- тивизировалось. Среди серийных микропроцессорных систем управления можно отме- тить логическую информационную управляющую систему (ЛИУС), серию контроллеров ’’Электроника”, контроллеры ”Бакус-01” и др. При разработке семейства контроллеров ’’Электроника” особое вни- мание было уделено универсальности их применения вследствие ис- пользования функциональных конструктивных модулей, имеющих постоянную часть для размещения базового функционального блока, т. е. собственно микропроцессорной системы на базе микропроцессора К1801ВМ2, и переменную часть для прикладных фрагментов. Контроллеры в отличие от микроЭВМ имеют значительно меньшую емкость памяти, определяемую требованиями к прикладной программе управления, более развитый интерфейс с объектами управления; в них практически отсутствуют средства общения с программистами. Таким образом, наблюдается тенденция к разработке одноплатных контроллеров и микроЭВМ. С точки зрения применения одноплатные контроллеры могут иметь избыточные для конкретной задачи блоки, но их несомненным достоинством является более высокая надежность, обусловленная уменьшением числа разъемов. Появление новых БИС памяти дает возможность разместить на одной плате большую, чем преж- де, память, что позволяет не только решать более сложные задачи обра- ботки и управления, но и расширить возможности контроллеров и микроЭВМ благодаря применению типовых операционных систем, а также совмещению в одной плате функций разработки новых про- грамм и функций управления. В табл. В. 1 приведены данные о некоторых из одноплатных контрол- леров и микроЭВМ. Из нее видно, что на одной плате можно разместить несложные контроллеры с занесенными в ППЗУ программами и микро- ЭВМ с максимальным для данного типа микропроцессора объемом па- мяти и возможностью работы в среде операционной системы. Общие принципы построения микроЭВМ-80 и микроЭВМ-86 рассмотрены в данной книге. Наиболее важными областями применения профессиональных пер- сональных ЭВМ являются автоматизация научных исследований и управ- ление физическими экспериментами. Это области, для которых харак- терно наличие большого числа постоянно меняющихся задач нередко с алгоритмами большой сложности. От ЭВМ здесь требуются функции как подготовки программ (необходима среда операционной системы 6
Таблица В.1. Одноплатные контроллеры и микроЭВМ Наимено- вание Тип микро- процессора Емкость памяти, Кбайт Размеры платы, мм Программное обеспечение ОЗУ ПЗУ ’’Электро- ника СМС-121” К1801ВМ1 2 8-16 144 X220 Программы в ПЗУ ’’Баку с-01” КР58ОИК8ОА 1 2 170 X200 Кросс-система на ЭВМ СМ-4 ’’Электрони- ка МС-1201” К1801ВМ1 64 8-16 292 Х256 Совместимо с ЭВМ ”Электроника-60” ”Радио-86РК” КР580ИК80А 16 4 260X160 Монитор, БЕЙСИК ’’Электрони- ка БК0010” К1801ВМ1 32 32 300 X140 Монитор, ФОКАЛ, БЕЙСИК ПК-8001 КР580ИК80А 16/64 16/64 Нет свед. СР/М-80 ”Океан-240” КР580ВМ80 128 16 325 х180 Электронные дис- ки 2 X 32 К, ОС СР/М-80 МикроЭВМ-80 КР58ОИК8ОА 128 16 315 Х190 Два банка памяти, ОС СР/М-80 или ISIS-II МикроЭВМ-86 КМ1810ВМ86 128 32 315 Х190 Сопроцессор, ОС СР/М-86 с развитыми средствами диалога и набором языков программирова- ния) , так и сбора и обработки информации. Однйм из продуктивных методов построения систем автоматизации исследований и управления физическими экспериментами является метод разделения вычислительной мощности и средств ввода-вывода. В этом методе функции сбора, обработки информации и управления экспериментом реализует высокопроизводительная одноплатная микро- ЭВМ, имеющая выходы на стандартные интерфейсы для подключения источников информации (например, отдельной платы аналогового ввода-вывода). Вместе с тем эта же микроЭВМ через стандартный интерфейс подключается к другой одноплатной микроЭВМ, функци- ей которой является максимальное использование внешних устройств— дисплея, накопителей на гибких дисках, печатающего устройства и других устройств. Такая микроЭВМ, будучи сопроцессором ввода- вывода, может быть построена на менее быстродействующем микро- процессоре, например КР580ИК80А, и может реализовать среды опе- рационной системы для подготовки и отладки программ. В частности, эту микроЭВМ можно использовать также как управляющую. 7
Следующим шагом в разделении функций между отдельными мик- роЭВМ является разработка мультимикропроцессорных систем. Се- мейство 16-разрядных микроЭВМ СМ-1800 включает в себя блок рас- ширения интерфейса И-41, позволяющий создавать различные по назначению мультимикропроцессорные системы. Такие системы находят широкое применение в гибких производственных системах, АСУ, системах автоматизации проектирования, локальных сетях и других областях. В данной книге на примерах разработки одноплатных микроЭВМ на базе микропроцессорных комплектов БИС серий К580 и К1810 показаны особенности проектирования микроЭВМ, рассматриваются вопросы оптимизации основных параметров микроЭВМ, приводится ряд технических решений. Особое внимание уделяется проблеме адапта- ции программного обеспечения к вновь создаваемой микроЭВМ.
ГЛАВА 1 ПРОЕКТИРОВАНИЕ ОДНОПЛАТНЫХ МИКРОЭВМ 1.1. Параметры одноплатных микроЭВМ Разработка в 1971 г. фирмой Intel первого в мире микропроцессора положила начало миниатюризации средств вычислительной техники — появились микрокалькуляторы и микроЭВМ. Дальнейшее развитие технологии проектирования и изготовления микросхем с большой и сверхбольшой степенями интеграции, разработка новых высокопро- изводительных микропроцессоров и элементов памяти большой ем- кости позволили значительно повысить вычислительную мощность мик- роЭВМ, которые постепенно стали вытеснять на мировом рынке боль- шие и малые ЭВМ. Среди многих разновидностей микроЭВМ доминирующее положе- ние занимают одноплатные микроЭВМ, обладающие высокой надеж- ностью и простотой изготовления. Единственная печатная плата с микро- процессором, памятью, контроллерами внешних устройств и необходи- мой логикой управления — это главный компонент персональных ЭВМ, бытовых ЭВМ, разнообразных систем управления технологиче- скими процессами, роботами. При наличии необходимых элементов спроектировать и разработать одноплатную микроЭВМ можно за несколько недель. Поэтому так ве- лик интерес к микропроцессорной технике как специалистов по авто- матизации производства, так и радиолюбителей. Тем не менее создать одноплатную микроЭВМ, имеющую необходимые достоинства и отве- чающую поставленной цели, не так просто. Очень многое зависит от опыта и знаний разработчика. Одной из важнейших проблем является выбор типа микропроцессо- ра. Как видно из обзора отечественных одноплатных микроЭВМ (табл. В.1), наиболее распространенными микропроцессорами являются КР580ИК80А ИК1801ВМ1, причем первый из них чаще встречается в микроЭВМ, созданных непрофессионалами. Это, видимо, объясняется его большей доступностью и наличием многочисленной литературы. В последнее время наиболее часто используется микропроцессорная серия К1810, включающая в себя как 8-разрядный высокопроизводи- тельный микропроцессор КМ1810ВМ88, так и 16-разрядный микропро- цессор КМ1810ВМ86 с арифметическим сопроцессором КМ1810ВМ87, имеющим отличные характеристики по быстродействию и диапазону представления чисел. Следующая по значимости проблема — это выбор программного обес- печения микроЭВМ. Следует отметить, что пока любительские одно- 9
платные микроЭВМ, за редким исключением, имеют несложную управ- ляющую программу и интерпретатор БЕЙСИКА или ФОКАЛА (разу- меется, профессионально разработанные и серийно выпускаемые одно- платные микроЭВМ типа ДВК и ’’Электроника” в этом отношении бо- лее богаты). Главное при решении этой проблемы — адаптация про- граммного обеспечения к конкретной конфигурации микроЭВМ поль- зователя. И, наконец, возникает множество проблем, связанных с желанием оптимизировать параметры микроЭВМ. В идеальном случае от микро- ЭВМ требуются: минимальные габаритные размеры, масса, потребление электроэнергии и стоимость; максимальные быстродействие, надеж- ность и доступность; простота сопряжения с внешним миром; возмож- ность легкой адаптации к операционным системам и прикладным про- граммам. Очевидно, что удовлетворить всем требованиям невозможно, поэто- му при составлении технического задания, а также при проектировании конкретной микроЭВМ должна учитываться специфика условий приме- нения, которые определяют выбор и соотношение перечисленных выше параметров микроЭВМ. Особенно актуально проектирование одноплатных микроЭВМ, кото- рые в условиях конкретной специфики применения позволяют более эффективно удовлетворить требованиям технического задания. При равных функциональных возможностях одноплатная микроЭВМ имеет очевидные преимущества перед многоплатной. Такая микроЭВМ может встраиваться непосредственно в приборы и системы, обеспечивая при этом: увеличение быстродействия, обусловленное минимальной длиной проводников монтажных соединений; рост помехозащищенности, свя- занный с минимизацией падения напряжения в соединительных провод- никах и уменьшением емкости между ними; повышение надежности вследствие сокращения проводных и разъемных соединений; однород- ность тепловых режимов эксплуатации, связанную с территориальной близостью элементов микроЭВМ; технологичность и ремонтопригод- ность, определяемые простотой конструктивного сопряжения микро- ЭВМ с системой (прибором) и легкостью замены. МикроЭВМ, в том числе и одноплатные, делят на специализирован- ные и универсальные. В специализированных микроЭВМ, как правило, имеются повышенные требования по одному или нескольким парамет- рам, причем эти параметры могут быть неосновными для универсальных микроЭВМ и основными для специализированных. В каждом конкрет- ном случае ценность параметра определяется назначением микроЭВМ. В связи с исключительно широким диапазоном применения специализи- рованных микроЭВМ трудно перечислить параметры, существенные для них. Приведем лишь несколько сравнительных примеров, иллюстрирую- щих тесную взаимосвязь далеких на первый взгляд параметров мик- роЭВМ. 10
При проектировании микроЭВМ следует учитывать, что избыточность одного из параметров часто можно преобразовать в улучшение качества другого параметра. Например, уменьшение габаритных размеров мик- роЭВМ положительно сказывается на ее надежности; увеличение быстро- действия приводит к выигрышу в точности и достоверности результатов и т. д. Другими словами, выигрыш по одному из параметров, как пра- вило, может быть использован для получения дополнительного положи- тельного эффекта по другому. Ценность параметра микроЭВМ определяется коэффициентом запа- са его в данной микроЭВМ. Например, если необходимо разработать микроЭВМ для обработки результатов физических экспериментов, то наиболее важными параметрами являются надежность и простота об- ращения. Допустим, что нет возможности разработать новую специали- зированную микроЭВМ, но есть универсальная микроЭВМ с низкой надежностью и сложная в обращении, но с высоким быстродействием. Тогда можно создать программу, которая будет многократно опраши- вать одни и те же датчики значения параметров, повышая тем самым достоверность результатов, и вести диалог с пользователем, что сделает обращение с микроЭВМ более простым. В данном примере происходит выравнивание коэффициента полезности каждого из параметров за счет повышения коэффициентов использования других пара- метров. К параметрам, которые следует учитывать при проектировании мик- роЭВМ, в первую очередь, следует отнести: габаритные размеры, по- требляемую мощность, возможность программного изменения структу- ры микроЭВМ с целью адаптации к различному программному обеспе- чению, степень использования быстродействия элементной базы, плот- ность установки элементов, равномерность загрузки всех элементов, коэффициент использования возможностей элементов, простоту в обращении, стоимость и пр. Ценность параметров в основном определяется задачами, для кото- рых предполагается использовать микроЭВМ. При проектировании универсальных микроЭВМ, как правило, все параметры усредняются. Универсальные микроЭВМ имеют средние габаритные размеры, сред- ние быстродействие, потребление и стоимость. Однако при решении тех задач, для которых данная микроЭВМ приобретена, чаще всего один или несколько параметров используют на пределе возможно- стей. Например, бортовые микроЭВМ должны иметь по возможности минимальные габаритные размеры, массу и потребляемую мощность, а персональные компьютеры для домашнего пользования не обяза- тельно должны быть малогабаритными и потреблять малую мощность (хотя это и желательно). Для них более важно высокое быстродей- ствие, так как они часто используются для сложных расчетов или игр, требующих быстрых графических преобразований. 11
Рассмотрим ряд отечественных одноплатных микроЭВМ и перейдем к практическим вопросам оптимизации их основных параметров. Минимальной среди названных во введении по своим функциональ- ным возможностям является одноплатная микроЭВМ ”Радио-86РК” [2]. Ее отличают простота принципиальной электрической схемы и сво- бодное размещение около 40 БИС на плате размером 260 X 160 мм. Наличие выхода на бытовой магнитофон и телевизионный приемник позволяет любителям не только собрать такую микроЭВМ, но и приме- нить ее для несложных расчетов, используя интерпретатор БЕЙСИКА, либо находящийся в ПЗУ, либо считываемый с магнитной ленты. Бытовая одноплатная микроЭВМ ’’Электроника БК-0010” [3] - первая из отечественных бытовых ЭВМ. Она имеет несколько большие размеры платы, в ней использованы БИС серии К1801. Дополнитель- ные возможности этой микроЭВМ по сравнению с возможностями микроЭВМ ”Радио-86РК” позволяют схемно реализовать графический и алфавитно-цифровой вывод не только на черно-белый, но и на цвет- ной телевизионный приемник (в последней модели), работу с внешни- ми устройствами через специальный порт. Значительно более богата по возможностям одноплатная микроЭВМ ”Океан-240” [4]. При ее проектировании преследовалась цель создания простой и надежной микроЭВМ для работы в экспедиционных услови- ях. Она имеет емкость памяти 128 Кбайт, 64 Кбайт из которых выпол- нены в виде двух электронных дисков, и развитые средства сопряжения с нестандартными устройствами. Большая (по сравнению с памятью рассмотренных выше двух микроЭВМ) память позволяет работать с операционной системой, совместимой с СР/М-80, и, соответственно, с более развитым арсеналом прикладных программ и трансляторов. Применение 16-разрядного микропроцессора КМ1810ВМ86 с сопро- цессором КМ1810ВМ87 позволяет значительно расширить возможности одноплатной микроЭВМ в части как вычислительной мощности, так и сопряжения микроЭВМ с внешними устройствами и другими аналогич- ными микроЭВМ. Эти возможности поддерживаются распространенным в настоящее время интерфейсом И-41 (Multibus). На базе микропроцес- сорного комплекта БИС К1810 спроектирован ряд профессиональных персональных ЭВМ типа ЕС-1840, ’’Искра-1030”, ’’Нейрон”, совмести- мых по программному обеспечению и др. Одноплатная микроЭВМ с функциональными возможностями, не уступающими возможностям названных многоплатных персональных ЭВМ, рассмотрена в гл. 3 [5]. При ее проектировании решены несколько задач: обеспечение максимального быстродействия, создание удобств при работе с программным обеспечением, разработанным для других ЭВМ с данным микропроцессором, простота использования микроЭВМ в качестве встроенной микроЭВМ и др. Некоторые из них решены вве- дением специальных сигналов управления режимами работы, выводи- мых через один из портов БИС параллельного интерфейса, а другие — 12
установкой специальных перемычек, т. е. средствами, не требующими дополнительного места на плате для их реализации. Из приведенных примеров видно, что недостатком одноплатных микроЭВМ по сравнению с многоплатными ^является слабая возмож- ность наращивать функции микроЭВМ. Это существенно ограничивает такую характеристику микроЭВМ, как универсальность. Поэтому, от- дав предпочтение .одноплатным микроЭВМ, разработчик должен ясно представлять, что в условиях ограничений, определяемых классом ре- шаемых задач или техническим заданием, существующей элементной базой и допустимыми габаритными размерами платы, требуется тща- тельная оптимизация структуры, быстродействия, потребления энер- гии, числа элементов и конструкции этой микроЭВМ. 1.2. Выбор структуры одноплатной микроЭВМ При выборе структуры одноплатной микроЭВМ необходимо опреде- лить: тип используемого микропроцессора; необходимость использования арифметического сопроцессора; емкость ОЗУ (в том числе энергонезависимого) и его тип (статиче- ское и (или) динамическое); емкость ПЗУ; необходимость использования функциональных преобразователей; число портов ввода-вывода и их назначение; число входов прерывания; необходимость использования буферов шин и соответствующих схем управления. В каждом конкретном случае разработчик должен определить, ка- кая часть названных средств и в каком объеме может удовлетворить поставленной задаче. Наиболее распространенными являются следую- щие конфигурации: 1) процессор, ОЗУ и ПЗУ (монитор) средней емкости; 2) процессор, сопроцессор, динамическое ОЗУ, ПЗУ (монитор + + средства отладки); 3) процессор, функциональный преобразователь, небольшое ОЗУ, значительное (8 или 16 Кбайт) ПЗУ, полная буферизация шин; 4) процессор, сопроцессор, функциональный преобразователь, пол- ная емкость адресуемого ОЗУ (включая энергонезависимую память), теневое ПЗУ необходимой емкости, дополнительный электронный диск, полная буферизация шин. Последняя конфигурация может быть оправдана только при построе- нии мощных вычислительных или отладочных средств, предназначенных для использования профессионалами-разработчиками ЭВМ, и других электронных средств. Все остальные конфигурации могут найти приме- 13
нение при построении микроЭВМ для различных областей науки и тех- ники. При разработке микроЭВМ важно правильно выбрать число и назна- чение портов ввода-вывода. Наиболее часто порты ввода-вывода вклю- чаются в состав контроллеров, управляющих специализированными внешними устройствами. Характер внешнего устройства прежде всего определяет параметры контроллера, а также параметры ввода-вывода. Например, ввод-вывод на телетайп и ввод с клавиатуры являются наи- более медленными видами ввода-вывода. Управление дисководами, графическими дисплеями, цифро-аналоговыми и аналого-цифровыми преобразователями — примеры наиболее специализированных и быстро- действующих видов ввода-вывода. Излишняя универсальность ввода-вывода значительно увеличивает стоимость, потребление энергии и габаритные размеры одноплатной микроЭВМ. Число портов ввода-вывода зависит от набора периферийных устройств, которые необходимы для работы с данной микроЭВМ. Можно выделить следующие конфигурации средств ввода-вывода: 1) ввод-вывод через последовательный порт для связи со скоростью до 9600 бод на знаковые дисплеи, печатающие устройства, программа- торы ППЗУ и другие медленные устройства. При этом надежность об- мена и в некоторой степени быстродействие можно повысить, используя синхронный режим последовательного ввода-вывода с помощью конт- роллера К580ВВ51 и таймера К580ВИ53, например так, как показано в § 3.5; 2) параллельный обмен, наиболее эффективный для быстрой переда- чи данных во внешние устройства такие, как графический дисплей, контроллер накопителя на гибких дисках, аналого-цифровые и цифро- аналоговые преобразователи. Увеличение скорости передачи с помощью параллельного интерфейса связано с увеличением числа линий ввода-вывода. Для повышения по- мехозащищенности могут использоваться средства обнаружения и исправления ошибок — от наиболее простой проверки на четность с использованием дополнительной линии до обнаружения и исправления ошибок путем вычисления полиномов на поле Галуа, с использова- нием циклических кодов. Одним из наиболее эффективных кодов является код Рида—Соломона. Наиболее часто корректирующие коды используют в синтезаторах и анализаторах речи, при работе с накопи- телями на гибких магнитных дисках (НГМД). При этом можно достиг- нуть вероятности необнаружения ошибки до 1СГ1 , 3) обмен информацией по системной шине — самый быстрый вид обмена, имеющий наибольшую помехозащищенность (при малой дли- не проводников связи в пределах конструкции). Для системного обме- на одноплатные микроЭВМ должны включать в себя кроме системного контроллера арбитр системной шины, что усложняет схему. 14
В ряде Случаев часть элементов микроЭВМ может быть использована для выполнения нескольких функций. Например, порты функциональ- ных преобразователей и внешних устройств можно использовать для временного хранения данных. Схемы прозрачной регенерации данных динамического'ОЗУ могут также использоваться для организации пря- мого доступа к'ОЗУ со стороны внешнего устройства, например анало- го-цифрового преобразователя. Регистры подсчета контрольной суммы (в контроллере дисковода) удобно применять для проверки заданных признаков-разрядов слова. Такой функциональный элемент, как ПЗУ (ППЗУ) может с успехом заменять комбинационные схемы. С помощью ППЗУ можно строить дешифраторы, одновременно выполняющие функции преобразования адресов ОЗУ/ПЗУ, страничной адресации, выключения части памяти и перемещения части памяти с одними адресами на другие адреса (псев- додинамическое перемещение программ). Этот способ удобно исполь- зовать в том случае, если программы, записанные в ППЗУ, для своей работы требуют либо другие адреса, либо буферную память внутри ко- дового сегмента. Подробнее об этом способе использования ППЗУ рас- сказано в § 4.2. Существуют и другие способы использования одних и тех же элемен- тов для выполнения различных функций. Приведенные методы в ряде случаев оказываются весьма эффектив- ными и позволяют уменьшить объем аппаратной части одноплатной микроЭВМ. При этом, однако, возрастает сложность проектирования, что окупается уменьшением габаритных размеров платы, потребляе- мой мощности и увеличением быстродействия. При выборе структуры микроЭВМ необходимо учитывать опера- ционные системы, которые в дальнейшем будут ставиться на данную микроЭВМ. Основные операционные системы, используемые в настоя- щее время, не всегда легко адаптировать к произвольной структуре и архитектуре микроЭВМ. Как правило, каждая операционная система требует определенных ограничений на структуру микроЭВМ и часто использует конкретные аппаратные средства для реализации своих функций. Некоторое исключение составляет операционная система СР/М-80 (СР/М-86). Эта система построена так, что пользователь, изменив спе- циально предназначенную для этого часть программы BIOS, может сравнительно легко адаптировать ее практически к любой микроЭВМ (см. гл. 5), построенной на основе соответствующих микропроцессо- ров. Использование прочих операционных систем возможно только в случае повторения исходной конфигурации микроЭВМ или полной эмуляции искомой системы. Чаще всего эмуляция аппаратных средств занимает значительно большее время по сравнению с оригиналом. Иног- да (IBM PC) это приводит к невозможности использования про- 15
граммных средств, предназначенных для оригинальной системы. В этом (самом трудном) случае единственным выходом применить нужную операционную систему является расширение выбранной одноплатной микроЭВМ до многоплатной конфигурации оригинала с использованием оригинальной аппаратной части или ее эквивалентов. В последнее время многие фирмы выпускают твердотельное про- граммное обеспечение. В некотором смысле эти носители программно- го обеспечения заменяют диски, однако в отличие 6т последних здесь нет возможности работать с ними непосредственно в адресах ПЗУ. В случае, когда программы сегментированы, ПЗУ может быть неотклю- чаемым, но кодовый сегмент и сегмент данных должны находиться по строго заданным адресам (в системе К580) или по своим адресам (в си- стеме К1810). В случаях, когда адреса сегментов программы перекрываются, не- обходимо использовать кодовый сегмент как теневое ПЗУ или (наибо- лее универсальный способ) переписывать ПЗУ на необходимые адреса ОЗУ. Во всех случаях особое внимание следует обращать на драйверы ввода-вывода. Как правило, оригинальные драйверы не применимы для аппаратных средств стороннего пользователя. В ПЗУ удобно хранить следующие виды программного обеспечения: монитор; таблицы перекодирования клавиатуры (одну, две или более) с командами, содержащими текст (функциональные клавиши); опера- ционную систему реального времени; специализированную операцион- ную систему; драйверы ввода-вывода; программы перекодирования; программную эмуляцию аппаратных средств; программы часто исполь- зуемых математических операций; наиболее часто используемые про- граммы пользователя. Объем функциональных элементов, устанавливаемых на одноплат- ной микроЭВМ, может быть расширен за счет установки аппаратных средств отладки аппаратных и программных частей микроЭВМ. К таким средствам можно отнести: аппаратные точки останова, независимые от сбоев программы, .которые в случае прерывания программы не портят- ся; аппаратную трассировку; устройства аппаратного контроля шин на обрыв и короткое замыкание и т. п. Кроме того, удобно иметь программные средства отладки и самоте- стирования микроЭВМ, размещенные в ПЗУ. В целях экономии адрес- ного пространства микроЭВМ твердотельное программное обеспечение целесообразно оформлять в виде электронного диска или как теневое ПЗУ. Структура микроЭВМ сильно зависит от требований, предъявляемых к ее надежности и функционированию. Помимо традиционных факторов (повреждение электрических контактов в системе ’’электронные ком- поненты—печатная плата”, ’’печатная плата—разъемы” и т. д.), умень- шающих надежность микроЭВМ, существенное значение имеют: повы- 16
шенная чувствительность к помехам, сбои по питанию, перегрузка вы- ходов используемых элементов. Задачей разработчика структуры микро- ЭВМ является оптимизация в условиях противоречивости требований к минимизации числа функциональных элементов и к согласованию электрических характеристик элементов между собой и с внешними устройствами. Эффективной мерой, ведущей к повышению надежности, является буферизация шин. Места установки и режимы работы буфер- ных устройств могут сильно различаться в зависимости от задач, воз- ложенных на конкретную микроЭВМ. В общем случае каждое пери- ферийное устройство, память и системная шина должны быть буфери- рованы отдельно. Управляющий автомат должен быть спроектирован таким образом, чтобы от начала включения буфера до момента про- хождения полезного сигнала через него или до момента срабатывания других буферов оставалось достаточно времени для затухания переход- ных процессов на шине. Наибольшее число сбоев в микроЭВМ свя- зано именно с помехами, возникающими по шине при переключении буферных устройств. Две крайности — отсутствие буферов и полностью буферированные шины чаще всего приводят к непреодолимым трудностям. В первом случае нагрузочная способность микроЭВМ настолько мала, что работа с внешними устройствами становится невозможной; во втором — при номинальной частоте работы процессора невозможно спроектировать управляющий автомат с необходимыми временными характеристика- ми управления буферами. Чаще всего буферируют следующие шины: процессора, данных, внешних устройств. Буфером для шины процессора, как правило, служит системный контроллер. Следует обращать внимание на отличия в контроллерах ло- кальной и системной шин: диаграммы работы этих контроллеров раз- личны и неправильное их использование делает машину неработоспособ- ной (в серию К580 входят три контроллера: К580ВК28 для локальной шины, К580ВК38 для системной шины и К58ОВК18 - арбитр приоритет- ного доступа к шине). Шины данных памяти ОЗУ и ПЗУ могут объединяться как по вхо- дам, так и по выходам или иметь общий буфер. При небольшой емко- сти памяти буфера не обязательны, однако использование буферного устройства в данном случае позволяет увеличить не только нагрузоч- ную способность шины памяти, но и ее помехозащищенность, исключив влияние переходных процессов других частей системы на шину па- мяти. Следует учитывать, что память — наиболее уязвимое звено с точ- ки зрения влияния помех на надежность микроЭВМ. Удобнее всего использовать регистры типа ’’защелка” (К580ИР82, К589ИР12, К555ИР22 и др.) или шинные формирователи (К580ВА86, К589АП16 и др.). Применение шинных формирователей типа К589АП16 17
позволяет, кроме того, разделить двунаправленную шину на шину чте- ния данных из памяти и шину записи данных в память. Уникальным свойством этих формирователей является то, что сигнал на шине дан- ных для записи имеет повышенный уровень (4,5 В), что крайне жела- тельно для управления входами памяти, особенно динамической (ди- намическая память типа К565РУ5 работает более устойчиво при повы- шении напряжения на управляющих входах RAS, С AS, WE до 4,5 В). При небольшом числе программируемых контроллеров внешних устройств (например, К58ОВВ51, К580ВВ55, К580ВИ53, К580ВН59 и др.) целесообразно их шины данных и управления объединить в об- щую шину и через буферное устройство подключить к буферированной шине процессора (локальной или системной). В остальных случаях воп- рос о буферизации решается в соответствии с техническим заданием на одноплатную микроЭВМ. Основным недостатком при буферизации шин является увеличение требуемых аппаратных затрат и тот факт, что применение буферных устройств ведет за собой значительное увеличение потребляемой энергии. В качестве примера отметим, что в принципиальной электрической схеме микроЭВМ ”Радио-86РК” буферирована только шина процессора (с помощью системного контроллера К580ВК28). Для микроЭВМ с минимальными возможностями этого достаточно при условии хорошо стабилизированного источника питания. Максимально полно использо- ваны буферные устройства в схеме многоплатной школьной микроЭВМ ’’Ириша” [6]; это создает предпосылки надежной работы таких мик- роЭВМ в условиях школьных кабинетов информатики. В микроЭВМ, рассматриваемых в данной книге, буферные устройства установлены на выходах памяти и шинах процессора. 1.3. Методы повышения производительности микроЭВМ Одним из наиболее важных параметров одноплатной микроЭВМ явля- ется производительность. В настоящее время существуют различные подходы к оценке этого параметра. Поскольку данная книга обладает практической направленностью, не будем приводить точного опреде- ления этого параметра. В данном параграфе рассмотрен ряд практиче- ских методов повышения производительности микроЭВМ, для чего достаточно того интуитивного представления об этом параметре, который имеется у каждого разработчика. Увеличение производительности возможно за счет аппаратных, ап- паратно-программных и программных средств. В первом случае ведущим фактором является тактовая Частота используемого микропроцессора, которая и определяет времена выпол- нения команд микроЭВМ. Однако не все функциональные узлы мик- роЭВМ должны обладать одинаковым быстродействием. Например, 18
элементы, связанные с записью информации в РПЗУ (см. § 3.4), могут иметь существенно меньшее быстродействие. Следует помнить, что ис- пользование элементов с быстродействием более высоким, чем тре- буется, влечет за собой неоправданное увеличение потребления энер- гии, рост амплитуды и расширение спектра помех. Вместе с тем недо- статочное быстродействие элементов — причина сбоев в работе мик- роЭВМ. К аппаратным средствам, позволяющим повысить производи- тельность микроЭВМ при использовании динамического ОЗУ, относит- ся схема регенерации. Удачная схема регенерации позволяет сократить, а.в ряде случаев и устранить время простоя процессора при регенерации данных. К аппаратным средствам повышения производительности отно- сятся также специализированные БИС преобразователей: аппаратные перемножители, делители, дискретные преобразователи Фурье, дис- кретные свертки, преобразователи Уолша и т. п. (например, БИС KI802ВР1, KI802ВРЗ, KI802ВР4, К588ВР2, серия К1815). Наиболее простым (в отношении числа элементов и доступности) методом регенерации динамической памяти является использование контроллера прямого доступа памяти К580ВТ57. Контроллер имеет очень удобную для регенерации памяти функцию: в одном из режи- мов можно запрограммировать автоматический перезапуск канала 2 по данным из канала 3. Однако этот метод имеет два серьезных недо- статка: во-первых, на время регенерации контроллер захватывает шины и переводит процессор в состояние ожидания, что снижает про- изводительность более чем на 25%; во-вторых, при работе программ, написанных неопытными программистами, возможно непреднамерен- ное обращение к контроллеру из-за ошибок в программе, что вызыва- ет фатальное искажение памяти, причем обнаружить такие ошибки весьма затруднительно. В микроЭВМ ”Радио-86РК” использован метод так называемой про- зрачной регенерации, т. е. регенерации между циклами обращения про- цессора к памяти, но в этом методе, а также в другой схеме прозрач- ной регенерации [7] регенерация приостанавливается на время обра- щения процессора к памяти, что фиксируется сигналами MEMR, MEMW. Однако эти схемы имеют недостатки: ограничиваются функции про- цессора, например нельзя приостановить процессор по сигналу READY (этот сигнал анализируется во втором такте работы процессора, когда сигналы MEMR и MEMW установлены). Длительная приостановка про- цессора вызывает искажение памяти. При проектировании микроЭВМ, описание которых приведено в гл. 3 и 4, предложен свободный от этих недостатков метод, одинаково применимый (с небольшими изменениями) как для процессора КР580ИК80А, так и для процессора КМ1810ВМ86. Этот метод позво- ляет достигнуть максимального быстродействия указанных микроЭВМ и реализуется при минимальных аппаратных затратах. 19
Аппаратная реализация одноплатных микроЭВМ тесно связана с их программными возможностями. Например, счетчик реального време- ни (таймер) может быть выполнен как самосостоятельный аппаратный узел на микросхемах типа К176ИЕ12 (К176ИЕ13). Те же функции мож- но реализовать программно. И та, и другая реализации сравнительно просты, и решение в данном случае зависит от степени загрузки цент- рального процессора. Несмотря на наличие в микропроцессоре КМ810ВМ86 команд деления и умножения, для ускорения этих опера- ций удобно использовать 16-разрядные аппаратные перемножители типов К588ВР5 и К1802ВР1. При этом время выполнения операций умножения уменьшается примерно втрое благодаря замене операций ум- ножения (более 124 тактов) двумя командами вывода и одной коман- дой ввода (каждая по восемь тактов). Вместе с тем аппаратная реализа- ция функции в двух последних примерах приводит к усложнению их принципиальных электрических схем, а следовательно, к увеличению га- баритных размеров и потребляемой мощности. Таким образом, при проектировании одноплатных микроЭВМ сле- дует тщательно анализировать необходимость аппаратной и про- граммной реализаций отдельных функций. Как правило, программная реализация функций позволяет уменьшить габаритные размеры мик- роЭВМ, в то время как их аппаратная реализация приводит к повыше- нию производительности. На общую производительность микроЭВМ в ряде применений су- щественно влияет организация ввода-вывода. Так, например, слож- ным, но эффективным способом увеличения быстродействия ввода- вывода являются подключение двух 8-разрядных контроллеров вво- да-вывода к 16-разрядной шине и одновременный вывод или ввод по обоим портам. Пример такого подключения приведен в схеме контрол- лера внешних устройств, описанного в § 3.4. В 8-разрядных одноплатных микроЭВМ увеличение скорости ввода- вывода можно реализовать правильной синхронизацией внешних устройств с контроллерами и процессором. Наименее быстродействую- щим в этом смысле является алгоритм опроса по готовности. В этом случае каждое из устройств выставляет сигнал готовности и все сигна- лы подключаются, например, к открытым входам регистра К589ИР12. Процессор циклически опрашивает этот регистр и определяет устрой- ство, готовое к работе. Более эффективным и наиболее распространенным методом являет- ся обмен по прерываниям с помощью контроллера приоритетных пре-, рываний типа К580ВН59. Однако при этом необходимы соответствую- щие подпрограммы прерываний, и затраты на вход и выход из этих под- программ представляют собой накладные расходы, влияющие на общее быстродействие ввода-вывода. Одним из эффективных методов ввода- вывода является синхронизация внешнего устройства через контроллер путем установления сигнала готовности непосредственно на вход про- 20
цессора. При этом задержка на обслуживание внешнего устройства ми- нимальна и составляет несколько тактов. Пример такого подключения контроллера накопителя на гибких магнитных дисках к процессору КР58ОИК8ОА рассмотрен в § 4.3. Особенно следует отметить методы обмена процессора с дисплея- ми через контроллеры. Очень важны вопросы быстродействия для контроллеров графических дисплеев. В контроллерах знаковых дисплеев обмен информацией между процессором и контроллером удобно производить во время обратного хода луча (например, в контроллере дисплея К580ВГ75). Возможный вариант — обмен информацией с использованием приоритетных зави- симостей. В целом этот метод похож на метод прозрачной регенера- ции: регенерация изображения прекращается на время ввода в память экрана новых символов. Преимуществом данного метода является про- стота реализации; недостатком - наличие помех на экране во время ввода-вывода. Одним из эффективных методов повышения скорости обмена ин- формацией с графическим контроллером является метод разделения никла работы памяти, при котором половина памяти занята регенера- цией изображения, а вторая половина используется для ввода-вывода процессором. Данный метод обеспечивает максимальное быстродей- ствие, однако требует наличия быстродействующей памяти, сравни- тельно большого объема аппаратных средств, тщательно продуман- ного программного обеспечения. Средним быстродействием и хорошими возможностями обладает метод обмена с использованием небольшой промежуточной памяти типа стек. Эта память устанавливается между выходами памяти экрана и входом регистра, преобразующего параллельный код в последова- тельный (рис. 1.1). На время обмена информацией с процессором реге- нерация памяти экрана прекращается, но помех изображения не воз- никает, так как необходимая информация извлекается из стека. После прекращения обмена стек быстро заполняется вновь, и возобновляется обычный режим работы. Очевидно, что в данном случае процессор может обмениваться ин- формацией с памятью экрана не чаще одного раза за три-четыре никла регенерации изображения. Чаще всего этой скорости обмена доста- точно для замены изображения на экране, так как процессору необ- ходимо обработать информацию, выводимую на экран, на что ухо- дит время. Рис. 1.1. Применение стека в контрол- лере дисплея 21
Следует отметить, что для создания высокоэффективных графиче- ских систем наиболее эффективно использовать отдельную одноплат- ную микроЭВМ для поддержки графического изображения, поскольку обработка графической информации требует значительной вычислитель- ной мощности, и специальная микроЭВМ резко упростит процесс рабо- ты с графическими дисплеями. На основной ЭВМ можно создавать мощ- ные графические макрокоманды, например изменение масштаба изо- бражения, повороты трехмерного изображения, восстановление скры- тых областей и другие команды. Значительное увеличение производительности микроЭВМ возможно при использовании таких аппаратно-программных средств, как специ- альные арифметические сопроцессоры и процессоры сигналов. При решении конкретной задачи пользователь может добиваться увеличения производительности за счет программных средств. В этом случае оптимизация направлена на создание оптимальных алгоритмов решения поставленных задач и выбор соответствующего языка про- граммирования. 1.4. Методы уменьшения потребляемой мощности одноплатной микроЭВМ Значительная потребляемая микроЭВМ мощность требует решения ря- да проблем, связанных как с конструкцией платы микроЭВМ, так и с температурными условиями ее работы. При увеличении тока потреб- ления до 3 А и более проводники питания приходится делать объемным монтажом, что влечет за собой снижение надежности в связи с увеличе- нием вероятности появления нарушений в системе ’’проводник — печат- ная плата”, а также в связи с возможностью появления дополнительных помех, обусловленных индуктивностью проводников. При большой потребляемой мощности особо важным вопросом становится правиль- ность трассировки шин питания, установка и выбор номинальных фильт- рующих конденсаторов. Недостаточная проработка этих вопросов часто является причиной нестабильной работы микроЭВМ, принципиальная электрическая схема которой спроектирована правильно. На рис. 1.2 приводится чертеж правильной разводки шины питания и расположения фильтрующих емкостей на примере одного из распро- страненных типоразмеров печатных плат — платы типа Е2. Здесь L1 — дроссель типа Д13-26, С1-С4 - конденсаторы типа К53-4А-6, 3 В 33 мкФ; С5 - С16 — конденсаторы типа К 10-17-25-Н90 0,22; D1- D55 - микросхемы с 14 или 16 выводами; XI - ХЗ — разъемы типа СНП 59-96. Повышение мощности потребляемой микроЭВМ влечет за собой так- же увеличение тепла, выделяемого ее элементами. В случае, если отве- дения тепла естественным путем недостаточно для соблюдения тре- 22
233,4 Рис. 1.2. Плата типа Е2 с микросхемами и фильтрующими конденсаторами буемых температурных режимов, возникает необходимость принуди- тельного охлаждения. Уменьшение потребляемой мощности может быть достигнуто при применении соответствующей элементной базы (например, КМОП- схемы серий К1533, К561 и др.). Однако данный путь существенно огра- ничивается таким параметром микроЭВМ, как быстродействие. В ряде случаев уменьшение потребляемой мощности возможно путем подклю- чения питания к БИС ПЗУ и контроллеров одновременно с подачей сиг- нала выборки БИС. Однако это ведет к снижению быстродействия, по- скольку контроллеры требуют инициализации при каждом обращении. Дополнительной мерой, уменьшающей потребляемую мощность, мо- жет быть выбор элементов, имеющих различное потребление в актив- ной и пассивной фазах работы. Так, например, в качестве буферных Устройств можно использовать буферы с переключаемым выходом 23
типа К588ВА1. Оконечные каскады этих буферных устройств автомати- чески переключаются на большую или меньшую нагрузочную способ- ность в зависимости от подключаемой к ним в данный момент нагруз- ки. При отключении нагрузки или нагрузке, меньшей 4 мА, буферные каскады отключаются и потребляемая мощность становится мини- мальной. При нагрузке более 5 мА (в некоторых случаях 16 мА) включаются буферные каскады и ток нагрузки может достигать 70 мА. Йри этом шины питания следует рассчитывать на максимальный ток нагрузки. При оптимизации потребляемой мощности следует помнить о том, что буферные устройства являются основными потребителями энер- гии. При большом их числе резко увеличивается ток, потребляемый всей микроЭВМ, что часто не оправдано. Следующими по величине по- требляемой мощности идут схемы процессоров и БИС сложных конт- роллеров (контроллера дисплея К580ВГ75, контроллера накопителя на гибких магнитных дисках, периферийного контроллера К1816ВЕ48 и др.). Как правило, .наименьшую мощность потребляют МОП-схемы па- мяти (за исключением сверхбыстродействующих типа К541) и схемы управления, выполненные на маломощных элементах ТТЛ-Шотки и КМОП-схемах серий К1533, К561, К564 и др. 1.5. Выбор конструкции одноплатной микроЭВМ Выбор конструкции одноплатной микроЭВМ включает в себя определе- ние расположения элементов на плате, оптимальное с точки зрения тепловых режимов и трассировки печатного монтажа, выбор числа сло- ев печатного монтажа и габаритных размеров печатной платы. При этом должна рассматриваться возможность замены компонентов средней степени интеграции на БИС, а БИС на СБИС, что, впрочем, определяется физическим существованием и доступностью тех или иных БИС или СБИС. Габаритные размеры одноплатной микроЭВМ ограничены тех- нологическими характеристиками печатных плат и существующими стандартами на типоразмеры. Чаще всего используются платы разме- ром 220 X 233 мм (типа Е2) с тремя разъемами типа СНП-59-96. Разъе- мы XI, Х2 обеспечивают интерфейс И-41; функцию разъема ХЗ опреде- ляет пользователь. Этот разъем, как правило, используется для связи с внешними устройствами или другими микроЭВМ, не имеющими выхо- да на системную шину. Конструкторская проработка микроЭВМ осуще- ствляется на основе результатов, полученных на всех предыдущих эта- пах. В общем случае габаритные размеры одноплатной микроЭВМ определяются сложностью принципиальной электрической схемы и способом трассировки и монтажа. 24
Усложнение принципиальной электрической схемы расширяет функ- циональные возможности и обеспечивает большую универсальность одноплатной микроЭВМ. В то же время излишнее увеличение сложно- сти принципиальной электрической схемы приводит к снижению ремон- топригодности и возрастанию сложности настройки микроЭВМ. Разумный компромисс — одна из важнейших задач при составлении принципиальной электрической схемы. Узловыми проблемами явля- ются тщательно продуманный набор конкретных функций, выполняе- мых микроЭВМ, буферизация локальной и системной шин, алгоритмы переключения буферных устройств и др. Эти проблемы обсуждались выше. Большое значение при выборе размеров платы имеют перспективы внедрения разработанной одноплатной микроЭВМ: будет ли внедрение уникальным или серийным. В первом случае размеры одноплатной мик- роЭВМ определяют разработчики, которые часто сами выполняют мон- таж и размещение элементов на плате. Во втором случае необходимо учитывать ограничения как системы трассировки печатного монтажа (ручной или автоматизированной), так и числа элементов на плате с данным типоразмером, которые определяются технологией серийного производства (наличием роботизированных систем установки элемен- тов, возможностью пайки бегущей волной и т. п.). Например, один из отраслевых стандартов предусматривает установ- ку на печатной плате Е2 с двухслойной разводкой не более 55 микро- схем с 14 или 16 выводами. При этом БИС с 40 выводами заменяет две микросхемы с 14 или 16 выводами, а две БИС с 24 или 28 выво- дами — три таких микросхемы. Кроме того, стандартом определяются назначение контактов разъемов XI и Х2, а также число и расположение фильтрующих конденсаторов (рис. 1.2). В целом размеры печатной платы являются наименее критичным параметром микроЭВМ (конечно, в известных пределах). При задан- ных размерах одноплатная микроЭВМ имеет несомненные преимуще- ства перед малыми и большими ЭВМ, поскольку ее можно использо- вать в качестве специализированного контроллера для решения кон- кретной прикладной задачи. Одноплатная микроЭВМ имеет преимуще- ства также и в тех случаях, когда она предназначается для замены мик- роЭВМ, выполненной на нескольких небольших платах, связанных между собой с помощью разъемов. Низкая надежность контактных соединений, сравнительно большая длина проводников между платами уменьшает надежность, помехозащищенность, быстродействие, тем- пературную стабильность конструкции микроЭВМ. Одноплатный вариант микроЭВМ технологичнее и легче встраивается в управляе- мое оборудование.
1.6. Проблемы адаптации программного обеспечения Программное обеспечение микроЭВМ всегда учитывает особенности ее аппаратной части. В связи с этим при переносе программного обеспе- чения, разработанного для некоторой структуры технических средств, на микроЭВМ, построенную на основе того же микропроцессора, но имеющую структуру технических средств, отличную от оригинала, воз- никает множество проблем. Наиболее часто различия в технических средствах оригинала и мик- роЭВМ пользователя выражаются в несовпадении адресов памяти; различных участках памяти, выделенных для ПЗУ; алгоритмических различиях в обработке однотипных функций; различных адресах пор- тов ввода-вывода. Последнее различие может быть вызвано, в частности, различными устройствами ввода-вывода, используемыми в оригинальной микро- ЭВМ и микроЭВМ пользователя, для которой производится адаптация программного обеспечения. При такой адаптации необходимы деталь- ные знания алгоритмов работы устройств ввода-вывода оригинальной микроЭВМ, которые чаще всего можно понять, дисассемблируя про- грамму оригинала. Для обеспечения программной совместимости со стороны памяти необходимо иметь возможность: гарантировать программно доступную область адресов ОЗУ не меньше соответствующей области оригинала; устанавливать достаточное число БИС ПЗУ по адресам, предусмот- ренным в оригинале, т. е. свободно перемещать большими частями ПЗУ по всей области адресов в любых сочетаниях отдельных частей памяти; для этого удобно использовать ППЗУ, которое программиру- ется на достаточное число комбинаций положения ПЗУ в адресах ОЗУ; ОЗУ на этих адресах должно становиться теневым без потери храни- мой информации; предусматривать варианты перевода всех ПЗУ в теневые адреса, динамического их включения и выключения, а также перемещения со- держимого ПЗУ в ОЗУ; это необходимо в случае, если внутри кодово- го сегмента содержится сегмент данных или другие сегменты. Если в одноплатной микроЭВМ предусмотрены указанные выше воз- можности манипулирования адресами ОЗУ и ПЗУ, то возможен пе- ренос любой программы с микроЭВМ оригинала на микроЭВМ поль- зователя. Но в том случае, когда программа-оригинал использует режим ’’тайм-аута” при обращении к ОЗУ, а микроЭВМ пользователя спроектирована с применением динамической памяти, возможны труд- ности, связанные с регенерацией. Нередко обойти эти трудности исклю- чительно сложно. Поясним это на примере. Предположим, что микроЭВМ оригинала имеет медленную память и при обращении к памяти последняя выстав- 26
ляет сигнал ”не готов”, а программы (особенно игровые или програм- мы, работающие с памятью на магнитных доменах) соответствующим образом учитывает это (берут ’’тайм-аут”). Смоделировать такую мед- ленную память участками быстрой динамической памяти сложно, по- скольку при снятии сигнала ”не готов” процессор уже не может полу- чить данные из памяти, если нет, например, специальных аппаратных средств обращения непосредственно к буферному устройству памяти. В качестве рекомендации можно попытаться по адресам, исполь- зующим ’’тайм-аут”, установить дополнительное статическое ОЗУ, на выходах которого данные сохраняются все время обращения. Но при этом схема регенерации должна предусматривать различие при обраще- нии к статическому и динамическому ОЗУ. Наибольшие трудности возникают при эмуляции обращений процес- сора в оригинале к внешним устройствам. Возможны следующие слу- чаи несовпадения: адресов порта, алгоритмов работы соответствующих контроллеров или частей схемы, временных характеристик устройств. Часто имеются все указанные несовпадения (наиболее трудный случай). В первом случае для эмуляции аппаратных средств оригинала в каче- стве дешифратора внешних устройств необходимо использовать ПЗУ, выполняющее переадресовку портов оригинала к портам пользователя. Как правило, алгоритмические различия в работе контроллеров, а также их аппаратные различия возникают одновременно с различием адресов портов ввода-вывода. В этих случаях необходимо дисассембли- ровать программу оригинала и по полученной распечатке или другим материалам тщательно составить алгоритм работы исследуемого конт- роллера, выделить команды к данному контроллеру, способ передачи данных, адреса памяти и внешних устройств, участвующих в обмене информацией, алгоритмы обработки данных. Чаще всего существует несколько портов, которые позволяют конт- роллеру обмениваться данными (информацией) с процессором (дан- ные могут содержать команды). При этом каждый порт имеет строго определенное назначение. Зная адрес ввода-вывода, по которому обра- щается процессор, и содержимое аккумулятора, можно определить, какую функцию в данном случае должен выполнить контроллер. Для реализации этих функций по адресам портов исследуемого контроллера следует организовать аппаратные прерывания отдельно по чтению и записи данных. Программа прерывания определяет адрес обращения и по содержимому аккумулятора определяет функцию, которую должен был выполнить контроллер оригинала. Эта функция эмулируется средствами пользователя и управление возвращается в программу оригинала. Программа оригинала считывает полученные Данные и продолжает работу до следующего обращения к контрол- леру. Затем данный цикл повторяется. Этот метод позволяет Эмулиро- вать сравнительно медленные контроллеры и внешние устройства. В противном случае не обойтись без расширения одноплатной мик- роЭВМ адаптерами внешних устройств, эквивалентных оригиналу.
ГЛАВА 2 МИКРОПРОЦЕССОРНЫЙ КОМПЛЕКТ К1810 2.1. Состав комплекта Микропроцессорный комплект БИС серии К1810 [8] является дальней- шим развитием микропроцессорного комплекта К580, получившего широкое распространение в нашей стране. БИС этого комплекта пол- ностью совместимы по электрическим и техническим параметрам с БИС К580; совместимость программного обеспечения снизу вверх обеспечивается либо применением микропроцессора КМ1810ВМ88, либо программной эмуляцией с помощью процессора КМ1810ВМ86. В комплект входят следующие БИС: микропроцессор КМ1810ВМ86; микропроцессор КМ1810ВМ88; арифметический сопроцессор КМ1810ВМ87; генератор тактовых импульсов КР1810ГФ84; систем- ный контроллер КР1810ВГ88; контроллер приоритетных прерыва- ний КР1810ВН59А; контроллер параллельного интерфейса К1810ВВ55А; контроллер последовательного интерфейса К1810ВВ51А; арбитр си- стемной шины К1810ВБ89; шинные формирователи К1810ВА86, К181 OBА87; регистры К1810ИР82, К1810ИР83. В данной главе приводятся краткие справочные данные микропро- цессора КМ1810ВМ86, сопроцессора КМ1810ВМ87, генератора такто- вых импульсов, системного контроллера, арбитра системной шины и контроллера приоритетных прерываний. Эти БИС наиболее полно де- монстрируют возможности данной серии и использованы авторами при разработке микроЭВМ. Работа БИС параллельного и последовательного интерфейса, формирователей и регистров не отличается от работы соответствующих БИС серии К580. 2.2. Микропроцессор КМ1810ВМ86 Микропроцессор КМ1810ВМ86 является 16-разрядным высокопроизво- дительным микропроцессором, сохраняющим определенную преемст- венность по отношению к микропроцессору КР580ИК80А. Микропро- цессор КМ1810ВМ86 имеет ряд особенностей, обусловивших повышение его быстродействия и функциональных возможностей, в частности: конвейерный принцип выполнения команд с предварительной выбор- кой следующих команд в специальные регистры очереди команд; совмещение адреса и данных в одном канале с разделением их по времени; перестраиваемую структуру, позволяющую реализовать микропро- цессорные системы различной сложности; большой набор регистров и расширенную по сравнению с микропро- цессором КР580ИК80А систему команд; емкость адресуемой памяти — 1 Мбайт, максимальное быстродей- 28
Рис. 2.1. Графическое обозначение микропро- цессора КМ1810ВМ86 ствие при тактовой частоте 5 МГц до 2,5 млн. операций типа ’’регистр-ре- гистр” в секунду. Графическое обозначение микропро- цессора приведено на рис. 2.1, назначе- ние выводов указано в табл. 2.1. ___ Минимальный режим (вывод MN/MX подключен к шине ’’питание”) исполь- зуется для построения однопроцессорной системы; при этом микропроцессор пол- ностью определяет сигналы управления системой. В максимальном режиме (вы- вод MN/MX подключен к шине ’’кор- пус”) возможно подключение арифмети- 19 17 18 21 22 23 33 30 31 40 1,20 > CLK CPU ADO ADI AD2 AD3 AD4 AD5 ADS AD7 AD8 AD9 AD10 AD11 AD12 AD13 AD14 AD15 AD16/S3 AD17/S4 AD18/S5 AD19/S6 BHE/S7 RD WR(LOCK) M/I0(S2) DT/R1S1) DEN (50) ALE(QSO) INTA(QS1) 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 39 38 37 36 35 34 32 29 28 27 26 25 24 NM1 INT RESET READY TEST MN/MX HLDA (ftQ/STO) HOLD (RO/GT1) I7CC GND ческого сопроцессора КМ1810ВМ87; сигналы управления в этом режи- ме кодируются и выдаются в виде сигналов состояния SO, SI, S2. Эти сигналы определяют следующие машинные циклы: S2 SI SO О 0 0 - распознавание прерывания О 0 1 - ввод из порта ввода-вывода О 1 0 - вывод в порт ввода-вывода 0 11— останов 1 0 0 выборка команды 1 0 1 - чтение из памяти 1 1 0 - запись в память 1 1 1 - пассивный цикл Во всех режимах микропроцессор выдает сигналы состояния S3-S7, из которых S7 в настоящее время не задействован; S6 всегда равен 0; S5 указывает текущее состояние признака разрешения прерывания S4 и S3 указывают используемый сегментный регистр: S4 S3 0 0 ES 0 1 S5 1 0 CS или не используется сегментный регистр 1 1 DS 29
Таблица 2.1. Назначение выводов микропроцессора КМ1810ВМ86 Номер вывода Обозначение Вход-выход, 3-е состояние Назначение 1, 20 GND — Общий 2-16, ADO-AD14, Вход-выход, Адрес в начале цикла и данные 39 AD15 3-е состояние во второй половине 17 NMI Вход Немаскируемый запрос преры- вания 18 INT ff Маскируемый запрос прерыва- ния 19 CLK tt Тактовые импульсы (5 МГц) 21 RESET н Начальная установка: очистка PSW. IP, DS, SS. ES и очереди команд, CS = FFFF, адрес = = FFFFO-, длительность не менее четырех тактов 22 READY н Готовность 23 TEST II Вход проверки для анализа с помощью команды WAIT 32 RD Выход, 3-е со- стояние Чтение из памяти или ввод из внешнего устройства 33 MN/MX Вход Минимальный (максимальный) режим 34 BHE/S7 Выход, 3-е со- стояние AD8-AD15 как байт данных в начале цикла, состояние - во второй половине 35-38 ADI 6 /S3 - AD19/S6 То же Старшие разряды адреса в нача- ле цикла, состояние - во второй половине 40 l-'CC - Напряжение источника питания +5 В Минимальный режим 24 INTA Выход, 3-е со- стояние Подтверждение прерывания (два сигнала низкого уровня в двух последовательных циклах) 25 ALE Выход Разрешение защелки адреса 26 DEN Выход, 3-е со- стояние Разрешение пересылки данных во второй половине цикла 27 DT/R То же Прием или передача данных 28 M/IO ft Обращение к памяти или внешне- му устройству 29 WR W Запись в память или внешнее устройство (в зависимости от сигнала М/Ю) 30 HLDA Выход Захват шин (установка выводов с тремя состояниями в 3-е со- стояние) 30
Таблица 2.1 (продолжение) Номер вывода Обозначение Вход-выход, 3-е состояние Назначение 31 HOLD Вход Запрос на захват шин ! Максимальный режим 24. 25 QS1-QS2 Выход Состояние очереди команд 26-28 SO-S2 Выход, 3-е со- стояние Состояние процессора в начале цикла 29 LOCK То же Запрет передачи шины другим за- датчикам, устанавлив аемый по команде LOCK, а также между сигналами INTA 30. 31 RQ/GTO, RQ/GTl Вход-выход Запрос и разрешение доступа к шине, сигнал RQ/GTO с выс- шим приоритетом Сигналы состояния SO-32 дешифруются контроллером КМ1810ВГ88 после снятия сигнала ALE. Каждый цикл работы процессора включает в себя по меньшей мере четыре такта. В случае, когда внешние схемы выдают сигнал ”не го- тов”, между тактами ТЗ и Т4 вводится состояние ожидания. Временная диаграмма работы процессора в режиме чтения-записи в память приве- дена на рис. 2.2. 20-разрядный адрес выдается центральным процессором во время такта Т1\ по срезу сигнала ALE адрес фиксируется в регистрах вре- менного хранения (например, в регистрах К1810ИР82). В начале такта Т2 шины AD0-AD15 могут принимать или передавать данные. В зависимости от команды микропроцессор может читать или за- писывать в память одно- или двухбайтные (слово) данные, при этом имеют значение четность адреса и разряды шины адреса данных, по ко- торым передаются данные. Возможны следующие ситуации, определяе- мые сигналами ВНЕ и АО: Операция ВНЕ АО Используемые разряды шины Чтение-запись слова 0 0 AD0-AD15 по четному адресу Чтение-запись байта 1 0 AD0-AD7 по четному адресу Чтение-запись байта 0 1 AD8-ADI5 по нечетному адресу Чтение-запись слова 0 1 AD8-AD15 (начало цикла: по нечетному адресу 1 0 выдается младший байт слова) XD0-AD7 (второй цикл: выдается старший байт слова) 31
1 Рис. 2.2. Временные диаграммы работы микропроцессора КМ181ОВМ86 в мак- симальном режиме Более подробно работа микропроцессора КМ1810ВМ86 в максималь- ном режиме рассмотрена в гл. 3. Для программиста доступны восемь 8-разрядных регистров (АН, AL, ВН, BL, CH, CL, DH, DL), которые могут объединяться в пары 16- разрядных регистров АХ, ВХ, СХ и DX, а также указатель стека SP, указатель базы ВР, индекс источника SI, индекс приемника D1 и четы- ре сегментных регистра (сегмента команд CS, сегмента данных DS, сегмента стека SS, дополнительного сегмента ES). Для управления по- током команд в микропроцессоре предусмотрен регистр адреса ко- манд IP, регистр признаков F с девятью разрядами признаков: направ- ления, разрешения прерывания, пошагового режима, знака, нуля, пере- полнения, вспомогательного переноса, четности и переноса. 20-разрядный адрес памяти устанавливается следующим образом: к содержимому одного из четырех сегментных 16-разрядных регистров прибавляется 16-разрядное смещение внутри сегмента, указанное в команде. Операнды (байты, слова или двойные слова) могут разме- щаться в регистрах, непосредственно в команде, в памяти. Для адреса- ции операндов используется регистровая, неявная регистровая, пря- мая, косвенная регистровая, стековая, строковая и табличная адре- сация. Система команд микропроцессора КМ1810ВМ86 включает в себя 135 команд. Вопросы программирования подробно изложены в [9]. 32 '
2.3. Арифметический сопроцессор КМ1810ВМ87 Арифметический сопроцессор КМ1810ВМ87 предназначен для работы с числами с плавающей запятой и вычисления наиболее распростра- ненных функций, таких, как логарифм, тангенс, возведение в сте- пень и др. Сопроцессор выполняет операции с целыми, двоично-деся- тичными и вещественными числами длиной от 2 до 10 байт. Эффектив- ность применения сопроцессора видна лишь из одного примера: извле- чение квадратного корня он выполняет за 36 мкс, тогда как с помощью программы микропроцессор КМ1810ВМ86 извлечет квадратный ко- рень за 20 мс [ 14]. Сопроцессор не имеет функций выборки команд, он может работать только вместе с процессором КМ1810ВМ86 как с основным процес- сором. Интерфейс между ними достигается простым соединением одно- именных выводов обоих процессоров, т. е. сопроцессор имеет те же выводы, что и основной процессор (см. рис. 2.1 и табл. 2.1). При этом выводы 17, 18, 29, 30 арифметического сопроцессора не используются. Вывод 23 (BUSY) подключается к выводу 23 (TEST) основного про- цессора; вывод 31 (RQ/GTO) к выводу RQ/GTO или RQ/GT1, вы- вод 32 (INT) к выводам схемы управления прерывания (в предполо- жении, что сопроцессор допускает прерывания). Пример подключения арифметического сопроцессора показан на рис. 3.2. Арифметический сопроцессор оперирует со следующими типами слов: Тип слова Длина, байт Диапазон представления Целое 2 -32768 +32768 Короткое целое 4 -2 109 Ч- + 2 • 109 Длинное целое 8 -9 • 1018 4- +9 • 1018 Упакованное двоично- десятичное 10 -1018 + 1 4- + Ю18 - 1 Короткое веществен- ное 4 ±1 • 10~38 -1 ±3 1038 Длинное вещественное 8 + 1О-308 -г ± 1О308 Временное вещест- венное 10 ±10-4932 ^±1049Э2 Последний значащий байт чисел размещается в памяти по младшему адресу. Первый разряд старшего байта чисел каждого типа является разрядом знака. Остальные семь разрядов старшего байта двоично-де- сятичного числа не используются. Порядок вещественных чисел распо- лагается вслед за знаком и имеет 8 разрядов для короткого, 11 - для Длинного и 15 — для временного вещественного числа; остальные раз- ряды используются под мантиссу. Таким образом, мантисса короткого вещественного числа имеет 23, длинного вещественного 52 и времен- ного вещественного 64 разряда. 2-6372 33
Представление вещественных чисел для работы сопроцессора имеет две особенности. Во-первых, к реальному порядку прибавляется сме- щение, равное 27, 210 и 214 соответственно для коротких, длинных и временных вещественных чисел. Это позволяет не хранить знак поряд- ка и сравнивать два нормализованных вещественных числа путем про- стого сравнения разрядов слева направо, как обычные целые числа. Во-вторых, нормализованное представление вещественного числа всегда имеет мантиссу, начинающуюся с 1, поэтому эта 1 опускается и не хра- нится в памяти (за исключением временных вещественных чисел). Таким образом, короткие вещественные числа можно представить в виде (_1)S . 2Е-127 . j ,м> где S — знак; Е — порядок со смещением; М — мантисса. Для иллюстра- ции приведем пример представления числа 20.5937510: 2О.593751О = 10100.100112 =1.010010011,24, поэтому S = 0, Е = 127 + 4 = 131 = 10000011 и М = 010010011, т. е. в па- мяти будет храниться число 0100000110100100110 . . ,0=41А4С00016. В таком формате порядок со смещением имеет диапазон 0 < Е < < 255, что соответствует указанному выше диапазону от ± 1СГ38 до + 3 • 1038. Порядок со .смещением, состоящий из всех 1, указывает неопреде- ленное представление числа. Порядок из всех 0 используется для пред- ставления +0 и —0 либо указывает ненормализованное число. Как пра- вило, ненормализованное число — это результат ’’потери порядка”, т. е. мантисса содержит незначащие нули даже когда порядок достиг максимального значения. Неопределенные числа — это результат пере- полнения. Длинные вещественные числа используются для вычислений с по- вышенной точностью, они имеют диапазон ± 10“ 308. Для сравнения укажем, что в ЕС ЭВМ диапазон представления вещественных чисел от + 10'78 до + 1076. Временные вещественные числа, имеющие 15 разрядов порядка и 64 разряда мантиссы, как правило, используются для вычислений внут- ри сопроцессора. Повышенная точность (19, 20 десятичных цифр) позво- ляет избежать переполнения или потери порядка при операциях над числами с плавающей запятой, особенно когда производится серия операций, при которых могут возникнуть промежуточные результаты, выходящие за заданный типом чисел диапазон. Общее представление о внутренних схемах сопроцессора КМ1810ВМ87 дает рис. 2.3 [15]. Схема управления включает в себя 6-байтную очередь 34
Рис. 2.3. Структурная схема арифметического сопроцессора КМ181ОВМ87 команд и блок слежения за последовательностью выполнения команд основным процессором. Если встречается команда ESC, то сопроцессор декодирует информацию об операции и выполняет ее. Все остальные команды сопроцессор игнорирует. Сопроцессор имеет восемь регистров данных, которые используются как стек с возможностью произвольного указания вершины стека с помощью разрядов 11 — 13 слова состояния (ST). Операция проталкива- ния в стек увеличивает содержимое ST на 1, а затем загружает операнд в новую вершину стека; при выталкивании сначала выбирается операнд, а затем уменьшается содержимое ST на 1. Возможно обращение непо- средственно к регистру с использованием индексации указателя стека; при этом считается, что стек образует цикл. Например, если содержимое ST равно 3, то ST (2) и ST (6) указывают соответственно регистр 5 и регистр -1. В регистрах все числа хранятся в формате временного веще- ственного числа. Регистр состояния содержит 16 разрядов. Ниже указано назначение каждого разряда: Разряд 0 - I: Разряд 1 - D: Разряд 2 - Z: ошибочная операция: переполнение стека, потеря порядка, неверный операнд, корень, из отрицательного числа и т. п.; операнд не нормализован; деление на 0; 35
Разряд З-О: переполнение; Разряд 4 - U: потеря порядка; Разряд 5 - Р: ошибка точности, т. е. результат не соответ- ствует формату приемника; Разряд 6 Разряд 7 - IR: резервный; получен запрос на прерывание; Разряды 8-10 и 14 -СО-СЗ: коды условий в командах сравнения и логического сравнения; Разряды 11-13 - ST: указатель вершины стека; Разряд 15 - В: текущая операция не завершена Сигналом RESET все разряды слова состояния, кроме кодов усло- вий, очищаются. Сопроцессор распознает шесть типов ошибок, но каждый тип ошибок может быть маскирован' с целью предотвращения прерывания путем установки в 1 соответствующего разряда маски регистра управления. Это маски IM (неверная операция), DM (ненормализованный операнд), ZM (деление на 0), ОМ (переполнение^, UM (потеря порядка), РМ (ошибка точности). Вместо прерывания по маскированной ошибке со- процессор выполнит некоторые стандартные действия, например в слу- чае ошибки по точности он выполнит округление результата. Запросы на прерывания обрабатываются сопроцессором в случае, если разряд маскирования (IEM) не установлен в 1. В противном случае все прерывания игнорируются, кроме случая выполнения команды WAIT. При обработке прерываний по ошибке процессор КМ1810ВМ86 может анализировать текущий указатель команд и указатель операнда сопроцессора путем загрузки их в память по специальной команде (см. далее примечание к табл. 2.2). Содержимое этих указателей позво- ляет идентифицировать адреса команды и операнда, вызвавших ошиб- ку. Заметим, что в указателе команд хранятся только четыре младших разряда команды, так как остальные всегда равны 11011 (код команды ESC). В регистре управления есть также разряды для контроля точности (PC), округления (RC) и бесконечности (IC). Они определяются сле- дующим образом: Разряд RC-00: точность 24 разряда; 01: резервируется; 10: точность 53 разряда; 11: точность 64 разряда; Разряд RC-00: округление до ближайшего целого; 01: округление до 10: округление до +°°; 11: округление усечением; Разряд IC-0: + 00 и - °° интерпретируются как простая беззнаковая бесконечность; 1: + °° и - °° интерпретируются как две бесконечности со знаком 36
После начальной установки сопроцессора эти разряды имеют следую- щие значения: PC = 11, RC = 00, IC = О, IEM = 0 и маски всех ошибок = = 1. Регистр признаков хранит также состояние всех регистров данных. Каждому регистру соответствуют два разряда, которые указывают, что содержимое регистра не нуль (00), нуль (01), особое значение, т. е. не число, ненормализованное число или бесконечность (10), или пусто (11). Арифметический сопроцессор КМ1810ВМ87 имеет 68 команд, кото- рые можно разбить на следующие группы: пересылки данных, арифмети- ческие, сравнения, функции, константы и команды управления про- цессором. В общем случае команда сопроцессора имеет вид: Режим непосредственной адресации [11011 001| [00 010 110| Младшая часть адреса Код команды ESC Внутренний код операции загрузки короткого вещественного числа в память Старшая часть адреса П + Дополнительный байт, зависящийот размещения опе- ранда Как правило, перед командой ESC (или группой команд ESC) ста- вится команда WAIT, заставляющая процессор КМ1810ВМ86 перейти в состояние ожидания до тех пор, пока на входе TEST не появится со- стояние логического 0, т. е. сопроцессор готов к работе. Если TEST уже имеет такое состояние, то сопроцессор дешифрирует команду и оба процессора будут работать параллельно. Однако команда WAIT должна также предшествовать командам процессора, которые будут обращаться к операндам в памяти, получае- мым в результате работы сопроцессора. Рассмотрим определения команд сопроцессора в языке ассембле- ра. Кодировка команд в 16-ричной системе счисления приведена в при- ложении 3. Большинство команд ассемблера позволяет пользователю специфи- цировать операнды более чем одним способом, явно или неявно. Аль- тернативные форматы операндов в таблице команд сопроцессора (табл. 2.2) разделены косой чертой. Другими словами, запись // SRC / / DST, SRC означает, что возможны три формата: 1) операнды источника и приемника заданы неявно; 2) операнд источника специфицирован, а операнд приемника задан неявно; 3) операнды источника и приемника заданы явно. 37
Таблица 2.2. Система команд арифметического сопроцессора КМ1810ВМ87 Название Мнемоническое обозначение и формат операнда Описание Загрузить веще- ственное число Загрузить це- лое число Загрузить дво- ично-десятич- ное число Запомнить ве- щественное число Запомнить це- лое число Запомнить деся- тичное число и вытолкнуть Запомнить ве- щественное чис- ло и вытолкнуть Запомнить це- лое число и вы- толкнуть Обмен регист- рами Сложить веще- ственные числа Сложить веще- ственные и вытолкнуть Сложить целые Команды пересылки данных FLD SRC Декремент ST, преобразо- , (SRC : ST(I) или веществен- вание во временное веще- * ное число в памяти) ственное и запись результа- . та в (ST) ( FILD SRC Декремент ST, преобразо- (SRC : операнд в памяти це- вание во временное веще- лого типа) ственное и запись резуль- тата в (ST) FBLD SRC Декремент ST, преобра- (SRC : упакованное десятич- зование во временное ве- ное число в памяти) шественное и запись ре- зультата в (ST) FST DST , Преобразование (ST) в (DST : ST(I) или операнде па- формат приемника и за- мята) пись результата в DST FIST DST Преобразование (ST) в (DST : операнд в памяти целого целое и запись результата типа) в DST • FBSTP DST Преобразование (ST) в ' (DST : упакованное десятичное упакованное десятичное, ' ' число в памяти) запись результата в DST ‘ и инкремент ST ' FSTPDST. Преобразование (ST) в (DST : ST(I) или операнд в па- формат приемника, запись мяти вещественного типа) , результата в DST и ннкре-' мент ST FISTP DST Преобразование (ST) в (DST : операнд в памяти це- целое, запись результата лого типа) в DST и инкремент ST FXCH // DST Обмен содержимым ре- (DST : ST(I) по умолчанию гистра приемника и (ST) ST(1)) Арифметические команды FADD // SRC / DST, SRC (DST) (DST) + (SRC) FADDPDST, SRC (DST : ST(I), SRC : ST) (ST(b) <- (ST(i)) + (ST), инкремент ST (ST) *- (ST) + (SRC) FIADD SRC (SRC : операнд в памяти целого типа) 38
Таблица 2.2 (продолжение) Название Мнемоническое обозначение и формат операнда Описание Вычесть веще- ственные FSUB // SRC / DST, SRC (DST)*-(DST) - (SRC) Вычесть веще- FSUBP DST, SRC (ST(i))*-(ST(i))- (st), ственные и вытолкнуть (DST : ST(I), SRC : ST) инкремент ST Вычесть веще- ственные FSUBR // SRC / DST, SRC (DST) *- (SRC) - (DST) Вычесть веще- FSUBRP DST, SRC (ST(i)) *- (st) - (ST(i)), ственные и вытолкнуть (DST : ST(I), SRC : ST) инкремент ST Вычесть целые FISUB SRC (SRC : операнд в памяти целого типа) (ST) *- (ST) - (SRC) Вычесть целые FISUBR SRC (SRC : операнд в памяти целого типа) (ST) *- (SRC) - (ST) Умножить веще- ственные FMUL // SRC / DST, SRC (DST) *- (DST) * (SRC) Умножить веще- FMULP DST, SRC (ST(i)) *- (ST(i) * (ST), ственные и вытолкнуть (DST : ST(I), SRC : ST) инкремент ST Умножить целые FIMUL SRC (SRC : операнд в памяти целого типа) (ST) *- (ST) * (SRC) Делить веще- ственные FDIV // SRC / DST, SRC (DST) *- (DST)/(SRC) Делить веще- FDIVP DST, SRC (ST(i)) *- (ST(i)/(ST), ственные и вытолкнуть (DST : ST(i), SRC : ST) инкремент ST Делить веще- ственные FDIVR//SRC / DST, SRC (DST) *- (SRC)/(DST) Делить веще- FDFVRP DST, SRC (ST(i)) *- (ST)/(ST(i)), ственные и вытолкнуть (DST : ST(l'), SRC : ST) инкремент ST Делить целые FIDFV SRC (ST)*- (ST)/(SRC) То же FIDIVR SRC (SRC : операнд в памяти целого типа) (ST) «- (SRC)/(ST) Абсолютное значение FABS (ST)*- 1 (ST)i Смена знака FCHS (ST) *- - (ST) 39
Таблица 2.2 (продолжение) Название Мнемоническое обозначение и формат операнда Описание Остаток от де- FPREM (ST) <- (ST)mod(ST(l)) ления Округлить до FRNDINT (ST) <- целая часть (ST) целого (режим округления оп- ределяется разрядами RC в слове управления) Масштабиро- FSCALE (ST) <- (ST) * 2П, где вать n - целая часть (ST{1)) Квадратный корень FSQRT (ST) +- V(ST) Выделить поря- FXTRACT (ST) <- порядок (ST), док и мантиссу декремент ST, (ST) мантисса (ST) Команды сравнения Сравнить веще- FCOM // SRC (ST)*- (SRC), установка ственные (SRC : ST(i) или операнд в кодов условий (приме- памяти вещественного типа, по умолчанию ST(1)) чание 1) Сравнить веще- FCOMP // SRC (ST) <- (SRC), установка ственные и (SRC : ST(I) или операнд в кодов условий (приме- вытолкнуть памяти вещественного типа по умолчанию ST(1)) чание 1), инкремент ST Сравнить веще- ГСОМРР (ST)^ (ST(1)), установка ственные и кодов условий (приме- вытолкнуть чание 1), увеличение ST дважды на 2 Сравнить целые FICOM SRC (ST)<- (SRC), установка (SRC : операнд в памяти целого кодов условий (приме- типа) чание 1) Сравнить целые FICOMP SRC (ST)<- (SRC), установка ' и вытолкнуть (SRC : операнд в памяти целого кодов условий (приме- г типа) чание 1) Сравнить верши- FTST (ST)<- 0 • 0, установка ну стека с нулем кодов условий (приме- чание 2) Проверить вер- FXAM Установка кодов условий / шину стека для (ST) (примечание 3) Примечание 1 Примечание 3 с 3 СО СЗ С2 С1 СО (ST) > (SRC) 0 0 + ненормализованное 0 0 0 0 (ST) < (SRC) 0 1 + не число 0 0 0 1 40
Таблица 2.2 (продолжение) Название Мнемоническое обозначение и формат операнда Описание (ST) = (SRC) 1 0 - ненормализованное 0 0 1 0 Не сравнива- 1 1 - не число 0 0 1 1 ются + нормализованное 0 1 0 0 + оо 0 1 0 1 Примечание 2 - нормализованное 0 1 1 0 сз со __ оо 0 1 1 1 (ST)> 0.0 0 0 + 0 1 0 0 0 (ST) < 0.0 0 1 пустое 1 0 0 1 (ST) = 0.0 1 0 - 0 1 0 1 0 Не сравнива- 1 1 пустое 1 0 1 1 ЮТСЯ + денормализованное 1 1 0 0 пустое 1 1 0 1 - денормализованное 1 1 1 0 пустое 1 1 1 1 Команды вычисления функций Вычислить F2XM1 (ST) «- 2(ST) - 1 2Х - 1 Арктангенс FPATAN ) (ST) tg-1((ST(l) )/(ST)), инкремент ST Тангенс FPTAN (ST) числитель tg((ST)), декремент ST, (ST) <- знаменатель tg ((ST)) Вычислить FYL2X (ST)*- (ST(l))*log2((ST)), Y * log2X инкремент ST Вычислить FYL2XP1 (ST) <-(ST(1)) * log2((ST) + Y* log2(X + 1) + 1), инкремент ST Команды загрузки констант Загрузить 0 FLDZ Декремент ST, (ST) *- 0.0 Загрузить 1 FLD1 Декремент ST, (ST) «- 1.0 Загрузить 7Г FLDPi Декремент ST, (ST) <- 7Г Загрузить log2e FLDL2E Декремент ST, (ST) «- log2e Загрузить FLDL2T Декремент ST, (ST) *- log210 <- log210 Загрузить FLDLG2 Декремент ST, (ST) <- 1оёю2 «- log102 Загрузить FLDLN2 Декремент st, (ST)«- loge2 . «- loge2 41
Таблица 2.2 (продолжение) Название Мнемоническое обозначение и формат операнда Описание Инициали- Команды управления процессором FINIT / FNINIT Слово управления =03FF, ре- зация сопро- цессора Запретить FDISI / FNDISI гистр признаков-пусто, ST =0, признаки ошибок, прерывания =0 Маска прерывания = 1 прерывание Разрешить FENI / FNENI Маска прерывания = 0 прерывание Очистить FCLEX / FNCLEX Признаки В, IR, Р, U, О, Z, признаки ошибок Инкремент ST FINCSTP D, I = 0 ST «- ST + 1 Декре- FDECSTP ST-*- ST - 1 мент ST Запомнить FSTSW / FNSTSW DST (DST) (регистр состоя- регистр (DST : операнд в памяти, ния) состояния 2 байт) Запомнить FSTCW / FNSTCW DST (DST) (регистр управ- регистр уп- (DST : операнд в памяти, ления) равнения 2 байт) Загрузить FLDCW SRC (Регистр управления) \ регистр уп- (SRC : операнд в памяти, +- (SRC) равнения 2 байт) Запомнить FSTENV / FNSTENV DST См. примечание 4; призна- состояние (DST : операнд в памяти, ки ошибок устанавливают- < Загрузить 14 байт) FLDENV SRC ся в 1 Восстановление содержи- 1 состояние (SRC : операнд в памяти, мого всех регистров и ука- ? Сохранить 14 байт) FSAVE / FNSAVE DST зателей Сохранить регистр управ- ' состояние (DST : операнд в памяти, ления, регистр состояния, Загрузить 94 байт) FRSTOR SRC указатель команды, указа- Л тель операнда, стен Загрузить регистр управ- J состояние (SRC : операнд в памяти, ления, регистр состояния, Освободить 94 байт) FFREE DST указатель команд, указа- : тель операнда, стен Очистить признак ST(I) регистр (DST : ST(i)) (ST) -*- (ST) Нет опера- ции FNOP
Таблица 2.2 (продолжение) Примечание 4. Команда FSTENV загружает значения внутренних регистров сопроцессора в память по адресу А в следующем порядке: А + 0: слово управления; А + 2: слово состояния; А+4: слово признаков; А + 6: указатель адреса А0-А15 команды; А + 8: указатель адреса А16-А19 команды; 0; код команды (разряды 0-10); А + 10: указатель адреса А0-А15 операнда; А + 12: указатель адреса А16-А19 операнда; 0 до конца слова. Операндом может быть регистр в стеке или ячейка памяти. Для оператора-регистра ST указывает на вершину стека, a ST(i) указыва- ет i-й регистр за вершиной стека. Операнды из памяти могут адресо- ваться одним из способов, указанных при описании процессора КМ1810ВМ86. Группа команд пересылки данных включает в себя девять команд. Эти команды преобразуют данные источника в формат временного ве- щественного числа и проталкивают результат в стек, выталкивают чис- ла из стека, преобразуют их в указанный вид и пересылают в приемник. В этой же группе находятся команды выталкивания из стека и обмена содержимым регистра и вершины стека. В зависимости от типа дан- ных меняется регистр признаков. Сопроцессор имеет разнообразные команды для выполнения ариф- метических операций над числами различного формата. Результаты всегда запоминаются в вершине стека или в указанном регистре. Опе- рандом-источником должна быть вершина стека, в которую предвари- тельно должны быть помещены данные с преобразованием в формат временного вещественного числа или в которой находится результат предыдущей операции. Дополнительно к основным арифметическим операциям сопроцес- сор вычисляет квадратный корень, масштабирует числа ,с использова- нием степени 2, округляет вещественные числа до целых, выполняет Деление по модулю, преобразует целые числа в вещественные и вычис- ляет их абсолютные значения. Эти команды работают с одним или двумя верхними регистрами стека, и результат помещают в вершину стека. Семь команд сравнения сравнивают вершину стека с другим опе- рандом, которым может быть регистр или ячейка памяти. Вершина стека также может сравниваться с нулем, путем логического сравнения (без формирования результата) могут устанавливаться признаки чис- ла. Коды полученных условий могут быть переданы в основной про- цессор для организации ветвления с помощью команд управления. 43
Пять команд-функций вычисляют тангенс (0 < в < тг/4), арктан- । енс (Y/Х) (О < Y < X < °°), 2х - 1 (О < X < 0.5), Y * log2X и Y * * log2 (X + 1). Эти команды в качестве операндов используют ST или ST(1), а результат проталкивают в стек. Все прочие тригонометриче- ские, обратные тригонометрические, гиперболические, обратные гипер- болические, логарифмические и экспоненциальные функции могут быть заданы с помощью указанных пяти функций. Например, вычисле- ние натурального логарифма X эквивалентно вычислению по фор- муле (l/log2e)log2X. Для вычисления тригонометрических функций используется един- ственная команда FPTAN с операндом в в диапазоне от 0 до тг/4, на- ходящемся в вершине стека. Результат — отношение Y/Х, причем Y помещается на место в, а X проталкивается в стек. Функции синуса легко представить через функцию тангенса следующим образом: sin в = tgfl/V 1 + tg20. Если 0 < в < тг/4, то функцию синуса можно вычислить с помощью следующей формулы: Y/(VX2 + Y2). Если в не в этом диапазоне, то формулу легко привести к соответ- ствующему виду. Для работы с константами +1, 0, тт, е, log2 10, log102 и loge2 сопроцес- сор имеет соответствующие команды. Эти константы формируются в формате временного веществённого числа. Последняя группа команд обеспечивает работу с регистрами управ- ления и состояния, сохраняет или восстанавливает часть состояния процессора. Как правило, эти команды используют в подпрограммах обслуживания прерываний, для переключения режимов работы мик- роЭВМ. Команда инициализации используется перед началом работы с сопро- цессором. Ряд команд загрузки регистров позволяет динамически изменять разряды управления. Обычно необходимы три действия: 1) сохранение только регистра состояния (FSTSW), используемое, когда основному процессору необходимо проверить коды условия, установленные после команд сравнения; 2) сохранение регистров управления, состояния и признаков, а также указателей команд и операндов (FSTENV), используемое в подпрограммах обработки ошибок вычислений; 3) сохранение состояния процессора и стека регистров (FSAVE), используемое в подпрограммах обслуживания перерываний и для переключений режимов работы микроЭВМ. 44
Таблица 2.3. Сравнение быстродействия при выполнении арифметических операций иад вещественными числами с помощью сопроцессора КМ1810ВМ87 и программы в микропроцессоре КМ1810ВМ86 Время выполнения, мкс Операция над вещественными ------------------------------ числами в сопроцессоре КМ1810ВМ87 в микропроцессоре КМ1810ВМ86 Сложение, вычитание 17 1600 Умножение (16 разрядов) 19 1600 Умножение (32 разряда) 27 2100 Деление 39 3200 Сравнение 9 1300 Загрузка (двойная точность) 10 1700 Запись (двойная точность) 21 1200 Квадратный корень 36 19 600 Тангенс 90 13 000 Возведение в степень 100 17 100 Запомненные значения регистров состояния и стека могут быть восстановлены с помощью команд FLDENV и FRSTOR, причем перед загрузкой регистра состояния после обработки ошибок вычислений необходимо установить маски ошибок в 1, иначе сразу же возникнет прерывание по той же ошибке. Эффективность применения арифметического сопроцессора КМ1810ВМ87 видна из табл. 2.3, в которой сравниваются времена вы- полнения основных арифметических операций над вещественными чис- лами [14]. 2.4. Генератор тактовых импульсов КР1810ГФ84 БИС КР1810ГФ84 служит генератором тактовых импульсов для мик- ропроцессоров КМ1810ВМ86 и КМ1810ВМ87, а также для периферий- ных БИС микропроцессорной системы. Графическое обозначение БИС показано далее на рис. 3.2. В табл. 2.4 приведено назначение ее вы- водов. Таблица 2.4. Назначение выводов БИС КР1810ГФ84 Номер вывода Обозначение Вход-выход Назначение I CSYNC Вход Вход синхронизации тактовой частоты для нескольких БИС 2 PCLK Выход Тактовые импульсы ТТЛ уровня для периферийных устройств 45
Таблица 2.4 (продолжение) , Обозначение Вход-выход Назначение вывода 3, 7 AEN1, AEN2 If Сигналы доступа к адресу, синхронизи- рованные по отношению к сигналам готовности RDY1, RDY2 соответст- венно в мультипроцессорных системах 4, 6 RDY1, RDY2 Вход Сигналы готовности от двух систем с интерфейсом И-41 5 READY Выход Синхронизированный сигнал готовности RD Y 8 CLK Вход Выход тактовых импульсов 9 GND - Общий 10 RESET Выход Синхронизированный сигнал начальной установки И RES Вход Вход сигнала начальной установки 12 DCS Выход Выход генератора частоты 13 F/C Вход Выбор источника тактовой частоты; при логическом 0 источник - кварцевый резонатор, при логической 1 - внешний от EFI; 14 EFI It Вход внешнего источника частоты 15 TNK It Для кристалла с обертоном 16, 17 X2, XI fl Входы от кварцевого резонатора 18 vcc It Источник питания + 5 В Генератор выдает тактовые импульсы с частотой, равной 33% ча- стоты кварцевого резонатора, подключенного к выводам XI, Х2. Для работы в системах с многими задатчиками предусмотрены входы го- товности RDY1 и RDY2 и сигналы разрешения доступа к адресу AEN1, AEN2. В системе с одним задатчиком выводы AEN должны быть под- соединены к шине ’’корпус”. 2.5. Системный контроллер КР1810ВГ88 Системный контроллер КР1810ВГ88 предназначен для формирования шины управления в микропроцессорных системах с микропроцессо- ром КМ1810ВМ86 в максимальном режиме. Графическое обозначение БИС показано на рис. 3.2. В табл. 2.5 приведено назначение ее вы- водов . Системный контроллер дешифрирует сигналы состояния микро- процессора и выдает сигналы управления MRDC, AMWC, MWTC, IOWC, AIOWC, IORC, INTA. 46
Таблица^.5. Назначение выводов системного контроллера КР1810ВК88 Номер вывода Обозначение Вход-выход Назначение 1 io\ \ Вход Выбор режима: логический 0 - режим системной шины, логическая 1 - режим шины ввода-вывода 2 CLK \ н Вход тактовых импульсов 3, 18, 19 SI, S2\SO It Сигналы состояния микропроцессора 4 DT/R Выход Направление передачи данных 5 ALE II Сигнал стробирования адреса 6 AEN Вход Разрешение вывода адреса в режиме си- стемной шины 7 MRDC Выход Чтение из памяти 8 AMWC It Опережающий сигнал записи в память 9 MWTC II Запись в память 10 GND — Общий II IOWC п Вывод в устройство ввода-вывода 12 AIOWC II Опережающий сигнал вывода 13 IORC If Ввод из устройства ввода-вывода 14 INTA It Подтверждение прерывания 15 CEN Вход Разрешение вывода сигналов управления 16 DEN It Разрешение передачи данных 17 MCE/PDEN Выход Разрешение каскадирования/разрешение передачи периферийных данных 20 vcc - Напряжение источника питания + 5 В Режим системной шины (сигнал ЮВ подключен к шине ’’корпус”) используется в многопроцессорных системах с арбитром системной шины. Для управления шиной используются сигналы DEN и DT/R. Режим шины ввода-вывода (сигнал ЮВ подключен к шине ’’пита- ние”) используется в системах без арбитра, при этом сигналы управ- ления постоянно находятся в активном состоянии. 2.6. Арбитр системной шины К1810ВБ89 При работе в мультипроцессорных системах с несколькими процес- сорами-задатчиками и(или) общими для всех процессоров системной памятью и устройствами ввода-вывода необходима синхронизация работы процессоров-задатчиков. Эту функцию выполняет арбитр си- стемной шины К1810ВБ89. Графическое обозначение арбитра показа- но на рис. 2.4. В табл. 2.6 приведено назначение его выводов. В зависимости от наличия на плате процессора-задатчика локальной памяти и (или) устройств ввода-вывода (локальной, или резидентной 47
sjr 57 52 15 5 IN IT BCLK BERN LOCK CLK BREQ BPRO BUSY CBRQ 2_ 3 RESB ANYRQSI . TOB SYSB/RESB Puc. 2.4. Графическое обозначение ар- битра системной шины К1810ВБ89 шины) арбитр может работать в че- тырех режимах. Эти режимы опре- деляются состоянием выводов RESB и ЮВ. Режим работы с периферийной шиной ввода-вывода (RESB = 0; JOB = 0) обеспечивает доступ к си- стемной памяти по командам обра- щения к памяти и устройствам вво- да-вывода на плате по командам ввода-вывода. В случае отсутствия памяти и устройств ввода-вывода на плате ис- пользуется режим работы с системной шиной (RESB = 0, ЮВ = 1). В этом случае системный контроллер выдает команды управления не- посредственно на системную шину при разрешении доступа к систем- ным ресурсам. Если на плате процессора-задатчика есть локальная память и устройства ввода-вывода и процессор дополнительно может обращать- ся к системной памяти, тогда устанавливается режим работы арбитра с периферийной шиной ввода-вывода и резидентной шиной (RESB = = 1, ЮВ= 0). В этом режиме доступ к системной памяти осуществля- ется при высоком уровне сигнала SYSB/RESB\ к локальной — при низком. Этот сигнал может, например, устанавливаться с помощью дешифратора адресов памяти. _______ Последний режим (RESB=i, ЮВ = \) используется для организа- ции работы микроЭВМ, имеющей локальную память и устройства вво- да-вывода на плате, в составе мультипроцессорной системы с систем- ной памятью и общими для всех процессоров устройствами ввода-вы- вода. Конфигурация такой микроЭВМ показана на рис. 2.5. Предусмотрено три способа определения приоритетов доступа про- цессоров-задатчиков к системной шине: последовательный, параллель- ный и циклический. При последовательном приоритете выход BPR0 арбитра с более высоким приоритетом соединяется со входом BPRN арбитра с низким приоритетом. Это наиболее простой способ подклю- чения арбитров. Однако при этом возникает задержка при передаче шины последнему по приоритету арбитру. В частности, при системной частоте 10 МГц рекомендуется подключение только трех арбитров. Параллельное подключение арбитров организуется с помощью спе- циальной схемы приоритетного шифратора приоритетов, расположен- ного на плате одного из процессоров-задатчиков. Подробно эта схе- ма рассмотрена в гл. 4. Запросы на системную шину BREQ от арбит- ров поступают на вход схемы определения приоритета,арбитр с высшим 48
Таблица Хб. Назначение выводов БИС К1810ВБ89 Номер вывода Обозначение Вход-выход Назначение 1, 18, 19 82, Sq.'sT Вход Сигналы состояния микропроцессора 2 10 в ft Выбор режима работы с периферийной шиной ввода-вывода 3 SYSB/RESB н Разрешение доступа к системной шине в режиме с системной и резидентной шинами 4 RESB it Выбор режима работы с резидентной шиной 5 BCLK if Сигналы синхронизации системной шины 6 INIT 1! Сигнал начальной установки 7 BREQ H Вход запроса системной шины при па- раллельном илн циклическом приори- тетах 8 BPRO Выход Выход приоритетного разрешения до- ступа к шине при последовательном арбитраже 9 BPRN Вход Вход сигнала запроса системной шины при последовательном арбитраже 10 GND - Общий 11 BUSY Вход-выход Сигнал ’’занято”. Выход с открытым коллектором (выводы BUSY всех арбитров объединены) 12 CBRQ То же Сигнал общего запроса шины. Выход с открытым коллектором (выводы CBRQ всех арбитров объединены) 13 AEN Выход Разрешение доступа к системной шине для шинных буферных устройств (за- щелки адреса, контроллера, тактового генератора) 14 ANYRQST Вход Разрешение освобождения системной шины при любом запросе. В сочетании с низким уровнем сигнала CBRQ арбитр освобождает шину после каждого цикла передачи 15 CRQLCK ft Запрет освобождения системной шины при запросе через вход CBRQ 16 LOCK ft Запрет освобождения системной шины 17 CLK It Тактовые сигналы синхронизации 20 VCC ft Источник питания + 5 В
ХАСК Рис. 2.5. Конфигурация микроЭВМ с системной и резидентной шинами приоритетом получает разрешение на доступ к системной шине по вхо- ду BPRN. Арбитраж с циклическими приоритетами требует более сложной схемы определения приоритетов, которая присваивает арбитру, только что имевшему доступ к системной шине, самый низкий приоритет. Это обеспечивает более равномерное предоставление системной шины задатчикам в мультипроцессорной системе. 2.7. Контроллер приоритетных прерываний К1810ВН59А Обработку прерываний от внешних устройств в микропроцессорных системах и микроЭВМ, построенных на базе микропроцессорного комп- лекта БИС серии К1810, выполняет контроллер приоритетных преры- ваний К1810ВН59А. Число и наименования выводов этого контроллера и контроллера прерываний КР580ВН59 полностью совпадают [10]. Совпадает также и назначение всех выводов, за исключением вывода 16 50
(SP/EN), который в дополнение к функции определения режима ве- дущий/ведомый в ряде случаев может использоваться для отключения буферов шины данных на время передачи данных из контроллера в микропроцессор. Для управления режимами работы в контроллере предусмотрены четыре (а не три, как в его предшественнике КР580ВН59) регистра, в которые записываются команды инициализации контроллера, и три регистра команд управления. Прерывания, поступающие на входы IR0-IR7, фиксируются в регистре запросов прерывания с учетом со- стояния регистра маскирования прерываний. После обработки в схе- ме определения приоритета прерывание с высшим приоритетом фик- сируется в регистре обслуживания прерывания. Если разряд регистра маскирования установлен в 1, то соответствующий этому разряду за- прос на прерывание не принимается во внимание. Если микропроцессор установил признак разрешения прерывания в 1, то после завершения текущей команды он выдает два импульса INTA. В момент поступления первого импульса регистр запросов от- ключается и поступающие запросы до окончания второго импульса INTA им игнорируются. Во время второго импульса на шину данных выдается текущее состояние второго слова инициализации, разря- ды 3—7 которого содержат адрес All—А15 вектора прерываний, а разряды 0—2 — уровень запроса прерывания. Полученный адрес ис- пользуется микропроцессором для перехода к подпрограмме обслу- живания данного прерывания. Если при этом в слове инициализа- ции 4 установлен признак автоматического конца прерывания, то соответствующий разряд регистра обслуживания прерывания очи- щается. В противном случае этот разряд не очищается до засылки команды конца прерывания (EOI) в регистр управления 2. Разряды первого слова инициализации имеют следующие значения: разряды 5—7 используются только для микропроцессора К580ИК80А и определяют младшую часть адреса подпрограммы прерываний; разряд 4 всегда равен 1, он отличает слово инициализации от слова управления, которое также передается по четному адресу (АО равен 0); разряд 3 определяет запуск по фронту (0) или по уровню (1); за- пуск по фронту очищает разряд прерывания в регистре обслуживания в момент поступления прерывания в регистр запросов; разряд 2 используется только для К580ИК80А и определяет сдвиг между адресами подпрограмм обработки прерываний; разряд 1 определяет каскадирование контроллеров (если 0); разряд 0 равен 1, если при инициализации используется четвертое слово инициализации. Как было указано выше, второе слово инициализации содержит стар- шие адреса массива векторов прерываний. Третье слово инициализации используется для ведомых контроллеров, три последних разряда содер- жат номер ведомого контроллера. 51
Разряды четвертого слова инициализации определяются следующим образом: разряды 5—7 всегда равны 0; разряд 4 устанавливается в 1, если используется специальный режим полного вложения прерываний, который будет рассмотрен ниже; разряд 3 определяет наличие буферов шины данных и одновременно способ использования вывода SP/EN. При наличии 1 в этом разряде этот вывод отключает буфера на время передачи данных из контроле- ра в микропроцессор; разряд 2 игнорируется, если разряд 3 равен 0; при одном контролле- ре в системе этот разряд устанавливается в 1; разряд 1 — автоматический конец прерывания (AEOI); прерыва- ние сбрасывается по концу второго импульса INTA. Разряд 0 определяет тип используемого микропроцессора: 1 — для КМ1810ВМ86 и 0 - для КР580ИК80А. Три слова управления засылаются в контроллер из подпрограмм обработки прерываний: первое используется для маскирования преры- ваний, второе и третье управляют режимом работы контроллера и обра- боткой концов прерываний. Способы использования и режимы работы контроллера аналогичны режимам контроллера КР580ВН59 и в данном параграфе не рассматриваются. Полный перечень команд для программи- рования контроллера приведен в табл. 2.7. Режим полного вложения прерываний используется при наличии в системе нескольких контроллеров. Обычно полное вложение прерыва- ний указывается вместе с режимом полностью установленных приори- тетов и в отсутствие автоматического конца прерываний. В этом случае ведущий контроллер допускает прерывание по немаскированному за- просу, даже если соответствующий разряд регистра обслуживания пре- рывания уже установлен в 1. Другими словами, если запрос с наивыс- шим приоритетом поступает в ведомый контроллер в то время, когда один или несколько запросов этого контроллера уже обрабатываются, то этот запрос также вызовет прерывание на выходе INT. В этом режиме могут понадобиться две команды EOI: первая неспецифичная команда EOI посылается ведомому контроллеру, вызвавшему преры- вание, затем проверяется состояние регистра обслуживания прерыва- ний этого контроллера. И только в случае, если все разряды этого ре- гистра равны 0, вторая неспецифичная команда EOI посылается ве- дущему контроллеру. Если адрес контроллера равен 60Н, то для инициализации одного контроллера в системе без ведомых контроллеров можно использо- вать следующую последовательность команд: MOV АН, 13Н OUT 60Н, АН MOV АН, 18Н OUT 61Н, АН MOV АН, 0DH OUT 61Н, АН 52
Таблица 2.7. Перечень команд программируемого контроллера прерываний КР1810ВН59А Мнемоническое Команда Описание АО 7 6 5 4 э 2 1 0 Первый байт инициализации (не требуется ICW4y 1CW1 А 0 А7 А6 А5 1 0 1 1 0 Формат 4, нет ведомых, запуск по фронту ICW1 В 0 А7 А6 А5 1 1 1 1 0 Формат 4, нет ведомых, запуск по уровню ICW1 С 0 А7 А6 А5 1 0 1 0 0 Формат 4, есть ведомые, запуск по фронту 1CW1 D 0 А7 А6 А5 1 1 1 0 0 Формат 8, нет ведомых, запуск по фронту 1CWI Е 0 А7 А6 0 1 0 0 1 0 То же 1CW1 I’ 0 А7 А6 0 1 1 0 0 0 Формат 8, нет ведомых, запуск по уровню 1CW1 G 0 А7 А6 0 1 0 0 0 0 Формат 8, есть ведомые, запуск по фронту ICW1 В 0 А7 А6 0 Первый байт 1 1 инициализации 0 (требуется 0 ICW4J 0 Формат 8, есть ведомые, запуск по уровню ICW1 I 0 А7 А6 А5 1 0 1 1 1 Формат 4, нет ведомых, запуск по фронту ICW1 J 0 А7 А6 А5 1 1 1 1 1 Формат 4, нет ведомых, запуск по уровню ICW1 К 0 А7 А6 А5 1 0 1 0 1 Формат 4, есть ведомые, запуск по фронту ICW1 L 0 А7 А6 А5 1 1 1 0 1 То же 1CW1 М 0 А7 А6 0 1 0 0 1 1 Формат 8, нет ведомых, запуск по фронту
Таблица 2.7 (продолжение) Мнемоническое Команда Описание АО 7 6 5 4 3 2 1 О ICW1 N 0 А7 А6 0 1 1 0 0 1 Формат 8, есть ведомые, запуск по уровню ICW1 ICW2 О 0 1 А7 А15 А6 А14 0 10 0 Второй байт инициализации А13 А12 AU А19 Третий байт инициализации 0 А9 1 ' А8 Формат 8, есть ведомые, запуск по фронту ICW3 М 1 S7 S6 S5 S4 S3 S2 S1 S0 Для ведущего ICW3 S 1 0 0 0 0 0 S2 S1 Четвертый байт инициализации SO Для ведомого ICW4 А 1 0 0 0 0 0 0 0 0 Не используется ICW4 В 1 0 0 0 0 0 0 0 1 Нет буферов, неавтоматический EOI ICW4 С 1 0 0 0 0 0 0 1 0 Нет буферов, автоматический EOI, только К580 ICW4 D 1 0 0 0 0 0 0 1 1 Нет буферов, автоматический EOI ICW4 Е 1 0 0 0 0 0 1 0 0 Не используется ICW4 F 1 0 0 0 0 0 1 0 1 Нет буферов, неавтоматический EOI ICW4 G 1 0 0 0 0 0 1 1 0 Нет буферов, автоматический EOI, только К580 ICW4 Н 1 0 0 0 0 0 1 1 1 Нет буферов, автоматический EOI .... . ’
ICW4 ICW4 ICW4 ICW4 ICW4 ICW4 ICW4 ICW4 ICW4 1 1000010 J 1 0 0 0 0 1 О К 1 О О О О 1 О L 1 О О О О 1 О Ml OOOO11 N 1 О О О О 1 1 0 1 0 0 0 0 1 1 Р 1 О О 0 0 1 1 NA 1 О О О 1 О О ICW4 ICW4 ICW4 ICW4 ICW4 ICW4 ICW4 ICW4 ICW4 ICW4 ICW4 ICW4 NB 1 О О О 1 О О NC 1 О О О 1 О О ND 1 О О О 1 О О NE 1 0 0 0 1 0 1 NF 1 0001 0 1 NG 1 0 0 0 1 0 1 NH 1 О О О 1 О 1 NI 1 О О О 1 10 NJ 1 О О О 1 1 О NK 1 О О О 1 1 О NL 1 О О О 1 1 О NM 1 000 1 1 1 NN 1 О О О 1 1 1
О О Есть буфера, ведомый, неавтома- тический EOI, только К580 О 1 Есть буфера, ведомый, неавтома- тический EOI 1 0 Есть буфера, ведомый, автомати- ческий EOI, только К580 1 1 Есть буфера, ведомый, автома- тический EOI О 0 Есть буфера, ведущий, неавтома- тический EOI, только К580 О 1 Есть буфера, ведущий, неавтома- тический EOI 1 0 Есть буфера, ведущий, автомати- ческий EOI, только К580 1 1 Есть буфера, ведущий, автомати- ческий EOI О 0 Режим полного вложения преры- ваний, нет буферов, неавтомати- ческий EOI О 1 Аналогичны командам ICW4 В - 1 Of ICW4 D с добавлением режима 1 1 полного вложения прерываний О 0 Аналогична команде ICW4 Е 0 1 1 ' 0 1 1 0 0 0 1 1 0 Аналогичны командам ICW4 Г - 1 1 ICW4 Р с добавлением режима 0 0 полного вложения буферов 0 1 .
Таблица 2.7 (продолжение) Мнемоническое Команда — Описание АО 7 6 5 4 3 2 1 0 ICW4 NO 1 0 0 0 1 1 1 1 0 1CW4 NP 1 0 0 0 1 1 1 1 1 Команды управления OCW1 1 М7 Мб М5 М4 М3 М2 Ml МО Загрузка регистра маски, чтение регистра маски OCW2 Е 0 0 0 1 0 0 0 0 0 Неспецифичный EOI OCW2 SE 0 0 1 1 0 0 L2 L1 L0 Специфичный ЕО1, сброс разряда регистра прерывания, указанного в LO, LI, L2 OCW2 RE 0 1 0 I 0 0 0 0 0 ЕО1 с автоматическим сдвигом (режим А) OCW2 RSE 0 1 1 1 0 0 L2 L1 L0 EOI со специфическим сдвигом (режим В) OCW2 R 0 1 0 0 0 0 0 0 0 Установка сдвига OCW2 CR 0 0 0 0 0 0 0 0 0 Сброс сдвига OCW2 RS 0 1 1 0 0 0 L2 L1 L0 Установка низшего приоритета по LO, LI, L2 независимо от EOI (режим В) OCW3 Р 0 0 0 0 0 1 1 0 0 Установка режима опроса OCW3 RIS 0 0 0 0 0 1 0 1 1 Чтение регистра прерывания OCW3 RR 0 0 0 0 0 1 0 1 0 Чтение регистра запросов на прерывание 0 0 1 1 0 1 0 0 0 Установка режима маскирования о G 1 0 0 1 0 0 0 Сброс режима маскирования
Первые две команды указывают, что контроллер один, прерывания будут запускаться по фронту и будет выводиться слово инициализа- ции 4. Следующие две команды информируют о том, что адреса А11- Д15 равны 00011. Третье слово для ведомых не выводится, поэтому последние две команды свидетельствуют о том, что режим полного вложения не используется, вывод SP/EN будет отключать буфера, ис- пользуется команда EOI, и, наконец, контроллер установлен в мик- роЭВМ на базе процессора КМ1810ВМ86. Как указано выше, контроллер выдает в микропроцессор только адрес вектора прерываний и уровень прерывания без команды CALL в отличие от контроллера КР580ВН59. Переход к соответствующей подпрограмме обслуживания прерывания выполняет микропроцессор; при этом в стеке сохраняются текущий адрес, сегмент команд и регистр фла!жков. Весь цикл прерывания занимает 51 такт. Вектор прерываний может располагаться в любом месте нулевой страницы памяти (адре- са 0000н — FFFFH). Помимо аппаратных прерываний, микропроцессор К1810ВМ86 позво- ляет программистам работать с другими типами прерываний: немаски- руемым по сигналу на входе NMI,b случаях появления ошибок деле- ния и переполнения при пошаговом режиме и программными прерыва- ниями по командам INTO и INT. Адреса соответствующих подпрограмм указаны в табл. 2.8. Работа с программными прерываниями хорошо знакома программис- там, использующим команды RST микропроцессора КР580ИК80А. Таблица 2.8. Адреса и типы прерываний Группа прерываний Адрес Указатель и тип прерывания Указатели, доступные пользе- 3FC 255 вателю (224 указателя) 3F8 254 L по команде INT 080 32 Зарезервированные указа- 07С 31 тели прерываний (27 указа- 078 30 телей) 014 5 Закрепленные указатели пре- 010 4 - переполнение рываний (5 указателей) ООС 3 - по команде INTO 008 2 - немаскируемое прерывание 004 1 - пошаговый режим 000 0 - ошибка деления 57
При этом число возможных входов в подпрограммы по команде INT (аналогичной RST) увеличено до 255. Некоторых пояснений требует прерывание при пошаговом режиме работы, которое чрезвычайно удоб- но при отладке программ. Микропроцессор КР1810ВМ86 генерирует прерывание типа 1 после выполнения каждой команды, если установлен флажок пошагового режима TF. Однако специальной команды для установки этого флажка в наборе команд микропроцессора нет. Для входа в режим отладки удобно использовать любое программное прерывание по команде INT. После выполнения этой команды в стеке будет запомнено содержимое регистра флажков, которое несложно модифицировать, записав 1 в раз- ряд флажка TF. Команда возврата из прерывания RET возвращает новое значение регистра. После выполнения команды текущей программы в режиме пошаго- вого выполнения флажок TF обнуляется, поэтому подпрограмма об- служивания прерывания типа 1 должна вновь устанавливать флажок TF после вывода на дисплей информации о содержимом регистров и приема команды монитора на продолжение выполнения программы. ГЛАВА 3 ОДНОПЛАТНАЯ МИКРОЭВМ НА БАЗЕ МИКРОПРОЦЕССОРНОГО КОМПЛЕКТА СЕРИИ К1810 3.1. Технические характеристики Одним из вариантов решения инженерных задач большой информацион- ной емкости и задач управления с повышенными требованиями к быстро- действию вычислительных средств является рассматриваемая в данной главе одноплатная микроЭВМ, в которой наиболее полно использованы БИС серии К1810 [5]. Отличительной особенностью микроЭВМ является увеличение ее вычислительной мощности за счет включения в схему арифметического сопроцессора КМ1810ВМ87. Дополнительные возмож- ности по расширению микроЭВМ обеспечиваются стандартной шиной И-41 [11], а также широким использованием распространенных серий микросхем (К155, К555, К565, K58Q и др.). Основное назначение микроЭВМ — выполнение арифметических операций при обработке больших массивов входной информации, а также выдача управляющих сигналов на внешние устройства или объекты управления. Для связи со средствами отладки, регистрации и накопления полу- ченных данных удобно использовать дополнительную микроЭВМ ввода- вывода, выполненную на микропроцессорном комплекте К58О. Некото- рые особенности проектирования подобной микроЭВМ, служащей про- цессором ввода-вывода, рассмотрены в гл. 4. Такое разделение функ- 58
ций управления и обработки позволяет наиболее полно использовать возможности по быстродействию микропроцессорного комплекта се- рии KI810. Данная микроЭВМ имеет следующие характеристики: разрядность 16 бит; тактовая частота 2,5 или 5 МГц (выбирается переключателем); объем резидентного ОЗУ ; до 128 Кбайт, резидентного ПЗУ до 32 Кбайт; память может быть расположена в любой части адресного пространства в 1 Мбайт (в случае использования системной памяти возможно отключение резидентных ОЗУ и ПЗУ или включение их в пространство адресов, не занятых системной памятью); регенерация ОЗУ динамического типа прозрачная относительно ве- дущего процессора, т. е. ни в одном из режимов работы процессор не останавливается для ожидания регенерации (включая режимы ожида- ния, прерывания и т. п.); имеется возможность программирования ППЗУ типа К573РФ5 (РФ2) в гнездах на плате микроЭВМ; на плате дешифрируются 64 К адресов внешних устройств, при этом любой из них может использоваться для адресации портов ввода-вывода как на плате, так и вне ее (число адресуемых портов на плате 8); внешние источники питания +5 В, 2,2 А; +12 В, 20 мА; —12 В, 20 мА; +26 В, 30 мА (для программирования ППЗУ); микроЭВМ размещена на плате размером 315 X 190 мм. Кроме того, на плате предусмотрены: восемь маскируемых и один немаскируемый уровень прерывания; последовательный интерфейс ввода-вывода данных RS232-C; три канала таймера, которые обеспечивают необходимую сетку син- хронизирующих частот для последовательного интерфейса (третий ка- нал таймера используется для синхронизации последовательного вы- вода) ; три канала побайтного ввода-вывода, разделенных следующим обра- зом: канал для управления внутренними функциями микроЭВМ, канал для связи с процессором ввода-вывода и канал пользователя (канал, используемый для связи с процессором ввода-вывода, также может быть запрограммирован для связи с внешними устройствами: печатаю- щим устройством, дисплеем и т. д.); арбитр системной шины, который позволяет обеспечить доступ к ре- сурсам мультипроцессорной системы задатчикам с любым приорите- том (0—7), при этом частота предоставления шины пропорциональна но- меру приоритета задатчика. Общая схема микроЭВМ приведена на рис. 3.1. МикроЭВМ состоит из следующих основных блоков: блока центрального процессора, конт- роллеров ОЗУ и ПЗУ, ОЗУ емкостью до 128 Кбайт, ПЗУ емкостью До 32 Кбайт, контроллеров внешних устройств и арбитра системной 59
Прерывание Поспев ова- ла локальной тельный Управление Параллель- ш.ине обмен RS232C таймерами ныа обмен EEEEZEEZS КЕЛ Рис. 3.1. Структурная схема микроЭВМ на базе микропроцессорного комплекта шины. Ниже рассмотрены основные функции, входные и выходные сигналы, общие принципы построения и примеры принципиальных электрических схем каждого блока микроЭВМ. 60
БИС серии К1810 3.2. Блок центрального процессора Центральный процессор микроЭВМ предназначен для формирования сигналов управления микроЭВМ и обработки входной информации. Функции обработки выполняют микропроцессор КМ1810ВМ86 и ариф- метический сопроцессор КМ1810ВМ87; формирование сигналов управ- ления обеспечивает микропроцессор в соответствии с программой об- 61
EFI /4 RDY1 RDY2 INT NMI CSB- BEN- DPI КР58ОГФ89 C1 7(2 Z = 15 МГц 16 EFI 6 <ЬУ$7з "° AEN2 CSYNC RDY1 RES FfC RDY2 VDl КД512А RES C2_____ 0,1 икФ Ж д READY RESET CCS SW2 10 24 R1 560k 12 DD2 K18108M86 READY INT mn/mx RESET TEST ж RQ/6T0 RQ/&T1 COCK 11 T9 СР Q30 QS1 CLK 22 ADO AD1 AD2 AD3 ADA AD5 ADb AD 7 ADO ADO AD10 AD11 AD12 AD13 AD1A AD15 A16/S3 A17/SA AT8/S5 A19/S6 BHE/S7' 50 sr DPS K1810BM87 READY INT 2 1£ 2 RESET NM1 RQ/6T0 50 RQ/6T1 23 BUSY 29. 'LOCK 25 OSO 0S1 24 CLK CP 4 13 74 12 '30 16 38 17 37 Id 36 19 35 20 _3A 21 [26~22 [ 27 23 [28~7a ADO AD1 AD2 AD3 ADA ADS ADb AD7 ADb ADS AD1O AD11 AD12 AD13 AD1A - AD15 - A16/S3 - A17/SA A1B/S5 A10/S6 BHE/S7& SO i- S7_ <- 52 <- £ 2. 8 10 11 12 12 IS 20 2___15_ 39 16 38 17 37 18 36 19 35 ~2EC 39 21 26 22 27 23 28 29 21 22 23 24 Рис. 3.2. Принципиальная электрическая схема блока центрального процессора
- ---------------------------------------------------------*-RES/ --------------------------1-----------------------------------------------^BCLK/ -------------------------------------------------------------------------- - —.... —........T 1 * CL* --------------------------------------------------------------------------+-PDSD1 DD4 К555ЛА5 DD11~DD12 1 1 KP580BA86 19 -y GQ AO > /?n — A1 81 fS у oy Л - A2 S3 17 . - - - Д 7 s> —i A5 /Л " — * L>Z . - D7 5 2J * F 84 >?л A5 RR L4 .... i RA lfi_.J A7 /Л - uu *4 Й7 te p *-ВЮ -8115 и M n a 9 Ml «! AO Al A2 A5 A4 A5 A6 A7 T__ OE > 80 81 82 65 84 85 86 87 19 з: iz. &. _Z£. Я -88 -89 -8W -811 -812 -815 -814 -815 10RC DD13 K16108K88 NROC NWft AMWC WeD TUwC WfA DT/R DEN ALE T 1L 11 Kl55/lhll MRDC -----------------^INT/ РШ5 К155ЛП11 -.^^2 /C> Q5i^-DT/R/ •DEN ALE LOCK Puc, 3.2
работки. Синхронизацию работы как центрального процессора, так и других блоков микроЭВМ выполняет тактовый генератор КР1810ГФ84 с кварцевым резонатором 15 МГц. В схеме центрального процессора (рис. 3.2) предусмотрены перемычки SB7/, SW2 для выбора частоты тактирующих импульсов 2,5 или 5 Мгц. Выбор частоты определяется техническими характеристиками на быстродействие отдельных БИС как самой микроЭВМ, так и отдельных элементов, подключаемых к локальной шине микроЭВМ. Кроме того, предусмотрен вход EFI для подключения внешнего генератора системной частоты, используемый при необходимости вместо кварцевого резонатора. В этом случае уста- навливается перемычка SW3. При работе в мультипроцессорном ре- жиме возможен выбор источника системной частоты синхронизации BCLK-. внешний источник или внутренний источник частоты, получае- мый с выхода OCS тактового генератора. При этом необходимо также установить перемычку SW4 на этом выходе и стробировать сигнал ALE импульсами системной частоты, установив перемычку S1E5. Как отмечалось в гл. 2, основные функции выборки команд из памяти и организацию условных и безусловных передач управления берет на себя микропроцессор КМ1810ВМ86. Арифметический сопро- цессор выполняет слежение за последовательностью команд и, получив команду ESC, вырабатывает сигнал BUSY, который устанавливает вход TEST основного процессора в состояние логической 1. В дальней- шем оба процессора могут работать параллельно до момента, когда основному процессору будет необходимо обратиться к результату работы сопроцессора. В этом месте программы должна стоять команда WAIT, которая переведет основной процессор в состояние ожидания до момента завершения работы сопроцессора, т. е. до снятия сигнала TEST (функция команды WAIT состоит в проверке сигнала TEST) , Ассемблер ОС СР/М-86 автоматически ставит команду WAIT перед каждым обращением к сопроцессору по команде ESC. В случае приме- нения других средств программирования эта функция возлагается на программиста. Механизм слежения за последовательностью команд состоит в сле- дующем. Поскольку основной процессор обеспечивает предваритель- ную выборку команд, команда ESC, поступившая в очередь команд, выполняется не сразу, а может и вообще не выполняться, если перед ней идет команда условного перехода. Сопроцессор следит за последо- вательностью команд, используя биты состояния очереди QS0 и QS1, и определяет, что делает основной процессор. Если состояние очереди равно 00, то сопроцессор ничего не делает, если 01, то он сравнивает первые 5 бит первого байта очереди с ПОП. При сравнении сопроцес- сор начинает выполнять операцию, код которой указан в младших битах. В противном случае этот байт удаляется из очереди в сопро- цессоре. Состояние 10 означает, что очередь в основном процессоре 64
полна и, следовательно, сопроцессор должен приостановить слеже- ние. Состояние 11 указывает, что первый байт в очереди не является командой, и этот байт рассматривается сопроцессором, если известно, что это часть команды ESC. Таким образом, сопроцессор параллельно с выполнением операций выделяет из потока команд свои команды, используя внутреннюю очередь команд [15]. Основной процессор, встретив команду ESC, вычисляет 20-разряд- ный физический адрес первого слова операнда и выбирает его из па- мяти. В этот момент сопроцессор захватывает слово данных и его адрес. Если операнд длиннее, чем одно слово, сопроцессор может получить оставшиеся слова, выставляя на один из входов RQ/GT основного про- цессора запрос на шину. Если операнд в команде ESC является прием- ником, то сопроцессор игнорирует слово данных, выбранное основ- ным процессором, и после выполнения операции засылает результат по полученному от процессора адресу. Если команда ESC не содержит адреса операнда, основной процес- сор просто переходит к следующей команде. Как было сказано выше, сопроцессор выставляет сигнал BUSY (высокий уровень) на все вре- мя, пока он выполняет операцию. Это позволяет синхронизировать параллельную работу основного процессора и арифметического со- процессора. __ ___ ___ В случае захвата шин сопроцессором сигналы SO, SI, S2 основно- го процессора переводятся в третье состояние и сопроцессор выставляет на входы системного контроллера К1810ВГ88 свои сигналы состояния, выполняя запись или чтение из памяти. Сопроцессор имеет только три состояния (чтение, запись и пассивное). В блок центрального процессора входят также шинные формирова- тели для буферирования системной шины данных и буферные регистры для фиксации и формирования адресов локальной и системной шин адреса. Сигналы управления микроЭВМ, получаемые с выходов си- стемного контроллера К1810ВГ88, образуют шину управления. Кроме того, с помощью буферных формирователей К155ЛП11 данные сигналы передаются на системную шину. В микроЭВМ предусмотрен выход локальной шины на разъем для подключения внешних локальных устройств. Системная шина обеспе- чивает работу данной микроЭВМ в составе мультипроцессорной си- стемы. Через системную шину микроЭВМ имеет доступ к системным ресурсам: системной памяти, устройствам ввода-вывода* и другим ре- сурсам. Сигналы RDY1 и RDY2 поступают от дешифратора ПЗУ и арбитра системной шины, синхронизируются тактовым генератором и приоста- навливают работу центрального процессора до момента завершения обращения к устройству или до момента захвата системной шипы соответственно. В последнем случае сигналы CSB и BEN, поступающие также из арбитра, переведут буфера данных и адреса в активное со- 65
стояние, организовав тем самым обращение микроЭВМ к ресурсам системы. _ Сигнал состояния S2 позволяет разделить обращение к памяти и и устройствам ввода-вывода; из этого сигнала формируется локальный сигнал BS2, разрешающий, в частности, работу дешифратора внешних устройств. 3.3. Контроллер ОЗУ : Как было отмечено в гл. 1, при выборе БИС ОЗУ для реализации памяти достаточно большой емкости следует обращать внимание на быстро- действие, потребляемую мощность и, разумеется, емкость памяти в одном чипе. В настоящее время наибольшей информационной емкостью обладают БИС памяти динамического типа. Поэтому подобные БИС позволяют разместить на одной плате память большей емкости по срав- нению с памятью на БИС типов 541, 537 (статическое ОЗУ) при том же числе корпусов. Однако при этом возникает ряд проблем, свя- занных прежде всего с необходимостью проектирования схемы регене- рации содержимого ОЗУ. Эта проблема уже обсуждалась в гл. 1; ниже рассмотрена одна из практических реализаций схемы регенерации, прозрачной относительно ведущего процессора, т. е. не требующей приостановки процессора на ожидание регенерации ни в одном из режимов его работы. Еще одна проблема связана с выбором адресного пространства ОЗУ, отвечающим заданным требованиям к размещению операционной си- стемы и прикладных программ. Возможность гибкого выбора адресов памяти позволяет адаптировать одноплатную микроЭВМ к условиям применения, например использовать ее как контроллер, выполняющий конкретные операции, или как отладочную микроЭВМ с одной из стан- дартных операционных систем. Адресное пространство, выбранное пользователем для данной мик- роЭВМ, может совпадать или перекрываться с адресным пространством системной памяти емкостью до 1 Мбайт. Поэтому желательно наличие сигнала управления доступом к локальным и системным ресурсам па- мяти. Подробно этот аспект обсуждается в § 3.6. На рис. 3.3 приведена функциональная схема блока управления ОЗУ, включающая в себя селектор обращения к ОЗУ. схему управления обращением, схему разрешения выборки данных, счетчик адреса реге- нерации, мультиплексор адреса, массив элементов ОЗУ емкостью до 128 Кбайт, буферный регистр данных и дешифратор выбора байта данных при записи. Сигналы А14-А19 локальной шины адреса поступают на селектор обращения, который формирует сигнал разрешения (запрета) обраще- ния к ОЗУ. Работа селектора возможна при наличии программно вы- 66
ALE1 ENRAM CLK MRDC ENRAM 6 Селектор / ft обращения —» , I мз _ L— ON/OFF RAM/EPROM Селектор к ОЗУ Схема управления обращением я ОЗУ Х2 RAS CAS Схема разрешения выборки данных при чтении ОЕ Счет Счетчик адреса регенера- ции 8, А1-А8 АЗ ~А16 Дешифратор адреса байта Л у?-а Фиксация адреса столбца выход данных Массид Байт элементов адреса озу , 128 Кбайт (32 Кбайт) 8ход данных Фиксация адреса строки Запись выбор ка 16 800- 8015 буферный регистр данных 16 16 20 Локальная шина адреса AQ—A19 AMWC 8НЕ АО Млад- Старший ший байт байт WTL f пю-т/5 Дешифратор вы- бора байта данных при записи 16, Локальная шина данных 610-в! 15 0^ В S t <и S ч В 8 I Рис. 3.3. Функциональная схема блока управления ОЗУ ставленного сигнала ENRAM и сигнала ALE1, представляющего собой сигнал ALE, сдвинутый на 60 нс. Последний сигнал служит для приоста- новки процесса регенерации ОЗУ в момент обращения. ___ Схема управления обращением к ОЗУ формирует сигналы RAS (непрерывно) и C4S при обращении к ОЗУ. Кроме того, схема форми- рует сигналы управления мультиплексированием XI, Х2 и сигнал ин- крементирования счетчика регенерации. Сигналы XI, Х2 выбирают млад- ший и старший байты адреса обращения и адрес регенерации в отсут- ствие обращения к ОЗУ. Чтение данных из ОЗУ происходит по сигналу MRDC (при наличии разрешения ENRAM), при этом слово данных фиксируется в буферном регистре сигналом CMR, являющимся инверсией сигнала CAS. Сигнал разрешения выборки данных ОЕ выставляет данные из буфера на ло- кальную шину данных. Запись в ОЗУ по сигналу AMWC осуществляется пословно или побайт- но в зависимости от соотношения сигналов ВНЕ и АО (см. § 2.2). При использовании БИС ОЗУ с совмещенным портом чтения-записи Данных буферный регистр на выходе блока ОЗУ может отсутствовать. Селектор обращения к ОЗУ формирует сигналы ON/OFF1 и ВАМ/EPROM, информирующие о типе используемой памяти и адрес- 67
ffiDC AZ 8FC1 OE 5HRAM RFC2' -RAM/ePrOM ON/OEF! RFC3 AtEi RFC*, Ifi CT2 z Aid T A13 A! 9 AH W REC6 Ы'. г/л- i ira 1И ira ira 00^1 8555ПА». АЮ 44 Al 2 005 1 K155/1H1 1И 1Ш OQ10_ К5618ЕЮ /4 43 so.: 12 FEC6 13 FEC7 i4 ms FEC1, Ш1. -mz 11 FEES ' A6 Й(ГТ1 12 К555СП1 W CS2 -----IZ?O Н155ЛА18 AO 0022 *555/1/15 R6_ 100 008.2 K155/1A1& 01 Rti —^3 Ki5$ Th 2 IfS ita 1И isi 1Й 006 К155ПАЗ QO Q1 02 03 (K 05 06 07 87 100 AMA^. She- Рис. 3.4. Принципиальная электрическая схема контроллера ОЗУ BO 91 82 83 009.2 8T55/1A4 0021 8555ПП5 Дг DQb 8155/1/12 0071 005 + 8155/101 6155/1Й1 007.2 81550/11 SW8 SiO^ I 005 2 8155/1H1 ООН~DD>5 '855581ft? OS! k-— 81 82 81 82 83 BR A15 REC7 csi № A&_ A8_ X1 8288 -(ms •WE2 MS ном пространстве и используемые в арбитре системной шины в каче- стве признаков работы микроЭВМ с локальными ресурсами. Пример реализации контроллера ОЗУ приведен на рис. 3.4. Контрол- лер предназначен для работы с памятью, построенной на БИС К565РУ5 или К565РУ6 общей емкостью до 128 Кбайт. Область адресного пространства, занимаемого ОЗУ, определяется кодом, задаваемым пе- ремычками SW1-SW6 на входах элементов DD1 и DD2.1. Логическая 1 на выходе элемента DD1 указывает на то, что происходит обращение к заданной области локального ОЗУ. Если в качестве БИС памяти ис- пользуются БИС К565РУ5, то необходима перемычка S7 (при использо- вании БИС К565РУ6 с меньшей емкостью памяти отсутствие перемычки указывает на то, что адресное пространство, определяемое разрядами 68
Рис. 3.5. Временная диаграмма регенера- ции динамической памяти Х2 \ [К 555КПП) А18, А19 адреса, свободно). Кроме того, перемычки SW8-SW10 позво- ляют изменить порядок мульти- плексирования адресов памяти в за- висимости от емкости ОЗУ. A0R~A7R '/A1-Ae\A9-A№'/^m-RFCS ) Передача адреса ячейки ОЗУ осуществляется через коммутаторы DD11DD14. Адрес передаваемого байта формируется сигналом RAS, поступающим на входы XI коммутаторов. При этом младший байт адреса Al—А8 передается при логическом 0 на данном входе, а стар- ший байт А9—А16 при логической 1. Передача адресов ячеек ОЗУ воз- можна только при отсутствии процесса регенерации. Данный факт иден- тифицируется наличием логического 0 на входах Х2 коммутаторов. Процесс регенерации происходит непрерывно при отсутствии обра- щения к ОЗУ. При этом сигнал регенерации RAS формируется триг- гером DD3.2, который включен в режим счетного триггера и тактирует- ся сигналом CLK. При поступлении сигнала ALE, который определяет цикл обраще- ния к ОЗУ, триггеры DD3.1 и DD3.2 устанавливаются по входу S в со- стояние логической 1. При этом запрещается передача импульсов реге- нерации на вход СО счетчика регенерации DD10. На коммутаторах DD11-DD14 устанавливаются адреса А1-А8, а при появлении цервого сигнала CLK, следующего за ALE, устанавливаются адреса А9-А16. Этим же сигналом триггер DD3.1 возвращается в исходное состояние, обеспечивая возобновление регенерации. По окончании сигнала CAS на выходах коммутаторов снова устанавливается адрес регенерации. Временная диаграмма процесса регенерации приведена на рис. 3.5. Формирование сигналов CAS, RAS для выбора адреса реализуется с помощью схемы, выполненной на элементах DD2, DD3, DD5, DD8. При этом триггеры DD3 осуществляют необходимые задержки, а эле- менты DD2, DD5, DD8 используются для формирования требуемых временных соотношений, заданных как техническими условиями на БИС К565РУ5,так и логикой работы схемы управления. Дешифратор выбора байта реализован на элементах DD4.1, DD4.2. Он формирует сигналы WEL и ИО/для записи в младший и старший байты соответственно. Буферный регистр на выходе блока ОЗУ может быть реализован, например, на БИС К531ИР22 или К580ИР82. 69
3.4. Контроллер ППЗУ Программируемое ПЗУ — необходимый элемент любой микроЭВМ, используемый для постоянного хранения как минимум программы на- чального загрузчика, а также для хранения блоков операционной си- стемы, программ пользователей, констант и других данных. Адресное пространство, занимаемое ППЗУ, может быть частью общего адресного пространства памяти, но в случае значительной емкости па- мяти ППЗУ целесообразно сформировать отдельное обращение к ОЗУ и ППЗУ по одним и тем же адресам, т. е. организовать банки памяти ОЗУ и ПЗУ с возможностью диспетчеризации памяти программным путем. Большие удобства пользователю дает возможность программирова- ния ППЗУ непосредственно на плате микроЭВМ. Это позволяет не толь- ко исключить дополнительные платы программатора, но и упростить проверку работы программы путем подключения соответствующей области памяти к программным ресурсам микроЭВМ. Указанные возможности микроЭВМ по работе с ППЗУ реализованы в блоке управления, структурная схема которого приведена на рис. 3.6. Схема включает в себя селектор обращения к ППЗУ, дешифра- EPR0M2 ADRRA/1 AMWC EPROR1 + 26Ъ Рис. 3.6. Структурная схема контроллера ПЗУ 70
торы выбора слова и байт, а также схему управления записью в ППЗУ. Обращение к ППЗУ возможно при поступлении программно выставляе- мого сигнала EPROM2. При этом селектор ППЗУ анализирует разряды А15-А19 адреса и формирует сигнал ADRRAM, который разрешает работу дешифраторов слов (при чтении) и байт (при записи). Этот же сигнал передается в арбитр системной шины в качестве одного из сигналов, указывающих на работу микроЭВМ с локальными ре- сурсами. По сигналу MRDC выбирается пара БИС ППЗУ, определяемая адре- сами А12-А14. Адрес слова в ППЗУ определяется разрядами А1-А11. Программирование разрешается сигналом EPR0M1, также выставляе- мым программно. Предварительно к микроЭВМ должен быть подклю- чен внешний источник питания +26 В. Схема управления записью в ППЗУ формирует сигнал запрета чтения RDY1, который переводит мик- ропроцессор в состояние ожидания на время длительности импульса программирования. Запись выполняется по сигналу PROGR в млад- ший или старший байт; выбор байта записи определяется дешифрато- рами по сигналам АО и ВНЕ. Пример реализации блока управления ППЗУ приведен на рис. 3.7. Принципиальная электрическая схема выполнена в предположении, что используются БИС ППЗУ емкостью 2 КХ8 бит, например К5 7 ЗРФ5 или К573РФ2. При использовании БИС ППЗУ других типов соответствую- щим образом должны быть скорректированы адресные входы селектора и дешифраторов выбора байта, а также схема формирования временной диаграммы записи в ППЗУ. Выходными сигналами этого блока являются сигналы чтения одного из восьми типов ППЗУ СЕ0-СЕ7, сигналы разрешения записи в младший байт OELO-OEL7 и старший байт ОЕНО-ОЕН7. Адресное простран- ство, занимаемое ППЗУ, определяется перемычками SW1-SW4 на входе селектора обращения к ППЗУ (элемент DD5) и перемычкой 5И'5 на входе элемента DD9. Необходимая длительность импульса программиро- вания формируется с помощью одновибратора DD2. Требуемое напряже- ние (+ 26 В) подключается с помощью перемычки и ключа, реали- зуемого на элементах VT1 wDD4. Ключ устанавливается в рабочее со- стояние программно по сигналу EPR0M1. С точки зрения программиста процесс программирования ППЗУ ничем не отличается от простой перезаписи массива данных или програм- мы с одного места в памяти в другой, но при этом необходим контроль перезаписанной информации. Программисту следует только помнить о том, что необходимо в начале и конце перезаписи выдать в порт парал- лельного ввода-вывода коды 10j 6 и 00 соответственно для установки 'сигналов EPROM 1, EPROM2. Использование монитора еще больше упрощает действия програм- миста: достаточно набрать на клавиатуре команду М (работа с памятью) 71
DD6__ DD7 А12 А13 А 74 АО К561ИД1 DD8 А12 10 и. 12 К561ИД1 DO DC D1 D2 Л31 ~ К155АГЗ 1QC1 К1б5ЛЛ1 ЗЗМ12. t J :____а 7?J /СО "dpi 1— К155ЛЛ2 5W6 4-°- О 1 2 3 4 5 6 7 3 И- 2 15- 1 б 7 А. ОСНО 0СН1 •ОЕНЗ ОЕНА Щ 0DH6 00Н7 VD1 КД521А РЛООЛ Рис. 3.7. Принципиальная электрическая схема контроллера ПЗУ
и указать адрес начала массива или программы, адрес конца и адрес, присвоенный гнезду с чистой БИС ППЗУ. Таким образом, данная реализация процесса программирования ППЗУ непосредственно на плате микроЭВМ является примером рацио- нального распределения программно-аппаратных функций микроЭВМ, которое облегчает труд программиста. Эта реализация исключает не- обходимость подключения к микроЭВМ платы программатора и напи- сания соответствующей программы программирования, в которой не- обходимо учитывать соответствующие задержки для организации про- цесса программирования (см., например, [10]). Отметим, что для реализации программирования ППЗУ потребова- лось всего семь функциональных элементов, четыре из которых обеспе- чивают, например, программирование одновременно до 16 БИС ППЗУ, тогда как традиционные программаторы, как правило, включают всего одну панельку для установки ППЗУ и более сложные схемы програм- мирования, хотя в основном более универсальны по отношению к выбо- ру типа БИС ППЗУ. В ППЗУ записаны монитор и ядро операционной системы СР/М-86. При включении питания управление автоматически передается монито- ру, через который осуществляется как связь с внешними устройствами, так и реализация основных функций контроля и управления сише^.ой. 3.5. Контроллеры внешних устройств Рассматриваемая в этой главе микроЭВМ обладает возможностями об- мена информацией с внешними устройствами, подключенными к локаль- ной шине. Это обусловлено необходимостью размещения большого чис- ла компонентов (микропроцессора, арифметического сопроцессора, массивов ОЗУ и ПЗУ с соответствующими контроллерами, схем управ- ления) на одной плате. При необходимости возможности обмена могут быть расширены путем создания отдельной интерфейсной платы, под- ключаемой к локальной шине микроЭВМ. В данном варианте микроЭВМ обмен с внешними устройствами ло- кальной шины выполняется с помощью контроллеров последовательно- го и параллельного обмена. Последовательный обмен осуществляется в стандарте RC 232-С и позволяет вести работу с одним устройством последовательного типа. Параллельный обмен производится пословно или побайтно и предназначен для связи микроЭВМ с процессором ввода- вывода, выполняющим основные функции по связи с внешними устрой- ствами и (или) устройством ввода-вывода параллельного типа. Для прие- ма и обработки внешних и внутренних запросов на прерывание по ло- кальной или системной шине использован программируемый контрол- лер прерываний. Для синхронизации работы различных устройств микроЭВМ, а так- же для измерения и формирования временных интервалов использован 73
программируемый таймер. Таймер может получать управляющие сиг- налы либо непосредственно по локальной шине, либо через программи- руемый порт последовательного ввода-вывода, либо извне. Кроме перечисленных выше функций программируемый порт парал- лельного ввода-вывода выполняет формирование различных сигналов управления локальной и системной шин; в частности, с его помощью можно установить следующие сигналы: ENRAM — разрешение обращения к резидентному ОЗУ; снятие этого сигнала позволяет обращаться к системным ресурсам микропроцессор- ной системы, например к системной памяти по тем же адресам, что и адреса памяти на плате; EPROM2 - разрешение обращения к резидентному ППЗУ; снятие этого сигнала также позволит обратиться к системным ресурсам; EPR0M1 - разрешение программирования ППЗУ при уровне логи- ческого 0, этот сигнал необходимо устанавливать перед началом про- граммирования; INH1 — разрешение обращения к системному ОЗУ по адресам ППЗУ; INH2 -- разрешение обращения к системному ПЗУ по адресам ОЗУ. Эти сигналы позволяют управлять режимами работы микроЭВМ как с локальными, так и с системными ресурсами мультипроцессорной системы. Микропроцессор КМ1810ВМ86 позволяет адресовать 64 К внешних устройств по адресам А0—А15. На плате микроЭВМ предусмотрена воз- можность дешифрирорать все адреса внешних устройств с помощью схемы дешифратора, выполненной на двух ППЗУ типа К556РТ4Аи де- шифратора К555ИД7 (рис. 3.8). Выходы ППЗУ с открытым коллек- тором позволяют объединить логические выводы внешних устройств монтажным ИЛИ и соединить их с входом дешифратора DD3. Дешифра- тор в зависимости от логического номера внешнего устройства выдает один из восьми сигналов обращения к внешнему устройству 1DSI/O - 8DSI/O. Использование ППЗУ в схеме дешифратора внешних устройств позво- ляет при необходимости легко изменить их номера, например в случае перехода к новой операционной системе или с целью адаптации к при- кладной программе, разработанной для другой микроЭВМ с данным микропроцессором. Кроме сигналов обращения к внешним устройствам дешифратор вырабатывает сигнал ADRI/O, который передается арбитру системной шины и информирует его о том, что микроЭВМ начала работу с локаль- ными устройствами. ___ Разрешение на работу дешифраторов дает сигнал BS2, поступающий от блока центрального процессора. Последовательный обмен реализуется с помощью следующих эле- ментов ; программируемого контроллера последовательного обмена 74
Рис. 3.8. Принципиальная электрическая схема дешифратора внешних устройств К580ВВ51 (К1810ВВ51А), предназначенного для формирования требуе- мого протокола обмена; программируемого таймера К1810ВИ53, необходимого для формиро- вания сигналов, определяющих скорость передачи и приема данных; программируемого контроллера прерываний К181ОВН59А, который используется для приема и обработки сигналов готовности приемника RXRDY и готовности передатчика TXRDY. Последовательный обмен осуществляется по стандартным протоко- лам RS232C. В зависимости от требований к фронтам передаваемых и принимаемых сигналов на схеме (рис. 3.9) предусмотрена установка тех или иных перемычек на входе транзистора VT2 и выходах микро- схемы DD5.4. Работа схемы последовательного обмена синхронизи- руется импульсами PCLK, поступающими от генератора тактовой ча- стоты с блока центрального процессора. Параллельный обмен с внешними устройствами выполняется через программируемый контроллер К58ОВВ55 (К181ОВВ55А). Обмен дан- ными происходит через порты А и С. При этом возможно подключе- ние либо двух 8-разрядных внешних устройств, либо одного 16-разряд- ного устройства. Одним из 8-разрядных устройств может быть про- цессор ввода-вывода, выполненный на базе микропроцессорного комп- лекта БИС серии К580. 75
Рис. 3.9. Принципиальная электрическая схема контроллеров внешних устройств
МикроЭВМ не имеет прямого выхода на внешние устройства, в част- ности на устройства внешней памяти: накопитель на магнитных дисках или магнитных лентах и другие устройства. Загрузка и сохранение мас- сивов обработанной информации и программного обеспечения для рассматриваемой микроЭВМ возможна только через процессор ввода- вывода. Подобное косвенное обращение к устройствам внешней па- мяти имеет свои преимущества и недостатки. Во-первых, микроЭВМ предназначается для использования в системах автоматизации научных исследований, управления физическим экспе- риментами и в других областях, где к микроЭВМ предъявляются до- статочно высокие требования по быстродействию и емкости памяти для размещения сложных программ и больших массивов данных. При этом объем данных, которыми микроЭВМ может обмениваться с внешними устройствами в каждый конкретный момент времени незначителен, хотя на протяжении всего процесса работы микроЭВМ может принять и передать значительный объем данных. Для такого обмена достаточен выход на устройства интерфейсной платы через локальную шину с по- мощью того же контроллера параллельного ввода-вывода. В этих слу- чаях загрузка в микроЭВМ программ и сохранение результатов обра- ботки могут выполняться до эксперимента и после него, когда нет ограничений на время обмена. Во-вторых, все устройства внешней памяти существенно более мед- ленные по скорости работы, чем микроЭВМ. Поэтому процесс приема программ или данных процессором ввода-вывода с одновременной передачей их через порт параллельного обмена в микроЭВМ может происходить за время, сравнимое с временем чтения данных с диска. В-третьих, в процессоре ввода-вывода могут быть предусмотрены все средства отладки программ для микроЭВМ на базе микропроцес- сора КМ1810ВМ86, которые работают в режиме диалога с программи- стом и не требуют особого быстродействия. Например, в среде ОС СР/М-80 можно редактировать программы для микроЭВМ одновремен- но с контрольным прогоном предыдущей версии программы в мик- роЭВМ на базе К1810. Наконец, микроЭВМ и процессор ввода-вывода для нее могут быть компонентами мультипроцессорной системы. В этом случае процессор ввода-вывода может обслуживать и другие микроЭВМ этой же системы. Таким образом, недостатки разделения функций обработки и функ- ций обмена с внешними устройствами сводятся только к необходимо- сти иметь две одноплатные микроЭВМ в одном конструктивном мо- дуле. Эта аппаратная избыточность вполне компенсируется возмож- ностью работать с богатым программным обеспечением, созданным для двух различных по возможностям микропроцессоров. В этом направ- лении осуществлен ряд разработок, описанных, например, в [12]. Фир- 77
мы-разработчики микроЭВМ также поддерживают такую идеологию построения сложных систем. Порт В контроллера параллельного ввода-вывода, как уже отмеча- лось, используется для вывода сигналов управления самой микроЭВМ. Кроме того, через этот порт выдается сигнал разрешения работы тай- мера GATE1, используемого для формирования временных интервалов. Для маскирования сигналов ENRAM, EPR0M2, INEI1, INH2 в мо- мент подачи напряжения питания и инициализации контроллеров в схеме используются элементы DD6, DD7. Для формирования и измерения временных интервалов используется программируемый таймер К580ВИ53 (К1810ВИ53А). Счетчик 0 тайме- ра управляется внешними сигналами CLK0 и GATE0. Выход OUTO счетчика соединен со входом IRQ3 контроллера прерываний. Счетчик 1 заполняется по входу CLK1 импульсами сигнала PCLK, а разрешение счета GATE1 осуществляется программным путем через порт параллельного ввода-вывода. Выход счетчика соединен со вхо- дом IRQ2 контроллера прерываний. Счетчик 2 используется для формирования сигналов тактовой ча- стоты приема и передачи ТХС, RXC контроллера последовательного ввода-вывода. При этом в качестве сигнала, поступающего на вход CLK2, также используется сигнал PCLK, а разрешение счета реализуется внешним сигналом GATE2. Обслуживание запросов на прерывание осуществляется с помощью контроллера К580ВН59А (К1810ВН59А). Восемь входов контроллера распределены следующим образом: входы IRQ0 и IRQ1 не используются; входы IRQ2 и IRQ3 подключены к выходам счетчика программи- руемого таймера; входы IRQ4 и IRQ5 используются для запросов на прерывания, поступающие с системной шины; входы IRQ6 и IRQ7 служат для приема сигналов готовности пере- датчика и приемника в случае последовательного обмена информацией. Предусмотрены выходы сигналов CASO/, CAS1/, CAS2 на систем- ную шину для подключения ведомых контроллеров. В режим ведуще- го контроллера БИС устанавливается с помощью перемычки SW1 на выходе SP/EN. Контроллер выдает в блок центрального процессора сигнал INT. За- пись команд управления во все контроллеры внешних устройств осуще- ствляется по сигналам IORC, IOWCлокальной шины; установка контроллеров параллельного и последовательного ввода-вывода в начальное состояние выполняется по сигналу RESET в момент подачи напряжения питания или после нажатия кнопки ’’сброс” на плате.
3.6. Работа микроЭВМ в мультипроцессорном режиме Мультипроцессорные системы — одно из мощных средств для распарал- леливания вычислительного процесса и повышения быстродействия обработки информации. В зависимости от способа обработки данных и метода управления мультипроцессорные системы могут иметь раз- личную архитектуру. Если один последовательный поток команд обраба- тывает несколько параллельных потоков данных, то говорят об архи- тектуре типа SIMD (Single-Instruction, Multiple-Data). В системах с такой архитектурой все микропроцессоры связаны с одной общей па- мятью программ и выполняют одну и ту же программу. В архитектуре типа MISD (Multiple-Instruction, Single-Data) несколь- ко параллельных потоков команд обрабатывают один последовательный поток данных. В подобных системах вычислительный процесс разбит на несколько подпроцессов, каждый из которых выполняется отдельным микропроцессором. Мультипроцессорные системы с подобными архитектурами проекти- руют для выполнения специфичных задач, алгоритмы которых включа- ют в себя множество матричных или векторных операций. Менее критична к выбору решаемых задач архитектура типа MIMD (Multiple-Instruction, Multiple-Data), когда несколько параллельных потоков команд обрабатывают несколько параллельных потоков дан- ных. В мультипроцессорных системах такого типа каждый процессор- ный модуль имеет собственные ресурсы памяти для хранения программ и данных и собственное устройство управления. Обмен результатами обработки может выполняться либо между отдельными процессорны- ми модулями, либо с помощью главной ЭВМ. Примером мультипроцес- сорной системы архитектуры типа MIMD может служить система СМС-201 фирмы Siemens. Эта система содержит 128 процессорных мо- дулей, выполненных на базе микропроцессора Intel 8080 и включающих в себя ППЗУ на 4 Кбайт, ОЗУ на 16 Кбайт и специальную память связи для межмодульного обмена (’’Электроника”, 1978, № 11). Общее быстродействие такой системы достигает 32 млн.операций/с. Эффективная работа системы обеспечивается за счет более равномер- ного распределения вычислительных функций между модулями и сокра- щения времени на межмодульный обмен. С такими ограничениями может быть выполнен достаточно большой класс задач: цифровая обработка аэрофотоснимков, моделирование ат- мосферы для прогнозирования погоды, моделирование самолетов в аэродинамической трубе, обработка результатов независимых измере- ний при проведении физических и натурных экспериментов и много других задач. Для объединения рассматриваемой в данной главе микроЭВМ в со- став мультипроцессорной системы типа MIMD необходимо решить воп- росы обмена микроЭВМ с другими микроЭВМ этой системы и с обще- 79
Локальная шина Системная шина Рис. 3.10. Принципы арбитража системной шины системными ресурсами, например общей памятью, которая может достигать емкости 1 Мбайт. Использование в качестве внешнего интер- фейса сигналов И-41 позволяет сравнительно просто решить эти вопро- сы, если организовать обработку запросов отдельных микроЭВМ на использование общесистемных ресурсов или шины данных, через кото- рую микроЭВМ могут обмениваться информацией. Для приема запросов на системную шину, определения приоритетов запросов и передачи шины процессору-задатчику необходим арбитр системной шины. Такой арбитр, как видно из рис. 3.10, включает в себя приоритетный формирователь запросов, находящийся либо на одной из микроЭВМ, входящей в систему, либо на отдельной плате, и схемы запроса и приема системной шины, находящиеся на каждой процессорной плате, т. е. плате микроЭВМ. Приоритетный формирователь запросов принимает запросы на си- стемную шину от нескольких процессоров-задатчиков, выделяет из них запрос с наивысшим приоритетом и подает соответствующему процессору сигнал разрешения на системную шину. Получив в свое распоряжение системную шину, процессор выставляет сигнал BUSY, информирующий о том, что системная шина занята. Через системную шину этот сигнал передается другим процессорам, запрещая им поль- зоваться шиной. _____ Схема запроса шины формирует сигнал запроса BPRQi (z = 0, 1, ..., ..., 7) при условии, что сняты все сигналы, информирующие о работе процессора с локальными ресурсами. Такими сигналами являются: 80
0N/0FF1 — запроса обращения к локальной памяти; RAM /EPROM — информирующий о типе используемой памяти; ENRAM — разрешения обращения к ОЗУ; ADRRAM — выбора адреса ОЗУ и ADRI/O — выбо- ра адреса внешних устройств. Одновременно с выдачей запроса схема снимает сигнал готовности RDY2. Схема приема шины, получив сигнал подтверждения BPRNi/, фор- мирует сигнал BUSYi/ для приоритетного формирователя запросов и одновременно сигналами BEN и CSB открывает буфера адреса и дан- ных для работы с системной шиной. При необходимости процессор- задатчик может монопольно захватить системную шину, выставив с помощью программы сигнал LOCK. После завершения цикла систем- ной шины, т. е. цикла обмена данными между процессором-задатчиком и__системными ресурсами, процессору-задатчику выдается сигнал ХАСК. Этот сигнал формирует то устройство, с которым процессор- задатчик обменивался данными. Реализация арбитра системной шины приведена на рис. 3.11. Приори- тетный формирователь запросов выполнен на двух элементах: приори- тетном шифраторе DD3 и дешифраторе DD6. На схеме для наглядности рассмотрена работа арбитра с процессором, приоритет которого равен 4. На входы шифратора кроме запроса от данного процессора поступают также запросы от семи системных устройств с приоритетами от 0 до 7 (приоритет 0 — высший). Приоритетный шифратор формирует на выхо- де код номера приоритета, который в виде кода 1-2-4 передается на вход дешифратора. Если системная шина свободна (сигнал BUSY/ име- ет уровень логической 1), то устройству с данным номером выдается сигнал разрешения пользоваться шиной. ___Если запросы отсутствуют, то вырабатывается специальный сигнал ЕО, который блокирует все выходы дешифратора. Передача системной шины происходит только после окончания цикла системной шины и снятия сигнала BUSY/. При этом передача происходит по ближайшему фронту сигнала BCLK/ с помощью триггера DD7.2. Одновременно на системную шину выставляется сигнал BUSYi, а триггер DD7.2 блокиру- ется по входу D до окончания цикла системной шины и сбрасывается окончанием сигнала DEN,, Выход на системную шину обеспечивается переводом в активное состояние буферов данных, адреса и управляющих сигналов с помощью сигналов CSB и BEN, которые являются инверсией сигнала BUSY/, причем первый из них стробируется сигналом DEN. Следует отметить, что обслуженный в данном цикле системной ши- ной задатчик может участвовать в арбитраже только через два-три такта системной частоты BCLK/ Именно столько времени проходит от при- хода сигнала DEN до начала следующего цикла шины для данного за- датчика, который определяется фронтом сигнала BCLK/ За эти два- три такта системная шина может быть отдана процессору-задатчику с 81
00 BCLK/ НПЗ К155ИВ1 DDE К555ИД7 ХАСК/ ALE LOCK DEN BPRQ3/ BmJS/ BPROE/ BPRQ7/ ON/OFFL RAM/EPROM ENRAM ADRRAM ADR I/O Рис. 3.11. Принципиальная электрическая схема арбитра системной шины
меньшим приоритетом, что обеспечивает пропорциональное приорите- там распределение времени доступа к системной шине. Каждый из задатчиков может работать либо со своей локальной шиной, либо с системной шиной. При обращении к локальной шине триггер DD7.1 устанавливается в состояние логической 1 сигналом ALE1, вырабатывая сигнал готовности RDY2 для работы процессора. Если нет обращения к локальной шине, то триггер DD7.1 сбрасы- вается, при этом сигнал RDY2 переводит процессор в состояние ожи- дания до прихода подтверждения на передачу системной шины. Сиг- нал ХАСК/ снимает запрос от процессора и выводит сигналом RDY2 процессор из состояния ожидания. Требуемое состояние триггера DD7.1 обеспечивается совокупностью сигналов ON/OFF1, RAM/EPROM, ENRAM, ADRRAM, ADRI/О, ко- торые анализируются элементами DD4.1 и DD4.2, определяющими ло- гический уровень, подаваемый на вход D триггера DD7.1. Эти элемен- ты выполняют роль дешифратора адреса, указанного на рис. 2.5. Пропорциональное распределение времени доступа к системной ши- не является одним из достоинств арбитра, рассмотренного выше, по сравнению с БИС К1810ВБ89. Кроме того, подобный арбитр может быть использован при разработке одноплатной микроЭВМ с микропро- цессором другого типа, например КР58ОИК8ОА. ГЛАВА 4 ОДНОПЛАТНАЯ МИКРОЭВМ НА БАЗЕ МИКРОПРОЦЕССОРНОГО КОМПЛЕКТА СЕРИИ К580 4.1. Особенности микроЭВМ Методы проектирования микропроцессорных систем, контроллеров и микроЭВМ на базе микропроцессорного комплекта К580 настолько давно и глубоко изучены и описаны в литературе, что останавливаться на них нет смысла. Рассмотрим в данной главе особенности одноплатной микроЭВМ как процессора ввода-вывода и некоторые из технических решений, которые по мнению авторов могут оказаться полезными при проектировании микроЭВМ не только на базе микропроцессора КР580ИК80А, но и на базе процессоров других типов. Это — способ прозрачной регенерации динамического ОЗУ и диспетчеризации памяти. Структурная схема микроЭВМ-80, которая использовалась не толь- ко как процессор ввода-вывода для микроЭВМ-86, но и как самостоя- тельная микроЭВМ с возможностями, не уступающими микроЭВМ СМ-1800, приведена на рис. 4.1. Кроме блока центрального процессора микроЭВМ включает в себя блок управления и диспетчеризации памяти, накопитель ОЗУ на БИС К565РУ5 емкостью 128 Кбайт, ПЗУ типа К573РФ5 емкостью 8 Кбайт, 83
Рис. 4.1. Структурная схема микроЭВМ на базе микропроцессорного комплекта БИС серии К580 а также набор контроллеров для связи с внешними устройствами: контроллер последовательного интерфейса, который вместе с програм- мируемым таймером обеспечивает интерфейс RC-232C, контроллер параллельного интерфейса для организации интерфейса ИРПР, контрол- лер прерываний и контроллер накопителя на гибких магнитных дис- ках. Обмен информацией между микроЭВМ-86 и процессором ввода- вывода (микроЭВМ-80) может осуществляться через интерфейс ИРПР. Порты ввода-вывода данной микроЭВМ могут программировать- ся не только для связи с НГМД, но также и для работы с ленточными, кассетными и другими накопителями. Возможна совместная работа с любым внешним устройством, управление и передача данных в кото- ром осуществляются через порты ввода-вывода. Для этой цели предус- мотрен порт управления с мощными выходами и открытым коллекто- ром, а также порт состояния внешнего устройства, биты которого могут интерпретироваться в зависимости от типа внешнего устройства. Блок центрального процессора (рис- 4.2) построен по традицион- ной схеме и включает в себя, помимо микропроцессора КР580ИК80А, генератор тактовых импульсов КР580ГФ24 с кварцевым резонатором 22,5 МГц, системный контроллер КР580ВК28 и буфер адреса на БИС КР580ИР82. Для организации работы контроллера НГМД предусмот- рено формирование сигнала AI/OW (опережающий сигнал вывода на внешние устройства). Этот сигнал формируется с помощью триггера DD6 и сбрасывается по фронту сигнала RESRD, формируемого в схе- ме управления работой микроЭВМ, рассмотренной ниже. Для синхронизации работы микропроцессора с контроллером НГМД с целью увеличения быстродействия ввода-вывода файлов использу- 84
+5 8 Рис. 4.2. Принципиальная электрическая схема блока центрального процессора ется сигнал RDY, поступающий в микропроцессор через генератор так- товых импульсов. Сигнал SYNC, используемый в схеме регенерации памяти, усиливается с помощью элемента DD5. В микроЭВМ входит ОЗУ емкостью 128 Кбайт, а также ПЗУ ем- костью 8 Кбайт. Оперативно запоминающее устройство разбито на два 85
банка памяти по 64 Кбайт, т. е. оперативная память имеет максимальное адресное пространство. Адресное пространство ПЗУ может размещать- ся по любым заранее выбранным адресам в каждом из банков памяти. Эти адреса определяются на стадии проектирования исходя из требова- ний конкретных прикладных программ, в том числе операционных систем. Выбор одного из вариантов размещения адресов ПЗУ осуще- ствляется программистом путем вывода номера варианта в специально предназначенный для этой цели регистр. Возможно до восьми вариан- тов размещения ПЗУ, т. е. для выбора использованы три разряда ре- гистра. Еще три разряда регистра (элемента DD9 на принципиальной электрической схеме управления режимом работы и дешифратора внешних устройств на рис. 4.3) используются для указания режимов работы устройства внешней памяти (традиционного или кассетного НМЛ). Дешифратор контроллеров внешних устройств построен на ППЗУ типа К556РТ4А и двух дешифраторах К555ИД7. Программируемое ПЗУ преобразует физические адреса внешних устройств и портов ввода-вывода в логические номера 0 15 (в схеме использованы 13 ло- гических номеров). Назначение портов ввода-вывода указаны ниже: порт 0 - регистр выбора режимов работы; порт 1 - чтение данных с внешнего устройства; порт 2 - запись данных на внешнее устройство; порт 3 - установка неготовности внешнего устройства; порт 4 -- снятие неготовности внешнего устройства; порт 5 - чтение состояния внешнего устройства; порт 6 - вывод сигналов управления внешнего устройства; порт 7 - контроллер прерываний; порт 8 - контроллер параллельного ввода-вывода; порт 9 - программируемый таймер; порт 10 - контроллер последовательного ввода-вывода; порт 11 - аппаратное прерывание по чтению; порт 12 - аппаратное прерывание по записи. Рассмотрим более подробно назначение аппаратных прерываний по чтению и записи. Как отмечалось в § 1.6, использование программного обеспечения, созданного для микроЭВМ с аналогичным по системе команд микропроцессором, но имеющей другую конфигурацию внеш- них устройств, ставит ряд проблем. Одна из них — эмуляция работы контроллеров и внешних устройств, отсутствующих в данной конфигу- рации микроЭВМ. Номера контроллеров или портов внешних устройств легко опреде- лить после просмотра листинга исходной программы или листинга, полученного дисассемблированием. ППЗУ, используемое в схеме деши- фрации адресов внешних устройств, программируется таким образом', чтобы адрес или адреса всех контроллеров и портов оригинала, отсут- ствующих в данной микроЭВМ, получили логические адреса 11 и 12 в зависимости от того, используются эти порты для ввода или вывода 86
AI/OR Рис. 4.3. Принципиальная электрическая схема управления внешними устрой- ствами соответственно. Выполнение команд IN или OUT с адресами внешних устройств микроЭВМ-оригинала вызовет аппаратное прерывание, и управление будет передано в одну из подпрограмм эмуляции работы контроллера. По адресу, на 1 меньшему адреса возврата из подпрограммы, на- ходящемуся в стеке, эти подпрограммы при необходимости могут про- 87
читать физический номер контроллера (если контроллеров, подлежащих эмуляции, несколько); содержимое аккумулятора укажет на данные или команду, передаваемые контроллеру. Затем в подпрограмме эму- лируется работа контроллера (контроллеров) и по команде RET управ- ление будет передано вновь программе-оригиналу. При этом, если эму- лируется работа порта ввода, в аккумуляторе должны находиться со- ответствующие данные. Таким образом, можно значительно расширить набор прикладных программ, не затрачивая много времени на переделку программы и ее отладку, что для больших программ нередко и невозможно. Необ- ходимо также учитывать время эмуляции исходного устройства ввода- вывода программным путем. Часто это существенно для программы. 4.2. Схема регенерации ОЗУ и диспетчеризация памяти Как было отмечено в гл. 2, быстродействие микроЭВМ во многом оп- ределяется временем обращения к памяти. Наиболее быстродействую- щей памятью в настоящее время является ОЗУ динамического типа, которое одновременно позволяет создавать память максимальной ем- кости при заданных габаритных размерах одноплатной микроЭВМ. Основная проблема здесь состоит в проектировании контроллера дина- мического ОЗУ, выполняющего регенерацию памяти без приостановки работы микропроцессора. На рис. 4.4 приведена принципиальная электрическая схема контрол- лера динамического ОЗУ емкостью 128 Кбайт. В качестве БИС ОЗУ использованы БИС К565РУ5, разделенные на два банка памяти по 64 Кбайт. Использование двух банков памяти, в частности, позволяет работать одновременно с двумя операционными системами разного типа, например ОС СМ-1800 (или СР/М-80) и ISIS-II. Кроме того, мож- но оперативно без перезагрузки с гибких магнитных дисков передавать управление из одной программы в другую: переключив банки памяти, переписывать исходные тексты программ из файловой системы одной ОС в файловую систему другой ОС и т. п. Схема регенерации динамического ОЗУ построена на шести микро- схемах: триггерах DD2 и DD5, DD3 (К155ЛАЗ), DD1 (К155ЛН1),О£>4 (К155ЛЛ2) и счетчика DD6 (К561ИЕ10). Регенерация осуществляется непрерывно независимо от режима работы микропроцессора; при этом не используется информация о состоянии в данном цикле. В каждом Машинном цикле формируются два сигнала обращения к памяти RAS, причем первый из них используется для чтения или записи данных про- цессором (при условии работы с ОЗУ), а второй — для регенерации- В случае обращения к ПЗУ прохождение сигнала SYNC в схему реге- нерации блокируется элементом DD1.1 и регенерация выполняется непрерывно. В циклах обращения к внешним устройствам по сигналу RAS произойдет чтение из памяти по адресу внешнего устройства, но 88
Рис. 4.4. Принципиальная электрическая схема контроллера ОЗУ
Рис. 4.5. Временная диаграмма регенерации ОЗУ поскольку шина памяти буферирована, данные не будут переданы на шину данных. В качестве буфера использованы две микросхемы К589АП16, позволяющие разделить шину данных для записи и чтения. Буфер передает данные на шину данных процессора только по сигна- лу MEMR. Временная диаграмма работы схемы регенерации динамического ОЗУ приведена на рис. 4.5. Кроме сигналов Ф2, SYNC, RAS и CAS на диаграмме показаны сигналы управления работой мультиплексоров DD9 DD12 CADR и CRF, первый из которых осуществляет передачу младшего и старшего байтов адреса, второй -- адрес регенерации. В ка- честве мультиплексоров использованы микросхемы К555КП12. Накопитель ОЗУ построен таким образом, что для выбора одной из БИС используется разряд АО адреса и сигнал выбора банка памяти J0, поступающий из регистра режима DD9 (см. рис. 4.3). Сигнал J0 формируется программным путем по команде OUTO. Использование управляемой программно-страничной адресации рас- ширяет емкость памяти, но не дает возможности прямой передачи управ- ления или пересылки данных между страницами. Решение этой пробле- мы станет очевидным после рассмотрения еще одной особенности дан- ной микроЭВМ, которая заключается в возможности свободного пере- мещения так называемого теневого ПЗУ по всему адресному простран- ству, занятому ОЗУ, в том числе полного отключения ПЗУ. Эта возможность сравнительно просто реализуется, если в качестве дешифратора адресов ПЗУ использовать ППЗУ типа К556РТ4А и при обращении учитывать номер варианта размещения ПЗУ в адресном про- странстве, который записывается программно в регистр режима работы микроЭВМ. Если в каждой из четырех БИС ПЗУ записаны постоянные блоки различных операционных систем: монитор, BIOS для СР/М или другие блоки, то можно просто переходить от простого монитора к бо- лее сложной операционной системе, из одной системы в другую благо- 90
даря занесению варианта расположения ПЗУ в памяти в регистр режима работы микроЭВМ. В контроллере ОЗУ на рис. 4.4 ППЗУ DD7 выполняет функцию деши- фратора адресов ПЗУ. В качестве адреса ПЗУ используются старшие разряды шины адреса А11-А15, номер банка J0 и номера варианта раз- мещения ПЗУ Л, J2. Коды F, 7, В, D, Е (16) записанные в ППЗУ, соответственно обозначают обращение к ОЗУ, ПЗУ1—ПЗУ4. В частно- сти, по адресу 00j6 записан код 7. Так как после подачи напряжения питания или нажатия кнопки ’’сброс” устанавливается адрес, равный 0000, а регистр режима работы сбрасывается в 0, то автоматически произойдет обращение к ПЗУ1, в котором находится монитор. Элемент DD8 (К155ЛА6) формирует сигнал запрета обращения к ОЗУ, который через инвертор DD1.5 и элемент DD3.1 препятствует прохождению сигнала SYNC в схему управления ОЗУ в случае обра- щения к ПЗУ. В исходном состоянии ППЗУ К556РТ4А содержит все 0, поэтому в указанной на рис. 4.4 схеме диспетчеризации памяти заранее определе- ны восемь вариантов размещения ПЗУ в двух банках памяти и установ- лено соответствующим образом запрограммированное ППЗУ. При сме- не вариантов необходимо заменить ППЗУ в гнезде. Заранее трудно выбрать нужные варианты размещения адресов ПЗУ, поэтому удобно установить инверторы на выходах ППЗУ DD7 и про- граммировать соответственно коды 1, 2, 4, 8 для обращения к одному из четырех ПЗУ с программами. В этом случае не требуется программи- рование всех 1 по адресам, соответствующим ОЗУ, а достаточно про- граммирования только ячеек ППЗУ, адреса которых определяют вновь выбранный вариант размещения адресов ПЗУ в адресном простран- стве ОЗУ. При включении микроЭВМ триггеры регистра DD9 (рис. 4.3) сбрасы- ваются и устанавливается низкий уровень сигналов J0, Л и J2. По адресу 0000Н в ППЗУ DD7 записан код 7, поэтому в этот момент управ- ление будет автоматически передано в стартовый монитор, располо- женный по адресу 0000Н в одном из теневых ПЗУ. После начальной инициализации и установки режимов работы программируемых элемен- тов микроЭВМ загружается ОС (или загрузчик ОС) и управление пере- дается ОС (загрузчику) , при этом первой же командой ПЗУ может быть переведено в теневой режим (отключено). После этого вся область па- мяти может быть использована ОС. При необходимости использовать подпрограммы, размещенные в таком теневом ПЗУ, ОС включает ПЗУ (монитор), а при возврате из подпрограммы вновь отключает его. Вернемся к проблеме передачи управления из одной страницы в дру- гую. Если по адресу 0004Н в ППЗУ К556РТ4А также записан код 7 об- ращения к стартовому монитору, а в мониторе есть команды OUT 0 PCHL 91
то указанная проблема решается чрезвычайно просто. Для передачи уп- равления из банка 0 в банк 1 необходимо занести в регистры H-L адрес перехода, в регистр А — номер банка (1) и передать управление на эти две команды. Первая команда вызовет переключение адресации на банк 1 так, что вторая команда уже будет выбрана из этого банка (ПЗУ с монитором в обоих банках расположено по адресу 0000Н) и передаст управление по нужному адресу. В частности, в качестве адреса перехода может быть адрес программы загрузки другой ОС в новом банке дан- ных, также расположенной в этом же ПЗУ. Переход в нулевой банк осу- ществляется аналогично. Пересылка данных из банка в банк с использованием такого механиз- ма также не вызывает трудностей. Можно воспользоваться специальной подпрограммой, например следующей: > LOOP: MOV С, M ; чтение элемента массива XRI 1 ; изменение номера банка OUT 0 переключение банков XCHG обмен H-L с D-E MOV M, C ; запись элемента массива XRI 1 ; изменение номера банка OUT o ; переключение банков INX H инкремент H-L INX D ; инкремент D-E XCHG обмен H-L с D-E DEC в ; декремент счетчика JNZ LOOP ; переход, если не конец RET Для этой подпрограммы выбрано следующее распределение регист- ров: А - номер банка, в который записывается массив; В - счетчик элементов массива; С - регистр для хранения элемента массива; D-E - адрес массива-приемннка; H-L - адрес массива-источника; инициализация, сохранение и восстановление содержимого регистров опущены. Эта подпрограмма также должна находиться в обоих банках памяти по одним и тем же адресам. Использование двух банков памяти с программным переключением позволяет работать одновременно в среде двух различных ОС, реализо- вать многозадачный режим работы как в одной ОС, так и в различных ОС, передавать текстовые файлы и программы из одной ОС в другую непосредственно в процессе их работы. Например, используя текстовый редактор ОС ISIS-II, можно подготавливать новую версию отлаживае- мой программы, а транслировать и выполнять программу в другом банке в ОС СР/М. Воможны и другие варианты работы, которые значи- 92
тельно упрощают процесс редактирования и компиляции, сокращают затрату времени на отладку программ. Одна из страниц памяти может быть использована в качестве времен- ного буфера для хранения файлов или данных, несложно организовать для каждой ОС электронный диск и т. д. При передаче управления между страницами удобно использовать регистр С для записи номера функции (подпрограммы), реализуемой на другой странице. Специальная подпрограмма монитора по номеру функ- ции определит физический адрес перехода и занесет его в регистр H-L. Таким образом, для перехода к различным подпрограммам достаточно использовать единственную точку входа — команду PCHL. Выше были рассмотрены два варианта банков данных с размещением ПЗУ с монитором в начальных адресах памяти. Однако аналогично мож- но организовать более сложные варианты банков данньгх с другими про- граммами: дисассемблером, монитором пользователя, монитором Intellec, MDOS, СР/М и т. д. 4.3. Контроллеры внешних устройств МикроЭВМ-80, как указано на рис. 4.1, включает в себя следующие контроллеры внешних устройств: контроллер прерываний КР580ВН59; контроллер параллельного ввода-вывода КР58ОВВ55 для организа- ции интерфейса ИРПР и обмена данными с микроЭВМ-86; программируемый таймер КР580ВИ53 и контроллер последователь- ного ввода-вывода КР58ОВВ51 для организации интерфейса RS232-C, контроллер НГМД. Контроллер прерываний выполняет обработку аппаратных прерыва- ний по вводу и выводу на несуществующие устройства (IRQO, IRQ!), прерываний от таймера (IRQ2, IRQ3), прерываний от системной ши- ны, устанавливаемых микроЭВМ-86 в процессе обмена данными (IRQ4, IRQ5) . Функцию прерываний IRQ6, IRQ7 устанавливает пользователь (внешние прерывания). Организация параллельного и последовательного ввода-вывода, а также схема подключения к локальным шинам контроллеров прерыва- ний, таймера и контроллеров ввода-вывода подробно рассмотрена в § 3.4. Схема дешифратора внешних устройств приведена на рис. 4.3. Контроллер НГМД является необходимым элементом микроЭВМ в случае, когда предполагается применение операционной системы. В частности, наиболее распространенная в настоящее время операцион- ная система СР/М является дисковой операционной системой, ориенти- рованной на микроЭВМ. Контроллер НГМД, включенный в мик- роЭВМ-80, реализован на 30 микросхемах серий К155, К555, К58О. В настоящее время промышленность выпускает специальный микро- контроллера НГМД КР1818ВГ93, применение которого значительно упро 93
1 Шина Рис. 4.6. Функциональная схема контроллера накопителя на гибких магнитных дисках щает принципиальную электрическую схему одноплатной микроЭВМ. Однако это в определенной степени лишает ее гибкости с точки зрения возможности эмуляции контроллеров других типов. Например, микро- ЭВМ, рассматриваемая в данной главе, легко эмулирует работу как контроллера НГМД К1818ВГ93, так и контроллера 8271 (8272) фирмы Intel. Это обстоятельство может оказаться очень существенным, на- пример, в случае эмуляции системы ввода-вывода персональной ЭВМ IBM-PC. Функциональная схема контроллера устройств внешней памяти на- копителя на НГМД, кассетных или катушечных НМЛ приведена на рис. 4.6. Блок разделения данных и синхронизации необходим для формирования временного окна, в котором данные и синхронизация принимают истинные значения. Окно формируется путем привязки входной импульсной последовательности с головки ГМД к кварцован- ной тактовой частоте 8 МГц. Эта частота в зависимости от плотности записи делится триггерами на 8 (двойная плотность) или 16 (одинар- ная плотность). Кроме временного окна формируется последователь- ность тактовых импульсов, стробирующая достоверные данные и син- хронизацию в сдвиговый регистр данных-синхронизации, который на- ходится в блоке преобразования. Как только в регистре оказываются данные и синхронизация, соот- ветствующие одному из маркеров, триггер ’’маркер определен” уста- навливается в нулевое состояние и включает счетчик синхронизации. Счетчик начинает отсчитывать байты, проходящие через сдвиговый ре- гистр. Каждые восемь тактов байт данных записывается в регистр дан- ных и по команде IN передается в процессор. Чтобы процессор успел 94
принять блок данных, в программе вместо цикла записывается нужное число (128 - число байтов в секторе) команд IN и PUSH. Прием данных из регистра сдвига в регистр данных осуществляется по сигналу RDY, который формируется схемой управления блока пре- образования. При одинарной плотности частота выдачи данных равна 32 мкс, при двойной 16 мкс. За это время процессор читает данные из порта данных, обрабатывает (записывает в стек) и вновь читает порт данных. Поскольку повторное обращение к порту данных происходит раньше чем через 16 мкс, схема управления выставляет сигнал неготов- ности RDY микропроцессору. После приема байта данных в порт данных сигнал неготовности снимается импульсом с выхода счетчика байтов и процессор считывает данные. Далее цикл повторяется до тех пор, пока не будут прочитаны все данные. Процессор обрабатывает полученные данные в соответствии с про- граммой, в результате обработки может быть принято решение о даль- нейших действиях, в частности о таких действиях, как повторный поиск маркера, чтение заголовка, чтение контрольной суммы, чтение стертых данных, запись данных, запись маркера, чтение регистра состоя- ния, выдача регистра состояния, выдача управляющего слова в регистр управления, и других действиях, обусловленных логикой работы с ГМД заданного формата. Под стертыми данными понимаются данные, которые записаны на диск при его инициализации. В этом случае инфор- мация на диске отсутствует, а записанные данные не действительны. Установка режимов работы контроллера производится программным путем через порт 0. Предусмотрены режимы чтения-записи И7?, плот- ности Dvt проверки контрольной суммы CRCRD. Порты 1—6 управляют чтением состояния внешнего устройства, выводом управляющих сиг- налов, снятием и установкой сигнала неготовности и чтением данных. При работе с НГМД: через порт 6 выдаются следующие сигналы управления: LOAD - опустить головку; DISK - выбрать диск (0 - правый, 1 - левый); WRTEN - разрешить запись (1 - чтение, 0 - запись); WRDTA - информация для записи; STPIN - шаг вперед (при 0 больше 5 мкс адрес дорожки увеличивается на 1); STPOT — шаг назад (обратное STPIN); RUN - переход накопителя в активное состояние (1 блокирует все функции накопителя); ERSEN - стирание (при 0); через порт 5 считываются следующие сигналы состояния: INDXL - маркерный сигнал левого диска Т-2,5 мкс (появляется один раз в течение оборота диска) ; INDXR - маркерный сигнал правого диска; 95
LSDA - сигнал поверхности левого диска; RSDA - сигнал поверхности правого диска; НОМЕ - сигнал исходного состояния головки; RDYL — сигнал готовности левого диска; RDYR - сигнал готовности правого диска. Синхронизированная информация DATA поступает на вход блока разделения данных и синхронизации. Данные считываются после преоб- разования через порт 1, записываются через порт 2. Программист может сравнительно просто адаптировать подобный контроллер (только изменением программы) к особенностям записи информации на диски различных форматов. Именно поэтому данную микроЭВМ можно назвать процессором ввода-вывода. Процессор ввода-вывода позволяет управлять любыми внешними устройствами с быстродействием, не превышающим возможности дан- ного процессора по быстродействию (с учетом аппаратной реализации битового процессора, т. е. средств подсчета контрольной суммы, выде- ления маркера и других средств работы с битами). Это значительно расширяет возможности данной одноплатной микроЭВМ при работе с быстродействующими внешними устройствами такими, как гибкие диски 5- и 8-дюймовые, жесткие диски, катушечные и кассетные НМЛ. Для сопряжения процессора ввода-вывода с винчестерским накопителем необходима дополнительная схема (плата) согласования. Программирование функций контроллера позволяет: считывать и записывать любые значения маркеров как данных, так и синхронизации; записывать и считывать преобразованные байты контрольных сумм, что часто используют для защиты информации на дисках от несанкцио- нированного доступа; вести запись и чтение данных на магнитный носитель в произволь- ном формате, удобном пользователю, либо по специальным форматам производителей программного обеспечения; в случае дефектов записи на магнитном носителе детально исследо- вать характер дефекта и степень его влияния на достоверность записи; исключить дефектные участки носителя с целью предотвращения обращения к ним в процессе работы и, следовательно, уменьшения времени доступа.
ГЛАВА 5 СР/М - ОПЕРАЦИОННАЯ СИСТЕМА ДЛЯ МИКРОЭВМ 5-1. Общая характеристика СР/М Система СР/М представляет собой дисковую операционную систему (Control Program/Monitor) для микроЭВМ. Версии СР/М-80 [16], СР/М-86 [17] могут быть использованы практически во всех микро- ЭВМ, построенных на базе микропроцессоров КР58ОИК8ОА, КР58ОВМ8О, или КМ1810ВМ86, КМ1810ВМ88 и имеющих контроллеры НГМД диаметром 5,25 или 8 дюймов. Операционная система СР/М была разработана в 1973 г., но лишь в 1981 г. фирмы IBM и Hewlett Packard выпустили микроЭВМ с СР/М в качестве операционной системы. Операционные системы, совместимые с СР/М, имеют микроЭВМ СМ-1800, ”Океан-240” и др. Как было отме- чено в гл. 1, СР/М сравнительно просто адаптировать к конкретной конфигурации аппаратных средств микроЭВМ. Этому способствуют специальная организация файлов СР/М на ГМД и тщательно продуман- ная процедура модификации блока вызова системы и драйверов внеш- них устройств. Система СР/М размещается в верхней части адресного пространства памяти, нижняя часть, за исключением адресов, выделенных под табли- цу векторов прерываний, используется как область пользователя. Она состоит из трех модулей: базовой системы ввода-вывода (BIOS), базо- вой дисковой операционной системы (BDOS) и процессора консоль- ных приказов (ССР). Базовая система ввода-вывода — это набор подпрограмм, реализую- щих функции управления внешними устройствами конкретной микро- ЭВМ, в том числе дисплеем и НГМД. Такие подпрограммы ввода-вывода создает пользователь, адаптирующий СР/М к своей микроЭВМ. Пример листинга BIOS приведен в [18]. Вызовы подпрограмм BIOS осуществляются только из базовой дис- ковой операционной системы BDOS. Кроме того, BDOS реализует функ- ции управления программными средствами СР/М, в том числе управ- ление файлами на ГМД, управление работой редактора, компиляторов, а также содержит основные функции, к которым может обращаться пользователь. После вызова СР/М с ГМД управление передается процессору кон- сольных приказов ССР, представляющему собой специальную програм- му, загружаемую в верхнюю часть области пользователя. В начале рабо- ты и после выполнения каждого приказа ССР выдает на консоль (эк- ран дисплея) одну из букв алфавита от А до Р, означающую дисковый накопитель, с которым работает в данный момент система, и символ >, который приглашает пользователя ввести новый приказ. Все версии 97
Таблица 2.9. Организация дискеты СР/М (версия 2.0) Дорожка Сектор Адрес памяти Модуль СР/М 0 1 Адрес загрузчика Модуль "холодного старта” 0 2 3400Н Процессор консольных приказов ССР 0 17 ЗВ8ОН 0 18 ЗСООН Базовая дисковая операционная система BDOS 0 26 4000Н 1 1 4080Н 1 19 4980Н 1 20 4А00Н Базовая система ввода-вывода BIOS 1 26 4С80Н 2-76 1-26 - Справочник и данные СР/М-80 и СР/М-86 содержат приказы двух типов: встроенные и транзит- ные. Встроенные приказы позволяют вызвать небольшие программы, постоянно находящиеся в памяти вместе с системой. Такие программы выполняют распечатки файлов, справочников, удаление, запись файлов и некоторые другие работы с дисками. Транзитные приказы не загружа- ются вместе с СР/М; они представляют собой набор системных про- грамм, записанных на диске в виде файлов, имена которых имеют рас- ширение. СОМ. По имени приказа BDOS отыскивает в справочнике со- ответствующий файл, загружает его в область пользователя и передает программе (файлу) управление. С помощью транзитных приказов за- гружаются и выполняются ассемблер, компиляторы с ФОРТРАНА, ПАСКАЛЯ и БЕЙСИКА, а также осуществляется отладка программ, копирование файлов и самой системы и другая работа. В табл. 2.9 приведено распределение секторов дискеты в стандарт- ной СР/М. Первый сектор содержит вспомогательный загрузчик BOOT, который выполняет чтение оставшихся секторов в память, начиная с адреса 3400Н. Для загрузки СР/М можно либо считать этот загрузчик и передать ему управление, либо непосредственно считывать СР/М со второго сектора.
5.2. Генерация ОС СР/М Для адаптации СР/М к аппаратным средствам микроЭВМ пользователя необходимо модифицировать имеющуюся версию BIOS и вставить ее в систему СР/М. В дополнение к BIOS пользователь должен написать загрузчик GETSYS, который размещает систему в памяти, а также про- грамму PUTSYS для записи модифицированной версии СР/М на диск. Ниже приведена процедура вставки нового модуля BIOS в СР/М [18]. Предполагается, что пользователь имеет дискеты с одинарной плот- ностью и емкость памяти не менее 20 Кбайт. Расширение СР/М для мик- роЭВМ с большой емкостью памяти выполняется по специальным при- казам копирования. Этап 1. Написать программу GETSYS чтения первых двух дорожек дискеты в память, начиная с адреса 3380Н. Для подготовки программы можно использовать указанный ниже образец. Образец программы GETSYS чтения двух дорожек дискеты ORC LXI 100H SP, 338OH ; установить указатель стека START: LXI H, 338OH ; установить адрес загрузки MVI B, 0 ; счетчик дорожек = 0 RDTRK: MVI C, 1 ; чтение дорожки счетчик секторов = 1 RDSEC: CALL READ SEC ; подпрограмма чтения сектора LXI D, 128 ; увеличить адрес загрузки DAD D INR C ; сектор = сектор + 1 MOV A, C ; проверка на конец дорожки CPI 27 JC RDSEC ; переход, если сектор < 27 INR В MOV A, В ; проверка номера дорожки CPI 2 JC RDTRK переход, если дорожка < 2 HLT J останов ; подпрограмма пользователя чтения сектора с дискеты READSEC: PUSH В ; сохранение регистров В, С PUSH H сохранение регистра H-L ; чтение сектора и переход на метку START при ошибке чтения POP H ; восстановление H-L POP В ; восстановление В, С RET > возврат в основную программу END Проверить программу GETSYS, используя пустую дискету, затем дискету, инициализированную с помощью СР/М, и убедиться в правиль- ности ее работы. 99
Этап 2. Написать программу PUTSYS записи области памяти, начиная с адреса 3380Н, на первые две дорожки дискеты. Эта програм- ма легко может быть получена из программы GETSYS путем замены нескольких команд. Вместо подпрограммы READSEC следует поме- стить подпрограмму WRITES ЕС записи сектора с номером, находящим- ся в регистре С, на дорожку с номером, находящимся в регистре В. Адрес памяти хранится в регистровой паре H-L. Удобно объединить указанные выше две программы, начав программу PUTSYS с адреса 200Н. Проверить программу PUTSYS, используя пустую дискету, для чего записать на дискету область памяти, стереть память и вновь считать со- держимое первых двух дорожек дискеты. Эта программа будет ис- пользоваться для записи СР/М с версией BIOS пользователя, поэтому проверка должна быть выполнена особо тщательно. Этап 3. Написать простую версию BIOS, которая выполняет про- стейшие дисковые операции и функции ввода символов с клавиатуры и вывод символов на дисплей. В качестве модели можно использовать заготовку BIOS, приведенную в следующем разделе. В идеальном слу- чае желательно изучить имеющуюся версию BIOS СР/М или аналогичной системы в ОС-1800 и модифицировать ее для существующего обору- дования. Проверить новую версию BIOS, выполнив операции чтения-записи на дискету и ввод-вывод символов на дисплей. При этом строго следить за тем, чтобы не было случайной записи на диск и проверялись адреса дорожек и секторов при всех операциях чтения-записи. Подобные ошиб- ки могут привести к разрушению вновь созданной версии СР/М при ее работе. Как видно из табл. 2.9, BIOS имеет адреса с 4А00Н до 4FFFH. Чтобы получить новую версию СР/М, необходимо с помощью программы GETSYS прочитать СР/М и заменить сегмент BIOS на новый. Эта замена делается в машине, используя, например, команды монитора пользова- теля. После этого с помощью программы PUTSYS записать на пустую дискету СР/М для ее последующей проверки. Этап 4. С помощью программы GETSYS загрузить новую СР/М в память, начиная с адреса 338Н, и проверить правильность загрузки. Передать управление на программу ’’холодного старта”, находящуюся с адреса 4А00Н. Эта программа инициализирует начальные адреса па- мяти (нулевую страницу) и передает управление на процессор консоль- ных приказов ССР по адресу 3400Н, который в свою очередь вызовет BIOS пользователя. При этом ССР прочитает 16 секторов на второй дорожке дискеты (справочник) и выдаст на дисплей символы А >, которые означают запрос на ввод команды оператора. Если эти символы не выведены на экран, то необходимо любыми средствами отладки проследить выполнение функций ввода-вывода 100
символов в BIOS пользователя, используя остановы в соответствующих подпрограммах. Этап 5. Проверить функции записи данных на дискету, выдав ко- манду SAVE 1 Х.СОМ. При правильной записи СР/М вновь ответит запро- сом А >. В противном случае необходимо отладить подпрограмму за- писи в BIOS. Затем можно проверить команду выдачи справочника DIR; СР/М выдаст на дисплей А: X СОМ. Удалим файл Х.СОМ с помощью команды ERA Х.СОМ. Система СР/М должна ответить новым запросом на ввод команды. Этап 6. Написать программу вспомогательного загрузчика, модер- низировав для этого программу GETSYS, и записать его с помощью программы PUTSYS в первый сектор нулевой дорожки дискеты. Про- верить работу загрузчика, затем нажать управляющий код CONTROL-C, при этом выполняется ’’теплый старт” (реинициализация СР), в ре- зультате которого на экран выдается запрос А >. На этом этапе мож- но перенести новую версию СР/М на дискету с системными програм- мами (редактором, ассемблером, компиляторами и другими програм- мами). Для этого на дисковод поставить имеющуюся копию СР/М и с помощью программы PUTSYS заменить на этой дискете первые две дорожки. Дэя проверки модифицированной версии СР/М введите с клавиа- туры команду DIR; СР/М выдаст на экран справочник файлов. В даль- нейшем можно использовать текстовый редактор ED, ассемблер ASM, отладчик DDT для модификации BIOS. В частности, в BIOS можно ввести дополнительные функции работы со вторым дисководом и другими устройствами ввода-вывода, на которые имеет выход одно- платная микроЭВМ. Модифицированные версии BIOS, а также загруз- чика BOOT необходимо транслировать с помощью ASM; в результате на дискету будут записаны файлы BIOS.HEX и BOOT.HEX. Этап 7. Второй уровень генерации СР/М. На этом этапе можно сде- лать конфигурацию СР/М для всей имеющейся у микроЭВМ памяти. Модификация СР/М в этом случае сводится к перемещению на новые адреса с соответствующей коррекцией команд. Например, для памяти емкостью 64 Кбайт к адресам добавляется смещение, равное 64 К — - 20 К = 44 К = B000H. Для перемещения СР/М используется специаль- ный приказ MOVCPM хх, где хх - размер памяти в килобайтах (десятичное число). Ответ СР/М следующий: CONSTRUCTING ххКСР/М VERS 2.0 READY FOR ’’SYSGEN” OR ’’SAVE 34 CPMxx.COM”. 101
В этот момент в области памяти, начиная с адреса 0900Н размещен об- раз СР/М (загрузчик BOOT с адреса 0900Н, модуль ССР с адреса 0980Н, модуль BDOS с адреса 1180Н, модуль BIOS с адреса 1F80H по адрес 227FH). Но этот образ содержит исходный BIOS и загрузчик BOOT, поэтому необходимо сохранить новую конфигурацию системы в фай- ле для того, чтобы с помощью отладчика DDT вставить в нее необхо- димые модули BIOS и BOOT. Сохранение обеспечивает команда SAVE 34CPMxx.COM, Загрузка образа системы для его проверки и отладки выполняется с помощью команды вызова отладчика DDT CPMxx.COM. При просмотре и дисассемблировании образа СР/М следует учиты- вать, что к реальным адресам необходимо прибавить смещение п = = 980Н — 3400Н = D580H (по модулю 216). Для загрузчика смещение можно вычислить по формуле m = 900Н — А, где А — адрес загрузчика пользователя. В отладчике DDT предусмотрена команда Нх, у, которая вычисляет сумму х + у и разность х — у 16-ричных чисел х и у. С помощью команды IBOOT.HEX ввести файл BOOT.HEX, получен- ный на этапе 6, затем переместить его на нужные адреса по команде Rm. Для контроля можно дисассемблировать загрузчик с помощью команды L900. Аналогичные операции выполняем для замены BIOS. По команде IBIOS.HEX подготавливаем для загрузки файл BIOS.HEX, полученный на этапе 6, и перемещаем его по команде RD580. Для контроля дисас- семблируем область памяти с новой BIOS с помощью команды L1F80. Выход из отладчика — команда GO или ввод управляющего символа CONTROL-C. Для записи исправленного образа СР/М на дискету используем при- каз SYSGEN так, например, как в следующем диалоге: SYSGEN - запуск программы SYSGEN VERSION 2.0 - ответ системы после запуска SOURCE DRIVE NAME (OR RETURN ТО SRIP) - запрос имени файла или возврат каретки для пропуска имени (нажи- маем возврат каретки, поскольку система уже в памяти) DESTINATION DRIVE NAME (OR RETURN TO REBOOT) - запрос имени устройства или воз- врат каретки для перезапуска (на- жимаем В, указывая дискету В) DESTINATION ON В, THEN TYPE RETURN - установить дискету на дисковод В и нажать возврат каретки 102
FUNCTION COMPLETE - функция выполнена DESTINATION DRIVE NAME (OR RETURN TO REBOOT) - запрос имени устройства или воз- врат каретки для перезапуска (перемещаем дискету в дисковод А и выполняем ’’холодный старт” для загрузки СР/М) Конфигурация СР/М для микроЭВМ с емкостью памяти, отличной от 64 Кбайт, получается аналогично. 5.3. Программирование системы ввода-вывода Базовая система ввода-вывода СР/М состоит из 17 основных программ, вход в которые осуществляется по вектору переходов из 17 команд безусловного перехода, расположенному по адресу 4А00Н (+ смеще- ние, если создана конфигурация СР/М на память, большую 20 Кбайт). Часть программ (особенно на этапе начальной генерации СР/М) могут быть пусты, т. е. содержать единственную команду RET, но их входы должны быть представлены в векторе переходов. Ниже рассмотрены функции основных программ BIOS. BOOT - программа ’’холодного старта”. Инициализирует систему и передает управление в ССР по адресу 3400Н. Регистр С должен быть установлен в 0 для выбора дисковода А WBOOT - программа ’’теплого старта”. Передача управления на эту про- грамму осуществляется каждый раз, когда программа пользо- вателя передает управление по адресу 0000Н или когда микро- ЭВМ сброшена в начальное состояние нажатием клавиши ’’сброс”. Система загружается с первых двух дорожек диске- ты с дисковода А. Программа должна установить следующие значения начальных ячеек: 0000Н-0002Н: команда JMP WBOOT (СЗ 4А03Н) для ’’теплого старта”, 0003Н : ячейка для установления соответствия между логическими и физическими устройствами 0005Н-0007Н: команда JMB BDOS (СЗ 3C00H) для входа в СР/М из транзитных программ По окончании инициализации программа WBOOT передает управление в ССР (по адресу 3400Н) при перезапуске СР/М. Регистр С указывает на дисковод, который выбран при ини- циализации CONST - запрос состояния консоли. В регистр А записывается FFH, если есть символ для ввода, и ООН в противном случае CONIN - чтение символа с консоли в регистр А и сброс признака чет- ности (старший бит) в нуль. При отсутствии символа проис- ходит ожидание 103
CONOUT LIST PUWCH READER HOME SELDSK SETTRK SETSEC SETDMA READ - передача символа из регистра С на консоль с признаком чет- ности. равным нулю. Эта программа может также реагиро- вать на управляющие символы (стирать экран и т. п.) - передача символа из регистра С в печатающее устройство - передача символа из регистра С в устройство вывода - чтение символа из устройства ввода в регистр А; оконце файла сообщается выдачей управляющего символа CONTROL-Z (1АН) - возврат головки дисковода на нулевую дорожку. Эта про- грамма эквивалентна вызову программы SETTRK с пара- метром О - выбор дисковода, указанного в регистре С (0 - дисковод А, 1 - дисковод В и т. д. до 15 для дисковода Р). В ре- гистр H-L загружается адрес области памяти (заголовок диска), содержащей следующие данные: XLT - адрес вектора перевода логических и физических номеров секторов или 0000Н, если перевод не осуществляется (2 байт) 0000 - рабочие ячейки для BDOS (6 байт) DIRBUF - адрес области памяти (128 байт) для операций со справочником (2 байт) DPB - адрес области блока параметров диска (см. модель BIOS), (2 байт) CSV - адрес области памяти для работы с дис- ком (2 байт) ALV - адрес области памяти для хранения ин- формации о распределении секторов на диске (2 байт) При выборе несуществующего дисковода в регистр H-L засылается код ошибки 0000Н - установка дорожки с номером, записанным в регистре В-С. Можно установить дорожку при обращении к этой программе или отложить установку до момента реального чтения или записи на дискету - установка сектора с номером, записанным в регистре В-С. Можно выдать номер сектора контроллеру или отложить эту операцию до реального обращения к диску - установка адреса для организации прямого доступа в па- мять. Адрес указывается в регистре В-С. Начальное значе- ние адреса - ЙОН. Если микроЭВМ не имеет контроллера прямого доступа в память, а ввод-вывод реализован через порты, то область памяти, заданную программой, можно использовать в качестве буфера для последующих операций чтения-записи - чтение одного сектора с выбранного диска и дорожки в область памяти с адресом, указанным программой SETDMA. 104
Регистр А используется для возврата кода состояния: 0 - операция завершена, 1 - неустранимая ошибка. BIOS должна делать не менее десяти попыток чтения, чтобы убе- диться, что операция невозможна. В случае появления ошиб- ки BDOS выдает сообщение BDOS ERR ONx: BAD SECTOR. Оператор может игнорировать ошибку, нажав кла- вишу "возврат каретки”, или закончить работу, нажав CONTROL-C WRITE - запись данных из области памяти с адресом, указанным про- граммой SETDMA, в сектор. Код состояния также выдается через регистр А. Необходимо сделать несколько попыток за- писи, чтобы убедиться,что операция невозможна LISTST - проверка готовности печатающего устройства к приему сим- вола. При готовности в регистр А записывается 00, при него- товности - код FFH SECTRAN - перевод логического номера сектора в физический. Версия 2.0 СР/М использует множитель смещения,-равный 6, что со- ответствует пропуску 6 физических секторов между двумя последовательными операциями чтения-записи. Это необхо- димо для того, чтобы программа успела переписать или за- грузить буферную память за время прогона между секто- рами. В микроЭВМ с быстродействующими процессором и дисководом это смещение может быть изменено с целью со- кращения времени работы с дисками. Программа SECTRAN получает логический номер сектора в регистре В-С, адрес таблицы перевода в регистре D-Е, и выдает физический номер сектора в регистре H-L Система СР/М работает с четырьмя типами периферийных устройств: пультом оператора (консоль) — это дисплей или телетайп, печатающим устройством, устройством ввода и устройством вывода. Последние три устройства могут отсутствовать, при этом BIOS должна выдать сообщение об ошибке при обращении программы PIP или другой про- граммы к несуществующему устройству. В этом случае программы PUNCH и LIST могут состоять из одной команды RET, а программа READER в качестве результата выдавать символ CONTROL-Z (1АН), который означает конец файла. Система СР/М имеет приказ STAT для присвоения периферийному устройству его логического номера. Эту функцию дополнительно мож- но ввести в программу BOOT, которая инициализирует ячейку 0003Н, содержащую следующую информацию: биты 0-1: пульт оператора 0 - пультом является телетайп (TTY:) 1 - пультом является дисплей (CRT.) 2- пакетный режим: функции устройства ввода и печатающего устройства выполняет пульт оператора (ВАТ:) 105
3 - пульт оператора назначается пользователем (UC1:) биты 2-3: устройство ввода ' 0- устройством ввода является телетайп (TTY:) 1 - устройством ввода является устройство ввода с перфоленты (RDR.) 2 - устройство ввода назначается пользователем (UR1:) 3 - устройство ввода назначается пользователем (UR2:) биты 4-5: устройство вывода О - устройством вывода является телетайп (TTY:) 1 - устройством вывода является перфоратор (PUN:) 2 - устройство ввода назначается пользователем (UP1:) 3 - устройство ввода назначается пользователем (UP2:) биты 6-7: печатающее устройство О - печатающим устройством является телетайп (TTY:) 1 - печатающим устройством является дисплей (CRT:) 2 - печатающим устройством является построчное печатающее устройство (LPT:) 3 - печатающее устройство назначается пользова- телем (UL1:) Для микроЭВМ с минимальным числом периферийных устройств эту функцию можно не реализовывать. Кроме ячейки для изменения конфигурации периферийных устройств, указанной выше, нулевая страница содержит данные, используемые при работе СР/М. Эти дан- ные приведены, например, в [18] и могут быть использованы пользо- вателем при разработке BIOS. 5.4. Модель системы ввода-вывода В данном параграфе приведена модель BIOS, которую можно исполь- зовать для написания первой версии BIOS. В модели реализованы простейшие функции, которые можно отладить с помощью монитора или с пульта микроЭВМ. В программах CONST, CONIN, CONOUT, READ, WRITE зарезервировано место для сегментов, работающих с устройствами пользователя. В программах можно использовать ячейки 0040H-004FH. В дальнейших версиях можно более тщательно обрабатывать ошибки, реализовать программы LIST, PUNCH, READER, а также ввести функцию изменения конфигурации периферийных устройств, если это необходимо.
; модель BIOS для СР/М версии 2.0 0014 MSIZE EQU 20 ; емкость памяти ; BIAS - 20 Кбайт смещение от адреса 3400Н для СР/М с емкостью 0000 памяти, отличной от 20 Кбайт BIAS EQU (MSIZE- 20) * 1024 3400 ССР EQU 3400Н+ BIAS ; адрес ССР ЗС06 BDOS EQU ССР + В06Н ; адрес BDOS 4А00 BDIOS EQU ССР+1600Н ; адрес BIOS 0004 CDISK EQU 0004Н ; номер диска (0- А,... 0003 IOBYTE EQU 000 зн 15—Р) ; байт конфигурации 4АОО ORG BIOS ; начало BIOS 002С NSECTS EQU (X -ССР)/128 ; счетчик секторов для 4А00 С39С4А ; вектор переходов на программы JMP BOOT ; горячего загрузчика ; холодный загрузчик 4А03 СЗА64А WBOOTE: JMP WBOOT ; горячий загрузчик 4А06 С3114В JMP CONST ; состояние коисоли 4А09 С3244В JMP CONIN ; ввод символа с кон- 4А0С С3374В JMP CONOUT соли ; вывод символа на 4А01 С3494В JMP LIST консоль ; печать символа 4А12 C34D4B JMP PUNCH ; вывод символа 4А15 C34F4B JMP READER ; ввод символа 4Al 8 C3544B JMP HOME ; установка головки 4A1BC35A4B JMP SELDSK в начало ; выбор дисковода 4A1EC37D4B JMP SETTRK ; установка дорожки 4A21 C3924B JMP SETSEC ; установка сектора 4A24 C3AD4B JMP SETDMA ; установка адреса ПДП 4A27 C3C34B JMP READ ; чтение с диска 4A2A C3A64B ' JMP WRITE ; запись на диск 4A2C C34B4B JMP LISTST ; состояние принтера 4A30 C3A74B JMP SF.CTRAN ; перевод сектора ; таблицы для четырех дисководов с 8-дюймовыми дисками 4A33 734A0000 ; заголовок диска 00 DPBASE DW TRANS, 0000H 4A37 00000000 4A3B F04C8D4A DW DW OOOOH, 0000H DIRBF, DPBLK 4A3F EC4D704D DW CHK00, ALLOO ; заголовок диска 01 4А43 734А0000 DW 4А47 00000000 DW 4A4B F04C8D4A DW TRANS, OOOOH OOOOH, OOOOH DIRBF, DPBLK 4A4F FC4D8F4D DW CHK01, ALL01 107
; заголовок диска 02 4А53 734А0000 DW TRANS, 0000Н 4А57 00000000 DW 0000Н, ООООН 4А5В F04C8D4A DW DIRBF, DPBLK 4A5F0C4EA4D DW СНК02, ALL02 заголовок диска 03 4А63 734А0000 DW TRANS, ООООН 4А67 00000000 DW П000Н, ООООН 4А6В F04C8D4A DW DIRBF, DPBLK 4A6F 1C4ECD4D DW CHKOj, ALL03 таблица перевода секторов 4А73 01070D13 TRANS: DB 1,7, 13, 19 ; сектора 1-4 4А77 19050В11 DB 25,5, 11, 17 ; сектора 5-8 4А7В 1703090Е DB 23,3,9, 15 ; сектора 9-12 4A7F 1502080Е DB 21,2 8,14 ; сектора 13-16 4А83 141А060С DB 20, 26,6, 12 ; сектора 17-20 4А87 1218040А DB 18, 24,4, 10 ; сектора 21-24 4А8В 1016 DB 16,22 ; сектора 25, 26 таблица параметров, общих для всех дисков 4A8D 1А00 DBBLK: DW 26 ; число секторов на дорожке 4A8F 03 DB 3 ; смещение блока 4А90 07 DB 7 ; маска блока 4А91 00 DB 0 ; нуль-маска 4A92F200 DW 242 ; емкость диска 4А94 3F00 DW 63 ; длина справочника 4А96 СО DB 192 ; распределение 0 4А97 00 DB 0 ; распределение 1 4А98 1000 DW 16 ; контрольная длина 4А9А 0200 DW 2 ; смещение дорожки 5 программы системы ввода-вывода BOOT: ; простейший случай: инициализация параметров 4А9С AF XRA А ; нуль в аккумулятор 4A9D 320300 STA IOBYTE ; очистка байта конфи- гурации 4АА0 320400 STA CDISK ; выбор нулевого диска 4ААЗ C3EF4A IMP GOCPM ; переход в СР/М WBOOT: ; простейший случай: чтение всех секторов 4АА6 318000 LXI SP, 80Н ; стек перед буфером 4АА9 0Е00 MVI С, 0 ; выбор диска 0 4ААВ CD5A4B CALL SELDSK 4AAECD544B call НОМЕ ; установка 0 дорожки 4АВ1062С MVI В, NSECTS ; В - счетчик секторов 4АВЗ 0Е00 MVI С, 0 ; С - текущая дорожка 4АВ5 1602 MVI D, 2 ; D - следующий сек- тор пропускается холодный загрузчик в секторе 1 4АВ7 210034 108 LX1 Н, ССР ; начальный адрес СР/М
LOAD1: ; чтение одного сектора 4АВА С5 PUSH В ; сохранить счетчики 4АВВ D5 PUSH D ; сохранить номер сек- тора 4АВСЕ5 ' PUSH Н ; сохранить адрес 4ABD 4А MOV С, D ; С адрес сектора 4 ABE CD924B CALL SETSEC ; установка сектора 4АС1 Cl POP В ; адрес в В-С ( 4AC2 C5 PUSH В ; адрес вновь в стек 4AC3 CDAD4B CALL SETDMA ; установка адреса ПДП 4AC6 CDC34B CALL READ ; чтение сектора 4AC9 FE00 CPI ООН ; есть ошибка? 4ДСВ C2A64A JNZ WBOOT ; повторить загрузку при сбое ; нет ошибки чтения, переход к следующему сектору 4 ACE El POP Н ; восстановить адрес 4ACF 118000 LXI D, 128 ; адрес = адрес + 128 4AD2 19 DAD D ; H-L - новый адрес 4AD3D1 POP D ; восстановить сектор 4AD4C1 POP В ; восстановить число секторов 4AD5 05 DCR В ; сектор = сектор - 1 4AD6 CAEF4A JZ GOCPM ; переход в СР/М по концу ; продолжить чтение секторов 4AD9 14 INR D 4ADA7A MOV A, D ; сектор =27? 4ADB FE1B CPI 27 4ADDDABA4A JC LOAD1 ; переход, если сектор < < 27 ; конец дорожки 4AE0 1601 MVI D, 1 ; первый сектор дорож- ки 4AE2 ОС INR С ; дорожка = дорожка + + 1 ; сохранить регистры и сменить дорожку 4AE3 C5 PUSH В 4AE4 D5 PUSH D 4AE5 E5 PUSH Н 4AE6CD7D4B CALL SETTRK ; установка дорожки 4AE9 El POP Н 4AEA DI POP D 4AEB Cl POP В 4AEC C3BA4A IMP LOAD1 ; переход на чтение сек- тора ; конец загрузки, установка параметров и переход в СР/М 4AEF 3EC3 GOCPM: MVI А, ОСЗН ; СЗ - команда перехо- да 109
4AF1 320000 STA 0 ; на горячий загрузчик 4AF4 21034А LXI Н, WBOOTE ; адрес загрузчика 4AF7 220100 SHLD 1 ; адрес в ячейку 0001 4AFA 3 2 0500 STA 5 ; для перехода к BDOS 4AFD 21063С LX1 Н, BDOS ; адрес BDOS 4ВОО 220600 SHLD 6 ; адрес в ячейку 0006 4В03 01800 LXI В, 80Н , по умолчанию 80Н - адрес буфера 4В06 CDAD4B CALL SETDMA 4В09 FB EI ; разрешение преры- вания 4B0A 3A0400 LDA CDISK ; выбор текущего диска 4B0D 4F MOV С, А ; С - текущий диск 4B0E C30034 JMP ССР ; переход в СР/М для работы ; простейшие подпрограммы ввода-вывода ; указаны точки входа и места для вставки команд CONST: ; состояние консоли; ; OFFH - есть символ 4В11 DS ЮН ; место для подпро- граммы 4В21 ЗЕОО MVI А, ООН 4В23 С9 RET CONIN: ; символ с консоли в регистр А 4В24 DS ЮН ; место для подпро- граммы 4В34 E67F ANI 7FH ; опустить бит чет- ности 4В36 С9 RET CONOUT: ; символ на консоль из регистра А 4В37 79 MOV А, С ; символ в аккуму- лятор 4В38 DS ЮН ; место для под- программы 4В48 С9 RET LIST: ; печатать символ из регистра С 4В49 79 MOV А, С ; символ в акку- мулятор 4В4А С9 RET ; пустая подпро- грамма LISTST: ; состояние печатающего устройства 4В4В AF XRA А ; 0 - готовность 4В4СС9 RET PUNCH: ; вывод символа из регистра А 4B4D79 MOV А, С ; символ в акку- мулятор 4B4F С9 RET ; пустая подпро- READER ; ввод символа в регистр А грамма 4B4F ЗЕ1А MVI А, 1АН ; конец файла ПО
4В51 E67F ANI 7FH ; опустить бит четности 4В53 С9 RET ; подпрограммы чтения и записи на диск НОМЕ: ; установка 0 дорожки текущего дисковода 4В54 0Е00 4В56 CD7D4B 4В59 С9 MVI CALL RET С, 0 SETTRK ; установка дорожки 0 SELDSK: ; выбор дисковода, указанного в регистре С 4В5А 210000 LXI H, OOOOH ; кодошибки 4B5D79 MOV А, С 4В5Е 32EF4C STA DISKNO 4В61 FE04 CPI 4 ; должен быть от 0 до 3 4В63 D0 RNC ; возврат, если 4 и боль- ше 4В64 DS 10 ; место для подпро- граммы ; вычисление адреса заголовка диска 4В6Е 3AEF4C LDA DISKNO 4В716F MOV L, А ; L - номер диска 4В72 2600 MVI Н, 0 ; Н - нуль 4В74 29 DAD н ;* 2 4В75 29 DAD н ; * 4 4В76 29 DAD н ; * 8 4В77 29 DAD н ;* 16 (длина заголовка) 4В78 11334А LXI D, DPBASE 4В7В 19 DAD D ; H-L - адрес заголовка 4В7СС9 RET SETTRK: ; установка дорожки, указанной в С 4B7D79 MOV А, С 4В7Е 32Е94С STA TRACK 4В81 DS ЮН ; место для подпро- граммы 4В91 С9 RET SETSEC: ; установка сектора, указанного в С 4В92 79 MOV А, С 4В93 32ЕВ4С STA SECTOR 4В96 DS ЮН ; место для подпро- граммы 4ВА6 С9 RET SECTRAN: ; перевод сектора по таблице 4ВА7 ЕВ XCHG ; H-L - адрес таблицы 4ВА8 09 DAD В ; H-L - адрес сектора 4ВА9 6Е MOV L, М ; L - номер сектора 4ВАА 2600 MVI Н, ООН ; H-L - номер сектора 4ВАСС9 RET ; значение в H-L SETDMA: ; установка адреса прямого доступа 4BAD 69 MOV L, С ; младшая часть адреса 111
4ВАЕ 60 MOV Н, В ; старшая часть адреса 4BAD 22ED4C SHLD DMAAD сохранение адреса 4ВВ2 DS ЮН ; место для подпро- граммы 4ВС2 С9 RET READ: ; выполнить чтение с диска ; подпрограммы чтения и записи имеют общую часть ; за исключением команд чтения и записи, поэтому ; оставлено место для формирования этих команд 4ВСЗ DS ЮН ; формирование коман- ды чтения 4BD3 СЗЕ64В JMP WAITIO ; на фактический ввод- вывод WRITE: ; выполнить запись на диск 4BD6 DS ЮН ; формирование коман- ды записи ; общая часть программ чтения и записи ; 0 в регистре А - операция выполнена, 1 - ошибка ; в случае ошибки в ячейке DISKNO сохраняется ; иомер диска, в TRACK - номер дорожки, в SECTOR- ; номер сектора, в DMAAD - адрес памяти 4ВЕ6 DS 256 ; место для драйвера диска 4СЕ6 ЗЕ01 MVI А, 1 ; ошибка 4СЕ8С9 RET ; далее следует неинициализированная область данных, ; которая не должна занимать память, отведенную под ; СР/М, а должна располагаться между BEGDAT и ; ENDDAT 4СЕ9 TRACK: DS 2 ; номер дорожки 4СЕВ SECTOR: DS 2 ; номер сектора 4CED DMAAD: DS 2 ; адрес прямого досту- па в память 4CEF DISKNO: DS 1 ; номер диска (0-15) ; область данных для BIOS 4CF0 BEGDAT EQU XX ; начало области данных 4 CFO DIRBF: DS 128 ; область справочника 4D70 ALL00 DS 31 ; вектор размещения 0 4D8F ALL01 DS 31 ; вектор размещения 1 4 DAE ALL02 DS 31 ; вектор размещения 2 4DCD ALL03 DS 31 ; вектор размещения 3 4 DEC CHK00 DS 16 ; вектор контроля 0 4DFC CHK01 DS 16 ; вектор контроля 1 4E0C CHK02 DS 16 ; вектор контроля 2 4E1C CHK03 DS 16 ; вектор контроля 3 4EC2 ENDDAT EQU XX ; конец области данных 013C DATSIZ EQU XX - BEGDAT ; длина области данных END 112
5.5. Приказы СР/М Возможности СР/М-80 и СР/М-86 легко оценить, просмотрев приведен- ный ниже перечень встроенных и транзитных приказов. ASM имя-файла. тип/опции - ассемблирование указанного файла с учетом заданных опций. DDT DDT - загрузка динамического отладчика. имя-файла. тип - загрузка динамического отладчика вместе с файлом, который необходимо модифицировать или выпол- нить. DIR X: - вывод на экран дисплея справочника всех файлов, кото- рые находятся на накопителе X. DIR X: имя-файла.тип - вывод на экран дисплея справочника всех файлов, которые находятся на накопителе DIR X и имена которых совпадают с заданными однозначно или неоднознач- но именами ”имя-файла.тип”. DIRS DUMP - вывод на экран дисплея имен системных файлов. X: имя-файла.тип - вывод на дисплей файла ”имя-файла. тип”, который находится на накопителе X, в 16-ричном представлении побайтно ED имя-файла.тип - вызов редактора для редактирования файла ’’имя-файл а.тип”. ERA GENCMD имя-файла.тип - стирание файла с диска файла с диска имя-файла - преобразование файла объектных кодов ти- па. Н86 в выполняемый файл типа.СМО. LOAD имя-файла - считывание файла типа . HEX и образование файла типа.СОМ. MOVCPM - подготовка новой копии операционной системы СР/М, кото- рая использует всю доступную память, при этом запись на диск новой копии операционной системы не производится. MOVCPM nn - подготовка новой копии операционной системы СР/М, кото- рая использует пп Кбайт оперативной памяти, запись новой копии СР/М на диск не производится. MOVCPM ** - подготовка новой копии СР/М, которая занимает всю до- ступную память и может быть сохранена на диске приказа- ми SYSGEN или SAVE. MOVCPM пп **-- подготовка новой копии СР/М, которая занимает пп Кбайт оперативной памяти и может быть сохранена на диске при- казами SYSGEN или SAVE. PIP PIP - загрузка и работа с программой управления файлами PIP. командная-строка - вызов PIP, выполнение указанной командной строки и возврат в СР/М. REN новое-имя-файла.тип-старое-имя-файла.тип - переимено- вание файла. SAVEnnnX: имя-файла - запись части транзитной области памяти раз- мером ппп страниц в файл ”имя-файла” на накопитель X. 113
Продолжение вывода STAT - вывод на дисплей атрибутов и областей свободной памяти всех накопителей, к которым было обращение с момента загрузки системы или выполнения команды RESTART. STATX: - вывод на дисплей атрибутов и областей свободной па- мяти накопителя X. STAT X: имя-файла/атрибут - присвоение атрибута файлу на нако- пителе X. STATX: имя-файла - вывод на дисплей атрибутов файла имя-файла на накопление X. STAT DEV STAT VAL: - вывод на дисплей информации о логических устройствах. - вывод на дисплей информации о возможных назначениях устройств и частичная сводка команд STAT. STAT логич.-физич. - присвоение устройству с физическим но- мером ’’физич.” логического номера ’’логич.” вывод на дисплей текущего номера пользователя, а также всех но- меров пользователей, для которых имеются файлы на текущем зарегистрированном диске. STAT X: DSK:- вывод на дисплей характеристик накопителя X. STATX: R/O - установка временного состояния защиты памяти. SUBMIT имя-файла - образование файла $ $ L„ SUB, который содер- жит команды, перечисленные в файле ”имя-файла. SUB”, после чего СР/М выполнит эти команды. SUBMIT формальные параметры/фактические параметры - образова- ние файла $$L.SUB, который содержит команды, перечис- ленные в файле ’’имя-файла.ЗиВ”, при этом формальные па- раметры, затем СР/М выполняет эти команды. SYSGEN - загрузка программы SYSGEN с целью переноса операцион- ной системы с одного диска на другой. TOD опции USERn TYPE X. - установка или вывод на дисплей даты и времени. - установка номера пользователя п (0-15). имя-файла.тип - вывод на дисплей файла с накопителя X. Более детальное описание функций, методов работы с файлами, ком- пиляторов и других возможностей СР/М можно найти в [13] и фир- менных руководствах по СР/М-80 [16] и СР/М-86 [17].
ПРИЛОЖЕНИЕ 1 СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА K1R10BM66 (В ШЕСТНАДЦАТЕРИЧНОЙ СИСТЕМЕ СЧИСЛЕНИИ) КОД КОМАНЛЬ ( ОПЕРАЦИЯ ОПЕРАНД НАЗНАЧЕНИЕ 00 MOD REG h/M ADD EA,REG СЛОЖЕНИЕ БАЙТ, РЕЗУЛЬТАТ В ЕД 01 MOO REG R/M ADD EA/REG СЛОЖЕНИЕ СЛОВ, РЕЗУЛЬТАТ 8 ЕА 02 MOD REG k/M ADD REG/EA СЛОЖЕНИЕ БАЙТ, РЕЗУЛЬТАТ В REG 03 MOD REG R/M ADD REG,EA СЛОЖЕНИЕ СЛОВ, РЕЗУЛЬТАТ В REG 04 ADD AL/DATA6 СЛОЖЕНИЕ БАЙТ, РЕЗУЛЬТАТ 8 AL 05 ADD AX/DATA16 СЛОЖЕНИЕ СЛОВ, РЕЗУЛЬТАТ В АХ 06 PUSH LS ПРОТАЛКИВАНИЕ 8 СТЕК (ЕЗ) 07 POP E3 ВЫТАЛКИВАНИЕ ИЗ СТЕКА В ез 08 MOD REG R/M OR EA/REG ЛОГИЧЕСКОЕ СЛОЖЕНИЕ БАЙТ 09 MOO REG R/M UR EA/REG ЛОГИЧЕСКОЕ СЛОЖЕНИЕ СЛОВ 0A MOO REG R/M OR REG,EA 0B MOD REG R/M UR REG,EA 0C OR AL/DATA6 0D OR AX,0ATA8 0E PUSH CS ПРОТАЛКИВАНИЕ В СТЕК (CS) 0F (HE ИСПОЛЬЗУЕТСЯ) 10 MOO REG k/M ADC EA/REG СЛОЖЕНИЕ С CF БАЙТ 11 MOD REG k/M ADC EA,REG СЛОЖЕНИЕ С CF СЛОВ 12 MOO REG R/M ADC kEG,EA 13 MOO REG k/M ADC REG/EA 14 ADC AL/DATA0 IS ADC AX/DATA16 16 PUSH SS ПРОТАЛКИВАНИЕ В СТЕК (SS) 17 POP SS ВЫТАЛКИВАНИЕ ИЗ СТЕКА 8 S3 IB MOO REG R/M S88 EA/REG ВЫЧИТАНИЕ С CF БАЙТ 19 MOD REG R/M S8B EA/REG ВЫЧИТАНИЕ С CF СЛОВ 1A MOD REG k/M S8B REG,EA IB MOO REG R/M sets REG,EA 1C SBB AL/DATA6 ID SBB AX/DATA16 IE PUSH DS ПРОТАЛКИВАНИЕ В СТЕК (DS) If POP DS ВЫТАЛКИВАНИЕ ИЗ СТЕКА В D3 20 MOD REG R/M AND EA/REG ЛОГИЧЕСКОЕ УМНОЖЕНИЕ БАЙТ 21 MOO REG k/M AND EA/REG ЛОГИЧЕСКОЕ УМНОЖЕНИЕ СЛОВ 22 MOO REG k/M AND REG,EA 23 MOD REG k/M AND REG/EA 24 AND AL/DATA0 25 AND AX/0ATA16 26 ES: СМЕНА СЕГМЕНТНОГО РЕГИСТРА НА ЕЗ 27 DAA ДЕСЯТИЧНАЯ КОРРЕКЦИЯ ДЛЯ СЛОЖЕНИЯ 20 MOD REG R/M SUB EA,REG ВЫЧИТАНИЕ БАЙТ 29 MOD REG k/M SUB EA/REG ВЫЧИТАНИЕ СЛОВ 2A MOD REG R/M SUB REG/EA 2B MOD REG k/M SUB REG,EA 2C SUB AL/DATA6 20 sub AX,DATA16 2E CS: СМЕНА СЕГМЕНТНОГО РЕГИСТРА НА CS 2F DAS ДЕСЯТИЧНАЯ КОРРЕКЦИЯ ДЛЯ ВЫЧИТАНИЯ 30 MOO REG k/M XDR EA/REG ИСКЛЮЧАЮЩЕЕ ИЛИ БАЙТ 31 MOO REG R/M XOR EA/REG ИСКЛЮЧАЮЩЕЕ ИЛИ СЛОВ 32 MOO REG R/M XOR REG/EA 33 MOD REG R/M XOR REG,EA 34 XOR AL,DATAB 35 XOR AX/DATAlb 36 SS: СМЕНА СЕГМЕНТНОГО РЕГИСТРА НА S3 37 AAA ПРЕОБРАЗОВАНИЕ В ASCII ДЛЯ СЛОЖЕНИЯ 115
Продолжение приложения 1 koi i КОМАНДЫ 1 ОПЕРАЦИЯ ОПЕРАНД НАЗНАЧЕНИЕ Зв MOD REG к/М CMP EA,REG СРАВНЕНИЕ ЬАИТ 39 MOD REG к/М CMP EA,REG СРАВНЕНИЕ СЛОВ ЗА MOD REG R/M CMP PEGrEA ЗВ MOD REG k/.M CMP REG,t А зс CMP AL,DATA6 30 CMP AX/DATAlb ЗЕ DS: смена сегментного регистра ha DS 5F AAS ПРЕОБРАЗОВАНИЕ В ASCII ДЛЯ ВЫЧИТАНИЯ О INC AX ИНКРЕМЕНТ (AX) 41 INC CX ИНКРЕМЕНТ (CX) 42 INC ОХ ИНКРЕМЕНТ (OX) 43 INC ЬХ ИНКРЕМЕНТ (BX) 44 INC SP ИНКРЕМЕНТ (SP) 4S INC ЬР ИНКРЕМЕНТ (BP) 46 INC SI ИНКРЕМЕНТ (SI) 47 INC DI ИНКРЕМЕНТ (01) 46 DEC AX ДЕКРЕМЕНТ (AX) 49 DEC CX ДЕКРЕМЕНТ (CX) 4А DEC OX ДЕКРЕМЕНТ (OX) 4В DEC BX ДЕКРЕМЕНТ (BX) 4С DEC SP ДЕКРЕМЕНТ (SP) 4D DEC ЬР ДЕКРЕМЕНТ (BP) 4Е DEC SI ДЕКРЕМЕНТ (31) 4F DEC DI ДЕКРЕМЕНТ (Dl) 5» PUSH AX ПРОТАЛКИВАНИЕ 8 СТЕК (AX) 51 PUSH CX ПРОТАЛКИВАНИЕ В СТЕК (CX) 5г PUSH OX ПРОТАЛКИВАНИЕ В СТЕК (DX) 53 PUSH BX ПРОТАЛКИВАНИЕ В СТЕК (BX) 54 PUSH SP ПРОТАЛКИВАНИЕ В СТЕК (SP) 55 PUSH ЬР ПРОТАЛКИВАНИЕ В СТЕК (8P) 56 PUSH SI ПРОТАЛКИВАНИЕ 8 СТЕК (SI) 57 PUSH Ul ПРОТАЛКИВАНИЕ В СТЕК (01) 56 POP AX ВЫТАЛКИВАНИЕ ИЗ СТЕКА 8 АХ 59 POP СХ ВЫТАЛКИВАНИЕ ИЗ СТЕКА 8 СХ 5А POP DX ВЫТАЛКИВАНИЕ ИЗ. СТЕКА 8 DX 58 POP ЬХ ВЫТАЛКИВАНИЕ ИЗ СТЕКА 8 tJX 5С POP SP ВЫТАЛКИВАНИЕ ИЗ СТЕКА В SP 50 POP ВР ВЫТАЛКИВАНИЕ ИЗ СТЕКА 8 ВР 5£ POP SI ВЫТАЛКИВАНИЕ ИЗ СТЕКА В SI 5F POP DI ВЫТАЛКИВАНИЕ ИЗ СТЕКА В DI 6» (Ht ИСПОЛЬЗУЬТСЯ) 61 (HE ИСПОЛЬЗУЕТСЯ) 62 (Ht ИСЫ ЭЛЬЗУЕТСЯ) 63 (НЬ ИСПОЛЬЗУЕТСЯ) 64 (Ht ИСПОЛЬЗУЕТСЯ) 65 (HE ИСПОЛЬЗУЕТСЯ) 66 (НЕ ИСПОЛЬЗУЕТСЯ) 67 (HE ИСПОЛЬЗУЕТСЯ) 66 (HE ИСПОЛЬЗУЕТСЯ) 69 (Ht ИСПОЛЬЗУЬТСЯ) 6А (НЕ ИСПОЛЬЗУЕТСЯ) 68 (HE ИСПОЛЬЗУЕТСЯ) 6С (HE ИСПОЛЬЗУЕТСЯ) 60 (НЕ ИСПОЛЬЗУЕТСЯ) 6Е (НЕ ИСПОЛЬЗУЕТСЯ) 6F (HE ИСПОЛЬЗУЕТСЯ) 7» JO DISP8 ПЕРЕХОД ПО ПЕРЕПОЛНЕНИЮ 72 JNO DISP8 ПЕРЕХОД ПО НЕ ПЕРЕПОЛНЕНИЮ 75 J8/JNAE DISP8 ПЕРЕХОД ПО МЕНЬШЕ (БЕЗ ЗНАКА) 74 JN8/JAE 0ISP8 ПЕРЕХОД ПО Б0ЛЫДЕ/РА8Н0 (БЕЗ ЗНАКА) 75 JE/JZ DISP8 ПЕРЕХОД ПО РАВНО (БЕЗ ЗНАКА) 76 JNE/JNZ DISP8 ПЕРЕХОД ПО НЕ РАВНО (БЕЗ ЗНАКА) 77 JNBE/JA DISPB ПЕРЕХОД ПО БОЛЬШЕ (БЕЗ ЗНАКА) 78 JS DISP8 ПЕРЕХОД ПО МИНУСУ 116
Продолжение приложения 1 КОД КОМАНДЫ ОПЕРАЦИЯ ОПЕРАНД НАЗНАЧЕНИЕ 79 JNS 0ISP8 ПЕРЕХОД ПО ПЛЮСУ 7 А JP/JPE DISP8 ПЕРЕХОД ПО ЧЕТНОСТИ 7В JNP/JPO DISP8 ПЕРЕХОД ПО НЕЧЕТНОСТИ 7С JLZJNGE DISP8 ПЕРЕХОД ПО МЕНЬШЕ (СО ЗНАКОМ) 7D JNL/JGE DISP8 ПЕРЕХОД ПО 60ЛЬШЕ/РАВНО (СО ЗНАКОМ) 7Е JLE/JNG UISP8 ПЕРЕХОД ПО МЕНЬШЕ/РАВНО (СО ЗНАКОМ) 7F JNLE/JG DISP8 ПЕРЕХОД по БОЛЬШЕ (СО ЗНАКОМ) 80 MOD w tftgi R/M ADD EArDATA8 СЛОЖЕНИЕ 6АИТ 80 MOD 001 R/M OR EA,DATA8 ‘ ЛОГИЧЕСКОЕ СЛОЖЕНИЕ БАЙТ 80 MOD 010 k/M ADC EA,DATA8 СЛОЖЕНИЕ С CF БАЙТ 80 MOD 01 1 R/M SBB EA,DATA8 ВЫЧИТАНИЕ С CF БАЙТ 80 MOD 1 00 R/M AND EA,DATAB ЛОГИЧЕСКОЕ УМНОЖЕНИЙ БАЙТ 80 MOD 101 R/M SUB EA,DATA8 ВЫЧИТАНИЕ БАЙТ 80 MOD 110 R/M XOR EA,DATA8 ИСКЛЮЧАЮЩЕЕ ИЛИ БАЙТ 80 MOD 111 R/M CMP EA,DATA8 СРАВНЕНИЕ БАЙТ 81 MOD 000 R/M ADD EA,DATA16 СЛОЖЕНИЕ СЛОВ 81 MOD 001 k/M UR EA/DATA16 ЛОГИЧЕСКОЕ СЛОЖЕНИЕ СЛОВ 81 MOD 0 10 R/M ADC EA/DATA16 СЛОЖЕНИЕ С CF СЛОВ 81 MOD 01 1 R/M SBB EArDATA16 ВЫЧИТАНИЕ С CF СЛОВ 81 MOD 100 R/M AND EA,DATA16 ЛОГИЧЕСКОЕ УМНОЖЕНИЕ СЛОВ 81 MOD '1®1 R/M SUB EA,DATA16 ВЫЧИТАНИЕ СЛОВ В1 MOD I 1 0 R/M XOR EA,DATA16 ИСКЛЮЧАЮЩЕЕ ИЛИ СЛОВ 81 MOD 111 R/M CMP EA,DATA16 СРАВНЕНИЕ СЛОВ 82 MDD 000 R/M add EA,DATA8 СЛОЖЕНИЕ БАЙТ 82 MOD 001 R/M CHE ИСПОЛЬЗУЕТСЯ) 82 MOD 0 10 R/M ADC EA,DATA8 СЛОЖЕНИЕ ЬАЙТ С CF 82 MOD 0 1 1 R/M SBB EA,DATA8 ВЫЧИТАНИЕ БАЙТ С CF 82 MOD 100 R/M (HE ИСПОЛЬЗУЕТСЯ) 82 MOD 101 R/M SUB EArDATAB ВЫЧИТАНИЕ БАЙТ 82 MOO 110 R/M (HE ИСПОЛЬЗУЕТСЯ) 82 MOD 1 1 1 R/M CMP EA,DATA8 СРАВНЕНИЕ БАЙТ 83 MOD 0 00 R/M ADD EArDATAB СЛОЖЕНИЕ СЛОВ 83 MOD 001 R/M (HE ИСПОЛЬЗУЕТСЯ) 83 MOD 010 H/M ADC EArDATAB СЛОЖЕНИЕ С CF СЛОВ 83 MDD 011 k/M SBB EA,DATA8 ВЫЧИТАНИЕ С CF СЛОВ 83 MOD 100 R/M (HE ИСПОЛЬЗУЕТСЯ) 83 MOD 101 R/M SUB EArDATA8 ВЫЧИТАНИЕ СЛОВ 83 MDD 110 R/M (HE ИСПОЛЬЗУЕТСЯ) 83 MOD 111 R/M CMP EA,DATA8 СРАВНЕНИЕ СЛОВ 84 MOD KEG R/M TEST EArREG ЛОГИЧЕСКОЕ СРАВНЕНИЕ БАЙТ 85 MOD REG R/M TEST EArREG ЛОГИЧЕСКОЕ СРАВНЕНИЕ СЛОВ 86 MOD REG K/M XCHG REGrEA ОБМЕН БАЙТ РЕГИСТРА С ЕА 87 MOD REG R/M XCHG REGrEA ОБМЕН СЛОВ РЕГИСТРА С ЕА 88 MOD RFG R/M MOV EArREG ПЕРЕСЫЛКА БАЙТА ИЗ РЕГИСТРА В ЕА 86 MOD REG R/M XCHG REGrEA ОБМЕН БАЙТ РЕГИСТРА С ЕА 87 MOD REG R/M XCHG REGrEA ОБМЕН СЛОВ РЕГИСТРА С ЕА 88 MOD REG R/M MOV EArREG ПЕРЕСЫЛКА БАЙТА ИЗ РЕГИСТРА В ЕА 89 MOD REG R/M MOV EArREG ПЕРЕСЫЛКА СЛОВА ИЗ РЕГИСТРА В ЕА 8А MOD REG R/M MOV REGrEA ПЕРЕСЫЛКА БАЙТА ИЗ ЕА В РЕГИСТР 8В MOD REG R/M MOV REG,EA ПЕРЕСЫЛКА СЛОВА ИЗ ЕА В РЕГИСТР 8С MOD 0SR R/M MOV EArSR ПЕРЕСЫЛКА БАЙТА ИЗ SR В ЕА 8С MOD 1-" R/M (HE ИСПОЛЬЗУЕТСЯ) 8D MOD REG R/M LEA REGrEA ПЕРЕСЫЛКА АДРЕСА В РЕГИСТР 8Е MDD 0SR R/M MOV SRrEA ПЕРЕСЫЛКА ИЗ ЕА В 3R 8Е MOD 1 — R/M (HE ИСПОЛЬЗУЕТСЯ) 8F MOD 000 R/M POP EA ВЫТАЛКИВАНИЕ ИЗ СТЕКА В ЕА 8F MOD V01 R/M (HE ИСПОЛЬЗУЕТСЯ) 8F MOD 0 1 0 R/M (HE ИСПОЛЬЗУЕТСЯ) 8F MOD 01 1 R/M (HE ИСПОЛЬЗУЕТСЯ) 8F MOD 100 R/M (HE ИСПОЛЬЗУЕТСЯ) 8F MOD 101 R/M (HE ИСПОЛЬЗУЕТСЯ) 8F MOO 1 10 R/M (HL ИСПОЛЬЗУЕТСЯ) 8F MOD 111 R/M (HE ИСПОЛЬЗУЕТСЯ) 9» XCHG АХ,АХ ОБМЕН (АХ) С (АХ) (НЕТ ОПЕРАЦИИ) 117
Продолжение приложения 1 код КОМАНДЫ ОПЕРАЦИЯ ОПЕРАНД НАЗНАЧЕНИЕ 91 92 93 94 9S 96 97 96 99 9А 98 9С 9D 9Е 9F А0 А1 А2 АЗ А4 А5 А6 А7 Ав А9 АА Ав АС АО АЕ AF ее 81 82 83 84 85 86 87 Вв 89 ВА 88 ВС BD BE BF С0 С1 С2 СЗ С4 С5 С6 С6 С6 С6 С6 С6 С6 С6 С7 С7 С7 MOD MOD MOD MOD MOO MOD MOD MOD MOD MOO MOD MOD MOD REG REG 000 601 010 011 100 101 110 111 000 001 010 R/M R/M R/M R/M R/M R/M R/M R/M R/M R/M R/M R/M R/M XCHG AX,CX ОЬМЕН (AX) С (CX) XCHG AX,OX ОБМЕН (AX) C (OX) XCHG AX,BX ОБМЕН (AX) С (BX) XCHG AX,SP ОБМЕН (AX) С (3P) XCHG AX,BP ОБМЕН (AX) С (8P) XCHG AX,31 ОБМЕН (AX) C (SI) XCHG AX,DI ОБМЕН (AX) C (OI> C8H ПРЕОБРАЗОВАНИЕ БАЙТА (AL) В СЛОВО (AX) CWO ” СЛОВА (AX) В ДВОЙНОЕ СЛОВО CALL DI3P16,SEG16 МЕЖСЕГМЕНТНОЕ ПРЯМОЕ ОБРАЩЕНИЕ К П/П WAIT ОЖИДАНИЕ СИГНАЛА TEST PUSHF ПРОТАЛКИВАНИЕ 8 СТЕК F POPF ВЫТАЛКИВАНИЕ ИЗ СТЕКА 8 F SAHF ПЕРЕСЫЛКА (АН) 8 F LANF ПЕРЕСЫЛКА (F) 8 АН ' MOV AL,ADDR16 ПЕРЕСЫЛКА БАЙТА (AODR) В AL MOV AX,AD0R16 ПЕРЕСЫЛКА СЛОВА (AODR) В АХ MOV AD0R16,AL ПЕРЕСЫЛКА БАЙТА (AL) В (AODR) MOV A0DR16,AX ПЕРЕСЫЛКА СЛОВА (АХ) В (ADDR) MOVS D3T8,3RC6 ПЕРЕСЫЛКА БАЙТА ИЗ СТРОКИ M0V3 DSTI6,SRC16 ПЕРЕСЫЛКА СЛОВА ИЗ СТРОКИ СМРЗ SIPTR.OIPTR СРАВНЕНИЕ БАЙТ В СТРОКАХ CMPS SIPTR,OIPTR СРАВНЕНИЕ СЛОВ В СТРОКАХ TEST AL,DATA8 ЛОГИЧЕСКОЕ СРАВНЕНИЕ БАЙТ TEST АХ,0АТА16 ЛОГИЧЕСКОЕ СРАВНЕНИЕ СЛОВ ST03 DST8 ПЕРЕСЫЛКА БАЙТА В СТРОКУ ST03 DSTI6 ПЕРЕСЫЛКА СЛОВА 8 СТРОКУ L0D3 SRC8 ЗАГРУЗКА БАЙТА ИЗ СТРОКУ L0D3 SRC16 ЗАГРУЗКА СЛОВА ИЗ СТРОКУ SCA3 DIPTR8 СКАНИРОВАНИЕ БАЙТ В СТРОКЕ ЗСАЗ DIPTR16 СКАНИРОВАНИЕ СЛОВ В СТРОКЕ MOV AL,DATA8 ПЕРЕСЫЛКА БАЙТА 8 AL MOV CL,0ATA8 ПЕРЕСЫЛКА БАЙТА 8 CL MOV 0L,DATA8 ПЕРЕСЫЛКА БАЙТА 8 DL MOV BL,0ATA8 ПЕРЕСЫЛКА БАЙТА 8 BL MOV АН,0АТА8 ПЕРЕСЫЛКА БАЙТА В АН MOV СН,0АТА8 ПЕРЕСЫЛКА БАЙТА В СН MOV DH,0ATA8 ПЕРЕСЫЛКА БАЙТА В DH MOV ВН,0АТА8 ПЕРЕСЫЛКА БАЙТА В RH MOV АХ,0АТА16 ПЕРЕСЫЛКА СЛОВА В АХ MOV CX,DATAI6 ПЕРЕСЫЛКА СЛОВА В СХ MOV 0Х,0АТА16 ПЕРЕСЫЛКА СЛОВА 8 ОХ MOV ВХ,0АТА16 ПЕРЕСЫЛКА СЛОВА 8 8Х MOV SP,DATA16 ПЕРЕСЫЛКА СЛОВА 8 SP MOV ВР,0АТА16 ПЕРЕСЫЛКА СЛОВА 8 ВР MOV SI,DATA16 ПЕРЕСЫЛКА СЛОВА В 31 MOV 01,0АТА16 ПЕРЕСЫЛКА СЛОВА 8 01 (НЕ ИСПОЛЬЗУЕТСЯ) (НЕ ИСПОЛЬЗУЕТСЯ) RET 0ATAI6 ВНУТРИСЕГМЕНТНЫЙ ВОЗВРАТ И УВЕЛИЧЕНИЕ SP RET внутрисегментный возврат LE3 REG,EA ЗАГРУЗКА БАЙТА 8 РЕГИСТР И ЕЗ LOS REG,EA ЗАГРУЗКА СЛОВА 8 РЕГИСТР И DS MOV ЕА,ОАТАВ ПЕРЕСЫЛКА БАЙТА В ЕА (НЕ ИСПОЛЬЗУЕТСЯ) (НЕ ИСПОЛЬЗУЕТСЯ) (НЕ ИСПОЛЬЗУЕТСЯ) (НЕ ИСПОЛЬЗУЕТСЯ) (НЕ ИСПОЛЬЗУЕТСЯ) (НЕ ИСПОЛЬЗУЕТСЯ) (НЕ ИСПОЛЬЗУЕТСЯ) MOV ЕА.0АТА16 ПЕРЕСЫЛКА СЛОВА В ЕА (НЕ ИСПОЛЬЗУЕТСЯ) (НЕ ИСПОЛЬЗУЕТСЯ) 118
Продолжение приложения 1 КОД КОМАНДЫ ОПЕРАЦИЯ ОПЕРАНД НАЗНАЧЕНИЕ С7 MDD • 11 R/M (HE ИСПОЛЬЗУЕТСЯ) С7 моо 1*0 R/M (HE ИСПОЛЬЗУЕТСЯ) С7 HOD 101 R/M (HE ИСПОЛЬЗУЕТСЯ) С7 MOD 11» k/M (HE ИСПОЛЬЗУЕТСЯ) С7 MOO 111 R/M (HE ИСПОЛЬЗУЕТСЯ) се (HE ИСПОЛЬЗУЕТСЯ) С9 (HE ИСПОЛЬЗУЕТСЯ) СА RET DATA16 МЕЖСЕГМЕНТНЫЙ ВОЗВРАТ И УВЕЛИЧЕНИЕ ЗР св RET МЕЖСЕГМЕНТНЫЙ ВОЗВРАТ сс INT 3 ПРЕРЫВАНИЕ ТИПА 3 со INT TYPE ПРЕРЫВАНИЕ ТИПА D СЕ INTO ПРЕРЫВАНИЕ ПО ПЕРЕПОЛНЕНИЮ CF 1RET ВОЗВРАТ ИЗ П/П ПРЕРЫВАНИЯ О» моо ••• R/M RDL ЕА,1 ЦИКЛИЧЕСКИЙ СДВИГ ВЛЕВО БАЙТА НА 1 О» моо ••1 R/M ROR ЕА, 1 ЦИКЛИЧЕСКИЙ СДВИГ ВПРАВО БАЙТА НА 1 О» MOO • 1» R/M RCL Е A f 1 ЦИКЛИЧЕСКИЙ СДВИГ ВЛЕВО БАЙТА С СЕ НА 1 о® MOO • 11 R/M RCR ЕА, 1 ЦИКЛИЧЕСКИЙ СДВИГ ВПРАВО БАЙТА С СЕ НА D® MOO 1»» R/M SHE ЕА, 1 СДВИГ ВПРАВО БАРТА НА 1 О» MOO 1»1 R/M SHR ЕА; 1 СДВИГ ВЛЕВО БАЙГА НА 1 О» MOD lie R/M (HE ИСПОЛЬЗУЕТСЯ) О» MOD in R/M SAR ЕА; 1 СДВИГ ВПРАВО БАЙТА БЕЗ ЗНАКА НА 1 01 MOO ®e® R/M ROL ЕА, 1 ЦИКЛИЧЕСКИЙ СДВИГ ВЛЕВО СЛОВА НА 1 01 MOD ••1 R/M ROR ЕА, 1 ЦИКЛИЧЕСКИЙ СДВИГ ВПРАВО СЛОВА НА 1 01 MOD • !• R/M RCL ЕА; 1 ЦИКЛИЧЕСКИЙ СДВИГ ВЛЕВО СЛОВА С СЕ НА 1 01 MOD ® 11 R/M NCR ЕА, 1 ЦИКЛИЧЕСКИЙ СДВИГ ВПРАВО СЛОВА С CF НА 01 MOO 1®® k/M SHL ЕА; 1 сдвиг влево слова на 1 01 MOD 1»1 R/M SHR ЕА, 1 СДВИГ ВПРАВО СЛОВА НА 1 D1 MOD 11® R/M (HE ИСПОЛЬЗУЕТСЯ) D1 MOD 111 R/M ^AR ЕА, 1 СДВИГ ВПРАВО СЛОВА БЕЗ ЗНАКА НА 1 D2 MOD ••• R/M ROL EA,CL ЦИКЛИЧЕСКИЙ СДВИГ ВЛЕВО БАЙТА НА CL 02 MOD • •1 R/M ROR EA,CL ЦИКЛИЧЕСКИЙ СДВИГ ВПРАВО БАЙТА НА CL D2 MOD • 1® R/M RCL EA,CL ЦИКЛИЧЕСКИЙ СДВИГ ВЛЕВО БАЙТА С CF НА С 02 MOD • 11 R/M RCR EA,CL ЦИКЛИЧЕСКИЙ СДВИГ ВПРАВО БАЙТА С CF НА 02 MOD 100 R/M SHL EA,CL СДВИГ ВЛЕВО БАЙТА НА CL 02 MOD 101 R/M SHR EA,CL СДВИГ ВПРАВО БАЙТА НА CL 02 MOD 1 I® R/M (HE ИСПОЛЬЗУЕТСЯ) D2 MOD 111 R/M SAR EA;CL СДВИГ ВПРАВО БАЙТА ЬЕЗ ЗНАКА НА CL 03 MOD ••® R/M ROL EA,CL ЦИКЛИЧЕСКИЙ СДВИГ ВЛЕВО СЛОВА НА CL DJ MOD ••1 k/M ROR EA,CL ЦИКЛИЧЕСКИЙ СДВИГ ВПРАВО СЛОВА НА CL 03 MOD • !• R/M RCL EA,CL ЦИКЛИЧЕСКИЙ СДВИГ ВЛЕВО СЛОВА С СЕ НА С 03 MOD • 11 R/M RCR EA,CL ЦИКЛ. СДВИГ ВПРАВО СЛОВА С CF НА CL 03 MOD is® R/M SHL EA,CL СДВИГ ВЛЕВО СЛОВА НА CL 03 MOD 1 • 1 R/M SHR EA,CL СДВИГ ВПРАВО СЛОВА НА CL 03 MOD 11® R/M (HE ИСПОЛЬЗУЕТСЯ) 03 MOD 111 k/M SAR EA,CL СДВИГ ВПРАВО СЛОВА БЕЗ ЗНАКА НА CL 04 ••••isi• AAM ПРЕОБРАЗОВАНИЕ В ASCII ДЛЯ УМНОЖЕНИЯ 05 ••••1®1® ADD ПРЕОБРАЗОВАНИЕ В ASCII ДЛЯ ДЕЛЕНИЯ 06 (HE ИСПОЛЬЗУЕТСЯ) 07 XLAT TABLE ПРЕОБРАЗОВАНИЕ ПО ТАБЛИЦЕ OS MDD R/M ESC EA ОБРАЩЕНИЕ К СОПРОЦЕССОРУ K181SBM87 Е» LOOPNZ/LODPNE DISPB ПОВТОРЕНИЕ (СХ) РАЗ ПОКА HE РАВНО Е1 LOUPZ/LOOPE DI SP8 ПОВТОРЕНИЕ (СХ) РАЗ ПОКА РАВНО Е2 LOOP DISPB ПОВТОРЕНИЕ (СХ) РАЗ ЕЗ jcxz DISP8 ПЕРЕДАЧА УПРАВЛЕНИЯ ПО (СХ)«® Е4 IN AL,PORT ВВОД БАЙТА В AL Е5 IN AX,PORT ВВОД СЛОВА В АХ Е6 OUT PORT,AL ВЫВОД БАЙТА ИЗ AL Е7 OUT PORT,AX ВЫВОД СЛОВА ИЗ АХ ЕВ CALL DISP16 ВНУТРИСЕГМЕНТНОЕ ПРЯМОЕ ОБРАЩЕНИЕ К П/П Е9 JMP DISP16 ВНУТРИСЕГМЕНТНЫЙ ПРЯМОЙ ПЕРЕХОД ЕА JMP DISP16,SEG16 МЕИСЕГМЕНТНЫЙ ПРЯМОЙ ПЕРЕХОД ЕВ JMP DISP8 ВНУТРИСЕГМЕНТНЫЙ ПРЯМОЙ ПЕРЕХОД ЕС IN AL,DX ВВОД БАЙТА В AL ИЗ ПОРТА (DX) ео IN AX,DX ВВОД СЛОВА В АХ ИЗ ПОРТА (DX) 119
Продолжение приложения 1 КОД КОМАНДЫ ОПЕРАЦИЯ ОПЕРАНД НАЗНАЧЕНИЕ ЕЕ OUT DXrAL ВЫВОД ЬАИТА ИЗ AL В ПОРТ (DX) EF OUT ОХ,АХ ВЫВОД СЛОВА ИЗ АХ 8 ПОРТ (QX) F0 LOCK БЛОКИРОВКА шины F1 (HE ИСПОЛЬЗУЕТСЯ) F2 REPNZ ПОВТОРЕНИЕ ПОКА (CX)s0 И (ZF)s0 F3 REPN ПОВТОРЕНИЕ ПОКА (CX)s0 И (ZF)sl F4 HLT ОСТАНОВ F5 CMC ИНВЕРТИРОВАНИЕ ПРИЗНАКА ПЕРЕНОСА F6 MOD R/M TEST EA/DATA8 ЛОГИЧЕСКОЕ СРАВНЕНИЕ БАЙТ F6 MOD ®®1 R/M (HE ИСПОЛЬЗУЕТСЯ) F6 MOD 010 R/M NOT ЕА ИНВЕРТИРОВАНИЕ БАЙТА F6 MOD ®11 R/M NEG ЕА ОТРИЦАНИЕ БАЙТА F6 MOD J00 R/M MUL ЕА УМНОЖЕНИЕ БАЙТ БЕЗ ЗНАКА F6 MOD 101 R/M IMUL ЕА УМНОЖЕНИЕ БАЙТ СО ЗНАКОМ F6 MOD 110 R/M DIV ЕА ДЕЛЕНИЕ БАЙТ БЕЗ ЗНАКА F6 MOD 111 R/M IDIV ЕА ДЕЛЕНИЕ ЬАйТ СО ЗНАКОМ F7 MOD 000 R/M TEST ЬА,ОАТА1Ь ЛОГИЧЕСКОЕ СРАВНЕНИЕ СЛОВ F7 MOD 001 R/M (HE ИСПОЛЬЗУЕТСЯ) F7 MOO »!» R/M NOT ЕА ИНВЕРТИРОВАНИЕ СЛОВА F7 MOD «11 R/M NEG tA ОТРИЦАНИЕ СЛОВА F7 MOD 100 R/M MUL tA УМНОЖЕНИЕ СЛОВ БЕЗ ЗНАКА F7 MOO 1»1 R/M IMUL ЕА УМНОЖЕНИЕ СЛОВ СО ЗНАКОМ F7 MOD 110 R/M DIV tA ДЕЛЕНИЕ СЛОВ БЕЗ ЗНАКА F7 MOD Hi R/M IDIV ЕА ДЕЛЕНИЕ СЛОВ СО ЗНАКОМ F8 LLC ОЧИСТКА ПРИЗНАКА ПЕРЕНОСА F9 STC УСТАНОВКА ПРИЗНАКА ПЕРЕНОСА FA CLI ОЧИСТКА ПРИЗНАКА ПРЕРЫВАНИЯ FB STI УСТАНОВКА ПРИЗНАКА ПРЕРЫВАНИЯ FC CLO ОЧИСТКА ПРИЗНАКА НАПРАВЛЕНИЯ FD STD УСТАНОВКА ПРИЗНАКА НАПРАВЛЕНИЯ Ft MOD 000 R/M INC ЕА ИНКРЕМЕНТ БАЙТА FE MOD 001 R/M DEC ЕА ДЕКРЕМЕНТ БАЙТА Ft MOD 010 R/M (HE ИСПОЛЬЗУЕТСЯ) FE (Ht ИСПОЛЬЗУЬТСЯ) FE (HE ИСПОЛЬЗУЕТСЯ) FE (HE ИСПОЛЬЗУЕТСЯ) FE (HE ИСПОЛЬЗУЕТСЯ) FE (HE ИСПОЛЬЗУЕТСЯ) FE (HE ИСПОЛЬЗУЕТСЯ) FF MOD 00® R/M INC ЕА ИНКРЕМЕНТ СЛОВА FF MOO ®ei R/M DEC ЕА ДЕКРЕМЕНТ СЛОВА FF MOD 01® R/M CALL tA ВНУТРИСЕГМЕНТНОЕ КОСВЕННОЕ ОБРАЩЕНИЕ К П/Л FF MDD 011 R/M CALL ЕА МЕЖСЕГМЕНТНОЕ КОСВЕННОЕ ОБРАЩЕНИЕ К П/П FF MOD 100 R/M JMP ЕА ВНУТРИСЕГМЕНТНЫЙ КОСВЕННЫЙ ПЕРЕХОД FF MOD 1®1 R/M JMP ЕА МЕЖСЕГМЕНТНЫЙ КОСВЕННЫЙ ПЕРЕХОД у FF MOD 110 R/M PUSH ЕА ПРОТАЛКИВАНИЕ В СТЕК (ЕА) FF MOD 111 R/M (HE ИСПОЛЬЗУЕТСЯ)
приложение г СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА К1в10ВМВ6 0 1 2 3 4 5 6 7 0 1 ADD 1 В, F, к/М ADD h,F,R/M ADD B,T,R/M ADD W,T,R/M ADD B, IA ADD Br IA PUSH ES POP ES 1 1 ADC ' 18,F,к/М ADC h,F,R/M ADC B,T,R/M ADC h,T,R/M ADC B, IA ADC B,IA PUSH ss POP S3 г 1 AND IB,F,к/М AND h,F,R/M ANO B,T,R/M AND W,T,R/M AND 8, IA AND 6, IA SEG ES DAA 3 1 XOh 1B,F,R/M XOR h,F,R/M XOR B,T,R/M XOR W,T,R/M XOR B, IA XOR B, IA SEG SS AAA 4 1 INI 1 AX INC ex INC DX INC BX INC SP INC BP INC SI INC DI 5 1 PUSH 1 AX PUSH CX PUSH DX PUSH BX PUSH SP PUSH BP PUSH SI PUSH DI 6 1 1 7 1 JO 1 JNU JB/ JNAE JNB/ JAE JE/ JZ JNE/ JNZ JBE/ JNA JNBE/ JA в 1НЕПОСР. 1B,R/M НЕПОСР. W,R/M НЕПОСР. B,R/M НЕПОСР. I3,R/M TEST B,R/M TEST W,R/M XCNG B,R/M XCHG W,R/M 9 1 XCHG 1 AX XCHG CX XCHG DX XCHG BX XCHG SP XCHG BP XCHG SI XCHG DI А 1 MOV 1 M, AL MOV M,AX MOV al,m MOV AX,M MOVS MOVS CMP3 CMPS В 1 MOV 1 bAL MOV I,AC MOV I,DL MOV I,BL MOV I, AH MOV IrCH MOV I,DH MOV I,BH С 1 j RET (I*SP) RET LES LDS MOV B,I,R/M MOV W,I,R/M О i сдвиг 1 8 сдвиг w СДВИГ B,V сдвиг 0, V AAM AAD xlat Е 1LOOPNZ/ 1 LOONE LOOPZ/ LOOPE LOOP JCXZ IN В IN N OUT B, OUT w F 1 LOCK 1 REP REP Z 4LT cmc ГРУППА1 B,R/M ГРУППА1 W,R/M В ТАБЛИЦЕ ПРИНЯТЫ СЛЕДУЮЩИЕ ОБОЗНАЧЕНИЯ? MOD XXX R/M 000 001 010 «11 100 101 11» 111 НЕПОСР. ADD OH ADC SBB AND SUB XOR CMP СДВИГ HOL ROR HCL RCR SHL/ SAL SHR • SAR ГРУППА1 TEST — NOT NEG MUL 1MUL DIV IDIV ГРУППА? INC DEC CALL ID CALL 1, IL JMP JMP PUSH 121
Продолжение приложения 2 8 9 A * 6 c 0 E F 0 1 OR OR OR OR OR OR PUSH IB,F,R/M 1л,F,R/M S,T,R/M W,T,R/M B, IA W, IA CH 1 1 SBB SBB sbb SBB SBB SBB PUSH POP IB,F,R/M W,F,R/M a, t,rzm h,T ,R/M B, IA N, IA DS D3 a i sub SUB SUB SUB SUB SUB SEG DAS IB,F,R/M t»,F,R/M 6,t,rzh W,T,R/M B,IA w, IA CS JI CMP CMP CMP CMP CMP CMP SEG AAS IB,F,R/M й/F ,R/M B,T,R/M w,T,R/M B,IA W,IA OS 4 I DEC DEC DEC DEC DEC DEC OEC DEC 1 AX ex DX BX 3P BP SI DI 5 1 POP POP pop POP POP POP POP POP 1 AX ex цх BX SP BP SI DI 6 1 1 7 I J3 JNS JP/ JNPZ JLZ JNLZ JLEZ JNLEZ ! JPE JPO JNGE JGE JNG JG 8 1 MOV MOV MOV MOV MOV LEA MOV POP IB,F,R/M W,F,ft/M B,T,R/M W,T,R/M SR,F,R/M SR,T,R/M R/M 9 1 CBW CWD CALL WAIT PUSHF POPF SAHF LAHF 1 L,D A 1 TEST TEST STOS STOS LUOS LDOS SLAS SCAB 1 B,L,A W,L,A В I MOV MOV MOv MOV MOV MOV mov MOV 1 I,AX I,ex I,DX I,BX If SP I, BP 1,31 I,DI C I RET RET INT INT INTO IRET 1 I(I,SP> L ТИП J ЛЮБОЕ O' 1 ESC ESC ESC ESC ESC ESC ESC ESC 1 0 1 2 3 4 5 6 7 E I CALL JMP JMP JMP IN IN OUT OUT 1 0 D L,D SI'D V,B V, w V,B VfW F 1 CLC STC CLI STI CLP STO ГРУППА2 ГРУППА? I B,R/M W,R/M В - БАЙТ L - МЕЖСЕГМЕНТНОЕ D - ПРЯМОЕ М - ПАМЯТЬ F - ИЗ РЕГИСТРА RZM - ЕА ВО ВТОРОМ ОПЕРАНДЕ I - НЕПОСРЕДСТВЕННОЕ SI - КОСВЕНОЕ ВНУТРИСЕГМ. IA - НЕПОСР, В АККУМУЛЯТОР SR - СЕГМЕНТНЫЙ РЕГИСТР ID - КОСВЕННОЕ V - ПЕРЕМЕННАЯ IS - НЕПОСР. БАЙТ h - СЛОВО 2 - НУЛЬ
приложение з СИСТЕМА КОМАНД АРНФМЕТИЧРСКОГО СОПРОЦЕССОРА КМ1В10ВМ87 (В ШЕСТНАДЦАТЕРИЧНОЙ системе счисления) D6 D9 МОО 11 000 000 R/M STI FADO F ADD ST,LA СЛОЖЕНИЕ КОРОТКИХ ВЕЩЕСТВЕННЫХ ST,ST(I) СЛОЖЕНИЕ MOD 001 R/M fmul ST,LA УМНОЖЕНИЕ КОРОТКИХ ВЕЩЕСТВЕННЫХ 11 001 STI FMUL ST,ST(I ) УМНОЖЕНИЕ MOD 010 R/M FCUM ST/EA СРАВНЕНИЕ КОРОТКИХ ВЕЩЕСТВЕННЫХ 11 0 1 0 STI FCUM ST,ST(I) СРАВНЕНИЕ MOO 011 R/M FCOMp ST/EA СРАВНЕНИЕ И ВЫТАЛКИВАНИЕ КОРОТКИ X ВЕЩЕСТ- и 011 STI FCOMP ST,ST(I) СРАВНЕНИЕ И ВЫТАЛКИВАНИЕ ВЕННЫХ MOD 100 k/M FSUB tA,ST ВЫЧИТАНИЕ КОРОТКИХ ВЕЩЕСТВЕННЫХ 11 100 STI FSUB ST , ST(I ) ВЫЧИТАНИЕ MDD 101 R/M FSUB ST,EА ВЫЧИТАНИЕ КОРОТКИХ ВЕЩЕСТВЕННЫХ И 1 ei STI FSUB ST(I),ST ВЫЧИТАНИЕ MOD 110 R/M FO1V EA,ST ДЕЛЕНИЕ КОРОТКИХ ВЕЩЕСТВЕННЫХ 11 110 STI FD1V S1,ST(1) ДЕЛЕНИЕ MOD 111 R/M FD1V ST,ЕА ДЕЛЕНИЕ КОРОТКИХ ВЕЩЕСТВЕННЫХ 1 1 ill STI FD1V sid),ST деление MOD 000 R/M FLD EA,ST ЗАГРУЗКА КОРОТКОГО ВЕЩЕСТВЕННОГО И 000 STI FLD ST,ST(I) ПЕРЕСЫЛКА *» 001 (HE ИСПОЛЬЗУЕТСЯ) 11 001 STI FST ST,ST(I) ОБМЕН СОДЕРЖИМЫМ РЕГИСТРОВ MOD 010 R/M FST ед,st запись короткого вещественного 11 010 000 FNOP НЕТ ОПЕРАЦИИ MOD »n R/M FSTP EA,ST ЗАПИСЬ И ВЫТАЛКИВАНИЕ КОРОТКОГО ВЕДЕСТ- И • 1-1 STI FXCH STU) ибмЕН ST(I) С ST ВЕННОГО MOD 100 R/M FLDENV ед ЗАГРУЗКА УКАЗАТЕЛЕЙ АДРЕСА КОМАНДЫ И ОПЕ- 11 100 000 FCHS ИНВЕРСИЯ ЗНАКА МИДА 11 100 001 FABS АБСОЛЮТНОЕ ЗНАЧЕНИЕ ! 1 100 010 (Ht ИСПОЛЬЗУЕТСЯ) ! 1 100 011 (HE ИСПОЛЬЗУЕТСЯ) 11 100 100 FTST ЛОГИЧЕСКОЕ СРАВНЕНИЕ С i 11 100 101 F XAM АНАЛИЗ ST 11 100 1 10 (HE ИСПОЛЬЗУЕТСЯ) 11 100 111 (HE ИСПОЛЬЗУЕТСЯ) MOD 1e1 R/M FLDCh ЕА ЗАГРУЗКА СЛОВА УПРАВЛЕНИЯ 11 lei 000 FLO1 ЗАГРУЗКА *1.0 11 1 ei 001 FLGL2T ЗАГРУЗКА LDG 2(10) 11 1 ® 1 010 FLDL2F ЗАГРУЗКА LOG 2(E) 11 1 e 1 011 FLOPI ЗАГРУЗКА Р1 11 lei lit FLDLG2 ЗАГРУЗКА LOG 10(2) 1! 1 e 1 1 ei FL0LN2 ЗАГРУЗКА LOG Е(2) 11 1«1 110 FLDZ ЗАГРУЗКА *0.0 11 lei 111 (HE ИСПОЛЬЗУЕТСЯ) MOD 110 k/M 11 lie 000 F2XM1 2**ST - 1 1 1 110 001 FYL2X ST * LOG 2<ST) It 110 010 FPTAN ТАНГЕНС 11 lie eii FPATAN АРКТАНГЕНС / 1! 110 100 EXTRACT ВЫДЕЛЕНИЕ ПОРЯДКА 11 lie 1 e i (HE ИСПОЛЬЗУЕТСЯ) 11 lie 110 FDECSTP ДЕКРЕМЕНТ УКАЗАТЕЛЯ СТЕКА 11 lie 111 FINSTP ИНКРЕМЕНТ УКАЗАТЕЛЯ СТЕКА MOO ill R/M FSTCW ЕА ЗАПИСЬ СЛОВА УПРАВЛЕНИЯ 11 in 000 FPREM ОСТАТОК ОТ ДЕЛЕНИЯ 11 111 001 FYL2XP1 ST * LOG 2(ST + 1) 11 111 010 FSQRT КВАДРАТНЫЙ КОРЕНЬ 11 111 ei i (HE ИСПОЛЬЗУЕТСЯ) 11 111 100 FRNDINT ОКРУГЛЕНИЕ ДО ЦЕЛОГО 11 111 1 e i FSCAL МАСШТАБИРОВАНИЕ ST ПО ST(1) 123
Продолжение приложения 3 КОД КОМАНДЫ ОПЕРАЦИЯ ОПЕРАНД НАЗНАЧЕНИЕ 11 и 111 111 11« 111 (HE ИСПОЛЬЗУЕТСЯ) (HE ИСПОЛЬЗУЕТСЯ) DA MOD 000 R/M FADD ST,EA СЛОЖЕНИЕ ДЛИННЫХ ЦЕЛЫХ z 1! 000 STI FADD ST,STU) СЛОЖЕНИЕ И ВЫТАЛКИВАНИЕ MOD 001 R/M FMUL ST,EA УМНОЖЕНИЕ ДЛИННЫХ ЦЕЛЫХ 11 001 STI FMUL ST,STU) УМНОЖЕНИЕ И ВЫТАЛКИВА.НИЕ MOD 010 R/M FCOM ST,EA СРАВНЕНИЕ ДЛИННЫХ ЦЕЛЫХ 1! 010 жжж (HE ИСПОЛЬЗУЕТСЯ) MOD 011 R/M FCDMP ST,tA СРАВНЕНИЕ И ВЫТАЛКИВАНИЕ ДЛИННЫХ ЦЕЛЫХ И 011 жжж (HE ИСПОЛЬЗУЕТСЯ) HOD 100 R/M FSUB EArST ВЫЧИТАНИЕ длинных ЦЕЛЫХ И 100 STI FSUB ST,STU) ВЫЧИТАНИЕ И ВЫТАЛКИВАНИЕ MOD 101 k/M FSUB ST,EA ВЫЧИТАНИЕ ДЛИННЫХ ЦЕЛЫХ 11 1 © 1 STI FSUB STU),ST ВЫЧИТАНИЕ И ВЫТАЛКИВАНИЕ MOD 110 R/M F01V EA,ST ДЕЛЕНИЕ ДЛИННЫХ ЦЕЛЫХ 1! 110 STI FDIV ST,STU) ДЕЛЕНИЕ И ВЫТАЛКИВАНИЕ MOD 111 R/M FDIV ST,EA ДЕЛЕНИЕ ДЛИННЫХ ЦЕЛЫХ И 111 STI FDIV STU),ST ДЕЛЕНИЕ И ВЫТАЛКИВАНИЕ 08 MOD 000 k/M FLD EA,ST ЗАГРУЗКА ДЛИННОГО ЦЕЛОГО 1! 000 жжж (HE ИСПОЛЬЗУЕТСЯ) MOD 001 R/M (HE ИСПОЛЬЗУЕТСЯ) И 001 — — (HE ИСПОЛЬЗУЕТСЯ) MOD 010 R/M FST EA,ST ЗАПИСЬ КОРОТКОГО ВЕЩЕСТВЕННОГО 11 010 000 FNOP НЕТ ОПЕРАЦИИ MOD 011 R/M FSTP EA,ST ЗАПИСЬ И ВЫТАЛКИВАНИЕ КОРОТКОГО ВЕЩЕСТ-. 1 1 011 STI (HE ИСПОЛЬЗУЕТСЯ) ВЕННОГО MOO 100 R/M FLD EA,ST ЗАГРУЗКА ВРЕМЕННОГО ВЕЩЕСТВЕННОГО 11 100 000 feni РАЗРЕШЕНИЕ ПРЕРЫВАНИЯ 11 100 001 FD1SI ЗАПРЕЩЕНИЕ ПРЕРЫВАНИЯ и 100 010 FCLEX ОЧИСТКА РЕГИСТРОВ АДРЕСА КОМАНДЫ И ОПЕ- 11 100 011 FINT ИНИЦИАЛИЗАЦИЯ МКДА 11 100 1 — (HE ИСПОЛЬЗУЕТСЯ) ** 101 жжж (HE ИСПОЛЬЗУЕТСЯ) «*«> 110 — —— (HE ИСПОЛЬЗУЕТСЯ) MOD 111 R/M FSTP EA,ST ЗАПИСЬ И ВЫТАЛКИВАНИЕ ВРЕМЕННОГО ВЕЩЕСТ- И 111 • •• — (HE ИСПОЛЬЗУЕТСЯ) ВЕННОГО ОС MOD 000 R/M FADO ST,EA СЛОЖЕНИЕ ДЛИННЫХ ВЕЩЕСТВЕННЫХ 11 000 STI FADD STU),ST СЛОЖЕНИЕ MOD 001 R/M FMUL ST,EA УМНОЖЕНИЕ ДЛИННЫХ ВЕЩЕСТВЕННЫХ 11 001 STI FMUL STU),ST УМНОЖЕНИЕ MOO 010 R/M FCOM ST,EA СРАВНЕНИЕ ДЛИННЫХ ВЕЩЕСТВЕННЫХ 11 010 »<»« (HE ИСПОЛЬЗУЕТСЯ) MOD 011 R/M FCOMP ST,tA СРАВНЕНИЕ И ВЫТАЛКИВАНИЕ ДЛИННЫХ ВЕЩЕСТ- 11 011 •»« — (HE ИСПОЛЬЗУЕТСЯ) ВЕННЫХ MOD 100 R/M FSUB EA,ST ВЫЧИТАНИЕ ДЛИННЫХ ВЕЩЕСТВЕННЫХ 11 100 STI F SUB STU),ST ВЫЧИТАНИЕ И ВЫТАЛКИВАНИЕ MOD 101 к/м FSUB ST ,EA ВЫЧИТАНИЕ ДЛИННЫХ ВЕЩЕСТВЕННЫХ 1 1 101 STI FSUR STU),ST ВЫЧИТАНИЕ И ВЫТАЛКИВАНИЕ MOD 110 R/M FDIV EA,ST ДЕЛЕНИЕ ДЛИННЫХ ВЕЩЕСТВЕННЫХ 11 110 STI FDIV st (i),st ДЕЛЕНИЕ И ВЫТАЛКИВАНИЕ MOO 111 R/M FDIV ST ,E A ДЕЛЕНИЕ ДЛИННЫХ ВЕЩЕСТВЕННЫХ 11 111 STI FDIV STU),ST ДЕЛЕНИЕ И ВЫТАЛКИВАНИЕ 00 MOO 000 R/M FLD ' ea,st ЗАГРУЗКА ДЛИННОГО ВЕЩЕСТВЕННОГО 11 000 STI FFREE STU) ОЧИСТКА STU) ЖЖ 001 жжж (HE ИСПОЛЬЗУЕТСЯ) MOD 010 R/M FST EA,ST ЗАПИСЬ ДЛИННОГО ВЕЩЕСТВЕННОГО 1 1 010 STI FST ЗАПИСЬ ST В STU) MOD 011 R/M FSTP EA,ST ЗАПИСЬ И ВЫТАЛКИВАНИЕ ДЛИННОГО 8ЕШЕСТ- 1 1 011 STI FSTP STU) ЗАПИСЬ ST В STU) ВЕННОГО MOD 100 R/M FRSTUR t A ПЕРЕЗАГРУЗКА СОСТОЯНИЯ 11 100 жжж (НЕ ИСПОЛЬЗУЕТСЯ) • •• 101 жжж (HE ИСП0ЛЬЗУ1 ТСЯ) MOD 110 k/M FSAVE E A СОХРАНЕНИЕ СОСТОЯНИЯ 11 110 ЖЖЖ (HE ИСПОЛЬЗУЕТСЯ) 124
Продолжение приложения 3 КОД КОМАНДЫ ОПЕРАЦИЯ ОПЕРАНД НАЗНАЧЕНИЕ MOD И DE MOD 11 MOD 11 MOD И MOD 11 MOD И MOD 11 MOD 11 MOD 11 DF MOD 11 MOD 11 MOD 11 MOD 11 MOD 11 MOD 11 111 R/M 111----- eee r/m eee sti eei r/m eei sti eie r/m eie — eu r/m en eei lee r/m iee sti 1«1 R/M lei sti ue r/m ne sti in R/M ill STI eee r/m eee eei — eie r/m eie — en r/m ®n — lee — iei r/m lei lie r/m it® — 111 R/M in FSTSW EA (HE ИСПОЛЬЗУЕТСЯ) FADD 8T,EA FADD ST,STU) FMUL ST,EA FMUL ST,ST(I) FCUM ST,EA (НЕ ИСПОЛЬЗУЕТСЯ) FCOMP ST,EA FCDMPP ST,STU) FSUB EA,ST FSUB ST,STU) FSUB ST,EA FSUB STU),ST FDIV EA,ST FDIV ST,STU) FDIV ST,EA FDIV STU),ST FLD EA,ST (HE ИСПОЛЬЗУЕТСЯ) (HE ИСПОЛЬЗУЕТСЯ) FST EA,ST (HE ИСПОЛЬЗУЕТСЯ) FSTP EA,ST (HE ИСПОЛЬЗУЕТСЯ) (HE ИСПОЛЬЗУЕТСЯ) FLD ST,EA (HE ИСПОЛЬЗУЕТСЯ) FSTP ST,EA (HE ИСПОЛЬЗУЕТСЯ) FSTP EA,ST (HE ИСПОЛЬЗУЕТСЯ) ЗАПИСЬ СЛОВА СОСТОЯНИЯ СЛОЖЕНИЕ КОРОТКИХ ЦЕЛЫХ СЛОЖЕНИЕ И ВЫТАЛКИВАНИЕ УМНОЖЕНИЕ КОРОТКИХ ЦЕЛЫХ УМНОЖЕНИЕ И ВЫТАЛКИВАНИЕ СРАВНЕНИЕ КОРОТКИХ ЦЕЛЫХ СРАВНЕНИЕ И ВЫТАЛКИВАНИЕ КОРОТКИХ ЦЕЛЫХ СРАВНЕНИЕ И ВЫТАЛКИВАНИЕ ДВАЖДЫ ВЫЧИТАНИЕ КОРОТКИХ ЦЕЛЫХ ВЫЧИТАНИЕ ВЫЧИТАНИЕ КОРОТКИХ ЦЕЛЫХ ВЫЧИТАНИЕ ДЕЛЕНИЕ КОРОТКИХ ЦЕЛЫХ *' ДЕЛЕНИЕ ДЕЛЕНИЕ КОРОТКИХ ЦЕЛЫХ ДЕЛЕНИЕ ЗАГРУЗКА КОРОТКОГО ЦЕЛОГО ЗАПИСЬ КОРОТКОГО ЦЕЛОГО ЗАПИСЬ И ВЫТАЛКИВАНИЕ КОРОТКОГО ЦЕЛОГО ЗАГРУЗКА ДЛИННОГО ЦЕЛОГО ЗАПИСЬ ДВОИЧНО-ДЕСЯТИЧНОГО и ВЫТАЛКИВАНИЕ ЗАПИСЬ ДЛИННОГО ЦЕЛОГО И ВЫТАЛКИВАНИЕ
СПИСОК ЛИТЕРАТУРЫ 1, Гальперин М. П. Одноплатные микроЭВМ и микроконтроллеры // Микропро- цессорные средства и системы, 1984. № 2. С. 16-19. 2. Зеленко Г. В., Попов С. Н., Панов В. В. Персональный радиолюбительский компьютер ”Радио-86РК” // Радио. 1986. № 5. 3. Бытовая персональная микроЭВМ ’’Электроника БК-0010” / А. Н. Полосин, 3. А. Счепицкий, М. И. Дябин и др. // Микропроцессорные средства и системы. 1985. №1. С. 22-25. 4. Тилинин Д. А. Персональная ЭВМ. ”Океан-240” // Микропроцессорные сред- стваи системы. 1986. № 2. С. 24, 25; № 4. С. 69-78. 5. Иванов С. Н., Романов А. Ф., Чернышов Ю. И. Одноплатная микроЭВМ на МПК БИС серии К1810 // Микропроцессорные средства и системы. 1986. № 6. С. 8-13. 6. Модуль процессора персональной ЭВМ ’’Ириша” / В. Н. Барышников, В. П. Быстров, М. А. Воронов и др. // Микропроцессорные средства и системы. 1986. №2. С. 52-62. 7. Еремин Ю. А., Морозов А. Г. Контроллер динамического ОЗУ для микропро- цессорных систем // Микропроцессорные средства и системы. 1986. № 3. С. 75-77. 8. Кобылииский А. В., Москалевский А. И., Темченко В. А. Однокристальный высокопроизводительный 16-разрядный микропроцессор КМ1810ВМ86 // Мик- ропроцессорные средства и системы. 1986. № 1. С. 28-33. 9. Григорьев В. Л. Программирование однокристальных микропроцессоров. М.: Энергоатомиздат. 1987. 10. Алексеенко А. Г., Галицын А. А., Иванников А. Д. Проектирование ра- диоэлектронной аппаратуры на микропроцессорах. М.: Радио и связь. 1984. 11. Заморин А. П., Мячев А. А., Селиванов Ю. П. Вычислительные машины, системы, комплексы: справочник. М.: Энергоатомиздат, 1985. 12. Аппаратно-программные адаптеры операционных систем персональных ЭВМ / Б. Л. Ганюк, Л. Л. Муренко, Е. А. Иванов, С. Я. Красовский // Микропро- цессорные средстваи системы. 1986. № 4. С. 43-45. 13. Уэйт М., Ангермейер Дж. Операционная система СР/М. М.: Радио и связь, 1986. 14. Data Component Catalog. Santa Clara, Calif.: Intel Corp. 1983. 15. Yu Cheng Liu, Glenn A. Gibson. Microcomputer System the 8086/8088 Fami- ly, Architecture, Programming and Design. Prentice-Hall inc. Englewood Cliffs, N. Y. 07632. 1984. 16. Hughes L. E. System programming under CP/M-80. Reston Publishing Compa- ny. 1983. 17. Dahmke. The Byte Guide to CP/M-86. McGraw-Hill Book Company. 1984. 18. The CP/M 2.0 System Alteration Guide. Digital Research. 1979.
ОГЛАВЛЕНИЕ Предисловие редактора............................................... 3 Введение ........................................................... 5 Глава 1. Проектирование одноплатных микроЭВМ........................ 9 1.1. Параметры одноплатных микроЭВМ............................. 9 1.2. Выбор структуры одноплатной микроЭВМ...................... 13 1.3. Методы повышения производительности микроЭВМ.............. 18 1.4. Методы уменьшения потребляемой мощности одноплатной мик- роЭВМ........................................................ 22 1.5. Выбор конструкции одноплатной микроЭВМ.................... 24 1.6. Проблемы адаптации программного обеспечения............... 26 Глава 2. Микропроцессорный комплект К1810.......................... 28 2.1. Состав комплекта.......................................... 28 2.2. Микропроцессор КМ1810ВМ86................................. 28 2.3. Арифметический сопроцессор КМ1810ВМ87..................... 33 2.4. Генератор тактовых импульсов КР1810ГФ84................... 45 2.5. Системный контроллер КР1810ВГ88........................... 46 2.6. Арбитр системной шины К1810ВБ89........................... 47 2.7. Контроллер приоритетных прерываний К1810ВН59А............. 50 Глава 3. Одноплатная микроЭВМ на базе микропроцессорного комплекта серии К1810........................................................ 58 3.1. Технические характеристики............................... 58 3.2. Блок центрального процессора............................. 61 3.3. Контроллер ОЗУ............................................ 66 3.4. Контроллер ППЗУ........................................... 70 3.5. Контроллеры внешних устройств............................. 73 3.6. Работа микроЭВМ в мультипроцессорном режиме............... 79 Глава 4. Одноплатная микроЭВМ на базе микропроцессорного комплекта серии К580 ........................................................ 83 4.1. Особенности микроЭВМ...................................... 83 4.2. Схема регенерации ОЗУ и диспетчеризация памяти ........... 88 4.3. Контроллеры внешних устройств............................. 93 Глава 5. СР/М - операционная система для микроЭВМ.................. 97 5.1. Общая характеристика СР/М................................. 97 5.2. Генерация ОС СР/М......................................... 99 5.3. Программирование системы ввода-вывода.....................103 5.4. Модель системы ввода-вывода...............................106 5.5. Приказы СР/М..............................................113 Приложение 1. Система команд микропроцессора КМ1810ВМ86 (в шестнад- цатеричной системе счисления)............................ ^ ...... 115 Приложение 2. Система команд микропроцессора КМ1810ВМ86............121 Приложение 3. Система команд арифметического сопроцессора КМ1810ВМ87 (в шестнадцатеричной системе счисления)............................123 Список литературы..................................................126
Производственное издание Домрачев Вилеи Григорьевич Иванов Станислав Николаевич Романов Анатолий Федорович ' Чернышов Юрий Николаевич ОДНОПЛАТНЫЕ микроЭВМ Редактор А. Д. Иванников Редактор издательства Л. Н. Гусяцкая Художественный редактор Т. А. Дворецкова Технический редактор Н. М. Брудная Корректор Р.К. Шилова ИБ № 2534 Набор выполнен в издательстве. Подписано в печать с оригинала-макета 23.02.88. Т-04592. Формат 60 х 88 1/16. Бумага офсетная №2. Печать офсетная. Усл. печ.л. 7,84. Усл.кр.-отт. 8,08. Уч.-изд.л. 9,10. Тираж 25 000 зкз. Заказ 6372. Цена 45 к. Энергоатомиздат, 113114, Москва, М-114, Шлюзовая наб., 10. Отпечатано в ордена Октябрьской Революции и ордена Трудового Красного Зна- мени МПО ’’Первая Образцовая типография имени А.А. Жданова” Союзполиграф- прома при Госкомиздате СССР. 113054, Москва, М-54, Валовая, 28.