В современном мире, где вычислительные системы стали неотъемлемой частью каждого аспекта нашей жизни, кажется, что изучение микропроцессоров прошлых поколений может утратить свою актуальность. Однако это далеко не так. Понимание архитектуры и принципов работы классических микропроцессорных систем, таких как КР580, является краеугольным камнем для формирования глубоких знаний в области вычислительной техники и электроники. Эти «ветераны» индустрии не только заложили основы для всех последующих поколений процессоров, но и предоставляют уникальную возможность освоить базовые концепции – от физического уровня схемотехники до программного управления – в условиях, когда каждый элемент системы прозрачен и поддается анализу. Изучение таких систем позволяет не только понять «как это работает», но и «почему это работает именно так», что критически важно для любого инженера.
Цель данного курсового проекта – не просто ознакомиться с историческим артефактом, а научиться разрабатывать, проектировать и программно реализовывать микропроцессорную систему (вычислитель или контроллер) на базе комплекта БИС КР580. Это включает в себя построение структурных схем, глубокое понимание системного интерфейса, тактирования, а также составление программного кода на уровне машинных инструкций. Наша задача – создать не просто описание, а полноценное руководство, которое послужит студентам технического вуза для выполнения курсовой работы, охватывая все аспекты от теоретических основ до практических проектных и программных решений, включая строгое следование нормативной документации, такой как ГОСТ.
Архитектура и функциональная структура микропроцессора КР580ВМ80А
Общие характеристики и технологические особенности
Микропроцессор КР580ВМ80А, ставший одним из основополагающих камней в истории отечественной вычислительной техники, представляет собой однокристальный 8-разрядный микропроцессор. Его появление в 1970-х годах ознаменовало собой начало эры массового применения микропроцессоров в различных системах. Кристалл этого процессора выполнен по технологии n-МОП (или n-МДП, что является ее отечественным аналогом) с проектной нормой в 6 мкм. Несмотря на кажущуюся по сегодняшним меркам простоту, для своего времени это был прорыв, позволивший разместить на одном кристалле около 4800 транзисторов, и эта плотность интеграции стала основой для создания сложных управляющих и вычислительных систем.
Одной из особенностей КР580ВМ80А, которую необходимо учитывать при его проектировании, является требование к трем напряжениям питания: −5 В, +5 В и +12 В. Это отличает его от многих современных процессоров, работающих от одного или двух напряжений, и накладывает определенные требования на систему электропитания всей микропроцессорной системы. Понимание этих фундаментальных характеристик критически важно для корректного схемотехнического проектирования и обеспечения стабильной работы вычислителя, ведь малейшее отклонение от этих параметров может привести к нестабильной работе или выходу из строя всей системы.
Состав и назначение функциональных блоков
Архитектура КР580ВМ80А представляет собой классический пример организации микропроцессора, где каждый блок выполняет четко определенную функцию, обеспечивая общую производительность системы.
В сердце микропроцессора находится 8-разрядное Арифметико-Логическое Устройство (АЛУ). Это ключевой функциональный узел, который отвечает за выполнение всех арифметических (сложение, вычитание) и логических (И, ИЛИ, НЕ, исключающее ИЛИ) операций над данными. Его 8-разрядная структура определяет размер слова, с которым процессор работает напрямую.
Рядом с АЛУ расположен блок регистров, представляющий собой быстрый внутренний накопитель данных. В его состав входят шесть 8-разрядных регистров общего назначения: B, C, D, E, H, L. Эти регистры являются основой для хранения промежуточных данных, операндов и результатов операций, значительно ускоряя доступ к ним по сравнению с обращением к внешней памяти. Важной особенностью является возможность их объединения в парные 16-разрядные регистры (BC, DE, HL). Такая организация позволяет оперировать 16-разрядными адресами или данными, что необходимо, например, для доступа к 64 Кбайт внешней памяти. Пара HL традиционно используется как указатель на память, что делает ее особенно значимой.
Каждая операция в АЛУ сопровождается изменением состояния регистра признаков (RS/F), также известного как регистр флагов. Этот 8-разрядный регистр хранит пять однобитовых флагов, отражающих характеристики результата последней арифметической или логической операции:
- S (Sign) — Знак: Устанавливается в 1, если старший бит результата равен 1 (отрицательное число в дополнительном коде).
- Z (Zero) — Нуль: Устанавливается в 1, если результат операции равен нулю.
- AC (Auxiliary Carry) — Дополнительный перенос: Устанавливается в 1, если при операции в младшей тетраде (4 бита) произошел перенос в старшую тетраду. Этот флаг важен для операций с двоично-десятичным кодом (BCD).
- P (Parity) — Четность: Устанавливается в 1, если число единиц в результате операции четное.
- C (Carry) — Перенос: Устанавливается в 1, если при операции произошел перенос из старшего разряда или заем.
Эти флаги используются для принятия решений в программах, например, для условных переходов, что позволяет создавать более динамичные и адаптивные алгоритмы.
Для управления последовательностью выполнения команд процессор оснащен 16-разрядным Программным Счетчиком (PC). В нем хранится адрес следующей команды, которая будет извлечена из памяти. После каждой выборки команды содержимое PC автоматически инкрементируется, указывая на следующую ячейку. При выполнении команд перехода или вызова подпрограмм в PC загружается новый адрес.
Еще одним 16-разрядным регистром является Указатель Стека (SP). Стек – это область памяти, работающая по принципу LIFO (Last In, First Out – «последний вошел – первый вышел»). SP всегда указывает на вершину стека, то есть на последнюю записанную в него ячейку. Стек используется для временного хранения адресов возврата из подпрограмм, содержимого регистров и других данных, которые необходимо сохранить и восстановить.
Важно отметить, что в архитектуре КР580ВМ80А существуют также регистры, предназначенные для внутреннего временного хранения операндов и команд, которые программно недоступны пользователю. К ним относятся RGa, RGb, IR (Instruction Register – регистр команд), а также W и Z. Регистры W и Z, хотя и являются 8-разрядными и недоступными напрямую, часто объединяются в 16-разрядную пару (WZ), используемую для временного хранения адресов или операндов при выполнении 16-разрядных команд. Их существование обеспечивает эффективное выполнение микрокоманд внутри процессора, не перегружая программную модель.
Что касается внешних возможностей, микропроцессор КР580ВМ80А способен адресовать внешнюю память объемом до 64 Кбайт. Это обусловлено наличием 16-разрядного адресного канала (216 = 65536 байт). Кроме того, он позволяет подключать до 256 устройств ввода-вывода, что соответствует 8-разрядному адресному пространству портов (28 = 256).
Наконец, в состав МП включен Десятичный Корректор (DAA – Decimal Adjust Accumulator). Этот блок выполняет важную функцию перевода информации из двоичной формы в двоично-десятичную (BCD – Binary-Coded Decimal) после выполнения арифметических операций. Это особенно полезно при работе с числами, которые должны быть представлены в десятичном формате, например, в калькуляторах или системах отображения числовой информации. DAA автоматически корректирует результат сложения, чтобы он соответствовал правилам BCD, используя флаги переноса (C) и дополнительного переноса (AC), что значительно упрощает реализацию десятичной арифметики.
Системный интерфейс, синхронизация и тактирование микропроцессорной системы на КР580
Создание работоспособной микропроцессорной системы на базе КР580 требует глубокого понимания не только внутренней архитектуры самого процессора, но и того, как он взаимодействует с внешним миром – памятью и устройствами ввода-вывода. Ключевую роль здесь играют системный интерфейс, механизмы синхронизации и тактирования, которые зачастую недооцениваются в поверхностных описаниях. Пренебрежение этими аспектами может привести к неработоспособности всей системы, даже если логика программы будет безупречной.
Системный интерфейс KR580 Microbus
Для организации взаимодействия между МП КР580ВМ80А и периферийными устройствами используется стандартизированный системный интерфейс, известный как KR580 Microbus. Его номенклатура линий определяется выводами базовой интегральной схемы микропроцессора КР580ИК80 (функционального аналога КР580ВМ80А).
Системный интерфейс Microbus состоит из 36 линий, функционально разделенных на три основные шины:
- 16-разрядная шина адреса: Предназначена для передачи 16-битных адресов ячеек памяти или портов ввода-вывода. Позволяет адресовать до 64 Кбайт памяти и до 256 портов ввода-вывода.
- 8-разрядная шина данных: Двунаправленная шина, используемая для обмена 8-битными данными между микропроцессором и памятью или устройствами ввода-вывода.
- Шина управления: Наиболее сложная часть интерфейса, состоящая из множества отдельных управляющих линий, которые синхронизируют операции, определяют тип текущего машинного цикла (чтение/запись, память/ввод-вывод) и управляют состоянием периферийных устройств (например, прерывания).
Эта трехшинная архитектура является классической для многих микропроцессорных систем и обеспечивает четкое разделение функций для эффективного обмена информацией.
Формирование управляющих сигналов и слово состояния
Основой синхронной работы всех узлов МПС является Схема Управления и Синхронизации (СУС или CU – Control Unit). Её главная задача – формирование последовательности управляющих сигналов, которые координируют действия микропроцессора и устройств ввода-вывода (УВВ).
Ключевыми управляющими сигналами, генерируемыми СУС, являются:
- MEMR (Memory Read): Сигнал чтения из памяти.
- MEMW (Memory Write): Сигнал записи в память.
- I/OR (Input/Output Read): Сигнал чтения из порта ввода-вывода.
- I/OW (Input/Output Write): Сигнал записи в порт ввода-вывода.
- INTA (Interrupt Acknowledge): Сигнал подтверждения прерывания.
Эти сигналы формируются на основе внутренних сигналов микропроцессора, таких как DBIN (Data Bus In – готовность к приему данных) и WR (Write – готовность к записи данных), а также, что крайне важно, на основе слова состояния.
Слово состояния – это 8-битное служебное слово, которое МП КР580ВМ80А выдает по сигналу SYNC (Synchronization) в начале каждого машинного цикла. Каждый бит этого слова является признаком, однозначно определяющим тип текущего машинного цикла.
Например:
- M1 (Machine Cycle 1): Бит указывает на цикл выборки команды.
- MEMR/WO (Memory Read/Write Output): Бит указывает на чтение или запись в память.
- INP/OUT (Input/Output): Бит указывает на операцию ввода или вывода.
- STACK: Бит указывает на операцию со стеком.
- INTA: Бит указывает на подтверждение прерывания.
Для того чтобы это слово состояния было использовано внешними устройствами, оно должно быть захвачено и сохранено. Это достигается путем загрузки 8-битного слова состояния в специальный регистр-защелку, например, интегральную схему К589ИР12 (которая часто использовалась в системах на КР580). Загрузка происходит по фронту сигнала синхронизации SYNC и тактирующего сигнала Φ2 уровня ТТЛ (Transistor-Transistor Logic), формируемого Генератором Тактовых Импульсов (ГТИ). Эта процедура гарантирует, что периферийные устройства точно знают, какой тип операции выполняет процессор в данный момент, и могут соответствующим образом реагировать, активируя нужные адресные и управляющие линии, тем самым обеспечивая корректное взаимодействие между всеми компонентами системы.
Генерация тактовых импульсов
Сердцем синхронизации всей микропроцессорной системы является Генератор Тактовых Импульсов (ГТИ). Эта интегральная схема отвечает за формирование всех необходимых тактовых сигналов для МП КР580ВМ80А и связанных с ним устройств.
Особенностью КР580ВМ80А является то, что ГТИ формирует импульсы с частотой, равной девяти периодам колебаний задающего кварцевого резонатора. Таким образом, если целевая тактовая частота микропроцессора составляет 2 МГц, то для ГТИ потребуется кварцевый резонатор с частотой 18 МГц (2 МГц × 9 = 18 МГц). ГТИ генерирует двухфазные тактовые импульсы Φ1 и Φ2, которые и обеспечивают потактовое выполнение всех внутренних операций процессора и внешних взаимодействий.
Важно понимать, что выполнение каждой команды в МП КР580ВМ80А – это не мгновенный процесс. Оно обеспечивается комбинацией из 10 различных типов машинных циклов (обозначаемых как М1-М10), каждый из которых соответствует определенному этапу выполнения команды (например, выборка команды, чтение/запись в память, ввод/вывод, работа со стеком, обработка прерываний). Каждая команда, в зависимости от своей сложности, выполняется за 1 – 5 машинных циклов. В свою очередь, каждый машинный цикл состоит из 3 – 5 тактов (периодов сигнала Φ1/Φ2), в течение которых происходят конкретные микрооперации. Такая многоуровневая структура выполнения команд позволяет эффективно координировать сложные последовательности действий внутри процессора и во всей системе, раскрывая принципы, которые лежат в основе работы даже самых современных процессоров.
Система команд и принципы программного кодирования КР580ВМ80А
Программирование микропроцессорной системы на базе КР580ВМ80А (или КР580ИК80) требует глубокого понимания её системы команд – того языка, на котором процессор «понимает» инструкции. Это ключевой аспект для разработки эффективных и корректных программных решений.
Классификация и структура команд
Система команд микропроцессора КР580ВМ80А является достаточно мощной для своего времени и включает в себя 78 уникальных команд. Эти команды традиционно делятся на несколько функциональных групп, что упрощает их изучение и применение:
- Команды пересылки данных: Используются для перемещения данных между регистрами, между регистром и памятью, а также для загрузки непосредственных значений. Примеры:
MOV(Move),MVI(Move Immediate). - Арифметические команды: Выполняют сложение, вычитание, инкремент (увеличение на 1), декремент (уменьшение на 1) над 8-разрядными и 16-разрядными операндами. Примеры:
ADD(Add),SUB(Subtract),INR(Increment Register),DCR(Decrement Register). - Логические команды: Выполняют битовые операции И, ИЛИ, НЕ, исключающее ИЛИ, а также сравнение. Примеры:
ANA(AND Accumulator),ORA(OR Accumulator),XRA(Exclusive OR Accumulator),CMP(Compare). - Команды передачи управления: Изменяют последовательность выполнения программы путем безусловных или условных переходов, вызовов подпрограмм и возвратов. Примеры:
JMP(Jump),CALL(Call Subroutine),RET(Return). - Команды работы со стеком, ввода-вывода и управления процессором: Эти команды используются для взаимодействия со стековой памятью (сохранение/восстановление содержимого регистров), обмена данными с периферийными устройствами и управления внутренними состояниями процессора (например, разрешение/запрет прерываний). Примеры:
PUSH(Push to Stack),POP(Pop from Stack),IN(Input),OUT(Output),EI(Enable Interrupts),DI(Disable Interrupts),HLT(Halt).
Команды КР580ВМ80А могут иметь различную длину:
- Однобайтные команды: Состоят только из кода операции (КОП). Например,
RET(возврат из подпрограммы). - Двухбайтные команды: Первый байт – КОП, второй байт – операнд или часть адреса. Например,
MVI A, DATA(загрузка непосредственного значения DATA в аккумулятор). - Трехбайтные команды: Первый байт – КОП, второй и третий байты – 16-разрядный адрес или операнд (обычно адрес младшим байтом вперед). Например,
JMP ADR(безусловный переход по адресу ADR).
Многобайтовые команды всегда хранятся в последовательных ячейках памяти, и процессор адресует их по первому байту (коду операции), а затем автоматически считывает последующие байты как часть этой же команды.
Мнемокоды и преобразование в машинные коды
Для того чтобы упростить процесс программирования и сделать его более понятным для человека, каждому 8-разрядному двоичному коду операции (КОП) присвоено символическое, легко запоминающееся название – мнемоника. Например, вместо того, чтобы помнить двоичный код 01111000 для операции пересылки регистра C в аккумулятор, программист использует мнемонику MOV A, C.
Программа, написанная на ассемблере (с использованием мнемокодов), не может быть непосредственно выполнена микропроцессором. Процессору нужны только машинные коды – последовательности двоичных чисел. Поэтому процесс преобразования программы из мнемокодов в машинные коды является обязательным этапом. Традиционно это осуществляется с помощью специальных таблиц кодов операций (КОП), где для каждой мнемоники указан соответствующий ей машинный код (обычно в шестнадцатеричном виде для удобства). Этот процесс может быть выполнен вручную для небольших программ или автоматически с помощью программы-ассемблера.
Например, команда MOV A, C имеет мнемонику 7816 (или 011110002). Команда JMP ADR (где ADR – 16-разрядный адрес) будет состоять из трех байтов: C316 (КОП для JMP), затем младший байт адреса ADRL, и затем старший байт адреса ADRH.
Режимы адресации операндов
Гибкость микропроцессора во многом определяется разнообразием поддерживаемых им режимов адресации – способов, которыми процессор определяет местоположение операндов (данных, над которыми выполняется операция). МП КР580ВМ80А поддерживает пять основных режимов адресации:
- Неявная адресация (Implicit): Операнд не указывается явно в команде, так как он предопределен самой командой. Обычно операнд находится в аккумуляторе или другом фиксированном регистре.
- Пример:
CMA(Complement Accumulator – инвертировать содержимое аккумулятора). Здесь операнд – это всегда аккумулятор.
- Пример:
- Регистровая адресация (Register): Операнд находится в одном из внутренних регистров общего назначения (B, C, D, E, H, L, A). Команда содержит информацию, указывающую на конкретный регистр.
- Пример:
MOV A, B(переслать содержимое регистра B в аккумулятор). Операнды A и B – это регистры.
- Пример:
- Непосредственная адресация (Immediate): Сам операнд содержится непосредственно во втором (или втором и третьем) байте команды, сразу после кода операции.
- Пример:
MVI A, 20H(Move Immediate – загрузить значение 2016 в аккумулятор). Здесь 2016 – это непосредственный операнд.
- Пример:
- Прямая адресация (Direct): Адрес операнда (16-разрядный) содержится в двух младших байтах команды. Процессор использует этот адрес для доступа к ячейке памяти.
- Пример:
LDA 2000H(Load Accumulator Direct – загрузить содержимое ячейки памяти по адресу 200016 в аккумулятор). Здесь 200016 – это прямой адрес в памяти.
- Пример:
- Косвенная регистровая адресация (Register Indirect): Адрес операнда не содержится в команде напрямую, а находится в одной из 16-разрядных регистровых пар (BC, DE или HL). Процессор использует содержимое этой пары как указатель на ячейку памяти.
- Пример:
MOV A, M(Move Accumulator, Memory – переслать содержимое ячейки памяти, адрес которой находится в паре регистров HL, в аккумулятор). ЗдесьM(Memory) подразумевает косвенную адресацию через HL.
- Пример:
Понимание и умелое использование этих режимов адресации является фундаментом для написания эффективных и оптимизированных программ для КР580ВМ80А.
Команды передачи управления
Команды передачи управления играют критически важную роль в любой программе, позволяя изменить линейную последовательность выполнения инструкций, создавать циклы, условия и вызывать подпрограммы. Они являются краеугольным камнем для создания сложной и динамичной логики программы.
- Команды безусловного перехода (JMP): Эти команды просто изменяют содержимое 16-разрядного регистра Программного Счетчика (PC), записывая в него новый адрес. После выполнения
JMP ADRпроцессор начнет выполнять команду, расположенную по адресуADR, вместо следующей по порядку.- Пример:
JMP START_ROUTINE– безусловный переход к меткеSTART_ROUTINE.
- Пример:
- Команды условного перехода (Conditional Jumps): Эти команды изменяют PC только в том случае, если выполняется определенное условие, связанное с флагами регистра признаков (RS/F).
- Примеры:
JZ ADR(Jump if Zero – переход, если флаг Z установлен),JNC ADR(Jump if No Carry – переход, если флаг C не установлен).
- Примеры:
- Команды вызова подпрограммы (CALL) и возврата (RET):
CALL ADRне только переходит к подпрограмме по адресуADR, но и предварительно сохраняет текущее значение PC (адрес возврата) в стеке.RETизвлекает адрес возврата из стека и загружает его в PC, возвращая управление в точку послеCALL.
Эти команды позволяют строить сложную программную логику, структурировать код и повторно использовать фрагменты программы (подпрограммы), что является основой современного программирования.
Проектирование структурных схем и разработка алгоритмов по ГОСТ
Разработка микропроцессорной системы – это не только создание аппаратной части и программного кода, но и документирование всего процесса в соответствии с принятыми стандартами. Для студентов технических вузов это особенно важно, поскольку корректное оформление является неотъемлемой частью любого проекта.
Нормативная база: ГОСТ 19.002-80 и ГОСТ 19.003-80
В отечественной инженерной практике правила выполнения схем алгоритмов и программ регламентируются государственными стандартами Единой Системы Программной Документации (ЕСПД). Два ключевых стандарта в этом контексте – это:
- ГОСТ 19.002-80 «Единая система программной документации. Схемы алгоритмов и программ. Правила выполнения». Этот стандарт является основополагающим. Он определяет общие правила построения схем, устанавливает требования к их содержанию, компоновке, размерности и оформлению. Стандарт распространяется на алгоритмы и программы систем программного обеспечения вычислительных машин, комплексов и систем. Его цель – унифицировать представление алгоритмов и программ, сделать их однозначно читаемыми и понимаемыми любым специалистом. Он охватывает такие аспекты, как направление потока информации, правила соединения символов, использование текстовых пояснений и т.д.
- ГОСТ 19.003-80 «Единая система программной документации. Схемы алгоритмов и программ. Обозначения условные графические». Этот стандарт дополняет предыдущий, предоставляя конкретный «словарь» графических символов. Он детально определяет 29 обязательных условных графических обозначений, которые используются для отображения основных операций процесса обработки данных. Среди них:
- «Процесс» (прямоугольник): Обозначает любую операцию или группу операций, приводящих к изменению данных или состояния программы.
- «Решение» (ромб): Обозначает проверку условия и выбор одного из нескольких альтернативных путей в зависимости от результата проверки (да/нет, истина/ложь).
- «Предопределенный процесс» (прямоугольник с двойными вертикальными линиями): Используется для обозначения подпрограмм, процедур или модулей, которые уже определены в другом месте или являются стандартными.
- «Цикл» (шестиугольник): Обозначает начало и конец цикла, включая инициализацию, условие продолжения и модификацию параметра цикла.
Строгое следование этим ГОСТам при разработке алгоритмов не только обеспечивает соответствие проектной документации требованиям, но и развивает системное мышление, необходимое для инженера.
Правила выполнения схем алгоритмов
Помимо графических символов, ГОСТы устанавливают и общие правила построения схем алгоритмов, которые обеспечивают их читаемость и логическую стройность:
- Линии потока: Обозначаются стрелками, указывающими направление последовательности выполнения операций. В большинстве случаев поток идет сверху вниз и слева направо.
- Канал связи: Используется для обозначения связи между различными частями схемы или между схемой и внешней средой.
- Комментарий: Позволяет добавлять пояснительный текст к любому символу или части схемы, уточняя его функцию или особенности. Размещается обычно справа или над символом и заключается в скобки, или присоединяется пунктирной линией.
- Символ «Соединитель»: При большой насыщенности схемы символами или при необходимости продолжения схемы на другом листе допускается обрывать линии потока. Для этого используется символ «Соединитель» (маленький кружок). Внутри соединителя указывается уникальный идентификатор. Если соединитель связывает символы на разных листах, обязательно указывается номер листа и зона расположения (например, 010E3, где 01 – номер листа, 0E3 – координаты на листе).
- Размещение информации: В схемах допускается размещение краткой информации о символе (описание, уточнение) справа над символом, если это необходимо для большей ясности.
Примеры разработки графического алгоритма для типичной вычислительной задачи
Рассмотрим простейший пример – алгоритм вычисления суммы чисел от 1 до N.
Обобщенный алгоритм:
graph TD
A[Начало] --> B{Ввод N};
B --> C[Инициализация: Сумма = 0, i = 1];
C --> D{i <= N?};
D -- Да --> E[Сумма = Сумма + i];
E --> F[i = i + 1];
F --> D;
D -- Нет --> G[Вывод Суммы];
G --> H[Конец];
Детализированный алгоритм (с учетом ГОСТ 19.003-80):
Представим, что нам нужно вычислить факториал числа N.
+----------------+
| Начало |
| (Терминатор)|
+--------+-------+
|
V
+----------------+
| Ввод числа N |
| (Данные) |
+--------+-------+
|
V
+----------------+
| Инициализация: |
| Factorial = 1|
| i = 1 |
| (Процесс) |
+--------+-------+
|
V
+----------------+
| i <= N? |
| (Решение) |
+----+-----------+
| Да | Нет
V V
+----------------+ +----------------+
| Factorial = | | Вывод |
| Factorial * i | | "Factorial = " |
| (Процесс) | | Factorial |
+--------+-------+ | (Данные) |
| +--------+-------+
V |
+----------------+ V
| i = i + 1 | +----------------+
| (Процесс) | | Конец |
+--------+-------+ | (Терминатор)|
| +----------------+
+----------+
В этом примере мы видим использование:
- Символа «Терминатор» (овал) для начала и конца.
- Символа «Данные» (параллелограмм) для ввода/вывода.
- Символа «Процесс» (прямоугольник) для выполнения операций.
- Символа «Решение» (ромб) для условной проверки.
- Стрелок («Линия потока») для указания направления.
Разработка таких схем перед написанием кода позволяет логически структурировать задачу, выявить потенциальные ошибки и значительно упростить процесс программирования, а также является обязательной частью оформления курсового проекта согласно ГОСТ.
Расчет и планирование адресного пространства
Эффективное проектирование микропроцессорной системы невозможно без тщательного планирования и расчета адресного пространства – как для памяти, так и для портов ввода-вывода. Это фундаментальный этап, который определяет, как процессор будет взаимодействовать с внешними устройствами и где будут располагаться программный код и данные. Ошибки на этом этапе могут привести к конфликтам адресов и некорректной работе всей системы.
Расчет адресного пространства памяти
Микропроцессор КР580ВМ80А обладает 16-разрядной шиной адреса, что позволяет ему адресовать до 216 = 65536 уникальных ячеек памяти. Это соответствует объему в 64 Кбайт. В рамках курсового проекта необходимо спланировать, как это адресное пространство будет распределено между различными типами памяти:
- ПЗУ (Постоянное Запоминающее Устройство, ROM): Используется для хранения программы, которая должна быть доступна после включения питания (например, прошивка загрузчика, основной управляющий код). ПЗУ обычно располагается в младших или старших адресах.
- ОЗУ (Оперативное Запоминающее Устройство, RAM): Используется для хранения переменных данных, стека, временных результатов вычислений.
Пример логики распределения:
Предположим, для нашего проекта требуется 8 Кбайт ПЗУ и 4 Кбайт ОЗУ.
- ПЗУ (8 Кбайт):
- Адресное пространство: от 000016 до 1FFF16.
- Поскольку 8 Кбайт = 8 × 1024 байт = 8192 байт.
- 8192 в десятичной системе соответствует 1FFF16 (от 0 до 8191).
- Таким образом, ПЗУ займет первые 8 Кбайт памяти.
- ОЗУ (4 Кбайт):
- Адресное пространство: от 200016 до 2FFF16.
- Поскольку 4 Кбайт = 4 × 1024 байт = 4096 байт.
- 4096 в десятичной системе соответствует FFF16 (от 0 до 4095).
- Если разместить ОЗУ сразу после ПЗУ, его начальный адрес будет 1FFF16 + 1 = 200016.
- Конечный адрес: 200016 + FFF16 = 2FFF16.
Таблица распределения памяти:
| Тип памяти | Объем | Начальный адрес | Конечный адрес |
|---|---|---|---|
| ПЗУ | 8 Кбайт | 000016 | 1FFF16 |
| ОЗУ | 4 Кбайт | 200016 | 2FFF16 |
Оставшееся адресное пространство (от 300016 до FFFF16) может быть использовано для расширения системы или оставаться незанятым.
Расчет адресного пространства портов ввода-вывода
КР580ВМ80А поддерживает 8-разрядное адресное пространство для портов ввода-вывода, что позволяет подключить до 28 = 256 различных устройств ввода-вывода. Каждый порт имеет свой уникальный 8-разрядный адрес.
Пример логики распределения:
Предположим, нам необходимы следующие порты:
- Порт вывода данных на семисегментный индикатор.
- Порт ввода данных с кнопок.
- Порт управления внешним реле.
Таблица распределения портов:
| Устройство | Тип | Адрес порта |
|---|---|---|
| Семисегментный индикатор | Вывод | 0016 |
| Кнопки | Ввод | 0116 |
| Управление реле | Вывод | 0216 |
Оставшиеся 253 адреса портов могут быть использованы для будущих расширений.
Построение схем дешифрации адресов и векторные диаграммы
Для того чтобы процессор мог однозначно выбирать нужное устройство (ПЗУ, ОЗУ или конкретный порт ввода-вывода) по адресу, необходима схема дешифрации адресов. Эта схема принимает входные адресные линии от микропроцессора и генерирует управляющие сигналы (Chip Select – выбор кристалла) для соответствующего устройства.
Принцип построения схемы дешифрации:
Дешифрация адресов основана на анализе старших бит адресной шины. Например, для нашего распределения памяти:
- ПЗУ (000016 — 1FFF16): Старший бит A15 = 0, A14 = 0, A13 = 0.
- ОЗУ (200016 — 2FFF16): Старший бит A15 = 0, A14 = 0, A13 = 1.
Дешифратор может быть построен на логических элементах (И, ИЛИ, НЕ) или на специализированных микросхемах (например, дешифраторы серии К155, К555).
Для памяти, сигнал выбора (CS) для ПЗУ активируется, когда A15, A14, A13 равны 0. Для ОЗУ – когда A15=0, A14=0, A13=1. Для портов ввода-вывода используется отдельный сигнал I/O, который совместно с младшими 8 битами адресной шины (A0-A7) и сигналом дешифрации портов активирует нужное устройство.
Векторные диаграммы деления:
Для наглядной демонстрации распределения адресного пространства используются векторные диаграммы деления. Они показывают, как полное 16-разрядное адресное пространство (для памяти) или 8-разрядное (для портов) разбивается на сегменты и какие устройства занимают эти сегменты.
Пример векторной диаграммы для памяти:
Адрес FFFFh +----------------+
| Свободно |
| (для расширения) |
Адрес 3000h +----------------+
| ОЗУ |
Адрес 2FFFh +----------------+
| ОЗУ | (4 Кбайт)
Адрес 2000h +----------------+
| ПЗУ |
Адрес 1FFFh +----------------+
| ПЗУ | (8 Кбайт)
Адрес 0000h +----------------+
Пример векторной диаграммы для портов ввода-вывода:
Адрес FFh +----------------+
| Свободно |
| (для расширения) |
Адрес 03h +----------------+
| Управление реле |
Адрес 02h +----------------+
| Кнопки |
Адрес 01h +----------------+
| Семисегментный |
| индикатор |
Адрес 00h +----------------+
Такие диаграммы и детальные схемы дешифрации адресов являются неотъемлемой частью проектной документации и демонстрируют глубокое понимание принципов работы микропроцессорных систем. Они позволяют убедиться в отсутствии конфликтов по адресам и корректном функционировании всех подключенных устройств.
Заключение
Выполнение курсового проекта, посвященного разработке и программной реализации микропроцессорной системы на базе комплекта БИС КР580, является не просто академической задачей, но и глубоким погружением в фундаментальные принципы вычислительной техники. Мы проделали путь от детального изучения внутренней архитектуры микропроцессора КР580ВМ80А с его 8-разрядным АЛУ, системой регистров и флагов, до понимания того, как эти внутренние блоки взаимодействуют с внешним миром через системный интерфейс KR580 Microbus, механизмы синхронизации и тактирования.
Были рассмотрены тонкости формирования управляющих сигналов на основе «слова состояния» и роль Генератора Тактовых Импульсов в создании ритма работы всей системы. Мы углубились в систему команд процессора, изучив её классификацию, структуру многобайтовых команд, принципы кодирования мнемоник в машинные коды и, что особенно важно, детально проанализировали все пять режимов адресации операндов, что является краеугольным камнем для эффективного программирования.
Особое внимание было уделено строгому соблюдению нормативной документации, в частности ГОСТ 19.002-80 и ГОСТ 19.003-80, при разработке графических алгоритмов. Это не только требование к оформлению, но и методологический подход, позволяющий структурировать мышление и создавать логически безупречные алгоритмы. Наконец, мы затронули практические аспекты проектирования, выполнив расчеты адресного пространства памяти и портов ввода-вывода, а также рассмотрели принципы построения схем дешифрации и демонстрации распределения с помощью векторных диаграмм.
В совокупности, проделанная работа позволила не только достичь поставленных целей курсового проекта – разработать и программно реализовать микропроцессорную систему на КР580 – но и сформировала комплексное понимание её функционирования на всех уровнях: от схемотехнического и логического до программного и документационного. Полученные знания и навыки являются бесценной базой для дальнейшего изучения современных микропроцессорных систем, поскольку принципы, заложенные в «классических» архитектурах, остаются актуальными и сегодня, формируя основу для более сложных и высокопроизводительных решений.
Список использованной литературы
- Шило, В. Л. Популярные цифровые микросхемы. — Металлургия, 1988.
- Интегральные микросхемы и основы их проектирования / Н. М. Николаев, Н. А. Филинюк.
- Цифровые и аналоговые интегральные микросхемы : справочник.
- Конструирование и технология микросхем.
- Проектирование дискретных устройств на интегральных микросхемах : справочник / Г. И. Пухальский, Т. Я. Новосельцева.
- Архитектура микропроцессора кр580вм80а. 2019. URL: studfile.net.
- Мп кр580вм80а в структуре микропроцессорной системы. 2015. URL: studfile.net.
- Система команд микропроцессора кр580вм80а. 2015. URL: studfile.net.
- СИСТЕМА КОМАНД МИКРОПРОЦЕССОРА КР580ИК80. URL: gatchina.pw.
- Изучение и исследование микропроцессора КР580ВМ80А. URL: narod.ru.
- ГОСТ 19.002-80. ЕСПД. Схемы алгоритмов и программ. Правила выполнения. 1981. URL: stroyinf.ru.