Разработка микропроцессорной системы на базе комплекта БИС КР580: Аппаратные и программные аспекты (Курсовая работа)

В 1974 году, когда компания Intel представила миру свой 8-разрядный микропроцессор i8080A, она положила начало новой эре в вычислительной технике. Чуть позже, в Советском Союзе, его функциональный аналог — микропроцессор КР580ВМ80А — стал краеугольным камнем для создания целого ряда отечественных персональных компьютеров, таких как легендарные «Радио-86РК», «Микроша», «Специалист», «Корвет», «Вектор-06Ц» и «Орион-128». Эти машины, а также многочисленные контроллеры и промышленные системы, стали живым воплощением инженерной мысли и практическим полигоном для освоения микропроцессорной техники. Изучение архитектуры и принципов работы этих систем остается актуальным и сегодня, поскольку оно формирует глубокое понимание фундаментальных основ компьютерной инженерии, схемотехники и программирования, которые лежат в основе современных сложных систем. Важно отметить, что, несмотря на давность разработки, принципы, заложенные в этих системах, являются базисом для понимания функционирования более современных, но концептуально схожих устройств, а для студента или инженера они открывают двери к полноценному освоению аппаратных и программных решений.

Настоящая курсовая работа ставит своей целью не просто изучение, а комплексную разработку микропроцессорной системы (МПС) на базе комплекта больших интегральных схем (БИС) серии КР580. Мы проведем всесторонний анализ ее архитектуры, принципов функционирования, а также предложим детальные подходы к проектированию как аппаратных, так и программных средств. Целью работы является не только теоретическое осмысление, но и приобретение практических навыков по построению, конфигурированию и программированию МПС.

В рамках курсовой работы будут решены следующие задачи:

  • Анализ общих принципов организации микропроцессорных систем и места комплекта КР580 в этом контексте.
  • Детальное изучение архитектуры и функциональных особенностей микропроцессора КР580ВМ80А.
  • Разработка аппаратных средств МПС, включая системный контроллер, модули памяти и схемы дешифрации адресов.
  • Анализ и проектирование механизмов обмена данными (параллельный ввод/вывод, прямой доступ к памяти) и системы прерываний с использованием специализированных БИС КР580ВВ55, КР580ВТ57 и КР580ВН59.
  • Разработка программных средств, включая алгоритмы и примеры кода на языке Ассемблер для инициализации периферийных БИС и решения типовых задач.

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

Общие принципы организации микропроцессорных систем

Фундаментальное понимание того, что такое микропроцессорная система, является отправной точкой для любой работы, связанной с ее проектированием, и именно в середине 70-х годов XX века, когда комплект БИС КР580 только начинал свой путь, он стал воплощением передовой мысли, позволяющей создавать программируемые устройства, способные обрабатывать цифровую информацию и управлять сложными процессами. Сегодня, спустя десятилетия, принципы, заложенные в этих системах, остаются актуальными, формируя основу для понимания современных компьютеров и встроенных систем.

Микропроцессорные системы: определение и назначение

Микропроцессорная система (МПС) — это комплекс программно-управляемых устройств, предназначенный для обработки цифровой информации и управления процессом этой обработки. В своей основе любая МПС состоит из микропроцессора, памяти (оперативной и постоянной) и устройств ввода/вывода, объединенных общей шинной архитектурой.

Центральным элементом МПС является микропроцессор (МП). Это программно-управляемое устройство, как правило, реализованное в виде одной или нескольких интегральных схем, способное выполнять арифметические и логические операции, а также управлять потоком данных. Он является «мозгом» системы, интерпретирующим и исполняющим команды программы.

Термин БИС (Большая Интегральная Схема) относится к уровню интеграции электронных компонентов. Комплект БИС КР580, названный так в соответствии с отечественной системой маркировки, представлял собой набор специализированных микросхем, которые в совокупности позволяли построить полноценную МПС.

Исторически комплект КР580 сыграл колоссальную роль в развитии отечественной вычислительной техники. Он был сердцем множества советских персональных компьютеров, ставших символами своей эпохи:

  • «Радио-86РК»: один из первых массовых любительских компьютеров, схема которого была опубликована в журнале «Радио».
  • «Микроша»: еще один популярный домашний компьютер, ориентированный на обучение и игры.
  • «Специалист»: машина, известная своей простотой и доступностью для самостоятельной сборки.
  • «Корвет»: более продвинутый ПК, использовавшийся в школах и образовательных учреждениях.
  • «Вектор-06Ц», «Орион-128»: компьютеры с расширенными графическими возможностями и памятью.

Помимо персональных компьютеров, МПС на базе КР580 находили широкое применение в промышленных контроллерах и других системах управления. Их надежность и относительная простота в освоении делали их идеальным выбором для автоматизации различных технологических процессов, где требовалось управление цифровыми системами и оборудованием, а также реализация сложных алгоритмов в аппаратуре.

Архитектурные особенности и быстродействие комплекта КР580

Комплект БИС серии КР580 относится к однокристальному типу микропроцессорных комплектов. Это означает, что основные функции микропроцессора (АЛУ, регистры, управляющее устройство) были реализованы на одной кремниевой пластине. Применение n-МОП технологии (n-канальные транзисторы на основе структуры металл-оксид-полупроводник) обеспечивало приемлемое быстродействие и относительно низкое энергопотребление для того времени.

Быстродействие процессоров КР580 первого поколения, примененных в этих комплектах, было вполне достаточным для решения большинства задач того времени. На операциях типа «регистр-регистр», где данные обрабатывались непосредственно внутри процессора, производительность достигала до 500 тысяч операций в секунду. Для операций «регистр-память», требующих обращения к внешней памяти, скорость была немного ниже — до 300 тысяч операций в секунду.

Микропроцессорный комплект КР580 разрабатывался для построения МПС относительно невысокого быстродействия, работающих с тактовой частотой до 2,5 МГц. Это делало его идеальным инструментом для решения задач, связанных с управлением разнообразными технологическими процессами, где критически важными были надежность, предсказуемость работы и умеренная стоимость, а не пиковая производительность. Примеры таких задач включают:

  • Управление различными цифровыми системами, такими как светофоры, системы охранной сигнализации.
  • Промышленные контроллеры для станков, конвейеров, климатических установок.
  • Реализация алгоритмов управления в различной бытовой и специализированной аппаратуре.

Интерфейсы и временная организация МПС

Для комплексной характеристики возможностей микропроцессора и его взаимодействия с внешними устройствами используется понятие архитектуры. Архитектура МПС описывает не только внутреннее устройство самого микропроцессора, но и способы его взаимодействия с памятью и периферией.

Ключевым элементом в этом взаимодействии является интерфейс. В контексте МПС, интерфейс — это не просто разъем, а совокупность программно-аппаратных средств, обеспечивающих сопряжение микропроцессора, модулей памяти и устройств ввода/вывода (УВВ). Он определяет правила и протоколы обмена данными, синхронизацию и управление. Правильно спроектированный интерфейс позволяет различным компонентам системы «понимать» друг друга и эффективно обмениваться информацией.

По характеру временной организации работы, микропроцессоры делятся на:

  • Синхронные: Их работа полностью привязана к сигналам тактового генератора. Все операции выполняются в строгом соответствии с тактами, что обеспечивает предсказуемость и упрощает проектирование. Большинство микропроцессоров, включая КР580ВМ80А, относятся к этому типу.
  • Асинхронные: Эти МП работают без постоянной тактовой синхронизации, используя сигналы квитирования для подтверждения завершения операций. Такие системы потенциально могут быть быстрее, но их проектирование значительно сложнее.

Понимание этих базовых принципов позволяет перейти к более детальному анализу центрального элемента любой МПС — микропроцессора КР580ВМ80А.

Архитектура и функциональные особенности микропроцессора КР580ВМ80А

Центральное место в микропроцессорной системе на базе комплекта КР580 занимает микропроцессор КР580ВМ80А. Это сердце системы, определяющее ее вычислительные возможности, скорость и способы взаимодействия с окружающим миром. Детальное изучение его архитектуры, внутренних регистров и системы команд является критически важным для любого инженера, занимающегося проектированием и программированием на этой платформе.

КР580ВМ80А: история, характеристики и структура

КР580ВМ80А представляет собой функционально законченный однокристальный параллельный 8-разрядный микропроцессор с фиксированной системой команд. Его разработка в Киевском НИИ микроприборов стала значимым достижением отечественной электроники, поскольку он являлся полным функциональным аналогом американского микропроцессора Intel i8080A, выпущенного в 1974 году. Это обеспечивало возможность обмена опытом и программным обеспечением с западными разработками.

Назначение КР580ВМ80А — использование в качестве центрального процессора в широком спектре устройств обработки данных и управления. Он стал основой для целого поколения компьютеров и контроллеров, благодаря своей универсальности и достаточной для многих задач производительности.

Технологически КР580ВМ80А был выполнен по 6 мкм n-МДП (n-канальная металл-диэлектрик-полупроводник) технологии и содержал примерно 4500 транзисторов. Эти параметры, хоть и кажутся скромными по современным меркам, в середине 1970-х годов были на передовом рубеже микроэлектроники.

КР580ВМ80А обладает классической шинной организацией, характерной для 8-разрядных микропроцессоров того времени:

  • 16-разрядная шина адреса: Это позволяет процессору напрямую адресовать внешнюю память объёмом до 216 = 65536 байт (64 Кбайт). Для своего времени это был значительный объем, достаточный для операционной системы, прикладных программ и данных.
  • 8-разрядная шина данных: Через эту шину процессор обменивается информацией с памятью и устройствами ввода/вывода.
  • Адресация устройств ввода/вывода: Помимо памяти, процессор может адресовать до 256 отдельных устройств ввода/вывода, что обеспечивает гибкость в подключении периферии.

Максимальная тактовая частота для КР580ВМ80А составляет до 2,5 МГц. При типичной тактовой частоте 2 МГц, средняя производительность процессора оценивалась на уровне 200-300 тысяч операций в секунду. Однако, для операций, не требующих обращения к внешней памяти (например, регистровых операций), быстродействие могло достигать до 500 тысяч операций в секунду.

Одной из особенностей КР580ВМ80А было требование к трем источникам питания: −5В, +5В, +12В. Это усложняло схемотехнику, но обеспечивало стабильную работу. Позднее были разработаны методы, позволяющие работать и от одного источника +5В, путем подачи +5В вместо +12В и земли вместо −5В, что упрощало интеграцию в более компактные системы.

Внутренняя организация КР580ВМ80А

Внутренняя архитектура КР580ВМ80А включает ряд ключевых функциональных блоков и регистров, каждый из которых выполняет свою специфическую роль:

  • 8-разрядное арифметико-логическое устройство (АЛУ): Выполняет все арифметические (сложение, вычитание) и логические (И, ИЛИ, НЕ, исключающее ИЛИ) операции над 8-разрядными данными.
  • Аккумулятор (A): Специальный 8-разрядный регистр, в котором хранятся один из операндов для АЛУ и результат большинства операций. Он играет центральную роль в обработке данных.
  • Регистр признаков (RS): Также известный как флаговый регистр. Это 8-разрядный регистр, отдельные биты которого (флаги) фиксируют результаты выполнения арифметических и логических операций. Ключевые признаки:
    • C (Carry): Флаг переноса/заема. Устанавливается, если операция привела к переносу из старшего разряда или заёму в младший.
    • C1 (Auxiliary Carry): Флаг дополнительного переноса (полупереноса). Устанавливается при переносе из младшей тетрады (биты 0-3) в старшую тетраду (биты 4-7) в ходе сложения/вычитания. Используется для десятичной коррекции.
    • P (Parity): Флаг четности. Устанавливается, если число единиц в результате операции четное.
    • Z (Zero): Флаг нуля. Устанавливается, если результат операции равен нулю.
    • S (Sign): Флаг знака. Устанавливается, если старший разряд результата (бит 7) равен 1, что обычно интерпретируется как отрицательное число в дополнительном коде.
  • Программный счетчик (PC, Program Counter): 16-разрядный регистр, хранящий адрес очередной команды, которую процессор должен выполнить. После выборки каждого байта команды значение PC автоматически увеличивается, указывая на следующий байт команды или на начало следующей команды.
  • Указатель стека (SP, Stack Pointer): 16-разрядный регистр, хранящий адрес последней занятой ячейки стековой памяти. Стек — это область памяти, используемая для временного хранения данных, адресов возврата подпрограмм и состояния регистров. Работает по принципу LIFO (Last In, First Out).
  • Шесть 8-разрядных регистров общего назначения (B, C, D, E, H, L): Эти регистры предназначены для временного хранения данных или адресов. Они могут использоваться индивидуально как 8-разрядные регистры, либо объединяться в парные 16-разрядные регистры:
    • BC: пара регистров B и C.
    • DE: пара регистров D и E.
    • HL: пара регистров H и L.

Эти парные регистры особенно удобны для хранения 16-разрядных адресов или данных, что значительно повышает гибкость программирования.

В дополнение к этим основным регистрам, процессор содержит и другие вспомогательные регистры, такие как регистр команд, дешифратор команд, и регистры для временного хранения операндов, обеспечивающие слаженную работу всех блоков.

Система команд и режимы адресации КР580ВМ80А

Система команд КР580ВМ80А является мощным инструментом для управления процессором и данными. Она включает 78 базовых команд и в целом 244 различные их модификации, что предоставляет широкие возможности для программирования. Эти команды логически разделены на несколько групп:

  1. Команды передачи данных: Перемещение данных между регистрами, между регистром и памятью, загрузка непосредственных данных в регистры. Примеры: MOV (переместить), MVI (переместить непосредственное значение), LDA (загрузить аккумулятор из памяти), STA (сохранить аккумулятор в памяти).
  2. Арифметические операции: Сложение, вычитание, инкремент (увеличение на 1), декремент (уменьшение на 1) над 8-разрядными и 16-разрядными данными. Примеры: ADD (сложить), SUB (вычесть), INR (инкремент регистра), DCR (декремент регистра), DAD (сложить парный регистр с HL).
  3. Логическая обработка данных: Выполнение логических операций (И, ИЛИ, исключающее ИЛИ, НЕ), сравнение данных. Примеры: ANA (логическое И с аккумулятором), ORA (логическое ИЛИ с аккумулятором), XRA (исключающее ИЛИ с аккумулятором), CMP (сравнить).
  4. Команды переходов и вызова подпрограмм: Изменение последовательности выполнения программы, безусловные и условные переходы, вызовы подпрограмм и возвраты из них. Примеры: JMP (безусловный переход), CALL (вызов подпрограммы), RET (возврат из подпрограммы), JZ (переход, если ноль), CNC (вызов, если нет переноса).
  5. Команды управления процессором: Управление флагами, режимом работы процессора (например, разрешение/запрет прерываний), команда NO OPERATION. Примеры: NOP (нет операции), EI (разрешить прерывания), DI (запретить прерывания).

Команды КР580ВМ80А могут быть одно-, двух- или трехбайтными, в зависимости от сложности операции и необходимости указания дополнительных операндов (например, непосредственных данных или адресов).

Микропроцессор КР580ВМ80А поддерживает четыре основных режима адресации, определяющих, как процессор находит операнды для команд:

  1. Прямая адресация (Direct Addressing): Адрес операнда указывается непосредственно в самой команде (обычно во втором и третьем байтах). Процессор считывает этот адрес и использует его для доступа к памяти.
    * Пример: LDA 2000H (Загрузить аккумулятор из ячейки памяти с адресом 200016).
  2. Регистровая адресация (Register Addressing): Операнд находится в одном из внутренних ре��истров микропроцессора. Команда указывает только имя регистра. Это самый быстрый режим адресации.
    * Пример: MOV A, B (Переместить содержимое регистра B в аккумулятор A).
  3. Непосредственная адресация (Immediate Addressing): Сам операнд (данные) является частью команды и содержится в одном из следующих байтов команды.
    * Пример: MVI A, 55H (Переместить непосредственное значение 5516 в аккумулятор A).
  4. Косвенная регистровая адресация (Register Indirect Addressing): Адрес операнда хранится в парном регистре (BC, DE или HL). Команда указывает парный регистр, содержимое которого используется как адрес ячейки памяти.
    * Пример: MOV A, M (Переместить содержимое ячейки памяти, на которую указывает пара регистров HL, в аккумулятор A). Здесь ‘M’ обозначает память, адресуемую через HL.

Понимание этих режимов адресации критично для эффективного программирования на Ассемблере и оптимизации использования ресурсов системы.

Разработка аппаратных средств микропроцессорной системы на КР580

Разработка аппаратной части микропроцессорной системы — это процесс, требующий глубокого понимания взаимодействия различных компонентов и принципов схемотехники. На базе комплекта КР580 создавались системы, которые, несмотря на свою относительную простоту по современным меркам, требовали точного расчета и тщательного проектирования. В этом разделе мы рассмотрим типовую структуру такой МПС, роль системного контроллера и принципы организации памяти.

Типовая структура МПС на комплекте КР580

Для построения функциональной микропроцессорной системы на базе комплекта КР580 необходимо объединить несколько ключевых БИС, каждая из которых выполняет свою специфическую функцию. Типовая структура МПС включает в себя следующие основные компоненты:

  1. Микропроцессор КР580ВМ80А: Как было сказано ранее, это центральный элемент, отвечающий за выполнение команд, обработку данных и управление работой всей системы.
  2. Генератор тактовых сигналов КР580ГФ24: Микропроцессор КР580ВМ80А является синхронным устройством, и его работа требует стабильных тактовых импульсов. КР580ГФ24 специально разработан для генерации всех необходимых синхросигналов (например, Φ1, Φ2) для процессора и других элементов системы. Он обеспечивает заданную тактовую частоту и фазировку импульсов, критически важные для корректного выполнения команд.
  3. Системный контроллер КР580ВК28 или КР580ВК38: Эта БИС играет роль «диспетчера» шины, формируя управляющие сигналы, необходимые для координации обмена данными между микропроцессором, памятью и устройствами ввода/вывода. О его функциях будет подробно рассказано в следующем подразделе.
  4. Буферные схемы адреса: Выходные шины адреса микропроцессора КР580ВМ80А имеют ограниченную нагрузочную способность. Для подключения большого количества микросхем памяти и периферийных устройств, которые могут превышать допустимую нагрузку, используются буферные схемы. Они усиливают сигналы на шине адреса, обеспечивая их стабильность и распространение по всей системе. Примерами таких буферов могут служить микросхемы серии К555 (например, К555ИР23 или аналогичные).
  5. Модули памяти (ОЗУ и ПЗУ): Для хранения программ и данных используются оперативное запоминающее устройство (ОЗУ, RAM) и постоянное запоминающее устройство (ПЗУ, ROM).
  6. Интерфейсные модули (УВВ): Для взаимодействия с внешним миром (клавиатура, дисплей, принтер, датчики, исполнительные механизмы) используются специализированные микросхемы ввода/вывода, такие как КР580ВВ55 (параллельный порт), КР580ВТ57 (контроллер прямого доступа к памяти), КР580ВН59 (контроллер прерываний) и другие.

Эти компоненты соединяются между собой посредством системных шин: шины адреса, шины данных и шины управления.

Системный контроллер КР580ВК38/КР580ВК28

Системный контроллер является одним из ключевых элементов, обеспечивающих нормальное функционирование МПС на КР580. Микросхемы КР580ВК28 и КР580ВК38 выполняют функцию шинного формирователя и системного контроллера. Их основная задача — преобразование сигналов состояния микропроцессора в стандартизированные управляющие сигналы, понятные другим компонентам системы, а также буферизация шины данных. Чем это важно? Без такого контроллера прямое подключение множества устройств к процессору было бы невозможно из-за ограничений по нагрузочной способности и необходимости сложных логических схем для каждого взаимодействия.

Функции системного контроллера:

  • Формирование управляющих сигналов: На основе сигналов состояния, выдаваемых микропроцессором (например, S0, S1, DBIN, WR), КР580ВК38/КР580ВК28 генерирует управляющие сигналы для различных типов операций:
    • RD (Read): Чтение данных из памяти.
    • WR (Write): Запись данных в память.
    • RDIO (Read I/O): Чтение данных из устройства ввода/вывода.
    • WRIO (Write I/O): Запись данных в устройство ввода/вывода.
    • INTA (Interrupt Acknowledge): Подтверждение прерывания. Этот сигнал выдается в ответ на запрос прерывания от периферийного устройства, информируя его о том, что процессор готов к обработке прерывания.
  • Прием и передача 8-разрядной информации: КР580ВК38 обеспечивает двунаправленную передачу данных между 8-разрядной шиной данных микропроцессора и системной шиной данных, действуя как буфер. Это позволяет изолировать шину данных процессора от возможной перегрузки и обеспечивает корректное взаимодействие с периферийными устройствами.

Различия между КР580ВК28 и КР580ВК38 заключаются лишь в длительности двух формируемых управляющих сигналов: WR (запись в память) и WRIO (запись в УВВ). КР580ВК38 формирует эти сигналы более длинными по времени, что может быть важно для некоторых типов медленных периферийных устройств или памяти, требующих более длительного времени для записи данных.

Организация модулей памяти (ОЗУ и ПЗУ)

Резидентные запоминающие устройства — оперативное запоминающее устройство (ОЗУ, RAM) и постоянное запоминающее устройство (ПЗУ, ROM) — являются неотъемлемой частью любой МПС. В системе на базе КР580ВМ80А они реализуются в общей области адресного пространства памяти, что означает, что процессор обращается к ним как к обычным ячейкам памяти, используя одни и те же команды (например, LDA, STA).

  • ПЗУ (ROM, Read-Only Memory): Содержит неизменяемые данные, такие как системный монитор, загрузчик, таблицы постоянных данных. Его содержимое сохраняется при отключении питания. В момент включения системы, процессор начинает выполнение команд с определенного адреса в ПЗУ (обычно 000016), где хранится начальный загрузчик.
  • ОЗУ (RAM, Random Access Memory): Используется для хранения программных переменных, временных данных, стека и пользовательских программ. Его содержимое теряется при отключении питания.

Расчет и планирование адресного пространства памяти

Планирование адресного пространства — это критически важный этап проектирования, определяющий, как будут распределены блоки ОЗУ и ПЗУ в 64 Кбайт адресного пространства микропроцессора.

Методика расчета:

  1. Определение объемов памяти:
    • ПЗУ: Определяется объемом системного монитора и других постоянных программ. Пусть, например, требуется 8 Кбайт ПЗУ.
    • ОЗУ: Определяется потребностями в рабочей памяти для программ и данных. Пусть требуется 16 Кбайт ОЗУ.
  2. Выбор начальных адресов:
    • Для ПЗУ обычно выбирается начальный адрес 000016, поскольку процессор КР580ВМ80А начинает выполнение программы именно с него после сброса.
    • Для ОЗУ выбирается адрес, следующий за ПЗУ, или любой другой свободный блок.
  3. Определение конечных адресов:
    • Конечный адрес = Начальный адрес + Объем памяти — 1.
    • Для ПЗУ (8 Кбайт = 8192 байта) с начальным адресом 000016:
      Конечный адрес ПЗУ = 000016 + 8192 — 1 = 000016 + 1FFF16 = 1FFF16.
    • Для ОЗУ (16 Кбайт = 16384 байта). Если разместить его сразу после ПЗУ, то начальный адрес ОЗУ = 1FFF16 + 1 = 200016.
      Конечный адрес ОЗУ = 200016 + 16384 — 1 = 200016 + 3FFF16 = 5FFF16.

Пример планирования адресного пространства:

Устройство Объем Начальный адрес Конечный адрес Адресные биты для дешифрации
ПЗУ 8 Кбайт 000016 1FFF16 А15А14А13 = 000
ОЗУ 16 Кбайт 200016 5FFF16 А15А14 = 01
Порты УВВ 256 байт FF0016 FFFF16 Использование шины адреса для портов I/O

Примечание: Адресация портов ввода/вывода в КР580ВМ80А осуществляется по отдельной шине ввода/вывода, но для их выбора также могут использоваться биты шины адреса в комбинации с сигналом RDIO/WRIO, либо они могут быть отображены в пространство памяти. В данном примере для простоты обозначен блок для портов, доступ к которым осуществляется командами IN/OUT.

Построение схем дешифрации адресов памяти

Для того чтобы процессор мог выбрать нужный модуль памяти (ОЗУ или ПЗУ) или периферийное устройство, необходима схема дешифрации адресов. Она анализирует старшие биты шины адреса и генерирует управляющий сигнал выборки (Chip Select, CS) для соответствующей микросхемы.

Принцип построения:
Дешифратор адреса — это комбинационная логическая схема, которая преобразует двоичный код адреса в уникальный сигнал выбора одного из нескольких устройств.
Например, для дешифрации 8 Кбайт ПЗУ, занимающего адреса от 000016 до 1FFF16, нам нужно определить, какие старшие адресные биты будут уникальными для этого диапазона.
В 16-разрядной шине адреса (А015) для 8 Кбайт (213) младшие 13 битов (А012) используются для адресации внутри самого модуля памяти. Старшие биты (А13, А14, А15) используются для выбора модуля.
Для диапазона 000016-1FFF16, биты А15А14А13 будут 000.
Таким образом, сигнал CS для ПЗУ будет активен, когда А15=0, А14=0, А13=0. Для этого можно использовать трехвходовый элемент ИЛИ-НЕ, на входы которого подаются инверсные значения А15, А14, А13. Или, что чаще, используются стандартные дешифраторы 133ИД1, 155ИД4, 555ИД7.

Структурная схема дешифратора:
Представим, что у нас есть 16-разрядная шина адреса (ADDR0 — ADDR15).

           +---------------------+
ADDR_15 ---|                     |---- CS_ROM
ADDR_14 ---|   Адресный          |---- CS_RAM_0
ADDR_13 ---|   Дешифратор        |---- CS_RAM_1
    ...    | (напр., К555ИД7,    |---- CS_IO_PORT
ADDR_0 ----|   или логика на     |
           |   элементах И/НЕ)   |
           +---------------------+

Принципиальная схема (пример для ПЗУ 8 Кбайт, адрес 000016-1FFF16):
Используем логические элементы для формирования сигнала CS_ROM.
Так как А15, А14, А13 должны быть нулями, то для активации CS_ROM нам нужна логика, которая выдаст «0» (активный низкий уровень) при таком условии. Это можно сделать с помощью элемента 3ИЛИ-НЕ, если на его входы подать неинвертированные биты А15, А14, А13. Или, что чаще, используются стандартные дешифраторы 133ИД1, 155ИД4, 555ИД7.

Если мы используем микросхему дешифратора, например, К555ИД7 (дешифратор 3 на 8), то его адресные входы А, В, С будут подключены к А15, А14, А13. Один из восьми выходов (например, Y0) будет активен, когда А15А14А13 = 000. Этот выход Y0 будет подключен к входу CS микросхемы ПЗУ.

       A15 ----+           +---+
       A14 ----+--- [Дешифратор] --- Y0 --- CS_ROM
       A13 ----+           +---+

Такой подход позволяет гибко распределять память и устройства ввода/вывода, избегая конфликтов адресов и обеспечивая надежное функционирование системы.

Организация обмена данными и система прерываний

Взаимодействие микропроцессора с внешним миром — периферийными устройствами и памятью — является одной из ключевых задач при проектировании МПС. Комплект КР580 предлагал специализированные БИС для эффективной реализации параллельного ввода/вывода, прямого доступа к памяти и обработки прерываний. Эти механизмы существенно расширяли возможности системы, позволяя ей оперативно реагировать на внешние события и обрабатывать большие объемы данных.

Программируемый периферийный адаптер КР580ВВ55: параллельный ввод/вывод

КР580ВВ55 — это один из наиболее универсальных и широко используемых компонентов комплекта КР580. Он предназначен для организации параллельного ввода/вывода информации и обеспечивает сопряжение микропроцессора с различными периферийными устройствами, такими как клавиатуры, дисплеи, принтеры, датчики и исполнительные механизмы.

Структурно КР580ВВ55 имеет три 8-разрядных канала ввода/вывода (порта), обозначаемые как A, B и C. Каждый из этих портов может быть сконфигурирован для работы в различных режимах, что делает адаптер чрезвычайно гибким:

  • Порт A (PA0-PA7)
  • Порт B (PB0-PB7)
  • Порт C (PC0-PC7): Порт C, в свою очередь, может быть разделен на две тетрады (PC0-PC3 и PC4-PC7), которые могут работать независимо. Более того, биты порта C часто используются как управляющие или статусные сигналы для портов A и B в стробируемых режимах.

Направление обмена (ввод или вывод) и режим работы каждого канала КР580ВВ55 задаются программно путем записи управляющего слова в специальный регистр управления (РУС) адаптера. Это позволяет динамически перенастраивать порты в зависимости от текущей задачи системы.

КР580ВВ55 поддерживает три основных режима работы:

  1. Режим 0 (простой ввод/вывод):
    • Наиболее простой и распространенный режим.
    • Каналы A, B и C могут быть независимо запрограммированы на ввод или вывод.
    • В этом режиме отсутствуют управляющие сигналы квитирования, то есть обмен данными происходит без подтверждения готовности периферийного устройства или процессора.
    • Пример: Порт A — вывод данных на индикатор, Порт B — ввод данных с переключателей, Порт C (верхняя тетрада) — вывод, Порт C (нижняя тетрада) — ввод.
  2. Режим 1 (стробируемый ввод/вывод):
    • Предназначен для однонаправленного обмена данными с периферийными устройствами, требующими квитирования (стробирования).
    • Каналы A и B используются для передачи данных, а отдельные биты канала C (PC0-PC2 для порта B, PC3-PC5 для порта A) используются для управления обменом (например, STB — строб, IBF — буфер заполнен, OBF — буфер пуст, INT — запрос прерывания).
    • Пример: Ввод данных с клавиатуры с подтверждением нажатия клавиши (строб).
  3. Режим 2 (двунаправленный ввод/вывод):
    • Наиболее сложный режим, в котором канал A функционирует как двунаправленная 8-разрядная шина для обмена данными.
    • Канал C используется для формирования управляющих сигналов обмена по каналу A (например, STB, IBF, OBF, INT для двунаправленной передачи).
    • Порт B может работать в Режиме 0 или Режиме 1.
    • Пример: Сопряжение с другим микропроцессором или высокоскоростным периферийным устройством, где требуется быстрый двунаправленный обмен.

Важная особенность: первоначальное включение питания или подача сигнала высокого уровня на вход сброса RESET микросхемы КР580ВВ55 переводит все каналы (A, B, C) в Режим 0 (ввода). Это обеспечивает безопасное состояние по умолчанию, предотвращая случайный вывод данных на неподключенные порты. Почему это важно для инженера? Это позволяет избежать повреждения периферийных устройств в случае некорректной инициализации или сбоев в работе системы.

Контроллер прямого доступа к памяти КР580ВТ57 (КПДП)

Когда требуется высокоскоростной обмен большими объемами данных между памятью системы и периферийными устройствами (например, дисковыми накопителями, сетевыми адаптерами, графическими контроллерами), непосредственное участие микропроцессора в каждой операции передачи становится неэффективным. Для решения этой проблемы используются контроллеры прямого доступа к памяти (КПДП).

КР580ВТ57 — это специализированная БИС, предназначенная именно для такого высокоскоростного двунаправленного обмена данными. Его ключевое преимущество заключается в том, что он может осуществлять передачу данных без участия микропроцессора, значительно освобождая его ресурсы для выполнения других задач.

Основные характеристики КР580ВТ57:

  • Четыре независимых канала ПДП: Контроллер содержит четыре полностью автономных канала, каждый из которых может быть настроен для управления отдельным периферийным устройством. Это позволяет одновременно или последовательно обслуживать несколько высокоскоростных устройств.
  • Адресация массивов объемом до 16 Кбайт: Каждый канал КПДП обеспечивает адресацию внешней памяти массивами данных объемом до 16 Кбайт (214 байт). Это означает, что КПДП может управлять передачей блока данных такого размера за один цикл ПДП.
  • Гибкое задание начальных адресов: С возможностью задания любого из 64К начальных адресов в адресном пространстве памяти микропроцессора, КР580ВТ57 позволяет размещать буферы данных в любом доступном месте ОЗУ.

Принцип работы ПДП:
Когда периферийное устройство запрашивает передачу данных по ПДП, КПДП КР580ВТ57 берет на себя управление системными шинами (адреса, данных, управления). Он формирует в адресном канале микропроцессорной системы параметры заданного массива адресов ячеек памяти (начальный адрес и счетчик байтов) и генерирует необходимые управляющие сигналы (чтение/запись для памяти и периферии). При этом микропроцессор временно отключается от шин (переходит в состояние ожидания или HOLD), позволяя КПДП напрямую управлять памятью и периферией. После завершения блока передачи КПДП возвращает управление микропроцессору.

Программируемый контроллер прерываний КР580ВН59 (ПКП)

Системы реального времени и многозадачные системы требуют немедленной реакции на события, происходящие вне микропроцессора. Для этого используется механизм прерываний. КР580ВН59 — это программируемый контроллер прерываний (ПКП), который является связующим звеном между внешними устройствами и микропроцессором, эффективно управляя запросами на прерывание.

Роль КР580ВН59:

  • Обслуживание до восьми запросов на прерывание: Один КР580ВН59 может принимать и обрабатывать запросы от восьми различных внешних устройств (IRQ0-IRQ7).
  • Сокращение программных средств и времени: Без ПКП микропроцессор должен был бы постоянно опрашивать (сканировать) состояние всех периферийных устройств (программный опрос), что крайне неэффективно. КР580ВН59 избавляет процессор от этой задачи, позволяя ему выполнять основную программу до тех пор, пока не поступит запрос на прерывание.
  • Многоуровневые приоритеты: КР580ВН59 позволяет устанавливать приоритеты для каждого из восьми каналов прерываний. Это означает, что при одновременном поступлении нескольких запросов будет обслужен тот, который имеет наивысший приоритет. Алгоритм задания приоритета устанавливается программным путем, и что особенно важно, приоритеты могут быть изменены в процессе выполнения программ, что обеспечивает высокую гибкость в управлении системными ресурсами.
  • Каскадное соединение: Для систем, требующих обслуживания более восьми источников прерываний, предусмотрена возможность каскадного соединения до девяти микросхем КР580ВН59. Одна микросхема выступает в роли «ведущей» (Master), а остальные — в роли «ведомых» (Slave), что позволяет обрабатывать до (8 ведущая — 1 ведомый канал) + 8 * 8 ведомых = 7 + 64 = 64 запроса.

Внутренняя структура БИС КР580ВН59:
Понимание внутренней логики КР580ВН59 критично для его эффективного программирования. В состав микросхемы входят следующие ключевые блоки:

  • Двунаправленный 8-разрядный буфер данных: Обеспечивает связь между внутренней шиной КР580ВН59 и шиной данных микропроцессора, позволяя процессору читать регистры контроллера и записывать в них управляющие слова.
  • Блок управления записью/чтением (R/W Control Logic): Управляет потоком данных между буфером данных и внутренними регистрами КР580ВН59.
  • Схема каскадного буфера-компаратора (Cascade Buffer/Comparator): Используется при каскадном соединении КР580ВН59 для идентификации ведомых контроллеров, которые запрашивают прерывание.
  • Схема управления (Control Logic): Координирует работу всех внутренних блоков контроллера.
  • Регистр запросов прерываний (RGI — Interrupt Request Register): 8-разрядный регистр, в котором фиксируются активные запросы на прерывание, поступающие от внешних устройств на входы IRQ0-IRQ7. Каждый бит регистра соответствует одному запросу.
  • Схема принятия решений по приоритетам (PRB — Priority Resolver Block): Анализирует содержимое RGI и Регистра Маскирования Прерываний (RGM) и определяет, какой из активных запросов имеет наивысший приоритет и должен быть обслужен следующим.
  • Регистр обслуживаемых прерываний (ISR — In-Service Register): 8-разрядный регистр, хранящий информацию о запросах, которые в данный момент обслуживаются микропроцессором. Это предотвращает одновременное обслуживание нескольких запросов с одинаковым или более низким приоритетом.
  • Регистр маскирования прерываний (RGM — Interrupt Mask Register): 8-разрядный регистр, позволяющий программно маскировать (запрещать) отдельные запросы на прерывание. Если соответствующий бит в RGM установлен в 1, запрос на этот канал IRQ будет игнорироваться.

Совокупность этих блоков обеспечивает сложный, но эффективный механизм управления прерываниями, позволяя МПС на КР580 гибко реагировать на изменяющиеся условия работы.

Разработка программных средств и инициализация периферийных БИС

Создание аппаратной платформы — это лишь полдела. Для того чтобы микропроцессорная система ожила и начала выполнять свои функции, необходимо разработать соответствующее программное обеспечение. В эпоху КР580ВМ80А это означало программирование на языке Ассемблер, который позволял напрямую управлять каждым аспектом работы микропроцессора и периферийных устройств. Этот раздел посвящен принципам разработки ПО, особенностям инициализации ключевых БИС и примерам ассемблерного кода.

Обзор программного обеспечения для МПС на КР580

Для микропроцессорных систем на базе КР580ВМ80А существовал целый арсенал программного обеспечения, необходимого для разработки, отладки и запуска приложений. Он включал:

  • Монитор (System Monitor): Это базовый системный набор программ, обычно записанный в ПЗУ (ROM). Он обеспечивал самые фундаментальные функции МПС:
    • Базовый ввод/вывод: Обработка нажатий клавиш на клавиатуре, вывод символов на дисплей.
    • Загрузка программ: Возможность загрузки пользовательских программ с внешних носителей (например, магнитофонной ленты или дискеты).
    • Отладка: Простые функции для просмотра и изменения содержимого памяти и регистров, выполнения программы по шагам.
  • Ассемблер (Assembler): Специальная программа, которая переводит исходный текст программы, написанный на языке Ассемблер (с использованием мнемонических обозначений команд), в машинные коды, понятные микропроцессору.
  • Редактор (Text Editor): Программа для создания и редактирования текстовых файлов, в том числе исходных кодов программ на Ассемблере.
  • Бейсик (BASIC Interpreter): Для более сложных приложений и обучения программированию часто использовались интерпретаторы языка BASIC. Они позволяли писать программы на высокоуровневом языке, хотя и работали значительно медленнее, чем программы на Ассемблере.

Язык Ассемблер занимал центральное место в разработке ПО для КР580ВМ80А. Причина проста: машинные коды — это последовательности двоичных (или шестнадцатеричных) чисел, которые крайне трудны для непосредственного понимания и написания человеком. Например, операция сложения может кодироваться как C616. На Ассемблере вместо этого используется мнемоническое обозначение, такое как ADD, которое гораздо легче запомнить и использовать. Ассемблер давал программисту полный контроль над аппаратными ресурсами, позволяя писать максимально эффективный и быстрый код, что было критично для систем с ограниченными вычислительными мощностями и памятью.

Инициализация программируемых периферийных БИС

Прежде чем периферийные БИС, такие как КР580ВВ55 или КР580ВН59, смогут выполнять свои функции, их необходимо правильно сконфигурировать (инициализировать). Это делается программным путем путем записи специальных управляющих слов в их внутренние регистры.

Инициализация КР580ВВ55

Для инициализации КР580ВВ55 требуется загрузка управляющего слова в его регистр управляющего слова (РУС). Это слово определяет режим работы каждого порта (0, 1 или 2) и направление обмена (ввод или вывод) для портов, работающих в Режиме 0.

Структура управляющего слова КР580ВВ55:
Бит D7 всегда должен быть 1 для обозначения управляющего слова.
Биты D6D5: Режим работы порта A.
Бит D4: Направление порта A (1=ввод, 0=вывод).
Бит D3: Направление верхней тетрады порта C (PC4-PC7) (1=ввод, 0=вывод).
Биты D2D1: Режим работы порта B.
Бит D0: Направление порта B (1=ввод, 0=вывод).
Бит D3: Направление нижней тетрады порта C (PC0-PC3) (1=ввод, 0=вывод).

Примечание: Направление для порта C (D3 и D0) задается независимо для верхней и нижней тетрад, но в зависимости от режима работы портов A и B, некоторые биты порта C могут быть задействованы как управляющие сигналы.

Пример алгоритма инициализации КР580ВВ55:

  1. Определить требуемые режимы работы для портов A, B и C в соответствии с задачей (например, порт A — вывод в Режиме 0, порт B — ввод в Режиме 0, порт C — вывод).
  2. Сформировать соответствующее управляющее слово.
    * Например: Если Порт A = вывод, Режим 0; Порт B = ввод, Режим 0; Порт C = вывод.
    D7 = 1 (управляющее слово)
    D6D5 = 00 (Режим 0 для A)
    D4 = 0 (Вывод для A)
    D3 = 0 (Вывод для верхней тетрады C)
    D2D1 = 00 (Режим 0 для B)
    D0 = 1 (Ввод для B)
    Управляющее слово: 100010012 = 8916 (здесь предполагается, что D3 и D0 определяют направление всей тетрады порта C при режиме 0).

*Корректнее, D3 — это биты C4-C7, а D0 — C0-C3.
Если Порт A (режим 0, вывод), Порт B (режим 0, ввод), Порт C (вывод).
D7=1, D6=0, D5=0, D4=0, D3=0, D2=0, D1=1, D0=0
100000102 = 8216 (для режима 0, Port A-вывод, Port B-ввод, Port C-вывод).

  1. Записать это управляющее слово в регистр управления КР580ВВ55, используя команду OUT.

Пример ассемблерного кода:
Пусть регистр управляющего слова КР580ВВ55 имеет адрес 8316.

    MVI A, 82H    ; Загрузить управляющее слово 82H в аккумулятор
    OUT 83H       ; Вывести содержимое аккумулятора (управляющее слово) в РУС КР580ВВ55

Инициализация КР580ВН59

Инициализация КР580ВН59 сложнее и требует записи нескольких управляющих слов инициализации (СКИ). Эти слова определяют режим работы контроллера, способ векторизации прерываний, приоритеты и другие параметры. Обычно используются два типа СКИ: СКИ1 и СКИ2.

СКИ1 (Initialization Command Word 1):
Определяет базовые параметры, такие как способ каскадирования, необходимость СКИ4, тип срабатывания прерывания (по уровню или по фронту).

СКИ2 (Initialization Command Word 2):
Определяет базовый адрес вектора прерывания. Этот адрес используется микропроцессором для определения, куда перейти после получения прерывания.

Пример алгоритма инициализации КР580ВН59:

  1. Записать СКИ1 для установки базовых режимов (например, режим каскадирования, тип запуска).
  2. Записать СКИ2 для установки вектора прерывания. Вектор прерывания для КР580ВМ80А обычно представляет собой 8-байтовые интервалы.
  3. Записать управляющие слова операций (УСО) для настройки приоритетов, маскирования прерываний.

Пример ассемблерного кода для КР580ВН59:
Пусть регистры КР580ВН59 имеют следующие адреса:
Порт управления (ICW1/OCW2/3) = 80H
Порт данных (ICW2/OCW1) = 81H

    ; Инициализация КР580ВН59 (СКИ1 - ICW1)
    MVI A, 13H    ; СКИ1: 00010011B. 
                  ; Bit 4 = 1 (ICW4 required), Bit 3 = 0 (single mode), Bit 2 = 0 (edge triggered), Bit 1 = 1 (CALL address 11-15), Bit 0 = 1 (initialization)
    OUT 80H       ; Запись СКИ1 в порт управления

    ; Инициализация КР580ВН59 (СКИ2 - ICW2)
    MVI A, 08H    ; СКИ2: Базовый адрес вектора прерывания (например, 08H).
                  ; Это означает, что векторы будут начинаться с адресов 08H, 10H, 18H, ...
    OUT 81H       ; Запись СКИ2 в порт данных

    ; Инициализация КР580ВН59 (СКИ4 - ICW4, если требуется)
    ; MVI A, 01H    ; СКИ4: 00000001B. Например, режим 8080/8085.
    ; OUT 81H

    ; Настройка маскирования прерываний (УСО1 - OCW1)
    MVI A, FFH    ; Замаскировать все прерывания (FFH = 11111111B)
    OUT 81H       ; Запись в регистр маскирования

Эти примеры демонстрируют, как, используя команды MVI (move immediate) и OUT (output), программист может сконфигурировать периферийные БИС для выполнения конкретных задач.

Примеры программ на языке Ассемблер для КР580ВМ80А

Программирование на Ассемблере для КР580ВМ80А требует тщательного планирования и понимания внутренней архитектуры. Ниже приведены блок-схемы и примеры программного кода для типовых задач, иллюстрирующие взаимодействие с МПС.

1. Вывод символов на монитор (или дисплей)

Предположим, что для вывода символа на монитор (или сегментный/матричный дисплей) используется порт вывода КР580ВВ55 (например, порт A), который находится по адресу 8216.

Блок-схема:

+-------+
| START |
+---+---+
    |
    v
+-----------------------+
| ИНИЦИАЛИЗАЦИЯ КР580ВВ55 |
| (Порт A как вывод)    |
+-----------+-----------+
    |
    v
+-----------------------+
| ЗАГРУЗКА СИМВОЛА В A   |
| (Например, 'A' = 41H) |
+-----------+-----------+
    |
    v
+-----------------------+
| ВЫВОД A В ПОРТ A ВВ55  |
| (OUT 82H)             |
+-----------+-----------+
    |
    v
+-------+
|  END  |
+-------+

Пример кода на Ассемблере:

ORG 0000H         ; Начало программы с адреса 0000H

INIT_PORTS:
    MVI A, 82H    ; Управляющее слово для КР580ВВ55:
                  ; D7=1 (упр. слово), D6D5=00 (Port A режим 0), D4=0 (Port A вывод)
                  ; D3=0 (Port C верх вывод), D2D1=00 (Port B режим 0), D0=0 (Port B вывод)
                  ; Итого: Port A - вывод, Port B - вывод, Port C - вывод (Режим 0)
    OUT 83H       ; Записать управляющее слово в РУС КР580ВВ55 (адрес 83H)

MAIN_LOOP:
    MVI A, 41H    ; Загрузить ASCII-код символа 'A' (41H) в аккумулятор
    OUT 82H       ; Вывести содержимое аккумулятора в Port A КР580ВВ55 (адрес 82H)
    CALL DELAY    ; Вызвать подпрограмму задержки (для визуализации)

    MVI A, 42H    ; Загрузить ASCII-код символа 'B' (42H)
    OUT 82H
    CALL DELAY

    JMP MAIN_LOOP ; Бесконечный цикл

DELAY:            ; Подпрограмма задержки
    LXI D, 0FFFH  ; Загрузить DE парой значение для счетчика (например, 4095)
DELAY_LOOP:
    DCX D         ; Уменьшить DE на 1
    MOV A, D      ; Переместить D в A
    ORA E         ; Логическое ИЛИ с E (проверка, стало ли DE равно 0)
    JNZ DELAY_LOOP; Если не ноль, повторить цикл
    RET           ; Возврат из подпрограммы

2. Обработка массивов данных (поиск наибольшего числа)

Задача: Найти наибольшее число в массиве байтов, расположенном в памяти.

Блок-схема:

+-------+
| START |
+---+---+
    |
    v
+-------------------------+
| ИНИЦИАЛИЗАЦИЯ:           |
| HL = адрес начала массива |
| B = длина массива        |
| C = MAX_VALUE = 0        |
+-----------+-------------+
    |
    v
+-------------------------+
|   LOOP:                 |
|   Если B == 0, перейти к END |
|   Загрузить A = (HL)    |
|   Сравнить A с C         |
|   Если A > C, то C = A  |
|   Инкремент HL          |
|   Декремент B           |
|   Перейти к LOOP        |
+-----------+-------------+
    |
    v
+-------+
|  END  |
+-------+

Пример кода на Ассемблере:

ORG 1000H         ; Начало массива данных
MY_ARRAY:         DB 10H, 05H, 20H, 0FH, 1BH, 00H
ARRAY_LENGTH      EQU $ - MY_ARRAY ; Длина массива

ORG 0080H         ; Начало программы

FIND_MAX:
    LXI H, MY_ARRAY ; Загрузить адрес начала массива в HL
    MVI B, ARRAY_LENGTH ; Загрузить длину массива в регистр B (счетчик)
    MVI C, 00H      ; Инициализировать регистр C как MAX_VALUE (начальное значение 0)

LOOP_FIND:
    MOV A, B        ; Проверить, закончился ли массив
    ORA A           ; Установить флаг Z, если B = 0
    JZ  END_FIND    ; Если B = 0, перейти к END_FIND

    MOV A, M        ; Загрузить байт из памяти (по адресу HL) в аккумулятор
    CMP C           ; Сравнить аккумулятор (текущее число) с C (MAX_VALUE)
    JC  SKIP_UPDATE ; Если A < C (флаг Carry установлен), текущее число не больше MAX_VALUE
    MOV C, A        ; Иначе, обновить MAX_VALUE = A

SKIP_UPDATE:
    INX H           ; Увеличить указатель на следующий элемент массива
    DCR B           ; Уменьшить счетчик элементов
    JMP LOOP_FIND   ; Повторить цикл

END_FIND:
    HLT             ; Остановить процессор (MAX_VALUE будет в регистре C)

3. Управление периферийными устройствами (например, генерация звука)

Простая генерация звука может быть реализована путем периодического переключения состояния бита порта вывода.

Блок-схема:

+-------+
| START |
+---+---+
    |
    v
+-----------------------+
| ИНИЦИАЛИЗАЦИЯ КР580ВВ55 |
| (Порт A.0 как вывод)  |
+-----------+-----------+
    |
    v
+-----------------------+
|   LOOP_SOUND:         |
|   Установить бит A.0   |
|   Вывод в порт A      |
|   Задержка            |
|   Сбросить бит A.0    |
|   Вывод в порт A      |
|   Задержка            |
|   Перейти к LOOP_SOUND|
+-----------+-----------+
    |
    v
+-------+
|  END  |
+-------+

Пример кода на Ассемблере:
Пусть порт A КР580ВВ55 (адрес 8216) используется для генерации звука. Бит A.0 будет подключен к динамику (через усилитель).

ORG 0000H

INIT_SOUND:
    MVI A, 80H    ; Управляющее слово для КР580ВВ55:
                  ; D7=1, Port A = режим 0, вывод. Остальные порты - вывод.
    OUT 83H       ; Записать управляющее слово в РУС КР580ВВ55

SOUND_LOOP:
    MVI A, 01H    ; Установить бит A.0 (00000001B)
    OUT 82H       ; Вывести 01H в Port A (включить динамик)
    CALL SHORT_DELAY ; Короткая задержка

    MVI A, 00H    ; Сбросить бит A.0 (00000000B)
    OUT 82H       ; Вывести 00H в Port A (выключить динамик)
    CALL SHORT_DELAY ; Короткая задержка

    JMP SOUND_LOOP ; Повторить для генерации прямоугольного сигнала

SHORT_DELAY:      ; Подпрограмма короткой задержки
    MVI C, 0AH    ; Загрузить счетчик для задержки
DELAY_INNER:
    DCR C         ; Декремент счетчика
    JNZ DELAY_INNER ; Повторить, если не ноль
    RET

Эти примеры демонстрируют, как, используя команды OUT (вывод данных) и IN (ввод данных) для взаимодействия с портами ввода/вывода периферийных устройств, а также команды для управления регистрами и переходами, можно разрабатывать полноценное программное обеспечение для микропроцессорных систем на базе КР580ВМ80А.

Заключение

В рамках данной курсовой работы была проведена всесторонняя разработка микропроцессорной системы на базе комплекта БИС КР580. От фундаментальных принципов организации МПС до тонкостей ассемблерного программирования, каждый аспект был детально проанализирован и представлен. Что из этого следует? Глубокое понимание этих базовых принципов позволяет не только работать с устаревшими системами, но и эффективно проектировать и оптимизировать современные встраиваемые решения, ведь архитектурные основы остаются неизменными.

Мы начали с общих принципов, определив МПС, микропроцессор и БИС, а также подчеркнув историческую роль комплекта КР580 в отечественной вычислительной технике, от легендарных персональных компьютеров до промышленных контроллеров. Были рассмотрены архитектурные особенности комплекта, его быстродействие и концепция интерфейсов как связующего звена между аппаратными и программными компонентами.

Далее был проведен глубокий анализ центрального элемента системы – микропроцессора КР580ВМ80А. Мы изучили его историю, характеристики, внутреннюю регистровую структуру (АЛУ, аккумулятор, регистры общего назначения, программный счетчик, указатель стека, регистр признаков) и подробно разобрали его обширную систему команд и режимы адресации. Эти знания сформировали прочную основу для понимания того, как процессор взаимодействует с данными и памятью.

В разделе разработки аппаратных средств была представлена типовая структура МПС на КР580, включающая микропроцессор, генератор тактовых сигналов КР580ГФ24, системный контроллер КР580ВК38/КР580ВК28 и буферные схемы. Особое внимание было уделено принципам организации модулей памяти (ОЗУ и ПЗУ), включая методику расчета и планирования адресного пространства, а также построение схем дешифрации адресов – критически важного аспекта для корректного функционирования системы.

Раздел, посвященный организации обмена данными и системе прерываний, раскрыл функциональность специализированных БИС. Мы детально рассмотрели программируемый периферийный адаптер КР580ВВ55 с его тремя режимами работы для параллельного ввода/вывода, контроллер прямого доступа к памяти КР580ВТ57, обеспечивающий высокоскоростной обмен данными без участия процессора, и программируемый контроллер прерываний КР580ВН59, который эффективно управляет запросами от внешних устройств, сокращая нагрузку на ЦПУ. Были описаны внутренние регистры КР580ВН59 (RGI, PRB, ISR, RGM) и их взаимодействие.

Завершающим этапом стала разработка программных средств. Мы кратко осветили роль системного ПО (Монитор, Ассемблер, Редактор, Бейсик) и подчеркнули значимость языка Ассемблер для программирования на КР580ВМ80А. Были представлены подробные алгоритмы и конкретные примеры ассемблерного кода для инициализации КР580ВВ55 и КР580ВН59, а также для решения типовых задач, таких как вывод символов, обработка массивов данных и управление периферийными устройствами.

Полученные в ходе выполнения курсовой работы знания и практические навыки являются бесценными для студентов технических специальностей. Они не только углубляют понимание архитектуры ЭВМ и принципов функционирования микропроцессорных систем, но и развивают компетенции в схемотехнике, логическом проектировании и низкоуровневом программировании. Эти фундаментальные навыки служат прочной основой для дальнейшего изучения современных микроконтроллеров, проектирования встраиваемых систем и разработки высокоэффективного программного обеспечения в любой области цифровой инженерии. Изучение КР580, несмотря на возраст технологии, остается актуальным «полигоном» для формирования инженерного мышления и решения комплексных задач, что позволяет будущим специалистам уверенно ориентироваться в постоянно меняющемся мире вычислительной техники.

Список использованной литературы

  1. Интегральные микросхемы: Микросхемы для аналогово-цифрового преобразования и средств мультимедиа. Вып. 1. М.: ДОДЭКА, 1996. 384 с.
  2. Интегральные микросхемы: Микросхемы для линейных источников питания и их применение. 2-е изд., испр. и доп. М.: ДОДЭКА, 1998. 400 с.
  3. Баскаков С. И. Радиотехнические цепи и сигналы. М.: Высшая школа, 1988. 448 с.
  4. Цифровые интегральные микросхемы: Справочник / П. П. Мальцев и др. М.: Радио и связь, 1994. 240 с.
  5. Кудрявцев В. Программируемый периферийный адаптер КР580ВВ55. URL: http://computer-museum.ru/galer/kr580vv55.htm
  6. Пашкевич А. П., Чумаков О. А., Лукьянец С. В. Микропроцессорные системы управления: Конспект лекций для студ. спец. I-53 01 07 «Информ.технологии и упр. в техн. системах» дневн. формы обучения: в 2 ч. Ч. 1. Минск: БГУИР, 2005. URL: https://libeldoc.bsuir.by/handle/123456789/1140
  7. Карягин А. П. Архитектура микропроцессоров и их программирование: Методические указания к лабораторным и самостоятельным работам. Оренбург: ГОУ ОГУ, 2004. URL: https://www.iprbookshop.ru/50034.html
  8. Шахнов В. А. и др. Микропроцессоры и микропроцессорные комплекты интегральных микросхем: Справочник: В 2 т. М.: Радио и связь, 1988. URL: http://k-t-evs.ru/download/books/Microcontrollers/Shahnov_MP_i_MPK_IC_1988.pdf
  9. Программирование на языке ассемблера для восьмиразрядного микропроцессора. Воронежский государственный технический университет, 2021. URL: https://cdo.vstu.ac.ru/uchposob/lekcii_tsifrovye_ustroystva_i_mikroprotsessory/gl_7.html

Похожие записи