Uploaded by vbqzpbuz

Микропроцессор 1804-11 07 2012

advertisement
Микропроцессор 1804
от GhostAngeL | skachatreferat.ru
Санкт-Петербургский государственный политехнический университет
Факультет технической кибернетики
Кафедра компьютерных систем и программных технологий
Отчет по лабораторной работе
(Учебная дисциплина «Организация ЭВМ и систем»)
Исследование секционного микропроцессора с
микропрограммным управлением, с естественной,
принудительной и стековой адресацией микрокоманд
Работу выполнила студентка группы 3081/3 Р. Ю.А.
Работу принял преподаватель ______________ П. Е.Г.
подпись
Санкт-Петербург
2012
Цель исследования:
Целью данной лабораторной работы является практическое ознакомление с
основными модулями микропроцессорного комплекта серии К1804,
организацией и методикой построения микропроцессорных устройств на его
основе, приобретение навыков программирования микропроцессоров
данного класса.
1.
2.
3.
4.
5.
Программа исследования:
Изучить список микрокоманд ЦПЭ К1804ВС1 и методики его
программирования.
Рассмотреть принципы построения БМУ на основе БИС К1804ВУ1 и
К1804ВУ3.
Изучить режимы работы МП К1804 и приобрести начальные навыки
программирования и построения простейших контроллеров на МП
серии К1804 с помощью восьми тестовых микропрограмм.
Написать программу преобразования 8-разрядного числа из кода Грея в
двоичный.
Написать программу умножения «старшими разрядами вперед» двух
4-разрядных чисел.
Структурные схемы и краткое описание работы МП и исследуемой
микропроцессорной системы:
Центральный процессорный элемент (ЦПЭ) К1804ВС1 предназначен для
арифметико-логической обработки данных и временного хранения операндов
и результатов вычислений во внутренней регистровой памяти. Секционная
структура ЦПЭ позволяет путем объединения нескольких секций строить
операционные блоки процессоров с разрядностью, кратной четырем.
Структурная схемасекции ЦПЭ (Рис. 1) содержит четыре основных блока:
блок АЛУ, блок внутренней памяти, блок регистра Q и блок управления.
Рис.1. Структурная схема четырёхразрядной микропроцессорной секции ЦПЭ К1804ВС1.
Краткая характеристика блоков ЦПЭ:
1. Блок АЛУ выполняет простейшие арифметические (сложение и
вычитание) и поразрядные логические операции (И, ИЛИ, отрицание с
умножением, сложение по модулю два, проверку на эквивалентность) и
формирует четыре признака результата: перенос из старшего разряда
C4, переполнение OVR, знак результата F3 и признак нулевого
результата Z.
2. Блок внутренней памяти состоит из регистрового ЗУ (РЗУ) емкостью
16 4-разрядных РОН, регистра-сдвигателя (Сд Д) на входе
регистрового ЗУ, двух 4-разрядных буферных регистров (РА и РВ).
Регистр-сдвигатель имеет дополнительные выходы (PR3, PR0) для
организации сдвигов совместно с регистром Q и объединения с
аналогичными регистрами других ЦПЭ.
3. Блок регистра Q состоит из дополнительного 4-разрядного регистра Q
(РQ) и отдельного сдвигателя (Сд Q). Регистр Q позволяет выполнять
сдвиговые операции над 8-разрядным словом, старшая часть которого
задается регистром B, а младшая хранится в Q, также он используется в
качестве приемника результата операции АЛУ или для сдвигов в нем
параллельно над четырехразрядными данными, без учета переносов.
4. Блок управления формирует сигналы управления работой секции ЦПЭ.
Является микропрограммным и также позволяет увеличивать адресное
пространство памяти путем соединения нескольких секций управления
адресом микрокоманды (СУАМ) друг с другом.
Краткая характеристика СУАМ (К1804ВУ1):
СУАМ предназначены для формирования адреса следующей
микрокоманды. Источником адреса микрокоманд могут быть: счетчик
микрокоманд, аппаратный стек, входящие в состав СУАМ, адресная частьрегистра
микрокоманд, а также преобразователь начального адреса команд и
векторов прерываний. Конкретный выбор осуществляется мультиплексором
управляемым сигналами S0, S1, поступающими с контроллера
последовательности микрокоманд K1804. Так же в СУАМ имеются: сигнал
маскирования адреса ZA, сигналы PUP и FE управления работой стека и C0
управления счетчиком микрокоманд. Их генерирует на основе 4-разярдного
поля перехода микрокоманды формирователь сигналов управления – К1804.
Счетчик микрокоманд состоит из регистра счетчика МК и
инкрементатора. Управляющий сигнал переноса C0 позволяет создать
цикличность выполнения определенной команды (С0=0), если С0=1, то
происходит увеличение адреса на выходе счетчика.
Аппаратный стек на 4 уровня растет в сторону младших адресов и
служит главным образом для организации возврата из подпрограмм. Он
управляется сигналами PE (разрешения работы стека) и PUP (управление
загрузкой/выгрузкой).
Регистр адреса служит буфером для хранения адреса, поступающего на
входы R3..R0 от внешнего источника. Разрешение записи осуществляется
сигналом RE=0. Другим набором входов для связи с внешним источником
является D3..D0.
Рис. 2.Структурная схема СУАМ ( К1804ВУ1)
Общая структурная схема всей микропроцессорной системы выглядит
следующим образом:
Рис. 3. Функциональная схема микропроцессорной системы
Выполнение тестовых микропрограмм:
Микропрограмма 1 иллюстрирует методы загрузки данных в РОН ЦПЭ.
Текст микропрограммы приведен в таблице 1.
Таблица 1
Выполнили микропрограмму в пошаговом режиме, фиксируя результат
выполнения отдельных микрокоманд по содержимому поля «ДАННЫЕ»:
Адрес
000
001
002
003
004
005
«ДАННЫЕ»
0010
0010
0100
0100
0101
0101
С помощью указанных микрокоманд убедились, что можно загрузить
любой изшестнадцати РОН произвольным числом меняя только содержимое
полей В и D.
Микрокоманда с адресом 005 в этой микропрограмме, передающая
управление самой себе, является микрокомандой «останова». С помощью
индикатора «ДАННЫЕ» убеждаемся, что микропрограмма «зацикливается»
на микрокоманде с адресом 005, при этом любое последующее нажатие
кнопки ПУСК не изменяет содержимое счетчика микрокоманд БИС
К1804ВУ1.
Загрузка Q выполняется аналогичными командами, однако для этого
необходимо изменить приёмник результата. Текст микрооперации
представлен в таблице 2.
Таблица 2
Микропрограмма 2 иллюстрирует выполнение сдвиговых операций
операндов 4-разрядной и 8-разрядной длины. Текст микропрограммы
приведен в таблице 3.
Таблица 3
Выполнили микропрограмму в пошаговом режиме, фиксируя результат
выполнения отдельных микрокоманд по содержимому поля «ДАННЫЕ»:
В результате выполнения команды по адресу 000 в РОН0 загружается
число 0010 после чего происходит переход на следующий адрес. В процессе
работы программы в командах сдвига осуществляется переход на адрес
вектора, задаваемый клавишным переключателем АДРЕС, что позволяет
производить сдвиг РОН необходимое число раз. Необходимо учитывать, что
с появлением тактового импульса, сдвиг РОН происходит вне АЛУ, поэтому
на выходной шине данных виден еще не сдвинутый РОН.
При сдвиге РОН0 циклически влево его значение стало равно 0010. На
клавишном регистре адреса установили код 002. При очередном нажатии
кнопки ПУСК была считана и выполнена микрокоманда по второму адресу
ЗУМК (сдвиг РОН0 циклически вправо). При первом нажатии кнопки ПУСК
на индикаторе «ДАННЫЕ» появляется число не 0001, а 0100. При втором
нажатии кнопки ПУСК на индикаторе «ДАННЫЕ» появляется число 1000. И
только на третьем нажатии меняется направление сдвига (0100 наиндикаторе
«ДАННЫЕ»).
Пустая операция в конце программы не производит никаких
модификаций значений регистров и ссылается сама на себя.
Составим микропрограмму выполнения арифметического сдвига 8разрядной длины
вправо и влево, а также 4-разрядного сдвига с вводом лог.0
в старшие (при сдвиге влево) или младшие (при сдвиге вправо) разряды РОН
и регистра Q. Текст микропрограммы представлен в таблице 4.
Таблица 4
Выполнили микропрограмму в пошаговом режиме, фиксируя результат
выполнения отдельных микрокоманд по содержимому поля «ДАННЫЕ»:
Микропрограмма 3 иллюстрирует действие некоторых арифметических
операций в ЦПЭ К1804ВС1. Текст микропрограммы приведен в таблице 5.
Таблица 5
Выполнили микропрограмму в пошаговом режиме, фиксируя результат
выполнения отдельных микрокоманд по содержимому поля «ДАННЫЕ»:
Адрес
000
001
001
002
002
003
003
004
005
006
007
008
«ДАННЫЕ»
0010
0011
0100
0011
0010
0101
1000
0011
0000
0101
0101
0110
009
009
0110
0110
Микрокоманды 000 и 001 используются для инкремента и декремента
содержимого РОН0. Микрокоманды 002, 003 демонстрируют сложение
(вычитание) содержимого РОН с константой. Микрокоманды 004, 005, 006
реализуют сложение содержимого двух РОН. Данная программа
демонстрирует возможные арифметические операции с разным типом и
числом операндов: РОН и D, РОН и РОН и т.д. В данную микропрограмму,
как и в предыдущих пунктах, включены микрокоманды, в которых
реализуется переход по адресу, формируемому клавишным регистром
адреса, что позволяет выполнять арифметические операции, произвольное
число раз.
Микропрограмма 4 иллюстрирует работу БМУ при безусловных переходах.
Текст микропрограммы приведен в таблице 6.
Таблица 6
В процессе работы программы осуществляется безусловный переход к
следующему адресу, либо переход,указанный в инструкции адреса.
Последовательность адресов при выполнении программы:
000 -> 009 -> 010 -> 003 -> 004 -> 015 -> 000 -> ...
Микропрограмма 5 иллюстрирует один из способов организации цикла с
помощью стека. Текст микропрограммы приведен в таблице 7.
Таблица 7
Данная микропрограмма иллюстрирует один из методов организации
цикла с использованием аппаратного стека на четыре 4-разрядных слова (он
же используется при реализации подпрограмм), в который можно записывать
адреса микрокоманд, а затем осуществлять условный или безусловный
переход по заданному адресу.
В процессе работы микропрограммы осуществляется бесконечный цикл
переходов по адресам: 000 -> 001 -> 002 -> 003 -> 010 -> 002 -> 003 -> …
Микропрограмма 6 реализует обращение к подпрограмме и возврат из нее в
соответствии с диаграммой переходов на рис.4.
Рис. 4. Диаграмма переходов
Текст микропрограммы представлен в таблице 8.
Таблица 8
В микрокоманде 001 закодирована инструкция «Переход к
подпрограмме» (код 0101 в поле 6 микрокоманды) и адрес первой
микрокоманды подпрограммы (008 в поле 7), а в микрокоманде 010 указана
инструкция «Возврат из подпрограммы» (код 0110 в поле 6).
Последовательность адресов при выполнении программы:
000 -> 001 -> 008 -> 009 -> 010 -> 002 -> 003 -> 000 -> 001 -> 008 -> …
Происходит обращение к подпрограмме и возврат из нее в соответствии
с рисунком 4.
Микропрограмма 7 иллюстрирует работу стека при вложении подпрограмм,
когда одна подпрограмма вызывает другую, которая, в свою очередь, может
вызвать третью и т.д. На рис. 5 предложена диаграмма организации
последовательности выполнения вложенных микропрограмм.
Рис. 5. Иллюстрация работы стека при вложении подпрограмм
Текст микропрограммы приведен в таблице 9.
Таблица 9
Последовательность адресоввыполняемых микрокоманд:
000 -> 001 -> 003 -> 006 -> 004 -> 007 -> 006 -> 008 -> 010 -> 006 -> 011 -> 013
-> 014 -> 012 -> 009 -> 005 -> 002 - > 000 - >…
Происходит обращение к подпрограмме и возврат из нее в соответствии
с рисунком 5.
Ответы на вопросы:
Какие ограничения на количество вложенных подпрограмм накладывает
организация стека БИС СУАМ К1804 ВУ1?
В БИС СУАМ К1804ВУ1 используется 4-х уровневый стек.
Можно ли с использованием СУАМ К1804 ВУ1 реализовать
микропрограмму, содержащую 10 подпрограмм?
Да, если не превысить 4 уровня вложенности.
Микропрограмма 8 иллюстрирует реализацию условных переходов в
типовых микропрограммах. Текст микропрограммы приведен в таблице 10.
Таблица 10
Выполнили микропрограмму в пошаговом режиме, фиксируя результат
выполнения отдельных микрокоманд по содержимому поля «ДАННЫЕ»:
Адрес
000
001
002
003
001
002
003
001
002
255
«ДАННЫЕ»
1100
1101
1101
1101
1110
1110
1110
1111
1111
1111
Происходит инкрементирование R0.Условный переход будет сделан
после сложения текущего R0=1111 c единицей, то есть произойдёт
переполнение. Условные переходы в микропроцессоре К1804 реализуются по
содержимому регистра состояния. В данной микропрограмме реализован УП
по значению флага переноса. Следует отметить, что результаты в регистр
состояния записываются после выполнения операции в момент появления
тактового импульса, поэтому условный переход по этим результатам может
быть сделан лишь в следующей команде.
Составим и выполним микропрограмму определения значения
выдвигаемого бита при сдвиге влево. Текст микропрограммы представлен в
таблице 11.
Таблица 11
При сдвиге влево анализируется значение старшего разряда, после этого
выполняется сдвиг и проверка флага F3. Если F3=1, то выдвигаемый бит
равен 1, в противномслучае – 0.
Значение выдвигаемого бита записывается в регистр Q и выводится на
индикатор «ДАННЫЕ». Выполнили микропрограмму в пошаговом режиме,
фиксируя результат выполнения отдельных микрокоманд по содержимому
поля «ДАННЫЕ»:
Составим и выполним микропрограмму определения значения
выдвигаемого бита при сдвиге вправо. Текст микропрограммы представлен в
таблице 12.
Таблица 12
При сдвиге вправо исходное слово перед сдвигом маскируется словом
маской 0001, содержащим 1 в младшем разряде слова. Затем выполняется
сдвиг и реализуется условный переход по значению флага Z. Если Z=1, то
выдвигаемый бит равен 0, в противном случае 1.
Результат выдвигаемого бита записывается в регистр Q и выводится на
индикаторы. Выполнили микропрограмму в пошаговом режиме, фиксируя
результат выполнения отдельных микрокоманд по содержимому поля
«ДАННЫЕ»:
Адрес
000
001
002
003
004
005
007
008
«ДАННЫЕ»
0001
0001
0001
0000
0000
0001
0001
0001
Индивидуальное задание №1
Составить и выполнить программу преобразования 8-разрядного числа
из кода Грея в двоичный код.
Решение:
Преобразование из двоичного представления числа в код Грея
происходит по формуле:
g n1  bn1
gi  bi  bi 1 , i  0, n  2
То есть для получения представления числа в коде Грея достаточно
одной операции:

bn1
g n1
bn2
bn1
g n2
...
...
...
b1
b2
g1
b0
b1
или b ⊕ (b ≫ 1).
g0
Для обратного преобразования, воспользуемся элементарным свойством
сложения по модулю два:
x y y  x
С учетом того, что изначально от искомого числа нам известен только
старший разряд, получим следующую последовательность действий:
bn1  g n1  0  g n1
bn2  g n2  bn1  g n2  g n1
bn3  g n3  bn2  g n3  g n2  g n1
...
b0  g 0  b1  g 0  g1  ...  g n1В зависимости от того, какую часть этих равенств
использовать,
получается две различных реализации алгоритма. Мы воспользуемся первой
возможной реализацией. Решение заключается в следующем: часть bi = gi +
bi-1 содержит цикл, на каждой итерации складывающий первоначальное
число в коде Грея с результатом предыдущего вычисления, сдвинутым на
один разряд вправо. При каждом выполнении тела цикла мы получаем новый
разряд искомого числа. Так как старший разряд уже известен, число
итераций равно n – 1, где n – разрядность данных.
Представим алгоритм решения задачи в виде блок-схемы:
Начало
R0 ≔ D0
R1 ≔ D1
Q ≔ R0
R2 ≔ R1
R3 ≔ 7
R2 ≔ R2 ≫ 1
Q≔Q≫1
R2 ≔ R2 ⊥ 01112
R2 ≔ R1 ⊕ R2
Q ≔ Q ⊕ R0
R3 ≔ R3 - 1
да
R3 != 0
Q≔Q
R2 ≔ R2
Конец
Текст программы представлен в таблице 13.
Таблица 13
Адр
ес
ком
анд
ы
Адр Тип
ес
пере
пере хода
хода
000
001
002
003
004
005
7
хххх
хххх
хххх
хххх
хххх
хххх
006
007
хххх 0010 х011 х101 х100
хххх 0010 х011 х001 х110
0010 0010 0111
0001 0010 хххх
008
009
010
011
012
хххх
хххх
005
хххх
011
0000
хххх
хххх
хххх
хххх
6
0010
0010
0010
0010
0010
0010
0010
0010
0000
0010
0001
При
емн
ик
резу
льта
та
5
х011
х011
х000
х011
х011
1100
х000
х011
х001
х000
х011
Микрокоманда
Ист Функ
А
очн ция
ик
АЛУ
опер
андо
в
4
3
2
х111 х011
хххх
х111 х011
хххх
х011 х011
хххх
х100 х011
0001
х111 х011
хххх
1011 х011
хххх
х000
х011
хххх
х010
х011
х110
0001
хххх
х011
х011
Выполняемая функция
В
D
1
0000
0001
0000
0010
0011
0010
0
D3..D0
D3..D0
хххх
хххх
0111
хххх
хххх
0011
хххх
хххх
0010
хххх
хххх
хххх
хххх
хххх
Загрузка в Р0
Загрузка в Р1
Q:=P0
P2:=P1
P3:=7
Арифм.сдвиг дв.слова
вправоМаскир.стар.разр.нулем
P2:=P2  P1
Q:=Q  P0
P3:=P3 - 1
P3 != 0
Чтение Q (мл.тетр.)
Чтение P2 (ст.тетр.)
Операционный блок, установленный на стенде, ограничивает операнды
АЛУ 4-разрядными числами. Чтобы оперировать 8-разрядным числом,
использовался дополнительный регистр Q, где хранилась младшая тетрада
числа. Для восьмиразрядного слова, образованного указанным в команде
регистром и регистром Q, МП поддерживает операцию только
арифметического сдвига вправо, поэтому в команде по адресу 006
производится коррекция, обнуляющая старший бит старшей тетрады
полученного числа, маскированием регистра Р2 с 01112. В последней
команде, отображающей старшую тетраду результата, содержащуюся в
регистре Р2, используется безусловный переход на предыдущую
инструкцию, отображающую младшую его часть. Это позволяет циклически
выводить на ЖК-дисплей результат выполнения микропрограммы для
удобного тестирования и отладки.
Примеры вызова микропрограммы:
Входные данные (в коде Грея)
Результат (в двоичном коде)
1000 0000
1111 1111
1010 1010
1100 1100
0000 0010
0000 0011
1000 1001
1111 0001
Индивидуальное задание №2
Составить и выполнить программу умножения «старшими разрядами
вперед» двух 4-разрядных чисел.
Решение:
Для решения задачи воспользуемся умножением старшими разрядами
вперед со сдвигом множимого вправо и неподвижной суммы частичных
произведений. Схема умножения показана на рис. 6. Особенностью данного
способа умножения является необходимость использования регистра
множимого и сумматора двойной длины по сравнению с длиной множителя.
Рис. 6. Схема умножения
Представим алгоритм решения задачи в виде блок-схемы:
Начало
R1:=D0
R2:=D1
R3:=R2
R4:=5
R4:=R4 - 1
да
R4:=0
R1:=R1>>1
Q:=Q>>1
R6:=R6
R4:=R4 - 1
R5:=R5
R3:=R3
Download