Проектирование микропрограммного автомата
Особенности преобразования алфавитного отображения информации к автоматному, минимизация числа внутренних состояний и их кодировка. Синтез автомата на элементах задержки и триггерах. Построение функциональной схемы и графа микропрограммного автомата.
Рубрика | Коммуникации, связь, цифровые приборы и радиоэлектроника |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 07.07.2012 |
Размер файла | 1,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
6
Размещено на http://www.allbest.ru/
Содержание
Расчет задания
Часть 1.
1. Преобразование алфавитного отображения к автоматному
2. Построение таблицы переходов по отображениям
3. Минимизация числа внутренних состояний
4. Кодирование внутренних состояний
5. Кодирование входных и выходных букв
6. Синтез автомата на элементах задержки
7. Синтез автомата на триггерах
8. Определение функций выходов
9. Обоснование выбора элементов памяти
10. Введение синхронизации и установки автомата в начальное состояние
11. Построение функциональной схемы автомата
12. Построение временных диаграмм работы автомата
Часть 2.
1. Описание команды
2. Построение содержательной ГСА
3. Построение кодированной ГСА и ее разметка
4. Построение графа микропрограммного автомата
5. Кодирование внутренних состояний
6. Построение матрицы прошивки ПЛМ
7. Определение функций возбуждения и функций выходов
8. Синтез на ПЛМ
Расчет задания
Определяем тип автомата (остаток по модулю 2):
903 : 2 = 451, остаток 1 - автомат Мура
Определим отображение информации, осуществляемое автоматом (остаток по модулю 13 и 23):
903 : 13 = 69, остаток 6 - входные буквы
903 : 23 = 39, остаток 6 - выходные буквы
a3 > b3
a2 a3 а> b1b2 b3
a1 a1 a2> b1 b1 b2
a2 a1 > b b2
a1 a2 a1 > b b3b2
a3 a2 a1 > b2 b2 b2
Определим тип логических элементов (остаток по модулю 5):
903 : 5 = 900, остаток 3 - базис {&, V, -}
Определим типы триггеров (остаток по модулю 17):
903 : 17 = 901, остаток 2 - триггеры D, S, T типов
Часть 1
1. Преобразование алфавитного отображения к автоматному
микропрограммный автомат триггер информация
Преобразуем алфавитное отображение информации к автоматному. Для этого применим нестандартную процедуру выравнивания.
Будем выравнивать каждое отображение вводом минимально необходимого количества пустых букв:
1.a3 a> bb3
2.a2 a3 аa>b b1b2 b3
3.a1 a1 a2 a > bb1 b1 b2
4.a2 a1 a> bb b2
5.a1 a2 a1 a> bb b3b2
6.a3 a2 a1 a> bb2 b2 b2
2. Построение таблицы переходов по отображениям
Входной алфавит автомата А = {a1, a2, a3, a}
Выходной алфавит В = {b1, b2, b3, b}
Первоначально автомат находится в состоянии С0. Пусть на вход автомата подается буква a3. Автомат перейдет в новое состояние (С1), выдавая на выходе b. Следующей подается буква а2 (слово 6). Под действием этой буквы автомат перейдет в состояние С2 и выдаст b2. С приходом последней буквы (a) автомат вернется в состояние С2 и на выходе выдаст b2. К этому слову будем пристраивать другие слова.
Окончательная таблица переходов:
Таблица 2.1
а1 |
а2 |
а3 |
a |
|||
С0 |
С3 |
C1 |
C1 |
|||
С1 |
C5 |
C2 |
C7 |
C4 |
B |
|
С2 |
C2 |
C2 |
b2 |
|||
С3 |
C6 |
B |
||||
С4 |
C2 |
b3 |
||||
С5 |
C4 |
C2 |
B |
|||
С6 |
C2 |
b1 |
||||
С7 |
C8 |
b1 |
||||
С8 |
C4 |
b2 |
Таблица 2.1 - таблица переходов автомата Мура, реализующего заданные отображения. По этой таблице построим граф (рис. 1).
Автомат получился частичным, так как заполнены не все клетки таблицы, и детерминированным, так как из каждой вершины исходит не больше дуг, чем входных букв в алфавите автомата.
Рис.1
Для проверки правильности построения графа автомата воспользуемся лентами отображения. Для этого будем подавать на автомат входные слова. Под действием каждой буквы автомат будет переходить в новое состояние и выдавать какую-то букву. Это состояние и букву запишем под проверяемой буквой. В результате под каждым входным словом получим выходное слово.
a3 |
a |
a2 |
a3 |
a |
a |
a1 |
a1 |
a2 |
a |
a2 |
a1 |
a |
a1 |
a2 |
a1 |
a |
a3 |
a2 |
a1 |
a |
||
C0 |
C1 |
C4 |
C1 |
C7 |
C8 |
C4 |
C3 |
C6 |
C6 |
C2 |
C1 |
C5 |
C2 |
C3 |
C5 |
C4 |
C2 |
C1 |
C2 |
C2 |
C2 |
|
b |
b3 |
b |
b1 |
b2 |
b3 |
b |
b1 |
b1 |
b2 |
b |
b |
b2 |
b |
b |
b3 |
b2 |
b |
b2 |
b2 |
b2 |
Как видно из лент отображения автомат функционирует правильно.
3. Минимизация числа внутренних состояний
Проведем начальное разбиение на группы состояний по одинаковым или не противоречащим выходным сигналам.
Запишем все полученные группы и рассмотрим переходы из этих групп под действием входных букв.
С1С3 C5 |
С6С7 |
С2С8 |
С4 |
||
а1 |
5 6 4 |
- - |
С2 - |
- |
Под действием а1 ни одна из групп не расщепилась. Рассмотрим переходы под действием букв а2 и а3.
С6С7 |
С2С8 |
||
а2 |
6 - |
- - |
|
а3 |
- - |
- - |
Под действием этих букв группы тоже не расщепляются. Подадим букву a.
С6С7 |
С2С8 |
||
a |
2 8 |
2 4 |
Под действием буквы a происходит расщепление групп. Рассмотрим группу С6С7. Под действием a происходит переход в С6 и С7. Состояния С6 и С7 принадлежат разным группам, поэтому группа С6С7 разбивается на две - С6 и С7.
Таким образом, после минимизации автомата сохранилось то же количество внутренних состояний, что и до минимизации. Автомат не минимизировался, и у него остались те же состояния - С0, С1, С2, С3, С4, С5, С6, С7, С8.
а1 |
а2 |
а3 |
a |
|||
С0 |
W3 |
W1 |
W1 |
|||
С1 |
W5 |
W2 |
W7 |
W4 |
B |
|
С2 |
W2 |
W2 |
b2 |
|||
С3 |
W6 |
B |
||||
С4 |
W2 |
b3 |
||||
С5 |
W4 |
W2 |
B |
|||
С6 |
W2 |
b1 |
||||
С7 |
W8 |
b1 |
||||
С8 |
W4 |
b2 |
4. Кодирование внутренних состояний
Воспользуемся способом кодирования состояний по минимуму Хемингова расстояния.
Построим матрицу пар переходов, имеющих место в кодируемом автомате (таблица 4.1).
Далее вместо W будем обозначать C для удобства.
Таблица 4.1
С0С3 |
||
М = |
С0С1 |
|
С1С5 |
||
С1С2 |
||
С1С7 |
||
С1С4 |
||
С3С6 |
||
С3С5 |
||
С4С2 |
||
С5С4 |
||
С5С2 |
||
С6С2 |
||
С7С8 |
||
С8С4 |
Таблица 4.2
Таблица 4.3
М1 = |
С0С1 |
|
С1С5 |
||
С1С2 |
||
С1С7 |
||
С1С4 |
Таблица 4.4
М5 = |
С1С5 |
|
С3С5 |
||
С5С4 |
||
С5С2 |
Матрица составлена таким образом, что хотя бы один индекс состояния в каждой строке встречался в какой-нибудь строке, расположенной выше.
Автомат имеет 8 внутренних состояний, поэтому необходимы 4 элемента памяти и код состояний будет иметь 4 разряда.
Закодируем С0 как 0000, а С3. как 0001. Нанесем эти значения на карту Вейтча (таб. 4.2).
Во второй строке не закодировано состояние С1. Построим подматрицу М2 (таблица 4.3). В ней ранее закодировано только состояние С0, код которой 0000. Тогда множество уже закодированных состояний Е = {С0}. Найдем по карте Вейтча соседние незанятые клетки для этих состояний. Коды этих клеток запишем в множества F0.
F0 = {0100, 1000, 0010}
Из этих множеств составим множество G.
G = {0100, 1000, 0010}
Найдем кодовые расстояния между каждым элементом G и элементом 0000.
D0100 = 2d(0100, 0000) = 2
D1000 = 2d(1000, 0000) = 2
D0010 = 2d(0010, 0000) = 2
Все кодовые расстояния равны, поэтому С1 можно закодировать любым из представленных шести кодов. Пусть код С2 равен 0100. Нанесем это значение на карту Вейтча.
Выберем следующую строку из матрицы М. В этой строке не закодировано состояние С5. Составим подматрицу М5 (таблица 4.4). В ней ранее закодированы состояния С1 и С3, т.е. Е = {C0, C1}, их коды 0000 и 0001 соответственно.
F1 = {1100, 0101, 0110}
F3 = {0101, 0011, 1001}
G = {1100, 0101, 0110, 0011, 1001}
Таблица 4.5
М2 = |
С1С2 |
|
С4С2 |
||
С5С2 |
||
С6С2 |
Таблица 4.6
М7 = |
С1С7 |
|
С7С8 |
||
Таблица 4.7
М4 = |
С1С4 |
|
С4С2 |
||
С5С4 |
||
С8С4 |
Таблица 4.8
М8 = |
С4С8 |
|
С8С3 |
||
С8С1 |
Таблица 4.9
М6 = |
С3С6 |
|
С6С2 |
М8 = |
С8С4 |
|
Найдем кодовые расстояния между множеством G и кодами С0, С1.
D1100 = 2d(1100, 0000) + d(1100, 0001) = 7
D0101 = 2d(0101, 0000) + d(0101, 0001) = 5
D0110 = 2d(0110, 0000) + d(0110, 0001) = 7
D0011 = 2d(0011, 0000) + d(0011, 0001) = 5
D1001 = 2d(1001, 0000) + d(1001, 0001) = 5
Минимальные кодовые расстояния соответствуют кодам 0110, 1001 и 0010. Состояние С5 можно закодировать любым из этих кодов. Выберем, например, код 0011 и нанесем С5 на карту Вейтча.
Возьмем следующую строку матрицы М, в которой есть незакодированные состояния. Составим подматрицу М2 (таблица 4.5). В ней ранее закодированы состояния С1 и С5. Поэтому Е = {С1,С5}.
F1 = {1100, 0101,0110}
F5 = {0010, 1011,0111}
G = {1100, 0101, 0110, 0010, 1011, 0111}
Найдем кодовые расстояния.
D1100 = 2d(1100, 0000)+d(1100,0011) = 8
D0101 = 2d(0101, 0000)+d(0101,0011) = 6
D0110 = 2d(0110, 0000)+d(0110,0011) = 6
D0010 = 2d(0010, 0000)+d(0000,0011) = 3
D1100 = 2d(1011, 0000)+d(1011,0011) = 7
D1100 = 2d(0111, 0000)+d(0111,0011) = 7
C2 можно закодировать как 0010. Нанесем С2 (0010) на карту Вейтча.
Возьмем следующую строку матрицы М с незакодированным состоянием. Выпишем подматрицу М7 (таблица 4.6). В ней ранее закодировано С0(0000).
F1 = {1100,0110, 0101}
G = {1100, 0110, 0101}
Найдем кодовые расстояния.
D1100 = 2d(1100, 0000) = 4
D0110 = 2d(0110, 0000) = 4
D0101 = 2d(0101, 0000) = 4
С7 можно закодировать как 1100, 0101 или 0110. Выберем код 1100 и нанесем это состояние на карту Вейтча.
Из матрицы М возьмем следующую строчку. В ней не закодировано состояние С4. Составим и напишем подматрицу М4 (таблица 4.7). В ней ранее закодировано 3 состояния С2 (0010), С5 (0011), С1 (0000). Выпишем множества Fi.
G = {0101, 0110, 1010, 0111, 1011}
Рассчитаем кодовые расстояния:
D0101 = d(0101, 0000) + d(0101, 0010) + d(0101, 0011) = 7
D0110 = d(0110, 0000) + d(0110, 0010) + d(0110, 0011) = 5
D1010 = d(1010, 0000) + d(1010, 0010) + d(1010, 0011) = 5
D0111 = d(0111, 0000) + d(0111, 0010) + d(0111, 0011) = 6
D1011 = d(1011, 0000) + d(1011, 0010) + d(1011, 0011) = 6
Минимальное кодовое расстояние соответствует кодам 0110 и 1010. С4 закодируем как 1001. Нанесем это значение на карту Вейтча.
Возьмем следующую строка матрицы М. В этой строке не закодировано состояние С6. Поэтому составим подматрицу М6 (таблица 4.8). В ней ранее закодированы состояния С2 (0010), С3 (0001). Запишем множества F и их объединенное множество G:
F2 = {0110}
F3 = {0101, 1001}
G = {0101, 1001, 1100, 0110}
Найдем кодовые расстояния:
D0101 = 2d(0101, 0001) + d(0101, 0010) = 5
D1001 = 2d(1001, 0001) + d(1001, 0001) = 5
D0110 = 2d(0110, 0001) + d(0110, 0010) = 7
C6 можно закодировать как 0101 или 1001. Закодируем С6 кодом 1001.
В матрице М осталось одно не закодированное состояние - С8. Матрица М8 выглядит следующим образом (таблица 4.9). В ней закодировано состояние С4 (1010). Запишем множества F и G.
F4 = {1000, 1011, 1110}
G = {1000, 1011, 1110}
Найдем кодовые расстояния:
D1000 = 2d(1000, 1010) = 2
D1011 = 2d(1011, 1010) = 2
D1110 = 2d(1110, 1010) = 2
Закодируем С8 как 1110.
Кодирование состояний закончено. В результате состояния закодировали следующими кодами:
Z1 |
Z2 |
Z3 |
Z4 |
||
С0 |
0 |
0 |
0 |
0 |
|
С1 |
0 |
1 |
0 |
0 |
|
С2 |
0 |
0 |
1 |
0 |
|
С3 |
0 |
0 |
0 |
1 |
|
С4 |
1 |
0 |
1 |
0 |
|
С5 |
0 |
0 |
1 |
1 |
|
С6 |
1 |
0 |
0 |
1 |
|
С7 |
1 |
1 |
0 |
0 |
|
С8 |
1 |
1 |
1 |
0 |
5. Кодирование входных и выходных букв
Так как входные и выходные буквы можно закодировать произвольной комбинацией, то закодируем их следующим образом:
х1 |
х2 |
||
а1 |
0 |
0 |
|
а2 |
0 |
1 |
|
а3 |
1 |
0 |
|
a |
1 |
1 |
у1 |
у2 |
||
b1 |
0 |
0 |
|
b2 |
0 |
1 |
|
b3 |
1 |
0 |
|
b |
1 |
1 |
Синтез автомата на элементах задержки
Автомат имеет два физических входа х1 и х2, и два физических выхода у1 и у2, четыре элемента памяти. Тогда левая часть кодированной таблицы (таблица 6.1) будет иметь 2 + 4 = 6 столбцов, и правая также будет иметь 2 + 4 = 6 столбцов. Число строк равняется 18.
Возьмем первую клетку таблицы 2.1 с координатами <а1, С0>. По таблице кодирования находим а1 - 00, С0 - 0000. Значит, в первую строку кодированной таблицы запишем
х1 х2 z1 z2 z3 z4
0 0 0 0 0 0
В клетке <а1, С0> таблицы 2.1 записан переход в С3 с выдачей b. С3 закодировано как 0001, а b как 11, поэтому в правой части таблицы 6.1 в первой строке записываем
z1 z2 z3 z4 y1 y2
0 0 0 1 1 1
По такому же правилу заполняем остальные строчки таблицы. В результате получим:
Таблица 6.1
х1 |
х2 |
z1 |
z2 |
z3 |
z4 |
z1 |
z2 |
z3 |
z4 |
у1 |
y2 |
|
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
|
0 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
|
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
|
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
|
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
|
1 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
|
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
|
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
|
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
|
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
|
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
|
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
|
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
|
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
|
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
|
1 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
0 |
0 |
1 |
|
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
1 |
|
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
Заполним по этой таблице карты Вейтча. Число карт для автомата Мили определяется числом столбцов в правой части таблицы 6.1, а число переменных - числом столбцов в левой части таблицы. Тогда будем иметь 6 карт на 6 переменных.
Заполнение карт трудности не представляет. Левую часть таблицы будем рассматривать как координаты клетки, а правую - как значение, подставляемое в соответствующую карту, в указанную клетку. Так, например, для первой строки - координата клетки 000000, в карту для z1 подставим 0, для z2 - 0, для z3 - 0, для z4 - 1, для у1 - 1, для у2 - 1. Остальные клетки заполняем точно также.
По картам Вейтча проводим совместную минимизацию функций zi; yj. Получаем систему уравнений автомата.
Функции переходов автомата
Функции выходов автомата
7. Синтез автомата на триггерах
Возьмем сначала первый тип триггера из предложенных в задании - D-триггер. Ниже приведены его матрица переходов и матрица входов.
D |
Q |
Q(t+1) |
|
0 |
0 |
0 |
|
0 |
1 |
0 |
|
1 |
0 |
1 |
|
1 |
1 |
1 |
Q(t) |
Q(t+1) |
D |
|
0 |
0 |
0 |
|
0 |
1 |
0 |
|
1 |
0 |
1 |
|
1 |
1 |
1 |
По таблице 6заполним карты Вейтча для D-триггераНа этих картах внутренние состояния обозначаются не как Z, а как Q, так как выходы триггеров обычно обозначают Q и Q. В остальном карты для Q полностью соответствуют картам для Z. Карты для выходов у совпадают полностью.
Если клетка лежит на половине Qi, то для всей этой половины предыдущее состояние Qi(t) = 0, если клетка лежит на половине Qi, то предыдущее состояние Qi(t) = 1. В самой клетке записано последующее состояние, то есть, если в клетке 0, то Qi(t+1) = 0, если 1 - Qi(t+1) = 1. По матрице входов триггера определяем Ri и Si и записываем в соответствующие таблицы.
Склеивая на картах Вейтча, получаем следующие функции:
Следующий тип триггера - T. Ниже приведены таблица переходов и матрица входов этого триггера.
Получаем следующие функции:
Следующий тип триггера - S. Ниже приведены таблица переходов и матрица входов этого триггера.
R |
S |
Q |
|
0 |
0 |
Q |
|
0 |
1 |
1 |
|
1 |
0 |
0 |
|
1 |
1 |
1 |
Q(t) |
Q(t+1) |
R |
S |
|
0 |
0 |
- |
0 |
|
0 |
1 |
- |
1 |
|
1 |
0 |
1 |
0 |
|
1 |
1 |
b0 |
B1 |
Заполним карты Вейтча для S-триггера.
Получаем следующие функции для S-триггера:
8. Определение функций выходов
Функции выходов будут такими же как и при синтезе автомата на элементах задержки, т.е.
9. Обоснование выбора элементов памяти
Для того, чтобы выбрать на каком типе триггера необходимо построить автомат, подсчитаем цену по Квайну функций возбуждения каждого типа триггера. Цену по Квайну рассчитаем путем суммирования всех дезъюнкторов, конъюнкторов и инверторов.
Для D-триггера С = 29
Для T-триггера С = 56
Для S-триггера С = 63
Автомат можно реализовать на D-триггерах. Итак, реализуем автомат на D-триггерах.
10. Введение синхронизации и установки автомата в начальное состояние
Чтобы ввести синхронизацию искусственно, нужно во все функции возбуждения конъюктивно ввести сигнал синхронизации Си.
Сигнал <Уст> подается на функции возбуждения дезъюнктивно. Начальное состояние С0 закодировано как 0000, поэтому все 4 триггера нужно установить в 0.
R |
S |
Q |
|
0 |
0 |
Q |
|
0 |
1 |
1 |
|
1 |
0 |
0 |
|
1 |
1 |
1 |
Тогда получаем следующие функции:
11. Построение функциональной схемы автомата
Переведём в нужный базис(Шеффера)
Построим функциональную схему автомата на элементах задержки и триггерах
12. Построение временных диаграмм работы автомата
Часть II
1. Описание команды
Нормализованное произведение второго операнда и первого операнда заносится на место первого операнда.
Умножение двух чисел с плавающей точкой заключается в сложении порядков и умножении мантисс. Операнды предварительно нормализуются, и сумма их характеристик, уменьшенная на 64, используется в качестве характеристики промежуточного произведения.
Произведение мантисс формируется таким образом, что результат всегда содержит точное произведение мантисс, усеченное до нужной длины. Если результат сразу же получился нормализованным и не требуется дополнительной нормализации, то мантисса промежуточного произведения усекается до длины мантиссы результата, а характеристика промежуточного произведения становится характеристикой конечного произведения. Если в мантиссе промежуточного произведения имеется старшая нулевая цифра, то производится сдвиг мантиссы влево на одну цифровую позицию с одновременным переносом дополнительной цифры в младшую позицию мантиссы результата и характеристика промежуточного произведения уменьшается на один. Затем мантисса промежуточного произведения усекается до длины мантиссы результата.
Мантиссы имеют по 14 цифр и мантисса конечного произведения усекается до 14 цифр. Знак произведения определяется по законам алгебры. Если все цифры мантиссы произведения являются нулями, то произведению присваивается положительный знак.
Если характеристика нормализованного произведения превышает 127 и мантисса произведения не равна 0, то фиксируется переполнение порядка. Операция завершается уменьшением характеристики на 128 по сравнению с её действительным значением. Если в случае расширенных результатов характеристика младшей части также превышает 127, то и она уменьшается на 128. Результат является нормализованным числом, а знак и мантисса сохраняют правильные значения. После этого происходит программное прерывание из-за переполнения.
Если характеристика промежуточного произведения превышает 127, но в результате нормализации попадает в установленный диапазон, то переполнение порядка не фиксируется.
Если характеристика нормализованного произведения меньше 0, то имеет место исчезновение порядка. Операция завершается формированием характеристики, которая на 128 больше по сравнению с действительным значением.
Признак результата остается без изменения.
2. Построение содержательной ГСА
Построим в соответствии с алгоритмом содержательную граф-схему.
Закодируем микрооперации и логические условия:
y1: РгМх(0:55): = Х(0, 8:63) - загрузка знака и мантиссы множимого
у2: РгМу(0:55): = У(0, 8:63) - загрузка знака и мантиссы множителя
у3: СмХ(1:7) - загрузка характеристики множимого
у4: РгУ(0:6) - загрузка характеристики множителя
у5: РгМу(56, 57) - обнуление признаков умножения
у6: СчТ: = 56 - занесение числа разрядов в счетчик
у7: См: = 0 - обнуление сумматора
у8: См(1:55): = L1(См(1:55)) - арифметический сдвиг сумматора влево
у9: РгМу: = R1(РгМу) - сдвиг вправо мантиссы множителя
у10: РгМу(1): = См(55) - передача младшего разряда сумматора в регистр РгМу
у11: См(1:55): = См(1:55) + (РгМх(1:55) + 1) - вычитание множимого
у12: См(1:55): = См(1:55) + РгМх(1:55) - прибавление множимого
у13: СчТ: = СчТ - 1 - уменьшение счетчика на 1
у14: См(1:55): = L4(См(1:55)) - сдвиг мантиссы промежуточного произведения на одну цифровую позицию
у15: СмХ: = СмХ - 1 - уменьшение характеристики на 1
у16: СмХ(1:7): = СмХ(1:7) + РгУ(0:6) - 64 - получение характеристики промежуточного произведения
у17: СмХ(1:7): = СмХ(1:7) - 128 - уменьшение характеристики на 128
у18: ТПП: = 1 - установка триггера, регистрирующего переполнение, в 1
у19: См(0): = РгМу(0) РгМх(0) - получение знака произведения
у20: Х(0, 8:63): = См(0:55) - запись в Х мантиссы и знака
у21: Х(1:7): = СмХ(1:7) - запись характеристики
y22: СмХ(0): = СмХ(0) + 128 - увеличение характеристики на 128
у23: ТИП: = 1 - установка триггера, регистрирующего исчезновение порядка, в 1
х1: РгМу(57) = 0 - анализ разряда регистра РгМу
х2: РгМу(56) = 0 - анализ разряда регистра РгМу
х3: СчТ = 0 - проверка состояния счетчика
х4: См(1) = 0 - проверка сумматора
х5: См(1:55) = 0 - проверка мантиссы
х6: СмХ(0) = 1 - проверка на переполнение
Операционная схема устройства умножения длинных чисел с управляющими сигналами уi и осведомительными сигналами хj показана на рисунке 3.1.
3. Построение кодированной ГСА и ее разметка
Каждую операторную вершину можно рассматривать как некоторую микрокоманду YК. записывая в каждую операторную вершину закодированные микрооперации yi, а в условные вершины - логические условия, получим кодированную ГСА умножения. Дальнейший синтез управляющего автомата ведется по кодированной ГСА.
4. Построение графа микропрограммного автомата
По кодированной ГСА построим граф. Для этого исследуем пути переходов от одного состояния к другому. Проводим дуги от вершины к вершине и записываем конъюкции логических условий на данном пути, если на пути нет никаких условий, то на дуге пишется 1.
5. Кодирование внутренних состояний
Для кодирования внутренних состояний применим кодирование по минимуму Хемингова расстояния.
Построим матрицу М - матрицу пар переходов, имеющих место в данном автомате (таблица 6.1). Матрица составлена таким образом, что хотя бы одно состояние в каждой строке, встречается в какой-нибудь строке, расположенной выше.
Автомат имеет 10 внутренних состояний, поэтому необходимо 4 элемента памяти и код состояний будет иметь 4 разряда.
Закодируем С0 как 0000 и С1 - как 0001. Нанесем эти значения на карту Вейтча (таблица 6.2).
Во второй строке матрицы М не закодировано состояние С2. Составим подматрицу М2 (таблица 6.3). В ней ранее закодировано состояние С1 (0001). Составим множеств F1 незанятых соседних клеток для состояние С1:
F1 = {1001, 0101, 0011}
Таблица 6.1
М = |
С0С1 |
|
С1С2 |
||
С2С3 |
||
С2С4 |
||
С2С5 |
||
С3С5 |
||
С4С5 |
||
С5С2 |
||
С5С6 |
||
С5С7 |
||
С6С6 |
||
С6С7 C6C10 |
||
С7С8 |
||
С7С9 |
||
С8С9 |
||
С9С0 C10C6 C10C7 |
Таблица 6.2
Таблица 6.3
М2 = |
С1С2 |
|
С2С3 |
||
С2С4 |
||
С2С5 |
||
С5С2 |
Таблица 6.4
М3 = |
С2С3 |
|
С3С5 |
Таблица 6.5
М4 = |
С2С4 |
|
С4С5 |
Множество G будет объединять все множества F. В данном случае множество G равняется:
G = {1001, 0101, 0011}
Рассчитаем кодовые расстояния:
D0011 = d(0011, 0001) = 1
D0101 = d(0101, 0001) = 1
D0011 = d(1001, 0001) = 1
Состояние С2 можно закодировать любым кодом из множества G. Выберем 0101. Нанесем С2(0101) на карту Вейтча.
Следующая строка матрицы М - С2С3. В ней незакодированно состояние С3. Составим подматрицу М3 (таблица 6.4). В ней ранее закодировано С2(0101).
F2 = {0100, 1101, 0111}
G = {0100, 1101, 0111}
D0100 = d(0100, 0101) = 1
D1101 = d(1101, 0101) = 1
D0111 = d(0111, 0101) = 1
С3 можно закодировать, например, как 0100.
Следующее незакодированное состояние матрицы М - С4. Составим подматрицу М4 (таблица 6.5). В ней ранее закодировано только С2(0101).
F2 = {1101, 0111}
G = {1101, 0111}
D1101 = d(1101, 0101) = 1
D0111 = d(0111, 0101) = 1
Закодируем С4 как 1101.
Следующее состояние - С5. В подматрице М5 (таблица 6.6) закодированы состояния С2(0101), С3(0100), С4(1101).
F2 = {0111}
F3 = {1100, 0110}
F4 = {1100, 1001, 1111}
G = {0111, 1100, 0110, 1001, 1111}
D0111 = 2d(0111, 0101) + d(0111, 0100) + d(0111, 1101)=6
Таблица 6.6
М5 = |
С2С5 С3С5 С4С5 С5С2 С5С6 С5С7 |
Таблица 6.7
М6 = |
С5С6 С6С6 С6С7 С6С10 С10С6 |
Таблица 6.8
М7 = |
С5С7 С6С7 С7С8 С7С9 С10С7 |
Таблица 6.9
М10 = |
С6С10 С10С6 С10С7 |
Таблица 6.10
М8 = |
С7С8 С8С9 |
Таблица 6.11
М9 = |
С8С9 С7С9 С9С0 |
D1100 = 2d(1100, 0101) + d(1100, 0100) + d(1100, 1101)= 6
D0110 = 2d(0110, 0101) + d(0110, 0100) + d(0110, 1101)= 8
D1001 = 2d(1001, 0101) + d(1001, 0100) + d(1001, 1101)= 8
D1111 = 2d(1111, 0101) + d(1111, 0100) + d(1111, 1101)= 8
Закодируем С5 как 1100.
Закодируем следующее состояние - С6. В подматрице М6 (таблица 6.7) уже закодировано состояние С5(1100}.
F5 = {1000, 1110}
G = {1000, 1110}
D1000 = d(1000, 1100) = 1
D1110 = d(1110, 1100) = 1
C6 закодируем как 1000.
Следующее состояние - С7. В подматрице М7 (таблица 6.8) закодированы состояния С5(1100) и С6(1000).
F5 = {1110}
F6 = {1001, 1010}
G = {1110, 1001, 1010}
D1110 = d(1110, 1100) + d(1110, 1000) = 3
D1001 = d(1001, 1100) + d(1001, 1000) = 3
D1010 = d(1010, 1100) + d(1010, 1000) = 3
Закодируем С7 как 1001.
Закодируем следующее состояние - С10. В подматрице М10 (таблица 6.9) закодированы состояния С6(1000) и С7(1001).
F6 = {1010}
F7 = {1011}
G = {1010, 1011}
D1010 = 2d(1010, 1000) + d(1010, 1001) = 4
D1011 = 2d(1011, 1000) + d(1011, 1000) = 6
C10 закодируем как 1010.
Следующее состояние - С8. В подматрице М8 (таблица 6.1) закодировано состояние С7. Для состояния С7 осталась только одна незанятая соседняя клетка - 1011. Этим кодом и закодируем состояние С8.
В подматрице М9 закодированы состояния С0(0000), С7(1001) и С8(1011).
F0 = {0010}
F7 = {-}
F8 = {1111, 0011}
G = {0010, 1111, 0011}
D0010 = d(0010, 0000) + d(0010, 1001) + d(0010, 1011) = 6
D1111 = d(1111, 0000) + d(1111, 1001) + d(1111, 1011) = 7
D0011 = d(0011, 0000) + d(0011, 1001) + d(0011, 1011) = 5
C9 закодируем как 0011.
В итоге получаем следующие коды состояний:
Q1 |
Q2 |
Q3 |
Q4 |
||
С0 |
0 |
0 |
0 |
0 |
|
С1 |
0 |
0 |
0 |
1 |
|
С2 |
0 |
1 |
0 |
1 |
|
С3 |
0 |
1 |
0 |
0 |
|
С4 |
1 |
1 |
0 |
1 |
|
С5 |
1 |
1 |
0 |
0 |
|
С6 |
1 |
0 |
0 |
0 |
|
С7 |
1 |
0 |
0 |
1 |
|
С8 |
1 |
0 |
1 |
1 |
|
С9 |
0 |
0 |
1 |
1 |
|
С10 |
1 |
0 |
1 |
0 |
6. Построение матрицы прошивки ПЛМ
Сi(y) |
KCi |
Cj |
KCj |
x(Ci, Cj) |
f(Ci, Cj) |
|
C0(-) |
0000 |
C1 |
0001 |
1 |
S4 |
|
C1(y1y2y3y4y5y6y7) |
0001 |
C2 |
0101 |
1 |
S2 |
|
C2(y8y9y10) |
0101 |
C3 C4 C5 |
0100 1101 1100 |
x1x2 x1x2 x1x2 \/ x1x2 |
R4 S1 S1R4 |
|
C3(y11) |
0100 |
C5 |
1100 |
1 |
S1 |
|
C4(y12) |
1101 |
C5 |
1100 |
1 |
R4 |
|
C5(y13) |
1100 |
C2 C6 C7 |
0101 1000 1001 |
x3 x3x4 x3x4 |
R1S4 R2 R2S4 |
|
C6(y14y15) |
1000 |
C6 C7 C10 |
1000 1001 1010 |
x4x6 x4x6 x6 |
- S4 S3 |
|
C7(y16) |
1001 |
C8 C9 |
1011 0011 |
x5x6 x5\/x5x6 |
S3 R1S3 |
|
C8(y17y18) |
1011 |
C9 |
0011 |
1 |
R1 |
|
C9(y19y20y21) |
0011 |
C0 |
0000 |
1 |
R3R4 |
|
C10(y22y23) |
1010 |
C6 C7 |
1000 1001 |
x4 x4 |
R3 R3S4 |
7. Определение функций возбуждения и функций выходов
_ _ _ _ _ _ _ _ _ _
R1 = x3Q1Q2Q3Q4 \/ x5Q1Q2Q3Q4 \/ x5x6Q1Q2Q3Q4 \/ Q1Q2Q3Q4
_ _ _ _ _ _ _ _ _ _ _ _
S1 = x1x2Q1Q2Q3Q4 \/ Q1Q2Q3Q4 \/ x1x2Q1Q2Q3Q4 \/ x1x2Q1Q2Q3Q4
_ _ _ _ _
R2 = x3x4Q1Q2Q3Q4 \/ x3x4Q1Q2Q3Q4
_ _ _
S2 = Q1Q2Q3Q4
_ _ _ _ _ _ _
R3 = Q1Q2Q3Q4 \/ x4Q1Q2Q3Q4 \/ x4Q1Q2Q3Q4
_ _ _ _ _ _ _ _ _ _ _ _
S3 = x6Q1Q2Q3Q4 \/ x5x6Q1Q2Q3Q4 \/ x5Q1Q2Q3Q4 \/ x5x6Q1Q2Q3Q4
_ _ _ _ _ _ _ _ _ _ _ _
R4 = x1x2Q1Q2Q3Q4 \/ x1x2Q1Q2Q3Q4 \/ x1x2Q1Q2Q3Q4 \/ Q1Q2Q3Q4 \/ Q1Q2Q3Q4
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
S4 = Q1Q2Q3Q4 \/ x3Q1Q2Q3Q4 \/ x3x4Q1Q2Q3Q4 \/ x4x6Q1Q2Q3Q4 \/ x4Q1Q2Q3Q4
_ _ _
y1 y2 y3 y4 y5 y6 y7 = Q1Q2Q3Q4
_ _ _ _ _ _ _ _ _ _ _ _
y8 y9 y10 = x1x2Q1Q2Q3Q4 \/ x1x2Q1Q2Q3Q4 \/ x1x2Q1Q2Q3Q4 \/ x1x2Q1Q2Q3Q4
_ _ _
y11 = Q1Q2Q3Q4
_
y12 = Q1Q2Q3Q4
_ _ _ _ _ _ _ _
y13 = x3Q1Q2Q3Q4 \/ x3x4Q1Q2Q3Q4 \/ x3x4Q1Q2Q3Q4
_ _ _ _ _ _ _ _ _ _ _ _
y14 y15 = x4x6Q1Q2Q3Q4 \/ x4x6Q1Q2Q3Q4 \/ x6Q1Q2Q3Q4
_ _ _ _ _ _ _ _ _
y16 = x5x6Q1Q2Q3Q4 \/ x5Q1Q2Q3Q4 \/ x5x6Q1Q2Q3Q4
_
y17 y18 = Q1Q2Q3Q4
_ _
y19 y20 y21 = Q1Q2Q3Q4
_ _ _ _ _
y22 y23 = x4Q1Q2Q3Q4 \/ x4Q1Q2Q3Q4
8. Синтез на ПЛМ
Размещено на Allbest.ru
Подобные документы
Выполнение синтеза цифрового автомата Мура, осуществляющего отображение информации, приведение алфавитного отображения к автоматному. Построение формализованного описания автомата, минимизация числа внутренних состояний. Функциональная схема автомата.
курсовая работа [2,8 M], добавлен 04.02.2013Процесс разработки функциональной схемы автомата Мура для операции деления без восстановления остатка. Кодировка состояний переходов, системы логических функций, сигналов возбуждения, их минимизация. Построение функциональной схемы управляющего автомата.
курсовая работа [868,4 K], добавлен 07.04.2012Алгоритм работы автомата Мили в табличном виде. Графический способ задания автомата. Синтез автомата Мили на Т-триггерах. Кодирование состояний автомата. Таблицы кодирования входных и выходных сигналов. Таблица переходов и выходов абстрактного автомата.
курсовая работа [24,7 K], добавлен 01.04.2010Формирование алфавитного оператора. Приведение оператора к автоматному виду. Построение графа переходов абстрактного автомата. Кодирование состояний, входных и выходных сигналов. Формирование функций возбуждения и выходных сигналов структурного автомата.
курсовая работа [66,3 K], добавлен 10.11.2010Цифровые автоматы - логические устройства, в которых помимо логических элементов имеются элементы памяти. Разработка микропрограммного цифрового автомата на основе микросхем малой степени интеграции. Синтез преобразователя кода и цифровая индикация.
курсовая работа [2,7 M], добавлен 26.05.2012Синтез цифровых схем, выбор элементной базы и анализ принципов построения управляющих автоматов с жесткой логикой. Граф-схемы алгоритмов умножения и деления чисел. Создание управляющего автомата типа Мили; выбор триггера, кодирование сигналов автомата.
курсовая работа [1,8 M], добавлен 18.09.2012Структурно–функциональное описание счетчика. Построение функциональной схемы синхронного автомата для 4-разрядного счетчика. Кодирование состояний автомата по критерию надежности функционирования. Логическое моделирование схемы функционального теста.
контрольная работа [105,8 K], добавлен 14.07.2012Обобщенная схема конечного цифрового автомата. Структурная и каскадная схема мультиплексора. Кодирование входных и выходных сигналов и состояний автомата. Схема разработанного цифрового устройства. Синтез дешифратора автомата. Выбор серии микросхем.
контрольная работа [279,1 K], добавлен 07.01.2015Синтез дискретного устройства, его структурная схема. Расчет дешифратора и индикаторов, их проектирование. Карты Карно. Синтез счетной схемы. Делитель частоты. Проектирование конечного автомата и его описание. Анализ сигналов и минимизация автомата.
курсовая работа [217,8 K], добавлен 21.02.2009Проектирование конечного автомата, заданного оператором соответствия, с использованием канонического метода структурного синтеза автоматов. Тактирование от генератора синхронизирующих импульсов для устранения гонок в функциональной схеме автомата Мили.
курсовая работа [1,6 M], добавлен 22.10.2012