ЛР2. Программирование в машинных кодах на макете микропроцессорного комплекта 1804 и программном эмуляторе (1065585), страница 2
Текст из файла (страница 2)
Рис.2. Режимы закладки «состояние».
Рис.3. Опция «Регистры» в закладке «Просмотр».
Рис.4. Опция «память МП» в закладке «Просмотр».
Рис.5 Положение окон эмулятора макета 1804, подготовленное для занесения программы и её отладки.
Назначение клавиш наборного поля соответствует макету 1804.
Однако в использовании клавиш «адрес», «данные» и «мультиплексор» отпадает необходимость из-за возможности загрузки микрокоманд целиком (а не по тетрадам) в поле окна «память микрокоманд».
Занесение программы в оперативную память.
Загрузка содержимого микрокоманды, располагаемой по выбранному адресу, производится с помощью клавиатуры и мыши. В эмуляторе макета 1804 основными клавишами являются расположенные слева внизу клавиши-переключатели «Загрузка-работа» и «Пуск». Данные клавиши управляются нажатием левой клавиши мыши при наведении курсора на эти клавиши.
Клавиша «Загрузка работа» может находиться в двух состояниях: верхнее соответствует режиму загрузки (занесению) программы в память микропрограмм, нижнее соответствует режиму выполнения программы. Выполнение текущей команды осуществляется клавишей «Пуск». Данная клавиша работает в режиме «подпружиненной кнопки и не имеет второго положения.
Для записи строки команды в оперативную память, необходимо курсором мыши выделить строку по нужному адресу, она выделится зелёным цветом.
После этого надо курсором мыши нажать кнопку «изменить». Будет доступна запись строки команды в верхней отдельной строке. После набора строки или её коррекции нажать кнопку «загрузить». Данная набранная строка будет перенесена в поле оперативной памяти, адрес в памяти отмечен красным цветом.
Рис.6. Загрузка команды в троку памяти по адресу МК00.
Выполнение программы, загруженной в оперативную память.
Перед началом выполнения команд, надо определить начальный адрес первой команды. Этот адрес должен быть выставлен на переключателях «адрес». Как правило отладка программ начинается с команды, расположенной по нулевому (начальному) адресу, т.е. в первой ячейке памяти.
В положении переключателя «Загрузка-Работа» оставив его в положении «Загрузка» необходимо сделать однократное нажатие клавиши «Пуск». При этом проследить изменение содержимого регистра РГМК по информационному полю, в котором отражается содержимое всех регистров. Код выполняемой команды должен отразиться в содержимом регистра РГМК. После этого необходимо перевести переключатель «Загрузка-Работа» в положение «Работа».
Далее каждое нажатие клавиши «Пуск» инициирует выполнение одной команды. При выполнении команд по последовательно расположенным по соседним возрастающим адресам памяти увеличение адреса производится автоматически и изменение на клавишах «адрес» не требуется.
Контроль над правильным исполнением алгоритма программы производится по содержимому регистров РОН00-РОН15, регистра-аккумулятора Q, шины результата F.
3. ПРИМЕРЫ МИКРОПРОГРАММ
ПРИМЕР1. ЗАГРУЗКА РЕГИСТРОВ ОБЩЕГО НАЗНАЧЕНИЯ.
Текст микропрограммы приведен в таблице 7 с адреса 0 по адрес 2.
Первая микрокоманда (по адресу 0 ПМП) осуществляет запись в регистр по адресу 0 (РОН0) двоичного числа 5 (0101). В качестве источников операндов используется поле "D" микрокоманды и константа нуля, а код АЛУ выбирается таким образом, чтобы не изменялось значение операнда.
Микрокоманда по адресу 1 ПМП осуществляет чтение операнда из РОН без загрузки считанной информации в другие регистры, а по адресу 2 ПМП - чтение операнда из РОН0 с засылкой в регистр "Q".
С помощью описанных микрокоманд можно загружать любой из 16 РОН, считывать их содержимое, меняя при этом информацию в полях "В" и "D" микрокоманды.
Для проверки микропрограммы необходимо выполнить следующие действия:
-
переключатель "ЗАГРУЗКА/РАБОТА" установить в положение ЗАГРУ3КА;
-
на клавиатуре АДРЕС набрать код пускового адреса микропрограммы (в нашем случае - 0);
-
нажать один раз клавишу ПУСК, при этом произойдет запись в РГ микрокоманды, записанной в ячейке 0 ПМП;
-
переключатель "ЗАГРУЗКА/РАБОТА" установить в положение РАБОТА;
-
для отображения на индикационной линейке ДАННЫЕ результатов выполнения каждой микрокоманды на клавиатуре МУЛЬТИПЛЕКСОР установить код 111;
-
последовательно нажимая клавишу ПУСК, контролировать выполнение каждой микрокоманды.
При однократном нажатии в режиме РАБОТА клавиши ПУСК выполняется микрокоманда, записанная в РГ МК, и результаты ее выполнения отображаются на индикационной линейке ДАННЫЕ, а в регистр микрокоманд (РГ МК) заносится очередная микрокоманда.
ПРИМЕР 2. ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКИХ И ЛОГИЧЕСКИХ ОПЕРАЦИЙ
Текст микропрограммы, иллюстрирующий выполнение отдельных арифметических и логических операций приведен в таблице 7 с адреса 3 по адрес 6.
Микрокоманда по адресу 3 ПМП осуществляет инкремент содержимого РОН0 (загружен в примере 1) с записью результата в тот же РОН, а микрокоманда по адресу 4 ПМП - восстанавливает прежнее значение содержимого РОН0 (т. е. осуществляет декремент содержимого РОН0).
Микрокоманда по адресу 5 ПМП, используя оба канала адреса МК -"А" и "В", осуществляет сложение содержимого РОН0 с самим собой, т.е. удвоение с сохранение результата в РОН0.
Микрокоманда по адресу 6 ПМП осуществляет операцию логического сложения результата предыдущей микрооперации с константой 0101.
Для проверки микропрограммы необходимо выполнить действия, описанные в примере 1, изменив пусковой адрес.
ПРИМЕЧАНИЕ: для выполнения примера 2 необходимо произвести загрузку РОН0, выполнив микрокоманду по адресу "0" ПМП примера 1.
ПРИМЕР 3. ВЫПОЛНЕНИЕ ОПЕРАЦИЙ СДВИГА.
Текст микропрограммы, иллюстрирующей выполнение отдельных сдвиговых операций, приведен в таблице 7 с адреса 7 по адрес 8.
Первая из этих операций осуществляет сдвиг содержимого РОН0 (М0=0, М1=0) на один разряд вправо (R20-R22 = 101), т.е. уменьшенный вдвое результат логической операции дизъюнкции над содержимым РОН0 и константой нуля заносится в регистр РОН0. Содержимое регистра "Q" участвует тоже в этой операции сдвига (не участвуя в операции АЛУ), но данном случае не контролируется.
Микрокоманда по адресу 8 ПМП осуществляет циклический сдвиг (М0=1, М1=0) содержимого РОН0 влево (R20-R22 = 111) на один разряд с записью в освободившийся разряд значения старшего разряда РОН0.
Изменяя содержимое полей "М0", "М1", "R20-R22" микрокоманды, можно осуществлять сдвиг слов двойной длины. Выполнение операций сдвига иллюстрируется таблицей 5.
ПРИМЕР 4. ВЫПОЛНЕНИЕ ОПЕРАЦИИ НОРМАЛИЗАЦИИ.
Пусть задано двоичное число с плавающей запятой в виде ненормализованной мантиссы со знаком, записанной в двух регистрах РОН (РОН1 и РОН2), причем знак и старшие разряды - в РОН2, и порядка числа без знака в регистре РОНЗ.
Операция нормализации заключается в сдвиге мантиссы влево до появления в старшем после запятой разряде единицы и коррекции (уменьшения) порядка числа на число единиц, равное числу сдвигов.
Текст микропрограммы, иллюстрирующей выполнение операции нормализации двойного слова, представлен в таблице 8, а алгоритм - на рис.4.
Каждая операторная вершина алгоритма соответствует определенной микрокоманде, записанной по адресу ПМП, указанному в этой вершине.
Так как при нормализации осуществляется сдвиг мантиссы влево с потерей знака, то перед выполнением микрооперации сдвига осуществляется запоминание знака в регистре РОН0 (МКЗ) и его восстановление после нормализации (МК9). При каждом сдвиге в цикле осуществляется декремент порядка.
4. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
-
Изучить описание и назначение органов управления и индикации лабораторного стенда.
-
Осуществить запись в память микропрограмм (ПМП) содержимого таблицы 7. Выполнить и зафиксировать результат выполнения каждой микрокоманды из приведенных примеров в заранее подготовленной таблице 9.
-
Записать в ПМП текст микропрограммы примера 4. Проконтролировать последовательность выполняемых микрокоманд и конечный результат нормализации. Исходные значения числа выбрать из таблицы 10 в соответствии с вариантом задания.
-
Разработать алгоритм и составить микропрограмму выполнения операции обмена информацией между двумя регистрами РОН. Исходные данные выбрать из таблицы 11 в соответствии с вариантом задания. Загрузить микропрограмму в ПМП, выполнить операцию обмена, зафиксировав результат каждой микрокоманды в заранее подготовленной таблице.
-
Разработать алгоритм, составить и выполнить микропрограмму подсчета числа единиц в слове, записанном в одном из регистров РОН. Исходные данные выбрать из таблицы 12 в соответствии с вариантом задания.
5. ТРЕБОВАНИЯ К ОТЧЕТУ
-
Структурная схема лабораторного стенда.
-
Разработанные алгоритмы микропрограмм.
-
Тексты микропрограмм и результаты выполнения каждой отдельной микрокоманды, зафиксированные в заранее подготовленные таблицы.
6. КОНТРОЛЬНЫЕ ВОПРОСЫ
-
В чем заключается принцип микропрограммного управления операциями?
-
Каково назначение полей и отдельных битов в формате микрокоманды?
-
Каков порядок загрузки микропрограмм в ПМП?
-
Каким образом можно проконтролировать порядок выполнения микрокоманд в микропрограмме?
-
Как контролируются результаты выполнения микрокоманд?
-
Как перейти к выполнению микропрограммы?
7. ЛИТЕРАТУРА
-
Проектирование цифровых систем на комплектах микропрограммируемых БИС. Под ред. Колесникова В.Г., М., Радио и связь, 1984, 240 с.
Таблица 1
Номер тетрады | Номер бита | Определение поля МК | Назначение |
0 | 0 1 2 3 | Данные «D» | Входные данные АЛУ |
1 | 4 5 6 7 | Адрес «B» | Адрес РОН по каналу «В» |
2 | 8 9 10 11 | Адрес «A» | Адрес РОН по каналу «А» |
3 | 12 13 14 15 | АЛУ СО | Функция АЛУ Входной перенос АЛУ |
4 | 16 17 18 19 | Источник операнда М0 | Определение источник операнда для АЛУ Управляет операцией сдвига |
5 | 20 21 22 23 | Управление приемником результата М1 | Определяют приемник результата выполнения микрокоманды Управляет операцией сдвига |
6 | 24 25 26 27 | Управление следующим адресом | Управляют выборкой следующего адреса микрокоманды в микропрограмме |
7 | 28 29 30 31 | Адрес перехода | Определяет адрес перехода |
Таблица 2
Зависимость функции АЛУ от кода поля микрокоманды
Двоичный код поля микрокоманды (разряды МК) | Функция АЛУ – F | ||
14 | 13 | 12 | |
0 | 0 | 0 | |
0 | 0 | 1 | |
0 | 1 | 0 | |
0 | 1 | 1 | |
1 | 0 | 0 | |
1 | 0 | 1 | |
1 | 1 | 0 | |
1 | 1 | 1 |
Таблица 3
Зависимость источника операнда от кода поля микрокоманды
Двоичный код поля микрокоманды (разряды МК) | Источник операндов АЛУ | |||
18 | 17 | 16 | R | S |
0 | 0 | 0 | A | Q |
0 | 0 | 1 | A | B |
0 | 1 | 0 | 0 | Q |
0 | 1 | 1 | 0 | B |
1 | 0 | 0 | 0 | A |
1 | 0 | 1 | D | A |
1 | 1 | 0 | D | Q |
1 | 1 | 1 | D | 0 |
Таблица 4
Зависимость приемника результат от кода поля микрокоманды
Двоичный код поля микрокоманды (разряды МК) | Загрузка | Выход К1804ВС1 Y | ||
22 | 21 | 20 | ||
0 | 0 | 0 | F | |
0 | 0 | 1 | Нет загрузки | F |
0 | 1 | 0 | A | |
0 | 1 | 1 | F | |
1 | 0 | 0 | F | |
1 | 0 | 1 | F | |
1 | 1 | 0 | F | |
1 | 1 | 1 | F |
Где: F – результат операции АЛУ