Секционные микропроцессоры с микропрограммным управлением серии К1804. Практическое ознакомление с основными модулями микропроцессорного комплекта серии К1804, организацией и методикой построения МП-устройств на его основе, приобретение навыков программирования микропроцессоров данного класса

Страницы работы

Фрагмент текста работы

Данная микропрограмма иллюстрирует один из методов организации цикла с использованием аппаратного стека на четыре 4-разрядных слова (он же используется при реализации подпрограмм), в который можно записывать адреса микрокоманд, а затем осуществлять условный или безусловный переход по записанному адресу.

Адрес

памяти

Микрокоманда

Выполняемая функция

адрес перехода

инструкция перехода

приёмник

результата

источник

операндов

АЛУ

А

В

D

7

6

5

4

3

2

1

0

0000

хххх

0010

хххх

хххх

хххх

хххх

хххх

хххх

Продолжить

0001

хххх

1001

хххх

хххх

хххх

хххх

хххх

хххх

Загрузить стек и продолжить

0010

хххх

0010

хххх

хххх

хххх

хххх

хххх

хххх

Продолжить

0011

1010

0001

хххх

хххх

хххх

хххх

хххх

хххх

БП по адресу 10

1010

хххх

0111

хххх

хххх

хххх

хххх

хххх

хххх

Переход по стеку

Результат работы: В процессе работы программы осуществляется бесконечный цикл переходов по адресам 0000 -> 0001 -> 0010 -> 0011 -> 1010 -> 0010 -> 0011 -> …

6-Микропрограмма, демонстрирующая обращение к подпрограмме и возврат из нее.

Микропрограмма, являющаяся реализацией диаграммы переходов на рисунке ниже.

Программа          Подпрограмма

Адрес

памяти

Микрокоманда

Выполняемая функция

адрес перехода

инструкция перехода

приёмник

результата

источник

операндов

АЛУ

А

В

D

7

6

5

4

3

2

1

0

0000

хххх

0010

хххх

хххх

хххх

хххх

хххх

хххх

Продолжить

0001

1000

0101

хххх

хххх

хххх

хххх

хххх

хххх

Переход к подпрограмме

0010

хххх

0010

хххх

хххх

хххх

хххх

хххх

хххх

Продолжить

0011

0000

0001

хххх

хххх

хххх

хххх

хххх

хххх

БП к адресу 0000

1000

хххх

0010

хххх

хххх

хххх

хххх

хххх

хххх

Продолжить

1001

хххх

0010

хххх

хххх

хххх

хххх

хххх

хххх

Продолжить

1010

хххх

0110

хххх

хххх

хххх

хххх

хххх

хххх

Возврат из подпрограммы

Результат работы: происходит обращение к подпрограмме и возврат из нее в соответствии с рисунком

7-Микропрограмма, организации вложения подпрограмм.

Данная микропрограмма реализована с помощью аппаратного стека (на четыре 4-разрядных слова), поэтому возможно четыре вложения подпрограмм.

Адрес

памяти

Микрокоманда

Выполняемая функция

адрес перехода

инструкция перехода

приёмник

результата

источник

операндов

АЛУ

А

В

D

7

6

5

4

3

2

1

0

0000

хххх

0010

хххх

хххх

хххх

хххх

хххх

хххх

Продолжить

0001

0011

0101

хххх

хххх

хххх

хххх

хххх

хххх

Переход к подпрограмме 1

0010

0000

0001

хххх

хххх

хххх

хххх

хххх

хххх

БП к адресу 0000

0011

0110

0101

хххх

хххх

хххх

хххх

хххх

хххх

Переход к подпрограмме 2

0100

0111

0101

хххх

хххх

хххх

хххх

хххх

хххх

Переход к подпрограмме 3

0101

хххх

0110

хххх

хххх

хххх

хххх

хххх

хххх

Возврат из подпрограммы 1

0110

хххх

0110

хххх

хххх

хххх

хххх

хххх

хххх

Возврат из подпрограммы 2

0111

0110

0101

хххх

хххх

хххх

хххх

хххх

хххх

Переход к подпрограмме 2

1000

1010

0101

хххх

хххх

хххх

хххх

хххх

хххх

Переход к подпрограмме 4

1001

хххх

0110

хххх

хххх

хххх

хххх

хххх

хххх

Возврат из подпрограммы 3

1010

0110

0101

хххх

хххх

хххх

хххх

хххх

хххх

Переход к подпрограмме 2

1011

1101

0101

хххх

хххх

хххх

хххх

хххх

хххх

Переход к подпрограмме 5

1100

хххх

0110

хххх

хххх

хххх

хххх

хххх

хххх

Возврат из подпрограммы 4

1101

хххх

0010

хххх

хххх

хххх

хххх

хххх

хххх

Продолжить

1110

хххх

0110

хххх

хххх

хххх

хххх

хххх

хххх

Возврат из подпрограммы 5

Результат работы:

Последовательность адресов выполняемых микрокоманд:

0000 ® 0001 ® нач 1{0011 ® нач 2( 0110 )конец 2 ® 0100 ® нач 3[ 0111 ® нач 2( 0110 )конец 2 ® 1000 ® нач 4 ( 1010 ® нач 2( 0110 )конец 2 ® 1011 ® нач 5( 1101 ® 1110 ) конец 5 ® 1100 ) конец 4 ® 1001 ] конец 3 ® 0101 } конец 1 ® 0010 ® 0000 ® 0001 …

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

8-Микропрограмма, организации условных переходов.

Адрес

памяти

Микрокоманда

Выполняемая функция

адрес перехода

инструкция перехода

приёмник

результата

источник

операндов

АЛУ

А

В

D

7

6

5

4

3

2

1

0

0000

хххх

0010

х011

х011

1000

хххх

0000

хххх

R0+1, продолжить

0001

1111

1111

х001

хххх

хххх

хххх

хххх

хххх

УП по С4

0010

0000

0001

х001

хххх

хххх

хххх

хххх

хххх

БП к 0

1111

хххх

0010

х001

хххх

хххх

хххх

хххх

хххх

Продолжить

Результат работы: Происходит увеличение R0.Условный переход будет сделан после сложения текущего R0=1111 c единицей, то есть произойдёт переполнение. Условные переходы в микропроцессоре К1804 реализуются по содержимому регистра состояния. В данной микропрограмме реализован УП по значению флага переноса. Следует отметить, что результаты в регистр состояния записываются после выполнения операции в момент прихода тактового импульса, поэтому условный переход по этим результатам может быть сделан лишь в следующей команде.

6. Выполнение индивидуального задания

      Задание №1. Определение числа нулей в байте.

Адрес

памяти

Микрокоманда

Выполняемая функция

адрес перехода

инструкция перехода

приёмник

результата

источник

операндов

АЛУ

А

В

D

7

6

5

4

3

2

1

0

0000

хххх

0010

х011

x111

x011

хххх

0000

0010

Загрузка R0

0001

xxxx

0010

х000

x111

x011

хххх

хххх

0011

Загрузка Q

0010

xxxx

0010

х011

x111

x011

хххх

0001

1000

Загрузка счетчика 8 бит(R1)

0011

xxxx

0010

х011

x111

x011

хххх

0010

0000

Загрузка счетчика едениц(R2)

0100

xxxx

0010

x001

x011

x011

хххх

0000

хххх

Чтение R0

0101

1001

1101

x001

хххх

хххх

хххх

хххх

хххх

УП по F3

0110

xxxx

0010

x011

x011

0001

хххх

0001

хххх

R1=R1-1

0111

1010

1100

x001

хххх

хххх

хххх

хххх

хххх

УП по Z

1000

0100

0001

1110

1011

x011

хххх

0000

хххх

Арифм. сдвиг 8 разр. слова влево

1001

0110

0001

x011

x011

1000

хххх

0010

хххх

R2+1

1010

xxxx

0010

x011

x101

1010

0010

0010

1000

R2-1

1011

1011

0001

x001

x011

x011

хххх

0010

хххх

Чтение R2

6.1 Алгоритм программы.

В программе используется значение флага F3 для выявления единицы в старшем разряде. Когда F3=1 ведется подсчёт количества выходящих единиц из байта в счётчике R2. Просмотр старшего разряда будет идти пока счётчик R1(равен 8 в начале программы) не будет равен 0.

После чего R2 присваиваться значение 8-R2(т.е. количество нулей в байте).

Задание №2. Умножение младшими разрядами вперед со сдвигом суммы.

Адрес

памяти

Микрокоманда

Выполняемая функция

адрес перехода

инструкция перехода

приёмник

результата

источник

операндов

АЛУ

А

В

D

7

6

5

4

3

2

1

0

0000

xxxx

0010

x000

x111

x011

xxxx

xxxx

1100

Мн-ль—> Q

0001

xxxx

0010

x011

x111

x011

xxxx

0001

1011

Мн-e—> R1

0010

xxxx

0010

x011

x111

x011

xxxx

0010

0000

Сумма(0)—> R2

0011

xxxx

0010

x011

x111

x011

xxxx

0011

0100

CT(4)—> R3

0100

xxxx

0010

x001

x110

x100

xxxx

xxxx

0001

 Q И 1

0101

0111

1100

x001

xxxx

xxxx

xxxx

xxxx

xxxx

Z=1 ->7

0110

xxxx

0010

x011

x001

0000

0001

0010

xxxx

Сумма+Mн-e

0111

1001

1111

x001

xххх

xххх

хххх

хххх

хххх

УП по С4=1

1000

1010

0001

x000

x110

x100

хххх

хххх

1110

Q ^ 1110

1001

хххх

0010

x000

x110

x011

хххх

хххх

0001

Q v 0001

1010

xxxx

0010

1100

0011

x011

xxxx

0010

xxxx

 сдвиг

1011

xxxx

0010

x011

x011

0001

xxxx

0011

xxxx

 CT-1 —>CT

1100

0100

0000

x001

xxxx

xxxx

xxxx

xxxx

xxxx

УП по Z=0

1101

1110

0001

x001

x010

x011

xxxx

xxxx

xxxx

 Q -> Y

1110

1110

0001

x001

x011

x011

xxxx

0010

xxxx

R2 -> Y

6.2Алгоритм программы.

Принцип работы:

1.Сложить множимое с предыдущей частной суммой, если  очередной разряд множителя равен 1, и результат запомнить; в случае если очередной разряд множителя  равен  0  суммирование не выполнять;

2. Уменьшить вдвое частную сумму,  что  равносильно сдвигу ее на один разряд вправо.

Результат работы программы:

R1=0011, Q=0011 => R2,Q=00001001

R1=0010, Q=0011 => R2,Q=00000110

R1=1011, Q=1101 => R2,Q=10001111

Второй вариант:  Умножение младшими разрядами вперед со сдвигом множимого влево.

Адрес

памяти

Микрокоманда

Выполняемая функция

адрес перехода

инструкция перехода

приёмник

результата

источник

операндов

АЛУ

А

В

D

7

6

5

4

3

2

1

0

0000

xxxx

0010

x000

x111

x011

xxxx

xxxx

1100

Мн-ль—> Q

0001

xxxx

0010

x011

x111

x011

xxxx

0001

1011

Мн-e—> R1

0010

xxxx

0010

x011

x111

x011

xxxx

0010

0000

Sm(0)—> R2

0011

xxxx

0010

x011

x111

x011

xxxx

0011

0100

CT(4)—> R3

0100

xxxx

0010

x001

x110

x100

xxxx

xxxx

0001

 Q И 1

0101

0111

1100

x001

xxxx

xxxx

xxxx

xxxx

xxxx

Z=1 ->7

0110

xxxx

0010

x011

x001

0000

0001

0010

xxxx

Sm+Mn-e

0111

1001

1111

x001

xххх

xххх

хххх

хххх

хххх

if С4==1

1000

1010

0001

x000

x110

x100

хххх

хххх

1110

Q ^ 1110

1001

хххх

0010

x000

x110

x011

хххх

хххх

0001

Q v 0001

1010

xxxx

0010

1100

0011

x011

xxxx

0010

xxxx

 сдвиг

1011

xxxx

0010

x011

x011

0001

xxxx

0011

xxxx

 CT-1 —>CT

1100

0100

0000

x001

xxxx

xxxx

xxxx

xxxx

xxxx

Z=0 ->4

1101

1110

0001

x001

x010

x011

xxxx

xxxx

xxxx

 Q -> Y

1110

1110

0001

x001

x011

x011

xxxx

0010

xxxx

R2 -> Y

За основу реализации данного алгоритма был взят тот факт, что для подсчета количества несовпадающих разрядов в двух байтах достаточно найти число единичных разрядов в байте B1, получаемом при поразрядном сложении по mod2 двух байт. Затем по значению старшего разряда байта B1 (флаг F3 в регистре состояния) нужно инкрементировать счетчик числа единичных разрядов байта B1. Для проверки остальных разрядов нужно произвести 8-разрядный сдвиг байта B1 еще 7 раз.

После 8 проверок разрядов байта B1 следует вывод значения счетчика числа единичных разрядов на выходную шину.

В созданной микропрограмме используются:

§  4 РОН (1, 2, 3, 4) для ввода исходных данных

§  2 РОН (5, 6) для счетчиков

§  Временный регистр и один из РОН для 8-разрядного сдвига

Микропрограмма подсчета количества несовпадающих разрядов в двух байтах

Адрес

памяти

Микрокоманда

Выполняемая функция

АП

ИП

ПР

ИО

АЛУ

А

В

D

7

6

5

4

3

2

1

0

0000

хххх

0010

х011

х111

х011

хххх

0001

D1ст

Загрузка R1:=D1ст

0001

хххх

0010

х011

х111

х011

хххх

0010

D1мл

Загрузка R2:=D1мл

0010

хххх

0010

х011

х111

х011

хххх

0011

D2ст

Загрузка R3:=D2ст

0011

хххх

0010

х011

х111

х011

хххх

0100

D2мл

Загрузка R4:=D2мл

0100

хххх

0010

х011

х111

х011

хххх

0101

1000

Загрузка R5:=1000

0101

хххх

0010

х011

х111

х011

хххх

0110

1000

Загрузка R6:=1000

0110

хххх

0010

х011

х001

х111

0011

0001

хххх

R1 :=R1+R3

0111

хххх

0010

х000

х001

х111

0100

0010

хххх

Q :=R2+R4

1000

хххх

0010

х011

х011

х011

хххх

0001

хххх

R1 := R1

1001

1011

1101

х001

хххх

хххх

хххх

хххх

хххх

F3 = 1 ?

1010

хххх

0010

х011

х011

0001

хххх

0101

хххх

R5 := R5–1

1011

хххх

0010

1110

1011

х001

хххх

0001

хххх

←(R1, Q) на 1

1100

хххх

0010

х110

х011

0001

хххх

0110

хххх

R6 := R6-1

1101

1000

0000

х001

хххх

хххх

хххх

хххх

хххх

z = 0 ?

1110

1110

0001

х001

х011

х011

хххх

0101

хххх

ШДвых := R5

Результаты работы программы:

§  Пример 1.

D1 = 11010011           ответ: 4

D2 = 01010101           результат выполнения программы: 0100 ( 4 )

§  Пример 2.

D1 = 00000011           ответ: 0

D2 = 00000011           результат выполнения программы: 0000 ( 0 )

2- Найти максимальную последовательность единиц в байте

Адреса памяти

МИКРОКОМАНДА

Выполняемая функция

Адрес перехода

Тип перехода

Приемник результата

Источник операнда

Функция АЛУ

А

В

D

7

6

5

4

3

2

1

0

0000

xxxx

0010

x011

x111

x011

xxxx

0010

0000

Загрузка R2

0001

xxxx

0010

x011

x111

x011

xxxx

0011

0000

Загрузка R3

0010

xxxx

0010

x011

x111

x011

xxxx

0100

1001

Загрузка R4

0011

xxxx

0010

x000

x111

x011

xxxx

xxxx

D2

ЗагрузкаQ(мл.р)

0100

xxxx

0010

x011

x111

x011

xxxx

0000

D1

ЗагрузкаR0(cт.р)

0101

1101

1101

x001

x001

xxxx

xxxx

xxxx

xxxx

УП по F3 у R0

0110

xxxx

0010

x001

x001

1001

0010

0011

xxxx

R3-R2

0111

1110

1101

x001

x001

xxxx

xxxx

xxxx

xxxx

УП по F3 у (R3-R2)

1000

xxxx

0010

x011

x111

x011

xxxx

0010

0000

R2:=0

1001

xxxx

0010

1110

1011

x011

xxxx

0000

xxxx

Сдвиг байта влево

1010

xxxx

0010

x011

x011

0001

xxxx

0100

xxxx

R4:=R4-1

1011

1111

1100

x001

x001

xxxx

xxxx

xxxx

xxxx

УП по z=1 у R4

1100

0101

0001

x001

x011

x011

xxxx

0000

xxxx

Чтение R0 + БП

1101

1001

0001

x011

x011

1000

xxxx

0010

xxxx

R2:=R2+1

1110

1000

0001

x011

x100

x011

0010

0011

xxxx

R3:=R2

1111

1111

0001

x001

x011

x011

xxxx

0011

xxxx

Чтение R3 (конец)

В программе осуществляется проверка знака байта в начале тела цикла и выход из цикла по результату проверки значения счетчика на 0.

В программе подсчитывается количество единиц в любой найденной последовательности. Далее это значение сравнивается с текущим максимумом. Если оно больше, то максимум переопределяется значением счетчика количества 1 в текущей    последовательности.

Байт

R3

1111 1011

0101 (5)

0000 0000

0000 (0)

1111 1111

1000 (8)

1001 1100

0011 (3)

Выводы

В результате выполнения лабораторной работы был изучен микропроцессор К1804В, его список микрокоманд и методики его программирования; выполнен набор тестовых микропрограмм, разработаны и реализованы микропрограммы по индивидуальному заданию.

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

Микротренажер, на котором выполнялось программирование микропроцессора

Похожие материалы

Информация о работе