III. Третья часть курсового проекта

Этап 1. Идея.

Задача: спроектировать микропрограммный автомат на перепрограммируемом постоянном запоминающем устройстве ППЗУ, который должен формировать микропрограмму, выполняющую заданную операцию на РАЛУ центрального процессора.

Код операции АЛУ выбирается по пяти последним цифрам PIN-кода:

100 10001

 

Любой алгоритм можно реализовать тремя способами:

  1. если задача простая, то нужно построить таблицу истинности, составить систему логических уравнений и реализовать её в жесткой логике
  2. для более сложных задач мы можем записать таблицу истинности прямо в память устройства — это микропрограммная реализация алгоритма на памяти
  3. мы можем взять готовую вычислительную машину и реализовать алгоритм программированием

Для этой части курсового проекта выберем второй способ.

Таблица операций АЛУ.

К семидесятым годам прошлого века установился типовой набор операций АЛУ, позволяющий строить команды центрального процессора для любых практических задач, которые существуют.

Всего в АЛУ входит 16 арифметических (не блокируются цепи переноса из младших разрядов в старшие) и 16 логических операций (блокируются цепи переноса из младших разрядов в старшие).

Разряды операндов обрабатываются побитно.

MO — арифметическая или логическая операция (модификатор).

SE0 — выбор операций.

 

PIN = 1 0 0 1 0 0 0 1

 

27 26 25 24 23 22 21 20

 

MO SE3 SE2 SE1 SE0

Таблица операций АЛУ

Выбор операции

Логические операции
y5=МО=1

Арифметические операции y5=МО=0

y4 SE3 y3 SE2 y2 SE1 y1 SE0 Без переноса С0=0 С переносом С0=1
0 0 0 0 S = A S = A S = A + 1
0 0 0 1 S = AVB S = AVB S = AVB + 1
0 0 1 0 S = AɅB S = AVB S = AVB + 1
0 0 1 1 S = 0 S = -1 S = 0
0 1 0 0 S = AɅB S = A + AɅB S = A + AɅB + 1
0 1 0 1 S = B S = AVB + AVB S = AVB + AVB + 1
0 1 1 0 S = A⊕B S = A - B - 1 S = A - B
0 1 1 1 S = AɅB S = AɅB - 1 S = AɅB
1 0 0 0 S = AVB S = A + AɅB S = A + AɅB + 1
1 0 0 1 S = A⊕B S = A + B S = A + B + 1
1 0 1 0 S = B S = AɅB + AɅB S = AɅB + AɅB + 1
1 0 1 1 S = AɅB S = AɅB - 1 S = AɅB
1 1 0 0 S = 1 S = A + A* S = A + A* + 1
1 1 0 1 S = AVB S = AVB + A S = AVB + A + 1
1 1 1 0 S = AVB S = AVB + A S = AVB + A + 1
1 1 1 1 S = A S = A - 1 S = A

 

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

 

С помощью этого типового набора операций АЛУ строятся команды процессора с усеченной системой команд (RISC-архитектура).

 

Общая схема регистрового АЛУ:

Управляющие сигналы уi составляют одну микрокоманду, существуют в течение одного такта и служат для установки узлов РАЛУ на выполнение соответствующих микроопераций.

У любого регистра есть следующие операции: запись, хранение, чтение. Для регистра сдвига добавляются еще две — сдвиг влево, сдвиг вправо.

Мультиплексоры — это устройства, которые переключают цепь с нескольких устройств на одно.

 

М1 — мультиплексор цепи переноса АЛУ.

Ко входу младшего разряда переноса АЛУ при у6=0 подключается внешний перенос (в случае построения многоразрядных сумматоров), при у6=1 подключается собственный перенос. Еще этот мультиплексор может вызвать прерывание V (переполнение).

 

М2 — мультиплексор цепи сдвига регистра сдвига РС.

Ко входу триггера сдвига Т2 при у14=1 подключается выход младшего разряда РС, при у14=0 подключается выход старшего разряда.

 

М3 — мультиплексор цепи сдвига.

Ко входам старшего и младшего разрядов РС подключается один из следующих сигналов:

у15 у16  
0 0 Выход М2
0 1 Выход Т1
1 0 Логическая «1»
1 1 Логический «0»

Первая комбинация соответствует организации циклического сдвига, когда при сдвиге вправо значение младшего разряда записывается в старший, а при сдвиге влево — значение младшего в старший. Вторая, третья и четвертая комбинации отличаются тем, что освобождающийся разряд записывается соответственно либо содержимое триггера Т2 (разряд, вытесненный при сдвиге в предыдущих тактах), либо логическая единица, либо логический ноль.

 

Остальные управляющие сигналы:

у1 — у5 определяют тип операции в АЛУ в соответствии с таблицей

у7 = 1 прием информации на РР с выхода АЛУ

у10 = 1 прием информации на БР

у11 = 0 в БР записывается информация с внешнего входа

у11 = 1 в БР записывается информация с микрошины В

у12 у13

 

обеспечивают режим работы РС
0 0 приём информации с микрошины В
0 1 правый сдвиг
1 0 левый сдвиг
1 1 хранение информации

у17 = 1 запись информации в РОН

у17 = 0 хранение и чтение из указанного адреса РОН

у8 и у9 управляют формированием сигналов N (флаг знака), V (флаг переполнения), Z (флаг нулевого модуля)

 

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

Этап 2. Техническое задание.

     
 

 

 

Нужно определить множества значений на входе и на входе, а также множество состояний, в которых может находиться наше устройство.

На входе мы получаем значения {MO, SE3, SE2, SE1, SE0}.

На выходе мы должны получить значение управляющих сигналов {уi}.

 

Для простоты будем полагать, что операнды находятся в РОНах, и результат запишем туда же.

 

Множество состояний определим с помощью таблицы потактового выполнения операции.

Наша операция, определенная по PIN-коду (10001) — S=AVB.

A: A1

B: A2

S: A3

 

0. Ожидание.

1. Первый такт. Пересылка.
Пересылка операнда А из РОН А1 в БР
у17=0 (чтение), у10=1 (приём), у11=1 (с шины В)

2. Второй такт. Пересылка.
Адресуем А2, открываем его и записываем в РС.
Пересылка операнда В из РОН А2 в РС.
у17=0, у12=0, у13=0

3. Третий такт. Выполнение.
Выполнение операции в АЛУ, запись результата в РР.
КОП → АЛУ, у7=1 (приём на РР результата), формирование NZV-флагов → РССП

4. Четвертый такт. Пересылка.
Пересылка результата операции на АЛУ по адресу А3.
у17=0 (запись в РОН)

5. Пятый такт. Увеличение счетчика.
Формируется +1 в САК (счетчике адресов команд).
Сброс МПА в исходное состояние. Переход в состояние ожидания.

Всего у нас шесть состояний микропрограммного автомата.

Этап 3. Кодирование элементов.

{X} → {MO, SE3, SE2, SE1, SE0} → {10001}

{A} →

Такт 0 000
Такт 1 001
Такт 2 010
Такт 3 011
Такт 4 100
Такт 5 101

 

Закодируем адреса регистров РОН:
А1 = 0010 (№2), А2 = 0001 (№1), А3 = 1001 (№9).

Блок-схема алгоритма выполнения операции в РАЛУ:

 


Этап 4. Составление таблицы переходов и выходов.

такт

КОП

сигналы управления

адрес регистра

такт
Q2 Q1 Q0 y1 y2 y3 y4 y5 y6 y7 y8 y9 y10 y11 y12 y13 y14 y15 y16 y17 Q3 Q2 Q1 Q0
0 0 0 - - - - - - 0 - - 0 1 1 1 - - - 0 0 0 0 0 0
0 0 1 1 0 0 0 1 - 0 - - 1 1 1 1 - - - 0 0 0 1 0 1
0 0 0 1 0 0 0 1 - 0 - - 0 1 0 0 - - - 0 0 0 0 1 2
0 1 1 1 0 0 0 1 - 1 - - 0 1 1 1 - - - 0 0 0 0 0 3
1 1 0 1 0 0 0 1 - 0 - - 0 1 1 1 - - - 1 1 0 0 1 4
1 0 1 1 0 0 0 1 - 0 - - 0 1 1 1 - - - 0 0 0 0 0 5

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

Полученная таблица является ТИ для функций у6 — у17.

Управление мультиплексорами в рассмотрение не берем, а константу у11 опустим (её легко можно заменить постоянной подачей ВУ).

Таким образом, наши функции — это у7, у10, у12, у13, у17.

Очевидно, что логические уравнения для этих функций получаются не слишком простыми. Поэтому мы реализуем МПА на перепрограммируемом постоянном запоминающем устройстве (ППЗУ/PROM).

 

МПА состоит из ППЗУ (PROM) с L+M адресными битовыми входами, (N+L)-разрядного регистра и тактового генератора Г.

Часть входных разрядов ППЗУ (N—M) используется для формирования выходных сигналов, а остальные m разрядов участвуют совместно с L входными сигналами в формировании адреса ППЗУ в следующем такте тактового генератора.

В МПА необходимо применять только те регистры, которые имеют динамический способ приема информации. В противном случае (в случае использования регистра с потенциальным способом приема информации, при переходе регистра в режим пропускания информации на выход (при установке СИ=1) замкнется обратная связь по адресу и возникнет неконтролируемая автогенерация.

При этом tприёма информации < tзадержки ППЗУ + tзадержки регистров

Максимальная тактовая частота

Tmin = tзадержки ППЗУ + tзадержки регистров

Fmin = 1/Tmin

В нашем ППЗУ будет находиться его прошивка, а программа полностью связана с линейностью памяти. Можно прямо в микропрограмме явным образом указать, где находится следующая команда. Это позволяет отказаться от использования счетчика адресов команд.

 

Возможные режимы работы МПА:

  1. Последовательный перебор адресов ППЗУ.
    (аналог счетчика САК в ЦП)
  2. Останов в заданном адресе ППЗУ с произвольным количеством тактов ожидания изменения входного сигнала.
  3. Переход на другой адрес при изменении входного сигнала (одного или нескольких)
  4. Циклическое прохождение, т.е. перебор одних и тех же адресов ППЗУ.
  5. Отключение реакции на входные сигналы в течение какого-либо числа тактов.

 

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

 

Мы будем проектировать МПА, работающий в соответствии со следующей временной диаграммой.


При подаче на вход ВУ, МПА должен вырабатывать три выходных сигнала, вложенных один в другой. Во время формирования выходной последовательности МПА не должен реагировать на входной сигнал, а после её окончания должен ожидать следующего ВУ на входе.

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

Тактовая частота — 1 МГц при Q=T/tипм=2 (меандр).

 

Составим кодированную таблицу переходов и выходов:

t

t+1

выход1 выход2 выход3 выход1 выход2 выход3
1 1 1 0 1 1
0 1 1 0 0 1
0 0 1 0 0 0
0 0 0 0 0 1
0 0 1 0 1 1
0 1 1 1 1 1

 

Составим прошивку ППЗУ:

Необходимо реализовать следующие режимы работы:

  1. Последовательный перебор адресов при формировании отработки выходной последовательности.
  2. Останов с ожиданием изменения входного сигнала.
  3. Отключение реакции на входной сигнал путем дублирования последовательного перебора в зоне адресов, соответствующих изменению входного сигнала.

 

Адрес ППЗУ

Данные ППЗУ

Режим работы

Ячейка

Вход

Адрес
(смещение)

Выходы

Смещение
(сл. выходы)

1 2 3
0 0 0 0 1 1 1 0 0 0 Ожидание входного сигнала 0
1 0 0 0 0 1 1 0 0 1

Отработка входной последовательности
при условии, что входной сигнал = «1»

8
1 0 0 1 0 0 1 0 1 0 9
1 0 1 0 0 0 0 0 1 1 10
1 0 1 1 0 0 1 1 0 0 11
1 1 0 0 0 1 1 1 0 1 12
1 1 0 1 1 1 1 1 0 1 Ожидание снятия входного сигнала 13
0 0 0 1 0 0 1 0 1 0

Отработка входной последовательности
при снятии входного сигнала

1
0 0 1 0 0 0 0 0 1 1 2
0 0 1 1 0 0 1 1 0 0 3
0 1 0 0 0 1 1 1 0 1 4
0 1 0 1 1 1 1 0 0 0 Переход на ожидание входного сигнала 5

 

Функциональная схема.

Согласно временной диаграмме, выходная последовательность состоит из 6 тактов, включая единичные уровни. Поэтому требуется 3 отдельных входа ППЗУ, что дает 8 различных адресов. Кроме этого есть один входной сигнал. Следовательно, количество адресных разрядов ППЗУ — четыре, что дает 16 ячеек, а количество разрядов в каждой ячейке должно быть равно 6.

 

3 разряда — формирование выхода.
3 разряда — формирование следующего адреса.

 

Количество разрядов в регистре равно 6 + 1 входной сигнал — итого 7.

На схеме Г — тактовый генератор.

Принципиальная схема.

 

Замечание: крестом обозначены выходы с открытым (оторванным) коллектором. К ним должны быть присоединены резисторы R1 — R6.

 

Схема дешифратора ДШ:

 


Схема генератора Г:

 


Теперь осталось только записать прошивку в ППЗУ. Так мы реализуем ТИ для данного автомата.

Для прошивки используем 12 ячеек памяти (6 основных + 6 дублированных на тот случай, если вход уберут раньше, чем закончить работать программа) с адресами вида 0хххх (нижний банк памяти) от 0 до 16.